@refraction-ui/react 0.3.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../react-file-tree/src/react-file-tree.tsx","../../react-icon-system/src/react-icon-system.tsx","../src/index.ts","../../theme/src/theme-machine.ts","../../theme/src/theme-script.ts","../../theme/src/dom-adapters.ts","../../react-theme/src/theme-provider.tsx","../../react-theme/src/theme-toggle.tsx","../../react-theme/src/theme-script-component.tsx","../../shared/src/aria.ts","../../shared/src/keyboard.ts","../../shared/src/state-machine.ts","../../shared/src/cn.ts","../../shared/src/cva.ts","../../react-accordion/src/accordion.tsx","../../animated-text/src/animated-text.ts","../../animated-text/src/animated-text.styles.ts","../../react-animated-text/src/animated-text.tsx","../../auth/src/auth-machine.ts","../../auth/src/rbac.ts","../../react-auth/src/auth-provider.tsx","../../react-auth/src/auth-guard.tsx","../../badge/src/badge.ts","../../badge/src/badge.styles.ts","../../react-badge/src/badge.tsx","../../bottom-nav/src/bottom-nav.ts","../../bottom-nav/src/bottom-nav.styles.ts","../../react-bottom-nav/src/bottom-nav.tsx","../../breadcrumbs/src/breadcrumbs.ts","../../breadcrumbs/src/breadcrumbs.styles.ts","../../react-breadcrumbs/src/breadcrumbs.tsx","../../button/src/button.ts","../../button/src/button.styles.ts","../../react-button/src/button.tsx","../../calendar/src/calendar.ts","../../calendar/src/calendar.styles.ts","../../react-calendar/src/calendar.tsx","../../code-editor/src/code-editor.ts","../../code-editor/src/code-editor.styles.ts","../../react-code-editor/src/CodeEditor.tsx","../../collapsible/src/collapsible.ts","../../collapsible/src/collapsible.styles.ts","../../react-collapsible/src/collapsible.tsx","../../command/src/command.ts","../../command/src/command.styles.ts","../../react-command/src/command.tsx","../../content-protection/src/content-protection.ts","../../content-protection/src/content-protection.styles.ts","../../react-content-protection/src/content-protection.tsx","../../data-table/src/data-table.ts","../../data-table/src/data-table.styles.ts","../../react-data-table/src/DataTable.tsx","../../device-frame/src/device-frame.ts","../../device-frame/src/device-frame.styles.ts","../../react-device-frame/src/device-frame.tsx","../../dialog/src/dialog.ts","../../dialog/src/dialog.styles.ts","../../react-dialog/src/dialog.tsx","../../dropdown-menu/src/dropdown-menu.ts","../../dropdown-menu/src/dropdown-menu.styles.ts","../../react-dropdown-menu/src/dropdown-menu.tsx","../../feedback-dialog/src/feedback-dialog.ts","../../feedback-dialog/src/feedback-dialog.styles.ts","../../react-feedback-dialog/src/FeedbackDialog.tsx","../../footer/src/footer.ts","../../footer/src/footer.styles.ts","../../react-footer/src/footer.tsx","../../inline-editor/src/inline-editor.ts","../../inline-editor/src/inline-editor.styles.ts","../../react-inline-editor/src/InlineEditor.tsx","../../input/src/input.ts","../../input/src/input.styles.ts","../../react-input/src/input.tsx","../../input-group/src/input-group.ts","../../input-group/src/input-group.styles.ts","../../react-input-group/src/input-group.tsx","../../install-prompt/src/install-prompt.ts","../../install-prompt/src/install-prompt.styles.ts","../../react-install-prompt/src/install-prompt.tsx","../../markdown-renderer/src/markdown-renderer.ts","../../markdown-renderer/src/markdown-renderer.styles.ts","../../react-markdown-renderer/src/MarkdownRenderer.tsx","../../mobile-nav/src/mobile-nav.ts","../../mobile-nav/src/mobile-nav.styles.ts","../../react-mobile-nav/src/mobile-nav.tsx","../../navbar/src/navbar.ts","../../navbar/src/navbar.styles.ts","../../react-navbar/src/navbar.tsx","../../popover/src/popover.ts","../../popover/src/popover.styles.ts","../../react-popover/src/popover.tsx","../../search-bar/src/search-bar.ts","../../search-bar/src/search-bar.styles.ts","../../react-search-bar/src/search-bar.tsx","../../sidebar/src/sidebar.ts","../../sidebar/src/sidebar.styles.ts","../../react-sidebar/src/sidebar.tsx","../../skeleton/src/skeleton.ts","../../skeleton/src/skeleton.styles.ts","../../react-skeleton/src/skeleton.tsx","../../tabs/src/tabs.ts","../../tabs/src/tabs.styles.ts","../../react-tabs/src/tabs.tsx","../../textarea/src/textarea.ts","../../textarea/src/textarea.styles.ts","../../react-textarea/src/textarea.tsx","../../toast/src/toast.ts","../../toast/src/toast.styles.ts","../../react-toast/src/toast.tsx","../../tooltip/src/tooltip.ts","../../tooltip/src/tooltip.styles.ts","../../react-tooltip/src/tooltip.tsx","../../video-player/src/video-player.ts","../../video-player/src/video-player.styles.ts","../../react-video-player/src/video-player.tsx","../../progress-display/src/progress-display.ts","../../progress-display/src/progress-display.styles.ts","../../react-progress-display/src/progress-display.tsx","../../slide-viewer/src/slide-viewer.ts","../../slide-viewer/src/slide-viewer.styles.ts","../../react-slide-viewer/src/SlideViewer.tsx","../../language-selector/src/language-selector.ts","../../language-selector/src/language-selector.styles.ts","../../react-language-selector/src/language-selector.tsx","../../version-selector/src/version-selector.ts","../../version-selector/src/version-selector.styles.ts","../../react-version-selector/src/version-selector.tsx","../../resizable-layout/src/resizable-layout.ts","../../resizable-layout/src/resizable-layout.styles.ts","../../react-resizable-layout/src/resizable-layout.tsx","../../app-shell/src/app-shell.ts","../../app-shell/src/page-shell.ts","../../app-shell/src/auth-shell.ts","../../react-app-shell/src/app-shell.tsx","../../react-app-shell/src/page-shell.tsx","../../react-app-shell/src/auth-shell.tsx","../../avatar/src/avatar.ts","../../avatar/src/avatar.styles.ts","../../react-avatar/src/avatar.tsx","../../avatar-group/src/avatar-group.ts","../../avatar-group/src/avatar-group.styles.ts","../../react-avatar-group/src/avatar-group.tsx","../../card/src/card.ts","../../card/src/card.styles.ts","../../react-card/src/card.tsx","../../checkbox/src/checkbox.ts","../../checkbox/src/checkbox.styles.ts","../../react-checkbox/src/checkbox.tsx","../../date-picker/src/date-picker.ts","../../date-picker/src/date-picker.styles.ts","../../react-date-picker/src/date-picker.tsx","../../diff-viewer/src/diff-viewer.ts","../../diff-viewer/src/diff-viewer.styles.ts","../../react-diff-viewer/src/DiffViewer.tsx","../../emoji-picker/src/emoji-data.ts","../../emoji-picker/src/emoji-picker.ts","../../emoji-picker/src/emoji-picker.styles.ts","../../react-emoji-picker/src/emoji-picker.tsx","../../file-upload/src/file-upload.ts","../../file-upload/src/file-upload.styles.ts","../../react-file-upload/src/file-upload.tsx","../../keyboard-shortcut/src/keyboard-shortcut.ts","../../keyboard-shortcut/src/keyboard-shortcut.styles.ts","../../react-keyboard-shortcut/src/keyboard-shortcut.tsx","../../otp-input/src/otp-input.ts","../../otp-input/src/otp-input.styles.ts","../../react-otp-input/src/otp-input.tsx","../../presence-indicator/src/presence-indicator.ts","../../presence-indicator/src/presence-indicator.styles.ts","../../react-presence-indicator/src/presence-indicator.tsx","../../radio/src/radio.ts","../../radio/src/radio.styles.ts","../../react-radio/src/radio.tsx","../../reaction-bar/src/reaction-bar.ts","../../reaction-bar/src/reaction-bar.styles.ts","../../react-reaction-bar/src/reaction-bar.tsx","../../select/src/select.ts","../../select/src/select.styles.ts","../../react-select/src/select.tsx","../../status-indicator/src/status-indicator.ts","../../status-indicator/src/status-indicator.styles.ts","../../react-status-indicator/src/status-indicator.tsx","../../switch/src/switch.ts","../../switch/src/switch.styles.ts","../../react-switch/src/switch.tsx","../../thread-view/src/thread-view.ts","../../thread-view/src/thread-view.styles.ts","../../react-thread-view/src/thread-view.tsx","../../table-of-contents/src/table-of-contents.ts","../../react-table-of-contents/src/table-of-contents.tsx","../../react-carousel/src/carousel.tsx","../../react-pagination/src/pagination.tsx","../../react-callout/src/callout.tsx","../../react-steps/src/steps.tsx","../../react-skip-to-content/src/skip-to-content.tsx","../../react-code-block/src/code-block.tsx","../../link-card/src/link-card.ts","../../react-link-card/src/link-card.tsx","../../card-grid/src/card-grid.ts","../../react-card-grid/src/card-grid.tsx","../../payment/src/payment.ts","../../react-payment/src/payment.tsx","../../command-input/src/command-input.ts","../../react-command-input/dist/index.js"],"names":["Card","STATUS_COLORS","STATUS_LABELS","progressBarVariants","optionVariants","React","React2","React3","jsx","jsxs","React22","React4","React5","React6","React7","startOfDay","endOfDay","React8","React9","React10","React11","React12","props","React13","React14","React15","ReactDOM","React16","ReactDOM2","React17","React18","React19","React20","React21","React23","text","React24","React25","Fragment","React26","React27","createPortal","React28","React29","React30","React31","React32","React33","React34","React35","React36","React37","React38","React39","React40","DEFAULTS","React41","Sidebar","MobileNav","cn","Footer","React42","getInitials","avatarVariants","React43","React44","React45","isSameDay","startOfMonth","DAY_NAMES","React46","sidebarVariants","sidebarItemVariants","React47","React48","React49","React50","React51","React52","React53","React54","React55","React56","React57","React58","React59","React60","React61","React62","React63","React64","CommandInput","forwardRef","useRef","useState","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,IAAA,IAAM,WAAW,MAAM;AAAE,MAAA,uBAAA,UAAA,CAAA,GAAA,CAAQ,KAAA,EAAA,EAAI,CAAA;AAAQ,IAAA,CAAA;;;;;;;;;ACA7C,IAAA,IAAM,aAAa,MAAM;AAAE,MAAA,uBAAA,UAAA,CAAA,GAAA,CAAQ,KAAA,EAAA,EAAI,CAAA;AAAQ,IAAA,CAAA;;;;;;ACDtD,IAAA,aAAA,GAAA,EAAA;AAAA,QAAA,CAAA,aAAA,EAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,IAAA,EAAA,MAAAA,KAAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,aAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,aAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,aAAA,EAAA,MAAAC,cAAAA;AAAA,EAAA,aAAA,EAAA,MAAAC,cAAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,4BAAA,EAAA,MAAA,4BAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,8BAAA,EAAA,MAAAC,oBAAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,6BAAA,EAAA,MAAAC,eAAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;AC6CA,SAAS,YAAA,CAAa,MAAiB,iBAAA,EAA2C;AAChF,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,OAAO,oBAAoB,MAAA,GAAS,OAAA;AACtC,EAAA;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,WAAA,CACd,MAAA,GAAsB,EAAA,EACtB,SACA,UAAA,EACU;AACV,EAAA,MAAM;IACJ,WAAA,GAAc,QAAA;IACd,UAAA,GAAa;GAAA,GACX,MAAA;AAEJ,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAA;AACtB,EAAA,IAAI,iBAAA,GAAyC,IAAA;AAG7C,EAAA,MAAM,SAAA,GAAY,OAAA,EAAS,GAAA,CAAI,UAAU,CAAA;AACzC,EAAA,IAAI,IAAA,GAAkB,SAAA,IAAa,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,GAC7E,SAAA,GACA,WAAA;AAGJ,EAAA,IAAI,iBAAA,GAAoB,UAAA,EAAY,OAAA,CAAQ,8BAA8B,CAAA,IAAK,KAAA;AAE/E,EAAA,IAAI,KAAA,GAAoB;AACtB,IAAA,IAAA;IACA,QAAA,EAAU,YAAA,CAAa,MAAM,iBAAiB;AAAA,GAAA;AAGhD,EAAA,SAAS,MAAA,GAAS;AAChB,IAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,MAAA,EAAA,CAAG,KAAK,CAAA;AACV,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,YAAY,OAAA,EAAoB;AACvC,IAAA,IAAA,GAAO,OAAA;AACP,IAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,CAAa,IAAA,EAAM,iBAAiB,CAAA,EAAA;AAC9D,IAAA,OAAA,EAAS,GAAA,CAAI,YAAY,IAAI,CAAA;AAC7B,IAAA,MAAA,EAAA;AACF,EAAA;AAGA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,iBAAA,GAAoB,UAAA,CAAW,SAAA;AAC7B,MAAA,8BAAA;AACA,MAAA,CAAC,OAAA,KAAY;AACX,QAAA,iBAAA,GAAoB,OAAA;AACpB,QAAA,IAAI,SAAS,QAAA,EAAU;AACrB,UAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,CAAa,IAAA,EAAM,iBAAiB,CAAA,EAAA;AAC9D,UAAA,MAAA,EAAA;AACF,QAAA;AACF,MAAA;AAAA,KAAA;AAEJ,EAAA;AAEA,EAAA,OAAO;IACL,QAAA,GAAW;AACT,MAAA,OAAO,KAAA;AACT,IAAA,CAAA;AAEA,IAAA,OAAA,CAAQ,OAAA,EAAoB;AAC1B,MAAA,IAAI,YAAY,IAAA,EAAM;AACpB,QAAA,WAAA,CAAY,OAAO,CAAA;AACrB,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,SAAA,CAAU,EAAA,EAAiC;AACzC,MAAA,SAAA,CAAU,IAAI,EAAE,CAAA;AAChB,MAAA,OAAO,MAAM;AACX,QAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AACrB,MAAA,CAAA;AACF,IAAA,CAAA;IAEA,OAAA,GAAU;AACR,MAAA,SAAA,CAAU,KAAA,EAAA;AACV,MAAA,iBAAA,IAAA;AACF,IAAA;AAAA,GAAA;AAEJ;AC3HO,SAAS,cAAA,CACd,UAAA,GAAa,WAAA,EACb,SAAA,GAAoC,OAAA,EAC5B;AAGR,EAAA,OAAO,CAAA,4CAAA,EAA+C,UAAU,CAAA,mJAAA,EAC9D,SAAA,KAAc,UACV,wDAAA,GACA,CAAA,gBAAA,EAAmB,SAAS,CAAA,KAAA,CAClC,CAAA,qCAAA,CAAA;AACF;ACTO,SAAS,yBAAA,GAA4C;AAC1D,EAAA,OAAO;AACL,IAAA,GAAA,CAAI,GAAA,EAAK;AACP,MAAA,IAAI;AACF,QAAA,OAAO,YAAA,CAAa,QAAQ,GAAG,CAAA;MACjC,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AACT,MAAA;AACF,IAAA,CAAA;AACA,IAAA,GAAA,CAAI,KAAK,KAAA,EAAO;AACd,MAAA,IAAI;AACF,QAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,KAAK,CAAA;MACjC,CAAA,CAAA,MAAQ;AAER,MAAA;AACF,IAAA;AAAA,GAAA;AAEJ;AAGO,SAAS,uBAAA,GAA6C;AAC3D,EAAA,OAAO;AACL,IAAA,OAAA,CAAQ,KAAA,EAAO;AACb,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,MAAA,OAAO,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA;AAClC,IAAA,CAAA;AACA,IAAA,SAAA,CAAU,OAAO,QAAA,EAAU;AACzB,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAM;AAAC,MAAA,CAAA;AACjD,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AACnC,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B,QAAA,CAAS,EAAE,OAAO,CAAA;AAC9D,MAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,OAAO,CAAA;AACtC,MAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AACxD,IAAA;AAAA,GAAA;AAEJ;AAGO,SAAS,eAAA,CACd,QAAA,EACA,SAAA,GAAoC,OAAA,EAC9B;AACN,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,EAAA,MAAM,OAAO,QAAA,CAAS,eAAA;AACtB,EAAA,IAAI,cAAc,OAAA,EAAS;AACzB,IAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,SAAA,CAAU,IAAI,QAAQ,CAAA;EAC7B,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,YAAA,CAAa,WAAW,QAAQ,CAAA;AACvC,EAAA;AACA,EAAA,IAAA,CAAK,MAAM,WAAA,GAAc,QAAA;AAC3B;;;ACzCA,IAAM,YAAA,GAAqBC,iCAAwC,IAAI,CAAA;AAMhE,SAAS,aAAA,CAAc;AAC5B,EAAA,QAAA;EACA,WAAA,GAAc,QAAA;EACd,UAAA,GAAa,WAAA;EACb,SAAA,GAAY;AACd,CAAA,EAAuB;AACrB,EAAA,MAAM,QAAA,GAAiBA,0BAAwB,IAAI,CAAA;AAGnD,EAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,IAAA,MAAM,SAAA,GAAY,OAAO,MAAA,KAAW,WAAA;AACpC,IAAA,QAAA,CAAS,OAAA,GAAU,WAAA;MACjB,EAAE,WAAA,EAAa,UAAY,CAAA;AAC3B,MAAA,SAAA,GAAY,2BAAA,GAA8B,MAAA;AAC1C,MAAA,SAAA,GAAY,yBAAA,GAA4B;AAAA,KAAA;AAE5C,EAAA;AAEA,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAUA,4BAAS,MAAM,QAAA,CAAS,OAAA,CAAS,QAAA,EAAU,CAAA;AAErEA,EAAAA,6BAAU,MAAM;AACpB,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AAEvB,IAAA,eAAA,CAAgB,KAAA,CAAM,QAAA,EAAA,CAAW,QAAA,EAAU,SAAS,CAAA;AAGpD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,CAAC,QAAA,KAAa;AAC1C,MAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,MAAA,eAAA,CAAgB,QAAA,CAAS,UAAU,SAAS,CAAA;IAC9C,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,EAAA;AACA,MAAA,KAAA,CAAM,OAAA,EAAA;AACR,IAAA,CAAA;EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,YAAA,GAAqBC,kBAAA,CAAA,OAAA;IACzB,OAAO;AACL,MAAA,IAAA,EAAM,KAAA,CAAM,IAAA;AACZ,MAAA,QAAA,EAAU,KAAA,CAAM,QAAA;AAChB,MAAA,OAAA,EAAS,CAAC,IAAA,KAAoB,QAAA,CAAS,OAAA,EAAS,QAAQ,IAAI;AAAA,KAAA,CAAA;IAE9D,CAAC,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,QAAQ;AAAA,GAAA;AAG7B,EAAA,OAAaD,iCAAc,YAAA,CAAa,QAAA,EAAU,EAAE,KAAA,EAAO,YAAA,IAAgB,QAAQ,CAAA;AACrF;AAEO,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,OAAA,GAAgBA,8BAAW,YAAY,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAClE,EAAA;AACA,EAAA,OAAO,OAAA;AACT;AC3EA,IAAM,KAAA,GAA6D;AACjE,EAAA,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,MAAM,KAAA,EAAA;AACxC,EAAA,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,MAAM,MAAA,EAAA;AACtC,EAAA,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,MAAM,SAAA;AAC5C,CAAA;AAGA,IAAM,KAAA,GAAyC;EAC7C,GAAA,EAAWC,kBAAA,CAAA,aAAA;AAAc,IAAA,KAAA;AAAO,IAAA;MAC9B,KAAA,EAAO,4BAAA;MAA8B,KAAA,EAAO,EAAA;MAAI,MAAA,EAAQ,EAAA;MAAI,OAAA,EAAS,WAAA;MACrE,IAAA,EAAM,MAAA;MAAQ,MAAA,EAAQ,cAAA;MAAgB,WAAA,EAAa,CAAA;MAAG,aAAA,EAAe,OAAA;MAAS,cAAA,EAAgB;AAAA,KAAA;IAExFA,kBAAA,CAAA,aAAA,CAAc,QAAA,EAAU,EAAE,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,GAAG,CAAA;AAChD,IAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,CAAA,EAAG,oHAAA,EAAsH;AAAA,GAAA;EAEzJ,IAAA,EAAYA,kBAAA,CAAA,aAAA;AAAc,IAAA,KAAA;AAAO,IAAA;MAC/B,KAAA,EAAO,4BAAA;MAA8B,KAAA,EAAO,EAAA;MAAI,MAAA,EAAQ,EAAA;MAAI,OAAA,EAAS,WAAA;MACrE,IAAA,EAAM,MAAA;MAAQ,MAAA,EAAQ,cAAA;MAAgB,WAAA,EAAa,CAAA;MAAG,aAAA,EAAe,OAAA;MAAS,cAAA,EAAgB;AAAA,KAAA;AAExF,IAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,CAAA,EAAG,iDAAA,EAAmD;AAAA,GAAA;EAEtF,OAAA,EAAeA,kBAAA,CAAA,aAAA;AAAc,IAAA,KAAA;AAAO,IAAA;MAClC,KAAA,EAAO,4BAAA;MAA8B,KAAA,EAAO,EAAA;MAAI,MAAA,EAAQ,EAAA;MAAI,OAAA,EAAS,WAAA;MACrE,IAAA,EAAM,MAAA;MAAQ,MAAA,EAAQ,cAAA;MAAgB,WAAA,EAAa,CAAA;MAAG,aAAA,EAAe,OAAA;MAAS,cAAA,EAAgB;AAAA,KAAA;AAExF,IAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAG,CAAA;IACzEA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA;IACvDA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI;AAAA;AAElE,CAAA;AAQO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,OAAA,GAAU,aAAA,EAAiC;AAClF,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAA,GAAY,QAAA,EAAA;AAE1B,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,OAAaA,kBAAA,CAAA,aAAA;AAAc,MAAA,KAAA;AAAO,MAAA;QAChC,SAAA,EAAW,CAAA,qDAAA,EAAwD,aAAa,EAAE,CAAA,CAAA;QAClF,IAAA,EAAM,YAAA;QACN,YAAA,EAAc;AAAA,OAAA;MAEd,KAAA,CAAM,GAAA;AAAI,QAAA,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,EAAA,KACnBA,iCAAc,QAAA,EAAU;UAC5B,GAAA,EAAK,KAAA;UACL,IAAA,EAAM,QAAA;UACN,IAAA,EAAM,OAAA;AACN,UAAA,cAAA,EAAgB,IAAA,KAAS,KAAA;UACzB,YAAA,EAAc,KAAA;AACd,UAAA,SAAA,EAAW,CAAA,mFAAA,EACT,IAAA,KAAS,KAAA,GACL,kCAAA,GACA,sCACN,CAAA,CAAA;UACA,OAAA,EAAS,MAAM,QAAQ,KAAK;SAAA,EAC3B,KAAA,CAAM,IAAI,CAAC;AAAA;AAChB,KAAA;AAEJ,EAAA;AAGA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,GAAA,GAAYA,0BAAuB,IAAI,CAAA;AAEvC,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,MAAA,IAAI,GAAA,CAAI,OAAA,IAAW,CAAC,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,CAAE,MAAc,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA;AAC3E,IAAA,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;EAChE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,IAAI,CAAA,EAAG,IAAA,IAAQ,SAAA;AAEjE,EAAA,OAAaA,kBAAA,CAAA,aAAA;AAAc,IAAA,KAAA;AAAO,IAAA,EAAE,GAAA,EAAK,SAAA,EAAW,CAAA,SAAA,EAAY,SAAA,IAAa,EAAE,CAAA,CAAA,EAAA;AACvE,IAAAA,kBAAA,CAAA,aAAA,CAAc,QAAA,EAAU;MAC5B,IAAA,EAAM,QAAA;MACN,YAAA,EAAc,cAAA;MACd,eAAA,EAAiB,IAAA;MACjB,SAAA,EAAW,iGAAA;MACX,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,IAAI;KAAA,EAC3B,KAAA,CAAM,WAAW,CAAC,CAAA;IACrB,IAAA,IAAcA,kBAAA,CAAA,aAAA;AAAc,MAAA,KAAA;AAAO,MAAA;QACjC,SAAA,EAAW,6FAAA;QACX,IAAA,EAAM;AAAA,OAAA;MAEN,KAAA,CAAM,GAAA;AAAI,QAAA,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,EAAA,KACnBA,iCAAc,QAAA,EAAU;UAC5B,GAAA,EAAK,KAAA;UACL,IAAA,EAAM,QAAA;UACN,IAAA,EAAM,UAAA;AACN,UAAA,SAAA,EAAW,CAAA,gGAAA,EACT,IAAA,KAAS,KAAA,GAAQ,WAAA,GAAc,EACjC,CAAA,CAAA;AACA,UAAA,OAAA,EAAS,MAAM;AAAE,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAG,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAE,UAAA;SAAA,EAC/C,KAAA,CAAM,IAAI,CAAA,EAAG,KAAK;AAAA;AACvB;AACF,GAAA;AAEJ;AChGO,SAAS,WAAA,CAAY;EAC1B,UAAA,GAAa,WAAA;EACb,SAAA,GAAY;AACd,CAAA,EAAqB;AACnB,EAAA,OAAaC,iCAAc,QAAA,EAAU;IACnC,uBAAA,EAAyB;MACvB,MAAA,EAAQ,cAAA,CAAe,YAAY,SAAS;AAAA;GAE/C,CAAA;AACH;;;ACNA,IAAI,SAAA,GAAY,CAAA;AAMT,SAAS,UAAA,CAAW,SAAS,KAAA,EAAe;AACjD,EAAA,SAAA,EAAA;AACA,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAC/B;ACvBO,IAAM,IAAA,GAAO;EAClB,KAAA,EAAO,OAAA;EACP,KAAA,EAAO,GAAA;EACP,MAAA,EAAQ,QAAA;EAER,OAAA,EAAS,SAAA;EACT,SAAA,EAAW,WAAA;EACX,SAAA,EAAW,WAAA;EACX,UAAA,EAAY,YAAA;EACZ,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EAGL,SAAA,EAAW,WAEb,CAAA;AAUO,SAAS,sBACd,QAAA,EACgC;AAChC,EAAA,OAAO,CAAC,KAAA,KAAyB;AAC/B,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAClC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA;AACF,EAAA,CAAA;AACF;ACZO,SAAS,cACd,MAAA,EACyB;AACzB,EAAA,IAAI,UAAU,MAAA,CAAO,OAAA;AACrB,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAA;AAEtB,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAAQ;AACV,MAAA,OAAO,OAAA;AACT,IAAA,CAAA;AAEA,IAAA,IAAA,CAAK,KAAA,EAAe;AAClB,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA;AACzC,MAAA,MAAM,IAAA,GAAO,WAAA,EAAa,EAAA,GAAK,KAAK,CAAA;AACpC,MAAA,IAAI,IAAA,IAAQ,SAAS,OAAA,EAAS;AAC5B,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,UAAA,EAAA,CAAG,OAAO,CAAA;AACZ,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,SAAA,CAAU,EAAA,EAA6B;AACrC,MAAA,SAAA,CAAU,IAAI,EAAE,CAAA;AAChB,MAAA,OAAO,MAAM;AACX,QAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AACrB,MAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,OAAA,CAAQ,KAAA,EAAe;AACrB,MAAA,OAAO,OAAA,KAAY,KAAA;AACrB,IAAA;AAAA,GAAA;AAEJ;AC3CO,SAAS,MAAM,MAAA,EAAiD;AACrE,EAAA,MAAM,UAAoB,EAAA;AAE1B,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;IACpB,CAAA,MAAA,IAAW,OAAO,UAAU,QAAA,EAAU;AACpC,MAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;IAC5B,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/B,MAAA,MAAM,MAAA,GAAS,EAAA,CAAG,GAAG,KAAK,CAAA;AAC1B,MAAA,IAAI,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;IACjC,CAAA,MAAA,IAAW,OAAO,UAAU,QAAA,EAAU;AACpC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChD,QAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AAC7B,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AACzB;ACNO,SAAS,IAA6B,MAAA,EAAsB;AACjE,EAAA,OAAO,CAAC,KAAA,KAA6D;AACnE,IAAA,MAAM,UAAoB,EAAA;AAE1B,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,OAAA,CAAQ,IAAA,CAAK,OAAO,IAAI,CAAA;AAC1B,IAAA;AAEA,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,KAAA,MAAW,CAAC,YAAY,cAAc,CAAA,IAAK,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC1E,QAAA,MAAM,gBACH,KAAA,GAAgD,UAAU,CAAA,IAC3D,MAAA,CAAO,kBAAkB,UAAU,CAAA;AAErC,QAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,UAAA,MAAM,YAAA,GAAgB,eACpB,aACF,CAAA;AACA,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,OAAA,CAAQ,KAAK,YAAY,CAAA;AAC3B,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,OAAO,gBAAA,EAAkB;AAC3B,MAAA,KAAA,MAAW,QAAA,IAAY,OAAO,gBAAA,EAAkB;AAC9C,QAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,GAAG,YAAA,GAAe,QAAA;AAChD,QAAA,IAAI,OAAA,GAAU,IAAA;AAEd,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACrD,UAAA,MAAM,YACH,KAAA,GAAoC,GAAG,CAAA,IACxC,MAAA,CAAO,kBAAkB,GAAG,CAAA;AAC9B,UAAA,IAAI,cAAc,KAAA,EAAO;AACvB,YAAA,OAAA,GAAU,KAAA;AACV,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,OAAA,CAAQ,KAAK,aAAuB,CAAA;AACtC,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,OAAO,SAAA,EAAW;AACpB,MAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,SAAS,CAAA;AAC9B,IAAA;AAEA,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC,EAAA,CAAA;AACF;AC7EA,IAAM,gBAAA,GAAyBF,iCAIrB,IAAI,CAAA;AAUP,IAAM,SAAA,GAAkBA,kBAAA,CAAA,UAAA;AAC7B,EAAA,CAAC,EAAE,SAAA,EAAW,IAAA,GAAO,QAAA,EAAU,WAAA,EAAa,KAAA,EAAO,eAAA,EAAiB,YAAA,EAAc,aAAA,EAAe,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACnH,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,kBAAA,CAAA,QAAA;MACtD,YAAA,KAAiB,IAAA,KAAS,UAAA,GAAa,EAAA,GAAK,EAAA;AAAA,KAAA;AAG9C,IAAA,MAAM,KAAA,GAAQ,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,iBAAA;AAEhE,IAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,MAAA,CAAC,SAAA,KAAsB;AACrB,QAAA,IAAI,SAAS,QAAA,EAAU;AACrB,UAAA,MAAM,QAAA,GAAW,KAAA,KAAU,SAAA,IAAa,WAAA,GAAc,EAAA,GAAK,SAAA;AAC3D,UAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,UAAA,aAAA,GAAgB,QAAQ,CAAA;QAC1B,CAAA,MAAO;AACL,UAAA,MAAM,WAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAA;AAChD,UAAA,MAAM,QAAA,GAAW,QAAA,CAAS,QAAA,CAAS,SAAS,IACxC,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,SAAS,CAAA,GACtC,CAAC,GAAG,UAAU,SAAS,CAAA;AAC3B,UAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,UAAA,aAAA,GAAgB,QAAQ,CAAA;AAC1B,QAAA;AACF,MAAA,CAAA;MACA,CAAC,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,aAAa;AAAA,KAAA;AAG1C,IAAA,uBACEG,cAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAO,aAAA,EAAe,iBAAA,EAAA,EAC9D,QAAA,iCAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EAC9E,CAAA;AAEJ,EAAA;AACF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,oBAAA,GAA6BH,iCAAyD,IAAI,CAAA;AAMzF,IAAM,aAAA,GAAsBA,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,GAAG,KAAA,IAAS,GAAA,KAAQ;AACvC,IAAA,MAAM,OAAA,GAAgBA,8BAAW,gBAAgB,CAAA;AACjD,IAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAEtE,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,IAAA,KAAS,QAAA,GAC5B,QAAQ,KAAA,KAAU,KAAA,GAClB,KAAA,CAAM,OAAA,CAAQ,QAAQ,KAAK,CAAA,IAAK,OAAA,CAAQ,KAAA,CAAM,SAAS,KAAK,CAAA;AAEhE,IAAA,uBACEG,cAAA,CAAC,oBAAA,CAAqB,QAAA,EAArB,EAA8B,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAA,EAC7C,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA,EAAG,YAAA,EAAY,MAAA,GAAS,MAAA,GAAS,QAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EACxH,CAAA;AAEJ,EAAA;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAIrB,IAAM,gBAAA,GAAyBH,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,gBAAA,GAAyBA,8BAAW,gBAAgB,CAAA;AAC1D,IAAA,MAAM,WAAA,GAAoBA,8BAAW,oBAAoB,CAAA;AAEzD,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,aAAa,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAEzF,IAAA,uBACEG,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBACZ,QAAA,kBAAAC,eAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;AACL,QAAA,eAAA,EAAe,WAAA,CAAY,MAAA;QAC3B,SAAA,EAAW,EAAA;AACT,UAAA,sIAAA;AACA,UAAA;AAAA,SAAA;QAEF,YAAA,EAAY,WAAA,CAAY,SAAS,MAAA,GAAS,QAAA;AAC1C,QAAA,OAAA,EAAS,MAAM,gBAAA,CAAiB,aAAA,CAAc,WAAA,CAAY,KAAK,CAAA;QAC9D,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AACD,0BAAAD,cAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,KAAA,EAAM,4BAAA;cACN,KAAA,EAAM,IAAA;cACN,MAAA,EAAO,IAAA;cACP,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,SAAA,EAAU,0EAAA;AAEV,cAAA,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gBAAc;AAAA;AAAA;AACxB;AAAA;AAAA,KAAA,EAEJ,CAAA;AAEJ,EAAA;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAIxB,IAAM,gBAAA,GAAyBH,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,WAAA,GAAoBA,8BAAW,oBAAoB,CAAA;AACzD,IAAA,IAAI,CAAC,WAAA,EAAa,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAEpE,IAAA,uBACEG,cAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,yBAAA;AACA,UAAA;AAAA,SAAA;QAEF,YAAA,EAAY,WAAA,CAAY,SAAS,MAAA,GAAS,QAAA;AAC1C,QAAA,MAAA,EAAQ,CAAC,WAAA,CAAY,MAAA;QACpB,GAAG,KAAA;AAEJ,QAAA,QAAA,iCAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EAAmD,UAAS;AAAA;AAAA,KAAA;AAGjF,EAAA;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AC1GxB,SAAS,mBAAmB,KAAA,EAA2C;AAC5E,EAAA,MAAM,EAAE,KAA6E,CAAA,GAAS,KAAA;AAE9F,EAAA,MAAM,KAAA,GAA2B;IAC/B,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAC/B,IAAA,OAAO,KAAA,CAAM,MAAM,YAAY,CAAA;AACjC,EAAA;AAEA,EAAA,SAAS,YAAA,GAAuB;AAC9B,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAC/B,IAAA,OAAA,CAAQ,KAAA,CAAM,YAAA,GAAe,CAAA,IAAK,KAAA,CAAM,MAAA;AAC1C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AAEO,SAAS,iBAAiB,KAAA,EAAuC;AACtE,EAAA,MAAM,EAAE,IAAoD,CAAA,GAAM,KAAA;AAElE,EAAA,MAAM,KAAA,GAAyB;IAC7B,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,YAAY,CAAA;AACzC,EAAA;AAEA,EAAA,SAAS,UAAA,GAAsB;AAC7B,IAAA,OAAO,KAAA,CAAM,gBAAgB,IAAA,CAAK,MAAA;AACpC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,cAAA;AACA,IAAA,UAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AChFO,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM,iCAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,QAAA,EAAU,aAAA;MACV,OAAA,EAAS,WAAA;MACT,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,QAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,QAAA,EAAU,4HAAA;MACV,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC;ACRM,IAAM,YAAA,GAAqBD,kBAAA,CAAA,UAAA;EAChC,CAAC,EAAE,KAAA,EAAO,QAAA,GAAW,IAAA,EAAM,kBAAA,GAAqB,KAAM,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACnF,IAAA,MAAM,MAAA,GAAeA,kBAAA,CAAA,MAAA;AACnB,MAAA,kBAAA,CAAmB,EAAE,KAAiB,CAAoB;AAAA,KAAA;AAE5D,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,4BAAS,CAAC,CAAA;AACxD,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAGtD,IAAA,MAAM,oBAAA,GACJ,OAAO,UAAA,KAAe,WAAA,IACtB,OAAO,UAAA,CAAW,UAAA,KAAe,UAAA,IACjC,UAAA,CAAW,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AAEtD,IAAAA,6BAAU,MAAM;AACpB,MAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AAEvB,MAAA,MAAM,IAAA,GAAO,YAAY,MAAM;AAC7B,QAAA,IAAI,oBAAA,EAAsB;AAExB,UAAA,GAAA,CAAI,KAAA,CAAM,YAAA,GAAe,GAAA,CAAI,YAAA,EAAA;AAC7B,UAAA,eAAA,CAAgB,GAAA,CAAI,MAAM,YAAY,CAAA;QACxC,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,IAAI,CAAA;AACjB,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,GAAA,CAAI,KAAA,CAAM,YAAA,GAAe,GAAA,CAAI,YAAA,EAAA;AAC7B,YAAA,eAAA,CAAgB,GAAA,CAAI,MAAM,YAAY,CAAA;AACtC,YAAA,YAAA,CAAa,KAAK,CAAA;AACpB,UAAA,CAAA,EAAG,qBAAqB,CAAC,CAAA;AAC3B,QAAA;AACF,MAAA,CAAA,EAAG,QAAQ,CAAA;AAEX,MAAA,OAAO,MAAM,cAAc,IAAI,CAAA;AACjC,IAAA,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,QAAA,EAAU,kBAAA,EAAoB,oBAAoB,CAAC,CAAA;AAGrE,IAAA,GAAA,CAAI,MAAM,YAAA,GAAe,YAAA;AAEzB,IAAA,MAAM,KAAA,GAAQ,YAAY,SAAA,GAAY,UAAA;AAEtC,IAAA,uBACEC,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,oBAAA,CAAqB,EAAE,KAAA,EAAO,oBAAA,GAAuB,MAAA,GAAS,OAAO,CAAA;AACrE,UAAA;AAAA,SAAA;QAEF,WAAA,EAAU,QAAA;QACV,aAAA,EAAY,MAAA;QACX,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,IAAI,cAAA;AAAe;AAAA,KAAA;AAG1B,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAUpB,IAAM,cAAA,GAAuBD,kBAAA,CAAA,UAAA;EAClC,CAAC,EAAE,IAAA,EAAM,KAAA,GAAQ,EAAA,EAAI,UAAA,GAAa,GAAG,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAClE,IAAA,MAAM,MAAA,GAAeA,0BAAO,gBAAA,CAAiB,EAAE,IAAa,CAAY,CAAC,CAAA;AACzE,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,4BAAS,CAAC,CAAA;AAExD,IAAA,MAAM,oBAAA,GACJ,OAAO,UAAA,KAAe,WAAA,IACtB,OAAO,UAAA,CAAW,UAAA,KAAe,UAAA,IACjC,UAAA,CAAW,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AAEtD,IAAAA,6BAAU,MAAM;AACpB,MAAA,IAAI,oBAAA,EAAsB;AACxB,QAAA,GAAA,CAAI,KAAA,CAAM,eAAe,IAAA,CAAK,MAAA;AAC9B,QAAA,eAAA,CAAgB,KAAK,MAAM,CAAA;AAC3B,QAAA;AACF,MAAA;AAEA,MAAA,MAAM,YAAA,GAAe,WAAW,MAAM;AACpC,QAAA,MAAM,OAAO,MAAM;AACjB,UAAA,IAAI,GAAA,CAAI,KAAA,CAAM,YAAA,GAAe,IAAA,CAAK,MAAA,EAAQ;AACxC,YAAA,GAAA,CAAI,MAAM,YAAA,IAAgB,CAAA;AAC1B,YAAA,eAAA,CAAgB,GAAA,CAAI,MAAM,YAAY,CAAA;AACtC,YAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACxB,UAAA;AACF,QAAA,CAAA;AACA,QAAA,IAAA,EAAA;AACF,MAAA,CAAA,EAAG,UAAU,CAAA;AAEb,MAAA,OAAO,MAAM,aAAa,YAAY,CAAA;AACxC,IAAA,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,oBAAoB,CAAC,CAAA;AAElD,IAAA,GAAA,CAAI,MAAM,YAAA,GAAe,YAAA;AAEzB,IAAA,uBACEC,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,kBAAA,CAAmB,EAAE,MAAA,EAAQ,GAAA,CAAI,YAAA,GAAe,QAAA,GAAW,YAAY,CAAA;AACvE,UAAA;AAAA,SAAA;QAEF,YAAA,EAAY,IAAA;QACX,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,IAAI,cAAA;AAAe;AAAA,KAAA;AAG1B,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;AC7HtB,SAAS,UAAA,CACd,OAAA,EACA,MAAA,GAAsC,EAAA,EAC7B;AACT,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAA;AACtB,EAAA,IAAI,KAAA,GAAmB,EAAE,IAAA,EAAM,IAAA,EAAM,QAAQ,SAAA,EAAA;AAC7C,EAAA,IAAI,SAAA,GAAiC,IAAA;AACrC,EAAA,IAAI,iBAAA,GAA2D,IAAA;AAE/D,EAAA,MAAM,EAAE,oBAAA,GAAuB,EAAA,EAAI,QAAA,GAAW,KAAA,EAAO,UAAA,GAAa,MAAA;AAElE,EAAA,SAAS,SAAS,QAAA,EAAqB;AACrC,IAAA,KAAA,GAAQ,QAAA;AACR,IAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,MAAA,EAAA,CAAG,KAAK,CAAA;AACV,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,QAAQ,IAAA,EAAmB;AAClC,IAAA,QAAA,CAAS;AACP,MAAA,IAAA;AACA,MAAA,MAAA,EAAQ,OAAO,eAAA,GAAkB;KAClC,CAAA;AACH,EAAA;AAGA,EAAA,SAAS,iBAAA,GAAoB;AAC3B,IAAA,IAAI,iBAAA,gBAAiC,iBAAiB,CAAA;AACtD,IAAA,iBAAA,GAAoB,WAAA;MAClB,MAAM;AAAE,QAAA,OAAA,CAAQ,QAAA,EAAA,CAAW,KAAA,CAAM,MAAM;QAAC,CAAC,CAAA;AAAE,MAAA,CAAA;AAC3C,MAAA,oBAAA,GAAuB,EAAA,GAAK;AAAA,KAAA;AAEhC,EAAA;AAGA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,OAAA,CAAQ,QAAQ,CAAA;EAClB,CAAA,MAAO;AACL,IAAA,SAAA,GAAY,OAAA,CAAQ,iBAAA,CAAkB,CAAC,IAAA,KAAS;AAC9C,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,iBAAA,EAAA;AACF,MAAA,CAAA,MAAA,IAAW,iBAAA,EAAmB;AAC5B,QAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,QAAA,iBAAA,GAAoB,IAAA;AACtB,MAAA;IACF,CAAC,CAAA;AACH,EAAA;AAEA,EAAA,OAAO;IACL,QAAA,GAAW;AACT,MAAA,OAAO,KAAA;AACT,IAAA,CAAA;IAEA,MAAM,MAAA,CAAO,OAAO,QAAA,EAAU;AAC5B,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,QAAQ,CAAA;AACjD,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,iBAAA,EAAA;AACA,MAAA,OAAO,IAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAM,gBAAgB,QAAA,EAAU;AAC9B,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,eAAA,CAAgB,QAAQ,CAAA;AACnD,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,iBAAA,EAAA;AACA,MAAA,OAAO,IAAA;AACT,IAAA,CAAA;IAEA,MAAM,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,WAAA,EAAa;AACzC,MAAA,MAAM,OAAO,MAAM,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAO,UAAU,WAAW,CAAA;AAC9D,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,iBAAA,EAAA;AACA,MAAA,OAAO,IAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAM,OAAA,GAAU;AACd,MAAA,MAAM,QAAQ,OAAA,EAAA;AACd,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,QAAA,iBAAA,GAAoB,IAAA;AACtB,MAAA;AACA,MAAA,OAAA,CAAQ,IAAI,CAAA;AACd,IAAA,CAAA;AAEA,IAAA,MAAM,cAAc,KAAA,EAAO;AACzB,MAAA,MAAM,OAAA,CAAQ,cAAc,KAAK,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW;AACf,MAAA,OAAO,QAAQ,QAAA,EAAA;AACjB,IAAA,CAAA;AAEA,IAAA,SAAA,CAAU,EAAA,EAAI;AACZ,MAAA,SAAA,CAAU,IAAI,EAAE,CAAA;AAChB,MAAA,OAAO,MAAM;AAAE,QAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AAAE,MAAA,CAAA;AACtC,IAAA,CAAA;IAEA,OAAA,GAAU;AACR,MAAA,SAAA,CAAU,KAAA,EAAA;AACV,MAAA,SAAA,IAAA;AACA,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,aAAA,CAAc,iBAAiB,CAAA;AACjC,MAAA;AACF,IAAA;AAAA,GAAA;AAEJ;ACpHO,SAAS,OAAA,CAAQ,MAAmB,IAAA,EAAuB;AAChE,EAAA,OAAO,IAAA,EAAM,KAAA,EAAO,QAAA,CAAS,IAAI,CAAA,IAAK,KAAA;AACxC;AAGO,SAAS,UAAA,CAAW,MAAmB,KAAA,EAA0B;AACtE,EAAA,IAAI,CAAC,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA;AACzB,EAAA,OAAO,KAAA,CAAM,KAAK,CAAC,IAAA,KAAS,KAAK,KAAA,CAAM,QAAA,CAAS,IAAI,CAAC,CAAA;AACvD;AAGO,SAAS,WAAA,CAAY,MAAmB,KAAA,EAA0B;AACvE,EAAA,IAAI,CAAC,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA;AACzB,EAAA,OAAO,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,KAAK,KAAA,CAAM,QAAA,CAAS,IAAI,CAAC,CAAA;AACxD;AAGO,SAAS,eAAe,IAAA,EAA4B;AACzD,EAAA,OAAO,OAAA,CAAQ,MAAM,OAAO,CAAA;AAC9B;AAEO,SAAS,kBAAkB,IAAA,EAA4B;AAC5D,EAAA,OAAO,UAAA,CAAW,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAC/C;AAGO,SAAS,iBAAiB,KAAA,EAAyB;AACxD,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA,EAAG,OAAO,QAAA;AACpC,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA,EAAG,OAAO,WAAA;AACvC,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,EAAG,OAAO,SAAA;AACrC,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,SAAS,CAAA,EAAG,OAAO,UAAA;AACtC,EAAA,OAAO,GAAA;AACT;AAGO,SAAS,mBAAmB,IAAA,EAA6B;AAC9D,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,EAAA;AAClB,EAAA,IAAI,OAAA,CAAQ,MAAM,OAAO,CAAA,SAAU,CAAC,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,SAAS,CAAA;AAC5E,EAAA,IAAI,QAAQ,IAAA,EAAM,UAAU,CAAA,EAAG,OAAO,CAAC,SAAS,CAAA;AAChD,EAAA,OAAO,EAAA;AACT;;;ACrBA,IAAM,WAAA,GAAoBH,iCAAuC,IAAI,CAAA;AAmB9D,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,GAAG,QAAA,EAA6B;AACvE,EAAA,MAAM,OAAA,GAAgBA,0BAAuB,IAAI,CAAA;AAEjD,EAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,IAAI,MAAM,2EAA2E,CAAA;AAC7F,IAAA;AACA,IAAA,OAAA,CAAQ,OAAA,GAAU,UAAA,CAAW,MAAA,CAAO,OAAA,EAAS,MAAM,CAAA;AACrD,EAAA;AAEA,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAUA,4BAAoB,MAAM,OAAA,CAAQ,OAAA,CAAS,QAAA,EAAU,CAAA;AAE/EA,EAAAA,6BAAU,MAAM;AACpB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAS,SAAA,CAAU,QAAQ,CAAA;AACjD,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,EAAA;AACA,MAAA,OAAA,CAAQ,QAAS,OAAA,EAAA;AACnB,IAAA,CAAA;AACF,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAcK,kBAAA,CAAA,OAAA;IAClB,OAAO;AACL,MAAA,IAAA,EAAM,KAAA,CAAM,IAAA;AACZ,MAAA,SAAA,EAAW,MAAM,MAAA,KAAW,SAAA;AAC5B,MAAA,eAAA,EAAiB,MAAM,MAAA,KAAW,eAAA;AAClC,MAAA,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,KAAM,QAAQ,OAAA,CAAS,MAAA,CAAO,GAAG,CAAC,CAAA;AAC9C,MAAA,eAAA,EAAiB,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAS,gBAAgB,CAAC,CAAA;MAC1D,MAAA,EAAQ,CAAC,GAAG,CAAA,EAAG,CAAA,KAAM,QAAQ,OAAA,CAAS,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;MACpD,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAS,OAAA,EAAA;AAChC,MAAA,aAAA,EAAe,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAS,cAAc,CAAC,CAAA;MACtD,QAAA,EAAU,MAAM,OAAA,CAAQ,OAAA,CAAS,QAAA;AAAS,KAAA,CAAA;IAE5C,CAAC,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,MAAM;AAAA,GAAA;AAG3B,EAAA,OAAaL,iCAAc,WAAA,CAAY,QAAA,EAAU,EAAE,KAAA,IAAS,QAAQ,CAAA;AACtE;AAMO,SAAS,OAAA,GAA4B;AAC1C,EAAA,MAAM,GAAA,GAAYA,8BAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AACjE,EAAA;AACA,EAAA,OAAO,GAAA;AACT;ACpEO,SAAS,SAAA,CAAU;AACxB,EAAA,QAAA;AACA,EAAA,QAAA;AACA,EAAA,KAAA;AACA,EAAA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAiB,IAAA,KAAS,OAAA,EAAA;AAE7C,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAaK,kBAAA,CAAA,aAAA,CAAoBA,kBAAA,CAAA,QAAA,EAAU,IAAA,EAAM,QAAA,IAAY,IAAI,CAAA;AACnE,EAAA;AAEA,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,OAAaA,kBAAA,CAAA,aAAA,CAAoBA,kBAAA,CAAA,QAAA,EAAU,IAAA,EAAM,QAAA,IAAY,IAAI,CAAA;AACnE,EAAA;AAEA,EAAA,IAAI,KAAA,IAAS,MAAM,MAAA,GAAS,CAAA,IAAK,CAAC,UAAA,CAAW,IAAA,EAAM,KAAK,CAAA,EAAG;AACzD,IAAA,OAAaA,kBAAA,CAAA,aAAA,CAAoBA,kBAAA,CAAA,QAAA,EAAU,IAAA,EAAM,YAAA,IAAgB,IAAI,CAAA;AACvE,EAAA;AAEA,EAAA,OAAaA,kBAAA,CAAA,aAAA,CAAoBA,kBAAA,CAAA,QAAA,EAAU,IAAA,EAAM,QAAQ,CAAA;AAC3D;;;ACzBA,IAAM,cAAA,GAAiC,CAAC,SAAA,EAAW,SAAA,EAAW,aAAa,CAAA;AAcpE,SAAS,WAAA,CAAY,KAAA,GAAoB,EAAA,EAAc;AAC5D,EAAA,MAAM,EAAE,OAAA,GAAU,SAAA,EAAA,GAAc,KAAA;AAEhC,EAAA,MAAM,YAAyC,EAAA;AAE/C,EAAA,IAAI,cAAA,CAAe,QAAA,CAAS,OAAO,CAAA,EAAG;AACpC,IAAA,SAAA,CAAU,IAAA,GAAO,QAAA;AACnB,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAC/C,EAAA,cAAA,CAAe,cAAc,CAAA,GAAI,OAAA;AAEjC,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC7CO,IAAM,gBAAgB,GAAA,CAAI;EAC/B,IAAA,EAAM,wKAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,OAAA,EAAS,kFAAA;MACT,OAAA,EAAS,kFAAA;MACT,SAAA,EAAW,iFAAA;MACX,WAAA,EAAa,4GAAA;MACb,OAAA,EAAS,iBAAA;MACT,OAAA,EAAS,uFAAA;MACT,OAAA,EAAS;AAAA,KAAA;IAEX,IAAA,EAAM;MACJ,EAAA,EAAI,uBAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS,SAAA;IACT,IAAA,EAAM;AAAA;AAEV,CAAC;ACHM,IAAM,KAAA,GAAcC,kBAAA,CAAA,UAAA;EACzB,CAAC,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACzD,IAAA,MAAM,GAAA,GAAM,WAAA,CAAY,EAAE,OAAS,CAAM,CAAA;AACzC,IAAA,MAAM,OAAA,GAAU,GAAG,aAAA,CAAc,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAE9D,IAAA,uBACEH,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,OAAA;AACV,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;;ACrBb,SAAS,eAAA,CAAgB,KAAA,GAAwB,EAAA,EAAkB;AACxE,EAAA,MAAM,EAAE,WAAA,GAAc,GAAA,EAAA,GAAQ,KAAA;AAE9B,EAAA,SAAS,SAAS,IAAA,EAAuB;AACvC,IAAA,IAAI,IAAA,KAAS,GAAA,EAAK,OAAO,WAAA,KAAgB,GAAA;AACzC,IAAA,OAAO,WAAA,CAAY,WAAW,IAAI,CAAA;AACpC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA,EAAW,EAAE,IAAA,EAAM,YAAA,EAAc,YAAA,EAAc,iBAAA,EAAA;AAC/C,IAAA,QAAA;IACA,YAAA,EAAc,CAAC,SACb,QAAA,CAAS,IAAI,IAAI,EAAE,cAAA,EAAgB,MAAA,EAAA,GAAW;AAAC,GAAA;AAErD;AC9BO,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM,uFAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,IAAA,EAAM,iBAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC;ACKM,IAAM,SAAA,GAAkBI,kBAAA,CAAA,UAAA;EAC7B,CAAC,EAAE,OAAO,EAAA,EAAI,aAAa,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACxD,IAAA,MAAM,GAAA,GAAM,eAAA,CAAgB,EAAQ,aAAa,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA;AAEjD,IAAA,uBAAAJ,eACG,KAAA,EAAA,EAAI,KAAU,SAAA,EAAW,OAAA,EAAU,GAAG,GAAA,CAAI,SAAA,EAAY,GAAG,OACxD,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AACjB,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AACpC,MAAA,uBACEC,eAAAA;AAAC,QAAA,GAAA;AAAA,QAAA;AAEC,UAAA,IAAA,EAAM,GAAA,CAAI,IAAA;AACV,UAAA,SAAA,EAAW,qBAAqB,EAAE,MAAA,EAAQ,MAAA,GAAS,MAAA,GAAS,SAAS,CAAA;UACpE,GAAG,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;UAE5B,QAAA,EAAA;AAAA,YAAA,GAAA,CAAI,IAAA,oBAAQD,cAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,MAAA,IAAU,IAAI,UAAA,GAAa,GAAA,CAAI,UAAA,GAAa,GAAA,CAAI,MAAK,CAAA;AAC5F,4BAAAA,eAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,OAAM;AAAA;AAAA,SAAA;QANZ,GAAA,CAAI;AAAA,OAAA;IASf,CAAC,CAAA,EACH,CAAA,EACF,CAAA;AAEJ,EAAA;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;;ACxBxB,SAAS,aAAa,OAAA,EAAyB;AAC7C,EAAA,OAAO,QACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAC1D,KAAK,GAAG,CAAA;AACb;AAEA,SAAS,WAAA,CACP,QAAA,EACA,MAAA,GAAiC,EAAA,EACf;AAClB,EAAA,MAAM,WAAW,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,OAAO,OAAO,CAAA;AACnD,EAAA,MAAM,QAA0B,CAAC,EAAE,OAAO,MAAA,EAAQ,IAAA,EAAM,KAAK,CAAA;AAE7D,EAAA,IAAI,WAAA,GAAc,EAAA;AAClB,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,WAAA,IAAe,IAAI,OAAO,CAAA,CAAA;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK;AACT,MAAA,KAAA,EAAO,OAAO,OAAO,CAAA,IAAK,OAAO,WAAW,CAAA,IAAK,aAAa,OAAO,CAAA;MACrE,IAAA,EAAM;KACP,CAAA;AACH,EAAA;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,iBAAA,CAAkB,KAAA,GAA0B,EAAA,EAAoB;AAC9E,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,WAAA,EAAa,MAAA,GAAS,EAAA,EAAI,SAAA,GAAY,GAAA,EAAK,QAAA,EAAA,GAAa,KAAA;AAEjF,EAAA,IAAI,QAAQ,WAAA,KAAgB,QAAA,GAAW,YAAY,QAAA,EAAU,MAAM,IAAI,EAAA,CAAA;AAEvE,EAAA,IAAI,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,QAAA,EAAU;AACvC,IAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,EAAE,WAAW,CAAA,CAAE,CAAA;AACxC,IAAA,KAAA,GAAQ,CAAC,KAAA,EAAO,EAAE,OAAO,KAAA,EAAA,EAAS,GAAG,IAAI,CAAA;AAC3C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;IACA,SAAA,EAAW,EAAE,cAAc,YAAA,EAAA;AAC3B,IAAA,SAAA;AACA,IAAA,MAAA,EAAQ,CAAC,KAAA,KAAkB,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA;IACpD,aAAA,EAAe,CAAC,KAAA,KACd,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,IAAI,EAAE,cAAA,EAAgB,MAAA,EAAA,GAAW;AAAC,GAAA;AAEjE;ACrEO,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,mBAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,IAAA,EAAM,6BAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC;AAEM,IAAM,yBAAA,GAA4B;ACSlC,IAAM,WAAA,GAAoBK,kBAAA,CAAA,UAAA;EAC/B,CACE;AACE,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAM,kBAAkB,EAAE,QAAA,EAAU,OAAO,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA;AAC9E,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,mBAAA,EAAA,EAAuB,SAAS,CAAA;AAEnD,IAAA,uBAAAL,cAAAA,CACG,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,OAAA,EAAU,GAAG,GAAA,CAAI,SAAA,EAAY,GAAG,KAAA,EACxD,0BAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,2BAAA,EACX,QAAA,EAAA,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC9B,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC/B,MAAA,uBACEC,eAAAA,CAAC,IAAA,EAAA,EAAe,SAAA,EAAU,6BACvB,QAAA,EAAA;AAAA,QAAA,KAAA,GAAQ,CAAA,oBAAAD,cAAAA,CACN,MAAA,EAAA,EAAK,SAAA,EAAW,yBAAA,EAA2B,aAAA,EAAY,MAAA,EACrD,QAAA,EAAA,GAAA,CAAI,SAAA,EACP,CAAA;QAED,IAAA,CAAK,IAAA,IAAQ,CAAC,MAAA,mBACbA,cAAAA;AAAC,UAAA,GAAA;AAAA,UAAA;AACC,YAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,YAAA,SAAA,EAAW,sBAAA,CAAuB,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AAEpD,YAAA,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SAAA,mBAGRA,cAAAA;AAAC,UAAA,MAAA;AAAA,UAAA;AACC,YAAA,SAAA,EAAW,sBAAA,CAAuB;AAChC,cAAA,MAAA,EAAQ,SAAS,MAAA,GAAS;aAC3B,CAAA;YACA,GAAG,GAAA,CAAI,cAAc,KAAK,CAAA;AAE1B,YAAA,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,OAAA,IArBK,KAuBT,CAAA;IAEJ,CAAC,CAAA,EACH,CAAA,EACF,CAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACxDnB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,QAAA,GAAW,KAAA,EAAO,UAAU,KAAA,EAAO,IAAA,GAAO,UAAA,GAAa,KAAA;AAC/D,EAAA,MAAM,aAAA,GAAgB,CAAC,QAAA,IAAY,CAAC,OAAA;AAEpC,EAAA,MAAM,YAAyC,EAAA;AAC/C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AACA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC7B,IAAA,SAAA,CAAU,YAAY,CAAA,GAAI,SAAA,CAAU,YAAY,CAAA,IAAK,MAAA;AACvD,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAC/C,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,cAAA,CAAe,cAAc,CAAA,GAAI,EAAA;AACnC,EAAA;AACA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,MAAM,mBAAuC,EAAA;AAC7C,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,gBAAA,CAAiB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AACxC,IAAA,gBAAA,CAAiB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC1C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,gBAAA;AACA,IAAA,aAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AAEO,SAAS,cAAc,KAAA,EAA4B;AACxD,EAAA,OAAO,MAAM,IAAA,IAAQ,QAAA;AACvB;AC5DO,IAAM,YAAA,GAA8B;EACzC,IAAA,EAAM,QAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,qBAAA,EAAA;AAC7C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,gCAAA,EAAA;AAC7C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,oBAAA,EAAA;AACrD,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,eAAA,EAAA;AACrD,IAAA,IAAA,EAAM,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,kBAAA;AAAmB;AAExE;AAEO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,4RAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,OAAA,EAAS,+DAAA;MACT,WAAA,EAAa,8EAAA;MACb,OAAA,EAAS,0FAAA;MACT,SAAA,EAAW,wEAAA;MACX,KAAA,EAAO,8CAAA;MACP,IAAA,EAAM;AAAA,KAAA;IAER,IAAA,EAAM;MACJ,EAAA,EAAI,0BAAA;MACJ,EAAA,EAAI,6BAAA;MACJ,OAAA,EAAS,eAAA;MACT,EAAA,EAAI,sBAAA;MACJ,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS,SAAA;IACT,IAAA,EAAM;AAAA;AAEV,CAAC;ACdM,IAAM,MAAA,GAAeM,kBAAA,CAAA,UAAA;EAC1B,CAAC,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACrF,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,EAAiB,QAAA,EAAU,OAAA,EAAkB,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,CAAA;AACxF,IAAA,MAAM,OAAA,GAAU,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAI/D,IAAA,IAAI,OAAA,IAAiBA,kBAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,MAAA,OAAaA,gCAAa,QAAA,EAAyD;AACjF,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAU,QAAA,CAAS,KAAA,CAAkC,SAAmB,CAAA;AACtF,QAAA,IAAA,EAAM,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AACxC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;OACJ,CAAA;AACH,IAAA;AAEA,IAAA,uBACEL,eAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,IAAA,EAAM,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;QACxC,SAAA,EAAW,OAAA;AACX,QAAA,QAAA,EAAU,QAAA,IAAY,OAAA;AACrB,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCA,eAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,sBAAA;cACV,KAAA,EAAM,4BAAA;cACN,IAAA,EAAK,MAAA;cACL,OAAA,EAAQ,WAAA;cACR,aAAA,EAAY,MAAA;cAEZ,QAAA,EAAA;gCAAAD,cAAAA;AAAC,kBAAA,QAAA;AAAA,kBAAA;oBACC,SAAA,EAAU,YAAA;oBACV,EAAA,EAAG,IAAA;oBACH,EAAA,EAAG,IAAA;oBACH,CAAA,EAAE,IAAA;oBACF,MAAA,EAAO,cAAA;oBACP,WAAA,EAAY;AAAA;AAAA,iBAAA;gCAEdA,cAAAA;AAAC,kBAAA,MAAA;AAAA,kBAAA;oBACC,SAAA,EAAU,YAAA;oBACV,IAAA,EAAK,cAAA;oBACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AAAA,WAAA;AAGH,UAAA;AAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;ACfrB,SAAS,SAAA,CAAU,GAAS,CAAA,EAAkB;AAC5C,EAAA,OACE,EAAE,WAAA,EAAA,KAAkB,CAAA,CAAE,WAAA,MACtB,CAAA,CAAE,QAAA,EAAA,KAAe,CAAA,CAAE,UAAA,IACnB,CAAA,CAAE,OAAA,EAAA,KAAc,EAAE,OAAA,EAAA;AAEtB;AAGA,SAAS,aAAa,IAAA,EAAkB;AACtC,EAAA,OAAO,IAAI,KAAK,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,QAAA,IAAY,CAAC,CAAA;AACxD;AAGA,IAAM,SAAA,GAAY,CAAC,QAAA,EAAU,QAAA,EAAU,WAAW,WAAA,EAAa,UAAA,EAAY,UAAU,UAAU,CAAA;AAExF,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAiB;AACrE,EAAA,MAAM;IACJ,KAAA,EAAO,eAAA;AACP,IAAA,YAAA;AACA,IAAA,QAAA;IACA,KAAA,EAAO,eAAA;AACP,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA,GAAgB;GAAC,GACf,KAAA;AAEJ,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAA;AAGlB,EAAA,MAAM,eAAe,eAAA,IAAmB,YAAA;AAGxC,EAAA,MAAM,YAAA,GAAe,eAAA,GACjB,YAAA,CAAa,eAAe,CAAA,GAC5B,eACE,YAAA,CAAa,YAAY,CAAA,GACzB,YAAA,CAAa,KAAK,CAAA;AAExB,EAAA,MAAM,MAAA,GAAS,WAAW,cAAc,CAAA;AACxC,EAAA,MAAM,OAAA,GAAU,WAAW,oBAAoB,CAAA;AAE/C,EAAA,SAAS,eAAe,IAAA,EAAqB;AAC3C,IAAA,IAAI,OAAA,IAAW,IAAA,GAAOO,WAAAA,CAAW,OAAO,GAAG,OAAO,IAAA;AAClD,IAAA,IAAI,OAAA,IAAW,IAAA,GAAOC,SAAAA,CAAS,OAAO,GAAG,OAAO,IAAA;AAChD,IAAA,OAAO,cAAc,IAAA,CAAK,CAAC,MAAM,SAAA,CAAU,CAAA,EAAG,IAAI,CAAC,CAAA;AACrD,EAAA;AAEA,EAAA,SAASD,YAAW,IAAA,EAAkB;AACpC,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA,CAAK,WAAA,EAAA,EAAe,KAAK,QAAA,EAAA,EAAY,IAAA,CAAK,OAAA,EAAS,CAAA;AACrE,EAAA;AAEA,EAAA,SAASC,UAAS,IAAA,EAAkB;AAClC,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,QAAA,EAAA,EAAY,IAAA,CAAK,OAAA,EAAA,EAAW,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AACtF,EAAA;AAGA,EAAA,SAAS,SAAA,GAA2B;AAClC,IAAA,MAAM,IAAA,GAAO,aAAa,WAAA,EAAA;AAC1B,IAAA,MAAM,KAAA,GAAQ,aAAa,QAAA,EAAA;AAG3B,IAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,CAAA;AAErC,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,EAAA;AAGvB,IAAA,MAAM,YAAY,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,IAAI,QAAQ,CAAA;AAEpD,IAAA,MAAM,OAAsB,EAAA;AAC5B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,MAAM,OAAO,IAAI,IAAA;AACf,QAAA,SAAA,CAAU,WAAA,EAAA;AACV,QAAA,SAAA,CAAU,QAAA,EAAA;AACV,QAAA,SAAA,CAAU,SAAA,GAAY;AAAA,OAAA;AAExB,MAAA,IAAA,CAAK,IAAA,CAAK;AACR,QAAA,IAAA;QACA,OAAA,EAAS,SAAA,CAAU,MAAM,KAAK,CAAA;AAC9B,QAAA,UAAA,EAAY,YAAA,GAAe,SAAA,CAAU,IAAA,EAAM,YAAY,CAAA,GAAI,KAAA;QAC3D,cAAA,EAAgB,IAAA,CAAK,UAAA,KAAe,KAAA;AACpC,QAAA,UAAA,EAAY,eAAe,IAAI;OAChC,CAAA;AACH,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,YAAA,CAAa,WAAA,IAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAA;AAChF,IAAA,aAAA,GAAgB,IAAI,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,YAAA,CAAa,WAAA,IAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAA;AAChF,IAAA,aAAA,GAAgB,IAAI,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,OAAO,IAAA,EAAkB;AAChC,IAAA,IAAI,CAAC,cAAA,CAAe,IAAI,CAAA,EAAG;AACzB,MAAA,QAAA,GAAW,IAAI,CAAA;AACjB,IAAA;AACF,EAAA;AAEA,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,MAAA;IACN,iBAAA,EAAmB,OAAA;IACnB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,gBAAgB,GAAA,EAAyE;AAChG,IAAA,OAAO;MACL,IAAA,EAAM,UAAA;AACN,MAAA,eAAA,EAAiB,GAAA,CAAI,UAAA;AACrB,MAAA,eAAA,EAAiB,GAAA,CAAI,UAAA;MACrB,cAAA,EAAgB,GAAA,CAAI,UAAW,MAAA,GAAmB,MAAA;MAClD,YAAA,EAAc,CAAA,EAAG,UAAU,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAC,KAAK,GAAA,CAAI,IAAA,CAAK,mBAAmB,OAAA,EAAS,EAAE,OAAO,MAAA,EAAQ,GAAA,EAAK,WAAW,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,KAAA;AAE9I,EAAA;AAEA,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,YAAA;AACA,MAAA;AAAA,KAAA;AAEF,IAAA,IAAA,EAAM,SAAA,EAAA;AACN,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;IACA,GAAA,EAAK;MACH,IAAA,EAAM,MAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;ACvMO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,cAAc,GAAA,CAAI;EAC7B,IAAA,EAAM,oEAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,OAAA,EAAS,8CAAA;MACT,QAAA,EAAU,wDAAA;MACV,KAAA,EAAO,kCAAA;MACP,QAAA,EAAU,qDAAA;MACV,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;;;ACDD,IAAM,WAAA,GAAc;AAClB,EAAA,SAAA;AAAW,EAAA,UAAA;AAAY,EAAA,OAAA;AAAS,EAAA,OAAA;AAAS,EAAA,KAAA;AAAO,EAAA,MAAA;AAChD,EAAA,MAAA;AAAQ,EAAA,QAAA;AAAU,EAAA,WAAA;AAAa,EAAA,SAAA;AAAW,EAAA,UAAA;AAAY,EAAA;AACxD,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAEtD,SAAS,QAAA,CAAS;AACvB,EAAA,SAAA;AACA,EAAA,KAAA;AACA,EAAA,YAAA;AACA,EAAA,QAAA;AACA,EAAA,KAAA;AACA,EAAA,aAAA;AACA,EAAA,OAAA;AACA,EAAA,OAAA;AACA,EAAA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUC,4BAA2B,YAAY,CAAA;AAC/F,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,kBAAA,CAAA,QAAA;AACtD,IAAA,MAAM,KAAA,IAAS,KAAA,IAAS,YAAA,oBAAA,IAAoB,IAAA;AAAK,GAAA;AAGnD,EAAA,MAAM,oBAAoB,KAAA,KAAU,MAAA;AACpC,EAAA,MAAM,oBAAoB,KAAA,KAAU,MAAA;AAEpC,EAAA,MAAM,aAAA,GAAgB,oBAAoB,KAAA,GAAQ,iBAAA;AAClD,EAAA,MAAM,YAAA,GAAe,oBAAoB,KAAA,GAAQ,iBAAA;AAEjD,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,IAAA,KAAe;AACd,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,oBAAA,CAAqB,IAAI,CAAA;AAC3B,MAAA;AACA,MAAA,QAAA,GAAW,IAAI,CAAA;AACjB,IAAA,CAAA;AACA,IAAA,CAAC,mBAAmB,QAAQ;AAAA,GAAA;AAG9B,EAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,IAAA,CAAC,CAAA,KAAY;AACX,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,oBAAA,CAAqB,CAAC,CAAA;AACxB,MAAA;AACA,MAAA,aAAA,GAAgB,CAAC,CAAA;AACnB,IAAA,CAAA;AACA,IAAA,CAAC,mBAAmB,aAAa;AAAA,GAAA;AAGnC,EAAA,MAAM,MAAM,cAAA,CAAe;IACzB,KAAA,EAAO,aAAA;IACP,KAAA,EAAO,YAAA;IACP,QAAA,EAAU,YAAA;IACV,aAAA,EAAe,iBAAA;AACf,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA;GACD,CAAA;AAED,EAAA,SAAS,YAAY,GAAA,EAA6E;AAChG,IAAA,IAAI,GAAA,CAAI,YAAY,OAAO,UAAA;AAC3B,IAAA,IAAI,GAAA,CAAI,YAAY,OAAO,UAAA;AAC3B,IAAA,IAAI,CAAC,GAAA,CAAI,cAAA,EAAgB,OAAO,SAAA;AAChC,IAAA,IAAI,GAAA,CAAI,SAAS,OAAO,OAAA;AACxB,IAAA,OAAO,SAAA;AACT,EAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,WAAA,CAAY,GAAA,CAAI,MAAM,YAAA,CAAa,QAAA,EAAU,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,KAAA,CAAM,YAAA,CAAa,aAAa,CAAA,CAAA;AAE5G,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;MACE,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAA,EAAoB,SAAS,CAAA;AAC3C,MAAA,GAAG,GAAA,CAAI;AAAA,KAAA;;AAGH,IAAAA,kBAAA,CAAA,aAAA,CAAc,cAAA,EAAgB;MAClC,KAAA,EAAO,UAAA;AACP,MAAA,OAAA,EAAS,IAAI,GAAA,CAAI,KAAA;AACjB,MAAA,WAAA,EAAa,GAAA,CAAI,SAAA;AACjB,MAAA,WAAA,EAAa,GAAA,CAAI;KAClB,CAAA;;AAEK,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,6BAAA;QACX,IAAA,EAAM;AAAA,OAAA;MAER,WAAA,CAAY,GAAA;AAAI,QAAA,CAAC,CAAA,KACTA,kBAAA,CAAA,aAAA;AACJ,UAAA,KAAA;AACA,UAAA;YACE,GAAA,EAAK,CAAA;YACL,SAAA,EAAW,4FAAA;YACX,IAAA,EAAM,cAAA;YACN,YAAA,EAAc;AAAA,WAAA;AAEhB,UAAA;AAAA;AACF;AACF,KAAA;;AAGI,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,wBAAA;QACX,IAAA,EAAM;AAAA,OAAA;AAER,MAAA,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM;AACvB,QAAA,MAAM,YAAA,GAAe,GAAA,CAAI,eAAA,CAAgB,GAAG,CAAA;AAC5C,QAAA,MAAM,KAAA,GAAQ,YAAY,GAAG,CAAA;AAC7B,QAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,UAAA,QAAA;AACA,UAAA;YACE,GAAA,EAAK,CAAA;YACL,IAAA,EAAM,QAAA;YACN,SAAA,EAAW,WAAA,CAAY,EAAE,KAAA,EAAO,CAAA;AAChC,YAAA,QAAA,EAAU,GAAA,CAAI,UAAA;AACd,YAAA,OAAA,EAAS,MAAM,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;YAClC,GAAG;AAAA,WAAA;AAEL,UAAA,GAAA,CAAI,KAAK,OAAA;AAAQ,SAAA;MAErB,CAAC;AAAA;AACH,GAAA;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAchB,SAAS,cAAA,CAAe;AAC7B,EAAA,KAAA;AACA,EAAA,OAAA;AACA,EAAA,WAAA;AACA,EAAA,WAAA;AACA,EAAA;AACF,CAAA,EAAwB;AACtB,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;MACE,SAAA,EAAW,EAAA,CAAG,0CAA0C,SAAS;AAAA,KAAA;AAE7D,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,YAAA,EAAc,gBAAA;QACd,OAAA,EAAS,WAAA;QACT,SAAA,EAAW;AAAA,OAAA;AAEb,MAAA;AAAA,KAAA;AAEI,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,EAAA,EAAI,OAAA;QACJ,SAAA,EAAW,qBAAA;QACX,WAAA,EAAa;AAAA,OAAA;AAEf,MAAA;AAAA,KAAA;AAEI,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,YAAA,EAAc,YAAA;QACd,OAAA,EAAS,WAAA;QACT,SAAA,EAAW;AAAA,OAAA;AAEb,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;AC9K7B,IAAM,cAAA,GAAyC;EAC7C,EAAA,EAAI,YAAA;EACJ,UAAA,EAAY,YAAA;EACZ,EAAA,EAAI,YAAA;EACJ,UAAA,EAAY,YAAA;EACZ,GAAA,EAAK,KAAA;EACL,GAAA,EAAK,KAAA;EACL,EAAA,EAAI,QAAA;EACJ,MAAA,EAAQ,QAAA;EACR,EAAA,EAAI,MAAA;EACJ,IAAA,EAAM,MAAA;EACN,EAAA,EAAI,IAAA;EACJ,IAAA,EAAM,MAAA;EACN,EAAA,EAAI,MAAA;EACJ,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,CAAA,EAAG,GAAA;EACH,EAAA,EAAI,IAAA;EACJ,MAAA,EAAQ,IAAA;EACR,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,IAAA,EAAM,MAAA;EACN,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,MAAA;EACL,EAAA,EAAI,UAAA;EACJ,QAAA,EAAU,UAAA;EACV,GAAA,EAAK,KAAA;EACL,EAAA,EAAI,OAAA;EACJ,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,GAAA,EAAK,KAAA;EACL,IAAA,EAAM,MAAA;EACN,KAAA,EAAO,OAAA;EACP,MAAA,EAAQ,QAAA;EACR,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,GAAA,EAAK,KAAA;EACL,CAAA,EAAG,GAAA;EACH,KAAA,EAAO;AACT,CAAA;AASO,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM;IACJ,KAAA,GAAQ,EAAA;AACR,IAAA,QAAA;IACA,QAAA,GAAW,WAAA;IACX,QAAA,GAAW,KAAA;IACX,KAAA,GAAQ;GAAA,GACN,KAAA;AAEJ,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,MAAM,KAAA,GAAyB;IAC7B,KAAA,EAAO,YAAA;AACP,IAAA,QAAA;AACA,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,SAAA,GAAqG;IACzG,IAAA,EAAM,SAAA;IACN,gBAAA,EAAkB,IAAA;IAClB,YAAA,EAAc,CAAA,cAAA,EAAiB,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,GAAA;AAGnD,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,MAAM,cAAA,GAAyC;IAC7C,eAAA,EAAiB,QAAA;IACjB,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,SAAS,SAAS,QAAA,EAAkB;AAClC,IAAA,YAAA,GAAe,QAAA;AACf,IAAA,KAAA,CAAM,KAAA,GAAQ,QAAA;AACd,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,QAAQ,CAAA;AACnB,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,SAAS,IAAA,EAAsB;AACtC,IAAA,OAAO,cAAA,CAAe,IAAA,CAAK,WAAA,EAAa,CAAA,IAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAA,GAAgB,IAAA,CAAK,MAAM,CAAC,CAAA;AAC1F,EAAA;AAEA,EAAA,SAAS,gBAAA,GAA2B;AAClC,IAAA,OAAO,SAAS,QAAQ,CAAA;AAC1B,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,SAAA;AACA,IAAA,cAAA;AACA,IAAA,QAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACxIO,IAAM,gBAAA,GAAkC;EAC7C,IAAA,EAAM,aAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,wBAAA,EAAA;AAClD,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,wBAAA,EAAA;AAClD,IAAA,QAAA,EAAU,EAAE,QAAA,EAAU,6BAAA,EAA+B,QAAA,EAAU,mBAAA,EAAA;AAC/D,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,0BAAA,EAA4B,QAAA,EAAU,oBAAA,EAAA;AAC1D,IAAA,YAAA,EAAc,EAAE,QAAA,EAAU,+BAAA,EAAiC,QAAA,EAAU,8BAAA;AAA+B;AAExG;AAEO,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,mEAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,KAAA,EAAO,wCAAA;MACP,IAAA,EAAM;AAAA,KAAA;IAER,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,OAAA,EAAS,SAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO,OAAA;IACP,IAAA,EAAM;AAAA;AAEV,CAAC;ACJM,IAAM,UAAA,GAAmBC,kBAAA,CAAA,UAAA;EAC9B,CACE;IACE,KAAA,GAAQ,EAAA;AACR,IAAA,QAAA;IACA,QAAA,GAAW,WAAA;IACX,QAAA,GAAW,KAAA;IACX,KAAA,GAAQ,OAAA;AACR,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA;AAAA,GAAA,EAEF,GAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAM,iBAAiB,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA;AAC3E,IAAA,MAAM,mBAAmB,EAAA,CAAG,kBAAA,CAAmB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAEpE,IAAA,SAAS,aAAa,CAAA,EAA2C;AAC/D,MAAA,GAAA,CAAI,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAC7B,IAAA;AAEA,IAAA,uBAAAT,eAAAA,CACG,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,gBAAA,EAAmB,GAAG,GAAA,CAAI,cAAA,EAClD,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGACb,QAAA,EAAA;AAAA,wBAAAD,eAAC,MAAA,EAAA,EAAM,UAAA,GAAA,CAAI,gBAAA,IAAmB,CAAA;AAC7B,QAAA,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAC3BA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,2BACZA,cAAAA;AAAC,UAAA,QAAA;AAAA,UAAA;YAEC,IAAA,EAAK,QAAA;AACL,YAAA,OAAA,EAAS,MAAA,CAAO,OAAA;YAChB,SAAA,EAAU,4DAAA;AAET,YAAA,QAAA,EAAA,MAAA,CAAO;AAAA,WAAA;UALH,MAAA,CAAO;AAAA,SAOf,GACH;AAAA,OAAA,EAEJ,CAAA;sBACAA,cAAAA;AAAC,QAAA,UAAA;AAAA,QAAA;AACC,UAAA,KAAA;UACA,QAAA,EAAU,YAAA;AACV,UAAA,QAAA;AACA,UAAA,WAAA;UACA,SAAA,EAAU,mFAAA;UACV,UAAA,EAAY,KAAA;UACZ,cAAA,EAAe,KAAA;UACf,YAAA,EAAa,KAAA;UACb,WAAA,EAAY,KAAA;AACX,UAAA,GAAG,GAAA,CAAI;AAAA;AAAA;AACV,KAAA,EACF,CAAA;AAEJ,EAAA;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;AC/ClB,SAAS,iBAAA,CAAkB,KAAA,GAA0B,EAAA,EAAoB;AAC9E,EAAA,MAAM;IACJ,IAAA,EAAM,cAAA;IACN,WAAA,GAAc,KAAA;AACd,IAAA,YAAA;IACA,QAAA,GAAW;GAAA,GACT,KAAA;AAEJ,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,IAAI,YAAA,GAAe,eAAe,cAAA,GAAiB,WAAA;AACnD,EAAA,MAAM,SAAA,GAAY,WAAW,iBAAiB,CAAA;AAE9C,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,YAAA,GAAe,IAAA;AACjB,IAAA;AACA,IAAA,YAAA,GAAe,IAAI,CAAA;AACrB,EAAA,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,CAAC,YAAY,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEnC,EAAA,MAAM,kBAAkB,qBAAA,CAAsB;AAC5C,IAAA,CAAC,IAAA,CAAK,KAAK,GAAG,CAAC,KAAA,KAAyB;AACtC,MAAA,KAAA,CAAM,cAAA,EAAA;AACN,MAAA,MAAA,EAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,KAAK,GAAG,CAAC,KAAA,KAAyB;AACtC,MAAA,KAAA,CAAM,cAAA,EAAA;AACN,MAAA,MAAA,EAAA;AACF,IAAA;GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,eAAe,MAAA,GAAS,QAAA;AAE1C,EAAA,OAAO;IACL,KAAA,EAAO,EAAE,MAAM,YAAA,EAAA;IACf,YAAA,EAAc;MACZ,eAAA,EAAiB,YAAA;MACjB,eAAA,EAAiB,SAAA;MACjB,YAAA,EAAc,SAAA;AACd,MAAA,eAAA,EAAiB,WAAW,EAAA,GAAK;AAAA,KAAA;IAEnC,YAAA,EAAc;MACZ,EAAA,EAAI,SAAA;MACJ,IAAA,EAAM,QAAA;MACN,YAAA,EAAc,SAAA;AACd,MAAA,MAAA,EAAQ,CAAC;AAAA,KAAA;AAEX,IAAA,MAAA;IACA,IAAA,EAAM,MAAA;IACN,KAAA,EAAO,OAAA;AACP,IAAA;AAAA,GAAA;AAEJ;AC3FO,IAAM,6BAA6B,GAAA,CAAI;EAC5C,IAAA,EAAM,gCAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,IAAA,EAAM,wBAAA;MACN,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;;;ACMD,IAAM,kBAAA,GAA2BW,iCAA8C,IAAI,CAAA;AAEnF,SAAS,qBAAA,GAAiD;AACxD,EAAA,MAAM,GAAA,GAAYA,8BAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,KAAA;AACR,MAAA;AAAA,KAAA;AAEJ,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAeO,SAAS,WAAA,CAAY;EAC1B,IAAA,EAAM,cAAA;EACN,WAAA,GAAc,KAAA;AACd,EAAA,YAAA;EACA,QAAA,GAAW,KAAA;AACX,EAAA,QAAA;AACA,EAAA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,4BAAS,WAAW,CAAA;AAC1E,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,eAAe,cAAA,GAAiB,gBAAA;AAE7C,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAC1B,MAAA;AACA,MAAA,YAAA,GAAe,IAAI,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAI7B,EAAA,MAAM,MAAA,GAAeA,0BAAoD,IAAI,CAAA;AAC7E,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,UAAU,iBAAA,CAAkB,EAAE,IAAA,EAAM,WAAA,EAAa,UAAU,CAAA;AACpE,EAAA;AACA,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,OAAA,CAAQ,YAAA,CAAa,EAAA;AAE9C,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,IAAA;MACA,YAAA,EAAc,gBAAA;AACd,MAAA,QAAA;AACA,MAAA;AAAA,KAAA,CAAA;IAEF,CAAC,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,SAAS;AAAA,GAAA;AAG9C,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,kBAAA,CAAmB,QAAA;AACnB,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;AACE,QAAA,YAAA,EAAc,OAAO,MAAA,GAAS,QAAA;AAC9B,QAAA,eAAA,EAAiB,WAAW,EAAA,GAAK,MAAA;AACjC,QAAA;AAAA,OAAA;AAEF,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AASnB,IAAM,kBAAA,GAA2BA,kBAAA,CAAA,UAAA,CAGtC,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAClE,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,UAAU,WAAA,EAAa,SAAA,KACjD,qBAAA,EAAA;AACF,EAAA,MAAM,WAAW,YAAA,IAAgB,WAAA;AAEjC,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,YAAA,CAAa,CAAC,IAAI,CAAA;AACpB,IAAA;AACA,IAAA,OAAA,GAAU,CAAC,CAAA;AACb,EAAA,CAAA;AAEA,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,QAAA;AACA,IAAA;AACE,MAAA,GAAA;MACA,IAAA,EAAM,QAAA;MACN,eAAA,EAAiB,IAAA;MACjB,eAAA,EAAiB,SAAA;AACjB,MAAA,YAAA,EAAc,OAAO,MAAA,GAAS,QAAA;AAC9B,MAAA,eAAA,EAAiB,WAAW,EAAA,GAAK,MAAA;AACjC,MAAA,QAAA,EAAU,QAAA,IAAY,MAAA;MACtB,OAAA,EAAS,WAAA;MACT,GAAG;AAAA,KAAA;AAEL,IAAA;AAAA,GAAA;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAS1B,IAAM,kBAAA,GAA2BA,8BAGtC,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAC5C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAA,GAAc,qBAAA,EAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,GAAS,QAAA;AAElC,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,GAAA;MACA,EAAA,EAAI,SAAA;MACJ,IAAA,EAAM,QAAA;MACN,YAAA,EAAc,SAAA;MACd,SAAA,EAAW,EAAA;AACT,QAAA,0BAAA,CAA2B,EAAE,KAAA,EAAO,IAAA,GAAO,MAAA,GAAS,UAAU,CAAA;AAC9D,QAAA;AAAA,OAAA;MAEF,GAAG;AAAA,KAAA;AAEL,IAAA;AAAA,GAAA;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;;AChHjC,SAAS,aAAA,CAAc,OAAe,MAAA,EAAyB;AAC7D,EAAA,OAAO,MAAM,WAAA,EAAA,CAAc,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA;AAC1D;AAEO,SAAS,cACd,KAAA,GAAsB,EAAA,EACtB,KAAA,GAA2B,EAAA,EACf;AACZ,EAAA,MAAM;IACJ,IAAA,EAAM,cAAA;AACN,IAAA,YAAA;IACA,MAAA,GAAS;GAAA,GACP,KAAA;AAEJ,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,WAAW,eAAe,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,WAAW,cAAc,CAAA;AAExC,EAAA,IAAI,WAAA,GAAc,EAAA;AAClB,EAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,EAAA,IAAI,aAAA,GAAgB,CAAC,GAAG,KAAK,CAAA;AAC7B,EAAA,MAAM,SAAS,cAAA,IAAkB,IAAA;AAEjC,EAAA,SAAS,YAAY,KAAA,EAAkC;AACrD,IAAA,IAAI,CAAC,KAAA,EAAO,OAAO,CAAC,GAAG,KAAK,CAAA;AAC5B,IAAA,OAAO,KAAA,CAAM,OAAO,CAAC,IAAA,KAAS,OAAO,IAAA,CAAK,KAAA,EAAO,KAAK,CAAC,CAAA;AACzD,EAAA;AAEA,EAAA,SAAS,SAAS,KAAA,EAAqB;AACrC,IAAA,WAAA,GAAc,KAAA;AACd,IAAA,aAAA,GAAgB,YAAY,KAAK,CAAA;AACjC,IAAA,aAAA,GAAgB,CAAA;AAClB,EAAA;AAEA,EAAA,SAAS,SAAS,KAAA,EAA6C;AAC7D,IAAA,MAAM,MAAM,KAAA,IAAS,aAAA;AACrB,IAAA,MAAM,IAAA,GAAO,cAAc,GAAG,CAAA;AAC9B,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,QAAA,EAAU,OAAO,MAAA;AACnC,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,QAAA,aAAA,GAAA,CAAiB,aAAA,GAAgB,KAAK,aAAA,CAAc,MAAA;AACtD,MAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,OAAO,GAAG,CAAC,CAAA,KAAM;AACrB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,QAAA,aAAA,GAAA,CAAiB,aAAA,GAAgB,CAAA,GAAI,aAAA,CAAc,MAAA,IAAU,aAAA,CAAc,MAAA;AAC7E,MAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,KAAM;AACnB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,QAAA,EAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,KAAM;AACpB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,YAAA,GAAe,KAAK,CAAA;AACtB,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,SAAA,GAAqC;IACzC,IAAA,EAAM,UAAA;IACN,eAAA,EAAiB,MAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,WAAA,EAAa,MAAA;IACb,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,cAAA,GAA0C;IAC9C,IAAA,EAAM,WAAA;IACN,mBAAA,EAAqB,MAAA;IACrB,eAAA,EAAiB,MAAA;IACjB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,aAAA,GAAyC;IAC7C,IAAA,EAAM,SAAA;IACN,EAAA,EAAI,MAAA;IACJ,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,gBAAA,CAAiB,MAAuB,KAAA,EAAwC;AACvF,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;AACN,MAAA,eAAA,EAAiB,KAAA,KAAU,aAAA;AAC3B,MAAA,eAAA,EAAiB,KAAK,QAAA,IAAY,KAAA;AAClC,MAAA,EAAA,EAAI,CAAA,EAAG,MAAM,CAAA,MAAA,EAAS,IAAA,CAAK,EAAE,CAAA;AAAA,KAAA;AAEjC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAAsB;AACxB,MAAA,OAAO;QACL,MAAA,EAAQ,WAAA;AACR,QAAA,aAAA;AACA,QAAA,aAAA;QACA,IAAA,EAAM;AAAA,OAAA;AAEV,IAAA,CAAA;IACA,MAAA,EAAQ,QAAA;IACR,MAAA,EAAQ,QAAA;AACR,IAAA,gBAAA;AACA,IAAA,SAAA;AACA,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,gBAAA;IACA,GAAA,EAAK;MACH,IAAA,EAAM,MAAA;MACN,KAAA,EAAO,OAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;AAEJ;AChLO,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,mGAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,OAAA,EAAS,EAAA;MACT,QAAA,EAAU,kCAAA;MACV,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM;AACR,CAAC;;;ACGD,IAAM,cAAA,GAAuBC,iCAA0C,IAAI,CAAA;AAE3E,SAAS,iBAAA,GAAyC;AAChD,EAAA,MAAM,GAAA,GAAYA,8BAAW,cAAc,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAC7E,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAcO,SAAS,OAAA,CAAQ;AACtB,EAAA,IAAA;AACA,EAAA,YAAA;AACA,EAAA,MAAA;AACA,EAAA,SAAA;AACA,EAAA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAA4B,EAAE,CAAA;AAC9D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,4BAAS,CAAC,CAAA;AAE1D,EAAA,MAAM,MAAA,GAAeA,0BAAgD,IAAI,CAAA;AAGzE,EAAA,MAAM,GAAA,GAAYA,2BAAQ,MAAM;AAC9B,IAAA,MAAM,WAAW,aAAA,CAAc,EAAE,MAAM,YAAA,EAAc,MAAA,IAAU,KAAK,CAAA;AACpE,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,QAAA,CAAS,OAAO,MAAM,CAAA;AACxB,IAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,QAAA;AACjB,IAAA,OAAO,QAAA;AACT,EAAA,CAAA,EAAG,CAAC,IAAA,EAAM,YAAA,EAAc,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAC,CAAA;AAE9C,EAAA,MAAM,aAAA,GAAgB,IAAI,KAAA,CAAM,aAAA;AAEhC,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA,CAAY,CAAC,KAAA,KAAkB;AACxD,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,gBAAA,CAAiB,CAAC,CAAA;AACpB,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA,CAAY,CAAC,KAAA,KAAkB;AACxD,IAAA,gBAAA,CAAiB,KAAK,CAAA;AACxB,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA,CAAY,CAAC,IAAA,KAA0B;AAChE,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS;AACjB,MAAA,IAAI,IAAA,CAAK,KAAK,CAAC,CAAA,KAAM,EAAE,EAAA,KAAO,IAAA,CAAK,EAAE,CAAA,EAAG,OAAO,IAAA;AAC/C,MAAA,OAAO,CAAC,GAAG,IAAA,EAAM,IAAI,CAAA;IACvB,CAAC,CAAA;AACH,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,cAAA,GAAuBA,kBAAA,CAAA,WAAA,CAAY,CAAC,EAAA,KAAe;AACvD,IAAA,QAAA,CAAS,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AACpD,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,IAAA,CAAC,CAAA,KAA2B;AAC1B,MAAA,MAAM,UAAU,qBAAA,CAAsB;AACpC,QAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,EAAA,KAAO;AACxB,UAAA,EAAA,CAAG,cAAA,EAAA;AACH,UAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,YAAA,gBAAA,CAAiB,CAAC,IAAA,KAAA,CAAU,IAAA,GAAO,CAAA,IAAK,cAAc,MAAM,CAAA;AAC9D,UAAA;AACF,QAAA,CAAA;AACA,QAAA,CAAC,IAAA,CAAK,OAAO,GAAG,CAAC,EAAA,KAAO;AACtB,UAAA,EAAA,CAAG,cAAA,EAAA;AACH,UAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,YAAA,gBAAA,CAAiB,CAAC,IAAA,KAAA,CAAU,IAAA,GAAO,IAAI,aAAA,CAAc,MAAA,IAAU,cAAc,MAAM,CAAA;AACrF,UAAA;AACF,QAAA,CAAA;AACA,QAAA,CAAC,IAAA,CAAK,KAAK,GAAG,CAAC,EAAA,KAAO;AACpB,UAAA,EAAA,CAAG,cAAA,EAAA;AACL,QAAA,CAAA;AACA,QAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,EAAA,KAAO;AACrB,UAAA,EAAA,CAAG,cAAA,EAAA;AACH,UAAA,YAAA,GAAe,KAAK,CAAA;AACtB,QAAA;OACD,CAAA;AACD,MAAA,OAAA,CAAQ,EAAE,WAAW,CAAA;AACvB,IAAA,CAAA;IACA,CAAC,aAAA,CAAc,QAAQ,YAAY;AAAA,GAAA;AAGrC,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,MAAA;MACA,QAAA,EAAU,YAAA;AACV,MAAA,aAAA;MACA,QAAA,EAAU,YAAA;AACV,MAAA,KAAA;AACA,MAAA,aAAA;AACA,MAAA,YAAA;AACA,MAAA,cAAA;AACA,MAAA,MAAA,EAAQ,IAAI,GAAA,CAAI,IAAA;AAChB,MAAA,OAAA,EAAS,IAAI,GAAA,CAAI;AAAA,KAAA,CAAA;AAEnB,IAAA,CAAC,MAAA,EAAQ,YAAA,EAAc,aAAA,EAAe,YAAA,EAAc,KAAA,EAAO,aAAA,EAAe,YAAA,EAAc,cAAA,EAAgB,GAAA,CAAI,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,IAAI,KAAK;AAAA,GAAA;AAGrI,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,cAAA,CAAe,QAAA;AACf,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,EAAA,CAAG,eAAA,EAAA,EAAmB,SAAS,CAAA;AAC1C,QAAA,GAAG,GAAA,CAAI,SAAA;QACP,SAAA,EAAW;AAAA,OAAA;AAEb,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAQf,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,MAAA,KAAW,iBAAA,EAAA;AAE9C,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA2C;AAC/D,MAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AACvB,MAAA,QAAA,GAAW,CAAC,CAAA;AACd,IAAA,CAAA;AAEA,IAAA,OAAaA,iCAAc,OAAA,EAAS;AAClC,MAAA,GAAA;MACA,EAAA,EAAI,OAAA;MACJ,IAAA,EAAM,MAAA;MACN,IAAA,EAAM,WAAA;MACN,mBAAA,EAAqB,MAAA;MACrB,eAAA,EAAiB,MAAA;MACjB,KAAA,EAAO,MAAA;MACP,QAAA,EAAU,YAAA;MACV,SAAA,EAAW,EAAA,CAAG,oBAAA,EAAA,EAAwB,SAAS,CAAA;MAC/C,GAAG;KACJ,CAAA;AACH,EAAA;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAQpB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,MAAA,EAAA,GAAW,iBAAA,EAAA;AAEnB,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,EAAA,EAAI,MAAA;QACJ,IAAA,EAAM,SAAA;QACN,YAAA,EAAc,qBAAA;QACd,SAAA,EAAW,EAAA,CAAG,mDAAmD,SAAS,CAAA;QAC1E,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAQnB,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,aAAA,EAAA,GAAkB,iBAAA,EAAA;AAE1B,IAAA,IAAI,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG,OAAO,IAAA;AAErC,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,4BAA4B,SAAS,CAAA;QACnD,IAAA,EAAM,cAAA;QACN,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAUpB,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACnD,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,oBAAA,EAAA,EAAwB,SAAS,CAAA;QAC/C,IAAA,EAAM,OAAA;QACN,YAAA,EAAc,OAAA;QACd,GAAG;AAAA,OAAA;MAEL,OAAA,GACUA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,uDAAA,EAAA;AACb,QAAA;OAAA,GAEF,IAAA;AACJ,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAYpB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;EAC/B,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,cAAc,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACnF,IAAA,MAAM,KAAA,GAAQ,WAAW,UAAA,GAAa,SAAA;AAEtC,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,eAAA,EAAiB,KAAA;AACjB,QAAA,eAAA,EAAiB,QAAA,IAAY,KAAA;QAC7B,YAAA,EAAc,KAAA;AACd,QAAA,SAAA,EAAW,GAAG,mBAAA,CAAoB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AACvD,QAAA,OAAA,EAAS,MAAM;AACb,UAAA,IAAI,CAAC,QAAA,EAAU;AACb,YAAA,YAAA,IAAA;AACF,UAAA;AACF,QAAA,CAAA;QACA,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAQnB,IAAM,gBAAA,GAAyBA,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,IAAA,EAAM,WAAA;MACN,SAAA,EAAW,EAAA,CAAG,wBAAwB,SAAS,CAAA;MAC/C,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AC9SxB,SAAS,uBAAA,CACd,KAAA,GAAgC,EAAA,EACV;AACtB,EAAA,MAAM;IACJ,OAAA,GAAU,IAAA;IACV,WAAA,GAAc,IAAA;IACd,kBAAA,GAAqB,IAAA;AACrB,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,MAAM,gBAAuD,EAAA;AAE7D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkC,CAAA,CAAE,cAAA,EAAA;AACrD,MAAA,aAAA,CAAc,MAAA,GAAS,OAAA;AACvB,MAAA,aAAA,CAAc,KAAA,GAAQ,OAAA;AACtB,MAAA,aAAA,CAAc,aAAA,GAAgB,OAAA;AAChC,IAAA;AACA,IAAA,IAAI,kBAAA,EAAoB;AACtB,MAAA,aAAA,CAAc,aAAA,GAAgB,CAAC,CAAA,KAC7B,CAAA,CAAE,cAAA,EAAA;AACN,IAAA;AACF,EAAA;AAEA,EAAA,MAAM,eAAA,GAA0C,gBAC5C,EAAE,IAAA,EAAM,eAAe,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,GAAA,EAAA,GAC7C,IAAA;AAEJ,EAAA,MAAM,iBAAyC,EAAA;AAC/C,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,cAAA,CAAe,gBAAgB,CAAA,GAAI,MAAA;AACrC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,aAAA;AACA,IAAA,eAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACjEO,IAAM,4BAA4B,GAAA,CAAI;EAC3C,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM;AACR,CAAC;ACkBM,IAAM,iBAAA,GAA0BC,kBAAA,CAAA,UAAA;EACrC,CACE;AACE,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,kBAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,MAAM,uBAAA,CAAwB;AAClC,MAAA,OAAA;AACA,MAAA,WAAA;AACA,MAAA,kBAAA;AACA,MAAA;KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,yBAAA,EAAA,EAA6B,SAAS,CAAA;AAEzD,IAAA,uBACEZ,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,OAAA;AACV,QAAA,GAAG,GAAA,CAAI,cAAA;AACR,QAAA,MAAA,EAAQ,IAAI,aAAA,CAAc,MAAA;AAC1B,QAAA,KAAA,EAAO,IAAI,aAAA,CAAc,KAAA;AACzB,QAAA,aAAA,EAAe,IAAI,aAAA,CAAc,aAAA;AACjC,QAAA,QAAA,EAAU,IAAI,aAAA,CAAc,aAAA;QAC3B,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AACA,UAAA,GAAA,CAAI,mCACHD,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;AACC,cAAA,SAAA,EAAW,iBAAA,EAAA;cACX,aAAA,EAAY,MAAA;cACZ,KAAA,EAAO;AACL,gBAAA,OAAA,EAAS,IAAI,eAAA,CAAgB,OAAA;gBAC7B,SAAA,EAAW,CAAA,OAAA,EAAU,GAAA,CAAI,eAAA,CAAgB,KAAK,CAAA,IAAA,CAAA;gBAC9C,eAAA,EAAiB,CAAA;AACb,gBAAA,EAAA,GAAA,CAAI,gBAAgB,KAAK,CAAA;;;;;;AAAA,eAAA;cAQ/B,QAAA,kBAAAC,gBAAC,KAAA,EAAA,EAAI,OAAM,MAAA,EAAO,MAAA,EAAO,QACvB,QAAA,EAAA;AAAA,gCAAAD,cAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAC,kBAAA,SAAA;AAAA,kBAAA;oBACC,EAAA,EAAG,eAAA;oBACH,CAAA,EAAE,GAAA;oBACF,CAAA,EAAE,GAAA;oBACF,KAAA,EAAM,KAAA;oBACN,MAAA,EAAO,KAAA;oBACP,YAAA,EAAa,gBAAA;oBACb,gBAAA,EAAkB,CAAA,OAAA,EAAU,GAAA,CAAI,eAAA,CAAgB,KAAK,CAAA,CAAA,CAAA;AAErD,oBAAA,QAAA,kBAAAA,cAAAA;AAAC,sBAAA,MAAA;AAAA,sBAAA;wBACC,CAAA,EAAE,GAAA;wBACF,CAAA,EAAE,KAAA;wBACF,IAAA,EAAK,cAAA;wBACL,QAAA,EAAS,IAAA;wBACT,UAAA,EAAW,YAAA;AAEV,wBAAA,QAAA,EAAA,IAAI,eAAA,CAAgB;AAAA;AAAA;AACvB;AAAA,iBAAA,EAEJ,CAAA;gCAAAA,cAAAA,CACC,QAAA,EAAK,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EAAO,IAAA,EAAK,qBAAA,EAAsB;AAAA,eAAA,EAC9D;AAAA;AAAA;AACF;AAAA;AAAA,KAAA;AAIR,EAAA;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACrDzB,SAAS,gBACd,KAAA,EACiB;AACjB,EAAA,MAAM;AACJ,IAAA,OAAA;AACA,IAAA,IAAA;IACA,MAAA,EAAQ,aAAA;AACR,IAAA,OAAA,EAAS,cAAA,GAAiB,KAAA;AAC1B,IAAA,MAAA;IACA,OAAA,EAAS;GAAA,GACP,KAAA;AAEJ,EAAA,IAAI,SAAwB,aAAA,IAAiB,IAAA;AAC7C,EAAA,IAAI,OAAA,GAAyB,cAAA;AAC7B,EAAA,IAAI,OAAA,GAAkC,EAAE,GAAI,cAAA,IAAkB,EAAA,EAAC;AAE/D,EAAA,SAAS,eAAA,GAAuB;AAC9B,IAAA,IAAI,MAAA,GAAS,CAAC,GAAG,IAAI,CAAA;AAErB,IAAA,KAAA,MAAW,CAAC,QAAA,EAAU,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC7D,MAAA,IAAI,CAAC,WAAA,EAAa;AAClB,MAAA,MAAM,MAAM,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,QAAQ,CAAA;AACjD,MAAA,IAAI,CAAC,GAAA,EAAK;AACV,MAAA,MAAM,WAAA,GAAc,YAAY,WAAA,EAAA;AAChC,MAAA,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,KAAQ;AAC9B,QAAA,MAAM,SAAA,GAAY,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA;AAClC,QAAA,OAAO,OAAO,SAAA,IAAa,EAAE,EAAE,WAAA,EAAA,CAAc,SAAS,WAAW,CAAA;MACnE,CAAC,CAAA;AACH,IAAA;AAEA,IAAA,OAAO,MAAA;AACT,EAAA;AAEA,EAAA,SAAS,aAAA,GAAqB;AAC5B,IAAA,MAAM,WAAW,eAAA,EAAA;AAEjB,IAAA,IAAI,CAAC,QAAQ,OAAO,QAAA;AAEpB,IAAA,MAAM,MAAM,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,MAAM,CAAA;AAC/C,IAAA,IAAI,CAAC,KAAK,OAAO,QAAA;AAEjB,IAAA,OAAO,CAAC,GAAG,QAAQ,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AAClC,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA;AAC3B,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA;AAC3B,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AAE9B,MAAA,MAAM,GAAA,GAAM,KAAK,aAAA,CAAc,IAAA,EAAM,QAAW,EAAE,OAAA,EAAS,MAAM,CAAA;AACjE,MAAA,OAAO,OAAA,KAAY,KAAA,GAAQ,GAAA,GAAM,CAAC,GAAA;IACpC,CAAC,CAAA;AACH,EAAA;AAEA,EAAA,SAAS,KAAK,QAAA,EAAwB;AACpC,IAAA,MAAM,MAAM,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,QAAQ,CAAA;AACjD,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAEpB,IAAA,IAAI,WAAW,QAAA,EAAU;AACvB,MAAA,OAAA,GAAU,OAAA,KAAY,QAAQ,MAAA,GAAS,KAAA;IACzC,CAAA,MAAO;AACL,MAAA,MAAA,GAAS,QAAA;AACT,MAAA,OAAA,GAAU,KAAA;AACZ,IAAA;AAEA,IAAA,MAAA,GAAS,QAAQ,OAAO,CAAA;AAC1B,EAAA;AAEA,EAAA,SAAS,SAAA,CAAU,UAAkB,KAAA,EAAqB;AACxD,IAAA,OAAA,GAAU,EAAE,GAAG,OAAA,EAAS,CAAC,QAAQ,GAAG,KAAA,EAAA;AACtC,EAAA;AAEA,EAAA,SAAS,eACP,GAAA,EACuD;AACvD,IAAA,MAAMc,MAAAA,GAA+D;MACnE,IAAA,EAAM;AAAA,KAAA;AAGR,IAAA,IAAI,IAAI,QAAA,EAAU;AAChB,MAAA,IAAI,MAAA,KAAW,IAAI,EAAA,EAAI;AACrBA,QAAAA,MAAAA,CAAM,WAAW,CAAA,GAAI,OAAA,KAAY,KAAA,GAAQ,WAAA,GAAc,YAAA;MACzD,CAAA,MAAO;AACLA,QAAAA,MAAAA,CAAM,WAAW,CAAA,GAAI,MAAA;AACvB,MAAA;AACF,IAAA;AAEA,IAAA,OAAOA,MAAAA;AACT,EAAA;AAEA,EAAA,SAAS,YAAA,CACP,KACA,IAAA,EACyB;AACzB,IAAA,OAAO;MACL,IAAA,EAAM,MAAA;AACN,MAAA,aAAA,EAAe,GAAA,CAAI;AAAA,KAAA;AAEvB,EAAA;AAEA,EAAA,SAAS,WAAA,CAAY,MAAS,KAAA,EAAwC;AACpE,IAAA,OAAO;MACL,IAAA,EAAM,KAAA;MACN,gBAAA,EAAkB;AAAA,KAAA;AAEtB,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAA2B;AAC7B,MAAA,OAAO;AACL,QAAA,IAAI,UAAA,GAAa;AACf,UAAA,OAAO,aAAA,EAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,MAAA,GAAS;AACX,UAAA,OAAO,MAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,OAAA,GAAU;AACZ,UAAA,OAAO,OAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,OAAA,GAAU;AACZ,UAAA,OAAO,EAAE,GAAG,OAAA,EAAA;AACd,QAAA;AAAA,OAAA;AAEJ,IAAA,CAAA;AACA,IAAA,IAAA;AACA,IAAA,SAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACpLO,IAAM,gBAAgB,GAAA,CAAI;EAC/B,IAAA,EAAM,+CAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,6EAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,kDAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;AAEM,IAAM,eAAe,GAAA,CAAI;EAC9B,IAAA,EAAM,2BAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,KAAA;MACJ,EAAA,EAAI,KAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,cAAc,GAAA,CAAI;EAC7B,IAAA,EAAM,8CAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,UAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;;;AC1BM,SAAS,SAAA,CAAuC;AACrD,EAAA,OAAA;AACA,EAAA,IAAA;EACA,MAAA,EAAQ,gBAAA;AACR,EAAA,OAAA,EAAS,iBAAA,GAAoB,KAAA;AAC7B,EAAA,MAAA;EACA,OAAA,EAAS,iBAAA;AACT,EAAA,SAAA;EACA,YAAA,GAAe;AACjB,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUC,kBAAA,CAAA,QAAA,CAAwB,oBAAoB,IAAI,CAAA;AAClF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAwB,iBAAiB,CAAA;AAC7E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAUA,kBAAA,CAAA,QAAA,CAAiC,iBAAA,IAAqB,EAAE,CAAA;AAE5F,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,eAAA,CAAmB;AACjB,MAAA,OAAA;AACA,MAAA,IAAA;AACA,MAAA,MAAA,EAAQ,MAAA,IAAU,MAAA;AAClB,MAAA,OAAA;AACA,MAAA,MAAA;AACA,MAAA;KACD,CAAA;AACH,IAAA,CAAC,OAAA,EAAS,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,QAAQ,OAAO;AAAA,GAAA;AAGlD,EAAA,MAAM,UAAA,GAAmBA,kBAAA,CAAA,WAAA;AACvB,IAAA,CAAC,QAAA,KAAqB;AACpB,MAAA,MAAM,MAAM,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,QAAQ,CAAA;AACjD,MAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAEpB,MAAA,IAAI,MAAA,GAAwB,KAAA;AAC5B,MAAA,IAAI,WAAW,QAAA,EAAU;AACvB,QAAA,MAAA,GAAS,OAAA,KAAY,QAAQ,MAAA,GAAS,KAAA;AACxC,MAAA;AAEA,MAAA,SAAA,CAAU,QAAQ,CAAA;AAClB,MAAA,UAAA,CAAW,MAAM,CAAA;AACjB,MAAA,MAAA,GAAS,UAAU,MAAM,CAAA;AAC3B,IAAA,CAAA;IACA,CAAC,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,MAAM;AAAA,GAAA;AAGnC,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,UAAkB,KAAA,KAAkB;AACnC,MAAA,UAAA,CAAW,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAA,EAAA,CAAQ,CAAA;AACvD,IAAA,CAAA;IACA;AAAC,GAAA;AAGH,EAAA,MAAM,UAAA,GAAa,IAAI,KAAA,CAAM,UAAA;AAC7B,EAAA,MAAM,gBAAgB,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AAEtD,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,WAAW,+BAAA,EAAA;AACP,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,OAAA;AACA,MAAA;QACE,SAAA,EAAW,EAAA,CAAG,aAAA,EAAA,EAAiB,SAAS,CAAA;QACxC,IAAA,EAAM;AAAA,OAAA;;AAGF,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,OAAA;AACA,QAAA,IAAA;;AAEM,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,IAAA;AACA,UAAA,EAAE,MAAM,KAAA,EAAA;UACR,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACtB,YAAA,MAAM,WAAA,GAAc,GAAA,CAAI,cAAA,CAAe,GAAG,CAAA;AAC1C,YAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,cAAA,IAAA;AACA,cAAA;AACE,gBAAA,GAAA,EAAK,GAAA,CAAI,EAAA;gBACT,GAAG,WAAA;AACH,gBAAA,SAAA,EAAW,eAAe,EAAE,QAAA,EAAU,IAAI,QAAA,GAAW,MAAA,GAAS,SAAS,CAAA;AACvE,gBAAA,OAAA,EAAS,IAAI,QAAA,GAAW,MAAM,UAAA,CAAW,GAAA,CAAI,EAAE,CAAA,GAAI;AAAA,eAAA;cAErD,GAAA,CAAI,MAAA;AACJ,cAAA,GAAA,CAAI,QAAA,IAAY,MAAA,KAAW,GAAA,CAAI,EAAA,GACrBA,iCAAc,MAAA,EAAQ,EAAE,aAAA,EAAe,IAAA,EAAA,EAAQ,OAAA,KAAY,KAAA,GAAQ,SAAA,GAAY,SAAS,CAAA,GAC9F;AAAA,aAAA;UAER,CAAC;AAAA,SAAA;;QAGH,aAAA,GACUA,kBAAA,CAAA,aAAA;AACJ,UAAA,IAAA;UACA,EAAE,IAAA,EAAM,KAAA,EAAO,iBAAA,EAAmB,MAAA,EAAA;AAClC,UAAA,GAAG,OAAA,CAAQ,GAAA;AAAI,YAAA,CAAC,GAAA,KACRA,kBAAA,CAAA,aAAA;AACJ,cAAA,IAAA;AACA,cAAA,EAAE,GAAA,EAAK,CAAA,OAAA,EAAU,GAAA,CAAI,EAAE,CAAA,CAAA,EAAA;cACvB,GAAA,CAAI,UAAA,GACMA,iCAAc,OAAA,EAAS;gBAC3B,IAAA,EAAM,MAAA;gBACN,YAAA,EAAc,CAAA,OAAA,EAAU,IAAI,MAAM,CAAA,CAAA;gBAClC,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,IAAK,EAAA;AAC1B,gBAAA,QAAA,EAAU,CAAC,CAAA,KACT,YAAA,CAAa,IAAI,EAAA,EAAI,CAAA,CAAE,OAAO,KAAK,CAAA;gBACrC,WAAA,EAAa,CAAA,SAAA;AAAA,eACd,CAAA,GACD;AAAA;AACN;SACF,GAEF;AAAA,OAAA;;AAGA,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,OAAA;AACA,QAAA,IAAA;AACA,QAAA,UAAA,CAAW,WAAW,CAAA,GACZA,kBAAA,CAAA,aAAA;AACJ,UAAA,IAAA;AACA,UAAA,EAAE,MAAM,KAAA,EAAA;AACF,UAAAA,kBAAA,CAAA,aAAA;AACJ,YAAA,IAAA;AACA,YAAA;AACE,cAAA,OAAA,EAAS,OAAA,CAAQ,MAAA;cACjB,SAAA,EAAW,uCAAA;cACX,IAAA,EAAM;AAAA,aAAA;AAER,YAAA;AAAA;AACF,SAAA,GAEF,UAAA,CAAW,GAAA;AAAI,UAAA,CAAC,KAAK,QAAA,KACbA,kBAAA,CAAA,aAAA;AACJ,YAAA,IAAA;AACA,YAAA;cACE,GAAA,EAAK,QAAA;cACL,GAAG,GAAA,CAAI,WAAA,CAAY,GAAA,EAAK,QAAQ,CAAA;AAChC,cAAA,SAAA,EAAW,WAAA;AAAY,aAAA;AAEzB,YAAA,GAAG,OAAA,CAAQ,GAAA;AAAI,cAAA,CAAC,GAAA,KACRA,kBAAA,CAAA,aAAA;AACJ,gBAAA,IAAA;AACA,gBAAA;AACE,kBAAA,GAAA,EAAK,GAAA,CAAI,EAAA;kBACT,GAAG,GAAA,CAAI,YAAA,CAAa,GAAA,EAAK,GAAG,CAAA;AAC5B,kBAAA,SAAA,EAAW,YAAA;AAAa,iBAAA;AAE1B,gBAAA,MAAA,CAAO,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,IAAK,EAAE;AAAA;AAChC;AACF;AACF;AACF;AACN;AACF,GAAA;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;;AC9IxB,IAAM,YAAA,GAA+C;EACnD,MAAA,EAAQ;IACN,KAAA,EAAO,GAAA;IACP,MAAA,EAAQ,GAAA;IACR,MAAA,EAAQ,EAAA;IACR,KAAA,EAAO,IAAA;IACP,aAAA,EAAe;AAAA,GAAA;EAEjB,IAAA,EAAM;IACJ,KAAA,EAAO,GAAA;IACP,MAAA,EAAQ,IAAA;IACR,MAAA,EAAQ,EAAA;IACR,KAAA,EAAO,KAAA;IACP,aAAA,EAAe;AAAA,GAAA;EAEjB,eAAA,EAAiB;IACf,KAAA,EAAO,GAAA;IACP,MAAA,EAAQ,GAAA;IACR,MAAA,EAAQ,EAAA;IACR,KAAA,EAAO,KAAA;IACP,aAAA,EAAe;AAAA,GAAA;EAEjB,gBAAA,EAAkB;IAChB,KAAA,EAAO,GAAA;IACP,MAAA,EAAQ,IAAA;IACR,MAAA,EAAQ,EAAA;IACR,KAAA,EAAO,KAAA;IACP,aAAA,EAAe;AAAA;AAEnB,CAAA;AAEA,IAAM,aAAA,GAA4C;EAChD,MAAA,EAAQ,QAAA;EACR,IAAA,EAAM,MAAA;EACN,eAAA,EAAiB,eAAA;EACjB,gBAAA,EAAkB;AACpB,CAAA;AAEO,SAAS,kBAAkB,KAAA,EAAyC;AACzE,EAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,GAAc,UAAA,EAAA,GAAe,KAAA;AAC7C,EAAA,MAAM,IAAA,GAAO,aAAa,MAAM,CAAA;AAEhC,EAAA,MAAM,cAAc,WAAA,KAAgB,WAAA;AAEpC,EAAA,MAAM,UAAA,GAA+B;IACnC,KAAA,EAAO,WAAA,GAAc,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,KAAA;IACxC,MAAA,EAAQ,WAAA,GAAc,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,MAAA;AACxC,IAAA,MAAA,EAAQ,IAAA,CAAK,MAAA;AACb,IAAA,KAAA,EAAO,IAAA,CAAK,KAAA;AACZ,IAAA,aAAA,EAAe,IAAA,CAAK;AAAA,GAAA;AAGtB,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,KAAA;AACN,IAAA,YAAA,EAAc,CAAA,EAAG,aAAA,CAAc,MAAM,CAAC,oBAAoB,WAAW,CAAA,YAAA;AAAA,GAAA;AAGvE,EAAA,MAAM,cAAA,GAAyC;IAC7C,aAAA,EAAe,MAAA;IACf,kBAAA,EAAoB,WAAA;AACpB,IAAA,GAAI,KAAK,KAAA,GAAQ,EAAE,YAAA,EAAc,MAAA,KAAW,EAAA;AAC5C,IAAA,GAAI,KAAK,aAAA,GAAgB,EAAE,qBAAA,EAAuB,MAAA,KAAW;AAAC,GAAA;AAGhE,EAAA,OAAO;AACL,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC7GO,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,sEAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,MAAA,EAAQ,6BAAA;MACR,IAAA,EAAM,6BAAA;MACN,eAAA,EAAiB,yBAAA;MACjB,gBAAA,EAAkB;AAAA,KAAA;IAEpB,WAAA,EAAa;MACX,QAAA,EAAU,EAAA;MACV,SAAA,EAAW;AAAA;AACb,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ,QAAA;IACR,WAAA,EAAa;AAAA;AAEjB,CAAC;;;ACCM,SAAS,WAAA,CAAY;AAC1B,EAAA,MAAA;EACA,WAAA,GAAc,UAAA;AACd,EAAA,SAAA;AACA,EAAA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,GAAA,GAAM,iBAAA,CAAkB,EAAE,MAAA,EAAQ,aAAa,CAAA;AAErD,EAAA,OAAaC,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,SAAA,EAAW,GAAG,mBAAA,CAAoB,EAAE,QAAQ,WAAA,EAAa,GAAG,SAAS,CAAA;MACrE,KAAA,EAAO;QACL,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,UAAA,CAAW,KAAK,CAAA,EAAA,CAAA;QAC9B,MAAA,EAAQ,CAAA,EAAG,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,EAAA;AAAA,OAAA;AAElC,MAAA,GAAG,GAAA,CAAI,SAAA;AACP,MAAA,GAAG,GAAA,CAAI;AAAA,KAAA;;IAGT,GAAA,CAAI,UAAA,CAAW,KAAA,GACLA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO;MACzB,SAAA,EAAW,uFAAA;MACX,aAAA,EAAe,MAAA;MACf,WAAA,EAAa;AAAA,KACd,CAAA,GACD,IAAA;;AAEE,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,iDAAA;QACX,WAAA,EAAa;AAAA,OAAA;AAEf,MAAA;AAAA,KAAA;;IAGF,GAAA,CAAI,UAAA,CAAW,aAAA,GACLA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO;MACzB,SAAA,EAAW,2FAAA;MACX,aAAA,EAAe,MAAA;MACf,WAAA,EAAa;AAAA,KACd,CAAA,GACD;AAAA,GAAA;AAER;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACpBnB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,MAAM,cAAA,EAAgB,WAAA,GAAc,OAAO,YAAA,EAAc,KAAA,GAAQ,MAAA,GAAS,KAAA;AAElF,EAAA,MAAM,UAAU,aAAA,CAAmD;IACjE,OAAA,EAAS,cAAA,IAAkB,cAAc,MAAA,GAAS,QAAA;IAClD,MAAA,EAAQ;AACN,MAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,EAAE,IAAA,EAAM,QAAA,EAAO;AAC7B,MAAA,IAAA,EAAM,EAAE,EAAA,EAAI,EAAE,KAAA,EAAO,UAAA;AAAW;GAEnC,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,WAAW,YAAY,CAAA;AACzC,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,WAAW,iBAAiB,CAAA;AAElD,EAAA,SAAS,MAAA,GAAkB;AACzB,IAAA,IAAI,cAAA,KAAmB,QAAW,OAAO,cAAA;AACzC,IAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAC/B,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AACnB,IAAA,YAAA,GAAe,IAAI,CAAA;AACrB,EAAA;AAEA,EAAA,SAAS,WAAA,GAAoB;AAC3B,IAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,YAAA,GAAqB;AAC5B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,WAAA,EAAA;IACF,CAAA,MAAO;AACL,MAAA,UAAA,EAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,KAAM;AACpB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,WAAA,EAAA;AACF,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,YAAA,GAAsE;AAC1E,IAAA,eAAA,EAAiB,MAAA,EAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,eAAA,EAAiB;AAAA,GAAA;AAGnB,EAAA,MAAM,YAAA,GAAsE;IAC1E,IAAA,EAAM,QAAA;IACN,YAAA,EAAc,KAAA;IACd,iBAAA,EAAmB,OAAA;IACnB,kBAAA,EAAoB,aAAA;IACpB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,YAAA,GAAuC;IAC3C,YAAA,EAAc,MAAA,KAAW,MAAA,GAAS;AAAA,GAAA;AAGpC,EAAA,MAAM,eAAA,GAAsD;IAC1D,QAAA,EAAU,WAAA;IACV,uBAAA,EAAyB;AAAA,GAAA;AAG3B,EAAA,OAAO;IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAA,EAAO;AACtB,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;IACA,IAAA,EAAM,UAAA;IACN,KAAA,EAAO,WAAA;IACP,MAAA,EAAQ,YAAA;AACR,IAAA,gBAAA;IACA,GAAA,EAAK;MACH,OAAA,EAAS,SAAA;MACT,KAAA,EAAO,OAAA;MACP,WAAA,EAAa;AAAA,KAAA;AAEf,IAAA;AAAA,GAAA;AAEJ;AClIO,IAAM,aAAA,GACX;AAEK,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM;AACR,CAAC;;;ACgBD,IAAM,aAAA,GAAsBC,iCAAyC,IAAI,CAAA;AAEzE,SAAS,gBAAA,GAAuC;AAC9C,EAAA,MAAM,GAAA,GAAYA,8BAAW,aAAa,CAAA;AAC1C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAC3E,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAcO,SAAS,MAAA,CAAO;EACrB,IAAA,EAAM,cAAA;EACN,WAAA,GAAc,KAAA;AACd,EAAA,YAAA;EACA,KAAA,GAAQ,IAAA;AACR,EAAA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,4BAAS,WAAW,CAAA;AAC1E,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,eAAe,cAAA,GAAiB,gBAAA;AAE7C,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAC1B,MAAA;AACA,MAAA,YAAA,GAAe,IAAI,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAI7B,EAAA,MAAM,MAAA,GAAeA,0BAA+C,IAAI,CAAA;AACxE,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,YAAA,CAAa,EAAE,IAAA,EAAM,OAAO,CAAA;AAC/C,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,IAAA;MACA,YAAA,EAAc,gBAAA;AACd,MAAA,KAAA;AACA,MAAA,SAAA,EAAW,IAAI,GAAA,CAAI,OAAA;AACnB,MAAA,OAAA,EAAS,IAAI,GAAA,CAAI,KAAA;AACjB,MAAA,aAAA,EAAe,IAAI,GAAA,CAAI;AAAA,KAAA,CAAA;IAEzB,CAAC,IAAA,EAAM,gBAAA,EAAkB,KAAA,EAAO,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,GAAA,CAAI,GAAA,CAAI,WAAW;AAAA,GAAA;AAGrF,EAAA,OAAaA,iCAAc,aAAA,CAAc,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ,CAAA;AAC7E;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAUd,IAAM,aAAA,GAAsBA,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,SAAA,KAAc,gBAAA,EAAA;AAE1C,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,YAAA,CAAa,CAAC,IAAI,CAAA;AAClB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,QAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,eAAA,EAAiB,IAAA;QACjB,eAAA,EAAiB,SAAA;QACjB,eAAA,EAAiB,QAAA;QACjB,OAAA,EAAS,WAAA;QACT,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAQrB,IAAM,aAAA,GAAsBA,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,KAAA,IAAS,GAAA,KAAQ;AACzC,IAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAA,GAAiB,gBAAA,EAAA;AAE/B,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwC;AAE3D,MAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,EAAe;AAChC,QAAA,YAAA,CAAa,KAAK,CAAA;AACpB,MAAA;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,SAAA,EAAW,EAAA,CAAG,eAAe,SAAS,CAAA;AACtC,MAAA,YAAA,EAAc,OAAO,MAAA,GAAS,QAAA;MAC9B,OAAA,EAAS,WAAA;MACT,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAQrB,IAAM,aAAA,GAAsBA,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACrD,IAAA,MAAM,EAAE,MAAM,YAAA,EAAc,KAAA,EAAO,WAAW,OAAA,EAAS,aAAA,KACrD,gBAAA,EAAA;AAEgB,IAAAA,kBAAA,CAAA,OAAA;AAChB,MAAA,MAAM,YAAA,CAAa,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAClC,MAAA,CAAC,MAAM,KAAK;AAAA,KAAA;AAGd,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,MAAM,UAAU,qBAAA,CAAsB;AACpC,QAAA,MAAA,EAAQ,CAAC,EAAA,KAAO;AACd,UAAA,EAAA,CAAG,cAAA,EAAA;AACH,UAAA,YAAA,CAAa,KAAK,CAAA;AACpB,QAAA;OACD,CAAA;AACD,MAAA,OAAA,CAAQ,EAAE,WAAW,CAAA;AACrB,MAAA,SAAA,GAAY,CAAC,CAAA;AACf,IAAA,CAAA;AAEA,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,OAAA,GAAgBA,kBAAA,CAAA,aAAA;AACpB,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,YAAA,EAAc,KAAA;QACd,iBAAA,EAAmB,OAAA;QACnB,kBAAA,EAAoB,aAAA;QACpB,EAAA,EAAI,SAAA;QACJ,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAA,EAAyB,SAAS,CAAA;QAChD,SAAA,EAAW,aAAA;QACX,QAAA,EAAU,EAAA;QACV,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAIF,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,OAAgBC,mBAAA,CAAA,YAAA,CAAa,OAAA,EAAS,QAAA,CAAS,IAAI,CAAA;AACrD,IAAA;AAGA,IAAA,OAAO,OAAA;AACT,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAQrB,IAAM,YAAA,GAAqBD,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,SAAA,EAAW,EAAA,CAAG,sDAAsD,SAAS,CAAA;MAC7E,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAQpB,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,SAAA,EAAW,EAAA;AACT,QAAA,+DAAA;AACA,QAAA;AAAA,OAAA;MAEF,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAQpB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,EAAE,OAAA,EAAA,GAAY,gBAAA,EAAA;AAEpB,IAAA,OAAaA,iCAAc,IAAA,EAAM;AAC/B,MAAA,GAAA;MACA,EAAA,EAAI,OAAA;MACJ,SAAA,EAAW,EAAA,CAAG,qDAAqD,SAAS,CAAA;MAC5E,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAQnB,IAAM,iBAAA,GAA0BA,8BAGrC,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,EAAE,aAAA,EAAA,GAAkB,gBAAA,EAAA;AAE1B,EAAA,OAAaA,iCAAc,GAAA,EAAK;AAC9B,IAAA,GAAA;IACA,EAAA,EAAI,aAAA;IACJ,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA;IACxD,GAAG;GACJ,CAAA;AACH,CAAC;AAED,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAQzB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,EAAE,YAAA,EAAA,GAAiB,gBAAA,EAAA;AAEzB,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,QAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,OAAA,EAAS,WAAA;QACT,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACvRnB,SAAS,kBAAA,CAAmB,KAAA,GAA2B,EAAA,EAAqB;AACjF,EAAA,MAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,WAAA,GAAc,KAAA,EAAO,cAAA,GAAiB,KAAA;AAEpE,EAAA,MAAM,UAAU,aAAA,CAAmD;IACjE,OAAA,EAAS,cAAA,IAAkB,cAAc,MAAA,GAAS,QAAA;IAClD,MAAA,EAAQ;AACN,MAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,EAAE,IAAA,EAAM,QAAA,EAAO;AAC7B,MAAA,IAAA,EAAM,EAAE,EAAA,EAAI,EAAE,KAAA,EAAO,UAAA;AAAW;GAEnC,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,WAAW,mBAAmB,CAAA;AAEhD,EAAA,SAAS,MAAA,GAAkB;AACzB,IAAA,IAAI,cAAA,KAAmB,QAAW,OAAO,cAAA;AACzC,IAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAC/B,EAAA;AAEA,EAAA,SAAS,QAAA,GAAiB;AACxB,IAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AACnB,IAAA,YAAA,GAAe,IAAI,CAAA;AACrB,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,SAAA,EAAA;IACF,CAAA,MAAO;AACL,MAAA,QAAA,EAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,aAAa,IAAA,EAA4E;AAChG,IAAA,OAAO;MACL,IAAA,EAAM,UAAA;MACN,QAAA,EAAU,IAAA,CAAK,WAAW,EAAA,GAAK,CAAA;MAC/B,eAAA,EAAiB,IAAA,CAAK,WAAW,EAAA,GAAK,MAAA;AACtC,MAAA,eAAA,EAAiB,KAAK,QAAA,IAAY;AAAA,KAAA;AAEtC,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,KAAM;AACpB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,SAAA,EAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,OAAO,GAAG,CAAC,CAAA,KAAM;AACrB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,KAAM;AACnB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,IAAI,GAAG,CAAC,CAAA,KAAM;AAClB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,GAAG,GAAG,CAAC,CAAA,KAAM;AACjB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,YAAA,GAAsE;AAC1E,IAAA,eAAA,EAAiB,MAAA,EAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,eAAA,EAAiB;AAAA,GAAA;AAGnB,EAAA,MAAM,YAAA,GAAsE;IAC1E,IAAA,EAAM,MAAA;IACN,EAAA,EAAI,SAAA;IACJ,YAAA,EAAc,MAAA,KAAW,MAAA,GAAS;AAAA,GAAA;AAGpC,EAAA,OAAO;IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAA,EAAO;AACtB,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;IACA,IAAA,EAAM,QAAA;IACN,KAAA,EAAO,SAAA;IACP,MAAA,EAAQ,UAAA;AACR,IAAA,gBAAA;IACA,GAAA,EAAK;MACH,OAAA,EAAS;AAAA;AACX,GAAA;AAEJ;ACxIO,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM;AACR,CAAC;;;ACaD,IAAM,mBAAA,GAA4BE,iCAA+C,IAAI,CAAA;AAErF,SAAS,sBAAA,GAAmD;AAC1D,EAAA,MAAM,GAAA,GAAYA,8BAAW,mBAAmB,CAAA;AAChD,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,qEAAqE,CAAA;AACvF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAaO,SAAS,YAAA,CAAa;EAC3B,IAAA,EAAM,cAAA;EACN,WAAA,GAAc,KAAA;AACd,EAAA,YAAA;AACA,EAAA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,4BAAS,WAAW,CAAA;AAC1E,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,eAAe,cAAA,GAAiB,gBAAA;AAE7C,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAC1B,MAAA;AACA,MAAA,YAAA,GAAe,IAAI,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAI7B,EAAA,MAAM,MAAA,GAAeA,0BAAqD,IAAI,CAAA;AAC9E,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,kBAAA,CAAmB,EAAE,IAAA,EAAM,CAAA;AAC9C,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,IAAA;MACA,YAAA,EAAc,gBAAA;AACd,MAAA,SAAA,EAAW,IAAI,GAAA,CAAI;AAAA,KAAA,CAAA;AAErB,IAAA,CAAC,IAAA,EAAM,gBAAA,EAAkB,GAAA,CAAI,GAAA,CAAI,OAAO;AAAA,GAAA;AAG1C,EAAA,OAAaA,iCAAc,mBAAA,CAAoB,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ,CAAA;AACnF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAQpB,IAAM,mBAAA,GAA4BA,kBAAA,CAAA,UAAA;AACvC,EAAA,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,SAAA,KAAc,sBAAA,EAAA;AAE1C,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,YAAA,CAAa,CAAC,IAAI,CAAA;AAClB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,QAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,eAAA,EAAiB,IAAA;QACjB,eAAA,EAAiB,SAAA;QACjB,eAAA,EAAiB,MAAA;QACjB,OAAA,EAAS,WAAA;QACT,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAQ3B,IAAM,mBAAA,GAA4BA,kBAAA,CAAA,UAAA;AACvC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACrD,IAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,SAAA,KAAc,sBAAA,EAAA;AAE1C,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,MAAM,UAAU,qBAAA,CAAsB;AACpC,QAAA,MAAA,EAAQ,CAAC,EAAA,KAAO;AACd,UAAA,EAAA,CAAG,cAAA,EAAA;AACH,UAAA,YAAA,CAAa,KAAK,CAAA;AACpB,QAAA;OACD,CAAA;AACD,MAAA,OAAA,CAAQ,EAAE,WAAW,CAAA;AACrB,MAAA,SAAA,GAAY,CAAC,CAAA;AACf,IAAA,CAAA;AAEA,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,OAAA,GAAgBA,kBAAA,CAAA,aAAA;AACpB,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,MAAA;QACN,EAAA,EAAI,SAAA;AACJ,QAAA,YAAA,EAAc,OAAO,MAAA,GAAS,QAAA;QAC9B,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAA,EAAuB,SAAS,CAAA;QAC9C,SAAA,EAAW,aAAA;QACX,QAAA,EAAU,EAAA;QACV,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAIF,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,OAAgBC,mBAAA,CAAA,YAAA,CAAa,OAAA,EAAS,QAAA,CAAS,IAAI,CAAA;AACrD,IAAA;AAGA,IAAA,OAAO,OAAA;AACT,EAAA;AACF;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAW3B,IAAM,gBAAA,GAAyBD,kBAAA,CAAA,UAAA;EACpC,CAAC,EAAE,WAAW,QAAA,EAAU,QAAA,EAAU,SAAS,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACvE,IAAA,MAAM,EAAE,YAAA,EAAA,GAAiB,sBAAA,EAAA;AAEzB,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwC;AAC3D,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,QAAA,IAAA;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,QAAA,IAAA;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AACpB,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,UAAA;AACN,QAAA,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAC1B,QAAA,eAAA,EAAiB,WAAW,EAAA,GAAK,MAAA;AACjC,QAAA,eAAA,EAAiB,QAAA,IAAY,MAAA;QAC7B,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAA,EAAoB,SAAS,CAAA;QAC3C,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;QACX,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAQxB,IAAM,qBAAA,GAA8BA,kBAAA,CAAA,UAAA;AACzC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,IAAA,EAAM,WAAA;MACN,SAAA,EAAW,EAAA,CAAG,4BAA4B,SAAS,CAAA;MACnD,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAQ7B,IAAM,iBAAA,GAA0BA,kBAAA,CAAA,UAAA;AACrC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,SAAA,EAAW,EAAA,CAAG,qCAAqC,SAAS,CAAA;MAC5D,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACrMzB,SAAS,oBAAA,CAAqB,KAAA,GAA6B,EAAA,EAAuB;AACvF,EAAA,MAAM;IACJ,IAAA,EAAM,cAAA;AACN,IAAA,YAAA;AACA,IAAA,QAAA;IACA,IAAA,GAAO;GAAA,GACL,KAAA;AAEJ,EAAA,MAAM,SAAS,YAAA,CAAa;IAC1B,IAAA,EAAM,cAAA;AACN,IAAA,YAAA;IACA,KAAA,EAAO;GACR,CAAA;AAED,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,IAAI,WAAA,GAAc,KAAA;AAElB,EAAA,MAAM,SAAA,GAA+B;IACnC,OAAA,EAAS,EAAA;IACT,KAAA,EAAO,EAAA;IACP,QAAA,EAAU;AAAA,GAAA;AAGZ,EAAA,MAAM,UAAA,GAAa,WAAW,cAAc,CAAA;AAE5C,EAAA,SAAS,QAAA,CAAS,OAAgC,KAAA,EAAqB;AACrE,IAAA,SAAA,CAAU,KAAK,CAAA,GAAI,KAAA;AACrB,EAAA;AAEA,EAAA,eAAe,MAAA,GAAwB;AAErC,IAAA,IAAI,UAAU,QAAA,EAAU;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAA,EAAQ;AAC7B,MAAA;AACF,IAAA;AAEA,IAAA,YAAA,GAAe,IAAA;AAEf,IAAA,MAAM,IAAA,GAAqB;AACzB,MAAA,OAAA,EAAS,SAAA,CAAU,OAAA;AACnB,MAAA,IAAA;AACA,MAAA,GAAI,UAAU,KAAA,GAAQ,EAAE,OAAO,SAAA,CAAU,KAAA,KAAU;AAAC,KAAA;AAGtD,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,IAAI,CAAA;AACrB,MAAA,YAAA,GAAe,KAAA;AACf,MAAA,WAAA,GAAc,IAAA;IAChB,CAAA,CAAA,MAAQ;AACN,MAAA,YAAA,GAAe,KAAA;AACjB,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,KAAA,GAAc;AACrB,IAAA,SAAA,CAAU,OAAA,GAAU,EAAA;AACpB,IAAA,SAAA,CAAU,KAAA,GAAQ,EAAA;AAClB,IAAA,SAAA,CAAU,QAAA,GAAW,EAAA;AACrB,IAAA,YAAA,GAAe,KAAA;AACf,IAAA,WAAA,GAAc,KAAA;AAChB,EAAA;AAEA,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,QAAA;IACN,YAAA,EAAc,IAAA;AACd,IAAA,iBAAA,EAAmB,GAAG,UAAU,CAAA,MAAA,CAAA;AAChC,IAAA,kBAAA,EAAoB,GAAG,UAAU,CAAA,KAAA,CAAA;IACjC,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAAQ;AACV,MAAA,OAAO;AACL,QAAA,IAAI,IAAA,GAAO;AACT,UAAA,OAAO,OAAO,KAAA,CAAM,IAAA;AACtB,QAAA,CAAA;AACA,QAAA,IAAI,YAAA,GAAe;AACjB,UAAA,OAAO,YAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,WAAA,GAAc;AAChB,UAAA,OAAO,WAAA;AACT,QAAA;AAAA,OAAA;AAEJ,IAAA,CAAA;IACA,WAAA,EAAa,MAAA;AACb,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AChJO,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,6HAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,IAAA,EAAM,UAAA;MACN,KAAA,EAAO,UAAA;MACP,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;;;ACSM,SAAS,cAAA,CAAe;EAC7B,IAAA,EAAM,cAAA;AACN,EAAA,YAAA;AACA,EAAA,QAAA;EACA,IAAA,GAAO,SAAA;AACP,EAAA;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUE,kBAAA,CAAA,QAAA,CAAS,kBAAkB,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,4BAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,MAAA,GAAS,eAAe,cAAA,GAAiB,IAAA;AAE/C,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,OAAA,CAAQ,IAAI,CAAA;AACd,MAAA;AACA,MAAA,YAAA,GAAe,IAAI,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAG7B,EAAA,MAAM,MAAA,GAAeA,0BAAuD,IAAI,CAAA;AAChF,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,qBAAqB,EAAE,IAAA,EAAM,QAAQ,YAAA,EAAc,gBAAA,EAAkB,QAAA,EAAU,IAAA,EAAM,CAAA;AACxG,EAAA;AAEA,EAAA,MAAM,YAAA,GAAqBA,+BAAY,YAAY;AACjD,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,EAAA,EAAQ;AAErB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,MAAM,IAAA,GAAqB;AACzB,MAAA,OAAA;AACA,MAAA,IAAA;AACA,MAAA,GAAI,KAAA,GAAQ,EAAE,KAAA,EAAA,GAAU;AAAC,KAAA;AAG3B,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,IAAI,CAAA;AACrB,MAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,MAAA,cAAA,CAAe,IAAI,CAAA;IACrB,CAAA,CAAA,MAAQ;AACN,MAAA,eAAA,CAAgB,KAAK,CAAA;AACvB,IAAA;AACF,EAAA,CAAA,EAAG,CAAC,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,QAAQ,CAAC,CAAA;AAE7C,EAAA,MAAM,WAAA,GAAoBA,+BAAY,MAAM;AAC1C,IAAA,UAAA,CAAW,EAAE,CAAA;AACb,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,WAAA,CAAY,EAAE,CAAA;AACd,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,cAAA,CAAe,KAAK,CAAA;AACtB,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,SAAA,EAAW,GAAG,sBAAA,CAAuB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AACzD,QAAA,GAAG,GAAA,CAAI,SAAA;QACP,YAAA,EAAc;AAAA,OAAA;AAEV,MAAAA,kBAAA,CAAA,aAAA,CAAc,GAAA,EAAK,EAAE,aAAA,EAAe,iBAAA,IAAqB,8BAA8B,CAAA;AACvF,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;UACE,IAAA,EAAM,QAAA;AACN,UAAA,OAAA,EAAS,MAAM;AACb,YAAA,WAAA,EAAA;AACA,YAAA,gBAAA,CAAiB,KAAK,CAAA;AACxB,UAAA;AAAA,SAAA;AAEF,QAAA;AAAA;AACF,KAAA;AAEJ,EAAA;AAEA,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,SAAA,EAAW,GAAG,sBAAA,CAAuB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AACzD,MAAA,GAAG,GAAA,CAAI,SAAA;MACP,YAAA,EAAc;AAAA,KAAA;IAEVA,kBAAA,CAAA,aAAA,CAAc,IAAA,EAAM,EAAE,EAAA,EAAI,CAAA,EAAG,IAAI,SAAA,CAAU,EAAE,CAAA,MAAA,CAAA,EAAA,EAAY,eAAe,CAAA;AACxE,IAAAA,kBAAA,CAAA,aAAA,CAAc,UAAA,EAAY;MAC9B,YAAA,EAAc,kBAAA;MACd,KAAA,EAAO,OAAA;AACP,MAAA,QAAA,EAAU,CAAC,CAAA,KAA8C,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA;MAClF,WAAA,EAAa,kBAAA;MACb,QAAA,EAAU;KACX,CAAA;AACK,IAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;MAC3B,IAAA,EAAM,OAAA;MACN,YAAA,EAAc,OAAA;MACd,KAAA,EAAO,KAAA;AACP,MAAA,QAAA,EAAU,CAAC,CAAA,KAA2C,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;MAC7E,WAAA,EAAa,kBAAA;MACb,QAAA,EAAU;KACX,CAAA;;AAEK,IAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;MAC3B,IAAA,EAAM,MAAA;MACN,aAAA,EAAe,IAAA;MACf,QAAA,EAAU,EAAA;AACV,MAAA,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,SAAA,EAAA;MACrC,KAAA,EAAO,QAAA;AACP,MAAA,QAAA,EAAU,CAAC,CAAA,KAA2C,WAAA,CAAY,CAAA,CAAE,OAAO,KAAK,CAAA;MAChF,YAAA,EAAc,KAAA;MACd,IAAA,EAAM;KACP,CAAA;AACK,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,OAAA,EAAS,YAAA;QACT,QAAA,EAAU,YAAA,IAAgB,CAAC,OAAA,CAAQ,IAAA;AAAK,OAAA;AAE1C,MAAA,YAAA,GAAe,eAAA,GAAkB;AAAA;AACnC,GAAA;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAUtB,IAAM,cAAA,GAAuBA,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/B,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,QAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,YAAA,EAAc,eAAA;QACd,GAAG;AAAA,OAAA;MAEL,QAAA,IAAY;AAAA,KAAA;AAEhB,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;AC/JtB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,WAAA,GAAc,KAAA;AACtB,EAAA,MAAM,IAAA,GAAA,iBAAO,IAAI,IAAA,EAAA,EAAO,WAAA,EAAA;AACxB,EAAA,MAAM,aAAA,GAAgB,SAAA,IAAa,CAAA,KAAA,EAAK,IAAI,CAAA,qBAAA,CAAA;AAE5C,EAAA,OAAO;IACL,SAAA,EAAW,EAAE,MAAM,aAAA,EAAA;AACnB,IAAA;AAAA,GAAA;AAEJ;AC7BO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM;AACR,CAAC;ACmBM,IAAM,MAAA,GAAeC,kBAAA,CAAA,UAAA;EAC1B,CACE;AACE,IAAA,SAAA;AACA,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,OAAA,GAAU,EAAA;AACV,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,MAAM,YAAA,CAAa,EAAE,SAAwB,CAAS,CAAA;AAC5D,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,cAAA,EAAA,EAAkB,SAAS,CAAA;AAE9C,IAAA,uBACEtB,cAAAA,CAAC,QAAA,EAAA,EAAO,GAAA,EAAU,SAAA,EAAW,SAAU,GAAG,GAAA,CAAI,WAAY,GAAG,KAAA,EAC3D,0BAAAC,eAAAA,CAAC,OAAA,EAAI,SAAA,EAAU,0BACZ,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,SAAS,CAAA,oBAChBD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,MAAA,qBACZC,eAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;wBAAAD,cAAAA,CAAC,MAAA,EAAG,SAAA,EAAU,8BAA8B,QAAA,EAAA,MAAA,CAAO,OAAM,CAAA;AACzD,wBAAAA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,WAAA,EACX,UAAA,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,yBACjBA,cAAAA,CAAC,IAAA,EAAA,EACC,0BAAAA,cAAAA;AAAC,UAAA,GAAA;AAAA,UAAA;AACC,YAAA,IAAA,EAAM,IAAA,CAAK,IAAA;YACX,SAAA,EAAU,uEAAA;AAET,YAAA,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SAAA,EACR,EANO,IAAA,CAAK,IAOd,CACD,GACH;AAAA,OAAA,EAAA,EAbQ,MAAA,CAAO,KAcjB,CACD,GACH,CAAA;AAEF,sBAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CACb,QAAA,EAAA;wBAAAD,cAAAA,CAAC,KAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,GAAA,CAAI,eAAc,CAAA;AAC/D,QAAA,WAAA,CAAY,MAAA,GAAS,CAAA,oBACpBA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,yBAChBA,cAAAA;AAAC,UAAA,GAAA;AAAA,UAAA;AAEC,YAAA,IAAA,EAAM,IAAA,CAAK,IAAA;YACX,SAAA,EAAU,+DAAA;AACV,YAAA,YAAA,EAAY,IAAA,CAAK,KAAA;YAEhB,QAAA,EAAA,IAAA,CAAK,QAAQ,IAAA,CAAK;AAAA,WAAA;UALd,IAAA,CAAK;AAAA,SAOb,GACH;AAAA,OAAA,EAEJ;KAAA,EACF,GACF,CAAA;AAEJ,EAAA;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;AC/Cd,SAAS,mBAAmB,KAAA,EAA2C;AAC5E,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAc,MAAA,EAAQ,UAAA,GAAa,KAAA;AAElD,EAAA,IAAI,SAAA,GAAY,KAAA;AAChB,EAAA,IAAI,YAAA,GAAe,YAAA;AAEnB,EAAA,MAAM,cAAA,GAAkC;IACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAA;IACxB,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,IAAA,EAAA;IAC3B,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAA;IACxB,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,aAAA;AAAc,GAAA;AAGxC,EAAA,SAAS,YAAA,GAAqB;AAC5B,IAAA,SAAA,GAAY,IAAA;AACZ,IAAA,YAAA,GAAe,YAAA;AACjB,EAAA;AAEA,EAAA,SAAS,MAAA,GAAe;AACtB,IAAA,SAAA,GAAY,KAAA;AACZ,IAAA,YAAA,GAAe,YAAA;AACf,IAAA,QAAA,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,IAAA,GAAa;AACpB,IAAA,SAAA,GAAY,KAAA;AACZ,IAAA,MAAA,GAAS,YAAY,CAAA;AACvB,EAAA;AAEA,EAAA,SAAS,YAAY,KAAA,EAAqB;AACxC,IAAA,YAAA,GAAe,KAAA;AACjB,EAAA;AAEA,EAAA,SAAS,eAAe,MAAA,EAAsB;AAC5C,IAAA,YAAA,GAAe,YAAA,GAAe,MAAA;AAChC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAA2B;AAC7B,MAAA,OAAO;AACL,QAAA,IAAI,SAAA,GAAY;AACd,UAAA,OAAO,SAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,KAAA,GAAQ;AACV,UAAA,OAAO,YAAA;AACT,QAAA,CAAA;AACA,QAAA,IAAI,OAAA,GAAU;AACZ,UAAA,OAAO,YAAA;AACT,QAAA;AAAA,OAAA;AAEJ,IAAA,CAAA;AACA,IAAA,YAAA;AACA,IAAA,MAAA;AACA,IAAA,IAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC7FO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,wCAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,OAAA,EAAS,sCAAA;MACT,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,4CAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI,iBAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,+BAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,cAAA;MACJ,EAAA,EAAI,cAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;;;ACpBM,SAAS,YAAA,CAAa;EAC3B,KAAA,EAAO,YAAA;AACP,EAAA,MAAA;AACA,EAAA,QAAA;AACA,EAAA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUuB,4BAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,4BAAS,YAAY,CAAA;AAE7D,EAAA,MAAM,MAAA,GAAeA,0BAAqD,IAAI,CAAA;AAC9E,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,UAAU,kBAAA,CAAmB,EAAE,OAAO,YAAA,EAAc,MAAA,EAAQ,UAAU,CAAA;AAC/E,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,kBAAA,GAA2BA,+BAAY,MAAM;AACjD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,YAAA,CAAa,YAAY,CAAA;EAC3B,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,YAAA,GAAqBA,+BAAY,MAAM;AAC3C,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,YAAA,CAAa,YAAY,CAAA;AACzB,IAAA,QAAA,IAAA;EACF,CAAA,EAAG,CAAC,YAAA,EAAc,QAAQ,CAAC,CAAA;AAE3B,EAAA,MAAM,UAAA,GAAmBA,+BAAY,MAAM;AACzC,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,MAAA,GAAS,SAAS,CAAA;EACpB,CAAA,EAAG,CAAC,SAAA,EAAW,MAAM,CAAC,CAAA;AAEtB,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,MAAA,KAAmB;AAClB,MAAA,YAAA,CAAa,CAAC,IAAA,KAAS,IAAA,GAAO,MAAM,CAAA;AACtC,IAAA,CAAA;IACA;AAAC,GAAA;AAIH,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,OAAO,SAAA,EAAW,GAAG,SAAS,CAAA;QAC7D,OAAA,EAAS,kBAAA;QACT,IAAA,EAAM,QAAA;QACN,QAAA,EAAU,CAAA;QACV,YAAA,EAAc,eAAA;AACd,QAAA,SAAA,EAAW,CAAC,CAAA,KAA2B;AACrC,UAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,YAAA,CAAA,CAAE,cAAA,EAAA;AACF,YAAA,kBAAA,EAAA;AACF,UAAA;AACF,QAAA;AAAA,OAAA;AAEI,MAAAA,kBAAA,CAAA,aAAA,CAAc,OAAO,EAAE,SAAA,EAAW,iBAAA,EAAgB,EAAK,aAAa,YAAY;AAAA,KAAA;AAE1F,EAAA;AAGA,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,OAAO,SAAA,EAAW,GAAG,SAAS;AAAA,KAAA;;AAGzD,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,eAAA,EAAA,EAAmB,IAAA,EAAM,SAAA,EAAW,cAAc,oBAAA,EAAA;AAC/D,MAAA,GAAG,IAAI,cAAA,CAAe,GAAA;AAAI,QAAA,CAAC,MAAA,KACnBA,kBAAA,CAAA,aAAA;AACJ,UAAA,QAAA;AACA,UAAA;AACE,YAAA,GAAA,EAAK,MAAA,CAAO,IAAA;YACZ,IAAA,EAAM,QAAA;YACN,OAAA,EAAS,MAAM,YAAA,CAAa,MAAA,CAAO,MAAM,CAAA;AACzC,YAAA,YAAA,EAAc,MAAA,CAAO,IAAA;AACrB,YAAA,aAAA,EAAe,MAAA,CAAO;AAAA,WAAA;UAExB,MAAA,CAAO;AAAA;AACT;AACF,KAAA;;AAGI,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,gBAAA,EAAA;AACP,MAAAA,kBAAA,CAAA,aAAA,CAAc,UAAA,EAAY;QAC9B,KAAA,EAAO,SAAA;AACP,QAAA,QAAA,EAAU,CAAC,CAAA,KAA8C,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;QACpF,SAAA,EAAW,kDAAA;QACX,YAAA,EAAc;OACf,CAAA;AACK,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA;UACE,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,eAAA,EAAiB,CAAA;UACzC,YAAA,EAAc;AAAA,SAAA;AAEhB,QAAA;AAAA;AACF,KAAA;;AAGI,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,qCAAA,EAAA;AACP,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;QACA,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,YAAA,EAAA;AAC3B,QAAA;AAAA,OAAA;AAEI,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;QACA,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,UAAA,EAAA;AAC3B,QAAA;AAAA;AACF;AACF,GAAA;AAEJ;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;ACzHpB,SAAS,WAAA,CAAY,KAAA,GAAoB,EAAA,EAAc;AAC5D,EAAA,MAAM;IACJ,QAAA,GAAW,KAAA;IACX,QAAA,GAAW,KAAA;IACX,QAAA,GAAW,KAAA;IACX,cAAA,EAAgB;GAAA,GACd,KAAA;AAEJ,EAAA,MAAM,YAAmC,EAAA;AAEzC,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,SAAA,CAAU,cAAc,CAAA,GAAI,IAAA;AAC9B,EAAA;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAE/C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,cAAA,CAAe,cAAc,CAAA,GAAI,EAAA;AACnC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC1DO,IAAM,gBAAgB,GAAA,CAAI;EAC/B,IAAA,EAAM,uUAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,aAAA;MACJ,OAAA,EAAS,KAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACGM,IAAM,KAAA,GAAcC,kBAAA,CAAA,UAAA;AACzB,EAAA,CAAC,EAAE,IAAA,GAAO,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,cAAA,EAAgB,WAAA,EAAa,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChH,IAAA,MAAM,MAAM,WAAA,CAAY;AACtB,MACA,QAAA;AACA,MAAA,QAAA;AACA,MAAA,QAAA;MACA,cAAA,EAAgB,WAAA,KAAgB,OAAO,IAAA,GAAO;KAC/C,CAAA;AAED,IAAA,MAAM,UAAU,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAErD,IAAA,uBACExB,cAAAA;AAAC,MAAA,OAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,IAAA;QACA,SAAA,EAAW,OAAA;AACX,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;;AC1Bb,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM,EAAE,WAAA,GAAc,YAAA,EAAA,GAAiB,KAAA;AACvC,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,IAAM,UAAA,CAAW,iBAAiB,CAAA;AAEnD,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,IAAI,KAAA,CAAM,YAAY,CAAA,EAAG;AACvB,IAAA,SAAA,CAAU,YAAY,CAAA,GAAI,KAAA,CAAM,YAAY,CAAA;AAC9C,EAAA;AACA,EAAA,IAAI,KAAA,CAAM,iBAAiB,CAAA,EAAG;AAC5B,IAAA,SAAA,CAAU,iBAAiB,CAAA,GAAI,KAAA,CAAM,iBAAiB,CAAA;AACxD,EAAA;AAEA,EAAA,MAAM,cAAA,GAAyC;IAC7C,kBAAA,EAAoB,WAAA;AACpB,IAAA;AAAA,GAAA;AAGF,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACxCO,IAAM,gBAAA,GAAkC;EAC7C,IAAA,EAAM,aAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,wBAAA,EAAA;AAClD,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,0BAAA,EAA4B,QAAA,EAAU,oBAAA,EAAA;AAC1D,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,0BAAA,EAA4B,QAAA,EAAU,eAAA;AAAgB;AAE9E;AAEO,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,0EAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,2EAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AAEM,IAAM,0BAA0B,GAAA,CAAI;EACzC,IAAA,EAAM,qFAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,oDAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AAEM,IAAM,2BAA2B,GAAA,CAAI;EAC1C,IAAA,EAAM,uOAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,EAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AC/BM,IAAM,UAAA,GAAmByB,kBAAA,CAAA,UAAA;EAC9B,CAAC,EAAE,cAAc,YAAA,EAAc,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtE,IAAA,MAAM,MAAM,gBAAA,CAAiB;AAC3B,MAAA,WAAA;AACA,MAAA,EAAA,EAAI,KAAA,CAAM,EAAA;AACV,MAAA,YAAA,EAAc,MAAM,YAAY,CAAA;AAChC,MAAA,iBAAA,EAAmB,MAAM,iBAAiB;KAC3C,CAAA;AAED,IAAA,uBACEzB,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,kBAAA,CAAmB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AAC3D,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AASlB,IAAM,eAAA,GAAwByB,kBAAA,CAAA,UAAA;EACnC,CAAC,EAAE,cAAc,YAAA,EAAc,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtE,IAAA,uBACEzB,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,uBAAA,CAAwB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;QAChE,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAOvB,IAAM,cAAA,GAAuByB,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,uBACEzB,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,wDAAwD,SAAS,CAAA;QAC9E,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAStB,IAAM,gBAAA,GAAyByB,kBAAA,CAAA,UAAA;EACpC,CAAC,EAAE,cAAc,YAAA,EAAc,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtE,IAAA,uBACEzB,cAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,IAAA,EAAM,MAAM,IAAA,IAAQ,QAAA;AACpB,QAAA,SAAA,EAAW,GAAG,wBAAA,CAAyB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;QACjE,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AChFxB,SAAS,mBAAA,CACd,KAAA,GAA4B,EAAA,EAC5B,OAAA,EACkB;AAClB,EAAA,MAAM,EAAE,UAAA,GAAa,uBAAA,EAAA,GAA4B,KAAA;AAEjD,EAAA,MAAM,SAAA,GAAY,OAAA,EAAS,GAAA,CAAI,UAAU,CAAA,KAAM,MAAA;AAE/C,EAAA,MAAM,KAAA,GAA4B;IAChC,OAAA,EAAS,KAAA;IACT,WAAA,EAAa;AAAA,GAAA;AAGf,EAAA,OAAO;AACL,IAAA,KAAA;IAEA,IAAA,GAAO;AACL,MAAA,IAAI,CAAC,MAAM,WAAA,EAAa;AACtB,QAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAClB,MAAA;AACF,IAAA,CAAA;IAEA,OAAA,GAAU;AACR,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAChB,MAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,MAAA,OAAA,EAAS,GAAA,CAAI,YAAY,MAAM,CAAA;AACjC,IAAA,CAAA;AAEA,IAAA,OAAA,CAAQ,WAAA,EAAkC;AACxC,MAAA,WAAA,EAAa,MAAA,EAAA;AACb,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAClB,IAAA,CAAA;IAEA,SAAA,EAAW;MACT,IAAA,EAAM,QAAA;MACN,YAAA,EAAc;AAAA;AAChB,GAAA;AAEJ;ACjEO,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM;AACR,CAAC;ACkBD,SAAS,kBAAA,GAAqC;AAC5C,EAAA,OAAO;AACL,IAAA,GAAA,CAAI,GAAA,EAAK;AACP,MAAA,IAAI;AACF,QAAA,OAAO,YAAA,CAAa,QAAQ,GAAG,CAAA;MACjC,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AACT,MAAA;AACF,IAAA,CAAA;AACA,IAAA,GAAA,CAAI,KAAK,KAAA,EAAO;AACd,MAAA,IAAI;AACF,QAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,KAAK,CAAA;MACjC,CAAA,CAAA,MAAQ;AAER,MAAA;AACF,IAAA;AAAA,GAAA;AAEJ;AAQO,IAAM,aAAA,GAAsB0B,kBAAA,CAAA,UAAA;EACjC,CACE;IACE,KAAA,GAAQ,GAAA;AACR,IAAA,UAAA;IACA,YAAA,GAAe,SAAA;IACf,YAAA,GAAe,SAAA;IACf,OAAA,GAAU,0CAAA;AACV,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,UAAA,GAAmBA,0BAAmC,MAAS,CAAA;AACrE,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,WAAW,OAAA,EAAS;AACxD,MAAA,UAAA,CAAW,UAAU,kBAAA,EAAA;AACvB,IAAA;AAEA,IAAA,MAAM,MAAM,mBAAA,CAAoB,EAAS,UAAA,EAAA,EAAc,WAAW,OAAO,CAAA;AACzE,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAClD,IAAA,MAAM,cAAA,GAAuBA,0BAAkC,IAAI,CAAA;AAE7D,IAAAA,6BAAU,MAAM;AACpB,MAAA,IAAI,GAAA,CAAI,MAAM,WAAA,EAAa;AAE3B,MAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAa;AACxC,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,cAAA,CAAe,OAAA,GAAU,CAAA;AAC3B,MAAA,CAAA;AAEA,MAAA,MAAA,CAAO,gBAAA,CAAiB,uBAAuB,mBAAmB,CAAA;AAElE,MAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,QAAA,IAAI,cAAA,CAAe,OAAA,IAAW,CAAC,GAAA,CAAI,MAAM,WAAA,EAAa;AACpD,UAAA,GAAA,CAAI,IAAA,EAAA;AACJ,UAAA,UAAA,CAAW,IAAI,CAAA;AACjB,QAAA;AACF,MAAA,CAAA,EAAG,KAAK,CAAA;AAER,MAAA,OAAO,MAAM;AACX,QAAA,MAAA,CAAO,mBAAA,CAAoB,uBAAuB,mBAAmB,CAAA;AACrE,QAAA,YAAA,CAAa,KAAK,CAAA;AACpB,MAAA,CAAA;IACF,CAAA,EAAG,CAAC,KAAA,EAAO,GAAG,CAAC,CAAA;AAEf,IAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,IAAA,MAAM,OAAA,GAAU,EAAA,CAAG,qBAAA,EAAA,EAAyB,SAAS,CAAA;AAErD,IAAA,uBACEzB,eAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,OAAA,EAAU,GAAG,GAAA,CAAI,SAAA,EAAY,GAAG,KAAA,EACxD,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,SAAQ,CAAA;sBAAAC,eAAAA,CACd,KAAA,EAAA,EACC,QAAA,EAAA;wBAAAD,cAAAA;AAAC,UAAA,QAAA;AAAA,UAAA;YACC,IAAA,EAAK,QAAA;AACL,YAAA,OAAA,EAAS,MAAM;AACb,cAAA,GAAA,CAAI,OAAA,CAAQ,cAAA,CAAe,OAAA,IAAW,MAAS,CAAA;AAC/C,cAAA,UAAA,CAAW,KAAK,CAAA;AAClB,YAAA,CAAA;YAEC,QAAA,EAAA;AAAA;AAAA,SAAA;wBAEHA,cAAAA;AAAC,UAAA,QAAA;AAAA,UAAA;YACC,IAAA,EAAK,QAAA;AACL,YAAA,OAAA,EAAS,MAAM;AACb,cAAA,GAAA,CAAI,OAAA,EAAA;AACJ,cAAA,UAAA,CAAW,KAAK,CAAA;AAClB,YAAA,CAAA;YAEC,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAEJ,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;AClG5B,SAAS,WAAW,IAAA,EAAsB;AACxC,EAAA,OAAO,KACJ,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,CACrB,OAAA,CAAQ,MAAM,MAAM,CAAA,CACpB,QAAQ,IAAA,EAAM,MAAM,EACpB,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA,CACtB,OAAA,CAAQ,MAAM,OAAO,CAAA;AAC1B;AAKA,SAAS,WAAA,CAAY,MAAc,YAAA,EAAgD;AACjF,EAAA,IAAI,MAAA,GAAS,WAAW,IAAI,CAAA;AAG5B,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,YAAA,EAAc,iBAAiB,CAAA;AAGvD,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,kBAAA,EAAoB,qBAAqB,CAAA;AACjE,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,cAAA,EAAgB,qBAAqB,CAAA;AAG7D,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,cAAA,EAAgB,aAAa,CAAA;AACrD,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,YAAA,EAAc,aAAa,CAAA;AAGnD,EAAA,MAAA,GAAS,OAAO,OAAA,CAAQ,0BAAA,EAA4B,CAAC,MAAA,EAAQ2B,OAAM,GAAA,KAAQ;AACzE,IAAA,IAAI,qBAAA,CAAsB,IAAA,CAAK,GAAG,CAAA,EAAG;AACnC,MAAA,OAAOA,KAAAA;AACT,IAAA;AACA,IAAA,MAAM,WAAA,GAAc,YAAA,GAAe,YAAA,CAAa,GAAG,CAAA,GAAI,GAAA;AACvD,IAAA,OAAO,CAAA,SAAA,EAAY,WAAW,CAAA,EAAA,EAAKA,KAAI,CAAA,IAAA,CAAA;EACzC,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;AAOA,SAAS,aAAA,CAAc,SAAiB,YAAA,EAAgD;AACtF,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAChC,EAAA,MAAM,cAAwB,EAAA;AAC9B,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI,mBAA6B,EAAA;AACjC,EAAA,IAAI,aAAA,GAAgB,EAAA;AACpB,EAAA,IAAI,MAAA,GAA6B,IAAA;AACjC,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,SAAS,SAAA,GAAY;AACnB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,WAAA,CAAY,IAAA,CAAK,MAAA,KAAW,IAAA,GAAO,OAAA,GAAU,OAAO,CAAA;AACpD,MAAA,MAAA,GAAS,IAAA;AACX,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,WAAA,CAAY,KAAK,eAAe,CAAA;AAChC,MAAA,YAAA,GAAe,KAAA;AACjB,IAAA;AACF,EAAA;AAEA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AAGpB,IAAA,IAAI,IAAA,CAAK,SAAA,EAAA,CAAY,UAAA,CAAW,KAAK,CAAA,EAAG;AACtC,MAAA,IAAI,WAAA,EAAa;AAEf,QAAA,WAAA,CAAY,KAAK,CAAA,UAAA,EAAa,aAAA,GAAgB,CAAA,iBAAA,EAAoB,UAAA,CAAW,aAAa,CAAC,CAAA,CAAA,CAAA,GAAM,EAAE,CAAA,CAAA,EAAI,WAAW,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,aAAA,CAAe,CAAA;AAC7J,QAAA,gBAAA,GAAmB,EAAA;AACnB,QAAA,aAAA,GAAgB,EAAA;AAChB,QAAA,WAAA,GAAc,KAAA;MAChB,CAAA,MAAO;AAEL,QAAA,SAAA,EAAA;AACA,QAAA,eAAA,EAAA;AACA,QAAA,WAAA,GAAc,IAAA;AACd,QAAA,aAAA,GAAgB,KAAK,SAAA,EAAA,CAAY,KAAA,CAAM,CAAC,EAAE,IAAA,EAAA;AAC5C,MAAA;AACA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAC1B,MAAA;AACF,IAAA;AAGA,IAAA,IAAI,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA,EAAG;AACpC,MAAA,SAAA,EAAA;AACA,MAAA,eAAA,EAAA;AACA,MAAA,WAAA,CAAY,KAAK,QAAQ,CAAA;AACzB,MAAA;AACF,IAAA;AAGA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,mBAAmB,CAAA;AACnD,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,SAAA,EAAA;AACA,MAAA,eAAA,EAAA;AACA,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,CAAC,CAAA,CAAE,MAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,YAAA,CAAa,CAAC,GAAG,YAAY,CAAA;AACtD,MAAA,WAAA,CAAY,KAAK,CAAA,EAAA,EAAK,KAAK,IAAI,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAA;AACjD,MAAA;AACF,IAAA;AAGA,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA;AAC/C,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,SAAA,EAAA;AACA,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,YAAA,GAAe,IAAA;AACf,QAAA,WAAA,CAAY,KAAK,cAAc,CAAA;AACjC,MAAA;AACA,MAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,CAAC,CAAA,CAAE,IAAA,EAAA;AAChC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,WAAA,CAAY,KAAK,CAAA,GAAA,EAAM,WAAA,CAAY,IAAA,EAAM,YAAY,CAAC,CAAA,IAAA,CAAM,CAAA;AAC9D,MAAA;AACA,MAAA;AACF,IAAA,CAAA,MAAA,IAAW,YAAA,EAAc;AACvB,MAAA,eAAA,EAAA;AACF,IAAA;AAGA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,qBAAqB,CAAA;AAChD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,eAAA,EAAA;AACA,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,SAAA,EAAA;AACA,QAAA,MAAA,GAAS,IAAA;AACT,QAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AACzB,MAAA;AACA,MAAA,WAAA,CAAY,IAAA,CAAK,OAAO,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAA,EAAG,YAAY,CAAC,CAAA,KAAA,CAAO,CAAA;AACpE,MAAA;AACF,IAAA;AAGA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,qBAAqB,CAAA;AAChD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,eAAA,EAAA;AACA,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,SAAA,EAAA;AACA,QAAA,MAAA,GAAS,IAAA;AACT,QAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AACzB,MAAA;AACA,MAAA,WAAA,CAAY,IAAA,CAAK,OAAO,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAA,EAAG,YAAY,CAAC,CAAA,KAAA,CAAO,CAAA;AACpE,MAAA;AACF,IAAA;AAGA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,SAAA,EAAA;AACF,IAAA;AAGA,IAAA,IAAI,IAAA,CAAK,IAAA,EAAA,KAAW,EAAA,EAAI;AACtB,MAAA;AACF,IAAA;AAGA,IAAA,WAAA,CAAY,KAAK,CAAA,GAAA,EAAM,WAAA,CAAY,IAAA,EAAM,YAAY,CAAC,CAAA,IAAA,CAAM,CAAA;AAC9D,EAAA;AAGA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,WAAA,CAAY,KAAK,CAAA,UAAA,EAAa,aAAA,GAAgB,CAAA,iBAAA,EAAoB,UAAA,CAAW,aAAa,CAAC,CAAA,CAAA,CAAA,GAAM,EAAE,CAAA,CAAA,EAAI,WAAW,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,aAAA,CAAe,CAAA;AAC/J,EAAA;AACA,EAAA,SAAA,EAAA;AACA,EAAA,eAAA,EAAA;AAEA,EAAA,OAAO,WAAA,CAAY,KAAK,IAAI,CAAA;AAC9B;AAKA,SAAS,iBAAA,CACP,SACA,UAAA,EACwD;AACxD,EAAA,IAAI,CAAC,UAAA,EAAY,OAAO,EAAA;AAExB,EAAA,MAAM,YAAoE,EAAA;AAE1E,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACpD,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AAC5C,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,SAAA,CAAU,IAAA,CAAK;AACb,QAAA,IAAA;QACA,KAAA,EAAO,EAAE,GAAG,GAAA,CAAI,KAAA;OACjB,CAAA;AACH,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,SAAA;AACT;AAQO,SAAS,uBAAuB,KAAA,EAAmD;AACxF,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,YAAA,EAAA,GAAiB,KAAA;AAE9C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,OAAA,EAAS,YAAY,CAAA;AAChD,EAAA,MAAM,mBAAA,GAAsB,iBAAA,CAAkB,OAAA,EAAS,UAAU,CAAA;AAEjE,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,UAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,OAAO;AACL,IAAA,IAAA;IACA,UAAA,EAAY,mBAAA;AACZ,IAAA;AAAA,GAAA;AAEJ;ACvPO,IAAM,sBAAA,GAAwC;EACnD,IAAA,EAAM,mBAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,wBAAA,EAAA;AAC/C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,wBAAA,EAAA;AAC/C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,wBAAA,EAA0B,QAAA,EAAU,mBAAA,EAAA;AACxD,IAAA,SAAA,EAAW,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,qBAAA,EAAA;AACxD,IAAA,WAAA,EAAa,EAAE,QAAA,EAAU,uBAAA,EAAyB,QAAA,EAAU,oBAAA;AAAqB;AAErF;AAEO,IAAM,gBAAgB,GAAA,CAAI;EAC/B,IAAA,EAAM,kDAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,kBAAA;MACJ,OAAA,EAAS,sBAAA;MACT,EAAA,EAAI;AAAA,KAAA;IAEN,KAAA,EAAO;MACL,KAAA,EAAO,wBAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACPD,SAAS,aAAa,IAAA,EAAsB;AAC1C,EAAA,IAAI,SAAA,GAAY,IAAA;AAGhB,EAAA,SAAA,GAAY,SAAA,CAAU,OAAA,CAAQ,qDAAA,EAAuD,EAAE,CAAA;AAGvF,EAAA,SAAA,GAAY,SAAA,CAAU,OAAA,CAAQ,oBAAA,EAAsB,EAAE,CAAA;AAGtD,EAAA,SAAA,GAAY,SAAA,CAAU,OAAA,CAAQ,8CAAA,EAAgD,EAAE,CAAA;AAGhF,EAAA,SAAA,GAAY,SAAA,CAAU,OAAA,CAAQ,kDAAA,EAAoD,OAAO,CAAA;AAEzF,EAAA,OAAO,SAAA;AACT;AAQO,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,OAAA,EAAS,UAAA,EAAY,cAAc,SAAA,EAAW,IAAA,IAAQ,GAAA,KAAQ;AAC/D,IAAA,MAAM,SAAA,GAAuB,EAAE,OAAA,EAAS,UAAA,EAAY,YAAA,EAAA;AACpD,IAAA,MAAM,GAAA,GAAM,uBAAuB,SAAS,CAAA;AAC5C,IAAA,MAAM,UAAU,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AACrD,IAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AAE3C,IAAA,uBACE5B,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,OAAA;AACV,QAAA,GAAG,GAAA,CAAI,SAAA;QACR,uBAAA,EAAyB,EAAE,QAAQ,aAAA;AAAc;AAAA,KAAA;AAGvD,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;ACnCxB,SAAS,eAAA,CAAgB,KAAA,GAAwB,EAAA,EAAkB;AACxE,EAAA,MAAM,MAAA,GAAS,MAAM,IAAA,IAAQ,KAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,IAAM,UAAA,CAAW,gBAAgB,CAAA;AAClD,EAAA,MAAM,SAAA,GAAY,GAAG,EAAE,CAAA,QAAA,CAAA;AAEvB,EAAA,MAAM,KAAA,GAAwB;IAC5B,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,MAAM,YAAA,GAA6C;IACjD,eAAA,EAAiB,MAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,MAAM,YAAA,GAA6C;IACjD,EAAA,EAAI,SAAA;IACJ,IAAA,EAAM,MAAA;AACN,IAAA,YAAA,EAAc,SAAS,MAAA,GAAS;AAAA,GAAA;AAGlC,EAAA,SAAS,QAAQ,KAAA,EAAgB;AAC/B,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,IAAA,KAAA,CAAM,eAAe,KAAK,CAAA;AAC5B,EAAA;AAEA,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,CAAC,MAAM,IAAI,CAAA;AACxC,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAI,CAAA;AAC/B,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEjC,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,MAAM,KAAA;AAAM,GAAA;AAG7B,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,MAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACtEO,IAAM,eAAA,GAAiC;EAC5C,IAAA,EAAM,YAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,wBAAA,EAAA;AACjD,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,wBAAA,EAAA;AACjD,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,yBAAA,EAA2B,QAAA,EAAU,oBAAA;AAAqB;AAElF;AAEO,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,UAAA;AACN,EAAA,QAAA,EAAU;AACZ,CAAC;AAEM,IAAM,2BAA2B,GAAA,CAAI;EAC1C,IAAA,EAAM,2EAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,IAAA,EAAM,uDAAA;MACN,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,2BAA2B,GAAA,CAAI;EAC1C,IAAA,EAAM,mMAAA;AACN,EAAA,QAAA,EAAU;AACZ,CAAC;AAEM,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM,+IAAA;AACN,EAAA,QAAA,EAAU;AACZ,CAAC;AClBD,IAAM,gBAAA,GAAyB6B,iCAA4C,IAAI,CAAA;AAE/E,SAAS,mBAAA,GAA6C;AACpD,EAAA,MAAM,GAAA,GAAYA,8BAAW,gBAAgB,CAAA;AAC7C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AACjF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAgBO,IAAM,SAAA,GAAkBA,kBAAA,CAAA,UAAA;EAC7B,CAAC,EAAE,IAAA,EAAM,cAAA,EAAgB,YAAA,EAAc,WAAA,GAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACnG,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,4BAAS,WAAW,CAAA;AAC1E,IAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,IAAA,MAAM,IAAA,GAAO,eAAe,cAAA,GAAiB,gBAAA;AAE7C,IAAA,MAAM,OAAA,GAAgBA,kBAAA,CAAA,WAAA;AACpB,MAAA,CAAC,KAAA,KAAmB;AAClB,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,mBAAA,CAAoB,KAAK,CAAA;AAC3B,QAAA;AACA,QAAA,YAAA,GAAe,KAAK,CAAA;AACtB,MAAA,CAAA;AACA,MAAA,CAAC,cAAc,YAAY;AAAA,KAAA;AAG7B,IAAA,MAAM,GAAA,GAAM,gBAAgB,EAAE,IAAA,EAAM,cAAc,OAAA,EAAS,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,CAAA;AAEzE,IAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,OAAA;MAC1B,MAAM,qBAAA,CAAsB,IAAI,gBAAgB,CAAA;AAChD,MAAA,CAAC,IAAI;AAAA,KAAA;AAGP,IAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,OAAA;AACzB,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,GAAA,CAAI,aAAa,EAAA,EAAA,CAAA;AACpD,MAAA,CAAC,IAAA,EAAM,OAAA,EAAS,GAAA,CAAI,YAAA,CAAa,EAAE;AAAA,KAAA;AAGrC,IAAA,uBACE7B,eAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,YAAA,EAChC,0BAAAA,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA;QAC5C,SAAA,EAAW,aAAA;QACV,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA,EAEL,CAAA;AAEJ,EAAA;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAWjB,IAAM,gBAAA,GAAyB6B,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,KAAc,mBAAA,EAAA;AAErC,IAAA,uBACE7B,cAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;QACL,eAAA,EAAe,IAAA;QACf,eAAA,EAAe,SAAA;QACf,YAAA,EAAW,aAAA;QACX,SAAA,EAAW,EAAA,CAAG,wBAAA,EAAA,EAA4B,SAAS,CAAA;QACnD,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,IAAI,CAAA;QAC3B,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,4BACCA,cAAAA;AAAC,UAAA,KAAA;AAAA,UAAA;YACC,KAAA,EAAM,IAAA;YACN,MAAA,EAAO,IAAA;YACP,OAAA,EAAQ,WAAA;YACR,IAAA,EAAK,MAAA;YACL,MAAA,EAAO,cAAA;YACP,WAAA,EAAY,GAAA;YACZ,aAAA,EAAc,OAAA;YACd,cAAA,EAAe,OAAA;YACf,aAAA,EAAY,MAAA;AAEX,YAAA,QAAA,EAAA,IAAA,mBACCC,eAAAA,CAAA6B,mBAAAA,EAAA,EACE,QAAA,EAAA;8BAAA9B,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;8BACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,aAAA,EACtC,CAAA,mBAEAC,eAAAA,CAAA6B,mBAAAA,EAAA,EACE,QAAA,EAAA;8BAAA9B,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,CAAA;8BACnCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;8BACrCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,aAAA,EACvC;AAAA;AAAA;AAEJ;AAAA,KAAA;AAIR,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAWxB,IAAM,gBAAA,GAAyB6B,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAA,GAAc,mBAAA,EAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,GAAS,QAAA;AAE9B,IAAA,uBACE7B,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,EAAA,EAAI,SAAA;QACJ,IAAA,EAAK,MAAA;QACL,YAAA,EAAY,KAAA;AACZ,QAAA,SAAA,EAAW,GAAG,wBAAA,CAAyB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;QAC3D,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAWxB,IAAM,aAAA,GAAsB6B,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,uBACE7B,cAAAA;AAAC,MAAA,GAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,UAAA;QACL,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAA,EAAyB,SAAS,CAAA;QAC/C,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;ACrLrB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAA,EAAI,WAAA,GAAc,KAAA,GAAQ,KAAA;AAE1C,EAAA,SAAS,SAAS,IAAA,EAAuB;AACvC,IAAA,IAAI,IAAA,KAAS,GAAA,EAAK,OAAO,WAAA,KAAgB,GAAA;AACzC,IAAA,OAAO,WAAA,CAAY,WAAW,IAAI,CAAA;AACpC,EAAA;AAEA,EAAA,SAAS,cAAc,IAAA,EAAsC;AAC3D,IAAA,MAAM,MAAA,GAAS,SAAS,IAAI,CAAA;AAC5B,IAAA,OAAO,MAAA,GAAS,EAAE,cAAA,EAAgB,MAAA,KAAW,EAAA;AAC/C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA,EAAW,EAAE,IAAA,EAAM,YAAA,EAAc,YAAA,EAAc,iBAAA,EAAA;AAC/C,IAAA,QAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACpCO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,mCAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,KAAA,EAAO,eAAA;MACP,IAAA,EAAM,mCAAA;MACN,QAAA,EAAU,oEAAA;MACV,WAAA,EAAa;AAAA;AACf,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,6DAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,IAAA,EAAM,iBAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC;ACCM,IAAM,MAAA,GAAe+B,kBAAA,CAAA,UAAA;EAC1B,CACE;AACE,IAAA,KAAA,GAAQ,EAAA;AACR,IAAA,WAAA;AACA,IAAA,OAAA;AACA,IAAA,IAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,MAAM,YAAA,CAAa,EAAE,KAAA,EAAO,WAAa,CAAS,CAAA;AACxD,IAAA,MAAM,UAAU,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAEzD,IAAA,uBAAA/B,cAAAA,CACG,QAAA,EAAA,EAAO,GAAA,EAAU,WAAW,OAAA,EAAU,GAAG,KAAA,EACxC,QAAA,kBAAAC,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;QACC,SAAA,EAAU,+DAAA;AACT,QAAA,GAAG,GAAA,CAAI,SAAA;QAEP,QAAA,EAAA;UAAA,IAAA,oBAAQD,eAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EAAiB,QAAA,EAAA,MAAK,CAAA;AAC9C,0BAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qCACX,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,yBACVA,cAAAA,CAAC,IAAA,EAAA,EACC,0BAAAA,cAAAA;AAAC,YAAA,GAAA;AAAA,YAAA;AACC,cAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,cAAA,SAAA,EAAW,eAAA,CAAgB;AACzB,gBAAA,MAAA,EAAQ,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,IAAI,IAAI,MAAA,GAAS;eAC5C,CAAA;cACA,GAAG,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAE9B,cAAA,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WAAA,EACR,EATO,IAAA,CAAK,IAUd,CACD,GACH,CAAA;UACC,OAAA,oBAAWA,eAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EAA2B,QAAA,EAAA,SAAQ;AAAA;AAAA;AAAA,KAAA,EAElE,CAAA;AAEJ,EAAA;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;ACpCd,SAAS,aAAA,CAAc,KAAA,GAAsB,EAAA,EAAgB;AAClE,EAAA,MAAM;IACJ,IAAA,EAAM,cAAA;IACN,WAAA,GAAc,KAAA;AACd,IAAA,YAAA;IACA,SAAA,GAAY;GAAA,GACV,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,WAAW,aAAa,CAAA;AAE1C,EAAA,IAAI,SAAS,cAAA,IAAkB,WAAA;AAE/B,EAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,EAAM,MAAA,EAAA;AAEtB,EAAA,SAAS,QAAQ,KAAA,EAAgB;AAC/B,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe;IACnB,eAAA,EAAiB,MAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,eAAA,EAAiB;AAAA,GAAA;AAGnB,EAAA,MAAM,YAAA,GAAe;IACnB,IAAA,EAAM,QAAA;IACN,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,gBAAA,GAAuC;IAC3C,CAAC,IAAA,CAAK,MAAM,GAAG,MAAM;AACnB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,aAAA,GAAgB,sBAAsB,gBAAgB,CAAA;AAE5D,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;IACA,IAAA,EAAM,MAAM,QAAQ,IAAI,CAAA;IACxB,KAAA,EAAO,MAAM,QAAQ,KAAK,CAAA;IAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,CAAC,MAAM,CAAA;AAC7B,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACtFO,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,2FAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,GAAA,EAAK,yBAAA;MACL,KAAA,EAAO,yBAAA;MACP,MAAA,EAAQ,uBAAA;MACR,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACKD,IAAM,cAAA,GAAuBgC,iCAA0C,IAAI,CAAA;AAE3E,SAAS,iBAAA,GAAyC;AAChD,EAAA,MAAM,GAAA,GAAYA,8BAAW,cAAc,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAC7E,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAcO,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,cAAc,KAAA,EAAO,YAAA,EAAc,SAAA,EAAW,QAAA,EAAA,EAA0B;AACtH,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAS,kBAAkB,WAAW,CAAA;AACpF,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,MAAA,GAAS,eAAe,cAAA,GAAiB,YAAA;AAE/C,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,KAAA,KAAmB;AAClB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,KAAK,CAAA;AACvB,MAAA;AACA,MAAA,YAAA,GAAe,KAAK,CAAA;AACtB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAG7B,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MAAM,cAAc,EAAE,IAAA,EAAM,QAAQ,YAAA,EAAc,gBAAA,EAAkB,WAAW,CAAA;IAC/E,CAAC,MAAA,EAAQ,kBAAkB,SAAS;AAAA,GAAA;AAGtC,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,SAAS,gBAAA,EAAA,CAAA;IACrC,CAAC,GAAA,EAAK,QAAQ,gBAAgB;AAAA,GAAA;AAGhC,EAAA,OAAaA,iCAAc,cAAA,CAAe,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ,CAAA;AAC9E;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAQf,IAAM,cAAA,GAAuBA,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,EAAE,GAAA,EAAK,OAAA,EAAS,IAAA,KAAS,iBAAA,EAAA;AAE/B,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AACb,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,uBACEhC,cAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;QACL,eAAA,EAAe,GAAA,CAAI,aAAa,eAAe,CAAA;QAC/C,eAAA,EAAe,GAAA,CAAI,aAAa,eAAe,CAAA;QAC/C,eAAA,EAAe,GAAA,CAAI,aAAa,eAAe,CAAA;QAC/C,OAAA,EAAS,WAAA;QACR,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAUtB,IAAM,cAAA,GAAuBgC,kBAAA,CAAA,UAAA;EAClC,CAAC,EAAE,MAAM,SAAA,EAAW,QAAA,EAAU,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC3D,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAM,OAAA,KAAY,iBAAA,EAAA;AAE/B,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACA,MAAA,SAAA,GAAY,CAAC,CAAA;AACf,IAAA,CAAA;AAEA,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,0BACJhC,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;AACvB,QAAA,EAAA,EAAI,IAAI,YAAA,CAAa,EAAA;QACrB,SAAA,EAAW,EAAA,CAAG,uBAAuB,EAAE,IAAA,EAAM,QAAQ,GAAA,CAAI,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA;QAChF,SAAA,EAAW,aAAA;QACV,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAIL,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,OAAOiC,qBAAAA,CAAa,OAAA,EAAS,QAAA,CAAS,IAAI,CAAA;AAC5C,IAAA;AAEA,IAAA,OAAO,OAAA;AACT,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAQtB,IAAM,YAAA,GAAqBD,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,EAAE,OAAA,EAAA,GAAY,iBAAA,EAAA;AAEpB,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,uBACEhC,cAAAA,CAAC,QAAA,EAAA,EAAO,GAAA,EAAU,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,WAAA,EAAc,GAAG,KAAA,EACvD,QAAA,EACH,CAAA;AAEJ,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;ACvIpB,SAAS,eAAA,CAAgB,KAAA,GAAwB,EAAA,EAAkB;AACxE,EAAA,MAAM;AACJ,IAAA,KAAA,EAAO,YAAA,GAAe,EAAA;AACtB,IAAA,aAAA;AACA,IAAA,QAAA;IACA,UAAA,GAAa,GAAA;IACb,WAAA,EAAa,YAAA;IACb,OAAA,GAAU;GAAA,GACR,KAAA;AAEJ,EAAA,MAAM,MAAA,GAAS,WAAW,iBAAiB,CAAA;AAE3C,EAAA,IAAI,YAAA,GAAe,YAAA;AACnB,EAAA,IAAI,WAAA,GAAc,OAAA;AAClB,EAAA,IAAI,aAAA;AAEJ,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,YAAA,EAAc,WAAA,EAAA;AAErC,EAAA,SAAS,SAAS,KAAA,EAAe;AAC/B,IAAA,YAAA,GAAe,KAAA;AACf,IAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,IAAA,aAAA,GAAgB,KAAK,CAAA;AAErB,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,YAAA,CAAa,aAAa,CAAA;AAC5B,IAAA;AAEA,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,WAAA,GAAc,IAAA;AACd,MAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,MAAA,aAAA,GAAgB,WAAW,MAAM;AAC/B,QAAA,QAAA,GAAW,KAAK,CAAA;AAChB,QAAA,WAAA,GAAc,KAAA;AACd,QAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AACtB,MAAA,CAAA,EAAG,UAAU,CAAA;IACf,CAAA,MAAO;AACL,MAAA,WAAA,GAAc,KAAA;AACd,MAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AACtB,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,KAAA,GAAQ;AACf,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,YAAA,CAAa,aAAa,CAAA;AAC5B,IAAA;AACA,IAAA,YAAA,GAAe,EAAA;AACf,IAAA,KAAA,CAAM,KAAA,GAAQ,EAAA;AACd,IAAA,WAAA,GAAc,KAAA;AACd,IAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AACpB,IAAA,aAAA,GAAgB,EAAE,CAAA;AACpB,EAAA;AAEA,EAAA,MAAM,UAAA,GAAa;IACjB,IAAA,EAAM,UAAA;AACN,IAAA,eAAA,EAAiB,aAAa,MAAA,GAAS,CAAA;IACvC,eAAA,EAAiB,MAAA;IACjB,mBAAA,EAAqB;AAAA,GAAA;AAGvB,EAAA,MAAM,SAAA,GAAY;IAChB,IAAA,EAAM,SAAA;IACN,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,gBAAA,GAAuC;IAC3C,CAAC,IAAA,CAAK,SAAS,GAAG,MAAM;AAExB,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,MAAM,GAAG,MAAM;AACnB,MAAA,KAAA,EAAA;AACF,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,KAAK,GAAG,MAAM;AAClB,MAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,QAAA,YAAA,CAAa,aAAa,CAAA;AAC5B,MAAA;AACA,MAAA,QAAA,GAAW,YAAY,CAAA;AACvB,MAAA,WAAA,GAAc,KAAA;AACd,MAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AACtB,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,aAAA,GAAgB,sBAAsB,gBAAgB,CAAA;AAE5D,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC/HO,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,mFAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,kBAAA;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM,0HAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,WAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;;;ACPD,IAAM,gBAAA,GAAyBkC,iCAA4C,IAAI,CAAA;AAE/E,SAAS,mBAAA,GAA6C;AACpD,EAAA,MAAM,GAAA,GAAYA,8BAAW,gBAAgB,CAAA;AAC7C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AACjF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAgBO,SAAS,SAAA,CAAU;EACxB,KAAA,EAAO,eAAA;EACP,YAAA,GAAe,EAAA;AACf,EAAA,aAAA;AACA,EAAA,QAAA;EACA,UAAA,GAAa,GAAA;EACb,OAAA,GAAU,KAAA;AACV,EAAA,WAAA;AACA,EAAA,SAAA;AACA,EAAA,QAAA;EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAS,mBAAmB,YAAY,CAAA;AACxF,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,YAAA,GAAe,eAAe,eAAA,GAAkB,aAAA;AAEtD,EAAA,MAAM,WAAA,GAAoBA,0BAAkD,MAAS,CAAA;AAErF,EAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,GAAG,CAAA;AACtB,MAAA;AACA,MAAA,aAAA,GAAgB,GAAG,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,aAAa;AAAA,GAAA;AAG9B,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,4BAAS,OAAO,CAAA;AAE5D,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,IAAI,WAAA,CAAY,YAAY,MAAA,EAAW;AACrC,QAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAClC,MAAA;AACA,MAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AAClB,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,WAAA,CAAY,OAAA,GAAU,WAAW,MAAM;AACrC,UAAA,QAAA,GAAW,GAAG,CAAA;AACd,UAAA,cAAA,CAAe,KAAK,CAAA;AACtB,QAAA,CAAA,EAAG,UAAU,CAAA;MACf,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,KAAK,CAAA;AACtB,MAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,UAAU,UAAU;AAAA,GAAA;AAGvB,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,CAAA,KAA2C;AAC1C,MAAA,MAAM,GAAA,GAAM,EAAE,MAAA,CAAO,KAAA;AACrB,MAAA,iBAAA,CAAkB,GAAG,CAAA;AACrB,MAAA,YAAA,CAAa,GAAG,CAAA;AAClB,IAAA,CAAA;AACA,IAAA,CAAC,mBAAmB,YAAY;AAAA,GAAA;AAGlC,EAAA,MAAM,KAAA,GAAcA,+BAAY,MAAM;AACpC,IAAA,IAAI,WAAA,CAAY,YAAY,MAAA,EAAW;AACrC,MAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAClC,IAAA;AACA,IAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,IAAA,cAAA,CAAe,KAAK,CAAA;EACtB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,eAAA,CAAgB;MACd,KAAA,EAAO,YAAA;MACP,aAAA,EAAe,iBAAA;AACf,MAAA,QAAA;AACA,MAAA,UAAA;AACA,MAAA,WAAA;AACA,MAAA;KACD,CAAA;AACH,IAAA,CAAC,YAAA,EAAc,iBAAA,EAAmB,QAAA,EAAU,UAAA,EAAY,aAAa,OAAO;AAAA,GAAA;AAG9E,EAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,IAAA,CAAC,CAAA,KAA6C;AAC5C,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,KAAA,EAAA;MACF,CAAA,MAAA,IAAW,CAAA,CAAE,QAAQ,OAAA,EAAS;AAC5B,QAAA,IAAI,WAAA,CAAY,YAAY,MAAA,EAAW;AACrC,UAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAClC,QAAA;AACA,QAAA,QAAA,GAAW,YAAY,CAAA;AACvB,QAAA,cAAA,CAAe,KAAK,CAAA;AACtB,MAAA;AACF,IAAA,CAAA;IACA,CAAC,KAAA,EAAO,UAAU,YAAY;AAAA,GAAA;AAGhC,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,cAAc,WAAA,EAAa,QAAA,EAAU,mBAAmB,KAAA,EAAA,CAAA;AAC7E,IAAA,CAAC,GAAA,EAAK,YAAA,EAAc,WAAA,EAAa,iBAAA,EAAmB,KAAK;AAAA,GAAA;AAG3D,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,gBAAA,CAAiB,QAAA;AACjB,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA,EAAA;AACxC,MAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,mBAAmB,aAAA,EAAe,MAAA,IAAU,WAAW,CAAA;AAC1F,MAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;QAC3B,GAAG,UAAA;AACH,QAAA,IAAA,EAAM,IAAI,UAAA,CAAW,IAAA;QACrB,eAAA,EAAiB,GAAA,CAAI,WAAW,eAAe,CAAA;QAC/C,eAAA,EAAiB,GAAA,CAAI,WAAW,eAAe,CAAA;QAC/C,mBAAA,EAAqB,GAAA,CAAI,WAAW,mBAAmB,CAAA;QACvD,KAAA,EAAO,YAAA;AACP,QAAA,WAAA;QACA,QAAA,EAAU,YAAA;QACV,SAAA,EAAW,aAAA;QACX,SAAA,EAAW;OACZ,CAAA;MACD,WAAA,IACQA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,sBAAsB,YAAA,EAAc,SAAA,IAAa,QAAU,CAAA;MACtG,YAAA,CAAa,MAAA,GAAS,CAAA,IACpB,CAAC,WAAA,IACKA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;UACE,IAAA,EAAM,QAAA;UACN,SAAA,EAAW,kBAAA;UACX,OAAA,EAAS,KAAA;UACT,YAAA,EAAc;AAAA,SAAA;AAEhB,QAAA;AAAA;AACF,KAAA;AAEJ,IAAA;AAAA,GAAA;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAQjB,IAAM,aAAA,GAAsBA,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAA,GAAU,mBAAA,EAAA;AAEvB,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,IAAA;AACA,MAAA;AACE,QAAA,GAAA;AACA,QAAA,IAAA,EAAM,IAAI,SAAA,CAAU,IAAA;AACpB,QAAA,EAAA,EAAI,IAAI,SAAA,CAAU,EAAA;QAClB,SAAA,EAAW,EAAA,CAAG,oBAAA,EAAA,EAAwB,SAAS,CAAA;QAC/C,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAQrB,IAAM,gBAAA,GAAyBA,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,IAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,SAAA,EAAW,EAAA,CAAG,4CAA4C,SAAS,CAAA;QACnE,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AC1MxB,SAAS,aAAA,CAAc,KAAA,GAAsB,EAAA,EAAgB;AAClE,EAAA,MAAM,EAAE,WAAW,EAAA,EAAI,cAAc,GAAA,EAAK,SAAA,GAAY,EAAA,EAAC,GAAM,KAAA;AAE7D,EAAA,SAAS,SAAS,IAAA,EAAuB;AACvC,IAAA,IAAI,IAAA,KAAS,GAAA,EAAK,OAAO,WAAA,KAAgB,GAAA;AACzC,IAAA,OAAO,WAAA,CAAY,WAAW,IAAI,CAAA;AACpC,EAAA;AAEA,EAAA,SAAS,UAAU,IAAA,EAA4B;AAC7C,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,IAAS,KAAK,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,IAAA;AACnD,IAAA,OAAO,IAAA,CAAK,MAAM,IAAA,CAAK,CAAC,SAAS,SAAA,CAAU,QAAA,CAAS,IAAI,CAAC,CAAA;AAC3D,EAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,QAAA,CACrB,GAAA,CAAI,CAAC,OAAA,MAAa;IACjB,GAAG,OAAA;IACH,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,SAAS;AAAA,GAAA,CACrC,EACD,MAAA,CAAO,CAAC,YAAY,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAC,CAAA;AAE/C,EAAA,OAAO;AACL,IAAA,SAAA,EAAW,EAAE,IAAA,EAAM,YAAA,EAAc,YAAA,EAAc,SAAA,EAAA;AAC/C,IAAA,QAAA;AACA,IAAA,SAAA;IACA,aAAA,EAAe,CAAC,SACd,QAAA,CAAS,IAAI,IAAI,EAAE,cAAA,EAAgB,MAAA,EAAA,GAAW,EAAA;AAChD,IAAA;AAAA,GAAA;AAEJ;ACxDO,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,gDAAA;EACN,QAAA,EAAU;IACR,SAAA,EAAW;MACT,IAAA,EAAM,MAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,oFAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,IAAA,EAAM,kCAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;ACCM,IAAM,OAAA,GAAgBC,kBAAA,CAAA,UAAA;EAC3B,CACE;AACE,IAAA,QAAA,GAAW,EAAA;AACX,IAAA,WAAA;IACA,SAAA,GAAY,KAAA;AACZ,IAAA,SAAA;AACA,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,MAAM,aAAA,CAAc,EAAE,UAAU,WAAA,EAAwB,WAAW,CAAA;AACzE,IAAA,MAAM,OAAA,GAAU,EAAA;AACd,MAAA,eAAA,CAAgB,EAAE,SAAA,EAAW,SAAA,GAAY,MAAA,GAAS,SAAS,CAAA;AAC3D,MAAA;AAAA,KAAA;AAGF,IAAA,uBACEnC,cAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,OAAA,EAAU,GAAG,GAAA,CAAI,SAAA,EAAY,GAAG,KAAA,EAC1D,0BAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA,GAAA,CAAI,eAAA,CAAgB,GAAA,CAAI,CAAC,OAAA,EAAS,IAAA,qBACjCC,eAAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,KAAA,IAAS,CAAC,SAAA,oBACjBD,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gFAAA,EACX,QAAA,EAAA,OAAA,CAAQ,KAAA,EACX,CAAA;sBAEFA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,WAAA,EACX,UAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAC3B,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AACrC,QAAA,uBAAAA,cAAAA,CACG,IAAA,EAAA,EACC,0BAAAC,eAAAA;AAAC,UAAA,GAAA;AAAA,UAAA;AACC,YAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,YAAA,SAAA,EAAW,mBAAA,CAAoB;AAC7B,cAAA,MAAA,EAAQ,SAAS,MAAA,GAAS;aAC3B,CAAA;YACA,GAAG,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;YAE9B,QAAA,EAAA;cAAA,IAAA,CAAK,IAAA,oBAAQD,cAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAQ,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;cACjD,CAAC,SAAA,oBAAaA,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,OAAM;AAAA;AAAA;SAAA,EACnC,EAVO,KAAK,IAWd,CAAA;AAEJ,MAAA,CAAC,GACH;KAAA,EAAA,EAxBQ,QAAQ,KAAA,IAAS,IAyB3B,CACD,CAAA,EACH,GACF,CAAA;AAEJ,EAAA;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;AC7Df,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAiB;AACrE,EAAA,MAAM,EAAE,KAAA,GAAQ,MAAA,EAAQ,OAAA,GAAU,MAAA,GAAS,KAAA;AAE3C,EAAA,MAAM,SAAA,GAAyC;IAC7C,aAAA,EAAe,IAAA;IACf,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,MAAM,cAAA,GAAyC;IAC7C,YAAA,EAAc,KAAA;AACd,IAAA,cAAA,EAAgB,OAAO,OAAO;AAAA,GAAA;AAGhC,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACpCO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,wBAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,IAAA,EAAM,oBAAA;MACN,QAAA,EAAU,cAAA;MACV,WAAA,EAAa,cAAA;MACb,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;;;ACOM,IAAM,QAAA,GAAiBoC,kBAAA,CAAA,UAAA;EAC5B,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,WAAW,KAAA,EAAO,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACtE,IAAA,MAAM,GAAA,GAAM,cAAA,CAAe,EAAE,KAAA,EAAO,SAAS,CAAA;AAC7C,IAAA,MAAM,UAAU,EAAA,CAAG,gBAAA,CAAiB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAEzD,IAAA,MAAM,WAAA,GAAmC;MACvC,GAAG,KAAA;AACH,MAAA,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU,EAAA;AACtC,MAAA,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW;AAAC,KAAA;AAG3C,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,SAAA,EAAW,OAAA;AACX,MAAA,KAAA,EAAO,OAAO,IAAA,CAAK,WAAW,CAAA,CAAE,MAAA,GAAS,IAAI,WAAA,GAAc,MAAA;AAC3D,MAAA,GAAG,GAAA,CAAI,SAAA;AACP,MAAA,GAAG,GAAA,CAAI,cAAA;MACP,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAcvB,IAAM,UAAA,GAAa,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AAMpE,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;EAChC,CAAC,EAAE,QAAQ,CAAA,EAAG,OAAA,EAAS,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACpD,IAAA,MAAM,WAAiC,EAAA;AAEvC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,GAAI,UAAA,CAAW,MAAM,CAAA;AAC9C,MAAA,QAAA,CAAS,IAAA;AACD,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAA,EAAU;UAC5B,GAAA,EAAK,CAAA;UACL,KAAA,EAAO,MAAA;AACP,UAAA,KAAA;AACA,UAAA;SACD;AAAA,OAAA;AAEL,IAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,aAAa,SAAS,CAAA;QACpC,GAAG;AAAA,OAAA;MAEL,GAAG;AAAA,KAAA;AAEP,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;ACzDpB,SAAS,UAAA,CAAW,KAAA,GAAmB,EAAA,EAAa;AACzD,EAAA,MAAM;IACJ,KAAA,EAAO,eAAA;IACP,YAAA,GAAe,EAAA;AACf,IAAA,aAAA;IACA,WAAA,GAAc;GAAA,GACZ,KAAA;AAEJ,EAAA,IAAI,oBAAoB,eAAA,IAAmB,YAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,WAAW,UAAU,CAAA;AAEtC,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,IAAI,eAAA,KAAoB,QAAW,OAAO,eAAA;AAC1C,IAAA,OAAO,iBAAA;AACT,EAAA;AAEA,EAAA,SAAS,OAAO,KAAA,EAAqB;AACnC,IAAA,iBAAA,GAAoB,KAAA;AACpB,IAAA,aAAA,GAAgB,KAAK,CAAA;AACvB,EAAA;AAEA,EAAA,SAAS,SAAS,KAAA,EAAuB;AACvC,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAA;AACjC,EAAA;AAEA,EAAA,SAAS,WAAW,KAAA,EAAuB;AACzC,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AACnC,EAAA;AAEA,EAAA,SAAS,YAAY,KAAA,EAAsE;AACzF,IAAA,MAAM,UAAA,GAAa,gBAAA,KAAqB,KAAA;AACxC,IAAA,OAAO;MACL,IAAA,EAAM,KAAA;MACN,eAAA,EAAiB,UAAA;AACjB,MAAA,eAAA,EAAiB,WAAW,KAAK,CAAA;AACjC,MAAA,QAAA,EAAU,aAAa,CAAA,GAAI,EAAA;AAC3B,MAAA,EAAA,EAAI,SAAS,KAAK,CAAA;AAClB,MAAA,YAAA,EAAc,aAAa,QAAA,GAAW;AAAA,KAAA;AAE1C,EAAA;AAEA,EAAA,SAAS,cAAc,KAAA,EAAsE;AAC3F,IAAA,MAAM,UAAA,GAAa,gBAAA,KAAqB,KAAA;AACxC,IAAA,OAAO;MACL,IAAA,EAAM,UAAA;AACN,MAAA,iBAAA,EAAmB,SAAS,KAAK,CAAA;AACjC,MAAA,EAAA,EAAI,WAAW,KAAK,CAAA;AACpB,MAAA,MAAA,EAAQ,CAAC,UAAA,IAAc,MAAA;MACvB,QAAA,EAAU,CAAA;AACV,MAAA,YAAA,EAAc,aAAa,QAAA,GAAW;AAAA,KAAA;AAE1C,EAAA;AAEA,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,SAAA;IACN,kBAAA,EAAoB;AAAA,GAAA;AAGtB,EAAA,MAAM,gBAAA,GAAuC,gBAAgB,YAAA,GACzD;AACE,IAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,UAAU,GAAG,CAAC,CAAA,KAAM;AACxB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,IAAI,GAAG,CAAC,CAAA,KAAM;AAClB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,GAAG,GAAG,CAAC,CAAA,KAAM;AACjB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA;GAAA,GAEF;AACE,IAAA,CAAC,IAAA,CAAK,OAAO,GAAG,CAAC,CAAA,KAAM;AACrB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,IAAI,GAAG,CAAC,CAAA,KAAM;AAClB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,GAAG,GAAG,CAAC,CAAA,KAAM;AACjB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA;AAAA,GAAA;AAGN,EAAA,OAAO;IACL,KAAA,EAAO,EAAE,WAAA,EAAa,cAAA,EAAA,EAAe;AACrC,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA,aAAA;AACA,IAAA,MAAA;AACA,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AClIO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM;AACR,CAAC;;;ACYD,IAAM,WAAA,GAAoBC,iCAAuC,IAAI,CAAA;AAErE,SAAS,cAAA,GAAmC;AAC1C,EAAA,MAAM,GAAA,GAAYA,8BAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AACvE,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAeO,SAAS,IAAA,CAAK;EACnB,KAAA,EAAO,eAAA;EACP,YAAA,GAAe,EAAA;AACf,EAAA,aAAA;EACA,WAAA,GAAc,YAAA;AACd,EAAA,SAAA;AACA,EAAA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,4BAAS,YAAY,CAAA;AAC7E,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,iBAAA;AAE/C,EAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,IAAA,CAAC,IAAA,KAAiB;AAChB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,oBAAA,CAAqB,IAAI,CAAA;AAC3B,MAAA;AACA,MAAA,aAAA,GAAgB,IAAI,CAAA;AACtB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,aAAa;AAAA,GAAA;AAI9B,EAAA,MAAM,MAAA,GAAeA,0BAA6C,IAAI,CAAA;AACtE,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA,CAAW,EAAE,KAAA,EAAO,aAAa,CAAA;AACpD,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,KAAA;MACA,aAAA,EAAe,iBAAA;AACf,MAAA,WAAA;AACA,MAAA,QAAA,EAAU,GAAA,CAAI;AAAA,KAAA,CAAA;AAEhB,IAAA,CAAC,KAAA,EAAO,iBAAA,EAAmB,WAAA,EAAa,GAAA,CAAI,QAAQ;AAAA,GAAA;AAGtD,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;IACA,EAAE,SAAA,EAAW,oBAAoB,WAAA,EAAA;AAC3B,IAAAA,kBAAA,CAAA,aAAA,CAAc,YAAY,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ;AAAA,GAAA;AAEtE;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQZ,IAAM,QAAA,GAAiBA,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,EAAE,WAAA,EAAA,GAAgB,cAAA,EAAA;AAExB,IAAA,OAAaA,iCAAc,KAAA,EAAO;AAChC,MAAA,GAAA;MACA,IAAA,EAAM,SAAA;MACN,kBAAA,EAAoB,WAAA;MACpB,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAA,EAAoB,SAAS,CAAA;MAC3C,GAAG;KACJ,CAAA;AACH,EAAA;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAUhB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;EAC/B,CAAC,EAAE,OAAO,SAAA,EAAW,OAAA,EAAS,WAAW,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACrE,IAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,eAAe,WAAA,EAAa,QAAA,KAAa,cAAA,EAAA;AAErE,IAAA,MAAM,aAAa,WAAA,KAAgB,KAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAA;AACtC,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAE1C,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AAGnE,MAAA,SAAA,GAAY,CAAC,CAAA;AACf,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,QAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,QAAA;QACN,IAAA,EAAM,KAAA;QACN,eAAA,EAAiB,UAAA;QACjB,eAAA,EAAiB,OAAA;AACjB,QAAA,QAAA,EAAU,aAAa,CAAA,GAAI,EAAA;QAC3B,EAAA,EAAI,KAAA;AACJ,QAAA,YAAA,EAAc,aAAa,QAAA,GAAW,UAAA;QACtC,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAA,EAAuB,SAAS,CAAA;QAC9C,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;QACX,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAUnB,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACjD,IAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,QAAA,KAAa,cAAA,EAAA;AAEzC,IAAA,MAAM,aAAa,WAAA,KAAgB,KAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAA;AACtC,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAE1C,IAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AAExB,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,IAAA,EAAM,UAAA;QACN,iBAAA,EAAmB,KAAA;QACnB,EAAA,EAAI,OAAA;QACJ,QAAA,EAAU,CAAA;QACV,YAAA,EAAc,QAAA;AACd,QAAA,SAAA;QACA,GAAG;AAAA,OAAA;AAEL,MAAA;AAAA,KAAA;AAEJ,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACpLnB,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAiB;AACrE,EAAA,MAAM;IACJ,QAAA,GAAW,KAAA;IACX,QAAA,GAAW,KAAA;IACX,QAAA,GAAW,KAAA;IACX,cAAA,EAAgB;GAAA,GACd,KAAA;AAEJ,EAAA,MAAM,YAAsC,EAAA;AAE5C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,SAAA,CAAU,cAAc,CAAA,GAAI,IAAA;AAC9B,EAAA;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAE/C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,cAAA,CAAe,cAAc,CAAA,GAAI,EAAA;AACnC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACxDO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,8PAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,sBAAA;MACJ,OAAA,EAAS,cAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACIM,IAAM,QAAA,GAAiBC,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,cAAA,EAAgB,WAAA,EAAa,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChH,IAAA,MAAM,MAAM,cAAA,CAAe;AACzB,MAAA,QAAA;AACA,MAAA,QAAA;AACA,MAAA,QAAA;AACA,MAEA,cAAA,EAAgB,WAAA,KAAgB,OAAO,IAAA,GAAO;KAC/C,CAAA;AAED,IAAA,MAAM,UAAU,EAAA,CAAG,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAExD,IAAA,uBACEtC,cAAAA;AAAC,MAAA,UAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,OAAA;AACX,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,IAAA;AACC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;;;ACEhB,SAAS,WAAA,CAAY,KAAA,GAAoB,EAAA,EAAc;AAC5D,EAAA,MAAM;IACJ,OAAA,GAAU,SAAA;IACV,QAAA,GAAW,GAAA;IACX,IAAA,EAAM,cAAA;AACN,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,IAAI,SAAS,cAAA,IAAkB,IAAA;AAC/B,EAAA,IAAI,OAAA,GAAgD,IAAA;AACpD,EAAA,IAAI,SAAA,GAAY,QAAA;AAChB,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,SAAS,OAAA,GAAgB;AACvB,IAAA,UAAA,EAAA;AACA,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,IAAI,YAAY,IAAA,EAAM;AACpB,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,OAAA,GAAU,IAAA;AACZ,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,IAAI,YAAY,CAAA,EAAG;AACnB,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,GAAY,QAAA;AACZ,IAAA,SAAA,GAAY,KAAK,GAAA,EAAA;AACjB,IAAA,OAAA,GAAU,UAAA,CAAW,SAAS,SAAS,CAAA;AACzC,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,IAAI,YAAY,IAAA,EAAM;AACtB,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,GAAY,SAAA,IAAa,IAAA,CAAK,GAAA,EAAA,GAAQ,SAAA,CAAA;AACtC,IAAA,IAAI,SAAA,GAAY,GAAG,SAAA,GAAY,CAAA;AACjC,EAAA;AAEA,EAAA,SAAS,WAAA,GAAoB;AAC3B,IAAA,IAAI,QAAA,IAAY,CAAA,IAAK,SAAA,IAAa,CAAA,EAAG;AACrC,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,GAAY,KAAK,GAAA,EAAA;AACjB,IAAA,OAAA,GAAU,UAAA,CAAW,SAAS,SAAS,CAAA;AACzC,EAAA;AAEA,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,OAAA;IACN,WAAA,EAAa,WAAA;IACb,aAAA,EAAe;AAAA,GAAA;AAGjB,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,IAAI,IAAA,GAAO;AACT,QAAA,OAAO,cAAA,KAAmB,SAAY,cAAA,GAAiB,MAAA;AACzD,MAAA,CAAA;AACA,MAAA;AAAA,KAAA;AAEF,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AAsBO,SAAS,kBAAA,GAAsC;AACpD,EAAA,IAAI,SAAuB,EAAA;AAC3B,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAA;AACtB,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAA;AAEnB,EAAA,SAAS,MAAA,GAAe;AACtB,IAAA,MAAM,QAAA,GAAW,CAAC,GAAG,MAAM,CAAA;AAC3B,IAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,MAAA,EAAA,CAAG,QAAQ,CAAA;AACb,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,QAAQ,EAAA,EAAkB;AACjC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAC3B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAClB,IAAA;AACA,IAAA,MAAA,GAAS,OAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AACzC,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,KAAA,CACP,SACA,IAAA,EACQ;AACR,IAAA,MAAM,EAAA,GAAK,WAAW,WAAW,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,SAAA;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,IAAY,GAAA;AAEnC,IAAA,MAAM,KAAA,GAAoB;AACxB,MAAA,EAAA;AACA,MAAA,OAAA;AACA,MAAA,OAAA;AACA,MAAA,QAAA;AACA,MAAA,SAAA,EAAW,KAAK,GAAA;AAAI,KAAA;AAGtB,IAAA,MAAA,GAAS,CAAC,GAAG,MAAA,EAAQ,KAAK,CAAA;AAC1B,IAAA,MAAA,EAAA;AAEA,IAAA,IAAI,WAAW,CAAA,EAAG;AAChB,MAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,OAAA,CAAQ,EAAE,GAAG,QAAQ,CAAA;AACpD,MAAA,MAAA,CAAO,GAAA,CAAI,IAAI,KAAK,CAAA;AACtB,IAAA;AAEA,IAAA,OAAO,EAAA;AACT,EAAA;AAEA,EAAA,SAAS,UAAU,EAAA,EAA6D;AAC9E,IAAA,SAAA,CAAU,IAAI,EAAE,CAAA;AAChB,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AACrB,IAAA,CAAA;AACF,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,IAAI,MAAA,GAAS;AACX,MAAA,OAAO,MAAA;AACT,IAAA,CAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACxMO,IAAM,gBAAgB,GAAA,CAAI;EAC/B,IAAA,EAAM,4IAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,OAAA,EAAS,sCAAA;MACT,OAAA,EACE,iGAAA;MACF,KAAA,EACE,uFAAA;MACF,OAAA,EACE;AAAA;AACJ,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;;;ACCD,IAAM,YAAA,GAAqBuC,iCAAwC,IAAI,CAAA;AAEvE,SAAS,eAAA,GAAqC;AAC5C,EAAA,MAAM,GAAA,GAAYA,8BAAW,YAAY,CAAA;AACzC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAClE,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAUO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAA,EAAgC;AAC9D,EAAA,MAAM,UAAA,GAAmBA,0BAA+B,IAAI,CAAA;AAC5D,EAAA,IAAI,UAAA,CAAW,YAAY,IAAA,EAAM;AAC/B,IAAA,UAAA,CAAW,UAAU,kBAAA,EAAA;AACvB,EAAA;AAEA,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO,EAAE,OAAA,EAAS,UAAA,CAAW,OAAA,EAAA,CAAA;IAC7B;AAAC,GAAA;AAGH,EAAA,OAAaA,iCAAc,YAAA,CAAa,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ,CAAA;AAC5E;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAerB,SAAS,QAAA,GAA2B;AACzC,EAAA,MAAM,EAAE,OAAA,EAAA,GAAY,eAAA,EAAA;AACpB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAoC,QAAQ,MAAM,CAAA;AAE9E,EAAAA,6BAAU,MAAM;AAEpB,IAAA,SAAA,CAAU,QAAQ,MAAM,CAAA;AACxB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AACzC,IAAA,OAAO,KAAA;EACT,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO;AACL,IAAA,KAAA,EAAO,OAAA,CAAQ,KAAA;AACf,IAAA,OAAA,EAAS,OAAA,CAAQ,OAAA;AACjB,IAAA;AAAA,GAAA;AAEJ;AAWO,IAAM,KAAA,GAAcA,kBAAA,CAAA,UAAA;EACzB,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAA,EAAU,cAAc,YAAA,EAAc,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACxF,IAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;MAChB,MAAM,WAAA,CAAY,EAAE,OAAA,EAAS,KAAA,CAAM,SAAS,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;MACtE,CAAC,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,QAAQ;AAAA,KAAA;AAI1B,IAAAA,6BAAU,MAAM;AACpB,MAAA,GAAA,CAAI,UAAA,EAAA;AACJ,MAAA,OAAO,MAAM,IAAI,UAAA,EAAA;IACnB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAwC;AAChE,MAAA,GAAA,CAAI,UAAA,EAAA;AACJ,MAAA,YAAA,GAAe,CAAC,CAAA;AAClB,IAAA,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAwC;AAChE,MAAA,GAAA,CAAI,WAAA,EAAA;AACJ,MAAA,YAAA,GAAe,CAAC,CAAA;AAClB,IAAA,CAAA;AAEA,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,cAAc,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,GAAG,SAAS,CAAA;AAClE,QAAA,GAAG,GAAA,CAAI,SAAA;QACP,YAAA,EAAc,gBAAA;QACd,YAAA,EAAc,gBAAA;QACd,GAAG;AAAA,OAAA;AAEC,MAAAA,kBAAA,CAAA,aAAA,CAAc,OAAO,EAAE,SAAA,EAAW,QAAA,EAAA,EAAY,MAAM,OAAO,CAAA;AACjE,MAAA,QAAA;MACA,SAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;UACE,IAAA,EAAM,QAAA;UACN,SAAA,EAAW,UAAA;UACX,OAAA,EAAS,MAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;UACjC,YAAA,EAAc;AAAA,SAAA;AAEhB,QAAA;AAAA;AACF,KAAA;AAEN,EAAA;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AAQb,IAAM,OAAA,GAAgBA,kBAAA,CAAA,UAAA;AAC3B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAA,GAAY,QAAA,EAAA;AAE5B,IAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,qFAAA;AACA,UAAA;AAAA,SAAA;QAEF,GAAG;AAAA,OAAA;MAEL,MAAA,CAAO,GAAA;QAAI,CAAC,KAAA,KACJA,iCAAc,KAAA,EAAO;AACzB,UAAA,GAAA,EAAK,KAAA,CAAM,EAAA;AACX,UAAA,KAAA;UACA,SAAA,EAAW;SACZ;AAAA;AACH,KAAA;AAEJ,EAAA;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;AC3If,SAAS,aAAA,CAAc,KAAA,GAAsB,EAAA,EAAgB;AAClE,EAAA,MAAM;IACJ,IAAA,EAAM,cAAA;IACN,WAAA,GAAc,KAAA;AACd,IAAA,YAAA;IACA,SAAA,GAAY,KAAA;IACZ,aAAA,GAAgB;GAAA,GACd,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,WAAW,aAAa,CAAA;AAE1C,EAAA,IAAI,SAAS,cAAA,IAAkB,WAAA;AAC/B,EAAA,IAAI,UAAA,GAAmD,IAAA;AAEvD,EAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,EAAM,MAAA,EAAA;AAEtB,EAAA,SAAS,QAAQ,KAAA,EAAgB;AAC/B,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,WAAA,GAAc;AACrB,IAAA,IAAI,eAAe,IAAA,EAAM;AACvB,MAAA,YAAA,CAAa,UAAU,CAAA;AACvB,MAAA,UAAA,GAAa,IAAA;AACf,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,IAAA,GAAO;AACd,IAAA,WAAA,EAAA;AACA,IAAA,OAAA,CAAQ,IAAI,CAAA;AACd,EAAA;AAEA,EAAA,SAAS,KAAA,GAAQ;AACf,IAAA,WAAA,EAAA;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AACf,EAAA;AAEA,EAAA,SAAS,aAAA,GAAgB;AACvB,IAAA,WAAA,EAAA;AACA,IAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA;AACF,IAAA;AACA,IAAA,UAAA,GAAa,WAAW,MAAM;AAC5B,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,UAAA,GAAa,IAAA;AACf,IAAA,CAAA,EAAG,aAAa,CAAA;AAClB,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe;IACnB,kBAAA,EAAoB;AAAA,GAAA;AAGtB,EAAA,MAAM,YAAA,GAAe;IACnB,IAAA,EAAM,SAAA;IACN,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC1GO,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,kGAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,GAAA,EAAK,yBAAA;MACL,KAAA,EAAO,yBAAA;MACP,MAAA,EAAQ,uBAAA;MACR,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACOD,IAAM,cAAA,GAAuBC,iCAA0C,IAAI,CAAA;AAE3E,SAAS,iBAAA,GAAyC;AAChD,EAAA,MAAM,GAAA,GAAYA,8BAAW,cAAc,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAC7E,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAeO,SAAS,OAAA,CAAQ;EACtB,IAAA,EAAM,cAAA;EACN,WAAA,GAAc,KAAA;AACd,EAAA,YAAA;AACA,EAAA,SAAA;EACA,aAAA,GAAgB,GAAA;AAChB,EAAA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAS,kBAAkB,WAAW,CAAA;AACpF,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,MAAA,GAAS,eAAe,cAAA,GAAiB,YAAA;AAC/C,EAAA,MAAM,QAAA,GAAiBA,0BAA6C,IAAI,CAAA;AAExE,EAAA,MAAM,gBAAA,GAAyBA,kBAAA,CAAA,WAAA;AAC7B,IAAA,CAAC,KAAA,KAAmB;AAClB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,KAAK,CAAA;AACvB,MAAA;AACA,MAAA,YAAA,GAAe,KAAK,CAAA;AACtB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,YAAY;AAAA,GAAA;AAG7B,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,MAAM,aAAA,CAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,cAAc,gBAAA,EAAkB,SAAA,EAAW,eAAe,CAAA;IAC9F,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAA,EAAW,aAAa;AAAA,GAAA;AAGrD,EAAA,MAAM,WAAA,GAAoBA,+BAAY,MAAM;AAC1C,IAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,MAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACrB,IAAA;AACF,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsBA,+BAAY,MAAM;AAC5C,IAAA,WAAA,EAAA;AACA,IAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA;AACF,IAAA;AACA,IAAA,QAAA,CAAS,OAAA,GAAU,WAAW,MAAM;AAClC,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACrB,IAAA,CAAA,EAAG,aAAa,CAAA;AAClB,EAAA,CAAA,EAAG,CAAC,WAAA,EAAa,aAAA,EAAe,gBAAgB,CAAC,CAAA;AAG3C,EAAAA,6BAAU,MAAM;AACpB,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC/B,MAAA;AACF,IAAA,CAAA;AACF,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,QAAQ,OAAA,EAAS,gBAAA,EAAkB,eAAe,WAAA,EAAA,CAAA;AACtE,IAAA,CAAC,GAAA,EAAK,MAAA,EAAQ,gBAAA,EAAkB,aAAA,EAAe,WAAW;AAAA,GAAA;AAG5D,EAAA,OAAaA,iCAAc,cAAA,CAAe,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,IAAO,QAAQ,CAAA;AAC9E;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAQf,IAAM,cAAA,GAAuBA,kBAAA,CAAA,UAAA;EAClC,CAAC,EAAE,cAAc,YAAA,EAAc,OAAA,EAAS,QAAQ,QAAA,EAAU,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAC5E,IAAA,MAAM,EAAE,GAAA,EAAK,OAAA,EAAS,aAAA,EAAe,WAAA,KAAgB,iBAAA,EAAA;AAErD,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAyC;AACjE,MAAA,aAAA,EAAA;AACA,MAAA,YAAA,GAAe,CAAC,CAAA;AAClB,IAAA,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAyC;AACjE,MAAA,WAAA,EAAA;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,YAAA,GAAe,CAAC,CAAA;AAClB,IAAA,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAyC;AAC5D,MAAA,aAAA,EAAA;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAyC;AAC3D,MAAA,WAAA,EAAA;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,MAAA,GAAS,CAAC,CAAA;AACZ,IAAA,CAAA;AAEA,IAAA,uBACExC,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,kBAAA,EAAkB,GAAA,CAAI,aAAa,kBAAkB,CAAA;QACrD,YAAA,EAAc,gBAAA;QACd,YAAA,EAAc,gBAAA;QACd,OAAA,EAAS,WAAA;QACT,MAAA,EAAQ,UAAA;QACP,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAUtB,IAAM,cAAA,GAAuBwC,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,IAAA,EAAM,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChD,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAA,GAAS,iBAAA,EAAA;AAEtB,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,0BACJxC,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;AACvB,QAAA,EAAA,EAAI,IAAI,YAAA,CAAa,EAAA;QACrB,SAAA,EAAW,EAAA,CAAG,uBAAuB,EAAE,IAAA,EAAM,QAAQ,GAAA,CAAI,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA;QAC/E,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAIL,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,OAAOiC,qBAAAA,CAAa,OAAA,EAAS,QAAA,CAAS,IAAI,CAAA;AAC5C,IAAA;AAEA,IAAA,OAAO,OAAA;AACT,EAAA;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;ACjKtB,SAAS,iBAAA,CAAkB,KAAA,GAA0B,EAAA,EAAoB;AAC9E,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,GAAe,KAAA,EAAA,GAAU,KAAA;AAExC,EAAA,IAAI,KAAA,GAAoB,MAAA;AACxB,EAAA,IAAI,OAAA,GAAU,YAAA;AAEd,EAAA,SAAS,IAAA,GAAO;AACd,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,KAAA,GAAQ,SAAA;AACV,IAAA,CAAA,MAAA,IAAW,UAAU,SAAA,EAAW;AAC9B,MAAA,KAAA,GAAQ,SAAA;AACV,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,KAAA,GAAQ;AACf,IAAA,IAAI,UAAU,SAAA,EAAW;AACvB,MAAA,KAAA,GAAQ,QAAA;AACV,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,IAAI,UAAU,SAAA,EAAW;AACvB,MAAA,KAAA,EAAA;IACF,CAAA,MAAO;AACL,MAAA,IAAA,EAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,UAAA,GAAsB;AAC7B,IAAA,OAAA,GAAU,CAAC,OAAA;AACX,IAAA,OAAO,OAAA;AACT,EAAA;AAEA,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,MAAM,GAAA,GAAsB;AAC1B,IAAA,IAAI,KAAA,GAAQ;AACV,MAAA,OAAO,KAAA;AACT,IAAA,CAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,IAAI,gBAAA,GAAmB;AACrB,MAAA,OAAO;QACL,SAAA,EAAW;UACT,YAAA,EAAc,KAAA,KAAU,YAAY,OAAA,GAAU;AAAA,SAAA;QAEhD,IAAA,EAAM;AACJ,UAAA,YAAA,EAAc,UAAU,QAAA,GAAW;AAAA;AACrC,OAAA;AAEJ,IAAA,CAAA;AACA,IAAA,IAAI,cAAA,GAAiB;AACnB,MAAA,OAAO;QACL,YAAA,EAAc;AAAA,OAAA;AAElB,IAAA;AAAA,GAAA;AAGF,EAAA,OAAO,GAAA;AACT;ACjGO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,8CAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,UAAA;MACJ,EAAA,EAAI,WAAA;MACJ,EAAA,EAAI,WAAA;MACJ,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,+HAAA;EACN,QAAA,EAAU;IACR,UAAA,EAAY;MACV,OAAA,EAAS,aAAA;MACT,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,UAAA,EAAY;AAAA;AAEhB,CAAC;AAEM,IAAM,kBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,kFAAA;EACN,QAAA,EAAU;IACR,UAAA,EAAY;MACV,OAAA,EAAS,aAAA;MACT,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,UAAA,EAAY;AAAA;AAEhB,CAAC;AC3BM,IAAM,WAAA,GAAoBQ,kBAAA,CAAA,UAAA;EAC/B,CACE;AACE,IAAA,GAAA;AACA,IAAA,MAAA;IACA,QAAA,GAAW,KAAA;AACX,IAAA,KAAA,EAAO,YAAA,GAAe,KAAA;IACtB,QAAA,GAAW,IAAA;AACX,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,GAAG,OAAO,CAAA,GAAUA,4BAAS,CAAC,CAAA;AACpC,IAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,WAAA,CAAY,MAAM,OAAA,CAAQ,CAAC,MAAM,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAA;AAElE,IAAA,MAAM,MAAA,GAAeA,kBAAA,CAAA,MAAA;AACnB,MAAA,iBAAA,CAAkB,EAAyB,KAAA,EAAO,YAAc,CAAU;AAAA,KAAA;AAE5E,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAGnB,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,uBACEzC,cAAAA;AAAC,QAAA,KAAA;AAAA,QAAA;AACC,UAAA,GAAA;AACA,UAAA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAA,EAAkB,+CAAA,EAAiD,SAAS,CAAA;AACzF,UAAA,GAAG,GAAA,CAAI,SAAA;UACP,GAAG,KAAA;AAEJ,UAAA,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCACb,QAAA,kBAAAA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAA,EAAsB,UAAA,aAAA,EAAW,GAChD;AAAA;AAAA,OAAA;AAGN,IAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,GAAA,CAAI,IAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,GAAA,CAAI,KAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,GAAA,CAAI,UAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,GAAA,CAAI,UAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,IAAI,KAAA,KAAU,SAAA;AAEhC,IAAA,uBACEC,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAA,EAAkB,cAAA,EAAgB,SAAS,CAAA;AACxD,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;QAEJ,QAAA,EAAA;0BAAAD,cAAAA;AAAC,YAAA,OAAA;AAAA,YAAA;cACC,SAAA,EAAU,eAAA;AACV,cAAA,GAAA;AACA,cAAA,MAAA;cACA,QAAA,EAAU,QAAA;cACV,KAAA,EAAO,YAAA;cACP,MAAA,EAAQ,UAAA;cACR,OAAA,EAAS;AAAA;AAAA,WAAA;AAIV,UAAA,QAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,eAAA,CAAgB,EAAE,UAAA,EAAY,SAAA,GAAY,QAAA,GAAW,SAAA,EAAW,CAAA,EAC9E,0BAAAA,cAAAA;AAAC,YAAA,QAAA;AAAA,YAAA;cACC,IAAA,EAAK,QAAA;cACL,SAAA,EAAU,mDAAA;cACV,OAAA,EAAS,gBAAA;AACR,cAAA,GAAG,IAAI,gBAAA,CAAiB,SAAA;AAExB,cAAA,QAAA,EAAA,YAAY,OAAA,GAAU;AAAA;AAAA,WAAA,EAE3B,CAAA;UAID,QAAA,oBACCA,eAAC,KAAA,EAAA,EAAI,WAAW,gBAAA,EAAA,EACd,0BAAAA,cAAAA;AAAC,YAAA,QAAA;AAAA,YAAA;cACC,IAAA,EAAK,QAAA;cACL,SAAA,EAAU,kDAAA;cACV,OAAA,EAAS,gBAAA;AACR,cAAA,GAAG,IAAI,gBAAA,CAAiB,IAAA;cAExB,QAAA,EAAA,GAAA,CAAI,gBAAA,CAAiB,IAAA,CAAK,YAAY;AAAA;AAAA,WAAA,EAE3C;AAAA;AAAA;AAAA,KAAA;AAIR,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACxFnB,SAAS,sBAAsB,KAAA,EAAiD;AACrF,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAA,GAAW,KAAA;AAE1B,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,kBAAkB,KAAA,EAA+C;AACxE,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,UAAA,GAChB,CAAA,EAAG,MAAM,IAAI,CAAA,EAAA,EAAK,KAAA,CAAM,WAAW,KACnC,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,EAAA,EAAK,MAAM,WAAW,CAAA,SAAA,CAAA;AAEvC,IAAA,OAAO;MACL,YAAA,EAAc;AAAA,KAAA;AAElB,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACzDO,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,YAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,GAAA,EAAK,aAAA;MACL,GAAA,EAAK,aAAA;MACL,GAAA,EAAK;AAAA;AACP,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,6CAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,OAAA,EAAS,8BAAA;MACT,OAAA,EAAS,8CAAA;MACT,OAAA,EAAS,oDAAA;MACT,OAAA,EAAS,uDAAA;MACT,WAAA,EAAa;AAAA;AACf,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,YAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,GAAA,EAAK,aAAA;MACL,GAAA,EAAK,aAAA;MACL,GAAA,EAAK;AAAA;AACP,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,uFAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,QAAA,EAAU,qBAAA;MACV,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,sDAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,KAAA;MACJ,EAAA,EAAI,KAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACjDM,IAAM,SAAA,GAAkB0C,kBAAA,CAAA,UAAA;EAC7B,CAAC,EAAE,OAAO,MAAA,GAAS,IAAI,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACpD,IAAA,MAAM,GAAA,GAAM,qBAAA,CAAsB,EAAE,KAAA,EAAO,QAAQ,CAAA;AAEnD,IAAA,uBACE1C,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA;AAC3C,QAAA,GAAG,GAAA,CAAI,SAAA;QACP,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,yBACdC,eAAAA;AAAC,UAAA,KAAA;AAAA,UAAA;AAEC,YAAA,SAAA,EAAW,gBAAA,CAAiB;AAC1B,cAAA,KAAA,EAAQ,KAAK,KAAA,IAA2E;aACzF,CAAA;YAEA,QAAA,EAAA;cAAA,IAAA,CAAK,IAAA,oBAAQD,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAY,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;8BACpDA,cAAAA,CAAC,OAAA,EAAI,SAAA,EAAU,sBAAsB,QAAA,EAAA,IAAA,CAAK,OAAM,CAAA;8BAChDA,cAAAA,CAAC,OAAA,EAAI,SAAA,EAAU,iCAAiC,QAAA,EAAA,IAAA,CAAK,OAAM;AAAA;AAAA,WAAA;UAPtD,IAAA,CAAK;SASb;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAYjB,IAAM,WAAA,GAAoB0C,kBAAA,CAAA,UAAA;EAC/B,CAAC,EAAE,OAAO,GAAA,GAAM,GAAA,EAAK,MAAM,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACxD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,IAAI,CAAA,EAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA;AAE9D,IAAA,uBACE1C,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,mBAAA,CAAoB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;QACtD,IAAA,EAAK,aAAA;QACL,eAAA,EAAe,KAAA;QACf,eAAA,EAAe,CAAA;QACf,eAAA,EAAe,GAAA;QACd,GAAG,KAAA;AAEJ,QAAA,QAAA,kBAAAA,cAAAA;AAAC,UAAA,KAAA;AAAA,UAAA;YACC,SAAA,EAAU,+CAAA;AACV,YAAA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA;AAAI;AAAA;AAChC;AAAA,KAAA;AAGN,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAUnB,IAAM,YAAA,GAAqB0C,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,MAAA,EAAQ,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,MAAM,MAAM,qBAAA,CAAsB,EAAE,OAAO,EAAA,EAAI,QAAQ,CAAA;AAEvD,IAAA,uBACE1C,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA;QAC3C,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,0BACfC,eAAAA;AAAC,UAAA,KAAA;AAAA,UAAA;AAEC,YAAA,SAAA,EAAW,iBAAA,CAAkB;cAC3B,KAAA,EAAO,KAAA,CAAM,aAAa,UAAA,GAAa;aACxC,CAAA;YACA,GAAG,GAAA,CAAI,kBAAkB,KAAK,CAAA;YAE/B,QAAA,EAAA;8BAAAD,cAAAA,CAAC,QAAA,EAAK,SAAA,EAAU,YAAY,QAAA,EAAA,KAAA,CAAM,MAAK,CAAA;8BACvCA,cAAAA,CAAC,QAAA,EAAK,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,CAAM,MAAK,CAAA;cACzC,CAAC,KAAA,CAAM,UAAA,oBAAAA,cAAAA,CACL,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA,WAAA;UATnD,KAAA,CAAM;SAYd;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;;ACxEpB,SAAS,kBAAkB,KAAA,EAAyC;AACzE,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,GAAe,CAAA,EAAG,aAAA,EAAe,YAAA,GAAe,KAAA;AAEhE,EAAA,MAAM,cAAc,MAAA,CAAO,MAAA;AAC3B,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAA;AAEtB,EAAA,MAAM,KAAA,GAA0B;IAC9B,YAAA,EAAc,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,YAAA,EAAc,WAAA,GAAc,CAAC,CAAC,CAAA;AACjE,IAAA,WAAA;AACA,IAAA;AAAA,GAAA;AAGF,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,IAAI,WAAA,IAAe,GAAG,OAAO,CAAA;AAC7B,IAAA,OAAO,KAAA,CAAM,gBAAgB,WAAA,GAAc,CAAA,CAAA;AAC7C,EAAA;AAEA,EAAA,SAAS,IAAA,GAAO;AACd,IAAA,IAAI,KAAA,CAAM,YAAA,GAAe,WAAA,GAAc,CAAA,EAAG;AACxC,MAAA,KAAA,CAAM,YAAA,EAAA;AACN,MAAA,GAAA,CAAI,WAAW,cAAA,EAAA;AACf,MAAA,aAAA,GAAgB,MAAM,YAAY,CAAA;IACpC,CAAA,MAAO;AAEL,MAAA,UAAA,IAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,IAAA,GAAO;AACd,IAAA,IAAI,KAAA,CAAM,eAAe,CAAA,EAAG;AAC1B,MAAA,KAAA,CAAM,YAAA,EAAA;AACN,MAAA,GAAA,CAAI,WAAW,cAAA,EAAA;AACf,MAAA,aAAA,GAAgB,MAAM,YAAY,CAAA;AACpC,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,KAAK,KAAA,EAAe;AAC3B,IAAA,IAAI,KAAA,IAAS,CAAA,IAAK,KAAA,GAAQ,WAAA,EAAa;AACrC,MAAA,KAAA,CAAM,YAAA,GAAe,KAAA;AACrB,MAAA,GAAA,CAAI,WAAW,cAAA,EAAA;AACf,MAAA,aAAA,GAAgB,MAAM,YAAY,CAAA;AACpC,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,eAAe,IAAA,EAAoB;AAC1C,IAAA,MAAM,UAAU,KAAA,CAAM,YAAA;AACtB,IAAA,IAAI,SAAA,CAAU,IAAI,OAAO,CAAA,IAAK,UAAU,GAAA,CAAI,OAAO,MAAM,IAAA,EAAM;AAC7D,MAAA,SAAA,CAAU,OAAO,OAAO,CAAA;IAC1B,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,GAAA,CAAI,SAAS,IAAI,CAAA;AAC7B,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,YAAA,GAA6D;AACpE,IAAA,MAAM,SAAuD,EAAA;AAC7D,IAAA,KAAA,MAAW,CAAC,KAAA,EAAO,IAAI,CAAA,IAAK,SAAA,CAAU,SAAA,EAAW;AAC/C,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AAC7B,IAAA;AACA,IAAA,OAAO,MAAA,CAAO,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAK,CAAA;AAChD,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,UAAU,GAAG,CAAC,CAAA,KAAM;AACxB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,IAAA,EAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,IAAA,EAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,KAAM;AACpB,MAAA,CAAA,CAAE,cAAA,EAAA;AACJ,IAAA;AAAA,GAAA;AAGF,EAAA,SAAS,iBAAA,GAAuF;AAC9F,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AACvC,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;MACN,sBAAA,EAAwB,OAAA;MACxB,YAAA,EAAc,CAAA,MAAA,EAAS,MAAM,YAAA,GAAe,CAAC,OAAO,WAAW,CAAA,EAAA,EAAK,KAAA,EAAO,IAAA,IAAQ,SAAS,CAAA,MAAA,CAAA;MAC5F,WAAA,EAAa;AAAA,KAAA;AAEjB,EAAA;AAEA,EAAA,MAAM,GAAA,GAAsB;AAC1B,IAAA,KAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA,EAAU,cAAA,EAAA;AACV,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAGF,EAAA,OAAO,GAAA;AACT;ACpJO,IAAM,iBAAA,GAAmC;EAC9C,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,gBAAA,EAAkB,QAAA,EAAU,wBAAA,EAAA;AAC5C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,gBAAA,EAAkB,QAAA,EAAU,wBAAA,EAAA;AAC5C,IAAA,UAAA,EAAY,EAAE,QAAA,EAAU,yBAAA,EAA2B,QAAA,EAAU,qBAAA,EAAA;AAC7D,IAAA,aAAA,EAAe,EAAE,QAAA,EAAU,4BAAA,EAA8B,QAAA,EAAU,mBAAA,EAAA;AACnE,IAAA,OAAA,EAAS,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,uBAAA;AAAwB;AAEnF;AAEO,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,sDAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,OAAA,EAAS,WAAA;MACT,OAAA,EAAS,WAAA;MACT,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAML,uBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,kDAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,GAAA,EAAK,cAAA;MACL,MAAA,EAAQ,cAAA;MACR,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;AAEM,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,yEAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,MAAA,EAAQ,2BAAA;MACR,IAAA,EAAM,+BAAA;MACN,QAAA,EAAU,6BAAA;MACV,KAAA,EAAO,2BAAA;MACP,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACzBM,IAAM,WAAA,GAAoBgD,kBAAA,CAAA,UAAA;EAC/B,CACE;AACE,IAAA,MAAA;AACA,IAAA,YAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,IAAA;AACA,IAAA;AAAA,GAAA,EAEF,GAAA,KACG;AACH,IAAA,MAAM,GAAG,OAAO,CAAA,GAAUA,4BAAS,CAAC,CAAA;AACpC,IAAA,MAAM,WAAW,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,IAAI,CAAC,CAAA;AAE3C,IAAA,MAAM,MAAA,GAAeA,kBAAA,CAAA,MAAA;AACnB,MAAA,iBAAA,CAAkB,EAAE,MAAA,EAAQ,YAAA,EAAc,aAAA,EAAe,YAAY;AAAA,KAAA;AAEvE,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,IAAA,MAAM,mBAAmB,EAAA,CAAG,mBAAA,CAAoB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AACpE,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,YAAY,CAAA;AAClD,IAAA,MAAM,cAAA,GAAiB,IAAI,iBAAA,EAAA;AAC3B,IAAA,MAAM,aAAA,GAAgB,qBAAA,CAAsB,GAAA,CAAI,gBAAgB,CAAA;AAEhE,IAAA,SAAS,UAAA,GAAa;AACpB,MAAA,GAAA,CAAI,IAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA;AAEA,IAAA,SAAS,UAAA,GAAa;AACpB,MAAA,GAAA,CAAI,IAAA,EAAA;AACJ,MAAA,QAAA,EAAA;AACF,IAAA;AAEA,IAAA,SAAS,eAAe,IAAA,EAAoB;AAC1C,MAAA,GAAA,CAAI,eAAe,IAAI,CAAA;AACvB,MAAA,QAAA,EAAA;AACF,IAAA;AAEA,IAAA,MAAM,eAAe,GAAA,CAAI,KAAA,CAAM,UAAU,GAAA,CAAI,GAAA,CAAI,MAAM,YAAY,CAAA;AAEnE,IAAA,uBACE1C,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,gBAAA;QACX,SAAA,EAAW,aAAA;QACX,QAAA,EAAU,CAAA;QAGV,QAAA,EAAA;0BAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWL,oBAAAA,CAAoB,EAAE,QAAA,EAAU,KAAA,EAAO,CAAA,EACrD,QAAA,kBAAAK,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,+CAAA;AACV,cAAA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,QAAA,GAAW,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA,WAAA,EAE7C,CAAA;AAGA,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDACb,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACZ,QAAA,EAAA;AAAA,cAAA,YAAA,oBACCD,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,sBAAA,CAAuB,EAAE,IAAA,EAAM,YAAA,CAAa,MAAM,CAAA,EAChE,QAAA,EAAA,YAAA,CAAa,MAChB,CAAA;AAEF,8BAAAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCACb,QAAA,EAAA;AAAA,gBAAA,GAAA,CAAI,MAAM,YAAA,GAAe,CAAA;AAAE,gBAAA,KAAA;AAAI,gBAAA,GAAA,CAAI,KAAA,CAAM;AAAA,eAAA,EAC5C;AAAA,aAAA,EACF,CAAA;4BACAD,cAAAA;AAAC,cAAA,QAAA;AAAA,cAAA;gBACC,IAAA,EAAK,QAAA;gBACL,OAAA,EAAS,MAAM,eAAe,WAAW,CAAA;gBACzC,SAAA,EAAW,EAAA;AACT,kBAAA,6CAAA;AACA,kBAAA,YAAA,GACI,+BAAA,GACA;AAAA,iBAAA;gBAEN,cAAA,EAAc,YAAA;gBACd,YAAA,EAAW,iBAAA;AAEV,gBAAA,QAAA,EAAA,eAAe,YAAA,GAAe;AAAA;AAAA;AACjC,WAAA,EACF,CAAA;AAGA,0BAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAA4B,GAAG,cAAA,EAC3C,QAAA,EAAA,YAAA,KACE,WAAA,GACG,WAAA,CAAY,YAAA,EAAc,GAAA,CAAI,KAAA,CAAM,YAAY,CAAA,mBAAAA,cAAAA,CAC/C,KAAA,EAAA,EAAI,uBAAA,EAAyB,EAAE,MAAA,EAAQ,YAAA,CAAa,OAAA,EAAA,EAAW,CAAA,CAAA,EACxE,CAAA;AAGA,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDACb,QAAA,EAAA;4BAAAD,cAAAA;AAAC,cAAA,QAAA;AAAA,cAAA;gBACC,IAAA,EAAK,QAAA;gBACL,OAAA,EAAS,UAAA;gBACT,QAAA,EAAU,GAAA,CAAI,MAAM,YAAA,KAAiB,CAAA;gBACrC,SAAA,EAAU,wHAAA;gBACV,YAAA,EAAW,gBAAA;gBACZ,QAAA,EAAA;AAAA;AAAA,aAAA;4BAGDA,cAAAA;AAAC,cAAA,QAAA;AAAA,cAAA;gBACC,IAAA,EAAK,QAAA;gBACL,OAAA,EAAS,UAAA;gBACT,SAAA,EAAU,gHAAA;AACV,gBAAA,YAAA,EACE,IAAI,KAAA,CAAM,YAAA,KAAiB,IAAI,KAAA,CAAM,WAAA,GAAc,IAC/C,UAAA,GACA,YAAA;AAGL,gBAAA,QAAA,EAAA,IAAI,KAAA,CAAM,YAAA,KAAiB,IAAI,KAAA,CAAM,WAAA,GAAc,IAAI,UAAA,GAAa;AAAA;AAAA;AACvE,WAAA,EACF;AAAA;AAAA;AAAA,KAAA;AAGN,EAAA;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACxGnB,SAAS,uBAAuB,KAAA,EAAmD;AACxF,EAAA,MAAM;IACJ,KAAA,EAAO,YAAA;AACP,IAAA,aAAA;IAEA,QAAA,GAAW;GAAA,GACT,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,WAAW,cAAc,CAAA;AAE3C,EAAA,IAAI,cAAA,GAA2B,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GACrD,CAAC,GAAG,YAAY,CAAA,GAChB,YAAA,GACE,CAAC,YAAY,IACb,EAAA;AACN,EAAA,IAAI,MAAA,GAAS,KAAA;AAEb,EAAA,MAAM,QAAQ,EAAE,cAAA,EAAgB,CAAC,GAAG,cAAc,GAAG,MAAA,EAAA;AAErD,EAAA,SAAS,QAAQ,KAAA,EAAgB;AAC/B,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,KAAA,CAAM,MAAA,GAAS,KAAA;AACjB,EAAA;AAEA,EAAA,SAAS,OAAO,KAAA,EAAe;AAC7B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,OAAA,CAAQ,KAAK,CAAA;AAC1C,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,cAAA,CAAe,MAAA,CAAO,OAAO,CAAC,CAAA;MAChC,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,KAAK,KAAK,CAAA;AAC3B,MAAA;AACA,MAAA,KAAA,CAAM,cAAA,GAAiB,CAAC,GAAG,cAAc,CAAA;AACzC,MAAA,aAAA,GAAgB,CAAC,GAAG,cAAc,CAAC,CAAA;IACrC,CAAA,MAAO;AACL,MAAA,cAAA,GAAiB,CAAC,KAAK,CAAA;AACvB,MAAA,KAAA,CAAM,cAAA,GAAiB,CAAC,KAAK,CAAA;AAC7B,MAAA,aAAA,GAAgB,KAAK,CAAA;AACrB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA;AACF,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe;IACnB,eAAA,EAAiB,MAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,MAAM,YAAA,GAAoD;IACxD,IAAA,EAAM,SAAA;IACN,EAAA,EAAI,SAAA;AACJ,IAAA,GAAI,QAAA,GAAW,EAAE,sBAAA,EAAwB,IAAA,KAAS;AAAC,GAAA;AAGrD,EAAA,SAAS,eAAe,KAAA,EAAe;AACrC,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;MACN,eAAA,EAAiB,cAAA,CAAe,SAAS,KAAK,CAAA;MAC9C,YAAA,EAAc;AAAA,KAAA;AAElB,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;IAC3C,CAAC,IAAA,CAAK,MAAM,GAAG,MAAM;AACnB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,KAAK,GAAG,MAAM;AAClB,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AACjB,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,KAAK,GAAG,MAAM;AAClB,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AACjB,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,SAAS,GAAG,MAAM;AACtB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAA,CAAQ,IAAI,CAAA;AACd,MAAA;AACF,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,OAAO,GAAG,MAAM;AACpB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAA,CAAQ,IAAI,CAAA;AACd,MAAA;AACF,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,aAAA,GAAgB,sBAAsB,gBAAgB,CAAA;AAE5D,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;AACA,IAAA,MAAA;IACA,IAAA,EAAM,MAAM,QAAQ,IAAI,CAAA;IACxB,KAAA,EAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AClJO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,kHAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,gCAAA;MACJ,EAAA,EAAI,mCAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,kEAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,0BAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;;;ACJD,IAAM,uBAAA,GAAgC4C,iCAAmD,IAAI,CAAA;AAuBtF,SAAS,gBAAA,CAAiB;EAC/B,KAAA,EAAO,eAAA;AACP,EAAA,aAAA;AACA,EAAA,OAAA;EACA,QAAA,GAAW,KAAA;EACX,WAAA,GAAc,oBAAA;AACd,EAAA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAA,GAC/C,kBACA,eAAA,GACE,CAAC,eAAe,CAAA,GAChB,EAAA;AAEN,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,4BAAmB,aAAa,CAAA;AAClF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAChD,EAAA,MAAM,YAAA,GAAqBA,0BAAuB,IAAI,CAAA;AAEtD,EAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,IAAA,CAAC,GAAA,KAA2B;AAC1B,MAAA,MAAM,MAAM,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,CAAA;AAC3C,MAAA,iBAAA,CAAkB,GAAG,CAAA;AACrB,MAAA,aAAA,GAAgB,GAAG,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,aAAa;AAAA,GAAA;AAGhB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,sBAAA,CAAuB;MACrB,KAAA,EAAO,QAAA,GAAW,cAAA,GAAiB,cAAA,CAAe,CAAC,CAAA;MACnD,aAAA,EAAe,iBAAA;AACf,MACA;KACD,CAAA;IACH,CAAC,cAAA,EAAgB,iBAAA,EAAmB,OAAA,EAAS,QAAQ;AAAA,GAAA;AAGvD,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,OAAA,CAAQ,GAAG,CAAA;AACxC,QAAA,MAAM,IAAA,GAAO,KAAA,IAAS,CAAA,GAClB,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAA,GACtC,CAAC,GAAG,gBAAgB,GAAG,CAAA;AAC3B,QAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,QAAA,aAAA,GAAgB,IAAI,CAAA;MACtB,CAAA,MAAO;AACL,QAAA,iBAAA,CAAkB,CAAC,GAAG,CAAC,CAAA;AACvB,QAAA,aAAA,GAAgB,GAAG,CAAA;AACnB,QAAA,SAAA,CAAU,KAAK,CAAA;AACjB,MAAA;AACF,IAAA,CAAA;IACA,CAAC,QAAA,EAAU,gBAAgB,aAAa;AAAA,GAAA;AAG1C,EAAA,MAAM,kBAAA,GAA2BA,+BAAY,MAAM;AACjD,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAC3B,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,IAAA,CAAC,CAAA,KAA2B;AAC1B,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,SAAA,CAAU,KAAK,CAAA;AACjB,MAAA,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC7C,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAC3B,MAAA,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,CAAA,CAAE,QAAQ,SAAA,EAAW;AACvD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,SAAA,CAAU,IAAI,CAAA;AAChB,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,MAAM;AAAA,GAAA;AAIH,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,SAAS,mBAAmB,CAAA,EAAe;AACzC,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC5E,QAAA,SAAA,CAAU,KAAK,CAAA;AACjB,MAAA;AACF,IAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;EAC3E,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,GAAA;AACA,MAAA,MAAA;MACA,OAAA,EAAS,SAAA;MACT,MAAA,EAAQ,YAAA;AACR,MAAA,OAAA;AACA,MAAA;AAAA,KAAA,CAAA;AAEF,IAAA,CAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,QAAQ;AAAA,GAAA;AAI/C,EAAA,MAAM,OAAA,GAAgBA,2BAAQ,MAAM;AAClC,IAAA,MAAM,MAAA,uBAAa,GAAA,EAAA;AACnB,IAAA,MAAM,YAA8B,EAAA;AACpC,IAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,MAAA,IAAI,IAAI,KAAA,EAAO;AACb,QAAA,MAAM,OAAO,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,KAAK,KAAK,EAAA;AACtC,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,QAAA,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,IAAI,CAAA;MAC5B,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AACpB,MAAA;AACF,IAAA;AACA,IAAA,OAAO,EAAE,QAAQ,SAAA,EAAA;EACnB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,YAAA,GAAe,eAAe,MAAA,GAAS,CAAA,GACzC,QACG,MAAA,CAAO,CAAC,CAAA,KAAM,cAAA,CAAe,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC,CAAA,CAC9C,IAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA,CAClB,IAAA,CAAK,IAAI,CAAA,GACZ,WAAA;AAEJ,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,uBAAA,CAAwB,QAAA;AACxB,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,KAAK,YAAA,EAAc,SAAA,EAAW,EAAA,CAAG,6CAAA,EAA+C,SAAS,CAAA,EAAA;;AAErF,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;UACE,IAAA,EAAM,QAAA;AACN,UAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;UACvB,eAAA,EAAiB,MAAA;UACjB,eAAA,EAAiB,GAAA,CAAI,aAAa,eAAe,CAAA;UACjD,eAAA,EAAiB,GAAA,CAAI,aAAa,eAAe,CAAA;AACjD,UAAA,SAAA,EAAW,gBAAA,EAAA;UACX,OAAA,EAAS,kBAAA;UACT,SAAA,EAAW;AAAA,SAAA;QAEPA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,MAAM,YAAY,CAAA;AACxC,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,aAAA,EAAe,QAAQ,SAAA,EAAW,MAAA,IAAU,QAAQ;AAAA,OAAA;;MAGpF,MAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,QAAA,IAAA;AACA,QAAA;AACE,UAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;AACvB,UAAA,EAAA,EAAI,IAAI,YAAA,CAAa,EAAA;AACrB,UAAA,GAAI,QAAA,GAAW,EAAE,sBAAA,EAAwB,IAAA,KAAS,EAAA;UAClD,SAAA,EACE;AAAA,SAAA;AAGJ,QAAA,GAAG,CAAC,GAAG,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,GAAA;UAAI,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,KAC1CA,kBAAA,CAAA,aAAA;AACJ,YAAA,IAAA;YACA,EAAE,GAAA,EAAK,KAAA,EAAO,IAAA,EAAM,cAAA,EAAA;AACd,YAAAA,kBAAA,CAAA,aAAA;AACJ,cAAA,KAAA;AACA,cAAA,EAAE,WAAW,iEAAA,EAAA;AACb,cAAA;AAAA,aAAA;AAEI,YAAAA,kBAAA,CAAA,aAAA;AACJ,cAAA,IAAA;cACA,EAAE,IAAA,EAAM,OAAA,EAAS,YAAA,EAAc,KAAA,EAAA;cAC/B,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AACnB,gBAAA,MAAM,QAAA,GAAW,GAAA,CAAI,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA;AAC7C,gBAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AACpD,gBAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,kBAAA,IAAA;AACA,kBAAA;AACE,oBAAA,GAAA,EAAK,GAAA,CAAI,KAAA;oBACT,GAAG,QAAA;AACH,oBAAA,SAAA,EAAW,eAAe,EAAE,QAAA,EAAU,UAAA,GAAa,MAAA,GAAS,SAAS,CAAA;oBACrE,OAAA,EAAS,MAAM,YAAA,CAAa,GAAA,CAAI,KAAK;AAAA,mBAAA;AAEvC,kBAAA,UAAA,IAAoBA,iCAAc,MAAA,EAAQ,EAAE,aAAA,EAAe,MAAA,IAAU,QAAQ,CAAA;kBACvEA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,KAAK;AAAA,iBAAA;cAE/C,CAAC;AAAA;AACH;AACF,SAAA;AAGF,QAAA,GAAG,OAAA,CAAQ,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AAChC,UAAA,MAAM,QAAA,GAAW,GAAA,CAAI,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA;AAC7C,UAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AACpD,UAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,YAAA,IAAA;AACA,YAAA;AACE,cAAA,GAAA,EAAK,GAAA,CAAI,KAAA;cACT,GAAG,QAAA;AACH,cAAA,SAAA,EAAW,eAAe,EAAE,QAAA,EAAU,UAAA,GAAa,MAAA,GAAS,SAAS,CAAA;cACrE,OAAA,EAAS,MAAM,YAAA,CAAa,GAAA,CAAI,KAAK;AAAA,aAAA;AAEvC,YAAA,UAAA,IAAoBA,iCAAc,MAAA,EAAQ,EAAE,aAAA,EAAe,MAAA,IAAU,QAAQ,CAAA;YACvEA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,KAAK;AAAA,WAAA;QAE/C,CAAC;AAAA;AACH;AACJ,GAAA;AAEJ;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AC7MxB,SAAS,sBAAsB,KAAA,EAAiD;AACrF,EAAA,MAAM;AACJ,IAAA,KAAA,EAAO,YAAA,GAAe,EAAA;AACtB,IAAA,aAAA;AACA,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,WAAW,aAAa,CAAA;AAE1C,EAAA,IAAI,eAAA,GAAkB,YAAA;AACtB,EAAA,IAAI,MAAA,GAAS,KAAA;AAEb,EAAA,MAAM,KAAA,GAAQ,EAAE,eAAA,EAAiB,MAAA,EAAA;AAEjC,EAAA,SAAS,QAAQ,KAAA,EAAgB;AAC/B,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,KAAA,CAAM,MAAA,GAAS,KAAA;AACjB,EAAA;AAEA,EAAA,SAAS,OAAO,KAAA,EAAe;AAC7B,IAAA,eAAA,GAAkB,KAAA;AAClB,IAAA,KAAA,CAAM,eAAA,GAAkB,KAAA;AACxB,IAAA,aAAA,GAAgB,KAAK,CAAA;AACrB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACf,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe;IACnB,eAAA,EAAiB,MAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,MAAM,YAAA,GAAe;IACnB,IAAA,EAAM,SAAA;IACN,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,eAAe,KAAA,EAAe;AACrC,IAAA,MAAM,UAAU,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AACtD,IAAA,MAAM,IAAA,GAAO;MACX,IAAA,EAAM,QAAA;AACN,MAAA,eAAA,EAAiB,eAAA,KAAoB,KAAA;MACrC,YAAA,EAAc;AAAA,KAAA;AAEhB,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,aAAA,EAAe,MAAA,EAAA;AACnC,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;IAC3C,CAAC,IAAA,CAAK,MAAM,GAAG,MAAM;AACnB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,KAAK,GAAG,MAAM;AAClB,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AACjB,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,KAAK,GAAG,MAAM;AAClB,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AACjB,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,SAAS,GAAG,MAAM;AACtB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAA,CAAQ,IAAI,CAAA;AACd,MAAA;AACF,IAAA,CAAA;IACA,CAAC,IAAA,CAAK,OAAO,GAAG,MAAM;AACpB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAA,CAAQ,IAAI,CAAA;AACd,MAAA;AACF,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,aAAA,GAAgB,sBAAsB,gBAAgB,CAAA;AAE5D,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;AACA,IAAA,MAAA;IACA,IAAA,EAAM,MAAM,QAAQ,IAAI,CAAA;IACxB,KAAA,EAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,IAAA,gBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACrIO,IAAM,0BAA0B,GAAA,CAAI;EACzC,IAAA,EAAM,kHAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,gCAAA;MACJ,EAAA,EAAI,mCAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAMhD,kBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,kEAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,0BAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,uEAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,OAAA,EAAS,4BAAA;MACT,MAAA,EAAQ;AAAA;AACV,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;;;ACjBD,IAAM,sBAAA,GAA+BiD,iCAAkD,IAAI,CAAA;AAsBpF,SAAS,eAAA,CAAgB;EAC9B,KAAA,EAAO,eAAA;AACP,EAAA,aAAA;AACA,EAAA,QAAA;EACA,WAAA,GAAc,mBAAA;AACd,EAAA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAS,mBAAmB,EAAE,CAAA;AAClF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAChD,EAAA,MAAM,YAAA,GAAqBA,0BAAuB,IAAI,CAAA;AAEtD,EAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,kBAAA,CAAmB,GAAG,CAAA;AACtB,MAAA,aAAA,GAAgB,GAAG,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,aAAa;AAAA,GAAA;AAGhB,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,qBAAA,CAAsB;MACpB,KAAA,EAAO,eAAA;MACP,aAAA,EAAe,iBAAA;AACf,MAAA;KACD,CAAA;IACH,CAAC,eAAA,EAAiB,mBAAmB,QAAQ;AAAA,GAAA;AAG/C,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,kBAAA,CAAmB,GAAG,CAAA;AACtB,MAAA,aAAA,GAAgB,GAAG,CAAA;AACnB,MAAA,SAAA,CAAU,KAAK,CAAA;AACjB,IAAA,CAAA;AACA,IAAA,CAAC,aAAa;AAAA,GAAA;AAGhB,EAAA,MAAM,kBAAA,GAA2BA,+BAAY,MAAM;AACjD,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAC3B,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,IAAA,CAAC,CAAA,KAA2B;AAC1B,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,SAAA,CAAU,KAAK,CAAA;AACjB,MAAA,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC7C,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAC3B,MAAA,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,CAAA,CAAE,QAAQ,SAAA,EAAW;AACvD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,SAAA,CAAU,IAAI,CAAA;AAChB,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AACA,IAAA,CAAC,MAAM;AAAA,GAAA;AAIH,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,SAAS,mBAAmB,CAAA,EAAe;AACzC,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC5E,QAAA,SAAA,CAAU,KAAK,CAAA;AACjB,MAAA;AACF,IAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;EAC3E,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;IAChB,OAAO;AACL,MAAA,GAAA;AACA,MAAA,MAAA;MACA,OAAA,EAAS,SAAA;MACT,MAAA,EAAQ,YAAA;AACR,MAAA;AAAA,KAAA,CAAA;IAEF,CAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc,QAAQ;AAAA,GAAA;AAGtC,EAAA,MAAM,cAAc,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,eAAe,CAAA;AACpE,EAAA,MAAM,YAAA,GAAe,WAAA,GAAc,WAAA,CAAY,KAAA,GAAQ,WAAA;AAEvD,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,sBAAA,CAAuB,QAAA;AACvB,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,KAAK,YAAA,EAAc,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,SAAS,CAAA,EAAA;;AAEpF,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;UACE,IAAA,EAAM,QAAA;AACN,UAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;UACvB,eAAA,EAAiB,MAAA;UACjB,eAAA,EAAiB,GAAA,CAAI,aAAa,eAAe,CAAA;UACjD,eAAA,EAAiB,GAAA,CAAI,aAAa,eAAe,CAAA;AACjD,UAAA,SAAA,EAAW,uBAAA,EAAA;UACX,OAAA,EAAS,kBAAA;UACT,SAAA,EAAW;AAAA,SAAA;QAEPA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,MAAM,YAAY,CAAA;AAC9C,QAAA,WAAA,EAAa,QAAA,IACLA,kBAAA,CAAA,aAAA;AACJ,UAAA,MAAA;AACA,UAAA,EAAE,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAA,EAAuB,MAAM,CAAA,EAAA;AAC7C,UAAA;AAAA,SAAA;AAEE,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,aAAA,EAAe,QAAQ,SAAA,EAAW,MAAA,IAAU,QAAQ;AAAA,OAAA;;MAGpF,MAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,QAAA,IAAA;AACA,QAAA;AACE,UAAA,IAAA,EAAM,IAAI,YAAA,CAAa,IAAA;AACvB,UAAA,EAAA,EAAI,IAAI,YAAA,CAAa,EAAA;UACrB,SAAA,EACE;AAAA,SAAA;QAEJ,GAAG,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,KAAQ;AACvB,UAAA,MAAM,QAAA,GAAW,GAAA,CAAI,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA;AAC7C,UAAA,MAAM,UAAA,GAAa,oBAAoB,GAAA,CAAI,KAAA;AAC3C,UAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,YAAA,IAAA;AACA,YAAA;AACE,cAAA,GAAA,EAAK,GAAA,CAAI,KAAA;cACT,GAAG,QAAA;AACH,cAAA,SAAA,EAAWjD,gBAAe,EAAE,QAAA,EAAU,UAAA,GAAa,MAAA,GAAS,SAAS,CAAA;cACrE,OAAA,EAAS,MAAM,YAAA,CAAa,GAAA,CAAI,KAAK;AAAA,aAAA;YAEjCiD,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,KAAK,CAAA;AAC3C,YAAA,GAAA,CAAI,QAAA,IACIA,kBAAA,CAAA,aAAA;AACJ,cAAA,MAAA;cACA,EAAE,SAAA,EAAW,qBAAA,EAAoB;AACjC,cAAA;AAAA;AACF,WAAA;QAEN,CAAC;AAAA;AACH;AACJ,GAAA;AAEJ;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;;AChK9B,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAa,GAAA,EAAqB;AAC9D,EAAA,OAAO,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,GAAG,GAAG,GAAG,CAAA;AAC3C;AAEO,SAAS,qBAAA,CAAsB,KAAA,GAA8B,EAAA,EAAwB;AAC1F,EAAA,MAAM;IACJ,WAAA,GAAc,YAAA;IACd,YAAA,GAAe,CAAC,IAAI,EAAE,CAAA;AACtB,IAAA,QAAA,GAAW,EAAA;AACX,IAAA,QAAA,GAAW,EAAA;AACX,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,IAAI,QAAQ,SAAA,CAAU,UAAU,CAAA,IAAK,CAAC,GAAG,YAAY,CAAA;AACrD,EAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,EAAA,IAAI,oBAA8B,EAAA;AAElC,EAAA,SAAS,UAAU,GAAA,EAA+B;AAChD,IAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,IAAA,IAAI;AACF,MAAA,IAAI,OAAO,UAAA,CAAW,YAAA,KAAiB,WAAA,EAAa;AAClD,QAAA,MAAM,MAAA,GAAS,UAAA,CAAW,YAAA,CAAa,OAAA,CAAQ,GAAG,CAAA;AAClD,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAChC,UAAA,IAAI,MAAM,OAAA,CAAQ,MAAM,KAAK,MAAA,CAAO,MAAA,KAAW,aAAa,MAAA,EAAQ;AAClE,YAAA,OAAO,MAAA;AACT,UAAA;AACF,QAAA;AACF,MAAA;IACF,CAAA,CAAA,MAAQ;AAER,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,SAAS,SAAA,CAAU,KAAa,MAAA,EAAwB;AACtD,IAAA,IAAI;AACF,MAAA,IAAI,OAAO,UAAA,CAAW,YAAA,KAAiB,WAAA,EAAa;AAClD,QAAA,UAAA,CAAW,aAAa,OAAA,CAAQ,GAAA,EAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC,CAAA;AAC7D,MAAA;IACF,CAAA,CAAA,MAAQ;AAER,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,WAAW,KAAA,EAAuB;AACzC,IAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,CAAA;AAC5B,EAAA;AAEA,EAAA,SAAS,WAAW,KAAA,EAAuB;AACzC,IAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,GAAA;AAC5B,EAAA;AAEA,EAAA,SAAS,YAAY,KAAA,EAAqB;AACxC,IAAA,aAAA,GAAgB,KAAA;AAChB,IAAA,iBAAA,GAAoB,CAAC,GAAG,KAAK,CAAA;AAC/B,EAAA;AAEA,EAAA,SAAS,SAAS,KAAA,EAAqB;AACrC,IAAA,IAAI,kBAAkB,IAAA,EAAM;AAE5B,IAAA,MAAM,CAAA,GAAI,aAAA;AACV,IAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,IAAA,IAAI,CAAA,IAAK,MAAM,MAAA,EAAQ;AAEvB,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,CAAC,CAAA,GAAI,kBAAkB,CAAC,CAAA;AAGjE,IAAA,IAAI,QAAA,GAAW,iBAAA,CAAkB,CAAC,CAAA,GAAI,KAAA;AACtC,IAAA,QAAA,GAAW,MAAM,QAAA,EAAU,UAAA,CAAW,CAAC,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAGvD,IAAA,IAAI,WAAW,cAAA,GAAiB,QAAA;AAChC,IAAA,QAAA,GAAW,MAAM,QAAA,EAAU,UAAA,CAAW,CAAC,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAGvD,IAAA,QAAA,GAAW,cAAA,GAAiB,QAAA;AAE5B,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AACX,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AACb,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,aAAA,GAAgB,IAAA;AAChB,IAAA,iBAAA,GAAoB,EAAA;AACpB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,SAAA,CAAU,YAAY,KAAK,CAAA;AAC7B,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,eAAA,GAA0C;AACjD,IAAA,MAAM,OAA+B,EAAA;AACrC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,IAAA,CAAK,cAAc,CAAC,CAAA,KAAA,CAAO,IAAI,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5C,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,WAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACvIO,IAAM,qBAAA,GAAuC;EAClD,IAAA,EAAM,kBAAA;EACN,MAAA,EAAQ;AACN,IAAA,YAAA,EAAc,EAAE,QAAA,EAAU,+BAAA,EAAiC,QAAA,EAAU,oBAAA,EAAA;AACrE,IAAA,YAAA,EAAc,EAAE,QAAA,EAAU,+BAAA,EAAiC,QAAA,EAAU,qBAAA,EAAA;AACrE,IAAA,WAAA,EAAa,EAAE,QAAA,EAAU,8BAAA,EAAgC,QAAA,EAAU,KAAA;AAAM;AAE7E;AAEO,IAAM,0BAA0B,GAAA,CAAI;EACzC,IAAA,EAAM,oBAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,UAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AAEM,IAAM,2BAA2B,GAAA,CAAI;EAC1C,IAAA,EAAM,4LAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,uBAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AAEM,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM,eAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,UAAA,EAAY,QAAA;MACZ,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AC1BD,IAAM,sBAAA,GAA+BC,iCAAkD,IAAI,CAAA;AAE3F,SAAS,yBAAA,GAAyD;AAChE,EAAA,MAAM,GAAA,GAAYA,8BAAW,sBAAsB,CAAA;AACnD,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,qEAAqE,CAAA;AACvF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAmBO,IAAM,eAAA,GAAwBA,kBAAA,CAAA,UAAA;EACnC,CACE;IACE,WAAA,GAAc,YAAA;IACd,YAAA,GAAe,CAAC,IAAI,EAAE,CAAA;AACtB,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;IACA,GAAG;AAAA,GAAA,EAEL,GAAA,KACG;AACH,IAAA,MAAM,MAAA,GAAeA,0BAAkC,IAAI,CAAA;AAE3D,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAA,CAAO,UAAU,qBAAA,CAAsB;AACrC,QAAA,WAAA;AACA,QAAA,YAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA;OACD,CAAA;AACH,IAAA;AAEA,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AACnB,IAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAmB,IAAI,KAAK,CAAA;AAEjE,IAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,WAAA;AACrB,MAAA,CAAC,QAAA,KAAuB;AACtB,QAAA,aAAA,CAAc,CAAC,GAAG,QAAQ,CAAC,CAAA;AAC3B,QAAA,aAAA,GAAgB,QAAQ,CAAA;AAC1B,MAAA,CAAA;AACA,MAAA,CAAC,aAAa;AAAA,KAAA;AAGhB,IAAA,MAAM,OAAA,GAAgBA,2BAAQ,MAAM;AAClC,MAAA,MAAM,OAA+B,EAAA;AACrC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAA,CAAK,cAAc,CAAC,CAAA,KAAA,CAAO,IAAI,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5C,MAAA;AACA,MAAA,OAAO,IAAA;IACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,OAAA;AACzB,MAAA,OAAO,EAAE,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,QAAA,EAAA,CAAA;MAClC,CAAC,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,QAAQ;AAAA,KAAA;AAGpC,IAAA,uBACE9C,eAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,YAAA,EACtC,0BAAAA,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,uBAAA,CAAwB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AACjE,QAAA,KAAA,EAAO,EAAE,GAAG,OAAA,EAAS,GAAG,KAAA,EAAA;QACxB,kBAAA,EAAkB,WAAA;QACjB,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA,EAEL,CAAA;AAEJ,EAAA;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAcvB,IAAM,aAAA,GAAsB8C,kBAAA,CAAA,UAAA;EACjC,CAAC,EAAE,OAAO,SAAA,EAAW,KAAA,EAAO,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxD,IAAA,MAAM,EAAE,WAAA,EAAa,KAAA,EAAA,GAAU,yBAAA,EAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAK,CAAA,IAAK,EAAA;AAE7B,IAAA,MAAM,SAAA,GAAiC;AACrC,MAAA,SAAA,EAAW,GAAG,IAAI,CAAA,CAAA,CAAA;MAClB,QAAA,EAAU,CAAA;MACV,UAAA,EAAY,CAAA;MACZ,GAAG;AAAA,KAAA;AAGL,IAAA,uBACE9C,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,qBAAA,CAAsB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;QAC/D,KAAA,EAAO,SAAA;QACP,iBAAA,EAAiB,KAAA;QAChB,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAerB,IAAM,gBAAA,GAAyB8C,kBAAA,CAAA,UAAA;AACpC,EAAA,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACvC,IAAA,MAAM,EAAE,GAAA,EAAK,WAAA,EAAa,QAAA,KAAa,yBAAA,EAAA;AACvC,IAAA,MAAM,WAAA,GAAoBA,0BAAe,CAAC,CAAA;AAC1C,IAAA,MAAM,gBAAA,GAAyBA,0BAAe,CAAC,CAAA;AAE/C,IAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,MAAA,CAAC,CAAA,KAA0C;AACzC,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,MAAM,SAAS,CAAA,CAAE,aAAA;AACjB,QAAA,MAAA,CAAO,iBAAA,CAAkB,EAAE,SAAS,CAAA;AAGpC,QAAA,MAAM,YAAY,MAAA,CAAO,aAAA;AACzB,QAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,QAAA,MAAM,IAAA,GAAO,UAAU,qBAAA,EAAA;AACvB,QAAA,gBAAA,CAAiB,OAAA,GACf,WAAA,KAAgB,YAAA,GAAe,IAAA,CAAK,QAAQ,IAAA,CAAK,MAAA;AACnD,QAAA,WAAA,CAAY,OAAA,GACV,WAAA,KAAgB,YAAA,GAAe,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AAE/C,QAAA,GAAA,CAAI,YAAY,KAAK,CAAA;AACvB,MAAA,CAAA;MACA,CAAC,GAAA,EAAK,OAAO,WAAW;AAAA,KAAA;AAG1B,IAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAC1B,MAAA,CAAC,CAAA,KAA0C;AACzC,QAAA,IAAI,gBAAA,CAAiB,YAAY,CAAA,EAAG;AAEpC,QAAA,MAAM,UAAA,GACJ,WAAA,KAAgB,YAAA,GAAe,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AAC/C,QAAA,MAAM,OAAA,GAAU,aAAa,WAAA,CAAY,OAAA;AACzC,QAAA,MAAM,QAAA,GAAY,OAAA,GAAU,gBAAA,CAAiB,OAAA,GAAW,GAAA;AAExD,QAAA,GAAA,CAAI,SAAS,QAAQ,CAAA;AACrB,QAAA,QAAA,CAAS,CAAC,GAAG,GAAA,CAAI,KAAK,CAAC,CAAA;AACzB,MAAA,CAAA;MACA,CAAC,GAAA,EAAK,aAAa,QAAQ;AAAA,KAAA;AAG7B,IAAA,MAAM,WAAA,GAAoBA,kBAAA,CAAA,WAAA;AACxB,MAAA,CAAC,CAAA,KAA0C;AACzC,QAAA,CAAA,CAAE,aAAA,CAAc,qBAAA,CAAsB,CAAA,CAAE,SAAS,CAAA;AACjD,QAAA,gBAAA,CAAiB,OAAA,GAAU,CAAA;AAC3B,QAAA,GAAA,CAAI,SAAA,EAAA;AACN,MAAA,CAAA;AACA,MAAA,CAAC,GAAG;AAAA,KAAA;AAGN,IAAA,uBACE9C,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,WAAA;QACL,kBAAA,EAAkB,WAAA;QAClB,QAAA,EAAU,CAAA;AACV,QAAA,SAAA,EAAW,GAAG,wBAAA,CAAyB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;QAClE,oBAAA,EAAoB,KAAA;AACpB,QAAA,aAAA;AACA,QAAA,aAAA;AACA,QAAA,WAAA;QACC,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;AC1J/B,IAAM,QAAA,GAAqC;EACzC,YAAA,EAAc,OAAA;EACd,qBAAA,EAAuB,MAAA;EACvB,YAAA,EAAc,QAAA;EACd,gBAAA,EAAkB,GAAA;EAClB,gBAAA,EAAkB,IAAA;EAClB,eAAA,EAAiB,MAAA;EACjB,kBAAA,EAAoB,IAAA;EACpB,uBAAA,EAAyB,KAAA;EACzB,iBAAA,EAAmB;AACrB,CAAA;AAMA,SAAS,iBAAA,CACP,KAAA,EACA,QAAA,EACA,QAAA,EACgB;AAChB,EAAA,IAAI,KAAA,GAAQ,UAAU,OAAO,QAAA;AAC7B,EAAA,IAAI,KAAA,GAAQ,UAAU,OAAO,QAAA;AAC7B,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,SAAA,CACP,WAAA,EACA,gBAAA,EACA,UAAA,EACe;AACf,EAAA,OAAO;AACL,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA,EAAU,UAAA,KAAe,QAAA;AACzB,IAAA,QAAA,EAAU,UAAA,KAAe,QAAA;AACzB,IAAA,SAAA,EAAW,UAAA,KAAe;AAAA,GAAA;AAE9B;AAMO,SAAS,eAAe,MAAA,EAAsC;AACnE,EAAA,MAAM,QAAA,GAAqC,EAAE,GAAG,QAAA,EAAU,GAAG,MAAA,EAAA;AAG7D,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI,mBAAmB,QAAA,CAAS,uBAAA;AAChC,EAAA,IAAI,UAAA,GAA6B,SAAA;AAEjC,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAA;AAExB,EAAA,MAAM,SAAA,GAAY,WAAW,mBAAmB,CAAA;AAEhD,EAAA,SAAS,QAAA,GAA0B;AACjC,IAAA,OAAO,SAAA,CAAU,WAAA,EAAa,gBAAA,EAAkB,UAAU,CAAA;AAC5D,EAAA;AAEA,EAAA,SAAS,MAAA,GAAe;AACtB,IAAA,MAAM,IAAI,QAAA,EAAA;AACV,IAAA,KAAA,MAAW,MAAM,WAAA,EAAa;AAC5B,MAAA,EAAA,CAAG,CAAC,CAAA;AACN,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,aAAA,GAAsB;AAC7B,IAAA,IAAI,eAAe,QAAA,EAAU;AAC3B,MAAA,WAAA,GAAc,CAAC,WAAA;AACjB,IAAA,CAAA,MAAA,IAAW,SAAS,kBAAA,EAAoB;AACtC,MAAA,gBAAA,GAAmB,CAAC,gBAAA;AACtB,IAAA;AACA,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,WAAA,GAAoB;AAC3B,IAAA,WAAA,GAAc,IAAA;AACd,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,YAAA,GAAqB;AAC5B,IAAA,WAAA,GAAc,KAAA;AACd,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,eAAA,GAAwB;AAC/B,IAAA,gBAAA,GAAmB,IAAA;AACnB,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,aAAA,GAAsB;AAC7B,IAAA,gBAAA,GAAmB,KAAA;AACnB,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,cAAc,EAAA,EAA0B;AAC/C,IAAA,IAAI,OAAO,UAAA,EAAY;AACvB,IAAA,UAAA,GAAa,EAAA;AAEb,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,WAAA,GAAc,KAAA;AAChB,IAAA;AACA,IAAA,MAAA,EAAA;AACF,EAAA;AAEA,EAAA,SAAS,eAAA,GAA0C;AACjD,IAAA,MAAM,YAAA,GAAe,gBAAA,GACjB,QAAA,CAAS,qBAAA,GACT,QAAA,CAAS,YAAA;AACb,IAAA,OAAO;MACL,uBAAA,EAAyB,YAAA;AACzB,MAAA,4BAAA,EAA8B,QAAA,CAAS,YAAA;AACvC,MAAA,iCAAA,EAAmC,QAAA,CAAS,qBAAA;AAC5C,MAAA,uBAAA,EAAyB,QAAA,CAAS;AAAA,KAAA;AAEtC,EAAA;AAEA,EAAA,SAAS,UAAU,EAAA,EAAoC;AACrD,IAAA,WAAA,CAAY,IAAI,EAAE,CAAA;AAClB,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AACvB,IAAA,CAAA;AACF,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,IAAI,KAAA,GAAQ;AACV,MAAA,OAAO,QAAA,EAAA;AACT,IAAA,CAAA;IACA,MAAA,EAAQ,QAAA;AAER,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AAEA,IAAA,eAAA;IAEA,gBAAA,EAAkB;MAChB,IAAA,EAAM,YAAA;MACN,YAAA,EAAc,SAAA;MACd,EAAA,EAAI;AAAA,KAAA;IAEN,aAAA,EAAe;MACb,IAAA,EAAM;AAAA,KAAA;IAER,eAAA,EAAiB;MACf,IAAA,EAAM;AAAA,KAAA;IAER,kBAAA,EAAoB;MAClB,IAAA,EAAM,YAAA;MACN,YAAA,EAAc;AAAA,KAAA;IAEhB,gBAAA,EAAkB;MAChB,aAAA,EAAe;AAAA,KAAA;AAGjB,IAAA;AAAA,GAAA;AAEJ;AC5MA,IAAM+C,SAAAA,GAAsC;EAC1C,QAAA,EAAU,OAAA;EACV,SAAA,EAAW,MAAA;EACX,cAAA,EAAgB,KAAA;EAChB,SAAA,EAAW,IAAA;EACX,aAAA,EAAe;AACjB,CAAA;AAMA,IAAM,kBAAA,GAA+E;EACnF,OAAA,EAAS,EAAA;EACT,KAAA,EAAO,UAAA;EACP,OAAA,EAAS,oCAAA;EACT,IAAA,EAAM;AACR,CAAA;AAMO,SAAS,gBAAgB,MAAA,EAAwC;AACtE,EAAA,MAAM,QAAA,GAAsC,EAAE,GAAGA,SAAAA,EAAU,GAAG,MAAA,EAAA;AAE9D,EAAA,SAAS,kBAAkB,aAAA,EAAuC;AAChE,IAAA,MAAM;MACJ,SAAA,GAAY,KAAA;AACZ,MAAA,QAAA;MACA,OAAA,GAAU,IAAA;MACV,UAAA,GAAa;AAAA,KAAA,GACX,iBAAiB,EAAA;AAErB,IAAA,MAAM,UAAoB,EAAA;AAE1B,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AACtB,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAErB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,QAAQ,CAAA,CAAE,CAAA;MAClC,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,KAAK,+BAA+B,CAAA;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,KAAK,sBAAsB,CAAA;AACrC,IAAA;AAEA,IAAA,MAAM,EAAA,GAAK,mBAAmB,UAAU,CAAA;AACxC,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,OAAA,CAAQ,KAAK,EAAE,CAAA;AACjB,IAAA;AAEA,IAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AACzB,EAAA;AAEA,EAAA,SAAS,eAAA,GAA0C;AACjD,IAAA,OAAO;AACL,MAAA,kBAAA,EAAoB,QAAA,CAAS,QAAA;AAC7B,MAAA,mBAAA,EAAqB,QAAA,CAAS,SAAA;MAC9B,uBAAA,EAAyB,MAAA,CAAO,SAAS,aAAa;AAAA,KAAA;AAE1D,EAAA;AAEA,EAAA,OAAO;IACL,MAAA,EAAQ,QAAA;IACR,YAAA,EAAc;MACZ,IAAA,EAAM,YAAA;MACN,YAAA,EAAc;AAAA,KAAA;IAEhB,eAAA,EAAiB;MACf,IAAA,EAAM;AAAA,KAAA;AAER,IAAA,iBAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AChGA,IAAMA,SAAAA,GAAsC;EAC1C,QAAA,EAAU,IAAA;EACV,QAAA,EAAU,QAAA;EACV,cAAA,EAAgB;AAClB,CAAA;AAMA,IAAM,iBAAA,GAA0E;EAC9E,EAAA,EAAI,UAAA;EACJ,EAAA,EAAI,UAAA;EACJ,EAAA,EAAI;AACN,CAAA;AAMO,SAAS,gBAAgB,MAAA,EAAwC;AACtE,EAAA,MAAM,QAAA,GAAsC,EAAE,GAAGA,SAAAA,EAAU,GAAG,MAAA,EAAA;AAE9D,EAAA,MAAM,cAAA,GAA2B,CAAC,cAAA,EAAgB,MAAA,EAAQ,QAAQ,CAAA;AAElE,EAAA,IAAI,QAAA,CAAS,aAAa,QAAA,EAAU;AAClC,IAAA,cAAA,CAAe,IAAA,CAAK,gBAAgB,gBAAgB,CAAA;EACtD,CAAA,MAAO;AAEL,IAAA,cAAA,CAAe,IAAA,CAAK,cAAA,EAAgB,eAAA,EAAiB,wBAAwB,CAAA;AAC/E,EAAA;AAEA,EAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,IAAA,cAAA,CAAe,KAAK,UAAU,CAAA;AAChC,EAAA;AAEA,EAAA,MAAM,SAAA,GAAsB;AAC1B,IAAA,QAAA;AACA,IAAA,iBAAA,CAAkB,SAAS,QAAQ,CAAA;AACnC,IAAA,YAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;AACA,IAAA,KAAA;AACA,IAAA;AAAA,GAAA;AAGF,EAAA,OAAO;IACL,MAAA,EAAQ,QAAA;IACR,gBAAA,EAAkB,cAAA,CAAe,KAAK,GAAG,CAAA;IACzC,WAAA,EAAa,SAAA,CAAU,KAAK,GAAG,CAAA;IAC/B,SAAA,EAAW;MACT,IAAA,EAAM,MAAA;MACN,YAAA,EAAc;AAAA;AAChB,GAAA;AAEJ;;;AChEA,IAAM,eAAA,GAAwBC,iCAA2C,IAAI,CAAA;AAEtE,SAAS,WAAA,GAAoC;AAClD,EAAA,MAAM,GAAA,GAAYA,8BAAW,eAAe,CAAA;AAC5C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAC9D,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAYA,SAAS,YAAA,CAAa,EAAE,MAAA,EAAQ,QAAA,EAAU,WAAA,EAA4B;AAEpE,EAAA,MAAM,MAAA,GAAeA,0BAA2B,IAAI,CAAA;AACpD,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,eAAe,MAAM,CAAA;AACxC,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAGnB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAUA,kBAAA,CAAA,QAAA,CAAwB,MAAM,IAAI,KAAK,CAAA;AAEjE,EAAAA,6BAAU,MAAM;AAEpB,IAAA,QAAA,CAAS,IAAI,KAAK,CAAA;AAClB,IAAA,OAAO,IAAI,SAAA,CAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAC,CAAC,CAAA;EACzC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAGF,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,EAAE,gBAAA,EAAkB,gBAAA,EAAA,GAAqB,GAAA,CAAI,MAAA;AAEnD,IAAA,MAAM,cAAc,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,gBAAA,GAAmB,CAAC,CAAA,GAAA,CAAK,CAAA;AAC9E,IAAA,MAAM,cAAc,MAAA,CAAO,UAAA;MACzB,CAAA,YAAA,EAAe,gBAAgB,CAAA,oBAAA,EAAuB,gBAAA,GAAmB,CAAC,CAAA,GAAA;AAAA,KAAA;AAG5E,IAAA,SAAS,MAAA,GAAS;AAChB,MAAA,MAAM,QAAQ,MAAA,CAAO,UAAA;AACrB,MAAA,MAAM,EAAA,GAAK,iBAAA,CAAkB,KAAA,EAAO,gBAAA,EAAkB,gBAAgB,CAAA;AACtE,MAAA,GAAA,CAAI,cAAc,EAAE,CAAA;AACtB,IAAA;AAGA,IAAA,MAAA,EAAA;AAEA,IAAA,WAAA,CAAY,gBAAA,CAAiB,UAAU,MAAM,CAAA;AAC7C,IAAA,WAAA,CAAY,gBAAA,CAAiB,UAAU,MAAM,CAAA;AAE7C,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAChD,MAAA,WAAA,CAAY,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAClD,IAAA,CAAA;EACF,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,OAAA,GAAU,IAAI,eAAA,EAAA;AAEpB,EAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,OAAA;IACrB,OAAO,EAAE,KAAK,KAAA,EAAA,CAAA;AACd,IAAA,CAAC,KAAK,KAAK;AAAA,GAAA;AAGb,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,eAAA,CAAgB,QAAA;AAChB,IAAA,EAAE,OAAO,QAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,EAAA,CAAG,wCAAwC,SAAS,CAAA;QAC/D,KAAA,EAAO,OAAA;QACP,YAAA,EAAc;AAAA,OAAA;AAEhB,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,YAAA,CAAa,WAAA,GAAc,UAAA;AAW3B,SAASC,QAAAA,CAAQ,EAAE,QAAA,EAAU,SAAA,EAAA,EAAmC;AAC9D,EAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAA,GAAU,WAAA,EAAA;AACvB,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,CAAO,eAAA,KAAoB,OAAA;AAI/C,EAAA,MAAM,WAAA,GAAc;AAClB,IAAA,0DAAA;AACA,IAAA,wBAAA;AACA,IAAA,uDAAA;AACA,IAAA;AAAA,GAAA;AAGF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,WAAA,CAAY,CAAC,CAAA,GAAI,iFAAA;AACnB,EAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,GACxB;AACE,IAAA,kBAAA;AACA,IAAA,OAAA,GAAU,SAAA,GAAY,QAAA;AACtB,IAAA,qCAAA;IACA,KAAA,CAAM,WAAA,GACF,eAAA,GACA,OAAA,GACE,kBAAA,GACA;GAAA,GAER,CAAC,YAAY,gCAAgC,CAAA;AAEjD,EAAA,OAAaD,kBAAA,CAAA,aAAA;AACX,IAAA,OAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,gBAAA;MACP,SAAA,EAAW,EAAA,CAAG,YAAY,IAAA,CAAK,GAAG,GAAG,aAAA,CAAc,IAAA,CAAK,GAAG,CAAA,EAAG,SAAS,CAAA;MACvE,gBAAA,EAAkB,KAAA,CAAM,mBAAmB,EAAA,GAAK,MAAA;MAChD,WAAA,EAAa,KAAA,CAAM,cAAc,EAAA,GAAK;AAAA,KAAA;AAExC,IAAA;AAAA,GAAA;AAEJ;AAEAC,QAAAA,CAAQ,WAAA,GAAc,kBAAA;AAWtB,SAAS,IAAA,CAAK,EAAE,QAAA,EAAU,SAAA,EAAA,EAAgC;AACxD,EAAA,OAAaD,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;MACE,SAAA,EAAW,EAAA,CAAG,uCAAuC,SAAS;AAAA,KAAA;AAEhE,IAAA;AAAA,GAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,eAAA;AAWnB,SAAS,MAAA,CAAO,EAAE,QAAA,EAAU,SAAA,EAAA,EAAkC;AAC5D,EAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAA,GAAU,WAAA,EAAA;AAEvB,EAAA,MAAM,SAAA,GAAY,MAAM,QAAA,GACdA,kBAAA,CAAA,aAAA;AACJ,IAAA,QAAA;AACA,IAAA;MACE,IAAA,EAAM,QAAA;MACN,YAAA,EAAc,gBAAA;AACd,MAAA,eAAA,EAAiB,KAAA,CAAM,WAAA;AACvB,MAAA,eAAA,EAAiB,IAAI,gBAAA,CAAiB,EAAA;MACtC,OAAA,EAAS,MAAM,IAAI,aAAA,EAAA;MACnB,SAAA,EAAW;AAAA,KAAA;AAEP,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,KAAA,EAAO,4BAAA;QACP,KAAA,EAAO,EAAA;QACP,MAAA,EAAQ,EAAA;QACR,OAAA,EAAS,WAAA;QACT,IAAA,EAAM,MAAA;QACN,MAAA,EAAQ,cAAA;QACR,WAAA,EAAa,CAAA;QACb,aAAA,EAAe,OAAA;QACf,cAAA,EAAgB,OAAA;QAChB,aAAA,EAAe;AAAA,OAAA;MAEXA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,CAAA;MACrDA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA;MACvDA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI;AAAA;GAC/D,GAEF,IAAA;AAEJ,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,QAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,eAAA;MACP,SAAA,EAAW,EAAA;AACT,QAAA,8CAAA;AACA,QAAA,gCAAA;AACA,QAAA,6BAAA;AACA,QAAA;AAAA;AACF,KAAA;AAEF,IAAA,SAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AAEA,MAAA,CAAO,WAAA,GAAc,iBAAA;AAarB,SAAS,OAAA,CAAQ,EAAE,QAAA,EAAU,SAAA,EAAW,UAAA,EAAkC;AACxE,EAAA,MAAM,EAAE,GAAA,EAAA,GAAQ,WAAA,EAAA;AAChB,EAAA,MAAM,OAAA,GAAU,QAAA,GAAW,CAAA,MAAA,EAAS,QAAQ,CAAA,CAAA,GAAK,EAAA;AAEjD,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,MAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,aAAA;MACP,SAAA,EAAW,EAAA;AACT,QAAA,wBAAA;QACA,OAAA,GAAU,CAAA,EAAG,OAAO,CAAA,eAAA,CAAA,GAAoB,EAAA;AACxC,QAAA,2BAAA;AACA,QAAA;AAAA;AACF,KAAA;AAEF,IAAA;AAAA,GAAA;AAEJ;AAEA,OAAA,CAAQ,WAAA,GAAc,kBAAA;AAWtB,SAASE,UAAAA,CAAU,EAAE,QAAA,EAAU,SAAA,EAAA,EAAqC;AAClE,EAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAA,GAAU,WAAA,EAAA;AAEvB,EAAA,IAAI,CAAC,KAAA,CAAM,QAAA,EAAU,OAAO,IAAA;AAC5B,EAAA,IAAI,GAAA,CAAI,MAAA,CAAO,iBAAA,KAAsB,MAAA,EAAQ,OAAO,IAAA;AAEpD,EAAA,OAAaF,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,kBAAA;MACP,SAAA,EAAW,EAAA;AACT,QAAA,oCAAA;AACA,QAAA,kCAAA;AACA,QAAA,wBAAA;AACA,QAAA,MAAA;AACA,QAAA;AAAA;AACF,KAAA;AAEF,IAAA;AAAA,GAAA;AAEJ;AAEAE,UAAAA,CAAU,WAAA,GAAc,oBAAA;AAUxB,SAAS,OAAA,CAAQ,EAAE,SAAA,EAAA,EAAmC;AACpD,EAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAA,GAAU,WAAA,EAAA;AAEvB,EAAA,IAAI,CAAC,KAAA,CAAM,QAAA,IAAY,CAAC,KAAA,CAAM,aAAa,OAAO,IAAA;AAElD,EAAA,OAAaF,iCAAc,KAAA,EAAO;AAChC,IAAA,GAAG,GAAA,CAAI,gBAAA;IACP,SAAA,EAAW,EAAA;AACT,MAAA,mDAAA;AACA,MAAA;AAAA,KAAA;IAEF,OAAA,EAAS,MAAM,IAAI,YAAA,EAAA;IACnB,oBAAA,EAAsB;GACvB,CAAA;AACH;AAEA,OAAA,CAAQ,WAAA,GAAc,kBAAA;AAMf,IAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;EAClD,OAAA,EAAAC,QAAAA;AACA,EAAA,IAAA;AACA,EAAA,MAAA;AACA,EAAA,OAAA;EACA,SAAA,EAAAC,UAAAA;AACA,EAAA;AACF,CAAC;AC1UD,IAAM,gBAAA,GAAyBpD,iCAA4C,IAAI,CAAA;AAE/E,SAAS,YAAA,GAAsC;AAC7C,EAAA,MAAM,GAAA,GAAYA,8BAAW,gBAAgB,CAAA;AAC7C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AACjF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAYA,SAAS,aAAA,CAAc,EAAE,MAAA,EAAQ,QAAA,EAAU,WAAA,EAA6B;AACtE,EAAA,MAAM,MAAA,GAAeA,0BAA4B,IAAI,CAAA;AACrD,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,gBAAgB,MAAM,CAAA;AACzC,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,OAAA,GAAU,IAAI,eAAA,EAAA;AAEpB,EAAA,MAAM,QAAA,GAAiBkD,kBAAA,CAAA,OAAA;AACrB,IAAA,OAAO,EAAE,GAAA,EAAA,CAAA;AACT,IAAA,CAAC,GAAG;AAAA,GAAA;AAGN,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,gBAAA,CAAiB,QAAA;AACjB,IAAA,EAAE,OAAO,QAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAWG,EAAAA,CAAG,8BAA8B,SAAS,CAAA;QACrD,KAAA,EAAO,OAAA;QACP,iBAAA,EAAmB;AAAA,OAAA;AAErB,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,WAAA;AAW5B,SAAS,GAAA,CAAI,EAAE,QAAA,EAAU,SAAA,EAAA,EAAgC;AACvD,EAAA,MAAM,EAAE,GAAA,EAAA,GAAQ,YAAA,EAAA;AAEhB,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,MAAA,CAAO,SAAA,GAAY,mBAAA,GAAsB,EAAA;AACjE,EAAA,MAAM,gBAAA,GAAmB,GAAA,CAAI,MAAA,CAAO,cAAA,GAAiB,gBAAA,GAAmB,wBAAA;AAExE,EAAA,OAAaH,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,YAAA;MACP,SAAA,EAAWG,EAAAA;AACT,QAAA,mEAAA;AACA,QAAA,WAAA;AACA,QAAA,gBAAA;AACA,QAAA;AAAA;AACF,KAAA;AAEF,IAAA;AAAA,GAAA;AAEJ;AAEA,GAAA,CAAI,WAAA,GAAc,eAAA;AAWlB,SAAS,OAAA,CAAQ;AACf,EAAA,QAAA;AACA,EAAA,SAAA;AACA,EAAA,SAAA;AACA,EAAA,QAAA;AACA,EAAA,OAAA;AACA,EAAA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,EAAE,GAAA,EAAA,GAAQ,YAAA,EAAA;AAEhB,EAAA,MAAM,cAAA,GAAiB,IAAI,iBAAA,CAAkB,EAAE,WAAW,QAAA,EAAU,OAAA,EAAS,YAAY,CAAA;AAEzF,EAAA,OAAaH,kBAAA,CAAA,aAAA;AACX,IAAA,SAAA;AACA,IAAA;MACE,SAAA,EAAWG,EAAAA,CAAG,OAAA,EAAS,cAAA,EAAgB,SAAS;AAAA,KAAA;AAElD,IAAA;AAAA,GAAA;AAEJ;AAEA,OAAA,CAAQ,WAAA,GAAc,mBAAA;AAYtB,SAASC,OAAAA,CAAO,EAAE,QAAA,EAAU,SAAA,EAAW,SAAA,EAAiC;AACtE,EAAA,MAAM,EAAE,GAAA,EAAA,GAAQ,YAAA,EAAA;AAChB,EAAA,MAAM,IAAA,GAAO,OAAA,IAAW,GAAA,CAAI,MAAA,CAAO,aAAA;AAEnC,EAAA,OAAaJ,kBAAA,CAAA,aAAA;AACX,IAAA,QAAA;AACA,IAAA;AACE,MAAA,GAAG,GAAA,CAAI,eAAA;MACP,SAAA,EAAWG,EAAAA;AACT,QAAA,8CAAA;AACA,QAAA;AAAA;AACF,KAAA;AAEI,IAAAH,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,CAAA,gDAAA,CAAA;QACX,KAAA,EAAO;AACL,UAAA,mBAAA,EAAqB,UAAU,IAAI,CAAA,iBAAA;AAAA;AACrC,OAAA;AAEF,MAAA;AAAA;AACF,GAAA;AAEJ;AAEAI,OAAAA,CAAO,WAAA,GAAc,kBAAA;AAMI,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe;AACpD,EAAA,GAAA;AACA,EAAA,OAAA;EACA,MAAA,EAAAA;AACF,CAAC;AClKD,IAAM,gBAAA,GAAyBrD,iCAA4C,IAAI,CAAA;AAE/E,SAAS,YAAA,GAAsC;AAC7C,EAAA,MAAM,GAAA,GAAYA,8BAAW,gBAAgB,CAAA;AAC7C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AACjF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAYA,SAAS,aAAA,CAAc,EAAE,MAAA,EAAQ,QAAA,EAAU,WAAA,EAA6B;AACtE,EAAA,MAAM,MAAA,GAAeA,0BAA4B,IAAI,CAAA;AACrD,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,IAAA,MAAA,CAAO,OAAA,GAAU,gBAAgB,MAAM,CAAA;AACzC,EAAA;AACA,EAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,EAAA,MAAM,QAAA,GAAiBiD,kBAAA,CAAA,OAAA;AACrB,IAAA,OAAO,EAAE,GAAA,EAAA,CAAA;AACT,IAAA,CAAC,GAAG;AAAA,GAAA;AAGN,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,gBAAA,CAAiB,QAAA;AACjB,IAAA,EAAE,OAAO,QAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAG,GAAA,CAAI,SAAA;QACP,SAAA,EAAWG,EAAAA,CAAG,GAAA,CAAI,gBAAA,EAAkB,SAAS,CAAA;QAC7C,iBAAA,EAAmB;AAAA,OAAA;AAErB,MAAA;AAAA;AACF,GAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,WAAA;AAW5B,SAAS,IAAA,CAAK,EAAE,QAAA,EAAU,SAAA,EAAA,EAAiC;AACzD,EAAA,MAAM,EAAE,GAAA,EAAA,GAAQ,YAAA,EAAA;AAEhB,EAAA,OAAaH,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA;MACE,SAAA,EAAWG,EAAAA,CAAG,GAAA,CAAI,WAAA,EAAa,SAAS,CAAA;MACxC,gBAAA,EAAkB;AAAA,KAAA;AAEpB,IAAA;AAAA,GAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,gBAAA;AAMM,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe;AACpD,EAAA;AACF,CAAC;;;AC3DM,SAAS,YAAY,IAAA,EAAsB;AAChD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,EAAA,CAAO,MAAM,KAAK,CAAA;AACrC,EAAA,IAAI,MAAM,MAAA,KAAW,CAAA,IAAK,MAAM,CAAC,CAAA,KAAM,IAAI,OAAO,EAAA;AAClD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAA;AAClD,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,WAAA,EAAA;AAClE;AAEO,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,KAAK,GAAA,GAAM,EAAA,EAAI,WAAW,EAAA,EAAI,IAAA,GAAO,MAAA,GAAS,KAAA;AAEtD,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM;AAAA,GAAA;AAER,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,SAAA,CAAU,YAAY,CAAA,GAAI,GAAA;AAC5B,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe,WAAW,WAAA,CAAY,QAAQ,IAAK,GAAA,GAAM,WAAA,CAAY,GAAG,CAAA,GAAI,EAAA;AAElF,EAAA,MAAM,cAAA,GAAyC;IAC7C,WAAA,EAAa;AAAA,GAAA;AAGf,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,cAAA;IACA,UAAA,EAAY;AACV,MAAA,GAAA;MACA,IAAA,EAAM;AAAA,KAAA;AAER,IAAA,YAAA;IACA,KAAA,EAAO;AACL,MAAA,IAAA;AACA,MAAA,MAAA,EAAQ,CAAC,CAAC;AAAA;AACZ,GAAA;AAEJ;ACrEO,IAAM,YAAA,GAA8B;EACzC,IAAA,EAAM,QAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,mBAAA,EAAA;AAC7C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,8BAAA,EAAA;AAC7C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,oBAAA;AAAqB;AAE9E;AAEO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,qDAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,WAAA;MACJ,EAAA,EAAI,WAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,yBAAyB,GAAA,CAAI;EACxC,IAAA,EAAM,4FAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,WAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AC3BD,IAAM,gBAAsBE,kBAAA,CAAA,aAAA,CAAkC;EAC5D,IAAA,EAAM,IAAA;EACN,WAAA,EAAa,KAAA;EACb,UAAA,EAAY,KAAA;AACZ,EAAA,cAAA,EAAgB,MAAM;AAAC,EAAA,CAAA;AACvB,EAAA,aAAA,EAAe,MAAM;AAAC,EAAA;AACxB,CAAC,CAAA;AAWM,IAAM,MAAA,GAAeA,kBAAA,CAAA,UAAA;EAC1B,CAAC,EAAE,OAAO,IAAA,EAAM,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACvD,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAExD,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA;AAEjC,IAAA,uBACErD,cAAAA,CAAC,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAA,EAC9E,0BAAAA,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAChD,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA,EAEL,CAAA;AAEJ,EAAA;AACF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAKd,IAAM,WAAA,GAAoBqD,kBAAA,CAAA,UAAA;EAC/B,CAAC,EAAE,SAAA,EAAW,GAAA,EAAK,GAAA,GAAM,EAAA,EAAI,QAAQ,OAAA,EAAS,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAChE,IAAA,MAAM,EAAE,cAAA,EAAgB,aAAA,EAAA,GAAwBA,8BAAW,aAAa,CAAA;AAExE,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAA8C;AAChE,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,MAAA,GAAS,CAAC,CAAA;AACZ,IAAA,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA8C;AACjE,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,OAAA,GAAU,CAAC,CAAA;AACb,IAAA,CAAA;AAEA,IAAA,uBACErD,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAA,EAAuB,SAAS,CAAA;AAC9C,QAAA,GAAA;AACA,QAAA,GAAA;QACA,MAAA,EAAQ,UAAA;QACR,OAAA,EAAS,WAAA;QACR,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAKnB,IAAM,cAAA,GAAuBqD,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAA,GAAeA,kBAAA,CAAA,UAAA,CAAW,aAAa,CAAA;AAE/C,IAAA,uBACErD,cAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,sBAAA,CAAuB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;QACxD,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;ACtDtB,SAASsD,aAAY,IAAA,EAAsB;AAChD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,EAAA,CAAO,MAAM,KAAK,CAAA;AACrC,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAA;AAClD,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,WAAA,EAAA;AAClE;AAEO,SAAS,kBAAkB,KAAA,EAAyC;AACzE,EAAA,MAAM,EAAE,KAAA,EAAO,GAAY,CAAA,GAAS,KAAA;AAEpC,EAAA,MAAM,YAAA,GAAe,OAAO,GAAA,GAAM,CAAA,GAAI,MAAM,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAI,KAAA;AAC5D,EAAA,MAAM,aAAA,GAAgB,OAAO,GAAA,GAAM,CAAA,GAAI,MAAM,KAAA,CAAM,GAAG,IAAI,EAAA;AAC1D,EAAA,MAAM,gBAAgB,aAAA,CAAc,MAAA;AAEpC,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,WAAW,wBAAwB,CAAA;AAEnD,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,OAAA;IACN,YAAA,EAAc,CAAA,EAAG,MAAM,MAAM,CAAA,MAAA,CAAA;IAC7B,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,mBAAmB,IAAA,EAA2C;AACrE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA,GAAM,IAAA,CAAK,IAAA;AACnE,IAAA,OAAO;MACL,IAAA,EAAM,KAAA;MACN,YAAA,EAAc;AAAA,KAAA;AAElB,EAAA;AAEA,EAAA,MAAM,kBAAA,GAA8C;IAClD,IAAA,EAAM,QAAA;AACN,IAAA,YAAA,EAAc,GAAG,aAAa,CAAA,WAAA;AAAA,GAAA;AAGhC,EAAA,OAAO;AACL,IAAA,YAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA,kBAAA;IACA,WAAA,EAAAA,YAAAA;AACA,IAAA,kBAAA;IACA,GAAA,EAAK;MACH,KAAA,EAAO,OAAA;MACP,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;ACvGO,IAAM,iBAAA,GACX,8BAAA;AAEK,IAAMC,kBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,4KAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI,iBAAA;MACJ,EAAA,EAAI,mBAAA;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAEM,IAAM,8BAA8B,GAAA,CAAI;EAC7C,IAAA,EAAM,4JAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI,iBAAA;MACJ,EAAA,EAAI,mBAAA;MACJ,EAAA,EAAI,qBAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAEM,IAAM,iBAAA,GACX,4BAAA;AAEK,IAAM,4BAA4B,GAAA,CAAI;EAC3C,IAAA,EAAM,mEAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,aAAA;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,aAAA;MACJ,EAAA,EAAI;AAAA,KAAA;IAEN,MAAA,EAAQ;MACN,MAAA,EAAQ,cAAA;MACR,OAAA,EAAS,aAAA;MACT,IAAA,EAAM,eAAA;MACN,IAAA,EAAM,YAAA;MACN,GAAA,EAAK;AAAA;AACP,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM,IAAA;IACN,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;;;AC1CM,SAAS,YAAY,EAAE,KAAA,EAAO,KAAK,IAAA,GAAO,IAAA,EAAM,WAAA,EAA+B;AACpF,EAAA,MAAM,MAAM,iBAAA,CAAkB,EAAE,KAAA,EAAO,GAAK,CAAM,CAAA;AAElD,EAAA,OAAaC,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,SAAA,EAAW,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAA;AAC9D,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA;AAAI,MAAA,CAAC,IAAA,KACdA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA;AACE,UAAA,GAAA,EAAK,IAAA,CAAK,EAAA;UACV,SAAA,EAAWD,eAAAA,CAAe,EAAE,IAAA,EAAM,CAAA;UAClC,GAAG,GAAA,CAAI,mBAAmB,IAAI;AAAA,SAAA;QAEhC,IAAA,CAAK,GAAA,GACKC,iCAAc,KAAA,EAAO;AACzB,UAAA,GAAA,EAAK,IAAA,CAAK,GAAA;AACV,UAAA,GAAA,EAAK,IAAA,CAAK,IAAA;UACV,SAAA,EAAW;SACZ,CAAA,GACKA,iCAAc,MAAA,EAAQ,IAAA,EAAM,IAAI,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;QAChE,IAAA,CAAK,MAAA,IACGA,iCAAc,MAAA,EAAQ;AAC1B,UAAA,SAAA,EAAW,0BAA0B,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,CAAK,QAAQ;SACnE;AAAA;AACL,KAAA;AAEF,IAAA,GAAA,CAAI,gBAAgB,CAAA,IACZA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,2BAAA,CAA4B,EAAE,IAAA,EAAM,CAAA;AAC/C,QAAA,GAAG,GAAA,CAAI;AAAA,OAAA;AAET,MAAA,CAAA,CAAA,EAAI,IAAI,aAAa,CAAA;AAAA;AACvB,GAAA;AAEN;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;AC7CnB,SAAS,UAAA,CAAW,KAAA,GAAmB,EAAA,EAAa;AACzD,EAAA,MAAM,YAAyC,EAAA;AAC/C,EAAA,IAAI,MAAM,IAAA,EAAM;AACd,IAAA,SAAA,CAAU,OAAO,KAAA,CAAM,IAAA;AACzB,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;IACA,cAAA,EAAgB,EAAE,aAAa,MAAA;AAAO,GAAA;AAE1C;AAEO,SAAS,gBAAA,GAA+D;AAC7E,EAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,WAAA,EAAa,eAAA,EAAc;AACxD;AAEO,SAAS,eAAA,GAA8D;AAC5E,EAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,WAAA,EAAa,cAAA,EAAa;AACvD;AAEO,SAAS,qBAAA,GAAoE;AAClF,EAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,WAAA,EAAa,oBAAA,EAAmB;AAC7D;AAEO,SAAS,iBAAA,GAAgE;AAC9E,EAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,WAAA,EAAa,gBAAA,EAAe;AACzD;AAEO,SAAS,gBAAA,GAA+D;AAC7E,EAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,WAAA,EAAa,eAAA,EAAc;AACxD;ACzCO,IAAM,UAAA,GAA4B;EACvC,IAAA,EAAM,MAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,kBAAA,EAAA;AAC3C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,6BAAA,EAAA;AAC3C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,oBAAA;AAAqB;AAE5E;AAEO,IAAM,eAAe,GAAA,CAAI;EAC9B,IAAA,EAAM,uDAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,IAAA,EAAM,EAAA;MACN,OAAA,EAAS,KAAA;MACT,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,2CAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,OAAA,EAAS,UAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,0BAA0B,GAAA,CAAI;EACzC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM;AACR,CAAC;AAEM,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM;AACR,CAAC;AClCM,IAAMhE,KAAAA,GAAaiE,kBAAA,CAAA,UAAA;AACxB,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,UAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,YAAA,EAAA,EAAgB,SAAS,CAAA;AACtC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACAR,KAAAA,CAAK,WAAA,GAAc,MAAA;AAKZ,IAAM,UAAA,GAAmBiE,kBAAA,CAAA,UAAA;AAC9B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,gBAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAA,EAAsB,SAAS,CAAA;AAC5C,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAKlB,IAAM,SAAA,GAAkByD,kBAAA,CAAA,UAAA;AAC7B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,eAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,IAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAA,EAAqB,SAAS,CAAA;AAC3C,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAKjB,IAAM,eAAA,GAAwByD,kBAAA,CAAA,UAAA;AACnC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,qBAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,GAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAA,EAA2B,SAAS,CAAA;AACjD,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAKvB,IAAM,WAAA,GAAoByD,kBAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,iBAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAA,EAAuB,SAAS,CAAA;AAC7C,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAKnB,IAAM,UAAA,GAAmByD,kBAAA,CAAA,UAAA;AAC9B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,MAAM,gBAAA,EAAA;AACZ,IAAA,uBACEzD,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAA,EAAsB,SAAS,CAAA;AAC5C,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;;;AC/FlB,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAiB;AACrE,EAAA,MAAM,EAAE,OAAA,GAAU,KAAA,EAAO,QAAA,GAAW,OAAA,GAAU,KAAA;AAC9C,EAAA,MAAM,gBAAgB,CAAC,QAAA;AAEvB,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,UAAA;IACN,cAAA,EAAgB,OAAA,KAAY,kBAAkB,OAAA,GAAU;AAAA,GAAA;AAG1D,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAC/C,EAAA,IAAI,YAAY,eAAA,EAAiB;AAC/B,IAAA,cAAA,CAAe,YAAY,CAAA,GAAI,eAAA;AACjC,EAAA,CAAA,MAAA,IAAW,OAAA,EAAS;AAClB,IAAA,cAAA,CAAe,YAAY,CAAA,GAAI,SAAA;EACjC,CAAA,MAAO;AACL,IAAA,cAAA,CAAe,YAAY,CAAA,GAAI,WAAA;AACjC,EAAA;AACA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,MAAM,mBAAuC,EAAA;AAC7C,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,gBAAA,CAAiB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC1C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,gBAAA;AACA,IAAA,aAAA;AACA,IAAA,cAAA;IACA,KAAA,EAAO,EAAE,SAAS,QAAA;AAAS,GAAA;AAE/B;AAGO,IAAM,aAAA,GAAgB;AAGtB,IAAM,qBAAA,GAAwB;ACrE9B,IAAM,cAAA,GAAgC;EAC3C,IAAA,EAAM,UAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,wBAAA,EAAA;AAC/C,IAAA,YAAA,EAAc,EAAE,QAAA,EAAU,2BAAA,EAA6B,QAAA,EAAU,qBAAA,EAAA;AACjE,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,gCAAA,EAAA;AAC/C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,uBAAA,EAAyB,QAAA,EAAU,qBAAA,EAAA;AACvD,IAAA,IAAA,EAAM,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,kBAAA;AAAmB;AAE1E;AAEO,IAAM,mBAAmB,GAAA,CAAI;EAClC,IAAA,EAAM,2MAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,IAAA,EAAM,oCAAA;MACN,KAAA,EAAO,eAAA;MACP,aAAA,EAAe;AAAA,KAAA;IAEjB,IAAA,EAAM;MACJ,EAAA,EAAI,aAAA;MACJ,OAAA,EAAS,SAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS,OAAA;IACT,IAAA,EAAM;AAAA;AAEV,CAAC;ACVM,IAAM,QAAA,GAAiB0D,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,eAAA,EAAiB,QAAA,GAAW,KAAA,EAAO,IAAA,GAAO,SAAA,EAAW,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACtG,IAAA,MAAM,GAAA,GAAM,cAAA,CAAe,EAAE,OAAA,EAAS,UAAU,CAAA;AAEhD,IAAA,MAAM,cAAA,GAAiB,OAAA,KAAY,eAAA,GAAkB,eAAA,GAAkB,UAAU,MAAA,GAAS,OAAA;AAE1F,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,IAAI,aAAA,EAAe;AACrB,QAAA,IAAI,YAAY,eAAA,EAAiB;AAC/B,UAAA,eAAA,GAAkB,IAAI,CAAA;QACxB,CAAA,MAAO;AACL,UAAA,eAAA,GAAkB,CAAC,OAAO,CAAA;AAC5B,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,CAAA,CAAE,QAAQ,GAAA,EAAK;AACjB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,IAAI,aAAA,EAAe;AACrB,UAAA,IAAI,YAAY,eAAA,EAAiB;AAC/B,YAAA,eAAA,GAAkB,IAAI,CAAA;UACxB,CAAA,MAAO;AACL,YAAA,eAAA,GAAkB,CAAC,OAAO,CAAA;AAC5B,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,uBACEzD,eAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;QACL,SAAA,EAAW,EAAA,CAAG,iBAAiB,EAAE,OAAA,EAAS,gBAAgB,IAAA,EAAM,GAAG,SAAS,CAAA;QAC5E,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;AACX,QAAA,QAAA;AACC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,KAAY,wBACXD,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,eAAA;cACV,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,aAAA,EAAY,MAAA;AAEZ,cAAA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,eAAe;AAAA;AAAA,WAAA;AAG3B,UAAA,OAAA,KAAY,mCACXA,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,eAAA;cACV,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,aAAA,EAAY,MAAA;AAEZ,cAAA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,uBAAuB;AAAA;AAAA;AAClC;AAAA;AAAA,KAAA;AAIR,EAAA;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;;;ACPvB,SAAS2D,UAAAA,CAAU,GAAS,CAAA,EAAkB;AAC5C,EAAA,OACE,EAAE,WAAA,EAAA,KAAkB,CAAA,CAAE,WAAA,MACtB,CAAA,CAAE,QAAA,EAAA,KAAe,CAAA,CAAE,UAAA,IACnB,CAAA,CAAE,OAAA,EAAA,KAAc,EAAE,OAAA,EAAA;AAEtB;AAEA,SAASC,cAAa,IAAA,EAAkB;AACtC,EAAA,OAAO,IAAI,KAAK,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,QAAA,IAAY,CAAC,CAAA;AACxD;AAEA,SAAS,WAAW,IAAA,EAAkB;AACpC,EAAA,OAAO,IAAI,IAAA,CAAK,IAAA,CAAK,WAAA,EAAA,EAAe,KAAK,QAAA,EAAA,EAAY,IAAA,CAAK,OAAA,EAAS,CAAA;AACrE;AAEA,SAAS,SAAS,IAAA,EAAkB;AAClC,EAAA,OAAO,IAAI,IAAA,CAAK,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,QAAA,EAAA,EAAY,IAAA,CAAK,OAAA,EAAA,EAAW,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AACtF;AAEA,IAAMC,UAAAA,GAAY,CAAC,QAAA,EAAU,QAAA,EAAU,WAAW,WAAA,EAAa,UAAA,EAAY,UAAU,UAAU,CAAA;AAE/F,SAAS,QAAQ,CAAA,EAAmB;AAClC,EAAA,OAAO,IAAI,EAAA,GAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,GAAG,CAAC,CAAA,CAAA;AAChC;AAEO,SAAS,UAAA,CAAW,IAAA,EAAwB,MAAA,EAAgB,QAAA,EAA2B;AAC5F,EAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAClB,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA;AACzC,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAS,CAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,CAAA;AACrC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,UAAA,EAAY,CAAA;AAEzC,EAAA,IAAI,MAAA,GAAS,MAAA,CACV,OAAA,CAAQ,MAAA,EAAQ,OAAO,IAAI,CAAC,CAAA,CAC5B,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CACnB,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEpB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,GAAS,OAAO,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,MAAM,OAAO,CAAA;AAC5D,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM;AACJ,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;IACA,QAAA,GAAW,KAAA;AACX,IAAA,MAAA,GAAS,WAAW,kBAAA,GAAqB,YAAA;IACzC,WAAA,GAAc,gBAAA;IACd,IAAA,EAAM,cAAA;IACN,WAAA,GAAc,KAAA;AACd,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAA;AAClB,EAAA,IAAI,eAAe,cAAA,IAAkB,WAAA;AACrC,EAAA,IAAI,eAAe,KAAA,GAAQD,aAAAA,CAAa,KAAK,CAAA,GAAIA,cAAa,KAAK,CAAA;AACnE,EAAA,IAAI,IAAA,GAAuB,UAAA;AAC3B,EAAA,MAAM,KAAA,GAAQ,KAAA,GAAQ,KAAA,CAAM,QAAA,EAAA,GAAa,CAAA;AACzC,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,KAAA,CAAM,UAAA,EAAA,GAAe,CAAA;AAE7C,EAAA,MAAM,SAAA,GAAY,WAAW,wBAAwB,CAAA;AACrD,EAAA,MAAM,UAAA,GAAa,WAAW,yBAAyB,CAAA;AACvD,EAAA,MAAM,MAAA,GAAS,WAAW,qBAAqB,CAAA;AAC/C,EAAA,MAAM,OAAA,GAAU,WAAW,sBAAsB,CAAA;AAEjD,EAAA,SAAS,MAAA,GAAkB;AACzB,IAAA,IAAI,cAAA,KAAmB,QAAW,OAAO,cAAA;AACzC,IAAA,OAAO,YAAA;AACT,EAAA;AAEA,EAAA,SAAS,eAAe,IAAA,EAAqB;AAC3C,IAAA,IAAI,OAAA,IAAW,IAAA,GAAO,UAAA,CAAW,OAAO,GAAG,OAAO,IAAA;AAClD,IAAA,IAAI,OAAA,IAAW,IAAA,GAAO,QAAA,CAAS,OAAO,GAAG,OAAO,IAAA;AAChD,IAAA,OAAO,KAAA;AACT,EAAA;AAEA,EAAA,SAAS,SAAA,GAA2B;AAClC,IAAA,MAAM,IAAA,GAAO,aAAa,WAAA,EAAA;AAC1B,IAAA,MAAM,KAAA,GAAQ,aAAa,QAAA,EAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,CAAA;AACrC,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,EAAA;AACvB,IAAA,MAAM,YAAY,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,IAAI,QAAQ,CAAA;AAEpD,IAAA,MAAM,OAAsB,EAAA;AAC5B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,MAAM,OAAO,IAAI,IAAA;AACf,QAAA,SAAA,CAAU,WAAA,EAAA;AACV,QAAA,SAAA,CAAU,QAAA,EAAA;AACV,QAAA,SAAA,CAAU,SAAA,GAAY;AAAA,OAAA;AAExB,MAAA,IAAA,CAAK,IAAA,CAAK;AACR,QAAA,IAAA;QACA,OAAA,EAASD,UAAAA,CAAU,MAAM,KAAK,CAAA;AAC9B,QAAA,UAAA,EAAY,KAAA,GAAQA,UAAAA,CAAU,IAAA,EAAM,KAAK,CAAA,GAAI,KAAA;QAC7C,cAAA,EAAgB,IAAA,CAAK,UAAA,KAAe,KAAA;AACpC,QAAA,UAAA,EAAY,eAAe,IAAI;OAChC,CAAA;AACH,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,YAAA,GAAe,IAAA;AACf,IAAA,YAAA,GAAe,IAAI,CAAA;AACrB,EAAA;AAEA,EAAA,SAAS,WAAA,GAAoB;AAC3B,IAAA,YAAA,GAAe,KAAA;AACf,IAAA,YAAA,GAAe,KAAK,CAAA;AACtB,EAAA;AAEA,EAAA,SAAS,YAAA,GAAqB;AAC5B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,WAAA,EAAA;IACF,CAAA,MAAO;AACL,MAAA,UAAA,EAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,WAAW,IAAA,EAAkB;AACpC,IAAA,IAAI,cAAA,CAAe,IAAI,CAAA,EAAG;AAC1B,IAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,QAAA,CAAS,KAAA,CAAM,QAAA,EAAU,CAAA;AACjC,MAAA,OAAA,CAAQ,UAAA,CAAW,KAAA,CAAM,UAAA,EAAY,CAAA;AACvC,IAAA;AACA,IAAA,QAAA,GAAW,OAAO,CAAA;AAClB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,WAAA,EAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,SAAS,CAAA,EAAiB;AACjC,IAAA,IAAI,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,EAAA,EAAI;AACrB,IAAA,MAAM,UAAU,KAAA,GAAQ,IAAI,KAAK,KAAK,CAAA,uBAAQ,IAAA,EAAA;AAC9C,IAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AAClB,IAAA,QAAA,GAAW,OAAO,CAAA;AACpB,EAAA;AAEA,EAAA,SAAS,WAAW,CAAA,EAAiB;AACnC,IAAA,IAAI,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,EAAA,EAAI;AACrB,IAAA,MAAM,UAAU,KAAA,GAAQ,IAAI,KAAK,KAAK,CAAA,uBAAQ,IAAA,EAAA;AAC9C,IAAA,OAAA,CAAQ,WAAW,CAAC,CAAA;AACpB,IAAA,QAAA,GAAW,OAAO,CAAA;AACpB,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,YAAA,GAAe,IAAI,KAAK,YAAA,CAAa,WAAA,IAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAA;AACpF,EAAA;AAEA,EAAA,SAAS,SAAA,GAAkB;AACzB,IAAA,YAAA,GAAe,IAAI,KAAK,YAAA,CAAa,WAAA,IAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAA;AACpF,EAAA;AAEA,EAAA,SAAS,QAAQ,CAAA,EAAyB;AACxC,IAAA,IAAA,GAAO,CAAA;AACT,EAAA;AAEA,EAAA,SAAS,aAAA,GAAwB;AAC/B,IAAA,OAAO,KAAA,GAAQ,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,QAAQ,CAAA,GAAI,WAAA;AACvD,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAuC;AAC3C,IAAA,CAAC,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,KAAM;AACpB,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,WAAA,EAAA;AACF,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,YAAA,GAAsE;AAC1E,IAAA,eAAA,EAAiB,MAAA,EAAA;IACjB,eAAA,EAAiB,UAAA;IACjB,eAAA,EAAiB,QAAA;IACjB,EAAA,EAAI,SAAA;IACJ,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,MAAM,aAAA,GAAuE;IAC3E,IAAA,EAAM,QAAA;IACN,YAAA,EAAc,IAAA;IACd,iBAAA,EAAmB,OAAA;IACnB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,MAAA;IACN,iBAAA,EAAmB,OAAA;IACnB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,gBAAgB,GAAA,EAAyE;AAChG,IAAA,OAAO;MACL,IAAA,EAAM,UAAA;AACN,MAAA,eAAA,EAAiB,GAAA,CAAI,UAAA;AACrB,MAAA,eAAA,EAAiB,GAAA,CAAI,UAAA;MACrB,cAAA,EAAgB,GAAA,CAAI,UAAW,MAAA,GAAmB,MAAA;MAClD,YAAA,EAAc,CAAA,EAAGE,UAAAA,CAAU,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,GAAA,CAAI,IAAA,CAAK,kBAAA,CAAmB,OAAA,EAAS;QACrF,KAAA,EAAO,MAAA;QACP,GAAA,EAAK,SAAA;QACL,IAAA,EAAM;AAAA,OACP,CAAC,CAAA;AAAA,KAAA;AAEN,EAAA;AAEA,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,IAAA,EAAM,MAAA,EAAA;MACN,YAAA,EAAc,KAAA;AACd,MAAA,IAAA;AACA,MAAA,KAAA;AACA,MAAA,OAAA;AACA,MAAA;AAAA,KAAA;AAEF,IAAA,IAAA,EAAM,SAAA,EAAA;AACN,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,gBAAA;IACA,GAAA,EAAK;MACH,OAAA,EAAS,SAAA;MACT,QAAA,EAAU,UAAA;MACV,IAAA,EAAM,MAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;AC1UO,IAAM,uBAAA,GACX,6MAAA;AAEK,IAAM,wBAAA,GACX,uFAAA;AAIK,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM,gIAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,OAAA,EAAS,EAAA;MACT,QAAA,EAAU,wDAAA;MACV,KAAA,EAAO,iCAAA;MACP,QAAA,EAAU,sDAAA;MACV,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEM,IAAM,oBAAA,GACX,4CAAA;AAEK,IAAM,yBAAA,GACX,iFAAA;;;ACJK,SAAS,UAAA,CAAW;AACzB,EAAA,KAAA;AACA,EAAA,QAAA;AACA,EAAA,OAAA;AACA,EAAA,OAAA;EACA,QAAA,GAAW,KAAA;AACX,EAAA,MAAA;AACA,EAAA,WAAA;AACA,EAAA,SAAA;EACA,QAAA,GAAW;AACb,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUC,4BAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,kBAAA,CAAA,QAAA;IAAS,MACrD,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,QAAA,EAAA,EAAY,CAAC,CAAA,GAAI,IAAI,IAAA,CAAA,iBAAK,IAAI,IAAA,EAAA,EAAO,WAAA,EAAA,EAAA,qBAAmB,IAAA,EAAA,EAAO,QAAA,EAAA,EAAY,CAAC;AAAA,GAAA;AAE1H,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAyB,UAAU,CAAA;AACjE,EAAA,MAAM,YAAA,GAAqBA,0BAAuB,IAAI,CAAA;AAEtD,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,gBAAA,CAAiB;AACf,MAAA,KAAA;AACA,MAAA,QAAA;AACA,MAAA,OAAA;AACA,MAAA,OAAA;AACA,MAAA,QAAA;AACA,MAAA,MAAA;AACA,MAAA,WAAA;AACA,MAAA,IAAA;MACA,YAAA,EAAc;KACf,CAAA;AACH,IAAA,CAAC,OAAO,QAAA,EAAU,OAAA,EAAS,SAAS,QAAA,EAAU,MAAA,EAAQ,aAAa,IAAI;AAAA,GAAA;AAItD,EAAAA,2BAAQ,MAAM;AACpB,IAAA,gBAAA,CAAiB;AAC1B,MAAA,KAAA;AACA,MAAA,OAAA;AACA,MAAA,OAAA;MACA,IAAA,EAAM;KACP,CAAA;AAED,IAAA,MAAM,UAAU,gBAAA,CAAiB;AAC/B,MAAA,KAAA;AACA,MAAA,OAAA;AACA,MAAA,OAAA;MACA,IAAA,EAAM;KACP,CAAA;AACD,IAAA,OAAO,OAAA,CAAQ,IAAA;AACjB,EAAA,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,YAAY,CAAC,CAAA;AAGpC,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,SAAS,YAAY,CAAA,EAAe;AAClC,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC5E,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACF,IAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,WAAW,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,WAAW,CAAA;EACpE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGH,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,SAAS,cAAc,CAAA,EAAkB;AACvC,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACF,IAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;EACpE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,YAAA,GAAe,IAAI,aAAA,EAAA;AAEzB,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAe;AACvC,IAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,QAAA,CAAS,KAAA,CAAM,QAAA,EAAU,CAAA;AACjC,MAAA,OAAA,CAAQ,UAAA,CAAW,KAAA,CAAM,UAAA,EAAY,CAAA;AACvC,IAAA;AACA,IAAA,QAAA,GAAW,OAAO,CAAA;AAClB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAA,CAAQ,KAAK,CAAA;AACf,IAAA;AACF,EAAA,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,KAA2C;AACpE,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,OAAO,EAAE,CAAA;AACrC,IAAA,IAAI,MAAM,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,IAAK,IAAI,EAAA,EAAI;AACjC,IAAA,MAAM,UAAU,KAAA,GAAQ,IAAI,KAAK,KAAK,CAAA,uBAAQ,IAAA,EAAA;AAC9C,IAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AAClB,IAAA,QAAA,GAAW,OAAO,CAAA;AACpB,EAAA,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAA2C;AACtE,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,OAAO,EAAE,CAAA;AACrC,IAAA,IAAI,MAAM,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,IAAK,IAAI,EAAA,EAAI;AACjC,IAAA,MAAM,UAAU,KAAA,GAAQ,IAAI,KAAK,KAAK,CAAA,uBAAQ,IAAA,EAAA;AAC9C,IAAA,OAAA,CAAQ,WAAW,CAAC,CAAA;AACpB,IAAA,QAAA,GAAW,OAAO,CAAA;AACpB,EAAA,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,aAAa,kBAAA,CAAmB,OAAA,EAAS,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,CAAA;AAE9F,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,KAAK,YAAA,EAAc,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA,EAAA;AAC/D,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,QAAA,IAAY,+BAA+B,CAAA;AAClF,QAAA,OAAA,EAAS,MAAM,CAAC,QAAA,IAAY,OAAA,CAAQ,CAAC,IAAI,CAAA;QACzC,eAAA,EAAiB,IAAA;QACjB,eAAA,EAAiB,QAAA;AACjB,QAAA;AAAA,OAAA;AAEF,MAAA;AAAA,KAAA;IAEF,IAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;QACE,SAAA,EAAW,wBAAA;QACX,IAAA,EAAM,QAAA;QACN,YAAA,EAAc;AAAA,OAAA;AAEV,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,wCAAA,EAAA;AACP,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,QAAA;AACA,UAAA;YACE,IAAA,EAAM,QAAA;YACN,SAAA,EAAW,4CAAA;AACX,YAAA,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,IAAA,CAAK,YAAA,CAAa,WAAA,EAAA,EAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAC,CAAA;YACnG,YAAA,EAAc;AAAA,WAAA;AAEhB,UAAA;AAAA,SAAA;AAEI,QAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,qBAAA,IAAyB,UAAU,CAAA;AACtE,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,QAAA;AACA,UAAA;YACE,IAAA,EAAM,QAAA;YACN,SAAA,EAAW,4CAAA;AACX,YAAA,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,IAAA,CAAK,YAAA,CAAa,WAAA,EAAA,EAAe,YAAA,CAAa,QAAA,EAAA,GAAa,CAAA,EAAG,CAAC,CAAC,CAAA;YACnG,YAAA,EAAc;AAAA,WAAA;AAEhB,UAAA;AAAA;AACF,OAAA;AAEI,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;QACA,EAAE,SAAA,EAAW,oCAAA,EAAsC,IAAA,EAAM,MAAA,EAAA;AACzD,QAAA,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,CAAE,GAAA;UAAI,CAAC,CAAA,KACxCA,iCAAc,KAAA,EAAO,EAAE,KAAK,CAAA,EAAG,SAAA,EAAW,gDAAA,EAAA,EAAoD,CAAC;AAAA,SAAA;AAEvG,QAAA,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM;AACvB,UAAA,IAAI,KAAA,GAAmE,SAAA;AACvE,UAAA,IAAI,GAAA,CAAI,YAAY,KAAA,GAAQ,UAAA;AACnB,eAAA,IAAA,GAAA,CAAI,YAAY,KAAA,GAAQ,UAAA;AACxB,eAAA,IAAA,GAAA,CAAI,SAAS,KAAA,GAAQ,OAAA;mBACrB,CAAC,GAAA,CAAI,gBAAgB,KAAA,GAAQ,SAAA;AAEtC,UAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,YAAA,QAAA;AACA,YAAA;cACE,GAAA,EAAK,CAAA;cACL,IAAA,EAAM,QAAA;cACN,SAAA,EAAW,qBAAA,CAAsB,EAAE,KAAA,EAAO,CAAA;AAC1C,cAAA,OAAA,EAAS,MAAM,CAAC,GAAA,CAAI,UAAA,IAAc,gBAAA,CAAiB,IAAI,IAAI,CAAA;AAC3D,cAAA,QAAA,EAAU,GAAA,CAAI,UAAA;AACd,cAAA,eAAA,EAAiB,GAAA,CAAI,UAAA;AACrB,cAAA,eAAA,EAAiB,GAAA,CAAI;AAAA,aAAA;AAEvB,YAAA,GAAA,CAAI,KAAK,OAAA;AAAQ,WAAA;QAErB,CAAC;AAAA,OAAA;MAEH,QAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,oBAAA,EAAA;AACP,QAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,+BAAA,IAAmC,OAAO,CAAA;AAC7E,QAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;UAC3B,IAAA,EAAM,QAAA;UACN,GAAA,EAAK,CAAA;UACL,GAAA,EAAK,EAAA;UACL,KAAA,EAAO,KAAA,GAAQ,KAAA,CAAM,QAAA,EAAA,GAAa,CAAA;UAClC,QAAA,EAAU,iBAAA;UACV,SAAA,EAAW,yBAAA;UACX,YAAA,EAAc;SACf,CAAA;AACK,QAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,uBAAA,IAA2B,GAAG,CAAA;AACjE,QAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;UAC3B,IAAA,EAAM,QAAA;UACN,GAAA,EAAK,CAAA;UACL,GAAA,EAAK,EAAA;UACL,KAAA,EAAO,KAAA,GAAQ,KAAA,CAAM,UAAA,EAAA,GAAe,CAAA;UACpC,QAAA,EAAU,mBAAA;UACV,SAAA,EAAW,yBAAA;UACX,YAAA,EAAc;SACf;AAAA;AACH;AACJ,GAAA;AAEN;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;ACzJzB,IAAM,aAAA,GAAwC;EAC5C,EAAA,EAAI,YAAA;EACJ,GAAA,EAAK,YAAA;EACL,EAAA,EAAI,YAAA;EACJ,GAAA,EAAK,YAAA;EACL,EAAA,EAAI,QAAA;EACJ,EAAA,EAAI,IAAA;EACJ,EAAA,EAAI,MAAA;EACJ,EAAA,EAAI,MAAA;EACJ,IAAA,EAAM,MAAA;EACN,KAAA,EAAO,OAAA;EACP,EAAA,EAAI,QAAA;EACJ,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,GAAA,EAAK,KAAA;EACL,CAAA,EAAG,GAAA;EACH,KAAA,EAAO,OAAA;EACP,IAAA,EAAM,MAAA;EACN,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,MAAA;EACL,EAAA,EAAI,UAAA;EACJ,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,IAAA,EAAM,MAAA;EACN,GAAA,EAAK,KAAA;EACL,EAAA,EAAI,OAAA;EACJ,IAAA,EAAM,OAAA;EACN,GAAA,EAAK,OAAA;EACL,GAAA,EAAK,KAAA;EACL,IAAA,EAAM,MAAA;EACN,KAAA,EAAO,UAAA;EACP,UAAA,EAAY,YAAA;EACZ,GAAA,EAAK,KAAA;EACL,CAAA,EAAG;AACL,CAAA;AAEA,SAAS,mBAAmB,QAAA,EAA0B;AACpD,EAAA,MAAM,GAAA,GAAM,SAAS,KAAA,CAAM,GAAG,EAAE,GAAA,EAAA,EAAO,aAAA,IAAiB,EAAA;AACxD,EAAA,MAAM,QAAA,GAAW,SAAS,KAAA,CAAM,GAAG,EAAE,GAAA,EAAA,EAAO,aAAA,IAAiB,EAAA;AAC7D,EAAA,IAAI,QAAA,KAAa,cAAc,OAAO,YAAA;AACtC,EAAA,OAAO,aAAA,CAAc,GAAG,CAAA,IAAK,WAAA;AAC/B;AAMA,IAAM,WAAA,GAA8C;EAClD,KAAA,EAAO,WAAA;;EACP,QAAA,EAAU,WAAA;;EACV,OAAA,EAAS,WAAA;;EACT,OAAA,EAAS;;AACX,CAAA;AAaO,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM;AACJ,IAAA,KAAA,GAAQ,EAAA;IACR,eAAA,GAAkB,CAAA;IAClB,QAAA,GAAW,cAAA;IACX,KAAA,GAAQ,MAAA;AACR,IAAA,QAAA;IACA,WAAA,GAAc,IAAA;AACd,IAAA,YAAA;AACA,IAAA,gBAAA;AACA,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,IAAI,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,eAAA,EAAiB,IAAA,CAAK,IAAI,CAAA,EAAG,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA;AAC1E,EAAA,IAAI,eAAA,GAAkB,QAAA;AACtB,EAAA,IAAI,kBAAA,GAAqB,WAAA;AAEzB,EAAA,MAAM,KAAA,GAAyB;IAC7B,eAAA,EAAiB,YAAA;IACjB,QAAA,EAAU,eAAA;AACV,IAAA,KAAA;IACA,QAAA,EAAU,QAAA,KAAa,MAAM,YAAY,CAAA,GAAI,mBAAmB,KAAA,CAAM,YAAY,CAAA,CAAE,IAAI,CAAA,GAAI,WAAA,CAAA;IAC5F,WAAA,EAAa,kBAAA;AACb,IAAA;AAAA,GAAA;AAGF,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,MAAM,cAAA,GAAyC;IAC7C,gBAAA,EAAkB,eAAA;IAClB,YAAA,EAAc,KAAA;IACd,iBAAA,EAAmB,MAAA,CAAO,MAAM,MAAM;AAAA,GAAA;AAGxC,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,cAAA,CAAe,wBAAwB,CAAA,GAAI,EAAA;AAC7C,EAAA;AAEA,EAAA,SAAS,WAAW,KAAA,EAAe;AACjC,IAAA,IAAI,KAAA,IAAS,CAAA,IAAK,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ;AACtC,MAAA,YAAA,GAAe,KAAA;AACf,MAAA,KAAA,CAAM,eAAA,GAAkB,KAAA;AACxB,MAAA,KAAA,CAAM,WAAW,QAAA,IAAY,kBAAA,CAAmB,KAAA,CAAM,KAAK,EAAE,IAAI,CAAA;AACjE,MAAA,YAAA,GAAe,KAAK,CAAA;AACtB,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,QAAA,GAAW;AAClB,IAAA,IAAI,YAAA,GAAe,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AACnC,MAAA,UAAA,CAAW,eAAe,CAAC,CAAA;AAC7B,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,QAAA,GAAW;AAClB,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,UAAA,CAAW,eAAe,CAAC,CAAA;AAC7B,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,cAAA,GAAiB;AACxB,IAAA,eAAA,GAAkB,eAAA,KAAoB,iBAAiB,QAAA,GAAW,cAAA;AAClE,IAAA,KAAA,CAAM,QAAA,GAAW,eAAA;AACjB,IAAA,cAAA,CAAe,gBAAgB,CAAA,GAAI,eAAA;AACnC,IAAA,gBAAA,GAAmB,eAAe,CAAA;AACpC,EAAA;AAEA,EAAA,SAAS,aAAA,GAAgB;AACvB,IAAA,kBAAA,GAAqB,CAAC,kBAAA;AACtB,IAAA,KAAA,CAAM,WAAA,GAAc,kBAAA;AACpB,IAAA,IAAI,kBAAA,EAAoB;AACtB,MAAA,OAAO,eAAe,wBAAwB,CAAA;IAChD,CAAA,MAAO;AACL,MAAA,cAAA,CAAe,wBAAwB,CAAA,GAAI,EAAA;AAC7C,IAAA;AACA,IAAA,eAAA,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,OAAO,KAAA,CAAM,OAAO,CAAC,GAAA,EAAK,MAAM,GAAA,GAAM,CAAA,CAAE,WAAW,CAAC,CAAA;AACtD,EAAA;AAEA,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,OAAO,KAAA,CAAM,OAAO,CAAC,GAAA,EAAK,MAAM,GAAA,GAAM,CAAA,CAAE,WAAW,CAAC,CAAA;AACtD,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,KAAA;AACA,IAAA,SAAA;AACA,IAAA,cAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,kBAAA;AACA,IAAA,iBAAA,EAAmB,CAAC,MAAA,KAA2B,WAAA,CAAY,MAAM,CAAA,IAAK,QAAA;AACtE,IAAA,cAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC3PO,IAAM,gBAAA,GAAkC;EAC7C,IAAA,EAAM,aAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,wBAAA,EAAA;AAC3C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,wBAAA,EAAA;AAC3C,IAAA,SAAA,EAAW,EAAE,QAAA,EAAU,uBAAA,EAAyB,QAAA,EAAU,mBAAA,EAAA;AAC1D,IAAA,QAAA,EAAU,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,mBAAA,EAAA;AACxD,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,oBAAA,EAAA;AACnD,IAAA,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,yBAAA,EAAA;AAClD,IAAA,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,yBAAA,EAAA;AAClD,IAAA,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,SAAA,EAAA;AAClD,IAAA,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,SAAA,EAAA;AAClD,IAAA,SAAA,EAAW,EAAE,QAAA,EAAU,sBAAA,EAAwB,QAAA,EAAU,qBAAA,EAAA;AACzD,IAAA,WAAA,EAAa,EAAE,QAAA,EAAU,yBAAA,EAA2B,QAAA,EAAU,gCAAA;AAAiC;AAEnG;AAEO,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,iDAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,KAAA,EAAO,wBAAA;MACP,IAAA,EAAM;AAAA,KAAA;IAER,UAAA,EAAY;MACV,MAAA,EAAQ,UAAA;MACR,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO,MAAA;IACP,UAAA,EAAY;AAAA;AAEhB,CAAC;AAEM,IAAMC,mBAAkB,GAAA,CAAI;EACjC,IAAA,EAAM,sCAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,KAAA,EAAO,4BAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEM,IAAMC,uBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,gEAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,MAAA,EAAQ,4BAAA;MACR,OAAA,EAAS;AAAA,KAAA;IAEX,KAAA,EAAO;MACL,KAAA,EAAO,EAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,gBAAA,EAAkB;AAChB,IAAA,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,2BAAA,EAAA;AACxC,IAAA,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,OAAO,oCAAA,EAAA;AACzC,IAAA,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAO,0BAAA,EAAA;AACzC,IAAA,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,OAAO,iCAAA;AAAkC,GAAA;EAE9E,eAAA,EAAiB;IACf,MAAA,EAAQ,OAAA;IACR,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEM,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,wDAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,KAAA,EAAO,4BAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,cAAc,GAAA,CAAI;EAC7B,IAAA,EAAM,0FAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,MAAA,EAAQ,EAAA;MACR,OAAA,EAAS;AAAA,KAAA;IAEX,KAAA,EAAO;MACL,KAAA,EAAO,iBAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,gBAAA,EAAkB;AAChB,IAAA,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,oDAAA,EAAA;AACxC,IAAA,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,OAAO,eAAA,EAAA;AACzC,IAAA,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAO,8CAAA,EAAA;AACzC,IAAA,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,OAAO,eAAA;AAAgB,GAAA;EAE5D,eAAA,EAAiB;IACf,MAAA,EAAQ,OAAA;IACR,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,6EAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,KAAA,EAAO,wBAAA;MACP,IAAA,EAAM;AAAA;AACR,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AC7DD,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,IAAA;EAAK,MAClC,OAAO,sBAAsB,CAAA,CAAE,IAAA,CAAK,CAAC,OAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,EAAA,CAAa;AACxE,CAAA;AAMO,IAAM,UAAA,GAAmBA,kBAAA,CAAA,UAAA;EAC9B,CACE;AACE,IAAA,KAAA;IACA,QAAA,GAAW,EAAA;IACX,QAAA,GAAW,EAAA;AACX,IAAA,QAAA;IACA,WAAA,GAAc,SAAA;IACd,KAAA,GAAQ,MAAA;AACR,IAAA,QAAA,EAAU,kBAAA,GAAqB,cAAA;IAC/B,WAAA,GAAc,IAAA;IACd,QAAA,GAAW,IAAA;IACX,aAAA,GAAgB,IAAA;IAChB,YAAA,GAAe,GAAA;AACf,IAAA,eAAA,EAAiB,eAAA,GAAkB,CAAA;AACnC,IAAA,YAAA;AACA,IAAA,gBAAA;AACA,IAAA,cAAA;AACA,IAAA,eAAA;AACA,IAAA,SAAA;AACA,IAAA;AAAA,GAAA,EAEF,GAAA,KACG;AACH,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,4BAAS,eAAe,CAAA;AAChE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,4BAAS,WAAW,CAAA;AAChE,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,4BAAuB,kBAAkB,CAAA;AAGzE,IAAAA,6BAAU,MAAM,YAAA,CAAa,eAAe,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAChE,IAAAA,6BAAU,MAAM,WAAA,CAAY,kBAAkB,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAE3E,IAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,MAAA,MACE,gBAAA,CAAiB;AACf,QAAA,KAAA;QACA,eAAA,EAAiB,SAAA;AACjB,QAAA,QAAA;AACA,QAAA,KAAA;AACA,QAAA,QAAA;AACA,QAAA,WAAA;AACA,QAAA,YAAA,EAAc,CAAC,CAAA,KAAc;AAC3B,UAAA,YAAA,CAAa,CAAC,CAAA;AACd,UAAA,YAAA,GAAe,CAAC,CAAA;AAClB,QAAA,CAAA;AACA,QAAA,gBAAA,EAAkB,CAAC,CAAA,KAAoB;AACrC,UAAA,WAAA,CAAY,CAAC,CAAA;AACb,UAAA,gBAAA,GAAmB,CAAC,CAAA;AACtB,QAAA,CAAA;AACA,QAAA,eAAA,EAAiB,MAAM,cAAA,CAAe,CAAC,CAAA,KAAM,CAAC,CAAC;OAChD,CAAA;AACH,MAAA,CAAC,OAAO,SAAA,EAAW,QAAA,EAAU,OAAO,QAAA,EAAU,WAAA,EAAa,cAAc,gBAAgB;AAAA,KAAA;AAG3F,IAAA,MAAM,UAAA,GAAa,MAAM,SAAS,CAAA;AAClC,IAAA,MAAM,eAAe,QAAA,KAAa,UAAA,GAAa,IAAI,kBAAA,CAAmB,UAAA,CAAW,IAAI,CAAA,GAAI,WAAA,CAAA;AAGnF,IAAAA,6BAAU,MAAM;AACpB,MAAA,SAAS,MAAM,CAAA,EAAkB;AAC/B,QAAA,IAAI,CAAA,CAAE,MAAA,YAAkB,gBAAA,IAAoB,CAAA,CAAE,kBAAkB,mBAAA,EAAqB;AACrF,QAAA,IAAI,CAAA,CAAE,QAAQ,GAAA,EAAK;AACjB,UAAA,YAAA,CAAa,CAAC,CAAA,KAAM;AAClB,YAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG,KAAA,CAAM,SAAS,CAAC,CAAA;AAC7C,YAAA,YAAA,GAAe,IAAI,CAAA;AACnB,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;QACH,CAAA,MAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACxB,UAAA,YAAA,CAAa,CAAC,CAAA,KAAM;AAClB,YAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,GAAG,CAAC,CAAA;AAC9B,YAAA,YAAA,GAAe,IAAI,CAAA;AACnB,YAAA,OAAO,IAAA;UACT,CAAC,CAAA;QACH,CAAA,MAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACxB,UAAA,cAAA,CAAe,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAC1B,QAAA;AACF,MAAA;AACA,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,KAAK,CAAA;AACxC,MAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,KAAK,CAAA;AAC1D,IAAA,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAY,CAAC,CAAA;AAE/B,IAAA,uBACEhE,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,mBAAmB,EAAE,KAAA,EAAO,YAAY,MAAA,EAAQ,GAAG,SAAS,CAAA;AACzE,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QAGR,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAA,EAE/C,QAAA,EAAA;AAAA,YAAA,WAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW8D,gBAAAA,CAAgB,EAAE,KAAA,EAAO,GAAG,KAAA,EAAO,EAAE,KAAA,EAAO,YAAA,IAC1D,QAAA,EAAA;AAAA,8BAAA9D,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wFAAuF,QAAA,EAAA;AAAA,gBAAA,SAAA;gBAC5F,KAAA,CAAM,MAAA;AAAO,gBAAA;AAAA,eAAA,EACvB,CAAA;cACC,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,gBAAA,MAAM,SAAS,CAAA,KAAM,SAAA;AACrB,gBAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,MAAS,CAAA,CAAE,IAAA;AAC3C,gBAAA,MAAM,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACnD,gBAAA,uBACEA,eAAAA;AAAC,kBAAA,KAAA;AAAA,kBAAA;AAEC,oBAAA,OAAA,EAAS,MAAM;AACb,sBAAA,YAAA,CAAa,CAAC,CAAA;AACd,sBAAA,YAAA,GAAe,CAAC,CAAA;AAClB,oBAAA,CAAA;AACA,oBAAA,SAAA,EAAW+D,qBAAoB,EAAE,MAAA,EAAQ,SAAS,MAAA,GAAS,OAAA,EAAS,OAAO,CAAA;oBAE3E,QAAA,EAAA;AAAA,sCAAA/D,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,EAAA;wCAAAD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,GAAA,CAAI,iBAAA,CAAkB,CAAA,CAAE,MAAM,CAAA,EAAE,CAAA;wCAAAA,cAAAA,CAC9D,QAAA,EAAK,SAAA,EAAW,SAAS,EAAA,GAAK,YAAA,EAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AACpD,wCAAAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBACd,QAAA,EAAA;AAAA,0CAAAA,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAiB,QAAA,EAAA;AAAA,4BAAA,GAAA;4BAAE,CAAA,CAAE;AAAA,2BAAA,EAAU,CAAA;0BAC9C,CAAA,CAAE,SAAA,GAAY,qBAAKA,eAAAA,CAAC,QAAA,EAAK,SAAA,EAAU,gBAAe,QAAA,EAAA;AAAA,4BAAA,GAAA;4BAAE,CAAA,CAAE;AAAA,2BAAA,EAAU;AAAA,yBAAA,EACnE;AAAA,uBAAA,EACF,CAAA;sBACC,GAAA,oBACCD,eAAC,KAAA,EAAA,EAAI,WAAU,oCAAA,EAAsC,QAAA,EAAA,KAAI;AAAA;AAAA,mBAAA;kBAhBtD,CAAA,CAAE;AAAA,iBAAA;cAoBb,CAAC;AAAA,aAAA,EACH,CAAA;AAIF,4BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,QAAA,IAExE,QAAA,EAAA;AAAA,cAAA,QAAA,IAAY,8BACXD,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,cAAA,CAAe,EAAE,KAAA,EAAO,GACrC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,gBAAA,MAAM,SAAS,CAAA,KAAM,SAAA;AACrB,gBAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,MAAS,CAAA,CAAE,IAAA;AAC3C,gBAAA,uBACEC,eAAAA;AAAC,kBAAA,KAAA;AAAA,kBAAA;AAEC,oBAAA,OAAA,EAAS,MAAM;AACb,sBAAA,YAAA,CAAa,CAAC,CAAA;AACd,sBAAA,YAAA,GAAe,CAAC,CAAA;AAClB,oBAAA,CAAA;AACA,oBAAA,SAAA,EAAW,YAAY,EAAE,MAAA,EAAQ,SAAS,MAAA,GAAS,OAAA,EAAS,OAAO,CAAA;oBAEnE,QAAA,EAAA;sCAAAD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAA,EAAc,QAAA,EAAA,GAAA,CAAI,iBAAA,CAAkB,CAAA,CAAE,MAAM,CAAA,EAAE,CAAA;AAC7D,sBAAA;AAAA;AAAA,mBAAA;kBARI,CAAA,CAAE;AAAA,iBAAA;AAWb,cAAA,CAAC,GACH,CAAA;8BAAAA,cAAAA,CAID,OAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAA,EAClB,QAAA,kBAAAA,cAAAA;AAAO,gBAAAiE,kBAAA,CAAA,QAAA;AAAN,gBAAA;kBACC,QAAA,kBACEjE,eAAC,KAAA,EAAA,EAAI,WAAU,4DAAA,EAA6D,QAAA,EAAA,qBAE5E,CAAA;AAGF,kBAAA,QAAA,kBAAAA,cAAAA;AAAC,oBAAA,gBAAA;AAAA,oBAAA;AACC,sBAAA,QAAA;AACA,sBAAA,QAAA;sBACA,QAAA,EAAU,YAAA;sBACV,KAAA,EAAO,WAAA;sBACP,OAAA,EAAS;wBACP,QAAA,EAAU,IAAA;AACV,wBAAA,gBAAA,EAAkB,QAAA,KAAa,cAAA;AAC/B,wBAAA,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG,YAAY,WAAA,EAAA;wBAChD,QAAA,EAAU,EAAA;wBACV,UAAA,EAAY,EAAA;wBACZ,UAAA,EAAY,4DAAA;wBACZ,aAAA,EAAe,IAAA;wBACf,oBAAA,EAAsB,KAAA;wBACtB,mBAAA,EAAqB,IAAA;AACrB,wBAAA,SAAA,EAAW,EAAE,qBAAA,EAAuB,EAAA,EAAI,uBAAA,EAAyB,EAAA,EAAA;AACjE,wBAAA,OAAA,EAAS,EAAE,GAAA,EAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAA;wBAC3B,gBAAA,EAAkB,WAAA;wBAClB,uBAAA,EAAyB,EAAE,SAAS,IAAA,EAAA;wBACpC,MAAA,EAAQ,EAAE,aAAa,IAAA,EAAA;wBACvB,eAAA,EAAiB,IAAA;wBACjB,cAAA,EAAgB,QAAA;wBAChB,GAAG;AAAA;AACL;AAAA;AACF;AAAA,eAAA,EAEJ;AAAA,aAAA,EACF;AAAA,WAAA,EACF,CAAA;UAGC,aAAA,oBAAAC,eAAAA,CACE,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAkB,EAAE,KAAA,EAAO,CAAA,EACxC,QAAA,EAAA;AAAA,YAAA,cAAA,oBAAkBD,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,gBAAe,CAAA;AACxC,YAAA,UAAA,oBAAcA,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,UAAA,CAAW,MAAK,CAAA;4BAAAC,eAAAA,CACrC,QAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,IAAU,QAAA,EAAA;AAAA,cAAA,GAAA;AACjC,cAAA,GAAA,CAAI,cAAA,EAAA;AAAiB,cAAA,IAAA;AAAG,cAAA,GAAA,CAAI,cAAA;AAAe,aAAA,EAC/C,CAAA;AACC,YAAA,eAAA,oBAAmBD,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,iBAAgB,CAAA;4BAAAC,eAAAA,CAC1C,MAAA,EAAA,EACE,QAAA,EAAA;cAAA,KAAA,CAAM,MAAA;AAAO,cAAA,GAAA;cAAE,KAAA,CAAM,MAAA,KAAW,IAAI,MAAA,GAAS;AAAA,aAAA,EAChD;AAAA,WAAA,EACF;AAAA;AAAA;AAAA,KAAA;AAIR,EAAA;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;ACrQlB,IAAM,UAAA,GAAkD;EAC7D,OAAA,EAAS;IACP,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,MAAM,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,6BAAA,EAA+B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAC3G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,iCAAA,EAAmC,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,KAAK,CAAA,EAAA;IAC7G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA,EAAA;IACnG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,yBAAA,EAA2B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IACvG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,0BAAA,EAA4B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,SAAA,EAAW,OAAO,CAAA,EAAA;IAC1G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,+BAAA,EAAiC,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA,EAAA;AACnH,IAAA,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,wBAAA,EAA0B,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA,EAAA;IAClH,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,uBAAA,EAAyB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,SAAS,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gCAAA,EAAkC,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAC9G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,wBAAA,EAA0B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,UAAU,CAAA,EAAA;IACzG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,0BAAA,EAA4B,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAO,CAAA,EAAA;IAChH,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,8BAAA,EAAgC,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC3G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,KAAK,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,qBAAA,EAAuB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,cAAA,EAAgB,UAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAM,CAAA,EAAA;IAClF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,+BAAA,EAAiC,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IAC3G,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,gCAAA,EAAkC,UAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAM,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,oBAAA,EAAsB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,WAAW,CAAA,EAAA;IACtG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,0BAAA,EAA4B,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,QAAA,EAAU,MAAA,EAAQ,OAAO,CAAA,EAAA;IACjH,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,4BAAA,EAA8B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IAC3G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IAC/F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,KAAA,EAAO,MAAM,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,KAAK,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,QAAA,EAAU,OAAA,EAAS,KAAK,CAAA,EAAA;IACzG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,0BAAA,EAA4B,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,WAAA,EAAa,OAAO,CAAA,EAAA;IAC5G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,KAAA,EAAO,SAAS,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,qBAAA,EAAuB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,gBAAgB,CAAA;AAAE,GAAA;EAEhH,MAAA,EAAQ;AACN,IAAA,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,KAAK,CAAA,EAAA;IACtG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,qBAAA,EAAuB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAU,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,2BAAA,EAA6B,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA,EAAA;IACzG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAW,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,WAAW,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,IAAA,EAAM,SAAA,EAAW,MAAM,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,SAAA,EAAW,GAAG,CAAA,EAAA;IAC/F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,iBAAA,EAAmB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,8BAAA,EAAgC,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC1G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,+BAAA,EAAiC,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAC5G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,4BAAA,EAA8B,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,IAAA,EAAM,OAAO,CAAA,EAAA;IACtG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,8BAAA,EAAgC,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC1G,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,IAAA,EAAM,OAAO,CAAA,EAAA;AAC1F,IAAA,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,UAAU,CAAA,EAAA;IAC5G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,SAAA,EAAW,IAAA,EAAM,YAAY,CAAA,EAAA;IACvG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,WAAW,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,kBAAA,EAAoB,UAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAM,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,mBAAA,EAAqB,UAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAM,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAA,EAAY,OAAO,CAAA,EAAA;IACxG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,WAAA,EAAa,QAAQ,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACxF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,QAAQ,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAO,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAA,EAAU,WAAW,CAAA;AAAE,GAAA;EAE5G,MAAA,EAAQ;IACN,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,KAAA,EAAO,OAAA,EAAS,KAAK,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,KAAA,EAAO,QAAA,EAAU,KAAK,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,SAAA,EAAW,KAAK,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,QAAQ,CAAA,EAAA;IACjF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,QAAQ,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,QAAQ,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,QAAQ,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,QAAQ,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,SAAA,EAAW,QAAQ,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,SAAA,EAAW,QAAQ,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,WAAA,EAAa,QAAQ,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,MAAM,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,gBAAA,EAAkB,UAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAM,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,QAAQ,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,QAAA,EAAU,MAAA,EAAQ,MAAM,CAAA;AAAE,GAAA;EAE/F,IAAA,EAAM;IACJ,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAClF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACpF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,YAAA,EAAc,OAAO,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACpF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,YAAA,EAAc,OAAO,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAClF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,WAAA,EAAa,OAAO,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,WAAW,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACjF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA,EAAA;IAClF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,SAAA,EAAW,SAAS,CAAA,EAAA;IACxF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,WAAW,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,SAAA,EAAW,MAAM,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,UAAU,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,WAAA,EAAa,OAAO,CAAA,EAAA;IAC9F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,OAAA,EAAS,SAAS,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,SAAS,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,CAAC,QAAA,EAAU,KAAA,EAAO,OAAO,CAAA,EAAA;IAC9F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IACpF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,QAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAE,GAAA;EAE1F,MAAA,EAAQ;IACN,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,OAAO,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,KAAK,CAAA,EAAA;IAChF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,SAAS,CAAA,EAAA;IAClF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACxF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,EAAO,QAAQ,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,QAAA,EAAU,OAAA,EAAS,QAAQ,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,KAAA,EAAO,OAAO,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACnF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,iBAAA,EAAmB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,QAAA,EAAU,UAAA,EAAY,MAAM,CAAA,EAAA;IAC1G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,WAAW,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,UAAA,EAAY,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,6BAAA,EAA+B,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA,EAAA;IACnH,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,wBAAA,EAA0B,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA,EAAA;IAC9G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,8BAAA,EAAgC,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA,EAAA;IACpH,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA,EAAA;IACnG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA,EAAA;IAC/G,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,UAAA,EAAY,QAAQ,CAAA,EAAA;IACxF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,qBAAA,EAAuB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,OAAA,EAAS,UAAU,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,UAAU,QAAA,EAAU,CAAC,QAAA,EAAU,UAAU,CAAA;AAAE,GAAA;EAEpG,UAAA,EAAY;IACV,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,YAAA,EAAc,QAAA,EAAU,CAAC,QAAA,EAAU,UAAA,EAAY,OAAO,CAAA,EAAA;IACxG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,YAAA,EAAc,OAAO,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,UAAA,EAAY,OAAO,CAAA,EAAA;IACvG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,UAAA,EAAY,OAAO,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,YAAA,EAAc,OAAO,CAAA,EAAA;IAClG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,cAAA,EAAgB,OAAO,CAAA,EAAA;IACnG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,QAAA,EAAU,CAAC,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,YAAA,EAAc,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC7G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,oBAAA,EAAsB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,QAAA,EAAU,QAAQ,CAAA,EAAA;IACvG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,QAAA,EAAU,MAAM,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IAC9F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAChG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,YAAA,EAAc,QAAA,EAAU,CAAC,SAAA,EAAW,MAAA,EAAQ,KAAK,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,cAAc,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA;AAAE,GAAA;EAEnG,OAAA,EAAS;IACP,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,QAAA,EAAU,MAAM,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,QAAA,EAAU,UAAU,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,UAAA,EAAY,SAAS,CAAA,EAAA;IACrG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,UAAA,EAAY,MAAM,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,IAAA,EAAM,YAAY,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,SAAS,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,UAAA,EAAY,MAAM,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,WAAA,EAAa,OAAO,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,KAAA,EAAO,SAAS,CAAA,EAAA;IACvF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,WAAA,EAAa,QAAQ,CAAA,EAAA;IAC9F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,KAAA,EAAO,MAAM,CAAA,EAAA;IAChF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAA;IACtF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,QAAA,EAAU,MAAM,CAAA,EAAA;IACxF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,8BAAA,EAAgC,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,QAAA,EAAU,MAAM,CAAA,EAAA;IAC5G,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA,EAAA;IAC/F,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,UAAA,EAAY,MAAA,EAAQ,QAAQ,CAAA;AAAE,GAAA;EAEjG,OAAA,EAAS;IACP,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACrF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,OAAO,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAM,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,KAAA,EAAO,SAAA,EAAW,OAAO,CAAA,EAAA;IACvG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAW,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAA;IACpF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,SAAA,EAAW,OAAA,EAAS,MAAM,CAAA,EAAA;IAC/F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,EAAA;IAC1F,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA,EAAA;IACpG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,IAAA,EAAM,OAAA,EAAS,GAAG,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,aAAA,EAAe,SAAA,EAAW,OAAO,CAAA,EAAA;IAC9G,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,eAAA,EAAiB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,UAAA,EAAY,MAAM,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,IAAA,EAAM,WAAA,EAAa,MAAM,CAAA,EAAA;IACnG,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,kBAAA,EAAoB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,SAAA,EAAW,OAAO,CAAA,EAAA;IAC/F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,QAAA,EAAU,MAAA,EAAQ,SAAS,CAAA,EAAA;IACzG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,iBAAA,EAAmB,QAAA,EAAU,WAAW,QAAA,EAAU,CAAC,SAAA,EAAW,OAAO,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,CAAC,MAAA,EAAQ,cAAA,EAAgB,OAAO,CAAA;AAAE,GAAA;EAEvG,KAAA,EAAO;IACL,EAAE,KAAA,EAAO,oBAAA,EAAsB,IAAA,EAAM,qBAAA,EAAuB,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,CAAC,IAAA,EAAM,KAAA,EAAO,SAAS,CAAA,EAAA;IAChH,EAAE,KAAA,EAAO,oBAAA,EAAsB,IAAA,EAAM,sBAAA,EAAwB,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,CAAC,IAAA,EAAM,SAAA,EAAW,SAAS,CAAA,EAAA;IACrH,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,iBAAA,EAAmB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,WAAW,CAAA,EAAA;IACjG,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,aAAA,EAAe,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,eAAA,EAAiB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,SAAS,CAAA,EAAA;IAC7F,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,aAAA,EAAe,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,oBAAA,EAAsB,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAU,SAAS,QAAA,EAAU,CAAC,OAAA,EAAS,aAAa,CAAA,EAAA;IAC9G,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,aAAA,EAAe,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,aAAA,EAAe,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAC3F,EAAE,KAAA,EAAO,sBAAsB,IAAA,EAAM,aAAA,EAAe,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,OAAO,CAAA,EAAA;IACzF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,gBAAA,EAAkB,QAAA,EAAU,SAAS,QAAA,EAAU,CAAC,QAAA,EAAU,MAAM,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,SAAS,QAAA,EAAU,CAAC,WAAA,EAAa,OAAO,CAAA,EAAA;IAC5F,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,YAAA,EAAc,UAAU,OAAA,EAAS,QAAA,EAAU,CAAC,QAAQ,CAAA,EAAA;IAChF,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,iBAAA,EAAmB,QAAA,EAAU,SAAS,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAE;AAEnG;AAGO,IAAM,gBAAA,GAAoC;AAC/C,EAAA,SAAA;AACA,EAAA,QAAA;AACA,EAAA,QAAA;AACA,EAAA,MAAA;AACA,EAAA,QAAA;AACA,EAAA,YAAA;AACA,EAAA,SAAA;AACA,EAAA,SAAA;AACA,EAAA;AACF;AAGO,IAAM,eAAA,GAAiD;EAC5D,OAAA,EAAS,mBAAA;EACT,MAAA,EAAQ,eAAA;EACR,MAAA,EAAQ,kBAAA;EACR,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ,iBAAA;EACR,UAAA,EAAY,YAAA;EACZ,OAAA,EAAS,SAAA;EACT,OAAA,EAAS,SAAA;EACT,KAAA,EAAO;AACT;AAGO,SAAS,YAAA,GAA6B;AAC3C,EAAA,OAAO,iBAAiB,OAAA,CAAQ,CAAC,GAAA,KAAQ,UAAA,CAAW,GAAG,CAAC,CAAA;AAC1D;AClOA,IAAM,cAAA,GAAgD;EACpD,OAAA,EAAS,WAAA;EACT,MAAA,EAAQ,WAAA;EACR,MAAA,EAAQ,WAAA;EACR,IAAA,EAAM,WAAA;EACN,MAAA,EAAQ,WAAA;EACR,UAAA,EAAY,QAAA;EACZ,OAAA,EAAS,WAAA;EACT,OAAA,EAAS,QAAA;EACT,KAAA,EAAO;AACT,CAAA;AAEO,SAAS,iBAAA,CAAkB,KAAA,GAA0B,EAAA,EAAoB;AAC9E,EAAA,MAAM;AACJ,IAAA,QAAA;AACA,IAAA,MAAA,EAAQ,aAAA,GAAgB,EAAA;AACxB,IAAA,YAAA,EAAc,gBAAgB,EAAA;IAC9B,SAAA,GAAY;GAAA,GACV,KAAA;AAEJ,EAAA,IAAI,WAAA,GAAc,aAAA;AAClB,EAAA,IAAI,cAAA,GAAgC,SAAA;AACpC,EAAA,IAAI,eAAe,CAAC,GAAG,aAAa,CAAA,CAAE,KAAA,CAAM,GAAG,SAAS,CAAA;AAExD,EAAA,MAAM,WAAA,GAAc,WAAW,kBAAkB,CAAA;AACjD,EAAA,MAAM,QAAA,GAAW,WAAW,kBAAkB,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,WAAW,gBAAgB,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAE5C,EAAA,SAAS,iBAAA,GAAkC;AACzC,IAAA,IAAI,WAAA,CAAY,MAAA,EAAQ;AACtB,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,WAAA,EAAA,CAAc,IAAA,EAAA;AACxC,MAAA,OAAO,cAAA,CAAe,MAAA;AACpB,QAAA,CAAC,UACC,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA,IACvC,KAAA,CAAM,QAAA,CAAS,IAAA,CAAK,CAAC,EAAA,KAAO,EAAA,CAAG,aAAA,CAAc,QAAA,CAAS,KAAK,CAAC;AAAA,OAAA;AAElE,IAAA;AACA,IAAA,OAAO,WAAW,cAAc,CAAA;AAClC,EAAA;AAEA,EAAA,SAAS,UAAU,KAAA,EAAqB;AACtC,IAAA,WAAA,GAAc,KAAA;AAChB,EAAA;AAEA,EAAA,SAAS,OAAO,KAAA,EAAyB;AAEvC,IAAA,YAAA,GAAe;AACb,MAAA,KAAA;AACA,MAAA,GAAG,aAAa,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,MAAM,KAAK;KAAA,CACrD,KAAA,CAAM,GAAG,SAAS,CAAA;AACpB,IAAA,QAAA,GAAW,KAAK,CAAA;AAClB,EAAA;AAEA,EAAA,SAAS,YAAY,QAAA,EAA+B;AAClD,IAAA,cAAA,GAAiB,QAAA;AACjB,IAAA,WAAA,GAAc,EAAA;AAChB,EAAA;AAEA,EAAA,MAAM,YAAA,GAAe,gBAAA,CAAiB,GAAA,CAAI,CAAC,GAAA,MAAS;IAClD,QAAA,EAAU,GAAA;AACV,IAAA,KAAA,EAAO,gBAAgB,GAAG,CAAA;AAC1B,IAAA,KAAA,EAAO,eAAe,GAAG;GAAA,CACzB,CAAA;AAEF,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,QAAA;IACN,iBAAA,EAAmB,OAAA;IACnB,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,MAAM,gBAAA,GAA4C;IAChD,IAAA,EAAM,QAAA;IACN,IAAA,EAAM,WAAA;IACN,YAAA,EAAc,eAAA;IACd,EAAA,EAAI,QAAA;IACJ,WAAA,EAAa,kBAAA;IACb,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,kBAAkB,KAAA,EAA4C;AACrE,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;AACN,MAAA,YAAA,EAAc,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,MAAM,KAAK,CAAA,CAAA;AAC1C,MAAA,KAAA,EAAO,KAAA,CAAM;AAAA,KAAA;AAEjB,EAAA;AAEA,EAAA,OAAO;IACL,KAAA,EAAO;MACL,MAAA,EAAQ,WAAA;AACR,MAAA,cAAA;AACA,MAAA,cAAA,EAAgB,iBAAA,EAAA;AAChB,MAAA;AAAA,KAAA;AAEF,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,gBAAA;AACA,IAAA,iBAAA;IACA,GAAA,EAAK;MACH,SAAA,EAAW,WAAA;MACX,MAAA,EAAQ,QAAA;MACR,IAAA,EAAM,MAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;AClKO,IAAM,0BAAA,GACX;AAEK,IAAM,uBAAA,GACX,iGAAA;AAEK,IAAM,4BAAA,GACX,oBAAA;AAEK,IAAM,iCAAiC,GAAA,CAAI;EAChD,IAAA,EAAM,+FAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,MAAA,EAAQ,WAAA;MACR,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEM,IAAM,qBAAA,GACX;AAEK,IAAM,4BAAA,GACX;AAEK,IAAM,6BAAA,GACX,qDAAA;;;ACPK,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,YAAA,EAAc,gBAAgB,EAAA,EAAI,WAAA,EAA+B;AACvG,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUiE,4BAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,4BAAwB,SAAS,CAAA;AACnF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,4BAAuB,aAAa,CAAA;AAElF,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,iBAAA,CAAkB;MAChB,QAAA,EAAU,MAAA;AACV,MAAA,MAAA;AACA,MAAA;KACD,CAAA;AACH,IAAA,CAAC,QAAQ,YAAY;AAAA,GAAA;AAGvB,EAAA,MAAM,cAAA,GAAuBA,2BAAQ,MAAM;AACzC,IAAA,IAAI,MAAA,CAAO,MAAA,EAAQ;AACjB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,WAAA,EAAA,CAAc,IAAA,EAAA;AACnC,MAAA,MAAM,YAAY,gBAAA,CAAiB,OAAA,CAAQ,CAAC,GAAA,KAAQ,UAAA,CAAW,GAAG,CAAC,CAAA;AACnE,MAAA,OAAO,SAAA,CAAU,MAAA;AACf,QAAA,CAAC,UACC,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA,IACvC,KAAA,CAAM,QAAA,CAAS,IAAA,CAAK,CAAC,EAAA,KAAO,EAAA,CAAG,aAAA,CAAc,QAAA,CAAS,KAAK,CAAC;AAAA,OAAA;AAElE,IAAA;AACA,IAAA,OAAO,WAAW,cAAc,CAAA;EAClC,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAc,CAAC,CAAA;AAE3B,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAsB;AAC1C,IAAA,eAAA;AAAgB,MAAA,CAAC,SACf,CAAC,KAAA,EAAO,GAAG,IAAA,CAAK,OAAO,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,MAAM,KAAK,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE;AAAA,KAAA;AAErE,IAAA,QAAA,GAAW,KAAK,CAAA;AAClB,EAAA,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,GAAA,KAAuB;AAClD,IAAA,iBAAA,CAAkB,GAAG,CAAA;AACrB,IAAA,SAAA,CAAU,EAAE,CAAA;AACd,EAAA,CAAA;AAEA,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,WAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA,EAAG,GAAG,IAAI,SAAA,EAAA;;AAEzD,IAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;AAC3B,MAAA,GAAG,GAAA,CAAI,gBAAA;MACP,SAAA,EAAW,uBAAA;MACX,KAAA,EAAO,MAAA;AACP,MAAA,QAAA,EAAU,CAAC,CAAA,KAA2C,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK;KAC/E,CAAA;;AAED,IAAA,CAAC,MAAA,IACOA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,4BAAA,EAAA;AACb,MAAA,GAAA,CAAI,YAAA,CAAa,GAAA;AAAI,QAAA,CAAC,GAAA,KACdA,kBAAA,CAAA,aAAA;AACJ,UAAA,QAAA;AACA,UAAA;AACE,YAAA,GAAA,EAAK,GAAA,CAAI,QAAA;YACT,IAAA,EAAM,QAAA;AACN,YAAA,SAAA,EAAW,8BAAA,CAA+B;cACxC,KAAA,EAAO,GAAA,CAAI,QAAA,KAAa,cAAA,GAAiB,QAAA,GAAW;aACrD,CAAA;YACD,OAAA,EAAS,MAAM,mBAAA,CAAoB,GAAA,CAAI,QAAQ,CAAA;AAC/C,YAAA,KAAA,EAAO,GAAA,CAAI,KAAA;AACX,YAAA,YAAA,EAAc,GAAA,CAAI;AAAA,WAAA;UAEpB,GAAA,CAAI;AAAA;AACN;AACF,KAAA;;IAGJ,CAAC,MAAA,IACC,YAAA,CAAa,MAAA,GAAS,CAAA,IAChBA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,IAAA;AACM,MAAAA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO,EAAE,SAAA,EAAW,6BAAA,IAAiC,QAAQ,CAAA;AAC3E,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,qBAAA,EAAA;QACb,YAAA,CAAa,GAAA;AAAI,UAAA,CAAC,OAAO,CAAA,KACjBA,kBAAA,CAAA,aAAA;AACJ,YAAA,QAAA;AACA,YAAA;AACE,cAAA,GAAA,EAAK,CAAA,OAAA,EAAU,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;cAC/B,IAAA,EAAM,QAAA;cACN,SAAA,EAAW,4BAAA;cACX,OAAA,EAAS,MAAM,aAAa,KAAK,CAAA;cACjC,GAAG,GAAA,CAAI,kBAAkB,KAAK;AAAA,aAAA;YAEhC,KAAA,CAAM;AAAA;AACR;AACF;AACF,KAAA;;AAGE,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,IAAA;AACA,MAAA,CAAC,MAAA,IACOA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,6BAAA,EAAA;AACb,QAAA,eAAA,CAAgB,cAAc;AAAA,OAAA;AAE5B,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,qBAAA,EAAA;QACb,cAAA,CAAe,GAAA;AAAI,UAAA,CAAC,OAAO,CAAA,KACnBA,kBAAA,CAAA,aAAA;AACJ,YAAA,QAAA;AACA,YAAA;AACE,cAAA,GAAA,EAAK,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;cACxB,IAAA,EAAM,QAAA;cACN,SAAA,EAAW,4BAAA;cACX,OAAA,EAAS,MAAM,aAAa,KAAK,CAAA;cACjC,GAAG,GAAA,CAAI,kBAAkB,KAAK;AAAA,aAAA;YAEhC,KAAA,CAAM;AAAA;AACR,SAAA;AAEF,QAAA,cAAA,CAAe,WAAW,CAAA,IAClBA,kBAAA,CAAA,aAAA;AACJ,UAAA,KAAA;AACA,UAAA,EAAE,WAAW,2DAAA,EAAA;AACb,UAAA;AAAA;AACF;AACJ;AACF,GAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;AC/E1B,SAAS,aAAA,CAAc,QAAA,EAAkB,QAAA,EAAkB,MAAA,EAAyB;AAClF,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,YAAY,aAAA,EAAe;AACpC,IAAA,IAAI,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAE5B,MAAA,IAAI,QAAA,CAAS,aAAA,CAAc,QAAA,CAAS,SAAS,WAAA,EAAa,GAAG,OAAO,IAAA;IACtE,CAAA,MAAA,IAAW,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAG;AAElC,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACnC,MAAA,IAAI,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,IAAA;IAC1C,CAAA,MAAO;AAEL,MAAA,IAAI,QAAA,KAAa,UAAU,OAAO,IAAA;AACpC,IAAA;AACF,EAAA;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,eAAe,KAAA,EAAuB;AACpD,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,KAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AACpC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AACrD,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAA;AACrC,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACrD;AAEO,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM;AACJ,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;IACA,QAAA,GAAW,KAAA;AACX,IAAA,eAAA;AACA,IAAA;GAAA,GACE,KAAA;AAEJ,EAAA,IAAI,QAAqB,EAAA;AACzB,EAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,EAAA,MAAM,UAAA,GAAa,WAAW,sBAAsB,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,WAAW,uBAAuB,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,WAAW,uBAAuB,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,WAAW,sBAAsB,CAAA;AAEpD,EAAA,SAAS,SAAS,QAAA,EAAqE;AACrF,IAAA,MAAM,SAA4B,EAAA;AAClC,IAAA,MAAM,aAA0B,EAAA;AAGhC,IAAA,MAAM,cAAA,GAAiB,QAAA,GAAW,QAAA,GAAW,KAAA,CAAM,MAAA,GAAS,QAAA;AAC5D,IAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEpC,MAAA,QAAA,GAAW,CAAC,QAAA,CAAS,CAAC,CAAC,CAAA;AACzB,IAAA;AAEA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,IAAA,GAAO,SAAS,CAAC,CAAA;AAEvB,MAAA,IAAI,UAAA,CAAW,UAAU,cAAA,EAAgB;AACvC,QAAA,MAAA,CAAO,IAAA,CAAK;AACV,UAAA,IAAA,EAAM,IAAA,CAAK,IAAA;UACX,IAAA,EAAM,OAAA;AACN,UAAA,OAAA,EAAS,cAAc,QAAQ,CAAA,cAAA;SAChC,CAAA;AACD,QAAA;AACF,MAAA;AAGA,MAAA,IAAI,MAAA,IAAU,CAAC,aAAA,CAAc,IAAA,CAAK,MAAM,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA,EAAG;AAC1D,QAAA,MAAA,CAAO,IAAA,CAAK;AACV,UAAA,IAAA,EAAM,IAAA,CAAK,IAAA;UACX,IAAA,EAAM,MAAA;UACN,OAAA,EAAS,CAAA,WAAA,EAAc,IAAA,CAAK,IAAA,IAAQ,SAAS,CAAA,iBAAA;SAC9C,CAAA;AACD,QAAA;AACF,MAAA;AAGA,MAAA,IAAI,OAAA,IAAW,IAAA,CAAK,IAAA,GAAO,OAAA,EAAS;AAClC,QAAA,MAAA,CAAO,IAAA,CAAK;AACV,UAAA,IAAA,EAAM,IAAA,CAAK,IAAA;UACX,IAAA,EAAM,MAAA;UACN,OAAA,EAAS,CAAA,UAAA,EAAa,eAAe,IAAA,CAAK,IAAI,CAAC,CAAA,kBAAA,EAAqB,cAAA,CAAe,OAAO,CAAC,CAAA;SAC5F,CAAA;AACD,QAAA;AACF,MAAA;AAEA,MAAA,UAAA,CAAW,IAAA,CAAK;AACd,QAAA,EAAA,EAAI,WAAW,UAAU,CAAA;AACzB,QAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,QAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,QAAA,IAAA,EAAM,IAAA,CAAK,IAAA;QACX,QAAA,EAAU,CAAA;QACV,MAAA,EAAQ;OACT,CAAA;AACH,IAAA;AAEA,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAA,OAAA,GAAU,MAAM,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;MAC/B,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,CAAC,GAAG,KAAA,EAAO,GAAG,UAAU,CAAA;AAClC,MAAA;AACA,MAAA,eAAA,GAAkB,KAAK,CAAA;AACzB,IAAA;AACF,EAAA;AAEA,EAAA,SAAS,WAAW,EAAA,EAAkB;AACpC,IAAA,KAAA,GAAQ,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AACzC,EAAA;AAEA,EAAA,SAAS,cAAA,CAAe,IAAY,QAAA,EAAwB;AAC1D,IAAA,KAAA,GAAQ,KAAA,CAAM,GAAA;AAAI,MAAA,CAAC,MACjB,CAAA,CAAE,EAAA,KAAO,EAAA,GAAK,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,KAAK,IAAA,CAAK,GAAA,CAAI,GAAG,QAAQ,CAAC,GAAA,GAAM;AAAA,KAAA;AAE7E,EAAA;AAEA,EAAA,SAAS,SAAA,CAAU,EAAA,EAAY,MAAA,EAAoB,KAAA,EAAsB;AACvE,IAAA,KAAA,GAAQ,KAAA,CAAM,GAAA;AAAI,MAAA,CAAC,CAAA,KACjB,CAAA,CAAE,EAAA,KAAO,EAAA,GAAK,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,KAAA,EAAO,UAAU,MAAA,KAAW,UAAA,GAAa,GAAA,GAAM,CAAA,CAAE,UAAA,GAAa;AAAA,KAAA;AAEhG,EAAA;AAEA,EAAA,MAAM,aAAA,GAAuE;IAC3E,IAAA,EAAM,QAAA;IACN,YAAA,EAAc,oCAAA;IACd,kBAAA,EAAoB,OAAA;IACpB,EAAA,EAAI,UAAA;IACJ,QAAA,EAAU;AAAA,GAAA;AAGZ,EAAA,MAAM,UAAA,GAAsC;IAC1C,IAAA,EAAM,MAAA;IACN,EAAA,EAAI,OAAA;AACJ,IAAA,MAAA,EAAQ,MAAA,IAAU,MAAA;AAClB,IAAA,QAAA;IACA,aAAA,EAAe,IAAA;IACf,QAAA,EAAU,EAAA;IACV,KAAA,EAAO,EAAE,SAAS,MAAA;AAAO,GAAA;AAG3B,EAAA,MAAM,YAAA,GAAe;IACnB,WAAA,GAAc;AACZ,MAAA,UAAA,GAAa,IAAA;AACf,IAAA,CAAA;IACA,WAAA,GAAc;AACZ,MAAA,UAAA,GAAa,KAAA;AACf,IAAA,CAAA;IACA,UAAA,GAAa;AACX,MAAA,UAAA,GAAa,IAAA;AACf,IAAA,CAAA;IACA,MAAA,GAAS;AACP,MAAA,UAAA,GAAa,KAAA;AACf,IAAA;AAAA,GAAA;AAGF,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,IAAI,KAAA,GAAQ;AAAE,QAAA,OAAO,KAAA;AAAM,MAAA,CAAA;AAC3B,MAAA,IAAI,UAAA,GAAa;AAAE,QAAA,OAAO,UAAA;AAAW,MAAA;AAAA,KAAA;AAEvC,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,cAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;IACA,GAAA,EAAK;MACH,QAAA,EAAU,UAAA;MACV,KAAA,EAAO,OAAA;MACP,KAAA,EAAO,OAAA;MACP,QAAA,EAAU;AAAA;AACZ,GAAA;AAEJ;ACjQO,IAAM,6BAA6B,GAAA,CAAI;EAC5C,IAAA,EAAM,8HAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,IAAA,EAAM,6DAAA;MACN,QAAA,EAAU,6BAAA;MACV,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,wBAAA,GACX;AAEK,IAAM,wBAAA,GACX;AAEK,IAAM,wBAAA,GACX,wDAAA;AAEK,IAAM,2BAAA,GACX,4DAAA;AAEK,IAAM,4BAAA,GACX,oEAAA;;;ACHK,SAAS,UAAA,CAAW;AACzB,EAAA,MAAA;AACA,EAAA,OAAA;AACA,EAAA,QAAA;EACA,QAAA,GAAW,KAAA;AACX,EAAA,eAAA;AACA,EAAA,OAAA;AACA,EAAA,SAAA;AACA,EAAA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUC,kBAAA,CAAA,QAAA,CAAsB,EAAE,CAAA;AACxD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,4BAAS,KAAK,CAAA;AACxD,EAAA,MAAM,QAAA,GAAiBA,0BAAyB,IAAI,CAAA;AAEpD,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,MACE,gBAAA,CAAiB;AACf,MAAA,MAAA;AACA,MAAA,OAAA;AACA,MAAA,QAAA;AACA,MAAA,QAAA;AACA,MAAA,eAAA,EAAiB,CAAC,QAAA,KAAa;AAC7B,QAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,QAAA,eAAA,GAAkB,QAAQ,CAAA;AAC5B,MAAA,CAAA;AACA,MAAA;KACD,CAAA;AACH,IAAA,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,iBAAiB,OAAO;AAAA,GAAA;AAGhE,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAuB;AAC9C,IAAA,CAAA,CAAE,cAAA,EAAA;AACF,IAAA,CAAA,CAAE,eAAA,EAAA;AACF,IAAA,aAAA,CAAc,IAAI,CAAA;AACpB,EAAA,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAuB;AAC9C,IAAA,CAAA,CAAE,cAAA,EAAA;AACF,IAAA,CAAA,CAAE,eAAA,EAAA;AACF,IAAA,aAAA,CAAc,KAAK,CAAA;AACrB,EAAA,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAuB;AAC7C,IAAA,CAAA,CAAE,cAAA,EAAA;AACF,IAAA,CAAA,CAAE,eAAA,EAAA;AACJ,EAAA,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAuB;AACzC,IAAA,CAAA,CAAE,cAAA,EAAA;AACF,IAAA,CAAA,CAAE,eAAA,EAAA;AACF,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,CAAA,CAAE,aAAa,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,MAAO;AAChE,MAAA,IAAA,EAAM,CAAA,CAAE,IAAA;AACR,MAAA,IAAA,EAAM,CAAA,CAAE,IAAA;AACR,MAAA,IAAA,EAAM,CAAA,CAAE;KAAA,CACR,CAAA;AACF,IAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,MAAA,GAAA,CAAI,SAAS,YAAY,CAAA;AAC3B,IAAA;AACF,EAAA,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,KAA2C;AACpE,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,MAAO;AACjE,MAAA,IAAA,EAAM,CAAA,CAAE,IAAA;AACR,MAAA,IAAA,EAAM,CAAA,CAAE,IAAA;AACR,MAAA,IAAA,EAAM,CAAA,CAAE;KAAA,CACR,CAAA;AACF,IAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,MAAA,GAAA,CAAI,SAAS,aAAa,CAAA;AAC5B,IAAA;AAEA,IAAA,CAAA,CAAE,OAAO,KAAA,GAAQ,EAAA;AACnB,EAAA,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,EAAA,KAAe;AACnC,IAAA,QAAA,CAAS,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AAClD,IAAA,GAAA,CAAI,WAAW,EAAE,CAAA;AACnB,EAAA,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAA,CAAS,SAAS,KAAA,EAAA;AACpB,EAAA,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,WAAA,EAAA;AACF,IAAA;AACF,EAAA,CAAA;AAEA,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,SAAA,EAAA;;AAEI,IAAAA,kBAAA,CAAA,aAAA,CAAc,OAAA,EAAS;MAC3B,GAAA,EAAK,QAAA;AACL,MAAA,GAAG,GAAA,CAAI,UAAA;MACP,QAAA,EAAU;KACX,CAAA;;AAEK,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA;AACE,QAAA,GAAG,GAAA,CAAI,aAAA;AACP,QAAA,SAAA,EAAW,0BAAA,CAA2B;AACpC,UAAA,KAAA,EAAO,aAAa,UAAA,GAAa;SAClC,CAAA;QACD,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;QACX,WAAA,EAAa,eAAA;QACb,WAAA,EAAa,eAAA;QACb,UAAA,EAAY,cAAA;QACZ,MAAA,EAAQ;AAAA,OAAA;MAEV,QAAA,IACQA,kBAAA,CAAA,aAAA;AACE,QAAAA,kBAAA,CAAA,QAAA;AACN,QAAA,IAAA;AACM,QAAAA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO,EAAE,SAAA,EAAW,eAAA,IAAmB,WAAW,CAAA;AAChE,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,GAAA;AACA,UAAA,EAAE,WAAW,+BAAA,EAAA;AACb,UAAA;AAAA,SAAA;QAEF,MAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,UAAA,GAAA;AACA,UAAA,EAAE,WAAW,oCAAA,EAAA;AACb,UAAA,CAAA,UAAA,EAAa,MAAM,CAAA;AAAA,SAAA;QAEvB,OAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,UAAA,GAAA;AACA,UAAA,EAAE,WAAW,+BAAA,EAAA;UACb,CAAA,UAAA,EAAa,cAAA,CAAe,OAAO,CAAC,CAAA;AAAA;AACtC;AACJ,KAAA;;AAGJ,IAAA,KAAA,CAAM,SAAS,CAAA,IACPA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,wBAAA,EAAA;MACb,KAAA,CAAM,GAAA;AAAI,QAAA,CAAC,IAAA,KACHA,kBAAA,CAAA,aAAA;AACJ,UAAA,KAAA;AACA,UAAA,EAAE,GAAA,EAAK,IAAA,CAAK,EAAA,EAAI,SAAA,EAAW,wBAAA,EAAA;AACrB,UAAAA,kBAAA,CAAA,aAAA;AACJ,YAAA,KAAA;AACA,YAAA,EAAE,WAAW,gBAAA,EAAA;AACP,YAAAA,kBAAA,CAAA,aAAA,CAAc,OAAO,EAAE,SAAA,EAAW,sBAAA,EAAA,EAA0B,KAAK,IAAI,CAAA;AACrE,YAAAA,kBAAA,CAAA,aAAA;AACJ,cAAA,KAAA;AACA,cAAA,EAAE,WAAW,+BAAA,EAAA;AACb,cAAA,cAAA,CAAe,KAAK,IAAI;AAAA,aAAA;AAE1B,YAAA,IAAA,CAAK,WAAW,WAAA,IACRA,kBAAA,CAAA,aAAA;AACJ,cAAA,KAAA;AACA,cAAA,EAAE,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,MAAM,CAAA,EAAA;AAC1C,cAAAA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO;gBACzB,SAAA,EAAW,2BAAA;AACX,gBAAA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,CAAA,CAAA;eACjC;AAAA,aAAA;AAEL,YAAA,IAAA,CAAK,KAAA,IACGA,kBAAA,CAAA,aAAA;AACJ,cAAA,KAAA;AACA,cAAA,EAAE,WAAW,iCAAA,EAAA;cACb,IAAA,CAAK;AAAA;AACP,WAAA;AAEE,UAAAA,kBAAA,CAAA,aAAA;AACJ,YAAA,QAAA;AACA,YAAA;cACE,IAAA,EAAM,QAAA;cACN,SAAA,EAAW,4BAAA;AACX,cAAA,OAAA,EAAS,CAAC,CAAA,KAAwB;AAChC,gBAAA,CAAA,CAAE,eAAA,EAAA;AACF,gBAAA,YAAA,CAAa,KAAK,EAAE,CAAA;AACtB,cAAA,CAAA;cACA,YAAA,EAAc,CAAA,OAAA,EAAU,KAAK,IAAI,CAAA;AAAA,aAAA;AAEnC,YAAA;AAAA;AACF;AACF;AACF;AACF,GAAA;AAEN;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;AC7LzB,IAAM,aAAA,mBAAgB,IAAI,GAAA,CAAI,CAAC,MAAA,EAAQ,SAAA,EAAW,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,SAAS,CAAC,CAAA;AAE3F,IAAM,WAAA,GAAsC;EAC1C,MAAA,EAAQ,MAAA;EACR,SAAA,EAAW,MAAA;EACX,KAAA,EAAO,KAAA;EACP,OAAA,EAAS,OAAA;EACT,MAAA,EAAQ,MAAA;EACR,KAAA,EAAO,KAAA;EACP,SAAA,EAAW,KAAA;EACX,OAAA,EAAS,QAAA;EACT,WAAA,EAAa,QAAA;EACb,QAAA,EAAU,KAAA;EACV,QAAA,EAAU,KAAA;EACV,SAAA,EAAW,QAAA;EACX,WAAA,EAAa,QAAA;EACb,WAAA,EAAa,QAAA;EACb,YAAA,EAAc,QAAA;EACd,KAAA,EAAO,KAAA;EACP,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,eAAA,GAA0C;EAC9C,MAAA,EAAQ,QAAA;EACR,SAAA,EAAW,QAAA;EACX,KAAA,EAAO,QAAA;EACP,OAAA,EAAS,QAAA;EACT,MAAA,EAAQ,QAAA;EACR,KAAA,EAAO,QAAA;EACP,SAAA,EAAW,QAAA;EACX,OAAA,EAAS,QAAA;EACT,WAAA,EAAa,QAAA;EACb,QAAA,EAAU,QAAA;EACV,QAAA,EAAU,QAAA;EACV,SAAA,EAAW,QAAA;EACX,WAAA,EAAa,QAAA;EACb,WAAA,EAAa,QAAA;EACb,YAAA,EAAc,QAAA;EACd,KAAA,EAAO,QAAA;EACP,GAAA,EAAK;AACP,CAAA;AAEA,SAAS,aAAa,GAAA,EAAqB;AAEzC,EAAA,IAAI,GAAA,KAAQ,SAAA,IAAa,GAAA,KAAQ,KAAA,EAAO,OAAO,MAAA;AAC/C,EAAA,IAAI,GAAA,KAAQ,WAAW,OAAO,MAAA;AAC9B,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,KAAA,GAAiB;AACxB,EAAA,IAAI,OAAO,cAAc,WAAA,EAAa;AACpC,IAAA,OAAO,SAAA,CAAU,UAAU,QAAA,CAAS,KAAK,KAAK,SAAA,CAAU,SAAA,EAAW,SAAS,KAAK,CAAA;AACnF,EAAA;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,cAAA,CAAe,MAAgB,GAAA,EAAuB;AACpE,EAAA,MAAM,UAAA,GAAa,MAAM,eAAA,GAAkB,WAAA;AAC3C,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,WAAW,GAAG,CAAA,IAAK,GAAA,CAAI,WAAA,EAAa,CAAA,CAAE,IAAA,CAAK,GAAA,GAAM,KAAK,GAAG,CAAA;AACpF;AAEO,SAAS,uBAAuB,KAAA,EAA2C;AAChF,EAAA,MAAM;AACJ,IAAA,IAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA,EAAS,WAAA,GAAc,IAAA;AACvB,IAAA,cAAA,EAAgB,kBAAA,GAAqB;GAAA,GACnC,KAAA;AAEJ,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAY,eAAe,MAAA,CAAO,CAAC,MAAM,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA;AACnE,EAAA,MAAM,WAAA,GAAc,eAAe,MAAA,CAAO,CAAC,MAAM,CAAC,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA;AAEtE,EAAA,SAAS,QAAQ,KAAA,EAA+B;AAC9C,IAAA,IAAI,CAAC,aAAa,OAAO,KAAA;AAGzB,IAAA,MAAM,YAAA,GAAe,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,QAAA,CAAS,KAAK,CAAA;AAC5C,IAAA,MAAM,aAAA,GAAgB,SAAA,CAAU,QAAA,CAAS,OAAO,CAAA;AAChD,IAAA,MAAM,YAAA,GAAe,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA;AAE9C,IAAA,IAAI,kBAAkB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,OAAA,IAAW,CAAC,YAAA,CAAA,EAAe;AAIxE,IAAA,MAAM,SAAA,GAAY,YAAA,GAAe,KAAA,CAAM,OAAA,GAAU,CAAC,KAAA,CAAM,OAAA;AACxD,IAAA,MAAM,QAAA,GAAW,WAAA,GAAc,KAAA,CAAM,MAAA,GAAS,CAAC,KAAA,CAAM,MAAA;AACrD,IAAA,MAAM,UAAA,GAAa,aAAA,GAAgB,KAAA,CAAM,QAAA,GAAW,CAAC,KAAA,CAAM,QAAA;AAC3D,IAAA,MAAM,SAAA,GAAY,YAAA,GAAe,KAAA,CAAM,OAAA,GAAU,CAAC,KAAA,CAAM,OAAA;AAExD,IAAA,IAAI,CAAC,aAAa,CAAC,QAAA,IAAY,CAAC,UAAA,IAAc,CAAC,WAAW,OAAO,KAAA;AAGjE,IAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,MAAA,KAAW,IAAI,KAAA,CAAM,GAAA,CAAI,WAAA,EAAA,GAAgB,KAAA,CAAM,GAAA;AAC1E,MAAA,MAAM,SAAA,GAAY,WAAA,CAAY,CAAC,CAAA,CAAE,MAAA,KAAW,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,CAAE,WAAA,EAAA,GAAgB,WAAA,CAAY,CAAC,CAAA;AAC5F,MAAA,IAAI,QAAA,KAAa,WAAW,OAAO,KAAA;AACrC,IAAA;AAEA,IAAA,IAAI,kBAAA,EAAoB;AACtB,MAAA,KAAA,CAAM,cAAA,EAAA;AACR,IAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,MAAM,MAAM,KAAA,EAAA;AACZ,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAC1C,EAAA,MAAM,eAAA,GAAkB,cAAA,CAAe,IAAA,EAAM,GAAG,CAAA;AAEhD,EAAA,MAAM,cAAA,GAA0C;IAC9C,aAAA,EAAe,IAAA;IACf,IAAA,EAAM;AAAA,GAAA;AAGR,EAAA,OAAO;AACL,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,eAAA;IACA,OAAA,EAAS,WAAA;AACT,IAAA,IAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACxJO,IAAM,mBAAA,GACX;AAEK,IAAM,iBAAA,GACX;AAEK,IAAM,uBAAA,GACX;;;ACkBK,SAAS,gBAAA,CAAiB;AAC/B,EAAA,IAAA;AACA,EAAA,SAAA;EACA,OAAA,GAAU,IAAA;EACV,cAAA,GAAiB;AACnB,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAeC,kBAAA,CAAA,MAAA;AACnB,IAAA,sBAAA,CAAuB,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,gBAAgB;AAAA,GAAA;AAI/D,EAAAA,6BAAU,MAAM;AACpB,IAAA,MAAA,CAAO,UAAU,sBAAA,CAAuB,EAAE,MAAM,SAAA,EAAW,OAAA,EAAS,gBAAgB,CAAA;AACtF,EAAA,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,cAAc,CAAC,CAAA;AAEvC,EAAAA,6BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC1B,IAAA,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;EACpE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO,IAAA;AACT;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAcxB,SAAS,cAAc,EAAE,IAAA,EAAM,QAAA,GAAW,IAAA,EAAM,WAAA,EAAiC;AACtF,EAAA,MAAM,GAAA,GAAM,sBAAA,CAAuB,EAAE,IAAA,EAAM,WAAW,MAAM;EAAC,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AAEhF,EAAA,MAAM,WAAA,GAAc,QAAA,GAAW,GAAA,CAAI,eAAA,GAAkB,GAAA,CAAI,OAAA;AAGzD,EAAA,MAAM,YAAA,GAAe,QAAA,IAAY,WAAA,KAAgB,GAAA,CAAI,OAAA;AAErD,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,cAAA,EAAgB,WAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAAA;AACrE,IAAA,YAAA,GACUA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,WAAW,IAC7C,IAAA,CAAK,GAAA;AAAI,MAAA,CAAC,KAAK,CAAA,KACPA,kBAAA,CAAA,aAAA;AACE,QAAAA,kBAAA,CAAA,QAAA;AACN,QAAA,EAAE,KAAK,CAAA,EAAA;AACP,QAAA,CAAA,GAAI,KAAWA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,uBAAA,IAA2B,GAAG,CAAA;AAC1E,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,MAAA;AACA,UAAA,EAAE,WAAW,iBAAA,EAAA;UACb,cAAA,CAAe,CAAC,GAAG,CAAA,EAAG,KAAK;AAAA;AAC7B;AACF;AACF,GAAA;AAER;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;ACvCrB,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAiB;AACrE,EAAA,MAAM;IACJ,MAAA,GAAS,CAAA;IACT,KAAA,GAAQ,EAAA;IACR,SAAA,GAAY,KAAA;IACZ,IAAA,GAAO,QAAA;IACP,QAAA,GAAW;GAAA,GACT,KAAA;AAEJ,EAAA,MAAM,gBAAgB,CAAC,QAAA;AAGvB,EAAA,MAAM,MAAA,GAAmB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAA,EAAU,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,CAAM,MAAA,CAAO,CAAC,KAAK,EAAE,CAAA;AAC/E,EAAA,IAAI,YAAA,GAAe,YAAY,CAAA,GAAI,EAAA;AAEnC,EAAA,MAAM,aAAA,GAA6C;IACjD,IAAA,EAAM,OAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,SAAS,QAAA,CAAS,OAAe,IAAA,EAAwB;AACvD,IAAA,IAAI,QAAQ,CAAA,IAAK,KAAA,IAAS,QAAQ,OAAO,CAAC,GAAG,MAAM,CAAA;AACnD,IAAA,MAAM,WAAW,IAAA,KAAS,QAAA,GAAW,KAAK,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,GAAI,IAAA;AACnE,IAAA,MAAM,SAAA,GAAY,CAAC,GAAG,MAAM,CAAA;AAC5B,IAAA,SAAA,CAAU,KAAK,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAEzC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,MAAA,MAAA,CAAO,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA;AACzB,IAAA;AACA,IAAA,OAAO,SAAA;AACT,EAAA;AAEA,EAAA,SAAS,QAAA,GAAmB;AAC1B,IAAA,OAAO,MAAA,CAAO,KAAK,EAAE,CAAA;AACvB,EAAA;AAEA,EAAA,SAAS,UAAU,SAAA,EAAqC;AACtD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,CAAC,CAAA;IAC7C,CAAA,MAAO;AACL,MAAA,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,eAAe,CAAC,CAAA;AACtD,IAAA;AACA,IAAA,OAAO,YAAA;AACT,EAAA;AAEA,EAAA,SAAS,aAAa,KAAA,EAA6B;AACjD,IAAA,MAAM,YAAY,KAAA,KAAU,YAAA;AAC5B,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,KAAM,EAAA;AAEnC,IAAA,MAAM,SAAA,GAAyC;AAC7C,MAAA,YAAA,EAAc,CAAA,MAAA,EAAS,KAAA,GAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA;AAAA,KAAA;AAG/C,IAAA,MAAM,cAAA,GAAyC;MAC7C,WAAA,EAAa;AAAA,KAAA;AAEf,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,cAAA,CAAe,cAAc,CAAA,GAAI,EAAA;AACnC,IAAA;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,cAAA,CAAe,aAAa,CAAA,GAAI,EAAA;AAClC,IAAA;AAEA,IAAA,MAAM,UAAA,GAAa;MACjB,SAAA,EAAW,CAAA;MACX,SAAA,EAAW,IAAA,KAAS,WAAW,SAAA,GAAY,MAAA;MAC3C,OAAA,EAAS,IAAA,KAAS,WAAW,QAAA,GAAW,MAAA;MACxC,YAAA,EAAc,KAAA,KAAU,IAAI,eAAA,GAAkB,KAAA;AAC9C,MAAA;AAAA,KAAA;AAGF,IAAA,OAAO,EAAE,SAAA,EAAW,cAAA,EAAgB,UAAA,EAAA;AACtC,EAAA;AAEA,EAAA,SAAS,mBAAA,CACP,OACA,SAAA,EAIoB;AACpB,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO;AACL,QAAA,CAAC,KAAK,SAAS,GAAG,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC3B,QAAA,CAAC,KAAK,SAAS,GAAG,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC3B,QAAA,CAAC,KAAK,UAAU,GAAG,CAAC,CAAA,KAAM,EAAE,cAAA;AAAe,OAAA;AAE/C,IAAA;AAEA,IAAA,OAAO;AACL,MAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACjB,UAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AACpC,UAAA,SAAA,EAAW,UAAA,GAAa,OAAO,SAAS,CAAA;AAC1C,QAAA,CAAA,MAAA,IAAW,QAAQ,CAAA,EAAG;AACpB,UAAA,YAAA,GAAe,KAAA,GAAQ,CAAA;AACvB,UAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,GAAQ,CAAA,EAAG,EAAE,CAAA;AACxC,UAAA,SAAA,EAAW,UAAA,GAAa,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAA;AAC5C,UAAA,SAAA,EAAW,cAAc,YAAY,CAAA;AACvC,QAAA;AACF,MAAA,CAAA;AACA,MAAA,CAAC,IAAA,CAAK,SAAS,GAAG,CAAC,CAAA,KAAM;AACvB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,QAAQ,CAAA,EAAG;AACb,UAAA,YAAA,GAAe,KAAA,GAAQ,CAAA;AACvB,UAAA,SAAA,EAAW,cAAc,YAAY,CAAA;AACvC,QAAA;AACF,MAAA,CAAA;AACA,MAAA,CAAC,IAAA,CAAK,UAAU,GAAG,CAAC,CAAA,KAAM;AACxB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,KAAA,GAAQ,SAAS,CAAA,EAAG;AACtB,UAAA,YAAA,GAAe,KAAA,GAAQ,CAAA;AACvB,UAAA,SAAA,EAAW,cAAc,YAAY,CAAA;AACvC,QAAA;AACF,MAAA;AAAA,KAAA;AAEJ,EAAA;AAEA,EAAA,SAAS,WAAW,IAAA,EAAwB;AAC1C,IAAA,MAAM,QAAQ,IAAA,KAAS,QAAA,GAAW,KAAK,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,GAAI,IAAA;AAChE,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAA,EAAU,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,IAAK,EAAE,CAAA;AAC/D,EAAA;AAEA,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,MAAA;AACA,MAAA,YAAA;AACA,MAAA,MAAA;AACA,MAAA;AAAA,KAAA;AAEF,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;AACA,IAAA,YAAA;AACA,IAAA,mBAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AClMO,IAAM,cAAA,GAAgC;EAC3C,IAAA,EAAM,WAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,wBAAA,EAAA;AAC1C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,wBAAA,EAAA;AAC1C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,kBAAA,EAAoB,QAAA,EAAU,oBAAA,EAAA;AAClD,IAAA,eAAA,EAAiB,EAAE,QAAA,EAAU,yBAAA,EAA2B,QAAA,EAAU,qBAAA,EAAA;AAClE,IAAA,IAAA,EAAM,EAAE,QAAA,EAAU,gBAAA,EAAkB,QAAA,EAAU,kBAAA;AAAmB;AAErE;AAEO,IAAM,4BAA4B,GAAA,CAAI;EAC3C,IAAA,EAAM,yBAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,OAAA,EAAS,OAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM,uIAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,iBAAA;MACJ,OAAA,EAAS,qBAAA;MACT,EAAA,EAAI;AAAA,KAAA;IAEN,OAAA,EAAS;MACP,IAAA,EAAM,yCAAA;MACN,KAAA,EAAO;AAAA,KAAA;IAET,MAAA,EAAQ;MACN,IAAA,EAAM,gBAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM,SAAA;IACN,OAAA,EAAS,OAAA;IACT,MAAA,EAAQ;AAAA;AAEZ,CAAC;AC1BM,IAAM,QAAA,GAAiBC,kBAAA,CAAA,UAAA;EAC5B,CAAC;IACC,MAAA,GAAS,CAAA;IACT,KAAA,GAAQ,EAAA;AACR,IAAA,QAAA;IACA,SAAA,GAAY,KAAA;IACZ,IAAA,GAAO,QAAA;IACP,QAAA,GAAW,KAAA;IACX,IAAA,GAAO,SAAA;AACP,IAAA,SAAA;IACA,GAAG;AAAA,GAAA,EACF,GAAA,KAAQ;AACT,IAAA,MAAM,SAAA,GAAkBA,kBAAA,CAAA,MAAA,CAAoC,EAAE,CAAA;AAC9D,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAUA,kBAAA,CAAA,QAAA,CAAS,SAAA,GAAY,IAAI,EAAE,CAAA;AACzE,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,kBAAA,CAAA,QAAA;AAAmB,MAAA,MACnD,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAA,EAAU,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,IAAK,EAAE;AAAA,KAAA;AAIlD,IAAAA,6BAAU,MAAM;AACpB,MAAA,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAA,EAAU,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,IAAK,EAAE,CAAC,CAAA;IACnE,CAAA,EAAG,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA;AAGZ,IAAAA,6BAAU,MAAM;AACpB,MAAA,IAAI,SAAA,IAAa,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAA,EAAG;AACrC,QAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA,EAAA;AACvB,MAAA;IACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,IAAA,MAAM,GAAA,GAAM,eAAe,EAAE,MAAA,EAAQ,OAAO,SAAA,EAAW,IAAA,EAAM,UAAU,CAAA;AAEvE,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAe,IAAA,KAAiB;AACnD,MAAA,MAAM,WAAW,IAAA,KAAS,QAAA,GAAW,KAAK,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,GAAI,IAAA;AACnE,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AACtC,MAAA,MAAM,SAAA,GAAY,CAAC,GAAG,MAAM,CAAA;AAC5B,MAAA,SAAA,CAAU,KAAK,CAAA,GAAI,OAAA;AACnB,MAAA,SAAA,CAAU,SAAS,CAAA;AACnB,MAAA,QAAA,GAAW,SAAA,CAAU,IAAA,CAAK,EAAE,CAAC,CAAA;AAC7B,MAAA,OAAO,OAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAe,CAAA,KAA2C;AAC7E,MAAA,MAAM,UAAA,GAAa,EAAE,MAAA,CAAO,KAAA;AAC5B,MAAA,MAAM,IAAA,GAAO,UAAA,CAAW,KAAA,CAAM,EAAE,CAAA;AAChC,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,IAAI,CAAA;AAGtC,MAAA,IAAI,MAAA,IAAU,KAAA,GAAQ,MAAA,GAAS,CAAA,EAAG;AAChC,QAAA,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACzB,QAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAA;AAChC,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAe,CAAA,KAA6C;AACjF,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACjB,UAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AACvB,QAAA,CAAA,MAAA,IAAW,QAAQ,CAAA,EAAG;AACpB,UAAA,WAAA,CAAY,KAAA,GAAQ,GAAG,EAAE,CAAA;AACzB,UAAA,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACzB,UAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAA;AAChC,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,KAAA,GAAQ,CAAA,EAAG;AACtC,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACzB,QAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAA;AAChC,MAAA;AAEA,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,YAAA,IAAgB,KAAA,GAAQ,SAAS,CAAA,EAAG;AAChD,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACzB,QAAA,SAAA,CAAU,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,EAAA;AAChC,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA8C;AACjE,MAAA,CAAA,CAAE,cAAA,EAAA;AACF,MAAA,MAAM,SAAA,GAAY,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAChD,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA;AACvC,MAAA,SAAA,CAAU,MAAM,CAAA;AAChB,MAAA,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA;AAG1B,MAAA,IAAI,eAAA,GAAkB,EAAA;AACtB,MAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,QAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,EAAA,EAAI;AAAE,UAAA,eAAA,GAAkB,CAAA;AAAG,UAAA;AAAM,QAAA;AACrD,MAAA;AACA,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,eAAA,GAAkB,CAAA,EAAG,SAAS,CAAC,CAAA;AAC1D,MAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,MAAA,SAAA,CAAU,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAA;AAChC,IAAA,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAkB;AACrC,MAAA,eAAA,CAAgB,KAAK,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,eAAA,CAAgB,EAAE,CAAA;AACpB,IAAA,CAAA;AAEA,IAAA,uBACErE,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,yBAAA,CAA0B,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAC3D,QAAA,GAAG,GAAA,CAAI,aAAA;QACP,GAAG,KAAA;AAEH,QAAA,QAAA,EAAA,MAAM,IAAA,CAAK,EAAE,QAAA,EAAU,CAAC,GAAG,KAAA,KAAU;AAClB,UAAA,GAAA,CAAI,aAAa,KAAK,CAAA;AACxC,UAAA,MAAM,YAAY,KAAA,KAAU,YAAA;AAC5B,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,KAAM,EAAA;AAEnC,UAAA,uBACEA,cAAAA;AAAC,YAAA,OAAA;AAAA,YAAA;AAEC,cAAA,GAAA,EAAK,CAAC,EAAA,KAAO;AAAE,gBAAA,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA,GAAI,EAAA;AAAG,cAAA,CAAA;AAC7C,cAAA,SAAA,EAAW,GAAG,oBAAA,CAAqB;AACjC,gBAAA,IAAA;AACA,gBAAA,OAAA,EAAS,YAAY,MAAA,GAAS,OAAA;AAC9B,gBAAA,MAAA,EAAQ,WAAW,MAAA,GAAS;AAAA,eAC7B,CAAC,CAAA;AACF,cAAA,KAAA,EAAO,OAAO,KAAK,CAAA;AACnB,cAAA,QAAA,EAAU,CAAC,CAAA,KAAM,WAAA,CAAY,KAAA,EAAO,CAAC,CAAA;AACrC,cAAA,SAAA,EAAW,CAAC,CAAA,KAAM,aAAA,CAAc,KAAA,EAAO,CAAC,CAAA;cACxC,OAAA,EAAS,WAAA;cACT,OAAA,EAAS,MAAM,YAAY,KAAK,CAAA;cAChC,MAAA,EAAQ,UAAA;cACR,SAAA,EAAW,CAAA;cACX,SAAA,EAAW,IAAA,KAAS,WAAW,SAAA,GAAY,MAAA;cAC3C,OAAA,EAAS,IAAA,KAAS,WAAW,QAAA,GAAW,MAAA;cACxC,YAAA,EAAc,KAAA,KAAU,IAAI,eAAA,GAAkB,KAAA;AAC9C,cAAA,QAAA;AACA,cAAA,YAAA,EAAY,CAAA,MAAA,EAAS,KAAA,GAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAA;cAC3C,WAAA,EAAU,UAAA;AACV,cAAA,cAAA,EAAc,YAAY,EAAA,GAAK,MAAA;AAC/B,cAAA,aAAA,EAAa,WAAW,EAAA,GAAK;AAAA,aAAA;AArBxB,YAAA;AAAA,WAAA;QAwBX,CAAC;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;;;AClJvB,IAAM,aAAA,GAAgD;EACpD,MAAA,EAAQ,OAAA;EACR,OAAA,EAAS,MAAA;EACT,IAAA,EAAM,QAAA;EACN,IAAA,EAAM,KAAA;EACN,GAAA,EAAK;AACP;AAEA,IAAM,aAAA,GAAgD;EACpD,MAAA,EAAQ,QAAA;EACR,OAAA,EAAS,SAAA;EACT,IAAA,EAAM,MAAA;EACN,IAAA,EAAM,MAAA;EACN,GAAA,EAAK;AACP;AAIO,SAAS,eAAe,KAAA,EAAmC;AAChE,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,gBAAgB,KAAA,EAAO,KAAA,EAAO,eAAA,GAAkB,KAAA;AAE3E,EAAA,MAAM,KAAA,GAAQ,cAAc,MAAM,CAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,aAAA,IAAiB,aAAA,CAAc,MAAM,CAAA;AAEnD,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;IACA,SAAA,EAAW,aAAA;AACX,IAAA;AAAA,GAAA;AAEJ;AC5DO,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,2BAAA;EACN,QAAA,EAAU;IACR,MAAA,EAAQ;MACN,MAAA,EAAQ,cAAA;MACR,OAAA,EAAS,aAAA;MACT,IAAA,EAAM,eAAA;MACN,IAAA,EAAM,YAAA;MACN,GAAA,EAAK;AAAA,KAAA;IAEP,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,EAAA,EAAI,aAAA;MACJ,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,MAAA,EAAQ,SAAA;IACR,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAEM,IAAM,uBAAA,GACX,kCAAA;AAEK,IAAM,mBAAA,GACX,+BAAA;;;ACVK,SAAS,iBAAA,CAAkB;AAChC,EAAA,MAAA;EACA,SAAA,GAAY,KAAA;AACZ,EAAA,KAAA;EACA,IAAA,GAAO,IAAA;AACP,EAAA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,MAAM,cAAA,CAAe,EAAE,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA;AAEvD,EAAA,OAAasE,kBAAA,CAAA,aAAA;AACX,IAAA,MAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,SAAA,EAAW,WAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA,EAAA;AAC9D,IAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ;AAC1B,MAAA,SAAA,EAAW,mBAAA,CAAoB,EAAE,MAAA,EAAQ,IAAA,EAAM;KAChD,CAAA;IACD,GAAA,CAAI,SAAA,IACIA,iCAAc,MAAA,EAAQ,EAAE,WAAW,mBAAA,EAAA,EAAuB,IAAI,KAAK;AAAA,GAAA;AAE/E;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACbzB,SAAS,gBAAA,CAAiB,KAAA,GAAyB,EAAA,EAAmB;AAC3E,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,YAAA,EAAc,aAAA,EAAe,MAAM,QAAA,GAAW,KAAA,EAAO,WAAA,GAAc,UAAA,EAAA,GAAe,KAAA;AAC7G,EAAA,IAAI,WAAW,UAAA,IAAc,YAAA;AAE7B,EAAA,SAAS,OAAO,KAAA,EAAe;AAC7B,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA,GAAW,KAAA;AACX,IAAA,aAAA,GAAgB,KAAK,CAAA;AACvB,EAAA;AAEA,EAAA,MAAM,UAAA,GAAa;IACjB,IAAA,EAAM,YAAA;IACN,kBAAA,EAAoB,WAAA;AACpB,IAAA,GAAI,QAAA,GAAW,EAAE,eAAA,EAAiB,IAAA,KAAS;AAAC,GAAA;AAG9C,EAAA,SAAS,YAAA,CAAa,OAAe,YAAA,EAAwB;AAC3D,IAAA,MAAM,aAAa,QAAA,KAAa,KAAA;AAChC,IAAA,MAAM,aAAa,QAAA,IAAY,YAAA;AAC/B,IAAA,OAAO;MACL,IAAA,EAAM,OAAA;MACN,cAAA,EAAgB,UAAA;AAChB,MAAA,eAAA,EAAiB,UAAA,IAAc,MAAA;AAC/B,MAAA,QAAA,EAAU,aAAa,CAAA,GAAI,EAAA;AAC3B,MAAA,YAAA,EAAc,aAAa,SAAA,GAAY,WAAA;AACvC,MAAA,GAAI,UAAA,GAAa,EAAE,eAAA,EAAiB,EAAA,KAAO,EAAA;AAC3C,MAAA,GAAI,IAAA,GAAO,EAAE,IAAA,EAAA,GAAS;AAAC,KAAA;AAE3B,EAAA;AAEA,EAAA,MAAM,gBAAA,GAA+D;AACnE,IAAA,SAAA,CAAU,CAAA,EAAG;AAAE,MAAA,CAAA,CAAE,cAAA,EAAA;AAAiB,IAAA,CAAA;AAClC,IAAA,OAAA,CAAQ,CAAA,EAAG;AAAE,MAAA,CAAA,CAAE,cAAA,EAAA;AAAiB,IAAA,CAAA;AAChC,IAAA,UAAA,CAAW,CAAA,EAAG;AAAE,MAAA,CAAA,CAAE,cAAA,EAAA;AAAiB,IAAA,CAAA;AACnC,IAAA,SAAA,CAAU,CAAA,EAAG;AAAE,MAAA,CAAA,CAAE,cAAA,EAAA;AAAiB,IAAA;AAAA,GAAA;AAGpC,EAAA,OAAO;IACL,KAAA,EAAO,EAAE,IAAI,aAAA,GAAgB;AAAE,MAAA,OAAO,QAAA;IAAS,CAAA,EAAA;AAC/C,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,MAAA;AACA,IAAA;AAAA,GAAA;AAEJ;ACnEO,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,YAAA;EACN,QAAA,EAAU;IACR,WAAA,EAAa;MACX,QAAA,EAAU,UAAA;MACV,UAAA,EAAY;AAAA;AACd,GAAA;EAEF,eAAA,EAAiB,EAAE,aAAa,UAAA;AAClC,CAAC;AAEM,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,wCAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,+BAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB,EAAE,UAAU,OAAA;AAC/B,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,8DAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,IAAA,EAAM,2BAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB,EAAE,SAAS,OAAA;AAC9B,CAAC;;;AChBD,IAAM,YAAA,GAAqBC,iCAAwC,IAAI,CAAA;AAOhE,SAAS,UAAA,CAAW;AACzB,EAAA,QAAA;AACA,EAAA,SAAA;EACA,KAAA,EAAO,eAAA;AACP,EAAA,YAAA;AACA,EAAA,aAAA;AACA,EAAA,IAAA;EACA,QAAA,GAAW,KAAA;EACX,WAAA,GAAc;AAChB,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,4BAAS,YAAY,CAAA;AACrE,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,YAAA,GAAe,eAAe,eAAA,GAAkB,aAAA;AAEtD,EAAA,MAAM,GAAA,GAAM,iBAAiB,EAAE,KAAA,EAAO,cAAc,IAAA,EAAM,QAAA,EAAU,aAAa,CAAA;AAEjF,EAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AACzB,IAAA,CAAC,GAAA,KAAgB;AACf,MAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,GAAG,CAAA;AACvC,MAAA,aAAA,GAAgB,GAAG,CAAA;AACrB,IAAA,CAAA;AACA,IAAA,CAAC,cAAc,aAAa;AAAA,GAAA;AAG9B,EAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAChB,IAAA,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,aAAA,EAAe,YAAA,EAAc,MAAM,QAAA,EAAA,CAAA;IACjE,CAAC,YAAA,EAAc,YAAA,EAAc,IAAA,EAAM,QAAQ;AAAA,GAAA;AAG7C,EAAA,OAAaA,kBAAA,CAAA,aAAA;IACX,YAAA,CAAa,QAAA;AACb,IAAA,EAAE,OAAO,GAAA,EAAA;AACH,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;MACA,EAAE,GAAG,GAAA,CAAI,UAAA,EAAY,SAAA,EAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,WAAA,EAAa,CAAA,EAAG,SAAS,CAAA,EAAA;AACjF,MAAA;AAAA;AACF,GAAA;AAEJ;AASO,SAAS,UAAU,EAAE,KAAA,EAAO,UAAU,QAAA,GAAW,KAAA,EAAO,WAAA,EAA6B;AAC1F,EAAA,MAAM,GAAA,GAAYA,8BAAW,YAAY,CAAA;AACzC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAEpE,EAAA,MAAM,SAAA,GAAY,IAAI,KAAA,KAAU,KAAA;AAChC,EAAA,MAAM,UAAA,GAAa,IAAI,QAAA,IAAY,QAAA;AAEnC,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,OAAA;AACA,IAAA;MACE,SAAA,EAAW,EAAA,CAAG,kBAAkB,EAAE,QAAA,EAAU,aAAa,MAAA,GAAS,OAAA,EAAS,CAAA,EAAG,SAAS,CAAA;AACvF,MAAA,YAAA,EAAc,YAAY,SAAA,GAAY;AAAA,KAAA;AAElC,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,IAAA,EAAM,OAAA;QACN,cAAA,EAAgB,SAAA;AAChB,QAAA,eAAA,EAAiB,UAAA,IAAc,MAAA;AAC/B,QAAA,QAAA,EAAU,YAAY,CAAA,GAAI,EAAA;QAC1B,QAAA,EAAU,UAAA;QACV,SAAA,EAAW,EAAA,CAAG,oBAAoB,EAAE,OAAA,EAAS,YAAY,MAAA,GAAS,OAAA,EAAS,CAAC,CAAA;AAC5E,QAAA,OAAA,EAAS,MAAM,CAAC,UAAA,IAAc,GAAA,CAAI,cAAc,KAAK;AAAA,OAAA;MAEvD,SAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,QAAA,MAAA;AACA,QAAA,EAAE,WAAW,0DAAA;AAA2D;AAC1E,KAAA;AAEJ,IAAA,QAAA,IAAkBA,iCAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,SAAA,IAAa,QAAQ;AAAA,GAAA;AAE9E;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AACzB,SAAA,CAAU,WAAA,GAAc,WAAA;;;AClEjB,SAAS,kBAAkB,KAAA,EAAyC;AACzE,EAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,KAAA,EAAA,GAAU,KAAA;AAEvC,EAAA,MAAM,WAAA,GAAc,WAAW,eAAe,CAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,WAAW,qBAAqB,CAAA;AAEhD,EAAA,SAAS,OAAO,KAAA,EAAqB;AACnC,IAAA,QAAA,GAAW,KAAK,CAAA;AAClB,EAAA;AAEA,EAAA,SAAS,IAAI,KAAA,EAAqB;AAChC,IAAA,KAAA,GAAQ,KAAK,CAAA;AACf,EAAA;AAEA,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,OAAA;IACN,YAAA,EAAc,WAAA;IACd,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,qBAAqB,QAAA,EAA6C;AACzE,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;AACN,MAAA,cAAA,EAAgB,QAAA,CAAS,WAAA;AACzB,MAAA,YAAA,EAAc,GAAG,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI,QAAA,CAAS,KAAK,CAAA,SAAA,EAAY,QAAA,CAAS,KAAA,KAAU,CAAA,GAAI,KAAK,GAAG,CAAA,EAAG,QAAA,CAAS,WAAA,GAAc,kBAAkB,EAAE,CAAA;AAAA,KAAA;AAE9I,EAAA;AAEA,EAAA,MAAM,kBAAA,GAA8C;IAClD,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,GAAA;AACA,IAAA,SAAA;AACA,IAAA,oBAAA;AACA,IAAA,kBAAA;IACA,GAAA,EAAK;MACH,SAAA,EAAW,WAAA;MACX,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;ACpFO,IAAM,iBAAA,GACX;AAEK,IAAM,uBAAuB,GAAA,CAAI;EACtC,IAAA,EAAM,yHAAA;EACN,QAAA,EAAU;IACR,KAAA,EAAO;MACL,MAAA,EAAQ,2CAAA;MACR,QAAA,EAAU;AAAA;AACZ,GAAA;EAEF,eAAA,EAAiB;IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,uBAAA,GACX;AAEK,IAAM,mBAAA,GAAsB;AAC5B,IAAM,mBAAA,GAAsB;;;ACF5B,SAAS,WAAA,CAAY;AAC1B,EAAA,SAAA;AACA,EAAA,QAAA;AACA,EAAA,KAAA;EACA,aAAA,GAAgB,IAAA;AAChB,EAAA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,MAAM,iBAAA,CAAkB,EAAE,SAAA,EAAW,QAAA,EAAU,OAAO,CAAA;AAE5D,EAAA,OAAaC,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,SAAA,EAAW,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAA;AAC9D,IAAA,GAAA,CAAI,SAAA,CAAU,GAAA;AAAI,MAAA,CAAC,UAAU,CAAA,KACrBA,kBAAA,CAAA,aAAA;AACJ,QAAA,QAAA;AACA,QAAA;AACE,UAAA,GAAA,EAAK,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;UAC3B,IAAA,EAAM,QAAA;AACN,UAAA,SAAA,EAAW,oBAAA,CAAqB;YAC9B,KAAA,EAAO,QAAA,CAAS,cAAc,QAAA,GAAW;WAC1C,CAAA;AACD,UAAA,OAAA,EAAS,MAAM,GAAA,CAAI,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA;UACxC,GAAG,GAAA,CAAI,qBAAqB,QAAQ;AAAA,SAAA;AAEhC,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,mBAAA,EAAA,EAAuB,SAAS,KAAK,CAAA;AACxE,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,mBAAA,EAAA,EAAuB,SAAS,KAAK;AAAA;AAChF,KAAA;IAEF,aAAA,IACQA,kBAAA,CAAA,aAAA;AACJ,MAAA,QAAA;AACA,MAAA;QACE,IAAA,EAAM,QAAA;QACN,SAAA,EAAW,uBAAA;QACX,OAAA,EAAS,MAAM,QAAQ,WAAW,CAAA;AAClC,QAAA,GAAG,GAAA,CAAI;AAAA,OAAA;AAET,MAAA;AAAA;AACF,GAAA;AAEN;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;ACTnB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM;AACJ,IAAA,KAAA;AACA,IAAA,OAAA,GAAU,EAAA;IACV,WAAA,GAAc,kBAAA;IACd,QAAA,GAAW,KAAA;IACX,IAAA,GAAO;GAAA,GACL,KAAA;AAEJ,EAAA,MAAM,gBAAgB,CAAC,QAAA;AACvB,EAAA,MAAM,iBAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AAE5D,EAAA,MAAM,SAAA,GAAY,WAAW,gBAAgB,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,WAAW,gBAAgB,CAAA;AAE7C,EAAA,MAAM,gBAAA,GAAgD;IACpD,IAAA,EAAM,UAAA;IACN,eAAA,EAAiB,IAAA;IACjB,eAAA,EAAiB,SAAA;IACjB,iBAAA,EAAmB;AAAA,GAAA;AAErB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,IAAA;AACtC,EAAA;AAEA,EAAA,MAAM,0BAA8C,EAAA;AACpD,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,uBAAA,CAAwB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC/C,IAAA,uBAAA,CAAwB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC/C,IAAA,uBAAA,CAAwB,KAAK,SAAS,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AACnD,IAAA,uBAAA,CAAwB,KAAK,OAAO,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AACnD,EAAA;AAEA,EAAA,MAAM,qBAAA,GAAgD;AACpD,IAAA,YAAA,EAAc,OAAO,MAAA,GAAS;AAAA,GAAA;AAEhC,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,qBAAA,CAAsB,eAAe,CAAA,GAAI,EAAA;AAC3C,EAAA;AAEA,EAAA,MAAM,gBAAA,GAAgD;IACpD,IAAA,EAAM,SAAA;IACN,iBAAA,EAAmB;AAAA,GAAA;AAGrB,EAAA,MAAM,qBAAA,GAAgD;AACpD,IAAA,YAAA,EAAc,OAAO,MAAA,GAAS;AAAA,GAAA;AAGhC,EAAA,SAAS,eAAe,MAAA,EAAsB;AAC5C,IAAA,MAAM,UAAA,GAAa,OAAO,KAAA,KAAU,KAAA;AACpC,IAAA,MAAM,eAAA,GAA+C;MACnD,IAAA,EAAM,QAAA;MACN,eAAA,EAAiB;AAAA,KAAA;AAEnB,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,eAAA,CAAgB,eAAe,CAAA,GAAI,IAAA;AACrC,IAAA;AAEA,IAAA,MAAM,uBAA+C,EAAA;AACrD,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,oBAAA,CAAqB,YAAY,CAAA,GAAI,SAAA;AACvC,IAAA;AACA,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,oBAAA,CAAqB,eAAe,CAAA,GAAI,EAAA;AAC1C,IAAA;AAEA,IAAA,OAAO;MACL,SAAA,EAAW,eAAA;MACX,cAAA,EAAgB,oBAAA;AAChB,MAAA;AAAA,KAAA;AAEJ,EAAA;AAEA,EAAA,OAAO;IACL,YAAA,EAAc;MACZ,SAAA,EAAW,gBAAA;MACX,gBAAA,EAAkB,uBAAA;MAClB,cAAA,EAAgB;AAAA,KAAA;IAElB,YAAA,EAAc;MACZ,SAAA,EAAW,gBAAA;MACX,cAAA,EAAgB;AAAA,KAAA;AAElB,IAAA,cAAA;AACA,IAAA,aAAA;IACA,KAAA,EAAO;AACL,MAAA,IAAA;AACA,MAAA,aAAA,EAAe,cAAA,EAAgB,KAAA;AAC/B,MAAA,aAAA,EAAe,cAAA,EAAgB,KAAA;AAC/B,MAAA,QAAA;AACA,MAAA;AAAA,KAAA;IAEF,GAAA,EAAK;MACH,OAAA,EAAS,SAAA;MACT,OAAA,EAAS;AAAA;AACX,GAAA;AAEJ;ACpJO,IAAM,YAAA,GAA8B;EACzC,IAAA,EAAM,QAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,wBAAA,EAAA;AAC7C,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,wBAAA,EAAA;AAC7C,IAAA,MAAA,EAAQ,EAAE,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,oBAAA,EAAA;AACrD,IAAA,IAAA,EAAM,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,kBAAA;AAAmB;AAExE;AAEO,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM,iRAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,EAAA,EAAI,aAAA;MACJ,OAAA,EAAS,aAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,wBAAwB,GAAA,CAAI;EACvC,IAAA,EAAM,oJAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,MAAA,EAAQ,eAAA;MACR,cAAA,EAAgB;AAAA;AAClB,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;AAEM,IAAM,qBAAqB,GAAA,CAAI;EACpC,IAAA,EAAM,2NAAA;EACN,QAAA,EAAU;IACR,QAAA,EAAU;MACR,IAAA,EAAM,cAAA;MACN,KAAA,EAAO;AAAA;AACT,GAAA;EAEF,eAAA,EAAiB;IACf,QAAA,EAAU;AAAA;AAEd,CAAC;AC5BD,IAAM,gBAAsBC,kBAAA,CAAA,aAAA,CAAkC;EAC5D,KAAA,EAAO,MAAA;AACP,EAAA,aAAA,EAAe,MAAM;AAAC,EAAA,CAAA;EACtB,IAAA,EAAM,KAAA;AACN,EAAA,OAAA,EAAS,MAAM;AAAC,EAAA,CAAA;AAChB,EAAA,OAAA,EAAS,EAAA;EACT,QAAA,EAAU,KAAA;EACV,WAAA,EAAa,kBAAA;EACb,SAAA,EAAW,EAAA;EACX,SAAA,EAAW;AACb,CAAC,CAAA;AAeM,SAAS,MAAA,CAAO;AACrB,EAAA,KAAA;AACA,EAAA,aAAA;EACA,QAAA,GAAW,KAAA;AACX,EAAA,QAAA;EACA,WAAA,GAAc;AAChB,CAAA,EAAgB;AACd,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,MAAM,YAAA,CAAa,EAAE,OAAO,QAAA,EAAU,IAAA,EAAM,aAAa,CAAA;AAE/D,EAAA,uBACEzE,cAAAA;IAAC,aAAA,CAAc,QAAA;AAAd,IAAA;MACC,KAAA,EAAO;AACL,QAAA,KAAA;AACA,QAAA,aAAA,EAAe,kBAAkB,MAAM;AAAC,QAAA,CAAA,CAAA;AACxC,QAAA,IAAA;AACA,QAAA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,UAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAC,CAAA;AAC1B,QAAA,CAAA;AACA,QAAA,OAAA,EAAS,EAAA;AACT,QAAA,QAAA;AACA,QAAA,WAAA;AACA,QAAA,SAAA,EAAW,IAAI,GAAA,CAAI,OAAA;AACnB,QAAA,SAAA,EAAW,IAAI,GAAA,CAAI;AAAA,OAAA;AAGpB,MAAA;AAAA;AAAA,GAAA;AAGP;AAOO,IAAM,aAAA,GAAsByE,kBAAA,CAAA,UAAA;EACjC,CAAC,EAAE,WAAW,QAAA,EAAU,IAAA,GAAO,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC5D,IAAA,MAAM,EAAE,MAAM,OAAA,EAAS,QAAA,EAAU,WAAW,SAAA,EAAA,GAAoBA,8BAAW,aAAa,CAAA;AAExF,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,EAAE,QAAA,EAAU,MAAM,CAAA;AAE3C,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AACf,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAC,IAAI,CAAA;AAC9B,MAAA;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACA,MAAA,IAAA,CAAK,EAAE,GAAA,KAAQ,WAAA,IAAe,EAAE,GAAA,KAAQ,SAAA,KAAc,CAAC,IAAA,EAAM;AAC3D,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,IAAI,CAAA;AAC7B,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,uBACExE,eAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;QACL,EAAA,EAAI,SAAA;AACJ,QAAA,SAAA,EAAW,GAAG,qBAAA,CAAsB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;QACxD,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;AACX,QAAA,QAAA;AACC,QAAA,GAAG,IAAI,YAAA,CAAa,SAAA;AACpB,QAAA,GAAG,IAAI,YAAA,CAAa,cAAA;QACrB,eAAA,EAAe,SAAA;QACd,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;0BACDD,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,6BAAA;cACV,KAAA,EAAM,4BAAA;cACN,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,aAAA,EAAY,MAAA;AAEZ,cAAA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gBAAe;AAAA;AAAA;AACzB;AAAA;AAAA,KAAA;AAGN,EAAA;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAKrB,IAAM,aAAA,GAAsByE,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,SAAA,EAAA,GAAoBA,8BAAW,aAAa,CAAA;AAErE,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,uBACEzE,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,EAAA,EAAI,SAAA;QACJ,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAA,EAAyB,SAAS,CAAA;QAChD,IAAA,EAAK,SAAA;QACL,iBAAA,EAAiB,SAAA;AACjB,QAAA,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;QAC3B,GAAG,KAAA;AAEH,QAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAQrB,IAAM,UAAA,GAAmByE,kBAAA,CAAA,UAAA;EAC9B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,YAAA,GAAe,KAAA,EAAO,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAC5F,IAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,OAAA,EAAA,GAAkBA,8BAAW,aAAa,CAAA;AACxE,IAAA,MAAM,aAAa,KAAA,KAAU,SAAA;AAE7B,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,aAAA,CAAc,SAAS,CAAA;AACvB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,IAAA,CAAK,EAAE,GAAA,KAAQ,OAAA,IAAW,EAAE,GAAA,KAAQ,GAAA,KAAQ,CAAC,YAAA,EAAc;AACzD,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,aAAA,CAAc,SAAS,CAAA;AACvB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACf,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,uBACExE,eAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA,CAAG,mBAAmB,EAAE,QAAA,EAAU,aAAa,MAAA,GAAS,OAAA,EAAS,CAAA,EAAG,SAAS,CAAA;QACxF,IAAA,EAAK,QAAA;QACL,eAAA,EAAe,UAAA;AACf,QAAA,eAAA,EAAe,YAAA,IAAgB,MAAA;AAC/B,QAAA,YAAA,EAAY,aAAa,SAAA,GAAY,MAAA;AACrC,QAAA,eAAA,EAAe,eAAe,EAAA,GAAK,MAAA;AACnC,QAAA,QAAA,EAAU,eAAe,MAAA,GAAY,CAAA;QACrC,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;QACV,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+DAAA,EACd,0BAAAA,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,SAAA,EAAU,SAAA;cACV,KAAA,EAAM,4BAAA;cACN,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,aAAA,EAAY,MAAA;AAEZ,cAAA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mBAAkB;AAAA;AAAA,WAAA,EAE9B,CAAA;AAED,UAAA;AAAA;AAAA;AAAA,KAAA;AAGP,EAAA;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;;;AC/MzB,IAAMP,cAAAA,GAA4C;EAChD,OAAA,EAAS,OAAA;EACT,KAAA,EAAO,KAAA;EACP,OAAA,EAAS,QAAA;EACT,IAAA,EAAM,MAAA;EACN,OAAA,EAAS,QAAA;EACT,OAAA,EAAS;AACX;AAEA,IAAMC,cAAAA,GAA4C;EAChD,OAAA,EAAS,SAAA;EACT,KAAA,EAAO,OAAA;EACP,OAAA,EAAS,SAAA;EACT,IAAA,EAAM,MAAA;EACN,OAAA,EAAS,SAAA;EACT,OAAA,EAAS;AACX;AAIO,SAAS,sBAAsB,KAAA,EAA+B;AACnE,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,eAAA,GAAkB,KAAA;AAE7D,EAAA,MAAM,KAAA,GAAQD,eAAc,IAAI,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,aAAA,IAAiBC,cAAAA,CAAc,IAAI,CAAA;AACjD,EAAA,MAAM,KAAA,GAAQ,iBAAkB,IAAA,KAAS,SAAA;AAEzC,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,QAAA;IACN,YAAA,EAAc;AAAA,GAAA;AAGhB,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA;AAAA,GAAA;AAEJ;AC/DO,IAAM,qBAAA,GACX;AAEK,IAAM,oBAAoB,GAAA,CAAI;EACnC,IAAA,EAAM,mCAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,OAAA,EAAS,cAAA;MACT,KAAA,EAAO,YAAA;MACP,OAAA,EAAS,eAAA;MACT,IAAA,EAAM,aAAA;MACN,OAAA,EAAS,eAAA;MACT,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,iDAAA;EACN,QAAA,EAAU;IACR,IAAA,EAAM;MACJ,OAAA,EAAS,cAAA;MACT,KAAA,EAAO,YAAA;MACP,OAAA,EAAS,eAAA;MACT,IAAA,EAAM,aAAA;MACN,OAAA,EAAS,eAAA;MACT,OAAA,EAAS;AAAA;AACX,GAAA;EAEF,eAAA,EAAiB;IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,iBAAA,GACX;;;ACrBK,SAAS,eAAA,CAAgB;AAC9B,EAAA,IAAA;AACA,EAAA,KAAA;AACA,EAAA,KAAA;EACA,SAAA,GAAY,IAAA;AACZ,EAAA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,MAAM,qBAAA,CAAsB,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,CAAA;AAExD,EAAA,MAAM,YAAA,GAAe,GAAA,CAAI,KAAA,GACrB,mBAAA,CAAoB,EAAE,IAAA,EAAM,CAAA,GAC5B,iBAAA,CAAkB,EAAE,IAAA,EAAM,CAAA;AAE9B,EAAA,OAAagF,kBAAA,CAAA,aAAA;AACX,IAAA,MAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,SAAA,EAAW,WAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAA;AAC5D,IAAAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,YAAA,EAAc,CAAA;AACvD,IAAA,SAAA,IACQA,iCAAc,MAAA,EAAQ,EAAE,WAAW,iBAAA,EAAA,EAAqB,IAAI,KAAK;AAAA,GAAA;AAE7E;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;;ACdvB,SAAS,YAAA,CAAa,KAAA,GAAqB,EAAA,EAAe;AAC/D,EAAA,MAAM,EAAE,OAAA,GAAU,KAAA,EAAO,QAAA,GAAW,OAAA,GAAU,KAAA;AAC9C,EAAA,MAAM,gBAAgB,CAAC,QAAA;AAEvB,EAAA,MAAM,SAAA,GAAyC;IAC7C,IAAA,EAAM,QAAA;IACN,cAAA,EAAgB;AAAA,GAAA;AAGlB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,IAAA;AAC/B,EAAA;AAEA,EAAA,MAAM,iBAAyC,EAAA;AAC/C,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,cAAA,CAAe,YAAY,CAAA,GAAI,SAAA;EACjC,CAAA,MAAO;AACL,IAAA,cAAA,CAAe,YAAY,CAAA,GAAI,WAAA;AACjC,EAAA;AACA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,EAAA;AACpC,EAAA;AAEA,EAAA,MAAM,mBAAuC,EAAA;AAC7C,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,gBAAA,CAAiB,KAAK,KAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAE,cAAA,EAAA;AAC1C,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,SAAA;AACA,IAAA,gBAAA;AACA,IAAA,aAAA;AACA,IAAA,cAAA;IACA,KAAA,EAAO,EAAE,SAAS,QAAA;AAAS,GAAA;AAE/B;AC3DO,IAAM,YAAA,GAA8B;EACzC,IAAA,EAAM,QAAA;EACN,MAAA,EAAQ;AACN,IAAA,EAAA,EAAI,EAAE,QAAA,EAAU,iBAAA,EAAmB,QAAA,EAAU,mBAAA,EAAA;AAC7C,IAAA,YAAA,EAAc,EAAE,QAAA,EAAU,yBAAA,EAA2B,QAAA,EAAU,qBAAA,EAAA;AAC/D,IAAA,KAAA,EAAO,EAAE,QAAA,EAAU,oBAAA,EAAsB,QAAA,EAAU,wBAAA,EAAA;AACnD,IAAA,IAAA,EAAM,EAAE,QAAA,EAAU,mBAAA,EAAqB,QAAA,EAAU,kBAAA;AAAmB;AAExE;AAEO,IAAM,iBAAiB,GAAA,CAAI;EAChC,IAAA,EAAM,qTAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,IAAA,EAAM,YAAA;MACN,KAAA,EAAO;AAAA,KAAA;IAET,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,OAAA,EAAS,SAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS,OAAA;IACT,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,sBAAsB,GAAA,CAAI;EACrC,IAAA,EAAM,4FAAA;EACN,QAAA,EAAU;IACR,OAAA,EAAS;MACP,IAAA,EAAM,EAAA;MACN,KAAA,EAAO;AAAA,KAAA;IAET,IAAA,EAAM;MACJ,EAAA,EAAI,SAAA;MACJ,OAAA,EAAS,SAAA;MACT,EAAA,EAAI;AAAA;AACN,GAAA;EAEF,eAAA,EAAiB;IACf,OAAA,EAAS,OAAA;IACT,IAAA,EAAM;AAAA,GAAA;EAER,gBAAA,EAAkB;AAChB,IAAA,EAAE,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,eAAA,EAAA;AACtC,IAAA,EAAE,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,OAAO,eAAA,EAAA;AAC3C,IAAA,EAAE,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,eAAA;AAAgB;AAE1D,CAAC;AClCM,IAAM,MAAA,GAAeC,kBAAA,CAAA,UAAA;AAC1B,EAAA,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,eAAA,EAAiB,QAAA,GAAW,KAAA,EAAO,IAAA,GAAO,SAAA,EAAW,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACtG,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,EAAE,OAAA,EAAS,UAAU,CAAA;AAE9C,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,IAAI,aAAA,EAAe;AACrB,QAAA,eAAA,GAAkB,CAAC,OAAO,CAAA;AAC5B,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,CAAA,CAAE,QAAQ,GAAA,EAAK;AACjB,QAAA,CAAA,CAAE,cAAA,EAAA;AACF,QAAA,IAAI,IAAI,aAAA,EAAe;AACrB,UAAA,eAAA,GAAkB,CAAC,OAAO,CAAA;AAC5B,QAAA;AACF,MAAA;AACF,IAAA,CAAA;AAEA,IAAA,uBACE3E,cAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;QACL,SAAA,EAAW,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,OAAA,GAAU,SAAS,OAAA,EAAS,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA;QACtF,OAAA,EAAS,WAAA;QACT,SAAA,EAAW,aAAA;AACX,QAAA,QAAA;AACC,QAAA,GAAG,GAAA,CAAI,SAAA;AACP,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG,KAAA;AAEJ,QAAA,QAAA,kBAAAA,cAAAA;AAAC,UAAA,MAAA;AAAA,UAAA;YACC,SAAA,EAAW,EAAA,CAAG,oBAAoB,EAAE,OAAA,EAAS,UAAU,MAAA,GAAS,OAAA,EAAS,IAAA,EAAM,CAAC;AAAA;AAAA;AAClF;AAAA,KAAA;AAGN,EAAA;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;ACyBd,SAAS,gBAAgB,IAAA,EAAoB;AAClD,EAAA,MAAM,KAAA,GAAQ,KAAK,QAAA,EAAA;AACnB,EAAA,MAAM,OAAA,GAAU,KAAK,UAAA,EAAA;AACrB,EAAA,MAAM,IAAA,GAAO,KAAA,IAAS,EAAA,GAAK,IAAA,GAAO,IAAA;AAClC,EAAA,MAAM,YAAA,GAAe,QAAQ,EAAA,IAAM,EAAA;AACnC,EAAA,MAAM,iBAAiB,OAAA,GAAU,EAAA,GAAK,IAAI,OAAO,CAAA,CAAA,GAAK,GAAG,OAAO,CAAA,CAAA;AAChE,EAAA,OAAO,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,cAAc,IAAI,IAAI,CAAA,CAAA;AAClD;AAEO,SAAS,kBAAA,CAAmB,MAAY,GAAA,EAAoB;AACjE,EAAA,MAAM,SAAA,GAAY,GAAA,oBAAO,IAAI,IAAA,EAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,OAAA,EAAA,GAAY,KAAK,OAAA,EAAA;AAC1C,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAI,CAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,WAAA,GAAc,EAAE,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,WAAA,GAAc,EAAE,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,EAAE,CAAA;AAE1C,EAAA,IAAI,WAAA,GAAc,IAAI,OAAO,UAAA;AAC7B,EAAA,IAAI,WAAA,GAAc,IAAI,OAAO,CAAA,EAAG,WAAW,CAAA,OAAA,EAAU,WAAA,KAAgB,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,IAAA,CAAA;AACjF,EAAA,IAAI,SAAA,GAAY,IAAI,OAAO,CAAA,EAAG,SAAS,CAAA,KAAA,EAAQ,SAAA,KAAc,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,IAAA,CAAA;AACzE,EAAA,IAAI,QAAA,GAAW,GAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,IAAA,EAAO,QAAA,KAAa,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,IAAA,CAAA;AAEpE,EAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,OAAA,EAAS,EAAE,KAAA,EAAO,SAAS,GAAA,EAAK,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAC7F;AAEO,SAAS,iBAAiB,KAAA,EAAuC;AACtE,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,eAAA,GAAkB,KAAA;AAEtD,EAAA,IAAI,UAAA,GAA4B,IAAA;AAEhC,EAAA,MAAM,QAAA,GAAW,WAAW,YAAY,CAAA;AACxC,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAE7C,EAAA,SAAS,WAAW,SAAA,EAAyB;AAC3C,IAAA,UAAA,GAAa,SAAA;AACf,EAAA;AAEA,EAAA,SAAS,WAAA,GAAoB;AAC3B,IAAA,UAAA,GAAa,IAAA;AACf,EAAA;AAEA,EAAA,SAAS,KAAA,CAAM,WAAmB,OAAA,EAAuB;AACvD,IAAA,OAAA,GAAU,WAAW,OAAO,CAAA;AAC5B,IAAA,UAAA,GAAa,IAAA;AACf,EAAA;AAEA,EAAA,SAAS,KAAA,CAAM,WAAmB,KAAA,EAAqB;AACrD,IAAA,OAAA,GAAU,WAAW,KAAK,CAAA;AAC5B,EAAA;AAEA,EAAA,MAAM,SAAA,GAAmE;IACvE,IAAA,EAAM,KAAA;IACN,YAAA,EAAc,gBAAA;IACd,WAAA,EAAa,QAAA;IACb,EAAA,EAAI;AAAA,GAAA;AAGN,EAAA,SAAS,oBAAoB,OAAA,EAA+C;AAC1E,IAAA,MAAM,KAAA,GAAQ,aAAA,IAAiB,OAAA,CAAQ,MAAA,CAAO,EAAA,KAAO,aAAA;AACrD,IAAA,OAAO;MACL,IAAA,EAAM,SAAA;AACN,MAAA,YAAA,EAAc,CAAA,aAAA,EAAgB,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,EAAG,KAAA,GAAQ,QAAA,GAAW,EAAE,CAAA,IAAA,EAAO,eAAA,CAAgB,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,KAAA;AAEtH,EAAA;AAEA,EAAA,SAAS,wBAAwB,SAAA,EAA4C;AAC3E,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;MACN,YAAA,EAAc,CAAA,gBAAA;AAAA,KAAA;AAElB,EAAA;AAEA,EAAA,OAAO;IACL,KAAA,EAAO;AACL,MAAA,QAAA;AACA,MAAA,IAAI,UAAA,GAAa;AAAE,QAAA,OAAO,UAAA;AAAW,MAAA;AAAA,KAAA;AAEvC,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,eAAA;AACA,IAAA,kBAAA;AACA,IAAA,SAAA;AACA,IAAA,mBAAA;AACA,IAAA,uBAAA;IACA,GAAA,EAAK;MACH,MAAA,EAAQ,QAAA;MACR,KAAA,EAAO;AAAA;AACT,GAAA;AAEJ;AC/KO,IAAM,qBAAA,GACX;AAEK,IAAM,mBAAA,GACX;AAEK,IAAM,kBAAA,GACX;AAEK,IAAM,mBAAA,GACX;AAEK,IAAM,kBAAA,GACX;AAEK,IAAM,qBAAA,GACX;AAEK,IAAM,gBAAA,GACX;AAEK,IAAM,qBAAA,GACX;AAEK,IAAM,0BAAA,GACX,kFAAA;AAEK,IAAM,mBAAA,GACX,8EAAA;AAEK,IAAM,sBAAA,GACX,qEAAA;AAEK,IAAM,kBAAA,GACX,oCAAA;;;ACNF,SAAS,gBAAA,CAAiB;AACxB,EAAA,OAAA;AACA,EAAA;AACF,CAAA,EAGG;AACD,EAAA,OAAa4E,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,WAAW,mBAAA,EAAqB,GAAG,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAA,EAAA;;AAE9D,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,kBAAA,EAAA;MACb,OAAA,CAAQ,MAAA,CAAO,SAAA,GACLA,kBAAA,CAAA,aAAA,CAAc,KAAA,EAAO;AACzB,QAAA,GAAA,EAAK,QAAQ,MAAA,CAAO,SAAA;AACpB,QAAA,GAAA,EAAK,QAAQ,MAAA,CAAO,IAAA;QACpB,SAAA,EAAW;AAAA,OACZ,IACD,OAAA,CAAQ,MAAA,CAAO,KAAK,MAAA,CAAO,CAAC,EAAE,WAAA;AAAY,KAAA;;AAG1C,IAAAA,kBAAA,CAAA,aAAA;AACJ,MAAA,KAAA;AACA,MAAA,EAAE,WAAW,mBAAA,EAAA;AACP,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,qBAAA,EAAA;AACP,QAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,oBAAA,EAAsB,OAAA,CAAQ,OAAO,IAAI,CAAA;AAC5E,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,MAAA;AACA,UAAA,EAAE,WAAW,qBAAA,EAAA;UACb,GAAA,CAAI,eAAA,CAAgB,QAAQ,SAAS;AAAA,SAAA;AAEvC,QAAA,OAAA,CAAQ,UACAA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA,IAAsB,UAAU;AAAA,OAAA;AAEvE,MAAAA,kBAAA,CAAA,aAAA,CAAc,OAAO,EAAE,SAAA,EAAW,gBAAA,EAAA,EAAoB,QAAQ,OAAO,CAAA;;AAE3E,MAAA,OAAA,CAAQ,SAAA,IACN,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,CAAA,IACrBA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,qBAAA,EAAA;AACb,QAAA,OAAA,CAAQ,SAAA,CAAU,GAAA;AAAI,UAAA,CAAC,UAAU,CAAA,KACzBA,kBAAA,CAAA,aAAA;AACJ,YAAA,QAAA;AACA,YAAA;AACE,cAAA,GAAA,EAAK,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;cAC3B,IAAA,EAAM,QAAA;cACN,SAAA,EAAW,EAAA;AACT,gBAAA,yFAAA;AACA,gBAAA,QAAA,CAAS,cAAc,8BAAA,GAAiC;AAAA,eAAA;AAE1D,cAAA,OAAA,EAAS,MAAM,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,EAAA,EAAI,SAAS,KAAK;AAAA,aAAA;AAErD,YAAA,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI,QAAA,CAAS,KAAK,CAAA;AAAA;AACrC;AACF,OAAA;;AAGJ,MAAA,OAAA,CAAQ,OAAA,IACN,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAA,IACnBA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,0BAAA,EAAA;QACb,CAAA,EAAG,OAAA,CAAQ,QAAQ,MAAM,CAAA,CAAA,EAAI,QAAQ,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,OAAA,GAAU,SAAS,CAAA;AAAA,OAAA;;MAGnF,OAAA,CAAQ,WAAA,IACN,QAAQ,WAAA,CAAY,GAAA;AAAI,QAAA,CAAC,UAAA,KACjBA,kBAAA,CAAA,aAAA;AACJ,UAAA,KAAA;AACA,UAAA,EAAE,GAAA,EAAK,UAAA,CAAW,EAAA,EAAI,SAAA,EAAW,sBAAA,EAAA;UAC3BA,kBAAA,CAAA,aAAA,CAAc,MAAA,EAAQ,MAAM,WAAW,CAAA;AACvC,UAAAA,kBAAA,CAAA,aAAA,CAAc,QAAQ,EAAE,SAAA,EAAW,UAAA,EAAA,EAAc,WAAW,IAAI;AAAA;AACxE,OAAA;;AAGE,MAAAA,kBAAA,CAAA,aAAA;AACJ,QAAA,KAAA;AACA,QAAA,EAAE,WAAW,mBAAA,EAAA;AACP,QAAAA,kBAAA,CAAA,aAAA;AACJ,UAAA,QAAA;AACA,UAAA;YACE,IAAA,EAAM,QAAA;YACN,SAAA,EAAW,oEAAA;AACX,YAAA,OAAA,EAAS,MAAM,GAAA,CAAI,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA;YACxC,GAAG,GAAA,CAAI,uBAAA,CAAwB,OAAA,CAAQ,EAAE;AAAA,WAAA;AAE3C,UAAA;AAAA;AACF;AACF;AACF,GAAA;AAEJ;AAEO,SAAS,UAAA,CAAW;AACzB,EAAA,QAAA;AACA,EAAA,OAAA;AACA,EAAA,OAAA;AACA,EAAA,aAAA;AACA,EAAA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,MAAM,gBAAA,CAAiB,EAAE,UAAU,OAAA,EAAS,OAAA,EAAS,eAAe,CAAA;AAE1E,EAAA,OAAaA,kBAAA,CAAA,aAAA;AACX,IAAA,KAAA;AACA,IAAA,EAAE,GAAG,GAAA,CAAI,SAAA,EAAW,WAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAA;IAClE,QAAA,CAAS,GAAA;MAAI,CAAC,OAAA,KACNA,iCAAc,gBAAA,EAAkB;AACpC,QAAA,GAAA,EAAK,OAAA,CAAQ,EAAA;AACb,QAAA,OAAA;AACA,QAAA;OACD;AAAA;AACH,GAAA;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;AC9IlB,SAAS,aAAA,CAAc,SAAA,EAAwB,SAAA,GAAY,YAAA,EAAyB;AACzF,EAAA,MAAM,WAAW,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,SAAS,CAAC,CAAA;AACjE,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,MAAM;IACxB,EAAA,EAAI,CAAA,CAAE,MAAM,CAAA,CAAE,WAAA,EAAa,aAAA,CAAc,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,IAAK,EAAA;AACjE,IAAA,IAAA,EAAM,EAAE,WAAA,IAAe,EAAA;AACvB,IAAA,KAAA,EAAO,SAAS,CAAA,CAAE,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAG,EAAE;AAAA,GAAA,CACvC,EAAE,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,EAAE,CAAA;AAC7B;AAEO,SAAS,eAAA,CACd,UAAA,EACA,QAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,QAAA,GAAW,IAAI,oBAAA,CAAqB,CAAC,OAAA,KAAY;AAErD,IAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,QAAA,QAAA,CAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AACxB,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA,CAAA,EAAG,EAAE,UAAA,EAAY,kBAAA,EAAoB,GAAG,SAAS,CAAA;AAEjD,EAAA,UAAA,CAAW,OAAA,CAAQ,CAAA,EAAA,KAAM;AACvB,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,cAAA,CAAe,EAAE,CAAA;AACrC,IAAA,IAAI,EAAA,EAAI,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAA;EAC7B,CAAC,CAAA;AAED,EAAA,OAAO,MAAM,SAAS,UAAA,EAAA;AACxB;AC1BO,IAAM,eAAA,GAAwBC,kBAAA,CAAA,UAAA;EACnC,CAAC,EAAE,WAAW,YAAA,EAAc,SAAA,GAAY,cAAc,gBAAA,EAAkB,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AAC1F,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,kBAAA,CAAA,QAAA,CAAoB,EAAE,CAAA;AAC5D,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,4BAAiB,EAAE,CAAA;AAEnD,IAAAA,6BAAU,MAAM;AACpB,MAAA,MAAM,SAAA,GAAY,YAAA,EAAc,OAAA,IAAW,QAAA,CAAS,IAAA;AACpD,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,SAAA,EAAW,SAAS,CAAA;AACzD,MAAA,WAAA,CAAY,cAAc,CAAA;AAE1B,MAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAEjC,MAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,cAAA,CAAe,GAAA,CAAI,CAAA,MAAK,CAAA,CAAE,EAAE,CAAA,EAAG,CAAC,EAAA,KAAO;AACxE,QAAA,WAAA,CAAY,EAAE,CAAA;AACd,QAAA,gBAAA,GAAmB,EAAE,CAAA;MACvB,CAAC,CAAA;AAED,MAAA,OAAO,MAAM,UAAA,EAAA;AACf,IAAA,CAAA,EAAG,CAAC,YAAA,EAAc,SAAA,EAAW,gBAAgB,CAAC,CAAA;AAE9C,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,MAAA,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,uBAAA7E,cAAAA,CACG,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,KAAA,EACxD,0BAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mBAAA,EACX,UAAA,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,qBACbA,cAAAA;AAAC,MAAA,IAAA;AAAA,MAAA;QAEC,SAAA,EAAW,EAAA;AACT,UAAA,MAAA;AACA,UAAA,OAAA,CAAQ,UAAU,CAAA,GAAI,MAAA,GAAS,OAAA,CAAQ,KAAA,KAAU,IAAI,MAAA,GAAS;AAAA,SAAA;AAGhE,QAAA,QAAA,kBAAAA,cAAAA;AAAC,UAAA,GAAA;AAAA,UAAA;YACC,IAAA,EAAM,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;YACpB,SAAA,EAAW,EAAA;AACT,cAAA,uDAAA;cACA,QAAA,KAAa,OAAA,CAAQ,KAAK,6BAAA,GAAgC;AAAA,aAAA;AAG3D,YAAA,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA;AACX,OAAA;MAdK,OAAA,CAAQ;KAgBhB,CAAA,EACH,CAAA,EACF,CAAA;AAEJ,EAAA;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AC5D9B,IAAM,eAAA,GAAwB8E,iCAIpB,IAAI,CAAA;AAUP,IAAM,QAAA,GAAiBA,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,SAAA,EAAW,IAAA,GAAO,QAAA,EAAU,WAAA,EAAa,KAAA,EAAO,eAAA,EAAiB,YAAA,EAAc,aAAA,EAAe,GAAG,KAAA,EAAA,EAAS,GAAA,KAAQ;AACnH,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,kBAAA,CAAA,QAAA;MACtD,YAAA,KAAiB,IAAA,KAAS,UAAA,GAAa,EAAA,GAAK,EAAA;AAAA,KAAA;AAG9C,IAAA,MAAM,KAAA,GAAQ,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,iBAAA;AAEhE,IAAA,MAAM,iBAAA,GAA0BA,kBAAA,CAAA,WAAA;AAC9B,MAAA,CAAC,SAAA,KAAsB;AACrB,QAAA,IAAI,SAAS,QAAA,EAAU;AACrB,UAAA,MAAM,QAAA,GAAW,KAAA,KAAU,SAAA,IAAa,WAAA,GAAc,EAAA,GAAK,SAAA;AAC3D,UAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,UAAA,aAAA,GAAgB,QAAQ,CAAA;QAC1B,CAAA,MAAO;AACL,UAAA,MAAM,WAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAA;AAChD,UAAA,MAAM,QAAA,GAAW,QAAA,CAAS,QAAA,CAAS,SAAS,IACxC,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,SAAS,CAAA,GACtC,CAAC,GAAG,UAAU,SAAS,CAAA;AAC3B,UAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,UAAA,aAAA,GAAgB,QAAQ,CAAA;AAC1B,QAAA;AACF,MAAA,CAAA;MACA,CAAC,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,aAAa;AAAA,KAAA;AAG1C,IAAA,uBACE9E,cAAAA,CAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAO,aAAA,EAAe,iBAAA,EAAA,EAC7D,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EAC9E,CAAA;AAEJ,EAAA;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,mBAAA,GAA4B8E,iCAAyD,IAAI,CAAA;AAMxF,IAAM,YAAA,GAAqBA,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,GAAG,KAAA,IAAS,GAAA,KAAQ;AACvC,IAAA,MAAM,OAAA,GAAgBA,8BAAW,eAAe,CAAA;AAChD,IAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAEpE,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,IAAA,KAAS,QAAA,GAC5B,QAAQ,KAAA,KAAU,KAAA,GAClB,KAAA,CAAM,OAAA,CAAQ,QAAQ,KAAK,CAAA,IAAK,OAAA,CAAQ,KAAA,CAAM,SAAS,KAAK,CAAA;AAEhE,IAAA,uBACE9E,cAAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAA,EAC5C,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA,EAAG,YAAA,EAAY,MAAA,GAAS,MAAA,GAAS,QAAA,EAAW,GAAG,KAAA,EAAO,GACxH,CAAA;AAEJ,EAAA;AACF;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAIpB,IAAM,eAAA,GAAwB8E,kBAAA,CAAA,UAAA;AACnC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,eAAA,GAAwBA,8BAAW,eAAe,CAAA;AACxD,IAAA,MAAM,WAAA,GAAoBA,8BAAW,mBAAmB,CAAA;AAExD,IAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,aAAa,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAEvF,IAAA,uBACE9E,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,cAAA,EACZ,0BAAAC,eAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,IAAA,EAAK,QAAA;AACL,QAAA,eAAA,EAAe,WAAA,CAAY,MAAA;QAC3B,SAAA,EAAW,EAAA;AACT,UAAA,sIAAA;AACA,UAAA;AAAA,SAAA;QAEF,YAAA,EAAY,WAAA,CAAY,SAAS,MAAA,GAAS,QAAA;AAC1C,QAAA,OAAA,EAAS,MAAM,eAAA,CAAgB,aAAA,CAAc,WAAA,CAAY,KAAK,CAAA;QAC7D,GAAG,KAAA;QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;0BACDD,cAAAA;AAAC,YAAA,KAAA;AAAA,YAAA;cACC,KAAA,EAAM,4BAAA;cACN,KAAA,EAAM,IAAA;cACN,MAAA,EAAO,IAAA;cACP,OAAA,EAAQ,WAAA;cACR,IAAA,EAAK,MAAA;cACL,MAAA,EAAO,cAAA;cACP,WAAA,EAAY,GAAA;cACZ,aAAA,EAAc,OAAA;cACd,cAAA,EAAe,OAAA;cACf,SAAA,EAAU,0EAAA;AAEV,cAAA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gBAAc;AAAA;AAAA;AACxB;AAAA;AAAA,KAAA,EAEJ,CAAA;AAEJ,EAAA;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAIvB,IAAM,eAAA,GAAwB8E,kBAAA,CAAA,UAAA;AACnC,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,WAAA,GAAoBA,8BAAW,mBAAmB,CAAA;AACxD,IAAA,IAAI,CAAC,WAAA,EAAa,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAEnE,IAAA,uBACE9E,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,yBAAA;AACA,UAAA;AAAA,SAAA;QAEF,YAAA,EAAY,WAAA,CAAY,SAAS,MAAA,GAAS,QAAA;AAC1C,QAAA,MAAA,EAAQ,CAAC,WAAA,CAAY,MAAA;QACpB,GAAG,KAAA;AAEJ,QAAA,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EAAmD,UAAS;AAAA;AAAA,KAAA;AAGjF,EAAA;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AC3IvB,IAAM,UAAA,GAAmB+E,kBAAA,CAAA,UAAA;AAC9B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,uBAAO/E,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,EAAA,EAAI,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACjE,EAAA;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;ACTlB,IAAM,UAAU,sBAAMA,cAAAA,CAAC,KAAA,EAAA,EAAI;ACA3B,IAAM,QAAQ,sBAAMA,cAAAA,CAAC,KAAA,EAAA,EAAI;;;A/L6JhC,UAAA,CAAA,aAAA,EAAc,OAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AACd,UAAA,CAAA,aAAA,EAAc,OAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;AgM7JP,IAAM,gBAAgB,MAAM;AACjC,EAAA,OAAO,IAAA;AACT;;;ACFO,IAAM,YAAY,MAAM;AAC7B,EAAA,OAAO,IAAA;AACT;;;ACAO,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAI;AACxD,EAAA,OAAO;IACL,cAAA,EAAgB,EAAE,aAAa,WAAA;AAAY,GAAA;AAE/C;ACJO,IAAM,QAAA,GAAiBgF,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,GAAA,GAAM,eAAe,KAAK,CAAA;AAChC,IAAA,uBACEhF,cAAAA;AAAC,MAAA,GAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,SAAS,CAAA;AACtB,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;;;ACbhB,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAA,EAAI;AACxD,EAAA,OAAO;IACL,cAAA,EAAgB,EAAE,aAAa,WAAA;AAAY,GAAA;AAE/C;ACFO,IAAM,QAAA,GAAiBiF,kBAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,EAAE,SAAA,EAAW,OAAA,GAAU,GAAG,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC7C,IAAA,MAAM,GAAA,GAAM,cAAA,CAAe,EAAE,CAAS,CAAA;AACtC,IAAA,uBACEjF,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,GAAG,SAAS,CAAA;AACtB,QAAA,GAAG,GAAA,CAAI,cAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;;;ACXhB,SAAS,aAAA,CAAc,KAAA,GAAsB,EAAA,EAAgB;AAClE,EAAA,OAAO;IACL,KAAA,EAAO;MACL,GAAG,KAAA;MACH,WAAA,EAAa;AAAA;AACf,GAAA;AAEJ;ACPO,IAAM,OAAA,GAAgBkF,kBAAA,CAAA,UAAA;AAC3B,EAAA,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,GAAA,GAAM,aAAA,CAAc,EAAE,QAAA,EAAU,CAAA;AAEtC,IAAA,uBACElF,cAAAA;AAAC,MAAA,KAAA;AAAA,MAAA;AACC,QAAA,GAAA;QACA,SAAA,EAAW,EAAA;AACT,UAAA,oGAAA;UACA,QAAA,IAAY,gCAAA;AACZ,UAAA;AAAA,SAAA;AAED,QAAA,GAAG,GAAA,CAAI,KAAA;QACP,GAAG;AAAA;AAAA,KAAA;AAGV,EAAA;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAIf,IAAM,aAAA,GAAsBkF,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,OAAA,EAAS,GAAA,qBACxBlF,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,OAAO;AAEtF,CAAA;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAIrB,IAAM,YAAA,GAAqBkF,kBAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,OAAA,EAAS,GAAA,qBACxBlF,cAAAA,CAAC,IAAA,EAAA,EAAG,GAAA,EAAU,WAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA,EAAI,GAAG,OAAO;AAE5G,CAAA;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAIpB,IAAM,kBAAA,GAA2BkF,kBAAA,CAAA,UAAA;AACtC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,OAAA,EAAS,GAAA,qBACxBlF,cAAAA,CAAC,GAAA,EAAA,EAAE,GAAA,EAAU,WAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA,EAAI,GAAG,OAAO;AAEvF,CAAA;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAI1B,IAAM,cAAA,GAAuBkF,kBAAA,CAAA,UAAA;AAClC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,OAAA,EAAS,GAAA,qBACxBlF,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,OAAO;AAE/E,CAAA;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAItB,IAAM,aAAA,GAAsBkF,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,OAAA,EAAS,GAAA,qBACxBlF,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA,EAAI,GAAG,OAAO;AAEpF,CAAA;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAIrB,IAAM,aAAA,GAAsBkF,kBAAA,CAAA,UAAA;AACjC,EAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAA,EAAS,wBACxBlF,cAAAA;AAAC,IAAA,QAAA;AAAA,IAAA;AACC,MAAA,GAAA;MACA,SAAA,EAAW,EAAA;AACT,QAAA,sTAAA;AACA,QAAA;AAAA,OAAA;MAED,GAAG;AAAA;AAAA;AAGV,CAAA;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;;;ACrDrB,IAAMmF,gBAAN,MAAmB;EAChB,KAAA,GAA2B;AACjC,IAAA,KAAA,EAAO,EAAA;IACP,OAAA,EAAS,EAAA;IACT,cAAA,EAAgB,CAAA;IAChB,aAAA,EAAe,IAAA;IACf,iBAAA,EAAmB;AAAA,GAAA;AAGb,EAAA,OAAA;AAER,EAAA,WAAA,CAAY,OAAA,EAA8B;AACxC,IAAA,IAAA,CAAK,OAAA,GAAU,EAAE,GAAG,OAAA,EAAA;AACtB,EAAA;AAEO,EAAA,WAAA,CAAY,MAAc,cAAA,EAA8B;AAC7D,IAAA,IAAA,CAAK,MAAM,OAAA,GAAU,IAAA;AACrB,IAAA,IAAA,CAAK,MAAM,cAAA,GAAiB,cAAA;AAC5B,IAAA,IAAA,CAAK,UAAA,EAAA;AACL,IAAA,IAAA,CAAK,iBAAA,EAAA;AACP,EAAA;AAEO,EAAA,aAAA,CAAc,KAAa,KAAA,EAAqB;AACrD,IAAA,IAAI,IAAA,CAAK,MAAM,aAAA,EAAe;AAC5B,MAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,QAAA,IAAI,KAAA,QAAa,cAAA,EAAA;AACjB,QAAA,IAAA,CAAK,MAAM,aAAA,GAAgB,IAAA;AAC3B,QAAA,IAAA,CAAK,MAAM,iBAAA,GAAoB,IAAA;AAC/B,QAAA,IAAI,IAAA,CAAK,QAAQ,eAAA,EAAiB;AAChC,UAAA,IAAA,CAAK,QAAQ,eAAA,EAAA;AACf,QAAA;AACA,QAAA,IAAA,CAAK,iBAAA,EAAA;AACP,MAAA,CAAA,MAAA,IAAW,QAAQ,OAAA,EAAS;AAC1B,QAAA,IAAI,KAAA,QAAa,cAAA,EAAA;AACjB,QAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,aAAA;AAC3B,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,iBAAA,IAAqB,EAAA;AAC7C,QAAA,IAAA,CAAK,MAAM,aAAA,GAAgB,IAAA;AAC3B,QAAA,IAAA,CAAK,MAAM,iBAAA,GAAoB,IAAA;AAC/B,QAAA,IAAI,IAAA,CAAK,QAAQ,eAAA,EAAiB;AAChC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAA,CAAgB,OAAA,EAAS,IAAI,CAAA;AAC5C,QAAA;AACA,QAAA,IAAA,CAAK,iBAAA,EAAA;AACP,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,IAAW,KAAA,GAAqB;AAC9B,IAAA,OAAO,KAAK,KAAA,CAAM,KAAA;AACpB,EAAA;EAEO,QAAA,GAA8B;AACnC,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,KAAA,EAAA;AACnB,EAAA;EAEQ,UAAA,GAAa;AACnB,IAAA,MAAM,EAAE,OAAA,EAAS,cAAA,EAAA,GAAmB,IAAA,CAAK,KAAA;AAEzC,IAAA,IAAA,CAAK,MAAM,aAAA,GAAgB,IAAA;AAC3B,IAAA,IAAA,CAAK,MAAM,iBAAA,GAAoB,IAAA;AAE/B,IAAA,KAAA,IAAS,CAAA,GAAI,cAAA,GAAiB,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC5C,MAAA,MAAM,IAAA,GAAO,QAAQ,CAAC,CAAA;AACtB,MAAA,MAAM,cAAA,GAAiB,KAAK,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAI,CAAA;AAExE,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,MAAM,aAAA,GAAgB,MAAM,CAAA,IAAK,KAAA,CAAM,KAAK,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,CAAA,GAAI,GAAG,cAAc,CAAA;AACvD,UAAA,IAAI,CAAC,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA,EAAG;AAC5B,YAAA,IAAI,OAAA,GAAU,IAAA;AACd,YAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,cAAA,OAAA,GAAU,cAAA,CAAe,OAAA,CAAQ,IAAA,CAAK,WAAW,CAAA;AACnD,YAAA;AACA,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,IAAA,CAAK,MAAM,aAAA,GAAgB,cAAA;AAC3B,cAAA,IAAA,CAAK,MAAM,iBAAA,GAAoB,WAAA;AAE/B,cAAA,IAAI,IAAA,CAAK,QAAQ,kBAAA,EAAoB;AACnC,gBAAA,IAAA,CAAK,OAAA,CAAQ,kBAAA,CAAmB,cAAA,EAAgB,WAAW,CAAA;AAC7D,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AACpB,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,QAAqB,EAAA;AAC3B,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AACtC,MAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAS,CAAA;AAC1C,MAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,KAAA;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,yBAAA,EAA2B,QAAQ,CAAC,CAAA;AACzG,IAAA,MAAM,UAAA,GAAa,CAAA,UAAA,EAAa,YAAA,CAAa,IAAA,CAAK,GAAG,CAAC,CAAA,YAAA,CAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,IAAI,MAAA,CAAO,UAAA,EAAY,GAAG,CAAA;AAExC,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,IAAI,KAAA;AAEJ,IAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,OAAO,OAAO,IAAA,EAAM;AAC7C,MAAA,MAAM,mBAAA,GAAsB,MAAM,CAAC,CAAA;AACnC,MAAA,MAAM,WAAA,GAAc,MAAM,CAAC,CAAA;AAC3B,MAAA,MAAM,WAAA,GAAc,MAAM,CAAC,CAAA;AAE3B,MAAA,MAAM,aAAa,KAAA,CAAM,KAAA;AACzB,MAAA,MAAM,YAAA,GAAe,aAAa,mBAAA,CAAoB,MAAA;AAEtD,MAAA,MAAM,aAAA,GAAgB,KAAK,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,KAAS,WAAW,CAAA;AAC5E,MAAA,IAAI,OAAA,GAAU,IAAA;AACd,MAAA,IAAI,aAAA,EAAe,OAAA,IAAW,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACpD,QAAA,OAAA,GAAU,aAAA,CAAc,OAAA,CAAQ,IAAA,CAAK,WAAW,CAAA;AAClD,MAAA;AAEA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,IAAI,eAAe,YAAA,EAAc;AAC/B,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,QAAQ,KAAA,CAAM,YAAA,EAAc,YAAY,CAAA,EAAG,CAAA;AAC9E,QAAA;AAEA,QAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,WAAA,EAAa,IAAA,EAAM,aAAa,CAAA;AACvE,QAAA,YAAA,GAAe,KAAA,CAAM,SAAA;AACvB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,YAAA,GAAe,QAAQ,MAAA,EAAQ;AACjC,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA,EAAG,CAAA;AAChE,IAAA;AAEA,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,KAAA;AACrB,EAAA;EAEQ,iBAAA,GAAoB;AAC1B,IAAA,IAAI,IAAA,CAAK,QAAQ,aAAA,EAAe;AAC9B,MAAA,IAAA,CAAK,QAAQ,aAAA,CAAc,EAAE,GAAG,IAAA,CAAK,OAAO,CAAA;AAC9C,IAAA;AACF,EAAA;AACF,CAAA;AC1KA,IAAIA,aAAAA,GAAeC,kBAAAA;AAAA,EACjB,CAAC;AAAA,IACC,KAAA,GAAQ,EAAA;AAAA,IACR,QAAA;AAAA,IACA,WAAW,EAAC;AAAA,IACZ,aAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KACF,GAAA,KAAQ;AACT,IAAA,MAAM,QAAA,GAAWC,eAAO,IAAI,CAAA;AAC5B,IAAA,MAAM,eAAe,GAAA,IAAO,QAAA;AAC5B,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,gBAAAA,CAAS;AAAA,MAC/C,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,EAAA;AAAA,MACT,MAAA,EAAQ,EAAA;AAAA,MACR,QAAA,EAAU,EAAE,GAAA,EAAK,CAAA,EAAG,MAAM,CAAA;AAAE,KAC7B,CAAA;AACD,IAAA,MAAM,OAAA,GAAUD,eAAO,IAAI,CAAA;AAC3B,IAAAE,kBAAU,MAAM;AACd,MAAA,IAAI,YAAA,CAAa,OAAA,IAAW,CAAC,OAAA,CAAQ,OAAA,EAAS;AAC5C,QAAA,OAAA,CAAQ,OAAA,GAAU,IAAIJ,aAAAA,CAAiB;AAAA,UACrC,QAAA;AAAA,UACA,kBAAA,EAAoB,CAAC,OAAA,EAAS,MAAA,KAAW;AACvC,YAAA,eAAA,CAAgB;AAAA,cACd,MAAA,EAAQ,IAAA;AAAA,cACR,SAAS,OAAA,CAAQ,IAAA;AAAA,cACjB,MAAA;AAAA,cACA,QAAA,EAAU,EAAE,GAAA,EAAK,CAAA,EAAG,MAAM,CAAA;AAAE,aAC7B,CAAA;AAAA,UACH,CAAA;AAAA,UACA,iBAAiB,MAAM;AACrB,YAAA,eAAA,CAAgB,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,OAAM,CAAE,CAAA;AAAA,UACxD,CAAA;AAAA,UACA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,YAAA,QAAA,GAAW,MAAM,OAAO,CAAA;AAAA,UAC1B;AAAA,SACD,CAAA;AAAA,MACH;AAAA,IACF,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AACvB,IAAAI,kBAAU,MAAM;AACd,MAAA,IAAI,aAAa,OAAA,IAAW,YAAA,CAAa,QAAQ,SAAA,KAAc,KAAA,IAAS,QAAQ,OAAA,EAAS;AACvF,QAAA,YAAA,CAAa,QAAQ,SAAA,GAAY,KAAA;AAAA,MACnC;AAAA,IACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,IAAA,uBAAuBtF,gBAAK,KAAA,EAAO,EAAE,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAG,QAAA,EAAU;AAAA,sBAC1ED,cAAAA;AAAA,QACd,KAAA;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,eAAA,EAAiB,IAAA;AAAA,UACjB,8BAAA,EAAgC,IAAA;AAAA,UAChC,SAAA,EAAW,4GAAA;AAAA,UACX,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,YAAA,OAAA,CAAQ,SAAS,WAAA,CAAY,CAAA,CAAE,aAAA,CAAc,WAAA,IAAe,IAAI,CAAC,CAAA;AAAA,UACnE,CAAA;AAAA,UACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,YAAA,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAc,CAAA,CAAE,GAAA,EAAK,CAAC,CAAA;AAAA,UACzC,CAAA;AAAA,UACA,GAAG;AAAA;AACL,OACF;AAAA,MACA,iBAAiB,aAAA,CAAc;AAAA,QAC7B,GAAG,YAAA;AAAA,QACH,KAAA,EAAO,MAAM,eAAA,CAAgB,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM,CAAE;AAAA,OACpE;AAAA,OACA,CAAA;AAAA,EACL;AACF,CAAA;AACAmF,aAAAA,CAAa,WAAA,GAAc,cAAA","file":"index.cjs","sourcesContent":["import React from \"react\";\nexport const FileTree = () => { return <div></div>; };\n","import React from \"react\";\nexport const IconSystem = () => { return <div></div>; };\n","/**\n * @refraction-ui/react\n *\n * Meta package that re-exports all @refraction-ui/react-* component packages.\n * Allows consumers to install everything from a single package:\n *\n * import { Button, Dialog, ThemeProvider } from '@refraction-ui/react'\n *\n * Or install individual packages for smaller bundles:\n *\n * import { Button } from '@refraction-ui/react-button'\n */\n\n// Core / theme\nexport * from '@refraction-ui/react-theme'\n\n// Components (alphabetical)\nexport * from '@refraction-ui/react-accordion'\n// Note: react-ai and react-charts are stubs with no exports yet.\n// They are included as dependencies but skipped here until they have exports.\nexport * from '@refraction-ui/react-animated-text'\nexport * from '@refraction-ui/react-auth'\nexport * from '@refraction-ui/react-badge'\nexport * from '@refraction-ui/react-bottom-nav'\nexport * from '@refraction-ui/react-breadcrumbs'\nexport * from '@refraction-ui/react-button'\nexport * from '@refraction-ui/react-calendar'\nexport * from '@refraction-ui/react-code-editor'\nexport * from '@refraction-ui/react-collapsible'\nexport * from '@refraction-ui/react-command'\nexport * from '@refraction-ui/react-content-protection'\nexport * from '@refraction-ui/react-data-table'\nexport * from '@refraction-ui/react-device-frame'\nexport * from '@refraction-ui/react-dialog'\nexport * from '@refraction-ui/react-dropdown-menu'\nexport * from '@refraction-ui/react-feedback-dialog'\nexport * from '@refraction-ui/react-footer'\nexport * from '@refraction-ui/react-inline-editor'\nexport * from '@refraction-ui/react-input'\nexport * from '@refraction-ui/react-input-group'\nexport * from '@refraction-ui/react-install-prompt'\nexport * from '@refraction-ui/react-markdown-renderer'\nexport * from '@refraction-ui/react-mobile-nav'\nexport * from '@refraction-ui/react-navbar'\nexport * from '@refraction-ui/react-popover'\nexport * from '@refraction-ui/react-search-bar'\nexport * from '@refraction-ui/react-sidebar'\nexport * from '@refraction-ui/react-skeleton'\nexport * from '@refraction-ui/react-tabs'\nexport * from '@refraction-ui/react-textarea'\nexport * from '@refraction-ui/react-toast'\nexport * from '@refraction-ui/react-tooltip'\nexport * from '@refraction-ui/react-video-player'\n\n// --- Packages with conflicting export names ---\n// react-progress-display and react-slide-viewer both export `progressBarVariants`.\n// react-language-selector and react-version-selector both export `optionVariants`.\n// We re-export everything except the conflicts, then provide renamed aliases.\n\n// react-progress-display: has progressBarVariants (keep as-is, re-export everything)\nexport * from '@refraction-ui/react-progress-display'\n\n// react-slide-viewer: conflicts on progressBarVariants\nexport {\n SlideViewer,\n type SlideViewerProps,\n type SlideData,\n type BookmarkType,\n type SlideType,\n type SlideViewerAPI,\n type SlideViewerState,\n slideViewerVariants,\n progressBarVariants as slideViewerProgressBarVariants,\n slideTypeBadgeVariants,\n slideViewerTokens,\n} from '@refraction-ui/react-slide-viewer'\n\n// react-language-selector: has optionVariants (keep as-is, re-export everything)\nexport * from '@refraction-ui/react-language-selector'\n\n// react-version-selector: conflicts on optionVariants\nexport {\n VersionSelector,\n type VersionSelectorProps,\n versionSelectorVariants,\n optionVariants as versionSelectorOptionVariants,\n latestBadgeVariants,\n type VersionOption,\n} from '@refraction-ui/react-version-selector'\n\n// react-resizable-layout\nexport * from '@refraction-ui/react-resizable-layout'\n\n// --- Additional packages (with conflict handling) ---\n\n// react-app-shell: conflicts with react-sidebar on sidebarVariants, sidebarItemVariants\nexport {\n AppShell,\n type AppShellProps,\n appShellVariants,\n appShellContentVariants,\n appShellTokens,\n} from '@refraction-ui/react-app-shell'\n\n// react-avatar: keep as-is (primary source of avatarVariants, AvatarSize)\nexport * from '@refraction-ui/react-avatar'\n\n// react-avatar-group: conflicts with react-avatar on AvatarSize, avatarVariants\n// and react-presence-indicator on PresenceStatus\nexport {\n AvatarGroup,\n type AvatarGroupProps,\n avatarGroupVariants,\n avatarGroupTokens,\n} from '@refraction-ui/react-avatar-group'\n\nexport * from '@refraction-ui/react-card'\nexport * from '@refraction-ui/react-checkbox'\n\n// react-date-picker: conflicts with react-calendar on CalendarDay\nexport {\n DatePicker,\n type DatePickerProps,\n datePickerVariants,\n datePickerTokens,\n} from '@refraction-ui/react-date-picker'\n\nexport * from '@refraction-ui/react-diff-viewer'\nexport * from '@refraction-ui/react-emoji-picker'\nexport * from '@refraction-ui/react-file-upload'\nexport * from '@refraction-ui/react-keyboard-shortcut'\nexport * from '@refraction-ui/react-otp-input'\n\n// react-presence-indicator: conflicts with react-status-indicator on STATUS_COLORS, STATUS_LABELS\nexport {\n PresenceIndicator,\n type PresenceIndicatorProps,\n presenceIndicatorVariants,\n presenceIndicatorTokens,\n STATUS_COLORS as PRESENCE_STATUS_COLORS,\n STATUS_LABELS as PRESENCE_STATUS_LABELS,\n} from '@refraction-ui/react-presence-indicator'\n\nexport * from '@refraction-ui/react-radio'\nexport * from '@refraction-ui/react-reaction-bar'\nexport * from '@refraction-ui/react-rich-editor'\nexport * from '@refraction-ui/react-select'\nexport * from '@refraction-ui/react-status-indicator'\nexport * from '@refraction-ui/react-switch'\nexport * from '@refraction-ui/react-thread-view'\n\nexport * from '@refraction-ui/react-table-of-contents'\nexport * from '@refraction-ui/react-carousel'\nexport * from '@refraction-ui/react-slider'\nexport * from '@refraction-ui/react-pagination'\n\nexport * from '@refraction-ui/react-callout'\nexport * from '@refraction-ui/react-steps'\nexport * from '@refraction-ui/react-file-tree'\nexport * from '@refraction-ui/react-icon-system'\nexport * from '@refraction-ui/react-skip-to-content'\nexport * from '@refraction-ui/react-code-block'\nexport * from '@refraction-ui/react-link-card'\nexport * from '@refraction-ui/react-card-grid'\n\n\nexport * from '@refraction-ui/react-payment'\n\n\n\nexport * from '@refraction-ui/react-command-input'\n","/**\n * Headless theme state machine — pure TypeScript, zero DOM dependencies.\n * Manages light/dark/system mode with system preference tracking.\n */\n\nexport type ThemeMode = 'light' | 'dark' | 'system'\nexport type ResolvedTheme = 'light' | 'dark'\n\nexport interface ThemeState {\n /** User's chosen mode */\n mode: ThemeMode\n /** Resolved theme after system preference detection */\n resolved: ResolvedTheme\n}\n\nexport interface ThemeConfig {\n /** Initial mode. Default: 'system' */\n defaultMode?: ThemeMode\n /** localStorage key. Default: 'rfr-theme' */\n storageKey?: string\n /** HTML attribute to set. Default: 'class' */\n attribute?: 'class' | 'data-theme'\n}\n\nexport interface StorageAdapter {\n get(key: string): string | null\n set(key: string, value: string): void\n}\n\nexport interface MediaQueryAdapter {\n matches(query: string): boolean\n subscribe(query: string, callback: (matches: boolean) => void): () => void\n}\n\nexport interface ThemeAPI {\n /** Get current state */\n getState(): ThemeState\n /** Set mode (light/dark/system) */\n setMode(mode: ThemeMode): void\n /** Subscribe to state changes */\n subscribe(fn: (state: ThemeState) => void): () => void\n /** Clean up subscriptions */\n destroy(): void\n}\n\nfunction resolveTheme(mode: ThemeMode, systemPrefersDark: boolean): ResolvedTheme {\n if (mode === 'system') {\n return systemPrefersDark ? 'dark' : 'light'\n }\n return mode\n}\n\nexport function createTheme(\n config: ThemeConfig = {},\n storage?: StorageAdapter,\n mediaQuery?: MediaQueryAdapter,\n): ThemeAPI {\n const {\n defaultMode = 'system',\n storageKey = 'rfr-theme',\n } = config\n\n const listeners = new Set<(state: ThemeState) => void>()\n let cleanupMediaQuery: (() => void) | null = null\n\n // Read persisted mode or use default\n const persisted = storage?.get(storageKey) as ThemeMode | null\n let mode: ThemeMode = persisted && ['light', 'dark', 'system'].includes(persisted)\n ? persisted\n : defaultMode\n\n // Detect system preference\n let systemPrefersDark = mediaQuery?.matches('(prefers-color-scheme: dark)') ?? false\n\n let state: ThemeState = {\n mode,\n resolved: resolveTheme(mode, systemPrefersDark),\n }\n\n function notify() {\n for (const fn of listeners) {\n fn(state)\n }\n }\n\n function updateState(newMode: ThemeMode) {\n mode = newMode\n state = { mode, resolved: resolveTheme(mode, systemPrefersDark) }\n storage?.set(storageKey, mode)\n notify()\n }\n\n // Listen for system preference changes\n if (mediaQuery) {\n cleanupMediaQuery = mediaQuery.subscribe(\n '(prefers-color-scheme: dark)',\n (matches) => {\n systemPrefersDark = matches\n if (mode === 'system') {\n state = { mode, resolved: resolveTheme(mode, systemPrefersDark) }\n notify()\n }\n },\n )\n }\n\n return {\n getState() {\n return state\n },\n\n setMode(newMode: ThemeMode) {\n if (newMode !== mode) {\n updateState(newMode)\n }\n },\n\n subscribe(fn: (state: ThemeState) => void) {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n },\n\n destroy() {\n listeners.clear()\n cleanupMediaQuery?.()\n },\n }\n}\n","/**\n * Inline script for preventing theme flash on page load.\n * Inject this as a <script> tag in the <head> before any CSS.\n * Works with any framework (React, Angular, Astro, plain HTML).\n */\n\nexport function getThemeScript(\n storageKey = 'rfr-theme',\n attribute: 'class' | 'data-theme' = 'class',\n): string {\n // This string is injected as innerHTML of a <script> tag.\n // It runs before any CSS/JS loads, preventing flash of wrong theme.\n return `(function(){try{var m=localStorage.getItem('${storageKey}');var s=window.matchMedia('(prefers-color-scheme:dark)').matches;var t=m==='dark'||(m!=='light'&&s)?'dark':'light';var d=document.documentElement;${\n attribute === 'class'\n ? \"d.classList.remove('light','dark');d.classList.add(t);\"\n : `d.setAttribute('${attribute}',t);`\n }d.style.colorScheme=t;}catch(e){}})()`\n}\n","/**\n * Browser DOM adapters for the theme machine.\n * These bridge the headless core to browser APIs.\n */\n\nimport type { StorageAdapter, MediaQueryAdapter, ResolvedTheme } from './theme-machine.js'\n\n/** localStorage adapter */\nexport function createLocalStorageAdapter(): StorageAdapter {\n return {\n get(key) {\n try {\n return localStorage.getItem(key)\n } catch {\n return null\n }\n },\n set(key, value) {\n try {\n localStorage.setItem(key, value)\n } catch {\n // localStorage unavailable (SSR, incognito quota exceeded, etc.)\n }\n },\n }\n}\n\n/** matchMedia adapter */\nexport function createMediaQueryAdapter(): MediaQueryAdapter {\n return {\n matches(query) {\n if (typeof window === 'undefined') return false\n return window.matchMedia(query).matches\n },\n subscribe(query, callback) {\n if (typeof window === 'undefined') return () => {}\n const mql = window.matchMedia(query)\n const handler = (e: MediaQueryListEvent) => callback(e.matches)\n mql.addEventListener('change', handler)\n return () => mql.removeEventListener('change', handler)\n },\n }\n}\n\n/** Apply resolved theme to the document */\nexport function applyThemeToDOM(\n resolved: ResolvedTheme,\n attribute: 'class' | 'data-theme' = 'class',\n): void {\n if (typeof document === 'undefined') return\n\n const root = document.documentElement\n if (attribute === 'class') {\n root.classList.remove('light', 'dark')\n root.classList.add(resolved)\n } else {\n root.setAttribute(attribute, resolved)\n }\n root.style.colorScheme = resolved\n}\n","import * as React from 'react'\nimport {\n createTheme,\n createLocalStorageAdapter,\n createMediaQueryAdapter,\n applyThemeToDOM,\n type ThemeMode,\n type ResolvedTheme,\n type ThemeConfig,\n type ThemeAPI,\n} from '@refraction-ui/theme'\n\nexport interface ThemeContextValue {\n mode: ThemeMode\n resolved: ResolvedTheme\n setMode: (mode: ThemeMode) => void\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | null>(null)\n\nexport interface ThemeProviderProps extends ThemeConfig {\n children: React.ReactNode\n}\n\nexport function ThemeProvider({\n children,\n defaultMode = 'system',\n storageKey = 'rfr-theme',\n attribute = 'class',\n}: ThemeProviderProps) {\n const themeRef = React.useRef<ThemeAPI | null>(null)\n\n // Initialize theme machine once (client-side only for adapters)\n if (!themeRef.current) {\n const isBrowser = typeof window !== 'undefined'\n themeRef.current = createTheme(\n { defaultMode, storageKey, attribute },\n isBrowser ? createLocalStorageAdapter() : undefined,\n isBrowser ? createMediaQueryAdapter() : undefined,\n )\n }\n\n const [state, setState] = React.useState(() => themeRef.current!.getState())\n\n React.useEffect(() => {\n const theme = themeRef.current!\n // Apply initial theme to DOM\n applyThemeToDOM(theme.getState().resolved, attribute)\n\n // Subscribe to changes\n const unsub = theme.subscribe((newState) => {\n setState(newState)\n applyThemeToDOM(newState.resolved, attribute)\n })\n\n return () => {\n unsub()\n theme.destroy()\n }\n }, [attribute])\n\n const contextValue = React.useMemo<ThemeContextValue>(\n () => ({\n mode: state.mode,\n resolved: state.resolved,\n setMode: (mode: ThemeMode) => themeRef.current?.setMode(mode),\n }),\n [state.mode, state.resolved],\n )\n\n return React.createElement(ThemeContext.Provider, { value: contextValue }, children)\n}\n\nexport function useTheme(): ThemeContextValue {\n const context = React.useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a <ThemeProvider>')\n }\n return context\n}\n","import * as React from 'react'\nimport { useTheme } from './theme-provider.js'\nimport type { ThemeMode } from '@refraction-ui/theme'\n\nconst modes: { value: ThemeMode; label: string; icon: string }[] = [\n { value: 'light', label: 'Light', icon: 'sun' },\n { value: 'dark', label: 'Dark', icon: 'moon' },\n { value: 'system', label: 'System', icon: 'monitor' },\n]\n\n// Inline SVG icons — no external icon library dependency\nconst icons: Record<string, React.ReactNode> = {\n sun: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('circle', { cx: 12, cy: 12, r: 5 }),\n React.createElement('path', { d: 'M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42' }),\n ),\n moon: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('path', { d: 'M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' }),\n ),\n monitor: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('rect', { x: 2, y: 3, width: 20, height: 14, rx: 2, ry: 2 }),\n React.createElement('line', { x1: 8, y1: 21, x2: 16, y2: 21 }),\n React.createElement('line', { x1: 12, y1: 17, x2: 12, y2: 21 }),\n ),\n}\n\nexport interface ThemeToggleProps {\n className?: string\n /** 'dropdown' shows a menu, 'segmented' shows inline buttons */\n variant?: 'dropdown' | 'segmented'\n}\n\nexport function ThemeToggle({ className, variant = 'segmented' }: ThemeToggleProps) {\n const { mode, setMode } = useTheme()\n\n if (variant === 'segmented') {\n return React.createElement('div', {\n className: `inline-flex items-center gap-1 rounded-lg border p-1 ${className ?? ''}`,\n role: 'radiogroup',\n 'aria-label': 'Theme',\n },\n modes.map(({ value, label, icon }) =>\n React.createElement('button', {\n key: value,\n type: 'button',\n role: 'radio',\n 'aria-checked': mode === value,\n 'aria-label': label,\n className: `inline-flex items-center justify-center rounded-md p-1.5 text-sm transition-colors ${\n mode === value\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:bg-muted'\n }`,\n onClick: () => setMode(value),\n }, icons[icon]),\n ),\n )\n }\n\n // Dropdown variant — simplified, no external dropdown dependency\n const [open, setOpen] = React.useState(false)\n const ref = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (!open) return\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n document.addEventListener('mousedown', handler)\n return () => document.removeEventListener('mousedown', handler)\n }, [open])\n\n const currentIcon = modes.find((m) => m.value === mode)?.icon ?? 'monitor'\n\n return React.createElement('div', { ref, className: `relative ${className ?? ''}` },\n React.createElement('button', {\n type: 'button',\n 'aria-label': 'Toggle theme',\n 'aria-expanded': open,\n className: 'inline-flex items-center justify-center rounded-md p-2 text-sm transition-colors hover:bg-muted',\n onClick: () => setOpen(!open),\n }, icons[currentIcon]),\n open && React.createElement('div', {\n className: 'absolute right-0 top-full mt-1 z-50 min-w-[8rem] rounded-md border bg-popover p-1 shadow-md',\n role: 'menu',\n },\n modes.map(({ value, label, icon }) =>\n React.createElement('button', {\n key: value,\n type: 'button',\n role: 'menuitem',\n className: `flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-accent ${\n mode === value ? 'bg-accent' : ''\n }`,\n onClick: () => { setMode(value); setOpen(false) },\n }, icons[icon], label),\n ),\n ),\n )\n}\n","import * as React from 'react'\nimport { getThemeScript } from '@refraction-ui/theme'\n\nexport interface ThemeScriptProps {\n storageKey?: string\n attribute?: 'class' | 'data-theme'\n}\n\n/**\n * Renders an inline <script> that prevents theme flash on SSR pages.\n * Place this in the <head> of your document (in Next.js layout.tsx, Remix root, etc.)\n */\nexport function ThemeScript({\n storageKey = 'rfr-theme',\n attribute = 'class',\n}: ThemeScriptProps) {\n return React.createElement('script', {\n dangerouslySetInnerHTML: {\n __html: getThemeScript(storageKey, attribute),\n },\n })\n}\n","/** Merge multiple ARIA prop objects, later values override earlier ones */\nexport function mergeAriaProps(\n ...propSets: Array<Record<string, unknown>>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n for (const props of propSets) {\n for (const [key, value] of Object.entries(props)) {\n if (value !== undefined) {\n result[key] = value\n }\n }\n }\n return result\n}\n\nlet idCounter = 0\n\n/**\n * Generate a unique ID, safe for SSR (deterministic within a render pass).\n * In browsers, uses crypto.randomUUID when available.\n */\nexport function generateId(prefix = 'rfr'): string {\n idCounter++\n return `${prefix}-${idCounter}`\n}\n\n/** Reset the ID counter (useful for tests) */\nexport function resetIdCounter(): void {\n idCounter = 0\n}\n","/** Standard keyboard key constants */\nexport const Keys = {\n Enter: 'Enter',\n Space: ' ',\n Escape: 'Escape',\n Tab: 'Tab',\n ArrowUp: 'ArrowUp',\n ArrowDown: 'ArrowDown',\n ArrowLeft: 'ArrowLeft',\n ArrowRight: 'ArrowRight',\n Home: 'Home',\n End: 'End',\n PageUp: 'PageUp',\n PageDown: 'PageDown',\n Backspace: 'Backspace',\n Delete: 'Delete',\n} as const\n\nexport type KeyboardKey = (typeof Keys)[keyof typeof Keys]\n\n/** Map of key → handler function */\nexport type KeyboardHandlerMap = Partial<\n Record<string, (event: KeyboardEvent) => void>\n>\n\n/** Create a keyboard event handler from a handler map */\nexport function createKeyboardHandler(\n handlers: KeyboardHandlerMap,\n): (event: KeyboardEvent) => void {\n return (event: KeyboardEvent) => {\n const handler = handlers[event.key]\n if (handler) {\n handler(event)\n }\n }\n}\n","/**\n * Minimal state machine — zero dependencies, < 1KB.\n * Inspired by XState concepts but dramatically simpler.\n */\n\nexport interface MachineConfig<TState extends string, TEvent extends string> {\n initial: TState\n states: Record<TState, {\n on?: Partial<Record<TEvent, TState>>\n }>\n}\n\nexport interface Machine<TState extends string, TEvent extends string> {\n /** Current state */\n state: TState\n /** Send an event to transition */\n send(event: TEvent): void\n /** Subscribe to state changes. Returns unsubscribe function. */\n subscribe(fn: (state: TState) => void): () => void\n /** Check if machine is in a given state */\n matches(state: TState): boolean\n}\n\nexport function createMachine<TState extends string, TEvent extends string>(\n config: MachineConfig<TState, TEvent>,\n): Machine<TState, TEvent> {\n let current = config.initial\n const listeners = new Set<(state: TState) => void>()\n\n return {\n get state() {\n return current\n },\n\n send(event: TEvent) {\n const stateConfig = config.states[current]\n const next = stateConfig?.on?.[event]\n if (next && next !== current) {\n current = next\n for (const fn of listeners) {\n fn(current)\n }\n }\n },\n\n subscribe(fn: (state: TState) => void) {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n },\n\n matches(state: TState) {\n return current === state\n },\n }\n}\n","/**\n * Lightweight class name utility — our own implementation.\n * Handles conditional classes, arrays, and falsy values.\n * No external dependencies (no clsx, no tailwind-merge).\n *\n * For Tailwind class conflict resolution (e.g., 'p-2 p-4' → 'p-4'),\n * consumers can use @refraction-ui/tailwind-config which provides\n * a tw-merge-aware variant of this function.\n */\n\ntype ClassValue = string | number | boolean | undefined | null | ClassValue[]\ntype ClassRecord = Record<string, boolean | undefined | null>\n\nexport function cn(...inputs: Array<ClassValue | ClassRecord>): string {\n const classes: string[] = []\n\n for (const input of inputs) {\n if (!input) continue\n\n if (typeof input === 'string') {\n classes.push(input)\n } else if (typeof input === 'number') {\n classes.push(String(input))\n } else if (Array.isArray(input)) {\n const nested = cn(...input)\n if (nested) classes.push(nested)\n } else if (typeof input === 'object') {\n for (const [key, value] of Object.entries(input)) {\n if (value) classes.push(key)\n }\n }\n }\n\n return classes.join(' ')\n}\n","/**\n * Lightweight class-variance-authority alternative — zero dependencies.\n * Creates variant-driven class name functions for components.\n */\n\ntype ClassValue = string | undefined | null | false\n\ninterface VariantConfig {\n [variant: string]: Record<string, string>\n}\n\ninterface CVAConfig<V extends VariantConfig> {\n base?: string\n variants?: V\n defaultVariants?: {\n [K in keyof V]?: keyof V[K]\n }\n compoundVariants?: Array<\n {\n [K in keyof V]?: keyof V[K]\n } & { class: string }\n >\n}\n\ntype VariantProps<V extends VariantConfig> = {\n [K in keyof V]?: keyof V[K]\n}\n\nexport function cva<V extends VariantConfig>(config: CVAConfig<V>) {\n return (props?: VariantProps<V> & { className?: string }): string => {\n const classes: string[] = []\n\n if (config.base) {\n classes.push(config.base)\n }\n\n if (config.variants) {\n for (const [variantKey, variantOptions] of Object.entries(config.variants)) {\n const selectedValue =\n (props as Record<string, unknown> | undefined)?.[variantKey] ??\n config.defaultVariants?.[variantKey]\n\n if (selectedValue != null) {\n const variantClass = (variantOptions as Record<string, string>)[\n selectedValue as string\n ]\n if (variantClass) {\n classes.push(variantClass)\n }\n }\n }\n }\n\n if (config.compoundVariants) {\n for (const compound of config.compoundVariants) {\n const { class: compoundClass, ...conditions } = compound\n let matches = true\n\n for (const [key, value] of Object.entries(conditions)) {\n const propValue =\n (props as Record<string, unknown>)?.[key] ??\n config.defaultVariants?.[key]\n if (propValue !== value) {\n matches = false\n break\n }\n }\n\n if (matches) {\n classes.push(compoundClass as string)\n }\n }\n }\n\n if (props?.className) {\n classes.push(props.className)\n }\n\n return classes.filter(Boolean).join(' ')\n }\n}\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nconst AccordionContext = React.createContext<{\n type: 'single' | 'multiple'\n value: string | string[]\n onValueChange: (value: string) => void\n} | null>(null)\n\nexport interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n type?: 'single' | 'multiple'\n collapsible?: boolean\n defaultValue?: string | string[]\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n}\n\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n ({ className, type = 'single', collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | string[]>(\n defaultValue ?? (type === 'multiple' ? [] : '')\n )\n\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (itemValue: string) => {\n if (type === 'single') {\n const newValue = value === itemValue && collapsible ? '' : itemValue\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n } else {\n const arrValue = Array.isArray(value) ? value : []\n const newValue = arrValue.includes(itemValue)\n ? arrValue.filter((v) => v !== itemValue)\n : [...arrValue, itemValue]\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n }\n },\n [type, collapsible, value, onValueChange]\n )\n\n return (\n <AccordionContext.Provider value={{ type, value, onValueChange: handleValueChange }}>\n <div ref={ref} className={cn(\"flex flex-col w-full\", className)} {...props} />\n </AccordionContext.Provider>\n )\n }\n)\nAccordion.displayName = 'Accordion'\n\nconst AccordionItemContext = React.createContext<{ value: string; isOpen: boolean } | null>(null)\n\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(AccordionContext)\n if (!context) throw new Error('AccordionItem must be within Accordion')\n\n const isOpen = context.type === 'single'\n ? context.value === value\n : Array.isArray(context.value) && context.value.includes(value)\n\n return (\n <AccordionItemContext.Provider value={{ value, isOpen }}>\n <div ref={ref} className={cn(\"border-b border-border\", className)} data-state={isOpen ? 'open' : 'closed'} {...props} />\n </AccordionItemContext.Provider>\n )\n }\n)\nAccordionItem.displayName = 'AccordionItem'\n\nexport interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const accordionContext = React.useContext(AccordionContext)\n const itemContext = React.useContext(AccordionItemContext)\n \n if (!accordionContext || !itemContext) throw new Error('AccordionTrigger missing context')\n\n return (\n <h3 className=\"flex m-0 p-0\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={itemContext.isOpen}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n onClick={() => accordionContext.onValueChange(itemContext.value)}\n {...props}\n >\n {children}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n </h3>\n )\n }\n)\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nexport interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n ({ className, children, ...props }, ref) => {\n const itemContext = React.useContext(AccordionItemContext)\n if (!itemContext) throw new Error('AccordionContent missing context')\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n hidden={!itemContext.isOpen}\n {...props}\n >\n <div className=\"pb-4 pt-0 text-muted-foreground leading-relaxed\">{children}</div>\n </div>\n )\n }\n)\nAccordionContent.displayName = 'AccordionContent'\n","export interface AnimatedTextProps {\n words: string[]\n interval?: number\n transitionDuration?: number\n}\n\nexport interface AnimatedTextState {\n currentIndex: number\n}\n\nexport interface AnimatedTextAPI {\n /** Get the current word */\n getCurrentWord: () => string\n /** Get the next index (wraps around) */\n getNextIndex: () => number\n /** Current state */\n state: AnimatedTextState\n}\n\nexport interface TypewriterProps {\n text: string\n speed?: number\n startDelay?: number\n}\n\nexport interface TypewriterState {\n currentIndex: number\n}\n\nexport interface TypewriterAPI {\n /** Get the currently visible portion of text */\n getVisibleText: () => string\n /** Whether the typewriter has finished */\n isComplete: () => boolean\n /** Current state */\n state: TypewriterState\n}\n\nexport function createAnimatedText(props: AnimatedTextProps): AnimatedTextAPI {\n const { words, interval: _interval = 2500, transitionDuration: _transitionDuration = 1000 } = props\n\n const state: AnimatedTextState = {\n currentIndex: 0,\n }\n\n function getCurrentWord(): string {\n if (words.length === 0) return ''\n return words[state.currentIndex]\n }\n\n function getNextIndex(): number {\n if (words.length === 0) return 0\n return (state.currentIndex + 1) % words.length\n }\n\n return {\n getCurrentWord,\n getNextIndex,\n state,\n }\n}\n\nexport function createTypewriter(props: TypewriterProps): TypewriterAPI {\n const { text, speed: _speed = 50, startDelay: _startDelay = 0 } = props\n\n const state: TypewriterState = {\n currentIndex: 0,\n }\n\n function getVisibleText(): string {\n return text.slice(0, state.currentIndex)\n }\n\n function isComplete(): boolean {\n return state.currentIndex >= text.length\n }\n\n return {\n getVisibleText,\n isComplete,\n state,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const animatedTextVariants = cva({\n base: 'inline-block transition-opacity',\n variants: {\n state: {\n entering: 'opacity-100',\n exiting: 'opacity-0',\n idle: 'opacity-100',\n },\n },\n defaultVariants: {\n state: 'idle',\n },\n})\n\nexport const typewriterVariants = cva({\n base: 'inline',\n variants: {\n cursor: {\n blinking: 'after:inline-block after:w-[2px] after:h-[1em] after:bg-current after:ml-[1px] after:animate-blink after:align-text-bottom',\n hidden: '',\n },\n },\n defaultVariants: {\n cursor: 'blinking',\n },\n})\n","import * as React from 'react'\nimport {\n createAnimatedText,\n createTypewriter,\n animatedTextVariants,\n typewriterVariants,\n type AnimatedTextProps as CoreAnimatedTextProps,\n type TypewriterProps as CoreTypewriterProps,\n} from '@refraction-ui/animated-text'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* AnimatedText — word carousel */\n/* ------------------------------------------------------------------ */\n\nexport interface AnimatedTextProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'>,\n CoreAnimatedTextProps {}\n\nexport const AnimatedText = React.forwardRef<HTMLSpanElement, AnimatedTextProps>(\n ({ words, interval = 2500, transitionDuration = 1000, className, ...props }, ref) => {\n const apiRef = React.useRef(\n createAnimatedText({ words, interval, transitionDuration }),\n )\n const api = apiRef.current\n\n const [currentIndex, setCurrentIndex] = React.useState(0)\n const [isExiting, setIsExiting] = React.useState(false)\n\n // Check for reduced motion preference\n const prefersReducedMotion =\n typeof globalThis !== 'undefined' &&\n typeof globalThis.matchMedia === 'function' &&\n globalThis.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n React.useEffect(() => {\n if (words.length <= 1) return\n\n const tick = setInterval(() => {\n if (prefersReducedMotion) {\n // Skip animation, just switch\n api.state.currentIndex = api.getNextIndex()\n setCurrentIndex(api.state.currentIndex)\n } else {\n setIsExiting(true)\n setTimeout(() => {\n api.state.currentIndex = api.getNextIndex()\n setCurrentIndex(api.state.currentIndex)\n setIsExiting(false)\n }, transitionDuration / 2)\n }\n }, interval)\n\n return () => clearInterval(tick)\n }, [words.length, interval, transitionDuration, prefersReducedMotion])\n\n // Keep api in sync\n api.state.currentIndex = currentIndex\n\n const state = isExiting ? 'exiting' : 'entering'\n\n return (\n <span\n ref={ref}\n className={cn(\n animatedTextVariants({ state: prefersReducedMotion ? 'idle' : state }),\n className,\n )}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n {...props}\n >\n {api.getCurrentWord()}\n </span>\n )\n },\n)\n\nAnimatedText.displayName = 'AnimatedText'\n\n/* ------------------------------------------------------------------ */\n/* TypewriterText — char-by-char reveal */\n/* ------------------------------------------------------------------ */\n\nexport interface TypewriterTextProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'>,\n CoreTypewriterProps {}\n\nexport const TypewriterText = React.forwardRef<HTMLSpanElement, TypewriterTextProps>(\n ({ text, speed = 50, startDelay = 0, className, ...props }, ref) => {\n const apiRef = React.useRef(createTypewriter({ text, speed, startDelay }))\n const api = apiRef.current\n\n const [currentIndex, setCurrentIndex] = React.useState(0)\n\n const prefersReducedMotion =\n typeof globalThis !== 'undefined' &&\n typeof globalThis.matchMedia === 'function' &&\n globalThis.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n React.useEffect(() => {\n if (prefersReducedMotion) {\n api.state.currentIndex = text.length\n setCurrentIndex(text.length)\n return\n }\n\n const startTimeout = setTimeout(() => {\n const tick = () => {\n if (api.state.currentIndex < text.length) {\n api.state.currentIndex += 1\n setCurrentIndex(api.state.currentIndex)\n setTimeout(tick, speed)\n }\n }\n tick()\n }, startDelay)\n\n return () => clearTimeout(startTimeout)\n }, [text, speed, startDelay, prefersReducedMotion])\n\n api.state.currentIndex = currentIndex\n\n return (\n <span\n ref={ref}\n className={cn(\n typewriterVariants({ cursor: api.isComplete() ? 'hidden' : 'blinking' }),\n className,\n )}\n aria-label={text}\n {...props}\n >\n {api.getVisibleText()}\n </span>\n )\n },\n)\n\nTypewriterText.displayName = 'TypewriterText'\n","import type { User, AuthState, AuthStatus, AuthConfig, AuthAdapter, OAuthProvider } from './types.js'\n\nexport interface AuthAPI {\n getState(): AuthState\n signIn(email: string, password: string): Promise<User>\n signInWithOAuth(provider: OAuthProvider): Promise<User>\n signUp(email: string, password: string, displayName: string): Promise<User>\n signOut(): Promise<void>\n resetPassword(email: string): Promise<void>\n getToken(): Promise<string | null>\n subscribe(fn: (state: AuthState) => void): () => void\n destroy(): void\n}\n\nexport function createAuth(\n adapter: AuthAdapter,\n config: Omit<AuthConfig, 'adapter'> = {},\n): AuthAPI {\n const listeners = new Set<(state: AuthState) => void>()\n let state: AuthState = { user: null, status: 'loading' }\n let unsubAuth: (() => void) | null = null\n let tokenRefreshTimer: ReturnType<typeof setInterval> | null = null\n\n const { tokenRefreshInterval = 50, testMode = false, testUser } = config\n\n function setState(newState: AuthState) {\n state = newState\n for (const fn of listeners) {\n fn(state)\n }\n }\n\n function setUser(user: User | null) {\n setState({\n user,\n status: user ? 'authenticated' : 'unauthenticated',\n })\n }\n\n // Start token refresh timer\n function startTokenRefresh() {\n if (tokenRefreshTimer) clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = setInterval(\n () => { adapter.getToken().catch(() => {}) },\n tokenRefreshInterval * 60 * 1000,\n )\n }\n\n // Initialize\n if (testMode && testUser) {\n setUser(testUser)\n } else {\n unsubAuth = adapter.onAuthStateChange((user) => {\n setUser(user)\n if (user) {\n startTokenRefresh()\n } else if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = null\n }\n })\n }\n\n return {\n getState() {\n return state\n },\n\n async signIn(email, password) {\n const user = await adapter.signIn(email, password)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signInWithOAuth(provider) {\n const user = await adapter.signInWithOAuth(provider)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signUp(email, password, displayName) {\n const user = await adapter.signUp(email, password, displayName)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signOut() {\n await adapter.signOut()\n if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = null\n }\n setUser(null)\n },\n\n async resetPassword(email) {\n await adapter.resetPassword(email)\n },\n\n async getToken() {\n return adapter.getToken()\n },\n\n subscribe(fn) {\n listeners.add(fn)\n return () => { listeners.delete(fn) }\n },\n\n destroy() {\n listeners.clear()\n unsubAuth?.()\n if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n }\n },\n }\n}\n","import type { User } from './types.js'\n\n/** Check if user has a specific role */\nexport function hasRole(user: User | null, role: string): boolean {\n return user?.roles?.includes(role) ?? false\n}\n\n/** Check if user has any of the specified roles */\nexport function hasAnyRole(user: User | null, roles: string[]): boolean {\n if (!user?.roles) return false\n return roles.some((role) => user.roles.includes(role))\n}\n\n/** Check if user has all of the specified roles */\nexport function hasAllRoles(user: User | null, roles: string[]): boolean {\n if (!user?.roles) return false\n return roles.every((role) => user.roles.includes(role))\n}\n\n/** Convenience role checks */\nexport function canAccessAdmin(user: User | null): boolean {\n return hasRole(user, 'admin')\n}\n\nexport function canAccessReviewer(user: User | null): boolean {\n return hasAnyRole(user, ['admin', 'reviewer'])\n}\n\n/** Get the default portal URL based on highest-privilege role */\nexport function getDefaultPortal(roles: string[]): string {\n if (roles.includes('admin')) return '/admin'\n if (roles.includes('reviewer')) return '/reviewer'\n if (roles.includes('parent')) return '/parent'\n if (roles.includes('student')) return '/student'\n return '/'\n}\n\n/** Get roles that the given user can assign to others */\nexport function getAssignableRoles(user: User | null): string[] {\n if (!user) return []\n if (hasRole(user, 'admin')) return ['admin', 'reviewer', 'parent', 'student']\n if (hasRole(user, 'reviewer')) return ['student']\n return []\n}\n","import * as React from 'react'\nimport {\n createAuth,\n type AuthState,\n type AuthConfig,\n type AuthAPI,\n type User,\n type OAuthProvider,\n} from '@refraction-ui/auth'\n\nexport interface AuthContextValue {\n user: User | null\n isLoading: boolean\n isAuthenticated: boolean\n signIn: (email: string, password: string) => Promise<User>\n signInWithOAuth: (provider: OAuthProvider) => Promise<User>\n signUp: (email: string, password: string, displayName: string) => Promise<User>\n signOut: () => Promise<void>\n resetPassword: (email: string) => Promise<void>\n getToken: () => Promise<string | null>\n}\n\nconst AuthContext = React.createContext<AuthContextValue | null>(null)\n\nexport interface AuthProviderProps extends AuthConfig {\n children: React.ReactNode\n}\n\n/**\n * AuthProvider — wraps your app with auth context.\n * You must provide an AuthAdapter implementation.\n *\n * ```tsx\n * import { AuthProvider } from '@refraction-ui/react-auth'\n * import { myCustomAdapter } from './auth'\n * \n * <AuthProvider adapter={myCustomAdapter}>\n * <App />\n * </AuthProvider>\n * ```\n */\nexport function AuthProvider({ children, ...config }: AuthProviderProps) {\n const authRef = React.useRef<AuthAPI | null>(null)\n\n if (!authRef.current) {\n if (!config.adapter) {\n throw new Error('[refraction-ui/react-auth] You must provide an `adapter` to AuthProvider.')\n }\n authRef.current = createAuth(config.adapter, config)\n }\n\n const [state, setState] = React.useState<AuthState>(() => authRef.current!.getState())\n\n React.useEffect(() => {\n const unsub = authRef.current!.subscribe(setState)\n return () => {\n unsub()\n authRef.current!.destroy()\n }\n }, [])\n\n const value = React.useMemo<AuthContextValue>(\n () => ({\n user: state.user,\n isLoading: state.status === 'loading',\n isAuthenticated: state.status === 'authenticated',\n signIn: (e, p) => authRef.current!.signIn(e, p),\n signInWithOAuth: (p) => authRef.current!.signInWithOAuth(p),\n signUp: (e, p, d) => authRef.current!.signUp(e, p, d),\n signOut: () => authRef.current!.signOut(),\n resetPassword: (e) => authRef.current!.resetPassword(e),\n getToken: () => authRef.current!.getToken(),\n }),\n [state.user, state.status],\n )\n\n return React.createElement(AuthContext.Provider, { value }, children)\n}\n\n/**\n * useAuth — access auth state and methods.\n * Must be used within <AuthProvider>.\n */\nexport function useAuth(): AuthContextValue {\n const ctx = React.useContext(AuthContext)\n if (!ctx) {\n throw new Error('useAuth must be used within an <AuthProvider>')\n }\n return ctx\n}\n","import * as React from 'react'\nimport { useAuth } from './auth-provider.js'\nimport { hasAnyRole } from '@refraction-ui/auth'\n\nexport interface AuthGuardProps {\n children: React.ReactNode\n /** Custom loading UI */\n fallback?: React.ReactNode\n /** URL to redirect to when unauthenticated (if using a router) */\n redirectTo?: string\n /** Roles required (if any) */\n roles?: string[]\n /** UI to show when user lacks required roles */\n unauthorized?: React.ReactNode\n}\n\n/**\n * AuthGuard — wraps content that requires authentication.\n * Shows loading fallback while auth state resolves.\n * Optionally restricts by role.\n */\nexport function AuthGuard({\n children,\n fallback,\n roles,\n unauthorized,\n}: AuthGuardProps) {\n const { isLoading, isAuthenticated, user } = useAuth()\n\n if (isLoading) {\n return React.createElement(React.Fragment, null, fallback ?? null)\n }\n\n if (!isAuthenticated) {\n return React.createElement(React.Fragment, null, fallback ?? null)\n }\n\n if (roles && roles.length > 0 && !hasAnyRole(user, roles)) {\n return React.createElement(React.Fragment, null, unauthorized ?? null)\n }\n\n return React.createElement(React.Fragment, null, children)\n}\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning'\nexport type BadgeSize = 'sm' | 'md'\n\nexport interface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n}\n\nexport interface BadgeAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nconst statusVariants: BadgeVariant[] = ['success', 'warning', 'destructive']\n\n/** Icon name for status badge variants — non-color indicator for colorblind safety */\nconst BADGE_ICONS: Partial<Record<BadgeVariant, string>> = {\n success: 'check',\n warning: 'alert',\n destructive: 'x',\n}\n\n/** Get the icon name for a badge variant (undefined for non-status variants) */\nexport function getBadgeIcon(variant: BadgeVariant): string | undefined {\n return BADGE_ICONS[variant]\n}\n\nexport function createBadge(props: BadgeProps = {}): BadgeAPI {\n const { variant = 'default' } = props\n\n const ariaProps: Partial<AccessibilityProps> = {}\n\n if (statusVariants.includes(variant)) {\n ariaProps.role = 'status'\n }\n\n const dataAttributes: Record<string, string> = {}\n dataAttributes['data-variant'] = variant\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const badgeVariants = cva({\n base: 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n primary: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80 font-semibold',\n outline: 'text-foreground',\n success: 'border-transparent bg-green-500 text-white shadow hover:bg-green-500/80 font-semibold',\n warning: 'border-transparent bg-yellow-500 text-white shadow hover:bg-yellow-500/80 font-semibold',\n },\n size: {\n sm: 'px-2 py-0 text-[10px]',\n md: 'px-2.5 py-0.5 text-xs',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createBadge,\n badgeVariants,\n type BadgeVariant,\n type BadgeSize,\n} from '@refraction-ui/badge'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: BadgeVariant\n size?: BadgeSize\n}\n\n/**\n * Badge component — renders a styled badge with variant and size support.\n *\n * Uses the headless @refraction-ui/badge core for state and ARIA attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ variant, size, className, children, ...props }, ref) => {\n const api = createBadge({ variant, size })\n const classes = cn(badgeVariants({ variant, size }), className)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n","export interface NavTab {\n label: string\n href: string\n icon?: string\n activeIcon?: string\n}\n\nexport interface BottomNavProps {\n tabs?: NavTab[]\n currentPath?: string\n}\n\nexport interface BottomNavAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n tabAriaProps: (href: string) => Record<string, string>\n}\n\nexport function createBottomNav(props: BottomNavProps = {}): BottomNavAPI {\n const { currentPath = '/' } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Main navigation' },\n isActive,\n tabAriaProps: (href: string): Record<string, string> =>\n isActive(href) ? { 'aria-current': 'page' } : {},\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const bottomNavVariants = cva({\n base: 'fixed bottom-0 left-0 right-0 z-40 border-t bg-background md:hidden',\n})\n\nexport const bottomNavTabVariants = cva({\n base: 'flex flex-1 flex-col items-center justify-center gap-1 py-2 text-xs transition-colors',\n variants: {\n active: {\n true: 'text-foreground',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createBottomNav,\n bottomNavVariants,\n bottomNavTabVariants,\n type NavTab,\n} from '@refraction-ui/bottom-nav'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BottomNavProps extends React.HTMLAttributes<HTMLElement> {\n /** Tab items */\n tabs?: NavTab[]\n /** Current pathname for active state */\n currentPath?: string\n}\n\n/**\n * BottomNav component — renders a fixed bottom navigation bar with tab buttons.\n *\n * Uses the headless @refraction-ui/bottom-nav core for state and ARIA attributes.\n * Visible on mobile only (md:hidden via styles).\n */\nexport const BottomNav = React.forwardRef<HTMLElement, BottomNavProps>(\n ({ tabs = [], currentPath, className, ...props }, ref) => {\n const api = createBottomNav({ tabs, currentPath })\n const classes = cn(bottomNavVariants(), className)\n\n return (\n <nav ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"flex\">\n {tabs.map((tab) => {\n const active = api.isActive(tab.href)\n return (\n <a\n key={tab.href}\n href={tab.href}\n className={bottomNavTabVariants({ active: active ? 'true' : 'false' })}\n {...api.tabAriaProps(tab.href)}\n >\n {tab.icon && <span aria-hidden=\"true\">{active && tab.activeIcon ? tab.activeIcon : tab.icon}</span>}\n <span>{tab.label}</span>\n </a>\n )\n })}\n </div>\n </nav>\n )\n },\n)\n\nBottomNav.displayName = 'BottomNav'\n","export interface BreadcrumbItem {\n label: string\n href?: string\n}\n\nexport interface BreadcrumbsProps {\n /** Current pathname to auto-generate from */\n pathname?: string\n /** Manual items (overrides pathname) */\n items?: BreadcrumbItem[]\n /** Custom label map for pathname segments */\n labels?: Record<string, string>\n /** Separator character */\n separator?: string\n /** Max items to show before truncating */\n maxItems?: number\n}\n\nexport interface BreadcrumbsAPI {\n items: BreadcrumbItem[]\n ariaProps: Record<string, string>\n separator: string\n isLast: (index: number) => boolean\n itemAriaProps: (index: number) => Record<string, string>\n}\n\nfunction kebabToTitle(segment: string): string {\n return segment\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n}\n\nfunction pathToItems(\n pathname: string,\n labels: Record<string, string> = {},\n): BreadcrumbItem[] {\n const segments = pathname.split('/').filter(Boolean)\n const items: BreadcrumbItem[] = [{ label: 'Home', href: '/' }]\n\n let currentPath = ''\n for (const segment of segments) {\n currentPath += `/${segment}`\n items.push({\n label: labels[segment] ?? labels[currentPath] ?? kebabToTitle(segment),\n href: currentPath,\n })\n }\n\n return items\n}\n\nexport function createBreadcrumbs(props: BreadcrumbsProps = {}): BreadcrumbsAPI {\n const { pathname, items: manualItems, labels = {}, separator = '/', maxItems } = props\n\n let items = manualItems ?? (pathname ? pathToItems(pathname, labels) : [])\n\n if (maxItems && items.length > maxItems) {\n const first = items[0]\n const last = items.slice(-(maxItems - 1))\n items = [first, { label: '...' }, ...last]\n }\n\n return {\n items,\n ariaProps: { 'aria-label': 'Breadcrumb' },\n separator,\n isLast: (index: number) => index === items.length - 1,\n itemAriaProps: (index: number): Record<string, string> =>\n index === items.length - 1 ? { 'aria-current': 'page' } : {},\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const breadcrumbsVariants = cva({\n base: 'flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground',\n})\n\nexport const breadcrumbItemVariants = cva({\n base: 'transition-colors',\n variants: {\n active: {\n true: 'font-medium text-foreground',\n false: 'hover:text-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n\nexport const breadcrumbSeparatorStyles = 'text-muted-foreground/50 select-none'\n","import * as React from 'react'\nimport {\n createBreadcrumbs,\n breadcrumbsVariants,\n breadcrumbItemVariants,\n breadcrumbSeparatorStyles,\n type BreadcrumbItem,\n} from '@refraction-ui/breadcrumbs'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n /** Current pathname to auto-generate breadcrumbs from */\n pathname?: string\n /** Manual breadcrumb items (overrides pathname) */\n items?: BreadcrumbItem[]\n /** Custom label map for pathname segments */\n labels?: Record<string, string>\n /** Separator character. Default: '/' */\n separator?: string\n /** Max items before truncation */\n maxItems?: number\n}\n\n/**\n * Breadcrumbs component — renders a breadcrumb navigation trail.\n *\n * Uses the headless @refraction-ui/breadcrumbs core for state and ARIA attributes.\n */\nexport const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n pathname,\n items,\n labels,\n separator,\n maxItems,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createBreadcrumbs({ pathname, items, labels, separator, maxItems })\n const classes = cn(breadcrumbsVariants(), className)\n\n return (\n <nav ref={ref} className={classes} {...api.ariaProps} {...props}>\n <ol className=\"flex items-center gap-1.5\">\n {api.items.map((item, index) => {\n const isLast = api.isLast(index)\n return (\n <li key={index} className=\"flex items-center gap-1.5\">\n {index > 0 && (\n <span className={breadcrumbSeparatorStyles} aria-hidden=\"true\">\n {api.separator}\n </span>\n )}\n {item.href && !isLast ? (\n <a\n href={item.href}\n className={breadcrumbItemVariants({ active: 'false' })}\n >\n {item.label}\n </a>\n ) : (\n <span\n className={breadcrumbItemVariants({\n active: isLast ? 'true' : 'false',\n })}\n {...api.itemAriaProps(index)}\n >\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n },\n)\n\nBreadcrumbs.displayName = 'Breadcrumbs'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\nexport type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon'\n\nexport interface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n disabled?: boolean\n loading?: boolean\n asChild?: boolean\n type?: 'button' | 'submit' | 'reset'\n}\n\nexport interface ButtonAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createButton(props: ButtonProps = {}): ButtonAPI {\n const { disabled = false, loading = false, type = 'button' } = props\n const isInteractive = !disabled && !loading\n\n const ariaProps: Partial<AccessibilityProps> = {}\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n if (loading) {\n ariaProps['aria-disabled'] = true\n ariaProps['aria-label'] = ariaProps['aria-label'] ?? undefined\n }\n\n const dataAttributes: Record<string, string> = {}\n if (loading) {\n dataAttributes['data-loading'] = ''\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Enter] = (e) => e.preventDefault()\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n }\n}\n\nexport function getButtonType(props: ButtonProps): string {\n return props.type ?? 'button'\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const buttonTokens: TokenContract = {\n name: 'button',\n tokens: {\n bg: { variable: '--rfr-button-bg', fallback: 'hsl(var(--primary))' },\n fg: { variable: '--rfr-button-fg', fallback: 'hsl(var(--primary-foreground))' },\n border: { variable: '--rfr-button-border', fallback: 'hsl(var(--border))' },\n radius: { variable: '--rfr-button-radius', fallback: 'var(--radius)' },\n ring: { variable: '--rfr-button-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const buttonVariants = cva({\n base: 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n xs: 'h-7 rounded px-2 text-xs',\n sm: 'h-8 rounded-md px-3 text-xs',\n default: 'h-9 px-4 py-2',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createButton,\n buttonVariants,\n getButtonType,\n type ButtonVariant,\n type ButtonSize,\n} from '@refraction-ui/button'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n asChild?: boolean\n}\n\n/**\n * Button component — renders a styled button with variant and size support.\n *\n * Uses the headless @refraction-ui/button core for state, ARIA, and keyboard handling.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant, size, loading, asChild, className, disabled, children, ...props }, ref) => {\n const api = createButton({ variant, size, disabled, loading, asChild, type: props.type })\n const classes = cn(buttonVariants({ variant, size }), className)\n\n // When asChild, render the child element directly with button props merged in.\n // This allows <Button asChild><a href=\"/\">Link</a></Button>\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n ref,\n className: cn(classes, (children.props as Record<string, unknown>).className as string),\n type: getButtonType({ type: props.type }),\n ...api.ariaProps,\n ...api.dataAttributes,\n ...props,\n })\n }\n\n return (\n <button\n ref={ref}\n type={getButtonType({ type: props.type }) as 'button' | 'submit' | 'reset'}\n className={classes}\n disabled={disabled || loading}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )}\n {children}\n </button>\n )\n },\n)\n\nButton.displayName = 'Button'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface CalendarProps {\n /** Selected date (controlled) */\n value?: Date\n /** Default selected date (uncontrolled) */\n defaultValue?: Date\n /** Callback when a date is selected */\n onSelect?: (date: Date) => void\n /** Displayed month (controlled) */\n month?: Date\n /** Callback when the displayed month changes */\n onMonthChange?: (month: Date) => void\n /** Minimum selectable date */\n minDate?: Date\n /** Maximum selectable date */\n maxDate?: Date\n /** Specific dates to disable */\n disabledDates?: Date[]\n}\n\nexport interface CalendarDay {\n /** The date this cell represents */\n date: Date\n /** Whether the date is today */\n isToday: boolean\n /** Whether the date is currently selected */\n isSelected: boolean\n /** Whether the date belongs to the currently displayed month */\n isCurrentMonth: boolean\n /** Whether the date is disabled */\n isDisabled: boolean\n}\n\nexport interface CalendarState {\n /** The currently displayed month */\n currentMonth: Date\n /** The currently selected date, if any */\n selectedDate: Date | undefined\n}\n\nexport interface CalendarAPI {\n /** Current calendar state */\n state: CalendarState\n /** Array of day objects for the current month grid (always 42: 6 weeks x 7 days) */\n days: CalendarDay[]\n /** Navigate to the previous month */\n prevMonth(): void\n /** Navigate to the next month */\n nextMonth(): void\n /** Select a date */\n select(date: Date): void\n /** ARIA attributes for the calendar grid */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA attributes for a specific day cell */\n getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown>\n /** Generated IDs */\n ids: {\n grid: string\n label: string\n }\n}\n\n/** Check if two dates represent the same calendar day */\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\n/** Get the first day of a month */\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/** Get day names */\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nexport function createCalendar(props: CalendarProps = {}): CalendarAPI {\n const {\n value: controlledValue,\n defaultValue,\n onSelect,\n month: controlledMonth,\n onMonthChange,\n minDate,\n maxDate,\n disabledDates = [],\n } = props\n\n const today = new Date()\n\n // Determine selected date\n const selectedDate = controlledValue ?? defaultValue\n\n // Determine current displayed month\n const currentMonth = controlledMonth\n ? startOfMonth(controlledMonth)\n : selectedDate\n ? startOfMonth(selectedDate)\n : startOfMonth(today)\n\n const gridId = generateId('rfr-calendar')\n const labelId = generateId('rfr-calendar-label')\n\n function isDateDisabled(date: Date): boolean {\n if (minDate && date < startOfDay(minDate)) return true\n if (maxDate && date > endOfDay(maxDate)) return true\n return disabledDates.some((d) => isSameDay(d, date))\n }\n\n function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n }\n\n function endOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n }\n\n /** Build the 42-cell grid for the current month view */\n function buildDays(): CalendarDay[] {\n const year = currentMonth.getFullYear()\n const month = currentMonth.getMonth()\n\n // First day of the month\n const first = new Date(year, month, 1)\n // Day of week the month starts on (0 = Sunday)\n const startDow = first.getDay()\n\n // Start from the Sunday before (or on) the first\n const gridStart = new Date(year, month, 1 - startDow)\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + i,\n )\n days.push({\n date,\n isToday: isSameDay(date, today),\n isSelected: selectedDate ? isSameDay(date, selectedDate) : false,\n isCurrentMonth: date.getMonth() === month,\n isDisabled: isDateDisabled(date),\n })\n }\n return days\n }\n\n function prevMonth(): void {\n const prev = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)\n onMonthChange?.(prev)\n }\n\n function nextMonth(): void {\n const next = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)\n onMonthChange?.(next)\n }\n\n function select(date: Date): void {\n if (!isDateDisabled(date)) {\n onSelect?.(date)\n }\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'grid',\n 'aria-labelledby': labelId,\n id: gridId,\n }\n\n function getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'gridcell',\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n 'aria-current': day.isToday ? ('date' as const) : undefined,\n 'aria-label': `${DAY_NAMES[day.date.getDay()]}, ${day.date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}`,\n }\n }\n\n return {\n state: {\n currentMonth,\n selectedDate,\n },\n days: buildDays(),\n prevMonth,\n nextMonth,\n select,\n ariaProps,\n getDayAriaProps,\n ids: {\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const calendarVariants = cva({\n base: 'p-3 rounded-md border bg-background',\n})\n\nexport const dayVariants = cva({\n base: 'inline-flex items-center justify-center rounded-md text-sm h-9 w-9',\n variants: {\n state: {\n default: 'hover:bg-accent hover:text-accent-foreground',\n selected: 'bg-primary text-primary-foreground hover:bg-primary/90',\n today: 'bg-accent text-accent-foreground',\n disabled: 'text-muted-foreground opacity-50 cursor-not-allowed',\n outside: 'text-muted-foreground opacity-50',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCalendar,\n calendarVariants,\n dayVariants,\n type CalendarProps as CoreCalendarProps,\n type CalendarDay,\n} from '@refraction-ui/calendar'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Calendar\n// ---------------------------------------------------------------------------\n\nexport interface CalendarProps extends CoreCalendarProps {\n className?: string\n children?: React.ReactNode\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n]\n\nconst DAY_HEADERS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n\nexport function Calendar({\n className,\n value,\n defaultValue,\n onSelect,\n month,\n onMonthChange,\n minDate,\n maxDate,\n disabledDates,\n}: CalendarProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<Date | undefined>(defaultValue)\n const [uncontrolledMonth, setUncontrolledMonth] = React.useState<Date>(\n () => month ?? value ?? defaultValue ?? new Date(),\n )\n\n const isValueControlled = value !== undefined\n const isMonthControlled = month !== undefined\n\n const selectedValue = isValueControlled ? value : uncontrolledValue\n const displayMonth = isMonthControlled ? month : uncontrolledMonth\n\n const handleSelect = React.useCallback(\n (date: Date) => {\n if (!isValueControlled) {\n setUncontrolledValue(date)\n }\n onSelect?.(date)\n },\n [isValueControlled, onSelect],\n )\n\n const handleMonthChange = React.useCallback(\n (m: Date) => {\n if (!isMonthControlled) {\n setUncontrolledMonth(m)\n }\n onMonthChange?.(m)\n },\n [isMonthControlled, onMonthChange],\n )\n\n const api = createCalendar({\n value: selectedValue,\n month: displayMonth,\n onSelect: handleSelect,\n onMonthChange: handleMonthChange,\n minDate,\n maxDate,\n disabledDates,\n })\n\n function getDayState(day: CalendarDay): 'selected' | 'today' | 'disabled' | 'outside' | 'default' {\n if (day.isDisabled) return 'disabled'\n if (day.isSelected) return 'selected'\n if (!day.isCurrentMonth) return 'outside'\n if (day.isToday) return 'today'\n return 'default'\n }\n\n const monthLabel = `${MONTH_NAMES[api.state.currentMonth.getMonth()]} ${api.state.currentMonth.getFullYear()}`\n\n return React.createElement(\n 'div',\n {\n className: cn(calendarVariants(), className),\n ...api.ariaProps,\n },\n // Header row: prev, month label, next\n React.createElement(CalendarHeader, {\n label: monthLabel,\n labelId: api.ids.label,\n onPrevMonth: api.prevMonth,\n onNextMonth: api.nextMonth,\n }),\n // Day-of-week headers\n React.createElement(\n 'div',\n {\n className: 'grid grid-cols-7 gap-1 mb-1',\n role: 'row',\n },\n DAY_HEADERS.map((d) =>\n React.createElement(\n 'div',\n {\n key: d,\n className: 'text-center text-xs font-medium text-muted-foreground h-9 flex items-center justify-center',\n role: 'columnheader',\n 'aria-label': d,\n },\n d,\n ),\n ),\n ),\n // Day grid\n React.createElement(\n 'div',\n {\n className: 'grid grid-cols-7 gap-1',\n role: 'rowgroup',\n },\n api.days.map((day, i) => {\n const dayAriaProps = api.getDayAriaProps(day)\n const state = getDayState(day)\n return React.createElement(\n 'button',\n {\n key: i,\n type: 'button',\n className: dayVariants({ state }),\n disabled: day.isDisabled,\n onClick: () => api.select(day.date),\n ...dayAriaProps,\n },\n day.date.getDate(),\n )\n }),\n ),\n )\n}\n\nCalendar.displayName = 'Calendar'\n\n// ---------------------------------------------------------------------------\n// CalendarHeader\n// ---------------------------------------------------------------------------\n\nexport interface CalendarHeaderProps {\n label: string\n labelId: string\n onPrevMonth: () => void\n onNextMonth: () => void\n className?: string\n}\n\nexport function CalendarHeader({\n label,\n labelId,\n onPrevMonth,\n onNextMonth,\n className,\n}: CalendarHeaderProps) {\n return React.createElement(\n 'div',\n {\n className: cn('flex items-center justify-between mb-2', className),\n },\n React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Previous month',\n onClick: onPrevMonth,\n className: 'inline-flex items-center justify-center h-7 w-7 rounded-md hover:bg-accent',\n },\n '\\u2039',\n ),\n React.createElement(\n 'div',\n {\n id: labelId,\n className: 'text-sm font-medium',\n 'aria-live': 'polite',\n },\n label,\n ),\n React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Next month',\n onClick: onNextMonth,\n className: 'inline-flex items-center justify-center h-7 w-7 rounded-md hover:bg-accent',\n },\n '\\u203A',\n ),\n )\n}\n\nCalendarHeader.displayName = 'CalendarHeader'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type CodeEditorTheme = 'light' | 'dark'\n\nexport interface CodeEditorProps {\n value?: string\n onChange?: (value: string) => void\n language?: string\n readOnly?: boolean\n theme?: CodeEditorTheme\n}\n\nexport interface CodeEditorState {\n value: string\n language: string\n theme: CodeEditorTheme\n}\n\nexport interface CodeEditorAPI {\n /** Current editor state */\n state: CodeEditorState\n /** ARIA attributes for the editor element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-multiline'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Update the editor value */\n setValue: (value: string) => void\n /** Get a human-readable label for the current language */\n getLanguageLabel: () => string\n}\n\n/** Map of language identifiers to human-readable labels */\nconst languageLabels: Record<string, string> = {\n js: 'JavaScript',\n javascript: 'JavaScript',\n ts: 'TypeScript',\n typescript: 'TypeScript',\n jsx: 'JSX',\n tsx: 'TSX',\n py: 'Python',\n python: 'Python',\n rb: 'Ruby',\n ruby: 'Ruby',\n go: 'Go',\n rust: 'Rust',\n rs: 'Rust',\n java: 'Java',\n cpp: 'C++',\n c: 'C',\n cs: 'C#',\n csharp: 'C#',\n html: 'HTML',\n css: 'CSS',\n json: 'JSON',\n yaml: 'YAML',\n yml: 'YAML',\n md: 'Markdown',\n markdown: 'Markdown',\n sql: 'SQL',\n sh: 'Shell',\n bash: 'Bash',\n zsh: 'Zsh',\n xml: 'XML',\n toml: 'TOML',\n swift: 'Swift',\n kotlin: 'Kotlin',\n dart: 'Dart',\n php: 'PHP',\n lua: 'Lua',\n r: 'R',\n scala: 'Scala',\n}\n\n/**\n * Create a headless code editor API.\n *\n * This provides the headless interface for a code editor — state management,\n * ARIA props, and data attributes. Actual rendering (Monaco, CodeMirror, or\n * a simple textarea) is handled by framework-specific wrappers.\n */\nexport function createCodeEditor(props: CodeEditorProps = {}): CodeEditorAPI {\n const {\n value = '',\n onChange,\n language = 'plaintext',\n readOnly = false,\n theme = 'light',\n } = props\n\n let currentValue = value\n\n const state: CodeEditorState = {\n value: currentValue,\n language,\n theme,\n }\n\n const ariaProps: Partial<AccessibilityProps> & { 'aria-multiline'?: boolean; 'aria-readonly'?: boolean } = {\n role: 'textbox',\n 'aria-multiline': true,\n 'aria-label': `Code editor - ${getLabel(language)}`,\n }\n\n if (readOnly) {\n ariaProps['aria-readonly'] = true\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-language': language,\n 'data-theme': theme,\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n function setValue(newValue: string) {\n currentValue = newValue\n state.value = newValue\n if (onChange) {\n onChange(newValue)\n }\n }\n\n function getLabel(lang: string): string {\n return languageLabels[lang.toLowerCase()] ?? lang.charAt(0).toUpperCase() + lang.slice(1)\n }\n\n function getLanguageLabel(): string {\n return getLabel(language)\n }\n\n return {\n state,\n ariaProps,\n dataAttributes,\n setValue,\n getLanguageLabel,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const codeEditorTokens: TokenContract = {\n name: 'code-editor',\n tokens: {\n bg: { variable: '--rfr-code-editor-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-code-editor-fg', fallback: 'hsl(var(--foreground))' },\n headerBg: { variable: '--rfr-code-editor-header-bg', fallback: 'hsl(var(--muted))' },\n border: { variable: '--rfr-code-editor-border', fallback: 'hsl(var(--border))' },\n lineNumberFg: { variable: '--rfr-code-editor-line-number', fallback: 'hsl(var(--muted-foreground))' },\n },\n}\n\nexport const codeEditorVariants = cva({\n base: 'flex flex-col rounded-lg border overflow-hidden font-mono text-sm',\n variants: {\n theme: {\n light: 'bg-white text-gray-900 border-gray-200',\n dark: 'bg-gray-900 text-gray-100 border-gray-700',\n },\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n theme: 'light',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCodeEditor,\n codeEditorVariants,\n type CodeEditorTheme,\n} from '@refraction-ui/code-editor'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface CodeEditorProps {\n value?: string\n onChange?: (value: string) => void\n language?: string\n readOnly?: boolean\n theme?: CodeEditorTheme\n className?: string\n placeholder?: string\n /** Optional action buttons rendered in the header bar */\n actions?: Array<{ label: string; onClick: () => void }>\n}\n\n/**\n * CodeEditor component — a styled textarea-based code editor.\n *\n * Uses the headless @refraction-ui/code-editor core for state and ARIA.\n * Renders a simple monospace textarea with a header bar showing the language\n * label and optional action buttons. Syntax highlighting is a future enhancement.\n */\nexport const CodeEditor = React.forwardRef<HTMLDivElement, CodeEditorProps>(\n (\n {\n value = '',\n onChange,\n language = 'plaintext',\n readOnly = false,\n theme = 'light',\n className,\n placeholder,\n actions,\n },\n ref,\n ) => {\n const api = createCodeEditor({ value, onChange, language, readOnly, theme })\n const containerClasses = cn(codeEditorVariants({ theme }), className)\n\n function handleChange(e: React.ChangeEvent<HTMLTextAreaElement>) {\n api.setValue(e.target.value)\n }\n\n return (\n <div ref={ref} className={containerClasses} {...api.dataAttributes}>\n <div className=\"flex items-center justify-between px-3 py-2 border-b bg-muted/50 text-xs text-muted-foreground\">\n <span>{api.getLanguageLabel()}</span>\n {actions && actions.length > 0 && (\n <div className=\"flex gap-1\">\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n onClick={action.onClick}\n className=\"px-2 py-1 rounded text-xs hover:bg-muted transition-colors\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n <textarea\n value={value}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n className=\"flex-1 w-full p-4 bg-transparent resize-none outline-none font-mono min-h-[200px]\"\n spellCheck={false}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n {...api.ariaProps}\n />\n </div>\n )\n },\n)\n\nCodeEditor.displayName = 'CodeEditor'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface CollapsibleProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n}\n\nexport interface CollapsibleAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'data-state': 'open' | 'closed'\n 'data-disabled': string | undefined\n }\n /** Props to spread on the content element */\n contentProps: {\n id: string\n role: 'region'\n 'data-state': 'open' | 'closed'\n hidden: boolean\n }\n /** Toggle the open state */\n toggle: () => void\n /** Open the collapsible */\n open: () => void\n /** Close the collapsible */\n close: () => void\n /** Keyboard event handler for Enter/Space toggle */\n keyboardHandler: (event: KeyboardEvent) => void\n}\n\nexport function createCollapsible(props: CollapsibleProps = {}): CollapsibleAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n } = props\n\n const isControlled = controlledOpen !== undefined\n let internalOpen = isControlled ? controlledOpen : defaultOpen\n const contentId = generateId('rfr-collapsible')\n\n const setOpen = (next: boolean) => {\n if (disabled) return\n if (!isControlled) {\n internalOpen = next\n }\n onOpenChange?.(next)\n }\n\n const toggle = () => setOpen(!internalOpen)\n const openFn = () => setOpen(true)\n const closeFn = () => setOpen(false)\n\n const keyboardHandler = createKeyboardHandler({\n [Keys.Enter]: (event: KeyboardEvent) => {\n event.preventDefault()\n toggle()\n },\n [Keys.Space]: (event: KeyboardEvent) => {\n event.preventDefault()\n toggle()\n },\n })\n\n const dataState = internalOpen ? 'open' : 'closed'\n\n return {\n state: { open: internalOpen },\n triggerProps: {\n 'aria-expanded': internalOpen,\n 'aria-controls': contentId,\n 'data-state': dataState,\n 'data-disabled': disabled ? '' : undefined,\n },\n contentProps: {\n id: contentId,\n role: 'region',\n 'data-state': dataState,\n hidden: !internalOpen,\n },\n toggle,\n open: openFn,\n close: closeFn,\n keyboardHandler,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const collapsibleContentVariants = cva({\n base: 'overflow-hidden transition-all',\n variants: {\n state: {\n open: 'animate-accordion-down',\n closed: 'animate-accordion-up',\n },\n },\n defaultVariants: {\n state: 'closed',\n },\n})\n","import * as React from 'react'\nimport {\n createCollapsible,\n collapsibleContentVariants,\n type CollapsibleProps as CoreCollapsibleProps,\n} from '@refraction-ui/collapsible'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface CollapsibleContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n disabled: boolean\n contentId: string\n}\n\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(null)\n\nfunction useCollapsibleContext(): CollapsibleContextValue {\n const ctx = React.useContext(CollapsibleContext)\n if (!ctx) {\n throw new Error(\n 'Collapsible compound components must be used within <Collapsible>',\n )\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n children?: React.ReactNode\n className?: string\n}\n\nexport function Collapsible({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n children,\n className,\n}: CollapsibleProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get a stable content ID\n const apiRef = React.useRef<ReturnType<typeof createCollapsible> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createCollapsible({ open, defaultOpen, disabled })\n }\n const contentId = apiRef.current.contentProps.id\n\n const ctx = React.useMemo<CollapsibleContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n disabled,\n contentId,\n }),\n [open, handleOpenChange, disabled, contentId],\n )\n\n return React.createElement(\n CollapsibleContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n {\n 'data-state': open ? 'open' : 'closed',\n 'data-disabled': disabled ? '' : undefined,\n className,\n },\n children,\n ),\n )\n}\n\nCollapsible.displayName = 'Collapsible'\n\n// ---------------------------------------------------------------------------\n// CollapsibleTrigger\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const CollapsibleTrigger = React.forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(({ onClick, disabled: disabledProp, children, ...props }, ref) => {\n const { open, onOpenChange, disabled: ctxDisabled, contentId } =\n useCollapsibleContext()\n const disabled = disabledProp ?? ctxDisabled\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onOpenChange(!open)\n }\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'data-state': open ? 'open' : 'closed',\n 'data-disabled': disabled ? '' : undefined,\n disabled: disabled || undefined,\n onClick: handleClick,\n ...props,\n },\n children,\n )\n})\n\nCollapsibleTrigger.displayName = 'CollapsibleTrigger'\n\n// ---------------------------------------------------------------------------\n// CollapsibleContent\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleContentProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CollapsibleContent = React.forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(({ className, children, ...props }, ref) => {\n const { open, contentId } = useCollapsibleContext()\n const dataState = open ? 'open' : 'closed'\n\n if (!open) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n id: contentId,\n role: 'region',\n 'data-state': dataState,\n className: cn(\n collapsibleContentVariants({ state: open ? 'open' : 'closed' }),\n className,\n ),\n ...props,\n },\n children,\n )\n})\n\nCollapsibleContent.displayName = 'CollapsibleContent'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface CommandProps {\n /** Whether the command palette is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Custom filter function — receives item value and search query, returns true to include */\n filter?: (value: string, search: string) => boolean\n}\n\nexport interface CommandItemData {\n /** Unique identifier for the item */\n id: string\n /** Display label */\n label: string\n /** Searchable value */\n value: string\n /** Whether the item is disabled */\n disabled?: boolean\n /** Optional group the item belongs to */\n group?: string\n}\n\nexport interface CommandState {\n /** Current search query */\n search: string\n /** Items after filtering */\n filteredItems: CommandItemData[]\n /** Index of the currently highlighted item in filteredItems */\n selectedIndex: number\n /** Whether the palette is open */\n open: boolean\n}\n\nexport interface CommandAPI {\n /** Current command state */\n state: CommandState\n /** Update the search query and re-filter items */\n search(query: string): void\n /** Select the item at the given index (or the currently highlighted item) */\n select(index?: number): CommandItemData | undefined\n /** Keyboard handlers for the command palette */\n keyboardHandlers: KeyboardHandlerMap\n /** ARIA attributes for the command root */\n ariaProps: Record<string, unknown>\n /** ARIA attributes for the input */\n inputAriaProps: Record<string, unknown>\n /** ARIA attributes for the list */\n listAriaProps: Record<string, unknown>\n /** Get ARIA attributes for a specific item */\n getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown>\n /** Generated IDs */\n ids: {\n root: string\n input: string\n list: string\n }\n}\n\n/** Default filter: case-insensitive includes */\nfunction defaultFilter(value: string, search: string): boolean {\n return value.toLowerCase().includes(search.toLowerCase())\n}\n\nexport function createCommand(\n props: CommandProps = {},\n items: CommandItemData[] = [],\n): CommandAPI {\n const {\n open: controlledOpen,\n onOpenChange,\n filter = defaultFilter,\n } = props\n\n const rootId = generateId('rfr-cmd')\n const inputId = generateId('rfr-cmd-input')\n const listId = generateId('rfr-cmd-list')\n\n let searchQuery = ''\n let selectedIndex = 0\n let filteredItems = [...items]\n const isOpen = controlledOpen ?? true\n\n function applyFilter(query: string): CommandItemData[] {\n if (!query) return [...items]\n return items.filter((item) => filter(item.value, query))\n }\n\n function doSearch(query: string): void {\n searchQuery = query\n filteredItems = applyFilter(query)\n selectedIndex = 0\n }\n\n function doSelect(index?: number): CommandItemData | undefined {\n const idx = index ?? selectedIndex\n const item = filteredItems[idx]\n if (!item || item.disabled) return undefined\n return item\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n if (filteredItems.length > 0) {\n selectedIndex = (selectedIndex + 1) % filteredItems.length\n }\n },\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n if (filteredItems.length > 0) {\n selectedIndex = (selectedIndex - 1 + filteredItems.length) % filteredItems.length\n }\n },\n [Keys.Enter]: (e) => {\n e.preventDefault()\n doSelect()\n },\n [Keys.Escape]: (e) => {\n e.preventDefault()\n onOpenChange?.(false)\n },\n }\n\n const ariaProps: Record<string, unknown> = {\n role: 'combobox',\n 'aria-expanded': isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': listId,\n id: rootId,\n }\n\n const inputAriaProps: Record<string, unknown> = {\n role: 'searchbox',\n 'aria-autocomplete': 'list',\n 'aria-controls': listId,\n id: inputId,\n }\n\n const listAriaProps: Record<string, unknown> = {\n role: 'listbox',\n id: listId,\n 'aria-label': 'Command suggestions',\n }\n\n function getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown> {\n return {\n role: 'option',\n 'aria-selected': index === selectedIndex,\n 'aria-disabled': item.disabled ?? false,\n id: `${listId}-item-${item.id}`,\n }\n }\n\n return {\n get state(): CommandState {\n return {\n search: searchQuery,\n filteredItems,\n selectedIndex,\n open: isOpen,\n }\n },\n search: doSearch,\n select: doSelect,\n keyboardHandlers,\n ariaProps,\n inputAriaProps,\n listAriaProps,\n getItemAriaProps,\n ids: {\n root: rootId,\n input: inputId,\n list: listId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const commandVariants = cva({\n base: 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n})\n\nexport const commandInputVariants = cva({\n base: 'flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n})\n\nexport const commandItemVariants = cva({\n base: 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n variants: {\n state: {\n default: '',\n selected: 'bg-accent text-accent-foreground',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n\nexport const commandGroupVariants = cva({\n base: 'overflow-hidden p-1 text-foreground',\n})\n","import * as React from 'react'\nimport {\n createCommand,\n commandVariants,\n commandInputVariants,\n commandItemVariants,\n commandGroupVariants,\n type CommandProps as CoreCommandProps,\n type CommandItemData,\n} from '@refraction-ui/command'\nimport { cn, createKeyboardHandler, Keys } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface CommandContextValue {\n search: string\n onSearch: (query: string) => void\n selectedIndex: number\n onSelect: (index: number) => void\n items: CommandItemData[]\n filteredItems: CommandItemData[]\n registerItem: (item: CommandItemData) => void\n unregisterItem: (id: string) => void\n listId: string\n inputId: string\n}\n\nconst CommandContext = React.createContext<CommandContextValue | null>(null)\n\nfunction useCommandContext(): CommandContextValue {\n const ctx = React.useContext(CommandContext)\n if (!ctx) {\n throw new Error('Command compound components must be used within <Command>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Command (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface CommandProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n filter?: (value: string, search: string) => boolean\n className?: string\n children?: React.ReactNode\n}\n\nexport function Command({\n open,\n onOpenChange,\n filter,\n className,\n children,\n}: CommandProps) {\n const [items, setItems] = React.useState<CommandItemData[]>([])\n const [search, setSearch] = React.useState('')\n const [selectedIndex, setSelectedIndex] = React.useState(0)\n\n const apiRef = React.useRef<ReturnType<typeof createCommand> | null>(null)\n\n // Recompute the API when items or search change\n const api = React.useMemo(() => {\n const instance = createCommand({ open, onOpenChange, filter }, items)\n if (search) {\n instance.search(search)\n }\n apiRef.current = instance\n return instance\n }, [open, onOpenChange, filter, items, search])\n\n const filteredItems = api.state.filteredItems\n\n const handleSearch = React.useCallback((query: string) => {\n setSearch(query)\n setSelectedIndex(0)\n }, [])\n\n const handleSelect = React.useCallback((index: number) => {\n setSelectedIndex(index)\n }, [])\n\n const registerItem = React.useCallback((item: CommandItemData) => {\n setItems((prev) => {\n if (prev.some((i) => i.id === item.id)) return prev\n return [...prev, item]\n })\n }, [])\n\n const unregisterItem = React.useCallback((id: string) => {\n setItems((prev) => prev.filter((i) => i.id !== id))\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n const handler = createKeyboardHandler({\n [Keys.ArrowDown]: (ev) => {\n ev.preventDefault()\n if (filteredItems.length > 0) {\n setSelectedIndex((prev) => (prev + 1) % filteredItems.length)\n }\n },\n [Keys.ArrowUp]: (ev) => {\n ev.preventDefault()\n if (filteredItems.length > 0) {\n setSelectedIndex((prev) => (prev - 1 + filteredItems.length) % filteredItems.length)\n }\n },\n [Keys.Enter]: (ev) => {\n ev.preventDefault()\n },\n [Keys.Escape]: (ev) => {\n ev.preventDefault()\n onOpenChange?.(false)\n },\n })\n handler(e.nativeEvent)\n },\n [filteredItems.length, onOpenChange],\n )\n\n const ctx = React.useMemo<CommandContextValue>(\n () => ({\n search,\n onSearch: handleSearch,\n selectedIndex,\n onSelect: handleSelect,\n items,\n filteredItems,\n registerItem,\n unregisterItem,\n listId: api.ids.list,\n inputId: api.ids.input,\n }),\n [search, handleSearch, selectedIndex, handleSelect, items, filteredItems, registerItem, unregisterItem, api.ids.list, api.ids.input],\n )\n\n return React.createElement(\n CommandContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n {\n className: cn(commandVariants(), className),\n ...api.ariaProps,\n onKeyDown: handleKeyDown,\n },\n children,\n ),\n )\n}\n\nCommand.displayName = 'Command'\n\n// ---------------------------------------------------------------------------\n// CommandInput\n// ---------------------------------------------------------------------------\n\nexport interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const CommandInput = React.forwardRef<HTMLInputElement, CommandInputProps>(\n ({ className, onChange, ...props }, ref) => {\n const { search, onSearch, inputId, listId } = useCommandContext()\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onSearch(e.target.value)\n onChange?.(e)\n }\n\n return React.createElement('input', {\n ref,\n id: inputId,\n type: 'text',\n role: 'searchbox',\n 'aria-autocomplete': 'list',\n 'aria-controls': listId,\n value: search,\n onChange: handleChange,\n className: cn(commandInputVariants(), className),\n ...props,\n })\n },\n)\n\nCommandInput.displayName = 'CommandInput'\n\n// ---------------------------------------------------------------------------\n// CommandList\n// ---------------------------------------------------------------------------\n\nexport interface CommandListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandList = React.forwardRef<HTMLDivElement, CommandListProps>(\n ({ className, children, ...props }, ref) => {\n const { listId } = useCommandContext()\n\n return React.createElement(\n 'div',\n {\n ref,\n id: listId,\n role: 'listbox',\n 'aria-label': 'Command suggestions',\n className: cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className),\n ...props,\n },\n children,\n )\n },\n)\n\nCommandList.displayName = 'CommandList'\n\n// ---------------------------------------------------------------------------\n// CommandEmpty\n// ---------------------------------------------------------------------------\n\nexport interface CommandEmptyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandEmpty = React.forwardRef<HTMLDivElement, CommandEmptyProps>(\n ({ className, children, ...props }, ref) => {\n const { filteredItems } = useCommandContext()\n\n if (filteredItems.length > 0) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn('py-6 text-center text-sm', className),\n role: 'presentation',\n ...props,\n },\n children,\n )\n },\n)\n\nCommandEmpty.displayName = 'CommandEmpty'\n\n// ---------------------------------------------------------------------------\n// CommandGroup\n// ---------------------------------------------------------------------------\n\nexport interface CommandGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n heading?: string\n}\n\nexport const CommandGroup = React.forwardRef<HTMLDivElement, CommandGroupProps>(\n ({ className, heading, children, ...props }, ref) => {\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(commandGroupVariants(), className),\n role: 'group',\n 'aria-label': heading,\n ...props,\n },\n heading\n ? React.createElement(\n 'div',\n { className: 'px-2 py-1.5 text-xs font-medium text-muted-foreground' },\n heading,\n )\n : null,\n children,\n )\n },\n)\n\nCommandGroup.displayName = 'CommandGroup'\n\n// ---------------------------------------------------------------------------\n// CommandItem\n// ---------------------------------------------------------------------------\n\nexport interface CommandItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n disabled?: boolean\n onSelect?: () => void\n}\n\nexport const CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(\n ({ className, value, disabled, onSelect: onItemSelect, children, ...props }, ref) => {\n const state = disabled ? 'disabled' : 'default'\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'option',\n 'aria-selected': false,\n 'aria-disabled': disabled ?? false,\n 'data-value': value,\n className: cn(commandItemVariants({ state }), className),\n onClick: () => {\n if (!disabled) {\n onItemSelect?.()\n }\n },\n ...props,\n },\n children,\n )\n },\n)\n\nCommandItem.displayName = 'CommandItem'\n\n// ---------------------------------------------------------------------------\n// CommandSeparator\n// ---------------------------------------------------------------------------\n\nexport interface CommandSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandSeparator = React.forwardRef<HTMLDivElement, CommandSeparatorProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n role: 'separator',\n className: cn('-mx-1 h-px bg-border', className),\n ...props,\n })\n },\n)\n\nCommandSeparator.displayName = 'CommandSeparator'\n","export interface ContentProtectionProps {\n /** Enable content protection. Default: true */\n enabled?: boolean\n /** Disable copy/cut. Default: true */\n disableCopy?: boolean\n /** Disable right-click context menu. Default: true */\n disableContextMenu?: boolean\n /** Watermark text overlay */\n watermarkText?: string\n}\n\nexport interface WatermarkConfig {\n text: string\n opacity: number\n angle: number\n}\n\nexport interface ContentProtectionAPI {\n eventHandlers: {\n onCopy?: (e: { preventDefault(): void }) => void\n onCut?: (e: { preventDefault(): void }) => void\n onContextMenu?: (e: { preventDefault(): void }) => void\n onSelectStart?: (e: { preventDefault(): void }) => void\n }\n watermarkConfig: WatermarkConfig | null\n dataAttributes: Record<string, string>\n}\n\nexport function createContentProtection(\n props: ContentProtectionProps = {},\n): ContentProtectionAPI {\n const {\n enabled = true,\n disableCopy = true,\n disableContextMenu = true,\n watermarkText,\n } = props\n\n const eventHandlers: ContentProtectionAPI['eventHandlers'] = {}\n\n if (enabled) {\n if (disableCopy) {\n const prevent = (e: { preventDefault(): void }) => e.preventDefault()\n eventHandlers.onCopy = prevent\n eventHandlers.onCut = prevent\n eventHandlers.onSelectStart = prevent\n }\n if (disableContextMenu) {\n eventHandlers.onContextMenu = (e: { preventDefault(): void }) =>\n e.preventDefault()\n }\n }\n\n const watermarkConfig: WatermarkConfig | null = watermarkText\n ? { text: watermarkText, opacity: 0.08, angle: -45 }\n : null\n\n const dataAttributes: Record<string, string> = {}\n if (enabled) {\n dataAttributes['data-protected'] = 'true'\n }\n\n return {\n eventHandlers,\n watermarkConfig,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const contentProtectionVariants = cva({\n base: 'relative select-none',\n})\n\nexport const watermarkVariants = cva({\n base: 'pointer-events-none absolute inset-0 z-50 overflow-hidden',\n})\n","import * as React from 'react'\nimport {\n createContentProtection,\n contentProtectionVariants,\n watermarkVariants,\n type ContentProtectionProps as CoreContentProtectionProps,\n} from '@refraction-ui/content-protection'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ContentProtectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Enable content protection. Default: true */\n enabled?: boolean\n /** Disable copy/cut. Default: true */\n disableCopy?: boolean\n /** Disable right-click context menu. Default: true */\n disableContextMenu?: boolean\n /** Watermark text overlay */\n watermarkText?: string\n}\n\n/**\n * ContentProtection component — wraps children to block copy/context menu\n * and optionally renders a watermark overlay.\n *\n * Uses the headless @refraction-ui/content-protection core for event handlers.\n */\nexport const ContentProtection = React.forwardRef<HTMLDivElement, ContentProtectionProps>(\n (\n {\n enabled,\n disableCopy,\n disableContextMenu,\n watermarkText,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const api = createContentProtection({\n enabled,\n disableCopy,\n disableContextMenu,\n watermarkText,\n })\n\n const classes = cn(contentProtectionVariants(), className)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.dataAttributes}\n onCopy={api.eventHandlers.onCopy as React.ClipboardEventHandler}\n onCut={api.eventHandlers.onCut as React.ClipboardEventHandler}\n onContextMenu={api.eventHandlers.onContextMenu as React.MouseEventHandler}\n onSelect={api.eventHandlers.onSelectStart as React.ReactEventHandler}\n {...props}\n >\n {children}\n {api.watermarkConfig && (\n <div\n className={watermarkVariants()}\n aria-hidden=\"true\"\n style={{\n opacity: api.watermarkConfig.opacity,\n transform: `rotate(${api.watermarkConfig.angle}deg)`,\n backgroundImage: `repeating-linear-gradient(\n ${api.watermarkConfig.angle}deg,\n transparent,\n transparent 80px,\n currentColor 80px,\n currentColor 80px\n )`,\n }}\n >\n <svg width=\"100%\" height=\"100%\">\n <defs>\n <pattern\n id=\"rfr-watermark\"\n x=\"0\"\n y=\"0\"\n width=\"200\"\n height=\"200\"\n patternUnits=\"userSpaceOnUse\"\n patternTransform={`rotate(${api.watermarkConfig.angle})`}\n >\n <text\n x=\"0\"\n y=\"100\"\n fill=\"currentColor\"\n fontSize=\"16\"\n fontFamily=\"sans-serif\"\n >\n {api.watermarkConfig.text}\n </text>\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#rfr-watermark)\" />\n </svg>\n </div>\n )}\n </div>\n )\n },\n)\n\nContentProtection.displayName = 'ContentProtection'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ColumnDef<T = Record<string, unknown>> {\n /** Unique column identifier */\n id: string\n /** Column header text */\n header: string\n /** Accessor function to get cell value from row */\n accessor: (row: T) => unknown\n /** Whether this column is sortable */\n sortable?: boolean\n /** Whether this column is filterable */\n filterable?: boolean\n}\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface DataTableProps<T = Record<string, unknown>> {\n /** Column definitions */\n columns: ColumnDef<T>[]\n /** Data rows */\n data: T[]\n /** Current sort column */\n sortBy?: string\n /** Current sort direction */\n sortDir?: SortDirection\n /** Callback when sort changes */\n onSort?: (columnId: string, direction: SortDirection) => void\n /** Active filters: columnId -> filter value */\n filters?: Record<string, string>\n}\n\nexport interface DataTableState<T = Record<string, unknown>> {\n sortedData: T[]\n sortBy: string | null\n sortDir: SortDirection\n filters: Record<string, string>\n}\n\nexport interface DataTableAPI<T = Record<string, unknown>> {\n /** Current table state */\n state: DataTableState<T>\n /** Toggle sort for a column */\n sort(columnId: string): void\n /** Set a filter value for a column */\n setFilter(columnId: string, value: string): void\n /** Get ARIA and role props for a header cell */\n getHeaderProps(col: ColumnDef<T>): Partial<AccessibilityProps> & Record<string, unknown>\n /** Get props for a data cell */\n getCellProps(col: ColumnDef<T>, row: T): Record<string, unknown>\n /** Get props for a data row */\n getRowProps(row: T, index: number): Record<string, unknown>\n}\n\nexport function createDataTable<T = Record<string, unknown>>(\n props: DataTableProps<T>,\n): DataTableAPI<T> {\n const {\n columns,\n data,\n sortBy: initialSortBy,\n sortDir: initialSortDir = 'asc',\n onSort,\n filters: initialFilters,\n } = props\n\n let sortBy: string | null = initialSortBy ?? null\n let sortDir: SortDirection = initialSortDir\n let filters: Record<string, string> = { ...(initialFilters ?? {}) }\n\n function getFilteredData(): T[] {\n let result = [...data]\n\n for (const [columnId, filterValue] of Object.entries(filters)) {\n if (!filterValue) continue\n const col = columns.find((c) => c.id === columnId)\n if (!col) continue\n const lowerFilter = filterValue.toLowerCase()\n result = result.filter((row) => {\n const cellValue = col.accessor(row)\n return String(cellValue ?? '').toLowerCase().includes(lowerFilter)\n })\n }\n\n return result\n }\n\n function getSortedData(): T[] {\n const filtered = getFilteredData()\n\n if (!sortBy) return filtered\n\n const col = columns.find((c) => c.id === sortBy)\n if (!col) return filtered\n\n return [...filtered].sort((a, b) => {\n const aVal = col.accessor(a)\n const bVal = col.accessor(b)\n const aStr = String(aVal ?? '')\n const bStr = String(bVal ?? '')\n\n const cmp = aStr.localeCompare(bStr, undefined, { numeric: true })\n return sortDir === 'asc' ? cmp : -cmp\n })\n }\n\n function sort(columnId: string): void {\n const col = columns.find((c) => c.id === columnId)\n if (!col?.sortable) return\n\n if (sortBy === columnId) {\n sortDir = sortDir === 'asc' ? 'desc' : 'asc'\n } else {\n sortBy = columnId\n sortDir = 'asc'\n }\n\n onSort?.(sortBy, sortDir)\n }\n\n function setFilter(columnId: string, value: string): void {\n filters = { ...filters, [columnId]: value }\n }\n\n function getHeaderProps(\n col: ColumnDef<T>,\n ): Partial<AccessibilityProps> & Record<string, unknown> {\n const props: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'columnheader',\n }\n\n if (col.sortable) {\n if (sortBy === col.id) {\n props['aria-sort'] = sortDir === 'asc' ? 'ascending' : 'descending'\n } else {\n props['aria-sort'] = 'none'\n }\n }\n\n return props\n }\n\n function getCellProps(\n col: ColumnDef<T>,\n _row: T,\n ): Record<string, unknown> {\n return {\n role: 'cell',\n 'data-column': col.id,\n }\n }\n\n function getRowProps(_row: T, index: number): Record<string, unknown> {\n return {\n role: 'row',\n 'data-row-index': index,\n }\n }\n\n return {\n get state(): DataTableState<T> {\n return {\n get sortedData() {\n return getSortedData()\n },\n get sortBy() {\n return sortBy\n },\n get sortDir() {\n return sortDir\n },\n get filters() {\n return { ...filters }\n },\n }\n },\n sort,\n setFilter,\n getHeaderProps,\n getCellProps,\n getRowProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tableVariants = cva({\n base: 'w-full caption-bottom text-sm border-collapse',\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const headerVariants = cva({\n base: 'h-10 px-2 text-left align-middle font-medium text-muted-foreground border-b',\n variants: {\n sortable: {\n true: 'cursor-pointer select-none hover:text-foreground',\n false: '',\n },\n },\n defaultVariants: {\n sortable: 'false',\n },\n})\n\nexport const cellVariants = cva({\n base: 'p-2 align-middle border-b',\n variants: {\n size: {\n sm: 'p-1',\n md: 'p-2',\n lg: 'p-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const rowVariants = cva({\n base: 'border-b transition-colors hover:bg-muted/50',\n variants: {\n selected: {\n true: 'bg-muted',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createDataTable,\n tableVariants,\n headerVariants,\n cellVariants,\n rowVariants,\n type ColumnDef,\n type SortDirection,\n type DataTableProps as CoreProps,\n} from '@refraction-ui/data-table'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\nexport interface DataTableProps<T = Record<string, unknown>> {\n columns: ColumnDef<T>[]\n data: T[]\n sortBy?: string\n sortDir?: SortDirection\n onSort?: (columnId: string, direction: SortDirection) => void\n filters?: Record<string, string>\n className?: string\n emptyMessage?: string\n}\n\nexport function DataTable<T = Record<string, unknown>>({\n columns,\n data,\n sortBy: controlledSortBy,\n sortDir: controlledSortDir = 'asc',\n onSort,\n filters: controlledFilters,\n className,\n emptyMessage = 'No data available',\n}: DataTableProps<T>) {\n const [sortBy, setSortBy] = React.useState<string | null>(controlledSortBy ?? null)\n const [sortDir, setSortDir] = React.useState<SortDirection>(controlledSortDir)\n const [filters, setFilters] = React.useState<Record<string, string>>(controlledFilters ?? {})\n\n const api = React.useMemo(\n () =>\n createDataTable<T>({\n columns,\n data,\n sortBy: sortBy ?? undefined,\n sortDir,\n onSort,\n filters,\n }),\n [columns, data, sortBy, sortDir, onSort, filters],\n )\n\n const handleSort = React.useCallback(\n (columnId: string) => {\n const col = columns.find((c) => c.id === columnId)\n if (!col?.sortable) return\n\n let newDir: SortDirection = 'asc'\n if (sortBy === columnId) {\n newDir = sortDir === 'asc' ? 'desc' : 'asc'\n }\n\n setSortBy(columnId)\n setSortDir(newDir)\n onSort?.(columnId, newDir)\n },\n [columns, sortBy, sortDir, onSort],\n )\n\n const handleFilter = React.useCallback(\n (columnId: string, value: string) => {\n setFilters((prev) => ({ ...prev, [columnId]: value }))\n },\n [],\n )\n\n const sortedData = api.state.sortedData\n const hasFilterable = columns.some((c) => c.filterable)\n\n return React.createElement(\n 'div',\n { className: 'relative w-full overflow-auto' },\n React.createElement(\n 'table',\n {\n className: cn(tableVariants(), className),\n role: 'table',\n },\n // thead\n React.createElement(\n 'thead',\n null,\n // Header row\n React.createElement(\n 'tr',\n { role: 'row' },\n ...columns.map((col) => {\n const headerProps = api.getHeaderProps(col)\n return React.createElement(\n 'th',\n {\n key: col.id,\n ...headerProps,\n className: headerVariants({ sortable: col.sortable ? 'true' : 'false' }),\n onClick: col.sortable ? () => handleSort(col.id) : undefined,\n },\n col.header,\n col.sortable && sortBy === col.id\n ? React.createElement('span', { 'aria-hidden': true }, sortDir === 'asc' ? ' \\u2191' : ' \\u2193')\n : null,\n )\n }),\n ),\n // Filter row\n hasFilterable\n ? React.createElement(\n 'tr',\n { role: 'row', 'data-filter-row': 'true' },\n ...columns.map((col) =>\n React.createElement(\n 'th',\n { key: `filter-${col.id}` },\n col.filterable\n ? React.createElement('input', {\n type: 'text',\n 'aria-label': `Filter ${col.header}`,\n value: filters[col.id] ?? '',\n onChange: (e: React.ChangeEvent<HTMLInputElement>) =>\n handleFilter(col.id, e.target.value),\n placeholder: `Filter...`,\n })\n : null,\n ),\n ),\n )\n : null,\n ),\n // tbody\n React.createElement(\n 'tbody',\n null,\n sortedData.length === 0\n ? React.createElement(\n 'tr',\n { role: 'row' },\n React.createElement(\n 'td',\n {\n colSpan: columns.length,\n className: 'text-center p-4 text-muted-foreground',\n role: 'cell',\n },\n emptyMessage,\n ),\n )\n : sortedData.map((row, rowIndex) =>\n React.createElement(\n 'tr',\n {\n key: rowIndex,\n ...api.getRowProps(row, rowIndex),\n className: rowVariants(),\n },\n ...columns.map((col) =>\n React.createElement(\n 'td',\n {\n key: col.id,\n ...api.getCellProps(col, row),\n className: cellVariants(),\n },\n String(col.accessor(row) ?? ''),\n ),\n ),\n ),\n ),\n ),\n )\n )\n}\n\nDataTable.displayName = 'DataTable'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type DeviceType = 'iphone' | 'ipad' | 'android-phone' | 'android-tablet'\nexport type DeviceOrientation = 'portrait' | 'landscape'\n\nexport interface DeviceFrameProps {\n /** The type of device to display */\n device: DeviceType\n /** The orientation of the device */\n orientation?: DeviceOrientation\n}\n\nexport interface DeviceDimensions {\n /** Width in pixels */\n width: number\n /** Height in pixels */\n height: number\n /** Border radius in pixels */\n radius: number\n /** Whether the device has a notch */\n notch: boolean\n /** Whether the device has a home indicator bar */\n homeIndicator: boolean\n}\n\nexport interface DeviceFrameAPI {\n /** Computed dimensions for the device */\n dimensions: DeviceDimensions\n /** ARIA attributes for the device frame */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Data attributes for styling hooks */\n dataAttributes: Record<string, string>\n}\n\ninterface DeviceSpec {\n width: number\n height: number\n radius: number\n notch: boolean\n homeIndicator: boolean\n}\n\nconst DEVICE_SPECS: Record<DeviceType, DeviceSpec> = {\n iphone: {\n width: 375,\n height: 812,\n radius: 44,\n notch: true,\n homeIndicator: true,\n },\n ipad: {\n width: 810,\n height: 1080,\n radius: 18,\n notch: false,\n homeIndicator: true,\n },\n 'android-phone': {\n width: 360,\n height: 800,\n radius: 24,\n notch: false,\n homeIndicator: false,\n },\n 'android-tablet': {\n width: 800,\n height: 1280,\n radius: 16,\n notch: false,\n homeIndicator: false,\n },\n}\n\nconst DEVICE_LABELS: Record<DeviceType, string> = {\n iphone: 'iPhone',\n ipad: 'iPad',\n 'android-phone': 'Android Phone',\n 'android-tablet': 'Android Tablet',\n}\n\nexport function createDeviceFrame(props: DeviceFrameProps): DeviceFrameAPI {\n const { device, orientation = 'portrait' } = props\n const spec = DEVICE_SPECS[device]\n\n const isLandscape = orientation === 'landscape'\n\n const dimensions: DeviceDimensions = {\n width: isLandscape ? spec.height : spec.width,\n height: isLandscape ? spec.width : spec.height,\n radius: spec.radius,\n notch: spec.notch,\n homeIndicator: spec.homeIndicator,\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'img',\n 'aria-label': `${DEVICE_LABELS[device]} device frame in ${orientation} orientation`,\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-device': device,\n 'data-orientation': orientation,\n ...(spec.notch ? { 'data-notch': 'true' } : {}),\n ...(spec.homeIndicator ? { 'data-home-indicator': 'true' } : {}),\n }\n\n return {\n dimensions,\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const deviceFrameVariants = cva({\n base: 'relative overflow-hidden bg-black border-4 border-gray-800 shadow-xl',\n variants: {\n device: {\n iphone: 'rounded-[44px] border-[6px]',\n ipad: 'rounded-[18px] border-[6px]',\n 'android-phone': 'rounded-[24px] border-4',\n 'android-tablet': 'rounded-[16px] border-4',\n },\n orientation: {\n portrait: '',\n landscape: '',\n },\n },\n defaultVariants: {\n device: 'iphone',\n orientation: 'portrait',\n },\n})\n","import * as React from 'react'\nimport {\n createDeviceFrame,\n deviceFrameVariants,\n type DeviceFrameProps as CoreDeviceFrameProps,\n type DeviceType,\n type DeviceOrientation,\n} from '@refraction-ui/device-frame'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// DeviceFrame\n// ---------------------------------------------------------------------------\n\nexport interface DeviceFrameProps {\n device: DeviceType\n orientation?: DeviceOrientation\n className?: string\n children?: React.ReactNode\n}\n\nexport function DeviceFrame({\n device,\n orientation = 'portrait',\n className,\n children,\n}: DeviceFrameProps) {\n const api = createDeviceFrame({ device, orientation })\n\n return React.createElement(\n 'div',\n {\n className: cn(deviceFrameVariants({ device, orientation }), className),\n style: {\n width: `${api.dimensions.width}px`,\n height: `${api.dimensions.height}px`,\n },\n ...api.ariaProps,\n ...api.dataAttributes,\n },\n // Notch decoration\n api.dimensions.notch\n ? React.createElement('div', {\n className: 'absolute top-0 left-1/2 -translate-x-1/2 w-[40%] h-[30px] bg-black rounded-b-2xl z-10',\n 'aria-hidden': 'true',\n 'data-part': 'notch',\n })\n : null,\n // Screen area\n React.createElement(\n 'div',\n {\n className: 'relative w-full h-full overflow-hidden bg-white',\n 'data-part': 'screen',\n },\n children,\n ),\n // Home indicator decoration\n api.dimensions.homeIndicator\n ? React.createElement('div', {\n className: 'absolute bottom-2 left-1/2 -translate-x-1/2 w-[35%] h-[5px] bg-gray-300 rounded-full z-10',\n 'aria-hidden': 'true',\n 'data-part': 'home-indicator',\n })\n : null,\n )\n}\n\nDeviceFrame.displayName = 'DeviceFrame'\n","import type { AccessibilityProps, KeyboardHandlerMap, FocusTrapConfig } from '@refraction-ui/shared'\nimport { createMachine, Keys, generateId, FOCUSABLE_SELECTOR } from '@refraction-ui/shared'\n\nexport interface DialogProps {\n /** Whether the dialog is open (controlled) */\n open?: boolean\n /** Whether the dialog starts open (uncontrolled) */\n defaultOpen?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether the dialog is modal (default: true) */\n modal?: boolean\n}\n\nexport interface DialogState {\n open: boolean\n}\n\nexport interface DialogAPI {\n /** Current dialog state */\n state: DialogState\n /** ARIA attributes for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the dialog content */\n contentProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Data attributes for the overlay */\n overlayProps: Record<string, string>\n /** Open the dialog */\n open(): void\n /** Close the dialog */\n close(): void\n /** Toggle the dialog */\n toggle(): void\n /** Keyboard handlers (Escape to close) */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs for aria linking */\n ids: {\n content: string\n title: string\n description: string\n }\n /**\n * Focus trap configuration for framework wrappers.\n * Pass this to createFocusTrap() with a container element.\n */\n focusTrapConfig: Omit<FocusTrapConfig, 'container'>\n}\n\nexport function createDialog(props: DialogProps = {}): DialogAPI {\n const { open: controlledOpen, defaultOpen = false, onOpenChange, modal = true } = props\n\n const machine = createMachine<'open' | 'closed', 'OPEN' | 'CLOSE'>({\n initial: controlledOpen ?? defaultOpen ? 'open' : 'closed',\n states: {\n closed: { on: { OPEN: 'open' } },\n open: { on: { CLOSE: 'closed' } },\n },\n })\n\n const contentId = generateId('rfr-dialog')\n const titleId = generateId('rfr-dialog-title')\n const descriptionId = generateId('rfr-dialog-desc')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return machine.matches('open')\n }\n\n function openDialog(): void {\n machine.send('OPEN')\n onOpenChange?.(true)\n }\n\n function closeDialog(): void {\n machine.send('CLOSE')\n onOpenChange?.(false)\n }\n\n function toggleDialog(): void {\n if (isOpen()) {\n closeDialog()\n } else {\n openDialog()\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closeDialog()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog',\n }\n\n const contentProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': modal,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n id: contentId,\n }\n\n const overlayProps: Record<string, string> = {\n 'data-state': isOpen() ? 'open' : 'closed',\n }\n\n const focusTrapConfig: Omit<FocusTrapConfig, 'container'> = {\n onEscape: closeDialog,\n returnFocusOnDeactivate: true,\n }\n\n return {\n state: { open: isOpen() },\n triggerProps,\n contentProps,\n overlayProps,\n open: openDialog,\n close: closeDialog,\n toggle: toggleDialog,\n keyboardHandlers,\n ids: {\n content: contentId,\n title: titleId,\n description: descriptionId,\n },\n focusTrapConfig,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const overlayStyles =\n 'fixed inset-0 z-50 bg-black/80'\n\nexport const dialogContentVariants = cva({\n base: 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg',\n})\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport {\n createDialog,\n overlayStyles,\n dialogContentVariants,\n type DialogProps as CoreDialogProps,\n} from '@refraction-ui/dialog'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface DialogContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n modal: boolean\n contentId: string\n titleId: string\n descriptionId: string\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null)\n\nfunction useDialogContext(): DialogContextValue {\n const ctx = React.useContext(DialogContext)\n if (!ctx) {\n throw new Error('Dialog compound components must be used within <Dialog>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Dialog (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface DialogProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children?: React.ReactNode\n}\n\nexport function Dialog({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n children,\n}: DialogProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createDialog> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createDialog({ open, modal })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<DialogContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n modal,\n contentId: api.ids.content,\n titleId: api.ids.title,\n descriptionId: api.ids.description,\n }),\n [open, handleOpenChange, modal, api.ids.content, api.ids.title, api.ids.description],\n )\n\n return React.createElement(DialogContext.Provider, { value: ctx }, children)\n}\n\nDialog.displayName = 'Dialog'\n\n// ---------------------------------------------------------------------------\n// DialogTrigger\n// ---------------------------------------------------------------------------\n\nexport interface DialogTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n}\n\nexport const DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDialogContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(!open)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDialogTrigger.displayName = 'DialogTrigger'\n\n// ---------------------------------------------------------------------------\n// DialogOverlay\n// ---------------------------------------------------------------------------\n\nexport interface DialogOverlayProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(\n ({ className, onClick, ...props }, ref) => {\n const { open, onOpenChange } = useDialogContext()\n\n if (!open) return null\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // Only close if clicking the overlay itself, not children\n if (e.target === e.currentTarget) {\n onOpenChange(false)\n }\n onClick?.(e)\n }\n\n return React.createElement('div', {\n ref,\n className: cn(overlayStyles, className),\n 'data-state': open ? 'open' : 'closed',\n onClick: handleClick,\n ...props,\n })\n },\n)\n\nDialogOverlay.displayName = 'DialogOverlay'\n\n// ---------------------------------------------------------------------------\n// DialogContent\n// ---------------------------------------------------------------------------\n\nexport interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, onKeyDown, ...props }, ref) => {\n const { open, onOpenChange, modal, contentId, titleId, descriptionId } =\n useDialogContext()\n\n const api = React.useMemo(\n () => createDialog({ open, modal }),\n [open, modal],\n )\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const handler = createKeyboardHandler({\n Escape: (ev) => {\n ev.preventDefault()\n onOpenChange(false)\n },\n })\n handler(e.nativeEvent)\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = React.createElement(\n 'div',\n {\n ref,\n role: 'dialog',\n 'aria-modal': modal,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n id: contentId,\n className: cn(dialogContentVariants(), className),\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n ...props,\n },\n children,\n )\n\n // Render via portal if document is available (client-side)\n if (typeof document !== 'undefined') {\n return ReactDOM.createPortal(content, document.body)\n }\n\n // SSR fallback: render inline\n return content\n },\n)\n\nDialogContent.displayName = 'DialogContent'\n\n// ---------------------------------------------------------------------------\n// DialogHeader\n// ---------------------------------------------------------------------------\n\nexport interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn('flex flex-col space-y-1.5 text-center sm:text-left', className),\n ...props,\n })\n },\n)\n\nDialogHeader.displayName = 'DialogHeader'\n\n// ---------------------------------------------------------------------------\n// DialogFooter\n// ---------------------------------------------------------------------------\n\nexport interface DialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className,\n ),\n ...props,\n })\n },\n)\n\nDialogFooter.displayName = 'DialogFooter'\n\n// ---------------------------------------------------------------------------\n// DialogTitle\n// ---------------------------------------------------------------------------\n\nexport interface DialogTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(\n ({ className, ...props }, ref) => {\n const { titleId } = useDialogContext()\n\n return React.createElement('h2', {\n ref,\n id: titleId,\n className: cn('text-lg font-semibold leading-none tracking-tight', className),\n ...props,\n })\n },\n)\n\nDialogTitle.displayName = 'DialogTitle'\n\n// ---------------------------------------------------------------------------\n// DialogDescription\n// ---------------------------------------------------------------------------\n\nexport interface DialogDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(({ className, ...props }, ref) => {\n const { descriptionId } = useDialogContext()\n\n return React.createElement('p', {\n ref,\n id: descriptionId,\n className: cn('text-sm text-muted-foreground', className),\n ...props,\n })\n})\n\nDialogDescription.displayName = 'DialogDescription'\n\n// ---------------------------------------------------------------------------\n// DialogClose\n// ---------------------------------------------------------------------------\n\nexport interface DialogCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(\n ({ onClick, children, ...props }, ref) => {\n const { onOpenChange } = useDialogContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(false)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDialogClose.displayName = 'DialogClose'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { createMachine, Keys, generateId } from '@refraction-ui/shared'\n\nexport interface DropdownMenuProps {\n /** Whether the menu is open (controlled) */\n open?: boolean\n /** Whether the menu starts open (uncontrolled) */\n defaultOpen?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface MenuItemProps {\n /** Whether the item is disabled */\n disabled?: boolean\n /** Callback when the item is selected */\n onSelect?: () => void\n}\n\nexport interface DropdownMenuState {\n open: boolean\n}\n\nexport interface DropdownMenuAPI {\n /** Current menu state */\n state: DropdownMenuState\n /** ARIA attributes for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the menu content */\n contentProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for menu item props */\n getItemProps(item: MenuItemProps): Partial<AccessibilityProps> & Record<string, unknown>\n /** Open the menu */\n open(): void\n /** Close the menu */\n close(): void\n /** Toggle the menu */\n toggle(): void\n /** Keyboard handlers for the menu */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs for aria linking */\n ids: {\n content: string\n }\n}\n\nexport function createDropdownMenu(props: DropdownMenuProps = {}): DropdownMenuAPI {\n const { open: controlledOpen, defaultOpen = false, onOpenChange } = props\n\n const machine = createMachine<'open' | 'closed', 'OPEN' | 'CLOSE'>({\n initial: controlledOpen ?? defaultOpen ? 'open' : 'closed',\n states: {\n closed: { on: { OPEN: 'open' } },\n open: { on: { CLOSE: 'closed' } },\n },\n })\n\n const contentId = generateId('rfr-dropdown-menu')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return machine.matches('open')\n }\n\n function openMenu(): void {\n machine.send('OPEN')\n onOpenChange?.(true)\n }\n\n function closeMenu(): void {\n machine.send('CLOSE')\n onOpenChange?.(false)\n }\n\n function toggleMenu(): void {\n if (isOpen()) {\n closeMenu()\n } else {\n openMenu()\n }\n }\n\n function getItemProps(item: MenuItemProps): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'menuitem',\n tabIndex: item.disabled ? -1 : 0,\n 'data-disabled': item.disabled ? '' : undefined,\n 'aria-disabled': item.disabled || undefined,\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closeMenu()\n },\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n },\n [Keys.Enter]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': contentId,\n 'aria-haspopup': 'menu',\n }\n\n const contentProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'menu',\n id: contentId,\n 'data-state': isOpen() ? 'open' : 'closed',\n }\n\n return {\n state: { open: isOpen() },\n triggerProps,\n contentProps,\n getItemProps,\n open: openMenu,\n close: closeMenu,\n toggle: toggleMenu,\n keyboardHandlers,\n ids: {\n content: contentId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const menuContentVariants = cva({\n base: 'z-50 rounded-md border bg-popover shadow-md',\n})\n\nexport const menuItemVariants = cva({\n base: 'relative flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n})\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport {\n createDropdownMenu,\n menuContentVariants,\n menuItemVariants,\n type DropdownMenuProps as CoreDropdownMenuProps,\n type MenuItemProps as CoreMenuItemProps,\n} from '@refraction-ui/dropdown-menu'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface DropdownMenuContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n contentId: string\n}\n\nconst DropdownMenuContext = React.createContext<DropdownMenuContextValue | null>(null)\n\nfunction useDropdownMenuContext(): DropdownMenuContextValue {\n const ctx = React.useContext(DropdownMenuContext)\n if (!ctx) {\n throw new Error('DropdownMenu compound components must be used within <DropdownMenu>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DropdownMenu (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nexport function DropdownMenu({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}: DropdownMenuProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createDropdownMenu> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createDropdownMenu({ open })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<DropdownMenuContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n contentId: api.ids.content,\n }),\n [open, handleOpenChange, api.ids.content],\n )\n\n return React.createElement(DropdownMenuContext.Provider, { value: ctx }, children)\n}\n\nDropdownMenu.displayName = 'DropdownMenu'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuTrigger\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const DropdownMenuTrigger = React.forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDropdownMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(!open)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-haspopup': 'menu',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuContent\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuContent = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n ({ className, children, onKeyDown, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDropdownMenuContext()\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const handler = createKeyboardHandler({\n Escape: (ev) => {\n ev.preventDefault()\n onOpenChange(false)\n },\n })\n handler(e.nativeEvent)\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = React.createElement(\n 'div',\n {\n ref,\n role: 'menu',\n id: contentId,\n 'data-state': open ? 'open' : 'closed',\n className: cn(menuContentVariants(), className),\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n ...props,\n },\n children,\n )\n\n // Render via portal if document is available (client-side)\n if (typeof document !== 'undefined') {\n return ReactDOM.createPortal(content, document.body)\n }\n\n // SSR fallback: render inline\n return content\n },\n)\n\nDropdownMenuContent.displayName = 'DropdownMenuContent'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuItem\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuItemProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean\n onSelect?: () => void\n}\n\nexport const DropdownMenuItem = React.forwardRef<HTMLDivElement, DropdownMenuItemProps>(\n ({ className, disabled, onSelect, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useDropdownMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n onSelect?.()\n onOpenChange(false)\n onClick?.(e)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onSelect?.()\n onOpenChange(false)\n }\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n 'data-disabled': disabled ? '' : undefined,\n 'aria-disabled': disabled || undefined,\n className: cn(menuItemVariants(), className),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n },\n children,\n )\n },\n)\n\nDropdownMenuItem.displayName = 'DropdownMenuItem'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuSeparator\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuSeparator = React.forwardRef<HTMLDivElement, DropdownMenuSeparatorProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n role: 'separator',\n className: cn('-mx-1 my-1 h-px bg-muted', className),\n ...props,\n })\n },\n)\n\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuLabel\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuLabel = React.forwardRef<HTMLDivElement, DropdownMenuLabelProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn('px-2 py-1.5 text-sm font-semibold', className),\n ...props,\n })\n },\n)\n\nDropdownMenuLabel.displayName = 'DropdownMenuLabel'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { createDialog, type DialogAPI } from '@refraction-ui/dialog'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type FeedbackType = 'text' | 'video' | 'general'\n\nexport interface FeedbackDialogProps {\n /** Whether the dialog is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Callback when feedback is submitted */\n onSubmit?: (data: FeedbackData) => void | Promise<void>\n /** Feedback type */\n type?: FeedbackType\n}\n\nexport interface FeedbackData {\n comment: string\n email?: string\n type: FeedbackType\n selectedText?: string\n}\n\nexport interface FeedbackFormState {\n comment: string\n email: string\n honeypot: string\n}\n\nexport interface FeedbackDialogState {\n open: boolean\n isSubmitting: boolean\n isSubmitted: boolean\n}\n\nexport interface FeedbackDialogAPI {\n /** Current state */\n state: FeedbackDialogState\n /** Dialog props from the underlying createDialog */\n dialogProps: DialogAPI\n /** Form field values */\n formState: FeedbackFormState\n /** Set a form field value */\n setField(field: keyof FeedbackFormState, value: string): void\n /** Submit the feedback form */\n submit(): Promise<void>\n /** Reset form to initial state */\n reset(): void\n /** ARIA props for the feedback dialog */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n}\n\nexport function createFeedbackDialog(props: FeedbackDialogProps = {}): FeedbackDialogAPI {\n const {\n open: controlledOpen,\n onOpenChange,\n onSubmit,\n type = 'general',\n } = props\n\n const dialog = createDialog({\n open: controlledOpen,\n onOpenChange,\n modal: true,\n })\n\n let isSubmitting = false\n let isSubmitted = false\n\n const formState: FeedbackFormState = {\n comment: '',\n email: '',\n honeypot: '',\n }\n\n const feedbackId = generateId('rfr-feedback')\n\n function setField(field: keyof FeedbackFormState, value: string): void {\n formState[field] = value\n }\n\n async function submit(): Promise<void> {\n // Honeypot check — bots fill this hidden field\n if (formState.honeypot) {\n return\n }\n\n if (!formState.comment.trim()) {\n return\n }\n\n isSubmitting = true\n\n const data: FeedbackData = {\n comment: formState.comment,\n type,\n ...(formState.email ? { email: formState.email } : {}),\n }\n\n try {\n await onSubmit?.(data)\n isSubmitting = false\n isSubmitted = true\n } catch {\n isSubmitting = false\n }\n }\n\n function reset(): void {\n formState.comment = ''\n formState.email = ''\n formState.honeypot = ''\n isSubmitting = false\n isSubmitted = false\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': true,\n 'aria-labelledby': `${feedbackId}-title`,\n 'aria-describedby': `${feedbackId}-desc`,\n id: feedbackId,\n }\n\n return {\n get state() {\n return {\n get open() {\n return dialog.state.open\n },\n get isSubmitting() {\n return isSubmitting\n },\n get isSubmitted() {\n return isSubmitted\n },\n }\n },\n dialogProps: dialog,\n formState,\n setField,\n submit,\n reset,\n ariaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const feedbackDialogVariants = cva({\n base: 'fixed left-1/2 top-1/2 z-50 w-full max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-6 shadow-lg',\n variants: {\n type: {\n text: 'max-w-md',\n video: 'max-w-lg',\n general: 'max-w-md',\n },\n },\n defaultVariants: {\n type: 'general',\n },\n})\n","import * as React from 'react'\nimport {\n createFeedbackDialog,\n feedbackDialogVariants,\n type FeedbackDialogProps as CoreProps,\n type FeedbackData,\n type FeedbackType,\n} from '@refraction-ui/feedback-dialog'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// FeedbackDialog\n// ---------------------------------------------------------------------------\n\nexport interface FeedbackDialogProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n onSubmit?: (data: FeedbackData) => void | Promise<void>\n type?: FeedbackType\n className?: string\n children?: React.ReactNode\n}\n\nexport function FeedbackDialog({\n open: controlledOpen,\n onOpenChange,\n onSubmit,\n type = 'general',\n className,\n}: FeedbackDialogProps) {\n const [open, setOpen] = React.useState(controlledOpen ?? false)\n const [comment, setComment] = React.useState('')\n const [email, setEmail] = React.useState('')\n const [honeypot, setHoneypot] = React.useState('')\n const [isSubmitting, setIsSubmitting] = React.useState(false)\n const [isSubmitted, setIsSubmitted] = React.useState(false)\n\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : open\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n const apiRef = React.useRef<ReturnType<typeof createFeedbackDialog> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createFeedbackDialog({ open: isOpen, onOpenChange: handleOpenChange, onSubmit, type })\n }\n\n const handleSubmit = React.useCallback(async () => {\n if (honeypot) return\n if (!comment.trim()) return\n\n setIsSubmitting(true)\n const data: FeedbackData = {\n comment,\n type,\n ...(email ? { email } : {}),\n }\n\n try {\n await onSubmit?.(data)\n setIsSubmitting(false)\n setIsSubmitted(true)\n } catch {\n setIsSubmitting(false)\n }\n }, [comment, email, honeypot, type, onSubmit])\n\n const handleReset = React.useCallback(() => {\n setComment('')\n setEmail('')\n setHoneypot('')\n setIsSubmitting(false)\n setIsSubmitted(false)\n }, [])\n\n if (!isOpen) return null\n\n const api = apiRef.current\n\n if (isSubmitted) {\n return React.createElement(\n 'div',\n {\n className: cn(feedbackDialogVariants({ type }), className),\n ...api.ariaProps,\n 'data-state': 'submitted',\n },\n React.createElement('p', { 'data-testid': 'success-message' }, 'Thank you for your feedback!'),\n React.createElement(\n 'button',\n {\n type: 'button',\n onClick: () => {\n handleReset()\n handleOpenChange(false)\n },\n },\n 'Close',\n ),\n )\n }\n\n return React.createElement(\n 'div',\n {\n className: cn(feedbackDialogVariants({ type }), className),\n ...api.ariaProps,\n 'data-state': 'open',\n },\n React.createElement('h2', { id: `${api.ariaProps.id}-title` }, 'Send Feedback'),\n React.createElement('textarea', {\n 'aria-label': 'Feedback comment',\n value: comment,\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => setComment(e.target.value),\n placeholder: 'Your feedback...',\n disabled: isSubmitting,\n }),\n React.createElement('input', {\n type: 'email',\n 'aria-label': 'Email',\n value: email,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setEmail(e.target.value),\n placeholder: 'Email (optional)',\n disabled: isSubmitting,\n }),\n // Honeypot field — hidden from real users\n React.createElement('input', {\n type: 'text',\n 'aria-hidden': true,\n tabIndex: -1,\n style: { position: 'absolute', left: '-9999px' },\n value: honeypot,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setHoneypot(e.target.value),\n autoComplete: 'off',\n name: 'website',\n }),\n React.createElement(\n 'button',\n {\n type: 'button',\n onClick: handleSubmit,\n disabled: isSubmitting || !comment.trim(),\n },\n isSubmitting ? 'Submitting...' : 'Submit',\n ),\n )\n}\n\nFeedbackDialog.displayName = 'FeedbackDialog'\n\n// ---------------------------------------------------------------------------\n// FeedbackButton\n// ---------------------------------------------------------------------------\n\nexport interface FeedbackButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode\n}\n\nexport const FeedbackButton = React.forwardRef<HTMLButtonElement, FeedbackButtonProps>(\n ({ children, ...props }, ref) => {\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-label': 'Send feedback',\n ...props,\n },\n children ?? 'Feedback',\n )\n },\n)\n\nFeedbackButton.displayName = 'FeedbackButton'\n","export interface SocialLink {\n label: string\n href: string\n icon?: string\n}\n\nexport interface FooterColumn {\n title: string\n links: { label: string; href: string }[]\n}\n\nexport interface FooterProps {\n copyright?: string\n socialLinks?: SocialLink[]\n columns?: FooterColumn[]\n}\n\nexport interface FooterAPI {\n ariaProps: Record<string, string>\n copyrightText: string\n}\n\nexport function createFooter(props: FooterProps = {}): FooterAPI {\n const { copyright } = props\n const year = new Date().getFullYear()\n const copyrightText = copyright ?? `© ${year} All rights reserved.`\n\n return {\n ariaProps: { role: 'contentinfo' },\n copyrightText,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const footerVariants = cva({\n base: 'border-t bg-background py-8',\n})\n","import * as React from 'react'\nimport {\n createFooter,\n footerVariants,\n type FooterColumn,\n type SocialLink,\n} from '@refraction-ui/footer'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n /** Custom copyright text */\n copyright?: string\n /** Social media links */\n socialLinks?: SocialLink[]\n /** Footer link columns */\n columns?: FooterColumn[]\n}\n\n/**\n * Footer component — renders a site footer with copyright, social links, and link columns.\n *\n * Uses the headless @refraction-ui/footer core for state and ARIA attributes.\n */\nexport const Footer = React.forwardRef<HTMLElement, FooterProps>(\n (\n {\n copyright,\n socialLinks = [],\n columns = [],\n className,\n ...props\n },\n ref,\n ) => {\n const api = createFooter({ copyright, socialLinks, columns })\n const classes = cn(footerVariants(), className)\n\n return (\n <footer ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"mx-auto max-w-7xl px-4\">\n {columns.length > 0 && (\n <div className=\"grid grid-cols-2 gap-8 md:grid-cols-4\">\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"mb-3 text-sm font-semibold\">{column.title}</h3>\n <ul className=\"space-y-2\">\n {column.links.map((link) => (\n <li key={link.href}>\n <a\n href={link.href}\n className=\"text-sm text-muted-foreground transition-colors hover:text-foreground\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n <div className=\"flex items-center justify-between pt-8\">\n <p className=\"text-sm text-muted-foreground\">{api.copyrightText}</p>\n {socialLinks.length > 0 && (\n <div className=\"flex items-center gap-4\">\n {socialLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n aria-label={link.label}\n >\n {link.icon ?? link.label}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n </footer>\n )\n },\n)\n\nFooter.displayName = 'Footer'\n","export interface InlineEditorProps {\n /** Current value */\n value: string\n /** Callback when saving */\n onSave?: (value: string) => void\n /** Callback when cancelling */\n onCancel?: () => void\n}\n\nexport interface ToolbarAction {\n name: string\n syntax: string\n}\n\nexport interface InlineEditorState {\n isEditing: boolean\n value: string\n preview: string\n}\n\nexport interface InlineEditorAPI {\n /** Current editor state */\n state: InlineEditorState\n /** Enter editing mode */\n startEditing(): void\n /** Cancel editing, revert to original value */\n cancel(): void\n /** Save the current value */\n save(): void\n /** Update the editing value */\n updateValue(value: string): void\n /** Insert syntax at cursor position */\n insertAtCursor(syntax: string): void\n /** Available toolbar actions */\n toolbarActions: ToolbarAction[]\n}\n\nexport function createInlineEditor(props: InlineEditorProps): InlineEditorAPI {\n const { value: initialValue, onSave, onCancel } = props\n\n let isEditing = false\n let currentValue = initialValue\n\n const toolbarActions: ToolbarAction[] = [\n { name: 'bold', syntax: '**' },\n { name: 'heading', syntax: '# ' },\n { name: 'list', syntax: '- ' },\n { name: 'link', syntax: '[text](url)' },\n ]\n\n function startEditing(): void {\n isEditing = true\n currentValue = initialValue\n }\n\n function cancel(): void {\n isEditing = false\n currentValue = initialValue\n onCancel?.()\n }\n\n function save(): void {\n isEditing = false\n onSave?.(currentValue)\n }\n\n function updateValue(value: string): void {\n currentValue = value\n }\n\n function insertAtCursor(syntax: string): void {\n currentValue = currentValue + syntax\n }\n\n return {\n get state(): InlineEditorState {\n return {\n get isEditing() {\n return isEditing\n },\n get value() {\n return currentValue\n },\n get preview() {\n return currentValue\n },\n }\n },\n startEditing,\n cancel,\n save,\n updateValue,\n insertAtCursor,\n toolbarActions,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const editorVariants = cva({\n base: 'w-full rounded-md border bg-background',\n variants: {\n state: {\n viewing: 'cursor-pointer hover:bg-muted/50 p-3',\n editing: 'p-0',\n },\n },\n defaultVariants: {\n state: 'viewing',\n },\n})\n\nexport const toolbarVariants = cva({\n base: 'flex items-center gap-1 border-b px-2 py-1',\n variants: {\n size: {\n sm: 'gap-0.5 px-1 py-0.5',\n md: 'gap-1 px-2 py-1',\n lg: 'gap-2 px-3 py-2',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const previewVariants = cva({\n base: 'prose prose-sm max-w-none p-3',\n variants: {\n size: {\n sm: 'prose-xs p-2',\n md: 'prose-sm p-3',\n lg: 'prose-base p-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createInlineEditor,\n editorVariants,\n toolbarVariants,\n previewVariants,\n type InlineEditorProps as CoreProps,\n} from '@refraction-ui/inline-editor'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// InlineEditor\n// ---------------------------------------------------------------------------\n\nexport interface InlineEditorProps {\n value: string\n onSave?: (value: string) => void\n onCancel?: () => void\n className?: string\n}\n\nexport function InlineEditor({\n value: initialValue,\n onSave,\n onCancel,\n className,\n}: InlineEditorProps) {\n const [isEditing, setIsEditing] = React.useState(false)\n const [editValue, setEditValue] = React.useState(initialValue)\n\n const apiRef = React.useRef<ReturnType<typeof createInlineEditor> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createInlineEditor({ value: initialValue, onSave, onCancel })\n }\n const api = apiRef.current\n\n const handleStartEditing = React.useCallback(() => {\n setIsEditing(true)\n setEditValue(initialValue)\n }, [initialValue])\n\n const handleCancel = React.useCallback(() => {\n setIsEditing(false)\n setEditValue(initialValue)\n onCancel?.()\n }, [initialValue, onCancel])\n\n const handleSave = React.useCallback(() => {\n setIsEditing(false)\n onSave?.(editValue)\n }, [editValue, onSave])\n\n const handleInsert = React.useCallback(\n (syntax: string) => {\n setEditValue((prev) => prev + syntax)\n },\n [],\n )\n\n // View mode\n if (!isEditing) {\n return React.createElement(\n 'div',\n {\n className: cn(editorVariants({ state: 'viewing' }), className),\n onClick: handleStartEditing,\n role: 'button',\n tabIndex: 0,\n 'aria-label': 'Click to edit',\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleStartEditing()\n }\n },\n },\n React.createElement('div', { className: previewVariants() }, editValue || initialValue),\n )\n }\n\n // Edit mode\n return React.createElement(\n 'div',\n {\n className: cn(editorVariants({ state: 'editing' }), className),\n },\n // Toolbar\n React.createElement(\n 'div',\n { className: toolbarVariants(), role: 'toolbar', 'aria-label': 'Formatting toolbar' },\n ...api.toolbarActions.map((action) =>\n React.createElement(\n 'button',\n {\n key: action.name,\n type: 'button',\n onClick: () => handleInsert(action.syntax),\n 'aria-label': action.name,\n 'data-action': action.name,\n },\n action.name,\n ),\n ),\n ),\n // Editor area: side-by-side textarea + preview\n React.createElement(\n 'div',\n { className: 'flex gap-2 p-2' },\n React.createElement('textarea', {\n value: editValue,\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => setEditValue(e.target.value),\n className: 'flex-1 min-h-[100px] resize-y border rounded p-2',\n 'aria-label': 'Editor content',\n }),\n React.createElement(\n 'div',\n {\n className: cn('flex-1', previewVariants()),\n 'aria-label': 'Preview',\n },\n editValue,\n ),\n ),\n // Action buttons\n React.createElement(\n 'div',\n { className: 'flex justify-end gap-2 p-2 border-t' },\n React.createElement(\n 'button',\n { type: 'button', onClick: handleCancel },\n 'Cancel',\n ),\n React.createElement(\n 'button',\n { type: 'button', onClick: handleSave },\n 'Save',\n ),\n ),\n )\n}\n\nInlineEditor.displayName = 'InlineEditor'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type InputType = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search'\n\nexport interface InputProps {\n type?: InputType\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n placeholder?: string\n 'aria-invalid'?: boolean\n}\n\nexport interface InputAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createInput(props: InputProps = {}): InputAPI {\n const {\n disabled = false,\n readOnly = false,\n required = false,\n 'aria-invalid': ariaInvalid,\n } = props\n\n const ariaProps: InputAPI['ariaProps'] = {}\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (ariaInvalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n if (ariaInvalid) {\n dataAttributes['data-invalid'] = ''\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n\nexport function getInputAriaProps(state: {\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n invalid?: boolean\n}): Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean } {\n const ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean } = {}\n\n if (state.disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (state.invalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (state.required) {\n ariaProps['aria-required'] = true\n }\n\n return ariaProps\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const inputVariants = cva({\n base: 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'h-8 text-xs',\n default: 'h-9',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createInput,\n inputVariants,\n} from '@refraction-ui/input'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Input component — renders a styled input with size support.\n *\n * Uses the headless @refraction-ui/input core for state, ARIA, and data attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ type = 'text', size, className, disabled, readOnly, required, 'aria-invalid': ariaInvalid, ...props }, ref) => {\n const api = createInput({\n type: type as import('@refraction-ui/input').InputType,\n disabled,\n readOnly,\n required,\n 'aria-invalid': ariaInvalid === true ? true : undefined,\n })\n\n const classes = cn(inputVariants({ size }), className)\n\n return (\n <input\n ref={ref}\n type={type}\n className={classes}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nInput.displayName = 'Input'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type InputGroupOrientation = 'horizontal' | 'vertical'\n\nexport interface InputGroupProps {\n orientation?: InputGroupOrientation\n id?: string\n 'aria-label'?: string\n 'aria-labelledby'?: string\n}\n\nexport interface InputGroupAPI {\n /** ARIA attributes to spread on the group container */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createInputGroup(props: InputGroupProps = {}): InputGroupAPI {\n const { orientation = 'horizontal' } = props\n const id = props.id ?? generateId('rfr-input-group')\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'group',\n }\n\n if (props['aria-label']) {\n ariaProps['aria-label'] = props['aria-label']\n }\n if (props['aria-labelledby']) {\n ariaProps['aria-labelledby'] = props['aria-labelledby']\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-orientation': orientation,\n id,\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const inputGroupTokens: TokenContract = {\n name: 'input-group',\n tokens: {\n bg: { variable: '--rfr-input-group-bg', fallback: 'hsl(var(--background))' },\n border: { variable: '--rfr-input-group-border', fallback: 'hsl(var(--border))' },\n radius: { variable: '--rfr-input-group-radius', fallback: 'var(--radius)' },\n },\n}\n\nexport const inputGroupVariants = cva({\n base: 'flex items-stretch [&>*:not(:first-child):not(:last-child)]:rounded-none',\n variants: {\n orientation: {\n horizontal: 'flex-row [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none',\n vertical: 'flex-col [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const inputGroupAddonVariants = cva({\n base: 'flex items-center justify-center border bg-muted px-3 text-sm text-muted-foreground',\n variants: {\n orientation: {\n horizontal: 'border-y border-x first:border-r-0 last:border-l-0',\n vertical: 'border-x border-y first:border-b-0 last:border-t-0',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const inputGroupButtonVariants = cva({\n base: 'relative inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n","import * as React from 'react'\nimport {\n createInputGroup,\n inputGroupVariants,\n inputGroupAddonVariants,\n inputGroupButtonVariants,\n type InputGroupOrientation,\n} from '@refraction-ui/input-group'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InputGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroup — flex container that visually groups inputs, addons, and buttons.\n * Handles border-radius clipping on first/last children.\n */\nexport const InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n const api = createInputGroup({\n orientation,\n id: props.id,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n })\n\n return (\n <div\n ref={ref}\n className={cn(inputGroupVariants({ orientation }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nInputGroup.displayName = 'InputGroup'\n\nexport interface InputGroupAddonProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroupAddon — decorative text or icon addon (e.g., \"$\", \"@\", icons).\n */\nexport const InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(inputGroupAddonVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nInputGroupAddon.displayName = 'InputGroupAddon'\n\nexport interface InputGroupTextProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/**\n * InputGroupText — inline text label within an input group.\n */\nexport const InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn('flex items-center px-3 text-sm text-muted-foreground', className)}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nInputGroupText.displayName = 'InputGroupText'\n\nexport interface InputGroupButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroupButton — a button styled to sit flush inside an input group.\n */\nexport const InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type={props.type ?? 'button'}\n className={cn(inputGroupButtonVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </button>\n )\n },\n)\n\nInputGroupButton.displayName = 'InputGroupButton'\n","export interface StorageAdapter {\n get(key: string): string | null\n set(key: string, value: string): void\n}\n\nexport interface InstallPromptProps {\n /** Delay in ms before showing prompt. Default: 3000 */\n delay?: number\n /** Key used to persist dismissed state. Default: 'rfr-install-dismissed' */\n storageKey?: string\n}\n\nexport interface InstallPromptState {\n canShow: boolean\n isDismissed: boolean\n}\n\nexport interface InstallPromptAPI {\n state: InstallPromptState\n /** Mark the prompt as showable (call after delay + event fire) */\n show(): void\n /** Dismiss and persist */\n dismiss(): void\n /** Trigger the browser install prompt */\n install(promptEvent?: { prompt(): void }): void\n /** ARIA attributes for the banner */\n ariaProps: Record<string, string>\n}\n\nexport function createInstallPrompt(\n props: InstallPromptProps = {},\n storage?: StorageAdapter,\n): InstallPromptAPI {\n const { storageKey = 'rfr-install-dismissed' } = props\n\n const dismissed = storage?.get(storageKey) === 'true'\n\n const state: InstallPromptState = {\n canShow: false,\n isDismissed: dismissed,\n }\n\n return {\n state,\n\n show() {\n if (!state.isDismissed) {\n state.canShow = true\n }\n },\n\n dismiss() {\n state.canShow = false\n state.isDismissed = true\n storage?.set(storageKey, 'true')\n },\n\n install(promptEvent?: { prompt(): void }) {\n promptEvent?.prompt()\n state.canShow = false\n },\n\n ariaProps: {\n role: 'banner',\n 'aria-label': 'Install application',\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const installPromptVariants = cva({\n base: 'fixed bottom-0 left-0 right-0 z-50 flex items-center justify-between gap-4 border-t bg-background px-4 py-3 shadow-lg',\n})\n","import * as React from 'react'\nimport {\n createInstallPrompt,\n installPromptVariants,\n type InstallPromptProps as CoreInstallPromptProps,\n type StorageAdapter,\n} from '@refraction-ui/install-prompt'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InstallPromptProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Delay in ms before showing. Default: 3000 */\n delay?: number\n /** Storage key for dismissed state. Default: 'rfr-install-dismissed' */\n storageKey?: string\n /** Install button label. Default: 'Install' */\n installLabel?: string\n /** Dismiss button label. Default: 'Dismiss' */\n dismissLabel?: string\n /** Message text. Default: 'Install this app for a better experience' */\n message?: string\n}\n\nfunction createLocalStorage(): StorageAdapter {\n return {\n get(key) {\n try {\n return localStorage.getItem(key)\n } catch {\n return null\n }\n },\n set(key, value) {\n try {\n localStorage.setItem(key, value)\n } catch {\n // Ignore storage errors in SSR or incognito\n }\n },\n }\n}\n\n/**\n * InstallPrompt component — renders a bottom banner prompting PWA installation.\n *\n * Uses the headless @refraction-ui/install-prompt core for state and ARIA attributes.\n * Listens for the `beforeinstallprompt` browser event.\n */\nexport const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps>(\n (\n {\n delay = 3000,\n storageKey,\n installLabel = 'Install',\n dismissLabel = 'Dismiss',\n message = 'Install this app for a better experience',\n className,\n ...props\n },\n ref,\n ) => {\n const storageRef = React.useRef<StorageAdapter | undefined>(undefined)\n if (typeof window !== 'undefined' && !storageRef.current) {\n storageRef.current = createLocalStorage()\n }\n\n const api = createInstallPrompt({ delay, storageKey }, storageRef.current)\n const [visible, setVisible] = React.useState(false)\n const promptEventRef = React.useRef<{ prompt(): void } | null>(null)\n\n React.useEffect(() => {\n if (api.state.isDismissed) return\n\n const handleBeforeInstall = (e: Event) => {\n e.preventDefault()\n promptEventRef.current = e as unknown as { prompt(): void }\n }\n\n window.addEventListener('beforeinstallprompt', handleBeforeInstall)\n\n const timer = setTimeout(() => {\n if (promptEventRef.current && !api.state.isDismissed) {\n api.show()\n setVisible(true)\n }\n }, delay)\n\n return () => {\n window.removeEventListener('beforeinstallprompt', handleBeforeInstall)\n clearTimeout(timer)\n }\n }, [delay, api])\n\n if (!visible) return null\n\n const classes = cn(installPromptVariants(), className)\n\n return (\n <div ref={ref} className={classes} {...api.ariaProps} {...props}>\n <span>{message}</span>\n <div>\n <button\n type=\"button\"\n onClick={() => {\n api.install(promptEventRef.current ?? undefined)\n setVisible(false)\n }}\n >\n {installLabel}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n api.dismiss()\n setVisible(false)\n }}\n >\n {dismissLabel}\n </button>\n </div>\n </div>\n )\n },\n)\n\nInstallPrompt.displayName = 'InstallPrompt'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ComponentDef {\n type: string\n pattern: RegExp\n props: Record<string, string>\n}\n\nexport interface MarkdownRendererProps {\n content: string\n components?: Record<string, ComponentDef>\n linkResolver?: (url: string) => string\n}\n\nexport interface MarkdownRendererAPI {\n /** Rendered HTML string */\n html: string\n /** Extracted component slots from custom component definitions */\n components: Array<{ name: string; props: Record<string, string> }>\n /** ARIA attributes for the rendered content container */\n ariaProps: Partial<AccessibilityProps>\n}\n\n/**\n * Escape HTML entities to prevent injection in non-code contexts.\n */\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\n/**\n * Parse inline markdown elements: bold, italic, code, links.\n */\nfunction parseInline(text: string, linkResolver?: (url: string) => string): string {\n let result = escapeHtml(text)\n\n // Inline code (backticks) — must come before bold/italic to avoid conflicts\n result = result.replace(/`([^`]+)`/g, '<code>$1</code>')\n\n // Bold (**text** or __text__)\n result = result.replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>')\n result = result.replace(/__([^_]+)__/g, '<strong>$1</strong>')\n\n // Italic (*text* or _text_)\n result = result.replace(/\\*([^*]+)\\*/g, '<em>$1</em>')\n result = result.replace(/_([^_]+)_/g, '<em>$1</em>')\n\n // Links [text](url) — reject javascript: URLs for XSS safety\n result = result.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_match, text, url) => {\n if (/^\\s*javascript\\s*:/i.test(url)) {\n return text\n }\n const resolvedUrl = linkResolver ? linkResolver(url) : url\n return `<a href=\"${resolvedUrl}\">${text}</a>`\n })\n\n return result\n}\n\n/**\n * Parse a full markdown string into HTML.\n * Handles: headings, bold, italic, links, code (inline & block),\n * lists (unordered & ordered), blockquotes, horizontal rules.\n */\nfunction parseMarkdown(content: string, linkResolver?: (url: string) => string): string {\n const lines = content.split('\\n')\n const outputLines: string[] = []\n let inCodeBlock = false\n let codeBlockContent: string[] = []\n let codeBlockLang = ''\n let inList: 'ul' | 'ol' | null = null\n let inBlockquote = false\n\n function closeList() {\n if (inList) {\n outputLines.push(inList === 'ul' ? '</ul>' : '</ol>')\n inList = null\n }\n }\n\n function closeBlockquote() {\n if (inBlockquote) {\n outputLines.push('</blockquote>')\n inBlockquote = false\n }\n }\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n\n // Code blocks (fenced with ```)\n if (line.trimStart().startsWith('```')) {\n if (inCodeBlock) {\n // Closing code block\n outputLines.push(`<pre><code${codeBlockLang ? ` class=\"language-${escapeHtml(codeBlockLang)}\"` : ''}>${escapeHtml(codeBlockContent.join('\\n'))}</code></pre>`)\n codeBlockContent = []\n codeBlockLang = ''\n inCodeBlock = false\n } else {\n // Opening code block\n closeList()\n closeBlockquote()\n inCodeBlock = true\n codeBlockLang = line.trimStart().slice(3).trim()\n }\n continue\n }\n\n if (inCodeBlock) {\n codeBlockContent.push(line)\n continue\n }\n\n // Horizontal rule (--- or ___ or ***)\n if (/^(\\s*[-*_]\\s*){3,}$/.test(line)) {\n closeList()\n closeBlockquote()\n outputLines.push('<hr />')\n continue\n }\n\n // Headings (# through ######)\n const headingMatch = line.match(/^(#{1,6})\\s+(.+)$/)\n if (headingMatch) {\n closeList()\n closeBlockquote()\n const level = headingMatch[1].length\n const text = parseInline(headingMatch[2], linkResolver)\n outputLines.push(`<h${level}>${text}</h${level}>`)\n continue\n }\n\n // Blockquotes (> text)\n const blockquoteMatch = line.match(/^>\\s?(.*)$/)\n if (blockquoteMatch) {\n closeList()\n if (!inBlockquote) {\n inBlockquote = true\n outputLines.push('<blockquote>')\n }\n const text = blockquoteMatch[1].trim()\n if (text) {\n outputLines.push(`<p>${parseInline(text, linkResolver)}</p>`)\n }\n continue\n } else if (inBlockquote) {\n closeBlockquote()\n }\n\n // Unordered list items (- or * at start)\n const ulMatch = line.match(/^[\\s]*[-*+]\\s+(.+)$/)\n if (ulMatch) {\n closeBlockquote()\n if (inList !== 'ul') {\n closeList()\n inList = 'ul'\n outputLines.push('<ul>')\n }\n outputLines.push(`<li>${parseInline(ulMatch[1], linkResolver)}</li>`)\n continue\n }\n\n // Ordered list items (1. 2. etc.)\n const olMatch = line.match(/^[\\s]*\\d+\\.\\s+(.+)$/)\n if (olMatch) {\n closeBlockquote()\n if (inList !== 'ol') {\n closeList()\n inList = 'ol'\n outputLines.push('<ol>')\n }\n outputLines.push(`<li>${parseInline(olMatch[1], linkResolver)}</li>`)\n continue\n }\n\n // If we were in a list and hit a non-list line, close the list\n if (inList) {\n closeList()\n }\n\n // Empty line\n if (line.trim() === '') {\n continue\n }\n\n // Regular paragraph\n outputLines.push(`<p>${parseInline(line, linkResolver)}</p>`)\n }\n\n // Close any open blocks\n if (inCodeBlock) {\n outputLines.push(`<pre><code${codeBlockLang ? ` class=\"language-${escapeHtml(codeBlockLang)}\"` : ''}>${escapeHtml(codeBlockContent.join('\\n'))}</code></pre>`)\n }\n closeList()\n closeBlockquote()\n\n return outputLines.join('\\n')\n}\n\n/**\n * Extract custom component slots from content based on component definitions.\n */\nfunction extractComponents(\n content: string,\n components?: Record<string, ComponentDef>,\n): Array<{ name: string; props: Record<string, string> }> {\n if (!components) return []\n\n const extracted: Array<{ name: string; props: Record<string, string> }> = []\n\n for (const [name, def] of Object.entries(components)) {\n const matches = content.matchAll(def.pattern)\n for (const _match of matches) {\n extracted.push({\n name,\n props: { ...def.props },\n })\n }\n }\n\n return extracted\n}\n\n/**\n * Create a headless markdown renderer.\n *\n * Uses the headless pattern — returns an API object with rendered HTML,\n * extracted component slots, and ARIA props for the container.\n */\nexport function createMarkdownRenderer(props: MarkdownRendererProps): MarkdownRendererAPI {\n const { content, components, linkResolver } = props\n\n const html = parseMarkdown(content, linkResolver)\n const extractedComponents = extractComponents(content, components)\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'document',\n 'aria-label': 'Rendered markdown content',\n }\n\n return {\n html,\n components: extractedComponents,\n ariaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const markdownRendererTokens: TokenContract = {\n name: 'markdown-renderer',\n tokens: {\n bg: { variable: '--rfr-markdown-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-markdown-fg', fallback: 'hsl(var(--foreground))' },\n codeBg: { variable: '--rfr-markdown-code-bg', fallback: 'hsl(var(--muted))' },\n linkColor: { variable: '--rfr-markdown-link', fallback: 'hsl(var(--primary))' },\n borderColor: { variable: '--rfr-markdown-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const proseVariants = cva({\n base: 'prose max-w-none text-foreground leading-relaxed',\n variants: {\n size: {\n sm: 'prose-sm text-sm',\n default: 'prose-base text-base',\n lg: 'prose-lg text-lg',\n },\n theme: {\n light: 'bg-white text-gray-900',\n dark: 'bg-gray-900 text-gray-100',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createMarkdownRenderer,\n proseVariants,\n type MarkdownRendererProps as CoreProps,\n type ComponentDef,\n} from '@refraction-ui/markdown-renderer'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { ComponentDef }\n\nexport interface MarkdownRendererProps {\n content: string\n components?: Record<string, ComponentDef>\n linkResolver?: (url: string) => string\n className?: string\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Sanitize HTML to prevent XSS attacks.\n * Strips script tags, on* event attributes, and javascript: URLs.\n */\nfunction sanitizeHtml(html: string): string {\n let sanitized = html\n\n // Remove <script> tags and their contents\n sanitized = sanitized.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '')\n\n // Remove standalone <script> opening/closing tags\n sanitized = sanitized.replace(/<\\/?script[^>]*>/gi, '')\n\n // Remove on* event handler attributes\n sanitized = sanitized.replace(/\\s+on\\w+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s>]+)/gi, '')\n\n // Remove javascript: URLs from href and src attributes\n sanitized = sanitized.replace(/(href|src)\\s*=\\s*[\"']?\\s*javascript\\s*:[^\"'>]*/gi, '$1=\"\"')\n\n return sanitized\n}\n\n/**\n * MarkdownRenderer component — renders markdown content as sanitized HTML.\n *\n * Uses the headless @refraction-ui/markdown-renderer core for parsing.\n * XSS sanitization is applied before rendering via dangerouslySetInnerHTML.\n */\nexport const MarkdownRenderer = React.forwardRef<HTMLDivElement, MarkdownRendererProps>(\n ({ content, components, linkResolver, className, size }, ref) => {\n const coreProps: CoreProps = { content, components, linkResolver }\n const api = createMarkdownRenderer(coreProps)\n const classes = cn(proseVariants({ size }), className)\n const sanitizedHtml = sanitizeHtml(api.html)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\n />\n )\n },\n)\n\nMarkdownRenderer.displayName = 'MarkdownRenderer'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface MobileNavProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n id?: string\n}\n\nexport interface MobileNavState {\n open: boolean\n}\n\nexport interface MobileNavAPI {\n /** Current state */\n state: MobileNavState\n /** ARIA and interaction props for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, string | boolean | undefined>\n /** ARIA and data attributes for the content panel */\n contentProps: Partial<AccessibilityProps> & Record<string, string | boolean | undefined>\n /** Toggle open state */\n toggle: () => void\n /** Open the nav */\n open: () => void\n /** Close the nav */\n close: () => void\n /** Keyboard handlers (Escape closes) */\n keyboardHandlers: KeyboardHandlerMap\n}\n\nexport function createMobileNav(props: MobileNavProps = {}): MobileNavAPI {\n const isOpen = props.open ?? false\n const id = props.id ?? generateId('rfr-mobile-nav')\n const contentId = `${id}-content`\n\n const state: MobileNavState = {\n open: isOpen,\n }\n\n const triggerProps: MobileNavAPI['triggerProps'] = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-label': 'Toggle menu',\n }\n\n const contentProps: MobileNavAPI['contentProps'] = {\n id: contentId,\n role: 'menu',\n 'data-state': isOpen ? 'open' : 'closed',\n }\n\n function setOpen(value: boolean) {\n state.open = value\n props.onOpenChange?.(value)\n }\n\n const toggle = () => setOpen(!state.open)\n const open = () => setOpen(true)\n const close = () => setOpen(false)\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => close(),\n }\n\n return {\n state,\n triggerProps,\n contentProps,\n toggle,\n open,\n close,\n keyboardHandlers,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const mobileNavTokens: TokenContract = {\n name: 'mobile-nav',\n tokens: {\n bg: { variable: '--rfr-mobile-nav-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-mobile-nav-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-mobile-nav-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const mobileNavVariants = cva({\n base: 'relative',\n variants: {},\n})\n\nexport const mobileNavContentVariants = cva({\n base: 'w-full overflow-hidden border-b bg-background transition-all duration-200',\n variants: {\n state: {\n open: 'max-h-screen opacity-100 animate-in slide-in-from-top',\n closed: 'max-h-0 opacity-0 pointer-events-none animate-out slide-out-to-top',\n },\n },\n defaultVariants: {\n state: 'closed',\n },\n})\n\nexport const mobileNavTriggerVariants = cva({\n base: 'inline-flex items-center justify-center rounded-md p-2 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n variants: {},\n})\n\nexport const mobileNavLinkVariants = cva({\n base: 'block w-full px-4 py-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2',\n variants: {},\n})\n","import * as React from 'react'\nimport {\n createMobileNav,\n mobileNavVariants,\n mobileNavContentVariants,\n mobileNavTriggerVariants,\n mobileNavLinkVariants,\n} from '@refraction-ui/mobile-nav'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface MobileNavContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n contentId: string\n}\n\nconst MobileNavContext = React.createContext<MobileNavContextValue | null>(null)\n\nfunction useMobileNavContext(): MobileNavContextValue {\n const ctx = React.useContext(MobileNavContext)\n if (!ctx) {\n throw new Error('MobileNav compound components must be used within <MobileNav>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* MobileNav (root) */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavProps extends React.HTMLAttributes<HTMLElement> {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n defaultOpen?: boolean\n}\n\n/**\n * MobileNav — root wrapper that manages open/closed state via context.\n * Supports both controlled (open + onOpenChange) and uncontrolled (defaultOpen) usage.\n */\nexport const MobileNav = React.forwardRef<HTMLElement, MobileNavProps>(\n ({ open: controlledOpen, onOpenChange, defaultOpen = false, className, children, ...props }, ref) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = createMobileNav({ open, onOpenChange: setOpen, id: props.id })\n\n const handleKeyDown = React.useMemo(\n () => createKeyboardHandler(api.keyboardHandlers),\n [open],\n )\n\n const contextValue = React.useMemo<MobileNavContextValue>(\n () => ({ open, setOpen, contentId: api.contentProps.id as string }),\n [open, setOpen, api.contentProps.id],\n )\n\n return (\n <MobileNavContext.Provider value={contextValue}>\n <nav\n ref={ref}\n className={cn(mobileNavVariants(), className)}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler}\n {...props}\n >\n {children}\n </nav>\n </MobileNavContext.Provider>\n )\n },\n)\n\nMobileNav.displayName = 'MobileNav'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\n/**\n * MobileNavTrigger — hamburger button that toggles the mobile nav.\n */\nexport const MobileNavTrigger = React.forwardRef<HTMLButtonElement, MobileNavTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const { open, setOpen, contentId } = useMobileNavContext()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={open}\n aria-controls={contentId}\n aria-label=\"Toggle menu\"\n className={cn(mobileNavTriggerVariants(), className)}\n onClick={() => setOpen(!open)}\n {...props}\n >\n {children ?? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {open ? (\n <>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </>\n ) : (\n <>\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\" />\n </>\n )}\n </svg>\n )}\n </button>\n )\n },\n)\n\nMobileNavTrigger.displayName = 'MobileNavTrigger'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavContent */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * MobileNavContent — the collapsible dropdown panel that holds nav links.\n */\nexport const MobileNavContent = React.forwardRef<HTMLDivElement, MobileNavContentProps>(\n ({ className, children, ...props }, ref) => {\n const { open, contentId } = useMobileNavContext()\n const state = open ? 'open' : 'closed'\n\n return (\n <div\n ref={ref}\n id={contentId}\n role=\"menu\"\n data-state={state}\n className={cn(mobileNavContentVariants({ state }), className)}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nMobileNavContent.displayName = 'MobileNavContent'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavLink */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {}\n\n/**\n * MobileNavLink — a styled link inside the mobile nav dropdown.\n */\nexport const MobileNavLink = React.forwardRef<HTMLAnchorElement, MobileNavLinkProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n role=\"menuitem\"\n className={cn(mobileNavLinkVariants(), className)}\n {...props}\n >\n {children}\n </a>\n )\n },\n)\n\nMobileNavLink.displayName = 'MobileNavLink'\n","export interface NavLink {\n label: string\n href: string\n icon?: string\n}\n\nexport type NavbarVariant = 'solid' | 'blur' | 'gradient' | 'transparent'\n\nexport interface NavbarProps {\n links?: NavLink[]\n currentPath?: string\n variant?: NavbarVariant\n}\n\nexport interface NavbarAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n linkAriaProps: (href: string) => Record<string, string>\n}\n\nexport function createNavbar(props: NavbarProps = {}): NavbarAPI {\n const { links = [], currentPath = '/' } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n function linkAriaProps(href: string): Record<string, string> {\n const active = isActive(href)\n return active ? { 'aria-current': 'page' } : {}\n }\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Main navigation' },\n isActive,\n linkAriaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const navbarVariants = cva({\n base: 'sticky top-0 z-40 w-full border-b',\n variants: {\n variant: {\n solid: 'bg-background',\n blur: 'bg-background/80 backdrop-blur-md',\n gradient: 'bg-gradient-to-b from-background to-background/80 backdrop-blur-sm',\n transparent: 'bg-transparent border-transparent',\n },\n },\n defaultVariants: {\n variant: 'blur',\n },\n})\n\nexport const navLinkVariants = cva({\n base: 'text-sm font-medium transition-colors hover:text-foreground',\n variants: {\n active: {\n true: 'text-foreground',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createNavbar,\n navbarVariants,\n navLinkVariants,\n type NavLink,\n type NavbarVariant,\n} from '@refraction-ui/navbar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface NavbarProps extends React.HTMLAttributes<HTMLElement> {\n /** Navigation links */\n links?: NavLink[]\n /** Current pathname for active state */\n currentPath?: string\n /** Visual variant */\n variant?: NavbarVariant\n /** Logo or brand slot */\n logo?: React.ReactNode\n /** Right-side actions slot */\n actions?: React.ReactNode\n}\n\n/**\n * Navbar component — renders a sticky header with navigation links.\n *\n * Uses the headless @refraction-ui/navbar core for state and ARIA attributes.\n * Hidden on mobile (links use md:flex).\n */\nexport const Navbar = React.forwardRef<HTMLElement, NavbarProps>(\n (\n {\n links = [],\n currentPath,\n variant,\n logo,\n actions,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createNavbar({ links, currentPath, variant })\n const classes = cn(navbarVariants({ variant }), className)\n\n return (\n <header ref={ref} className={classes} {...props}>\n <nav\n className=\"mx-auto flex h-14 max-w-7xl items-center justify-between px-4\"\n {...api.ariaProps}\n >\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n <ul className=\"hidden items-center gap-6 md:flex\">\n {links.map((link) => (\n <li key={link.href}>\n <a\n href={link.href}\n className={navLinkVariants({\n active: api.isActive(link.href) ? 'true' : 'false',\n })}\n {...api.linkAriaProps(link.href)}\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </nav>\n </header>\n )\n },\n)\n\nNavbar.displayName = 'Navbar'\n","import type { AccessibilityProps, Side, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n}\n\nexport interface PopoverAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: Partial<AccessibilityProps> & {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'dialog'\n }\n /** Props to spread on the content element */\n contentProps: {\n role: 'dialog'\n id: string\n }\n /** Resolved placement */\n placement: Side\n /** Open the popover */\n open: () => void\n /** Close the popover */\n close: () => void\n /** Toggle the popover */\n toggle: () => void\n /** Keyboard handler map (Escape to close) */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createPopover(props: PopoverProps = {}): PopoverAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n } = props\n\n const contentId = generateId('rfr-popover')\n\n let isOpen = controlledOpen ?? defaultOpen\n\n const state = { open: isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.open = value\n onOpenChange?.(value)\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog' as const,\n }\n\n const contentProps = {\n role: 'dialog' as const,\n id: contentId,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n placement,\n open: () => setOpen(true),\n close: () => setOpen(false),\n toggle: () => setOpen(!isOpen),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const popoverContentVariants = cva({\n base: 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n variants: {\n side: {\n top: 'animate-slide-down-fade',\n right: 'animate-slide-left-fade',\n bottom: 'animate-slide-up-fade',\n left: 'animate-slide-right-fade',\n },\n },\n defaultVariants: {\n side: 'bottom',\n },\n})\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport {\n createPopover,\n popoverContentVariants,\n type PopoverAPI,\n} from '@refraction-ui/popover'\nimport type { Side } from '@refraction-ui/shared'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface PopoverContextValue {\n api: PopoverAPI\n open: boolean\n setOpen: (value: boolean) => void\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null)\n\nfunction usePopoverContext(): PopoverContextValue {\n const ctx = React.useContext(PopoverContext)\n if (!ctx) {\n throw new Error('Popover compound components must be used within <Popover>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* Popover (root provider) */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n children: React.ReactNode\n}\n\nexport function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleOpenChange = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = React.useMemo(\n () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),\n [isOpen, handleOpenChange, placement],\n )\n\n const ctx = React.useMemo<PopoverContextValue>(\n () => ({ api, open: isOpen, setOpen: handleOpenChange }),\n [api, isOpen, handleOpenChange],\n )\n\n return React.createElement(PopoverContext.Provider, { value: ctx }, children)\n}\n\nPopover.displayName = 'Popover'\n\n/* ------------------------------------------------------------------ */\n/* PopoverTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { api, setOpen, open } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(!open)\n onClick?.(e)\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={api.triggerProps['aria-expanded']}\n aria-controls={api.triggerProps['aria-controls']}\n aria-haspopup={api.triggerProps['aria-haspopup']}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n },\n)\n\nPopoverTrigger.displayName = 'PopoverTrigger'\n\n/* ------------------------------------------------------------------ */\n/* PopoverContent */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: Side\n}\n\nexport const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n ({ side, className, children, onKeyDown, ...props }, ref) => {\n const { api, open, setOpen } = usePopoverContext()\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n setOpen(false)\n }\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = (\n <div\n ref={ref}\n role={api.contentProps.role}\n id={api.contentProps.id}\n className={cn(popoverContentVariants({ side: side ?? api.placement }), className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n )\n\n if (typeof document !== 'undefined') {\n return createPortal(content, document.body)\n }\n\n return content\n },\n)\n\nPopoverContent.displayName = 'PopoverContent'\n\n/* ------------------------------------------------------------------ */\n/* PopoverClose */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverClose = React.forwardRef<HTMLButtonElement, PopoverCloseProps>(\n ({ onClick, children, ...props }, ref) => {\n const { setOpen } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(false)\n onClick?.(e)\n }\n\n return (\n <button ref={ref} type=\"button\" onClick={handleClick} {...props}>\n {children}\n </button>\n )\n },\n)\n\nPopoverClose.displayName = 'PopoverClose'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface SearchBarProps {\n value?: string\n onValueChange?: (value: string) => void\n onSearch?: (value: string) => void\n debounceMs?: number\n placeholder?: string\n loading?: boolean\n}\n\nexport interface SearchBarAPI {\n /** Current state */\n state: { value: string; isSearching: boolean }\n /** Props to spread on the input element */\n inputProps: {\n role: 'combobox'\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-autocomplete': 'list'\n }\n /** Props to spread on the results list element */\n listProps: {\n role: 'listbox'\n id: string\n }\n /** Set the search value */\n setValue: (value: string) => void\n /** Clear the search value */\n clear: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createSearchBar(props: SearchBarProps = {}): SearchBarAPI {\n const {\n value: initialValue = '',\n onValueChange,\n onSearch,\n debounceMs = 300,\n placeholder: _placeholder,\n loading = false,\n } = props\n\n const listId = generateId('rfr-search-list')\n\n let currentValue = initialValue\n let isSearching = loading\n let debounceTimer: ReturnType<typeof setTimeout> | undefined\n\n const state = { value: currentValue, isSearching }\n\n function setValue(value: string) {\n currentValue = value\n state.value = value\n onValueChange?.(value)\n\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n\n if (value.length > 0) {\n isSearching = true\n state.isSearching = true\n debounceTimer = setTimeout(() => {\n onSearch?.(value)\n isSearching = false\n state.isSearching = false\n }, debounceMs)\n } else {\n isSearching = false\n state.isSearching = false\n }\n }\n\n function clear() {\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n currentValue = ''\n state.value = ''\n isSearching = false\n state.isSearching = false\n onValueChange?.('')\n }\n\n const inputProps = {\n role: 'combobox' as const,\n 'aria-expanded': currentValue.length > 0,\n 'aria-controls': listId,\n 'aria-autocomplete': 'list' as const,\n }\n\n const listProps = {\n role: 'listbox' as const,\n id: listId,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowDown]: () => {\n // Focus first result - signaled via handler\n },\n [Keys.Escape]: () => {\n clear()\n },\n [Keys.Enter]: () => {\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n onSearch?.(currentValue)\n isSearching = false\n state.isSearching = false\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n inputProps,\n listProps,\n setValue,\n clear,\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const searchBarVariants = cva({\n base: 'relative flex items-center w-full rounded-md border bg-background text-foreground',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2',\n md: 'h-10 text-base px-3',\n lg: 'h-12 text-lg px-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const searchResultVariants = cva({\n base: 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-hidden',\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createSearchBar,\n searchBarVariants,\n searchResultVariants,\n type SearchBarAPI,\n} from '@refraction-ui/search-bar'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface SearchBarContextValue {\n api: SearchBarAPI\n value: string\n isSearching: boolean\n setValue: (value: string) => void\n clear: () => void\n}\n\nconst SearchBarContext = React.createContext<SearchBarContextValue | null>(null)\n\nfunction useSearchBarContext(): SearchBarContextValue {\n const ctx = React.useContext(SearchBarContext)\n if (!ctx) {\n throw new Error('SearchBar compound components must be used within <SearchBar>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* SearchBar (root provider + input) */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchBarProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n onSearch?: (value: string) => void\n debounceMs?: number\n loading?: boolean\n children?: React.ReactNode\n}\n\nexport function SearchBar({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n onSearch,\n debounceMs = 300,\n loading = false,\n placeholder,\n className,\n children,\n ...inputProps\n}: SearchBarProps) {\n const [internalValue, setInternalValue] = React.useState(controlledValue ?? defaultValue)\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const debounceRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n const handleValueChange = React.useCallback(\n (val: string) => {\n if (!isControlled) {\n setInternalValue(val)\n }\n onValueChange?.(val)\n },\n [isControlled, onValueChange],\n )\n\n const [isSearching, setIsSearching] = React.useState(loading)\n\n const handleSearch = React.useCallback(\n (val: string) => {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n if (val.length > 0) {\n setIsSearching(true)\n debounceRef.current = setTimeout(() => {\n onSearch?.(val)\n setIsSearching(false)\n }, debounceMs)\n } else {\n setIsSearching(false)\n }\n },\n [onSearch, debounceMs],\n )\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value\n handleValueChange(val)\n handleSearch(val)\n },\n [handleValueChange, handleSearch],\n )\n\n const clear = React.useCallback(() => {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n handleValueChange('')\n setIsSearching(false)\n }, [handleValueChange])\n\n const api = React.useMemo(\n () =>\n createSearchBar({\n value: currentValue,\n onValueChange: handleValueChange,\n onSearch,\n debounceMs,\n placeholder,\n loading,\n }),\n [currentValue, handleValueChange, onSearch, debounceMs, placeholder, loading],\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape') {\n clear()\n } else if (e.key === 'Enter') {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n onSearch?.(currentValue)\n setIsSearching(false)\n }\n },\n [clear, onSearch, currentValue],\n )\n\n const ctx = React.useMemo<SearchBarContextValue>(\n () => ({ api, value: currentValue, isSearching, setValue: handleValueChange, clear }),\n [api, currentValue, isSearching, handleValueChange, clear],\n )\n\n return React.createElement(\n SearchBarContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { className: cn(searchBarVariants(), className) },\n React.createElement('span', { className: 'rfr-search-icon', 'aria-hidden': 'true' }, '\\u{1F50D}'),\n React.createElement('input', {\n ...inputProps,\n role: api.inputProps.role,\n 'aria-expanded': api.inputProps['aria-expanded'],\n 'aria-controls': api.inputProps['aria-controls'],\n 'aria-autocomplete': api.inputProps['aria-autocomplete'],\n value: currentValue,\n placeholder,\n onChange: handleChange,\n onKeyDown: handleKeyDown,\n className: 'rfr-search-input flex-1 bg-transparent outline-none',\n }),\n isSearching &&\n React.createElement('span', { className: 'rfr-search-spinner', 'aria-label': 'Loading' }, '\\u{23F3}'),\n currentValue.length > 0 &&\n !isSearching &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'rfr-search-clear',\n onClick: clear,\n 'aria-label': 'Clear search',\n },\n '\\u{2715}',\n ),\n ),\n children,\n )\n}\n\nSearchBar.displayName = 'SearchBar'\n\n/* ------------------------------------------------------------------ */\n/* SearchResults (dropdown list) */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchResultsProps extends React.HTMLAttributes<HTMLUListElement> {}\n\nexport const SearchResults = React.forwardRef<HTMLUListElement, SearchResultsProps>(\n ({ className, children, ...props }, ref) => {\n const { api, value } = useSearchBarContext()\n\n if (value.length === 0) return null\n\n return React.createElement(\n 'ul',\n {\n ref,\n role: api.listProps.role,\n id: api.listProps.id,\n className: cn(searchResultVariants(), className),\n ...props,\n },\n children,\n )\n },\n)\n\nSearchResults.displayName = 'SearchResults'\n\n/* ------------------------------------------------------------------ */\n/* SearchResultItem */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchResultItemProps extends React.LiHTMLAttributes<HTMLLIElement> {}\n\nexport const SearchResultItem = React.forwardRef<HTMLLIElement, SearchResultItemProps>(\n ({ className, children, ...props }, ref) => {\n return React.createElement(\n 'li',\n {\n ref,\n role: 'option',\n className: cn('px-3 py-2 cursor-pointer hover:bg-accent', className),\n ...props,\n },\n children,\n )\n },\n)\n\nSearchResultItem.displayName = 'SearchResultItem'\n","export interface SidebarItem {\n label: string\n href: string\n icon?: string\n /** Roles required to see this item */\n roles?: string[]\n /** Nested items */\n children?: SidebarItem[]\n}\n\nexport interface SidebarSection {\n title?: string\n items: SidebarItem[]\n}\n\nexport interface SidebarProps {\n sections?: SidebarSection[]\n currentPath?: string\n collapsed?: boolean\n userRoles?: string[]\n}\n\nexport interface SidebarAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n isVisible: (item: SidebarItem) => boolean\n itemAriaProps: (href: string) => Record<string, string>\n visibleSections: SidebarSection[]\n}\n\nexport function createSidebar(props: SidebarProps = {}): SidebarAPI {\n const { sections = [], currentPath = '/', userRoles = [] } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n function isVisible(item: SidebarItem): boolean {\n if (!item.roles || item.roles.length === 0) return true\n return item.roles.some((role) => userRoles.includes(role))\n }\n\n const visibleSections = sections\n .map((section) => ({\n ...section,\n items: section.items.filter(isVisible),\n }))\n .filter((section) => section.items.length > 0)\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Sidebar' },\n isActive,\n isVisible,\n itemAriaProps: (href: string): Record<string, string> =>\n isActive(href) ? { 'aria-current': 'page' } : {},\n visibleSections,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const sidebarVariants = cva({\n base: 'hidden md:flex flex-col border-r bg-background',\n variants: {\n collapsed: {\n true: 'w-16',\n false: 'w-64',\n },\n },\n defaultVariants: {\n collapsed: 'false',\n },\n})\n\nexport const sidebarItemVariants = cva({\n base: 'flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors',\n variants: {\n active: {\n true: 'bg-accent text-accent-foreground',\n false: 'text-muted-foreground hover:bg-muted hover:text-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createSidebar,\n sidebarVariants,\n sidebarItemVariants,\n type SidebarSection,\n type SidebarItem as SidebarItemType,\n} from '@refraction-ui/sidebar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Sidebar sections with items */\n sections?: SidebarSection[]\n /** Current pathname for active state */\n currentPath?: string\n /** Whether the sidebar is collapsed */\n collapsed?: boolean\n /** User roles for visibility filtering */\n userRoles?: string[]\n}\n\n/**\n * Sidebar component — renders a vertical navigation panel with sections and items.\n *\n * Uses the headless @refraction-ui/sidebar core for state, visibility, and ARIA attributes.\n * Hidden on mobile (hidden md:flex via styles).\n */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n sections = [],\n currentPath,\n collapsed = false,\n userRoles,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createSidebar({ sections, currentPath, collapsed, userRoles })\n const classes = cn(\n sidebarVariants({ collapsed: collapsed ? 'true' : 'false' }),\n className,\n )\n\n return (\n <aside ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"flex flex-col gap-4 p-4\">\n {api.visibleSections.map((section, sIdx) => (\n <div key={section.title ?? sIdx}>\n {section.title && !collapsed && (\n <h3 className=\"mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {section.title}\n </h3>\n )}\n <ul className=\"space-y-1\">\n {section.items.map((item) => {\n const active = api.isActive(item.href)\n return (\n <li key={item.href}>\n <a\n href={item.href}\n className={sidebarItemVariants({\n active: active ? 'true' : 'false',\n })}\n {...api.itemAriaProps(item.href)}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {!collapsed && <span>{item.label}</span>}\n </a>\n </li>\n )\n })}\n </ul>\n </div>\n ))}\n </div>\n </aside>\n )\n },\n)\n\nSidebar.displayName = 'Sidebar'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type SkeletonShape = 'text' | 'circular' | 'rectangular' | 'rounded'\n\nexport interface SkeletonProps {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Number of lines to render for the text shape variant */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\nexport interface SkeletonAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createSkeleton(props: SkeletonProps = {}): SkeletonAPI {\n const { shape = 'text', animate = true } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n 'aria-hidden': true,\n role: 'presentation',\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-shape': shape,\n 'data-animate': String(animate),\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const skeletonVariants = cva({\n base: 'animate-pulse bg-muted',\n variants: {\n shape: {\n text: 'h-4 w-full rounded',\n circular: 'rounded-full',\n rectangular: 'rounded-none',\n rounded: 'rounded-md',\n },\n },\n defaultVariants: {\n shape: 'text',\n },\n})\n","import * as React from 'react'\nimport {\n createSkeleton,\n skeletonVariants,\n type SkeletonShape,\n} from '@refraction-ui/skeleton'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/**\n * Skeleton component -- renders a placeholder loading element.\n *\n * Uses the headless @refraction-ui/skeleton core for ARIA attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ shape, width, height, animate, className, style, ...props }, ref) => {\n const api = createSkeleton({ shape, animate })\n const classes = cn(skeletonVariants({ shape }), className)\n\n const mergedStyle: React.CSSProperties = {\n ...style,\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n }\n\n return React.createElement('div', {\n ref,\n className: classes,\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n ...api.ariaProps,\n ...api.dataAttributes,\n ...props,\n })\n },\n)\n\nSkeleton.displayName = 'Skeleton'\n\n// ---------------------------------------------------------------------------\n// SkeletonText\n// ---------------------------------------------------------------------------\n\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of text lines to render. Defaults to 3 */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/** Width percentages for each line to create a natural-looking text block */\nconst lineWidths = ['100%', '92%', '85%', '96%', '78%', '88%', '94%', '82%']\n\n/**\n * SkeletonText component -- renders N lines of text-shaped skeletons with\n * slight width variations for a natural loading appearance.\n */\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, animate, className, ...props }, ref) => {\n const children: React.ReactElement[] = []\n\n for (let i = 0; i < lines; i++) {\n const width = lineWidths[i % lineWidths.length]\n children.push(\n React.createElement(Skeleton, {\n key: i,\n shape: 'text',\n width,\n animate,\n }),\n )\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn('space-y-2', className),\n ...props,\n },\n ...children,\n )\n },\n)\n\nSkeletonText.displayName = 'SkeletonText'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface TabsProps {\n /** The active tab value (controlled) */\n value?: string\n /** The default active tab value (uncontrolled) */\n defaultValue?: string\n /** Callback when active tab changes */\n onValueChange?: (value: string) => void\n /** Orientation of the tab list */\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport interface TabsState {\n activeValue: string\n}\n\nexport interface TabsAPI {\n /** Current tabs state */\n state: TabsState\n /** ARIA attributes for the tab list */\n listProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for individual tab trigger props */\n getTabProps(value: string): Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for individual tab panel props */\n getPanelProps(value: string): Partial<AccessibilityProps> & Record<string, unknown>\n /** Select a tab by value */\n select(value: string): void\n /** Keyboard handlers for the tab list */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated ID prefix for aria linking */\n idPrefix: string\n}\n\nexport function createTabs(props: TabsProps = {}): TabsAPI {\n const {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'horizontal',\n } = props\n\n let uncontrolledValue = controlledValue ?? defaultValue\n const idPrefix = generateId('rfr-tabs')\n\n function getActiveValue(): string {\n if (controlledValue !== undefined) return controlledValue\n return uncontrolledValue\n }\n\n function select(value: string): void {\n uncontrolledValue = value\n onValueChange?.(value)\n }\n\n function getTabId(value: string): string {\n return `${idPrefix}-tab-${value}`\n }\n\n function getPanelId(value: string): string {\n return `${idPrefix}-panel-${value}`\n }\n\n function getTabProps(value: string): Partial<AccessibilityProps> & Record<string, unknown> {\n const isSelected = getActiveValue() === value\n return {\n role: 'tab',\n 'aria-selected': isSelected,\n 'aria-controls': getPanelId(value),\n tabIndex: isSelected ? 0 : -1,\n id: getTabId(value),\n 'data-state': isSelected ? 'active' : 'inactive',\n }\n }\n\n function getPanelProps(value: string): Partial<AccessibilityProps> & Record<string, unknown> {\n const isSelected = getActiveValue() === value\n return {\n role: 'tabpanel',\n 'aria-labelledby': getTabId(value),\n id: getPanelId(value),\n hidden: !isSelected || undefined,\n tabIndex: 0,\n 'data-state': isSelected ? 'active' : 'inactive',\n }\n }\n\n const listProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'tablist',\n 'aria-orientation': orientation,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = orientation === 'horizontal'\n ? {\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n : {\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n\n return {\n state: { activeValue: getActiveValue() },\n listProps,\n getTabProps,\n getPanelProps,\n select,\n keyboardHandlers,\n idPrefix,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tabsListVariants = cva({\n base: 'inline-flex max-w-full overflow-x-auto items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n})\n\nexport const tabsTriggerVariants = cva({\n base: 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n})\n","import * as React from 'react'\nimport {\n createTabs,\n tabsListVariants,\n tabsTriggerVariants,\n type TabsProps as CoreTabsProps,\n} from '@refraction-ui/tabs'\nimport { cn, createKeyboardHandler, Keys } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n orientation: 'horizontal' | 'vertical'\n idPrefix: string\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext(): TabsContextValue {\n const ctx = React.useContext(TabsContext)\n if (!ctx) {\n throw new Error('Tabs compound components must be used within <Tabs>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Tabs (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface TabsProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n className?: string\n children?: React.ReactNode\n}\n\nexport function Tabs({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n}: TabsProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const value = isControlled ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlled) {\n setUncontrolledValue(next)\n }\n onValueChange?.(next)\n },\n [isControlled, onValueChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createTabs> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createTabs({ value, orientation })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<TabsContextValue>(\n () => ({\n value,\n onValueChange: handleValueChange,\n orientation,\n idPrefix: api.idPrefix,\n }),\n [value, handleValueChange, orientation, api.idPrefix],\n )\n\n return React.createElement(\n 'div',\n { className, 'data-orientation': orientation },\n React.createElement(TabsContext.Provider, { value: ctx }, children),\n )\n}\n\nTabs.displayName = 'Tabs'\n\n// ---------------------------------------------------------------------------\n// TabsList\n// ---------------------------------------------------------------------------\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, ...props }, ref) => {\n const { orientation } = useTabsContext()\n\n return React.createElement('div', {\n ref,\n role: 'tablist',\n 'aria-orientation': orientation,\n className: cn(tabsListVariants(), className),\n ...props,\n })\n },\n)\n\nTabsList.displayName = 'TabsList'\n\n// ---------------------------------------------------------------------------\n// TabsTrigger\n// ---------------------------------------------------------------------------\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ value, className, onClick, onKeyDown, children, ...props }, ref) => {\n const { value: activeValue, onValueChange, orientation, idPrefix } = useTabsContext()\n\n const isSelected = activeValue === value\n const tabId = `${idPrefix}-tab-${value}`\n const panelId = `${idPrefix}-panel-${value}`\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onValueChange(value)\n onClick?.(e)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Navigation keys are handled at the list level by convention,\n // but we expose them here for convenience in SSR-only scenarios\n onKeyDown?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n role: 'tab',\n 'aria-selected': isSelected,\n 'aria-controls': panelId,\n tabIndex: isSelected ? 0 : -1,\n id: tabId,\n 'data-state': isSelected ? 'active' : 'inactive',\n className: cn(tabsTriggerVariants(), className),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n },\n children,\n )\n },\n)\n\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ---------------------------------------------------------------------------\n// TabsContent\n// ---------------------------------------------------------------------------\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, idPrefix } = useTabsContext()\n\n const isSelected = activeValue === value\n const tabId = `${idPrefix}-tab-${value}`\n const panelId = `${idPrefix}-panel-${value}`\n\n if (!isSelected) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'tabpanel',\n 'aria-labelledby': tabId,\n id: panelId,\n tabIndex: 0,\n 'data-state': 'active',\n className,\n ...props,\n },\n children,\n )\n },\n)\n\nTabsContent.displayName = 'TabsContent'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface TextareaProps {\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n 'aria-invalid'?: boolean\n rows?: number\n maxRows?: number\n}\n\nexport interface TextareaAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createTextarea(props: TextareaProps = {}): TextareaAPI {\n const {\n disabled = false,\n readOnly = false,\n required = false,\n 'aria-invalid': ariaInvalid,\n } = props\n\n const ariaProps: TextareaAPI['ariaProps'] = {}\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (ariaInvalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n if (ariaInvalid) {\n dataAttributes['data-invalid'] = ''\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const textareaVariants = cva({\n base: 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'min-h-[40px] text-xs',\n default: 'min-h-[60px]',\n lg: 'min-h-[80px] text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createTextarea,\n textareaVariants,\n} from '@refraction-ui/textarea'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n size?: 'sm' | 'default' | 'lg'\n maxRows?: number\n}\n\n/**\n * Textarea component — renders a styled textarea with size support.\n *\n * Uses the headless @refraction-ui/textarea core for state, ARIA, and data attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ size, className, disabled, readOnly, required, rows, maxRows, 'aria-invalid': ariaInvalid, ...props }, ref) => {\n const api = createTextarea({\n disabled,\n readOnly,\n required,\n rows,\n maxRows,\n 'aria-invalid': ariaInvalid === true ? true : undefined,\n })\n\n const classes = cn(textareaVariants({ size }), className)\n\n return (\n <textarea\n ref={ref}\n className={classes}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n rows={rows}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nTextarea.displayName = 'Textarea'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning'\n\n/** Icon name for each toast variant — non-color indicator for colorblind safety */\nconst TOAST_ICONS: Record<ToastVariant, string> = {\n default: 'info-circle',\n success: 'check-circle',\n error: 'x-circle',\n warning: 'alert-triangle',\n}\n\n/** Get the icon name for a toast variant (colorblind-safe: meaning not conveyed by color alone) */\nexport function getToastIcon(variant: ToastVariant): string {\n return TOAST_ICONS[variant]\n}\n\nexport interface ToastProps {\n /** Visual variant */\n variant?: ToastVariant\n /** Auto-dismiss duration in ms (default: 3000). Set to 0 to disable. */\n duration?: number\n /** Whether the toast is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface ToastState {\n open: boolean\n variant: ToastVariant\n}\n\nexport interface ToastAPI {\n /** Current toast state */\n state: ToastState\n /** ARIA attributes for the toast element */\n ariaProps: Partial<AccessibilityProps>\n /** Dismiss the toast */\n dismiss(): void\n /** Start the auto-dismiss timer */\n startTimer(): void\n /** Pause the auto-dismiss timer (e.g. on hover) */\n pauseTimer(): void\n /** Resume the auto-dismiss timer */\n resumeTimer(): void\n}\n\nexport function createToast(props: ToastProps = {}): ToastAPI {\n const {\n variant = 'default',\n duration = 3000,\n open: controlledOpen,\n onOpenChange,\n } = props\n\n let isOpen = controlledOpen ?? true\n let timerId: ReturnType<typeof setTimeout> | null = null\n let remaining = duration\n let startedAt = 0\n\n function dismiss(): void {\n clearTimer()\n isOpen = false\n onOpenChange?.(false)\n }\n\n function clearTimer(): void {\n if (timerId !== null) {\n clearTimeout(timerId)\n timerId = null\n }\n }\n\n function startTimer(): void {\n if (duration <= 0) return\n clearTimer()\n remaining = duration\n startedAt = Date.now()\n timerId = setTimeout(dismiss, remaining)\n }\n\n function pauseTimer(): void {\n if (timerId === null) return\n clearTimer()\n remaining = remaining - (Date.now() - startedAt)\n if (remaining < 0) remaining = 0\n }\n\n function resumeTimer(): void {\n if (duration <= 0 || remaining <= 0) return\n clearTimer()\n startedAt = Date.now()\n timerId = setTimeout(dismiss, remaining)\n }\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'alert',\n 'aria-live': 'assertive',\n 'aria-atomic': true,\n }\n\n return {\n state: {\n get open() {\n return controlledOpen !== undefined ? controlledOpen : isOpen\n },\n variant,\n },\n ariaProps,\n dismiss,\n startTimer,\n pauseTimer,\n resumeTimer,\n }\n}\n\n/** Entry in the toast manager */\nexport interface ToastEntry {\n id: string\n message: string\n variant: ToastVariant\n duration: number\n createdAt: number\n}\n\nexport interface ToastManagerAPI {\n /** Add a new toast. Returns the toast id. */\n toast(message: string, opts?: { variant?: ToastVariant; duration?: number }): string\n /** Dismiss a toast by id */\n dismiss(id: string): void\n /** Current toast list (read-only) */\n readonly toasts: ReadonlyArray<ToastEntry>\n /** Subscribe to toast list changes. Returns unsubscribe function. */\n subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void\n}\n\nexport function createToastManager(): ToastManagerAPI {\n let toasts: ToastEntry[] = []\n const listeners = new Set<(toasts: ReadonlyArray<ToastEntry>) => void>()\n const timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n function notify(): void {\n const snapshot = [...toasts]\n for (const fn of listeners) {\n fn(snapshot)\n }\n }\n\n function dismiss(id: string): void {\n const timer = timers.get(id)\n if (timer) {\n clearTimeout(timer)\n timers.delete(id)\n }\n toasts = toasts.filter((t) => t.id !== id)\n notify()\n }\n\n function toast(\n message: string,\n opts?: { variant?: ToastVariant; duration?: number },\n ): string {\n const id = generateId('rfr-toast')\n const variant = opts?.variant ?? 'default'\n const duration = opts?.duration ?? 3000\n\n const entry: ToastEntry = {\n id,\n message,\n variant,\n duration,\n createdAt: Date.now(),\n }\n\n toasts = [...toasts, entry]\n notify()\n\n if (duration > 0) {\n const timer = setTimeout(() => dismiss(id), duration)\n timers.set(id, timer)\n }\n\n return id\n }\n\n function subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n }\n\n return {\n toast,\n dismiss,\n get toasts() {\n return toasts\n },\n subscribe,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const toastVariants = cva({\n base: 'pointer-events-auto relative flex w-full items-center justify-between gap-2 overflow-hidden rounded-lg border p-4 shadow-lg transition-all',\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n success:\n 'border-l-4 border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100',\n error:\n 'border-l-4 border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100',\n warning:\n 'border-l-4 border-amber-500/50 bg-amber-50 text-amber-900 dark:bg-amber-950 dark:text-amber-100',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createToast,\n createToastManager,\n toastVariants,\n type ToastVariant,\n type ToastEntry,\n type ToastManagerAPI,\n} from '@refraction-ui/toast'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface ToastContextValue {\n manager: ToastManagerAPI\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null)\n\nfunction useToastContext(): ToastContextValue {\n const ctx = React.useContext(ToastContext)\n if (!ctx) {\n throw new Error('useToast must be used within a <ToastProvider>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// ToastProvider\n// ---------------------------------------------------------------------------\n\nexport interface ToastProviderProps {\n children?: React.ReactNode\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const managerRef = React.useRef<ToastManagerAPI | null>(null)\n if (managerRef.current === null) {\n managerRef.current = createToastManager()\n }\n\n const ctx = React.useMemo<ToastContextValue>(\n () => ({ manager: managerRef.current! }),\n [],\n )\n\n return React.createElement(ToastContext.Provider, { value: ctx }, children)\n}\n\nToastProvider.displayName = 'ToastProvider'\n\n// ---------------------------------------------------------------------------\n// useToast hook\n// ---------------------------------------------------------------------------\n\nexport interface UseToastReturn {\n /** Show a new toast */\n toast: (message: string, opts?: { variant?: ToastVariant; duration?: number }) => string\n /** Dismiss a toast by id */\n dismiss: (id: string) => void\n /** Current toast entries */\n toasts: ReadonlyArray<ToastEntry>\n}\n\nexport function useToast(): UseToastReturn {\n const { manager } = useToastContext()\n const [toasts, setToasts] = React.useState<ReadonlyArray<ToastEntry>>(manager.toasts)\n\n React.useEffect(() => {\n // Sync initial state\n setToasts(manager.toasts)\n const unsub = manager.subscribe(setToasts)\n return unsub\n }, [manager])\n\n return {\n toast: manager.toast,\n dismiss: manager.dismiss,\n toasts,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Toast (individual toast component)\n// ---------------------------------------------------------------------------\n\nexport interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {\n entry: ToastEntry\n onDismiss?: (id: string) => void\n}\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n ({ entry, onDismiss, className, children, onMouseEnter, onMouseLeave, ...props }, ref) => {\n const api = React.useMemo(\n () => createToast({ variant: entry.variant, duration: entry.duration }),\n [entry.variant, entry.duration],\n )\n\n // Start auto-dismiss timer on mount\n React.useEffect(() => {\n api.startTimer()\n return () => api.pauseTimer()\n }, [api])\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n api.pauseTimer()\n onMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n api.resumeTimer()\n onMouseLeave?.(e)\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(toastVariants({ variant: entry.variant }), className),\n ...api.ariaProps,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...props,\n },\n React.createElement('div', { className: 'flex-1' }, entry.message),\n children,\n onDismiss &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'shrink-0',\n onClick: () => onDismiss(entry.id),\n 'aria-label': 'Dismiss',\n },\n '\\u00d7',\n ),\n )\n },\n)\n\nToast.displayName = 'Toast'\n\n// ---------------------------------------------------------------------------\n// Toaster (container that renders all active toasts)\n// ---------------------------------------------------------------------------\n\nexport interface ToasterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Toaster = React.forwardRef<HTMLDivElement, ToasterProps>(\n ({ className, ...props }, ref) => {\n const { toasts, dismiss } = useToast()\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(\n 'fixed bottom-4 right-4 z-50 flex flex-col gap-2 w-full max-w-sm pointer-events-none',\n className,\n ),\n ...props,\n },\n toasts.map((entry) =>\n React.createElement(Toast, {\n key: entry.id,\n entry,\n onDismiss: dismiss,\n }),\n ),\n )\n },\n)\n\nToaster.displayName = 'Toaster'\n","import type { AccessibilityProps, Side } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface TooltipProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n delayDuration?: number\n}\n\nexport interface TooltipAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: Partial<AccessibilityProps> & {\n 'aria-describedby': string\n }\n /** Props to spread on the content element */\n contentProps: {\n role: 'tooltip'\n id: string\n }\n /** Resolved placement */\n placement: Side\n /** Open the tooltip */\n open: () => void\n /** Close the tooltip (and clear any pending delay) */\n close: () => void\n /** Open with delay */\n openWithDelay: () => void\n /** The configured delay duration */\n delayDuration: number\n /** Cancel any pending delay timer */\n cancelDelay: () => void\n}\n\nexport function createTooltip(props: TooltipProps = {}): TooltipAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'top',\n delayDuration = 300,\n } = props\n\n const contentId = generateId('rfr-tooltip')\n\n let isOpen = controlledOpen ?? defaultOpen\n let delayTimer: ReturnType<typeof setTimeout> | null = null\n\n const state = { open: isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.open = value\n onOpenChange?.(value)\n }\n\n function cancelDelay() {\n if (delayTimer !== null) {\n clearTimeout(delayTimer)\n delayTimer = null\n }\n }\n\n function open() {\n cancelDelay()\n setOpen(true)\n }\n\n function close() {\n cancelDelay()\n setOpen(false)\n }\n\n function openWithDelay() {\n cancelDelay()\n if (delayDuration <= 0) {\n setOpen(true)\n return\n }\n delayTimer = setTimeout(() => {\n setOpen(true)\n delayTimer = null\n }, delayDuration)\n }\n\n const triggerProps = {\n 'aria-describedby': contentId,\n }\n\n const contentProps = {\n role: 'tooltip' as const,\n id: contentId,\n }\n\n return {\n state,\n triggerProps,\n contentProps,\n placement,\n open,\n close,\n openWithDelay,\n delayDuration,\n cancelDelay,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tooltipContentVariants = cva({\n base: 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground shadow-md',\n variants: {\n side: {\n top: 'animate-slide-down-fade',\n right: 'animate-slide-left-fade',\n bottom: 'animate-slide-up-fade',\n left: 'animate-slide-right-fade',\n },\n },\n defaultVariants: {\n side: 'top',\n },\n})\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport {\n createTooltip,\n tooltipContentVariants,\n type TooltipAPI,\n} from '@refraction-ui/tooltip'\nimport type { Side } from '@refraction-ui/shared'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface TooltipContextValue {\n api: TooltipAPI\n open: boolean\n setOpen: (value: boolean) => void\n openWithDelay: () => void\n cancelDelay: () => void\n}\n\nconst TooltipContext = React.createContext<TooltipContextValue | null>(null)\n\nfunction useTooltipContext(): TooltipContextValue {\n const ctx = React.useContext(TooltipContext)\n if (!ctx) {\n throw new Error('Tooltip compound components must be used within <Tooltip>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* Tooltip (root provider) */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n delayDuration?: number\n children: React.ReactNode\n}\n\nexport function Tooltip({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement,\n delayDuration = 300,\n children,\n}: TooltipProps) {\n const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleOpenChange = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = React.useMemo(\n () => createTooltip({ open: isOpen, onOpenChange: handleOpenChange, placement, delayDuration }),\n [isOpen, handleOpenChange, placement, delayDuration],\n )\n\n const cancelDelay = React.useCallback(() => {\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }, [])\n\n const openWithDelay = React.useCallback(() => {\n cancelDelay()\n if (delayDuration <= 0) {\n handleOpenChange(true)\n return\n }\n timerRef.current = setTimeout(() => {\n handleOpenChange(true)\n timerRef.current = null\n }, delayDuration)\n }, [cancelDelay, delayDuration, handleOpenChange])\n\n // Clean up timer on unmount\n React.useEffect(() => {\n return () => {\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current)\n }\n }\n }, [])\n\n const ctx = React.useMemo<TooltipContextValue>(\n () => ({ api, open: isOpen, setOpen: handleOpenChange, openWithDelay, cancelDelay }),\n [api, isOpen, handleOpenChange, openWithDelay, cancelDelay],\n )\n\n return React.createElement(TooltipContext.Provider, { value: ctx }, children)\n}\n\nTooltip.displayName = 'Tooltip'\n\n/* ------------------------------------------------------------------ */\n/* TooltipTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const TooltipTrigger = React.forwardRef<HTMLSpanElement, TooltipTriggerProps>(\n ({ onMouseEnter, onMouseLeave, onFocus, onBlur, children, ...props }, ref) => {\n const { api, setOpen, openWithDelay, cancelDelay } = useTooltipContext()\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLSpanElement>) => {\n openWithDelay()\n onMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLSpanElement>) => {\n cancelDelay()\n setOpen(false)\n onMouseLeave?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLSpanElement>) => {\n openWithDelay()\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLSpanElement>) => {\n cancelDelay()\n setOpen(false)\n onBlur?.(e)\n }\n\n return (\n <span\n ref={ref}\n aria-describedby={api.triggerProps['aria-describedby']}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nTooltipTrigger.displayName = 'TooltipTrigger'\n\n/* ------------------------------------------------------------------ */\n/* TooltipContent */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: Side\n}\n\nexport const TooltipContent = React.forwardRef<HTMLDivElement, TooltipContentProps>(\n ({ side, className, children, ...props }, ref) => {\n const { api, open } = useTooltipContext()\n\n if (!open) return null\n\n const content = (\n <div\n ref={ref}\n role={api.contentProps.role}\n id={api.contentProps.id}\n className={cn(tooltipContentVariants({ side: side ?? api.placement }), className)}\n {...props}\n >\n {children}\n </div>\n )\n\n if (typeof document !== 'undefined') {\n return createPortal(content, document.body)\n }\n\n return content\n },\n)\n\nTooltipContent.displayName = 'TooltipContent'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface VideoPlayerProps {\n src?: string\n poster?: string\n autoplay?: boolean\n muted?: boolean\n controls?: boolean\n}\n\nexport type VideoState = 'idle' | 'loading' | 'playing' | 'paused' | 'ended'\n\nexport interface VideoPlayerAPI {\n /** Current player state */\n state: VideoState\n /** Transition to playing state */\n play: () => void\n /** Transition to paused state */\n pause: () => void\n /** Toggle between playing and paused */\n togglePlay: () => void\n /** Toggle mute state */\n toggleMute: () => boolean\n /** ARIA props for the player region */\n ariaProps: Partial<AccessibilityProps>\n /** ARIA props for control buttons */\n controlAriaProps: {\n playPause: Partial<AccessibilityProps>\n mute: Partial<AccessibilityProps>\n }\n /** Data attributes reflecting current state */\n dataAttributes: Record<string, string>\n}\n\nexport function createVideoPlayer(props: VideoPlayerProps = {}): VideoPlayerAPI {\n const { muted: initialMuted = false } = props\n\n let state: VideoState = 'idle'\n let isMuted = initialMuted\n\n function play() {\n if (state === 'ended') {\n state = 'playing'\n } else if (state !== 'playing') {\n state = 'playing'\n }\n }\n\n function pause() {\n if (state === 'playing') {\n state = 'paused'\n }\n }\n\n function togglePlay() {\n if (state === 'playing') {\n pause()\n } else {\n play()\n }\n }\n\n function toggleMute(): boolean {\n isMuted = !isMuted\n return isMuted\n }\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'region',\n 'aria-label': 'Video player',\n }\n\n const api: VideoPlayerAPI = {\n get state() {\n return state\n },\n play,\n pause,\n togglePlay,\n toggleMute,\n ariaProps,\n get controlAriaProps() {\n return {\n playPause: {\n 'aria-label': state === 'playing' ? 'Pause' : 'Play',\n },\n mute: {\n 'aria-label': isMuted ? 'Unmute' : 'Mute',\n },\n }\n },\n get dataAttributes() {\n return {\n 'data-state': state,\n }\n },\n }\n\n return api\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const playerVariants = cva({\n base: 'relative overflow-hidden rounded-lg bg-black',\n variants: {\n size: {\n sm: 'max-w-sm',\n md: 'max-w-2xl',\n lg: 'max-w-4xl',\n full: 'w-full',\n },\n },\n defaultVariants: {\n size: 'full',\n },\n})\n\nexport const controlsVariants = cva({\n base: 'absolute bottom-0 left-0 right-0 flex items-center gap-2 bg-gradient-to-t from-black/80 to-transparent p-4 transition-opacity',\n variants: {\n visibility: {\n visible: 'opacity-100',\n hidden: 'opacity-0 pointer-events-none',\n },\n },\n defaultVariants: {\n visibility: 'visible',\n },\n})\n\nexport const overlayVariants = cva({\n base: 'absolute inset-0 flex items-center justify-center bg-black/40 transition-opacity',\n variants: {\n visibility: {\n visible: 'opacity-100',\n hidden: 'opacity-0 pointer-events-none',\n },\n },\n defaultVariants: {\n visibility: 'visible',\n },\n})\n","import * as React from 'react'\nimport {\n createVideoPlayer,\n playerVariants,\n controlsVariants,\n overlayVariants,\n type VideoPlayerProps as CoreVideoPlayerProps,\n} from '@refraction-ui/video-player'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface VideoPlayerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'src'>,\n CoreVideoPlayerProps {}\n\nexport const VideoPlayer = React.forwardRef<HTMLDivElement, VideoPlayerProps>(\n (\n {\n src,\n poster,\n autoplay = false,\n muted: initialMuted = false,\n controls = true,\n className,\n ...props\n },\n ref,\n ) => {\n const [, setTick] = React.useState(0)\n const rerender = React.useCallback(() => setTick((t) => t + 1), [])\n\n const apiRef = React.useRef(\n createVideoPlayer({ src, poster, autoplay, muted: initialMuted, controls }),\n )\n const api = apiRef.current\n\n // No src — show placeholder\n if (!src) {\n return (\n <div\n ref={ref}\n className={cn(playerVariants(), 'flex items-center justify-center aspect-video', className)}\n {...api.ariaProps}\n {...props}\n >\n <div className=\"text-center text-muted-foreground\">\n <p className=\"text-lg font-medium\">Coming soon</p>\n </div>\n </div>\n )\n }\n\n const handlePlay = () => {\n api.play()\n rerender()\n }\n\n const handlePause = () => {\n api.pause()\n rerender()\n }\n\n const handleTogglePlay = () => {\n api.togglePlay()\n rerender()\n }\n\n const handleToggleMute = () => {\n api.toggleMute()\n rerender()\n }\n\n const isPlaying = api.state === 'playing'\n\n return (\n <div\n ref={ref}\n className={cn(playerVariants(), 'aspect-video', className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n <video\n className=\"h-full w-full\"\n src={src}\n poster={poster}\n autoPlay={autoplay}\n muted={initialMuted}\n onPlay={handlePlay}\n onPause={handlePause}\n />\n\n {/* Center play/pause overlay */}\n {controls && (\n <div className={overlayVariants({ visibility: isPlaying ? 'hidden' : 'visible' })}>\n <button\n type=\"button\"\n className=\"rounded-full bg-white/90 p-4 text-black shadow-lg\"\n onClick={handleTogglePlay}\n {...api.controlAriaProps.playPause}\n >\n {isPlaying ? 'Pause' : 'Play'}\n </button>\n </div>\n )}\n\n {/* Bottom controls bar */}\n {controls && (\n <div className={controlsVariants()}>\n <button\n type=\"button\"\n className=\"rounded bg-white/20 px-3 py-1 text-sm text-white\"\n onClick={handleToggleMute}\n {...api.controlAriaProps.mute}\n >\n {api.controlAriaProps.mute['aria-label']}\n </button>\n </div>\n )}\n </div>\n )\n },\n)\n\nVideoPlayer.displayName = 'VideoPlayer'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface StatCardData {\n label: string\n value: number\n icon?: string\n color?: string\n}\n\nexport interface BadgeData {\n name: string\n description: string\n icon: string\n unlockedAt?: string\n isUnlocked: boolean\n}\n\nexport interface ProgressDisplayProps {\n stats: StatCardData[]\n badges: BadgeData[]\n level?: number\n accuracy?: number\n}\n\nexport interface ProgressDisplayAPI {\n /** The computed stats array */\n stats: StatCardData[]\n /** The badges array */\n badges: BadgeData[]\n /** ARIA props for the stats region */\n ariaProps: Partial<AccessibilityProps>\n /** Get ARIA props for a specific badge */\n getBadgeAriaProps: (badge: BadgeData) => Partial<AccessibilityProps>\n}\n\nexport function createProgressDisplay(props: ProgressDisplayProps): ProgressDisplayAPI {\n const { stats, badges } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'region',\n 'aria-label': 'Progress statistics',\n }\n\n function getBadgeAriaProps(badge: BadgeData): Partial<AccessibilityProps> {\n const label = badge.isUnlocked\n ? `${badge.name}: ${badge.description}`\n : `${badge.name}: ${badge.description} (locked)`\n\n return {\n 'aria-label': label,\n }\n }\n\n return {\n stats,\n badges,\n ariaProps,\n getBadgeAriaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const statsGridVariants = cva({\n base: 'grid gap-4',\n variants: {\n columns: {\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n },\n },\n defaultVariants: {\n columns: '3',\n },\n})\n\nexport const statCardVariants = cva({\n base: 'rounded-lg border p-4 text-center shadow-sm',\n variants: {\n color: {\n default: 'bg-card text-card-foreground',\n primary: 'bg-primary/10 text-primary border-primary/20',\n success: 'bg-green-500/10 text-green-700 border-green-500/20',\n warning: 'bg-yellow-500/10 text-yellow-700 border-yellow-500/20',\n destructive: 'bg-destructive/10 text-destructive border-destructive/20',\n },\n },\n defaultVariants: {\n color: 'default',\n },\n})\n\nexport const badgeGridVariants = cva({\n base: 'grid gap-4',\n variants: {\n columns: {\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n '5': 'grid-cols-5',\n },\n },\n defaultVariants: {\n columns: '4',\n },\n})\n\nexport const badgeItemVariants = cva({\n base: 'flex flex-col items-center gap-2 rounded-lg border p-4 text-center transition-opacity',\n variants: {\n state: {\n unlocked: 'opacity-100 bg-card',\n locked: 'opacity-50 bg-muted grayscale',\n },\n },\n defaultVariants: {\n state: 'locked',\n },\n})\n\nexport const progressBarVariants = cva({\n base: 'h-2 w-full overflow-hidden rounded-full bg-secondary',\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createProgressDisplay,\n statsGridVariants,\n statCardVariants,\n badgeGridVariants,\n badgeItemVariants,\n progressBarVariants,\n type StatCardData,\n type BadgeData,\n} from '@refraction-ui/progress-display'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* StatsGrid */\n/* ------------------------------------------------------------------ */\n\nexport interface StatsGridProps extends React.HTMLAttributes<HTMLDivElement> {\n stats: StatCardData[]\n badges?: BadgeData[]\n}\n\nexport const StatsGrid = React.forwardRef<HTMLDivElement, StatsGridProps>(\n ({ stats, badges = [], className, ...props }, ref) => {\n const api = createProgressDisplay({ stats, badges })\n\n return (\n <div\n ref={ref}\n className={cn(statsGridVariants(), className)}\n {...api.ariaProps}\n {...props}\n >\n {api.stats.map((stat) => (\n <div\n key={stat.label}\n className={statCardVariants({\n color: (stat.color as 'default' | 'primary' | 'success' | 'warning' | 'destructive') ?? 'default',\n })}\n >\n {stat.icon && <span className=\"text-2xl\">{stat.icon}</span>}\n <div className=\"text-2xl font-bold\">{stat.value}</div>\n <div className=\"text-sm text-muted-foreground\">{stat.label}</div>\n </div>\n ))}\n </div>\n )\n },\n)\n\nStatsGrid.displayName = 'StatsGrid'\n\n/* ------------------------------------------------------------------ */\n/* ProgressBar */\n/* ------------------------------------------------------------------ */\n\nexport interface ProgressBarProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n size?: 'sm' | 'md' | 'lg'\n}\n\nexport const ProgressBar = React.forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ value, max = 100, size, className, ...props }, ref) => {\n const percent = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n ref={ref}\n className={cn(progressBarVariants({ size }), className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-primary transition-all\"\n style={{ width: `${percent}%` }}\n />\n </div>\n )\n },\n)\n\nProgressBar.displayName = 'ProgressBar'\n\n/* ------------------------------------------------------------------ */\n/* BadgeDisplay */\n/* ------------------------------------------------------------------ */\n\nexport interface BadgeDisplayProps extends React.HTMLAttributes<HTMLDivElement> {\n badges: BadgeData[]\n}\n\nexport const BadgeDisplay = React.forwardRef<HTMLDivElement, BadgeDisplayProps>(\n ({ badges, className, ...props }, ref) => {\n const api = createProgressDisplay({ stats: [], badges })\n\n return (\n <div\n ref={ref}\n className={cn(badgeGridVariants(), className)}\n {...props}\n >\n {api.badges.map((badge) => (\n <div\n key={badge.name}\n className={badgeItemVariants({\n state: badge.isUnlocked ? 'unlocked' : 'locked',\n })}\n {...api.getBadgeAriaProps(badge)}\n >\n <span className=\"text-3xl\">{badge.icon}</span>\n <span className=\"font-medium\">{badge.name}</span>\n {!badge.isUnlocked && (\n <span className=\"text-xs text-muted-foreground\">Locked</span>\n )}\n </div>\n ))}\n </div>\n )\n },\n)\n\nBadgeDisplay.displayName = 'BadgeDisplay'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type SlideType = 'lesson' | 'quiz' | 'exercise' | 'intro' | 'summary'\n\nexport type BookmarkType = 'important' | 'difficult' | 'to-revise'\n\nexport interface SlideData {\n id: string\n type: SlideType\n content: string\n}\n\nexport interface SlideViewerProps {\n slides: SlideData[]\n initialSlide?: number\n onSlideChange?: (index: number) => void\n onComplete?: () => void\n}\n\nexport interface SlideViewerState {\n currentSlide: number\n totalSlides: number\n bookmarks: Map<number, BookmarkType>\n}\n\nexport interface SlideViewerAPI {\n /** Current viewer state */\n state: SlideViewerState\n /** Navigate to the next slide */\n next: () => void\n /** Navigate to the previous slide */\n prev: () => void\n /** Navigate to a specific slide index */\n goTo: (index: number) => void\n /** Toggle a bookmark on the current slide */\n toggleBookmark: (type: BookmarkType) => void\n /** Get all bookmarks as an array of entries */\n getBookmarks: () => Array<{ slide: number; type: BookmarkType }>\n /** Current progress as a number between 0 and 1 */\n progress: number\n /** Keyboard handlers for slide navigation */\n keyboardHandlers: KeyboardHandlerMap\n /** ARIA props for the current slide */\n getSlideAriaProps: () => Partial<AccessibilityProps> & { 'aria-roledescription'?: string }\n}\n\n/**\n * Create a headless slide viewer.\n *\n * Manages slide navigation state, bookmarks, progress tracking,\n * and keyboard navigation. Framework wrappers handle rendering.\n */\nexport function createSlideViewer(props: SlideViewerProps): SlideViewerAPI {\n const { slides, initialSlide = 0, onSlideChange, onComplete } = props\n\n const totalSlides = slides.length\n const bookmarks = new Map<number, BookmarkType>()\n\n const state: SlideViewerState = {\n currentSlide: Math.max(0, Math.min(initialSlide, totalSlides - 1)),\n totalSlides,\n bookmarks,\n }\n\n function updateProgress(): number {\n if (totalSlides <= 1) return 1\n return state.currentSlide / (totalSlides - 1)\n }\n\n function next() {\n if (state.currentSlide < totalSlides - 1) {\n state.currentSlide++\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n } else {\n // Already on the last slide — trigger complete\n onComplete?.()\n }\n }\n\n function prev() {\n if (state.currentSlide > 0) {\n state.currentSlide--\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n }\n }\n\n function goTo(index: number) {\n if (index >= 0 && index < totalSlides) {\n state.currentSlide = index\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n }\n }\n\n function toggleBookmark(type: BookmarkType) {\n const current = state.currentSlide\n if (bookmarks.has(current) && bookmarks.get(current) === type) {\n bookmarks.delete(current)\n } else {\n bookmarks.set(current, type)\n }\n }\n\n function getBookmarks(): Array<{ slide: number; type: BookmarkType }> {\n const result: Array<{ slide: number; type: BookmarkType }> = []\n for (const [slide, type] of bookmarks.entries()) {\n result.push({ slide, type })\n }\n return result.sort((a, b) => a.slide - b.slide)\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n next()\n },\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n prev()\n },\n [Keys.Escape]: (e) => {\n e.preventDefault()\n },\n }\n\n function getSlideAriaProps(): Partial<AccessibilityProps> & { 'aria-roledescription'?: string } {\n const slide = slides[state.currentSlide]\n return {\n role: 'region',\n 'aria-roledescription': 'slide',\n 'aria-label': `Slide ${state.currentSlide + 1} of ${totalSlides}: ${slide?.type ?? 'unknown'} slide`,\n 'aria-live': 'polite',\n }\n }\n\n const api: SlideViewerAPI = {\n state,\n next,\n prev,\n goTo,\n toggleBookmark,\n getBookmarks,\n progress: updateProgress(),\n keyboardHandlers,\n getSlideAriaProps,\n }\n\n return api\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const slideViewerTokens: TokenContract = {\n name: 'slide-viewer',\n tokens: {\n bg: { variable: '--rfr-slide-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-slide-fg', fallback: 'hsl(var(--foreground))' },\n progressBg: { variable: '--rfr-slide-progress-bg', fallback: 'hsl(var(--primary))' },\n progressTrack: { variable: '--rfr-slide-progress-track', fallback: 'hsl(var(--muted))' },\n badgeBg: { variable: '--rfr-slide-badge-bg', fallback: 'hsl(var(--secondary))' },\n },\n}\n\nexport const slideViewerVariants = cva({\n base: 'flex flex-col h-full w-full relative overflow-hidden',\n variants: {\n size: {\n compact: 'max-w-2xl',\n default: 'max-w-4xl',\n full: 'max-w-none',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const progressBarVariants = cva({\n base: 'h-1 w-full bg-muted rounded-full overflow-hidden',\n variants: {\n position: {\n top: 'rounded-none',\n bottom: 'rounded-none',\n inline: 'rounded-full',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n})\n\nexport const slideTypeBadgeVariants = cva({\n base: 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',\n variants: {\n type: {\n lesson: 'bg-blue-100 text-blue-800',\n quiz: 'bg-purple-100 text-purple-800',\n exercise: 'bg-green-100 text-green-800',\n intro: 'bg-gray-100 text-gray-800',\n summary: 'bg-orange-100 text-orange-800',\n },\n },\n defaultVariants: {\n type: 'lesson',\n },\n})\n","import * as React from 'react'\nimport {\n createSlideViewer,\n slideViewerVariants,\n progressBarVariants,\n slideTypeBadgeVariants,\n type SlideData,\n type BookmarkType,\n type SlideType,\n} from '@refraction-ui/slide-viewer'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport type { SlideData, BookmarkType, SlideType }\n\nexport interface SlideViewerProps {\n slides: SlideData[]\n initialSlide?: number\n onSlideChange?: (index: number) => void\n onComplete?: () => void\n className?: string\n size?: 'compact' | 'default' | 'full'\n /** Render function for custom slide content */\n renderSlide?: (slide: SlideData, index: number) => React.ReactNode\n}\n\n/**\n * SlideViewer component — slide-based content viewer with navigation,\n * progress bar, type badges, and bookmark support.\n *\n * Uses the headless @refraction-ui/slide-viewer core for state and navigation.\n */\nexport const SlideViewer = React.forwardRef<HTMLDivElement, SlideViewerProps>(\n (\n {\n slides,\n initialSlide,\n onSlideChange,\n onComplete,\n className,\n size,\n renderSlide,\n },\n ref,\n ) => {\n const [, setTick] = React.useState(0)\n const rerender = () => setTick((t) => t + 1)\n\n const apiRef = React.useRef(\n createSlideViewer({ slides, initialSlide, onSlideChange, onComplete }),\n )\n const api = apiRef.current\n\n const containerClasses = cn(slideViewerVariants({ size }), className)\n const currentSlide = slides[api.state.currentSlide]\n const slideAriaProps = api.getSlideAriaProps()\n const handleKeyDown = createKeyboardHandler(api.keyboardHandlers)\n\n function handlePrev() {\n api.prev()\n rerender()\n }\n\n function handleNext() {\n api.next()\n rerender()\n }\n\n function handleBookmark(type: BookmarkType) {\n api.toggleBookmark(type)\n rerender()\n }\n\n const isBookmarked = api.state.bookmarks.has(api.state.currentSlide)\n\n return (\n <div\n ref={ref}\n className={containerClasses}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler}\n tabIndex={0}\n >\n {/* Progress bar */}\n <div className={progressBarVariants({ position: 'top' })}>\n <div\n className=\"h-full bg-primary transition-all duration-300\"\n style={{ width: `${api.progress * 100}%` }}\n />\n </div>\n\n {/* Header with type badge and bookmark */}\n <div className=\"flex items-center justify-between px-4 py-2 border-b\">\n <div className=\"flex items-center gap-2\">\n {currentSlide && (\n <span className={slideTypeBadgeVariants({ type: currentSlide.type })}>\n {currentSlide.type}\n </span>\n )}\n <span className=\"text-sm text-muted-foreground\">\n {api.state.currentSlide + 1} / {api.state.totalSlides}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={() => handleBookmark('important')}\n className={cn(\n 'px-2 py-1 rounded text-xs transition-colors',\n isBookmarked\n ? 'bg-yellow-100 text-yellow-800'\n : 'hover:bg-muted text-muted-foreground',\n )}\n aria-pressed={isBookmarked}\n aria-label=\"Toggle bookmark\"\n >\n {isBookmarked ? 'Bookmarked' : 'Bookmark'}\n </button>\n </div>\n\n {/* Slide content */}\n <div className=\"flex-1 overflow-auto p-6\" {...slideAriaProps}>\n {currentSlide &&\n (renderSlide\n ? renderSlide(currentSlide, api.state.currentSlide)\n : <div dangerouslySetInnerHTML={{ __html: currentSlide.content }} />)}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex items-center justify-between px-4 py-3 border-t\">\n <button\n type=\"button\"\n onClick={handlePrev}\n disabled={api.state.currentSlide === 0}\n className=\"px-4 py-2 rounded text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed hover:bg-muted transition-colors\"\n aria-label=\"Previous slide\"\n >\n Previous\n </button>\n <button\n type=\"button\"\n onClick={handleNext}\n className=\"px-4 py-2 rounded text-sm font-medium bg-primary text-primary-foreground hover:bg-primary/90 transition-colors\"\n aria-label={\n api.state.currentSlide === api.state.totalSlides - 1\n ? 'Complete'\n : 'Next slide'\n }\n >\n {api.state.currentSlide === api.state.totalSlides - 1 ? 'Complete' : 'Next'}\n </button>\n </div>\n </div>\n )\n },\n)\n\nSlideViewer.displayName = 'SlideViewer'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface LanguageOption {\n value: string\n label: string\n group?: string\n}\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n}\n\nexport interface LanguageSelectorAPI {\n /** Current state */\n state: { selectedValues: string[]; isOpen: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'listbox'\n role: 'combobox'\n }\n /** Props to spread on the content/dropdown element */\n contentProps: {\n role: 'listbox'\n id: string\n 'aria-multiselectable'?: boolean\n }\n /** Get props for an individual option */\n getOptionProps: (value: string) => {\n role: 'option'\n 'aria-selected': boolean\n 'data-value': string\n }\n /** Toggle an option's selection */\n toggle: (value: string) => void\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createLanguageSelector(props: LanguageSelectorProps): LanguageSelectorAPI {\n const {\n value: initialValue,\n onValueChange,\n options: _options,\n multiple = false,\n } = props\n\n const contentId = generateId('rfr-lang-sel')\n\n let selectedValues: string[] = Array.isArray(initialValue)\n ? [...initialValue]\n : initialValue\n ? [initialValue]\n : []\n let isOpen = false\n\n const state = { selectedValues: [...selectedValues], isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.isOpen = value\n }\n\n function toggle(value: string) {\n if (multiple) {\n const index = selectedValues.indexOf(value)\n if (index >= 0) {\n selectedValues.splice(index, 1)\n } else {\n selectedValues.push(value)\n }\n state.selectedValues = [...selectedValues]\n onValueChange?.([...selectedValues])\n } else {\n selectedValues = [value]\n state.selectedValues = [value]\n onValueChange?.(value)\n setOpen(false)\n }\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox' as const,\n }\n\n const contentProps: LanguageSelectorAPI['contentProps'] = {\n role: 'listbox' as const,\n id: contentId,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n }\n\n function getOptionProps(value: string) {\n return {\n role: 'option' as const,\n 'aria-selected': selectedValues.includes(value),\n 'data-value': value,\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n [Keys.Enter]: () => {\n setOpen(!isOpen)\n },\n [Keys.Space]: () => {\n setOpen(!isOpen)\n },\n [Keys.ArrowDown]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n [Keys.ArrowUp]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n getOptionProps,\n toggle,\n open: () => setOpen(true),\n close: () => setOpen(false),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const selectorVariants = cva({\n base: 'relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2 min-w-[120px]',\n md: 'h-10 text-base px-3 min-w-[160px]',\n lg: 'h-12 text-lg px-4 min-w-[200px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const optionVariants = cva({\n base: 'flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent',\n variants: {\n selected: {\n true: 'bg-accent/50 font-medium',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createLanguageSelector,\n selectorVariants,\n optionVariants,\n type LanguageSelectorAPI,\n type LanguageOption,\n} from '@refraction-ui/language-selector'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface LanguageSelectorContextValue {\n api: LanguageSelectorAPI\n isOpen: boolean\n setOpen: (value: boolean) => void\n toggle: (value: string) => void\n options: LanguageOption[]\n multiple: boolean\n}\n\nconst LanguageSelectorContext = React.createContext<LanguageSelectorContextValue | null>(null)\n\nfunction useLanguageSelectorContext(): LanguageSelectorContextValue {\n const ctx = React.useContext(LanguageSelectorContext)\n if (!ctx) {\n throw new Error('LanguageSelector compound components must be used within <LanguageSelector>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* LanguageSelector (root component) */\n/* ------------------------------------------------------------------ */\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n placeholder?: string\n className?: string\n}\n\nexport function LanguageSelector({\n value: controlledValue,\n onValueChange,\n options,\n multiple = false,\n placeholder = 'Select language...',\n className,\n}: LanguageSelectorProps) {\n const initialValues = Array.isArray(controlledValue)\n ? controlledValue\n : controlledValue\n ? [controlledValue]\n : []\n\n const [selectedValues, setSelectedValues] = React.useState<string[]>(initialValues)\n const [isOpen, setIsOpen] = React.useState(false)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleValueChange = React.useCallback(\n (val: string | string[]) => {\n const arr = Array.isArray(val) ? val : [val]\n setSelectedValues(arr)\n onValueChange?.(val)\n },\n [onValueChange],\n )\n\n const api = React.useMemo(\n () =>\n createLanguageSelector({\n value: multiple ? selectedValues : selectedValues[0],\n onValueChange: handleValueChange,\n options,\n multiple,\n }),\n [selectedValues, handleValueChange, options, multiple],\n )\n\n const handleToggle = React.useCallback(\n (val: string) => {\n if (multiple) {\n const index = selectedValues.indexOf(val)\n const next = index >= 0\n ? selectedValues.filter((v) => v !== val)\n : [...selectedValues, val]\n setSelectedValues(next)\n onValueChange?.(next)\n } else {\n setSelectedValues([val])\n onValueChange?.(val)\n setIsOpen(false)\n }\n },\n [multiple, selectedValues, onValueChange],\n )\n\n const handleTriggerClick = React.useCallback(() => {\n setIsOpen((prev) => !prev)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (!isOpen) {\n setIsOpen(true)\n }\n }\n },\n [isOpen],\n )\n\n // Click outside to close\n React.useEffect(() => {\n if (!isOpen) return\n function handleClickOutside(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen])\n\n const ctx = React.useMemo<LanguageSelectorContextValue>(\n () => ({\n api,\n isOpen,\n setOpen: setIsOpen,\n toggle: handleToggle,\n options,\n multiple,\n }),\n [api, isOpen, handleToggle, options, multiple],\n )\n\n // Group options\n const grouped = React.useMemo(() => {\n const groups = new Map<string, LanguageOption[]>()\n const ungrouped: LanguageOption[] = []\n for (const opt of options) {\n if (opt.group) {\n const list = groups.get(opt.group) ?? []\n list.push(opt)\n groups.set(opt.group, list)\n } else {\n ungrouped.push(opt)\n }\n }\n return { groups, ungrouped }\n }, [options])\n\n const displayLabel = selectedValues.length > 0\n ? options\n .filter((o) => selectedValues.includes(o.value))\n .map((o) => o.label)\n .join(', ')\n : placeholder\n\n return React.createElement(\n LanguageSelectorContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ref: containerRef, className: cn('rfr-language-selector relative inline-block', className) },\n // Trigger\n React.createElement(\n 'button',\n {\n type: 'button',\n role: api.triggerProps.role,\n 'aria-expanded': isOpen,\n 'aria-controls': api.triggerProps['aria-controls'],\n 'aria-haspopup': api.triggerProps['aria-haspopup'],\n className: selectorVariants(),\n onClick: handleTriggerClick,\n onKeyDown: handleKeyDown,\n },\n React.createElement('span', null, displayLabel),\n React.createElement('span', { 'aria-hidden': 'true', className: 'ml-2' }, '\\u25BE'),\n ),\n // Dropdown\n isOpen &&\n React.createElement(\n 'ul',\n {\n role: api.contentProps.role,\n id: api.contentProps.id,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n className:\n 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60',\n },\n // Render grouped options\n ...[...grouped.groups.entries()].map(([group, opts]) =>\n React.createElement(\n 'li',\n { key: group, role: 'presentation' },\n React.createElement(\n 'div',\n { className: 'px-3 py-1 text-xs font-semibold text-muted-foreground uppercase' },\n group,\n ),\n React.createElement(\n 'ul',\n { role: 'group', 'aria-label': group },\n ...opts.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n ),\n // Ungrouped options\n ...grouped.ungrouped.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n )\n}\n\nLanguageSelector.displayName = 'LanguageSelector'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface VersionOption {\n value: string\n label: string\n isLatest?: boolean\n}\n\nexport interface VersionSelectorProps {\n value?: string\n onValueChange?: (value: string) => void\n versions: VersionOption[]\n}\n\nexport interface VersionSelectorAPI {\n /** Current state */\n state: { selectedVersion: string; isOpen: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'listbox'\n role: 'combobox'\n }\n /** Props to spread on the content/dropdown element */\n contentProps: {\n role: 'listbox'\n id: string\n }\n /** Get props for an individual option */\n getOptionProps: (value: string) => {\n role: 'option'\n 'aria-selected': boolean\n 'data-value': string\n 'data-latest'?: string\n }\n /** Select a version */\n select: (value: string) => void\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createVersionSelector(props: VersionSelectorProps): VersionSelectorAPI {\n const {\n value: initialValue = '',\n onValueChange,\n versions,\n } = props\n\n const contentId = generateId('rfr-ver-sel')\n\n let selectedVersion = initialValue\n let isOpen = false\n\n const state = { selectedVersion, isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.isOpen = value\n }\n\n function select(value: string) {\n selectedVersion = value\n state.selectedVersion = value\n onValueChange?.(value)\n setOpen(false)\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox' as const,\n }\n\n const contentProps = {\n role: 'listbox' as const,\n id: contentId,\n }\n\n function getOptionProps(value: string) {\n const version = versions.find((v) => v.value === value)\n const base = {\n role: 'option' as const,\n 'aria-selected': selectedVersion === value,\n 'data-value': value,\n }\n if (version?.isLatest) {\n return { ...base, 'data-latest': 'true' }\n }\n return base\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n [Keys.Enter]: () => {\n setOpen(!isOpen)\n },\n [Keys.Space]: () => {\n setOpen(!isOpen)\n },\n [Keys.ArrowDown]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n [Keys.ArrowUp]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n getOptionProps,\n select,\n open: () => setOpen(true),\n close: () => setOpen(false),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const versionSelectorVariants = cva({\n base: 'relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2 min-w-[100px]',\n md: 'h-10 text-base px-3 min-w-[140px]',\n lg: 'h-12 text-lg px-4 min-w-[180px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const optionVariants = cva({\n base: 'flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent',\n variants: {\n selected: {\n true: 'bg-accent/50 font-medium',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n\nexport const latestBadgeVariants = cva({\n base: 'inline-flex items-center rounded-full text-xs font-medium px-2 py-0.5',\n variants: {\n variant: {\n default: 'bg-primary/10 text-primary',\n accent: 'bg-accent text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createVersionSelector,\n versionSelectorVariants,\n optionVariants,\n latestBadgeVariants,\n type VersionSelectorAPI,\n type VersionOption,\n} from '@refraction-ui/version-selector'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface VersionSelectorContextValue {\n api: VersionSelectorAPI\n isOpen: boolean\n setOpen: (value: boolean) => void\n select: (value: string) => void\n versions: VersionOption[]\n}\n\nconst VersionSelectorContext = React.createContext<VersionSelectorContextValue | null>(null)\n\nfunction useVersionSelectorContext(): VersionSelectorContextValue {\n const ctx = React.useContext(VersionSelectorContext)\n if (!ctx) {\n throw new Error('VersionSelector compound components must be used within <VersionSelector>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* VersionSelector (root component) */\n/* ------------------------------------------------------------------ */\n\nexport interface VersionSelectorProps {\n value?: string\n onValueChange?: (value: string) => void\n versions: VersionOption[]\n placeholder?: string\n className?: string\n}\n\nexport function VersionSelector({\n value: controlledValue,\n onValueChange,\n versions,\n placeholder = 'Select version...',\n className,\n}: VersionSelectorProps) {\n const [selectedVersion, setSelectedVersion] = React.useState(controlledValue ?? '')\n const [isOpen, setIsOpen] = React.useState(false)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleValueChange = React.useCallback(\n (val: string) => {\n setSelectedVersion(val)\n onValueChange?.(val)\n },\n [onValueChange],\n )\n\n const api = React.useMemo(\n () =>\n createVersionSelector({\n value: selectedVersion,\n onValueChange: handleValueChange,\n versions,\n }),\n [selectedVersion, handleValueChange, versions],\n )\n\n const handleSelect = React.useCallback(\n (val: string) => {\n setSelectedVersion(val)\n onValueChange?.(val)\n setIsOpen(false)\n },\n [onValueChange],\n )\n\n const handleTriggerClick = React.useCallback(() => {\n setIsOpen((prev) => !prev)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (!isOpen) {\n setIsOpen(true)\n }\n }\n },\n [isOpen],\n )\n\n // Click outside to close\n React.useEffect(() => {\n if (!isOpen) return\n function handleClickOutside(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen])\n\n const ctx = React.useMemo<VersionSelectorContextValue>(\n () => ({\n api,\n isOpen,\n setOpen: setIsOpen,\n select: handleSelect,\n versions,\n }),\n [api, isOpen, handleSelect, versions],\n )\n\n const selectedOpt = versions.find((v) => v.value === selectedVersion)\n const displayLabel = selectedOpt ? selectedOpt.label : placeholder\n\n return React.createElement(\n VersionSelectorContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ref: containerRef, className: cn('rfr-version-selector relative inline-block', className) },\n // Trigger\n React.createElement(\n 'button',\n {\n type: 'button',\n role: api.triggerProps.role,\n 'aria-expanded': isOpen,\n 'aria-controls': api.triggerProps['aria-controls'],\n 'aria-haspopup': api.triggerProps['aria-haspopup'],\n className: versionSelectorVariants(),\n onClick: handleTriggerClick,\n onKeyDown: handleKeyDown,\n },\n React.createElement('span', null, displayLabel),\n selectedOpt?.isLatest &&\n React.createElement(\n 'span',\n { className: cn(latestBadgeVariants(), 'ml-2') },\n 'Latest',\n ),\n React.createElement('span', { 'aria-hidden': 'true', className: 'ml-2' }, '\\u25BE'),\n ),\n // Dropdown\n isOpen &&\n React.createElement(\n 'ul',\n {\n role: api.contentProps.role,\n id: api.contentProps.id,\n className:\n 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60',\n },\n ...versions.map((ver) => {\n const optProps = api.getOptionProps(ver.value)\n const isSelected = selectedVersion === ver.value\n return React.createElement(\n 'li',\n {\n key: ver.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleSelect(ver.value),\n },\n React.createElement('span', null, ver.label),\n ver.isLatest &&\n React.createElement(\n 'span',\n { className: latestBadgeVariants() },\n 'Latest',\n ),\n )\n }),\n ),\n ),\n )\n}\n\nVersionSelector.displayName = 'VersionSelector'\n","import type { Orientation } from '@refraction-ui/shared'\n\nexport interface ResizableLayoutProps {\n orientation?: Orientation\n /** Initial sizes as percentages (must sum to 100) */\n defaultSizes?: number[]\n /** Minimum size for each pane (percentage) */\n minSizes?: number[]\n /** Maximum size for each pane (percentage) */\n maxSizes?: number[]\n /** localStorage key for persisting sizes */\n persistKey?: string\n}\n\nexport interface ResizableLayoutAPI {\n /** Current pane sizes as percentages */\n sizes: number[]\n /** Begin a resize operation at divider index */\n startResize: (index: number) => void\n /** Apply a delta (percentage) during resize */\n onResize: (delta: number) => void\n /** End the current resize operation */\n endResize: () => void\n /** Generate CSS custom properties for pane sizes */\n getCSSVariables: () => Record<string, string>\n /** Current orientation */\n orientation: Orientation\n}\n\n/**\n * Clamp a value between min and max.\n */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max)\n}\n\nexport function createResizableLayout(props: ResizableLayoutProps = {}): ResizableLayoutAPI {\n const {\n orientation = 'horizontal',\n defaultSizes = [50, 50],\n minSizes = [],\n maxSizes = [],\n persistKey,\n } = props\n\n let sizes = loadSizes(persistKey) ?? [...defaultSizes]\n let resizingIndex: number | null = null\n let sizesBeforeResize: number[] = []\n\n function loadSizes(key?: string): number[] | null {\n if (!key) return null\n try {\n if (typeof globalThis.localStorage !== 'undefined') {\n const stored = globalThis.localStorage.getItem(key)\n if (stored) {\n const parsed = JSON.parse(stored) as number[]\n if (Array.isArray(parsed) && parsed.length === defaultSizes.length) {\n return parsed\n }\n }\n }\n } catch {\n // localStorage not available or invalid data\n }\n return null\n }\n\n function saveSizes(key: string, values: number[]): void {\n try {\n if (typeof globalThis.localStorage !== 'undefined') {\n globalThis.localStorage.setItem(key, JSON.stringify(values))\n }\n } catch {\n // localStorage not available\n }\n }\n\n function getMinSize(index: number): number {\n return minSizes[index] ?? 0\n }\n\n function getMaxSize(index: number): number {\n return maxSizes[index] ?? 100\n }\n\n function startResize(index: number): void {\n resizingIndex = index\n sizesBeforeResize = [...sizes]\n }\n\n function onResize(delta: number): void {\n if (resizingIndex === null) return\n\n const i = resizingIndex\n const j = i + 1\n if (j >= sizes.length) return\n\n const totalAvailable = sizesBeforeResize[i] + sizesBeforeResize[j]\n\n // Compute new size for pane i\n let newSizeI = sizesBeforeResize[i] + delta\n newSizeI = clamp(newSizeI, getMinSize(i), getMaxSize(i))\n\n // Compute new size for pane j from remaining\n let newSizeJ = totalAvailable - newSizeI\n newSizeJ = clamp(newSizeJ, getMinSize(j), getMaxSize(j))\n\n // Re-adjust pane i if pane j was constrained\n newSizeI = totalAvailable - newSizeJ\n\n sizes[i] = newSizeI\n sizes[j] = newSizeJ\n }\n\n function endResize(): void {\n resizingIndex = null\n sizesBeforeResize = []\n if (persistKey) {\n saveSizes(persistKey, sizes)\n }\n }\n\n function getCSSVariables(): Record<string, string> {\n const vars: Record<string, string> = {}\n for (let i = 0; i < sizes.length; i++) {\n vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`\n }\n return vars\n }\n\n return {\n sizes,\n startResize,\n onResize,\n endResize,\n getCSSVariables,\n orientation,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const resizableLayoutTokens: TokenContract = {\n name: 'resizable-layout',\n tokens: {\n dividerColor: { variable: '--rfr-resizable-divider-color', fallback: 'hsl(var(--border))' },\n dividerHover: { variable: '--rfr-resizable-divider-hover', fallback: 'hsl(var(--primary))' },\n dividerSize: { variable: '--rfr-resizable-divider-size', fallback: '4px' },\n },\n}\n\nexport const resizableLayoutVariants = cva({\n base: 'flex h-full w-full',\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const resizableDividerVariants = cva({\n base: 'relative flex items-center justify-center bg-border transition-colors hover:bg-primary/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 active:bg-primary/70',\n variants: {\n orientation: {\n horizontal: 'w-1 cursor-col-resize',\n vertical: 'h-1 cursor-row-resize',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const resizablePaneVariants = cva({\n base: 'overflow-auto',\n variants: {\n orientation: {\n horizontal: 'h-full',\n vertical: 'w-full',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n","import * as React from 'react'\nimport {\n createResizableLayout,\n resizableLayoutVariants,\n resizableDividerVariants,\n resizablePaneVariants,\n type ResizableLayoutProps as CoreProps,\n type ResizableLayoutAPI,\n} from '@refraction-ui/resizable-layout'\nimport { cn } from '@refraction-ui/shared'\nimport type { Orientation } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface ResizableLayoutContextValue {\n api: ResizableLayoutAPI\n orientation: Orientation\n sizes: number[]\n setSizes: (sizes: number[]) => void\n}\n\nconst ResizableLayoutContext = React.createContext<ResizableLayoutContextValue | null>(null)\n\nfunction useResizableLayoutContext(): ResizableLayoutContextValue {\n const ctx = React.useContext(ResizableLayoutContext)\n if (!ctx) {\n throw new Error('Resizable compound components must be used within <ResizableLayout>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* ResizableLayout (root) */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizableLayoutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n orientation?: Orientation\n defaultSizes?: number[]\n minSizes?: number[]\n maxSizes?: number[]\n persistKey?: string\n onSizesChange?: (sizes: number[]) => void\n}\n\n/**\n * ResizableLayout — flex container with resizable panes separated by draggable dividers.\n * Uses pointer events for cross-platform drag support.\n */\nexport const ResizableLayout = React.forwardRef<HTMLDivElement, ResizableLayoutProps>(\n (\n {\n orientation = 'horizontal',\n defaultSizes = [50, 50],\n minSizes,\n maxSizes,\n persistKey,\n onSizesChange,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const apiRef = React.useRef<ResizableLayoutAPI | null>(null)\n\n if (!apiRef.current) {\n apiRef.current = createResizableLayout({\n orientation,\n defaultSizes,\n minSizes,\n maxSizes,\n persistKey,\n })\n }\n\n const api = apiRef.current\n const [sizes, setSizesState] = React.useState<number[]>(api.sizes)\n\n const setSizes = React.useCallback(\n (newSizes: number[]) => {\n setSizesState([...newSizes])\n onSizesChange?.(newSizes)\n },\n [onSizesChange],\n )\n\n const cssVars = React.useMemo(() => {\n const vars: Record<string, string> = {}\n for (let i = 0; i < sizes.length; i++) {\n vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`\n }\n return vars\n }, [sizes])\n\n const contextValue = React.useMemo<ResizableLayoutContextValue>(\n () => ({ api, orientation, sizes, setSizes }),\n [api, orientation, sizes, setSizes],\n )\n\n return (\n <ResizableLayoutContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(resizableLayoutVariants({ orientation }), className)}\n style={{ ...cssVars, ...style }}\n data-orientation={orientation}\n {...props}\n >\n {children}\n </div>\n </ResizableLayoutContext.Provider>\n )\n },\n)\n\nResizableLayout.displayName = 'ResizableLayout'\n\n/* ------------------------------------------------------------------ */\n/* ResizablePane */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizablePaneProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Zero-based index of this pane (order in the layout) */\n index: number\n}\n\n/**\n * ResizablePane — a single pane whose size is driven by CSS custom properties.\n */\nexport const ResizablePane = React.forwardRef<HTMLDivElement, ResizablePaneProps>(\n ({ index, className, style, children, ...props }, ref) => {\n const { orientation, sizes } = useResizableLayoutContext()\n const size = sizes[index] ?? 50\n\n const paneStyle: React.CSSProperties = {\n flexBasis: `${size}%`,\n flexGrow: 0,\n flexShrink: 0,\n ...style,\n }\n\n return (\n <div\n ref={ref}\n className={cn(resizablePaneVariants({ orientation }), className)}\n style={paneStyle}\n data-pane-index={index}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nResizablePane.displayName = 'ResizablePane'\n\n/* ------------------------------------------------------------------ */\n/* ResizableDivider */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizableDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Index of the divider (between pane[index] and pane[index+1]) */\n index: number\n}\n\n/**\n * ResizableDivider — draggable handle between two panes.\n * Uses pointer events for cross-platform drag support (mouse + touch).\n */\nexport const ResizableDivider = React.forwardRef<HTMLDivElement, ResizableDividerProps>(\n ({ index, className, ...props }, ref) => {\n const { api, orientation, setSizes } = useResizableLayoutContext()\n const startPosRef = React.useRef<number>(0)\n const containerSizeRef = React.useRef<number>(0)\n\n const onPointerDown = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.preventDefault()\n const target = e.currentTarget\n target.setPointerCapture(e.pointerId)\n\n // Get the container size to convert px delta to percentage\n const container = target.parentElement\n if (!container) return\n\n const rect = container.getBoundingClientRect()\n containerSizeRef.current =\n orientation === 'horizontal' ? rect.width : rect.height\n startPosRef.current =\n orientation === 'horizontal' ? e.clientX : e.clientY\n\n api.startResize(index)\n },\n [api, index, orientation],\n )\n\n const onPointerMove = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (containerSizeRef.current === 0) return\n\n const currentPos =\n orientation === 'horizontal' ? e.clientX : e.clientY\n const pxDelta = currentPos - startPosRef.current\n const pctDelta = (pxDelta / containerSizeRef.current) * 100\n\n api.onResize(pctDelta)\n setSizes([...api.sizes])\n },\n [api, orientation, setSizes],\n )\n\n const onPointerUp = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.releasePointerCapture(e.pointerId)\n containerSizeRef.current = 0\n api.endResize()\n },\n [api],\n )\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n tabIndex={0}\n className={cn(resizableDividerVariants({ orientation }), className)}\n data-divider-index={index}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n {...props}\n />\n )\n },\n)\n\nResizableDivider.displayName = 'ResizableDivider'\n","import { generateId } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type BreakpointName = 'mobile' | 'tablet' | 'desktop'\n\nexport interface AppShellConfig {\n /** Sidebar width when expanded (default '16rem') */\n sidebarWidth?: string\n /** Sidebar width when collapsed to icon-only (default '4rem') */\n sidebarCollapsedWidth?: string\n /** Header height (default '3.5rem') */\n headerHeight?: string\n /** Breakpoint below which layout is mobile (default 768) */\n mobileBreakpoint?: number\n /** Breakpoint below which layout is tablet (default 1024) */\n tabletBreakpoint?: number\n /** Sidebar position (default 'left') */\n sidebarPosition?: 'left' | 'right'\n /** Whether sidebar can be collapsed on desktop (default true) */\n sidebarCollapsible?: boolean\n /** Whether sidebar starts collapsed on desktop (default false) */\n sidebarDefaultCollapsed?: boolean\n /** Mobile nav position (default 'bottom') */\n mobileNavPosition?: 'bottom' | 'none'\n}\n\nexport interface AppShellState {\n /** On mobile: drawer open/closed */\n sidebarOpen: boolean\n /** On desktop: full/icon-only */\n sidebarCollapsed: boolean\n /** Current responsive breakpoint */\n breakpoint: BreakpointName\n /** Convenience: breakpoint === 'mobile' */\n isMobile: boolean\n /** Convenience: breakpoint === 'tablet' */\n isTablet: boolean\n /** Convenience: breakpoint === 'desktop' */\n isDesktop: boolean\n}\n\nexport type AppShellSubscriber = (state: AppShellState) => void\n\nexport interface AppShellAPI {\n /** Current state (snapshot — will not mutate) */\n state: AppShellState\n /** Resolved config with all defaults applied */\n config: Required<AppShellConfig>\n\n /** Mobile: open/close drawer. Desktop: collapse/expand sidebar. */\n toggleSidebar(): void\n /** Open sidebar (mobile drawer) */\n openSidebar(): void\n /** Close sidebar (mobile drawer) */\n closeSidebar(): void\n /** Collapse sidebar to icon-only (desktop) */\n collapseSidebar(): void\n /** Expand sidebar from icon-only (desktop) */\n expandSidebar(): void\n /** Update the current breakpoint */\n setBreakpoint(bp: BreakpointName): void\n\n /** CSS custom property map for layout dimensions */\n getCSSVariables(): Record<string, string>\n\n /** ARIA attributes for sidebar region */\n sidebarAriaProps: Record<string, string>\n /** ARIA attributes for main region */\n mainAriaProps: Record<string, string>\n /** ARIA attributes for header region */\n headerAriaProps: Record<string, string>\n /** ARIA attributes for mobile bottom nav */\n mobileNavAriaProps: Record<string, string>\n /** ARIA attributes for mobile sidebar overlay/backdrop */\n overlayAriaProps: Record<string, string>\n\n /** Subscribe to state changes. Returns unsubscribe function. */\n subscribe(fn: AppShellSubscriber): () => void\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<AppShellConfig> = {\n sidebarWidth: '16rem',\n sidebarCollapsedWidth: '4rem',\n headerHeight: '3.5rem',\n mobileBreakpoint: 768,\n tabletBreakpoint: 1024,\n sidebarPosition: 'left',\n sidebarCollapsible: true,\n sidebarDefaultCollapsed: false,\n mobileNavPosition: 'bottom',\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction resolveBreakpoint(\n width: number,\n mobileBp: number,\n tabletBp: number,\n): BreakpointName {\n if (width < mobileBp) return 'mobile'\n if (width < tabletBp) return 'tablet'\n return 'desktop'\n}\n\nfunction makeState(\n sidebarOpen: boolean,\n sidebarCollapsed: boolean,\n breakpoint: BreakpointName,\n): AppShellState {\n return {\n sidebarOpen,\n sidebarCollapsed,\n breakpoint,\n isMobile: breakpoint === 'mobile',\n isTablet: breakpoint === 'tablet',\n isDesktop: breakpoint === 'desktop',\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createAppShell(config?: AppShellConfig): AppShellAPI {\n const resolved: Required<AppShellConfig> = { ...DEFAULTS, ...config }\n\n // Internal mutable state\n let sidebarOpen = false\n let sidebarCollapsed = resolved.sidebarDefaultCollapsed\n let breakpoint: BreakpointName = 'desktop' // SSR default\n\n const subscribers = new Set<AppShellSubscriber>()\n\n const sidebarId = generateId('rfr-shell-sidebar')\n\n function getState(): AppShellState {\n return makeState(sidebarOpen, sidebarCollapsed, breakpoint)\n }\n\n function notify(): void {\n const s = getState()\n for (const fn of subscribers) {\n fn(s)\n }\n }\n\n function toggleSidebar(): void {\n if (breakpoint === 'mobile') {\n sidebarOpen = !sidebarOpen\n } else if (resolved.sidebarCollapsible) {\n sidebarCollapsed = !sidebarCollapsed\n }\n notify()\n }\n\n function openSidebar(): void {\n sidebarOpen = true\n notify()\n }\n\n function closeSidebar(): void {\n sidebarOpen = false\n notify()\n }\n\n function collapseSidebar(): void {\n sidebarCollapsed = true\n notify()\n }\n\n function expandSidebar(): void {\n sidebarCollapsed = false\n notify()\n }\n\n function setBreakpoint(bp: BreakpointName): void {\n if (bp === breakpoint) return\n breakpoint = bp\n // Auto-close mobile drawer when moving to desktop\n if (bp !== 'mobile') {\n sidebarOpen = false\n }\n notify()\n }\n\n function getCSSVariables(): Record<string, string> {\n const currentWidth = sidebarCollapsed\n ? resolved.sidebarCollapsedWidth\n : resolved.sidebarWidth\n return {\n '--shell-sidebar-width': currentWidth,\n '--shell-sidebar-full-width': resolved.sidebarWidth,\n '--shell-sidebar-collapsed-width': resolved.sidebarCollapsedWidth,\n '--shell-header-height': resolved.headerHeight,\n }\n }\n\n function subscribe(fn: AppShellSubscriber): () => void {\n subscribers.add(fn)\n return () => {\n subscribers.delete(fn)\n }\n }\n\n return {\n get state() {\n return getState()\n },\n config: resolved,\n\n toggleSidebar,\n openSidebar,\n closeSidebar,\n collapseSidebar,\n expandSidebar,\n setBreakpoint,\n\n getCSSVariables,\n\n sidebarAriaProps: {\n role: 'navigation',\n 'aria-label': 'Sidebar',\n id: sidebarId,\n },\n mainAriaProps: {\n role: 'main',\n },\n headerAriaProps: {\n role: 'banner',\n },\n mobileNavAriaProps: {\n role: 'navigation',\n 'aria-label': 'Mobile navigation',\n },\n overlayAriaProps: {\n 'aria-hidden': 'true',\n },\n\n subscribe,\n }\n}\n\nexport { resolveBreakpoint }\n","// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PageShellConfig {\n /** Max width for contained sections (default '80rem') */\n maxWidth?: string\n /** Navigation bar height (default '4rem') */\n navHeight?: string\n /** Whether nav is transparent (for hero sections, default false) */\n navTransparent?: boolean\n /** Whether nav is sticky (default true) */\n navSticky?: boolean\n /** Number of footer columns (default 4) */\n footerColumns?: number\n}\n\nexport interface SectionConfig {\n /** Whether section spans edge-to-edge (default false) */\n fullWidth?: boolean\n /** Override max-width for this section */\n maxWidth?: string\n /** Whether section has padding (default true) */\n padding?: boolean\n /** Background variant */\n background?: 'default' | 'muted' | 'primary' | 'none'\n}\n\nexport interface PageShellAPI {\n /** Resolved config with all defaults applied */\n config: Required<PageShellConfig>\n /** ARIA attributes for the nav region */\n navAriaProps: Record<string, string>\n /** ARIA attributes for the footer region */\n footerAriaProps: Record<string, string>\n /** Returns Tailwind utility classes for a section */\n getSectionClasses(sectionConfig?: SectionConfig): string\n /** CSS custom property map */\n getCSSVariables(): Record<string, string>\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<PageShellConfig> = {\n maxWidth: '80rem',\n navHeight: '4rem',\n navTransparent: false,\n navSticky: true,\n footerColumns: 4,\n}\n\n// ---------------------------------------------------------------------------\n// Background class map\n// ---------------------------------------------------------------------------\n\nconst BACKGROUND_CLASSES: Record<NonNullable<SectionConfig['background']>, string> = {\n default: '',\n muted: 'bg-muted',\n primary: 'bg-primary text-primary-foreground',\n none: '',\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createPageShell(config?: PageShellConfig): PageShellAPI {\n const resolved: Required<PageShellConfig> = { ...DEFAULTS, ...config }\n\n function getSectionClasses(sectionConfig?: SectionConfig): string {\n const {\n fullWidth = false,\n maxWidth,\n padding = true,\n background = 'default',\n } = sectionConfig ?? {}\n\n const classes: string[] = []\n\n if (!fullWidth) {\n classes.push('mx-auto')\n classes.push('w-full')\n // Use custom max-width or fall through to CSS variable\n if (maxWidth) {\n classes.push(`max-w-${maxWidth}`)\n } else {\n classes.push('max-w-[var(--page-max-width)]')\n }\n }\n\n if (padding) {\n classes.push('px-4 sm:px-6 lg:px-8')\n }\n\n const bg = BACKGROUND_CLASSES[background]\n if (bg) {\n classes.push(bg)\n }\n\n return classes.join(' ')\n }\n\n function getCSSVariables(): Record<string, string> {\n return {\n '--page-max-width': resolved.maxWidth,\n '--page-nav-height': resolved.navHeight,\n '--page-footer-columns': String(resolved.footerColumns),\n }\n }\n\n return {\n config: resolved,\n navAriaProps: {\n role: 'navigation',\n 'aria-label': 'Main navigation',\n },\n footerAriaProps: {\n role: 'contentinfo',\n },\n getSectionClasses,\n getCSSVariables,\n }\n}\n","// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellConfig {\n /** Card max-width preset (default 'sm') */\n maxWidth?: 'xs' | 'sm' | 'md'\n /** Card position (default 'center') */\n position?: 'center' | 'left'\n /** Show decorative background pattern (default true) */\n showBackground?: boolean\n}\n\nexport interface AuthShellAPI {\n /** Resolved config with all defaults */\n config: Required<AuthShellConfig>\n /** Tailwind classes for the outer container */\n containerClasses: string\n /** Tailwind classes for the card */\n cardClasses: string\n /** ARIA attributes for the auth region */\n ariaProps: Record<string, string>\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<AuthShellConfig> = {\n maxWidth: 'sm',\n position: 'center',\n showBackground: true,\n}\n\n// ---------------------------------------------------------------------------\n// Class maps\n// ---------------------------------------------------------------------------\n\nconst MAX_WIDTH_CLASSES: Record<AuthShellConfig['maxWidth'] & string, string> = {\n xs: 'max-w-xs',\n sm: 'max-w-sm',\n md: 'max-w-md',\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createAuthShell(config?: AuthShellConfig): AuthShellAPI {\n const resolved: Required<AuthShellConfig> = { ...DEFAULTS, ...config }\n\n const containerParts: string[] = ['min-h-screen', 'flex', 'w-full']\n\n if (resolved.position === 'center') {\n containerParts.push('items-center', 'justify-center')\n } else {\n // left-aligned: vertically centered, padded from left\n containerParts.push('items-center', 'justify-start', 'pl-8 sm:pl-16 lg:pl-24')\n }\n\n if (resolved.showBackground) {\n containerParts.push('bg-muted')\n }\n\n const cardParts: string[] = [\n 'w-full',\n MAX_WIDTH_CLASSES[resolved.maxWidth],\n 'rounded-lg',\n 'border',\n 'bg-card',\n 'p-6',\n 'shadow-sm',\n ]\n\n return {\n config: resolved,\n containerClasses: containerParts.join(' '),\n cardClasses: cardParts.join(' '),\n ariaProps: {\n role: 'main',\n 'aria-label': 'Authentication',\n },\n }\n}\n","import * as React from 'react'\nimport {\n createAppShell,\n resolveBreakpoint,\n type AppShellConfig,\n type AppShellState,\n type AppShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface AppShellContextValue {\n api: AppShellAPI\n state: AppShellState\n}\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null)\n\nexport function useAppShell(): AppShellContextValue {\n const ctx = React.useContext(AppShellContext)\n if (!ctx) {\n throw new Error('useAppShell must be used within <AppShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// AppShell (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface AppShellProps {\n config?: AppShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction AppShellRoot({ config, children, className }: AppShellProps) {\n // Create the headless API once\n const apiRef = React.useRef<AppShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createAppShell(config)\n }\n const api = apiRef.current\n\n // Track state reactively via subscribe\n const [state, setState] = React.useState<AppShellState>(() => api.state)\n\n React.useEffect(() => {\n // Sync initial state\n setState(api.state)\n return api.subscribe((s) => setState(s))\n }, [api])\n\n // Listen to matchMedia for responsive breakpoints\n React.useEffect(() => {\n if (typeof window === 'undefined') return\n\n const { mobileBreakpoint, tabletBreakpoint } = api.config\n\n const mobileQuery = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`)\n const tabletQuery = window.matchMedia(\n `(min-width: ${mobileBreakpoint}px) and (max-width: ${tabletBreakpoint - 1}px)`,\n )\n\n function update() {\n const width = window.innerWidth\n const bp = resolveBreakpoint(width, mobileBreakpoint, tabletBreakpoint)\n api.setBreakpoint(bp)\n }\n\n // Set initial breakpoint\n update()\n\n mobileQuery.addEventListener('change', update)\n tabletQuery.addEventListener('change', update)\n\n return () => {\n mobileQuery.removeEventListener('change', update)\n tabletQuery.removeEventListener('change', update)\n }\n }, [api])\n\n const cssVars = api.getCSSVariables()\n\n const ctxValue = React.useMemo<AppShellContextValue>(\n () => ({ api, state }),\n [api, state],\n )\n\n return React.createElement(\n AppShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n className: cn('flex h-screen w-full overflow-hidden', className),\n style: cssVars as React.CSSProperties,\n 'data-shell': '',\n },\n children,\n ),\n )\n}\n\nAppShellRoot.displayName = 'AppShell'\n\n// ---------------------------------------------------------------------------\n// AppShell.Sidebar\n// ---------------------------------------------------------------------------\n\nexport interface AppShellSidebarProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Sidebar({ children, className }: AppShellSidebarProps) {\n const { api, state } = useAppShell()\n const isRight = api.config.sidebarPosition === 'right'\n\n // On mobile: off-canvas drawer via transform\n // On desktop: static sidebar with variable width\n const baseClasses = [\n 'flex flex-col shrink-0 overflow-y-auto overflow-x-hidden',\n 'bg-background border-r',\n 'transition-[width,transform] duration-200 ease-in-out',\n 'h-full',\n ]\n\n if (isRight) {\n baseClasses[1] = 'flex flex-col shrink-0 overflow-y-auto overflow-x-hidden bg-background border-l'\n }\n\n const mobileClasses = state.isMobile\n ? [\n 'fixed top-0 z-40',\n isRight ? 'right-0' : 'left-0',\n 'w-[var(--shell-sidebar-full-width)]',\n state.sidebarOpen\n ? 'translate-x-0'\n : isRight\n ? 'translate-x-full'\n : '-translate-x-full',\n ]\n : ['relative', 'w-[var(--shell-sidebar-width)]']\n\n return React.createElement(\n 'aside',\n {\n ...api.sidebarAriaProps,\n className: cn(baseClasses.join(' '), mobileClasses.join(' '), className),\n 'data-collapsed': state.sidebarCollapsed ? '' : undefined,\n 'data-open': state.sidebarOpen ? '' : undefined,\n },\n children,\n )\n}\n\nSidebar.displayName = 'AppShell.Sidebar'\n\n// ---------------------------------------------------------------------------\n// AppShell.Main\n// ---------------------------------------------------------------------------\n\nexport interface AppShellMainProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Main({ children, className }: AppShellMainProps) {\n return React.createElement(\n 'div',\n {\n className: cn('flex flex-1 flex-col min-w-0 h-full', className),\n },\n children,\n )\n}\n\nMain.displayName = 'AppShell.Main'\n\n// ---------------------------------------------------------------------------\n// AppShell.Header\n// ---------------------------------------------------------------------------\n\nexport interface AppShellHeaderProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Header({ children, className }: AppShellHeaderProps) {\n const { api, state } = useAppShell()\n\n const hamburger = state.isMobile\n ? React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Toggle sidebar',\n 'aria-expanded': state.sidebarOpen,\n 'aria-controls': api.sidebarAriaProps.id,\n onClick: () => api.toggleSidebar(),\n className: 'inline-flex items-center justify-center p-2 mr-2',\n },\n React.createElement(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n 'aria-hidden': 'true',\n },\n React.createElement('line', { x1: 3, y1: 6, x2: 21, y2: 6 }),\n React.createElement('line', { x1: 3, y1: 12, x2: 21, y2: 12 }),\n React.createElement('line', { x1: 3, y1: 18, x2: 21, y2: 18 }),\n ),\n )\n : null\n\n return React.createElement(\n 'header',\n {\n ...api.headerAriaProps,\n className: cn(\n 'sticky top-0 z-30 flex items-center shrink-0',\n 'h-[var(--shell-header-height)]',\n 'border-b bg-background px-4',\n className,\n ),\n },\n hamburger,\n children,\n )\n}\n\nHeader.displayName = 'AppShell.Header'\n\n// ---------------------------------------------------------------------------\n// AppShell.Content\n// ---------------------------------------------------------------------------\n\nexport interface AppShellContentProps {\n children?: React.ReactNode\n className?: string\n /** Tailwind max-width class suffix, e.g. '6xl' -> max-w-6xl */\n maxWidth?: string\n}\n\nfunction Content({ children, className, maxWidth }: AppShellContentProps) {\n const { api } = useAppShell()\n const mwClass = maxWidth ? `max-w-${maxWidth}` : ''\n\n return React.createElement(\n 'main',\n {\n ...api.mainAriaProps,\n className: cn(\n 'flex-1 overflow-y-auto',\n mwClass ? `${mwClass} mx-auto w-full` : '',\n 'px-4 sm:px-6 lg:px-8 py-6',\n className,\n ),\n },\n children,\n )\n}\n\nContent.displayName = 'AppShell.Content'\n\n// ---------------------------------------------------------------------------\n// AppShell.MobileNav\n// ---------------------------------------------------------------------------\n\nexport interface AppShellMobileNavProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction MobileNav({ children, className }: AppShellMobileNavProps) {\n const { api, state } = useAppShell()\n\n if (!state.isMobile) return null\n if (api.config.mobileNavPosition === 'none') return null\n\n return React.createElement(\n 'nav',\n {\n ...api.mobileNavAriaProps,\n className: cn(\n 'fixed bottom-0 left-0 right-0 z-30',\n 'flex items-center justify-around',\n 'border-t bg-background',\n 'h-14',\n className,\n ),\n },\n children,\n )\n}\n\nMobileNav.displayName = 'AppShell.MobileNav'\n\n// ---------------------------------------------------------------------------\n// AppShell.Overlay\n// ---------------------------------------------------------------------------\n\nexport interface AppShellOverlayProps {\n className?: string\n}\n\nfunction Overlay({ className }: AppShellOverlayProps) {\n const { api, state } = useAppShell()\n\n if (!state.isMobile || !state.sidebarOpen) return null\n\n return React.createElement('div', {\n ...api.overlayAriaProps,\n className: cn(\n 'fixed inset-0 z-30 bg-black/50 transition-opacity',\n className,\n ),\n onClick: () => api.closeSidebar(),\n 'data-shell-overlay': '',\n })\n}\n\nOverlay.displayName = 'AppShell.Overlay'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const AppShell = Object.assign(AppShellRoot, {\n Sidebar,\n Main,\n Header,\n Content,\n MobileNav,\n Overlay,\n})\n\nexport type { AppShellConfig, AppShellState, AppShellAPI }\n","import * as React from 'react'\nimport {\n createPageShell,\n type PageShellConfig,\n type SectionConfig,\n type PageShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PageShellContextValue {\n api: PageShellAPI\n}\n\nconst PageShellContext = React.createContext<PageShellContextValue | null>(null)\n\nfunction usePageShell(): PageShellContextValue {\n const ctx = React.useContext(PageShellContext)\n if (!ctx) {\n throw new Error('PageShell compound components must be used within <PageShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// PageShell (root)\n// ---------------------------------------------------------------------------\n\nexport interface PageShellProps {\n config?: PageShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction PageShellRoot({ config, children, className }: PageShellProps) {\n const apiRef = React.useRef<PageShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createPageShell(config)\n }\n const api = apiRef.current\n\n const cssVars = api.getCSSVariables()\n\n const ctxValue = React.useMemo<PageShellContextValue>(\n () => ({ api }),\n [api],\n )\n\n return React.createElement(\n PageShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n className: cn('flex min-h-screen flex-col', className),\n style: cssVars as React.CSSProperties,\n 'data-page-shell': '',\n },\n children,\n ),\n )\n}\n\nPageShellRoot.displayName = 'PageShell'\n\n// ---------------------------------------------------------------------------\n// PageShell.Nav\n// ---------------------------------------------------------------------------\n\nexport interface PageShellNavProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Nav({ children, className }: PageShellNavProps) {\n const { api } = usePageShell()\n\n const stickyClass = api.config.navSticky ? 'sticky top-0 z-40' : ''\n const transparentClass = api.config.navTransparent ? 'bg-transparent' : 'bg-background border-b'\n\n return React.createElement(\n 'nav',\n {\n ...api.navAriaProps,\n className: cn(\n 'flex items-center h-[var(--page-nav-height)] px-4 sm:px-6 lg:px-8',\n stickyClass,\n transparentClass,\n className,\n ),\n },\n children,\n )\n}\n\nNav.displayName = 'PageShell.Nav'\n\n// ---------------------------------------------------------------------------\n// PageShell.Section\n// ---------------------------------------------------------------------------\n\nexport interface PageShellSectionProps extends SectionConfig {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Section({\n children,\n className,\n fullWidth,\n maxWidth,\n padding,\n background,\n}: PageShellSectionProps) {\n const { api } = usePageShell()\n\n const sectionClasses = api.getSectionClasses({ fullWidth, maxWidth, padding, background })\n\n return React.createElement(\n 'section',\n {\n className: cn('py-12', sectionClasses, className),\n },\n children,\n )\n}\n\nSection.displayName = 'PageShell.Section'\n\n// ---------------------------------------------------------------------------\n// PageShell.Footer\n// ---------------------------------------------------------------------------\n\nexport interface PageShellFooterProps {\n children?: React.ReactNode\n className?: string\n columns?: number\n}\n\nfunction Footer({ children, className, columns }: PageShellFooterProps) {\n const { api } = usePageShell()\n const cols = columns ?? api.config.footerColumns\n\n return React.createElement(\n 'footer',\n {\n ...api.footerAriaProps,\n className: cn(\n 'border-t bg-muted py-12 px-4 sm:px-6 lg:px-8',\n className,\n ),\n },\n React.createElement(\n 'div',\n {\n className: `mx-auto max-w-[var(--page-max-width)] grid gap-8`,\n style: {\n gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,\n },\n },\n children,\n ),\n )\n}\n\nFooter.displayName = 'PageShell.Footer'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const PageShell = Object.assign(PageShellRoot, {\n Nav,\n Section,\n Footer,\n})\n\nexport type { PageShellConfig, SectionConfig, PageShellAPI }\n","import * as React from 'react'\nimport {\n createAuthShell,\n type AuthShellConfig,\n type AuthShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface AuthShellContextValue {\n api: AuthShellAPI\n}\n\nconst AuthShellContext = React.createContext<AuthShellContextValue | null>(null)\n\nfunction useAuthShell(): AuthShellContextValue {\n const ctx = React.useContext(AuthShellContext)\n if (!ctx) {\n throw new Error('AuthShell compound components must be used within <AuthShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// AuthShell (root)\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellProps {\n config?: AuthShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction AuthShellRoot({ config, children, className }: AuthShellProps) {\n const apiRef = React.useRef<AuthShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createAuthShell(config)\n }\n const api = apiRef.current\n\n const ctxValue = React.useMemo<AuthShellContextValue>(\n () => ({ api }),\n [api],\n )\n\n return React.createElement(\n AuthShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n ...api.ariaProps,\n className: cn(api.containerClasses, className),\n 'data-auth-shell': '',\n },\n children,\n ),\n )\n}\n\nAuthShellRoot.displayName = 'AuthShell'\n\n// ---------------------------------------------------------------------------\n// AuthShell.Card\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellCardProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Card({ children, className }: AuthShellCardProps) {\n const { api } = useAuthShell()\n\n return React.createElement(\n 'div',\n {\n className: cn(api.cardClasses, className),\n 'data-auth-card': '',\n },\n children,\n )\n}\n\nCard.displayName = 'AuthShell.Card'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const AuthShell = Object.assign(AuthShellRoot, {\n Card,\n})\n\nexport type { AuthShellConfig, AuthShellAPI }\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n fallback?: string\n size?: AvatarSize\n}\n\nexport interface AvatarAPI {\n /** ARIA attributes to spread on the root element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Image ARIA props */\n imageProps: {\n alt: string\n role: string\n }\n /** Fallback text (initials) */\n fallbackText: string\n /** Current state */\n state: {\n size: AvatarSize\n hasSrc: boolean\n }\n}\n\n/**\n * Extract initials from a name or fallback string.\n * Takes first letter of first two words, uppercased.\n */\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0 || parts[0] === '') return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatar(props: AvatarProps = {}): AvatarAPI {\n const { src, alt = '', fallback = '', size = 'md' } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'img',\n }\n if (alt) {\n ariaProps['aria-label'] = alt\n }\n\n const fallbackText = fallback ? getInitials(fallback) : (alt ? getInitials(alt) : '')\n\n const dataAttributes: Record<string, string> = {\n 'data-slot': 'avatar',\n }\n\n return {\n ariaProps,\n dataAttributes,\n imageProps: {\n alt,\n role: 'img',\n },\n fallbackText,\n state: {\n size,\n hasSrc: !!src,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const avatarTokens: TokenContract = {\n name: 'avatar',\n tokens: {\n bg: { variable: '--rfr-avatar-bg', fallback: 'hsl(var(--muted))' },\n fg: { variable: '--rfr-avatar-fg', fallback: 'hsl(var(--muted-foreground))' },\n border: { variable: '--rfr-avatar-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const avatarVariants = cva({\n base: 'relative flex shrink-0 overflow-hidden rounded-full',\n variants: {\n size: {\n xs: 'h-6 w-6',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarImageVariants = cva({\n base: 'aspect-square h-full w-full object-cover',\n})\n\nexport const avatarFallbackVariants = cva({\n base: 'flex h-full w-full items-center justify-center rounded-full bg-muted text-muted-foreground',\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createAvatar,\n avatarVariants,\n avatarImageVariants,\n avatarFallbackVariants,\n type AvatarSize,\n} from '@refraction-ui/avatar'\nimport { cn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface AvatarContextValue {\n size: AvatarSize\n imageLoaded: boolean\n imageError: boolean\n setImageLoaded: (loaded: boolean) => void\n setImageError: (error: boolean) => void\n}\n\nconst AvatarContext = React.createContext<AvatarContextValue>({\n size: 'md',\n imageLoaded: false,\n imageError: false,\n setImageLoaded: () => {},\n setImageError: () => {},\n})\n\n/* ─── Avatar (root) ────────────────────────────────────────────── */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: AvatarSize\n}\n\n/**\n * Avatar -- circular image with fallback support.\n * Compound component: use Avatar > AvatarImage + AvatarFallback.\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ size = 'md', className, children, ...props }, ref) => {\n const [imageLoaded, setImageLoaded] = React.useState(false)\n const [imageError, setImageError] = React.useState(false)\n\n const api = createAvatar({ size })\n\n return (\n <AvatarContext.Provider value={{ size, imageLoaded, imageError, setImageLoaded, setImageError }}>\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </span>\n </AvatarContext.Provider>\n )\n },\n)\nAvatar.displayName = 'Avatar'\n\n/* ─── AvatarImage ──────────────────────────────────────────────── */\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, src, alt = '', onLoad, onError, ...props }, ref) => {\n const { setImageLoaded, setImageError } = React.useContext(AvatarContext)\n\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageLoaded(true)\n onLoad?.(e)\n }\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageError(true)\n onError?.(e)\n }\n\n return (\n <img\n ref={ref}\n className={cn(avatarImageVariants(), className)}\n src={src}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n {...props}\n />\n )\n },\n)\nAvatarImage.displayName = 'AvatarImage'\n\n/* ─── AvatarFallback ───────────────────────────────────────────── */\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallbackProps>(\n ({ className, children, ...props }, ref) => {\n const { size } = React.useContext(AvatarContext)\n\n return (\n <span\n ref={ref}\n className={cn(avatarFallbackVariants({ size }), className)}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\nAvatarFallback.displayName = 'AvatarFallback'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd'\n\nexport interface AvatarUser {\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Avatar image URL */\n src?: string\n /** Online presence status */\n status?: PresenceStatus\n}\n\nexport interface AvatarGroupProps {\n /** Array of users to display */\n users: AvatarUser[]\n /** Maximum number of visible avatars */\n max?: number\n /** Avatar size */\n size?: AvatarSize\n}\n\nexport interface AvatarGroupAPI {\n /** Users that are visible (within max limit) */\n visibleUsers: AvatarUser[]\n /** Number of overflow users */\n overflowCount: number\n /** All overflow users (for tooltip/popup) */\n overflowUsers: AvatarUser[]\n /** ARIA props for the group container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for an individual avatar */\n getAvatarAriaProps(user: AvatarUser): Record<string, unknown>\n /** Get initials from a user's name */\n getInitials(name: string): string\n /** Get the overflow badge ARIA props */\n overflowBadgeProps: Record<string, unknown>\n /** Generated IDs */\n ids: {\n group: string\n label: string\n }\n}\n\nexport const AVATAR_SIZES: Record<AvatarSize, { width: number; fontSize: number }> = {\n xs: { width: 24, fontSize: 10 },\n sm: { width: 32, fontSize: 12 },\n md: { width: 40, fontSize: 14 },\n lg: { width: 48, fontSize: 16 },\n xl: { width: 64, fontSize: 20 },\n}\n\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0) return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatarGroup(props: AvatarGroupProps): AvatarGroupAPI {\n const { users, max, size = 'md' } = props\n\n const visibleUsers = max && max > 0 ? users.slice(0, max) : users\n const overflowUsers = max && max > 0 ? users.slice(max) : []\n const overflowCount = overflowUsers.length\n\n const groupId = generateId('rfr-avatar-group')\n const labelId = generateId('rfr-avatar-group-label')\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'group',\n 'aria-label': `${users.length} users`,\n id: groupId,\n }\n\n function getAvatarAriaProps(user: AvatarUser): Record<string, unknown> {\n const label = user.status ? `${user.name} (${user.status})` : user.name\n return {\n role: 'img',\n 'aria-label': label,\n }\n }\n\n const overflowBadgeProps: Record<string, unknown> = {\n role: 'button',\n 'aria-label': `${overflowCount} more users`,\n }\n\n return {\n visibleUsers,\n overflowCount,\n overflowUsers,\n ariaProps,\n getAvatarAriaProps,\n getInitials,\n overflowBadgeProps,\n ids: {\n group: groupId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const avatarGroupStyles =\n 'flex items-center -space-x-2'\n\nexport const avatarVariants = cva({\n base: 'relative inline-flex items-center justify-center rounded-full border-2 border-background bg-muted text-muted-foreground font-medium overflow-hidden ring-2 ring-background',\n variants: {\n size: {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarOverflowBadgeVariants = cva({\n base: 'relative inline-flex items-center justify-center rounded-full border-2 border-background bg-muted text-muted-foreground font-medium ring-2 ring-background',\n variants: {\n size: {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarImageStyles =\n 'h-full w-full object-cover'\n\nexport const avatarPresenceDotVariants = cva({\n base: 'absolute bottom-0 right-0 rounded-full border-2 border-background',\n variants: {\n size: {\n xs: 'h-2 w-2',\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-3.5 w-3.5',\n xl: 'h-4 w-4',\n },\n status: {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n dnd: 'bg-red-500',\n },\n },\n defaultVariants: {\n size: 'md',\n status: 'offline',\n },\n})\n","import * as React from 'react'\nimport {\n createAvatarGroup,\n avatarGroupStyles,\n avatarVariants,\n avatarOverflowBadgeVariants,\n avatarImageStyles,\n avatarPresenceDotVariants,\n type AvatarUser,\n type AvatarSize,\n} from '@refraction-ui/avatar-group'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface AvatarGroupProps {\n users: AvatarUser[]\n max?: number\n size?: AvatarSize\n className?: string\n}\n\nexport function AvatarGroup({ users, max, size = 'md', className }: AvatarGroupProps) {\n const api = createAvatarGroup({ users, max, size })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(avatarGroupStyles, className) },\n api.visibleUsers.map((user) =>\n React.createElement(\n 'div',\n {\n key: user.id,\n className: avatarVariants({ size }),\n ...api.getAvatarAriaProps(user),\n },\n user.src\n ? React.createElement('img', {\n src: user.src,\n alt: user.name,\n className: avatarImageStyles,\n })\n : React.createElement('span', null, api.getInitials(user.name)),\n user.status &&\n React.createElement('span', {\n className: avatarPresenceDotVariants({ size, status: user.status }),\n }),\n ),\n ),\n api.overflowCount > 0 &&\n React.createElement(\n 'div',\n {\n className: avatarOverflowBadgeVariants({ size }),\n ...api.overflowBadgeProps,\n },\n `+${api.overflowCount}`,\n ),\n )\n}\n\nAvatarGroup.displayName = 'AvatarGroup'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface CardProps {\n /** Optional accessible role override */\n role?: string\n}\n\nexport interface CardAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createCard(props: CardProps = {}): CardAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n if (props.role) {\n ariaProps.role = props.role\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'card' },\n }\n}\n\nexport function createCardHeader(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-header' } }\n}\n\nexport function createCardTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-title' } }\n}\n\nexport function createCardDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-description' } }\n}\n\nexport function createCardContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-content' } }\n}\n\nexport function createCardFooter(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-footer' } }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const cardTokens: TokenContract = {\n name: 'card',\n tokens: {\n bg: { variable: '--rfr-card-bg', fallback: 'hsl(var(--card))' },\n fg: { variable: '--rfr-card-fg', fallback: 'hsl(var(--card-foreground))' },\n border: { variable: '--rfr-card-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const cardVariants = cva({\n base: 'rounded-lg border bg-card text-card-foreground shadow',\n variants: {\n padding: {\n none: '',\n default: 'p-6',\n compact: 'p-4',\n },\n },\n defaultVariants: {\n padding: 'none',\n },\n})\n\nexport const cardHeaderVariants = cva({\n base: 'flex flex-col space-y-1.5 p-6',\n})\n\nexport const cardTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight',\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const cardDescriptionVariants = cva({\n base: 'text-sm text-muted-foreground',\n})\n\nexport const cardContentVariants = cva({\n base: 'p-6 pt-0',\n})\n\nexport const cardFooterVariants = cva({\n base: 'flex items-center p-6 pt-0',\n})\n","import * as React from 'react'\nimport {\n createCard,\n createCardHeader,\n createCardTitle,\n createCardDescription,\n createCardContent,\n createCardFooter,\n cardVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardDescriptionVariants,\n cardContentVariants,\n cardFooterVariants,\n} from '@refraction-ui/card'\nimport { cn } from '@refraction-ui/shared'\n\n/**\n * Card -- a container with rounded corners, border, and shadow.\n */\nexport const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCard()\n return (\n <div\n ref={ref}\n className={cn(cardVariants(), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCard.displayName = 'Card'\n\n/**\n * CardHeader -- top section of a card, typically contains title and description.\n */\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardHeader()\n return (\n <div\n ref={ref}\n className={cn(cardHeaderVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardHeader.displayName = 'CardHeader'\n\n/**\n * CardTitle -- heading within a card header.\n */\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardTitle()\n return (\n <h3\n ref={ref}\n className={cn(cardTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardTitle.displayName = 'CardTitle'\n\n/**\n * CardDescription -- subtext within a card header.\n */\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardDescription()\n return (\n <p\n ref={ref}\n className={cn(cardDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardDescription.displayName = 'CardDescription'\n\n/**\n * CardContent -- main body content area of a card.\n */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardContent()\n return (\n <div\n ref={ref}\n className={cn(cardContentVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardContent.displayName = 'CardContent'\n\n/**\n * CardFooter -- bottom section of a card, typically contains actions.\n */\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardFooter()\n return (\n <div\n ref={ref}\n className={cn(cardFooterVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardFooter.displayName = 'CardFooter'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type CheckedState = boolean | 'indeterminate'\n\nexport interface CheckboxProps {\n checked?: CheckedState\n disabled?: boolean\n required?: boolean\n name?: string\n value?: string\n}\n\nexport interface CheckboxAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Current state */\n state: {\n checked: CheckedState\n disabled: boolean\n }\n}\n\nexport function createCheckbox(props: CheckboxProps = {}): CheckboxAPI {\n const { checked = false, disabled = false } = props\n const isInteractive = !disabled\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'checkbox',\n 'aria-checked': checked === 'indeterminate' ? 'mixed' : checked,\n }\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n if (checked === 'indeterminate') {\n dataAttributes['data-state'] = 'indeterminate'\n } else if (checked) {\n dataAttributes['data-state'] = 'checked'\n } else {\n dataAttributes['data-state'] = 'unchecked'\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n state: { checked, disabled },\n }\n}\n\n/** SVG path data for the check icon */\nexport const checkIconPath = 'M20 6L9 17l-5-5'\n\n/** SVG path data for the indeterminate/minus icon */\nexport const indeterminateIconPath = 'M5 12h14'\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const checkboxTokens: TokenContract = {\n name: 'checkbox',\n tokens: {\n bg: { variable: '--rfr-checkbox-bg', fallback: 'hsl(var(--background))' },\n 'bg-checked': { variable: '--rfr-checkbox-bg-checked', fallback: 'hsl(var(--primary))' },\n fg: { variable: '--rfr-checkbox-fg', fallback: 'hsl(var(--primary-foreground))' },\n border: { variable: '--rfr-checkbox-border', fallback: 'hsl(var(--primary))' },\n ring: { variable: '--rfr-checkbox-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const checkboxVariants = cva({\n base: 'peer shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n checked: {\n true: 'bg-primary text-primary-foreground',\n false: 'bg-background',\n indeterminate: 'bg-primary text-primary-foreground',\n },\n size: {\n sm: 'h-3.5 w-3.5',\n default: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCheckbox,\n checkboxVariants,\n checkIconPath,\n indeterminateIconPath,\n type CheckedState,\n} from '@refraction-ui/checkbox'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface CheckboxProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: CheckedState\n onCheckedChange?: (checked: CheckedState) => void\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Checkbox component -- renders a styled checkbox with check/indeterminate icons.\n *\n * Uses the headless @refraction-ui/checkbox core for state, ARIA, and keyboard handling.\n */\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ checked = false, onCheckedChange, disabled = false, size = 'default', className, ...props }, ref) => {\n const api = createCheckbox({ checked, disabled })\n\n const checkedVariant = checked === 'indeterminate' ? 'indeterminate' : checked ? 'true' : 'false'\n\n const handleClick = () => {\n if (api.isInteractive) {\n if (checked === 'indeterminate') {\n onCheckedChange?.(true)\n } else {\n onCheckedChange?.(!checked)\n }\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ') {\n e.preventDefault()\n if (api.isInteractive) {\n if (checked === 'indeterminate') {\n onCheckedChange?.(true)\n } else {\n onCheckedChange?.(!checked)\n }\n }\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(checkboxVariants({ checked: checkedVariant, size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {checked === true && (\n <svg\n className=\"h-full w-full\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={checkIconPath} />\n </svg>\n )}\n {checked === 'indeterminate' && (\n <svg\n className=\"h-full w-full\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={indeterminateIconPath} />\n </svg>\n )}\n </button>\n )\n },\n)\n\nCheckbox.displayName = 'Checkbox'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys } from '@refraction-ui/shared'\n\nexport type DatePickerView = 'calendar' | 'time'\n\nexport interface DatePickerProps {\n /** Selected date (controlled) */\n value?: Date\n /** Callback when value changes */\n onChange?: (date: Date) => void\n /** Minimum selectable date */\n minDate?: Date\n /** Maximum selectable date */\n maxDate?: Date\n /** Show time selection */\n showTime?: boolean\n /** Display format string */\n format?: string\n /** Placeholder text */\n placeholder?: string\n /** Whether the picker is open (controlled) */\n open?: boolean\n /** Default open state */\n defaultOpen?: boolean\n /** Callback when open changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface DatePickerState {\n open: boolean\n selectedDate: Date | undefined\n view: DatePickerView\n hours: number\n minutes: number\n currentMonth: Date\n}\n\nexport interface CalendarDay {\n date: Date\n isToday: boolean\n isSelected: boolean\n isCurrentMonth: boolean\n isDisabled: boolean\n}\n\nexport interface DatePickerAPI {\n /** Current state */\n state: DatePickerState\n /** Calendar days grid (42 cells) */\n days: CalendarDay[]\n /** Open the picker */\n openPicker(): void\n /** Close the picker */\n closePicker(): void\n /** Toggle the picker */\n togglePicker(): void\n /** Select a date from calendar */\n selectDate(date: Date): void\n /** Set hours */\n setHours(hours: number): void\n /** Set minutes */\n setMinutes(minutes: number): void\n /** Navigate to previous month */\n prevMonth(): void\n /** Navigate to next month */\n nextMonth(): void\n /** Switch between calendar and time views */\n setView(view: DatePickerView): void\n /** Format the selected date for display */\n formatDisplay(): string\n /** ARIA attributes for the trigger input */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the dropdown */\n dropdownProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the calendar grid */\n gridProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for a day cell */\n getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown>\n /** Keyboard handlers */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs */\n ids: {\n trigger: string\n dropdown: string\n grid: string\n label: string\n }\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction endOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n}\n\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nfunction padZero(n: number): string {\n return n < 10 ? `0${n}` : `${n}`\n}\n\nexport function formatDate(date: Date | undefined, format: string, showTime: boolean): string {\n if (!date) return ''\n const year = date.getFullYear()\n const month = padZero(date.getMonth() + 1)\n const day = padZero(date.getDate())\n const hours = padZero(date.getHours())\n const minutes = padZero(date.getMinutes())\n\n let result = format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n\n if (showTime) {\n result = result.replace('HH', hours).replace('mm', minutes)\n }\n\n return result\n}\n\nexport function createDatePicker(props: DatePickerProps = {}): DatePickerAPI {\n const {\n value,\n onChange,\n minDate,\n maxDate,\n showTime = false,\n format = showTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD',\n placeholder = 'Select date...',\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n } = props\n\n const today = new Date()\n let internalOpen = controlledOpen ?? defaultOpen\n let currentMonth = value ? startOfMonth(value) : startOfMonth(today)\n let view: DatePickerView = 'calendar'\n const hours = value ? value.getHours() : 0\n const minutes = value ? value.getMinutes() : 0\n\n const triggerId = generateId('rfr-datepicker-trigger')\n const dropdownId = generateId('rfr-datepicker-dropdown')\n const gridId = generateId('rfr-datepicker-grid')\n const labelId = generateId('rfr-datepicker-label')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return internalOpen\n }\n\n function isDateDisabled(date: Date): boolean {\n if (minDate && date < startOfDay(minDate)) return true\n if (maxDate && date > endOfDay(maxDate)) return true\n return false\n }\n\n function buildDays(): CalendarDay[] {\n const year = currentMonth.getFullYear()\n const month = currentMonth.getMonth()\n const first = new Date(year, month, 1)\n const startDow = first.getDay()\n const gridStart = new Date(year, month, 1 - startDow)\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + i,\n )\n days.push({\n date,\n isToday: isSameDay(date, today),\n isSelected: value ? isSameDay(date, value) : false,\n isCurrentMonth: date.getMonth() === month,\n isDisabled: isDateDisabled(date),\n })\n }\n return days\n }\n\n function openPicker(): void {\n internalOpen = true\n onOpenChange?.(true)\n }\n\n function closePicker(): void {\n internalOpen = false\n onOpenChange?.(false)\n }\n\n function togglePicker(): void {\n if (isOpen()) {\n closePicker()\n } else {\n openPicker()\n }\n }\n\n function selectDate(date: Date): void {\n if (isDateDisabled(date)) return\n const newDate = new Date(date)\n if (value) {\n newDate.setHours(value.getHours())\n newDate.setMinutes(value.getMinutes())\n }\n onChange?.(newDate)\n if (!showTime) {\n closePicker()\n }\n }\n\n function setHours(h: number): void {\n if (h < 0 || h > 23) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setHours(h)\n onChange?.(newDate)\n }\n\n function setMinutes(m: number): void {\n if (m < 0 || m > 59) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setMinutes(m)\n onChange?.(newDate)\n }\n\n function prevMonth(): void {\n currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)\n }\n\n function nextMonth(): void {\n currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)\n }\n\n function setView(v: DatePickerView): void {\n view = v\n }\n\n function formatDisplay(): string {\n return value ? formatDate(value, format, showTime) : placeholder\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closePicker()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': dropdownId,\n 'aria-haspopup': 'dialog',\n id: triggerId,\n role: 'combobox',\n }\n\n const dropdownProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': true,\n 'aria-labelledby': labelId,\n id: dropdownId,\n }\n\n const gridProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'grid',\n 'aria-labelledby': labelId,\n id: gridId,\n }\n\n function getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'gridcell',\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n 'aria-current': day.isToday ? ('date' as const) : undefined,\n 'aria-label': `${DAY_NAMES[day.date.getDay()]}, ${day.date.toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })}`,\n }\n }\n\n return {\n state: {\n open: isOpen(),\n selectedDate: value,\n view,\n hours,\n minutes,\n currentMonth,\n },\n days: buildDays(),\n openPicker,\n closePicker,\n togglePicker,\n selectDate,\n setHours,\n setMinutes,\n prevMonth,\n nextMonth,\n setView,\n formatDisplay,\n triggerProps,\n dropdownProps,\n gridProps,\n getDayAriaProps,\n keyboardHandlers,\n ids: {\n trigger: triggerId,\n dropdown: dropdownId,\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const datePickerTriggerStyles =\n 'inline-flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer'\n\nexport const datePickerDropdownStyles =\n 'absolute z-50 mt-1 rounded-md border bg-popover p-4 text-popover-foreground shadow-md'\n\nexport const datePickerGridStyles = 'w-full border-collapse'\n\nexport const datePickerDayVariants = cva({\n base: 'inline-flex h-8 w-8 items-center justify-center rounded-md text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground',\n variants: {\n state: {\n default: '',\n selected: 'bg-primary text-primary-foreground hover:bg-primary/90',\n today: 'border border-accent-foreground',\n disabled: 'text-muted-foreground opacity-50 pointer-events-none',\n outside: 'text-muted-foreground opacity-30',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n\nexport const datePickerTimeStyles =\n 'flex items-center gap-2 mt-3 pt-3 border-t'\n\nexport const datePickerTimeInputStyles =\n 'w-14 rounded-md border border-input bg-background px-2 py-1 text-sm text-center'\n","import * as React from 'react'\nimport {\n createDatePicker,\n formatDate,\n datePickerTriggerStyles,\n datePickerDropdownStyles,\n datePickerDayVariants,\n datePickerTimeStyles,\n datePickerTimeInputStyles,\n type DatePickerView,\n type CalendarDay,\n} from '@refraction-ui/date-picker'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface DatePickerProps {\n value?: Date\n onChange?: (date: Date) => void\n minDate?: Date\n maxDate?: Date\n showTime?: boolean\n format?: string\n placeholder?: string\n className?: string\n disabled?: boolean\n}\n\nexport function DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n showTime = false,\n format,\n placeholder,\n className,\n disabled = false,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [currentMonth, setCurrentMonth] = React.useState(() =>\n value ? new Date(value.getFullYear(), value.getMonth(), 1) : new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n )\n const [view, setView] = React.useState<DatePickerView>('calendar')\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const api = React.useMemo(\n () =>\n createDatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n showTime,\n format,\n placeholder,\n open,\n onOpenChange: setOpen,\n }),\n [value, onChange, minDate, maxDate, showTime, format, placeholder, open],\n )\n\n // Rebuild days based on the currentMonth state\n const days = React.useMemo(() => {\n const dp = createDatePicker({\n value,\n minDate,\n maxDate,\n open: true,\n })\n // Manually shift the month by adjusting the api\n const tempApi = createDatePicker({\n value,\n minDate,\n maxDate,\n open: true,\n })\n return tempApi.days\n }, [value, minDate, maxDate, currentMonth])\n\n // Close when clicking outside\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [open])\n\n // Close on Escape\n React.useEffect(() => {\n if (!open) return\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault()\n setOpen(false)\n }\n }\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open])\n\n const displayValue = api.formatDisplay()\n\n const handleSelectDate = (date: Date) => {\n const newDate = new Date(date)\n if (value) {\n newDate.setHours(value.getHours())\n newDate.setMinutes(value.getMinutes())\n }\n onChange?.(newDate)\n if (!showTime) {\n setOpen(false)\n }\n }\n\n const handleHoursChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const h = parseInt(e.target.value, 10)\n if (isNaN(h) || h < 0 || h > 23) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setHours(h)\n onChange?.(newDate)\n }\n\n const handleMinutesChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const m = parseInt(e.target.value, 10)\n if (isNaN(m) || m < 0 || m > 59) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setMinutes(m)\n onChange?.(newDate)\n }\n\n const monthLabel = currentMonth.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })\n\n return React.createElement(\n 'div',\n { ref: containerRef, className: cn('relative inline-block', className) },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: cn(datePickerTriggerStyles, disabled && 'opacity-50 cursor-not-allowed'),\n onClick: () => !disabled && setOpen(!open),\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n disabled,\n },\n displayValue,\n ),\n open &&\n React.createElement(\n 'div',\n {\n className: datePickerDropdownStyles,\n role: 'dialog',\n 'aria-modal': true,\n },\n React.createElement(\n 'div',\n { className: 'flex items-center justify-between mb-3' },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'p-1 hover:bg-accent rounded cursor-pointer',\n onClick: () => setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)),\n 'aria-label': 'Previous month',\n },\n '\\u2039',\n ),\n React.createElement('span', { className: 'text-sm font-medium' }, monthLabel),\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'p-1 hover:bg-accent rounded cursor-pointer',\n onClick: () => setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)),\n 'aria-label': 'Next month',\n },\n '\\u203A',\n ),\n ),\n React.createElement(\n 'div',\n { className: 'grid grid-cols-7 gap-0 text-center', role: 'grid' },\n ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'].map((d) =>\n React.createElement('div', { key: d, className: 'text-xs text-muted-foreground py-1 font-medium' }, d),\n ),\n api.days.map((day, i) => {\n let state: 'default' | 'selected' | 'today' | 'disabled' | 'outside' = 'default'\n if (day.isDisabled) state = 'disabled'\n else if (day.isSelected) state = 'selected'\n else if (day.isToday) state = 'today'\n else if (!day.isCurrentMonth) state = 'outside'\n\n return React.createElement(\n 'button',\n {\n key: i,\n type: 'button',\n className: datePickerDayVariants({ state }),\n onClick: () => !day.isDisabled && handleSelectDate(day.date),\n disabled: day.isDisabled,\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n },\n day.date.getDate(),\n )\n }),\n ),\n showTime &&\n React.createElement(\n 'div',\n { className: datePickerTimeStyles },\n React.createElement('span', { className: 'text-sm text-muted-foreground' }, 'Time:'),\n React.createElement('input', {\n type: 'number',\n min: 0,\n max: 23,\n value: value ? value.getHours() : 0,\n onChange: handleHoursChange,\n className: datePickerTimeInputStyles,\n 'aria-label': 'Hours',\n }),\n React.createElement('span', { className: 'text-muted-foreground' }, ':'),\n React.createElement('input', {\n type: 'number',\n min: 0,\n max: 59,\n value: value ? value.getMinutes() : 0,\n onChange: handleMinutesChange,\n className: datePickerTimeInputStyles,\n 'aria-label': 'Minutes',\n }),\n ),\n ),\n )\n}\n\nDatePicker.displayName = 'DatePicker'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DiffViewerTheme = 'light' | 'dark'\nexport type DiffViewMode = 'side-by-side' | 'inline'\n\nexport type DiffFileStatus = 'added' | 'modified' | 'deleted' | 'renamed'\n\nexport interface DiffFile {\n /** File path */\n path: string\n /** Change status */\n status: DiffFileStatus\n /** Lines added */\n additions: number\n /** Lines deleted */\n deletions: number\n /** Unified diff content for this file */\n diff?: string\n /** Old path for renamed files */\n oldPath?: string\n}\n\nexport interface DiffViewerProps {\n /** Files in this diff */\n files?: DiffFile[]\n /** Index of the active file */\n activeFileIndex?: number\n /** View mode */\n viewMode?: DiffViewMode\n /** Theme */\n theme?: DiffViewerTheme\n /** Language for syntax highlighting */\n language?: string\n /** Whether the sidebar is visible */\n sidebarOpen?: boolean\n /** Callback when active file changes */\n onFileSelect?: (index: number) => void\n /** Callback when view mode changes */\n onViewModeChange?: (mode: DiffViewMode) => void\n /** Callback when sidebar toggled */\n onSidebarToggle?: () => void\n}\n\nexport interface DiffViewerState {\n activeFileIndex: number\n viewMode: DiffViewMode\n theme: DiffViewerTheme\n language: string\n sidebarOpen: boolean\n files: DiffFile[]\n}\n\nexport interface DiffViewerAPI {\n /** Current viewer state */\n state: DiffViewerState\n /** ARIA attributes for the root element */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Select a file by index */\n selectFile: (index: number) => void\n /** Move to next file */\n nextFile: () => void\n /** Move to previous file */\n prevFile: () => void\n /** Toggle view mode */\n toggleViewMode: () => void\n /** Toggle sidebar */\n toggleSidebar: () => void\n /** Get language label for a file path */\n getLanguageForFile: (path: string) => string\n /** Get human-readable file status icon */\n getFileStatusIcon: (status: DiffFileStatus) => string\n /** Get total additions across all files */\n totalAdditions: () => number\n /** Get total deletions across all files */\n totalDeletions: () => number\n}\n\n// ---------------------------------------------------------------------------\n// Language detection\n// ---------------------------------------------------------------------------\n\nconst extToLanguage: Record<string, string> = {\n ts: 'typescript',\n tsx: 'typescript',\n js: 'javascript',\n jsx: 'javascript',\n py: 'python',\n go: 'go',\n rs: 'rust',\n rb: 'ruby',\n java: 'java',\n swift: 'swift',\n kt: 'kotlin',\n dart: 'dart',\n php: 'php',\n lua: 'lua',\n r: 'r',\n scala: 'scala',\n json: 'json',\n yaml: 'yaml',\n yml: 'yaml',\n md: 'markdown',\n html: 'html',\n css: 'css',\n scss: 'scss',\n sql: 'sql',\n sh: 'shell',\n bash: 'shell',\n zsh: 'shell',\n xml: 'xml',\n toml: 'toml',\n proto: 'protobuf',\n dockerfile: 'dockerfile',\n cpp: 'cpp',\n c: 'c',\n}\n\nfunction getLanguageForFile(filePath: string): string {\n const ext = filePath.split('.').pop()?.toLowerCase() || ''\n const basename = filePath.split('/').pop()?.toLowerCase() || ''\n if (basename === 'dockerfile') return 'dockerfile'\n return extToLanguage[ext] || 'plaintext'\n}\n\n// ---------------------------------------------------------------------------\n// Status icons\n// ---------------------------------------------------------------------------\n\nconst statusIcons: Record<DiffFileStatus, string> = {\n added: '\\u{1F7E2}', // green circle\n modified: '\\u{1F7E1}', // yellow circle\n deleted: '\\u{1F534}', // red circle\n renamed: '\\u{1F535}', // blue circle\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/**\n * Create a headless diff viewer API.\n *\n * Manages file selection, view mode, sidebar state, and produces ARIA/data\n * attributes. The actual rendering (Monaco DiffEditor, custom renderer, etc.)\n * is handled by framework-specific wrappers.\n */\nexport function createDiffViewer(props: DiffViewerProps = {}): DiffViewerAPI {\n const {\n files = [],\n activeFileIndex = 0,\n viewMode = 'side-by-side',\n theme = 'dark',\n language,\n sidebarOpen = true,\n onFileSelect,\n onViewModeChange,\n onSidebarToggle,\n } = props\n\n let currentIndex = Math.min(activeFileIndex, Math.max(0, files.length - 1))\n let currentViewMode = viewMode\n let currentSidebarOpen = sidebarOpen\n\n const state: DiffViewerState = {\n activeFileIndex: currentIndex,\n viewMode: currentViewMode,\n theme,\n language: language || (files[currentIndex] ? getLanguageForFile(files[currentIndex].path) : 'plaintext'),\n sidebarOpen: currentSidebarOpen,\n files,\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'region',\n 'aria-label': 'Diff viewer',\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-view-mode': currentViewMode,\n 'data-theme': theme,\n 'data-file-count': String(files.length),\n }\n\n if (!currentSidebarOpen) {\n dataAttributes['data-sidebar-collapsed'] = ''\n }\n\n function selectFile(index: number) {\n if (index >= 0 && index < files.length) {\n currentIndex = index\n state.activeFileIndex = index\n state.language = language || getLanguageForFile(files[index].path)\n onFileSelect?.(index)\n }\n }\n\n function nextFile() {\n if (currentIndex < files.length - 1) {\n selectFile(currentIndex + 1)\n }\n }\n\n function prevFile() {\n if (currentIndex > 0) {\n selectFile(currentIndex - 1)\n }\n }\n\n function toggleViewMode() {\n currentViewMode = currentViewMode === 'side-by-side' ? 'inline' : 'side-by-side'\n state.viewMode = currentViewMode\n dataAttributes['data-view-mode'] = currentViewMode\n onViewModeChange?.(currentViewMode)\n }\n\n function toggleSidebar() {\n currentSidebarOpen = !currentSidebarOpen\n state.sidebarOpen = currentSidebarOpen\n if (currentSidebarOpen) {\n delete dataAttributes['data-sidebar-collapsed']\n } else {\n dataAttributes['data-sidebar-collapsed'] = ''\n }\n onSidebarToggle?.()\n }\n\n function totalAdditions(): number {\n return files.reduce((sum, f) => sum + f.additions, 0)\n }\n\n function totalDeletions(): number {\n return files.reduce((sum, f) => sum + f.deletions, 0)\n }\n\n return {\n state,\n ariaProps,\n dataAttributes,\n selectFile,\n nextFile,\n prevFile,\n toggleViewMode,\n toggleSidebar,\n getLanguageForFile,\n getFileStatusIcon: (status: DiffFileStatus) => statusIcons[status] || '\\u{26AA}',\n totalAdditions,\n totalDeletions,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const diffViewerTokens: TokenContract = {\n name: 'diff-viewer',\n tokens: {\n bg: { variable: '--rfr-diff-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-diff-fg', fallback: 'hsl(var(--foreground))' },\n sidebarBg: { variable: '--rfr-diff-sidebar-bg', fallback: 'hsl(var(--muted))' },\n headerBg: { variable: '--rfr-diff-header-bg', fallback: 'hsl(var(--muted))' },\n border: { variable: '--rfr-diff-border', fallback: 'hsl(var(--border))' },\n addBg: { variable: '--rfr-diff-add-bg', fallback: 'rgba(46, 160, 67, 0.15)' },\n delBg: { variable: '--rfr-diff-del-bg', fallback: 'rgba(248, 81, 73, 0.15)' },\n addFg: { variable: '--rfr-diff-add-fg', fallback: '#3fb950' },\n delFg: { variable: '--rfr-diff-del-fg', fallback: '#f85149' },\n statusbar: { variable: '--rfr-diff-statusbar', fallback: 'hsl(var(--primary))' },\n statusbarFg: { variable: '--rfr-diff-statusbar-fg', fallback: 'hsl(var(--primary-foreground))' },\n },\n}\n\nexport const diffViewerVariants = cva({\n base: 'flex flex-col overflow-hidden font-sans text-sm',\n variants: {\n theme: {\n light: 'bg-white text-gray-900',\n dark: 'bg-gray-950 text-gray-100',\n },\n fullscreen: {\n 'true': 'h-screen',\n 'false': '',\n },\n },\n defaultVariants: {\n theme: 'dark',\n fullscreen: 'true',\n },\n})\n\nexport const sidebarVariants = cva({\n base: 'border-r overflow-auto flex-shrink-0',\n variants: {\n theme: {\n light: 'bg-gray-50 border-gray-200',\n dark: 'bg-gray-900 border-gray-800',\n },\n },\n defaultVariants: {\n theme: 'dark',\n },\n})\n\nexport const sidebarItemVariants = cva({\n base: 'px-2.5 py-1 cursor-pointer text-xs font-mono transition-colors',\n variants: {\n active: {\n 'true': 'border-l-2 border-blue-500',\n 'false': 'border-l-2 border-transparent',\n },\n theme: {\n light: '',\n dark: '',\n },\n },\n compoundVariants: [\n { active: 'true', theme: 'dark', class: 'bg-gray-800 text-gray-100' },\n { active: 'false', theme: 'dark', class: 'text-gray-400 hover:bg-gray-800/50' },\n { active: 'true', theme: 'light', class: 'bg-blue-50 text-gray-900' },\n { active: 'false', theme: 'light', class: 'text-gray-600 hover:bg-gray-100' },\n ],\n defaultVariants: {\n active: 'false',\n theme: 'dark',\n },\n})\n\nexport const tabBarVariants = cva({\n base: 'flex items-center border-b overflow-auto flex-shrink-0',\n variants: {\n theme: {\n light: 'bg-gray-50 border-gray-200',\n dark: 'bg-gray-900 border-gray-800',\n },\n },\n defaultVariants: {\n theme: 'dark',\n },\n})\n\nexport const tabVariants = cva({\n base: 'px-3 h-[35px] flex items-center gap-1 cursor-pointer text-xs font-mono border-r shrink-0',\n variants: {\n active: {\n 'true': '',\n 'false': '',\n },\n theme: {\n light: 'border-gray-200',\n dark: 'border-gray-800',\n },\n },\n compoundVariants: [\n { active: 'true', theme: 'dark', class: 'bg-gray-950 text-gray-100 border-b-gray-950 -mb-px' },\n { active: 'false', theme: 'dark', class: 'text-gray-400' },\n { active: 'true', theme: 'light', class: 'bg-white text-gray-900 border-b-white -mb-px' },\n { active: 'false', theme: 'light', class: 'text-gray-500' },\n ],\n defaultVariants: {\n active: 'false',\n theme: 'dark',\n },\n})\n\nexport const statusBarVariants = cva({\n base: 'h-[22px] flex items-center px-2.5 gap-3 text-[11px] font-mono flex-shrink-0',\n variants: {\n theme: {\n light: 'bg-blue-600 text-white',\n dark: 'bg-blue-700 text-white',\n },\n },\n defaultVariants: {\n theme: 'dark',\n },\n})\n","import * as React from 'react'\nimport {\n createDiffViewer,\n diffViewerVariants,\n sidebarVariants,\n sidebarItemVariants,\n tabBarVariants,\n tabVariants,\n statusBarVariants,\n type DiffFile,\n type DiffViewerTheme,\n type DiffViewMode,\n} from '@refraction-ui/diff-viewer'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface DiffViewerProps {\n /** Files in this diff */\n files: DiffFile[]\n /** Original file content (left side) */\n original?: string\n /** Modified file content (right side) */\n modified?: string\n /** Language for syntax highlighting (auto-detected from file if omitted) */\n language?: string\n /** Monaco theme name */\n monacoTheme?: string\n /** Color theme */\n theme?: DiffViewerTheme\n /** View mode */\n viewMode?: DiffViewMode\n /** Whether to show the file sidebar */\n showSidebar?: boolean\n /** Whether to show the tab bar */\n showTabs?: boolean\n /** Whether to show the status bar */\n showStatusBar?: boolean\n /** Sidebar width in pixels */\n sidebarWidth?: number\n /** Active file index */\n activeFileIndex?: number\n /** Called when the active file changes */\n onFileSelect?: (index: number) => void\n /** Called when view mode changes */\n onViewModeChange?: (mode: DiffViewMode) => void\n /** Title shown in the status bar */\n statusBarTitle?: string\n /** Status text shown in the status bar */\n statusBarStatus?: string\n /** Additional class name */\n className?: string\n /** Monaco DiffEditor options override */\n editorOptions?: Record<string, unknown>\n}\n\n// ---------------------------------------------------------------------------\n// Lazy Monaco import\n// ---------------------------------------------------------------------------\n\nconst MonacoDiffEditor = React.lazy(() =>\n import('@monaco-editor/react').then((m) => ({ default: m.DiffEditor })),\n)\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const DiffViewer = React.forwardRef<HTMLDivElement, DiffViewerProps>(\n (\n {\n files,\n original = '',\n modified = '',\n language,\n monacoTheme = 'vs-dark',\n theme = 'dark',\n viewMode: controlledViewMode = 'side-by-side',\n showSidebar = true,\n showTabs = true,\n showStatusBar = true,\n sidebarWidth = 220,\n activeFileIndex: controlledIndex = 0,\n onFileSelect,\n onViewModeChange,\n statusBarTitle,\n statusBarStatus,\n className,\n editorOptions,\n },\n ref,\n ) => {\n const [activeIdx, setActiveIdx] = React.useState(controlledIndex)\n const [sidebarOpen, setSidebarOpen] = React.useState(showSidebar)\n const [viewMode, setViewMode] = React.useState<DiffViewMode>(controlledViewMode)\n\n // Sync controlled props\n React.useEffect(() => setActiveIdx(controlledIndex), [controlledIndex])\n React.useEffect(() => setViewMode(controlledViewMode), [controlledViewMode])\n\n const api = React.useMemo(\n () =>\n createDiffViewer({\n files,\n activeFileIndex: activeIdx,\n viewMode,\n theme,\n language,\n sidebarOpen,\n onFileSelect: (i: number) => {\n setActiveIdx(i)\n onFileSelect?.(i)\n },\n onViewModeChange: (m: DiffViewMode) => {\n setViewMode(m)\n onViewModeChange?.(m)\n },\n onSidebarToggle: () => setSidebarOpen((s) => !s),\n }),\n [files, activeIdx, viewMode, theme, language, sidebarOpen, onFileSelect, onViewModeChange],\n )\n\n const activeFile = files[activeIdx]\n const detectedLang = language || (activeFile ? api.getLanguageForFile(activeFile.path) : 'plaintext')\n\n // Keyboard navigation\n React.useEffect(() => {\n function onKey(e: KeyboardEvent) {\n if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return\n if (e.key === 'j') {\n setActiveIdx((i) => {\n const next = Math.min(i + 1, files.length - 1)\n onFileSelect?.(next)\n return next\n })\n } else if (e.key === 'k') {\n setActiveIdx((i) => {\n const prev = Math.max(i - 1, 0)\n onFileSelect?.(prev)\n return prev\n })\n } else if (e.key === 'b') {\n setSidebarOpen((s) => !s)\n }\n }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [files.length, onFileSelect])\n\n return (\n <div\n ref={ref}\n className={cn(diffViewerVariants({ theme, fullscreen: 'true' }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n >\n {/* Main area: sidebar + editor */}\n <div style={{ flex: 1, display: 'flex', overflow: 'hidden' }}>\n {/* File sidebar */}\n {sidebarOpen && (\n <div className={sidebarVariants({ theme })} style={{ width: sidebarWidth }}>\n <div className=\"px-2.5 py-2 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Files ({files.length})\n </div>\n {files.map((f, i) => {\n const active = i === activeIdx\n const fname = f.path.split('/').pop() || f.path\n const dir = f.path.split('/').slice(0, -1).join('/')\n return (\n <div\n key={f.path}\n onClick={() => {\n setActiveIdx(i)\n onFileSelect?.(i)\n }}\n className={sidebarItemVariants({ active: active ? 'true' : 'false', theme })}\n >\n <div className=\"flex items-center gap-1\">\n <span className=\"text-[10px]\">{api.getFileStatusIcon(f.status)}</span>\n <span className={active ? '' : 'opacity-70'}>{fname}</span>\n <span className=\"ml-auto text-[10px]\">\n <span className=\"text-green-500\">+{f.additions}</span>\n {f.deletions > 0 && <span className=\"text-red-500\">-{f.deletions}</span>}\n </span>\n </div>\n {dir && (\n <div className=\"text-[10px] opacity-50 mt-0.5 pl-4\">{dir}</div>\n )}\n </div>\n )\n })}\n </div>\n )}\n\n {/* Editor area */}\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', overflow: 'hidden' }}>\n {/* Tab bar */}\n {showTabs && activeFile && (\n <div className={tabBarVariants({ theme })}>\n {files.map((f, i) => {\n const active = i === activeIdx\n const fname = f.path.split('/').pop() || f.path\n return (\n <div\n key={f.path}\n onClick={() => {\n setActiveIdx(i)\n onFileSelect?.(i)\n }}\n className={tabVariants({ active: active ? 'true' : 'false', theme })}\n >\n <span className=\"text-[9px]\">{api.getFileStatusIcon(f.status)}</span>\n {fname}\n </div>\n )\n })}\n </div>\n )}\n\n {/* Monaco DiffEditor */}\n <div style={{ flex: 1 }}>\n <React.Suspense\n fallback={\n <div className=\"flex items-center justify-center h-full text-xs opacity-50\">\n Loading editor...\n </div>\n }\n >\n <MonacoDiffEditor\n original={original}\n modified={modified}\n language={detectedLang}\n theme={monacoTheme}\n options={{\n readOnly: true,\n renderSideBySide: viewMode === 'side-by-side',\n minimap: { enabled: true, scale: 1, showSlider: 'mouseover' },\n fontSize: 13,\n lineHeight: 20,\n fontFamily: \"'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, monospace\",\n fontLigatures: true,\n scrollBeyondLastLine: false,\n renderOverviewRuler: true,\n scrollbar: { verticalScrollbarSize: 10, horizontalScrollbarSize: 10 },\n padding: { top: 8, bottom: 8 },\n renderWhitespace: 'selection',\n bracketPairColorization: { enabled: true },\n guides: { indentation: true },\n smoothScrolling: true,\n cursorBlinking: 'smooth',\n ...editorOptions,\n }}\n />\n </React.Suspense>\n </div>\n </div>\n </div>\n\n {/* Status bar */}\n {showStatusBar && (\n <div className={statusBarVariants({ theme })}>\n {statusBarTitle && <span>{statusBarTitle}</span>}\n {activeFile && <span>{activeFile.path}</span>}\n <span style={{ marginLeft: 'auto' }}>\n +{api.totalAdditions()} -{api.totalDeletions()}\n </span>\n {statusBarStatus && <span>{statusBarStatus}</span>}\n <span>\n {files.length} {files.length === 1 ? 'file' : 'files'}\n </span>\n </div>\n )}\n </div>\n )\n },\n)\n\nDiffViewer.displayName = 'DiffViewer'\n","export type EmojiCategory =\n | 'smileys'\n | 'people'\n | 'nature'\n | 'food'\n | 'travel'\n | 'activities'\n | 'objects'\n | 'symbols'\n | 'flags'\n\nexport interface EmojiEntry {\n emoji: string\n name: string\n category: EmojiCategory\n keywords: string[]\n}\n\nexport const EMOJI_DATA: Record<EmojiCategory, EmojiEntry[]> = {\n smileys: [\n { emoji: '\\u{1F600}', name: 'grinning face', category: 'smileys', keywords: ['happy', 'smile', 'grin'] },\n { emoji: '\\u{1F603}', name: 'grinning face with big eyes', category: 'smileys', keywords: ['happy', 'smile'] },\n { emoji: '\\u{1F604}', name: 'grinning face with smiling eyes', category: 'smileys', keywords: ['happy', 'joy'] },\n { emoji: '\\u{1F601}', name: 'beaming face', category: 'smileys', keywords: ['happy', 'grin', 'beam'] },\n { emoji: '\\u{1F606}', name: 'grinning squinting face', category: 'smileys', keywords: ['laugh', 'happy'] },\n { emoji: '\\u{1F605}', name: 'grinning face with sweat', category: 'smileys', keywords: ['nervous', 'laugh'] },\n { emoji: '\\u{1F923}', name: 'rolling on the floor laughing', category: 'smileys', keywords: ['lol', 'rofl', 'laugh'] },\n { emoji: '\\u{1F602}', name: 'face with tears of joy', category: 'smileys', keywords: ['laugh', 'cry', 'joy', 'lol'] },\n { emoji: '\\u{1F642}', name: 'slightly smiling face', category: 'smileys', keywords: ['smile', 'happy'] },\n { emoji: '\\u{1F643}', name: 'upside-down face', category: 'smileys', keywords: ['silly', 'sarcasm'] },\n { emoji: '\\u{1F609}', name: 'winking face', category: 'smileys', keywords: ['wink', 'flirt'] },\n { emoji: '\\u{1F60A}', name: 'smiling face with smiling eyes', category: 'smileys', keywords: ['blush', 'happy'] },\n { emoji: '\\u{1F607}', name: 'smiling face with halo', category: 'smileys', keywords: ['angel', 'innocent'] },\n { emoji: '\\u{1F970}', name: 'smiling face with hearts', category: 'smileys', keywords: ['love', 'crush', 'adore'] },\n { emoji: '\\u{1F60D}', name: 'smiling face with heart-eyes', category: 'smileys', keywords: ['love', 'heart'] },\n { emoji: '\\u{1F929}', name: 'star-struck', category: 'smileys', keywords: ['star', 'eyes', 'wow'] },\n { emoji: '\\u{1F618}', name: 'face blowing a kiss', category: 'smileys', keywords: ['kiss', 'love'] },\n { emoji: '\\u{1F617}', name: 'kissing face', category: 'smileys', keywords: ['kiss'] },\n { emoji: '\\u{1F61A}', name: 'kissing face with closed eyes', category: 'smileys', keywords: ['kiss', 'love'] },\n { emoji: '\\u{1F619}', name: 'kissing face with smiling eyes', category: 'smileys', keywords: ['kiss'] },\n { emoji: '\\u{1F60B}', name: 'face savoring food', category: 'smileys', keywords: ['yummy', 'delicious'] },\n { emoji: '\\u{1F61C}', name: 'winking face with tongue', category: 'smileys', keywords: ['tongue', 'wink', 'silly'] },\n { emoji: '\\u{1F61D}', name: 'squinting face with tongue', category: 'smileys', keywords: ['tongue', 'silly'] },\n { emoji: '\\u{1F911}', name: 'money-mouth face', category: 'smileys', keywords: ['money', 'rich'] },\n { emoji: '\\u{1F917}', name: 'hugging face', category: 'smileys', keywords: ['hug', 'warm'] },\n { emoji: '\\u{1F914}', name: 'thinking face', category: 'smileys', keywords: ['think', 'hmm'] },\n { emoji: '\\u{1F910}', name: 'zipper-mouth face', category: 'smileys', keywords: ['secret', 'quiet', 'zip'] },\n { emoji: '\\u{1F928}', name: 'face with raised eyebrow', category: 'smileys', keywords: ['skeptical', 'doubt'] },\n { emoji: '\\u{1F610}', name: 'neutral face', category: 'smileys', keywords: ['meh', 'neutral'] },\n { emoji: '\\u{1F611}', name: 'expressionless face', category: 'smileys', keywords: ['blank', 'expressionless'] },\n ],\n people: [\n { emoji: '\\u{1F44B}', name: 'waving hand', category: 'people', keywords: ['wave', 'hello', 'hi', 'bye'] },\n { emoji: '\\u{1F91A}', name: 'raised back of hand', category: 'people', keywords: ['hand', 'backhand'] },\n { emoji: '\\u{1F590}', name: 'hand with fingers splayed', category: 'people', keywords: ['hand', 'fingers'] },\n { emoji: '\\u270B', name: 'raised hand', category: 'people', keywords: ['hand', 'stop', 'high five'] },\n { emoji: '\\u{1F596}', name: 'vulcan salute', category: 'people', keywords: ['spock', 'star trek'] },\n { emoji: '\\u{1F44C}', name: 'OK hand', category: 'people', keywords: ['ok', 'perfect', 'fine'] },\n { emoji: '\\u270C', name: 'victory hand', category: 'people', keywords: ['peace', 'victory', 'v'] },\n { emoji: '\\u{1F91E}', name: 'crossed fingers', category: 'people', keywords: ['luck', 'hope'] },\n { emoji: '\\u{1F918}', name: 'love-you gesture', category: 'people', keywords: ['love', 'rock'] },\n { emoji: '\\u{1F919}', name: 'call me hand', category: 'people', keywords: ['call', 'phone'] },\n { emoji: '\\u{1F448}', name: 'backhand index pointing left', category: 'people', keywords: ['left', 'point'] },\n { emoji: '\\u{1F449}', name: 'backhand index pointing right', category: 'people', keywords: ['right', 'point'] },\n { emoji: '\\u{1F446}', name: 'backhand index pointing up', category: 'people', keywords: ['up', 'point'] },\n { emoji: '\\u{1F447}', name: 'backhand index pointing down', category: 'people', keywords: ['down', 'point'] },\n { emoji: '\\u261D', name: 'index pointing up', category: 'people', keywords: ['up', 'point'] },\n { emoji: '\\u{1F44D}', name: 'thumbs up', category: 'people', keywords: ['like', 'yes', 'approve', 'thumbsup'] },\n { emoji: '\\u{1F44E}', name: 'thumbs down', category: 'people', keywords: ['dislike', 'no', 'disapprove'] },\n { emoji: '\\u270A', name: 'raised fist', category: 'people', keywords: ['fist', 'power'] },\n { emoji: '\\u{1F44A}', name: 'oncoming fist', category: 'people', keywords: ['punch', 'fist bump'] },\n { emoji: '\\u{1F91B}', name: 'left-facing fist', category: 'people', keywords: ['fist'] },\n { emoji: '\\u{1F91C}', name: 'right-facing fist', category: 'people', keywords: ['fist'] },\n { emoji: '\\u{1F44F}', name: 'clapping hands', category: 'people', keywords: ['clap', 'applause', 'bravo'] },\n { emoji: '\\u{1F64C}', name: 'raising hands', category: 'people', keywords: ['celebrate', 'hooray'] },\n { emoji: '\\u{1F450}', name: 'open hands', category: 'people', keywords: ['hands', 'open'] },\n { emoji: '\\u{1F932}', name: 'palms up together', category: 'people', keywords: ['prayer', 'please'] },\n { emoji: '\\u{1F91D}', name: 'handshake', category: 'people', keywords: ['deal', 'agree', 'shake'] },\n { emoji: '\\u{1F64F}', name: 'folded hands', category: 'people', keywords: ['pray', 'please', 'thank you'] },\n ],\n nature: [\n { emoji: '\\u{1F436}', name: 'dog face', category: 'nature', keywords: ['dog', 'puppy', 'pet'] },\n { emoji: '\\u{1F431}', name: 'cat face', category: 'nature', keywords: ['cat', 'kitten', 'pet'] },\n { emoji: '\\u{1F42D}', name: 'mouse face', category: 'nature', keywords: ['mouse', 'rodent'] },\n { emoji: '\\u{1F439}', name: 'hamster', category: 'nature', keywords: ['hamster', 'pet'] },\n { emoji: '\\u{1F430}', name: 'rabbit face', category: 'nature', keywords: ['rabbit', 'bunny'] },\n { emoji: '\\u{1F98A}', name: 'fox', category: 'nature', keywords: ['fox', 'animal'] },\n { emoji: '\\u{1F43B}', name: 'bear', category: 'nature', keywords: ['bear', 'animal'] },\n { emoji: '\\u{1F43C}', name: 'panda', category: 'nature', keywords: ['panda', 'animal'] },\n { emoji: '\\u{1F428}', name: 'koala', category: 'nature', keywords: ['koala', 'animal'] },\n { emoji: '\\u{1F42F}', name: 'tiger face', category: 'nature', keywords: ['tiger', 'animal'] },\n { emoji: '\\u{1F981}', name: 'lion', category: 'nature', keywords: ['lion', 'animal'] },\n { emoji: '\\u{1F42E}', name: 'cow face', category: 'nature', keywords: ['cow', 'animal'] },\n { emoji: '\\u{1F437}', name: 'pig face', category: 'nature', keywords: ['pig', 'animal'] },\n { emoji: '\\u{1F438}', name: 'frog', category: 'nature', keywords: ['frog', 'animal'] },\n { emoji: '\\u{1F435}', name: 'monkey face', category: 'nature', keywords: ['monkey', 'animal'] },\n { emoji: '\\u{1F412}', name: 'monkey', category: 'nature', keywords: ['monkey', 'animal'] },\n { emoji: '\\u{1F414}', name: 'chicken', category: 'nature', keywords: ['chicken', 'animal'] },\n { emoji: '\\u{1F427}', name: 'penguin', category: 'nature', keywords: ['penguin', 'animal'] },\n { emoji: '\\u{1F426}', name: 'bird', category: 'nature', keywords: ['bird', 'animal'] },\n { emoji: '\\u{1F40A}', name: 'crocodile', category: 'nature', keywords: ['crocodile', 'animal'] },\n { emoji: '\\u{1F422}', name: 'turtle', category: 'nature', keywords: ['turtle', 'slow'] },\n { emoji: '\\u{1F40D}', name: 'snake', category: 'nature', keywords: ['snake', 'animal'] },\n { emoji: '\\u{1F332}', name: 'evergreen tree', category: 'nature', keywords: ['tree', 'pine'] },\n { emoji: '\\u{1F333}', name: 'deciduous tree', category: 'nature', keywords: ['tree'] },\n { emoji: '\\u{1F334}', name: 'palm tree', category: 'nature', keywords: ['palm', 'tree', 'tropical'] },\n { emoji: '\\u{1F335}', name: 'cactus', category: 'nature', keywords: ['cactus', 'desert'] },\n { emoji: '\\u{1F337}', name: 'tulip', category: 'nature', keywords: ['flower', 'tulip'] },\n { emoji: '\\u{1F339}', name: 'rose', category: 'nature', keywords: ['flower', 'rose', 'love'] },\n ],\n food: [\n { emoji: '\\u{1F34E}', name: 'red apple', category: 'food', keywords: ['apple', 'fruit'] },\n { emoji: '\\u{1F34A}', name: 'tangerine', category: 'food', keywords: ['orange', 'fruit'] },\n { emoji: '\\u{1F34B}', name: 'lemon', category: 'food', keywords: ['lemon', 'fruit'] },\n { emoji: '\\u{1F34C}', name: 'banana', category: 'food', keywords: ['banana', 'fruit'] },\n { emoji: '\\u{1F349}', name: 'watermelon', category: 'food', keywords: ['watermelon', 'fruit'] },\n { emoji: '\\u{1F347}', name: 'grapes', category: 'food', keywords: ['grapes', 'fruit'] },\n { emoji: '\\u{1F353}', name: 'strawberry', category: 'food', keywords: ['strawberry', 'fruit'] },\n { emoji: '\\u{1F352}', name: 'cherries', category: 'food', keywords: ['cherry', 'fruit'] },\n { emoji: '\\u{1F351}', name: 'peach', category: 'food', keywords: ['peach', 'fruit'] },\n { emoji: '\\u{1F34D}', name: 'pineapple', category: 'food', keywords: ['pineapple', 'fruit'] },\n { emoji: '\\u{1F354}', name: 'hamburger', category: 'food', keywords: ['burger', 'fast food'] },\n { emoji: '\\u{1F355}', name: 'pizza', category: 'food', keywords: ['pizza', 'food'] },\n { emoji: '\\u{1F32E}', name: 'taco', category: 'food', keywords: ['taco', 'mexican'] },\n { emoji: '\\u{1F32F}', name: 'burrito', category: 'food', keywords: ['burrito', 'mexican'] },\n { emoji: '\\u{1F35F}', name: 'french fries', category: 'food', keywords: ['fries', 'fast food'] },\n { emoji: '\\u{1F357}', name: 'poultry leg', category: 'food', keywords: ['chicken', 'meat'] },\n { emoji: '\\u{1F356}', name: 'meat on bone', category: 'food', keywords: ['meat', 'bone'] },\n { emoji: '\\u{1F363}', name: 'sushi', category: 'food', keywords: ['sushi', 'japanese'] },\n { emoji: '\\u{1F370}', name: 'shortcake', category: 'food', keywords: ['cake', 'dessert'] },\n { emoji: '\\u{1F36B}', name: 'chocolate bar', category: 'food', keywords: ['chocolate', 'candy'] },\n { emoji: '\\u{1F369}', name: 'doughnut', category: 'food', keywords: ['donut', 'dessert'] },\n { emoji: '\\u{1F36A}', name: 'cookie', category: 'food', keywords: ['cookie', 'dessert'] },\n { emoji: '\\u2615', name: 'hot beverage', category: 'food', keywords: ['coffee', 'tea', 'drink'] },\n { emoji: '\\u{1F37A}', name: 'beer mug', category: 'food', keywords: ['beer', 'drink'] },\n { emoji: '\\u{1F377}', name: 'wine glass', category: 'food', keywords: ['wine', 'drink'] },\n ],\n travel: [\n { emoji: '\\u{1F697}', name: 'automobile', category: 'travel', keywords: ['car', 'drive'] },\n { emoji: '\\u{1F695}', name: 'taxi', category: 'travel', keywords: ['taxi', 'cab'] },\n { emoji: '\\u{1F68C}', name: 'bus', category: 'travel', keywords: ['bus', 'transit'] },\n { emoji: '\\u{1F682}', name: 'locomotive', category: 'travel', keywords: ['train', 'rail'] },\n { emoji: '\\u2708', name: 'airplane', category: 'travel', keywords: ['plane', 'fly', 'travel'] },\n { emoji: '\\u{1F680}', name: 'rocket', category: 'travel', keywords: ['rocket', 'space', 'launch'] },\n { emoji: '\\u{1F6F8}', name: 'flying saucer', category: 'travel', keywords: ['ufo', 'alien'] },\n { emoji: '\\u{1F6A2}', name: 'ship', category: 'travel', keywords: ['ship', 'boat', 'cruise'] },\n { emoji: '\\u{1F3E0}', name: 'house', category: 'travel', keywords: ['house', 'home'] },\n { emoji: '\\u{1F3E2}', name: 'office building', category: 'travel', keywords: ['office', 'building', 'work'] },\n { emoji: '\\u{1F3EB}', name: 'school', category: 'travel', keywords: ['school', 'education'] },\n { emoji: '\\u{1F3E5}', name: 'hospital', category: 'travel', keywords: ['hospital', 'health'] },\n { emoji: '\\u{1F30D}', name: 'globe showing Europe-Africa', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F30E}', name: 'globe showing Americas', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F30F}', name: 'globe showing Asia-Australia', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F5FC}', name: 'Tokyo tower', category: 'travel', keywords: ['tokyo', 'japan', 'tower'] },\n { emoji: '\\u{1F5FD}', name: 'Statue of Liberty', category: 'travel', keywords: ['statue', 'liberty', 'new york'] },\n { emoji: '\\u26F0', name: 'mountain', category: 'travel', keywords: ['mountain', 'nature'] },\n { emoji: '\\u{1F3D6}', name: 'beach with umbrella', category: 'travel', keywords: ['beach', 'vacation'] },\n { emoji: '\\u{1F3DD}', name: 'desert island', category: 'travel', keywords: ['island', 'tropical'] },\n ],\n activities: [\n { emoji: '\\u26BD', name: 'soccer ball', category: 'activities', keywords: ['soccer', 'football', 'sport'] },\n { emoji: '\\u{1F3C0}', name: 'basketball', category: 'activities', keywords: ['basketball', 'sport'] },\n { emoji: '\\u{1F3C8}', name: 'american football', category: 'activities', keywords: ['football', 'sport'] },\n { emoji: '\\u26BE', name: 'baseball', category: 'activities', keywords: ['baseball', 'sport'] },\n { emoji: '\\u{1F3BE}', name: 'tennis', category: 'activities', keywords: ['tennis', 'sport'] },\n { emoji: '\\u{1F3D0}', name: 'volleyball', category: 'activities', keywords: ['volleyball', 'sport'] },\n { emoji: '\\u{1F3B1}', name: 'pool 8 ball', category: 'activities', keywords: ['pool', 'billiards'] },\n { emoji: '\\u{1F3D3}', name: 'ping pong', category: 'activities', keywords: ['table tennis', 'sport'] },\n { emoji: '\\u{1F3C6}', name: 'trophy', category: 'activities', keywords: ['trophy', 'winner', 'award'] },\n { emoji: '\\u{1F3C5}', name: 'sports medal', category: 'activities', keywords: ['medal', 'winner'] },\n { emoji: '\\u{1F947}', name: 'first place medal', category: 'activities', keywords: ['gold', 'first', 'winner'] },\n { emoji: '\\u{1F948}', name: 'second place medal', category: 'activities', keywords: ['silver', 'second'] },\n { emoji: '\\u{1F949}', name: 'third place medal', category: 'activities', keywords: ['bronze', 'third'] },\n { emoji: '\\u{1F3AF}', name: 'bullseye', category: 'activities', keywords: ['target', 'dart'] },\n { emoji: '\\u{1F3AE}', name: 'video game', category: 'activities', keywords: ['game', 'controller'] },\n { emoji: '\\u{1F3B2}', name: 'game die', category: 'activities', keywords: ['dice', 'game'] },\n { emoji: '\\u{1F3B5}', name: 'musical note', category: 'activities', keywords: ['music', 'note'] },\n { emoji: '\\u{1F3B6}', name: 'musical notes', category: 'activities', keywords: ['music', 'notes'] },\n { emoji: '\\u{1F3A4}', name: 'microphone', category: 'activities', keywords: ['karaoke', 'sing', 'mic'] },\n { emoji: '\\u{1F3AC}', name: 'clapper board', category: 'activities', keywords: ['movie', 'film'] },\n ],\n objects: [\n { emoji: '\\u{1F4F1}', name: 'mobile phone', category: 'objects', keywords: ['phone', 'mobile', 'cell'] },\n { emoji: '\\u{1F4BB}', name: 'laptop', category: 'objects', keywords: ['laptop', 'computer'] },\n { emoji: '\\u{1F5A5}', name: 'desktop computer', category: 'objects', keywords: ['computer', 'desktop'] },\n { emoji: '\\u2328', name: 'keyboard', category: 'objects', keywords: ['keyboard', 'type'] },\n { emoji: '\\u{1F4F7}', name: 'camera', category: 'objects', keywords: ['camera', 'photo'] },\n { emoji: '\\u{1F4FA}', name: 'television', category: 'objects', keywords: ['tv', 'television'] },\n { emoji: '\\u{1F4E7}', name: 'e-mail', category: 'objects', keywords: ['email', 'mail'] },\n { emoji: '\\u{1F4DD}', name: 'memo', category: 'objects', keywords: ['memo', 'note', 'write'] },\n { emoji: '\\u{1F4D6}', name: 'open book', category: 'objects', keywords: ['book', 'read'] },\n { emoji: '\\u{1F4DA}', name: 'books', category: 'objects', keywords: ['books', 'library'] },\n { emoji: '\\u{1F4C5}', name: 'calendar', category: 'objects', keywords: ['calendar', 'date'] },\n { emoji: '\\u{1F4CB}', name: 'clipboard', category: 'objects', keywords: ['clipboard', 'paste'] },\n { emoji: '\\u{1F4CC}', name: 'pushpin', category: 'objects', keywords: ['pin', 'pushpin'] },\n { emoji: '\\u{1F4CE}', name: 'paperclip', category: 'objects', keywords: ['paperclip', 'attach'] },\n { emoji: '\\u{1F511}', name: 'key', category: 'objects', keywords: ['key', 'lock'] },\n { emoji: '\\u{1F512}', name: 'locked', category: 'objects', keywords: ['lock', 'secure'] },\n { emoji: '\\u{1F513}', name: 'unlocked', category: 'objects', keywords: ['unlock', 'open'] },\n { emoji: '\\u{1F50D}', name: 'magnifying glass tilted left', category: 'objects', keywords: ['search', 'find'] },\n { emoji: '\\u{1F4A1}', name: 'light bulb', category: 'objects', keywords: ['idea', 'light'] },\n { emoji: '\\u{1F527}', name: 'wrench', category: 'objects', keywords: ['tool', 'wrench', 'fix'] },\n { emoji: '\\u{1F528}', name: 'hammer', category: 'objects', keywords: ['tool', 'hammer', 'build'] },\n { emoji: '\\u2699', name: 'gear', category: 'objects', keywords: ['settings', 'gear', 'config'] },\n ],\n symbols: [\n { emoji: '\\u2764', name: 'red heart', category: 'symbols', keywords: ['heart', 'love'] },\n { emoji: '\\u{1F9E1}', name: 'orange heart', category: 'symbols', keywords: ['heart', 'orange'] },\n { emoji: '\\u{1F49B}', name: 'yellow heart', category: 'symbols', keywords: ['heart', 'yellow'] },\n { emoji: '\\u{1F49A}', name: 'green heart', category: 'symbols', keywords: ['heart', 'green'] },\n { emoji: '\\u{1F499}', name: 'blue heart', category: 'symbols', keywords: ['heart', 'blue'] },\n { emoji: '\\u{1F49C}', name: 'purple heart', category: 'symbols', keywords: ['heart', 'purple'] },\n { emoji: '\\u{1F494}', name: 'broken heart', category: 'symbols', keywords: ['heart', 'broken', 'sad'] },\n { emoji: '\\u{1F495}', name: 'two hearts', category: 'symbols', keywords: ['heart', 'love'] },\n { emoji: '\\u{1F4AF}', name: 'hundred points', category: 'symbols', keywords: ['100', 'perfect', 'score'] },\n { emoji: '\\u{1F4A5}', name: 'collision', category: 'symbols', keywords: ['boom', 'bang', 'explosion'] },\n { emoji: '\\u{1F4AB}', name: 'dizzy', category: 'symbols', keywords: ['star', 'dizzy'] },\n { emoji: '\\u2728', name: 'sparkles', category: 'symbols', keywords: ['sparkle', 'shine', 'star'] },\n { emoji: '\\u{1F525}', name: 'fire', category: 'symbols', keywords: ['fire', 'hot', 'flame'] },\n { emoji: '\\u2705', name: 'check mark button', category: 'symbols', keywords: ['check', 'done', 'yes'] },\n { emoji: '\\u274C', name: 'cross mark', category: 'symbols', keywords: ['no', 'wrong', 'x'] },\n { emoji: '\\u2757', name: 'exclamation mark', category: 'symbols', keywords: ['exclamation', 'warning', 'alert'] },\n { emoji: '\\u2753', name: 'question mark', category: 'symbols', keywords: ['question', 'what'] },\n { emoji: '\\u{1F6AB}', name: 'prohibited', category: 'symbols', keywords: ['no', 'forbidden', 'stop'] },\n { emoji: '\\u267B', name: 'recycling symbol', category: 'symbols', keywords: ['recycle', 'green'] },\n { emoji: '\\u{1F4AC}', name: 'speech balloon', category: 'symbols', keywords: ['speech', 'chat', 'message'] },\n { emoji: '\\u{1F4AD}', name: 'thought balloon', category: 'symbols', keywords: ['thought', 'think'] },\n { emoji: '\\u{1F514}', name: 'bell', category: 'symbols', keywords: ['bell', 'notification', 'alert'] },\n ],\n flags: [\n { emoji: '\\u{1F1FA}\\u{1F1F8}', name: 'flag: United States', category: 'flags', keywords: ['us', 'usa', 'america'] },\n { emoji: '\\u{1F1EC}\\u{1F1E7}', name: 'flag: United Kingdom', category: 'flags', keywords: ['uk', 'britain', 'england'] },\n { emoji: '\\u{1F1E8}\\u{1F1E6}', name: 'flag: Canada', category: 'flags', keywords: ['canada'] },\n { emoji: '\\u{1F1E6}\\u{1F1FA}', name: 'flag: Australia', category: 'flags', keywords: ['australia'] },\n { emoji: '\\u{1F1EF}\\u{1F1F5}', name: 'flag: Japan', category: 'flags', keywords: ['japan'] },\n { emoji: '\\u{1F1EB}\\u{1F1F7}', name: 'flag: France', category: 'flags', keywords: ['france'] },\n { emoji: '\\u{1F1E9}\\u{1F1EA}', name: 'flag: Germany', category: 'flags', keywords: ['germany'] },\n { emoji: '\\u{1F1EE}\\u{1F1F3}', name: 'flag: India', category: 'flags', keywords: ['india'] },\n { emoji: '\\u{1F1E7}\\u{1F1F7}', name: 'flag: Brazil', category: 'flags', keywords: ['brazil'] },\n { emoji: '\\u{1F1F0}\\u{1F1F7}', name: 'flag: South Korea', category: 'flags', keywords: ['korea', 'south korea'] },\n { emoji: '\\u{1F1EE}\\u{1F1F9}', name: 'flag: Italy', category: 'flags', keywords: ['italy'] },\n { emoji: '\\u{1F1EA}\\u{1F1F8}', name: 'flag: Spain', category: 'flags', keywords: ['spain'] },\n { emoji: '\\u{1F1F2}\\u{1F1FD}', name: 'flag: Mexico', category: 'flags', keywords: ['mexico'] },\n { emoji: '\\u{1F1F7}\\u{1F1FA}', name: 'flag: Russia', category: 'flags', keywords: ['russia'] },\n { emoji: '\\u{1F1E8}\\u{1F1F3}', name: 'flag: China', category: 'flags', keywords: ['china'] },\n { emoji: '\\u{1F3C1}', name: 'chequered flag', category: 'flags', keywords: ['finish', 'race'] },\n { emoji: '\\u{1F3F3}', name: 'white flag', category: 'flags', keywords: ['surrender', 'peace'] },\n { emoji: '\\u{1F3F4}', name: 'black flag', category: 'flags', keywords: ['pirate'] },\n { emoji: '\\u{1F6A9}', name: 'triangular flag', category: 'flags', keywords: ['flag', 'marker'] },\n ],\n}\n\n/** All categories in display order */\nexport const EMOJI_CATEGORIES: EmojiCategory[] = [\n 'smileys',\n 'people',\n 'nature',\n 'food',\n 'travel',\n 'activities',\n 'objects',\n 'symbols',\n 'flags',\n]\n\n/** Category display labels */\nexport const CATEGORY_LABELS: Record<EmojiCategory, string> = {\n smileys: 'Smileys & Emotion',\n people: 'People & Body',\n nature: 'Animals & Nature',\n food: 'Food & Drink',\n travel: 'Travel & Places',\n activities: 'Activities',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n}\n\n/** Get all emojis as a flat array */\nexport function getAllEmojis(): EmojiEntry[] {\n return EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat])\n}\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\nimport {\n EMOJI_DATA,\n EMOJI_CATEGORIES,\n CATEGORY_LABELS,\n getAllEmojis,\n type EmojiCategory,\n type EmojiEntry,\n} from './emoji-data.js'\n\nexport interface EmojiPickerProps {\n /** Callback when an emoji is selected */\n onSelect?: (emoji: EmojiEntry) => void\n /** Initial search query */\n search?: string\n /** List of recently used emojis */\n recentEmojis?: EmojiEntry[]\n /** Maximum recent emojis to show */\n maxRecent?: number\n}\n\nexport interface EmojiPickerState {\n search: string\n activeCategory: EmojiCategory\n filteredEmojis: EmojiEntry[]\n recentEmojis: EmojiEntry[]\n}\n\nexport interface EmojiPickerAPI {\n /** Current state */\n state: EmojiPickerState\n /** Set search query */\n setSearch(query: string): void\n /** Select an emoji */\n select(emoji: EmojiEntry): void\n /** Set active category tab */\n setCategory(category: EmojiCategory): void\n /** Category tabs with labels */\n categoryTabs: { category: EmojiCategory; label: string; emoji: string }[]\n /** ARIA props for the picker container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the search input */\n searchInputProps: Record<string, unknown>\n /** Get ARIA props for an emoji button */\n getEmojiAriaProps(emoji: EmojiEntry): Record<string, unknown>\n /** Generated IDs */\n ids: {\n container: string\n search: string\n grid: string\n label: string\n }\n}\n\nconst CATEGORY_ICONS: Record<EmojiCategory, string> = {\n smileys: '\\u{1F600}',\n people: '\\u{1F44B}',\n nature: '\\u{1F436}',\n food: '\\u{1F34E}',\n travel: '\\u{1F697}',\n activities: '\\u26BD',\n objects: '\\u{1F4BB}',\n symbols: '\\u2764',\n flags: '\\u{1F3C1}',\n}\n\nexport function createEmojiPicker(props: EmojiPickerProps = {}): EmojiPickerAPI {\n const {\n onSelect,\n search: initialSearch = '',\n recentEmojis: initialRecent = [],\n maxRecent = 20,\n } = props\n\n let searchQuery = initialSearch\n let activeCategory: EmojiCategory = 'smileys'\n let recentEmojis = [...initialRecent].slice(0, maxRecent)\n\n const containerId = generateId('rfr-emoji-picker')\n const searchId = generateId('rfr-emoji-search')\n const gridId = generateId('rfr-emoji-grid')\n const labelId = generateId('rfr-emoji-label')\n\n function getFilteredEmojis(): EmojiEntry[] {\n if (searchQuery.trim()) {\n const query = searchQuery.toLowerCase().trim()\n return getAllEmojis().filter(\n (entry) =>\n entry.name.toLowerCase().includes(query) ||\n entry.keywords.some((kw) => kw.toLowerCase().includes(query)),\n )\n }\n return EMOJI_DATA[activeCategory]\n }\n\n function setSearch(query: string): void {\n searchQuery = query\n }\n\n function select(emoji: EmojiEntry): void {\n // Add to recent (deduplicate, prepend)\n recentEmojis = [\n emoji,\n ...recentEmojis.filter((e) => e.emoji !== emoji.emoji),\n ].slice(0, maxRecent)\n onSelect?.(emoji)\n }\n\n function setCategory(category: EmojiCategory): void {\n activeCategory = category\n searchQuery = ''\n }\n\n const categoryTabs = EMOJI_CATEGORIES.map((cat) => ({\n category: cat,\n label: CATEGORY_LABELS[cat],\n emoji: CATEGORY_ICONS[cat],\n }))\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-labelledby': labelId,\n id: containerId,\n }\n\n const searchInputProps: Record<string, unknown> = {\n type: 'search',\n role: 'searchbox',\n 'aria-label': 'Search emojis',\n id: searchId,\n placeholder: 'Search emojis...',\n autoComplete: 'off',\n }\n\n function getEmojiAriaProps(emoji: EmojiEntry): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-label': `${emoji.name} ${emoji.emoji}`,\n title: emoji.name,\n }\n }\n\n return {\n state: {\n search: searchQuery,\n activeCategory,\n filteredEmojis: getFilteredEmojis(),\n recentEmojis,\n },\n setSearch,\n select,\n setCategory,\n categoryTabs,\n ariaProps,\n searchInputProps,\n getEmojiAriaProps,\n ids: {\n container: containerId,\n search: searchId,\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const emojiPickerContainerStyles =\n 'w-80 rounded-lg border bg-popover text-popover-foreground shadow-md'\n\nexport const emojiPickerSearchStyles =\n 'w-full border-b px-3 py-2 text-sm bg-transparent outline-none placeholder:text-muted-foreground'\n\nexport const emojiPickerCategoryBarStyles =\n 'flex border-b px-1'\n\nexport const emojiPickerCategoryTabVariants = cva({\n base: 'flex-1 py-1.5 text-center text-lg cursor-pointer hover:bg-accent rounded-md transition-colors',\n variants: {\n state: {\n active: 'bg-accent',\n inactive: '',\n },\n },\n defaultVariants: {\n state: 'inactive',\n },\n})\n\nexport const emojiPickerGridStyles =\n 'grid grid-cols-8 gap-0.5 p-2 max-h-64 overflow-y-auto'\n\nexport const emojiPickerEmojiButtonStyles =\n 'flex items-center justify-center h-8 w-8 rounded cursor-pointer text-lg hover:bg-accent transition-colors'\n\nexport const emojiPickerSectionLabelStyles =\n 'px-2 py-1 text-xs font-medium text-muted-foreground'\n","import * as React from 'react'\nimport {\n createEmojiPicker,\n EMOJI_DATA,\n EMOJI_CATEGORIES,\n CATEGORY_LABELS,\n emojiPickerContainerStyles,\n emojiPickerSearchStyles,\n emojiPickerCategoryBarStyles,\n emojiPickerCategoryTabVariants,\n emojiPickerGridStyles,\n emojiPickerEmojiButtonStyles,\n emojiPickerSectionLabelStyles,\n type EmojiCategory,\n type EmojiEntry,\n} from '@refraction-ui/emoji-picker'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface EmojiPickerProps {\n onSelect?: (emoji: EmojiEntry) => void\n recentEmojis?: EmojiEntry[]\n className?: string\n}\n\nexport function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className }: EmojiPickerProps) {\n const [search, setSearch] = React.useState('')\n const [activeCategory, setActiveCategory] = React.useState<EmojiCategory>('smileys')\n const [recentEmojis, setRecentEmojis] = React.useState<EmojiEntry[]>(initialRecent)\n\n const api = React.useMemo(\n () =>\n createEmojiPicker({\n onSelect: undefined,\n search,\n recentEmojis,\n }),\n [search, recentEmojis],\n )\n\n const filteredEmojis = React.useMemo(() => {\n if (search.trim()) {\n const query = search.toLowerCase().trim()\n const allEmojis = EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat])\n return allEmojis.filter(\n (entry) =>\n entry.name.toLowerCase().includes(query) ||\n entry.keywords.some((kw) => kw.toLowerCase().includes(query)),\n )\n }\n return EMOJI_DATA[activeCategory]\n }, [search, activeCategory])\n\n const handleSelect = (emoji: EmojiEntry) => {\n setRecentEmojis((prev) =>\n [emoji, ...prev.filter((e) => e.emoji !== emoji.emoji)].slice(0, 20),\n )\n onSelect?.(emoji)\n }\n\n const handleCategoryClick = (cat: EmojiCategory) => {\n setActiveCategory(cat)\n setSearch('')\n }\n\n return React.createElement(\n 'div',\n { className: cn(emojiPickerContainerStyles, className), ...api.ariaProps },\n // Search input\n React.createElement('input', {\n ...api.searchInputProps,\n className: emojiPickerSearchStyles,\n value: search,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setSearch(e.target.value),\n }),\n // Category tabs\n !search &&\n React.createElement(\n 'div',\n { className: emojiPickerCategoryBarStyles },\n api.categoryTabs.map((tab) =>\n React.createElement(\n 'button',\n {\n key: tab.category,\n type: 'button',\n className: emojiPickerCategoryTabVariants({\n state: tab.category === activeCategory ? 'active' : 'inactive',\n }),\n onClick: () => handleCategoryClick(tab.category),\n title: tab.label,\n 'aria-label': tab.label,\n },\n tab.emoji,\n ),\n ),\n ),\n // Recent emojis section\n !search &&\n recentEmojis.length > 0 &&\n React.createElement(\n 'div',\n null,\n React.createElement('div', { className: emojiPickerSectionLabelStyles }, 'Recent'),\n React.createElement(\n 'div',\n { className: emojiPickerGridStyles },\n recentEmojis.map((emoji, i) =>\n React.createElement(\n 'button',\n {\n key: `recent-${emoji.emoji}-${i}`,\n type: 'button',\n className: emojiPickerEmojiButtonStyles,\n onClick: () => handleSelect(emoji),\n ...api.getEmojiAriaProps(emoji),\n },\n emoji.emoji,\n ),\n ),\n ),\n ),\n // Emoji grid\n React.createElement(\n 'div',\n null,\n !search &&\n React.createElement(\n 'div',\n { className: emojiPickerSectionLabelStyles },\n CATEGORY_LABELS[activeCategory],\n ),\n React.createElement(\n 'div',\n { className: emojiPickerGridStyles },\n filteredEmojis.map((emoji, i) =>\n React.createElement(\n 'button',\n {\n key: `${emoji.emoji}-${i}`,\n type: 'button',\n className: emojiPickerEmojiButtonStyles,\n onClick: () => handleSelect(emoji),\n ...api.getEmojiAriaProps(emoji),\n },\n emoji.emoji,\n ),\n ),\n filteredEmojis.length === 0 &&\n React.createElement(\n 'div',\n { className: 'col-span-8 text-center text-sm text-muted-foreground py-4' },\n 'No emojis found',\n ),\n ),\n ),\n )\n}\n\nEmojiPicker.displayName = 'EmojiPicker'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type FileStatus = 'pending' | 'uploading' | 'complete' | 'error'\n\nexport interface FileEntry {\n /** Unique ID for this file entry */\n id: string\n /** Original file name */\n name: string\n /** File size in bytes */\n size: number\n /** MIME type */\n type: string\n /** Upload progress 0-100 */\n progress: number\n /** Current status */\n status: FileStatus\n /** Error message if status is 'error' */\n error?: string\n}\n\nexport interface FileUploadProps {\n /** Accepted file types (e.g., 'image/*,.pdf') */\n accept?: string\n /** Max file size in bytes */\n maxSize?: number\n /** Max number of files */\n maxFiles?: number\n /** Allow multiple file selection */\n multiple?: boolean\n /** Callback when files are selected/added */\n onFilesSelected?: (files: FileEntry[]) => void\n /** Callback when a validation error occurs */\n onError?: (errors: FileUploadError[]) => void\n}\n\nexport interface FileUploadError {\n file: string\n code: 'type' | 'size' | 'count'\n message: string\n}\n\nexport interface FileUploadState {\n files: FileEntry[]\n isDragging: boolean\n}\n\nexport interface FileUploadAPI {\n /** Current state */\n state: FileUploadState\n /** Add files (validates type, size, count) */\n addFiles(files: Array<{ name: string; size: number; type: string }>): void\n /** Remove a file by ID */\n removeFile(id: string): void\n /** Update a file's progress */\n updateProgress(id: string, progress: number): void\n /** Set a file's status */\n setStatus(id: string, status: FileStatus, error?: string): void\n /** ARIA props for the drop zone */\n dropZoneProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the file input */\n inputProps: Record<string, unknown>\n /** Drag event handlers (for headless use) */\n dragHandlers: {\n onDragEnter(): void\n onDragLeave(): void\n onDragOver(): void\n onDrop(): void\n }\n /** Generated IDs */\n ids: {\n dropZone: string\n input: string\n label: string\n fileList: string\n }\n}\n\nfunction matchesAccept(fileType: string, fileName: string, accept: string): boolean {\n if (!accept) return true\n const acceptedTypes = accept.split(',').map((t) => t.trim())\n for (const accepted of acceptedTypes) {\n if (accepted.startsWith('.')) {\n // Extension match\n if (fileName.toLowerCase().endsWith(accepted.toLowerCase())) return true\n } else if (accepted.endsWith('/*')) {\n // Wildcard MIME match (e.g., 'image/*')\n const prefix = accepted.slice(0, -2)\n if (fileType.startsWith(prefix)) return true\n } else {\n // Exact MIME match\n if (fileType === accepted) return true\n }\n }\n return false\n}\n\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B'\n const units = ['B', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n const size = bytes / Math.pow(1024, i)\n return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`\n}\n\nexport function createFileUpload(props: FileUploadProps = {}): FileUploadAPI {\n const {\n accept,\n maxSize,\n maxFiles,\n multiple = false,\n onFilesSelected,\n onError,\n } = props\n\n let files: FileEntry[] = []\n let isDragging = false\n\n const dropZoneId = generateId('rfr-file-upload-zone')\n const inputId = generateId('rfr-file-upload-input')\n const labelId = generateId('rfr-file-upload-label')\n const fileListId = generateId('rfr-file-upload-list')\n\n function addFiles(incoming: Array<{ name: string; size: number; type: string }>): void {\n const errors: FileUploadError[] = []\n const validFiles: FileEntry[] = []\n\n // Check count limit\n const availableSlots = maxFiles ? maxFiles - files.length : Infinity\n if (!multiple && incoming.length > 1) {\n // Only take the first file if not multiple\n incoming = [incoming[0]]\n }\n\n for (let i = 0; i < incoming.length; i++) {\n const file = incoming[i]\n\n if (validFiles.length >= availableSlots) {\n errors.push({\n file: file.name,\n code: 'count',\n message: `Maximum of ${maxFiles} files allowed`,\n })\n continue\n }\n\n // Validate type\n if (accept && !matchesAccept(file.type, file.name, accept)) {\n errors.push({\n file: file.name,\n code: 'type',\n message: `File type \"${file.type || 'unknown'}\" is not accepted`,\n })\n continue\n }\n\n // Validate size\n if (maxSize && file.size > maxSize) {\n errors.push({\n file: file.name,\n code: 'size',\n message: `File size ${formatFileSize(file.size)} exceeds limit of ${formatFileSize(maxSize)}`,\n })\n continue\n }\n\n validFiles.push({\n id: generateId('rfr-file'),\n name: file.name,\n size: file.size,\n type: file.type,\n progress: 0,\n status: 'pending',\n })\n }\n\n if (errors.length > 0) {\n onError?.(errors)\n }\n\n if (validFiles.length > 0) {\n if (!multiple) {\n files = validFiles.slice(0, 1)\n } else {\n files = [...files, ...validFiles]\n }\n onFilesSelected?.(files)\n }\n }\n\n function removeFile(id: string): void {\n files = files.filter((f) => f.id !== id)\n }\n\n function updateProgress(id: string, progress: number): void {\n files = files.map((f) =>\n f.id === id ? { ...f, progress: Math.min(100, Math.max(0, progress)) } : f,\n )\n }\n\n function setStatus(id: string, status: FileStatus, error?: string): void {\n files = files.map((f) =>\n f.id === id ? { ...f, status, error, progress: status === 'complete' ? 100 : f.progress } : f,\n )\n }\n\n const dropZoneProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'button',\n 'aria-label': 'Drop files here or click to upload',\n 'aria-describedby': labelId,\n id: dropZoneId,\n tabIndex: 0,\n }\n\n const inputProps: Record<string, unknown> = {\n type: 'file',\n id: inputId,\n accept: accept ?? undefined,\n multiple,\n 'aria-hidden': true,\n tabIndex: -1,\n style: { display: 'none' },\n }\n\n const dragHandlers = {\n onDragEnter() {\n isDragging = true\n },\n onDragLeave() {\n isDragging = false\n },\n onDragOver() {\n isDragging = true\n },\n onDrop() {\n isDragging = false\n },\n }\n\n return {\n state: {\n get files() { return files },\n get isDragging() { return isDragging },\n },\n addFiles,\n removeFile,\n updateProgress,\n setStatus,\n dropZoneProps,\n inputProps,\n dragHandlers,\n ids: {\n dropZone: dropZoneId,\n input: inputId,\n label: labelId,\n fileList: fileListId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const fileUploadDropZoneVariants = cva({\n base: 'flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-8 text-center transition-colors cursor-pointer',\n variants: {\n state: {\n idle: 'border-muted-foreground/25 hover:border-muted-foreground/50',\n dragging: 'border-primary bg-primary/5',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'idle',\n },\n})\n\nexport const fileUploadFileListStyles =\n 'mt-4 space-y-2'\n\nexport const fileUploadFileItemStyles =\n 'flex items-center gap-3 rounded-md border p-3 text-sm'\n\nexport const fileUploadProgressStyles =\n 'h-1.5 w-full rounded-full bg-secondary overflow-hidden'\n\nexport const fileUploadProgressBarStyles =\n 'h-full rounded-full bg-primary transition-all duration-300'\n\nexport const fileUploadRemoveButtonStyles =\n 'ml-auto text-muted-foreground hover:text-foreground cursor-pointer'\n","import * as React from 'react'\nimport {\n createFileUpload,\n formatFileSize,\n fileUploadDropZoneVariants,\n fileUploadFileListStyles,\n fileUploadFileItemStyles,\n fileUploadProgressStyles,\n fileUploadProgressBarStyles,\n fileUploadRemoveButtonStyles,\n type FileEntry,\n type FileUploadError,\n} from '@refraction-ui/file-upload'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface FileUploadProps {\n accept?: string\n maxSize?: number\n maxFiles?: number\n multiple?: boolean\n onFilesSelected?: (files: FileEntry[]) => void\n onError?: (errors: FileUploadError[]) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport function FileUpload({\n accept,\n maxSize,\n maxFiles,\n multiple = false,\n onFilesSelected,\n onError,\n className,\n children,\n}: FileUploadProps) {\n const [files, setFiles] = React.useState<FileEntry[]>([])\n const [isDragging, setIsDragging] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const api = React.useMemo(\n () =>\n createFileUpload({\n accept,\n maxSize,\n maxFiles,\n multiple,\n onFilesSelected: (newFiles) => {\n setFiles(newFiles)\n onFilesSelected?.(newFiles)\n },\n onError,\n }),\n [accept, maxSize, maxFiles, multiple, onFilesSelected, onError],\n )\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(true)\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n const droppedFiles = Array.from(e.dataTransfer.files).map((f) => ({\n name: f.name,\n size: f.size,\n type: f.type,\n }))\n if (droppedFiles.length > 0) {\n api.addFiles(droppedFiles)\n }\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []).map((f) => ({\n name: f.name,\n size: f.size,\n type: f.type,\n }))\n if (selectedFiles.length > 0) {\n api.addFiles(selectedFiles)\n }\n // Reset input so same file can be re-selected\n e.target.value = ''\n }\n\n const handleRemove = (id: string) => {\n setFiles((prev) => prev.filter((f) => f.id !== id))\n api.removeFile(id)\n }\n\n const handleClick = () => {\n inputRef.current?.click()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }\n\n return React.createElement(\n 'div',\n { className },\n // Hidden file input\n React.createElement('input', {\n ref: inputRef,\n ...api.inputProps,\n onChange: handleInputChange,\n }),\n // Drop zone\n React.createElement(\n 'div',\n {\n ...api.dropZoneProps,\n className: fileUploadDropZoneVariants({\n state: isDragging ? 'dragging' : 'idle',\n }),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop,\n },\n children ??\n React.createElement(\n React.Fragment,\n null,\n React.createElement('div', { className: 'text-2xl mb-2' }, '\\u{1F4C1}'),\n React.createElement(\n 'p',\n { className: 'text-sm text-muted-foreground' },\n 'Drag & drop files here, or click to select',\n ),\n accept &&\n React.createElement(\n 'p',\n { className: 'text-xs text-muted-foreground mt-1' },\n `Accepted: ${accept}`,\n ),\n maxSize &&\n React.createElement(\n 'p',\n { className: 'text-xs text-muted-foreground' },\n `Max size: ${formatFileSize(maxSize)}`,\n ),\n ),\n ),\n // File list\n files.length > 0 &&\n React.createElement(\n 'div',\n { className: fileUploadFileListStyles },\n files.map((file) =>\n React.createElement(\n 'div',\n { key: file.id, className: fileUploadFileItemStyles },\n React.createElement(\n 'div',\n { className: 'flex-1 min-w-0' },\n React.createElement('div', { className: 'font-medium truncate' }, file.name),\n React.createElement(\n 'div',\n { className: 'text-xs text-muted-foreground' },\n formatFileSize(file.size),\n ),\n file.status === 'uploading' &&\n React.createElement(\n 'div',\n { className: cn(fileUploadProgressStyles, 'mt-1') },\n React.createElement('div', {\n className: fileUploadProgressBarStyles,\n style: { width: `${file.progress}%` },\n }),\n ),\n file.error &&\n React.createElement(\n 'div',\n { className: 'text-xs text-destructive mt-0.5' },\n file.error,\n ),\n ),\n React.createElement(\n 'button',\n {\n type: 'button',\n className: fileUploadRemoveButtonStyles,\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n handleRemove(file.id)\n },\n 'aria-label': `Remove ${file.name}`,\n },\n '\\u00D7',\n ),\n ),\n ),\n ),\n )\n}\n\nFileUpload.displayName = 'FileUpload'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ShortcutProps {\n /** Key combination (e.g., ['Ctrl', 'K'] or ['Meta', 'Shift', 'P']) */\n keys: string[]\n /** Callback when the shortcut is triggered */\n onTrigger: () => void\n /** Whether the shortcut is enabled */\n enabled?: boolean\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\nexport interface KeyboardShortcutAPI {\n /** Handle a keyboard event (returns true if it matched) */\n handler(event: KeyboardEvent): boolean\n /** Human-readable display of the shortcut */\n display: string\n /** Platform-aware display (uses command symbol on Mac) */\n platformDisplay: string\n /** Whether the shortcut is currently enabled */\n enabled: boolean\n /** The key combination */\n keys: string[]\n /** ARIA props for a visual shortcut badge */\n badgeAriaProps: Record<string, unknown>\n}\n\nconst MODIFIER_KEYS = new Set(['Ctrl', 'Control', 'Alt', 'Shift', 'Meta', 'Cmd', 'Command'])\n\nconst KEY_DISPLAY: Record<string, string> = {\n 'Ctrl': 'Ctrl',\n 'Control': 'Ctrl',\n 'Alt': 'Alt',\n 'Shift': 'Shift',\n 'Meta': 'Meta',\n 'Cmd': 'Cmd',\n 'Command': 'Cmd',\n 'Enter': '\\u21B5',\n 'Backspace': '\\u232B',\n 'Delete': 'Del',\n 'Escape': 'Esc',\n 'ArrowUp': '\\u2191',\n 'ArrowDown': '\\u2193',\n 'ArrowLeft': '\\u2190',\n 'ArrowRight': '\\u2192',\n 'Tab': 'Tab',\n ' ': 'Space',\n}\n\nconst MAC_KEY_DISPLAY: Record<string, string> = {\n 'Ctrl': '\\u2303',\n 'Control': '\\u2303',\n 'Alt': '\\u2325',\n 'Shift': '\\u21E7',\n 'Meta': '\\u2318',\n 'Cmd': '\\u2318',\n 'Command': '\\u2318',\n 'Enter': '\\u21B5',\n 'Backspace': '\\u232B',\n 'Delete': '\\u2326',\n 'Escape': '\\u238B',\n 'ArrowUp': '\\u2191',\n 'ArrowDown': '\\u2193',\n 'ArrowLeft': '\\u2190',\n 'ArrowRight': '\\u2192',\n 'Tab': '\\u21E5',\n ' ': '\\u2423',\n}\n\nfunction normalizeKey(key: string): string {\n // Normalize modifier variants\n if (key === 'Command' || key === 'Cmd') return 'Meta'\n if (key === 'Control') return 'Ctrl'\n return key\n}\n\nfunction isMac(): boolean {\n if (typeof navigator !== 'undefined') {\n return navigator.platform?.includes('Mac') || navigator.userAgent?.includes('Mac')\n }\n return false\n}\n\nexport function formatShortcut(keys: string[], mac?: boolean): string {\n const displayMap = mac ? MAC_KEY_DISPLAY : KEY_DISPLAY\n return keys.map((key) => displayMap[key] ?? key.toUpperCase()).join(mac ? '' : '+')\n}\n\nexport function createKeyboardShortcut(props: ShortcutProps): KeyboardShortcutAPI {\n const {\n keys,\n onTrigger,\n enabled: enabledProp = true,\n preventDefault: preventDefaultProp = true,\n } = props\n\n const normalizedKeys = keys.map(normalizeKey)\n const modifiers = normalizedKeys.filter((k) => MODIFIER_KEYS.has(k))\n const regularKeys = normalizedKeys.filter((k) => !MODIFIER_KEYS.has(k))\n\n function handler(event: KeyboardEvent): boolean {\n if (!enabledProp) return false\n\n // Check modifiers\n const ctrlRequired = modifiers.includes('Ctrl')\n const altRequired = modifiers.includes('Alt')\n const shiftRequired = modifiers.includes('Shift')\n const metaRequired = modifiers.includes('Meta')\n\n if (ctrlRequired !== (event.ctrlKey || event.metaKey && !metaRequired)) {\n // For Ctrl, also accept Meta on Mac\n }\n\n const ctrlMatch = ctrlRequired ? event.ctrlKey : !event.ctrlKey\n const altMatch = altRequired ? event.altKey : !event.altKey\n const shiftMatch = shiftRequired ? event.shiftKey : !event.shiftKey\n const metaMatch = metaRequired ? event.metaKey : !event.metaKey\n\n if (!ctrlMatch || !altMatch || !shiftMatch || !metaMatch) return false\n\n // Check regular key\n if (regularKeys.length > 0) {\n const eventKey = event.key.length === 1 ? event.key.toUpperCase() : event.key\n const targetKey = regularKeys[0].length === 1 ? regularKeys[0].toUpperCase() : regularKeys[0]\n if (eventKey !== targetKey) return false\n }\n\n if (preventDefaultProp) {\n event.preventDefault()\n }\n onTrigger()\n return true\n }\n\n const mac = isMac()\n const display = formatShortcut(keys, false)\n const platformDisplay = formatShortcut(keys, mac)\n\n const badgeAriaProps: Record<string, unknown> = {\n 'aria-hidden': true,\n role: 'presentation',\n }\n\n return {\n handler,\n display,\n platformDisplay,\n enabled: enabledProp,\n keys,\n badgeAriaProps,\n }\n}\n","export const shortcutBadgeStyles =\n 'inline-flex items-center gap-0.5 rounded border bg-muted px-1.5 py-0.5 text-xs font-mono text-muted-foreground'\n\nexport const shortcutKeyStyles =\n 'inline-flex items-center justify-center min-w-[1.25rem] rounded bg-background px-1 py-0.5 text-xs font-mono border shadow-sm'\n\nexport const shortcutSeparatorStyles =\n 'text-muted-foreground text-xs'\n","import * as React from 'react'\nimport {\n createKeyboardShortcut,\n formatShortcut,\n shortcutBadgeStyles,\n shortcutKeyStyles,\n shortcutSeparatorStyles,\n} from '@refraction-ui/keyboard-shortcut'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface KeyboardShortcutProps {\n /** Key combination */\n keys: string[]\n /** Callback when triggered */\n onTrigger: () => void\n /** Whether enabled */\n enabled?: boolean\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\n/**\n * Invisible keyboard shortcut listener component.\n * Attaches a global keydown listener and calls onTrigger when the combo matches.\n */\nexport function KeyboardShortcut({\n keys,\n onTrigger,\n enabled = true,\n preventDefault = true,\n}: KeyboardShortcutProps) {\n const apiRef = React.useRef(\n createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault }),\n )\n\n // Keep handler in sync with latest props\n React.useEffect(() => {\n apiRef.current = createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault })\n }, [keys, onTrigger, enabled, preventDefault])\n\n React.useEffect(() => {\n if (!enabled) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n apiRef.current.handler(e)\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [enabled])\n\n return null\n}\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\n// ---------------------------------------------------------------------------\n// ShortcutBadge — visual display of a keyboard shortcut (e.g., Ctrl+K)\n// ---------------------------------------------------------------------------\n\nexport interface ShortcutBadgeProps {\n /** Key combination to display */\n keys: string[]\n /** Use platform-aware display (Mac symbols) */\n platform?: boolean\n className?: string\n}\n\nexport function ShortcutBadge({ keys, platform = true, className }: ShortcutBadgeProps) {\n const api = createKeyboardShortcut({ keys, onTrigger: () => {}, enabled: false })\n\n const displayKeys = platform ? api.platformDisplay : api.display\n\n // Split display into individual keys for styling\n const isMacDisplay = platform && displayKeys !== api.display\n\n return React.createElement(\n 'kbd',\n { ...api.badgeAriaProps, className: cn(shortcutBadgeStyles, className) },\n isMacDisplay\n ? React.createElement('span', null, displayKeys)\n : keys.map((key, i) =>\n React.createElement(\n React.Fragment,\n { key: i },\n i > 0 && React.createElement('span', { className: shortcutSeparatorStyles }, '+'),\n React.createElement(\n 'span',\n { className: shortcutKeyStyles },\n formatShortcut([key], false),\n ),\n ),\n ),\n )\n}\n\nShortcutBadge.displayName = 'ShortcutBadge'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type OtpInputType = 'number' | 'text'\n\nexport interface OtpInputProps {\n length?: number\n value?: string\n autoFocus?: boolean\n type?: OtpInputType\n disabled?: boolean\n}\n\nexport interface OtpSlotProps {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n inputProps: {\n maxLength: number\n inputMode: string\n pattern?: string\n autoComplete: string\n disabled: boolean\n }\n}\n\nexport interface OtpInputAPI {\n /** Current state */\n state: {\n values: string[]\n focusedIndex: number\n length: number\n disabled: boolean\n }\n /** Set the value at a specific index */\n setValue: (index: number, char: string) => string[]\n /** Get the combined OTP string */\n getValue: () => string\n /** Move focus in a direction, returns new index */\n moveFocus: (direction: 'left' | 'right') => number\n /** Get aria/input props for a specific slot */\n getSlotProps: (index: number) => OtpSlotProps\n /** Keyboard handlers factory for a specific slot */\n getKeyboardHandlers: (\n index: number,\n callbacks?: {\n onMoveFocus?: (index: number) => void\n onSetValue?: (index: number, values: string[]) => void\n },\n ) => KeyboardHandlerMap\n /** Parse a paste string into values array */\n parsePaste: (text: string) => string[]\n /** Root container ARIA props */\n rootAriaProps: Partial<AccessibilityProps>\n /** Whether interaction should be blocked */\n isInteractive: boolean\n}\n\nexport function createOtpInput(props: OtpInputProps = {}): OtpInputAPI {\n const {\n length = 6,\n value = '',\n autoFocus = false,\n type = 'number',\n disabled = false,\n } = props\n\n const isInteractive = !disabled\n\n // Initialize values from the provided value string\n const values: string[] = Array.from({ length }, (_, i) => value.charAt(i) || '')\n let focusedIndex = autoFocus ? 0 : -1\n\n const rootAriaProps: Partial<AccessibilityProps> = {\n role: 'group',\n 'aria-label': 'One-time password input',\n }\n\n function setValue(index: number, char: string): string[] {\n if (index < 0 || index >= length) return [...values]\n const filtered = type === 'number' ? char.replace(/[^0-9]/g, '') : char\n const newValues = [...values]\n newValues[index] = filtered.charAt(0) || ''\n // Update internal state\n for (let i = 0; i < length; i++) {\n values[i] = newValues[i]\n }\n return newValues\n }\n\n function getValue(): string {\n return values.join('')\n }\n\n function moveFocus(direction: 'left' | 'right'): number {\n if (direction === 'left') {\n focusedIndex = Math.max(0, focusedIndex - 1)\n } else {\n focusedIndex = Math.min(length - 1, focusedIndex + 1)\n }\n return focusedIndex\n }\n\n function getSlotProps(index: number): OtpSlotProps {\n const isFocused = index === focusedIndex\n const isFilled = values[index] !== ''\n\n const ariaProps: Partial<AccessibilityProps> = {\n 'aria-label': `Digit ${index + 1} of ${length}`,\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-slot': 'otp-slot',\n }\n if (isFocused) {\n dataAttributes['data-focused'] = ''\n }\n if (isFilled) {\n dataAttributes['data-filled'] = ''\n }\n\n const inputProps = {\n maxLength: 1,\n inputMode: type === 'number' ? 'numeric' : 'text',\n pattern: type === 'number' ? '[0-9]*' : undefined,\n autoComplete: index === 0 ? 'one-time-code' : 'off',\n disabled,\n }\n\n return { ariaProps, dataAttributes, inputProps }\n }\n\n function getKeyboardHandlers(\n index: number,\n callbacks?: {\n onMoveFocus?: (index: number) => void\n onSetValue?: (index: number, values: string[]) => void\n },\n ): KeyboardHandlerMap {\n if (!isInteractive) {\n return {\n [Keys.Backspace]: (e) => e.preventDefault(),\n [Keys.ArrowLeft]: (e) => e.preventDefault(),\n [Keys.ArrowRight]: (e) => e.preventDefault(),\n }\n }\n\n return {\n [Keys.Backspace]: (e) => {\n e.preventDefault()\n if (values[index]) {\n const newValues = setValue(index, '')\n callbacks?.onSetValue?.(index, newValues)\n } else if (index > 0) {\n focusedIndex = index - 1\n const newValues = setValue(index - 1, '')\n callbacks?.onSetValue?.(index - 1, newValues)\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n if (index > 0) {\n focusedIndex = index - 1\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n if (index < length - 1) {\n focusedIndex = index + 1\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n }\n }\n\n function parsePaste(text: string): string[] {\n const chars = type === 'number' ? text.replace(/[^0-9]/g, '') : text\n return Array.from({ length }, (_, i) => chars.charAt(i) || '')\n }\n\n return {\n state: {\n values,\n focusedIndex,\n length,\n disabled,\n },\n setValue,\n getValue,\n moveFocus,\n getSlotProps,\n getKeyboardHandlers,\n parsePaste,\n rootAriaProps,\n isInteractive,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const otpInputTokens: TokenContract = {\n name: 'otp-input',\n tokens: {\n bg: { variable: '--rfr-otp-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-otp-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-otp-border', fallback: 'hsl(var(--border))' },\n 'border-filled': { variable: '--rfr-otp-border-filled', fallback: 'hsl(var(--primary))' },\n ring: { variable: '--rfr-otp-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const otpInputContainerVariants = cva({\n base: 'flex items-center gap-2',\n variants: {\n size: {\n sm: 'gap-1.5',\n default: 'gap-2',\n lg: 'gap-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const otpInputSlotVariants = cva({\n base: 'relative flex items-center justify-center rounded-md border border-input bg-background text-center font-mono shadow-sm transition-all',\n variants: {\n size: {\n sm: 'h-8 w-8 text-sm',\n default: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n },\n focused: {\n true: 'ring-2 ring-ring ring-offset-background',\n false: '',\n },\n filled: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'default',\n focused: 'false',\n filled: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createOtpInput,\n otpInputContainerVariants,\n otpInputSlotVariants,\n type OtpInputType,\n} from '@refraction-ui/otp-input'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface OtpInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n length?: number\n value?: string\n onChange?: (value: string) => void\n autoFocus?: boolean\n type?: OtpInputType\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * OtpInput -- a row of individual input boxes for one-time password entry.\n *\n * Features: auto-advance on type, backspace navigation, paste support, numeric/text mode.\n */\nexport const OtpInput = React.forwardRef<HTMLDivElement, OtpInputProps>(\n ({\n length = 6,\n value = '',\n onChange,\n autoFocus = false,\n type = 'number',\n disabled = false,\n size = 'default',\n className,\n ...props\n }, ref) => {\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([])\n const [focusedIndex, setFocusedIndex] = React.useState(autoFocus ? 0 : -1)\n const [values, setValues] = React.useState<string[]>(() =>\n Array.from({ length }, (_, i) => value.charAt(i) || ''),\n )\n\n // Sync external value changes\n React.useEffect(() => {\n setValues(Array.from({ length }, (_, i) => value.charAt(i) || ''))\n }, [value, length])\n\n // Auto-focus first input\n React.useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus])\n\n const api = createOtpInput({ length, value, autoFocus, type, disabled })\n\n const updateValue = (index: number, char: string) => {\n const filtered = type === 'number' ? char.replace(/[^0-9]/g, '') : char\n const newChar = filtered.charAt(0) || ''\n const newValues = [...values]\n newValues[index] = newChar\n setValues(newValues)\n onChange?.(newValues.join(''))\n return newChar\n }\n\n const handleInput = (index: number, e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n const char = inputValue.slice(-1)\n const result = updateValue(index, char)\n\n // Auto-advance to next input\n if (result && index < length - 1) {\n setFocusedIndex(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n if (values[index]) {\n updateValue(index, '')\n } else if (index > 0) {\n updateValue(index - 1, '')\n setFocusedIndex(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n }\n\n if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n setFocusedIndex(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n\n if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n setFocusedIndex(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pasteData = e.clipboardData.getData('text')\n const parsed = api.parsePaste(pasteData)\n setValues(parsed)\n onChange?.(parsed.join(''))\n\n // Focus the last filled input or the next empty one\n let lastFilledIndex = -1\n for (let i = parsed.length - 1; i >= 0; i--) {\n if (parsed[i] !== '') { lastFilledIndex = i; break }\n }\n const nextIndex = Math.min(lastFilledIndex + 1, length - 1)\n setFocusedIndex(nextIndex)\n inputRefs.current[nextIndex]?.focus()\n }\n\n const handleFocus = (index: number) => {\n setFocusedIndex(index)\n }\n\n const handleBlur = () => {\n setFocusedIndex(-1)\n }\n\n return (\n <div\n ref={ref}\n className={cn(otpInputContainerVariants({ size }), className)}\n {...api.rootAriaProps}\n {...props}\n >\n {Array.from({ length }, (_, index) => {\n const slotProps = api.getSlotProps(index)\n const isFocused = index === focusedIndex\n const isFilled = values[index] !== ''\n\n return (\n <input\n key={index}\n ref={(el) => { inputRefs.current[index] = el }}\n className={cn(otpInputSlotVariants({\n size,\n focused: isFocused ? 'true' : 'false',\n filled: isFilled ? 'true' : 'false',\n }))}\n value={values[index]}\n onChange={(e) => handleInput(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={() => handleFocus(index)}\n onBlur={handleBlur}\n maxLength={1}\n inputMode={type === 'number' ? 'numeric' : 'text'}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n disabled={disabled}\n aria-label={`Digit ${index + 1} of ${length}`}\n data-slot=\"otp-slot\"\n data-focused={isFocused ? '' : undefined}\n data-filled={isFilled ? '' : undefined}\n />\n )\n })}\n </div>\n )\n },\n)\n\nOtpInput.displayName = 'OtpInput'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd'\n\nexport interface PresenceProps {\n /** The presence status to display */\n status: PresenceStatus\n /** Show a text label alongside the indicator */\n showLabel?: boolean\n /** Custom label override */\n label?: string\n}\n\nexport interface PresenceAPI {\n /** ARIA attributes for the indicator */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** CSS color for the status dot */\n color: string\n /** Human-readable label for the status */\n label: string\n /** Whether to show the label text */\n showLabel: boolean\n /** The current status */\n status: PresenceStatus\n}\n\nconst STATUS_COLORS: Record<PresenceStatus, string> = {\n online: 'green',\n offline: 'gray',\n away: 'yellow',\n busy: 'red',\n dnd: 'red',\n}\n\nconst STATUS_LABELS: Record<PresenceStatus, string> = {\n online: 'Online',\n offline: 'Offline',\n away: 'Away',\n busy: 'Busy',\n dnd: 'Do Not Disturb',\n}\n\nexport { STATUS_COLORS, STATUS_LABELS }\n\nexport function createPresence(props: PresenceProps): PresenceAPI {\n const { status, showLabel: showLabelProp = false, label: labelOverride } = props\n\n const color = STATUS_COLORS[status]\n const label = labelOverride ?? STATUS_LABELS[status]\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'status',\n 'aria-label': label,\n }\n\n return {\n ariaProps,\n color,\n label,\n showLabel: showLabelProp,\n status,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const presenceDotVariants = cva({\n base: 'inline-block rounded-full',\n variants: {\n status: {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n dnd: 'bg-red-500',\n },\n size: {\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n },\n },\n defaultVariants: {\n status: 'offline',\n size: 'md',\n },\n})\n\nexport const presenceContainerStyles =\n 'inline-flex items-center gap-1.5'\n\nexport const presenceLabelStyles =\n 'text-sm text-muted-foreground'\n","import * as React from 'react'\nimport {\n createPresence,\n presenceDotVariants,\n presenceContainerStyles,\n presenceLabelStyles,\n type PresenceStatus,\n} from '@refraction-ui/presence-indicator'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface PresenceIndicatorProps {\n status: PresenceStatus\n showLabel?: boolean\n label?: string\n size?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nexport function PresenceIndicator({\n status,\n showLabel = false,\n label,\n size = 'md',\n className,\n}: PresenceIndicatorProps) {\n const api = createPresence({ status, showLabel, label })\n\n return React.createElement(\n 'span',\n { ...api.ariaProps, className: cn(presenceContainerStyles, className) },\n React.createElement('span', {\n className: presenceDotVariants({ status, size }),\n }),\n api.showLabel &&\n React.createElement('span', { className: presenceLabelStyles }, api.label),\n )\n}\n\nPresenceIndicator.displayName = 'PresenceIndicator'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface RadioOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface RadioGroupProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n name?: string\n disabled?: boolean\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport interface RadioGroupAPI {\n state: { selectedValue: string | undefined }\n groupProps: Partial<AccessibilityProps> & Record<string, unknown>\n getItemProps(value: string, disabled?: boolean): Partial<AccessibilityProps> & Record<string, unknown>\n select(value: string): void\n keyboardHandlers: Record<string, (e: KeyboardEvent) => void>\n}\n\nexport function createRadioGroup(props: RadioGroupProps = {}): RadioGroupAPI {\n const { value: controlled, defaultValue, onValueChange, name, disabled = false, orientation = 'vertical' } = props\n let selected = controlled ?? defaultValue\n\n function select(value: string) {\n if (disabled) return\n selected = value\n onValueChange?.(value)\n }\n\n const groupProps = {\n role: 'radiogroup' as const,\n 'aria-orientation': orientation,\n ...(disabled ? { 'aria-disabled': true } : {}),\n }\n\n function getItemProps(value: string, itemDisabled?: boolean) {\n const isSelected = selected === value\n const isDisabled = disabled || itemDisabled\n return {\n role: 'radio' as const,\n 'aria-checked': isSelected,\n 'aria-disabled': isDisabled || undefined,\n tabIndex: isSelected ? 0 : -1,\n 'data-state': isSelected ? 'checked' : 'unchecked',\n ...(isDisabled ? { 'data-disabled': '' } : {}),\n ...(name ? { name } : {}),\n }\n }\n\n const keyboardHandlers: Record<string, (e: KeyboardEvent) => void> = {\n ArrowDown(e) { e.preventDefault() },\n ArrowUp(e) { e.preventDefault() },\n ArrowRight(e) { e.preventDefault() },\n ArrowLeft(e) { e.preventDefault() },\n }\n\n return {\n state: { get selectedValue() { return selected } },\n groupProps,\n getItemProps,\n select,\n keyboardHandlers,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const radioGroupVariants = cva({\n base: 'flex gap-3',\n variants: {\n orientation: {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n },\n },\n defaultVariants: { orientation: 'vertical' },\n})\n\nexport const radioItemVariants = cva({\n base: 'flex items-center gap-2 cursor-pointer',\n variants: {\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: { disabled: 'false' },\n})\n\nexport const radioCircleVariants = cva({\n base: 'h-4 w-4 rounded-full border border-primary transition-colors',\n variants: {\n checked: {\n true: 'border-primary bg-primary',\n false: 'border-input',\n },\n },\n defaultVariants: { checked: 'false' },\n})\n","import * as React from 'react'\nimport {\n createRadioGroup,\n radioGroupVariants,\n radioItemVariants,\n radioCircleVariants,\n type RadioGroupProps as CoreRadioGroupProps,\n} from '@refraction-ui/radio'\nimport { cn } from '@refraction-ui/shared'\n\ninterface RadioContextValue {\n value: string | undefined\n onValueChange: (value: string) => void\n name?: string\n disabled: boolean\n}\n\nconst RadioContext = React.createContext<RadioContextValue | null>(null)\n\nexport interface RadioGroupProps extends CoreRadioGroupProps {\n children: React.ReactNode\n className?: string\n}\n\nexport function RadioGroup({\n children,\n className,\n value: controlledValue,\n defaultValue,\n onValueChange,\n name,\n disabled = false,\n orientation = 'vertical',\n}: RadioGroupProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const api = createRadioGroup({ value: currentValue, name, disabled, orientation })\n\n const handleChange = React.useCallback(\n (val: string) => {\n if (!isControlled) setInternalValue(val)\n onValueChange?.(val)\n },\n [isControlled, onValueChange],\n )\n\n const ctx = React.useMemo<RadioContextValue>(\n () => ({ value: currentValue, onValueChange: handleChange, name, disabled }),\n [currentValue, handleChange, name, disabled],\n )\n\n return React.createElement(\n RadioContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ...api.groupProps, className: cn(radioGroupVariants({ orientation }), className) },\n children,\n ),\n )\n}\n\nexport interface RadioItemProps {\n value: string\n children?: React.ReactNode\n disabled?: boolean\n className?: string\n}\n\nexport function RadioItem({ value, children, disabled = false, className }: RadioItemProps) {\n const ctx = React.useContext(RadioContext)\n if (!ctx) throw new Error('RadioItem must be used within RadioGroup')\n\n const isChecked = ctx.value === value\n const isDisabled = ctx.disabled || disabled\n\n return React.createElement(\n 'label',\n {\n className: cn(radioItemVariants({ disabled: isDisabled ? 'true' : 'false' }), className),\n 'data-state': isChecked ? 'checked' : 'unchecked',\n },\n React.createElement(\n 'button',\n {\n type: 'button',\n role: 'radio',\n 'aria-checked': isChecked,\n 'aria-disabled': isDisabled || undefined,\n tabIndex: isChecked ? 0 : -1,\n disabled: isDisabled,\n className: cn(radioCircleVariants({ checked: isChecked ? 'true' : 'false' })),\n onClick: () => !isDisabled && ctx.onValueChange(value),\n },\n isChecked &&\n React.createElement(\n 'span',\n { className: 'block h-2 w-2 rounded-full bg-primary-foreground mx-auto' },\n ),\n ),\n children && React.createElement('span', { className: 'text-sm' }, children),\n )\n}\n\nRadioGroup.displayName = 'RadioGroup'\nRadioItem.displayName = 'RadioItem'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface Reaction {\n /** The emoji character */\n emoji: string\n /** Number of users who reacted with this emoji */\n count: number\n /** Whether the current user has reacted */\n userReacted: boolean\n}\n\nexport interface ReactionBarProps {\n /** Current reactions */\n reactions: Reaction[]\n /** Callback when a reaction is toggled */\n onToggle?: (emoji: string) => void\n /** Callback when a new reaction is added */\n onAdd?: (emoji: string) => void\n}\n\nexport interface ReactionBarAPI {\n /** Current reactions */\n reactions: Reaction[]\n /** Toggle a reaction */\n toggle(emoji: string): void\n /** Add a new reaction */\n add(emoji: string): void\n /** ARIA props for the reaction bar container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for an individual reaction pill */\n getReactionAriaProps(reaction: Reaction): Record<string, unknown>\n /** ARIA props for the \"add reaction\" button */\n addButtonAriaProps: Record<string, unknown>\n /** Generated IDs */\n ids: {\n container: string\n label: string\n }\n}\n\nexport function createReactionBar(props: ReactionBarProps): ReactionBarAPI {\n const { reactions, onToggle, onAdd } = props\n\n const containerId = generateId('rfr-reactions')\n const labelId = generateId('rfr-reactions-label')\n\n function toggle(emoji: string): void {\n onToggle?.(emoji)\n }\n\n function add(emoji: string): void {\n onAdd?.(emoji)\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'group',\n 'aria-label': 'Reactions',\n id: containerId,\n }\n\n function getReactionAriaProps(reaction: Reaction): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-pressed': reaction.userReacted,\n 'aria-label': `${reaction.emoji} ${reaction.count} reaction${reaction.count === 1 ? '' : 's'}${reaction.userReacted ? ', you reacted' : ''}`,\n }\n }\n\n const addButtonAriaProps: Record<string, unknown> = {\n role: 'button',\n 'aria-label': 'Add reaction',\n }\n\n return {\n reactions,\n toggle,\n add,\n ariaProps,\n getReactionAriaProps,\n addButtonAriaProps,\n ids: {\n container: containerId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const reactionBarStyles =\n 'flex flex-wrap items-center gap-1'\n\nexport const reactionPillVariants = cva({\n base: 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors hover:bg-accent',\n variants: {\n state: {\n active: 'border-primary bg-primary/10 text-primary',\n inactive: 'border-border bg-background text-foreground',\n },\n },\n defaultVariants: {\n state: 'inactive',\n },\n})\n\nexport const reactionAddButtonStyles =\n 'inline-flex items-center justify-center h-6 w-6 rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground hover:border-muted-foreground hover:text-foreground cursor-pointer transition-colors text-xs'\n\nexport const reactionEmojiStyles = 'text-sm'\nexport const reactionCountStyles = 'text-xs font-medium tabular-nums'\n","import * as React from 'react'\nimport {\n createReactionBar,\n reactionBarStyles,\n reactionPillVariants,\n reactionAddButtonStyles,\n reactionEmojiStyles,\n reactionCountStyles,\n type Reaction,\n} from '@refraction-ui/reaction-bar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ReactionBarProps {\n reactions: Reaction[]\n onToggle?: (emoji: string) => void\n onAdd?: (emoji: string) => void\n showAddButton?: boolean\n className?: string\n}\n\nexport function ReactionBar({\n reactions,\n onToggle,\n onAdd,\n showAddButton = true,\n className,\n}: ReactionBarProps) {\n const api = createReactionBar({ reactions, onToggle, onAdd })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(reactionBarStyles, className) },\n api.reactions.map((reaction, i) =>\n React.createElement(\n 'button',\n {\n key: `${reaction.emoji}-${i}`,\n type: 'button',\n className: reactionPillVariants({\n state: reaction.userReacted ? 'active' : 'inactive',\n }),\n onClick: () => api.toggle(reaction.emoji),\n ...api.getReactionAriaProps(reaction),\n },\n React.createElement('span', { className: reactionEmojiStyles }, reaction.emoji),\n React.createElement('span', { className: reactionCountStyles }, reaction.count),\n ),\n ),\n showAddButton &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: reactionAddButtonStyles,\n onClick: () => onAdd?.('\\u{1F44D}'),\n ...api.addButtonAriaProps,\n },\n '+',\n ),\n )\n}\n\nReactionBar.displayName = 'ReactionBar'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectProps {\n value?: string\n options?: SelectOption[]\n placeholder?: string\n disabled?: boolean\n open?: boolean\n name?: string\n}\n\nexport interface SelectAPI {\n /** Trigger element ARIA + keyboard props */\n triggerProps: {\n ariaProps: Partial<AccessibilityProps>\n keyboardHandlers: KeyboardHandlerMap\n dataAttributes: Record<string, string>\n }\n /** Content (dropdown) props */\n contentProps: {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n }\n /** Get props for a single option */\n getOptionProps: (option: SelectOption) => {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n isSelected: boolean\n }\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Current state */\n state: {\n open: boolean\n selectedValue: string | undefined\n selectedLabel: string | undefined\n disabled: boolean\n placeholder: string\n }\n /** Generated IDs for trigger/content association */\n ids: {\n trigger: string\n content: string\n }\n}\n\nexport function createSelect(props: SelectProps = {}): SelectAPI {\n const {\n value,\n options = [],\n placeholder = 'Select an option',\n disabled = false,\n open = false,\n } = props\n\n const isInteractive = !disabled\n const selectedOption = options.find((o) => o.value === value)\n\n const triggerId = generateId('select-trigger')\n const contentId = generateId('select-content')\n\n const triggerAriaProps: Partial<AccessibilityProps> = {\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-labelledby': triggerId,\n }\n if (disabled) {\n triggerAriaProps['aria-disabled'] = true\n }\n\n const triggerKeyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n triggerKeyboardHandlers[Keys.Enter] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowDown] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowUp] = (e) => e.preventDefault()\n }\n\n const triggerDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n if (disabled) {\n triggerDataAttributes['data-disabled'] = ''\n }\n\n const contentAriaProps: Partial<AccessibilityProps> = {\n role: 'listbox',\n 'aria-labelledby': triggerId,\n }\n\n const contentDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n\n function getOptionProps(option: SelectOption) {\n const isSelected = option.value === value\n const optionAriaProps: Partial<AccessibilityProps> = {\n role: 'option',\n 'aria-selected': isSelected,\n }\n if (option.disabled) {\n optionAriaProps['aria-disabled'] = true\n }\n\n const optionDataAttributes: Record<string, string> = {}\n if (isSelected) {\n optionDataAttributes['data-state'] = 'checked'\n }\n if (option.disabled) {\n optionDataAttributes['data-disabled'] = ''\n }\n\n return {\n ariaProps: optionAriaProps,\n dataAttributes: optionDataAttributes,\n isSelected,\n }\n }\n\n return {\n triggerProps: {\n ariaProps: triggerAriaProps,\n keyboardHandlers: triggerKeyboardHandlers,\n dataAttributes: triggerDataAttributes,\n },\n contentProps: {\n ariaProps: contentAriaProps,\n dataAttributes: contentDataAttributes,\n },\n getOptionProps,\n isInteractive,\n state: {\n open,\n selectedValue: selectedOption?.value,\n selectedLabel: selectedOption?.label,\n disabled,\n placeholder,\n },\n ids: {\n trigger: triggerId,\n content: contentId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const selectTokens: TokenContract = {\n name: 'select',\n tokens: {\n bg: { variable: '--rfr-select-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-select-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-select-border', fallback: 'hsl(var(--border))' },\n ring: { variable: '--rfr-select-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const selectTriggerVariants = cva({\n base: 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'h-8 text-xs',\n default: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const selectContentVariants = cva({\n base: 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95',\n variants: {\n position: {\n popper: 'translate-y-1',\n 'item-aligned': '',\n },\n },\n defaultVariants: {\n position: 'popper',\n },\n})\n\nexport const selectItemVariants = cva({\n base: 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n variants: {\n selected: {\n true: 'bg-accent/50',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createSelect,\n selectTriggerVariants,\n selectContentVariants,\n selectItemVariants,\n type SelectOption,\n} from '@refraction-ui/select'\nimport { cn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface SelectContextValue {\n value: string | undefined\n onValueChange: (value: string) => void\n open: boolean\n setOpen: (open: boolean) => void\n options: SelectOption[]\n disabled: boolean\n placeholder: string\n triggerId: string\n contentId: string\n}\n\nconst SelectContext = React.createContext<SelectContextValue>({\n value: undefined,\n onValueChange: () => {},\n open: false,\n setOpen: () => {},\n options: [],\n disabled: false,\n placeholder: 'Select an option',\n triggerId: '',\n contentId: '',\n})\n\n/* ─── Select (root) ────────────────────────────────────────────── */\nexport interface SelectProps {\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\n/**\n * Select -- dropdown select with accessible keyboard and ARIA support.\n * Compound component: Select > SelectTrigger + SelectContent > SelectItem.\n */\nexport function Select({\n value,\n onValueChange,\n disabled = false,\n children,\n placeholder = 'Select an option',\n}: SelectProps) {\n const [open, setOpen] = React.useState(false)\n\n const api = createSelect({ value, disabled, open, placeholder })\n\n return (\n <SelectContext.Provider\n value={{\n value,\n onValueChange: onValueChange ?? (() => {}),\n open,\n setOpen: (v) => {\n if (!disabled) setOpen(v)\n },\n options: [],\n disabled,\n placeholder,\n triggerId: api.ids.trigger,\n contentId: api.ids.content,\n }}\n >\n {children}\n </SelectContext.Provider>\n )\n}\n\n/* ─── SelectTrigger ────────────────────────────────────────────── */\nexport interface SelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: 'sm' | 'default' | 'lg'\n}\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'default', ...props }, ref) => {\n const { open, setOpen, disabled, triggerId, contentId } = React.useContext(SelectContext)\n\n const api = createSelect({ disabled, open })\n\n const handleClick = () => {\n if (!disabled) {\n setOpen(!open)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n if (!disabled) setOpen(!open)\n }\n if (e.key === 'Escape') {\n setOpen(false)\n }\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && !open) {\n e.preventDefault()\n if (!disabled) setOpen(true)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={triggerId}\n className={cn(selectTriggerVariants({ size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.triggerProps.ariaProps}\n {...api.triggerProps.dataAttributes}\n aria-controls={contentId}\n {...props}\n >\n {children}\n <svg\n className=\"h-4 w-4 opacity-50 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n )\n },\n)\nSelectTrigger.displayName = 'SelectTrigger'\n\n/* ─── SelectContent ────────────────────────────────────────────── */\nexport interface SelectContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n ({ className, children, ...props }, ref) => {\n const { open, contentId, triggerId } = React.useContext(SelectContext)\n\n if (!open) return null\n\n return (\n <div\n ref={ref}\n id={contentId}\n className={cn(selectContentVariants(), className)}\n role=\"listbox\"\n aria-labelledby={triggerId}\n data-state={open ? 'open' : 'closed'}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\nSelectContent.displayName = 'SelectContent'\n\n/* ─── SelectItem ───────────────────────────────────────────────── */\nexport interface SelectItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n disabled?: boolean\n}\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n ({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) => {\n const { value, onValueChange, setOpen } = React.useContext(SelectContext)\n const isSelected = value === itemValue\n\n const handleClick = () => {\n if (!itemDisabled) {\n onValueChange(itemValue)\n setOpen(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === 'Enter' || e.key === ' ') && !itemDisabled) {\n e.preventDefault()\n onValueChange(itemValue)\n setOpen(false)\n }\n }\n\n return (\n <div\n ref={ref}\n className={cn(selectItemVariants({ selected: isSelected ? 'true' : 'false' }), className)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={itemDisabled || undefined}\n data-state={isSelected ? 'checked' : undefined}\n data-disabled={itemDisabled ? '' : undefined}\n tabIndex={itemDisabled ? undefined : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {isSelected && (\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n </span>\n )}\n {children}\n </div>\n )\n },\n)\nSelectItem.displayName = 'SelectItem'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type StatusType = 'success' | 'error' | 'warning' | 'info' | 'pending' | 'neutral'\n\nexport interface StatusProps {\n /** The status type */\n type: StatusType\n /** Label to display alongside the status dot */\n label?: string\n /** Whether to show a pulse animation (primarily for 'pending' status) */\n pulse?: boolean\n}\n\nexport interface StatusAPI {\n /** ARIA attributes for the status indicator */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** The status type */\n type: StatusType\n /** The display label */\n label: string\n /** Whether to show pulse animation */\n pulse: boolean\n /** CSS color class name for the dot */\n color: string\n}\n\nconst STATUS_COLORS: Record<StatusType, string> = {\n success: 'green',\n error: 'red',\n warning: 'yellow',\n info: 'blue',\n pending: 'orange',\n neutral: 'gray',\n}\n\nconst STATUS_LABELS: Record<StatusType, string> = {\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n pending: 'Pending',\n neutral: 'Neutral',\n}\n\nexport { STATUS_COLORS, STATUS_LABELS }\n\nexport function createStatusIndicator(props: StatusProps): StatusAPI {\n const { type, label: labelOverride, pulse: pulseOverride } = props\n\n const color = STATUS_COLORS[type]\n const label = labelOverride ?? STATUS_LABELS[type]\n const pulse = pulseOverride ?? (type === 'pending')\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'status',\n 'aria-label': label,\n }\n\n return {\n ariaProps,\n type,\n label,\n pulse,\n color,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const statusContainerStyles =\n 'inline-flex items-center gap-1.5'\n\nexport const statusDotVariants = cva({\n base: 'inline-block h-2 w-2 rounded-full',\n variants: {\n type: {\n success: 'bg-green-500',\n error: 'bg-red-500',\n warning: 'bg-yellow-500',\n info: 'bg-blue-500',\n pending: 'bg-orange-500',\n neutral: 'bg-gray-400',\n },\n },\n defaultVariants: {\n type: 'neutral',\n },\n})\n\nexport const statusPulseVariants = cva({\n base: 'animate-pulse inline-block h-2 w-2 rounded-full',\n variants: {\n type: {\n success: 'bg-green-500',\n error: 'bg-red-500',\n warning: 'bg-yellow-500',\n info: 'bg-blue-500',\n pending: 'bg-orange-500',\n neutral: 'bg-gray-400',\n },\n },\n defaultVariants: {\n type: 'pending',\n },\n})\n\nexport const statusLabelStyles =\n 'text-sm text-muted-foreground'\n","import * as React from 'react'\nimport {\n createStatusIndicator,\n statusContainerStyles,\n statusDotVariants,\n statusPulseVariants,\n statusLabelStyles,\n type StatusType,\n} from '@refraction-ui/status-indicator'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface StatusIndicatorProps {\n type: StatusType\n label?: string\n pulse?: boolean\n showLabel?: boolean\n className?: string\n}\n\nexport function StatusIndicator({\n type,\n label,\n pulse,\n showLabel = true,\n className,\n}: StatusIndicatorProps) {\n const api = createStatusIndicator({ type, label, pulse })\n\n const dotClassName = api.pulse\n ? statusPulseVariants({ type })\n : statusDotVariants({ type })\n\n return React.createElement(\n 'span',\n { ...api.ariaProps, className: cn(statusContainerStyles, className) },\n React.createElement('span', { className: dotClassName }),\n showLabel &&\n React.createElement('span', { className: statusLabelStyles }, api.label),\n )\n}\n\nStatusIndicator.displayName = 'StatusIndicator'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport interface SwitchProps {\n checked?: boolean\n disabled?: boolean\n required?: boolean\n name?: string\n value?: string\n}\n\nexport interface SwitchAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Current state */\n state: {\n checked: boolean\n disabled: boolean\n }\n}\n\nexport function createSwitch(props: SwitchProps = {}): SwitchAPI {\n const { checked = false, disabled = false } = props\n const isInteractive = !disabled\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'switch',\n 'aria-checked': checked,\n }\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n if (checked) {\n dataAttributes['data-state'] = 'checked'\n } else {\n dataAttributes['data-state'] = 'unchecked'\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n state: { checked, disabled },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const switchTokens: TokenContract = {\n name: 'switch',\n tokens: {\n bg: { variable: '--rfr-switch-bg', fallback: 'hsl(var(--input))' },\n 'bg-checked': { variable: '--rfr-switch-bg-checked', fallback: 'hsl(var(--primary))' },\n thumb: { variable: '--rfr-switch-thumb', fallback: 'hsl(var(--background))' },\n ring: { variable: '--rfr-switch-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const switchVariants = cva({\n base: 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n checked: {\n true: 'bg-primary',\n false: 'bg-input',\n },\n size: {\n sm: 'h-4 w-7',\n default: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n})\n\nexport const switchThumbVariants = cva({\n base: 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform',\n variants: {\n checked: {\n true: '',\n false: 'translate-x-0',\n },\n size: {\n sm: 'h-3 w-3',\n default: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n compoundVariants: [\n { checked: 'true', size: 'sm', class: 'translate-x-3' },\n { checked: 'true', size: 'default', class: 'translate-x-4' },\n { checked: 'true', size: 'lg', class: 'translate-x-5' },\n ],\n})\n","import * as React from 'react'\nimport {\n createSwitch,\n switchVariants,\n switchThumbVariants,\n} from '@refraction-ui/switch'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Switch component -- a toggle switch with accessible keyboard and ARIA support.\n *\n * Uses the headless @refraction-ui/switch core for state, ARIA, and keyboard handling.\n */\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked = false, onCheckedChange, disabled = false, size = 'default', className, ...props }, ref) => {\n const api = createSwitch({ checked, disabled })\n\n const handleClick = () => {\n if (api.isInteractive) {\n onCheckedChange?.(!checked)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ') {\n e.preventDefault()\n if (api.isInteractive) {\n onCheckedChange?.(!checked)\n }\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(switchVariants({ checked: checked ? 'true' : 'false', size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n <span\n className={cn(switchThumbVariants({ checked: checked ? 'true' : 'false', size }))}\n />\n </button>\n )\n },\n)\n\nSwitch.displayName = 'Switch'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface MessageReaction {\n emoji: string\n count: number\n userReacted: boolean\n}\n\nexport interface MessageAttachment {\n id: string\n name: string\n url: string\n type: string\n size?: number\n}\n\nexport interface MessageData {\n /** Unique message ID */\n id: string\n /** Author display info */\n author: {\n id: string\n name: string\n avatarUrl?: string\n }\n /** Message content (can contain markdown) */\n content: string\n /** Message timestamp */\n timestamp: Date\n /** Reactions on this message */\n reactions?: MessageReaction[]\n /** Threaded replies */\n replies?: MessageData[]\n /** File attachments */\n attachments?: MessageAttachment[]\n /** Whether this message has been edited */\n edited?: boolean\n}\n\nexport interface ThreadViewProps {\n /** Messages to display */\n messages: MessageData[]\n /** Callback when a reply is sent */\n onReply?: (messageId: string, content: string) => void\n /** Callback when a reaction is toggled */\n onReact?: (messageId: string, emoji: string) => void\n /** Current user ID (for highlighting own messages) */\n currentUserId?: string\n}\n\nexport interface ThreadViewState {\n messages: MessageData[]\n replyingTo: string | null\n}\n\nexport interface ThreadViewAPI {\n /** Current state */\n state: ThreadViewState\n /** Start replying to a message */\n startReply(messageId: string): void\n /** Cancel reply */\n cancelReply(): void\n /** Send a reply */\n reply(messageId: string, content: string): void\n /** Toggle a reaction on a message */\n react(messageId: string, emoji: string): void\n /** Format a timestamp for display */\n formatTimestamp(date: Date): string\n /** Format relative time (e.g., \"2 minutes ago\") */\n formatRelativeTime(date: Date): string\n /** ARIA props for the thread container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for a message */\n getMessageAriaProps(message: MessageData): Record<string, unknown>\n /** Get ARIA props for a reply button */\n getReplyButtonAriaProps(messageId: string): Record<string, unknown>\n /** Generated IDs */\n ids: {\n thread: string\n label: string\n }\n}\n\nexport function formatTimestamp(date: Date): string {\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const ampm = hours >= 12 ? 'PM' : 'AM'\n const displayHours = hours % 12 || 12\n const displayMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`\n return `${displayHours}:${displayMinutes} ${ampm}`\n}\n\nexport function formatRelativeTime(date: Date, now?: Date): string {\n const reference = now ?? new Date()\n const diffMs = reference.getTime() - date.getTime()\n const diffSeconds = Math.floor(diffMs / 1000)\n const diffMinutes = Math.floor(diffSeconds / 60)\n const diffHours = Math.floor(diffMinutes / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSeconds < 60) return 'just now'\n if (diffMinutes < 60) return `${diffMinutes} minute${diffMinutes === 1 ? '' : 's'} ago`\n if (diffHours < 24) return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`\n if (diffDays < 7) return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`\n\n return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })\n}\n\nexport function createThreadView(props: ThreadViewProps): ThreadViewAPI {\n const { messages, onReply, onReact, currentUserId } = props\n\n let replyingTo: string | null = null\n\n const threadId = generateId('rfr-thread')\n const labelId = generateId('rfr-thread-label')\n\n function startReply(messageId: string): void {\n replyingTo = messageId\n }\n\n function cancelReply(): void {\n replyingTo = null\n }\n\n function reply(messageId: string, content: string): void {\n onReply?.(messageId, content)\n replyingTo = null\n }\n\n function react(messageId: string, emoji: string): void {\n onReact?.(messageId, emoji)\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'log',\n 'aria-label': 'Message thread',\n 'aria-live': 'polite',\n id: threadId,\n }\n\n function getMessageAriaProps(message: MessageData): Record<string, unknown> {\n const isOwn = currentUserId && message.author.id === currentUserId\n return {\n role: 'article',\n 'aria-label': `Message from ${message.author.name}${isOwn ? ' (you)' : ''} at ${formatTimestamp(message.timestamp)}`,\n }\n }\n\n function getReplyButtonAriaProps(messageId: string): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-label': `Reply to message`,\n }\n }\n\n return {\n state: {\n messages,\n get replyingTo() { return replyingTo },\n },\n startReply,\n cancelReply,\n reply,\n react,\n formatTimestamp,\n formatRelativeTime,\n ariaProps,\n getMessageAriaProps,\n getReplyButtonAriaProps,\n ids: {\n thread: threadId,\n label: labelId,\n },\n }\n}\n","export const threadContainerStyles =\n 'flex flex-col gap-1'\n\nexport const threadMessageStyles =\n 'flex gap-3 px-4 py-2 hover:bg-accent/50 rounded-md transition-colors group'\n\nexport const threadAvatarStyles =\n 'h-9 w-9 rounded-full bg-muted flex items-center justify-center text-sm font-medium overflow-hidden flex-shrink-0'\n\nexport const threadContentStyles =\n 'flex-1 min-w-0'\n\nexport const threadAuthorStyles =\n 'font-semibold text-sm'\n\nexport const threadTimestampStyles =\n 'text-xs text-muted-foreground ml-2'\n\nexport const threadBodyStyles =\n 'text-sm mt-0.5 whitespace-pre-wrap break-words'\n\nexport const threadReactionsStyles =\n 'flex flex-wrap gap-1 mt-1'\n\nexport const threadReplyIndicatorStyles =\n 'flex items-center gap-1 mt-1 text-xs text-primary cursor-pointer hover:underline'\n\nexport const threadActionsStyles =\n 'flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity'\n\nexport const threadAttachmentStyles =\n 'flex items-center gap-2 mt-1 p-2 rounded border text-xs bg-muted/50'\n\nexport const threadEditedStyles =\n 'text-xs text-muted-foreground ml-1'\n","import * as React from 'react'\nimport {\n createThreadView,\n threadContainerStyles,\n threadMessageStyles,\n threadAvatarStyles,\n threadContentStyles,\n threadAuthorStyles,\n threadTimestampStyles,\n threadBodyStyles,\n threadReactionsStyles,\n threadReplyIndicatorStyles,\n threadActionsStyles,\n threadAttachmentStyles,\n threadEditedStyles,\n type MessageData,\n type MessageReaction,\n} from '@refraction-ui/thread-view'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ThreadViewProps {\n messages: MessageData[]\n onReply?: (messageId: string, content: string) => void\n onReact?: (messageId: string, emoji: string) => void\n currentUserId?: string\n className?: string\n}\n\nfunction MessageComponent({\n message,\n api,\n}: {\n message: MessageData\n api: ReturnType<typeof createThreadView>\n}) {\n return React.createElement(\n 'div',\n { className: threadMessageStyles, ...api.getMessageAriaProps(message) },\n // Avatar\n React.createElement(\n 'div',\n { className: threadAvatarStyles },\n message.author.avatarUrl\n ? React.createElement('img', {\n src: message.author.avatarUrl,\n alt: message.author.name,\n className: 'h-full w-full object-cover',\n })\n : message.author.name.charAt(0).toUpperCase(),\n ),\n // Content\n React.createElement(\n 'div',\n { className: threadContentStyles },\n React.createElement(\n 'div',\n { className: 'flex items-baseline' },\n React.createElement('span', { className: threadAuthorStyles }, message.author.name),\n React.createElement(\n 'span',\n { className: threadTimestampStyles },\n api.formatTimestamp(message.timestamp),\n ),\n message.edited &&\n React.createElement('span', { className: threadEditedStyles }, '(edited)'),\n ),\n React.createElement('div', { className: threadBodyStyles }, message.content),\n // Reactions\n message.reactions &&\n message.reactions.length > 0 &&\n React.createElement(\n 'div',\n { className: threadReactionsStyles },\n message.reactions.map((reaction, i) =>\n React.createElement(\n 'button',\n {\n key: `${reaction.emoji}-${i}`,\n type: 'button',\n className: cn(\n 'inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-xs cursor-pointer',\n reaction.userReacted ? 'border-primary bg-primary/10' : 'border-border',\n ),\n onClick: () => api.react(message.id, reaction.emoji),\n },\n `${reaction.emoji} ${reaction.count}`,\n ),\n ),\n ),\n // Reply indicator\n message.replies &&\n message.replies.length > 0 &&\n React.createElement(\n 'div',\n { className: threadReplyIndicatorStyles },\n `${message.replies.length} ${message.replies.length === 1 ? 'reply' : 'replies'}`,\n ),\n // Attachments\n message.attachments &&\n message.attachments.map((attachment) =>\n React.createElement(\n 'div',\n { key: attachment.id, className: threadAttachmentStyles },\n React.createElement('span', null, '\\u{1F4CE}'),\n React.createElement('span', { className: 'truncate' }, attachment.name),\n ),\n ),\n // Actions (reply button)\n React.createElement(\n 'div',\n { className: threadActionsStyles },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'text-xs text-muted-foreground hover:text-foreground cursor-pointer',\n onClick: () => api.startReply(message.id),\n ...api.getReplyButtonAriaProps(message.id),\n },\n 'Reply',\n ),\n ),\n ),\n )\n}\n\nexport function ThreadView({\n messages,\n onReply,\n onReact,\n currentUserId,\n className,\n}: ThreadViewProps) {\n const api = createThreadView({ messages, onReply, onReact, currentUserId })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(threadContainerStyles, className) },\n messages.map((message) =>\n React.createElement(MessageComponent, {\n key: message.id,\n message,\n api,\n }),\n ),\n )\n}\n\nThreadView.displayName = 'ThreadView'\n","export interface TocItem {\n id: string;\n text: string;\n level: number;\n}\n\nexport function parseHeadings(container: HTMLElement, selectors = 'h2, h3, h4'): TocItem[] {\n const headings = Array.from(container.querySelectorAll(selectors));\n return headings.map(h => ({\n id: h.id || h.textContent?.toLowerCase().replace(/\\s+/g, '-') || '',\n text: h.textContent || '',\n level: parseInt(h.tagName.charAt(1), 10)\n })).filter(h => h.id !== ''); // Ensure headings have IDs\n}\n\nexport function observeHeadings(\n headingIds: string[],\n callback: (activeId: string) => void,\n options?: IntersectionObserverInit\n): () => void {\n const observer = new IntersectionObserver((entries) => {\n // Find the first intersecting entry\n for (const entry of entries) {\n if (entry.isIntersecting) {\n callback(entry.target.id);\n break; // Or handle multiple, but usually we just care about one\n }\n }\n }, { rootMargin: '0px 0px -80% 0px', ...options });\n\n headingIds.forEach(id => {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n });\n\n return () => observer.disconnect();\n}\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\nimport { parseHeadings, observeHeadings, TocItem } from '@refraction-ui/table-of-contents'\n\nexport interface TableOfContentsProps extends React.HTMLAttributes<HTMLDivElement> {\n containerRef?: React.RefObject<HTMLElement | null>\n selectors?: string\n onActiveIdChange?: (id: string) => void\n}\n\nexport const TableOfContents = React.forwardRef<HTMLDivElement, TableOfContentsProps>(\n ({ className, containerRef, selectors = 'h2, h3, h4', onActiveIdChange, ...props }, ref) => {\n const [headings, setHeadings] = React.useState<TocItem[]>([])\n const [activeId, setActiveId] = React.useState<string>('')\n\n React.useEffect(() => {\n const container = containerRef?.current || document.body\n if (!container) return\n\n const parsedHeadings = parseHeadings(container, selectors)\n setHeadings(parsedHeadings)\n\n if (parsedHeadings.length === 0) return\n\n const disconnect = observeHeadings(parsedHeadings.map(h => h.id), (id) => {\n setActiveId(id)\n onActiveIdChange?.(id)\n })\n\n return () => disconnect()\n }, [containerRef, selectors, onActiveIdChange])\n\n if (headings.length === 0) {\n return null\n }\n\n return (\n <nav ref={ref} className={cn(\"space-y-1\", className)} {...props}>\n <ul className=\"m-0 list-none p-0\">\n {headings.map((heading) => (\n <li\n key={heading.id}\n className={cn(\n \"py-1\",\n heading.level === 3 ? \"pl-4\" : heading.level === 4 ? \"pl-8\" : \"\"\n )}\n >\n <a\n href={`#${heading.id}`}\n className={cn(\n \"block text-sm transition-colors hover:text-foreground\",\n activeId === heading.id ? \"font-medium text-foreground\" : \"text-muted-foreground\"\n )}\n >\n {heading.text}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n )\n }\n)\nTableOfContents.displayName = 'TableOfContents'\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nconst CarouselContext = React.createContext<{\n type: 'single' | 'multiple'\n value: string | string[]\n onValueChange: (value: string) => void\n} | null>(null)\n\nexport interface CarouselProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n type?: 'single' | 'multiple'\n collapsible?: boolean\n defaultValue?: string | string[]\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n}\n\nexport const Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n ({ className, type = 'single', collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | string[]>(\n defaultValue ?? (type === 'multiple' ? [] : '')\n )\n\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (itemValue: string) => {\n if (type === 'single') {\n const newValue = value === itemValue && collapsible ? '' : itemValue\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n } else {\n const arrValue = Array.isArray(value) ? value : []\n const newValue = arrValue.includes(itemValue)\n ? arrValue.filter((v) => v !== itemValue)\n : [...arrValue, itemValue]\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n }\n },\n [type, collapsible, value, onValueChange]\n )\n\n return (\n <CarouselContext.Provider value={{ type, value, onValueChange: handleValueChange }}>\n <div ref={ref} className={cn(\"flex flex-col w-full\", className)} {...props} />\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = 'Carousel'\n\nconst CarouselItemContext = React.createContext<{ value: string; isOpen: boolean } | null>(null)\n\nexport interface CarouselItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(CarouselContext)\n if (!context) throw new Error('CarouselItem must be within Carousel')\n\n const isOpen = context.type === 'single'\n ? context.value === value\n : Array.isArray(context.value) && context.value.includes(value)\n\n return (\n <CarouselItemContext.Provider value={{ value, isOpen }}>\n <div ref={ref} className={cn(\"border-b border-border\", className)} data-state={isOpen ? 'open' : 'closed'} {...props} />\n </CarouselItemContext.Provider>\n )\n }\n)\nCarouselItem.displayName = 'CarouselItem'\n\nexport interface CarouselTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const CarouselTrigger = React.forwardRef<HTMLButtonElement, CarouselTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const carouselContext = React.useContext(CarouselContext)\n const itemContext = React.useContext(CarouselItemContext)\n \n if (!carouselContext || !itemContext) throw new Error('CarouselTrigger missing context')\n\n return (\n <h3 className=\"flex m-0 p-0\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={itemContext.isOpen}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n onClick={() => carouselContext.onValueChange(itemContext.value)}\n {...props}\n >\n {children}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n </h3>\n )\n }\n)\nCarouselTrigger.displayName = 'CarouselTrigger'\n\nexport interface CarouselContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CarouselContent = React.forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ className, children, ...props }, ref) => {\n const itemContext = React.useContext(CarouselItemContext)\n if (!itemContext) throw new Error('CarouselContent missing context')\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n hidden={!itemContext.isOpen}\n {...props}\n >\n <div className=\"pb-4 pt-0 text-muted-foreground leading-relaxed\">{children}</div>\n </div>\n )\n }\n)\nCarouselContent.displayName = 'CarouselContent'\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(\"\", className)} {...props} />\n }\n)\nPagination.displayName = 'Pagination'\n","import React from 'react';\nexport const Callout = () => <div />;","import React from 'react';\nexport const Steps = () => <div />;","import * as React from 'react';\n\nexport const SkipToContent = () => {\n return null;\n};\n","import * as React from 'react';\n\nexport const CodeBlock = () => {\n return null;\n};\n","export interface LinkCardProps {\n href?: string\n}\n\nexport function createLinkCard(props: LinkCardProps = {}) {\n return {\n dataAttributes: { 'data-slot': 'link-card' }\n }\n}","import * as React from 'react'\nimport { createLinkCard } from '@refraction-ui/link-card'\nimport { cn } from '@refraction-ui/shared'\n\nexport const LinkCard = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, ...props }, ref) => {\n const api = createLinkCard(props)\n return (\n <a\n ref={ref}\n className={cn(className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n)\nLinkCard.displayName = 'LinkCard'","export interface CardGridProps {\n columns?: number\n}\n\nexport function createCardGrid(props: CardGridProps = {}) {\n return {\n dataAttributes: { 'data-slot': 'card-grid' }\n }\n}","import * as React from 'react'\nimport { createCardGrid, type CardGridProps } from '@refraction-ui/card-grid'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ReactCardGridProps extends React.HTMLAttributes<HTMLDivElement>, CardGridProps {}\n\nexport const CardGrid = React.forwardRef<HTMLDivElement, ReactCardGridProps>(\n ({ className, columns = 3, ...props }, ref) => {\n const api = createCardGrid({ columns })\n return (\n <div\n ref={ref}\n className={cn(className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n)\nCardGrid.displayName = 'CardGrid'","export interface PaymentProps {\n disabled?: boolean;\n}\n\nexport interface PaymentAPI {\n props: PaymentProps;\n}\n\nexport function createPayment(props: PaymentProps = {}): PaymentAPI {\n return {\n props: {\n ...props,\n 'data-slot': 'payment',\n } as PaymentProps & Record<string, unknown>,\n };\n}\n","import * as React from 'react';\nimport { createPayment, type PaymentProps as CorePaymentProps } from '@refraction-ui/payment';\nimport { cn } from '@refraction-ui/shared';\n\nexport interface PaymentProps extends React.HTMLAttributes<HTMLDivElement>, CorePaymentProps {\n disabled?: boolean;\n}\n\nexport const Payment = React.forwardRef<HTMLDivElement, PaymentProps>(\n ({ className, disabled, ...props }, ref) => {\n const api = createPayment({ disabled });\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-md mx-auto p-6 border border-border rounded-xl bg-card text-card-foreground shadow-sm\",\n disabled && \"opacity-50 pointer-events-none\",\n className\n )}\n {...api.props}\n {...props}\n />\n );\n }\n);\nPayment.displayName = 'Payment';\n\nexport interface PaymentHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentHeader = React.forwardRef<HTMLDivElement, PaymentHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"mb-6 flex flex-col gap-1.5\", className)} {...props} />\n )\n);\nPaymentHeader.displayName = 'PaymentHeader';\n\nexport interface PaymentTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const PaymentTitle = React.forwardRef<HTMLHeadingElement, PaymentTitleProps>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-xl font-semibold leading-none tracking-tight\", className)} {...props} />\n )\n);\nPaymentTitle.displayName = 'PaymentTitle';\n\nexport interface PaymentDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const PaymentDescription = React.forwardRef<HTMLParagraphElement, PaymentDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n);\nPaymentDescription.displayName = 'PaymentDescription';\n\nexport interface PaymentContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentContent = React.forwardRef<HTMLDivElement, PaymentContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-4\", className)} {...props} />\n )\n);\nPaymentContent.displayName = 'PaymentContent';\n\nexport interface PaymentFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentFooter = React.forwardRef<HTMLDivElement, PaymentFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"mt-6 flex flex-col gap-3\", className)} {...props} />\n )\n);\nPaymentFooter.displayName = 'PaymentFooter';\n\nexport interface PaymentButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PaymentButton = React.forwardRef<HTMLButtonElement, PaymentButtonProps>(\n ({ className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n \"inline-flex w-full items-center justify-center whitespace-nowrap rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n);\nPaymentButton.displayName = 'PaymentButton';\n","export interface Trigger {\n char: string;\n pattern?: RegExp;\n}\n\nexport interface CommandNode {\n type: 'command';\n trigger: string;\n text: string;\n}\n\nexport interface TextNode {\n type: 'text';\n text: string;\n}\n\nexport type InputNode = TextNode | CommandNode;\n\nexport interface CommandInputState {\n nodes: InputNode[];\n rawText: string;\n cursorPosition: number;\n activeTrigger: Trigger | null;\n activeCommandText: string | null;\n}\n\nexport interface CommandInputOptions {\n triggers: Trigger[];\n onCommandTriggered?: (trigger: Trigger, text: string) => void;\n onStateChange?: (state: CommandInputState) => void;\n onCommandCommit?: (trigger: Trigger, text: string) => void;\n onCommandCancel?: () => void;\n}\n\nexport class CommandInput {\n private state: CommandInputState = {\n nodes: [],\n rawText: '',\n cursorPosition: 0,\n activeTrigger: null,\n activeCommandText: null,\n };\n\n private options: CommandInputOptions;\n\n constructor(options: CommandInputOptions) {\n this.options = { ...options };\n }\n\n public handleInput(text: string, cursorPosition: number): void {\n this.state.rawText = text;\n this.state.cursorPosition = cursorPosition;\n this.parseInput();\n this.notifyStateChange();\n }\n\n public handleKeyDown(key: string, event?: Event): void {\n if (this.state.activeTrigger) {\n if (key === 'Escape') {\n if (event) event.preventDefault();\n this.state.activeTrigger = null;\n this.state.activeCommandText = null;\n if (this.options.onCommandCancel) {\n this.options.onCommandCancel();\n }\n this.notifyStateChange();\n } else if (key === 'Enter') {\n if (event) event.preventDefault();\n const trigger = this.state.activeTrigger;\n const text = this.state.activeCommandText || '';\n this.state.activeTrigger = null;\n this.state.activeCommandText = null;\n if (this.options.onCommandCommit) {\n this.options.onCommandCommit(trigger, text);\n }\n this.notifyStateChange();\n }\n }\n }\n\n public get value(): InputNode[] {\n return this.state.nodes;\n }\n\n public getState(): CommandInputState {\n return { ...this.state };\n }\n\n private parseInput() {\n const { rawText, cursorPosition } = this.state;\n\n this.state.activeTrigger = null;\n this.state.activeCommandText = null;\n\n for (let i = cursorPosition - 1; i >= 0; i--) {\n const char = rawText[i];\n const matchedTrigger = this.options.triggers.find((t) => t.char === char);\n\n if (matchedTrigger) {\n const isStartOfWord = i === 0 || /\\\\s/.test(rawText[i - 1]);\n if (isStartOfWord) {\n const commandText = rawText.slice(i + 1, cursorPosition);\n if (!/\\\\s/.test(commandText)) {\n let isValid = true;\n if (matchedTrigger.pattern) {\n isValid = matchedTrigger.pattern.test(commandText);\n }\n if (isValid) {\n this.state.activeTrigger = matchedTrigger;\n this.state.activeCommandText = commandText;\n \n if (this.options.onCommandTriggered) {\n this.options.onCommandTriggered(matchedTrigger, commandText);\n }\n }\n }\n }\n break;\n }\n \n if (/\\\\s/.test(char)) {\n break;\n }\n }\n\n const nodes: InputNode[] = [];\n if (this.options.triggers.length === 0) {\n nodes.push({ type: 'text', text: rawText });\n this.state.nodes = nodes;\n return;\n }\n\n const triggerChars = this.options.triggers.map((t) => t.char.replace(/[.*+?^\\${}()|[\\\\]\\\\\\\\]/g, '\\\\\\\\$&'));\n const patternStr = `(^|\\\\\\\\s)(${triggerChars.join('|')})([^\\\\\\\\s]*)`;\n const regex = new RegExp(patternStr, 'g');\n \n let currentIndex = 0;\n let match;\n\n while ((match = regex.exec(rawText)) !== null) {\n const precedingWhitespace = match[1];\n const triggerChar = match[2];\n const commandText = match[3];\n\n const matchStart = match.index;\n const triggerStart = matchStart + precedingWhitespace.length;\n\n const triggerConfig = this.options.triggers.find(t => t.char === triggerChar);\n let isValid = true;\n if (triggerConfig?.pattern && commandText.length > 0) {\n isValid = triggerConfig.pattern.test(commandText);\n }\n\n if (isValid) {\n if (triggerStart > currentIndex) {\n nodes.push({ type: 'text', text: rawText.slice(currentIndex, triggerStart) });\n }\n\n nodes.push({ type: 'command', trigger: triggerChar, text: commandText });\n currentIndex = regex.lastIndex;\n }\n }\n\n if (currentIndex < rawText.length) {\n nodes.push({ type: 'text', text: rawText.slice(currentIndex) });\n }\n\n this.state.nodes = nodes;\n }\n\n private notifyStateChange() {\n if (this.options.onStateChange) {\n this.options.onStateChange({ ...this.state });\n }\n }\n}","// src/command-input.tsx\nimport { useRef, useEffect, useState, forwardRef } from \"react\";\nimport { CommandInput as CommandInputCore } from \"@refraction-ui/command-input\";\nimport { cn } from \"@refraction-ui/shared\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CommandInput = forwardRef(\n ({\n value = \"\",\n onChange,\n triggers = [],\n renderPopover,\n className,\n ...props\n }, ref) => {\n const localRef = useRef(null);\n const containerRef = ref || localRef;\n const [popoverState, setPopoverState] = useState({\n isOpen: false,\n trigger: \"\",\n search: \"\",\n position: { top: 0, left: 0 }\n });\n const coreRef = useRef(null);\n useEffect(() => {\n if (containerRef.current && !coreRef.current) {\n coreRef.current = new CommandInputCore({\n triggers,\n onCommandTriggered: (trigger, search) => {\n setPopoverState({\n isOpen: true,\n trigger: trigger.char,\n search,\n position: { top: 0, left: 0 }\n });\n },\n onCommandCancel: () => {\n setPopoverState((prev) => ({ ...prev, isOpen: false }));\n },\n onStateChange: (state) => {\n onChange?.(state.rawText);\n }\n });\n }\n }, [triggers, onChange]);\n useEffect(() => {\n if (containerRef.current && containerRef.current.innerHTML !== value && coreRef.current) {\n containerRef.current.innerHTML = value;\n }\n }, [value]);\n return /* @__PURE__ */ jsxs(\"div\", { className: cn(\"relative w-full\", className), children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: containerRef,\n contentEditable: true,\n suppressContentEditableWarning: true,\n className: \"w-full min-h-[40px] p-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500\",\n onInput: (e) => {\n coreRef.current?.handleInput(e.currentTarget.textContent || \"\", 0);\n },\n onKeyDown: (e) => {\n coreRef.current?.handleKeyDown(e.key, e);\n },\n ...props\n }\n ),\n renderPopover && renderPopover({\n ...popoverState,\n close: () => setPopoverState((prev) => ({ ...prev, isOpen: false }))\n })\n ] });\n }\n);\nCommandInput.displayName = \"CommandInput\";\nexport {\n CommandInput\n};\n"]}
1
+ {"version":3,"sources":["../../react-file-tree/src/react-file-tree.tsx","../../react-icon-system/src/react-icon-system.tsx","../src/index.ts","../../theme/src/theme-machine.ts","../../theme/src/theme-script.ts","../../theme/src/dom-adapters.ts","../../react-theme/src/theme-provider.tsx","../../react-theme/src/theme-toggle.tsx","../../react-theme/src/theme-script-component.tsx","../../shared/src/aria.ts","../../shared/src/keyboard.ts","../../shared/src/state-machine.ts","../../shared/src/cn.ts","../../shared/src/cva.ts","../../react-accordion/src/accordion.tsx","../../animated-text/src/animated-text.ts","../../animated-text/src/animated-text.styles.ts","../../react-animated-text/src/animated-text.tsx","../../auth/src/auth-machine.ts","../../auth/src/rbac.ts","../../react-auth/src/auth-provider.tsx","../../react-auth/src/auth-guard.tsx","../../badge/src/badge.ts","../../badge/src/badge.styles.ts","../../react-badge/src/badge.tsx","../../bottom-nav/src/bottom-nav.ts","../../bottom-nav/src/bottom-nav.styles.ts","../../react-bottom-nav/src/bottom-nav.tsx","../../breadcrumbs/src/breadcrumbs.ts","../../breadcrumbs/src/breadcrumbs.styles.ts","../../react-breadcrumbs/src/breadcrumbs.tsx","../../button/src/button.ts","../../button/src/button.styles.ts","../../react-button/src/button.tsx","../../calendar/src/calendar.ts","../../calendar/src/calendar.styles.ts","../../react-calendar/src/calendar.tsx","../../code-editor/src/code-editor.ts","../../code-editor/src/code-editor.styles.ts","../../react-code-editor/src/CodeEditor.tsx","../../collapsible/src/collapsible.ts","../../collapsible/src/collapsible.styles.ts","../../react-collapsible/src/collapsible.tsx","../../command/src/command.ts","../../command/src/command.styles.ts","../../react-command/src/command.tsx","../../content-protection/src/content-protection.ts","../../content-protection/src/content-protection.styles.ts","../../react-content-protection/src/content-protection.tsx","../../data-table/src/data-table.ts","../../data-table/src/data-table.styles.ts","../../react-data-table/src/DataTable.tsx","../../device-frame/src/device-frame.ts","../../device-frame/src/device-frame.styles.ts","../../react-device-frame/src/device-frame.tsx","../../dialog/src/dialog.ts","../../dialog/src/dialog.styles.ts","../../react-dialog/src/dialog.tsx","../../dropdown-menu/src/dropdown-menu.ts","../../dropdown-menu/src/dropdown-menu.styles.ts","../../react-dropdown-menu/src/dropdown-menu.tsx","../../feedback-dialog/src/feedback-dialog.ts","../../feedback-dialog/src/feedback-dialog.styles.ts","../../react-feedback-dialog/src/FeedbackDialog.tsx","../../footer/src/footer.ts","../../footer/src/footer.styles.ts","../../react-footer/src/footer.tsx","../../inline-editor/src/inline-editor.ts","../../inline-editor/src/inline-editor.styles.ts","../../react-inline-editor/src/InlineEditor.tsx","../../input/src/input.ts","../../input/src/input.styles.ts","../../react-input/src/input.tsx","../../input-group/src/input-group.ts","../../input-group/src/input-group.styles.ts","../../react-input-group/src/input-group.tsx","../../install-prompt/src/install-prompt.ts","../../install-prompt/src/install-prompt.styles.ts","../../react-install-prompt/src/install-prompt.tsx","../../markdown-renderer/src/markdown-renderer.ts","../../markdown-renderer/src/markdown-renderer.styles.ts","../../react-markdown-renderer/src/MarkdownRenderer.tsx","../../mobile-nav/src/mobile-nav.ts","../../mobile-nav/src/mobile-nav.styles.ts","../../react-mobile-nav/src/mobile-nav.tsx","../../navbar/src/navbar.ts","../../navbar/src/navbar.styles.ts","../../react-navbar/src/navbar.tsx","../../popover/src/popover.ts","../../popover/src/popover.styles.ts","../../react-popover/src/popover.tsx","../../search-bar/src/search-bar.ts","../../search-bar/src/search-bar.styles.ts","../../react-search-bar/src/search-bar.tsx","../../sidebar/src/sidebar.ts","../../sidebar/src/sidebar.styles.ts","../../react-sidebar/src/sidebar.tsx","../../skeleton/src/skeleton.ts","../../skeleton/src/skeleton.styles.ts","../../react-skeleton/src/skeleton.tsx","../../tabs/src/tabs.ts","../../tabs/src/tabs.styles.ts","../../react-tabs/src/tabs.tsx","../../textarea/src/textarea.ts","../../textarea/src/textarea.styles.ts","../../react-textarea/src/textarea.tsx","../../toast/src/toast.ts","../../toast/src/toast.styles.ts","../../react-toast/src/toast.tsx","../../tooltip/src/tooltip.ts","../../tooltip/src/tooltip.styles.ts","../../react-tooltip/src/tooltip.tsx","../../video-player/src/video-player.ts","../../video-player/src/video-player.styles.ts","../../react-video-player/src/video-player.tsx","../../progress-display/src/progress-display.ts","../../progress-display/src/progress-display.styles.ts","../../react-progress-display/src/progress-display.tsx","../../slide-viewer/src/slide-viewer.ts","../../slide-viewer/src/slide-viewer.styles.ts","../../react-slide-viewer/src/SlideViewer.tsx","../../language-selector/src/language-selector.ts","../../language-selector/src/language-selector.styles.ts","../../react-language-selector/src/language-selector.tsx","../../version-selector/src/version-selector.ts","../../version-selector/src/version-selector.styles.ts","../../react-version-selector/src/version-selector.tsx","../../resizable-layout/src/resizable-layout.ts","../../resizable-layout/src/resizable-layout.styles.ts","../../react-resizable-layout/src/resizable-layout.tsx","../../app-shell/src/app-shell.ts","../../app-shell/src/page-shell.ts","../../app-shell/src/auth-shell.ts","../../react-app-shell/src/app-shell.tsx","../../react-app-shell/src/page-shell.tsx","../../react-app-shell/src/auth-shell.tsx","../../avatar/src/avatar.ts","../../avatar/src/avatar.styles.ts","../../react-avatar/src/avatar.tsx","../../avatar-group/src/avatar-group.ts","../../avatar-group/src/avatar-group.styles.ts","../../react-avatar-group/src/avatar-group.tsx","../../card/src/card.ts","../../card/src/card.styles.ts","../../react-card/src/card.tsx","../../checkbox/src/checkbox.ts","../../checkbox/src/checkbox.styles.ts","../../react-checkbox/src/checkbox.tsx","../../date-picker/src/date-picker.ts","../../date-picker/src/date-picker.styles.ts","../../react-date-picker/src/date-picker.tsx","../../emoji-picker/src/emoji-data.ts","../../emoji-picker/src/emoji-picker.ts","../../emoji-picker/src/emoji-picker.styles.ts","../../react-emoji-picker/src/emoji-picker.tsx","../../file-upload/src/file-upload.ts","../../file-upload/src/file-upload.styles.ts","../../react-file-upload/src/file-upload.tsx","../../keyboard-shortcut/src/keyboard-shortcut.ts","../../keyboard-shortcut/src/keyboard-shortcut.styles.ts","../../react-keyboard-shortcut/src/keyboard-shortcut.tsx","../../otp-input/src/otp-input.ts","../../otp-input/src/otp-input.styles.ts","../../react-otp-input/src/otp-input.tsx","../../presence-indicator/src/presence-indicator.ts","../../presence-indicator/src/presence-indicator.styles.ts","../../react-presence-indicator/src/presence-indicator.tsx","../../radio/src/radio.ts","../../radio/src/radio.styles.ts","../../react-radio/src/radio.tsx","../../reaction-bar/src/reaction-bar.ts","../../reaction-bar/src/reaction-bar.styles.ts","../../react-reaction-bar/src/reaction-bar.tsx","../../select/src/select.ts","../../select/src/select.styles.ts","../../react-select/src/select.tsx","../../status-indicator/src/status-indicator.ts","../../status-indicator/src/status-indicator.styles.ts","../../react-status-indicator/src/status-indicator.tsx","../../switch/src/switch.ts","../../switch/src/switch.styles.ts","../../react-switch/src/switch.tsx","../../thread-view/src/thread-view.ts","../../thread-view/src/thread-view.styles.ts","../../react-thread-view/src/thread-view.tsx","../../table-of-contents/src/table-of-contents.ts","../../react-table-of-contents/src/table-of-contents.tsx","../../react-carousel/src/carousel.tsx","../../react-pagination/src/pagination.tsx","../../react-callout/src/callout.tsx","../../react-steps/src/steps.tsx","../../react-skip-to-content/src/skip-to-content.tsx","../../react-code-block/src/code-block.tsx","../../link-card/src/link-card.ts","../../react-link-card/src/link-card.tsx","../../card-grid/src/card-grid.ts","../../react-card-grid/src/card-grid.tsx","../../payment/src/payment.ts","../../react-payment/src/payment.tsx"],"names":["Card","STATUS_COLORS","STATUS_LABELS","progressBarVariants","optionVariants","React","React2","React3","jsx","jsxs","React22","React4","React5","React6","React7","startOfDay","endOfDay","React8","React9","React10","React11","React12","props","React13","React14","React15","ReactDOM","React16","ReactDOM2","React17","React18","React19","React20","React21","React23","text","React24","React25","Fragment","React26","React27","createPortal","React28","React29","React30","React31","React32","React33","React34","React35","React36","React37","React38","React39","React40","DEFAULTS","React41","Sidebar","MobileNav","cn","Footer","React42","getInitials","avatarVariants","React43","React44","React45","isSameDay","startOfMonth","DAY_NAMES","React46","React47","React48","React49","React50","React51","React52","React53","React54","React55","React56","React57","React58","React59","React60","React61","React62","React63"],"mappings":"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","file":"index.cjs","sourcesContent":["import React from \"react\";\nexport const FileTree = () => { return <div></div>; };\n","import React from \"react\";\nexport const IconSystem = () => { return <div></div>; };\n","/**\n * @refraction-ui/react\n *\n * Meta package that re-exports all @refraction-ui/react-* component packages.\n * Allows consumers to install everything from a single package:\n *\n * import { Button, Dialog, ThemeProvider } from '@refraction-ui/react'\n *\n * Or install individual packages for smaller bundles:\n *\n * import { Button } from '@refraction-ui/react-button'\n */\n\n// Core / theme\nexport * from '@refraction-ui/react-theme'\n\n// Components (alphabetical)\nexport * from '@refraction-ui/react-accordion'\n// Note: react-ai and react-charts are stubs with no exports yet.\n// They are included as dependencies but skipped here until they have exports.\nexport * from '@refraction-ui/react-animated-text'\nexport * from '@refraction-ui/react-auth'\nexport * from '@refraction-ui/react-badge'\nexport * from '@refraction-ui/react-bottom-nav'\nexport * from '@refraction-ui/react-breadcrumbs'\nexport * from '@refraction-ui/react-button'\nexport * from '@refraction-ui/react-calendar'\nexport * from '@refraction-ui/react-code-editor'\nexport * from '@refraction-ui/react-collapsible'\nexport * from '@refraction-ui/react-command'\nexport * from '@refraction-ui/react-content-protection'\nexport * from '@refraction-ui/react-data-table'\nexport * from '@refraction-ui/react-device-frame'\nexport * from '@refraction-ui/react-dialog'\nexport * from '@refraction-ui/react-dropdown-menu'\nexport * from '@refraction-ui/react-feedback-dialog'\nexport * from '@refraction-ui/react-footer'\nexport * from '@refraction-ui/react-inline-editor'\nexport * from '@refraction-ui/react-input'\nexport * from '@refraction-ui/react-input-group'\nexport * from '@refraction-ui/react-install-prompt'\nexport * from '@refraction-ui/react-markdown-renderer'\nexport * from '@refraction-ui/react-mobile-nav'\nexport * from '@refraction-ui/react-navbar'\nexport * from '@refraction-ui/react-popover'\nexport * from '@refraction-ui/react-search-bar'\nexport * from '@refraction-ui/react-sidebar'\nexport * from '@refraction-ui/react-skeleton'\nexport * from '@refraction-ui/react-tabs'\nexport * from '@refraction-ui/react-textarea'\nexport * from '@refraction-ui/react-toast'\nexport * from '@refraction-ui/react-tooltip'\nexport * from '@refraction-ui/react-video-player'\n\n// --- Packages with conflicting export names ---\n// react-progress-display and react-slide-viewer both export `progressBarVariants`.\n// react-language-selector and react-version-selector both export `optionVariants`.\n// We re-export everything except the conflicts, then provide renamed aliases.\n\n// react-progress-display: has progressBarVariants (keep as-is, re-export everything)\nexport * from '@refraction-ui/react-progress-display'\n\n// react-slide-viewer: conflicts on progressBarVariants\nexport {\n SlideViewer,\n type SlideViewerProps,\n type SlideData,\n type BookmarkType,\n type SlideType,\n type SlideViewerAPI,\n type SlideViewerState,\n slideViewerVariants,\n progressBarVariants as slideViewerProgressBarVariants,\n slideTypeBadgeVariants,\n slideViewerTokens,\n} from '@refraction-ui/react-slide-viewer'\n\n// react-language-selector: has optionVariants (keep as-is, re-export everything)\nexport * from '@refraction-ui/react-language-selector'\n\n// react-version-selector: conflicts on optionVariants\nexport {\n VersionSelector,\n type VersionSelectorProps,\n versionSelectorVariants,\n optionVariants as versionSelectorOptionVariants,\n latestBadgeVariants,\n type VersionOption,\n} from '@refraction-ui/react-version-selector'\n\n// react-resizable-layout\nexport * from '@refraction-ui/react-resizable-layout'\n\n// --- Additional packages (with conflict handling) ---\n\n// react-app-shell: conflicts with react-sidebar on sidebarVariants, sidebarItemVariants\nexport {\n AppShell,\n type AppShellProps,\n } from '@refraction-ui/react-app-shell'\n\n// react-avatar: keep as-is (primary source of avatarVariants, AvatarSize)\nexport * from '@refraction-ui/react-avatar'\n\n// react-avatar-group: conflicts with react-avatar on AvatarSize, avatarVariants\n// and react-presence-indicator on PresenceStatus\nexport {\n AvatarGroup,\n type AvatarGroupProps,\n } from '@refraction-ui/react-avatar-group'\n\nexport * from '@refraction-ui/react-card'\nexport * from '@refraction-ui/react-checkbox'\n\n// react-date-picker: conflicts with react-calendar on CalendarDay\nexport {\n DatePicker,\n type DatePickerProps,\n } from '@refraction-ui/react-date-picker'\n\n\nexport * from '@refraction-ui/react-emoji-picker'\nexport * from '@refraction-ui/react-file-upload'\nexport * from '@refraction-ui/react-keyboard-shortcut'\nexport * from '@refraction-ui/react-otp-input'\n\n// react-presence-indicator: conflicts with react-status-indicator on STATUS_COLORS, STATUS_LABELS\nexport {\n PresenceIndicator,\n type PresenceIndicatorProps,\n STATUS_COLORS as PRESENCE_STATUS_COLORS,\n STATUS_LABELS as PRESENCE_STATUS_LABELS,\n} from '@refraction-ui/react-presence-indicator'\n\nexport * from '@refraction-ui/react-radio'\nexport * from '@refraction-ui/react-reaction-bar'\nexport * from '@refraction-ui/react-rich-editor'\nexport * from '@refraction-ui/react-select'\nexport * from '@refraction-ui/react-status-indicator'\nexport * from '@refraction-ui/react-switch'\nexport * from '@refraction-ui/react-thread-view'\n\nexport * from '@refraction-ui/react-table-of-contents'\nexport * from '@refraction-ui/react-carousel'\nexport * from '@refraction-ui/react-slider'\nexport * from '@refraction-ui/react-pagination'\n\nexport * from '@refraction-ui/react-callout'\nexport * from '@refraction-ui/react-steps'\nexport * from '@refraction-ui/react-file-tree'\nexport * from '@refraction-ui/react-icon-system'\nexport * from '@refraction-ui/react-skip-to-content'\nexport * from '@refraction-ui/react-code-block'\nexport * from '@refraction-ui/react-link-card'\nexport * from '@refraction-ui/react-card-grid'\n\n\nexport * from '@refraction-ui/react-payment'\n\n\n\n\n","/**\n * Headless theme state machine — pure TypeScript, zero DOM dependencies.\n * Manages light/dark/system mode with system preference tracking.\n */\n\nexport type ThemeMode = 'light' | 'dark' | 'system'\nexport type ResolvedTheme = 'light' | 'dark'\n\nexport interface ThemeState {\n /** User's chosen mode */\n mode: ThemeMode\n /** Resolved theme after system preference detection */\n resolved: ResolvedTheme\n}\n\nexport interface ThemeConfig {\n /** Initial mode. Default: 'system' */\n defaultMode?: ThemeMode\n /** localStorage key. Default: 'rfr-theme' */\n storageKey?: string\n /** HTML attribute to set. Default: 'class' */\n attribute?: 'class' | 'data-theme'\n}\n\nexport interface StorageAdapter {\n get(key: string): string | null\n set(key: string, value: string): void\n}\n\nexport interface MediaQueryAdapter {\n matches(query: string): boolean\n subscribe(query: string, callback: (matches: boolean) => void): () => void\n}\n\nexport interface ThemeAPI {\n /** Get current state */\n getState(): ThemeState\n /** Set mode (light/dark/system) */\n setMode(mode: ThemeMode): void\n /** Subscribe to state changes */\n subscribe(fn: (state: ThemeState) => void): () => void\n /** Clean up subscriptions */\n destroy(): void\n}\n\nfunction resolveTheme(mode: ThemeMode, systemPrefersDark: boolean): ResolvedTheme {\n if (mode === 'system') {\n return systemPrefersDark ? 'dark' : 'light'\n }\n return mode\n}\n\nexport function createTheme(\n config: ThemeConfig = {},\n storage?: StorageAdapter,\n mediaQuery?: MediaQueryAdapter,\n): ThemeAPI {\n const {\n defaultMode = 'system',\n storageKey = 'rfr-theme',\n } = config\n\n const listeners = new Set<(state: ThemeState) => void>()\n let cleanupMediaQuery: (() => void) | null = null\n\n // Read persisted mode or use default\n const persisted = storage?.get(storageKey) as ThemeMode | null\n let mode: ThemeMode = persisted && ['light', 'dark', 'system'].includes(persisted)\n ? persisted\n : defaultMode\n\n // Detect system preference\n let systemPrefersDark = mediaQuery?.matches('(prefers-color-scheme: dark)') ?? false\n\n let state: ThemeState = {\n mode,\n resolved: resolveTheme(mode, systemPrefersDark),\n }\n\n function notify() {\n for (const fn of listeners) {\n fn(state)\n }\n }\n\n function updateState(newMode: ThemeMode) {\n mode = newMode\n state = { mode, resolved: resolveTheme(mode, systemPrefersDark) }\n storage?.set(storageKey, mode)\n notify()\n }\n\n // Listen for system preference changes\n if (mediaQuery) {\n cleanupMediaQuery = mediaQuery.subscribe(\n '(prefers-color-scheme: dark)',\n (matches) => {\n systemPrefersDark = matches\n if (mode === 'system') {\n state = { mode, resolved: resolveTheme(mode, systemPrefersDark) }\n notify()\n }\n },\n )\n }\n\n return {\n getState() {\n return state\n },\n\n setMode(newMode: ThemeMode) {\n if (newMode !== mode) {\n updateState(newMode)\n }\n },\n\n subscribe(fn: (state: ThemeState) => void) {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n },\n\n destroy() {\n listeners.clear()\n cleanupMediaQuery?.()\n },\n }\n}\n","/**\n * Inline script for preventing theme flash on page load.\n * Inject this as a <script> tag in the <head> before any CSS.\n * Works with any framework (React, Angular, Astro, plain HTML).\n */\n\nexport function getThemeScript(\n storageKey = 'rfr-theme',\n attribute: 'class' | 'data-theme' = 'class',\n): string {\n // This string is injected as innerHTML of a <script> tag.\n // It runs before any CSS/JS loads, preventing flash of wrong theme.\n return `(function(){try{var m=localStorage.getItem('${storageKey}');var s=window.matchMedia('(prefers-color-scheme:dark)').matches;var t=m==='dark'||(m!=='light'&&s)?'dark':'light';var d=document.documentElement;${\n attribute === 'class'\n ? \"d.classList.remove('light','dark');d.classList.add(t);\"\n : `d.setAttribute('${attribute}',t);`\n }d.style.colorScheme=t;}catch(e){}})()`\n}\n","/**\n * Browser DOM adapters for the theme machine.\n * These bridge the headless core to browser APIs.\n */\n\nimport type { StorageAdapter, MediaQueryAdapter, ResolvedTheme } from './theme-machine.js'\n\n/** localStorage adapter */\nexport function createLocalStorageAdapter(): StorageAdapter {\n return {\n get(key) {\n try {\n return localStorage.getItem(key)\n } catch {\n return null\n }\n },\n set(key, value) {\n try {\n localStorage.setItem(key, value)\n } catch {\n // localStorage unavailable (SSR, incognito quota exceeded, etc.)\n }\n },\n }\n}\n\n/** matchMedia adapter */\nexport function createMediaQueryAdapter(): MediaQueryAdapter {\n return {\n matches(query) {\n if (typeof window === 'undefined') return false\n return window.matchMedia(query).matches\n },\n subscribe(query, callback) {\n if (typeof window === 'undefined') return () => {}\n const mql = window.matchMedia(query)\n const handler = (e: MediaQueryListEvent) => callback(e.matches)\n mql.addEventListener('change', handler)\n return () => mql.removeEventListener('change', handler)\n },\n }\n}\n\n/** Apply resolved theme to the document */\nexport function applyThemeToDOM(\n resolved: ResolvedTheme,\n attribute: 'class' | 'data-theme' = 'class',\n): void {\n if (typeof document === 'undefined') return\n\n const root = document.documentElement\n if (attribute === 'class') {\n root.classList.remove('light', 'dark')\n root.classList.add(resolved)\n } else {\n root.setAttribute(attribute, resolved)\n }\n root.style.colorScheme = resolved\n}\n","import * as React from 'react'\nimport {\n createTheme,\n createLocalStorageAdapter,\n createMediaQueryAdapter,\n applyThemeToDOM,\n type ThemeMode,\n type ResolvedTheme,\n type ThemeConfig,\n type ThemeAPI,\n} from '@refraction-ui/theme'\n\nexport interface ThemeContextValue {\n mode: ThemeMode\n resolved: ResolvedTheme\n setMode: (mode: ThemeMode) => void\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | null>(null)\n\nexport interface ThemeProviderProps extends ThemeConfig {\n children: React.ReactNode\n}\n\nexport function ThemeProvider({\n children,\n defaultMode = 'system',\n storageKey = 'rfr-theme',\n attribute = 'class',\n}: ThemeProviderProps) {\n const themeRef = React.useRef<ThemeAPI | null>(null)\n\n // Initialize theme machine once (client-side only for adapters)\n if (!themeRef.current) {\n const isBrowser = typeof window !== 'undefined'\n themeRef.current = createTheme(\n { defaultMode, storageKey, attribute },\n isBrowser ? createLocalStorageAdapter() : undefined,\n isBrowser ? createMediaQueryAdapter() : undefined,\n )\n }\n\n const [state, setState] = React.useState(() => themeRef.current!.getState())\n\n React.useEffect(() => {\n const theme = themeRef.current!\n // Apply initial theme to DOM\n applyThemeToDOM(theme.getState().resolved, attribute)\n\n // Subscribe to changes\n const unsub = theme.subscribe((newState) => {\n setState(newState)\n applyThemeToDOM(newState.resolved, attribute)\n })\n\n return () => {\n unsub()\n theme.destroy()\n }\n }, [attribute])\n\n const contextValue = React.useMemo<ThemeContextValue>(\n () => ({\n mode: state.mode,\n resolved: state.resolved,\n setMode: (mode: ThemeMode) => themeRef.current?.setMode(mode),\n }),\n [state.mode, state.resolved],\n )\n\n return React.createElement(ThemeContext.Provider, { value: contextValue }, children)\n}\n\nexport function useTheme(): ThemeContextValue {\n const context = React.useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a <ThemeProvider>')\n }\n return context\n}\n","import * as React from 'react'\nimport { useTheme } from './theme-provider.js'\nimport type { ThemeMode } from '@refraction-ui/theme'\n\nconst modes: { value: ThemeMode; label: string; icon: string }[] = [\n { value: 'light', label: 'Light', icon: 'sun' },\n { value: 'dark', label: 'Dark', icon: 'moon' },\n { value: 'system', label: 'System', icon: 'monitor' },\n]\n\n// Inline SVG icons — no external icon library dependency\nconst icons: Record<string, React.ReactNode> = {\n sun: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('circle', { cx: 12, cy: 12, r: 5 }),\n React.createElement('path', { d: 'M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42' }),\n ),\n moon: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('path', { d: 'M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' }),\n ),\n monitor: React.createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg', width: 16, height: 16, viewBox: '0 0 24 24',\n fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',\n },\n React.createElement('rect', { x: 2, y: 3, width: 20, height: 14, rx: 2, ry: 2 }),\n React.createElement('line', { x1: 8, y1: 21, x2: 16, y2: 21 }),\n React.createElement('line', { x1: 12, y1: 17, x2: 12, y2: 21 }),\n ),\n}\n\nexport interface ThemeToggleProps {\n className?: string\n /** 'dropdown' shows a menu, 'segmented' shows inline buttons */\n variant?: 'dropdown' | 'segmented'\n}\n\nexport function ThemeToggle({ className, variant = 'segmented' }: ThemeToggleProps) {\n const { mode, setMode } = useTheme()\n\n if (variant === 'segmented') {\n return React.createElement('div', {\n className: `inline-flex items-center gap-1 rounded-lg border p-1 ${className ?? ''}`,\n role: 'radiogroup',\n 'aria-label': 'Theme',\n },\n modes.map(({ value, label, icon }) =>\n React.createElement('button', {\n key: value,\n type: 'button',\n role: 'radio',\n 'aria-checked': mode === value,\n 'aria-label': label,\n className: `inline-flex items-center justify-center rounded-md p-1.5 text-sm transition-colors ${\n mode === value\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:bg-muted'\n }`,\n onClick: () => setMode(value),\n }, icons[icon]),\n ),\n )\n }\n\n // Dropdown variant — simplified, no external dropdown dependency\n const [open, setOpen] = React.useState(false)\n const ref = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (!open) return\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n document.addEventListener('mousedown', handler)\n return () => document.removeEventListener('mousedown', handler)\n }, [open])\n\n const currentIcon = modes.find((m) => m.value === mode)?.icon ?? 'monitor'\n\n return React.createElement('div', { ref, className: `relative ${className ?? ''}` },\n React.createElement('button', {\n type: 'button',\n 'aria-label': 'Toggle theme',\n 'aria-expanded': open,\n className: 'inline-flex items-center justify-center rounded-md p-2 text-sm transition-colors hover:bg-muted',\n onClick: () => setOpen(!open),\n }, icons[currentIcon]),\n open && React.createElement('div', {\n className: 'absolute right-0 top-full mt-1 z-50 min-w-[8rem] rounded-md border bg-popover p-1 shadow-md',\n role: 'menu',\n },\n modes.map(({ value, label, icon }) =>\n React.createElement('button', {\n key: value,\n type: 'button',\n role: 'menuitem',\n className: `flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-accent ${\n mode === value ? 'bg-accent' : ''\n }`,\n onClick: () => { setMode(value); setOpen(false) },\n }, icons[icon], label),\n ),\n ),\n )\n}\n","import * as React from 'react'\nimport { getThemeScript } from '@refraction-ui/theme'\n\nexport interface ThemeScriptProps {\n storageKey?: string\n attribute?: 'class' | 'data-theme'\n}\n\n/**\n * Renders an inline <script> that prevents theme flash on SSR pages.\n * Place this in the <head> of your document (in Next.js layout.tsx, Remix root, etc.)\n */\nexport function ThemeScript({\n storageKey = 'rfr-theme',\n attribute = 'class',\n}: ThemeScriptProps) {\n return React.createElement('script', {\n dangerouslySetInnerHTML: {\n __html: getThemeScript(storageKey, attribute),\n },\n })\n}\n","/** Merge multiple ARIA prop objects, later values override earlier ones */\nexport function mergeAriaProps(\n ...propSets: Array<Record<string, unknown>>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n for (const props of propSets) {\n for (const [key, value] of Object.entries(props)) {\n if (value !== undefined) {\n result[key] = value\n }\n }\n }\n return result\n}\n\nlet idCounter = 0\n\n/**\n * Generate a unique ID, safe for SSR (deterministic within a render pass).\n * In browsers, uses crypto.randomUUID when available.\n */\nexport function generateId(prefix = 'rfr'): string {\n idCounter++\n return `${prefix}-${idCounter}`\n}\n\n/** Reset the ID counter (useful for tests) */\nexport function resetIdCounter(): void {\n idCounter = 0\n}\n","/** Standard keyboard key constants */\nexport const Keys = {\n Enter: 'Enter',\n Space: ' ',\n Escape: 'Escape',\n Tab: 'Tab',\n ArrowUp: 'ArrowUp',\n ArrowDown: 'ArrowDown',\n ArrowLeft: 'ArrowLeft',\n ArrowRight: 'ArrowRight',\n Home: 'Home',\n End: 'End',\n PageUp: 'PageUp',\n PageDown: 'PageDown',\n Backspace: 'Backspace',\n Delete: 'Delete',\n} as const\n\nexport type KeyboardKey = (typeof Keys)[keyof typeof Keys]\n\n/** Map of key → handler function */\nexport type KeyboardHandlerMap = Partial<\n Record<string, (event: KeyboardEvent) => void>\n>\n\n/** Create a keyboard event handler from a handler map */\nexport function createKeyboardHandler(\n handlers: KeyboardHandlerMap,\n): (event: KeyboardEvent) => void {\n return (event: KeyboardEvent) => {\n const handler = handlers[event.key]\n if (handler) {\n handler(event)\n }\n }\n}\n","/**\n * Minimal state machine — zero dependencies, < 1KB.\n * Inspired by XState concepts but dramatically simpler.\n */\n\nexport interface MachineConfig<TState extends string, TEvent extends string> {\n initial: TState\n states: Record<TState, {\n on?: Partial<Record<TEvent, TState>>\n }>\n}\n\nexport interface Machine<TState extends string, TEvent extends string> {\n /** Current state */\n state: TState\n /** Send an event to transition */\n send(event: TEvent): void\n /** Subscribe to state changes. Returns unsubscribe function. */\n subscribe(fn: (state: TState) => void): () => void\n /** Check if machine is in a given state */\n matches(state: TState): boolean\n}\n\nexport function createMachine<TState extends string, TEvent extends string>(\n config: MachineConfig<TState, TEvent>,\n): Machine<TState, TEvent> {\n let current = config.initial\n const listeners = new Set<(state: TState) => void>()\n\n return {\n get state() {\n return current\n },\n\n send(event: TEvent) {\n const stateConfig = config.states[current]\n const next = stateConfig?.on?.[event]\n if (next && next !== current) {\n current = next\n for (const fn of listeners) {\n fn(current)\n }\n }\n },\n\n subscribe(fn: (state: TState) => void) {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n },\n\n matches(state: TState) {\n return current === state\n },\n }\n}\n","/**\n * Lightweight class name utility — our own implementation.\n * Handles conditional classes, arrays, and falsy values.\n * No external dependencies (no clsx, no tailwind-merge).\n *\n * For Tailwind class conflict resolution (e.g., 'p-2 p-4' → 'p-4'),\n * consumers can use @refraction-ui/tailwind-config which provides\n * a tw-merge-aware variant of this function.\n */\n\ntype ClassValue = string | number | boolean | undefined | null | ClassValue[]\ntype ClassRecord = Record<string, boolean | undefined | null>\n\nexport function cn(...inputs: Array<ClassValue | ClassRecord>): string {\n const classes: string[] = []\n\n for (const input of inputs) {\n if (!input) continue\n\n if (typeof input === 'string') {\n classes.push(input)\n } else if (typeof input === 'number') {\n classes.push(String(input))\n } else if (Array.isArray(input)) {\n const nested = cn(...input)\n if (nested) classes.push(nested)\n } else if (typeof input === 'object') {\n for (const [key, value] of Object.entries(input)) {\n if (value) classes.push(key)\n }\n }\n }\n\n return classes.join(' ')\n}\n","/**\n * Lightweight class-variance-authority alternative — zero dependencies.\n * Creates variant-driven class name functions for components.\n */\n\ninterface VariantConfig {\n [variant: string]: Record<string, string>\n}\n\ninterface CVAConfig<V extends VariantConfig> {\n base?: string\n variants?: V\n defaultVariants?: {\n [K in keyof V]?: keyof V[K]\n }\n compoundVariants?: Array<\n {\n [K in keyof V]?: keyof V[K]\n } & { class: string }\n >\n}\n\ntype VariantProps<V extends VariantConfig> = {\n [K in keyof V]?: keyof V[K]\n}\n\nexport function cva<V extends VariantConfig>(config: CVAConfig<V>) {\n return (props?: VariantProps<V> & { className?: string }): string => {\n const classes: string[] = []\n\n if (config.base) {\n classes.push(config.base)\n }\n\n if (config.variants) {\n for (const [variantKey, variantOptions] of Object.entries(config.variants)) {\n const selectedValue =\n (props as Record<string, unknown> | undefined)?.[variantKey] ??\n config.defaultVariants?.[variantKey]\n\n if (selectedValue != null) {\n const variantClass = (variantOptions as Record<string, string>)[\n selectedValue as string\n ]\n if (variantClass) {\n classes.push(variantClass)\n }\n }\n }\n }\n\n if (config.compoundVariants) {\n for (const compound of config.compoundVariants) {\n const { class: compoundClass, ...conditions } = compound\n let matches = true\n\n for (const [key, value] of Object.entries(conditions)) {\n const propValue =\n (props as Record<string, unknown>)?.[key] ??\n config.defaultVariants?.[key]\n if (propValue !== value) {\n matches = false\n break\n }\n }\n\n if (matches) {\n classes.push(compoundClass as string)\n }\n }\n }\n\n if (props?.className) {\n classes.push(props.className)\n }\n\n return classes.filter(Boolean).join(' ')\n }\n}\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nconst AccordionContext = React.createContext<{\n type: 'single' | 'multiple'\n value: string | string[]\n onValueChange: (value: string) => void\n} | null>(null)\n\nexport interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n type?: 'single' | 'multiple'\n collapsible?: boolean\n defaultValue?: string | string[]\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n}\n\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n ({ className, type = 'single', collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | string[]>(\n defaultValue ?? (type === 'multiple' ? [] : '')\n )\n\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (itemValue: string) => {\n if (type === 'single') {\n const newValue = value === itemValue && collapsible ? '' : itemValue\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n } else {\n const arrValue = Array.isArray(value) ? value : []\n const newValue = arrValue.includes(itemValue)\n ? arrValue.filter((v) => v !== itemValue)\n : [...arrValue, itemValue]\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n }\n },\n [type, collapsible, value, onValueChange]\n )\n\n return (\n <AccordionContext.Provider value={{ type, value, onValueChange: handleValueChange }}>\n <div ref={ref} className={cn(\"flex flex-col w-full\", className)} {...props} />\n </AccordionContext.Provider>\n )\n }\n)\nAccordion.displayName = 'Accordion'\n\nconst AccordionItemContext = React.createContext<{ value: string; isOpen: boolean } | null>(null)\n\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(AccordionContext)\n if (!context) throw new Error('AccordionItem must be within Accordion')\n\n const isOpen = context.type === 'single'\n ? context.value === value\n : Array.isArray(context.value) && context.value.includes(value)\n\n return (\n <AccordionItemContext.Provider value={{ value, isOpen }}>\n <div ref={ref} className={cn(\"border-b border-border\", className)} data-state={isOpen ? 'open' : 'closed'} {...props} />\n </AccordionItemContext.Provider>\n )\n }\n)\nAccordionItem.displayName = 'AccordionItem'\n\nexport interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const accordionContext = React.useContext(AccordionContext)\n const itemContext = React.useContext(AccordionItemContext)\n \n if (!accordionContext || !itemContext) throw new Error('AccordionTrigger missing context')\n\n return (\n <h3 className=\"flex m-0 p-0\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={itemContext.isOpen}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n onClick={() => accordionContext.onValueChange(itemContext.value)}\n {...props}\n >\n {children}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n </h3>\n )\n }\n)\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nexport interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n ({ className, children, ...props }, ref) => {\n const itemContext = React.useContext(AccordionItemContext)\n if (!itemContext) throw new Error('AccordionContent missing context')\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n hidden={!itemContext.isOpen}\n {...props}\n >\n <div className=\"pb-4 pt-0 text-muted-foreground leading-relaxed\">{children}</div>\n </div>\n )\n }\n)\nAccordionContent.displayName = 'AccordionContent'\n","export interface AnimatedTextProps {\n words: string[]\n interval?: number\n transitionDuration?: number\n}\n\nexport interface AnimatedTextState {\n currentIndex: number\n}\n\nexport interface AnimatedTextAPI {\n /** Get the current word */\n getCurrentWord: () => string\n /** Get the next index (wraps around) */\n getNextIndex: () => number\n /** Current state */\n state: AnimatedTextState\n}\n\nexport interface TypewriterProps {\n text: string\n speed?: number\n startDelay?: number\n}\n\nexport interface TypewriterState {\n currentIndex: number\n}\n\nexport interface TypewriterAPI {\n /** Get the currently visible portion of text */\n getVisibleText: () => string\n /** Whether the typewriter has finished */\n isComplete: () => boolean\n /** Current state */\n state: TypewriterState\n}\n\nexport function createAnimatedText(props: AnimatedTextProps): AnimatedTextAPI {\n const { words } = props\n\n const state: AnimatedTextState = {\n currentIndex: 0,\n }\n\n function getCurrentWord(): string {\n if (words.length === 0) return ''\n return words[state.currentIndex]\n }\n\n function getNextIndex(): number {\n if (words.length === 0) return 0\n return (state.currentIndex + 1) % words.length\n }\n\n return {\n getCurrentWord,\n getNextIndex,\n state,\n }\n}\n\nexport function createTypewriter(props: TypewriterProps): TypewriterAPI {\n const { text } = props\n\n const state: TypewriterState = {\n currentIndex: 0,\n }\n\n function getVisibleText(): string {\n return text.slice(0, state.currentIndex)\n }\n\n function isComplete(): boolean {\n return state.currentIndex >= text.length\n }\n\n return {\n getVisibleText,\n isComplete,\n state,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const animatedTextVariants = cva({\n base: 'inline-block transition-opacity',\n variants: {\n state: {\n entering: 'opacity-100',\n exiting: 'opacity-0',\n idle: 'opacity-100',\n },\n },\n defaultVariants: {\n state: 'idle',\n },\n})\n\nexport const typewriterVariants = cva({\n base: 'inline',\n variants: {\n cursor: {\n blinking: 'after:inline-block after:w-[2px] after:h-[1em] after:bg-current after:ml-[1px] after:animate-blink after:align-text-bottom',\n hidden: '',\n },\n },\n defaultVariants: {\n cursor: 'blinking',\n },\n})\n","import * as React from 'react'\nimport {\n createAnimatedText,\n createTypewriter,\n animatedTextVariants,\n typewriterVariants,\n type AnimatedTextProps as CoreAnimatedTextProps,\n type TypewriterProps as CoreTypewriterProps,\n} from '@refraction-ui/animated-text'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* AnimatedText — word carousel */\n/* ------------------------------------------------------------------ */\n\nexport interface AnimatedTextProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'>,\n CoreAnimatedTextProps {}\n\nexport const AnimatedText = React.forwardRef<HTMLSpanElement, AnimatedTextProps>(\n ({ words, interval = 2500, transitionDuration = 1000, className, ...props }, ref) => {\n const apiRef = React.useRef(\n createAnimatedText({ words, interval, transitionDuration }),\n )\n const api = apiRef.current\n\n const [currentIndex, setCurrentIndex] = React.useState(0)\n const [isExiting, setIsExiting] = React.useState(false)\n\n // Check for reduced motion preference\n const prefersReducedMotion =\n typeof globalThis !== 'undefined' &&\n typeof globalThis.matchMedia === 'function' &&\n globalThis.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n React.useEffect(() => {\n if (words.length <= 1) return\n\n const tick = setInterval(() => {\n if (prefersReducedMotion) {\n // Skip animation, just switch\n api.state.currentIndex = api.getNextIndex()\n setCurrentIndex(api.state.currentIndex)\n } else {\n setIsExiting(true)\n setTimeout(() => {\n api.state.currentIndex = api.getNextIndex()\n setCurrentIndex(api.state.currentIndex)\n setIsExiting(false)\n }, transitionDuration / 2)\n }\n }, interval)\n\n return () => clearInterval(tick)\n }, [words.length, interval, transitionDuration, prefersReducedMotion])\n\n // Keep api in sync\n api.state.currentIndex = currentIndex\n\n const state = isExiting ? 'exiting' : 'entering'\n\n return (\n <span\n ref={ref}\n className={cn(\n animatedTextVariants({ state: prefersReducedMotion ? 'idle' : state }),\n className,\n )}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n {...props}\n >\n {api.getCurrentWord()}\n </span>\n )\n },\n)\n\nAnimatedText.displayName = 'AnimatedText'\n\n/* ------------------------------------------------------------------ */\n/* TypewriterText — char-by-char reveal */\n/* ------------------------------------------------------------------ */\n\nexport interface TypewriterTextProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'>,\n CoreTypewriterProps {}\n\nexport const TypewriterText = React.forwardRef<HTMLSpanElement, TypewriterTextProps>(\n ({ text, speed = 50, startDelay = 0, className, ...props }, ref) => {\n const apiRef = React.useRef(createTypewriter({ text, speed, startDelay }))\n const api = apiRef.current\n\n const [currentIndex, setCurrentIndex] = React.useState(0)\n\n const prefersReducedMotion =\n typeof globalThis !== 'undefined' &&\n typeof globalThis.matchMedia === 'function' &&\n globalThis.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n React.useEffect(() => {\n if (prefersReducedMotion) {\n api.state.currentIndex = text.length\n setCurrentIndex(text.length)\n return\n }\n\n const startTimeout = setTimeout(() => {\n const tick = () => {\n if (api.state.currentIndex < text.length) {\n api.state.currentIndex += 1\n setCurrentIndex(api.state.currentIndex)\n setTimeout(tick, speed)\n }\n }\n tick()\n }, startDelay)\n\n return () => clearTimeout(startTimeout)\n }, [text, speed, startDelay, prefersReducedMotion])\n\n api.state.currentIndex = currentIndex\n\n return (\n <span\n ref={ref}\n className={cn(\n typewriterVariants({ cursor: api.isComplete() ? 'hidden' : 'blinking' }),\n className,\n )}\n aria-label={text}\n {...props}\n >\n {api.getVisibleText()}\n </span>\n )\n },\n)\n\nTypewriterText.displayName = 'TypewriterText'\n","import type { User, AuthState, AuthStatus, AuthConfig, AuthAdapter, OAuthProvider } from './types.js'\n\nexport interface AuthAPI {\n getState(): AuthState\n signIn(email: string, password: string): Promise<User>\n signInWithOAuth(provider: OAuthProvider): Promise<User>\n signUp(email: string, password: string, displayName: string): Promise<User>\n signOut(): Promise<void>\n resetPassword(email: string): Promise<void>\n getToken(): Promise<string | null>\n subscribe(fn: (state: AuthState) => void): () => void\n destroy(): void\n}\n\nexport function createAuth(\n adapter: AuthAdapter,\n config: Omit<AuthConfig, 'adapter'> = {},\n): AuthAPI {\n const listeners = new Set<(state: AuthState) => void>()\n let state: AuthState = { user: null, status: 'loading' }\n let unsubAuth: (() => void) | null = null\n let tokenRefreshTimer: ReturnType<typeof setInterval> | null = null\n\n const { tokenRefreshInterval = 50, testMode = false, testUser } = config\n\n function setState(newState: AuthState) {\n state = newState\n for (const fn of listeners) {\n fn(state)\n }\n }\n\n function setUser(user: User | null) {\n setState({\n user,\n status: user ? 'authenticated' : 'unauthenticated',\n })\n }\n\n // Start token refresh timer\n function startTokenRefresh() {\n if (tokenRefreshTimer) clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = setInterval(\n () => { adapter.getToken().catch(() => {}) },\n tokenRefreshInterval * 60 * 1000,\n )\n }\n\n // Initialize\n if (testMode && testUser) {\n setUser(testUser)\n } else {\n unsubAuth = adapter.onAuthStateChange((user) => {\n setUser(user)\n if (user) {\n startTokenRefresh()\n } else if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = null\n }\n })\n }\n\n return {\n getState() {\n return state\n },\n\n async signIn(email, password) {\n const user = await adapter.signIn(email, password)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signInWithOAuth(provider) {\n const user = await adapter.signInWithOAuth(provider)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signUp(email, password, displayName) {\n const user = await adapter.signUp(email, password, displayName)\n setUser(user)\n startTokenRefresh()\n return user\n },\n\n async signOut() {\n await adapter.signOut()\n if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n tokenRefreshTimer = null\n }\n setUser(null)\n },\n\n async resetPassword(email) {\n await adapter.resetPassword(email)\n },\n\n async getToken() {\n return adapter.getToken()\n },\n\n subscribe(fn) {\n listeners.add(fn)\n return () => { listeners.delete(fn) }\n },\n\n destroy() {\n listeners.clear()\n unsubAuth?.()\n if (tokenRefreshTimer) {\n clearInterval(tokenRefreshTimer)\n }\n },\n }\n}\n","import type { User } from './types.js'\n\n/** Check if user has a specific role */\nexport function hasRole(user: User | null, role: string): boolean {\n return user?.roles?.includes(role) ?? false\n}\n\n/** Check if user has any of the specified roles */\nexport function hasAnyRole(user: User | null, roles: string[]): boolean {\n if (!user?.roles) return false\n return roles.some((role) => user.roles.includes(role))\n}\n\n/** Check if user has all of the specified roles */\nexport function hasAllRoles(user: User | null, roles: string[]): boolean {\n if (!user?.roles) return false\n return roles.every((role) => user.roles.includes(role))\n}\n\n/** Convenience role checks */\nexport function canAccessAdmin(user: User | null): boolean {\n return hasRole(user, 'admin')\n}\n\nexport function canAccessReviewer(user: User | null): boolean {\n return hasAnyRole(user, ['admin', 'reviewer'])\n}\n\n/** Get the default portal URL based on highest-privilege role */\nexport function getDefaultPortal(roles: string[]): string {\n if (roles.includes('admin')) return '/admin'\n if (roles.includes('reviewer')) return '/reviewer'\n if (roles.includes('parent')) return '/parent'\n if (roles.includes('student')) return '/student'\n return '/'\n}\n\n/** Get roles that the given user can assign to others */\nexport function getAssignableRoles(user: User | null): string[] {\n if (!user) return []\n if (hasRole(user, 'admin')) return ['admin', 'reviewer', 'parent', 'student']\n if (hasRole(user, 'reviewer')) return ['student']\n return []\n}\n","import * as React from 'react'\nimport {\n createAuth,\n type AuthState,\n type AuthConfig,\n type AuthAPI,\n type User,\n type OAuthProvider,\n} from '@refraction-ui/auth'\n\nexport interface AuthContextValue {\n user: User | null\n isLoading: boolean\n isAuthenticated: boolean\n signIn: (email: string, password: string) => Promise<User>\n signInWithOAuth: (provider: OAuthProvider) => Promise<User>\n signUp: (email: string, password: string, displayName: string) => Promise<User>\n signOut: () => Promise<void>\n resetPassword: (email: string) => Promise<void>\n getToken: () => Promise<string | null>\n}\n\nconst AuthContext = React.createContext<AuthContextValue | null>(null)\n\nexport interface AuthProviderProps extends AuthConfig {\n children: React.ReactNode\n}\n\n/**\n * AuthProvider — wraps your app with auth context.\n * You must provide an AuthAdapter implementation.\n *\n * ```tsx\n * import { AuthProvider } from '@refraction-ui/react-auth'\n * import { myCustomAdapter } from './auth'\n * \n * <AuthProvider adapter={myCustomAdapter}>\n * <App />\n * </AuthProvider>\n * ```\n */\nexport function AuthProvider({ children, ...config }: AuthProviderProps) {\n const authRef = React.useRef<AuthAPI | null>(null)\n\n if (!authRef.current) {\n if (!config.adapter && !config.testMode) {\n throw new Error('[refraction-ui/react-auth] You must provide an `adapter` to AuthProvider.')\n }\n authRef.current = createAuth(config.adapter, config)\n }\n\n const [state, setState] = React.useState<AuthState>(() => authRef.current!.getState())\n\n React.useEffect(() => {\n const unsub = authRef.current!.subscribe(setState)\n return () => {\n unsub()\n authRef.current!.destroy()\n }\n }, [])\n\n const value = React.useMemo<AuthContextValue>(\n () => ({\n user: state.user,\n isLoading: state.status === 'loading',\n isAuthenticated: state.status === 'authenticated',\n signIn: (e, p) => authRef.current!.signIn(e, p),\n signInWithOAuth: (p) => authRef.current!.signInWithOAuth(p),\n signUp: (e, p, d) => authRef.current!.signUp(e, p, d),\n signOut: () => authRef.current!.signOut(),\n resetPassword: (e) => authRef.current!.resetPassword(e),\n getToken: () => authRef.current!.getToken(),\n }),\n [state.user, state.status],\n )\n\n return React.createElement(AuthContext.Provider, { value }, children)\n}\n\n/**\n * useAuth — access auth state and methods.\n * Must be used within <AuthProvider>.\n */\nexport function useAuth(): AuthContextValue {\n const ctx = React.useContext(AuthContext)\n if (!ctx) {\n throw new Error('useAuth must be used within an <AuthProvider>')\n }\n return ctx\n}\n","import * as React from 'react'\nimport { useAuth } from './auth-provider.js'\nimport { hasAnyRole } from '@refraction-ui/auth'\n\nexport interface AuthGuardProps {\n children: React.ReactNode\n /** Custom loading UI */\n fallback?: React.ReactNode\n /** URL to redirect to when unauthenticated (if using a router) */\n redirectTo?: string\n /** Roles required (if any) */\n roles?: string[]\n /** UI to show when user lacks required roles */\n unauthorized?: React.ReactNode\n}\n\n/**\n * AuthGuard — wraps content that requires authentication.\n * Shows loading fallback while auth state resolves.\n * Optionally restricts by role.\n */\nexport function AuthGuard({\n children,\n fallback,\n roles,\n unauthorized,\n}: AuthGuardProps) {\n const { isLoading, isAuthenticated, user } = useAuth()\n\n if (isLoading) {\n return React.createElement(React.Fragment, null, fallback ?? null)\n }\n\n if (!isAuthenticated) {\n return React.createElement(React.Fragment, null, fallback ?? null)\n }\n\n if (roles && roles.length > 0 && !hasAnyRole(user, roles)) {\n return React.createElement(React.Fragment, null, unauthorized ?? null)\n }\n\n return React.createElement(React.Fragment, null, children)\n}\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning'\nexport type BadgeSize = 'sm' | 'md'\n\nexport interface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n}\n\nexport interface BadgeAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nconst statusVariants: BadgeVariant[] = ['success', 'warning', 'destructive']\n\n/** Icon name for status badge variants — non-color indicator for colorblind safety */\nconst BADGE_ICONS: Partial<Record<BadgeVariant, string>> = {\n success: 'check',\n warning: 'alert',\n destructive: 'x',\n}\n\n/** Get the icon name for a badge variant (undefined for non-status variants) */\nexport function getBadgeIcon(variant: BadgeVariant): string | undefined {\n return BADGE_ICONS[variant]\n}\n\nexport function createBadge(props: BadgeProps = {}): BadgeAPI {\n const { variant = 'default' } = props\n\n const ariaProps: Partial<AccessibilityProps> = {}\n\n if (statusVariants.includes(variant)) {\n ariaProps.role = 'status'\n }\n\n const dataAttributes: Record<string, string> = {}\n dataAttributes['data-variant'] = variant\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const badgeVariants = cva({\n base: 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n primary: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80 font-semibold',\n outline: 'text-foreground',\n success: 'border-transparent bg-green-500 text-white shadow hover:bg-green-500/80 font-semibold',\n warning: 'border-transparent bg-yellow-500 text-white shadow hover:bg-yellow-500/80 font-semibold',\n },\n size: {\n sm: 'px-2 py-0 text-[10px]',\n md: 'px-2.5 py-0.5 text-xs',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createBadge,\n badgeVariants,\n type BadgeVariant,\n type BadgeSize,\n} from '@refraction-ui/badge'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: BadgeVariant\n size?: BadgeSize\n}\n\n/**\n * Badge component — renders a styled badge with variant and size support.\n *\n * Uses the headless @refraction-ui/badge core for state and ARIA attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ variant, size, className, children, ...props }, ref) => {\n const api = createBadge({ variant, size })\n const classes = cn(badgeVariants({ variant, size }), className)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n","export interface NavTab {\n label: string\n href: string\n icon?: string\n activeIcon?: string\n}\n\nexport interface BottomNavProps {\n tabs?: NavTab[]\n currentPath?: string\n}\n\nexport interface BottomNavAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n tabAriaProps: (href: string) => Record<string, string>\n}\n\nexport function createBottomNav(props: BottomNavProps = {}): BottomNavAPI {\n const { currentPath = '/' } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Main navigation' },\n isActive,\n tabAriaProps: (href: string): Record<string, string> =>\n isActive(href) ? { 'aria-current': 'page' } : {},\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const bottomNavVariants = cva({\n base: 'fixed bottom-0 left-0 right-0 z-40 border-t bg-background md:hidden',\n})\n\nexport const bottomNavTabVariants = cva({\n base: 'flex flex-1 flex-col items-center justify-center gap-1 py-2 text-xs transition-colors',\n variants: {\n active: {\n true: 'text-foreground',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createBottomNav,\n bottomNavVariants,\n bottomNavTabVariants,\n type NavTab,\n} from '@refraction-ui/bottom-nav'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BottomNavProps extends React.HTMLAttributes<HTMLElement> {\n /** Tab items */\n tabs?: NavTab[]\n /** Current pathname for active state */\n currentPath?: string\n}\n\n/**\n * BottomNav component — renders a fixed bottom navigation bar with tab buttons.\n *\n * Uses the headless @refraction-ui/bottom-nav core for state and ARIA attributes.\n * Visible on mobile only (md:hidden via styles).\n */\nexport const BottomNav = React.forwardRef<HTMLElement, BottomNavProps>(\n ({ tabs = [], currentPath, className, ...props }, ref) => {\n const api = createBottomNav({ tabs, currentPath })\n const classes = cn(bottomNavVariants(), className)\n\n return (\n <nav ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"flex\">\n {tabs.map((tab) => {\n const active = api.isActive(tab.href)\n return (\n <a\n key={tab.href}\n href={tab.href}\n className={bottomNavTabVariants({ active: active ? 'true' : 'false' })}\n {...api.tabAriaProps(tab.href)}\n >\n {tab.icon && <span aria-hidden=\"true\">{active && tab.activeIcon ? tab.activeIcon : tab.icon}</span>}\n <span>{tab.label}</span>\n </a>\n )\n })}\n </div>\n </nav>\n )\n },\n)\n\nBottomNav.displayName = 'BottomNav'\n","export interface BreadcrumbItem {\n label: string\n href?: string\n}\n\nexport interface BreadcrumbsProps {\n /** Current pathname to auto-generate from */\n pathname?: string\n /** Manual items (overrides pathname) */\n items?: BreadcrumbItem[]\n /** Custom label map for pathname segments */\n labels?: Record<string, string>\n /** Separator character */\n separator?: string\n /** Max items to show before truncating */\n maxItems?: number\n}\n\nexport interface BreadcrumbsAPI {\n items: BreadcrumbItem[]\n ariaProps: Record<string, string>\n separator: string\n isLast: (index: number) => boolean\n itemAriaProps: (index: number) => Record<string, string>\n}\n\nfunction kebabToTitle(segment: string): string {\n return segment\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n}\n\nfunction pathToItems(\n pathname: string,\n labels: Record<string, string> = {},\n): BreadcrumbItem[] {\n const segments = pathname.split('/').filter(Boolean)\n const items: BreadcrumbItem[] = [{ label: 'Home', href: '/' }]\n\n let currentPath = ''\n for (const segment of segments) {\n currentPath += `/${segment}`\n items.push({\n label: labels[segment] ?? labels[currentPath] ?? kebabToTitle(segment),\n href: currentPath,\n })\n }\n\n return items\n}\n\nexport function createBreadcrumbs(props: BreadcrumbsProps = {}): BreadcrumbsAPI {\n const { pathname, items: manualItems, labels = {}, separator = '/', maxItems } = props\n\n let items = manualItems ?? (pathname ? pathToItems(pathname, labels) : [])\n\n if (maxItems && items.length > maxItems) {\n const first = items[0]\n const last = items.slice(-(maxItems - 1))\n items = [first, { label: '...' }, ...last]\n }\n\n return {\n items,\n ariaProps: { 'aria-label': 'Breadcrumb' },\n separator,\n isLast: (index: number) => index === items.length - 1,\n itemAriaProps: (index: number): Record<string, string> =>\n index === items.length - 1 ? { 'aria-current': 'page' } : {},\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const breadcrumbsVariants = cva({\n base: 'flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground',\n})\n\nexport const breadcrumbItemVariants = cva({\n base: 'transition-colors',\n variants: {\n active: {\n true: 'font-medium text-foreground',\n false: 'hover:text-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n\nexport const breadcrumbSeparatorStyles = 'text-muted-foreground/50 select-none'\n","import * as React from 'react'\nimport {\n createBreadcrumbs,\n breadcrumbsVariants,\n breadcrumbItemVariants,\n breadcrumbSeparatorStyles,\n type BreadcrumbItem,\n} from '@refraction-ui/breadcrumbs'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n /** Current pathname to auto-generate breadcrumbs from */\n pathname?: string\n /** Manual breadcrumb items (overrides pathname) */\n items?: BreadcrumbItem[]\n /** Custom label map for pathname segments */\n labels?: Record<string, string>\n /** Separator character. Default: '/' */\n separator?: string\n /** Max items before truncation */\n maxItems?: number\n}\n\n/**\n * Breadcrumbs component — renders a breadcrumb navigation trail.\n *\n * Uses the headless @refraction-ui/breadcrumbs core for state and ARIA attributes.\n */\nexport const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n pathname,\n items,\n labels,\n separator,\n maxItems,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createBreadcrumbs({ pathname, items, labels, separator, maxItems })\n const classes = cn(breadcrumbsVariants(), className)\n\n return (\n <nav ref={ref} className={classes} {...api.ariaProps} {...props}>\n <ol className=\"flex items-center gap-1.5\">\n {api.items.map((item, index) => {\n const isLast = api.isLast(index)\n return (\n <li key={index} className=\"flex items-center gap-1.5\">\n {index > 0 && (\n <span className={breadcrumbSeparatorStyles} aria-hidden=\"true\">\n {api.separator}\n </span>\n )}\n {item.href && !isLast ? (\n <a\n href={item.href}\n className={breadcrumbItemVariants({ active: 'false' })}\n >\n {item.label}\n </a>\n ) : (\n <span\n className={breadcrumbItemVariants({\n active: isLast ? 'true' : 'false',\n })}\n {...api.itemAriaProps(index)}\n >\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n },\n)\n\nBreadcrumbs.displayName = 'Breadcrumbs'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\nexport type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon'\n\nexport interface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n disabled?: boolean\n loading?: boolean\n asChild?: boolean\n type?: 'button' | 'submit' | 'reset'\n}\n\nexport interface ButtonAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createButton(props: ButtonProps = {}): ButtonAPI {\n const { disabled = false, loading = false } = props\n const isInteractive = !disabled && !loading\n\n const ariaProps: Partial<AccessibilityProps> = {}\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n if (loading) {\n ariaProps['aria-disabled'] = true\n ariaProps['aria-label'] = ariaProps['aria-label'] ?? undefined\n }\n\n const dataAttributes: Record<string, string> = {}\n if (loading) {\n dataAttributes['data-loading'] = ''\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Enter] = (e) => e.preventDefault()\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n }\n}\n\nexport function getButtonType(props: ButtonProps): string {\n return props.type ?? 'button'\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const buttonTokens: TokenContract = {\n name: 'button',\n tokens: {\n bg: { variable: '--rfr-button-bg', fallback: 'hsl(var(--primary))' },\n fg: { variable: '--rfr-button-fg', fallback: 'hsl(var(--primary-foreground))' },\n border: { variable: '--rfr-button-border', fallback: 'hsl(var(--border))' },\n radius: { variable: '--rfr-button-radius', fallback: 'var(--radius)' },\n ring: { variable: '--rfr-button-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const buttonVariants = cva({\n base: 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n xs: 'h-7 rounded px-2 text-xs',\n sm: 'h-8 rounded-md px-3 text-xs',\n default: 'h-9 px-4 py-2',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createButton,\n buttonVariants,\n getButtonType,\n type ButtonVariant,\n type ButtonSize,\n} from '@refraction-ui/button'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n asChild?: boolean\n}\n\n/**\n * Button component — renders a styled button with variant and size support.\n *\n * Uses the headless @refraction-ui/button core for state, ARIA, and keyboard handling.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant, size, loading, asChild, className, disabled, children, ...props }, ref) => {\n const api = createButton({ variant, size, disabled, loading, asChild, type: props.type })\n const classes = cn(buttonVariants({ variant, size }), className)\n\n // When asChild, render the child element directly with button props merged in.\n // This allows <Button asChild><a href=\"/\">Link</a></Button>\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n ref,\n className: cn(classes, (children.props as Record<string, unknown>).className as string),\n type: getButtonType({ type: props.type }),\n ...api.ariaProps,\n ...api.dataAttributes,\n ...props,\n })\n }\n\n return (\n <button\n ref={ref}\n type={getButtonType({ type: props.type }) as 'button' | 'submit' | 'reset'}\n className={classes}\n disabled={disabled || loading}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )}\n {children}\n </button>\n )\n },\n)\n\nButton.displayName = 'Button'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface CalendarProps {\n /** Selected date (controlled) */\n value?: Date\n /** Default selected date (uncontrolled) */\n defaultValue?: Date\n /** Callback when a date is selected */\n onSelect?: (date: Date) => void\n /** Displayed month (controlled) */\n month?: Date\n /** Callback when the displayed month changes */\n onMonthChange?: (month: Date) => void\n /** Minimum selectable date */\n minDate?: Date\n /** Maximum selectable date */\n maxDate?: Date\n /** Specific dates to disable */\n disabledDates?: Date[]\n}\n\nexport interface CalendarDay {\n /** The date this cell represents */\n date: Date\n /** Whether the date is today */\n isToday: boolean\n /** Whether the date is currently selected */\n isSelected: boolean\n /** Whether the date belongs to the currently displayed month */\n isCurrentMonth: boolean\n /** Whether the date is disabled */\n isDisabled: boolean\n}\n\nexport interface CalendarState {\n /** The currently displayed month */\n currentMonth: Date\n /** The currently selected date, if any */\n selectedDate: Date | undefined\n}\n\nexport interface CalendarAPI {\n /** Current calendar state */\n state: CalendarState\n /** Array of day objects for the current month grid (always 42: 6 weeks x 7 days) */\n days: CalendarDay[]\n /** Navigate to the previous month */\n prevMonth(): void\n /** Navigate to the next month */\n nextMonth(): void\n /** Select a date */\n select(date: Date): void\n /** ARIA attributes for the calendar grid */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA attributes for a specific day cell */\n getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown>\n /** Generated IDs */\n ids: {\n grid: string\n label: string\n }\n}\n\n/** Check if two dates represent the same calendar day */\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\n/** Get the first day of a month */\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/** Get day names */\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nexport function createCalendar(props: CalendarProps = {}): CalendarAPI {\n const {\n value: controlledValue,\n defaultValue,\n onSelect,\n month: controlledMonth,\n onMonthChange,\n minDate,\n maxDate,\n disabledDates = [],\n } = props\n\n const today = new Date()\n\n // Determine selected date\n const selectedDate = controlledValue ?? defaultValue\n\n // Determine current displayed month\n const currentMonth = controlledMonth\n ? startOfMonth(controlledMonth)\n : selectedDate\n ? startOfMonth(selectedDate)\n : startOfMonth(today)\n\n const gridId = generateId('rfr-calendar')\n const labelId = generateId('rfr-calendar-label')\n\n function isDateDisabled(date: Date): boolean {\n if (minDate && date < startOfDay(minDate)) return true\n if (maxDate && date > endOfDay(maxDate)) return true\n return disabledDates.some((d) => isSameDay(d, date))\n }\n\n function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n }\n\n function endOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n }\n\n /** Build the 42-cell grid for the current month view */\n function buildDays(): CalendarDay[] {\n const year = currentMonth.getFullYear()\n const month = currentMonth.getMonth()\n\n // First day of the month\n const first = new Date(year, month, 1)\n // Day of week the month starts on (0 = Sunday)\n const startDow = first.getDay()\n\n // Start from the Sunday before (or on) the first\n const gridStart = new Date(year, month, 1 - startDow)\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + i,\n )\n days.push({\n date,\n isToday: isSameDay(date, today),\n isSelected: selectedDate ? isSameDay(date, selectedDate) : false,\n isCurrentMonth: date.getMonth() === month,\n isDisabled: isDateDisabled(date),\n })\n }\n return days\n }\n\n function prevMonth(): void {\n const prev = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)\n onMonthChange?.(prev)\n }\n\n function nextMonth(): void {\n const next = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)\n onMonthChange?.(next)\n }\n\n function select(date: Date): void {\n if (!isDateDisabled(date)) {\n onSelect?.(date)\n }\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'grid',\n 'aria-labelledby': labelId,\n id: gridId,\n }\n\n function getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'gridcell',\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n 'aria-current': day.isToday ? ('date' as const) : undefined,\n 'aria-label': `${DAY_NAMES[day.date.getDay()]}, ${day.date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}`,\n }\n }\n\n return {\n state: {\n currentMonth,\n selectedDate,\n },\n days: buildDays(),\n prevMonth,\n nextMonth,\n select,\n ariaProps,\n getDayAriaProps,\n ids: {\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const calendarVariants = cva({\n base: 'p-3 rounded-md border bg-background',\n})\n\nexport const dayVariants = cva({\n base: 'inline-flex items-center justify-center rounded-md text-sm h-9 w-9',\n variants: {\n state: {\n default: 'hover:bg-accent hover:text-accent-foreground',\n selected: 'bg-primary text-primary-foreground hover:bg-primary/90',\n today: 'bg-accent text-accent-foreground',\n disabled: 'text-muted-foreground opacity-50 cursor-not-allowed',\n outside: 'text-muted-foreground opacity-50',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCalendar,\n calendarVariants,\n dayVariants,\n type CalendarProps as CoreCalendarProps,\n type CalendarDay,\n} from '@refraction-ui/calendar'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Calendar\n// ---------------------------------------------------------------------------\n\nexport interface CalendarProps extends CoreCalendarProps {\n className?: string\n children?: React.ReactNode\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n]\n\nconst DAY_HEADERS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n\nexport function Calendar({\n className,\n value,\n defaultValue,\n onSelect,\n month,\n onMonthChange,\n minDate,\n maxDate,\n disabledDates,\n}: CalendarProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<Date | undefined>(defaultValue)\n const [uncontrolledMonth, setUncontrolledMonth] = React.useState<Date>(\n () => month ?? value ?? defaultValue ?? new Date(),\n )\n\n const isValueControlled = value !== undefined\n const isMonthControlled = month !== undefined\n\n const selectedValue = isValueControlled ? value : uncontrolledValue\n const displayMonth = isMonthControlled ? month : uncontrolledMonth\n\n const handleSelect = React.useCallback(\n (date: Date) => {\n if (!isValueControlled) {\n setUncontrolledValue(date)\n }\n onSelect?.(date)\n },\n [isValueControlled, onSelect],\n )\n\n const handleMonthChange = React.useCallback(\n (m: Date) => {\n if (!isMonthControlled) {\n setUncontrolledMonth(m)\n }\n onMonthChange?.(m)\n },\n [isMonthControlled, onMonthChange],\n )\n\n const api = createCalendar({\n value: selectedValue,\n month: displayMonth,\n onSelect: handleSelect,\n onMonthChange: handleMonthChange,\n minDate,\n maxDate,\n disabledDates,\n })\n\n function getDayState(day: CalendarDay): 'selected' | 'today' | 'disabled' | 'outside' | 'default' {\n if (day.isDisabled) return 'disabled'\n if (day.isSelected) return 'selected'\n if (!day.isCurrentMonth) return 'outside'\n if (day.isToday) return 'today'\n return 'default'\n }\n\n const monthLabel = `${MONTH_NAMES[api.state.currentMonth.getMonth()]} ${api.state.currentMonth.getFullYear()}`\n\n return React.createElement(\n 'div',\n {\n className: cn(calendarVariants(), className),\n ...api.ariaProps,\n },\n // Header row: prev, month label, next\n React.createElement(CalendarHeader, {\n label: monthLabel,\n labelId: api.ids.label,\n onPrevMonth: api.prevMonth,\n onNextMonth: api.nextMonth,\n }),\n // Day-of-week headers\n React.createElement(\n 'div',\n {\n className: 'grid grid-cols-7 gap-1 mb-1',\n role: 'row',\n },\n DAY_HEADERS.map((d) =>\n React.createElement(\n 'div',\n {\n key: d,\n className: 'text-center text-xs font-medium text-muted-foreground h-9 flex items-center justify-center',\n role: 'columnheader',\n 'aria-label': d,\n },\n d,\n ),\n ),\n ),\n // Day grid\n React.createElement(\n 'div',\n {\n className: 'grid grid-cols-7 gap-1',\n role: 'rowgroup',\n },\n api.days.map((day, i) => {\n const dayAriaProps = api.getDayAriaProps(day)\n const state = getDayState(day)\n return React.createElement(\n 'button',\n {\n key: i,\n type: 'button',\n className: dayVariants({ state }),\n disabled: day.isDisabled,\n onClick: () => api.select(day.date),\n ...dayAriaProps,\n },\n day.date.getDate(),\n )\n }),\n ),\n )\n}\n\nCalendar.displayName = 'Calendar'\n\n// ---------------------------------------------------------------------------\n// CalendarHeader\n// ---------------------------------------------------------------------------\n\nexport interface CalendarHeaderProps {\n label: string\n labelId: string\n onPrevMonth: () => void\n onNextMonth: () => void\n className?: string\n}\n\nexport function CalendarHeader({\n label,\n labelId,\n onPrevMonth,\n onNextMonth,\n className,\n}: CalendarHeaderProps) {\n return React.createElement(\n 'div',\n {\n className: cn('flex items-center justify-between mb-2', className),\n },\n React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Previous month',\n onClick: onPrevMonth,\n className: 'inline-flex items-center justify-center h-7 w-7 rounded-md hover:bg-accent',\n },\n '\\u2039',\n ),\n React.createElement(\n 'div',\n {\n id: labelId,\n className: 'text-sm font-medium',\n 'aria-live': 'polite',\n },\n label,\n ),\n React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Next month',\n onClick: onNextMonth,\n className: 'inline-flex items-center justify-center h-7 w-7 rounded-md hover:bg-accent',\n },\n '\\u203A',\n ),\n )\n}\n\nCalendarHeader.displayName = 'CalendarHeader'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type CodeEditorTheme = 'light' | 'dark'\n\nexport interface CodeEditorProps {\n value?: string\n onChange?: (value: string) => void\n language?: string\n readOnly?: boolean\n theme?: CodeEditorTheme\n}\n\nexport interface CodeEditorState {\n value: string\n language: string\n theme: CodeEditorTheme\n}\n\nexport interface CodeEditorAPI {\n /** Current editor state */\n state: CodeEditorState\n /** ARIA attributes for the editor element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-multiline'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Update the editor value */\n setValue: (value: string) => void\n /** Get a human-readable label for the current language */\n getLanguageLabel: () => string\n}\n\n/** Map of language identifiers to human-readable labels */\nconst languageLabels: Record<string, string> = {\n js: 'JavaScript',\n javascript: 'JavaScript',\n ts: 'TypeScript',\n typescript: 'TypeScript',\n jsx: 'JSX',\n tsx: 'TSX',\n py: 'Python',\n python: 'Python',\n rb: 'Ruby',\n ruby: 'Ruby',\n go: 'Go',\n rust: 'Rust',\n rs: 'Rust',\n java: 'Java',\n cpp: 'C++',\n c: 'C',\n cs: 'C#',\n csharp: 'C#',\n html: 'HTML',\n css: 'CSS',\n json: 'JSON',\n yaml: 'YAML',\n yml: 'YAML',\n md: 'Markdown',\n markdown: 'Markdown',\n sql: 'SQL',\n sh: 'Shell',\n bash: 'Bash',\n zsh: 'Zsh',\n xml: 'XML',\n toml: 'TOML',\n swift: 'Swift',\n kotlin: 'Kotlin',\n dart: 'Dart',\n php: 'PHP',\n lua: 'Lua',\n r: 'R',\n scala: 'Scala',\n}\n\n/**\n * Create a headless code editor API.\n *\n * This provides the headless interface for a code editor — state management,\n * ARIA props, and data attributes. Actual rendering (Monaco, CodeMirror, or\n * a simple textarea) is handled by framework-specific wrappers.\n */\nexport function createCodeEditor(props: CodeEditorProps = {}): CodeEditorAPI {\n const {\n value = '',\n onChange,\n language = 'plaintext',\n readOnly = false,\n theme = 'light',\n } = props\n\n let currentValue = value\n\n const state: CodeEditorState = {\n value: currentValue,\n language,\n theme,\n }\n\n const ariaProps: Partial<AccessibilityProps> & { 'aria-multiline'?: boolean; 'aria-readonly'?: boolean } = {\n role: 'textbox',\n 'aria-multiline': true,\n 'aria-label': `Code editor - ${getLabel(language)}`,\n }\n\n if (readOnly) {\n ariaProps['aria-readonly'] = true\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-language': language,\n 'data-theme': theme,\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n function setValue(newValue: string) {\n currentValue = newValue\n state.value = newValue\n if (onChange) {\n onChange(newValue)\n }\n }\n\n function getLabel(lang: string): string {\n return languageLabels[lang.toLowerCase()] ?? lang.charAt(0).toUpperCase() + lang.slice(1)\n }\n\n function getLanguageLabel(): string {\n return getLabel(language)\n }\n\n return {\n state,\n ariaProps,\n dataAttributes,\n setValue,\n getLanguageLabel,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const codeEditorTokens: TokenContract = {\n name: 'code-editor',\n tokens: {\n bg: { variable: '--rfr-code-editor-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-code-editor-fg', fallback: 'hsl(var(--foreground))' },\n headerBg: { variable: '--rfr-code-editor-header-bg', fallback: 'hsl(var(--muted))' },\n border: { variable: '--rfr-code-editor-border', fallback: 'hsl(var(--border))' },\n lineNumberFg: { variable: '--rfr-code-editor-line-number', fallback: 'hsl(var(--muted-foreground))' },\n },\n}\n\nexport const codeEditorVariants = cva({\n base: 'flex flex-col rounded-lg border overflow-hidden font-mono text-sm',\n variants: {\n theme: {\n light: 'bg-white text-gray-900 border-gray-200',\n dark: 'bg-gray-900 text-gray-100 border-gray-700',\n },\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n theme: 'light',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCodeEditor,\n codeEditorVariants,\n type CodeEditorTheme,\n} from '@refraction-ui/code-editor'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface CodeEditorProps {\n value?: string\n onChange?: (value: string) => void\n language?: string\n readOnly?: boolean\n theme?: CodeEditorTheme\n className?: string\n placeholder?: string\n /** Optional action buttons rendered in the header bar */\n actions?: Array<{ label: string; onClick: () => void }>\n}\n\n/**\n * CodeEditor component — a styled textarea-based code editor.\n *\n * Uses the headless @refraction-ui/code-editor core for state and ARIA.\n * Renders a simple monospace textarea with a header bar showing the language\n * label and optional action buttons. Syntax highlighting is a future enhancement.\n */\nexport const CodeEditor = React.forwardRef<HTMLDivElement, CodeEditorProps>(\n (\n {\n value = '',\n onChange,\n language = 'plaintext',\n readOnly = false,\n theme = 'light',\n className,\n placeholder,\n actions,\n },\n ref,\n ) => {\n const api = createCodeEditor({ value, onChange, language, readOnly, theme })\n const containerClasses = cn(codeEditorVariants({ theme }), className)\n\n function handleChange(e: React.ChangeEvent<HTMLTextAreaElement>) {\n api.setValue(e.target.value)\n }\n\n return (\n <div ref={ref} className={containerClasses} {...api.dataAttributes}>\n <div className=\"flex items-center justify-between px-3 py-2 border-b bg-muted/50 text-xs text-muted-foreground\">\n <span>{api.getLanguageLabel()}</span>\n {actions && actions.length > 0 && (\n <div className=\"flex gap-1\">\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n onClick={action.onClick}\n className=\"px-2 py-1 rounded text-xs hover:bg-muted transition-colors\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n <textarea\n value={value}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n className=\"flex-1 w-full p-4 bg-transparent resize-none outline-none font-mono min-h-[200px]\"\n spellCheck={false}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n {...api.ariaProps}\n />\n </div>\n )\n },\n)\n\nCodeEditor.displayName = 'CodeEditor'\n","import { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface CollapsibleProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n}\n\nexport interface CollapsibleAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'data-state': 'open' | 'closed'\n 'data-disabled': string | undefined\n }\n /** Props to spread on the content element */\n contentProps: {\n id: string\n role: 'region'\n 'data-state': 'open' | 'closed'\n hidden: boolean\n }\n /** Toggle the open state */\n toggle: () => void\n /** Open the collapsible */\n open: () => void\n /** Close the collapsible */\n close: () => void\n /** Keyboard event handler for Enter/Space toggle */\n keyboardHandler: (event: KeyboardEvent) => void\n}\n\nexport function createCollapsible(props: CollapsibleProps = {}): CollapsibleAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n } = props\n\n const isControlled = controlledOpen !== undefined\n let internalOpen = isControlled ? controlledOpen : defaultOpen\n const contentId = generateId('rfr-collapsible')\n\n const setOpen = (next: boolean) => {\n if (disabled) return\n if (!isControlled) {\n internalOpen = next\n }\n onOpenChange?.(next)\n }\n\n const toggle = () => setOpen(!internalOpen)\n const openFn = () => setOpen(true)\n const closeFn = () => setOpen(false)\n\n const keyboardHandler = createKeyboardHandler({\n [Keys.Enter]: (event: KeyboardEvent) => {\n event.preventDefault()\n toggle()\n },\n [Keys.Space]: (event: KeyboardEvent) => {\n event.preventDefault()\n toggle()\n },\n })\n\n const dataState = internalOpen ? 'open' : 'closed'\n\n return {\n state: { open: internalOpen },\n triggerProps: {\n 'aria-expanded': internalOpen,\n 'aria-controls': contentId,\n 'data-state': dataState,\n 'data-disabled': disabled ? '' : undefined,\n },\n contentProps: {\n id: contentId,\n role: 'region',\n 'data-state': dataState,\n hidden: !internalOpen,\n },\n toggle,\n open: openFn,\n close: closeFn,\n keyboardHandler,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const collapsibleContentVariants = cva({\n base: 'overflow-hidden transition-all',\n variants: {\n state: {\n open: 'animate-accordion-down',\n closed: 'animate-accordion-up',\n },\n },\n defaultVariants: {\n state: 'closed',\n },\n})\n","import * as React from 'react'\nimport {\n createCollapsible,\n collapsibleContentVariants,\n type CollapsibleProps as CoreCollapsibleProps,\n} from '@refraction-ui/collapsible'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface CollapsibleContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n disabled: boolean\n contentId: string\n}\n\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(null)\n\nfunction useCollapsibleContext(): CollapsibleContextValue {\n const ctx = React.useContext(CollapsibleContext)\n if (!ctx) {\n throw new Error(\n 'Collapsible compound components must be used within <Collapsible>',\n )\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n children?: React.ReactNode\n className?: string\n}\n\nexport function Collapsible({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n children,\n className,\n}: CollapsibleProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get a stable content ID\n const apiRef = React.useRef<ReturnType<typeof createCollapsible> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createCollapsible({ open, defaultOpen, disabled })\n }\n const contentId = apiRef.current.contentProps.id\n\n const ctx = React.useMemo<CollapsibleContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n disabled,\n contentId,\n }),\n [open, handleOpenChange, disabled, contentId],\n )\n\n return React.createElement(\n CollapsibleContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n {\n 'data-state': open ? 'open' : 'closed',\n 'data-disabled': disabled ? '' : undefined,\n className,\n },\n children,\n ),\n )\n}\n\nCollapsible.displayName = 'Collapsible'\n\n// ---------------------------------------------------------------------------\n// CollapsibleTrigger\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const CollapsibleTrigger = React.forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(({ onClick, disabled: disabledProp, children, ...props }, ref) => {\n const { open, onOpenChange, disabled: ctxDisabled, contentId } =\n useCollapsibleContext()\n const disabled = disabledProp ?? ctxDisabled\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onOpenChange(!open)\n }\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'data-state': open ? 'open' : 'closed',\n 'data-disabled': disabled ? '' : undefined,\n disabled: disabled || undefined,\n onClick: handleClick,\n ...props,\n },\n children,\n )\n})\n\nCollapsibleTrigger.displayName = 'CollapsibleTrigger'\n\n// ---------------------------------------------------------------------------\n// CollapsibleContent\n// ---------------------------------------------------------------------------\n\nexport interface CollapsibleContentProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CollapsibleContent = React.forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(({ className, children, ...props }, ref) => {\n const { open, contentId } = useCollapsibleContext()\n const dataState = open ? 'open' : 'closed'\n\n if (!open) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n id: contentId,\n role: 'region',\n 'data-state': dataState,\n className: cn(\n collapsibleContentVariants({ state: open ? 'open' : 'closed' }),\n className,\n ),\n ...props,\n },\n children,\n )\n})\n\nCollapsibleContent.displayName = 'CollapsibleContent'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface CommandProps {\n /** Whether the command palette is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Custom filter function — receives item value and search query, returns true to include */\n filter?: (value: string, search: string) => boolean\n}\n\nexport interface CommandItemData {\n /** Unique identifier for the item */\n id: string\n /** Display label */\n label: string\n /** Searchable value */\n value: string\n /** Whether the item is disabled */\n disabled?: boolean\n /** Optional group the item belongs to */\n group?: string\n}\n\nexport interface CommandState {\n /** Current search query */\n search: string\n /** Items after filtering */\n filteredItems: CommandItemData[]\n /** Index of the currently highlighted item in filteredItems */\n selectedIndex: number\n /** Whether the palette is open */\n open: boolean\n}\n\nexport interface CommandAPI {\n /** Current command state */\n state: CommandState\n /** Update the search query and re-filter items */\n search(query: string): void\n /** Select the item at the given index (or the currently highlighted item) */\n select(index?: number): CommandItemData | undefined\n /** Keyboard handlers for the command palette */\n keyboardHandlers: KeyboardHandlerMap\n /** ARIA attributes for the command root */\n ariaProps: Record<string, unknown>\n /** ARIA attributes for the input */\n inputAriaProps: Record<string, unknown>\n /** ARIA attributes for the list */\n listAriaProps: Record<string, unknown>\n /** Get ARIA attributes for a specific item */\n getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown>\n /** Generated IDs */\n ids: {\n root: string\n input: string\n list: string\n }\n}\n\n/** Default filter: case-insensitive includes */\nfunction defaultFilter(value: string, search: string): boolean {\n return value.toLowerCase().includes(search.toLowerCase())\n}\n\nexport function createCommand(\n props: CommandProps = {},\n items: CommandItemData[] = [],\n): CommandAPI {\n const {\n open: controlledOpen,\n onOpenChange,\n filter = defaultFilter,\n } = props\n\n const rootId = generateId('rfr-cmd')\n const inputId = generateId('rfr-cmd-input')\n const listId = generateId('rfr-cmd-list')\n\n let searchQuery = ''\n let selectedIndex = 0\n let filteredItems = [...items]\n const isOpen = controlledOpen ?? true\n\n function applyFilter(query: string): CommandItemData[] {\n if (!query) return [...items]\n return items.filter((item) => filter(item.value, query))\n }\n\n function doSearch(query: string): void {\n searchQuery = query\n filteredItems = applyFilter(query)\n selectedIndex = 0\n }\n\n function doSelect(index?: number): CommandItemData | undefined {\n const idx = index ?? selectedIndex\n const item = filteredItems[idx]\n if (!item || item.disabled) return undefined\n return item\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n if (filteredItems.length > 0) {\n selectedIndex = (selectedIndex + 1) % filteredItems.length\n }\n },\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n if (filteredItems.length > 0) {\n selectedIndex = (selectedIndex - 1 + filteredItems.length) % filteredItems.length\n }\n },\n [Keys.Enter]: (e) => {\n e.preventDefault()\n doSelect()\n },\n [Keys.Escape]: (e) => {\n e.preventDefault()\n onOpenChange?.(false)\n },\n }\n\n const ariaProps: Record<string, unknown> = {\n role: 'combobox',\n 'aria-expanded': isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': listId,\n id: rootId,\n }\n\n const inputAriaProps: Record<string, unknown> = {\n role: 'searchbox',\n 'aria-autocomplete': 'list',\n 'aria-controls': listId,\n id: inputId,\n }\n\n const listAriaProps: Record<string, unknown> = {\n role: 'listbox',\n id: listId,\n 'aria-label': 'Command suggestions',\n }\n\n function getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown> {\n return {\n role: 'option',\n 'aria-selected': index === selectedIndex,\n 'aria-disabled': item.disabled ?? false,\n id: `${listId}-item-${item.id}`,\n }\n }\n\n return {\n get state(): CommandState {\n return {\n search: searchQuery,\n filteredItems,\n selectedIndex,\n open: isOpen,\n }\n },\n search: doSearch,\n select: doSelect,\n keyboardHandlers,\n ariaProps,\n inputAriaProps,\n listAriaProps,\n getItemAriaProps,\n ids: {\n root: rootId,\n input: inputId,\n list: listId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const commandVariants = cva({\n base: 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n})\n\nexport const commandInputVariants = cva({\n base: 'flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n})\n\nexport const commandItemVariants = cva({\n base: 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n variants: {\n state: {\n default: '',\n selected: 'bg-accent text-accent-foreground',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n\nexport const commandGroupVariants = cva({\n base: 'overflow-hidden p-1 text-foreground',\n})\n","import * as React from 'react'\nimport {\n createCommand,\n commandVariants,\n commandInputVariants,\n commandItemVariants,\n commandGroupVariants,\n type CommandProps as CoreCommandProps,\n type CommandItemData,\n} from '@refraction-ui/command'\nimport { cn, createKeyboardHandler, Keys } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface CommandContextValue {\n search: string\n onSearch: (query: string) => void\n selectedIndex: number\n onSelect: (index: number) => void\n items: CommandItemData[]\n filteredItems: CommandItemData[]\n registerItem: (item: CommandItemData) => void\n unregisterItem: (id: string) => void\n listId: string\n inputId: string\n}\n\nconst CommandContext = React.createContext<CommandContextValue | null>(null)\n\nfunction useCommandContext(): CommandContextValue {\n const ctx = React.useContext(CommandContext)\n if (!ctx) {\n throw new Error('Command compound components must be used within <Command>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Command (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface CommandProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n filter?: (value: string, search: string) => boolean\n className?: string\n children?: React.ReactNode\n}\n\nexport function Command({\n open,\n onOpenChange,\n filter,\n className,\n children,\n}: CommandProps) {\n const [items, setItems] = React.useState<CommandItemData[]>([])\n const [search, setSearch] = React.useState('')\n const [selectedIndex, setSelectedIndex] = React.useState(0)\n\n const apiRef = React.useRef<ReturnType<typeof createCommand> | null>(null)\n\n // Recompute the API when items or search change\n const api = React.useMemo(() => {\n const instance = createCommand({ open, onOpenChange, filter }, items)\n if (search) {\n instance.search(search)\n }\n apiRef.current = instance\n return instance\n }, [open, onOpenChange, filter, items, search])\n\n const filteredItems = api.state.filteredItems\n\n const handleSearch = React.useCallback((query: string) => {\n setSearch(query)\n setSelectedIndex(0)\n }, [])\n\n const handleSelect = React.useCallback((index: number) => {\n setSelectedIndex(index)\n }, [])\n\n const registerItem = React.useCallback((item: CommandItemData) => {\n setItems((prev) => {\n if (prev.some((i) => i.id === item.id)) return prev\n return [...prev, item]\n })\n }, [])\n\n const unregisterItem = React.useCallback((id: string) => {\n setItems((prev) => prev.filter((i) => i.id !== id))\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n const handler = createKeyboardHandler({\n [Keys.ArrowDown]: (ev) => {\n ev.preventDefault()\n if (filteredItems.length > 0) {\n setSelectedIndex((prev) => (prev + 1) % filteredItems.length)\n }\n },\n [Keys.ArrowUp]: (ev) => {\n ev.preventDefault()\n if (filteredItems.length > 0) {\n setSelectedIndex((prev) => (prev - 1 + filteredItems.length) % filteredItems.length)\n }\n },\n [Keys.Enter]: (ev) => {\n ev.preventDefault()\n },\n [Keys.Escape]: (ev) => {\n ev.preventDefault()\n onOpenChange?.(false)\n },\n })\n handler(e.nativeEvent)\n },\n [filteredItems.length, onOpenChange],\n )\n\n const ctx = React.useMemo<CommandContextValue>(\n () => ({\n search,\n onSearch: handleSearch,\n selectedIndex,\n onSelect: handleSelect,\n items,\n filteredItems,\n registerItem,\n unregisterItem,\n listId: api.ids.list,\n inputId: api.ids.input,\n }),\n [search, handleSearch, selectedIndex, handleSelect, items, filteredItems, registerItem, unregisterItem, api.ids.list, api.ids.input],\n )\n\n return React.createElement(\n CommandContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n {\n className: cn(commandVariants(), className),\n ...api.ariaProps,\n onKeyDown: handleKeyDown,\n },\n children,\n ),\n )\n}\n\nCommand.displayName = 'Command'\n\n// ---------------------------------------------------------------------------\n// CommandInput\n// ---------------------------------------------------------------------------\n\nexport interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const CommandInput = React.forwardRef<HTMLInputElement, CommandInputProps>(\n ({ className, onChange, ...props }, ref) => {\n const { search, onSearch, inputId, listId } = useCommandContext()\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onSearch(e.target.value)\n onChange?.(e)\n }\n\n return React.createElement('input', {\n ref,\n id: inputId,\n type: 'text',\n role: 'searchbox',\n 'aria-autocomplete': 'list',\n 'aria-controls': listId,\n value: search,\n onChange: handleChange,\n className: cn(commandInputVariants(), className),\n ...props,\n })\n },\n)\n\nCommandInput.displayName = 'CommandInput'\n\n// ---------------------------------------------------------------------------\n// CommandList\n// ---------------------------------------------------------------------------\n\nexport interface CommandListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandList = React.forwardRef<HTMLDivElement, CommandListProps>(\n ({ className, children, ...props }, ref) => {\n const { listId } = useCommandContext()\n\n return React.createElement(\n 'div',\n {\n ref,\n id: listId,\n role: 'listbox',\n 'aria-label': 'Command suggestions',\n className: cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className),\n ...props,\n },\n children,\n )\n },\n)\n\nCommandList.displayName = 'CommandList'\n\n// ---------------------------------------------------------------------------\n// CommandEmpty\n// ---------------------------------------------------------------------------\n\nexport interface CommandEmptyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandEmpty = React.forwardRef<HTMLDivElement, CommandEmptyProps>(\n ({ className, children, ...props }, ref) => {\n const { filteredItems } = useCommandContext()\n\n if (filteredItems.length > 0) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn('py-6 text-center text-sm', className),\n role: 'presentation',\n ...props,\n },\n children,\n )\n },\n)\n\nCommandEmpty.displayName = 'CommandEmpty'\n\n// ---------------------------------------------------------------------------\n// CommandGroup\n// ---------------------------------------------------------------------------\n\nexport interface CommandGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n heading?: string\n}\n\nexport const CommandGroup = React.forwardRef<HTMLDivElement, CommandGroupProps>(\n ({ className, heading, children, ...props }, ref) => {\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(commandGroupVariants(), className),\n role: 'group',\n 'aria-label': heading,\n ...props,\n },\n heading\n ? React.createElement(\n 'div',\n { className: 'px-2 py-1.5 text-xs font-medium text-muted-foreground' },\n heading,\n )\n : null,\n children,\n )\n },\n)\n\nCommandGroup.displayName = 'CommandGroup'\n\n// ---------------------------------------------------------------------------\n// CommandItem\n// ---------------------------------------------------------------------------\n\nexport interface CommandItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n disabled?: boolean\n onSelect?: () => void\n}\n\nexport const CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(\n ({ className, value, disabled, onSelect: onItemSelect, children, ...props }, ref) => {\n const state = disabled ? 'disabled' : 'default'\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'option',\n 'aria-selected': false,\n 'aria-disabled': disabled ?? false,\n 'data-value': value,\n className: cn(commandItemVariants({ state }), className),\n onClick: () => {\n if (!disabled) {\n onItemSelect?.()\n }\n },\n ...props,\n },\n children,\n )\n },\n)\n\nCommandItem.displayName = 'CommandItem'\n\n// ---------------------------------------------------------------------------\n// CommandSeparator\n// ---------------------------------------------------------------------------\n\nexport interface CommandSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CommandSeparator = React.forwardRef<HTMLDivElement, CommandSeparatorProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n role: 'separator',\n className: cn('-mx-1 h-px bg-border', className),\n ...props,\n })\n },\n)\n\nCommandSeparator.displayName = 'CommandSeparator'\n","export interface ContentProtectionProps {\n /** Enable content protection. Default: true */\n enabled?: boolean\n /** Disable copy/cut. Default: true */\n disableCopy?: boolean\n /** Disable right-click context menu. Default: true */\n disableContextMenu?: boolean\n /** Watermark text overlay */\n watermarkText?: string\n}\n\nexport interface WatermarkConfig {\n text: string\n opacity: number\n angle: number\n}\n\nexport interface ContentProtectionAPI {\n eventHandlers: {\n onCopy?: (e: { preventDefault(): void }) => void\n onCut?: (e: { preventDefault(): void }) => void\n onContextMenu?: (e: { preventDefault(): void }) => void\n onSelectStart?: (e: { preventDefault(): void }) => void\n }\n watermarkConfig: WatermarkConfig | null\n dataAttributes: Record<string, string>\n}\n\nexport function createContentProtection(\n props: ContentProtectionProps = {},\n): ContentProtectionAPI {\n const {\n enabled = true,\n disableCopy = true,\n disableContextMenu = true,\n watermarkText,\n } = props\n\n const eventHandlers: ContentProtectionAPI['eventHandlers'] = {}\n\n if (enabled) {\n if (disableCopy) {\n const prevent = (e: { preventDefault(): void }) => e.preventDefault()\n eventHandlers.onCopy = prevent\n eventHandlers.onCut = prevent\n eventHandlers.onSelectStart = prevent\n }\n if (disableContextMenu) {\n eventHandlers.onContextMenu = (e: { preventDefault(): void }) =>\n e.preventDefault()\n }\n }\n\n const watermarkConfig: WatermarkConfig | null = watermarkText\n ? { text: watermarkText, opacity: 0.08, angle: -45 }\n : null\n\n const dataAttributes: Record<string, string> = {}\n if (enabled) {\n dataAttributes['data-protected'] = 'true'\n }\n\n return {\n eventHandlers,\n watermarkConfig,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const contentProtectionVariants = cva({\n base: 'relative select-none',\n})\n\nexport const watermarkVariants = cva({\n base: 'pointer-events-none absolute inset-0 z-50 overflow-hidden',\n})\n","import * as React from 'react'\nimport {\n createContentProtection,\n contentProtectionVariants,\n watermarkVariants,\n type ContentProtectionProps as CoreContentProtectionProps,\n} from '@refraction-ui/content-protection'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ContentProtectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Enable content protection. Default: true */\n enabled?: boolean\n /** Disable copy/cut. Default: true */\n disableCopy?: boolean\n /** Disable right-click context menu. Default: true */\n disableContextMenu?: boolean\n /** Watermark text overlay */\n watermarkText?: string\n}\n\n/**\n * ContentProtection component — wraps children to block copy/context menu\n * and optionally renders a watermark overlay.\n *\n * Uses the headless @refraction-ui/content-protection core for event handlers.\n */\nexport const ContentProtection = React.forwardRef<HTMLDivElement, ContentProtectionProps>(\n (\n {\n enabled,\n disableCopy,\n disableContextMenu,\n watermarkText,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const api = createContentProtection({\n enabled,\n disableCopy,\n disableContextMenu,\n watermarkText,\n })\n\n const classes = cn(contentProtectionVariants(), className)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.dataAttributes}\n onCopy={api.eventHandlers.onCopy as React.ClipboardEventHandler}\n onCut={api.eventHandlers.onCut as React.ClipboardEventHandler}\n onContextMenu={api.eventHandlers.onContextMenu as React.MouseEventHandler}\n onSelect={api.eventHandlers.onSelectStart as React.ReactEventHandler}\n {...props}\n >\n {children}\n {api.watermarkConfig && (\n <div\n className={watermarkVariants()}\n aria-hidden=\"true\"\n style={{\n opacity: api.watermarkConfig.opacity,\n transform: `rotate(${api.watermarkConfig.angle}deg)`,\n backgroundImage: `repeating-linear-gradient(\n ${api.watermarkConfig.angle}deg,\n transparent,\n transparent 80px,\n currentColor 80px,\n currentColor 80px\n )`,\n }}\n >\n <svg width=\"100%\" height=\"100%\">\n <defs>\n <pattern\n id=\"rfr-watermark\"\n x=\"0\"\n y=\"0\"\n width=\"200\"\n height=\"200\"\n patternUnits=\"userSpaceOnUse\"\n patternTransform={`rotate(${api.watermarkConfig.angle})`}\n >\n <text\n x=\"0\"\n y=\"100\"\n fill=\"currentColor\"\n fontSize=\"16\"\n fontFamily=\"sans-serif\"\n >\n {api.watermarkConfig.text}\n </text>\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#rfr-watermark)\" />\n </svg>\n </div>\n )}\n </div>\n )\n },\n)\n\nContentProtection.displayName = 'ContentProtection'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ColumnDef<T = Record<string, unknown>> {\n /** Unique column identifier */\n id: string\n /** Column header text */\n header: string\n /** Accessor function to get cell value from row */\n accessor: (row: T) => unknown\n /** Whether this column is sortable */\n sortable?: boolean\n /** Whether this column is filterable */\n filterable?: boolean\n}\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface DataTableProps<T = Record<string, unknown>> {\n /** Column definitions */\n columns: ColumnDef<T>[]\n /** Data rows */\n data: T[]\n /** Current sort column */\n sortBy?: string\n /** Current sort direction */\n sortDir?: SortDirection\n /** Callback when sort changes */\n onSort?: (columnId: string, direction: SortDirection) => void\n /** Active filters: columnId -> filter value */\n filters?: Record<string, string>\n}\n\nexport interface DataTableState<T = Record<string, unknown>> {\n sortedData: T[]\n sortBy: string | null\n sortDir: SortDirection\n filters: Record<string, string>\n}\n\nexport interface DataTableAPI<T = Record<string, unknown>> {\n /** Current table state */\n state: DataTableState<T>\n /** Toggle sort for a column */\n sort(columnId: string): void\n /** Set a filter value for a column */\n setFilter(columnId: string, value: string): void\n /** Get ARIA and role props for a header cell */\n getHeaderProps(col: ColumnDef<T>): Partial<AccessibilityProps> & Record<string, unknown>\n /** Get props for a data cell */\n getCellProps(col: ColumnDef<T>, row: T): Record<string, unknown>\n /** Get props for a data row */\n getRowProps(row: T, index: number): Record<string, unknown>\n}\n\nexport function createDataTable<T = Record<string, unknown>>(\n props: DataTableProps<T>,\n): DataTableAPI<T> {\n const {\n columns,\n data,\n sortBy: initialSortBy,\n sortDir: initialSortDir = 'asc',\n onSort,\n filters: initialFilters,\n } = props\n\n let sortBy: string | null = initialSortBy ?? null\n let sortDir: SortDirection = initialSortDir\n let filters: Record<string, string> = { ...(initialFilters ?? {}) }\n\n function getFilteredData(): T[] {\n let result = [...data]\n\n for (const [columnId, filterValue] of Object.entries(filters)) {\n if (!filterValue) continue\n const col = columns.find((c) => c.id === columnId)\n if (!col) continue\n const lowerFilter = filterValue.toLowerCase()\n result = result.filter((row) => {\n const cellValue = col.accessor(row)\n return String(cellValue ?? '').toLowerCase().includes(lowerFilter)\n })\n }\n\n return result\n }\n\n function getSortedData(): T[] {\n const filtered = getFilteredData()\n\n if (!sortBy) return filtered\n\n const col = columns.find((c) => c.id === sortBy)\n if (!col) return filtered\n\n return [...filtered].sort((a, b) => {\n const aVal = col.accessor(a)\n const bVal = col.accessor(b)\n const aStr = String(aVal ?? '')\n const bStr = String(bVal ?? '')\n\n const cmp = aStr.localeCompare(bStr, undefined, { numeric: true })\n return sortDir === 'asc' ? cmp : -cmp\n })\n }\n\n function sort(columnId: string): void {\n const col = columns.find((c) => c.id === columnId)\n if (!col?.sortable) return\n\n if (sortBy === columnId) {\n sortDir = sortDir === 'asc' ? 'desc' : 'asc'\n } else {\n sortBy = columnId\n sortDir = 'asc'\n }\n\n onSort?.(sortBy, sortDir)\n }\n\n function setFilter(columnId: string, value: string): void {\n filters = { ...filters, [columnId]: value }\n }\n\n function getHeaderProps(\n col: ColumnDef<T>,\n ): Partial<AccessibilityProps> & Record<string, unknown> {\n const props: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'columnheader',\n }\n\n if (col.sortable) {\n if (sortBy === col.id) {\n props['aria-sort'] = sortDir === 'asc' ? 'ascending' : 'descending'\n } else {\n props['aria-sort'] = 'none'\n }\n }\n\n return props\n }\n\n function getCellProps(\n col: ColumnDef<T>,\n _row: T,\n ): Record<string, unknown> {\n return {\n role: 'cell',\n 'data-column': col.id,\n }\n }\n\n function getRowProps(_row: T, index: number): Record<string, unknown> {\n return {\n role: 'row',\n 'data-row-index': index,\n }\n }\n\n return {\n get state(): DataTableState<T> {\n return {\n get sortedData() {\n return getSortedData()\n },\n get sortBy() {\n return sortBy\n },\n get sortDir() {\n return sortDir\n },\n get filters() {\n return { ...filters }\n },\n }\n },\n sort,\n setFilter,\n getHeaderProps,\n getCellProps,\n getRowProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tableVariants = cva({\n base: 'w-full caption-bottom text-sm border-collapse',\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const headerVariants = cva({\n base: 'h-10 px-2 text-left align-middle font-medium text-muted-foreground border-b',\n variants: {\n sortable: {\n true: 'cursor-pointer select-none hover:text-foreground',\n false: '',\n },\n },\n defaultVariants: {\n sortable: 'false',\n },\n})\n\nexport const cellVariants = cva({\n base: 'p-2 align-middle border-b',\n variants: {\n size: {\n sm: 'p-1',\n md: 'p-2',\n lg: 'p-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const rowVariants = cva({\n base: 'border-b transition-colors hover:bg-muted/50',\n variants: {\n selected: {\n true: 'bg-muted',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createDataTable,\n tableVariants,\n headerVariants,\n cellVariants,\n rowVariants,\n type ColumnDef,\n type SortDirection,\n type DataTableProps as CoreProps,\n} from '@refraction-ui/data-table'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\nexport interface DataTableProps<T = Record<string, unknown>> {\n columns: ColumnDef<T>[]\n data: T[]\n sortBy?: string\n sortDir?: SortDirection\n onSort?: (columnId: string, direction: SortDirection) => void\n filters?: Record<string, string>\n className?: string\n emptyMessage?: string\n}\n\nexport function DataTable<T = Record<string, unknown>>({\n columns,\n data,\n sortBy: controlledSortBy,\n sortDir: controlledSortDir = 'asc',\n onSort,\n filters: controlledFilters,\n className,\n emptyMessage = 'No data available',\n}: DataTableProps<T>) {\n const [sortBy, setSortBy] = React.useState<string | null>(controlledSortBy ?? null)\n const [sortDir, setSortDir] = React.useState<SortDirection>(controlledSortDir)\n const [filters, setFilters] = React.useState<Record<string, string>>(controlledFilters ?? {})\n\n const api = React.useMemo(\n () =>\n createDataTable<T>({\n columns,\n data,\n sortBy: sortBy ?? undefined,\n sortDir,\n onSort,\n filters,\n }),\n [columns, data, sortBy, sortDir, onSort, filters],\n )\n\n const handleSort = React.useCallback(\n (columnId: string) => {\n const col = columns.find((c) => c.id === columnId)\n if (!col?.sortable) return\n\n let newDir: SortDirection = 'asc'\n if (sortBy === columnId) {\n newDir = sortDir === 'asc' ? 'desc' : 'asc'\n }\n\n setSortBy(columnId)\n setSortDir(newDir)\n onSort?.(columnId, newDir)\n },\n [columns, sortBy, sortDir, onSort],\n )\n\n const handleFilter = React.useCallback(\n (columnId: string, value: string) => {\n setFilters((prev) => ({ ...prev, [columnId]: value }))\n },\n [],\n )\n\n const sortedData = api.state.sortedData\n const hasFilterable = columns.some((c) => c.filterable)\n\n return React.createElement(\n 'div',\n { className: 'relative w-full overflow-auto' },\n React.createElement(\n 'table',\n {\n className: cn(tableVariants(), className),\n role: 'table',\n },\n // thead\n React.createElement(\n 'thead',\n null,\n // Header row\n React.createElement(\n 'tr',\n { role: 'row' },\n ...columns.map((col) => {\n const headerProps = api.getHeaderProps(col)\n return React.createElement(\n 'th',\n {\n key: col.id,\n ...headerProps,\n className: headerVariants({ sortable: col.sortable ? 'true' : 'false' }),\n onClick: col.sortable ? () => handleSort(col.id) : undefined,\n },\n col.header,\n col.sortable && sortBy === col.id\n ? React.createElement('span', { 'aria-hidden': true }, sortDir === 'asc' ? ' \\u2191' : ' \\u2193')\n : null,\n )\n }),\n ),\n // Filter row\n hasFilterable\n ? React.createElement(\n 'tr',\n { role: 'row', 'data-filter-row': 'true' },\n ...columns.map((col) =>\n React.createElement(\n 'th',\n { key: `filter-${col.id}` },\n col.filterable\n ? React.createElement('input', {\n type: 'text',\n 'aria-label': `Filter ${col.header}`,\n value: filters[col.id] ?? '',\n onChange: (e: React.ChangeEvent<HTMLInputElement>) =>\n handleFilter(col.id, e.target.value),\n placeholder: `Filter...`,\n })\n : null,\n ),\n ),\n )\n : null,\n ),\n // tbody\n React.createElement(\n 'tbody',\n null,\n sortedData.length === 0\n ? React.createElement(\n 'tr',\n { role: 'row' },\n React.createElement(\n 'td',\n {\n colSpan: columns.length,\n className: 'text-center p-4 text-muted-foreground',\n role: 'cell',\n },\n emptyMessage,\n ),\n )\n : sortedData.map((row, rowIndex) =>\n React.createElement(\n 'tr',\n {\n key: rowIndex,\n ...api.getRowProps(row, rowIndex),\n className: rowVariants(),\n },\n ...columns.map((col) =>\n React.createElement(\n 'td',\n {\n key: col.id,\n ...api.getCellProps(col, row),\n className: cellVariants(),\n },\n String(col.accessor(row) ?? ''),\n ),\n ),\n ),\n ),\n ),\n )\n )\n}\n\nDataTable.displayName = 'DataTable'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type DeviceType = 'iphone' | 'ipad' | 'android-phone' | 'android-tablet'\nexport type DeviceOrientation = 'portrait' | 'landscape'\n\nexport interface DeviceFrameProps {\n /** The type of device to display */\n device: DeviceType\n /** The orientation of the device */\n orientation?: DeviceOrientation\n}\n\nexport interface DeviceDimensions {\n /** Width in pixels */\n width: number\n /** Height in pixels */\n height: number\n /** Border radius in pixels */\n radius: number\n /** Whether the device has a notch */\n notch: boolean\n /** Whether the device has a home indicator bar */\n homeIndicator: boolean\n}\n\nexport interface DeviceFrameAPI {\n /** Computed dimensions for the device */\n dimensions: DeviceDimensions\n /** ARIA attributes for the device frame */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Data attributes for styling hooks */\n dataAttributes: Record<string, string>\n}\n\ninterface DeviceSpec {\n width: number\n height: number\n radius: number\n notch: boolean\n homeIndicator: boolean\n}\n\nconst DEVICE_SPECS: Record<DeviceType, DeviceSpec> = {\n iphone: {\n width: 375,\n height: 812,\n radius: 44,\n notch: true,\n homeIndicator: true,\n },\n ipad: {\n width: 810,\n height: 1080,\n radius: 18,\n notch: false,\n homeIndicator: true,\n },\n 'android-phone': {\n width: 360,\n height: 800,\n radius: 24,\n notch: false,\n homeIndicator: false,\n },\n 'android-tablet': {\n width: 800,\n height: 1280,\n radius: 16,\n notch: false,\n homeIndicator: false,\n },\n}\n\nconst DEVICE_LABELS: Record<DeviceType, string> = {\n iphone: 'iPhone',\n ipad: 'iPad',\n 'android-phone': 'Android Phone',\n 'android-tablet': 'Android Tablet',\n}\n\nexport function createDeviceFrame(props: DeviceFrameProps): DeviceFrameAPI {\n const { device, orientation = 'portrait' } = props\n const spec = DEVICE_SPECS[device]\n\n const isLandscape = orientation === 'landscape'\n\n const dimensions: DeviceDimensions = {\n width: isLandscape ? spec.height : spec.width,\n height: isLandscape ? spec.width : spec.height,\n radius: spec.radius,\n notch: spec.notch,\n homeIndicator: spec.homeIndicator,\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'img',\n 'aria-label': `${DEVICE_LABELS[device]} device frame in ${orientation} orientation`,\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-device': device,\n 'data-orientation': orientation,\n ...(spec.notch ? { 'data-notch': 'true' } : {}),\n ...(spec.homeIndicator ? { 'data-home-indicator': 'true' } : {}),\n }\n\n return {\n dimensions,\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const deviceFrameVariants = cva({\n base: 'relative overflow-hidden bg-black border-4 border-gray-800 shadow-xl',\n variants: {\n device: {\n iphone: 'rounded-[44px] border-[6px]',\n ipad: 'rounded-[18px] border-[6px]',\n 'android-phone': 'rounded-[24px] border-4',\n 'android-tablet': 'rounded-[16px] border-4',\n },\n orientation: {\n portrait: '',\n landscape: '',\n },\n },\n defaultVariants: {\n device: 'iphone',\n orientation: 'portrait',\n },\n})\n","import * as React from 'react'\nimport {\n createDeviceFrame,\n deviceFrameVariants,\n type DeviceFrameProps as CoreDeviceFrameProps,\n type DeviceType,\n type DeviceOrientation,\n} from '@refraction-ui/device-frame'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// DeviceFrame\n// ---------------------------------------------------------------------------\n\nexport interface DeviceFrameProps {\n device: DeviceType\n orientation?: DeviceOrientation\n className?: string\n children?: React.ReactNode\n}\n\nexport function DeviceFrame({\n device,\n orientation = 'portrait',\n className,\n children,\n}: DeviceFrameProps) {\n const api = createDeviceFrame({ device, orientation })\n\n return React.createElement(\n 'div',\n {\n className: cn(deviceFrameVariants({ device, orientation }), className),\n style: {\n width: `${api.dimensions.width}px`,\n height: `${api.dimensions.height}px`,\n },\n ...api.ariaProps,\n ...api.dataAttributes,\n },\n // Notch decoration\n api.dimensions.notch\n ? React.createElement('div', {\n className: 'absolute top-0 left-1/2 -translate-x-1/2 w-[40%] h-[30px] bg-black rounded-b-2xl z-10',\n 'aria-hidden': 'true',\n 'data-part': 'notch',\n })\n : null,\n // Screen area\n React.createElement(\n 'div',\n {\n className: 'relative w-full h-full overflow-hidden bg-white',\n 'data-part': 'screen',\n },\n children,\n ),\n // Home indicator decoration\n api.dimensions.homeIndicator\n ? React.createElement('div', {\n className: 'absolute bottom-2 left-1/2 -translate-x-1/2 w-[35%] h-[5px] bg-gray-300 rounded-full z-10',\n 'aria-hidden': 'true',\n 'data-part': 'home-indicator',\n })\n : null,\n )\n}\n\nDeviceFrame.displayName = 'DeviceFrame'\n","import type { AccessibilityProps, KeyboardHandlerMap, FocusTrapConfig } from '@refraction-ui/shared'\nimport { createMachine, Keys, generateId } from '@refraction-ui/shared'\n\nexport interface DialogProps {\n /** Whether the dialog is open (controlled) */\n open?: boolean\n /** Whether the dialog starts open (uncontrolled) */\n defaultOpen?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether the dialog is modal (default: true) */\n modal?: boolean\n}\n\nexport interface DialogState {\n open: boolean\n}\n\nexport interface DialogAPI {\n /** Current dialog state */\n state: DialogState\n /** ARIA attributes for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the dialog content */\n contentProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Data attributes for the overlay */\n overlayProps: Record<string, string>\n /** Open the dialog */\n open(): void\n /** Close the dialog */\n close(): void\n /** Toggle the dialog */\n toggle(): void\n /** Keyboard handlers (Escape to close) */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs for aria linking */\n ids: {\n content: string\n title: string\n description: string\n }\n /**\n * Focus trap configuration for framework wrappers.\n * Pass this to createFocusTrap() with a container element.\n */\n focusTrapConfig: Omit<FocusTrapConfig, 'container'>\n}\n\nexport function createDialog(props: DialogProps = {}): DialogAPI {\n const { open: controlledOpen, defaultOpen = false, onOpenChange, modal = true } = props\n\n const machine = createMachine<'open' | 'closed', 'OPEN' | 'CLOSE'>({\n initial: controlledOpen ?? defaultOpen ? 'open' : 'closed',\n states: {\n closed: { on: { OPEN: 'open' } },\n open: { on: { CLOSE: 'closed' } },\n },\n })\n\n const contentId = generateId('rfr-dialog')\n const titleId = generateId('rfr-dialog-title')\n const descriptionId = generateId('rfr-dialog-desc')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return machine.matches('open')\n }\n\n function openDialog(): void {\n machine.send('OPEN')\n onOpenChange?.(true)\n }\n\n function closeDialog(): void {\n machine.send('CLOSE')\n onOpenChange?.(false)\n }\n\n function toggleDialog(): void {\n if (isOpen()) {\n closeDialog()\n } else {\n openDialog()\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closeDialog()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog',\n }\n\n const contentProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': modal,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n id: contentId,\n }\n\n const overlayProps: Record<string, string> = {\n 'data-state': isOpen() ? 'open' : 'closed',\n }\n\n const focusTrapConfig: Omit<FocusTrapConfig, 'container'> = {\n onEscape: closeDialog,\n returnFocusOnDeactivate: true,\n }\n\n return {\n state: { open: isOpen() },\n triggerProps,\n contentProps,\n overlayProps,\n open: openDialog,\n close: closeDialog,\n toggle: toggleDialog,\n keyboardHandlers,\n ids: {\n content: contentId,\n title: titleId,\n description: descriptionId,\n },\n focusTrapConfig,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const overlayStyles =\n 'fixed inset-0 z-50 bg-black/80'\n\nexport const dialogContentVariants = cva({\n base: 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg',\n})\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport {\n createDialog,\n overlayStyles,\n dialogContentVariants,\n type DialogProps as CoreDialogProps,\n} from '@refraction-ui/dialog'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface DialogContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n modal: boolean\n contentId: string\n titleId: string\n descriptionId: string\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null)\n\nfunction useDialogContext(): DialogContextValue {\n const ctx = React.useContext(DialogContext)\n if (!ctx) {\n throw new Error('Dialog compound components must be used within <Dialog>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Dialog (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface DialogProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children?: React.ReactNode\n}\n\nexport function Dialog({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n children,\n}: DialogProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createDialog> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createDialog({ open, modal })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<DialogContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n modal,\n contentId: api.ids.content,\n titleId: api.ids.title,\n descriptionId: api.ids.description,\n }),\n [open, handleOpenChange, modal, api.ids.content, api.ids.title, api.ids.description],\n )\n\n return React.createElement(DialogContext.Provider, { value: ctx }, children)\n}\n\nDialog.displayName = 'Dialog'\n\n// ---------------------------------------------------------------------------\n// DialogTrigger\n// ---------------------------------------------------------------------------\n\nexport interface DialogTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n}\n\nexport const DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDialogContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(!open)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDialogTrigger.displayName = 'DialogTrigger'\n\n// ---------------------------------------------------------------------------\n// DialogOverlay\n// ---------------------------------------------------------------------------\n\nexport interface DialogOverlayProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(\n ({ className, onClick, ...props }, ref) => {\n const { open, onOpenChange } = useDialogContext()\n\n if (!open) return null\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // Only close if clicking the overlay itself, not children\n if (e.target === e.currentTarget) {\n onOpenChange(false)\n }\n onClick?.(e)\n }\n\n return React.createElement('div', {\n ref,\n className: cn(overlayStyles, className),\n 'data-state': open ? 'open' : 'closed',\n onClick: handleClick,\n ...props,\n })\n },\n)\n\nDialogOverlay.displayName = 'DialogOverlay'\n\n// ---------------------------------------------------------------------------\n// DialogContent\n// ---------------------------------------------------------------------------\n\nexport interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, onKeyDown, ...props }, ref) => {\n const { open, onOpenChange, modal, contentId, titleId, descriptionId } =\n useDialogContext()\n\n const api = React.useMemo(\n () => createDialog({ open, modal }),\n [open, modal],\n )\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const handler = createKeyboardHandler({\n Escape: (ev) => {\n ev.preventDefault()\n onOpenChange(false)\n },\n })\n handler(e.nativeEvent)\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = React.createElement(\n 'div',\n {\n ref,\n role: 'dialog',\n 'aria-modal': modal,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n id: contentId,\n className: cn(dialogContentVariants(), className),\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n ...props,\n },\n children,\n )\n\n // Render via portal if document is available (client-side)\n if (typeof document !== 'undefined') {\n return ReactDOM.createPortal(content, document.body)\n }\n\n // SSR fallback: render inline\n return content\n },\n)\n\nDialogContent.displayName = 'DialogContent'\n\n// ---------------------------------------------------------------------------\n// DialogHeader\n// ---------------------------------------------------------------------------\n\nexport interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn('flex flex-col space-y-1.5 text-center sm:text-left', className),\n ...props,\n })\n },\n)\n\nDialogHeader.displayName = 'DialogHeader'\n\n// ---------------------------------------------------------------------------\n// DialogFooter\n// ---------------------------------------------------------------------------\n\nexport interface DialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className,\n ),\n ...props,\n })\n },\n)\n\nDialogFooter.displayName = 'DialogFooter'\n\n// ---------------------------------------------------------------------------\n// DialogTitle\n// ---------------------------------------------------------------------------\n\nexport interface DialogTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(\n ({ className, ...props }, ref) => {\n const { titleId } = useDialogContext()\n\n return React.createElement('h2', {\n ref,\n id: titleId,\n className: cn('text-lg font-semibold leading-none tracking-tight', className),\n ...props,\n })\n },\n)\n\nDialogTitle.displayName = 'DialogTitle'\n\n// ---------------------------------------------------------------------------\n// DialogDescription\n// ---------------------------------------------------------------------------\n\nexport interface DialogDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(({ className, ...props }, ref) => {\n const { descriptionId } = useDialogContext()\n\n return React.createElement('p', {\n ref,\n id: descriptionId,\n className: cn('text-sm text-muted-foreground', className),\n ...props,\n })\n})\n\nDialogDescription.displayName = 'DialogDescription'\n\n// ---------------------------------------------------------------------------\n// DialogClose\n// ---------------------------------------------------------------------------\n\nexport interface DialogCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(\n ({ onClick, children, ...props }, ref) => {\n const { onOpenChange } = useDialogContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(false)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDialogClose.displayName = 'DialogClose'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { createMachine, Keys, generateId } from '@refraction-ui/shared'\n\nexport interface DropdownMenuProps {\n /** Whether the menu is open (controlled) */\n open?: boolean\n /** Whether the menu starts open (uncontrolled) */\n defaultOpen?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface MenuItemProps {\n /** Whether the item is disabled */\n disabled?: boolean\n /** Callback when the item is selected */\n onSelect?: () => void\n}\n\nexport interface DropdownMenuState {\n open: boolean\n}\n\nexport interface DropdownMenuAPI {\n /** Current menu state */\n state: DropdownMenuState\n /** ARIA attributes for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the menu content */\n contentProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for menu item props */\n getItemProps(item: MenuItemProps): Partial<AccessibilityProps> & Record<string, unknown>\n /** Open the menu */\n open(): void\n /** Close the menu */\n close(): void\n /** Toggle the menu */\n toggle(): void\n /** Keyboard handlers for the menu */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs for aria linking */\n ids: {\n content: string\n }\n}\n\nexport function createDropdownMenu(props: DropdownMenuProps = {}): DropdownMenuAPI {\n const { open: controlledOpen, defaultOpen = false, onOpenChange } = props\n\n const machine = createMachine<'open' | 'closed', 'OPEN' | 'CLOSE'>({\n initial: controlledOpen ?? defaultOpen ? 'open' : 'closed',\n states: {\n closed: { on: { OPEN: 'open' } },\n open: { on: { CLOSE: 'closed' } },\n },\n })\n\n const contentId = generateId('rfr-dropdown-menu')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return machine.matches('open')\n }\n\n function openMenu(): void {\n machine.send('OPEN')\n onOpenChange?.(true)\n }\n\n function closeMenu(): void {\n machine.send('CLOSE')\n onOpenChange?.(false)\n }\n\n function toggleMenu(): void {\n if (isOpen()) {\n closeMenu()\n } else {\n openMenu()\n }\n }\n\n function getItemProps(item: MenuItemProps): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'menuitem',\n tabIndex: item.disabled ? -1 : 0,\n 'data-disabled': item.disabled ? '' : undefined,\n 'aria-disabled': item.disabled || undefined,\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closeMenu()\n },\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n },\n [Keys.Enter]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': contentId,\n 'aria-haspopup': 'menu',\n }\n\n const contentProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'menu',\n id: contentId,\n 'data-state': isOpen() ? 'open' : 'closed',\n }\n\n return {\n state: { open: isOpen() },\n triggerProps,\n contentProps,\n getItemProps,\n open: openMenu,\n close: closeMenu,\n toggle: toggleMenu,\n keyboardHandlers,\n ids: {\n content: contentId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const menuContentVariants = cva({\n base: 'z-50 rounded-md border bg-popover shadow-md',\n})\n\nexport const menuItemVariants = cva({\n base: 'relative flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n})\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport {\n createDropdownMenu,\n menuContentVariants,\n menuItemVariants,\n type DropdownMenuProps as CoreDropdownMenuProps,\n type MenuItemProps as CoreMenuItemProps,\n} from '@refraction-ui/dropdown-menu'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface DropdownMenuContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n contentId: string\n}\n\nconst DropdownMenuContext = React.createContext<DropdownMenuContextValue | null>(null)\n\nfunction useDropdownMenuContext(): DropdownMenuContextValue {\n const ctx = React.useContext(DropdownMenuContext)\n if (!ctx) {\n throw new Error('DropdownMenu compound components must be used within <DropdownMenu>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DropdownMenu (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nexport function DropdownMenu({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}: DropdownMenuProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createDropdownMenu> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createDropdownMenu({ open })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<DropdownMenuContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n contentId: api.ids.content,\n }),\n [open, handleOpenChange, api.ids.content],\n )\n\n return React.createElement(DropdownMenuContext.Provider, { value: ctx }, children)\n}\n\nDropdownMenu.displayName = 'DropdownMenu'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuTrigger\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const DropdownMenuTrigger = React.forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDropdownMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(!open)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-haspopup': 'menu',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuContent\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuContent = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n ({ className, children, onKeyDown, ...props }, ref) => {\n const { open, onOpenChange, contentId } = useDropdownMenuContext()\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const handler = createKeyboardHandler({\n Escape: (ev) => {\n ev.preventDefault()\n onOpenChange(false)\n },\n })\n handler(e.nativeEvent)\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = React.createElement(\n 'div',\n {\n ref,\n role: 'menu',\n id: contentId,\n 'data-state': open ? 'open' : 'closed',\n className: cn(menuContentVariants(), className),\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n ...props,\n },\n children,\n )\n\n // Render via portal if document is available (client-side)\n if (typeof document !== 'undefined') {\n return ReactDOM.createPortal(content, document.body)\n }\n\n // SSR fallback: render inline\n return content\n },\n)\n\nDropdownMenuContent.displayName = 'DropdownMenuContent'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuItem\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuItemProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean\n onSelect?: () => void\n}\n\nexport const DropdownMenuItem = React.forwardRef<HTMLDivElement, DropdownMenuItemProps>(\n ({ className, disabled, onSelect, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useDropdownMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n onSelect?.()\n onOpenChange(false)\n onClick?.(e)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onSelect?.()\n onOpenChange(false)\n }\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n 'data-disabled': disabled ? '' : undefined,\n 'aria-disabled': disabled || undefined,\n className: cn(menuItemVariants(), className),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n },\n children,\n )\n },\n)\n\nDropdownMenuItem.displayName = 'DropdownMenuItem'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuSeparator\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuSeparator = React.forwardRef<HTMLDivElement, DropdownMenuSeparatorProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n role: 'separator',\n className: cn('-mx-1 my-1 h-px bg-muted', className),\n ...props,\n })\n },\n)\n\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator'\n\n// ---------------------------------------------------------------------------\n// DropdownMenuLabel\n// ---------------------------------------------------------------------------\n\nexport interface DropdownMenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DropdownMenuLabel = React.forwardRef<HTMLDivElement, DropdownMenuLabelProps>(\n ({ className, ...props }, ref) => {\n return React.createElement('div', {\n ref,\n className: cn('px-2 py-1.5 text-sm font-semibold', className),\n ...props,\n })\n },\n)\n\nDropdownMenuLabel.displayName = 'DropdownMenuLabel'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { createDialog, type DialogAPI } from '@refraction-ui/dialog'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type FeedbackType = 'text' | 'video' | 'general'\n\nexport interface FeedbackDialogProps {\n /** Whether the dialog is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Callback when feedback is submitted */\n onSubmit?: (data: FeedbackData) => void | Promise<void>\n /** Feedback type */\n type?: FeedbackType\n}\n\nexport interface FeedbackData {\n comment: string\n email?: string\n type: FeedbackType\n selectedText?: string\n}\n\nexport interface FeedbackFormState {\n comment: string\n email: string\n honeypot: string\n}\n\nexport interface FeedbackDialogState {\n open: boolean\n isSubmitting: boolean\n isSubmitted: boolean\n}\n\nexport interface FeedbackDialogAPI {\n /** Current state */\n state: FeedbackDialogState\n /** Dialog props from the underlying createDialog */\n dialogProps: DialogAPI\n /** Form field values */\n formState: FeedbackFormState\n /** Set a form field value */\n setField(field: keyof FeedbackFormState, value: string): void\n /** Submit the feedback form */\n submit(): Promise<void>\n /** Reset form to initial state */\n reset(): void\n /** ARIA props for the feedback dialog */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n}\n\nexport function createFeedbackDialog(props: FeedbackDialogProps = {}): FeedbackDialogAPI {\n const {\n open: controlledOpen,\n onOpenChange,\n onSubmit,\n type = 'general',\n } = props\n\n const dialog = createDialog({\n open: controlledOpen,\n onOpenChange,\n modal: true,\n })\n\n let isSubmitting = false\n let isSubmitted = false\n\n const formState: FeedbackFormState = {\n comment: '',\n email: '',\n honeypot: '',\n }\n\n const feedbackId = generateId('rfr-feedback')\n\n function setField(field: keyof FeedbackFormState, value: string): void {\n formState[field] = value\n }\n\n async function submit(): Promise<void> {\n // Honeypot check — bots fill this hidden field\n if (formState.honeypot) {\n return\n }\n\n if (!formState.comment.trim()) {\n return\n }\n\n isSubmitting = true\n\n const data: FeedbackData = {\n comment: formState.comment,\n type,\n ...(formState.email ? { email: formState.email } : {}),\n }\n\n try {\n await onSubmit?.(data)\n isSubmitting = false\n isSubmitted = true\n } catch {\n isSubmitting = false\n }\n }\n\n function reset(): void {\n formState.comment = ''\n formState.email = ''\n formState.honeypot = ''\n isSubmitting = false\n isSubmitted = false\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': true,\n 'aria-labelledby': `${feedbackId}-title`,\n 'aria-describedby': `${feedbackId}-desc`,\n id: feedbackId,\n }\n\n return {\n get state() {\n return {\n get open() {\n return dialog.state.open\n },\n get isSubmitting() {\n return isSubmitting\n },\n get isSubmitted() {\n return isSubmitted\n },\n }\n },\n dialogProps: dialog,\n formState,\n setField,\n submit,\n reset,\n ariaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const feedbackDialogVariants = cva({\n base: 'fixed left-1/2 top-1/2 z-50 w-full max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-6 shadow-lg',\n variants: {\n type: {\n text: 'max-w-md',\n video: 'max-w-lg',\n general: 'max-w-md',\n },\n },\n defaultVariants: {\n type: 'general',\n },\n})\n","import * as React from 'react'\nimport {\n createFeedbackDialog,\n feedbackDialogVariants,\n type FeedbackDialogProps as CoreProps,\n type FeedbackData,\n type FeedbackType,\n} from '@refraction-ui/feedback-dialog'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// FeedbackDialog\n// ---------------------------------------------------------------------------\n\nexport interface FeedbackDialogProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n onSubmit?: (data: FeedbackData) => void | Promise<void>\n type?: FeedbackType\n className?: string\n children?: React.ReactNode\n}\n\nexport function FeedbackDialog({\n open: controlledOpen,\n onOpenChange,\n onSubmit,\n type = 'general',\n className,\n}: FeedbackDialogProps) {\n const [open, setOpen] = React.useState(controlledOpen ?? false)\n const [comment, setComment] = React.useState('')\n const [email, setEmail] = React.useState('')\n const [honeypot, setHoneypot] = React.useState('')\n const [isSubmitting, setIsSubmitting] = React.useState(false)\n const [isSubmitted, setIsSubmitted] = React.useState(false)\n\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : open\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n const apiRef = React.useRef<ReturnType<typeof createFeedbackDialog> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createFeedbackDialog({ open: isOpen, onOpenChange: handleOpenChange, onSubmit, type })\n }\n\n const handleSubmit = React.useCallback(async () => {\n if (honeypot) return\n if (!comment.trim()) return\n\n setIsSubmitting(true)\n const data: FeedbackData = {\n comment,\n type,\n ...(email ? { email } : {}),\n }\n\n try {\n await onSubmit?.(data)\n setIsSubmitting(false)\n setIsSubmitted(true)\n } catch {\n setIsSubmitting(false)\n }\n }, [comment, email, honeypot, type, onSubmit])\n\n const handleReset = React.useCallback(() => {\n setComment('')\n setEmail('')\n setHoneypot('')\n setIsSubmitting(false)\n setIsSubmitted(false)\n }, [])\n\n if (!isOpen) return null\n\n const api = apiRef.current\n\n if (isSubmitted) {\n return React.createElement(\n 'div',\n {\n className: cn(feedbackDialogVariants({ type }), className),\n ...api.ariaProps,\n 'data-state': 'submitted',\n },\n React.createElement('p', { 'data-testid': 'success-message' }, 'Thank you for your feedback!'),\n React.createElement(\n 'button',\n {\n type: 'button',\n onClick: () => {\n handleReset()\n handleOpenChange(false)\n },\n },\n 'Close',\n ),\n )\n }\n\n return React.createElement(\n 'div',\n {\n className: cn(feedbackDialogVariants({ type }), className),\n ...api.ariaProps,\n 'data-state': 'open',\n },\n React.createElement('h2', { id: `${api.ariaProps.id}-title` }, 'Send Feedback'),\n React.createElement('textarea', {\n 'aria-label': 'Feedback comment',\n value: comment,\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => setComment(e.target.value),\n placeholder: 'Your feedback...',\n disabled: isSubmitting,\n }),\n React.createElement('input', {\n type: 'email',\n 'aria-label': 'Email',\n value: email,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setEmail(e.target.value),\n placeholder: 'Email (optional)',\n disabled: isSubmitting,\n }),\n // Honeypot field — hidden from real users\n React.createElement('input', {\n type: 'text',\n 'aria-hidden': true,\n tabIndex: -1,\n style: { position: 'absolute', left: '-9999px' },\n value: honeypot,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setHoneypot(e.target.value),\n autoComplete: 'off',\n name: 'website',\n }),\n React.createElement(\n 'button',\n {\n type: 'button',\n onClick: handleSubmit,\n disabled: isSubmitting || !comment.trim(),\n },\n isSubmitting ? 'Submitting...' : 'Submit',\n ),\n )\n}\n\nFeedbackDialog.displayName = 'FeedbackDialog'\n\n// ---------------------------------------------------------------------------\n// FeedbackButton\n// ---------------------------------------------------------------------------\n\nexport interface FeedbackButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode\n}\n\nexport const FeedbackButton = React.forwardRef<HTMLButtonElement, FeedbackButtonProps>(\n ({ children, ...props }, ref) => {\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n 'aria-label': 'Send feedback',\n ...props,\n },\n children ?? 'Feedback',\n )\n },\n)\n\nFeedbackButton.displayName = 'FeedbackButton'\n","export interface SocialLink {\n label: string\n href: string\n icon?: string\n}\n\nexport interface FooterColumn {\n title: string\n links: { label: string; href: string }[]\n}\n\nexport interface FooterProps {\n copyright?: string\n socialLinks?: SocialLink[]\n columns?: FooterColumn[]\n}\n\nexport interface FooterAPI {\n ariaProps: Record<string, string>\n copyrightText: string\n}\n\nexport function createFooter(props: FooterProps = {}): FooterAPI {\n const { copyright } = props\n const year = new Date().getFullYear()\n const copyrightText = copyright ?? `© ${year} All rights reserved.`\n\n return {\n ariaProps: { role: 'contentinfo' },\n copyrightText,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const footerVariants = cva({\n base: 'border-t bg-background py-8',\n})\n","import * as React from 'react'\nimport {\n createFooter,\n footerVariants,\n type FooterColumn,\n type SocialLink,\n} from '@refraction-ui/footer'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n /** Custom copyright text */\n copyright?: string\n /** Social media links */\n socialLinks?: SocialLink[]\n /** Footer link columns */\n columns?: FooterColumn[]\n}\n\n/**\n * Footer component — renders a site footer with copyright, social links, and link columns.\n *\n * Uses the headless @refraction-ui/footer core for state and ARIA attributes.\n */\nexport const Footer = React.forwardRef<HTMLElement, FooterProps>(\n (\n {\n copyright,\n socialLinks = [],\n columns = [],\n className,\n ...props\n },\n ref,\n ) => {\n const api = createFooter({ copyright, socialLinks, columns })\n const classes = cn(footerVariants(), className)\n\n return (\n <footer ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"mx-auto max-w-7xl px-4\">\n {columns.length > 0 && (\n <div className=\"grid grid-cols-2 gap-8 md:grid-cols-4\">\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"mb-3 text-sm font-semibold\">{column.title}</h3>\n <ul className=\"space-y-2\">\n {column.links.map((link) => (\n <li key={link.href}>\n <a\n href={link.href}\n className=\"text-sm text-muted-foreground transition-colors hover:text-foreground\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n <div className=\"flex items-center justify-between pt-8\">\n <p className=\"text-sm text-muted-foreground\">{api.copyrightText}</p>\n {socialLinks.length > 0 && (\n <div className=\"flex items-center gap-4\">\n {socialLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n aria-label={link.label}\n >\n {link.icon ?? link.label}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n </footer>\n )\n },\n)\n\nFooter.displayName = 'Footer'\n","export interface InlineEditorProps {\n /** Current value */\n value: string\n /** Callback when saving */\n onSave?: (value: string) => void\n /** Callback when cancelling */\n onCancel?: () => void\n}\n\nexport interface ToolbarAction {\n name: string\n syntax: string\n}\n\nexport interface InlineEditorState {\n isEditing: boolean\n value: string\n preview: string\n}\n\nexport interface InlineEditorAPI {\n /** Current editor state */\n state: InlineEditorState\n /** Enter editing mode */\n startEditing(): void\n /** Cancel editing, revert to original value */\n cancel(): void\n /** Save the current value */\n save(): void\n /** Update the editing value */\n updateValue(value: string): void\n /** Insert syntax at cursor position */\n insertAtCursor(syntax: string): void\n /** Available toolbar actions */\n toolbarActions: ToolbarAction[]\n}\n\nexport function createInlineEditor(props: InlineEditorProps): InlineEditorAPI {\n const { value: initialValue, onSave, onCancel } = props\n\n let isEditing = false\n let currentValue = initialValue\n\n const toolbarActions: ToolbarAction[] = [\n { name: 'bold', syntax: '**' },\n { name: 'heading', syntax: '# ' },\n { name: 'list', syntax: '- ' },\n { name: 'link', syntax: '[text](url)' },\n ]\n\n function startEditing(): void {\n isEditing = true\n currentValue = initialValue\n }\n\n function cancel(): void {\n isEditing = false\n currentValue = initialValue\n onCancel?.()\n }\n\n function save(): void {\n isEditing = false\n onSave?.(currentValue)\n }\n\n function updateValue(value: string): void {\n currentValue = value\n }\n\n function insertAtCursor(syntax: string): void {\n currentValue = currentValue + syntax\n }\n\n return {\n get state(): InlineEditorState {\n return {\n get isEditing() {\n return isEditing\n },\n get value() {\n return currentValue\n },\n get preview() {\n return currentValue\n },\n }\n },\n startEditing,\n cancel,\n save,\n updateValue,\n insertAtCursor,\n toolbarActions,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const editorVariants = cva({\n base: 'w-full rounded-md border bg-background',\n variants: {\n state: {\n viewing: 'cursor-pointer hover:bg-muted/50 p-3',\n editing: 'p-0',\n },\n },\n defaultVariants: {\n state: 'viewing',\n },\n})\n\nexport const toolbarVariants = cva({\n base: 'flex items-center gap-1 border-b px-2 py-1',\n variants: {\n size: {\n sm: 'gap-0.5 px-1 py-0.5',\n md: 'gap-1 px-2 py-1',\n lg: 'gap-2 px-3 py-2',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const previewVariants = cva({\n base: 'prose prose-sm max-w-none p-3',\n variants: {\n size: {\n sm: 'prose-xs p-2',\n md: 'prose-sm p-3',\n lg: 'prose-base p-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createInlineEditor,\n editorVariants,\n toolbarVariants,\n previewVariants,\n type InlineEditorProps as CoreProps,\n} from '@refraction-ui/inline-editor'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// InlineEditor\n// ---------------------------------------------------------------------------\n\nexport interface InlineEditorProps {\n value: string\n onSave?: (value: string) => void\n onCancel?: () => void\n className?: string\n}\n\nexport function InlineEditor({\n value: initialValue,\n onSave,\n onCancel,\n className,\n}: InlineEditorProps) {\n const [isEditing, setIsEditing] = React.useState(false)\n const [editValue, setEditValue] = React.useState(initialValue)\n\n const apiRef = React.useRef<ReturnType<typeof createInlineEditor> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createInlineEditor({ value: initialValue, onSave, onCancel })\n }\n const api = apiRef.current\n\n const handleStartEditing = React.useCallback(() => {\n setIsEditing(true)\n setEditValue(initialValue)\n }, [initialValue])\n\n const handleCancel = React.useCallback(() => {\n setIsEditing(false)\n setEditValue(initialValue)\n onCancel?.()\n }, [initialValue, onCancel])\n\n const handleSave = React.useCallback(() => {\n setIsEditing(false)\n onSave?.(editValue)\n }, [editValue, onSave])\n\n const handleInsert = React.useCallback(\n (syntax: string) => {\n setEditValue((prev) => prev + syntax)\n },\n [],\n )\n\n // View mode\n if (!isEditing) {\n return React.createElement(\n 'div',\n {\n className: cn(editorVariants({ state: 'viewing' }), className),\n onClick: handleStartEditing,\n role: 'button',\n tabIndex: 0,\n 'aria-label': 'Click to edit',\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleStartEditing()\n }\n },\n },\n React.createElement('div', { className: previewVariants() }, editValue || initialValue),\n )\n }\n\n // Edit mode\n return React.createElement(\n 'div',\n {\n className: cn(editorVariants({ state: 'editing' }), className),\n },\n // Toolbar\n React.createElement(\n 'div',\n { className: toolbarVariants(), role: 'toolbar', 'aria-label': 'Formatting toolbar' },\n ...api.toolbarActions.map((action) =>\n React.createElement(\n 'button',\n {\n key: action.name,\n type: 'button',\n onClick: () => handleInsert(action.syntax),\n 'aria-label': action.name,\n 'data-action': action.name,\n },\n action.name,\n ),\n ),\n ),\n // Editor area: side-by-side textarea + preview\n React.createElement(\n 'div',\n { className: 'flex gap-2 p-2' },\n React.createElement('textarea', {\n value: editValue,\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => setEditValue(e.target.value),\n className: 'flex-1 min-h-[100px] resize-y border rounded p-2',\n 'aria-label': 'Editor content',\n }),\n React.createElement(\n 'div',\n {\n className: cn('flex-1', previewVariants()),\n 'aria-label': 'Preview',\n },\n editValue,\n ),\n ),\n // Action buttons\n React.createElement(\n 'div',\n { className: 'flex justify-end gap-2 p-2 border-t' },\n React.createElement(\n 'button',\n { type: 'button', onClick: handleCancel },\n 'Cancel',\n ),\n React.createElement(\n 'button',\n { type: 'button', onClick: handleSave },\n 'Save',\n ),\n ),\n )\n}\n\nInlineEditor.displayName = 'InlineEditor'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type InputType = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search'\n\nexport interface InputProps {\n type?: InputType\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n placeholder?: string\n 'aria-invalid'?: boolean\n}\n\nexport interface InputAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createInput(props: InputProps = {}): InputAPI {\n const {\n disabled = false,\n readOnly = false,\n required = false,\n 'aria-invalid': ariaInvalid,\n } = props\n\n const ariaProps: InputAPI['ariaProps'] = {}\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (ariaInvalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n if (ariaInvalid) {\n dataAttributes['data-invalid'] = ''\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n\nexport function getInputAriaProps(state: {\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n invalid?: boolean\n}): Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean } {\n const ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean } = {}\n\n if (state.disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (state.invalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (state.required) {\n ariaProps['aria-required'] = true\n }\n\n return ariaProps\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const inputVariants = cva({\n base: 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'h-8 text-xs',\n default: 'h-9',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createInput,\n inputVariants,\n} from '@refraction-ui/input'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Input component — renders a styled input with size support.\n *\n * Uses the headless @refraction-ui/input core for state, ARIA, and data attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ type = 'text', size, className, disabled, readOnly, required, 'aria-invalid': ariaInvalid, ...props }, ref) => {\n const api = createInput({\n type: type as import('@refraction-ui/input').InputType,\n disabled,\n readOnly,\n required,\n 'aria-invalid': ariaInvalid === true ? true : undefined,\n })\n\n const classes = cn(inputVariants({ size }), className)\n\n return (\n <input\n ref={ref}\n type={type}\n className={classes}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nInput.displayName = 'Input'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type InputGroupOrientation = 'horizontal' | 'vertical'\n\nexport interface InputGroupProps {\n orientation?: InputGroupOrientation\n id?: string\n 'aria-label'?: string\n 'aria-labelledby'?: string\n}\n\nexport interface InputGroupAPI {\n /** ARIA attributes to spread on the group container */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createInputGroup(props: InputGroupProps = {}): InputGroupAPI {\n const { orientation = 'horizontal' } = props\n const id = props.id ?? generateId('rfr-input-group')\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'group',\n }\n\n if (props['aria-label']) {\n ariaProps['aria-label'] = props['aria-label']\n }\n if (props['aria-labelledby']) {\n ariaProps['aria-labelledby'] = props['aria-labelledby']\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-orientation': orientation,\n id,\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const inputGroupTokens: TokenContract = {\n name: 'input-group',\n tokens: {\n bg: { variable: '--rfr-input-group-bg', fallback: 'hsl(var(--background))' },\n border: { variable: '--rfr-input-group-border', fallback: 'hsl(var(--border))' },\n radius: { variable: '--rfr-input-group-radius', fallback: 'var(--radius)' },\n },\n}\n\nexport const inputGroupVariants = cva({\n base: 'flex items-stretch [&>*:not(:first-child):not(:last-child)]:rounded-none',\n variants: {\n orientation: {\n horizontal: 'flex-row [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none',\n vertical: 'flex-col [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const inputGroupAddonVariants = cva({\n base: 'flex items-center justify-center border bg-muted px-3 text-sm text-muted-foreground',\n variants: {\n orientation: {\n horizontal: 'border-y border-x first:border-r-0 last:border-l-0',\n vertical: 'border-x border-y first:border-b-0 last:border-t-0',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const inputGroupButtonVariants = cva({\n base: 'relative inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n","import * as React from 'react'\nimport {\n createInputGroup,\n inputGroupVariants,\n inputGroupAddonVariants,\n inputGroupButtonVariants,\n type InputGroupOrientation,\n} from '@refraction-ui/input-group'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InputGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroup — flex container that visually groups inputs, addons, and buttons.\n * Handles border-radius clipping on first/last children.\n */\nexport const InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n const api = createInputGroup({\n orientation,\n id: props.id,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n })\n\n return (\n <div\n ref={ref}\n className={cn(inputGroupVariants({ orientation }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nInputGroup.displayName = 'InputGroup'\n\nexport interface InputGroupAddonProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroupAddon — decorative text or icon addon (e.g., \"$\", \"@\", icons).\n */\nexport const InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(inputGroupAddonVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nInputGroupAddon.displayName = 'InputGroupAddon'\n\nexport interface InputGroupTextProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/**\n * InputGroupText — inline text label within an input group.\n */\nexport const InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn('flex items-center px-3 text-sm text-muted-foreground', className)}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nInputGroupText.displayName = 'InputGroupText'\n\nexport interface InputGroupButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n orientation?: InputGroupOrientation\n}\n\n/**\n * InputGroupButton — a button styled to sit flush inside an input group.\n */\nexport const InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ orientation = 'horizontal', className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type={props.type ?? 'button'}\n className={cn(inputGroupButtonVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </button>\n )\n },\n)\n\nInputGroupButton.displayName = 'InputGroupButton'\n","export interface StorageAdapter {\n get(key: string): string | null\n set(key: string, value: string): void\n}\n\nexport interface InstallPromptProps {\n /** Delay in ms before showing prompt. Default: 3000 */\n delay?: number\n /** Key used to persist dismissed state. Default: 'rfr-install-dismissed' */\n storageKey?: string\n}\n\nexport interface InstallPromptState {\n canShow: boolean\n isDismissed: boolean\n}\n\nexport interface InstallPromptAPI {\n state: InstallPromptState\n /** Mark the prompt as showable (call after delay + event fire) */\n show(): void\n /** Dismiss and persist */\n dismiss(): void\n /** Trigger the browser install prompt */\n install(promptEvent?: { prompt(): void }): void\n /** ARIA attributes for the banner */\n ariaProps: Record<string, string>\n}\n\nexport function createInstallPrompt(\n props: InstallPromptProps = {},\n storage?: StorageAdapter,\n): InstallPromptAPI {\n const { storageKey = 'rfr-install-dismissed' } = props\n\n const dismissed = storage?.get(storageKey) === 'true'\n\n const state: InstallPromptState = {\n canShow: false,\n isDismissed: dismissed,\n }\n\n return {\n state,\n\n show() {\n if (!state.isDismissed) {\n state.canShow = true\n }\n },\n\n dismiss() {\n state.canShow = false\n state.isDismissed = true\n storage?.set(storageKey, 'true')\n },\n\n install(promptEvent?: { prompt(): void }) {\n promptEvent?.prompt()\n state.canShow = false\n },\n\n ariaProps: {\n role: 'banner',\n 'aria-label': 'Install application',\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const installPromptVariants = cva({\n base: 'fixed bottom-0 left-0 right-0 z-50 flex items-center justify-between gap-4 border-t bg-background px-4 py-3 shadow-lg',\n})\n","import * as React from 'react'\nimport {\n createInstallPrompt,\n installPromptVariants,\n type InstallPromptProps as CoreInstallPromptProps,\n type StorageAdapter,\n} from '@refraction-ui/install-prompt'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface InstallPromptProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Delay in ms before showing. Default: 3000 */\n delay?: number\n /** Storage key for dismissed state. Default: 'rfr-install-dismissed' */\n storageKey?: string\n /** Install button label. Default: 'Install' */\n installLabel?: string\n /** Dismiss button label. Default: 'Dismiss' */\n dismissLabel?: string\n /** Message text. Default: 'Install this app for a better experience' */\n message?: string\n}\n\nfunction createLocalStorage(): StorageAdapter {\n return {\n get(key) {\n try {\n return localStorage.getItem(key)\n } catch {\n return null\n }\n },\n set(key, value) {\n try {\n localStorage.setItem(key, value)\n } catch {\n // Ignore storage errors in SSR or incognito\n }\n },\n }\n}\n\n/**\n * InstallPrompt component — renders a bottom banner prompting PWA installation.\n *\n * Uses the headless @refraction-ui/install-prompt core for state and ARIA attributes.\n * Listens for the `beforeinstallprompt` browser event.\n */\nexport const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps>(\n (\n {\n delay = 3000,\n storageKey,\n installLabel = 'Install',\n dismissLabel = 'Dismiss',\n message = 'Install this app for a better experience',\n className,\n ...props\n },\n ref,\n ) => {\n const storageRef = React.useRef<StorageAdapter | undefined>(undefined)\n if (typeof window !== 'undefined' && !storageRef.current) {\n storageRef.current = createLocalStorage()\n }\n\n const api = createInstallPrompt({ delay, storageKey }, storageRef.current)\n const [visible, setVisible] = React.useState(false)\n const promptEventRef = React.useRef<{ prompt(): void } | null>(null)\n\n React.useEffect(() => {\n if (api.state.isDismissed) return\n\n const handleBeforeInstall = (e: Event) => {\n e.preventDefault()\n promptEventRef.current = e as unknown as { prompt(): void }\n }\n\n window.addEventListener('beforeinstallprompt', handleBeforeInstall)\n\n const timer = setTimeout(() => {\n if (promptEventRef.current && !api.state.isDismissed) {\n api.show()\n setVisible(true)\n }\n }, delay)\n\n return () => {\n window.removeEventListener('beforeinstallprompt', handleBeforeInstall)\n clearTimeout(timer)\n }\n }, [delay, api])\n\n if (!visible) return null\n\n const classes = cn(installPromptVariants(), className)\n\n return (\n <div ref={ref} className={classes} {...api.ariaProps} {...props}>\n <span>{message}</span>\n <div>\n <button\n type=\"button\"\n onClick={() => {\n api.install(promptEventRef.current ?? undefined)\n setVisible(false)\n }}\n >\n {installLabel}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n api.dismiss()\n setVisible(false)\n }}\n >\n {dismissLabel}\n </button>\n </div>\n </div>\n )\n },\n)\n\nInstallPrompt.displayName = 'InstallPrompt'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ComponentDef {\n type: string\n pattern: RegExp\n props: Record<string, string>\n}\n\nexport interface MarkdownRendererProps {\n content: string\n components?: Record<string, ComponentDef>\n linkResolver?: (url: string) => string\n}\n\nexport interface MarkdownRendererAPI {\n /** Rendered HTML string */\n html: string\n /** Extracted component slots from custom component definitions */\n components: Array<{ name: string; props: Record<string, string> }>\n /** ARIA attributes for the rendered content container */\n ariaProps: Partial<AccessibilityProps>\n}\n\n/**\n * Escape HTML entities to prevent injection in non-code contexts.\n */\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\n/**\n * Parse inline markdown elements: bold, italic, code, links.\n */\nfunction parseInline(text: string, linkResolver?: (url: string) => string): string {\n let result = escapeHtml(text)\n\n // Inline code (backticks) — must come before bold/italic to avoid conflicts\n result = result.replace(/`([^`]+)`/g, '<code>$1</code>')\n\n // Bold (**text** or __text__)\n result = result.replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>')\n result = result.replace(/__([^_]+)__/g, '<strong>$1</strong>')\n\n // Italic (*text* or _text_)\n result = result.replace(/\\*([^*]+)\\*/g, '<em>$1</em>')\n result = result.replace(/_([^_]+)_/g, '<em>$1</em>')\n\n // Links [text](url) — reject javascript: URLs for XSS safety\n result = result.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_match, text, url) => {\n if (/^\\s*javascript\\s*:/i.test(url)) {\n return text\n }\n const resolvedUrl = linkResolver ? linkResolver(url) : url\n return `<a href=\"${resolvedUrl}\">${text}</a>`\n })\n\n return result\n}\n\n/**\n * Parse a full markdown string into HTML.\n * Handles: headings, bold, italic, links, code (inline & block),\n * lists (unordered & ordered), blockquotes, horizontal rules.\n */\nfunction parseMarkdown(content: string, linkResolver?: (url: string) => string): string {\n const lines = content.split('\\n')\n const outputLines: string[] = []\n let inCodeBlock = false\n let codeBlockContent: string[] = []\n let codeBlockLang = ''\n let inList: 'ul' | 'ol' | null = null\n let inBlockquote = false\n\n function closeList() {\n if (inList) {\n outputLines.push(inList === 'ul' ? '</ul>' : '</ol>')\n inList = null\n }\n }\n\n function closeBlockquote() {\n if (inBlockquote) {\n outputLines.push('</blockquote>')\n inBlockquote = false\n }\n }\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n\n // Code blocks (fenced with ```)\n if (line.trimStart().startsWith('```')) {\n if (inCodeBlock) {\n // Closing code block\n outputLines.push(`<pre><code${codeBlockLang ? ` class=\"language-${escapeHtml(codeBlockLang)}\"` : ''}>${escapeHtml(codeBlockContent.join('\\n'))}</code></pre>`)\n codeBlockContent = []\n codeBlockLang = ''\n inCodeBlock = false\n } else {\n // Opening code block\n closeList()\n closeBlockquote()\n inCodeBlock = true\n codeBlockLang = line.trimStart().slice(3).trim()\n }\n continue\n }\n\n if (inCodeBlock) {\n codeBlockContent.push(line)\n continue\n }\n\n // Horizontal rule (--- or ___ or ***)\n if (/^(\\s*[-*_]\\s*){3,}$/.test(line)) {\n closeList()\n closeBlockquote()\n outputLines.push('<hr />')\n continue\n }\n\n // Headings (# through ######)\n const headingMatch = line.match(/^(#{1,6})\\s+(.+)$/)\n if (headingMatch) {\n closeList()\n closeBlockquote()\n const level = headingMatch[1].length\n const text = parseInline(headingMatch[2], linkResolver)\n outputLines.push(`<h${level}>${text}</h${level}>`)\n continue\n }\n\n // Blockquotes (> text)\n const blockquoteMatch = line.match(/^>\\s?(.*)$/)\n if (blockquoteMatch) {\n closeList()\n if (!inBlockquote) {\n inBlockquote = true\n outputLines.push('<blockquote>')\n }\n const text = blockquoteMatch[1].trim()\n if (text) {\n outputLines.push(`<p>${parseInline(text, linkResolver)}</p>`)\n }\n continue\n } else if (inBlockquote) {\n closeBlockquote()\n }\n\n // Unordered list items (- or * at start)\n const ulMatch = line.match(/^[\\s]*[-*+]\\s+(.+)$/)\n if (ulMatch) {\n closeBlockquote()\n if (inList !== 'ul') {\n closeList()\n inList = 'ul'\n outputLines.push('<ul>')\n }\n outputLines.push(`<li>${parseInline(ulMatch[1], linkResolver)}</li>`)\n continue\n }\n\n // Ordered list items (1. 2. etc.)\n const olMatch = line.match(/^[\\s]*\\d+\\.\\s+(.+)$/)\n if (olMatch) {\n closeBlockquote()\n if (inList !== 'ol') {\n closeList()\n inList = 'ol'\n outputLines.push('<ol>')\n }\n outputLines.push(`<li>${parseInline(olMatch[1], linkResolver)}</li>`)\n continue\n }\n\n // If we were in a list and hit a non-list line, close the list\n if (inList) {\n closeList()\n }\n\n // Empty line\n if (line.trim() === '') {\n continue\n }\n\n // Regular paragraph\n outputLines.push(`<p>${parseInline(line, linkResolver)}</p>`)\n }\n\n // Close any open blocks\n if (inCodeBlock) {\n outputLines.push(`<pre><code${codeBlockLang ? ` class=\"language-${escapeHtml(codeBlockLang)}\"` : ''}>${escapeHtml(codeBlockContent.join('\\n'))}</code></pre>`)\n }\n closeList()\n closeBlockquote()\n\n return outputLines.join('\\n')\n}\n\n/**\n * Extract custom component slots from content based on component definitions.\n */\nfunction extractComponents(\n content: string,\n components?: Record<string, ComponentDef>,\n): Array<{ name: string; props: Record<string, string> }> {\n if (!components) return []\n\n const extracted: Array<{ name: string; props: Record<string, string> }> = []\n\n for (const [name, def] of Object.entries(components)) {\n const matches = Array.from(content.matchAll(def.pattern))\n matches.forEach(() => {\n extracted.push({\n name,\n props: { ...def.props },\n })\n })\n }\n\n return extracted\n}\n\n/**\n * Create a headless markdown renderer.\n *\n * Uses the headless pattern — returns an API object with rendered HTML,\n * extracted component slots, and ARIA props for the container.\n */\nexport function createMarkdownRenderer(props: MarkdownRendererProps): MarkdownRendererAPI {\n const { content, components, linkResolver } = props\n\n const html = parseMarkdown(content, linkResolver)\n const extractedComponents = extractComponents(content, components)\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'document',\n 'aria-label': 'Rendered markdown content',\n }\n\n return {\n html,\n components: extractedComponents,\n ariaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const markdownRendererTokens: TokenContract = {\n name: 'markdown-renderer',\n tokens: {\n bg: { variable: '--rfr-markdown-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-markdown-fg', fallback: 'hsl(var(--foreground))' },\n codeBg: { variable: '--rfr-markdown-code-bg', fallback: 'hsl(var(--muted))' },\n linkColor: { variable: '--rfr-markdown-link', fallback: 'hsl(var(--primary))' },\n borderColor: { variable: '--rfr-markdown-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const proseVariants = cva({\n base: 'prose max-w-none text-foreground leading-relaxed',\n variants: {\n size: {\n sm: 'prose-sm text-sm',\n default: 'prose-base text-base',\n lg: 'prose-lg text-lg',\n },\n theme: {\n light: 'bg-white text-gray-900',\n dark: 'bg-gray-900 text-gray-100',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createMarkdownRenderer,\n proseVariants,\n type MarkdownRendererProps as CoreProps,\n type ComponentDef,\n} from '@refraction-ui/markdown-renderer'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { ComponentDef }\n\nexport interface MarkdownRendererProps {\n content: string\n components?: Record<string, ComponentDef>\n linkResolver?: (url: string) => string\n className?: string\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Sanitize HTML to prevent XSS attacks.\n * Strips script tags, on* event attributes, and javascript: URLs.\n */\nfunction sanitizeHtml(html: string): string {\n let sanitized = html\n\n // Remove <script> tags and their contents\n sanitized = sanitized.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '')\n\n // Remove standalone <script> opening/closing tags\n sanitized = sanitized.replace(/<\\/?script[^>]*>/gi, '')\n\n // Remove on* event handler attributes\n sanitized = sanitized.replace(/\\s+on\\w+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s>]+)/gi, '')\n\n // Remove javascript: URLs from href and src attributes\n sanitized = sanitized.replace(/(href|src)\\s*=\\s*[\"']?\\s*javascript\\s*:[^\"'>]*/gi, '$1=\"\"')\n\n return sanitized\n}\n\n/**\n * MarkdownRenderer component — renders markdown content as sanitized HTML.\n *\n * Uses the headless @refraction-ui/markdown-renderer core for parsing.\n * XSS sanitization is applied before rendering via dangerouslySetInnerHTML.\n */\nexport const MarkdownRenderer = React.forwardRef<HTMLDivElement, MarkdownRendererProps>(\n ({ content, components, linkResolver, className, size }, ref) => {\n const coreProps: CoreProps = { content, components, linkResolver }\n const api = createMarkdownRenderer(coreProps)\n const classes = cn(proseVariants({ size }), className)\n const sanitizedHtml = sanitizeHtml(api.html)\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\n />\n )\n },\n)\n\nMarkdownRenderer.displayName = 'MarkdownRenderer'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface MobileNavProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n id?: string\n}\n\nexport interface MobileNavState {\n open: boolean\n}\n\nexport interface MobileNavAPI {\n /** Current state */\n state: MobileNavState\n /** ARIA and interaction props for the trigger button */\n triggerProps: Partial<AccessibilityProps> & Record<string, string | boolean | undefined>\n /** ARIA and data attributes for the content panel */\n contentProps: Partial<AccessibilityProps> & Record<string, string | boolean | undefined>\n /** Toggle open state */\n toggle: () => void\n /** Open the nav */\n open: () => void\n /** Close the nav */\n close: () => void\n /** Keyboard handlers (Escape closes) */\n keyboardHandlers: KeyboardHandlerMap\n}\n\nexport function createMobileNav(props: MobileNavProps = {}): MobileNavAPI {\n const isOpen = props.open ?? false\n const id = props.id ?? generateId('rfr-mobile-nav')\n const contentId = `${id}-content`\n\n const state: MobileNavState = {\n open: isOpen,\n }\n\n const triggerProps: MobileNavAPI['triggerProps'] = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-label': 'Toggle menu',\n }\n\n const contentProps: MobileNavAPI['contentProps'] = {\n id: contentId,\n role: 'menu',\n 'data-state': isOpen ? 'open' : 'closed',\n }\n\n function setOpen(value: boolean) {\n state.open = value\n props.onOpenChange?.(value)\n }\n\n const toggle = () => setOpen(!state.open)\n const open = () => setOpen(true)\n const close = () => setOpen(false)\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => close(),\n }\n\n return {\n state,\n triggerProps,\n contentProps,\n toggle,\n open,\n close,\n keyboardHandlers,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const mobileNavTokens: TokenContract = {\n name: 'mobile-nav',\n tokens: {\n bg: { variable: '--rfr-mobile-nav-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-mobile-nav-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-mobile-nav-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const mobileNavVariants = cva({\n base: 'relative',\n variants: {},\n})\n\nexport const mobileNavContentVariants = cva({\n base: 'w-full overflow-hidden border-b bg-background transition-all duration-200',\n variants: {\n state: {\n open: 'max-h-screen opacity-100 animate-in slide-in-from-top',\n closed: 'max-h-0 opacity-0 pointer-events-none animate-out slide-out-to-top',\n },\n },\n defaultVariants: {\n state: 'closed',\n },\n})\n\nexport const mobileNavTriggerVariants = cva({\n base: 'inline-flex items-center justify-center rounded-md p-2 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n variants: {},\n})\n\nexport const mobileNavLinkVariants = cva({\n base: 'block w-full px-4 py-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2',\n variants: {},\n})\n","import * as React from 'react'\nimport {\n createMobileNav,\n mobileNavVariants,\n mobileNavContentVariants,\n mobileNavTriggerVariants,\n mobileNavLinkVariants,\n} from '@refraction-ui/mobile-nav'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface MobileNavContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n contentId: string\n}\n\nconst MobileNavContext = React.createContext<MobileNavContextValue | null>(null)\n\nfunction useMobileNavContext(): MobileNavContextValue {\n const ctx = React.useContext(MobileNavContext)\n if (!ctx) {\n throw new Error('MobileNav compound components must be used within <MobileNav>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* MobileNav (root) */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavProps extends React.HTMLAttributes<HTMLElement> {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n defaultOpen?: boolean\n}\n\n/**\n * MobileNav — root wrapper that manages open/closed state via context.\n * Supports both controlled (open + onOpenChange) and uncontrolled (defaultOpen) usage.\n */\nexport const MobileNav = React.forwardRef<HTMLElement, MobileNavProps>(\n ({ open: controlledOpen, onOpenChange, defaultOpen = false, className, children, ...props }, ref) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = createMobileNav({ open, onOpenChange: setOpen, id: props.id })\n\n const handleKeyDown = React.useMemo(\n () => createKeyboardHandler(api.keyboardHandlers),\n [open],\n )\n\n const contextValue = React.useMemo<MobileNavContextValue>(\n () => ({ open, setOpen, contentId: api.contentProps.id as string }),\n [open, setOpen, api.contentProps.id],\n )\n\n return (\n <MobileNavContext.Provider value={contextValue}>\n <nav\n ref={ref}\n className={cn(mobileNavVariants(), className)}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler}\n {...props}\n >\n {children}\n </nav>\n </MobileNavContext.Provider>\n )\n },\n)\n\nMobileNav.displayName = 'MobileNav'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\n/**\n * MobileNavTrigger — hamburger button that toggles the mobile nav.\n */\nexport const MobileNavTrigger = React.forwardRef<HTMLButtonElement, MobileNavTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const { open, setOpen, contentId } = useMobileNavContext()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={open}\n aria-controls={contentId}\n aria-label=\"Toggle menu\"\n className={cn(mobileNavTriggerVariants(), className)}\n onClick={() => setOpen(!open)}\n {...props}\n >\n {children ?? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {open ? (\n <>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </>\n ) : (\n <>\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\" />\n </>\n )}\n </svg>\n )}\n </button>\n )\n },\n)\n\nMobileNavTrigger.displayName = 'MobileNavTrigger'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavContent */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * MobileNavContent — the collapsible dropdown panel that holds nav links.\n */\nexport const MobileNavContent = React.forwardRef<HTMLDivElement, MobileNavContentProps>(\n ({ className, children, ...props }, ref) => {\n const { open, contentId } = useMobileNavContext()\n const state = open ? 'open' : 'closed'\n\n return (\n <div\n ref={ref}\n id={contentId}\n role=\"menu\"\n data-state={state}\n className={cn(mobileNavContentVariants({ state }), className)}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nMobileNavContent.displayName = 'MobileNavContent'\n\n/* ------------------------------------------------------------------ */\n/* MobileNavLink */\n/* ------------------------------------------------------------------ */\n\nexport interface MobileNavLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {}\n\n/**\n * MobileNavLink — a styled link inside the mobile nav dropdown.\n */\nexport const MobileNavLink = React.forwardRef<HTMLAnchorElement, MobileNavLinkProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n role=\"menuitem\"\n className={cn(mobileNavLinkVariants(), className)}\n {...props}\n >\n {children}\n </a>\n )\n },\n)\n\nMobileNavLink.displayName = 'MobileNavLink'\n","export interface NavLink {\n label: string\n href: string\n icon?: string\n}\n\nexport type NavbarVariant = 'solid' | 'blur' | 'gradient' | 'transparent'\n\nexport interface NavbarProps {\n links?: NavLink[]\n currentPath?: string\n variant?: NavbarVariant\n}\n\nexport interface NavbarAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n linkAriaProps: (href: string) => Record<string, string>\n}\n\nexport function createNavbar(props: NavbarProps = {}): NavbarAPI {\n const { currentPath = '/' } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n function linkAriaProps(href: string): Record<string, string> {\n const active = isActive(href)\n return active ? { 'aria-current': 'page' } : {}\n }\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Main navigation' },\n isActive,\n linkAriaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const navbarVariants = cva({\n base: 'sticky top-0 z-40 w-full border-b',\n variants: {\n variant: {\n solid: 'bg-background',\n blur: 'bg-background/80 backdrop-blur-md',\n gradient: 'bg-gradient-to-b from-background to-background/80 backdrop-blur-sm',\n transparent: 'bg-transparent border-transparent',\n },\n },\n defaultVariants: {\n variant: 'blur',\n },\n})\n\nexport const navLinkVariants = cva({\n base: 'text-sm font-medium transition-colors hover:text-foreground',\n variants: {\n active: {\n true: 'text-foreground',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createNavbar,\n navbarVariants,\n navLinkVariants,\n type NavLink,\n type NavbarVariant,\n} from '@refraction-ui/navbar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface NavbarProps extends React.HTMLAttributes<HTMLElement> {\n /** Navigation links */\n links?: NavLink[]\n /** Current pathname for active state */\n currentPath?: string\n /** Visual variant */\n variant?: NavbarVariant\n /** Logo or brand slot */\n logo?: React.ReactNode\n /** Right-side actions slot */\n actions?: React.ReactNode\n}\n\n/**\n * Navbar component — renders a sticky header with navigation links.\n *\n * Uses the headless @refraction-ui/navbar core for state and ARIA attributes.\n * Hidden on mobile (links use md:flex).\n */\nexport const Navbar = React.forwardRef<HTMLElement, NavbarProps>(\n (\n {\n links = [],\n currentPath,\n variant,\n logo,\n actions,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createNavbar({ links, currentPath, variant })\n const classes = cn(navbarVariants({ variant }), className)\n\n return (\n <header ref={ref} className={classes} {...props}>\n <nav\n className=\"mx-auto flex h-14 max-w-7xl items-center justify-between px-4\"\n {...api.ariaProps}\n >\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n <ul className=\"hidden items-center gap-6 md:flex\">\n {links.map((link) => (\n <li key={link.href}>\n <a\n href={link.href}\n className={navLinkVariants({\n active: api.isActive(link.href) ? 'true' : 'false',\n })}\n {...api.linkAriaProps(link.href)}\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </nav>\n </header>\n )\n },\n)\n\nNavbar.displayName = 'Navbar'\n","import type { AccessibilityProps, Side, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n}\n\nexport interface PopoverAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: Partial<AccessibilityProps> & {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'dialog'\n }\n /** Props to spread on the content element */\n contentProps: {\n role: 'dialog'\n id: string\n }\n /** Resolved placement */\n placement: Side\n /** Open the popover */\n open: () => void\n /** Close the popover */\n close: () => void\n /** Toggle the popover */\n toggle: () => void\n /** Keyboard handler map (Escape to close) */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createPopover(props: PopoverProps = {}): PopoverAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n } = props\n\n const contentId = generateId('rfr-popover')\n\n let isOpen = controlledOpen ?? defaultOpen\n\n const state = { open: isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.open = value\n onOpenChange?.(value)\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog' as const,\n }\n\n const contentProps = {\n role: 'dialog' as const,\n id: contentId,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n placement,\n open: () => setOpen(true),\n close: () => setOpen(false),\n toggle: () => setOpen(!isOpen),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const popoverContentVariants = cva({\n base: 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n variants: {\n side: {\n top: 'animate-slide-down-fade',\n right: 'animate-slide-left-fade',\n bottom: 'animate-slide-up-fade',\n left: 'animate-slide-right-fade',\n },\n },\n defaultVariants: {\n side: 'bottom',\n },\n})\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport {\n createPopover,\n popoverContentVariants,\n type PopoverAPI,\n} from '@refraction-ui/popover'\nimport type { Side } from '@refraction-ui/shared'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface PopoverContextValue {\n api: PopoverAPI\n open: boolean\n setOpen: (value: boolean) => void\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null)\n\nfunction usePopoverContext(): PopoverContextValue {\n const ctx = React.useContext(PopoverContext)\n if (!ctx) {\n throw new Error('Popover compound components must be used within <Popover>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* Popover (root provider) */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n children: React.ReactNode\n}\n\nexport function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleOpenChange = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = React.useMemo(\n () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),\n [isOpen, handleOpenChange, placement],\n )\n\n const ctx = React.useMemo<PopoverContextValue>(\n () => ({ api, open: isOpen, setOpen: handleOpenChange }),\n [api, isOpen, handleOpenChange],\n )\n\n return React.createElement(PopoverContext.Provider, { value: ctx }, children)\n}\n\nPopover.displayName = 'Popover'\n\n/* ------------------------------------------------------------------ */\n/* PopoverTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ onClick, children, ...props }, ref) => {\n const { api, setOpen, open } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(!open)\n onClick?.(e)\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={api.triggerProps['aria-expanded']}\n aria-controls={api.triggerProps['aria-controls']}\n aria-haspopup={api.triggerProps['aria-haspopup']}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n },\n)\n\nPopoverTrigger.displayName = 'PopoverTrigger'\n\n/* ------------------------------------------------------------------ */\n/* PopoverContent */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: Side\n}\n\nexport const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n ({ side, className, children, onKeyDown, ...props }, ref) => {\n const { api, open, setOpen } = usePopoverContext()\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n setOpen(false)\n }\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = (\n <div\n ref={ref}\n role={api.contentProps.role}\n id={api.contentProps.id}\n className={cn(popoverContentVariants({ side: side ?? api.placement }), className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n )\n\n if (typeof document !== 'undefined') {\n return createPortal(content, document.body)\n }\n\n return content\n },\n)\n\nPopoverContent.displayName = 'PopoverContent'\n\n/* ------------------------------------------------------------------ */\n/* PopoverClose */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverClose = React.forwardRef<HTMLButtonElement, PopoverCloseProps>(\n ({ onClick, children, ...props }, ref) => {\n const { setOpen } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(false)\n onClick?.(e)\n }\n\n return (\n <button ref={ref} type=\"button\" onClick={handleClick} {...props}>\n {children}\n </button>\n )\n },\n)\n\nPopoverClose.displayName = 'PopoverClose'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface SearchBarProps {\n value?: string\n onValueChange?: (value: string) => void\n onSearch?: (value: string) => void\n debounceMs?: number\n placeholder?: string\n loading?: boolean\n}\n\nexport interface SearchBarAPI {\n /** Current state */\n state: { value: string; isSearching: boolean }\n /** Props to spread on the input element */\n inputProps: {\n role: 'combobox'\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-autocomplete': 'list'\n }\n /** Props to spread on the results list element */\n listProps: {\n role: 'listbox'\n id: string\n }\n /** Set the search value */\n setValue: (value: string) => void\n /** Clear the search value */\n clear: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createSearchBar(props: SearchBarProps = {}): SearchBarAPI {\n const {\n value: initialValue = '',\n onValueChange,\n onSearch,\n debounceMs = 300,\n placeholder: _placeholder,\n loading = false,\n } = props\n\n const listId = generateId('rfr-search-list')\n\n let currentValue = initialValue\n let isSearching = loading\n let debounceTimer: ReturnType<typeof setTimeout> | undefined\n\n const state = { value: currentValue, isSearching }\n\n function setValue(value: string) {\n currentValue = value\n state.value = value\n onValueChange?.(value)\n\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n\n if (value.length > 0) {\n isSearching = true\n state.isSearching = true\n debounceTimer = setTimeout(() => {\n onSearch?.(value)\n isSearching = false\n state.isSearching = false\n }, debounceMs)\n } else {\n isSearching = false\n state.isSearching = false\n }\n }\n\n function clear() {\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n currentValue = ''\n state.value = ''\n isSearching = false\n state.isSearching = false\n onValueChange?.('')\n }\n\n const inputProps = {\n role: 'combobox' as const,\n 'aria-expanded': currentValue.length > 0,\n 'aria-controls': listId,\n 'aria-autocomplete': 'list' as const,\n }\n\n const listProps = {\n role: 'listbox' as const,\n id: listId,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowDown]: () => {\n // Focus first result - signaled via handler\n },\n [Keys.Escape]: () => {\n clear()\n },\n [Keys.Enter]: () => {\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer)\n }\n onSearch?.(currentValue)\n isSearching = false\n state.isSearching = false\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n inputProps,\n listProps,\n setValue,\n clear,\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const searchBarVariants = cva({\n base: 'relative flex items-center w-full rounded-md border bg-background text-foreground',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2',\n md: 'h-10 text-base px-3',\n lg: 'h-12 text-lg px-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const searchResultVariants = cva({\n base: 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-hidden',\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createSearchBar,\n searchBarVariants,\n searchResultVariants,\n type SearchBarAPI,\n} from '@refraction-ui/search-bar'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface SearchBarContextValue {\n api: SearchBarAPI\n value: string\n isSearching: boolean\n setValue: (value: string) => void\n clear: () => void\n}\n\nconst SearchBarContext = React.createContext<SearchBarContextValue | null>(null)\n\nfunction useSearchBarContext(): SearchBarContextValue {\n const ctx = React.useContext(SearchBarContext)\n if (!ctx) {\n throw new Error('SearchBar compound components must be used within <SearchBar>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* SearchBar (root provider + input) */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchBarProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n onSearch?: (value: string) => void\n debounceMs?: number\n loading?: boolean\n children?: React.ReactNode\n}\n\nexport function SearchBar({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n onSearch,\n debounceMs = 300,\n loading = false,\n placeholder,\n className,\n children,\n ...inputProps\n}: SearchBarProps) {\n const [internalValue, setInternalValue] = React.useState(controlledValue ?? defaultValue)\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const debounceRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n const handleValueChange = React.useCallback(\n (val: string) => {\n if (!isControlled) {\n setInternalValue(val)\n }\n onValueChange?.(val)\n },\n [isControlled, onValueChange],\n )\n\n const [isSearching, setIsSearching] = React.useState(loading)\n\n const handleSearch = React.useCallback(\n (val: string) => {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n if (val.length > 0) {\n setIsSearching(true)\n debounceRef.current = setTimeout(() => {\n onSearch?.(val)\n setIsSearching(false)\n }, debounceMs)\n } else {\n setIsSearching(false)\n }\n },\n [onSearch, debounceMs],\n )\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value\n handleValueChange(val)\n handleSearch(val)\n },\n [handleValueChange, handleSearch],\n )\n\n const clear = React.useCallback(() => {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n handleValueChange('')\n setIsSearching(false)\n }, [handleValueChange])\n\n const api = React.useMemo(\n () =>\n createSearchBar({\n value: currentValue,\n onValueChange: handleValueChange,\n onSearch,\n debounceMs,\n placeholder,\n loading,\n }),\n [currentValue, handleValueChange, onSearch, debounceMs, placeholder, loading],\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape') {\n clear()\n } else if (e.key === 'Enter') {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n onSearch?.(currentValue)\n setIsSearching(false)\n }\n },\n [clear, onSearch, currentValue],\n )\n\n const ctx = React.useMemo<SearchBarContextValue>(\n () => ({ api, value: currentValue, isSearching, setValue: handleValueChange, clear }),\n [api, currentValue, isSearching, handleValueChange, clear],\n )\n\n return React.createElement(\n SearchBarContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { className: cn(searchBarVariants(), className) },\n React.createElement('span', { className: 'rfr-search-icon', 'aria-hidden': 'true' }, '\\u{1F50D}'),\n React.createElement('input', {\n ...inputProps,\n role: api.inputProps.role,\n 'aria-expanded': api.inputProps['aria-expanded'],\n 'aria-controls': api.inputProps['aria-controls'],\n 'aria-autocomplete': api.inputProps['aria-autocomplete'],\n value: currentValue,\n placeholder,\n onChange: handleChange,\n onKeyDown: handleKeyDown,\n className: 'rfr-search-input flex-1 bg-transparent outline-none',\n }),\n isSearching &&\n React.createElement('span', { className: 'rfr-search-spinner', 'aria-label': 'Loading' }, '\\u{23F3}'),\n currentValue.length > 0 &&\n !isSearching &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'rfr-search-clear',\n onClick: clear,\n 'aria-label': 'Clear search',\n },\n '\\u{2715}',\n ),\n ),\n children,\n )\n}\n\nSearchBar.displayName = 'SearchBar'\n\n/* ------------------------------------------------------------------ */\n/* SearchResults (dropdown list) */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchResultsProps extends React.HTMLAttributes<HTMLUListElement> {}\n\nexport const SearchResults = React.forwardRef<HTMLUListElement, SearchResultsProps>(\n ({ className, children, ...props }, ref) => {\n const { api, value } = useSearchBarContext()\n\n if (value.length === 0) return null\n\n return React.createElement(\n 'ul',\n {\n ref,\n role: api.listProps.role,\n id: api.listProps.id,\n className: cn(searchResultVariants(), className),\n ...props,\n },\n children,\n )\n },\n)\n\nSearchResults.displayName = 'SearchResults'\n\n/* ------------------------------------------------------------------ */\n/* SearchResultItem */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchResultItemProps extends React.LiHTMLAttributes<HTMLLIElement> {}\n\nexport const SearchResultItem = React.forwardRef<HTMLLIElement, SearchResultItemProps>(\n ({ className, children, ...props }, ref) => {\n return React.createElement(\n 'li',\n {\n ref,\n role: 'option',\n className: cn('px-3 py-2 cursor-pointer hover:bg-accent', className),\n ...props,\n },\n children,\n )\n },\n)\n\nSearchResultItem.displayName = 'SearchResultItem'\n","export interface SidebarItem {\n label: string\n href: string\n icon?: string\n /** Roles required to see this item */\n roles?: string[]\n /** Nested items */\n children?: SidebarItem[]\n}\n\nexport interface SidebarSection {\n title?: string\n items: SidebarItem[]\n}\n\nexport interface SidebarProps {\n sections?: SidebarSection[]\n currentPath?: string\n collapsed?: boolean\n userRoles?: string[]\n}\n\nexport interface SidebarAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n isVisible: (item: SidebarItem) => boolean\n itemAriaProps: (href: string) => Record<string, string>\n visibleSections: SidebarSection[]\n}\n\nexport function createSidebar(props: SidebarProps = {}): SidebarAPI {\n const { sections = [], currentPath = '/', userRoles = [] } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n function isVisible(item: SidebarItem): boolean {\n if (!item.roles || item.roles.length === 0) return true\n return item.roles.some((role) => userRoles.includes(role))\n }\n\n const visibleSections = sections\n .map((section) => ({\n ...section,\n items: section.items.filter(isVisible),\n }))\n .filter((section) => section.items.length > 0)\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Sidebar' },\n isActive,\n isVisible,\n itemAriaProps: (href: string): Record<string, string> =>\n isActive(href) ? { 'aria-current': 'page' } : {},\n visibleSections,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const sidebarVariants = cva({\n base: 'hidden md:flex flex-col border-r bg-background',\n variants: {\n collapsed: {\n true: 'w-16',\n false: 'w-64',\n },\n },\n defaultVariants: {\n collapsed: 'false',\n },\n})\n\nexport const sidebarItemVariants = cva({\n base: 'flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors',\n variants: {\n active: {\n true: 'bg-accent text-accent-foreground',\n false: 'text-muted-foreground hover:bg-muted hover:text-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createSidebar,\n sidebarVariants,\n sidebarItemVariants,\n type SidebarSection,\n type SidebarItem as SidebarItemType,\n} from '@refraction-ui/sidebar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Sidebar sections with items */\n sections?: SidebarSection[]\n /** Current pathname for active state */\n currentPath?: string\n /** Whether the sidebar is collapsed */\n collapsed?: boolean\n /** User roles for visibility filtering */\n userRoles?: string[]\n}\n\n/**\n * Sidebar component — renders a vertical navigation panel with sections and items.\n *\n * Uses the headless @refraction-ui/sidebar core for state, visibility, and ARIA attributes.\n * Hidden on mobile (hidden md:flex via styles).\n */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n sections = [],\n currentPath,\n collapsed = false,\n userRoles,\n className,\n ...props\n },\n ref,\n ) => {\n const api = createSidebar({ sections, currentPath, collapsed, userRoles })\n const classes = cn(\n sidebarVariants({ collapsed: collapsed ? 'true' : 'false' }),\n className,\n )\n\n return (\n <aside ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"flex flex-col gap-4 p-4\">\n {api.visibleSections.map((section, sIdx) => (\n <div key={section.title ?? sIdx}>\n {section.title && !collapsed && (\n <h3 className=\"mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {section.title}\n </h3>\n )}\n <ul className=\"space-y-1\">\n {section.items.map((item) => {\n const active = api.isActive(item.href)\n return (\n <li key={item.href}>\n <a\n href={item.href}\n className={sidebarItemVariants({\n active: active ? 'true' : 'false',\n })}\n {...api.itemAriaProps(item.href)}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {!collapsed && <span>{item.label}</span>}\n </a>\n </li>\n )\n })}\n </ul>\n </div>\n ))}\n </div>\n </aside>\n )\n },\n)\n\nSidebar.displayName = 'Sidebar'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type SkeletonShape = 'text' | 'circular' | 'rectangular' | 'rounded'\n\nexport interface SkeletonProps {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Number of lines to render for the text shape variant */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\nexport interface SkeletonAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createSkeleton(props: SkeletonProps = {}): SkeletonAPI {\n const { shape = 'text', animate = true } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n 'aria-hidden': true,\n role: 'presentation',\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-shape': shape,\n 'data-animate': String(animate),\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const skeletonVariants = cva({\n base: 'animate-pulse bg-muted',\n variants: {\n shape: {\n text: 'h-4 w-full rounded',\n circular: 'rounded-full',\n rectangular: 'rounded-none',\n rounded: 'rounded-md',\n },\n },\n defaultVariants: {\n shape: 'text',\n },\n})\n","import * as React from 'react'\nimport {\n createSkeleton,\n skeletonVariants,\n type SkeletonShape,\n} from '@refraction-ui/skeleton'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/**\n * Skeleton component -- renders a placeholder loading element.\n *\n * Uses the headless @refraction-ui/skeleton core for ARIA attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ shape, width, height, animate, className, style, ...props }, ref) => {\n const api = createSkeleton({ shape, animate })\n const classes = cn(skeletonVariants({ shape }), className)\n\n const mergedStyle: React.CSSProperties = {\n ...style,\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n }\n\n return React.createElement('div', {\n ref,\n className: classes,\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n ...api.ariaProps,\n ...api.dataAttributes,\n ...props,\n })\n },\n)\n\nSkeleton.displayName = 'Skeleton'\n\n// ---------------------------------------------------------------------------\n// SkeletonText\n// ---------------------------------------------------------------------------\n\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of text lines to render. Defaults to 3 */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/** Width percentages for each line to create a natural-looking text block */\nconst lineWidths = ['100%', '92%', '85%', '96%', '78%', '88%', '94%', '82%']\n\n/**\n * SkeletonText component -- renders N lines of text-shaped skeletons with\n * slight width variations for a natural loading appearance.\n */\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, animate, className, ...props }, ref) => {\n const children: React.ReactElement[] = []\n\n for (let i = 0; i < lines; i++) {\n const width = lineWidths[i % lineWidths.length]\n children.push(\n React.createElement(Skeleton, {\n key: i,\n shape: 'text',\n width,\n animate,\n }),\n )\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn('space-y-2', className),\n ...props,\n },\n ...children,\n )\n },\n)\n\nSkeletonText.displayName = 'SkeletonText'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface TabsProps {\n /** The active tab value (controlled) */\n value?: string\n /** The default active tab value (uncontrolled) */\n defaultValue?: string\n /** Callback when active tab changes */\n onValueChange?: (value: string) => void\n /** Orientation of the tab list */\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport interface TabsState {\n activeValue: string\n}\n\nexport interface TabsAPI {\n /** Current tabs state */\n state: TabsState\n /** ARIA attributes for the tab list */\n listProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for individual tab trigger props */\n getTabProps(value: string): Partial<AccessibilityProps> & Record<string, unknown>\n /** Factory for individual tab panel props */\n getPanelProps(value: string): Partial<AccessibilityProps> & Record<string, unknown>\n /** Select a tab by value */\n select(value: string): void\n /** Keyboard handlers for the tab list */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated ID prefix for aria linking */\n idPrefix: string\n}\n\nexport function createTabs(props: TabsProps = {}): TabsAPI {\n const {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'horizontal',\n } = props\n\n let uncontrolledValue = controlledValue ?? defaultValue\n const idPrefix = generateId('rfr-tabs')\n\n function getActiveValue(): string {\n if (controlledValue !== undefined) return controlledValue\n return uncontrolledValue\n }\n\n function select(value: string): void {\n uncontrolledValue = value\n onValueChange?.(value)\n }\n\n function getTabId(value: string): string {\n return `${idPrefix}-tab-${value}`\n }\n\n function getPanelId(value: string): string {\n return `${idPrefix}-panel-${value}`\n }\n\n function getTabProps(value: string): Partial<AccessibilityProps> & Record<string, unknown> {\n const isSelected = getActiveValue() === value\n return {\n role: 'tab',\n 'aria-selected': isSelected,\n 'aria-controls': getPanelId(value),\n tabIndex: isSelected ? 0 : -1,\n id: getTabId(value),\n 'data-state': isSelected ? 'active' : 'inactive',\n }\n }\n\n function getPanelProps(value: string): Partial<AccessibilityProps> & Record<string, unknown> {\n const isSelected = getActiveValue() === value\n return {\n role: 'tabpanel',\n 'aria-labelledby': getTabId(value),\n id: getPanelId(value),\n hidden: !isSelected || undefined,\n tabIndex: 0,\n 'data-state': isSelected ? 'active' : 'inactive',\n }\n }\n\n const listProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'tablist',\n 'aria-orientation': orientation,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = orientation === 'horizontal'\n ? {\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n : {\n [Keys.ArrowUp]: (e) => {\n e.preventDefault()\n },\n [Keys.ArrowDown]: (e) => {\n e.preventDefault()\n },\n [Keys.Home]: (e) => {\n e.preventDefault()\n },\n [Keys.End]: (e) => {\n e.preventDefault()\n },\n }\n\n return {\n state: { activeValue: getActiveValue() },\n listProps,\n getTabProps,\n getPanelProps,\n select,\n keyboardHandlers,\n idPrefix,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tabsListVariants = cva({\n base: 'inline-flex max-w-full overflow-x-auto items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n})\n\nexport const tabsTriggerVariants = cva({\n base: 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n})\n","import * as React from 'react'\nimport {\n createTabs,\n tabsListVariants,\n tabsTriggerVariants,\n type TabsProps as CoreTabsProps,\n} from '@refraction-ui/tabs'\nimport { cn, createKeyboardHandler, Keys } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n orientation: 'horizontal' | 'vertical'\n idPrefix: string\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext(): TabsContextValue {\n const ctx = React.useContext(TabsContext)\n if (!ctx) {\n throw new Error('Tabs compound components must be used within <Tabs>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Tabs (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface TabsProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n className?: string\n children?: React.ReactNode\n}\n\nexport function Tabs({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n}: TabsProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const value = isControlled ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlled) {\n setUncontrolledValue(next)\n }\n onValueChange?.(next)\n },\n [isControlled, onValueChange],\n )\n\n // Use the headless core to get stable IDs\n const apiRef = React.useRef<ReturnType<typeof createTabs> | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createTabs({ value, orientation })\n }\n const api = apiRef.current\n\n const ctx = React.useMemo<TabsContextValue>(\n () => ({\n value,\n onValueChange: handleValueChange,\n orientation,\n idPrefix: api.idPrefix,\n }),\n [value, handleValueChange, orientation, api.idPrefix],\n )\n\n return React.createElement(\n 'div',\n { className, 'data-orientation': orientation },\n React.createElement(TabsContext.Provider, { value: ctx }, children),\n )\n}\n\nTabs.displayName = 'Tabs'\n\n// ---------------------------------------------------------------------------\n// TabsList\n// ---------------------------------------------------------------------------\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, ...props }, ref) => {\n const { orientation } = useTabsContext()\n\n return React.createElement('div', {\n ref,\n role: 'tablist',\n 'aria-orientation': orientation,\n className: cn(tabsListVariants(), className),\n ...props,\n })\n },\n)\n\nTabsList.displayName = 'TabsList'\n\n// ---------------------------------------------------------------------------\n// TabsTrigger\n// ---------------------------------------------------------------------------\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ value, className, onClick, onKeyDown, children, ...props }, ref) => {\n const { value: activeValue, onValueChange, orientation, idPrefix } = useTabsContext()\n\n const isSelected = activeValue === value\n const tabId = `${idPrefix}-tab-${value}`\n const panelId = `${idPrefix}-panel-${value}`\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onValueChange(value)\n onClick?.(e)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Navigation keys are handled at the list level by convention,\n // but we expose them here for convenience in SSR-only scenarios\n onKeyDown?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n role: 'tab',\n 'aria-selected': isSelected,\n 'aria-controls': panelId,\n tabIndex: isSelected ? 0 : -1,\n id: tabId,\n 'data-state': isSelected ? 'active' : 'inactive',\n className: cn(tabsTriggerVariants(), className),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n },\n children,\n )\n },\n)\n\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ---------------------------------------------------------------------------\n// TabsContent\n// ---------------------------------------------------------------------------\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, idPrefix } = useTabsContext()\n\n const isSelected = activeValue === value\n const tabId = `${idPrefix}-tab-${value}`\n const panelId = `${idPrefix}-panel-${value}`\n\n if (!isSelected) return null\n\n return React.createElement(\n 'div',\n {\n ref,\n role: 'tabpanel',\n 'aria-labelledby': tabId,\n id: panelId,\n tabIndex: 0,\n 'data-state': 'active',\n className,\n ...props,\n },\n children,\n )\n },\n)\n\nTabsContent.displayName = 'TabsContent'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface TextareaProps {\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n 'aria-invalid'?: boolean\n rows?: number\n maxRows?: number\n}\n\nexport interface TextareaAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps> & { 'aria-invalid'?: boolean; 'aria-required'?: boolean }\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createTextarea(props: TextareaProps = {}): TextareaAPI {\n const {\n disabled = false,\n readOnly = false,\n required = false,\n 'aria-invalid': ariaInvalid,\n } = props\n\n const ariaProps: TextareaAPI['ariaProps'] = {}\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n if (ariaInvalid) {\n ariaProps['aria-invalid'] = true\n }\n\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n if (readOnly) {\n dataAttributes['data-readonly'] = ''\n }\n\n if (ariaInvalid) {\n dataAttributes['data-invalid'] = ''\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const textareaVariants = cva({\n base: 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'min-h-[40px] text-xs',\n default: 'min-h-[60px]',\n lg: 'min-h-[80px] text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createTextarea,\n textareaVariants,\n} from '@refraction-ui/textarea'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n size?: 'sm' | 'default' | 'lg'\n maxRows?: number\n}\n\n/**\n * Textarea component — renders a styled textarea with size support.\n *\n * Uses the headless @refraction-ui/textarea core for state, ARIA, and data attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ size, className, disabled, readOnly, required, rows, maxRows, 'aria-invalid': ariaInvalid, ...props }, ref) => {\n const api = createTextarea({\n disabled,\n readOnly,\n required,\n rows,\n maxRows,\n 'aria-invalid': ariaInvalid === true ? true : undefined,\n })\n\n const classes = cn(textareaVariants({ size }), className)\n\n return (\n <textarea\n ref={ref}\n className={classes}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n rows={rows}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nTextarea.displayName = 'Textarea'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning'\n\n/** Icon name for each toast variant — non-color indicator for colorblind safety */\nconst TOAST_ICONS: Record<ToastVariant, string> = {\n default: 'info-circle',\n success: 'check-circle',\n error: 'x-circle',\n warning: 'alert-triangle',\n}\n\n/** Get the icon name for a toast variant (colorblind-safe: meaning not conveyed by color alone) */\nexport function getToastIcon(variant: ToastVariant): string {\n return TOAST_ICONS[variant]\n}\n\nexport interface ToastProps {\n /** Visual variant */\n variant?: ToastVariant\n /** Auto-dismiss duration in ms (default: 3000). Set to 0 to disable. */\n duration?: number\n /** Whether the toast is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface ToastState {\n open: boolean\n variant: ToastVariant\n}\n\nexport interface ToastAPI {\n /** Current toast state */\n state: ToastState\n /** ARIA attributes for the toast element */\n ariaProps: Partial<AccessibilityProps>\n /** Dismiss the toast */\n dismiss(): void\n /** Start the auto-dismiss timer */\n startTimer(): void\n /** Pause the auto-dismiss timer (e.g. on hover) */\n pauseTimer(): void\n /** Resume the auto-dismiss timer */\n resumeTimer(): void\n}\n\nexport function createToast(props: ToastProps = {}): ToastAPI {\n const {\n variant = 'default',\n duration = 3000,\n open: controlledOpen,\n onOpenChange,\n } = props\n\n let isOpen = controlledOpen ?? true\n let timerId: ReturnType<typeof setTimeout> | null = null\n let remaining = duration\n let startedAt = 0\n\n function dismiss(): void {\n clearTimer()\n isOpen = false\n onOpenChange?.(false)\n }\n\n function clearTimer(): void {\n if (timerId !== null) {\n clearTimeout(timerId)\n timerId = null\n }\n }\n\n function startTimer(): void {\n if (duration <= 0) return\n clearTimer()\n remaining = duration\n startedAt = Date.now()\n timerId = setTimeout(dismiss, remaining)\n }\n\n function pauseTimer(): void {\n if (timerId === null) return\n clearTimer()\n remaining = remaining - (Date.now() - startedAt)\n if (remaining < 0) remaining = 0\n }\n\n function resumeTimer(): void {\n if (duration <= 0 || remaining <= 0) return\n clearTimer()\n startedAt = Date.now()\n timerId = setTimeout(dismiss, remaining)\n }\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'alert',\n 'aria-live': 'assertive',\n 'aria-atomic': true,\n }\n\n return {\n state: {\n get open() {\n return controlledOpen !== undefined ? controlledOpen : isOpen\n },\n variant,\n },\n ariaProps,\n dismiss,\n startTimer,\n pauseTimer,\n resumeTimer,\n }\n}\n\n/** Entry in the toast manager */\nexport interface ToastEntry {\n id: string\n message: string\n variant: ToastVariant\n duration: number\n createdAt: number\n}\n\nexport interface ToastManagerAPI {\n /** Add a new toast. Returns the toast id. */\n toast(message: string, opts?: { variant?: ToastVariant; duration?: number }): string\n /** Dismiss a toast by id */\n dismiss(id: string): void\n /** Current toast list (read-only) */\n readonly toasts: ReadonlyArray<ToastEntry>\n /** Subscribe to toast list changes. Returns unsubscribe function. */\n subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void\n}\n\nexport function createToastManager(): ToastManagerAPI {\n let toasts: ToastEntry[] = []\n const listeners = new Set<(toasts: ReadonlyArray<ToastEntry>) => void>()\n const timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n function notify(): void {\n const snapshot = [...toasts]\n for (const fn of listeners) {\n fn(snapshot)\n }\n }\n\n function dismiss(id: string): void {\n const timer = timers.get(id)\n if (timer) {\n clearTimeout(timer)\n timers.delete(id)\n }\n toasts = toasts.filter((t) => t.id !== id)\n notify()\n }\n\n function toast(\n message: string,\n opts?: { variant?: ToastVariant; duration?: number },\n ): string {\n const id = generateId('rfr-toast')\n const variant = opts?.variant ?? 'default'\n const duration = opts?.duration ?? 3000\n\n const entry: ToastEntry = {\n id,\n message,\n variant,\n duration,\n createdAt: Date.now(),\n }\n\n toasts = [...toasts, entry]\n notify()\n\n if (duration > 0) {\n const timer = setTimeout(() => dismiss(id), duration)\n timers.set(id, timer)\n }\n\n return id\n }\n\n function subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void {\n listeners.add(fn)\n return () => {\n listeners.delete(fn)\n }\n }\n\n return {\n toast,\n dismiss,\n get toasts() {\n return toasts\n },\n subscribe,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const toastVariants = cva({\n base: 'pointer-events-auto relative flex w-full items-center justify-between gap-2 overflow-hidden rounded-lg border p-4 shadow-lg transition-all',\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n success:\n 'border-l-4 border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100',\n error:\n 'border-l-4 border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100',\n warning:\n 'border-l-4 border-amber-500/50 bg-amber-50 text-amber-900 dark:bg-amber-950 dark:text-amber-100',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createToast,\n createToastManager,\n toastVariants,\n type ToastVariant,\n type ToastEntry,\n type ToastManagerAPI,\n} from '@refraction-ui/toast'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface ToastContextValue {\n manager: ToastManagerAPI\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null)\n\nfunction useToastContext(): ToastContextValue {\n const ctx = React.useContext(ToastContext)\n if (!ctx) {\n throw new Error('useToast must be used within a <ToastProvider>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// ToastProvider\n// ---------------------------------------------------------------------------\n\nexport interface ToastProviderProps {\n children?: React.ReactNode\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const managerRef = React.useRef<ToastManagerAPI | null>(null)\n if (managerRef.current === null) {\n managerRef.current = createToastManager()\n }\n\n const ctx = React.useMemo<ToastContextValue>(\n () => ({ manager: managerRef.current! }),\n [],\n )\n\n return React.createElement(ToastContext.Provider, { value: ctx }, children)\n}\n\nToastProvider.displayName = 'ToastProvider'\n\n// ---------------------------------------------------------------------------\n// useToast hook\n// ---------------------------------------------------------------------------\n\nexport interface UseToastReturn {\n /** Show a new toast */\n toast: (message: string, opts?: { variant?: ToastVariant; duration?: number }) => string\n /** Dismiss a toast by id */\n dismiss: (id: string) => void\n /** Current toast entries */\n toasts: ReadonlyArray<ToastEntry>\n}\n\nexport function useToast(): UseToastReturn {\n const { manager } = useToastContext()\n const [toasts, setToasts] = React.useState<ReadonlyArray<ToastEntry>>(manager.toasts)\n\n React.useEffect(() => {\n // Sync initial state\n setToasts(manager.toasts)\n const unsub = manager.subscribe(setToasts)\n return unsub\n }, [manager])\n\n return {\n toast: manager.toast,\n dismiss: manager.dismiss,\n toasts,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Toast (individual toast component)\n// ---------------------------------------------------------------------------\n\nexport interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {\n entry: ToastEntry\n onDismiss?: (id: string) => void\n}\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n ({ entry, onDismiss, className, children, onMouseEnter, onMouseLeave, ...props }, ref) => {\n const api = React.useMemo(\n () => createToast({ variant: entry.variant, duration: entry.duration }),\n [entry.variant, entry.duration],\n )\n\n // Start auto-dismiss timer on mount\n React.useEffect(() => {\n api.startTimer()\n return () => api.pauseTimer()\n }, [api])\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n api.pauseTimer()\n onMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n api.resumeTimer()\n onMouseLeave?.(e)\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(toastVariants({ variant: entry.variant }), className),\n ...api.ariaProps,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...props,\n },\n React.createElement('div', { className: 'flex-1' }, entry.message),\n children,\n onDismiss &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'shrink-0',\n onClick: () => onDismiss(entry.id),\n 'aria-label': 'Dismiss',\n },\n '\\u00d7',\n ),\n )\n },\n)\n\nToast.displayName = 'Toast'\n\n// ---------------------------------------------------------------------------\n// Toaster (container that renders all active toasts)\n// ---------------------------------------------------------------------------\n\nexport interface ToasterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Toaster = React.forwardRef<HTMLDivElement, ToasterProps>(\n ({ className, ...props }, ref) => {\n const { toasts, dismiss } = useToast()\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn(\n 'fixed bottom-4 right-4 z-50 flex flex-col gap-2 w-full max-w-sm pointer-events-none',\n className,\n ),\n ...props,\n },\n toasts.map((entry) =>\n React.createElement(Toast, {\n key: entry.id,\n entry,\n onDismiss: dismiss,\n }),\n ),\n )\n },\n)\n\nToaster.displayName = 'Toaster'\n","import type { AccessibilityProps, Side } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface TooltipProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n delayDuration?: number\n}\n\nexport interface TooltipAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: Partial<AccessibilityProps> & {\n 'aria-describedby': string\n }\n /** Props to spread on the content element */\n contentProps: {\n role: 'tooltip'\n id: string\n }\n /** Resolved placement */\n placement: Side\n /** Open the tooltip */\n open: () => void\n /** Close the tooltip (and clear any pending delay) */\n close: () => void\n /** Open with delay */\n openWithDelay: () => void\n /** The configured delay duration */\n delayDuration: number\n /** Cancel any pending delay timer */\n cancelDelay: () => void\n}\n\nexport function createTooltip(props: TooltipProps = {}): TooltipAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'top',\n delayDuration = 300,\n } = props\n\n const contentId = generateId('rfr-tooltip')\n\n let isOpen = controlledOpen ?? defaultOpen\n let delayTimer: ReturnType<typeof setTimeout> | null = null\n\n const state = { open: isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.open = value\n onOpenChange?.(value)\n }\n\n function cancelDelay() {\n if (delayTimer !== null) {\n clearTimeout(delayTimer)\n delayTimer = null\n }\n }\n\n function open() {\n cancelDelay()\n setOpen(true)\n }\n\n function close() {\n cancelDelay()\n setOpen(false)\n }\n\n function openWithDelay() {\n cancelDelay()\n if (delayDuration <= 0) {\n setOpen(true)\n return\n }\n delayTimer = setTimeout(() => {\n setOpen(true)\n delayTimer = null\n }, delayDuration)\n }\n\n const triggerProps = {\n 'aria-describedby': contentId,\n }\n\n const contentProps = {\n role: 'tooltip' as const,\n id: contentId,\n }\n\n return {\n state,\n triggerProps,\n contentProps,\n placement,\n open,\n close,\n openWithDelay,\n delayDuration,\n cancelDelay,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const tooltipContentVariants = cva({\n base: 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground shadow-md',\n variants: {\n side: {\n top: 'animate-slide-down-fade',\n right: 'animate-slide-left-fade',\n bottom: 'animate-slide-up-fade',\n left: 'animate-slide-right-fade',\n },\n },\n defaultVariants: {\n side: 'top',\n },\n})\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport {\n createTooltip,\n tooltipContentVariants,\n type TooltipAPI,\n} from '@refraction-ui/tooltip'\nimport type { Side } from '@refraction-ui/shared'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface TooltipContextValue {\n api: TooltipAPI\n open: boolean\n setOpen: (value: boolean) => void\n openWithDelay: () => void\n cancelDelay: () => void\n}\n\nconst TooltipContext = React.createContext<TooltipContextValue | null>(null)\n\nfunction useTooltipContext(): TooltipContextValue {\n const ctx = React.useContext(TooltipContext)\n if (!ctx) {\n throw new Error('Tooltip compound components must be used within <Tooltip>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* Tooltip (root provider) */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n delayDuration?: number\n children: React.ReactNode\n}\n\nexport function Tooltip({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement,\n delayDuration = 300,\n children,\n}: TooltipProps) {\n const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleOpenChange = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = React.useMemo(\n () => createTooltip({ open: isOpen, onOpenChange: handleOpenChange, placement, delayDuration }),\n [isOpen, handleOpenChange, placement, delayDuration],\n )\n\n const cancelDelay = React.useCallback(() => {\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }, [])\n\n const openWithDelay = React.useCallback(() => {\n cancelDelay()\n if (delayDuration <= 0) {\n handleOpenChange(true)\n return\n }\n timerRef.current = setTimeout(() => {\n handleOpenChange(true)\n timerRef.current = null\n }, delayDuration)\n }, [cancelDelay, delayDuration, handleOpenChange])\n\n // Clean up timer on unmount\n React.useEffect(() => {\n return () => {\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current)\n }\n }\n }, [])\n\n const ctx = React.useMemo<TooltipContextValue>(\n () => ({ api, open: isOpen, setOpen: handleOpenChange, openWithDelay, cancelDelay }),\n [api, isOpen, handleOpenChange, openWithDelay, cancelDelay],\n )\n\n return React.createElement(TooltipContext.Provider, { value: ctx }, children)\n}\n\nTooltip.displayName = 'Tooltip'\n\n/* ------------------------------------------------------------------ */\n/* TooltipTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const TooltipTrigger = React.forwardRef<HTMLSpanElement, TooltipTriggerProps>(\n ({ onMouseEnter, onMouseLeave, onFocus, onBlur, children, ...props }, ref) => {\n const { api, setOpen, openWithDelay, cancelDelay } = useTooltipContext()\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLSpanElement>) => {\n openWithDelay()\n onMouseEnter?.(e)\n }\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLSpanElement>) => {\n cancelDelay()\n setOpen(false)\n onMouseLeave?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLSpanElement>) => {\n openWithDelay()\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLSpanElement>) => {\n cancelDelay()\n setOpen(false)\n onBlur?.(e)\n }\n\n return (\n <span\n ref={ref}\n aria-describedby={api.triggerProps['aria-describedby']}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nTooltipTrigger.displayName = 'TooltipTrigger'\n\n/* ------------------------------------------------------------------ */\n/* TooltipContent */\n/* ------------------------------------------------------------------ */\n\nexport interface TooltipContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: Side\n}\n\nexport const TooltipContent = React.forwardRef<HTMLDivElement, TooltipContentProps>(\n ({ side, className, children, ...props }, ref) => {\n const { api, open } = useTooltipContext()\n\n if (!open) return null\n\n const content = (\n <div\n ref={ref}\n role={api.contentProps.role}\n id={api.contentProps.id}\n className={cn(tooltipContentVariants({ side: side ?? api.placement }), className)}\n {...props}\n >\n {children}\n </div>\n )\n\n if (typeof document !== 'undefined') {\n return createPortal(content, document.body)\n }\n\n return content\n },\n)\n\nTooltipContent.displayName = 'TooltipContent'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface VideoPlayerProps {\n src?: string\n poster?: string\n autoplay?: boolean\n muted?: boolean\n controls?: boolean\n}\n\nexport type VideoState = 'idle' | 'loading' | 'playing' | 'paused' | 'ended'\n\nexport interface VideoPlayerAPI {\n /** Current player state */\n state: VideoState\n /** Transition to playing state */\n play: () => void\n /** Transition to paused state */\n pause: () => void\n /** Toggle between playing and paused */\n togglePlay: () => void\n /** Toggle mute state */\n toggleMute: () => boolean\n /** ARIA props for the player region */\n ariaProps: Partial<AccessibilityProps>\n /** ARIA props for control buttons */\n controlAriaProps: {\n playPause: Partial<AccessibilityProps>\n mute: Partial<AccessibilityProps>\n }\n /** Data attributes reflecting current state */\n dataAttributes: Record<string, string>\n}\n\nexport function createVideoPlayer(props: VideoPlayerProps = {}): VideoPlayerAPI {\n const { muted: initialMuted = false } = props\n\n let state: VideoState = 'idle'\n let isMuted = initialMuted\n\n function play() {\n if (state === 'ended') {\n state = 'playing'\n } else if (state !== 'playing') {\n state = 'playing'\n }\n }\n\n function pause() {\n if (state === 'playing') {\n state = 'paused'\n }\n }\n\n function togglePlay() {\n if (state === 'playing') {\n pause()\n } else {\n play()\n }\n }\n\n function toggleMute(): boolean {\n isMuted = !isMuted\n return isMuted\n }\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'region',\n 'aria-label': 'Video player',\n }\n\n const api: VideoPlayerAPI = {\n get state() {\n return state\n },\n play,\n pause,\n togglePlay,\n toggleMute,\n ariaProps,\n get controlAriaProps() {\n return {\n playPause: {\n 'aria-label': state === 'playing' ? 'Pause' : 'Play',\n },\n mute: {\n 'aria-label': isMuted ? 'Unmute' : 'Mute',\n },\n }\n },\n get dataAttributes() {\n return {\n 'data-state': state,\n }\n },\n }\n\n return api\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const playerVariants = cva({\n base: 'relative overflow-hidden rounded-lg bg-black',\n variants: {\n size: {\n sm: 'max-w-sm',\n md: 'max-w-2xl',\n lg: 'max-w-4xl',\n full: 'w-full',\n },\n },\n defaultVariants: {\n size: 'full',\n },\n})\n\nexport const controlsVariants = cva({\n base: 'absolute bottom-0 left-0 right-0 flex items-center gap-2 bg-gradient-to-t from-black/80 to-transparent p-4 transition-opacity',\n variants: {\n visibility: {\n visible: 'opacity-100',\n hidden: 'opacity-0 pointer-events-none',\n },\n },\n defaultVariants: {\n visibility: 'visible',\n },\n})\n\nexport const overlayVariants = cva({\n base: 'absolute inset-0 flex items-center justify-center bg-black/40 transition-opacity',\n variants: {\n visibility: {\n visible: 'opacity-100',\n hidden: 'opacity-0 pointer-events-none',\n },\n },\n defaultVariants: {\n visibility: 'visible',\n },\n})\n","import * as React from 'react'\nimport {\n createVideoPlayer,\n playerVariants,\n controlsVariants,\n overlayVariants,\n type VideoPlayerProps as CoreVideoPlayerProps,\n} from '@refraction-ui/video-player'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface VideoPlayerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'src'>,\n CoreVideoPlayerProps {}\n\nexport const VideoPlayer = React.forwardRef<HTMLDivElement, VideoPlayerProps>(\n (\n {\n src,\n poster,\n autoplay = false,\n muted: initialMuted = false,\n controls = true,\n className,\n ...props\n },\n ref,\n ) => {\n const [, setTick] = React.useState(0)\n const rerender = React.useCallback(() => setTick((t) => t + 1), [])\n\n const apiRef = React.useRef(\n createVideoPlayer({ src, poster, autoplay, muted: initialMuted, controls }),\n )\n const api = apiRef.current\n\n // No src — show placeholder\n if (!src) {\n return (\n <div\n ref={ref}\n className={cn(playerVariants(), 'flex items-center justify-center aspect-video', className)}\n {...api.ariaProps}\n {...props}\n >\n <div className=\"text-center text-muted-foreground\">\n <p className=\"text-lg font-medium\">Coming soon</p>\n </div>\n </div>\n )\n }\n\n const handlePlay = () => {\n api.play()\n rerender()\n }\n\n const handlePause = () => {\n api.pause()\n rerender()\n }\n\n const handleTogglePlay = () => {\n api.togglePlay()\n rerender()\n }\n\n const handleToggleMute = () => {\n api.toggleMute()\n rerender()\n }\n\n const isPlaying = api.state === 'playing'\n\n return (\n <div\n ref={ref}\n className={cn(playerVariants(), 'aspect-video', className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n <video\n className=\"h-full w-full\"\n src={src}\n poster={poster}\n autoPlay={autoplay}\n muted={initialMuted}\n onPlay={handlePlay}\n onPause={handlePause}\n />\n\n {/* Center play/pause overlay */}\n {controls && (\n <div className={overlayVariants({ visibility: isPlaying ? 'hidden' : 'visible' })}>\n <button\n type=\"button\"\n className=\"rounded-full bg-white/90 p-4 text-black shadow-lg\"\n onClick={handleTogglePlay}\n {...api.controlAriaProps.playPause}\n >\n {isPlaying ? 'Pause' : 'Play'}\n </button>\n </div>\n )}\n\n {/* Bottom controls bar */}\n {controls && (\n <div className={controlsVariants()}>\n <button\n type=\"button\"\n className=\"rounded bg-white/20 px-3 py-1 text-sm text-white\"\n onClick={handleToggleMute}\n {...api.controlAriaProps.mute}\n >\n {api.controlAriaProps.mute['aria-label']}\n </button>\n </div>\n )}\n </div>\n )\n },\n)\n\nVideoPlayer.displayName = 'VideoPlayer'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface StatCardData {\n label: string\n value: number\n icon?: string\n color?: string\n}\n\nexport interface BadgeData {\n name: string\n description: string\n icon: string\n unlockedAt?: string\n isUnlocked: boolean\n}\n\nexport interface ProgressDisplayProps {\n stats: StatCardData[]\n badges: BadgeData[]\n level?: number\n accuracy?: number\n}\n\nexport interface ProgressDisplayAPI {\n /** The computed stats array */\n stats: StatCardData[]\n /** The badges array */\n badges: BadgeData[]\n /** ARIA props for the stats region */\n ariaProps: Partial<AccessibilityProps>\n /** Get ARIA props for a specific badge */\n getBadgeAriaProps: (badge: BadgeData) => Partial<AccessibilityProps>\n}\n\nexport function createProgressDisplay(props: ProgressDisplayProps): ProgressDisplayAPI {\n const { stats, badges } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'region',\n 'aria-label': 'Progress statistics',\n }\n\n function getBadgeAriaProps(badge: BadgeData): Partial<AccessibilityProps> {\n const label = badge.isUnlocked\n ? `${badge.name}: ${badge.description}`\n : `${badge.name}: ${badge.description} (locked)`\n\n return {\n 'aria-label': label,\n }\n }\n\n return {\n stats,\n badges,\n ariaProps,\n getBadgeAriaProps,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const statsGridVariants = cva({\n base: 'grid gap-4',\n variants: {\n columns: {\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n },\n },\n defaultVariants: {\n columns: '3',\n },\n})\n\nexport const statCardVariants = cva({\n base: 'rounded-lg border p-4 text-center shadow-sm',\n variants: {\n color: {\n default: 'bg-card text-card-foreground',\n primary: 'bg-primary/10 text-primary border-primary/20',\n success: 'bg-green-500/10 text-green-700 border-green-500/20',\n warning: 'bg-yellow-500/10 text-yellow-700 border-yellow-500/20',\n destructive: 'bg-destructive/10 text-destructive border-destructive/20',\n },\n },\n defaultVariants: {\n color: 'default',\n },\n})\n\nexport const badgeGridVariants = cva({\n base: 'grid gap-4',\n variants: {\n columns: {\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n '5': 'grid-cols-5',\n },\n },\n defaultVariants: {\n columns: '4',\n },\n})\n\nexport const badgeItemVariants = cva({\n base: 'flex flex-col items-center gap-2 rounded-lg border p-4 text-center transition-opacity',\n variants: {\n state: {\n unlocked: 'opacity-100 bg-card',\n locked: 'opacity-50 bg-muted grayscale',\n },\n },\n defaultVariants: {\n state: 'locked',\n },\n})\n\nexport const progressBarVariants = cva({\n base: 'h-2 w-full overflow-hidden rounded-full bg-secondary',\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createProgressDisplay,\n statsGridVariants,\n statCardVariants,\n badgeGridVariants,\n badgeItemVariants,\n progressBarVariants,\n type StatCardData,\n type BadgeData,\n} from '@refraction-ui/progress-display'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* StatsGrid */\n/* ------------------------------------------------------------------ */\n\nexport interface StatsGridProps extends React.HTMLAttributes<HTMLDivElement> {\n stats: StatCardData[]\n badges?: BadgeData[]\n}\n\nexport const StatsGrid = React.forwardRef<HTMLDivElement, StatsGridProps>(\n ({ stats, badges = [], className, ...props }, ref) => {\n const api = createProgressDisplay({ stats, badges })\n\n return (\n <div\n ref={ref}\n className={cn(statsGridVariants(), className)}\n {...api.ariaProps}\n {...props}\n >\n {api.stats.map((stat) => (\n <div\n key={stat.label}\n className={statCardVariants({\n color: (stat.color as 'default' | 'primary' | 'success' | 'warning' | 'destructive') ?? 'default',\n })}\n >\n {stat.icon && <span className=\"text-2xl\">{stat.icon}</span>}\n <div className=\"text-2xl font-bold\">{stat.value}</div>\n <div className=\"text-sm text-muted-foreground\">{stat.label}</div>\n </div>\n ))}\n </div>\n )\n },\n)\n\nStatsGrid.displayName = 'StatsGrid'\n\n/* ------------------------------------------------------------------ */\n/* ProgressBar */\n/* ------------------------------------------------------------------ */\n\nexport interface ProgressBarProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n size?: 'sm' | 'md' | 'lg'\n}\n\nexport const ProgressBar = React.forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ value, max = 100, size, className, ...props }, ref) => {\n const percent = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n ref={ref}\n className={cn(progressBarVariants({ size }), className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-primary transition-all\"\n style={{ width: `${percent}%` }}\n />\n </div>\n )\n },\n)\n\nProgressBar.displayName = 'ProgressBar'\n\n/* ------------------------------------------------------------------ */\n/* BadgeDisplay */\n/* ------------------------------------------------------------------ */\n\nexport interface BadgeDisplayProps extends React.HTMLAttributes<HTMLDivElement> {\n badges: BadgeData[]\n}\n\nexport const BadgeDisplay = React.forwardRef<HTMLDivElement, BadgeDisplayProps>(\n ({ badges, className, ...props }, ref) => {\n const api = createProgressDisplay({ stats: [], badges })\n\n return (\n <div\n ref={ref}\n className={cn(badgeGridVariants(), className)}\n {...props}\n >\n {api.badges.map((badge) => (\n <div\n key={badge.name}\n className={badgeItemVariants({\n state: badge.isUnlocked ? 'unlocked' : 'locked',\n })}\n {...api.getBadgeAriaProps(badge)}\n >\n <span className=\"text-3xl\">{badge.icon}</span>\n <span className=\"font-medium\">{badge.name}</span>\n {!badge.isUnlocked && (\n <span className=\"text-xs text-muted-foreground\">Locked</span>\n )}\n </div>\n ))}\n </div>\n )\n },\n)\n\nBadgeDisplay.displayName = 'BadgeDisplay'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type SlideType = 'lesson' | 'quiz' | 'exercise' | 'intro' | 'summary'\n\nexport type BookmarkType = 'important' | 'difficult' | 'to-revise'\n\nexport interface SlideData {\n id: string\n type: SlideType\n content: string\n}\n\nexport interface SlideViewerProps {\n slides: SlideData[]\n initialSlide?: number\n onSlideChange?: (index: number) => void\n onComplete?: () => void\n}\n\nexport interface SlideViewerState {\n currentSlide: number\n totalSlides: number\n bookmarks: Map<number, BookmarkType>\n}\n\nexport interface SlideViewerAPI {\n /** Current viewer state */\n state: SlideViewerState\n /** Navigate to the next slide */\n next: () => void\n /** Navigate to the previous slide */\n prev: () => void\n /** Navigate to a specific slide index */\n goTo: (index: number) => void\n /** Toggle a bookmark on the current slide */\n toggleBookmark: (type: BookmarkType) => void\n /** Get all bookmarks as an array of entries */\n getBookmarks: () => Array<{ slide: number; type: BookmarkType }>\n /** Current progress as a number between 0 and 1 */\n progress: number\n /** Keyboard handlers for slide navigation */\n keyboardHandlers: KeyboardHandlerMap\n /** ARIA props for the current slide */\n getSlideAriaProps: () => Partial<AccessibilityProps> & { 'aria-roledescription'?: string }\n}\n\n/**\n * Create a headless slide viewer.\n *\n * Manages slide navigation state, bookmarks, progress tracking,\n * and keyboard navigation. Framework wrappers handle rendering.\n */\nexport function createSlideViewer(props: SlideViewerProps): SlideViewerAPI {\n const { slides, initialSlide = 0, onSlideChange, onComplete } = props\n\n const totalSlides = slides.length\n const bookmarks = new Map<number, BookmarkType>()\n\n const state: SlideViewerState = {\n currentSlide: Math.max(0, Math.min(initialSlide, totalSlides - 1)),\n totalSlides,\n bookmarks,\n }\n\n function updateProgress(): number {\n if (totalSlides <= 1) return 1\n return state.currentSlide / (totalSlides - 1)\n }\n\n function next() {\n if (state.currentSlide < totalSlides - 1) {\n state.currentSlide++\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n } else {\n // Already on the last slide — trigger complete\n onComplete?.()\n }\n }\n\n function prev() {\n if (state.currentSlide > 0) {\n state.currentSlide--\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n }\n }\n\n function goTo(index: number) {\n if (index >= 0 && index < totalSlides) {\n state.currentSlide = index\n api.progress = updateProgress()\n onSlideChange?.(state.currentSlide)\n }\n }\n\n function toggleBookmark(type: BookmarkType) {\n const current = state.currentSlide\n if (bookmarks.has(current) && bookmarks.get(current) === type) {\n bookmarks.delete(current)\n } else {\n bookmarks.set(current, type)\n }\n }\n\n function getBookmarks(): Array<{ slide: number; type: BookmarkType }> {\n const result: Array<{ slide: number; type: BookmarkType }> = []\n for (const [slide, type] of bookmarks.entries()) {\n result.push({ slide, type })\n }\n return result.sort((a, b) => a.slide - b.slide)\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n next()\n },\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n prev()\n },\n [Keys.Escape]: (e) => {\n e.preventDefault()\n },\n }\n\n function getSlideAriaProps(): Partial<AccessibilityProps> & { 'aria-roledescription'?: string } {\n const slide = slides[state.currentSlide]\n return {\n role: 'region',\n 'aria-roledescription': 'slide',\n 'aria-label': `Slide ${state.currentSlide + 1} of ${totalSlides}: ${slide?.type ?? 'unknown'} slide`,\n 'aria-live': 'polite',\n }\n }\n\n const api: SlideViewerAPI = {\n state,\n next,\n prev,\n goTo,\n toggleBookmark,\n getBookmarks,\n progress: updateProgress(),\n keyboardHandlers,\n getSlideAriaProps,\n }\n\n return api\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const slideViewerTokens: TokenContract = {\n name: 'slide-viewer',\n tokens: {\n bg: { variable: '--rfr-slide-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-slide-fg', fallback: 'hsl(var(--foreground))' },\n progressBg: { variable: '--rfr-slide-progress-bg', fallback: 'hsl(var(--primary))' },\n progressTrack: { variable: '--rfr-slide-progress-track', fallback: 'hsl(var(--muted))' },\n badgeBg: { variable: '--rfr-slide-badge-bg', fallback: 'hsl(var(--secondary))' },\n },\n}\n\nexport const slideViewerVariants = cva({\n base: 'flex flex-col h-full w-full relative overflow-hidden',\n variants: {\n size: {\n compact: 'max-w-2xl',\n default: 'max-w-4xl',\n full: 'max-w-none',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const progressBarVariants = cva({\n base: 'h-1 w-full bg-muted rounded-full overflow-hidden',\n variants: {\n position: {\n top: 'rounded-none',\n bottom: 'rounded-none',\n inline: 'rounded-full',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n})\n\nexport const slideTypeBadgeVariants = cva({\n base: 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',\n variants: {\n type: {\n lesson: 'bg-blue-100 text-blue-800',\n quiz: 'bg-purple-100 text-purple-800',\n exercise: 'bg-green-100 text-green-800',\n intro: 'bg-gray-100 text-gray-800',\n summary: 'bg-orange-100 text-orange-800',\n },\n },\n defaultVariants: {\n type: 'lesson',\n },\n})\n","import * as React from 'react'\nimport {\n createSlideViewer,\n slideViewerVariants,\n progressBarVariants,\n slideTypeBadgeVariants,\n type SlideData,\n type BookmarkType,\n type SlideType,\n} from '@refraction-ui/slide-viewer'\nimport { cn, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport type { SlideData, BookmarkType, SlideType }\n\nexport interface SlideViewerProps {\n slides: SlideData[]\n initialSlide?: number\n onSlideChange?: (index: number) => void\n onComplete?: () => void\n className?: string\n size?: 'compact' | 'default' | 'full'\n /** Render function for custom slide content */\n renderSlide?: (slide: SlideData, index: number) => React.ReactNode\n}\n\n/**\n * SlideViewer component — slide-based content viewer with navigation,\n * progress bar, type badges, and bookmark support.\n *\n * Uses the headless @refraction-ui/slide-viewer core for state and navigation.\n */\nexport const SlideViewer = React.forwardRef<HTMLDivElement, SlideViewerProps>(\n (\n {\n slides,\n initialSlide,\n onSlideChange,\n onComplete,\n className,\n size,\n renderSlide,\n },\n ref,\n ) => {\n const [, setTick] = React.useState(0)\n const rerender = () => setTick((t) => t + 1)\n\n const apiRef = React.useRef(\n createSlideViewer({ slides, initialSlide, onSlideChange, onComplete }),\n )\n const api = apiRef.current\n\n const containerClasses = cn(slideViewerVariants({ size }), className)\n const currentSlide = slides[api.state.currentSlide]\n const slideAriaProps = api.getSlideAriaProps()\n const handleKeyDown = createKeyboardHandler(api.keyboardHandlers)\n\n function handlePrev() {\n api.prev()\n rerender()\n }\n\n function handleNext() {\n api.next()\n rerender()\n }\n\n function handleBookmark(type: BookmarkType) {\n api.toggleBookmark(type)\n rerender()\n }\n\n const isBookmarked = api.state.bookmarks.has(api.state.currentSlide)\n\n return (\n <div\n ref={ref}\n className={containerClasses}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler}\n tabIndex={0}\n >\n {/* Progress bar */}\n <div className={progressBarVariants({ position: 'top' })}>\n <div\n className=\"h-full bg-primary transition-all duration-300\"\n style={{ width: `${api.progress * 100}%` }}\n />\n </div>\n\n {/* Header with type badge and bookmark */}\n <div className=\"flex items-center justify-between px-4 py-2 border-b\">\n <div className=\"flex items-center gap-2\">\n {currentSlide && (\n <span className={slideTypeBadgeVariants({ type: currentSlide.type })}>\n {currentSlide.type}\n </span>\n )}\n <span className=\"text-sm text-muted-foreground\">\n {api.state.currentSlide + 1} / {api.state.totalSlides}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={() => handleBookmark('important')}\n className={cn(\n 'px-2 py-1 rounded text-xs transition-colors',\n isBookmarked\n ? 'bg-yellow-100 text-yellow-800'\n : 'hover:bg-muted text-muted-foreground',\n )}\n aria-pressed={isBookmarked}\n aria-label=\"Toggle bookmark\"\n >\n {isBookmarked ? 'Bookmarked' : 'Bookmark'}\n </button>\n </div>\n\n {/* Slide content */}\n <div className=\"flex-1 overflow-auto p-6\" {...slideAriaProps}>\n {currentSlide &&\n (renderSlide\n ? renderSlide(currentSlide, api.state.currentSlide)\n : <div dangerouslySetInnerHTML={{ __html: currentSlide.content }} />)}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex items-center justify-between px-4 py-3 border-t\">\n <button\n type=\"button\"\n onClick={handlePrev}\n disabled={api.state.currentSlide === 0}\n className=\"px-4 py-2 rounded text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed hover:bg-muted transition-colors\"\n aria-label=\"Previous slide\"\n >\n Previous\n </button>\n <button\n type=\"button\"\n onClick={handleNext}\n className=\"px-4 py-2 rounded text-sm font-medium bg-primary text-primary-foreground hover:bg-primary/90 transition-colors\"\n aria-label={\n api.state.currentSlide === api.state.totalSlides - 1\n ? 'Complete'\n : 'Next slide'\n }\n >\n {api.state.currentSlide === api.state.totalSlides - 1 ? 'Complete' : 'Next'}\n </button>\n </div>\n </div>\n )\n },\n)\n\nSlideViewer.displayName = 'SlideViewer'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface LanguageOption {\n value: string\n label: string\n group?: string\n}\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n}\n\nexport interface LanguageSelectorAPI {\n /** Current state */\n state: { selectedValues: string[]; isOpen: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'listbox'\n role: 'combobox'\n }\n /** Props to spread on the content/dropdown element */\n contentProps: {\n role: 'listbox'\n id: string\n 'aria-multiselectable'?: boolean\n }\n /** Get props for an individual option */\n getOptionProps: (value: string) => {\n role: 'option'\n 'aria-selected': boolean\n 'data-value': string\n }\n /** Toggle an option's selection */\n toggle: (value: string) => void\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createLanguageSelector(props: LanguageSelectorProps): LanguageSelectorAPI {\n const {\n value: initialValue,\n onValueChange,\n options: _options,\n multiple = false,\n } = props\n\n const contentId = generateId('rfr-lang-sel')\n\n let selectedValues: string[] = Array.isArray(initialValue)\n ? [...initialValue]\n : initialValue\n ? [initialValue]\n : []\n let isOpen = false\n\n const state = { selectedValues: [...selectedValues], isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.isOpen = value\n }\n\n function toggle(value: string) {\n if (multiple) {\n const index = selectedValues.indexOf(value)\n if (index >= 0) {\n selectedValues.splice(index, 1)\n } else {\n selectedValues.push(value)\n }\n state.selectedValues = [...selectedValues]\n onValueChange?.([...selectedValues])\n } else {\n selectedValues = [value]\n state.selectedValues = [value]\n onValueChange?.(value)\n setOpen(false)\n }\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox' as const,\n }\n\n const contentProps: LanguageSelectorAPI['contentProps'] = {\n role: 'listbox' as const,\n id: contentId,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n }\n\n function getOptionProps(value: string) {\n return {\n role: 'option' as const,\n 'aria-selected': selectedValues.includes(value),\n 'data-value': value,\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n [Keys.Enter]: () => {\n setOpen(!isOpen)\n },\n [Keys.Space]: () => {\n setOpen(!isOpen)\n },\n [Keys.ArrowDown]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n [Keys.ArrowUp]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n getOptionProps,\n toggle,\n open: () => setOpen(true),\n close: () => setOpen(false),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const selectorVariants = cva({\n base: 'relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2 min-w-[120px]',\n md: 'h-10 text-base px-3 min-w-[160px]',\n lg: 'h-12 text-lg px-4 min-w-[200px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const optionVariants = cva({\n base: 'flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent',\n variants: {\n selected: {\n true: 'bg-accent/50 font-medium',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createLanguageSelector,\n selectorVariants,\n optionVariants,\n type LanguageSelectorAPI,\n type LanguageOption,\n} from '@refraction-ui/language-selector'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface LanguageSelectorContextValue {\n api: LanguageSelectorAPI\n isOpen: boolean\n setOpen: (value: boolean) => void\n toggle: (value: string) => void\n options: LanguageOption[]\n multiple: boolean\n}\n\nconst LanguageSelectorContext = React.createContext<LanguageSelectorContextValue | null>(null)\n\nfunction useLanguageSelectorContext(): LanguageSelectorContextValue {\n const ctx = React.useContext(LanguageSelectorContext)\n if (!ctx) {\n throw new Error('LanguageSelector compound components must be used within <LanguageSelector>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* LanguageSelector (root component) */\n/* ------------------------------------------------------------------ */\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n placeholder?: string\n className?: string\n}\n\nexport function LanguageSelector({\n value: controlledValue,\n onValueChange,\n options,\n multiple = false,\n placeholder = 'Select language...',\n className,\n}: LanguageSelectorProps) {\n const initialValues = Array.isArray(controlledValue)\n ? controlledValue\n : controlledValue\n ? [controlledValue]\n : []\n\n const [selectedValues, setSelectedValues] = React.useState<string[]>(initialValues)\n const [isOpen, setIsOpen] = React.useState(false)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleValueChange = React.useCallback(\n (val: string | string[]) => {\n const arr = Array.isArray(val) ? val : [val]\n setSelectedValues(arr)\n onValueChange?.(val)\n },\n [onValueChange],\n )\n\n const api = React.useMemo(\n () =>\n createLanguageSelector({\n value: multiple ? selectedValues : selectedValues[0],\n onValueChange: handleValueChange,\n options,\n multiple,\n }),\n [selectedValues, handleValueChange, options, multiple],\n )\n\n const handleToggle = React.useCallback(\n (val: string) => {\n if (multiple) {\n const index = selectedValues.indexOf(val)\n const next = index >= 0\n ? selectedValues.filter((v) => v !== val)\n : [...selectedValues, val]\n setSelectedValues(next)\n onValueChange?.(next)\n } else {\n setSelectedValues([val])\n onValueChange?.(val)\n setIsOpen(false)\n }\n },\n [multiple, selectedValues, onValueChange],\n )\n\n const handleTriggerClick = React.useCallback(() => {\n setIsOpen((prev) => !prev)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (!isOpen) {\n setIsOpen(true)\n }\n }\n },\n [isOpen],\n )\n\n // Click outside to close\n React.useEffect(() => {\n if (!isOpen) return\n function handleClickOutside(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen])\n\n const ctx = React.useMemo<LanguageSelectorContextValue>(\n () => ({\n api,\n isOpen,\n setOpen: setIsOpen,\n toggle: handleToggle,\n options,\n multiple,\n }),\n [api, isOpen, handleToggle, options, multiple],\n )\n\n // Group options\n const grouped = React.useMemo(() => {\n const groups = new Map<string, LanguageOption[]>()\n const ungrouped: LanguageOption[] = []\n for (const opt of options) {\n if (opt.group) {\n const list = groups.get(opt.group) ?? []\n list.push(opt)\n groups.set(opt.group, list)\n } else {\n ungrouped.push(opt)\n }\n }\n return { groups, ungrouped }\n }, [options])\n\n const displayLabel = selectedValues.length > 0\n ? options\n .filter((o) => selectedValues.includes(o.value))\n .map((o) => o.label)\n .join(', ')\n : placeholder\n\n return React.createElement(\n LanguageSelectorContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ref: containerRef, className: cn('rfr-language-selector relative inline-block', className) },\n // Trigger\n React.createElement(\n 'button',\n {\n type: 'button',\n role: api.triggerProps.role,\n 'aria-expanded': isOpen,\n 'aria-controls': api.triggerProps['aria-controls'],\n 'aria-haspopup': api.triggerProps['aria-haspopup'],\n className: selectorVariants(),\n onClick: handleTriggerClick,\n onKeyDown: handleKeyDown,\n },\n React.createElement('span', null, displayLabel),\n React.createElement('span', { 'aria-hidden': 'true', className: 'ml-2' }, '\\u25BE'),\n ),\n // Dropdown\n isOpen &&\n React.createElement(\n 'ul',\n {\n role: api.contentProps.role,\n id: api.contentProps.id,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n className:\n 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60',\n },\n // Render grouped options\n ...[...grouped.groups.entries()].map(([group, opts]) =>\n React.createElement(\n 'li',\n { key: group, role: 'presentation' },\n React.createElement(\n 'div',\n { className: 'px-3 py-1 text-xs font-semibold text-muted-foreground uppercase' },\n group,\n ),\n React.createElement(\n 'ul',\n { role: 'group', 'aria-label': group },\n ...opts.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n ),\n // Ungrouped options\n ...grouped.ungrouped.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n )\n}\n\nLanguageSelector.displayName = 'LanguageSelector'\n","import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface VersionOption {\n value: string\n label: string\n isLatest?: boolean\n}\n\nexport interface VersionSelectorProps {\n value?: string\n onValueChange?: (value: string) => void\n versions: VersionOption[]\n}\n\nexport interface VersionSelectorAPI {\n /** Current state */\n state: { selectedVersion: string; isOpen: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'listbox'\n role: 'combobox'\n }\n /** Props to spread on the content/dropdown element */\n contentProps: {\n role: 'listbox'\n id: string\n }\n /** Get props for an individual option */\n getOptionProps: (value: string) => {\n role: 'option'\n 'aria-selected': boolean\n 'data-value': string\n 'data-latest'?: string\n }\n /** Select a version */\n select: (value: string) => void\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createVersionSelector(props: VersionSelectorProps): VersionSelectorAPI {\n const {\n value: initialValue = '',\n onValueChange,\n versions,\n } = props\n\n const contentId = generateId('rfr-ver-sel')\n\n let selectedVersion = initialValue\n let isOpen = false\n\n const state = { selectedVersion, isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.isOpen = value\n }\n\n function select(value: string) {\n selectedVersion = value\n state.selectedVersion = value\n onValueChange?.(value)\n setOpen(false)\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox' as const,\n }\n\n const contentProps = {\n role: 'listbox' as const,\n id: contentId,\n }\n\n function getOptionProps(value: string) {\n const version = versions.find((v) => v.value === value)\n const base = {\n role: 'option' as const,\n 'aria-selected': selectedVersion === value,\n 'data-value': value,\n }\n if (version?.isLatest) {\n return { ...base, 'data-latest': 'true' }\n }\n return base\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n [Keys.Enter]: () => {\n setOpen(!isOpen)\n },\n [Keys.Space]: () => {\n setOpen(!isOpen)\n },\n [Keys.ArrowDown]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n [Keys.ArrowUp]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n getOptionProps,\n select,\n open: () => setOpen(true),\n close: () => setOpen(false),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const versionSelectorVariants = cva({\n base: 'relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2 min-w-[100px]',\n md: 'h-10 text-base px-3 min-w-[140px]',\n lg: 'h-12 text-lg px-4 min-w-[180px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const optionVariants = cva({\n base: 'flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent',\n variants: {\n selected: {\n true: 'bg-accent/50 font-medium',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n\nexport const latestBadgeVariants = cva({\n base: 'inline-flex items-center rounded-full text-xs font-medium px-2 py-0.5',\n variants: {\n variant: {\n default: 'bg-primary/10 text-primary',\n accent: 'bg-accent text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createVersionSelector,\n versionSelectorVariants,\n optionVariants,\n latestBadgeVariants,\n type VersionSelectorAPI,\n type VersionOption,\n} from '@refraction-ui/version-selector'\nimport { cn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface VersionSelectorContextValue {\n api: VersionSelectorAPI\n isOpen: boolean\n setOpen: (value: boolean) => void\n select: (value: string) => void\n versions: VersionOption[]\n}\n\nconst VersionSelectorContext = React.createContext<VersionSelectorContextValue | null>(null)\n\nfunction useVersionSelectorContext(): VersionSelectorContextValue {\n const ctx = React.useContext(VersionSelectorContext)\n if (!ctx) {\n throw new Error('VersionSelector compound components must be used within <VersionSelector>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* VersionSelector (root component) */\n/* ------------------------------------------------------------------ */\n\nexport interface VersionSelectorProps {\n value?: string\n onValueChange?: (value: string) => void\n versions: VersionOption[]\n placeholder?: string\n className?: string\n}\n\nexport function VersionSelector({\n value: controlledValue,\n onValueChange,\n versions,\n placeholder = 'Select version...',\n className,\n}: VersionSelectorProps) {\n const [selectedVersion, setSelectedVersion] = React.useState(controlledValue ?? '')\n const [isOpen, setIsOpen] = React.useState(false)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleValueChange = React.useCallback(\n (val: string) => {\n setSelectedVersion(val)\n onValueChange?.(val)\n },\n [onValueChange],\n )\n\n const api = React.useMemo(\n () =>\n createVersionSelector({\n value: selectedVersion,\n onValueChange: handleValueChange,\n versions,\n }),\n [selectedVersion, handleValueChange, versions],\n )\n\n const handleSelect = React.useCallback(\n (val: string) => {\n setSelectedVersion(val)\n onValueChange?.(val)\n setIsOpen(false)\n },\n [onValueChange],\n )\n\n const handleTriggerClick = React.useCallback(() => {\n setIsOpen((prev) => !prev)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (!isOpen) {\n setIsOpen(true)\n }\n }\n },\n [isOpen],\n )\n\n // Click outside to close\n React.useEffect(() => {\n if (!isOpen) return\n function handleClickOutside(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen])\n\n const ctx = React.useMemo<VersionSelectorContextValue>(\n () => ({\n api,\n isOpen,\n setOpen: setIsOpen,\n select: handleSelect,\n versions,\n }),\n [api, isOpen, handleSelect, versions],\n )\n\n const selectedOpt = versions.find((v) => v.value === selectedVersion)\n const displayLabel = selectedOpt ? selectedOpt.label : placeholder\n\n return React.createElement(\n VersionSelectorContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ref: containerRef, className: cn('rfr-version-selector relative inline-block', className) },\n // Trigger\n React.createElement(\n 'button',\n {\n type: 'button',\n role: api.triggerProps.role,\n 'aria-expanded': isOpen,\n 'aria-controls': api.triggerProps['aria-controls'],\n 'aria-haspopup': api.triggerProps['aria-haspopup'],\n className: versionSelectorVariants(),\n onClick: handleTriggerClick,\n onKeyDown: handleKeyDown,\n },\n React.createElement('span', null, displayLabel),\n selectedOpt?.isLatest &&\n React.createElement(\n 'span',\n { className: cn(latestBadgeVariants(), 'ml-2') },\n 'Latest',\n ),\n React.createElement('span', { 'aria-hidden': 'true', className: 'ml-2' }, '\\u25BE'),\n ),\n // Dropdown\n isOpen &&\n React.createElement(\n 'ul',\n {\n role: api.contentProps.role,\n id: api.contentProps.id,\n className:\n 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60',\n },\n ...versions.map((ver) => {\n const optProps = api.getOptionProps(ver.value)\n const isSelected = selectedVersion === ver.value\n return React.createElement(\n 'li',\n {\n key: ver.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleSelect(ver.value),\n },\n React.createElement('span', null, ver.label),\n ver.isLatest &&\n React.createElement(\n 'span',\n { className: latestBadgeVariants() },\n 'Latest',\n ),\n )\n }),\n ),\n ),\n )\n}\n\nVersionSelector.displayName = 'VersionSelector'\n","import type { Orientation } from '@refraction-ui/shared'\n\nexport interface ResizableLayoutProps {\n orientation?: Orientation\n /** Initial sizes as percentages (must sum to 100) */\n defaultSizes?: number[]\n /** Minimum size for each pane (percentage) */\n minSizes?: number[]\n /** Maximum size for each pane (percentage) */\n maxSizes?: number[]\n /** localStorage key for persisting sizes */\n persistKey?: string\n}\n\nexport interface ResizableLayoutAPI {\n /** Current pane sizes as percentages */\n sizes: number[]\n /** Begin a resize operation at divider index */\n startResize: (index: number) => void\n /** Apply a delta (percentage) during resize */\n onResize: (delta: number) => void\n /** End the current resize operation */\n endResize: () => void\n /** Generate CSS custom properties for pane sizes */\n getCSSVariables: () => Record<string, string>\n /** Current orientation */\n orientation: Orientation\n}\n\n/**\n * Clamp a value between min and max.\n */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max)\n}\n\nexport function createResizableLayout(props: ResizableLayoutProps = {}): ResizableLayoutAPI {\n const {\n orientation = 'horizontal',\n defaultSizes = [50, 50],\n minSizes = [],\n maxSizes = [],\n persistKey,\n } = props\n\n const sizes = loadSizes(persistKey) ?? [...defaultSizes]\n let resizingIndex: number | null = null\n let sizesBeforeResize: number[] = []\n\n function loadSizes(key?: string): number[] | null {\n if (!key) return null\n try {\n if (typeof globalThis.localStorage !== 'undefined') {\n const stored = globalThis.localStorage.getItem(key)\n if (stored) {\n const parsed = JSON.parse(stored) as number[]\n if (Array.isArray(parsed) && parsed.length === defaultSizes.length) {\n return parsed\n }\n }\n }\n } catch {\n // localStorage not available or invalid data\n }\n return null\n }\n\n function saveSizes(key: string, values: number[]): void {\n try {\n if (typeof globalThis.localStorage !== 'undefined') {\n globalThis.localStorage.setItem(key, JSON.stringify(values))\n }\n } catch {\n // localStorage not available\n }\n }\n\n function getMinSize(index: number): number {\n return minSizes[index] ?? 0\n }\n\n function getMaxSize(index: number): number {\n return maxSizes[index] ?? 100\n }\n\n function startResize(index: number): void {\n resizingIndex = index\n sizesBeforeResize = [...sizes]\n }\n\n function onResize(delta: number): void {\n if (resizingIndex === null) return\n\n const i = resizingIndex\n const j = i + 1\n if (j >= sizes.length) return\n\n const totalAvailable = sizesBeforeResize[i] + sizesBeforeResize[j]\n\n // Compute new size for pane i\n let newSizeI = sizesBeforeResize[i] + delta\n newSizeI = clamp(newSizeI, getMinSize(i), getMaxSize(i))\n\n // Compute new size for pane j from remaining\n let newSizeJ = totalAvailable - newSizeI\n newSizeJ = clamp(newSizeJ, getMinSize(j), getMaxSize(j))\n\n // Re-adjust pane i if pane j was constrained\n newSizeI = totalAvailable - newSizeJ\n\n sizes[i] = newSizeI\n sizes[j] = newSizeJ\n }\n\n function endResize(): void {\n resizingIndex = null\n sizesBeforeResize = []\n if (persistKey) {\n saveSizes(persistKey, sizes)\n }\n }\n\n function getCSSVariables(): Record<string, string> {\n const vars: Record<string, string> = {}\n for (let i = 0; i < sizes.length; i++) {\n vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`\n }\n return vars\n }\n\n return {\n sizes,\n startResize,\n onResize,\n endResize,\n getCSSVariables,\n orientation,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const resizableLayoutTokens: TokenContract = {\n name: 'resizable-layout',\n tokens: {\n dividerColor: { variable: '--rfr-resizable-divider-color', fallback: 'hsl(var(--border))' },\n dividerHover: { variable: '--rfr-resizable-divider-hover', fallback: 'hsl(var(--primary))' },\n dividerSize: { variable: '--rfr-resizable-divider-size', fallback: '4px' },\n },\n}\n\nexport const resizableLayoutVariants = cva({\n base: 'flex h-full w-full',\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const resizableDividerVariants = cva({\n base: 'relative flex items-center justify-center bg-border transition-colors hover:bg-primary/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 active:bg-primary/70',\n variants: {\n orientation: {\n horizontal: 'w-1 cursor-col-resize',\n vertical: 'h-1 cursor-row-resize',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n\nexport const resizablePaneVariants = cva({\n base: 'overflow-auto',\n variants: {\n orientation: {\n horizontal: 'h-full',\n vertical: 'w-full',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n})\n","import * as React from 'react'\nimport {\n createResizableLayout,\n resizableLayoutVariants,\n resizableDividerVariants,\n resizablePaneVariants,\n type ResizableLayoutProps as CoreProps,\n type ResizableLayoutAPI,\n} from '@refraction-ui/resizable-layout'\nimport { cn } from '@refraction-ui/shared'\nimport type { Orientation } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface ResizableLayoutContextValue {\n api: ResizableLayoutAPI\n orientation: Orientation\n sizes: number[]\n setSizes: (sizes: number[]) => void\n}\n\nconst ResizableLayoutContext = React.createContext<ResizableLayoutContextValue | null>(null)\n\nfunction useResizableLayoutContext(): ResizableLayoutContextValue {\n const ctx = React.useContext(ResizableLayoutContext)\n if (!ctx) {\n throw new Error('Resizable compound components must be used within <ResizableLayout>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* ResizableLayout (root) */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizableLayoutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n orientation?: Orientation\n defaultSizes?: number[]\n minSizes?: number[]\n maxSizes?: number[]\n persistKey?: string\n onSizesChange?: (sizes: number[]) => void\n}\n\n/**\n * ResizableLayout — flex container with resizable panes separated by draggable dividers.\n * Uses pointer events for cross-platform drag support.\n */\nexport const ResizableLayout = React.forwardRef<HTMLDivElement, ResizableLayoutProps>(\n (\n {\n orientation = 'horizontal',\n defaultSizes = [50, 50],\n minSizes,\n maxSizes,\n persistKey,\n onSizesChange,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const apiRef = React.useRef<ResizableLayoutAPI | null>(null)\n\n if (!apiRef.current) {\n apiRef.current = createResizableLayout({\n orientation,\n defaultSizes,\n minSizes,\n maxSizes,\n persistKey,\n })\n }\n\n const api = apiRef.current\n const [sizes, setSizesState] = React.useState<number[]>(api.sizes)\n\n const setSizes = React.useCallback(\n (newSizes: number[]) => {\n setSizesState([...newSizes])\n onSizesChange?.(newSizes)\n },\n [onSizesChange],\n )\n\n const cssVars = React.useMemo(() => {\n const vars: Record<string, string> = {}\n for (let i = 0; i < sizes.length; i++) {\n vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`\n }\n return vars\n }, [sizes])\n\n const contextValue = React.useMemo<ResizableLayoutContextValue>(\n () => ({ api, orientation, sizes, setSizes }),\n [api, orientation, sizes, setSizes],\n )\n\n return (\n <ResizableLayoutContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(resizableLayoutVariants({ orientation }), className)}\n style={{ ...cssVars, ...style }}\n data-orientation={orientation}\n {...props}\n >\n {children}\n </div>\n </ResizableLayoutContext.Provider>\n )\n },\n)\n\nResizableLayout.displayName = 'ResizableLayout'\n\n/* ------------------------------------------------------------------ */\n/* ResizablePane */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizablePaneProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Zero-based index of this pane (order in the layout) */\n index: number\n}\n\n/**\n * ResizablePane — a single pane whose size is driven by CSS custom properties.\n */\nexport const ResizablePane = React.forwardRef<HTMLDivElement, ResizablePaneProps>(\n ({ index, className, style, children, ...props }, ref) => {\n const { orientation, sizes } = useResizableLayoutContext()\n const size = sizes[index] ?? 50\n\n const paneStyle: React.CSSProperties = {\n flexBasis: `${size}%`,\n flexGrow: 0,\n flexShrink: 0,\n ...style,\n }\n\n return (\n <div\n ref={ref}\n className={cn(resizablePaneVariants({ orientation }), className)}\n style={paneStyle}\n data-pane-index={index}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nResizablePane.displayName = 'ResizablePane'\n\n/* ------------------------------------------------------------------ */\n/* ResizableDivider */\n/* ------------------------------------------------------------------ */\n\nexport interface ResizableDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Index of the divider (between pane[index] and pane[index+1]) */\n index: number\n}\n\n/**\n * ResizableDivider — draggable handle between two panes.\n * Uses pointer events for cross-platform drag support (mouse + touch).\n */\nexport const ResizableDivider = React.forwardRef<HTMLDivElement, ResizableDividerProps>(\n ({ index, className, ...props }, ref) => {\n const { api, orientation, setSizes } = useResizableLayoutContext()\n const startPosRef = React.useRef<number>(0)\n const containerSizeRef = React.useRef<number>(0)\n\n const onPointerDown = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.preventDefault()\n const target = e.currentTarget\n target.setPointerCapture(e.pointerId)\n\n // Get the container size to convert px delta to percentage\n const container = target.parentElement\n if (!container) return\n\n const rect = container.getBoundingClientRect()\n containerSizeRef.current =\n orientation === 'horizontal' ? rect.width : rect.height\n startPosRef.current =\n orientation === 'horizontal' ? e.clientX : e.clientY\n\n api.startResize(index)\n },\n [api, index, orientation],\n )\n\n const onPointerMove = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (containerSizeRef.current === 0) return\n\n const currentPos =\n orientation === 'horizontal' ? e.clientX : e.clientY\n const pxDelta = currentPos - startPosRef.current\n const pctDelta = (pxDelta / containerSizeRef.current) * 100\n\n api.onResize(pctDelta)\n setSizes([...api.sizes])\n },\n [api, orientation, setSizes],\n )\n\n const onPointerUp = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.releasePointerCapture(e.pointerId)\n containerSizeRef.current = 0\n api.endResize()\n },\n [api],\n )\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n tabIndex={0}\n className={cn(resizableDividerVariants({ orientation }), className)}\n data-divider-index={index}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n {...props}\n />\n )\n },\n)\n\nResizableDivider.displayName = 'ResizableDivider'\n","import { generateId } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type BreakpointName = 'mobile' | 'tablet' | 'desktop'\n\nexport interface AppShellConfig {\n /** Sidebar width when expanded (default '16rem') */\n sidebarWidth?: string\n /** Sidebar width when collapsed to icon-only (default '4rem') */\n sidebarCollapsedWidth?: string\n /** Header height (default '3.5rem') */\n headerHeight?: string\n /** Breakpoint below which layout is mobile (default 768) */\n mobileBreakpoint?: number\n /** Breakpoint below which layout is tablet (default 1024) */\n tabletBreakpoint?: number\n /** Sidebar position (default 'left') */\n sidebarPosition?: 'left' | 'right'\n /** Whether sidebar can be collapsed on desktop (default true) */\n sidebarCollapsible?: boolean\n /** Whether sidebar starts collapsed on desktop (default false) */\n sidebarDefaultCollapsed?: boolean\n /** Mobile nav position (default 'bottom') */\n mobileNavPosition?: 'bottom' | 'none'\n}\n\nexport interface AppShellState {\n /** On mobile: drawer open/closed */\n sidebarOpen: boolean\n /** On desktop: full/icon-only */\n sidebarCollapsed: boolean\n /** Current responsive breakpoint */\n breakpoint: BreakpointName\n /** Convenience: breakpoint === 'mobile' */\n isMobile: boolean\n /** Convenience: breakpoint === 'tablet' */\n isTablet: boolean\n /** Convenience: breakpoint === 'desktop' */\n isDesktop: boolean\n}\n\nexport type AppShellSubscriber = (state: AppShellState) => void\n\nexport interface AppShellAPI {\n /** Current state (snapshot — will not mutate) */\n state: AppShellState\n /** Resolved config with all defaults applied */\n config: Required<AppShellConfig>\n\n /** Mobile: open/close drawer. Desktop: collapse/expand sidebar. */\n toggleSidebar(): void\n /** Open sidebar (mobile drawer) */\n openSidebar(): void\n /** Close sidebar (mobile drawer) */\n closeSidebar(): void\n /** Collapse sidebar to icon-only (desktop) */\n collapseSidebar(): void\n /** Expand sidebar from icon-only (desktop) */\n expandSidebar(): void\n /** Update the current breakpoint */\n setBreakpoint(bp: BreakpointName): void\n\n /** CSS custom property map for layout dimensions */\n getCSSVariables(): Record<string, string>\n\n /** ARIA attributes for sidebar region */\n sidebarAriaProps: Record<string, string>\n /** ARIA attributes for main region */\n mainAriaProps: Record<string, string>\n /** ARIA attributes for header region */\n headerAriaProps: Record<string, string>\n /** ARIA attributes for mobile bottom nav */\n mobileNavAriaProps: Record<string, string>\n /** ARIA attributes for mobile sidebar overlay/backdrop */\n overlayAriaProps: Record<string, string>\n\n /** Subscribe to state changes. Returns unsubscribe function. */\n subscribe(fn: AppShellSubscriber): () => void\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<AppShellConfig> = {\n sidebarWidth: '16rem',\n sidebarCollapsedWidth: '4rem',\n headerHeight: '3.5rem',\n mobileBreakpoint: 768,\n tabletBreakpoint: 1024,\n sidebarPosition: 'left',\n sidebarCollapsible: true,\n sidebarDefaultCollapsed: false,\n mobileNavPosition: 'bottom',\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction resolveBreakpoint(\n width: number,\n mobileBp: number,\n tabletBp: number,\n): BreakpointName {\n if (width < mobileBp) return 'mobile'\n if (width < tabletBp) return 'tablet'\n return 'desktop'\n}\n\nfunction makeState(\n sidebarOpen: boolean,\n sidebarCollapsed: boolean,\n breakpoint: BreakpointName,\n): AppShellState {\n return {\n sidebarOpen,\n sidebarCollapsed,\n breakpoint,\n isMobile: breakpoint === 'mobile',\n isTablet: breakpoint === 'tablet',\n isDesktop: breakpoint === 'desktop',\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createAppShell(config?: AppShellConfig): AppShellAPI {\n const resolved: Required<AppShellConfig> = { ...DEFAULTS, ...config }\n\n // Internal mutable state\n let sidebarOpen = false\n let sidebarCollapsed = resolved.sidebarDefaultCollapsed\n let breakpoint: BreakpointName = 'desktop' // SSR default\n\n const subscribers = new Set<AppShellSubscriber>()\n\n const sidebarId = generateId('rfr-shell-sidebar')\n\n function getState(): AppShellState {\n return makeState(sidebarOpen, sidebarCollapsed, breakpoint)\n }\n\n function notify(): void {\n const s = getState()\n for (const fn of subscribers) {\n fn(s)\n }\n }\n\n function toggleSidebar(): void {\n if (breakpoint === 'mobile') {\n sidebarOpen = !sidebarOpen\n } else if (resolved.sidebarCollapsible) {\n sidebarCollapsed = !sidebarCollapsed\n }\n notify()\n }\n\n function openSidebar(): void {\n sidebarOpen = true\n notify()\n }\n\n function closeSidebar(): void {\n sidebarOpen = false\n notify()\n }\n\n function collapseSidebar(): void {\n sidebarCollapsed = true\n notify()\n }\n\n function expandSidebar(): void {\n sidebarCollapsed = false\n notify()\n }\n\n function setBreakpoint(bp: BreakpointName): void {\n if (bp === breakpoint) return\n breakpoint = bp\n // Auto-close mobile drawer when moving to desktop\n if (bp !== 'mobile') {\n sidebarOpen = false\n }\n notify()\n }\n\n function getCSSVariables(): Record<string, string> {\n const currentWidth = sidebarCollapsed\n ? resolved.sidebarCollapsedWidth\n : resolved.sidebarWidth\n return {\n '--shell-sidebar-width': currentWidth,\n '--shell-sidebar-full-width': resolved.sidebarWidth,\n '--shell-sidebar-collapsed-width': resolved.sidebarCollapsedWidth,\n '--shell-header-height': resolved.headerHeight,\n }\n }\n\n function subscribe(fn: AppShellSubscriber): () => void {\n subscribers.add(fn)\n return () => {\n subscribers.delete(fn)\n }\n }\n\n return {\n get state() {\n return getState()\n },\n config: resolved,\n\n toggleSidebar,\n openSidebar,\n closeSidebar,\n collapseSidebar,\n expandSidebar,\n setBreakpoint,\n\n getCSSVariables,\n\n sidebarAriaProps: {\n role: 'navigation',\n 'aria-label': 'Sidebar',\n id: sidebarId,\n },\n mainAriaProps: {\n role: 'main',\n },\n headerAriaProps: {\n role: 'banner',\n },\n mobileNavAriaProps: {\n role: 'navigation',\n 'aria-label': 'Mobile navigation',\n },\n overlayAriaProps: {\n 'aria-hidden': 'true',\n },\n\n subscribe,\n }\n}\n\nexport { resolveBreakpoint }\n","// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PageShellConfig {\n /** Max width for contained sections (default '80rem') */\n maxWidth?: string\n /** Navigation bar height (default '4rem') */\n navHeight?: string\n /** Whether nav is transparent (for hero sections, default false) */\n navTransparent?: boolean\n /** Whether nav is sticky (default true) */\n navSticky?: boolean\n /** Number of footer columns (default 4) */\n footerColumns?: number\n}\n\nexport interface SectionConfig {\n /** Whether section spans edge-to-edge (default false) */\n fullWidth?: boolean\n /** Override max-width for this section */\n maxWidth?: string\n /** Whether section has padding (default true) */\n padding?: boolean\n /** Background variant */\n background?: 'default' | 'muted' | 'primary' | 'none'\n}\n\nexport interface PageShellAPI {\n /** Resolved config with all defaults applied */\n config: Required<PageShellConfig>\n /** ARIA attributes for the nav region */\n navAriaProps: Record<string, string>\n /** ARIA attributes for the footer region */\n footerAriaProps: Record<string, string>\n /** Returns Tailwind utility classes for a section */\n getSectionClasses(sectionConfig?: SectionConfig): string\n /** CSS custom property map */\n getCSSVariables(): Record<string, string>\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<PageShellConfig> = {\n maxWidth: '80rem',\n navHeight: '4rem',\n navTransparent: false,\n navSticky: true,\n footerColumns: 4,\n}\n\n// ---------------------------------------------------------------------------\n// Background class map\n// ---------------------------------------------------------------------------\n\nconst BACKGROUND_CLASSES: Record<NonNullable<SectionConfig['background']>, string> = {\n default: '',\n muted: 'bg-muted',\n primary: 'bg-primary text-primary-foreground',\n none: '',\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createPageShell(config?: PageShellConfig): PageShellAPI {\n const resolved: Required<PageShellConfig> = { ...DEFAULTS, ...config }\n\n function getSectionClasses(sectionConfig?: SectionConfig): string {\n const {\n fullWidth = false,\n maxWidth,\n padding = true,\n background = 'default',\n } = sectionConfig ?? {}\n\n const classes: string[] = []\n\n if (!fullWidth) {\n classes.push('mx-auto')\n classes.push('w-full')\n // Use custom max-width or fall through to CSS variable\n if (maxWidth) {\n classes.push(`max-w-${maxWidth}`)\n } else {\n classes.push('max-w-[var(--page-max-width)]')\n }\n }\n\n if (padding) {\n classes.push('px-4 sm:px-6 lg:px-8')\n }\n\n const bg = BACKGROUND_CLASSES[background]\n if (bg) {\n classes.push(bg)\n }\n\n return classes.join(' ')\n }\n\n function getCSSVariables(): Record<string, string> {\n return {\n '--page-max-width': resolved.maxWidth,\n '--page-nav-height': resolved.navHeight,\n '--page-footer-columns': String(resolved.footerColumns),\n }\n }\n\n return {\n config: resolved,\n navAriaProps: {\n role: 'navigation',\n 'aria-label': 'Main navigation',\n },\n footerAriaProps: {\n role: 'contentinfo',\n },\n getSectionClasses,\n getCSSVariables,\n }\n}\n","// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellConfig {\n /** Card max-width preset (default 'sm') */\n maxWidth?: 'xs' | 'sm' | 'md'\n /** Card position (default 'center') */\n position?: 'center' | 'left'\n /** Show decorative background pattern (default true) */\n showBackground?: boolean\n}\n\nexport interface AuthShellAPI {\n /** Resolved config with all defaults */\n config: Required<AuthShellConfig>\n /** Tailwind classes for the outer container */\n containerClasses: string\n /** Tailwind classes for the card */\n cardClasses: string\n /** ARIA attributes for the auth region */\n ariaProps: Record<string, string>\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULTS: Required<AuthShellConfig> = {\n maxWidth: 'sm',\n position: 'center',\n showBackground: true,\n}\n\n// ---------------------------------------------------------------------------\n// Class maps\n// ---------------------------------------------------------------------------\n\nconst MAX_WIDTH_CLASSES: Record<AuthShellConfig['maxWidth'] & string, string> = {\n xs: 'max-w-xs',\n sm: 'max-w-sm',\n md: 'max-w-md',\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createAuthShell(config?: AuthShellConfig): AuthShellAPI {\n const resolved: Required<AuthShellConfig> = { ...DEFAULTS, ...config }\n\n const containerParts: string[] = ['min-h-screen', 'flex', 'w-full']\n\n if (resolved.position === 'center') {\n containerParts.push('items-center', 'justify-center')\n } else {\n // left-aligned: vertically centered, padded from left\n containerParts.push('items-center', 'justify-start', 'pl-8 sm:pl-16 lg:pl-24')\n }\n\n if (resolved.showBackground) {\n containerParts.push('bg-muted')\n }\n\n const cardParts: string[] = [\n 'w-full',\n MAX_WIDTH_CLASSES[resolved.maxWidth],\n 'rounded-lg',\n 'border',\n 'bg-card',\n 'p-6',\n 'shadow-sm',\n ]\n\n return {\n config: resolved,\n containerClasses: containerParts.join(' '),\n cardClasses: cardParts.join(' '),\n ariaProps: {\n role: 'main',\n 'aria-label': 'Authentication',\n },\n }\n}\n","import * as React from 'react'\nimport {\n createAppShell,\n resolveBreakpoint,\n type AppShellConfig,\n type AppShellState,\n type AppShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface AppShellContextValue {\n api: AppShellAPI\n state: AppShellState\n}\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null)\n\nexport function useAppShell(): AppShellContextValue {\n const ctx = React.useContext(AppShellContext)\n if (!ctx) {\n throw new Error('useAppShell must be used within <AppShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// AppShell (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface AppShellProps {\n config?: AppShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction AppShellRoot({ config, children, className }: AppShellProps) {\n // Create the headless API once\n const apiRef = React.useRef<AppShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createAppShell(config)\n }\n const api = apiRef.current\n\n // Track state reactively via subscribe\n const [state, setState] = React.useState<AppShellState>(() => api.state)\n\n React.useEffect(() => {\n // Sync initial state\n setState(api.state)\n return api.subscribe((s) => setState(s))\n }, [api])\n\n // Listen to matchMedia for responsive breakpoints\n React.useEffect(() => {\n if (typeof window === 'undefined') return\n\n const { mobileBreakpoint, tabletBreakpoint } = api.config\n\n const mobileQuery = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`)\n const tabletQuery = window.matchMedia(\n `(min-width: ${mobileBreakpoint}px) and (max-width: ${tabletBreakpoint - 1}px)`,\n )\n\n function update() {\n const width = window.innerWidth\n const bp = resolveBreakpoint(width, mobileBreakpoint, tabletBreakpoint)\n api.setBreakpoint(bp)\n }\n\n // Set initial breakpoint\n update()\n\n mobileQuery.addEventListener('change', update)\n tabletQuery.addEventListener('change', update)\n\n return () => {\n mobileQuery.removeEventListener('change', update)\n tabletQuery.removeEventListener('change', update)\n }\n }, [api])\n\n const cssVars = api.getCSSVariables()\n\n const ctxValue = React.useMemo<AppShellContextValue>(\n () => ({ api, state }),\n [api, state],\n )\n\n return React.createElement(\n AppShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n className: cn('flex h-screen w-full overflow-hidden', className),\n style: cssVars as React.CSSProperties,\n 'data-shell': '',\n },\n children,\n ),\n )\n}\n\nAppShellRoot.displayName = 'AppShell'\n\n// ---------------------------------------------------------------------------\n// AppShell.Sidebar\n// ---------------------------------------------------------------------------\n\nexport interface AppShellSidebarProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Sidebar({ children, className }: AppShellSidebarProps) {\n const { api, state } = useAppShell()\n const isRight = api.config.sidebarPosition === 'right'\n\n // On mobile: off-canvas drawer via transform\n // On desktop: static sidebar with variable width\n const baseClasses = [\n 'flex flex-col shrink-0 overflow-y-auto overflow-x-hidden',\n 'bg-background border-r',\n 'transition-[width,transform] duration-200 ease-in-out',\n 'h-full',\n ]\n\n if (isRight) {\n baseClasses[1] = 'flex flex-col shrink-0 overflow-y-auto overflow-x-hidden bg-background border-l'\n }\n\n const mobileClasses = state.isMobile\n ? [\n 'fixed top-0 z-40',\n isRight ? 'right-0' : 'left-0',\n 'w-[var(--shell-sidebar-full-width)]',\n state.sidebarOpen\n ? 'translate-x-0'\n : isRight\n ? 'translate-x-full'\n : '-translate-x-full',\n ]\n : ['relative', 'w-[var(--shell-sidebar-width)]']\n\n return React.createElement(\n 'aside',\n {\n ...api.sidebarAriaProps,\n className: cn(baseClasses.join(' '), mobileClasses.join(' '), className),\n 'data-collapsed': state.sidebarCollapsed ? '' : undefined,\n 'data-open': state.sidebarOpen ? '' : undefined,\n },\n children,\n )\n}\n\nSidebar.displayName = 'AppShell.Sidebar'\n\n// ---------------------------------------------------------------------------\n// AppShell.Main\n// ---------------------------------------------------------------------------\n\nexport interface AppShellMainProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Main({ children, className }: AppShellMainProps) {\n return React.createElement(\n 'div',\n {\n className: cn('flex flex-1 flex-col min-w-0 h-full', className),\n },\n children,\n )\n}\n\nMain.displayName = 'AppShell.Main'\n\n// ---------------------------------------------------------------------------\n// AppShell.Header\n// ---------------------------------------------------------------------------\n\nexport interface AppShellHeaderProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Header({ children, className }: AppShellHeaderProps) {\n const { api, state } = useAppShell()\n\n const hamburger = state.isMobile\n ? React.createElement(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Toggle sidebar',\n 'aria-expanded': state.sidebarOpen,\n 'aria-controls': api.sidebarAriaProps.id,\n onClick: () => api.toggleSidebar(),\n className: 'inline-flex items-center justify-center p-2 mr-2',\n },\n React.createElement(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n 'aria-hidden': 'true',\n },\n React.createElement('line', { x1: 3, y1: 6, x2: 21, y2: 6 }),\n React.createElement('line', { x1: 3, y1: 12, x2: 21, y2: 12 }),\n React.createElement('line', { x1: 3, y1: 18, x2: 21, y2: 18 }),\n ),\n )\n : null\n\n return React.createElement(\n 'header',\n {\n ...api.headerAriaProps,\n className: cn(\n 'sticky top-0 z-30 flex items-center shrink-0',\n 'h-[var(--shell-header-height)]',\n 'border-b bg-background px-4',\n className,\n ),\n },\n hamburger,\n children,\n )\n}\n\nHeader.displayName = 'AppShell.Header'\n\n// ---------------------------------------------------------------------------\n// AppShell.Content\n// ---------------------------------------------------------------------------\n\nexport interface AppShellContentProps {\n children?: React.ReactNode\n className?: string\n /** Tailwind max-width class suffix, e.g. '6xl' -> max-w-6xl */\n maxWidth?: string\n}\n\nfunction Content({ children, className, maxWidth }: AppShellContentProps) {\n const { api } = useAppShell()\n const mwClass = maxWidth ? `max-w-${maxWidth}` : ''\n\n return React.createElement(\n 'main',\n {\n ...api.mainAriaProps,\n className: cn(\n 'flex-1 overflow-y-auto',\n mwClass ? `${mwClass} mx-auto w-full` : '',\n 'px-4 sm:px-6 lg:px-8 py-6',\n className,\n ),\n },\n children,\n )\n}\n\nContent.displayName = 'AppShell.Content'\n\n// ---------------------------------------------------------------------------\n// AppShell.MobileNav\n// ---------------------------------------------------------------------------\n\nexport interface AppShellMobileNavProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction MobileNav({ children, className }: AppShellMobileNavProps) {\n const { api, state } = useAppShell()\n\n if (!state.isMobile) return null\n if (api.config.mobileNavPosition === 'none') return null\n\n return React.createElement(\n 'nav',\n {\n ...api.mobileNavAriaProps,\n className: cn(\n 'fixed bottom-0 left-0 right-0 z-30',\n 'flex items-center justify-around',\n 'border-t bg-background',\n 'h-14',\n className,\n ),\n },\n children,\n )\n}\n\nMobileNav.displayName = 'AppShell.MobileNav'\n\n// ---------------------------------------------------------------------------\n// AppShell.Overlay\n// ---------------------------------------------------------------------------\n\nexport interface AppShellOverlayProps {\n className?: string\n}\n\nfunction Overlay({ className }: AppShellOverlayProps) {\n const { api, state } = useAppShell()\n\n if (!state.isMobile || !state.sidebarOpen) return null\n\n return React.createElement('div', {\n ...api.overlayAriaProps,\n className: cn(\n 'fixed inset-0 z-30 bg-black/50 transition-opacity',\n className,\n ),\n onClick: () => api.closeSidebar(),\n 'data-shell-overlay': '',\n })\n}\n\nOverlay.displayName = 'AppShell.Overlay'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const AppShell = Object.assign(AppShellRoot, {\n Sidebar,\n Main,\n Header,\n Content,\n MobileNav,\n Overlay,\n})\n\nexport type { AppShellConfig, AppShellState, AppShellAPI }\n","import * as React from 'react'\nimport {\n createPageShell,\n type PageShellConfig,\n type SectionConfig,\n type PageShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PageShellContextValue {\n api: PageShellAPI\n}\n\nconst PageShellContext = React.createContext<PageShellContextValue | null>(null)\n\nfunction usePageShell(): PageShellContextValue {\n const ctx = React.useContext(PageShellContext)\n if (!ctx) {\n throw new Error('PageShell compound components must be used within <PageShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// PageShell (root)\n// ---------------------------------------------------------------------------\n\nexport interface PageShellProps {\n config?: PageShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction PageShellRoot({ config, children, className }: PageShellProps) {\n const apiRef = React.useRef<PageShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createPageShell(config)\n }\n const api = apiRef.current\n\n const cssVars = api.getCSSVariables()\n\n const ctxValue = React.useMemo<PageShellContextValue>(\n () => ({ api }),\n [api],\n )\n\n return React.createElement(\n PageShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n className: cn('flex min-h-screen flex-col', className),\n style: cssVars as React.CSSProperties,\n 'data-page-shell': '',\n },\n children,\n ),\n )\n}\n\nPageShellRoot.displayName = 'PageShell'\n\n// ---------------------------------------------------------------------------\n// PageShell.Nav\n// ---------------------------------------------------------------------------\n\nexport interface PageShellNavProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Nav({ children, className }: PageShellNavProps) {\n const { api } = usePageShell()\n\n const stickyClass = api.config.navSticky ? 'sticky top-0 z-40' : ''\n const transparentClass = api.config.navTransparent ? 'bg-transparent' : 'bg-background border-b'\n\n return React.createElement(\n 'nav',\n {\n ...api.navAriaProps,\n className: cn(\n 'flex items-center h-[var(--page-nav-height)] px-4 sm:px-6 lg:px-8',\n stickyClass,\n transparentClass,\n className,\n ),\n },\n children,\n )\n}\n\nNav.displayName = 'PageShell.Nav'\n\n// ---------------------------------------------------------------------------\n// PageShell.Section\n// ---------------------------------------------------------------------------\n\nexport interface PageShellSectionProps extends SectionConfig {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Section({\n children,\n className,\n fullWidth,\n maxWidth,\n padding,\n background,\n}: PageShellSectionProps) {\n const { api } = usePageShell()\n\n const sectionClasses = api.getSectionClasses({ fullWidth, maxWidth, padding, background })\n\n return React.createElement(\n 'section',\n {\n className: cn('py-12', sectionClasses, className),\n },\n children,\n )\n}\n\nSection.displayName = 'PageShell.Section'\n\n// ---------------------------------------------------------------------------\n// PageShell.Footer\n// ---------------------------------------------------------------------------\n\nexport interface PageShellFooterProps {\n children?: React.ReactNode\n className?: string\n columns?: number\n}\n\nfunction Footer({ children, className, columns }: PageShellFooterProps) {\n const { api } = usePageShell()\n const cols = columns ?? api.config.footerColumns\n\n return React.createElement(\n 'footer',\n {\n ...api.footerAriaProps,\n className: cn(\n 'border-t bg-muted py-12 px-4 sm:px-6 lg:px-8',\n className,\n ),\n },\n React.createElement(\n 'div',\n {\n className: `mx-auto max-w-[var(--page-max-width)] grid gap-8`,\n style: {\n gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,\n },\n },\n children,\n ),\n )\n}\n\nFooter.displayName = 'PageShell.Footer'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const PageShell = Object.assign(PageShellRoot, {\n Nav,\n Section,\n Footer,\n})\n\nexport type { PageShellConfig, SectionConfig, PageShellAPI }\n","import * as React from 'react'\nimport {\n createAuthShell,\n type AuthShellConfig,\n type AuthShellAPI,\n} from '@refraction-ui/app-shell'\nimport { cn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface AuthShellContextValue {\n api: AuthShellAPI\n}\n\nconst AuthShellContext = React.createContext<AuthShellContextValue | null>(null)\n\nfunction useAuthShell(): AuthShellContextValue {\n const ctx = React.useContext(AuthShellContext)\n if (!ctx) {\n throw new Error('AuthShell compound components must be used within <AuthShell>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// AuthShell (root)\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellProps {\n config?: AuthShellConfig\n children?: React.ReactNode\n className?: string\n}\n\nfunction AuthShellRoot({ config, children, className }: AuthShellProps) {\n const apiRef = React.useRef<AuthShellAPI | null>(null)\n if (apiRef.current === null) {\n apiRef.current = createAuthShell(config)\n }\n const api = apiRef.current\n\n const ctxValue = React.useMemo<AuthShellContextValue>(\n () => ({ api }),\n [api],\n )\n\n return React.createElement(\n AuthShellContext.Provider,\n { value: ctxValue },\n React.createElement(\n 'div',\n {\n ...api.ariaProps,\n className: cn(api.containerClasses, className),\n 'data-auth-shell': '',\n },\n children,\n ),\n )\n}\n\nAuthShellRoot.displayName = 'AuthShell'\n\n// ---------------------------------------------------------------------------\n// AuthShell.Card\n// ---------------------------------------------------------------------------\n\nexport interface AuthShellCardProps {\n children?: React.ReactNode\n className?: string\n}\n\nfunction Card({ children, className }: AuthShellCardProps) {\n const { api } = useAuthShell()\n\n return React.createElement(\n 'div',\n {\n className: cn(api.cardClasses, className),\n 'data-auth-card': '',\n },\n children,\n )\n}\n\nCard.displayName = 'AuthShell.Card'\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const AuthShell = Object.assign(AuthShellRoot, {\n Card,\n})\n\nexport type { AuthShellConfig, AuthShellAPI }\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n fallback?: string\n size?: AvatarSize\n}\n\nexport interface AvatarAPI {\n /** ARIA attributes to spread on the root element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Image ARIA props */\n imageProps: {\n alt: string\n role: string\n }\n /** Fallback text (initials) */\n fallbackText: string\n /** Current state */\n state: {\n size: AvatarSize\n hasSrc: boolean\n }\n}\n\n/**\n * Extract initials from a name or fallback string.\n * Takes first letter of first two words, uppercased.\n */\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0 || parts[0] === '') return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatar(props: AvatarProps = {}): AvatarAPI {\n const { src, alt = '', fallback = '', size = 'md' } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'img',\n }\n if (alt) {\n ariaProps['aria-label'] = alt\n }\n\n const fallbackText = fallback ? getInitials(fallback) : (alt ? getInitials(alt) : '')\n\n const dataAttributes: Record<string, string> = {\n 'data-slot': 'avatar',\n }\n\n return {\n ariaProps,\n dataAttributes,\n imageProps: {\n alt,\n role: 'img',\n },\n fallbackText,\n state: {\n size,\n hasSrc: !!src,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const avatarTokens: TokenContract = {\n name: 'avatar',\n tokens: {\n bg: { variable: '--rfr-avatar-bg', fallback: 'hsl(var(--muted))' },\n fg: { variable: '--rfr-avatar-fg', fallback: 'hsl(var(--muted-foreground))' },\n border: { variable: '--rfr-avatar-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const avatarVariants = cva({\n base: 'relative flex shrink-0 overflow-hidden rounded-full',\n variants: {\n size: {\n xs: 'h-6 w-6',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarImageVariants = cva({\n base: 'aspect-square h-full w-full object-cover',\n})\n\nexport const avatarFallbackVariants = cva({\n base: 'flex h-full w-full items-center justify-center rounded-full bg-muted text-muted-foreground',\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import * as React from 'react'\nimport {\n createAvatar,\n avatarVariants,\n avatarImageVariants,\n avatarFallbackVariants,\n type AvatarSize,\n} from '@refraction-ui/avatar'\nimport { cn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface AvatarContextValue {\n size: AvatarSize\n imageLoaded: boolean\n imageError: boolean\n setImageLoaded: (loaded: boolean) => void\n setImageError: (error: boolean) => void\n}\n\nconst AvatarContext = React.createContext<AvatarContextValue>({\n size: 'md',\n imageLoaded: false,\n imageError: false,\n setImageLoaded: () => {},\n setImageError: () => {},\n})\n\n/* ─── Avatar (root) ────────────────────────────────────────────── */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: AvatarSize\n}\n\n/**\n * Avatar -- circular image with fallback support.\n * Compound component: use Avatar > AvatarImage + AvatarFallback.\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ size = 'md', className, children, ...props }, ref) => {\n const [imageLoaded, setImageLoaded] = React.useState(false)\n const [imageError, setImageError] = React.useState(false)\n\n const api = createAvatar({ size })\n\n return (\n <AvatarContext.Provider value={{ size, imageLoaded, imageError, setImageLoaded, setImageError }}>\n <span\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </span>\n </AvatarContext.Provider>\n )\n },\n)\nAvatar.displayName = 'Avatar'\n\n/* ─── AvatarImage ──────────────────────────────────────────────── */\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, src, alt = '', onLoad, onError, ...props }, ref) => {\n const { setImageLoaded, setImageError } = React.useContext(AvatarContext)\n\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageLoaded(true)\n onLoad?.(e)\n }\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageError(true)\n onError?.(e)\n }\n\n return (\n <img\n ref={ref}\n className={cn(avatarImageVariants(), className)}\n src={src}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n {...props}\n />\n )\n },\n)\nAvatarImage.displayName = 'AvatarImage'\n\n/* ─── AvatarFallback ───────────────────────────────────────────── */\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallbackProps>(\n ({ className, children, ...props }, ref) => {\n const { size } = React.useContext(AvatarContext)\n\n return (\n <span\n ref={ref}\n className={cn(avatarFallbackVariants({ size }), className)}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\nAvatarFallback.displayName = 'AvatarFallback'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd'\n\nexport interface AvatarUser {\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Avatar image URL */\n src?: string\n /** Online presence status */\n status?: PresenceStatus\n}\n\nexport interface AvatarGroupProps {\n /** Array of users to display */\n users: AvatarUser[]\n /** Maximum number of visible avatars */\n max?: number\n /** Avatar size */\n size?: AvatarSize\n}\n\nexport interface AvatarGroupAPI {\n /** Users that are visible (within max limit) */\n visibleUsers: AvatarUser[]\n /** Number of overflow users */\n overflowCount: number\n /** All overflow users (for tooltip/popup) */\n overflowUsers: AvatarUser[]\n /** ARIA props for the group container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for an individual avatar */\n getAvatarAriaProps(user: AvatarUser): Record<string, unknown>\n /** Get initials from a user's name */\n getInitials(name: string): string\n /** Get the overflow badge ARIA props */\n overflowBadgeProps: Record<string, unknown>\n /** Generated IDs */\n ids: {\n group: string\n label: string\n }\n}\n\nexport const AVATAR_SIZES: Record<AvatarSize, { width: number; fontSize: number }> = {\n xs: { width: 24, fontSize: 10 },\n sm: { width: 32, fontSize: 12 },\n md: { width: 40, fontSize: 14 },\n lg: { width: 48, fontSize: 16 },\n xl: { width: 64, fontSize: 20 },\n}\n\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0) return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatarGroup(props: AvatarGroupProps): AvatarGroupAPI {\n const { users, max, size = 'md' } = props\n\n const visibleUsers = max && max > 0 ? users.slice(0, max) : users\n const overflowUsers = max && max > 0 ? users.slice(max) : []\n const overflowCount = overflowUsers.length\n\n const groupId = generateId('rfr-avatar-group')\n const labelId = generateId('rfr-avatar-group-label')\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'group',\n 'aria-label': `${users.length} users`,\n id: groupId,\n }\n\n function getAvatarAriaProps(user: AvatarUser): Record<string, unknown> {\n const label = user.status ? `${user.name} (${user.status})` : user.name\n return {\n role: 'img',\n 'aria-label': label,\n }\n }\n\n const overflowBadgeProps: Record<string, unknown> = {\n role: 'button',\n 'aria-label': `${overflowCount} more users`,\n }\n\n return {\n visibleUsers,\n overflowCount,\n overflowUsers,\n ariaProps,\n getAvatarAriaProps,\n getInitials,\n overflowBadgeProps,\n ids: {\n group: groupId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const avatarGroupStyles =\n 'flex items-center -space-x-2'\n\nexport const avatarVariants = cva({\n base: 'relative inline-flex items-center justify-center rounded-full border-2 border-background bg-muted text-muted-foreground font-medium overflow-hidden ring-2 ring-background',\n variants: {\n size: {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarOverflowBadgeVariants = cva({\n base: 'relative inline-flex items-center justify-center rounded-full border-2 border-background bg-muted text-muted-foreground font-medium ring-2 ring-background',\n variants: {\n size: {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const avatarImageStyles =\n 'h-full w-full object-cover'\n\nexport const avatarPresenceDotVariants = cva({\n base: 'absolute bottom-0 right-0 rounded-full border-2 border-background',\n variants: {\n size: {\n xs: 'h-2 w-2',\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-3.5 w-3.5',\n xl: 'h-4 w-4',\n },\n status: {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n dnd: 'bg-red-500',\n },\n },\n defaultVariants: {\n size: 'md',\n status: 'offline',\n },\n})\n","import * as React from 'react'\nimport {\n createAvatarGroup,\n avatarGroupStyles,\n avatarVariants,\n avatarOverflowBadgeVariants,\n avatarImageStyles,\n avatarPresenceDotVariants,\n type AvatarUser,\n type AvatarSize,\n} from '@refraction-ui/avatar-group'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface AvatarGroupProps {\n users: AvatarUser[]\n max?: number\n size?: AvatarSize\n className?: string\n}\n\nexport function AvatarGroup({ users, max, size = 'md', className }: AvatarGroupProps) {\n const api = createAvatarGroup({ users, max, size })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(avatarGroupStyles, className) },\n api.visibleUsers.map((user) =>\n React.createElement(\n 'div',\n {\n key: user.id,\n className: avatarVariants({ size }),\n ...api.getAvatarAriaProps(user),\n },\n user.src\n ? React.createElement('img', {\n src: user.src,\n alt: user.name,\n className: avatarImageStyles,\n })\n : React.createElement('span', null, api.getInitials(user.name)),\n user.status &&\n React.createElement('span', {\n className: avatarPresenceDotVariants({ size, status: user.status }),\n }),\n ),\n ),\n api.overflowCount > 0 &&\n React.createElement(\n 'div',\n {\n className: avatarOverflowBadgeVariants({ size }),\n ...api.overflowBadgeProps,\n },\n `+${api.overflowCount}`,\n ),\n )\n}\n\nAvatarGroup.displayName = 'AvatarGroup'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface CardProps {\n /** Optional accessible role override */\n role?: string\n}\n\nexport interface CardAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createCard(props: CardProps = {}): CardAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n if (props.role) {\n ariaProps.role = props.role\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'card' },\n }\n}\n\nexport function createCardHeader(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-header' } }\n}\n\nexport function createCardTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-title' } }\n}\n\nexport function createCardDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-description' } }\n}\n\nexport function createCardContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-content' } }\n}\n\nexport function createCardFooter(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-footer' } }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const cardTokens: TokenContract = {\n name: 'card',\n tokens: {\n bg: { variable: '--rfr-card-bg', fallback: 'hsl(var(--card))' },\n fg: { variable: '--rfr-card-fg', fallback: 'hsl(var(--card-foreground))' },\n border: { variable: '--rfr-card-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const cardVariants = cva({\n base: 'rounded-lg border bg-card text-card-foreground shadow',\n variants: {\n padding: {\n none: '',\n default: 'p-6',\n compact: 'p-4',\n },\n },\n defaultVariants: {\n padding: 'none',\n },\n})\n\nexport const cardHeaderVariants = cva({\n base: 'flex flex-col space-y-1.5 p-6',\n})\n\nexport const cardTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight',\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const cardDescriptionVariants = cva({\n base: 'text-sm text-muted-foreground',\n})\n\nexport const cardContentVariants = cva({\n base: 'p-6 pt-0',\n})\n\nexport const cardFooterVariants = cva({\n base: 'flex items-center p-6 pt-0',\n})\n","import * as React from 'react'\nimport {\n createCard,\n createCardHeader,\n createCardTitle,\n createCardDescription,\n createCardContent,\n createCardFooter,\n cardVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardDescriptionVariants,\n cardContentVariants,\n cardFooterVariants,\n} from '@refraction-ui/card'\nimport { cn } from '@refraction-ui/shared'\n\n/**\n * Card -- a container with rounded corners, border, and shadow.\n */\nexport const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCard()\n return (\n <div\n ref={ref}\n className={cn(cardVariants(), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCard.displayName = 'Card'\n\n/**\n * CardHeader -- top section of a card, typically contains title and description.\n */\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardHeader()\n return (\n <div\n ref={ref}\n className={cn(cardHeaderVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardHeader.displayName = 'CardHeader'\n\n/**\n * CardTitle -- heading within a card header.\n */\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardTitle()\n return (\n <h3\n ref={ref}\n className={cn(cardTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardTitle.displayName = 'CardTitle'\n\n/**\n * CardDescription -- subtext within a card header.\n */\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardDescription()\n return (\n <p\n ref={ref}\n className={cn(cardDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardDescription.displayName = 'CardDescription'\n\n/**\n * CardContent -- main body content area of a card.\n */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardContent()\n return (\n <div\n ref={ref}\n className={cn(cardContentVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardContent.displayName = 'CardContent'\n\n/**\n * CardFooter -- bottom section of a card, typically contains actions.\n */\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const api = createCardFooter()\n return (\n <div\n ref={ref}\n className={cn(cardFooterVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\nCardFooter.displayName = 'CardFooter'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type CheckedState = boolean | 'indeterminate'\n\nexport interface CheckboxProps {\n checked?: CheckedState\n disabled?: boolean\n required?: boolean\n name?: string\n value?: string\n}\n\nexport interface CheckboxAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Current state */\n state: {\n checked: CheckedState\n disabled: boolean\n }\n}\n\nexport function createCheckbox(props: CheckboxProps = {}): CheckboxAPI {\n const { checked = false, disabled = false } = props\n const isInteractive = !disabled\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'checkbox',\n 'aria-checked': checked === 'indeterminate' ? 'mixed' : checked,\n }\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n if (checked === 'indeterminate') {\n dataAttributes['data-state'] = 'indeterminate'\n } else if (checked) {\n dataAttributes['data-state'] = 'checked'\n } else {\n dataAttributes['data-state'] = 'unchecked'\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n state: { checked, disabled },\n }\n}\n\n/** SVG path data for the check icon */\nexport const checkIconPath = 'M20 6L9 17l-5-5'\n\n/** SVG path data for the indeterminate/minus icon */\nexport const indeterminateIconPath = 'M5 12h14'\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const checkboxTokens: TokenContract = {\n name: 'checkbox',\n tokens: {\n bg: { variable: '--rfr-checkbox-bg', fallback: 'hsl(var(--background))' },\n 'bg-checked': { variable: '--rfr-checkbox-bg-checked', fallback: 'hsl(var(--primary))' },\n fg: { variable: '--rfr-checkbox-fg', fallback: 'hsl(var(--primary-foreground))' },\n border: { variable: '--rfr-checkbox-border', fallback: 'hsl(var(--primary))' },\n ring: { variable: '--rfr-checkbox-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const checkboxVariants = cva({\n base: 'peer shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n checked: {\n true: 'bg-primary text-primary-foreground',\n false: 'bg-background',\n indeterminate: 'bg-primary text-primary-foreground',\n },\n size: {\n sm: 'h-3.5 w-3.5',\n default: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n})\n","import * as React from 'react'\nimport {\n createCheckbox,\n checkboxVariants,\n checkIconPath,\n indeterminateIconPath,\n type CheckedState,\n} from '@refraction-ui/checkbox'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface CheckboxProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: CheckedState\n onCheckedChange?: (checked: CheckedState) => void\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Checkbox component -- renders a styled checkbox with check/indeterminate icons.\n *\n * Uses the headless @refraction-ui/checkbox core for state, ARIA, and keyboard handling.\n */\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ checked = false, onCheckedChange, disabled = false, size = 'default', className, ...props }, ref) => {\n const api = createCheckbox({ checked, disabled })\n\n const checkedVariant = checked === 'indeterminate' ? 'indeterminate' : checked ? 'true' : 'false'\n\n const handleClick = () => {\n if (api.isInteractive) {\n if (checked === 'indeterminate') {\n onCheckedChange?.(true)\n } else {\n onCheckedChange?.(!checked)\n }\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ') {\n e.preventDefault()\n if (api.isInteractive) {\n if (checked === 'indeterminate') {\n onCheckedChange?.(true)\n } else {\n onCheckedChange?.(!checked)\n }\n }\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(checkboxVariants({ checked: checkedVariant, size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {checked === true && (\n <svg\n className=\"h-full w-full\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={checkIconPath} />\n </svg>\n )}\n {checked === 'indeterminate' && (\n <svg\n className=\"h-full w-full\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={indeterminateIconPath} />\n </svg>\n )}\n </button>\n )\n },\n)\n\nCheckbox.displayName = 'Checkbox'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys } from '@refraction-ui/shared'\n\nexport type DatePickerView = 'calendar' | 'time'\n\nexport interface DatePickerProps {\n /** Selected date (controlled) */\n value?: Date\n /** Callback when value changes */\n onChange?: (date: Date) => void\n /** Minimum selectable date */\n minDate?: Date\n /** Maximum selectable date */\n maxDate?: Date\n /** Show time selection */\n showTime?: boolean\n /** Display format string */\n format?: string\n /** Placeholder text */\n placeholder?: string\n /** Whether the picker is open (controlled) */\n open?: boolean\n /** Default open state */\n defaultOpen?: boolean\n /** Callback when open changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport interface DatePickerState {\n open: boolean\n selectedDate: Date | undefined\n view: DatePickerView\n hours: number\n minutes: number\n currentMonth: Date\n}\n\nexport interface CalendarDay {\n date: Date\n isToday: boolean\n isSelected: boolean\n isCurrentMonth: boolean\n isDisabled: boolean\n}\n\nexport interface DatePickerAPI {\n /** Current state */\n state: DatePickerState\n /** Calendar days grid (42 cells) */\n days: CalendarDay[]\n /** Open the picker */\n openPicker(): void\n /** Close the picker */\n closePicker(): void\n /** Toggle the picker */\n togglePicker(): void\n /** Select a date from calendar */\n selectDate(date: Date): void\n /** Set hours */\n setHours(hours: number): void\n /** Set minutes */\n setMinutes(minutes: number): void\n /** Navigate to previous month */\n prevMonth(): void\n /** Navigate to next month */\n nextMonth(): void\n /** Switch between calendar and time views */\n setView(view: DatePickerView): void\n /** Format the selected date for display */\n formatDisplay(): string\n /** ARIA attributes for the trigger input */\n triggerProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA attributes for the dropdown */\n dropdownProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the calendar grid */\n gridProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for a day cell */\n getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown>\n /** Keyboard handlers */\n keyboardHandlers: KeyboardHandlerMap\n /** Generated IDs */\n ids: {\n trigger: string\n dropdown: string\n grid: string\n label: string\n }\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction endOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n}\n\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nfunction padZero(n: number): string {\n return n < 10 ? `0${n}` : `${n}`\n}\n\nexport function formatDate(date: Date | undefined, format: string, showTime: boolean): string {\n if (!date) return ''\n const year = date.getFullYear()\n const month = padZero(date.getMonth() + 1)\n const day = padZero(date.getDate())\n const hours = padZero(date.getHours())\n const minutes = padZero(date.getMinutes())\n\n let result = format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n\n if (showTime) {\n result = result.replace('HH', hours).replace('mm', minutes)\n }\n\n return result\n}\n\nexport function createDatePicker(props: DatePickerProps = {}): DatePickerAPI {\n const {\n value,\n onChange,\n minDate,\n maxDate,\n showTime = false,\n format = showTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD',\n placeholder = 'Select date...',\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n } = props\n\n const today = new Date()\n let internalOpen = controlledOpen ?? defaultOpen\n let currentMonth = value ? startOfMonth(value) : startOfMonth(today)\n let view: DatePickerView = 'calendar'\n const hours = value ? value.getHours() : 0\n const minutes = value ? value.getMinutes() : 0\n\n const triggerId = generateId('rfr-datepicker-trigger')\n const dropdownId = generateId('rfr-datepicker-dropdown')\n const gridId = generateId('rfr-datepicker-grid')\n const labelId = generateId('rfr-datepicker-label')\n\n function isOpen(): boolean {\n if (controlledOpen !== undefined) return controlledOpen\n return internalOpen\n }\n\n function isDateDisabled(date: Date): boolean {\n if (minDate && date < startOfDay(minDate)) return true\n if (maxDate && date > endOfDay(maxDate)) return true\n return false\n }\n\n function buildDays(): CalendarDay[] {\n const year = currentMonth.getFullYear()\n const month = currentMonth.getMonth()\n const first = new Date(year, month, 1)\n const startDow = first.getDay()\n const gridStart = new Date(year, month, 1 - startDow)\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + i,\n )\n days.push({\n date,\n isToday: isSameDay(date, today),\n isSelected: value ? isSameDay(date, value) : false,\n isCurrentMonth: date.getMonth() === month,\n isDisabled: isDateDisabled(date),\n })\n }\n return days\n }\n\n function openPicker(): void {\n internalOpen = true\n onOpenChange?.(true)\n }\n\n function closePicker(): void {\n internalOpen = false\n onOpenChange?.(false)\n }\n\n function togglePicker(): void {\n if (isOpen()) {\n closePicker()\n } else {\n openPicker()\n }\n }\n\n function selectDate(date: Date): void {\n if (isDateDisabled(date)) return\n const newDate = new Date(date)\n if (value) {\n newDate.setHours(value.getHours())\n newDate.setMinutes(value.getMinutes())\n }\n onChange?.(newDate)\n if (!showTime) {\n closePicker()\n }\n }\n\n function setHours(h: number): void {\n if (h < 0 || h > 23) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setHours(h)\n onChange?.(newDate)\n }\n\n function setMinutes(m: number): void {\n if (m < 0 || m > 59) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setMinutes(m)\n onChange?.(newDate)\n }\n\n function prevMonth(): void {\n currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)\n }\n\n function nextMonth(): void {\n currentMonth = new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)\n }\n\n function setView(v: DatePickerView): void {\n view = v\n }\n\n function formatDisplay(): string {\n return value ? formatDate(value, format, showTime) : placeholder\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: (e) => {\n e.preventDefault()\n closePicker()\n },\n }\n\n const triggerProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n 'aria-expanded': isOpen(),\n 'aria-controls': dropdownId,\n 'aria-haspopup': 'dialog',\n id: triggerId,\n role: 'combobox',\n }\n\n const dropdownProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-modal': true,\n 'aria-labelledby': labelId,\n id: dropdownId,\n }\n\n const gridProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'grid',\n 'aria-labelledby': labelId,\n id: gridId,\n }\n\n function getDayAriaProps(day: CalendarDay): Partial<AccessibilityProps> & Record<string, unknown> {\n return {\n role: 'gridcell',\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n 'aria-current': day.isToday ? ('date' as const) : undefined,\n 'aria-label': `${DAY_NAMES[day.date.getDay()]}, ${day.date.toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })}`,\n }\n }\n\n return {\n state: {\n open: isOpen(),\n selectedDate: value,\n view,\n hours,\n minutes,\n currentMonth,\n },\n days: buildDays(),\n openPicker,\n closePicker,\n togglePicker,\n selectDate,\n setHours,\n setMinutes,\n prevMonth,\n nextMonth,\n setView,\n formatDisplay,\n triggerProps,\n dropdownProps,\n gridProps,\n getDayAriaProps,\n keyboardHandlers,\n ids: {\n trigger: triggerId,\n dropdown: dropdownId,\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const datePickerTriggerStyles =\n 'inline-flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer'\n\nexport const datePickerDropdownStyles =\n 'absolute z-50 mt-1 rounded-md border bg-popover p-4 text-popover-foreground shadow-md'\n\nexport const datePickerGridStyles = 'w-full border-collapse'\n\nexport const datePickerDayVariants = cva({\n base: 'inline-flex h-8 w-8 items-center justify-center rounded-md text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground',\n variants: {\n state: {\n default: '',\n selected: 'bg-primary text-primary-foreground hover:bg-primary/90',\n today: 'border border-accent-foreground',\n disabled: 'text-muted-foreground opacity-50 pointer-events-none',\n outside: 'text-muted-foreground opacity-30',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n})\n\nexport const datePickerTimeStyles =\n 'flex items-center gap-2 mt-3 pt-3 border-t'\n\nexport const datePickerTimeInputStyles =\n 'w-14 rounded-md border border-input bg-background px-2 py-1 text-sm text-center'\n","import * as React from 'react'\nimport {\n createDatePicker,\n formatDate,\n datePickerTriggerStyles,\n datePickerDropdownStyles,\n datePickerDayVariants,\n datePickerTimeStyles,\n datePickerTimeInputStyles,\n type DatePickerView,\n type CalendarDay,\n} from '@refraction-ui/date-picker'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface DatePickerProps {\n value?: Date\n onChange?: (date: Date) => void\n minDate?: Date\n maxDate?: Date\n showTime?: boolean\n format?: string\n placeholder?: string\n className?: string\n disabled?: boolean\n}\n\nexport function DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n showTime = false,\n format,\n placeholder,\n className,\n disabled = false,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [currentMonth, setCurrentMonth] = React.useState(() =>\n value ? new Date(value.getFullYear(), value.getMonth(), 1) : new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n )\n const [view, setView] = React.useState<DatePickerView>('calendar')\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const api = React.useMemo(\n () =>\n createDatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n showTime,\n format,\n placeholder,\n open,\n onOpenChange: setOpen,\n }),\n [value, onChange, minDate, maxDate, showTime, format, placeholder, open],\n )\n\n // Rebuild days based on the currentMonth state\n const days = React.useMemo(() => {\n const dp = createDatePicker({\n value,\n minDate,\n maxDate,\n open: true,\n })\n // Manually shift the month by adjusting the api\n const tempApi = createDatePicker({\n value,\n minDate,\n maxDate,\n open: true,\n })\n return tempApi.days\n }, [value, minDate, maxDate, currentMonth])\n\n // Close when clicking outside\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [open])\n\n // Close on Escape\n React.useEffect(() => {\n if (!open) return\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault()\n setOpen(false)\n }\n }\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open])\n\n const displayValue = api.formatDisplay()\n\n const handleSelectDate = (date: Date) => {\n const newDate = new Date(date)\n if (value) {\n newDate.setHours(value.getHours())\n newDate.setMinutes(value.getMinutes())\n }\n onChange?.(newDate)\n if (!showTime) {\n setOpen(false)\n }\n }\n\n const handleHoursChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const h = parseInt(e.target.value, 10)\n if (isNaN(h) || h < 0 || h > 23) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setHours(h)\n onChange?.(newDate)\n }\n\n const handleMinutesChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const m = parseInt(e.target.value, 10)\n if (isNaN(m) || m < 0 || m > 59) return\n const newDate = value ? new Date(value) : new Date()\n newDate.setMinutes(m)\n onChange?.(newDate)\n }\n\n const monthLabel = currentMonth.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })\n\n return React.createElement(\n 'div',\n { ref: containerRef, className: cn('relative inline-block', className) },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: cn(datePickerTriggerStyles, disabled && 'opacity-50 cursor-not-allowed'),\n onClick: () => !disabled && setOpen(!open),\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n disabled,\n },\n displayValue,\n ),\n open &&\n React.createElement(\n 'div',\n {\n className: datePickerDropdownStyles,\n role: 'dialog',\n 'aria-modal': true,\n },\n React.createElement(\n 'div',\n { className: 'flex items-center justify-between mb-3' },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'p-1 hover:bg-accent rounded cursor-pointer',\n onClick: () => setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1)),\n 'aria-label': 'Previous month',\n },\n '\\u2039',\n ),\n React.createElement('span', { className: 'text-sm font-medium' }, monthLabel),\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'p-1 hover:bg-accent rounded cursor-pointer',\n onClick: () => setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1)),\n 'aria-label': 'Next month',\n },\n '\\u203A',\n ),\n ),\n React.createElement(\n 'div',\n { className: 'grid grid-cols-7 gap-0 text-center', role: 'grid' },\n ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'].map((d) =>\n React.createElement('div', { key: d, className: 'text-xs text-muted-foreground py-1 font-medium' }, d),\n ),\n api.days.map((day, i) => {\n let state: 'default' | 'selected' | 'today' | 'disabled' | 'outside' = 'default'\n if (day.isDisabled) state = 'disabled'\n else if (day.isSelected) state = 'selected'\n else if (day.isToday) state = 'today'\n else if (!day.isCurrentMonth) state = 'outside'\n\n return React.createElement(\n 'button',\n {\n key: i,\n type: 'button',\n className: datePickerDayVariants({ state }),\n onClick: () => !day.isDisabled && handleSelectDate(day.date),\n disabled: day.isDisabled,\n 'aria-selected': day.isSelected,\n 'aria-disabled': day.isDisabled,\n },\n day.date.getDate(),\n )\n }),\n ),\n showTime &&\n React.createElement(\n 'div',\n { className: datePickerTimeStyles },\n React.createElement('span', { className: 'text-sm text-muted-foreground' }, 'Time:'),\n React.createElement('input', {\n type: 'number',\n min: 0,\n max: 23,\n value: value ? value.getHours() : 0,\n onChange: handleHoursChange,\n className: datePickerTimeInputStyles,\n 'aria-label': 'Hours',\n }),\n React.createElement('span', { className: 'text-muted-foreground' }, ':'),\n React.createElement('input', {\n type: 'number',\n min: 0,\n max: 59,\n value: value ? value.getMinutes() : 0,\n onChange: handleMinutesChange,\n className: datePickerTimeInputStyles,\n 'aria-label': 'Minutes',\n }),\n ),\n ),\n )\n}\n\nDatePicker.displayName = 'DatePicker'\n","export type EmojiCategory =\n | 'smileys'\n | 'people'\n | 'nature'\n | 'food'\n | 'travel'\n | 'activities'\n | 'objects'\n | 'symbols'\n | 'flags'\n\nexport interface EmojiEntry {\n emoji: string\n name: string\n category: EmojiCategory\n keywords: string[]\n}\n\nexport const EMOJI_DATA: Record<EmojiCategory, EmojiEntry[]> = {\n smileys: [\n { emoji: '\\u{1F600}', name: 'grinning face', category: 'smileys', keywords: ['happy', 'smile', 'grin'] },\n { emoji: '\\u{1F603}', name: 'grinning face with big eyes', category: 'smileys', keywords: ['happy', 'smile'] },\n { emoji: '\\u{1F604}', name: 'grinning face with smiling eyes', category: 'smileys', keywords: ['happy', 'joy'] },\n { emoji: '\\u{1F601}', name: 'beaming face', category: 'smileys', keywords: ['happy', 'grin', 'beam'] },\n { emoji: '\\u{1F606}', name: 'grinning squinting face', category: 'smileys', keywords: ['laugh', 'happy'] },\n { emoji: '\\u{1F605}', name: 'grinning face with sweat', category: 'smileys', keywords: ['nervous', 'laugh'] },\n { emoji: '\\u{1F923}', name: 'rolling on the floor laughing', category: 'smileys', keywords: ['lol', 'rofl', 'laugh'] },\n { emoji: '\\u{1F602}', name: 'face with tears of joy', category: 'smileys', keywords: ['laugh', 'cry', 'joy', 'lol'] },\n { emoji: '\\u{1F642}', name: 'slightly smiling face', category: 'smileys', keywords: ['smile', 'happy'] },\n { emoji: '\\u{1F643}', name: 'upside-down face', category: 'smileys', keywords: ['silly', 'sarcasm'] },\n { emoji: '\\u{1F609}', name: 'winking face', category: 'smileys', keywords: ['wink', 'flirt'] },\n { emoji: '\\u{1F60A}', name: 'smiling face with smiling eyes', category: 'smileys', keywords: ['blush', 'happy'] },\n { emoji: '\\u{1F607}', name: 'smiling face with halo', category: 'smileys', keywords: ['angel', 'innocent'] },\n { emoji: '\\u{1F970}', name: 'smiling face with hearts', category: 'smileys', keywords: ['love', 'crush', 'adore'] },\n { emoji: '\\u{1F60D}', name: 'smiling face with heart-eyes', category: 'smileys', keywords: ['love', 'heart'] },\n { emoji: '\\u{1F929}', name: 'star-struck', category: 'smileys', keywords: ['star', 'eyes', 'wow'] },\n { emoji: '\\u{1F618}', name: 'face blowing a kiss', category: 'smileys', keywords: ['kiss', 'love'] },\n { emoji: '\\u{1F617}', name: 'kissing face', category: 'smileys', keywords: ['kiss'] },\n { emoji: '\\u{1F61A}', name: 'kissing face with closed eyes', category: 'smileys', keywords: ['kiss', 'love'] },\n { emoji: '\\u{1F619}', name: 'kissing face with smiling eyes', category: 'smileys', keywords: ['kiss'] },\n { emoji: '\\u{1F60B}', name: 'face savoring food', category: 'smileys', keywords: ['yummy', 'delicious'] },\n { emoji: '\\u{1F61C}', name: 'winking face with tongue', category: 'smileys', keywords: ['tongue', 'wink', 'silly'] },\n { emoji: '\\u{1F61D}', name: 'squinting face with tongue', category: 'smileys', keywords: ['tongue', 'silly'] },\n { emoji: '\\u{1F911}', name: 'money-mouth face', category: 'smileys', keywords: ['money', 'rich'] },\n { emoji: '\\u{1F917}', name: 'hugging face', category: 'smileys', keywords: ['hug', 'warm'] },\n { emoji: '\\u{1F914}', name: 'thinking face', category: 'smileys', keywords: ['think', 'hmm'] },\n { emoji: '\\u{1F910}', name: 'zipper-mouth face', category: 'smileys', keywords: ['secret', 'quiet', 'zip'] },\n { emoji: '\\u{1F928}', name: 'face with raised eyebrow', category: 'smileys', keywords: ['skeptical', 'doubt'] },\n { emoji: '\\u{1F610}', name: 'neutral face', category: 'smileys', keywords: ['meh', 'neutral'] },\n { emoji: '\\u{1F611}', name: 'expressionless face', category: 'smileys', keywords: ['blank', 'expressionless'] },\n ],\n people: [\n { emoji: '\\u{1F44B}', name: 'waving hand', category: 'people', keywords: ['wave', 'hello', 'hi', 'bye'] },\n { emoji: '\\u{1F91A}', name: 'raised back of hand', category: 'people', keywords: ['hand', 'backhand'] },\n { emoji: '\\u{1F590}', name: 'hand with fingers splayed', category: 'people', keywords: ['hand', 'fingers'] },\n { emoji: '\\u270B', name: 'raised hand', category: 'people', keywords: ['hand', 'stop', 'high five'] },\n { emoji: '\\u{1F596}', name: 'vulcan salute', category: 'people', keywords: ['spock', 'star trek'] },\n { emoji: '\\u{1F44C}', name: 'OK hand', category: 'people', keywords: ['ok', 'perfect', 'fine'] },\n { emoji: '\\u270C', name: 'victory hand', category: 'people', keywords: ['peace', 'victory', 'v'] },\n { emoji: '\\u{1F91E}', name: 'crossed fingers', category: 'people', keywords: ['luck', 'hope'] },\n { emoji: '\\u{1F918}', name: 'love-you gesture', category: 'people', keywords: ['love', 'rock'] },\n { emoji: '\\u{1F919}', name: 'call me hand', category: 'people', keywords: ['call', 'phone'] },\n { emoji: '\\u{1F448}', name: 'backhand index pointing left', category: 'people', keywords: ['left', 'point'] },\n { emoji: '\\u{1F449}', name: 'backhand index pointing right', category: 'people', keywords: ['right', 'point'] },\n { emoji: '\\u{1F446}', name: 'backhand index pointing up', category: 'people', keywords: ['up', 'point'] },\n { emoji: '\\u{1F447}', name: 'backhand index pointing down', category: 'people', keywords: ['down', 'point'] },\n { emoji: '\\u261D', name: 'index pointing up', category: 'people', keywords: ['up', 'point'] },\n { emoji: '\\u{1F44D}', name: 'thumbs up', category: 'people', keywords: ['like', 'yes', 'approve', 'thumbsup'] },\n { emoji: '\\u{1F44E}', name: 'thumbs down', category: 'people', keywords: ['dislike', 'no', 'disapprove'] },\n { emoji: '\\u270A', name: 'raised fist', category: 'people', keywords: ['fist', 'power'] },\n { emoji: '\\u{1F44A}', name: 'oncoming fist', category: 'people', keywords: ['punch', 'fist bump'] },\n { emoji: '\\u{1F91B}', name: 'left-facing fist', category: 'people', keywords: ['fist'] },\n { emoji: '\\u{1F91C}', name: 'right-facing fist', category: 'people', keywords: ['fist'] },\n { emoji: '\\u{1F44F}', name: 'clapping hands', category: 'people', keywords: ['clap', 'applause', 'bravo'] },\n { emoji: '\\u{1F64C}', name: 'raising hands', category: 'people', keywords: ['celebrate', 'hooray'] },\n { emoji: '\\u{1F450}', name: 'open hands', category: 'people', keywords: ['hands', 'open'] },\n { emoji: '\\u{1F932}', name: 'palms up together', category: 'people', keywords: ['prayer', 'please'] },\n { emoji: '\\u{1F91D}', name: 'handshake', category: 'people', keywords: ['deal', 'agree', 'shake'] },\n { emoji: '\\u{1F64F}', name: 'folded hands', category: 'people', keywords: ['pray', 'please', 'thank you'] },\n ],\n nature: [\n { emoji: '\\u{1F436}', name: 'dog face', category: 'nature', keywords: ['dog', 'puppy', 'pet'] },\n { emoji: '\\u{1F431}', name: 'cat face', category: 'nature', keywords: ['cat', 'kitten', 'pet'] },\n { emoji: '\\u{1F42D}', name: 'mouse face', category: 'nature', keywords: ['mouse', 'rodent'] },\n { emoji: '\\u{1F439}', name: 'hamster', category: 'nature', keywords: ['hamster', 'pet'] },\n { emoji: '\\u{1F430}', name: 'rabbit face', category: 'nature', keywords: ['rabbit', 'bunny'] },\n { emoji: '\\u{1F98A}', name: 'fox', category: 'nature', keywords: ['fox', 'animal'] },\n { emoji: '\\u{1F43B}', name: 'bear', category: 'nature', keywords: ['bear', 'animal'] },\n { emoji: '\\u{1F43C}', name: 'panda', category: 'nature', keywords: ['panda', 'animal'] },\n { emoji: '\\u{1F428}', name: 'koala', category: 'nature', keywords: ['koala', 'animal'] },\n { emoji: '\\u{1F42F}', name: 'tiger face', category: 'nature', keywords: ['tiger', 'animal'] },\n { emoji: '\\u{1F981}', name: 'lion', category: 'nature', keywords: ['lion', 'animal'] },\n { emoji: '\\u{1F42E}', name: 'cow face', category: 'nature', keywords: ['cow', 'animal'] },\n { emoji: '\\u{1F437}', name: 'pig face', category: 'nature', keywords: ['pig', 'animal'] },\n { emoji: '\\u{1F438}', name: 'frog', category: 'nature', keywords: ['frog', 'animal'] },\n { emoji: '\\u{1F435}', name: 'monkey face', category: 'nature', keywords: ['monkey', 'animal'] },\n { emoji: '\\u{1F412}', name: 'monkey', category: 'nature', keywords: ['monkey', 'animal'] },\n { emoji: '\\u{1F414}', name: 'chicken', category: 'nature', keywords: ['chicken', 'animal'] },\n { emoji: '\\u{1F427}', name: 'penguin', category: 'nature', keywords: ['penguin', 'animal'] },\n { emoji: '\\u{1F426}', name: 'bird', category: 'nature', keywords: ['bird', 'animal'] },\n { emoji: '\\u{1F40A}', name: 'crocodile', category: 'nature', keywords: ['crocodile', 'animal'] },\n { emoji: '\\u{1F422}', name: 'turtle', category: 'nature', keywords: ['turtle', 'slow'] },\n { emoji: '\\u{1F40D}', name: 'snake', category: 'nature', keywords: ['snake', 'animal'] },\n { emoji: '\\u{1F332}', name: 'evergreen tree', category: 'nature', keywords: ['tree', 'pine'] },\n { emoji: '\\u{1F333}', name: 'deciduous tree', category: 'nature', keywords: ['tree'] },\n { emoji: '\\u{1F334}', name: 'palm tree', category: 'nature', keywords: ['palm', 'tree', 'tropical'] },\n { emoji: '\\u{1F335}', name: 'cactus', category: 'nature', keywords: ['cactus', 'desert'] },\n { emoji: '\\u{1F337}', name: 'tulip', category: 'nature', keywords: ['flower', 'tulip'] },\n { emoji: '\\u{1F339}', name: 'rose', category: 'nature', keywords: ['flower', 'rose', 'love'] },\n ],\n food: [\n { emoji: '\\u{1F34E}', name: 'red apple', category: 'food', keywords: ['apple', 'fruit'] },\n { emoji: '\\u{1F34A}', name: 'tangerine', category: 'food', keywords: ['orange', 'fruit'] },\n { emoji: '\\u{1F34B}', name: 'lemon', category: 'food', keywords: ['lemon', 'fruit'] },\n { emoji: '\\u{1F34C}', name: 'banana', category: 'food', keywords: ['banana', 'fruit'] },\n { emoji: '\\u{1F349}', name: 'watermelon', category: 'food', keywords: ['watermelon', 'fruit'] },\n { emoji: '\\u{1F347}', name: 'grapes', category: 'food', keywords: ['grapes', 'fruit'] },\n { emoji: '\\u{1F353}', name: 'strawberry', category: 'food', keywords: ['strawberry', 'fruit'] },\n { emoji: '\\u{1F352}', name: 'cherries', category: 'food', keywords: ['cherry', 'fruit'] },\n { emoji: '\\u{1F351}', name: 'peach', category: 'food', keywords: ['peach', 'fruit'] },\n { emoji: '\\u{1F34D}', name: 'pineapple', category: 'food', keywords: ['pineapple', 'fruit'] },\n { emoji: '\\u{1F354}', name: 'hamburger', category: 'food', keywords: ['burger', 'fast food'] },\n { emoji: '\\u{1F355}', name: 'pizza', category: 'food', keywords: ['pizza', 'food'] },\n { emoji: '\\u{1F32E}', name: 'taco', category: 'food', keywords: ['taco', 'mexican'] },\n { emoji: '\\u{1F32F}', name: 'burrito', category: 'food', keywords: ['burrito', 'mexican'] },\n { emoji: '\\u{1F35F}', name: 'french fries', category: 'food', keywords: ['fries', 'fast food'] },\n { emoji: '\\u{1F357}', name: 'poultry leg', category: 'food', keywords: ['chicken', 'meat'] },\n { emoji: '\\u{1F356}', name: 'meat on bone', category: 'food', keywords: ['meat', 'bone'] },\n { emoji: '\\u{1F363}', name: 'sushi', category: 'food', keywords: ['sushi', 'japanese'] },\n { emoji: '\\u{1F370}', name: 'shortcake', category: 'food', keywords: ['cake', 'dessert'] },\n { emoji: '\\u{1F36B}', name: 'chocolate bar', category: 'food', keywords: ['chocolate', 'candy'] },\n { emoji: '\\u{1F369}', name: 'doughnut', category: 'food', keywords: ['donut', 'dessert'] },\n { emoji: '\\u{1F36A}', name: 'cookie', category: 'food', keywords: ['cookie', 'dessert'] },\n { emoji: '\\u2615', name: 'hot beverage', category: 'food', keywords: ['coffee', 'tea', 'drink'] },\n { emoji: '\\u{1F37A}', name: 'beer mug', category: 'food', keywords: ['beer', 'drink'] },\n { emoji: '\\u{1F377}', name: 'wine glass', category: 'food', keywords: ['wine', 'drink'] },\n ],\n travel: [\n { emoji: '\\u{1F697}', name: 'automobile', category: 'travel', keywords: ['car', 'drive'] },\n { emoji: '\\u{1F695}', name: 'taxi', category: 'travel', keywords: ['taxi', 'cab'] },\n { emoji: '\\u{1F68C}', name: 'bus', category: 'travel', keywords: ['bus', 'transit'] },\n { emoji: '\\u{1F682}', name: 'locomotive', category: 'travel', keywords: ['train', 'rail'] },\n { emoji: '\\u2708', name: 'airplane', category: 'travel', keywords: ['plane', 'fly', 'travel'] },\n { emoji: '\\u{1F680}', name: 'rocket', category: 'travel', keywords: ['rocket', 'space', 'launch'] },\n { emoji: '\\u{1F6F8}', name: 'flying saucer', category: 'travel', keywords: ['ufo', 'alien'] },\n { emoji: '\\u{1F6A2}', name: 'ship', category: 'travel', keywords: ['ship', 'boat', 'cruise'] },\n { emoji: '\\u{1F3E0}', name: 'house', category: 'travel', keywords: ['house', 'home'] },\n { emoji: '\\u{1F3E2}', name: 'office building', category: 'travel', keywords: ['office', 'building', 'work'] },\n { emoji: '\\u{1F3EB}', name: 'school', category: 'travel', keywords: ['school', 'education'] },\n { emoji: '\\u{1F3E5}', name: 'hospital', category: 'travel', keywords: ['hospital', 'health'] },\n { emoji: '\\u{1F30D}', name: 'globe showing Europe-Africa', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F30E}', name: 'globe showing Americas', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F30F}', name: 'globe showing Asia-Australia', category: 'travel', keywords: ['earth', 'globe', 'world'] },\n { emoji: '\\u{1F5FC}', name: 'Tokyo tower', category: 'travel', keywords: ['tokyo', 'japan', 'tower'] },\n { emoji: '\\u{1F5FD}', name: 'Statue of Liberty', category: 'travel', keywords: ['statue', 'liberty', 'new york'] },\n { emoji: '\\u26F0', name: 'mountain', category: 'travel', keywords: ['mountain', 'nature'] },\n { emoji: '\\u{1F3D6}', name: 'beach with umbrella', category: 'travel', keywords: ['beach', 'vacation'] },\n { emoji: '\\u{1F3DD}', name: 'desert island', category: 'travel', keywords: ['island', 'tropical'] },\n ],\n activities: [\n { emoji: '\\u26BD', name: 'soccer ball', category: 'activities', keywords: ['soccer', 'football', 'sport'] },\n { emoji: '\\u{1F3C0}', name: 'basketball', category: 'activities', keywords: ['basketball', 'sport'] },\n { emoji: '\\u{1F3C8}', name: 'american football', category: 'activities', keywords: ['football', 'sport'] },\n { emoji: '\\u26BE', name: 'baseball', category: 'activities', keywords: ['baseball', 'sport'] },\n { emoji: '\\u{1F3BE}', name: 'tennis', category: 'activities', keywords: ['tennis', 'sport'] },\n { emoji: '\\u{1F3D0}', name: 'volleyball', category: 'activities', keywords: ['volleyball', 'sport'] },\n { emoji: '\\u{1F3B1}', name: 'pool 8 ball', category: 'activities', keywords: ['pool', 'billiards'] },\n { emoji: '\\u{1F3D3}', name: 'ping pong', category: 'activities', keywords: ['table tennis', 'sport'] },\n { emoji: '\\u{1F3C6}', name: 'trophy', category: 'activities', keywords: ['trophy', 'winner', 'award'] },\n { emoji: '\\u{1F3C5}', name: 'sports medal', category: 'activities', keywords: ['medal', 'winner'] },\n { emoji: '\\u{1F947}', name: 'first place medal', category: 'activities', keywords: ['gold', 'first', 'winner'] },\n { emoji: '\\u{1F948}', name: 'second place medal', category: 'activities', keywords: ['silver', 'second'] },\n { emoji: '\\u{1F949}', name: 'third place medal', category: 'activities', keywords: ['bronze', 'third'] },\n { emoji: '\\u{1F3AF}', name: 'bullseye', category: 'activities', keywords: ['target', 'dart'] },\n { emoji: '\\u{1F3AE}', name: 'video game', category: 'activities', keywords: ['game', 'controller'] },\n { emoji: '\\u{1F3B2}', name: 'game die', category: 'activities', keywords: ['dice', 'game'] },\n { emoji: '\\u{1F3B5}', name: 'musical note', category: 'activities', keywords: ['music', 'note'] },\n { emoji: '\\u{1F3B6}', name: 'musical notes', category: 'activities', keywords: ['music', 'notes'] },\n { emoji: '\\u{1F3A4}', name: 'microphone', category: 'activities', keywords: ['karaoke', 'sing', 'mic'] },\n { emoji: '\\u{1F3AC}', name: 'clapper board', category: 'activities', keywords: ['movie', 'film'] },\n ],\n objects: [\n { emoji: '\\u{1F4F1}', name: 'mobile phone', category: 'objects', keywords: ['phone', 'mobile', 'cell'] },\n { emoji: '\\u{1F4BB}', name: 'laptop', category: 'objects', keywords: ['laptop', 'computer'] },\n { emoji: '\\u{1F5A5}', name: 'desktop computer', category: 'objects', keywords: ['computer', 'desktop'] },\n { emoji: '\\u2328', name: 'keyboard', category: 'objects', keywords: ['keyboard', 'type'] },\n { emoji: '\\u{1F4F7}', name: 'camera', category: 'objects', keywords: ['camera', 'photo'] },\n { emoji: '\\u{1F4FA}', name: 'television', category: 'objects', keywords: ['tv', 'television'] },\n { emoji: '\\u{1F4E7}', name: 'e-mail', category: 'objects', keywords: ['email', 'mail'] },\n { emoji: '\\u{1F4DD}', name: 'memo', category: 'objects', keywords: ['memo', 'note', 'write'] },\n { emoji: '\\u{1F4D6}', name: 'open book', category: 'objects', keywords: ['book', 'read'] },\n { emoji: '\\u{1F4DA}', name: 'books', category: 'objects', keywords: ['books', 'library'] },\n { emoji: '\\u{1F4C5}', name: 'calendar', category: 'objects', keywords: ['calendar', 'date'] },\n { emoji: '\\u{1F4CB}', name: 'clipboard', category: 'objects', keywords: ['clipboard', 'paste'] },\n { emoji: '\\u{1F4CC}', name: 'pushpin', category: 'objects', keywords: ['pin', 'pushpin'] },\n { emoji: '\\u{1F4CE}', name: 'paperclip', category: 'objects', keywords: ['paperclip', 'attach'] },\n { emoji: '\\u{1F511}', name: 'key', category: 'objects', keywords: ['key', 'lock'] },\n { emoji: '\\u{1F512}', name: 'locked', category: 'objects', keywords: ['lock', 'secure'] },\n { emoji: '\\u{1F513}', name: 'unlocked', category: 'objects', keywords: ['unlock', 'open'] },\n { emoji: '\\u{1F50D}', name: 'magnifying glass tilted left', category: 'objects', keywords: ['search', 'find'] },\n { emoji: '\\u{1F4A1}', name: 'light bulb', category: 'objects', keywords: ['idea', 'light'] },\n { emoji: '\\u{1F527}', name: 'wrench', category: 'objects', keywords: ['tool', 'wrench', 'fix'] },\n { emoji: '\\u{1F528}', name: 'hammer', category: 'objects', keywords: ['tool', 'hammer', 'build'] },\n { emoji: '\\u2699', name: 'gear', category: 'objects', keywords: ['settings', 'gear', 'config'] },\n ],\n symbols: [\n { emoji: '\\u2764', name: 'red heart', category: 'symbols', keywords: ['heart', 'love'] },\n { emoji: '\\u{1F9E1}', name: 'orange heart', category: 'symbols', keywords: ['heart', 'orange'] },\n { emoji: '\\u{1F49B}', name: 'yellow heart', category: 'symbols', keywords: ['heart', 'yellow'] },\n { emoji: '\\u{1F49A}', name: 'green heart', category: 'symbols', keywords: ['heart', 'green'] },\n { emoji: '\\u{1F499}', name: 'blue heart', category: 'symbols', keywords: ['heart', 'blue'] },\n { emoji: '\\u{1F49C}', name: 'purple heart', category: 'symbols', keywords: ['heart', 'purple'] },\n { emoji: '\\u{1F494}', name: 'broken heart', category: 'symbols', keywords: ['heart', 'broken', 'sad'] },\n { emoji: '\\u{1F495}', name: 'two hearts', category: 'symbols', keywords: ['heart', 'love'] },\n { emoji: '\\u{1F4AF}', name: 'hundred points', category: 'symbols', keywords: ['100', 'perfect', 'score'] },\n { emoji: '\\u{1F4A5}', name: 'collision', category: 'symbols', keywords: ['boom', 'bang', 'explosion'] },\n { emoji: '\\u{1F4AB}', name: 'dizzy', category: 'symbols', keywords: ['star', 'dizzy'] },\n { emoji: '\\u2728', name: 'sparkles', category: 'symbols', keywords: ['sparkle', 'shine', 'star'] },\n { emoji: '\\u{1F525}', name: 'fire', category: 'symbols', keywords: ['fire', 'hot', 'flame'] },\n { emoji: '\\u2705', name: 'check mark button', category: 'symbols', keywords: ['check', 'done', 'yes'] },\n { emoji: '\\u274C', name: 'cross mark', category: 'symbols', keywords: ['no', 'wrong', 'x'] },\n { emoji: '\\u2757', name: 'exclamation mark', category: 'symbols', keywords: ['exclamation', 'warning', 'alert'] },\n { emoji: '\\u2753', name: 'question mark', category: 'symbols', keywords: ['question', 'what'] },\n { emoji: '\\u{1F6AB}', name: 'prohibited', category: 'symbols', keywords: ['no', 'forbidden', 'stop'] },\n { emoji: '\\u267B', name: 'recycling symbol', category: 'symbols', keywords: ['recycle', 'green'] },\n { emoji: '\\u{1F4AC}', name: 'speech balloon', category: 'symbols', keywords: ['speech', 'chat', 'message'] },\n { emoji: '\\u{1F4AD}', name: 'thought balloon', category: 'symbols', keywords: ['thought', 'think'] },\n { emoji: '\\u{1F514}', name: 'bell', category: 'symbols', keywords: ['bell', 'notification', 'alert'] },\n ],\n flags: [\n { emoji: '\\u{1F1FA}\\u{1F1F8}', name: 'flag: United States', category: 'flags', keywords: ['us', 'usa', 'america'] },\n { emoji: '\\u{1F1EC}\\u{1F1E7}', name: 'flag: United Kingdom', category: 'flags', keywords: ['uk', 'britain', 'england'] },\n { emoji: '\\u{1F1E8}\\u{1F1E6}', name: 'flag: Canada', category: 'flags', keywords: ['canada'] },\n { emoji: '\\u{1F1E6}\\u{1F1FA}', name: 'flag: Australia', category: 'flags', keywords: ['australia'] },\n { emoji: '\\u{1F1EF}\\u{1F1F5}', name: 'flag: Japan', category: 'flags', keywords: ['japan'] },\n { emoji: '\\u{1F1EB}\\u{1F1F7}', name: 'flag: France', category: 'flags', keywords: ['france'] },\n { emoji: '\\u{1F1E9}\\u{1F1EA}', name: 'flag: Germany', category: 'flags', keywords: ['germany'] },\n { emoji: '\\u{1F1EE}\\u{1F1F3}', name: 'flag: India', category: 'flags', keywords: ['india'] },\n { emoji: '\\u{1F1E7}\\u{1F1F7}', name: 'flag: Brazil', category: 'flags', keywords: ['brazil'] },\n { emoji: '\\u{1F1F0}\\u{1F1F7}', name: 'flag: South Korea', category: 'flags', keywords: ['korea', 'south korea'] },\n { emoji: '\\u{1F1EE}\\u{1F1F9}', name: 'flag: Italy', category: 'flags', keywords: ['italy'] },\n { emoji: '\\u{1F1EA}\\u{1F1F8}', name: 'flag: Spain', category: 'flags', keywords: ['spain'] },\n { emoji: '\\u{1F1F2}\\u{1F1FD}', name: 'flag: Mexico', category: 'flags', keywords: ['mexico'] },\n { emoji: '\\u{1F1F7}\\u{1F1FA}', name: 'flag: Russia', category: 'flags', keywords: ['russia'] },\n { emoji: '\\u{1F1E8}\\u{1F1F3}', name: 'flag: China', category: 'flags', keywords: ['china'] },\n { emoji: '\\u{1F3C1}', name: 'chequered flag', category: 'flags', keywords: ['finish', 'race'] },\n { emoji: '\\u{1F3F3}', name: 'white flag', category: 'flags', keywords: ['surrender', 'peace'] },\n { emoji: '\\u{1F3F4}', name: 'black flag', category: 'flags', keywords: ['pirate'] },\n { emoji: '\\u{1F6A9}', name: 'triangular flag', category: 'flags', keywords: ['flag', 'marker'] },\n ],\n}\n\n/** All categories in display order */\nexport const EMOJI_CATEGORIES: EmojiCategory[] = [\n 'smileys',\n 'people',\n 'nature',\n 'food',\n 'travel',\n 'activities',\n 'objects',\n 'symbols',\n 'flags',\n]\n\n/** Category display labels */\nexport const CATEGORY_LABELS: Record<EmojiCategory, string> = {\n smileys: 'Smileys & Emotion',\n people: 'People & Body',\n nature: 'Animals & Nature',\n food: 'Food & Drink',\n travel: 'Travel & Places',\n activities: 'Activities',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n}\n\n/** Get all emojis as a flat array */\nexport function getAllEmojis(): EmojiEntry[] {\n return EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat])\n}\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\nimport {\n EMOJI_DATA,\n EMOJI_CATEGORIES,\n CATEGORY_LABELS,\n getAllEmojis,\n type EmojiCategory,\n type EmojiEntry,\n} from './emoji-data.js'\n\nexport interface EmojiPickerProps {\n /** Callback when an emoji is selected */\n onSelect?: (emoji: EmojiEntry) => void\n /** Initial search query */\n search?: string\n /** List of recently used emojis */\n recentEmojis?: EmojiEntry[]\n /** Maximum recent emojis to show */\n maxRecent?: number\n}\n\nexport interface EmojiPickerState {\n search: string\n activeCategory: EmojiCategory\n filteredEmojis: EmojiEntry[]\n recentEmojis: EmojiEntry[]\n}\n\nexport interface EmojiPickerAPI {\n /** Current state */\n state: EmojiPickerState\n /** Set search query */\n setSearch(query: string): void\n /** Select an emoji */\n select(emoji: EmojiEntry): void\n /** Set active category tab */\n setCategory(category: EmojiCategory): void\n /** Category tabs with labels */\n categoryTabs: { category: EmojiCategory; label: string; emoji: string }[]\n /** ARIA props for the picker container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the search input */\n searchInputProps: Record<string, unknown>\n /** Get ARIA props for an emoji button */\n getEmojiAriaProps(emoji: EmojiEntry): Record<string, unknown>\n /** Generated IDs */\n ids: {\n container: string\n search: string\n grid: string\n label: string\n }\n}\n\nconst CATEGORY_ICONS: Record<EmojiCategory, string> = {\n smileys: '\\u{1F600}',\n people: '\\u{1F44B}',\n nature: '\\u{1F436}',\n food: '\\u{1F34E}',\n travel: '\\u{1F697}',\n activities: '\\u26BD',\n objects: '\\u{1F4BB}',\n symbols: '\\u2764',\n flags: '\\u{1F3C1}',\n}\n\nexport function createEmojiPicker(props: EmojiPickerProps = {}): EmojiPickerAPI {\n const {\n onSelect,\n search: initialSearch = '',\n recentEmojis: initialRecent = [],\n maxRecent = 20,\n } = props\n\n let searchQuery = initialSearch\n let activeCategory: EmojiCategory = 'smileys'\n let recentEmojis = [...initialRecent].slice(0, maxRecent)\n\n const containerId = generateId('rfr-emoji-picker')\n const searchId = generateId('rfr-emoji-search')\n const gridId = generateId('rfr-emoji-grid')\n const labelId = generateId('rfr-emoji-label')\n\n function getFilteredEmojis(): EmojiEntry[] {\n if (searchQuery.trim()) {\n const query = searchQuery.toLowerCase().trim()\n return getAllEmojis().filter(\n (entry) =>\n entry.name.toLowerCase().includes(query) ||\n entry.keywords.some((kw) => kw.toLowerCase().includes(query)),\n )\n }\n return EMOJI_DATA[activeCategory]\n }\n\n function setSearch(query: string): void {\n searchQuery = query\n }\n\n function select(emoji: EmojiEntry): void {\n // Add to recent (deduplicate, prepend)\n recentEmojis = [\n emoji,\n ...recentEmojis.filter((e) => e.emoji !== emoji.emoji),\n ].slice(0, maxRecent)\n onSelect?.(emoji)\n }\n\n function setCategory(category: EmojiCategory): void {\n activeCategory = category\n searchQuery = ''\n }\n\n const categoryTabs = EMOJI_CATEGORIES.map((cat) => ({\n category: cat,\n label: CATEGORY_LABELS[cat],\n emoji: CATEGORY_ICONS[cat],\n }))\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'dialog',\n 'aria-labelledby': labelId,\n id: containerId,\n }\n\n const searchInputProps: Record<string, unknown> = {\n type: 'search',\n role: 'searchbox',\n 'aria-label': 'Search emojis',\n id: searchId,\n placeholder: 'Search emojis...',\n autoComplete: 'off',\n }\n\n function getEmojiAriaProps(emoji: EmojiEntry): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-label': `${emoji.name} ${emoji.emoji}`,\n title: emoji.name,\n }\n }\n\n return {\n state: {\n search: searchQuery,\n activeCategory,\n filteredEmojis: getFilteredEmojis(),\n recentEmojis,\n },\n setSearch,\n select,\n setCategory,\n categoryTabs,\n ariaProps,\n searchInputProps,\n getEmojiAriaProps,\n ids: {\n container: containerId,\n search: searchId,\n grid: gridId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const emojiPickerContainerStyles =\n 'w-80 rounded-lg border bg-popover text-popover-foreground shadow-md'\n\nexport const emojiPickerSearchStyles =\n 'w-full border-b px-3 py-2 text-sm bg-transparent outline-none placeholder:text-muted-foreground'\n\nexport const emojiPickerCategoryBarStyles =\n 'flex border-b px-1'\n\nexport const emojiPickerCategoryTabVariants = cva({\n base: 'flex-1 py-1.5 text-center text-lg cursor-pointer hover:bg-accent rounded-md transition-colors',\n variants: {\n state: {\n active: 'bg-accent',\n inactive: '',\n },\n },\n defaultVariants: {\n state: 'inactive',\n },\n})\n\nexport const emojiPickerGridStyles =\n 'grid grid-cols-8 gap-0.5 p-2 max-h-64 overflow-y-auto'\n\nexport const emojiPickerEmojiButtonStyles =\n 'flex items-center justify-center h-8 w-8 rounded cursor-pointer text-lg hover:bg-accent transition-colors'\n\nexport const emojiPickerSectionLabelStyles =\n 'px-2 py-1 text-xs font-medium text-muted-foreground'\n","import * as React from 'react'\nimport {\n createEmojiPicker,\n EMOJI_DATA,\n EMOJI_CATEGORIES,\n CATEGORY_LABELS,\n emojiPickerContainerStyles,\n emojiPickerSearchStyles,\n emojiPickerCategoryBarStyles,\n emojiPickerCategoryTabVariants,\n emojiPickerGridStyles,\n emojiPickerEmojiButtonStyles,\n emojiPickerSectionLabelStyles,\n type EmojiCategory,\n type EmojiEntry,\n} from '@refraction-ui/emoji-picker'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface EmojiPickerProps {\n onSelect?: (emoji: EmojiEntry) => void\n recentEmojis?: EmojiEntry[]\n className?: string\n}\n\nexport function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className }: EmojiPickerProps) {\n const [search, setSearch] = React.useState('')\n const [activeCategory, setActiveCategory] = React.useState<EmojiCategory>('smileys')\n const [recentEmojis, setRecentEmojis] = React.useState<EmojiEntry[]>(initialRecent)\n\n const api = React.useMemo(\n () =>\n createEmojiPicker({\n onSelect: undefined,\n search,\n recentEmojis,\n }),\n [search, recentEmojis],\n )\n\n const filteredEmojis = React.useMemo(() => {\n if (search.trim()) {\n const query = search.toLowerCase().trim()\n const allEmojis = EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat])\n return allEmojis.filter(\n (entry) =>\n entry.name.toLowerCase().includes(query) ||\n entry.keywords.some((kw) => kw.toLowerCase().includes(query)),\n )\n }\n return EMOJI_DATA[activeCategory]\n }, [search, activeCategory])\n\n const handleSelect = (emoji: EmojiEntry) => {\n setRecentEmojis((prev) =>\n [emoji, ...prev.filter((e) => e.emoji !== emoji.emoji)].slice(0, 20),\n )\n onSelect?.(emoji)\n }\n\n const handleCategoryClick = (cat: EmojiCategory) => {\n setActiveCategory(cat)\n setSearch('')\n }\n\n return React.createElement(\n 'div',\n { className: cn(emojiPickerContainerStyles, className), ...api.ariaProps },\n // Search input\n React.createElement('input', {\n ...api.searchInputProps,\n className: emojiPickerSearchStyles,\n value: search,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => setSearch(e.target.value),\n }),\n // Category tabs\n !search &&\n React.createElement(\n 'div',\n { className: emojiPickerCategoryBarStyles },\n api.categoryTabs.map((tab) =>\n React.createElement(\n 'button',\n {\n key: tab.category,\n type: 'button',\n className: emojiPickerCategoryTabVariants({\n state: tab.category === activeCategory ? 'active' : 'inactive',\n }),\n onClick: () => handleCategoryClick(tab.category),\n title: tab.label,\n 'aria-label': tab.label,\n },\n tab.emoji,\n ),\n ),\n ),\n // Recent emojis section\n !search &&\n recentEmojis.length > 0 &&\n React.createElement(\n 'div',\n null,\n React.createElement('div', { className: emojiPickerSectionLabelStyles }, 'Recent'),\n React.createElement(\n 'div',\n { className: emojiPickerGridStyles },\n recentEmojis.map((emoji, i) =>\n React.createElement(\n 'button',\n {\n key: `recent-${emoji.emoji}-${i}`,\n type: 'button',\n className: emojiPickerEmojiButtonStyles,\n onClick: () => handleSelect(emoji),\n ...api.getEmojiAriaProps(emoji),\n },\n emoji.emoji,\n ),\n ),\n ),\n ),\n // Emoji grid\n React.createElement(\n 'div',\n null,\n !search &&\n React.createElement(\n 'div',\n { className: emojiPickerSectionLabelStyles },\n CATEGORY_LABELS[activeCategory],\n ),\n React.createElement(\n 'div',\n { className: emojiPickerGridStyles },\n filteredEmojis.map((emoji, i) =>\n React.createElement(\n 'button',\n {\n key: `${emoji.emoji}-${i}`,\n type: 'button',\n className: emojiPickerEmojiButtonStyles,\n onClick: () => handleSelect(emoji),\n ...api.getEmojiAriaProps(emoji),\n },\n emoji.emoji,\n ),\n ),\n filteredEmojis.length === 0 &&\n React.createElement(\n 'div',\n { className: 'col-span-8 text-center text-sm text-muted-foreground py-4' },\n 'No emojis found',\n ),\n ),\n ),\n )\n}\n\nEmojiPicker.displayName = 'EmojiPicker'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport type FileStatus = 'pending' | 'uploading' | 'complete' | 'error'\n\nexport interface FileEntry {\n /** Unique ID for this file entry */\n id: string\n /** Original file name */\n name: string\n /** File size in bytes */\n size: number\n /** MIME type */\n type: string\n /** Upload progress 0-100 */\n progress: number\n /** Current status */\n status: FileStatus\n /** Error message if status is 'error' */\n error?: string\n}\n\nexport interface FileUploadProps {\n /** Accepted file types (e.g., 'image/*,.pdf') */\n accept?: string\n /** Max file size in bytes */\n maxSize?: number\n /** Max number of files */\n maxFiles?: number\n /** Allow multiple file selection */\n multiple?: boolean\n /** Callback when files are selected/added */\n onFilesSelected?: (files: FileEntry[]) => void\n /** Callback when a validation error occurs */\n onError?: (errors: FileUploadError[]) => void\n}\n\nexport interface FileUploadError {\n file: string\n code: 'type' | 'size' | 'count'\n message: string\n}\n\nexport interface FileUploadState {\n files: FileEntry[]\n isDragging: boolean\n}\n\nexport interface FileUploadAPI {\n /** Current state */\n state: FileUploadState\n /** Add files (validates type, size, count) */\n addFiles(files: Array<{ name: string; size: number; type: string }>): void\n /** Remove a file by ID */\n removeFile(id: string): void\n /** Update a file's progress */\n updateProgress(id: string, progress: number): void\n /** Set a file's status */\n setStatus(id: string, status: FileStatus, error?: string): void\n /** ARIA props for the drop zone */\n dropZoneProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** ARIA props for the file input */\n inputProps: Record<string, unknown>\n /** Drag event handlers (for headless use) */\n dragHandlers: {\n onDragEnter(): void\n onDragLeave(): void\n onDragOver(): void\n onDrop(): void\n }\n /** Generated IDs */\n ids: {\n dropZone: string\n input: string\n label: string\n fileList: string\n }\n}\n\nfunction matchesAccept(fileType: string, fileName: string, accept: string): boolean {\n if (!accept) return true\n const acceptedTypes = accept.split(',').map((t) => t.trim())\n for (const accepted of acceptedTypes) {\n if (accepted.startsWith('.')) {\n // Extension match\n if (fileName.toLowerCase().endsWith(accepted.toLowerCase())) return true\n } else if (accepted.endsWith('/*')) {\n // Wildcard MIME match (e.g., 'image/*')\n const prefix = accepted.slice(0, -2)\n if (fileType.startsWith(prefix)) return true\n } else {\n // Exact MIME match\n if (fileType === accepted) return true\n }\n }\n return false\n}\n\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B'\n const units = ['B', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n const size = bytes / Math.pow(1024, i)\n return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`\n}\n\nexport function createFileUpload(props: FileUploadProps = {}): FileUploadAPI {\n const {\n accept,\n maxSize,\n maxFiles,\n multiple = false,\n onFilesSelected,\n onError,\n } = props\n\n let files: FileEntry[] = []\n let isDragging = false\n\n const dropZoneId = generateId('rfr-file-upload-zone')\n const inputId = generateId('rfr-file-upload-input')\n const labelId = generateId('rfr-file-upload-label')\n const fileListId = generateId('rfr-file-upload-list')\n\n function addFiles(incoming: Array<{ name: string; size: number; type: string }>): void {\n const errors: FileUploadError[] = []\n const validFiles: FileEntry[] = []\n\n // Check count limit\n const availableSlots = maxFiles ? maxFiles - files.length : Infinity\n if (!multiple && incoming.length > 1) {\n // Only take the first file if not multiple\n incoming = [incoming[0]]\n }\n\n for (let i = 0; i < incoming.length; i++) {\n const file = incoming[i]\n\n if (validFiles.length >= availableSlots) {\n errors.push({\n file: file.name,\n code: 'count',\n message: `Maximum of ${maxFiles} files allowed`,\n })\n continue\n }\n\n // Validate type\n if (accept && !matchesAccept(file.type, file.name, accept)) {\n errors.push({\n file: file.name,\n code: 'type',\n message: `File type \"${file.type || 'unknown'}\" is not accepted`,\n })\n continue\n }\n\n // Validate size\n if (maxSize && file.size > maxSize) {\n errors.push({\n file: file.name,\n code: 'size',\n message: `File size ${formatFileSize(file.size)} exceeds limit of ${formatFileSize(maxSize)}`,\n })\n continue\n }\n\n validFiles.push({\n id: generateId('rfr-file'),\n name: file.name,\n size: file.size,\n type: file.type,\n progress: 0,\n status: 'pending',\n })\n }\n\n if (errors.length > 0) {\n onError?.(errors)\n }\n\n if (validFiles.length > 0) {\n if (!multiple) {\n files = validFiles.slice(0, 1)\n } else {\n files = [...files, ...validFiles]\n }\n onFilesSelected?.(files)\n }\n }\n\n function removeFile(id: string): void {\n files = files.filter((f) => f.id !== id)\n }\n\n function updateProgress(id: string, progress: number): void {\n files = files.map((f) =>\n f.id === id ? { ...f, progress: Math.min(100, Math.max(0, progress)) } : f,\n )\n }\n\n function setStatus(id: string, status: FileStatus, error?: string): void {\n files = files.map((f) =>\n f.id === id ? { ...f, status, error, progress: status === 'complete' ? 100 : f.progress } : f,\n )\n }\n\n const dropZoneProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'button',\n 'aria-label': 'Drop files here or click to upload',\n 'aria-describedby': labelId,\n id: dropZoneId,\n tabIndex: 0,\n }\n\n const inputProps: Record<string, unknown> = {\n type: 'file',\n id: inputId,\n accept: accept ?? undefined,\n multiple,\n 'aria-hidden': true,\n tabIndex: -1,\n style: { display: 'none' },\n }\n\n const dragHandlers = {\n onDragEnter() {\n isDragging = true\n },\n onDragLeave() {\n isDragging = false\n },\n onDragOver() {\n isDragging = true\n },\n onDrop() {\n isDragging = false\n },\n }\n\n return {\n state: {\n get files() { return files },\n get isDragging() { return isDragging },\n },\n addFiles,\n removeFile,\n updateProgress,\n setStatus,\n dropZoneProps,\n inputProps,\n dragHandlers,\n ids: {\n dropZone: dropZoneId,\n input: inputId,\n label: labelId,\n fileList: fileListId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const fileUploadDropZoneVariants = cva({\n base: 'flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-8 text-center transition-colors cursor-pointer',\n variants: {\n state: {\n idle: 'border-muted-foreground/25 hover:border-muted-foreground/50',\n dragging: 'border-primary bg-primary/5',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'idle',\n },\n})\n\nexport const fileUploadFileListStyles =\n 'mt-4 space-y-2'\n\nexport const fileUploadFileItemStyles =\n 'flex items-center gap-3 rounded-md border p-3 text-sm'\n\nexport const fileUploadProgressStyles =\n 'h-1.5 w-full rounded-full bg-secondary overflow-hidden'\n\nexport const fileUploadProgressBarStyles =\n 'h-full rounded-full bg-primary transition-all duration-300'\n\nexport const fileUploadRemoveButtonStyles =\n 'ml-auto text-muted-foreground hover:text-foreground cursor-pointer'\n","import * as React from 'react'\nimport {\n createFileUpload,\n formatFileSize,\n fileUploadDropZoneVariants,\n fileUploadFileListStyles,\n fileUploadFileItemStyles,\n fileUploadProgressStyles,\n fileUploadProgressBarStyles,\n fileUploadRemoveButtonStyles,\n type FileEntry,\n type FileUploadError,\n} from '@refraction-ui/file-upload'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface FileUploadProps {\n accept?: string\n maxSize?: number\n maxFiles?: number\n multiple?: boolean\n onFilesSelected?: (files: FileEntry[]) => void\n onError?: (errors: FileUploadError[]) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport function FileUpload({\n accept,\n maxSize,\n maxFiles,\n multiple = false,\n onFilesSelected,\n onError,\n className,\n children,\n}: FileUploadProps) {\n const [files, setFiles] = React.useState<FileEntry[]>([])\n const [isDragging, setIsDragging] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const api = React.useMemo(\n () =>\n createFileUpload({\n accept,\n maxSize,\n maxFiles,\n multiple,\n onFilesSelected: (newFiles) => {\n setFiles(newFiles)\n onFilesSelected?.(newFiles)\n },\n onError,\n }),\n [accept, maxSize, maxFiles, multiple, onFilesSelected, onError],\n )\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(true)\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n const droppedFiles = Array.from(e.dataTransfer.files).map((f) => ({\n name: f.name,\n size: f.size,\n type: f.type,\n }))\n if (droppedFiles.length > 0) {\n api.addFiles(droppedFiles)\n }\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []).map((f) => ({\n name: f.name,\n size: f.size,\n type: f.type,\n }))\n if (selectedFiles.length > 0) {\n api.addFiles(selectedFiles)\n }\n // Reset input so same file can be re-selected\n e.target.value = ''\n }\n\n const handleRemove = (id: string) => {\n setFiles((prev) => prev.filter((f) => f.id !== id))\n api.removeFile(id)\n }\n\n const handleClick = () => {\n inputRef.current?.click()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }\n\n return React.createElement(\n 'div',\n { className },\n // Hidden file input\n React.createElement('input', {\n ref: inputRef,\n ...api.inputProps,\n onChange: handleInputChange,\n }),\n // Drop zone\n React.createElement(\n 'div',\n {\n ...api.dropZoneProps,\n className: fileUploadDropZoneVariants({\n state: isDragging ? 'dragging' : 'idle',\n }),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop,\n },\n children ??\n React.createElement(\n React.Fragment,\n null,\n React.createElement('div', { className: 'text-2xl mb-2' }, '\\u{1F4C1}'),\n React.createElement(\n 'p',\n { className: 'text-sm text-muted-foreground' },\n 'Drag & drop files here, or click to select',\n ),\n accept &&\n React.createElement(\n 'p',\n { className: 'text-xs text-muted-foreground mt-1' },\n `Accepted: ${accept}`,\n ),\n maxSize &&\n React.createElement(\n 'p',\n { className: 'text-xs text-muted-foreground' },\n `Max size: ${formatFileSize(maxSize)}`,\n ),\n ),\n ),\n // File list\n files.length > 0 &&\n React.createElement(\n 'div',\n { className: fileUploadFileListStyles },\n files.map((file) =>\n React.createElement(\n 'div',\n { key: file.id, className: fileUploadFileItemStyles },\n React.createElement(\n 'div',\n { className: 'flex-1 min-w-0' },\n React.createElement('div', { className: 'font-medium truncate' }, file.name),\n React.createElement(\n 'div',\n { className: 'text-xs text-muted-foreground' },\n formatFileSize(file.size),\n ),\n file.status === 'uploading' &&\n React.createElement(\n 'div',\n { className: cn(fileUploadProgressStyles, 'mt-1') },\n React.createElement('div', {\n className: fileUploadProgressBarStyles,\n style: { width: `${file.progress}%` },\n }),\n ),\n file.error &&\n React.createElement(\n 'div',\n { className: 'text-xs text-destructive mt-0.5' },\n file.error,\n ),\n ),\n React.createElement(\n 'button',\n {\n type: 'button',\n className: fileUploadRemoveButtonStyles,\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n handleRemove(file.id)\n },\n 'aria-label': `Remove ${file.name}`,\n },\n '\\u00D7',\n ),\n ),\n ),\n ),\n )\n}\n\nFileUpload.displayName = 'FileUpload'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface ShortcutProps {\n /** Key combination (e.g., ['Ctrl', 'K'] or ['Meta', 'Shift', 'P']) */\n keys: string[]\n /** Callback when the shortcut is triggered */\n onTrigger: () => void\n /** Whether the shortcut is enabled */\n enabled?: boolean\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\nexport interface KeyboardShortcutAPI {\n /** Handle a keyboard event (returns true if it matched) */\n handler(event: KeyboardEvent): boolean\n /** Human-readable display of the shortcut */\n display: string\n /** Platform-aware display (uses command symbol on Mac) */\n platformDisplay: string\n /** Whether the shortcut is currently enabled */\n enabled: boolean\n /** The key combination */\n keys: string[]\n /** ARIA props for a visual shortcut badge */\n badgeAriaProps: Record<string, unknown>\n}\n\nconst MODIFIER_KEYS = new Set(['Ctrl', 'Control', 'Alt', 'Shift', 'Meta', 'Cmd', 'Command'])\n\nconst KEY_DISPLAY: Record<string, string> = {\n 'Ctrl': 'Ctrl',\n 'Control': 'Ctrl',\n 'Alt': 'Alt',\n 'Shift': 'Shift',\n 'Meta': 'Meta',\n 'Cmd': 'Cmd',\n 'Command': 'Cmd',\n 'Enter': '\\u21B5',\n 'Backspace': '\\u232B',\n 'Delete': 'Del',\n 'Escape': 'Esc',\n 'ArrowUp': '\\u2191',\n 'ArrowDown': '\\u2193',\n 'ArrowLeft': '\\u2190',\n 'ArrowRight': '\\u2192',\n 'Tab': 'Tab',\n ' ': 'Space',\n}\n\nconst MAC_KEY_DISPLAY: Record<string, string> = {\n 'Ctrl': '\\u2303',\n 'Control': '\\u2303',\n 'Alt': '\\u2325',\n 'Shift': '\\u21E7',\n 'Meta': '\\u2318',\n 'Cmd': '\\u2318',\n 'Command': '\\u2318',\n 'Enter': '\\u21B5',\n 'Backspace': '\\u232B',\n 'Delete': '\\u2326',\n 'Escape': '\\u238B',\n 'ArrowUp': '\\u2191',\n 'ArrowDown': '\\u2193',\n 'ArrowLeft': '\\u2190',\n 'ArrowRight': '\\u2192',\n 'Tab': '\\u21E5',\n ' ': '\\u2423',\n}\n\nfunction normalizeKey(key: string): string {\n // Normalize modifier variants\n if (key === 'Command' || key === 'Cmd') return 'Meta'\n if (key === 'Control') return 'Ctrl'\n return key\n}\n\nfunction isMac(): boolean {\n if (typeof navigator !== 'undefined') {\n return navigator.platform?.includes('Mac') || navigator.userAgent?.includes('Mac')\n }\n return false\n}\n\nexport function formatShortcut(keys: string[], mac?: boolean): string {\n const displayMap = mac ? MAC_KEY_DISPLAY : KEY_DISPLAY\n return keys.map((key) => displayMap[key] ?? key.toUpperCase()).join(mac ? '' : '+')\n}\n\nexport function createKeyboardShortcut(props: ShortcutProps): KeyboardShortcutAPI {\n const {\n keys,\n onTrigger,\n enabled: enabledProp = true,\n preventDefault: preventDefaultProp = true,\n } = props\n\n const normalizedKeys = keys.map(normalizeKey)\n const modifiers = normalizedKeys.filter((k) => MODIFIER_KEYS.has(k))\n const regularKeys = normalizedKeys.filter((k) => !MODIFIER_KEYS.has(k))\n\n function handler(event: KeyboardEvent): boolean {\n if (!enabledProp) return false\n\n // Check modifiers\n const ctrlRequired = modifiers.includes('Ctrl')\n const altRequired = modifiers.includes('Alt')\n const shiftRequired = modifiers.includes('Shift')\n const metaRequired = modifiers.includes('Meta')\n\n if (ctrlRequired !== (event.ctrlKey || event.metaKey && !metaRequired)) {\n // For Ctrl, also accept Meta on Mac\n }\n\n const ctrlMatch = ctrlRequired ? event.ctrlKey : !event.ctrlKey\n const altMatch = altRequired ? event.altKey : !event.altKey\n const shiftMatch = shiftRequired ? event.shiftKey : !event.shiftKey\n const metaMatch = metaRequired ? event.metaKey : !event.metaKey\n\n if (!ctrlMatch || !altMatch || !shiftMatch || !metaMatch) return false\n\n // Check regular key\n if (regularKeys.length > 0) {\n const eventKey = event.key.length === 1 ? event.key.toUpperCase() : event.key\n const targetKey = regularKeys[0].length === 1 ? regularKeys[0].toUpperCase() : regularKeys[0]\n if (eventKey !== targetKey) return false\n }\n\n if (preventDefaultProp) {\n event.preventDefault()\n }\n onTrigger()\n return true\n }\n\n const mac = isMac()\n const display = formatShortcut(keys, false)\n const platformDisplay = formatShortcut(keys, mac)\n\n const badgeAriaProps: Record<string, unknown> = {\n 'aria-hidden': true,\n role: 'presentation',\n }\n\n return {\n handler,\n display,\n platformDisplay,\n enabled: enabledProp,\n keys,\n badgeAriaProps,\n }\n}\n","export const shortcutBadgeStyles =\n 'inline-flex items-center gap-0.5 rounded border bg-muted px-1.5 py-0.5 text-xs font-mono text-muted-foreground'\n\nexport const shortcutKeyStyles =\n 'inline-flex items-center justify-center min-w-[1.25rem] rounded bg-background px-1 py-0.5 text-xs font-mono border shadow-sm'\n\nexport const shortcutSeparatorStyles =\n 'text-muted-foreground text-xs'\n","import * as React from 'react'\nimport {\n createKeyboardShortcut,\n formatShortcut,\n shortcutBadgeStyles,\n shortcutKeyStyles,\n shortcutSeparatorStyles,\n} from '@refraction-ui/keyboard-shortcut'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface KeyboardShortcutProps {\n /** Key combination */\n keys: string[]\n /** Callback when triggered */\n onTrigger: () => void\n /** Whether enabled */\n enabled?: boolean\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\n/**\n * Invisible keyboard shortcut listener component.\n * Attaches a global keydown listener and calls onTrigger when the combo matches.\n */\nexport function KeyboardShortcut({\n keys,\n onTrigger,\n enabled = true,\n preventDefault = true,\n}: KeyboardShortcutProps) {\n const apiRef = React.useRef(\n createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault }),\n )\n\n // Keep handler in sync with latest props\n React.useEffect(() => {\n apiRef.current = createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault })\n }, [keys, onTrigger, enabled, preventDefault])\n\n React.useEffect(() => {\n if (!enabled) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n apiRef.current.handler(e)\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [enabled])\n\n return null\n}\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\n// ---------------------------------------------------------------------------\n// ShortcutBadge — visual display of a keyboard shortcut (e.g., Ctrl+K)\n// ---------------------------------------------------------------------------\n\nexport interface ShortcutBadgeProps {\n /** Key combination to display */\n keys: string[]\n /** Use platform-aware display (Mac symbols) */\n platform?: boolean\n className?: string\n}\n\nexport function ShortcutBadge({ keys, platform = true, className }: ShortcutBadgeProps) {\n const api = createKeyboardShortcut({ keys, onTrigger: () => {}, enabled: false })\n\n const displayKeys = platform ? api.platformDisplay : api.display\n\n // Split display into individual keys for styling\n const isMacDisplay = platform && displayKeys !== api.display\n\n return React.createElement(\n 'kbd',\n { ...api.badgeAriaProps, className: cn(shortcutBadgeStyles, className) },\n isMacDisplay\n ? React.createElement('span', null, displayKeys)\n : keys.map((key, i) =>\n React.createElement(\n React.Fragment,\n { key: i },\n i > 0 && React.createElement('span', { className: shortcutSeparatorStyles }, '+'),\n React.createElement(\n 'span',\n { className: shortcutKeyStyles },\n formatShortcut([key], false),\n ),\n ),\n ),\n )\n}\n\nShortcutBadge.displayName = 'ShortcutBadge'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport type OtpInputType = 'number' | 'text'\n\nexport interface OtpInputProps {\n length?: number\n value?: string\n autoFocus?: boolean\n type?: OtpInputType\n disabled?: boolean\n}\n\nexport interface OtpSlotProps {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n inputProps: {\n maxLength: number\n inputMode: string\n pattern?: string\n autoComplete: string\n disabled: boolean\n }\n}\n\nexport interface OtpInputAPI {\n /** Current state */\n state: {\n values: string[]\n focusedIndex: number\n length: number\n disabled: boolean\n }\n /** Set the value at a specific index */\n setValue: (index: number, char: string) => string[]\n /** Get the combined OTP string */\n getValue: () => string\n /** Move focus in a direction, returns new index */\n moveFocus: (direction: 'left' | 'right') => number\n /** Get aria/input props for a specific slot */\n getSlotProps: (index: number) => OtpSlotProps\n /** Keyboard handlers factory for a specific slot */\n getKeyboardHandlers: (\n index: number,\n callbacks?: {\n onMoveFocus?: (index: number) => void\n onSetValue?: (index: number, values: string[]) => void\n },\n ) => KeyboardHandlerMap\n /** Parse a paste string into values array */\n parsePaste: (text: string) => string[]\n /** Root container ARIA props */\n rootAriaProps: Partial<AccessibilityProps>\n /** Whether interaction should be blocked */\n isInteractive: boolean\n}\n\nexport function createOtpInput(props: OtpInputProps = {}): OtpInputAPI {\n const {\n length = 6,\n value = '',\n autoFocus = false,\n type = 'number',\n disabled = false,\n } = props\n\n const isInteractive = !disabled\n\n // Initialize values from the provided value string\n const values: string[] = Array.from({ length }, (_, i) => value.charAt(i) || '')\n let focusedIndex = autoFocus ? 0 : -1\n\n const rootAriaProps: Partial<AccessibilityProps> = {\n role: 'group',\n 'aria-label': 'One-time password input',\n }\n\n function setValue(index: number, char: string): string[] {\n if (index < 0 || index >= length) return [...values]\n const filtered = type === 'number' ? char.replace(/[^0-9]/g, '') : char\n const newValues = [...values]\n newValues[index] = filtered.charAt(0) || ''\n // Update internal state\n for (let i = 0; i < length; i++) {\n values[i] = newValues[i]\n }\n return newValues\n }\n\n function getValue(): string {\n return values.join('')\n }\n\n function moveFocus(direction: 'left' | 'right'): number {\n if (direction === 'left') {\n focusedIndex = Math.max(0, focusedIndex - 1)\n } else {\n focusedIndex = Math.min(length - 1, focusedIndex + 1)\n }\n return focusedIndex\n }\n\n function getSlotProps(index: number): OtpSlotProps {\n const isFocused = index === focusedIndex\n const isFilled = values[index] !== ''\n\n const ariaProps: Partial<AccessibilityProps> = {\n 'aria-label': `Digit ${index + 1} of ${length}`,\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-slot': 'otp-slot',\n }\n if (isFocused) {\n dataAttributes['data-focused'] = ''\n }\n if (isFilled) {\n dataAttributes['data-filled'] = ''\n }\n\n const inputProps = {\n maxLength: 1,\n inputMode: type === 'number' ? 'numeric' : 'text',\n pattern: type === 'number' ? '[0-9]*' : undefined,\n autoComplete: index === 0 ? 'one-time-code' : 'off',\n disabled,\n }\n\n return { ariaProps, dataAttributes, inputProps }\n }\n\n function getKeyboardHandlers(\n index: number,\n callbacks?: {\n onMoveFocus?: (index: number) => void\n onSetValue?: (index: number, values: string[]) => void\n },\n ): KeyboardHandlerMap {\n if (!isInteractive) {\n return {\n [Keys.Backspace]: (e) => e.preventDefault(),\n [Keys.ArrowLeft]: (e) => e.preventDefault(),\n [Keys.ArrowRight]: (e) => e.preventDefault(),\n }\n }\n\n return {\n [Keys.Backspace]: (e) => {\n e.preventDefault()\n if (values[index]) {\n const newValues = setValue(index, '')\n callbacks?.onSetValue?.(index, newValues)\n } else if (index > 0) {\n focusedIndex = index - 1\n const newValues = setValue(index - 1, '')\n callbacks?.onSetValue?.(index - 1, newValues)\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n [Keys.ArrowLeft]: (e) => {\n e.preventDefault()\n if (index > 0) {\n focusedIndex = index - 1\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n [Keys.ArrowRight]: (e) => {\n e.preventDefault()\n if (index < length - 1) {\n focusedIndex = index + 1\n callbacks?.onMoveFocus?.(focusedIndex)\n }\n },\n }\n }\n\n function parsePaste(text: string): string[] {\n const chars = type === 'number' ? text.replace(/[^0-9]/g, '') : text\n return Array.from({ length }, (_, i) => chars.charAt(i) || '')\n }\n\n return {\n state: {\n values,\n focusedIndex,\n length,\n disabled,\n },\n setValue,\n getValue,\n moveFocus,\n getSlotProps,\n getKeyboardHandlers,\n parsePaste,\n rootAriaProps,\n isInteractive,\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const otpInputTokens: TokenContract = {\n name: 'otp-input',\n tokens: {\n bg: { variable: '--rfr-otp-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-otp-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-otp-border', fallback: 'hsl(var(--border))' },\n 'border-filled': { variable: '--rfr-otp-border-filled', fallback: 'hsl(var(--primary))' },\n ring: { variable: '--rfr-otp-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const otpInputContainerVariants = cva({\n base: 'flex items-center gap-2',\n variants: {\n size: {\n sm: 'gap-1.5',\n default: 'gap-2',\n lg: 'gap-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const otpInputSlotVariants = cva({\n base: 'relative flex items-center justify-center rounded-md border border-input bg-background text-center font-mono shadow-sm transition-all',\n variants: {\n size: {\n sm: 'h-8 w-8 text-sm',\n default: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n },\n focused: {\n true: 'ring-2 ring-ring ring-offset-background',\n false: '',\n },\n filled: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'default',\n focused: 'false',\n filled: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createOtpInput,\n otpInputContainerVariants,\n otpInputSlotVariants,\n type OtpInputType,\n} from '@refraction-ui/otp-input'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface OtpInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n length?: number\n value?: string\n onChange?: (value: string) => void\n autoFocus?: boolean\n type?: OtpInputType\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * OtpInput -- a row of individual input boxes for one-time password entry.\n *\n * Features: auto-advance on type, backspace navigation, paste support, numeric/text mode.\n */\nexport const OtpInput = React.forwardRef<HTMLDivElement, OtpInputProps>(\n ({\n length = 6,\n value = '',\n onChange,\n autoFocus = false,\n type = 'number',\n disabled = false,\n size = 'default',\n className,\n ...props\n }, ref) => {\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([])\n const [focusedIndex, setFocusedIndex] = React.useState(autoFocus ? 0 : -1)\n const [values, setValues] = React.useState<string[]>(() =>\n Array.from({ length }, (_, i) => value.charAt(i) || ''),\n )\n\n // Sync external value changes\n React.useEffect(() => {\n setValues(Array.from({ length }, (_, i) => value.charAt(i) || ''))\n }, [value, length])\n\n // Auto-focus first input\n React.useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus])\n\n const api = createOtpInput({ length, value, autoFocus, type, disabled })\n\n const updateValue = (index: number, char: string) => {\n const filtered = type === 'number' ? char.replace(/[^0-9]/g, '') : char\n const newChar = filtered.charAt(0) || ''\n const newValues = [...values]\n newValues[index] = newChar\n setValues(newValues)\n onChange?.(newValues.join(''))\n return newChar\n }\n\n const handleInput = (index: number, e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n const char = inputValue.slice(-1)\n const result = updateValue(index, char)\n\n // Auto-advance to next input\n if (result && index < length - 1) {\n setFocusedIndex(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n if (values[index]) {\n updateValue(index, '')\n } else if (index > 0) {\n updateValue(index - 1, '')\n setFocusedIndex(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n }\n\n if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n setFocusedIndex(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n\n if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n setFocusedIndex(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pasteData = e.clipboardData.getData('text')\n const parsed = api.parsePaste(pasteData)\n setValues(parsed)\n onChange?.(parsed.join(''))\n\n // Focus the last filled input or the next empty one\n let lastFilledIndex = -1\n for (let i = parsed.length - 1; i >= 0; i--) {\n if (parsed[i] !== '') { lastFilledIndex = i; break }\n }\n const nextIndex = Math.min(lastFilledIndex + 1, length - 1)\n setFocusedIndex(nextIndex)\n inputRefs.current[nextIndex]?.focus()\n }\n\n const handleFocus = (index: number) => {\n setFocusedIndex(index)\n }\n\n const handleBlur = () => {\n setFocusedIndex(-1)\n }\n\n return (\n <div\n ref={ref}\n className={cn(otpInputContainerVariants({ size }), className)}\n {...api.rootAriaProps}\n {...props}\n >\n {Array.from({ length }, (_, index) => {\n const slotProps = api.getSlotProps(index)\n const isFocused = index === focusedIndex\n const isFilled = values[index] !== ''\n\n return (\n <input\n key={index}\n ref={(el) => { inputRefs.current[index] = el }}\n className={cn(otpInputSlotVariants({\n size,\n focused: isFocused ? 'true' : 'false',\n filled: isFilled ? 'true' : 'false',\n }))}\n value={values[index]}\n onChange={(e) => handleInput(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={() => handleFocus(index)}\n onBlur={handleBlur}\n maxLength={1}\n inputMode={type === 'number' ? 'numeric' : 'text'}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n disabled={disabled}\n aria-label={`Digit ${index + 1} of ${length}`}\n data-slot=\"otp-slot\"\n data-focused={isFocused ? '' : undefined}\n data-filled={isFilled ? '' : undefined}\n />\n )\n })}\n </div>\n )\n },\n)\n\nOtpInput.displayName = 'OtpInput'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd'\n\nexport interface PresenceProps {\n /** The presence status to display */\n status: PresenceStatus\n /** Show a text label alongside the indicator */\n showLabel?: boolean\n /** Custom label override */\n label?: string\n}\n\nexport interface PresenceAPI {\n /** ARIA attributes for the indicator */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** CSS color for the status dot */\n color: string\n /** Human-readable label for the status */\n label: string\n /** Whether to show the label text */\n showLabel: boolean\n /** The current status */\n status: PresenceStatus\n}\n\nconst STATUS_COLORS: Record<PresenceStatus, string> = {\n online: 'green',\n offline: 'gray',\n away: 'yellow',\n busy: 'red',\n dnd: 'red',\n}\n\nconst STATUS_LABELS: Record<PresenceStatus, string> = {\n online: 'Online',\n offline: 'Offline',\n away: 'Away',\n busy: 'Busy',\n dnd: 'Do Not Disturb',\n}\n\nexport { STATUS_COLORS, STATUS_LABELS }\n\nexport function createPresence(props: PresenceProps): PresenceAPI {\n const { status, showLabel: showLabelProp = false, label: labelOverride } = props\n\n const color = STATUS_COLORS[status]\n const label = labelOverride ?? STATUS_LABELS[status]\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'status',\n 'aria-label': label,\n }\n\n return {\n ariaProps,\n color,\n label,\n showLabel: showLabelProp,\n status,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const presenceDotVariants = cva({\n base: 'inline-block rounded-full',\n variants: {\n status: {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n dnd: 'bg-red-500',\n },\n size: {\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n },\n },\n defaultVariants: {\n status: 'offline',\n size: 'md',\n },\n})\n\nexport const presenceContainerStyles =\n 'inline-flex items-center gap-1.5'\n\nexport const presenceLabelStyles =\n 'text-sm text-muted-foreground'\n","import * as React from 'react'\nimport {\n createPresence,\n presenceDotVariants,\n presenceContainerStyles,\n presenceLabelStyles,\n type PresenceStatus,\n} from '@refraction-ui/presence-indicator'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface PresenceIndicatorProps {\n status: PresenceStatus\n showLabel?: boolean\n label?: string\n size?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nexport function PresenceIndicator({\n status,\n showLabel = false,\n label,\n size = 'md',\n className,\n}: PresenceIndicatorProps) {\n const api = createPresence({ status, showLabel, label })\n\n return React.createElement(\n 'span',\n { ...api.ariaProps, className: cn(presenceContainerStyles, className) },\n React.createElement('span', {\n className: presenceDotVariants({ status, size }),\n }),\n api.showLabel &&\n React.createElement('span', { className: presenceLabelStyles }, api.label),\n )\n}\n\nPresenceIndicator.displayName = 'PresenceIndicator'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface RadioOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface RadioGroupProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n name?: string\n disabled?: boolean\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport interface RadioGroupAPI {\n state: { selectedValue: string | undefined }\n groupProps: Partial<AccessibilityProps> & Record<string, unknown>\n getItemProps(value: string, disabled?: boolean): Partial<AccessibilityProps> & Record<string, unknown>\n select(value: string): void\n keyboardHandlers: Record<string, (e: KeyboardEvent) => void>\n}\n\nexport function createRadioGroup(props: RadioGroupProps = {}): RadioGroupAPI {\n const { value: controlled, defaultValue, onValueChange, name, disabled = false, orientation = 'vertical' } = props\n let selected = controlled ?? defaultValue\n\n function select(value: string) {\n if (disabled) return\n selected = value\n onValueChange?.(value)\n }\n\n const groupProps = {\n role: 'radiogroup' as const,\n 'aria-orientation': orientation,\n ...(disabled ? { 'aria-disabled': true } : {}),\n }\n\n function getItemProps(value: string, itemDisabled?: boolean) {\n const isSelected = selected === value\n const isDisabled = disabled || itemDisabled\n return {\n role: 'radio' as const,\n 'aria-checked': isSelected,\n 'aria-disabled': isDisabled || undefined,\n tabIndex: isSelected ? 0 : -1,\n 'data-state': isSelected ? 'checked' : 'unchecked',\n ...(isDisabled ? { 'data-disabled': '' } : {}),\n ...(name ? { name } : {}),\n }\n }\n\n const keyboardHandlers: Record<string, (e: KeyboardEvent) => void> = {\n ArrowDown(e) { e.preventDefault() },\n ArrowUp(e) { e.preventDefault() },\n ArrowRight(e) { e.preventDefault() },\n ArrowLeft(e) { e.preventDefault() },\n }\n\n return {\n state: { get selectedValue() { return selected } },\n groupProps,\n getItemProps,\n select,\n keyboardHandlers,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const radioGroupVariants = cva({\n base: 'flex gap-3',\n variants: {\n orientation: {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n },\n },\n defaultVariants: { orientation: 'vertical' },\n})\n\nexport const radioItemVariants = cva({\n base: 'flex items-center gap-2 cursor-pointer',\n variants: {\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: { disabled: 'false' },\n})\n\nexport const radioCircleVariants = cva({\n base: 'h-4 w-4 rounded-full border border-primary transition-colors',\n variants: {\n checked: {\n true: 'border-primary bg-primary',\n false: 'border-input',\n },\n },\n defaultVariants: { checked: 'false' },\n})\n","import * as React from 'react'\nimport {\n createRadioGroup,\n radioGroupVariants,\n radioItemVariants,\n radioCircleVariants,\n type RadioGroupProps as CoreRadioGroupProps,\n} from '@refraction-ui/radio'\nimport { cn } from '@refraction-ui/shared'\n\ninterface RadioContextValue {\n value: string | undefined\n onValueChange: (value: string) => void\n name?: string\n disabled: boolean\n}\n\nconst RadioContext = React.createContext<RadioContextValue | null>(null)\n\nexport interface RadioGroupProps extends CoreRadioGroupProps {\n children: React.ReactNode\n className?: string\n}\n\nexport function RadioGroup({\n children,\n className,\n value: controlledValue,\n defaultValue,\n onValueChange,\n name,\n disabled = false,\n orientation = 'vertical',\n}: RadioGroupProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const api = createRadioGroup({ value: currentValue, name, disabled, orientation })\n\n const handleChange = React.useCallback(\n (val: string) => {\n if (!isControlled) setInternalValue(val)\n onValueChange?.(val)\n },\n [isControlled, onValueChange],\n )\n\n const ctx = React.useMemo<RadioContextValue>(\n () => ({ value: currentValue, onValueChange: handleChange, name, disabled }),\n [currentValue, handleChange, name, disabled],\n )\n\n return React.createElement(\n RadioContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ...api.groupProps, className: cn(radioGroupVariants({ orientation }), className) },\n children,\n ),\n )\n}\n\nexport interface RadioItemProps {\n value: string\n children?: React.ReactNode\n disabled?: boolean\n className?: string\n}\n\nexport function RadioItem({ value, children, disabled = false, className }: RadioItemProps) {\n const ctx = React.useContext(RadioContext)\n if (!ctx) throw new Error('RadioItem must be used within RadioGroup')\n\n const isChecked = ctx.value === value\n const isDisabled = ctx.disabled || disabled\n\n return React.createElement(\n 'label',\n {\n className: cn(radioItemVariants({ disabled: isDisabled ? 'true' : 'false' }), className),\n 'data-state': isChecked ? 'checked' : 'unchecked',\n },\n React.createElement(\n 'button',\n {\n type: 'button',\n role: 'radio',\n 'aria-checked': isChecked,\n 'aria-disabled': isDisabled || undefined,\n tabIndex: isChecked ? 0 : -1,\n disabled: isDisabled,\n className: cn(radioCircleVariants({ checked: isChecked ? 'true' : 'false' })),\n onClick: () => !isDisabled && ctx.onValueChange(value),\n },\n isChecked &&\n React.createElement(\n 'span',\n { className: 'block h-2 w-2 rounded-full bg-primary-foreground mx-auto' },\n ),\n ),\n children && React.createElement('span', { className: 'text-sm' }, children),\n )\n}\n\nRadioGroup.displayName = 'RadioGroup'\nRadioItem.displayName = 'RadioItem'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface Reaction {\n /** The emoji character */\n emoji: string\n /** Number of users who reacted with this emoji */\n count: number\n /** Whether the current user has reacted */\n userReacted: boolean\n}\n\nexport interface ReactionBarProps {\n /** Current reactions */\n reactions: Reaction[]\n /** Callback when a reaction is toggled */\n onToggle?: (emoji: string) => void\n /** Callback when a new reaction is added */\n onAdd?: (emoji: string) => void\n}\n\nexport interface ReactionBarAPI {\n /** Current reactions */\n reactions: Reaction[]\n /** Toggle a reaction */\n toggle(emoji: string): void\n /** Add a new reaction */\n add(emoji: string): void\n /** ARIA props for the reaction bar container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for an individual reaction pill */\n getReactionAriaProps(reaction: Reaction): Record<string, unknown>\n /** ARIA props for the \"add reaction\" button */\n addButtonAriaProps: Record<string, unknown>\n /** Generated IDs */\n ids: {\n container: string\n label: string\n }\n}\n\nexport function createReactionBar(props: ReactionBarProps): ReactionBarAPI {\n const { reactions, onToggle, onAdd } = props\n\n const containerId = generateId('rfr-reactions')\n const labelId = generateId('rfr-reactions-label')\n\n function toggle(emoji: string): void {\n onToggle?.(emoji)\n }\n\n function add(emoji: string): void {\n onAdd?.(emoji)\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'group',\n 'aria-label': 'Reactions',\n id: containerId,\n }\n\n function getReactionAriaProps(reaction: Reaction): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-pressed': reaction.userReacted,\n 'aria-label': `${reaction.emoji} ${reaction.count} reaction${reaction.count === 1 ? '' : 's'}${reaction.userReacted ? ', you reacted' : ''}`,\n }\n }\n\n const addButtonAriaProps: Record<string, unknown> = {\n role: 'button',\n 'aria-label': 'Add reaction',\n }\n\n return {\n reactions,\n toggle,\n add,\n ariaProps,\n getReactionAriaProps,\n addButtonAriaProps,\n ids: {\n container: containerId,\n label: labelId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const reactionBarStyles =\n 'flex flex-wrap items-center gap-1'\n\nexport const reactionPillVariants = cva({\n base: 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors hover:bg-accent',\n variants: {\n state: {\n active: 'border-primary bg-primary/10 text-primary',\n inactive: 'border-border bg-background text-foreground',\n },\n },\n defaultVariants: {\n state: 'inactive',\n },\n})\n\nexport const reactionAddButtonStyles =\n 'inline-flex items-center justify-center h-6 w-6 rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground hover:border-muted-foreground hover:text-foreground cursor-pointer transition-colors text-xs'\n\nexport const reactionEmojiStyles = 'text-sm'\nexport const reactionCountStyles = 'text-xs font-medium tabular-nums'\n","import * as React from 'react'\nimport {\n createReactionBar,\n reactionBarStyles,\n reactionPillVariants,\n reactionAddButtonStyles,\n reactionEmojiStyles,\n reactionCountStyles,\n type Reaction,\n} from '@refraction-ui/reaction-bar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ReactionBarProps {\n reactions: Reaction[]\n onToggle?: (emoji: string) => void\n onAdd?: (emoji: string) => void\n showAddButton?: boolean\n className?: string\n}\n\nexport function ReactionBar({\n reactions,\n onToggle,\n onAdd,\n showAddButton = true,\n className,\n}: ReactionBarProps) {\n const api = createReactionBar({ reactions, onToggle, onAdd })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(reactionBarStyles, className) },\n api.reactions.map((reaction, i) =>\n React.createElement(\n 'button',\n {\n key: `${reaction.emoji}-${i}`,\n type: 'button',\n className: reactionPillVariants({\n state: reaction.userReacted ? 'active' : 'inactive',\n }),\n onClick: () => api.toggle(reaction.emoji),\n ...api.getReactionAriaProps(reaction),\n },\n React.createElement('span', { className: reactionEmojiStyles }, reaction.emoji),\n React.createElement('span', { className: reactionCountStyles }, reaction.count),\n ),\n ),\n showAddButton &&\n React.createElement(\n 'button',\n {\n type: 'button',\n className: reactionAddButtonStyles,\n onClick: () => onAdd?.('\\u{1F44D}'),\n ...api.addButtonAriaProps,\n },\n '+',\n ),\n )\n}\n\nReactionBar.displayName = 'ReactionBar'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectProps {\n value?: string\n options?: SelectOption[]\n placeholder?: string\n disabled?: boolean\n open?: boolean\n name?: string\n}\n\nexport interface SelectAPI {\n /** Trigger element ARIA + keyboard props */\n triggerProps: {\n ariaProps: Partial<AccessibilityProps>\n keyboardHandlers: KeyboardHandlerMap\n dataAttributes: Record<string, string>\n }\n /** Content (dropdown) props */\n contentProps: {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n }\n /** Get props for a single option */\n getOptionProps: (option: SelectOption) => {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n isSelected: boolean\n }\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Current state */\n state: {\n open: boolean\n selectedValue: string | undefined\n selectedLabel: string | undefined\n disabled: boolean\n placeholder: string\n }\n /** Generated IDs for trigger/content association */\n ids: {\n trigger: string\n content: string\n }\n}\n\nexport function createSelect(props: SelectProps = {}): SelectAPI {\n const {\n value,\n options = [],\n placeholder = 'Select an option',\n disabled = false,\n open = false,\n } = props\n\n const isInteractive = !disabled\n const selectedOption = options.find((o) => o.value === value)\n\n const triggerId = generateId('select-trigger')\n const contentId = generateId('select-content')\n\n const triggerAriaProps: Partial<AccessibilityProps> = {\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-labelledby': triggerId,\n }\n if (disabled) {\n triggerAriaProps['aria-disabled'] = true\n }\n\n const triggerKeyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n triggerKeyboardHandlers[Keys.Enter] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowDown] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowUp] = (e) => e.preventDefault()\n }\n\n const triggerDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n if (disabled) {\n triggerDataAttributes['data-disabled'] = ''\n }\n\n const contentAriaProps: Partial<AccessibilityProps> = {\n role: 'listbox',\n 'aria-labelledby': triggerId,\n }\n\n const contentDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n\n function getOptionProps(option: SelectOption) {\n const isSelected = option.value === value\n const optionAriaProps: Partial<AccessibilityProps> = {\n role: 'option',\n 'aria-selected': isSelected,\n }\n if (option.disabled) {\n optionAriaProps['aria-disabled'] = true\n }\n\n const optionDataAttributes: Record<string, string> = {}\n if (isSelected) {\n optionDataAttributes['data-state'] = 'checked'\n }\n if (option.disabled) {\n optionDataAttributes['data-disabled'] = ''\n }\n\n return {\n ariaProps: optionAriaProps,\n dataAttributes: optionDataAttributes,\n isSelected,\n }\n }\n\n return {\n triggerProps: {\n ariaProps: triggerAriaProps,\n keyboardHandlers: triggerKeyboardHandlers,\n dataAttributes: triggerDataAttributes,\n },\n contentProps: {\n ariaProps: contentAriaProps,\n dataAttributes: contentDataAttributes,\n },\n getOptionProps,\n isInteractive,\n state: {\n open,\n selectedValue: selectedOption?.value,\n selectedLabel: selectedOption?.label,\n disabled,\n placeholder,\n },\n ids: {\n trigger: triggerId,\n content: contentId,\n },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const selectTokens: TokenContract = {\n name: 'select',\n tokens: {\n bg: { variable: '--rfr-select-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-select-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-select-border', fallback: 'hsl(var(--border))' },\n ring: { variable: '--rfr-select-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const selectTriggerVariants = cva({\n base: 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'h-8 text-xs',\n default: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const selectContentVariants = cva({\n base: 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95',\n variants: {\n position: {\n popper: 'translate-y-1',\n 'item-aligned': '',\n },\n },\n defaultVariants: {\n position: 'popper',\n },\n})\n\nexport const selectItemVariants = cva({\n base: 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n variants: {\n selected: {\n true: 'bg-accent/50',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n","import * as React from 'react'\nimport {\n createSelect,\n selectTriggerVariants,\n selectContentVariants,\n selectItemVariants,\n type SelectOption,\n} from '@refraction-ui/select'\nimport { cn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface SelectContextValue {\n value: string | undefined\n onValueChange: (value: string) => void\n open: boolean\n setOpen: (open: boolean) => void\n options: SelectOption[]\n disabled: boolean\n placeholder: string\n triggerId: string\n contentId: string\n}\n\nconst SelectContext = React.createContext<SelectContextValue>({\n value: undefined,\n onValueChange: () => {},\n open: false,\n setOpen: () => {},\n options: [],\n disabled: false,\n placeholder: 'Select an option',\n triggerId: '',\n contentId: '',\n})\n\n/* ─── Select (root) ────────────────────────────────────────────── */\nexport interface SelectProps {\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\n/**\n * Select -- dropdown select with accessible keyboard and ARIA support.\n * Compound component: Select > SelectTrigger + SelectContent > SelectItem.\n */\nexport function Select({\n value,\n onValueChange,\n disabled = false,\n children,\n placeholder = 'Select an option',\n}: SelectProps) {\n const [open, setOpen] = React.useState(false)\n\n const api = createSelect({ value, disabled, open, placeholder })\n\n return (\n <SelectContext.Provider\n value={{\n value,\n onValueChange: onValueChange ?? (() => {}),\n open,\n setOpen: (v) => {\n if (!disabled) setOpen(v)\n },\n options: [],\n disabled,\n placeholder,\n triggerId: api.ids.trigger,\n contentId: api.ids.content,\n }}\n >\n {children}\n </SelectContext.Provider>\n )\n}\n\n/* ─── SelectTrigger ────────────────────────────────────────────── */\nexport interface SelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: 'sm' | 'default' | 'lg'\n}\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'default', ...props }, ref) => {\n const { open, setOpen, disabled, triggerId, contentId } = React.useContext(SelectContext)\n\n const api = createSelect({ disabled, open })\n\n const handleClick = () => {\n if (!disabled) {\n setOpen(!open)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n if (!disabled) setOpen(!open)\n }\n if (e.key === 'Escape') {\n setOpen(false)\n }\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && !open) {\n e.preventDefault()\n if (!disabled) setOpen(true)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={triggerId}\n className={cn(selectTriggerVariants({ size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.triggerProps.ariaProps}\n {...api.triggerProps.dataAttributes}\n aria-controls={contentId}\n {...props}\n >\n {children}\n <svg\n className=\"h-4 w-4 opacity-50 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n )\n },\n)\nSelectTrigger.displayName = 'SelectTrigger'\n\n/* ─── SelectContent ────────────────────────────────────────────── */\nexport interface SelectContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n ({ className, children, ...props }, ref) => {\n const { open, contentId, triggerId } = React.useContext(SelectContext)\n\n if (!open) return null\n\n return (\n <div\n ref={ref}\n id={contentId}\n className={cn(selectContentVariants(), className)}\n role=\"listbox\"\n aria-labelledby={triggerId}\n data-state={open ? 'open' : 'closed'}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\nSelectContent.displayName = 'SelectContent'\n\n/* ─── SelectItem ───────────────────────────────────────────────── */\nexport interface SelectItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n disabled?: boolean\n}\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n ({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) => {\n const { value, onValueChange, setOpen } = React.useContext(SelectContext)\n const isSelected = value === itemValue\n\n const handleClick = () => {\n if (!itemDisabled) {\n onValueChange(itemValue)\n setOpen(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === 'Enter' || e.key === ' ') && !itemDisabled) {\n e.preventDefault()\n onValueChange(itemValue)\n setOpen(false)\n }\n }\n\n return (\n <div\n ref={ref}\n className={cn(selectItemVariants({ selected: isSelected ? 'true' : 'false' }), className)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={itemDisabled || undefined}\n data-state={isSelected ? 'checked' : undefined}\n data-disabled={itemDisabled ? '' : undefined}\n tabIndex={itemDisabled ? undefined : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {isSelected && (\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n </span>\n )}\n {children}\n </div>\n )\n },\n)\nSelectItem.displayName = 'SelectItem'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type StatusType = 'success' | 'error' | 'warning' | 'info' | 'pending' | 'neutral'\n\nexport interface StatusProps {\n /** The status type */\n type: StatusType\n /** Label to display alongside the status dot */\n label?: string\n /** Whether to show a pulse animation (primarily for 'pending' status) */\n pulse?: boolean\n}\n\nexport interface StatusAPI {\n /** ARIA attributes for the status indicator */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** The status type */\n type: StatusType\n /** The display label */\n label: string\n /** Whether to show pulse animation */\n pulse: boolean\n /** CSS color class name for the dot */\n color: string\n}\n\nconst STATUS_COLORS: Record<StatusType, string> = {\n success: 'green',\n error: 'red',\n warning: 'yellow',\n info: 'blue',\n pending: 'orange',\n neutral: 'gray',\n}\n\nconst STATUS_LABELS: Record<StatusType, string> = {\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n pending: 'Pending',\n neutral: 'Neutral',\n}\n\nexport { STATUS_COLORS, STATUS_LABELS }\n\nexport function createStatusIndicator(props: StatusProps): StatusAPI {\n const { type, label: labelOverride, pulse: pulseOverride } = props\n\n const color = STATUS_COLORS[type]\n const label = labelOverride ?? STATUS_LABELS[type]\n const pulse = pulseOverride ?? (type === 'pending')\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'status',\n 'aria-label': label,\n }\n\n return {\n ariaProps,\n type,\n label,\n pulse,\n color,\n }\n}\n","import { cva } from '@refraction-ui/shared'\n\nexport const statusContainerStyles =\n 'inline-flex items-center gap-1.5'\n\nexport const statusDotVariants = cva({\n base: 'inline-block h-2 w-2 rounded-full',\n variants: {\n type: {\n success: 'bg-green-500',\n error: 'bg-red-500',\n warning: 'bg-yellow-500',\n info: 'bg-blue-500',\n pending: 'bg-orange-500',\n neutral: 'bg-gray-400',\n },\n },\n defaultVariants: {\n type: 'neutral',\n },\n})\n\nexport const statusPulseVariants = cva({\n base: 'animate-pulse inline-block h-2 w-2 rounded-full',\n variants: {\n type: {\n success: 'bg-green-500',\n error: 'bg-red-500',\n warning: 'bg-yellow-500',\n info: 'bg-blue-500',\n pending: 'bg-orange-500',\n neutral: 'bg-gray-400',\n },\n },\n defaultVariants: {\n type: 'pending',\n },\n})\n\nexport const statusLabelStyles =\n 'text-sm text-muted-foreground'\n","import * as React from 'react'\nimport {\n createStatusIndicator,\n statusContainerStyles,\n statusDotVariants,\n statusPulseVariants,\n statusLabelStyles,\n type StatusType,\n} from '@refraction-ui/status-indicator'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface StatusIndicatorProps {\n type: StatusType\n label?: string\n pulse?: boolean\n showLabel?: boolean\n className?: string\n}\n\nexport function StatusIndicator({\n type,\n label,\n pulse,\n showLabel = true,\n className,\n}: StatusIndicatorProps) {\n const api = createStatusIndicator({ type, label, pulse })\n\n const dotClassName = api.pulse\n ? statusPulseVariants({ type })\n : statusDotVariants({ type })\n\n return React.createElement(\n 'span',\n { ...api.ariaProps, className: cn(statusContainerStyles, className) },\n React.createElement('span', { className: dotClassName }),\n showLabel &&\n React.createElement('span', { className: statusLabelStyles }, api.label),\n )\n}\n\nStatusIndicator.displayName = 'StatusIndicator'\n","import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys } from '@refraction-ui/shared'\n\nexport interface SwitchProps {\n checked?: boolean\n disabled?: boolean\n required?: boolean\n name?: string\n value?: string\n}\n\nexport interface SwitchAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Keyboard handlers to attach */\n keyboardHandlers: KeyboardHandlerMap\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Current state */\n state: {\n checked: boolean\n disabled: boolean\n }\n}\n\nexport function createSwitch(props: SwitchProps = {}): SwitchAPI {\n const { checked = false, disabled = false } = props\n const isInteractive = !disabled\n\n const ariaProps: Partial<AccessibilityProps> = {\n role: 'switch',\n 'aria-checked': checked,\n }\n\n if (disabled) {\n ariaProps['aria-disabled'] = true\n }\n\n const dataAttributes: Record<string, string> = {}\n if (checked) {\n dataAttributes['data-state'] = 'checked'\n } else {\n dataAttributes['data-state'] = 'unchecked'\n }\n if (disabled) {\n dataAttributes['data-disabled'] = ''\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n keyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n }\n\n return {\n ariaProps,\n keyboardHandlers,\n isInteractive,\n dataAttributes,\n state: { checked, disabled },\n }\n}\n","import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const switchTokens: TokenContract = {\n name: 'switch',\n tokens: {\n bg: { variable: '--rfr-switch-bg', fallback: 'hsl(var(--input))' },\n 'bg-checked': { variable: '--rfr-switch-bg-checked', fallback: 'hsl(var(--primary))' },\n thumb: { variable: '--rfr-switch-thumb', fallback: 'hsl(var(--background))' },\n ring: { variable: '--rfr-switch-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const switchVariants = cva({\n base: 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n checked: {\n true: 'bg-primary',\n false: 'bg-input',\n },\n size: {\n sm: 'h-4 w-7',\n default: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n})\n\nexport const switchThumbVariants = cva({\n base: 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform',\n variants: {\n checked: {\n true: '',\n false: 'translate-x-0',\n },\n size: {\n sm: 'h-3 w-3',\n default: 'h-4 w-4',\n lg: 'h-5 w-5',\n },\n },\n defaultVariants: {\n checked: 'false',\n size: 'default',\n },\n compoundVariants: [\n { checked: 'true', size: 'sm', class: 'translate-x-3' },\n { checked: 'true', size: 'default', class: 'translate-x-4' },\n { checked: 'true', size: 'lg', class: 'translate-x-5' },\n ],\n})\n","import * as React from 'react'\nimport {\n createSwitch,\n switchVariants,\n switchThumbVariants,\n} from '@refraction-ui/switch'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n size?: 'sm' | 'default' | 'lg'\n}\n\n/**\n * Switch component -- a toggle switch with accessible keyboard and ARIA support.\n *\n * Uses the headless @refraction-ui/switch core for state, ARIA, and keyboard handling.\n */\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked = false, onCheckedChange, disabled = false, size = 'default', className, ...props }, ref) => {\n const api = createSwitch({ checked, disabled })\n\n const handleClick = () => {\n if (api.isInteractive) {\n onCheckedChange?.(!checked)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ') {\n e.preventDefault()\n if (api.isInteractive) {\n onCheckedChange?.(!checked)\n }\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(switchVariants({ checked: checked ? 'true' : 'false', size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n <span\n className={cn(switchThumbVariants({ checked: checked ? 'true' : 'false', size }))}\n />\n </button>\n )\n },\n)\n\nSwitch.displayName = 'Switch'\n","import type { AccessibilityProps } from '@refraction-ui/shared'\nimport { generateId } from '@refraction-ui/shared'\n\nexport interface MessageReaction {\n emoji: string\n count: number\n userReacted: boolean\n}\n\nexport interface MessageAttachment {\n id: string\n name: string\n url: string\n type: string\n size?: number\n}\n\nexport interface MessageData {\n /** Unique message ID */\n id: string\n /** Author display info */\n author: {\n id: string\n name: string\n avatarUrl?: string\n }\n /** Message content (can contain markdown) */\n content: string\n /** Message timestamp */\n timestamp: Date\n /** Reactions on this message */\n reactions?: MessageReaction[]\n /** Threaded replies */\n replies?: MessageData[]\n /** File attachments */\n attachments?: MessageAttachment[]\n /** Whether this message has been edited */\n edited?: boolean\n}\n\nexport interface ThreadViewProps {\n /** Messages to display */\n messages: MessageData[]\n /** Callback when a reply is sent */\n onReply?: (messageId: string, content: string) => void\n /** Callback when a reaction is toggled */\n onReact?: (messageId: string, emoji: string) => void\n /** Current user ID (for highlighting own messages) */\n currentUserId?: string\n}\n\nexport interface ThreadViewState {\n messages: MessageData[]\n replyingTo: string | null\n}\n\nexport interface ThreadViewAPI {\n /** Current state */\n state: ThreadViewState\n /** Start replying to a message */\n startReply(messageId: string): void\n /** Cancel reply */\n cancelReply(): void\n /** Send a reply */\n reply(messageId: string, content: string): void\n /** Toggle a reaction on a message */\n react(messageId: string, emoji: string): void\n /** Format a timestamp for display */\n formatTimestamp(date: Date): string\n /** Format relative time (e.g., \"2 minutes ago\") */\n formatRelativeTime(date: Date): string\n /** ARIA props for the thread container */\n ariaProps: Partial<AccessibilityProps> & Record<string, unknown>\n /** Get ARIA props for a message */\n getMessageAriaProps(message: MessageData): Record<string, unknown>\n /** Get ARIA props for a reply button */\n getReplyButtonAriaProps(messageId: string): Record<string, unknown>\n /** Generated IDs */\n ids: {\n thread: string\n label: string\n }\n}\n\nexport function formatTimestamp(date: Date): string {\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const ampm = hours >= 12 ? 'PM' : 'AM'\n const displayHours = hours % 12 || 12\n const displayMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`\n return `${displayHours}:${displayMinutes} ${ampm}`\n}\n\nexport function formatRelativeTime(date: Date, now?: Date): string {\n const reference = now ?? new Date()\n const diffMs = reference.getTime() - date.getTime()\n const diffSeconds = Math.floor(diffMs / 1000)\n const diffMinutes = Math.floor(diffSeconds / 60)\n const diffHours = Math.floor(diffMinutes / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSeconds < 60) return 'just now'\n if (diffMinutes < 60) return `${diffMinutes} minute${diffMinutes === 1 ? '' : 's'} ago`\n if (diffHours < 24) return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`\n if (diffDays < 7) return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`\n\n return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })\n}\n\nexport function createThreadView(props: ThreadViewProps): ThreadViewAPI {\n const { messages, onReply, onReact, currentUserId } = props\n\n let replyingTo: string | null = null\n\n const threadId = generateId('rfr-thread')\n const labelId = generateId('rfr-thread-label')\n\n function startReply(messageId: string): void {\n replyingTo = messageId\n }\n\n function cancelReply(): void {\n replyingTo = null\n }\n\n function reply(messageId: string, content: string): void {\n onReply?.(messageId, content)\n replyingTo = null\n }\n\n function react(messageId: string, emoji: string): void {\n onReact?.(messageId, emoji)\n }\n\n const ariaProps: Partial<AccessibilityProps> & Record<string, unknown> = {\n role: 'log',\n 'aria-label': 'Message thread',\n 'aria-live': 'polite',\n id: threadId,\n }\n\n function getMessageAriaProps(message: MessageData): Record<string, unknown> {\n const isOwn = currentUserId && message.author.id === currentUserId\n return {\n role: 'article',\n 'aria-label': `Message from ${message.author.name}${isOwn ? ' (you)' : ''} at ${formatTimestamp(message.timestamp)}`,\n }\n }\n\n function getReplyButtonAriaProps(_messageId: string): Record<string, unknown> {\n return {\n role: 'button',\n 'aria-label': `Reply to message`,\n }\n }\n\n return {\n state: {\n messages,\n get replyingTo() { return replyingTo },\n },\n startReply,\n cancelReply,\n reply,\n react,\n formatTimestamp,\n formatRelativeTime,\n ariaProps,\n getMessageAriaProps,\n getReplyButtonAriaProps,\n ids: {\n thread: threadId,\n label: labelId,\n },\n }\n}\n","export const threadContainerStyles =\n 'flex flex-col gap-1'\n\nexport const threadMessageStyles =\n 'flex gap-3 px-4 py-2 hover:bg-accent/50 rounded-md transition-colors group'\n\nexport const threadAvatarStyles =\n 'h-9 w-9 rounded-full bg-muted flex items-center justify-center text-sm font-medium overflow-hidden flex-shrink-0'\n\nexport const threadContentStyles =\n 'flex-1 min-w-0'\n\nexport const threadAuthorStyles =\n 'font-semibold text-sm'\n\nexport const threadTimestampStyles =\n 'text-xs text-muted-foreground ml-2'\n\nexport const threadBodyStyles =\n 'text-sm mt-0.5 whitespace-pre-wrap break-words'\n\nexport const threadReactionsStyles =\n 'flex flex-wrap gap-1 mt-1'\n\nexport const threadReplyIndicatorStyles =\n 'flex items-center gap-1 mt-1 text-xs text-primary cursor-pointer hover:underline'\n\nexport const threadActionsStyles =\n 'flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity'\n\nexport const threadAttachmentStyles =\n 'flex items-center gap-2 mt-1 p-2 rounded border text-xs bg-muted/50'\n\nexport const threadEditedStyles =\n 'text-xs text-muted-foreground ml-1'\n","import * as React from 'react'\nimport {\n createThreadView,\n threadContainerStyles,\n threadMessageStyles,\n threadAvatarStyles,\n threadContentStyles,\n threadAuthorStyles,\n threadTimestampStyles,\n threadBodyStyles,\n threadReactionsStyles,\n threadReplyIndicatorStyles,\n threadActionsStyles,\n threadAttachmentStyles,\n threadEditedStyles,\n type MessageData,\n type MessageReaction,\n} from '@refraction-ui/thread-view'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ThreadViewProps {\n messages: MessageData[]\n onReply?: (messageId: string, content: string) => void\n onReact?: (messageId: string, emoji: string) => void\n currentUserId?: string\n className?: string\n}\n\nfunction MessageComponent({\n message,\n api,\n}: {\n message: MessageData\n api: ReturnType<typeof createThreadView>\n}) {\n return React.createElement(\n 'div',\n { className: threadMessageStyles, ...api.getMessageAriaProps(message) },\n // Avatar\n React.createElement(\n 'div',\n { className: threadAvatarStyles },\n message.author.avatarUrl\n ? React.createElement('img', {\n src: message.author.avatarUrl,\n alt: message.author.name,\n className: 'h-full w-full object-cover',\n })\n : message.author.name.charAt(0).toUpperCase(),\n ),\n // Content\n React.createElement(\n 'div',\n { className: threadContentStyles },\n React.createElement(\n 'div',\n { className: 'flex items-baseline' },\n React.createElement('span', { className: threadAuthorStyles }, message.author.name),\n React.createElement(\n 'span',\n { className: threadTimestampStyles },\n api.formatTimestamp(message.timestamp),\n ),\n message.edited &&\n React.createElement('span', { className: threadEditedStyles }, '(edited)'),\n ),\n React.createElement('div', { className: threadBodyStyles }, message.content),\n // Reactions\n message.reactions &&\n message.reactions.length > 0 &&\n React.createElement(\n 'div',\n { className: threadReactionsStyles },\n message.reactions.map((reaction, i) =>\n React.createElement(\n 'button',\n {\n key: `${reaction.emoji}-${i}`,\n type: 'button',\n className: cn(\n 'inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-xs cursor-pointer',\n reaction.userReacted ? 'border-primary bg-primary/10' : 'border-border',\n ),\n onClick: () => api.react(message.id, reaction.emoji),\n },\n `${reaction.emoji} ${reaction.count}`,\n ),\n ),\n ),\n // Reply indicator\n message.replies &&\n message.replies.length > 0 &&\n React.createElement(\n 'div',\n { className: threadReplyIndicatorStyles },\n `${message.replies.length} ${message.replies.length === 1 ? 'reply' : 'replies'}`,\n ),\n // Attachments\n message.attachments &&\n message.attachments.map((attachment) =>\n React.createElement(\n 'div',\n { key: attachment.id, className: threadAttachmentStyles },\n React.createElement('span', null, '\\u{1F4CE}'),\n React.createElement('span', { className: 'truncate' }, attachment.name),\n ),\n ),\n // Actions (reply button)\n React.createElement(\n 'div',\n { className: threadActionsStyles },\n React.createElement(\n 'button',\n {\n type: 'button',\n className: 'text-xs text-muted-foreground hover:text-foreground cursor-pointer',\n onClick: () => api.startReply(message.id),\n ...api.getReplyButtonAriaProps(message.id),\n },\n 'Reply',\n ),\n ),\n ),\n )\n}\n\nexport function ThreadView({\n messages,\n onReply,\n onReact,\n currentUserId,\n className,\n}: ThreadViewProps) {\n const api = createThreadView({ messages, onReply, onReact, currentUserId })\n\n return React.createElement(\n 'div',\n { ...api.ariaProps, className: cn(threadContainerStyles, className) },\n messages.map((message) =>\n React.createElement(MessageComponent, {\n key: message.id,\n message,\n api,\n }),\n ),\n )\n}\n\nThreadView.displayName = 'ThreadView'\n","export interface TocItem {\n id: string;\n text: string;\n level: number;\n}\n\nexport function parseHeadings(container: HTMLElement, selectors = 'h2, h3, h4'): TocItem[] {\n const headings = Array.from(container.querySelectorAll(selectors));\n return headings.map(h => ({\n id: h.id || h.textContent?.toLowerCase().replace(/\\s+/g, '-') || '',\n text: h.textContent || '',\n level: parseInt(h.tagName.charAt(1), 10)\n })).filter(h => h.id !== ''); // Ensure headings have IDs\n}\n\nexport function observeHeadings(\n headingIds: string[],\n callback: (activeId: string) => void,\n options?: IntersectionObserverInit\n): () => void {\n const observer = new IntersectionObserver((entries) => {\n // Find the first intersecting entry\n for (const entry of entries) {\n if (entry.isIntersecting) {\n callback(entry.target.id);\n break; // Or handle multiple, but usually we just care about one\n }\n }\n }, { rootMargin: '0px 0px -80% 0px', ...options });\n\n headingIds.forEach(id => {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n });\n\n return () => observer.disconnect();\n}\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\nimport { parseHeadings, observeHeadings, TocItem } from '@refraction-ui/table-of-contents'\n\nexport interface TableOfContentsProps extends React.HTMLAttributes<HTMLDivElement> {\n containerRef?: React.RefObject<HTMLElement | null>\n selectors?: string\n onActiveIdChange?: (id: string) => void\n}\n\nexport const TableOfContents = React.forwardRef<HTMLDivElement, TableOfContentsProps>(\n ({ className, containerRef, selectors = 'h2, h3, h4', onActiveIdChange, ...props }, ref) => {\n const [headings, setHeadings] = React.useState<TocItem[]>([])\n const [activeId, setActiveId] = React.useState<string>('')\n\n React.useEffect(() => {\n const container = containerRef?.current || document.body\n if (!container) return\n\n const parsedHeadings = parseHeadings(container, selectors)\n setHeadings(parsedHeadings)\n\n if (parsedHeadings.length === 0) return\n\n const disconnect = observeHeadings(parsedHeadings.map(h => h.id), (id) => {\n setActiveId(id)\n onActiveIdChange?.(id)\n })\n\n return () => disconnect()\n }, [containerRef, selectors, onActiveIdChange])\n\n if (headings.length === 0) {\n return null\n }\n\n return (\n <nav ref={ref} className={cn(\"space-y-1\", className)} {...props}>\n <ul className=\"m-0 list-none p-0\">\n {headings.map((heading) => (\n <li\n key={heading.id}\n className={cn(\n \"py-1\",\n heading.level === 3 ? \"pl-4\" : heading.level === 4 ? \"pl-8\" : \"\"\n )}\n >\n <a\n href={`#${heading.id}`}\n className={cn(\n \"block text-sm transition-colors hover:text-foreground\",\n activeId === heading.id ? \"font-medium text-foreground\" : \"text-muted-foreground\"\n )}\n >\n {heading.text}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n )\n }\n)\nTableOfContents.displayName = 'TableOfContents'\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nconst CarouselContext = React.createContext<{\n type: 'single' | 'multiple'\n value: string | string[]\n onValueChange: (value: string) => void\n} | null>(null)\n\nexport interface CarouselProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n type?: 'single' | 'multiple'\n collapsible?: boolean\n defaultValue?: string | string[]\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n}\n\nexport const Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n ({ className, type = 'single', collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | string[]>(\n defaultValue ?? (type === 'multiple' ? [] : '')\n )\n\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue\n\n const handleValueChange = React.useCallback(\n (itemValue: string) => {\n if (type === 'single') {\n const newValue = value === itemValue && collapsible ? '' : itemValue\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n } else {\n const arrValue = Array.isArray(value) ? value : []\n const newValue = arrValue.includes(itemValue)\n ? arrValue.filter((v) => v !== itemValue)\n : [...arrValue, itemValue]\n setUncontrolledValue(newValue)\n onValueChange?.(newValue)\n }\n },\n [type, collapsible, value, onValueChange]\n )\n\n return (\n <CarouselContext.Provider value={{ type, value, onValueChange: handleValueChange }}>\n <div ref={ref} className={cn(\"flex flex-col w-full\", className)} {...props} />\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = 'Carousel'\n\nconst CarouselItemContext = React.createContext<{ value: string; isOpen: boolean } | null>(null)\n\nexport interface CarouselItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(CarouselContext)\n if (!context) throw new Error('CarouselItem must be within Carousel')\n\n const isOpen = context.type === 'single'\n ? context.value === value\n : Array.isArray(context.value) && context.value.includes(value)\n\n return (\n <CarouselItemContext.Provider value={{ value, isOpen }}>\n <div ref={ref} className={cn(\"border-b border-border\", className)} data-state={isOpen ? 'open' : 'closed'} {...props} />\n </CarouselItemContext.Provider>\n )\n }\n)\nCarouselItem.displayName = 'CarouselItem'\n\nexport interface CarouselTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const CarouselTrigger = React.forwardRef<HTMLButtonElement, CarouselTriggerProps>(\n ({ className, children, ...props }, ref) => {\n const carouselContext = React.useContext(CarouselContext)\n const itemContext = React.useContext(CarouselItemContext)\n \n if (!carouselContext || !itemContext) throw new Error('CarouselTrigger missing context')\n\n return (\n <h3 className=\"flex m-0 p-0\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={itemContext.isOpen}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n onClick={() => carouselContext.onValueChange(itemContext.value)}\n {...props}\n >\n {children}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n </h3>\n )\n }\n)\nCarouselTrigger.displayName = 'CarouselTrigger'\n\nexport interface CarouselContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CarouselContent = React.forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ className, children, ...props }, ref) => {\n const itemContext = React.useContext(CarouselItemContext)\n if (!itemContext) throw new Error('CarouselContent missing context')\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm\",\n className\n )}\n data-state={itemContext.isOpen ? 'open' : 'closed'}\n hidden={!itemContext.isOpen}\n {...props}\n >\n <div className=\"pb-4 pt-0 text-muted-foreground leading-relaxed\">{children}</div>\n </div>\n )\n }\n)\nCarouselContent.displayName = 'CarouselContent'\n","import * as React from 'react'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(\"\", className)} {...props} />\n }\n)\nPagination.displayName = 'Pagination'\n","import React from 'react';\nexport const Callout = () => <div />;","import React from 'react';\nexport const Steps = () => <div />;","import * as React from 'react';\n\nexport const SkipToContent = () => {\n return null;\n};\n","import * as React from 'react';\n\nexport const CodeBlock = () => {\n return null;\n};\n","export interface LinkCardProps {\n href?: string\n}\n\nexport function createLinkCard(_props: LinkCardProps = {}) {\n return {\n dataAttributes: { 'data-slot': 'link-card' }\n }\n}","import * as React from 'react'\nimport { createLinkCard } from '@refraction-ui/link-card'\nimport { cn } from '@refraction-ui/shared'\n\nexport const LinkCard = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, ...props }, ref) => {\n const api = createLinkCard(props)\n return (\n <a\n ref={ref}\n className={cn(className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n)\nLinkCard.displayName = 'LinkCard'","export interface CardGridProps {\n columns?: number\n}\n\nexport function createCardGrid(_props: CardGridProps = {}) {\n return {\n dataAttributes: { 'data-slot': 'card-grid' }\n }\n}","import * as React from 'react'\nimport { createCardGrid, type CardGridProps } from '@refraction-ui/card-grid'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface ReactCardGridProps extends React.HTMLAttributes<HTMLDivElement>, CardGridProps {}\n\nexport const CardGrid = React.forwardRef<HTMLDivElement, ReactCardGridProps>(\n ({ className, columns = 3, ...props }, ref) => {\n const api = createCardGrid({ columns })\n return (\n <div\n ref={ref}\n className={cn(className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n)\nCardGrid.displayName = 'CardGrid'","export interface PaymentProps {\n disabled?: boolean;\n}\n\nexport interface PaymentAPI {\n props: PaymentProps;\n}\n\nexport function createPayment(props: PaymentProps = {}): PaymentAPI {\n return {\n props: {\n ...props,\n 'data-slot': 'payment',\n } as PaymentProps & Record<string, unknown>,\n };\n}\n","import * as React from 'react';\nimport { createPayment, type PaymentProps as CorePaymentProps } from '@refraction-ui/payment';\nimport { cn } from '@refraction-ui/shared';\n\nexport interface PaymentProps extends React.HTMLAttributes<HTMLDivElement>, CorePaymentProps {\n disabled?: boolean;\n}\n\nexport const Payment = React.forwardRef<HTMLDivElement, PaymentProps>(\n ({ className, disabled, ...props }, ref) => {\n const api = createPayment({ disabled });\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-md mx-auto p-6 border border-border rounded-xl bg-card text-card-foreground shadow-sm\",\n disabled && \"opacity-50 pointer-events-none\",\n className\n )}\n {...api.props}\n {...props}\n />\n );\n }\n);\nPayment.displayName = 'Payment';\n\nexport interface PaymentHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentHeader = React.forwardRef<HTMLDivElement, PaymentHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"mb-6 flex flex-col gap-1.5\", className)} {...props} />\n )\n);\nPaymentHeader.displayName = 'PaymentHeader';\n\nexport interface PaymentTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const PaymentTitle = React.forwardRef<HTMLHeadingElement, PaymentTitleProps>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-xl font-semibold leading-none tracking-tight\", className)} {...props} />\n )\n);\nPaymentTitle.displayName = 'PaymentTitle';\n\nexport interface PaymentDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const PaymentDescription = React.forwardRef<HTMLParagraphElement, PaymentDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n);\nPaymentDescription.displayName = 'PaymentDescription';\n\nexport interface PaymentContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentContent = React.forwardRef<HTMLDivElement, PaymentContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-4\", className)} {...props} />\n )\n);\nPaymentContent.displayName = 'PaymentContent';\n\nexport interface PaymentFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentFooter = React.forwardRef<HTMLDivElement, PaymentFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"mt-6 flex flex-col gap-3\", className)} {...props} />\n )\n);\nPaymentFooter.displayName = 'PaymentFooter';\n\nexport interface PaymentButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PaymentButton = React.forwardRef<HTMLButtonElement, PaymentButtonProps>(\n ({ className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n \"inline-flex w-full items-center justify-center whitespace-nowrap rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n);\nPaymentButton.displayName = 'PaymentButton';\n"]}