@wow-two-beta/ui-vue 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +201 -65
- package/dist/analytics/Analytics.d.ts +5 -5
- package/dist/analytics/AnalyticsProvider.d.ts +1 -1
- package/dist/analytics/MemoryAnalyticsProvider.d.ts +4 -4
- package/dist/analytics/index.js +9 -1
- package/dist/analytics/index.js.map +1 -1
- package/dist/auth/AuthBridge.d.ts +4 -4
- package/dist/auth/AuthSession.d.ts +14 -7
- package/dist/auth/BearerStrategy.d.ts +12 -8
- package/dist/auth/CookieStrategy.d.ts +11 -8
- package/dist/auth/RedirectStrategy.d.ts +2 -2
- package/dist/auth/TokenStorage.d.ts +2 -2
- package/dist/auth/index.d.ts +4 -4
- package/dist/auth/index.js +138 -64
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/providers/AuthContext.d.ts +43 -0
- package/dist/auth/providers/AuthProvider.vue.d.ts +39 -0
- package/dist/chunks/Align-DqFtCY3a.js.map +1 -1
- package/dist/chunks/AnchoredPositioner.vue_vue_type_script_setup_true_lang-BpBVI2Cu.js.map +1 -1
- package/dist/chunks/Announce.vue_vue_type_script_setup_true_lang-QM4vCs2n.js +46 -0
- package/dist/chunks/Announce.vue_vue_type_script_setup_true_lang-QM4vCs2n.js.map +1 -0
- package/dist/chunks/ApiError-_AOua_XE.js +41 -0
- package/dist/chunks/ApiError-_AOua_XE.js.map +1 -0
- package/dist/chunks/AppErrorFactory-DCdNbVfv.js +54 -0
- package/dist/chunks/AppErrorFactory-DCdNbVfv.js.map +1 -0
- package/dist/chunks/AriaAttribute-CmUjjXjp.js +42 -0
- package/dist/chunks/AriaAttribute-CmUjjXjp.js.map +1 -0
- package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-CSRUFdcY.js +936 -0
- package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-CSRUFdcY.js.map +1 -0
- package/dist/chunks/BackdropOverlay.vue_vue_type_script_setup_true_lang-DM8CjnY2.js +76 -0
- package/dist/chunks/BackdropOverlay.vue_vue_type_script_setup_true_lang-DM8CjnY2.js.map +1 -0
- package/dist/chunks/Button.vue_vue_type_script_setup_true_lang-CLqRVtAu.js +632 -0
- package/dist/chunks/Button.vue_vue_type_script_setup_true_lang-CLqRVtAu.js.map +1 -0
- package/dist/chunks/Bytes-CzQrdbN4.js +21 -0
- package/dist/chunks/Bytes-CzQrdbN4.js.map +1 -0
- package/dist/chunks/CharacterCountCallout.vue_vue_type_script_setup_true_lang-CJaPwXly.js +2076 -0
- package/dist/chunks/CharacterCountCallout.vue_vue_type_script_setup_true_lang-CJaPwXly.js.map +1 -0
- package/dist/chunks/Chord-C3OKRsgk.js +139 -0
- package/dist/chunks/Chord-C3OKRsgk.js.map +1 -0
- package/dist/chunks/Cn-CzDCF-Ah.js +9 -0
- package/dist/chunks/Cn-CzDCF-Ah.js.map +1 -0
- package/dist/chunks/ColorExtensions-DiCSaVbJ.js +53 -0
- package/dist/chunks/ColorExtensions-DiCSaVbJ.js.map +1 -0
- package/dist/chunks/ColorModeContext-DC77vyvQ.js +19 -0
- package/dist/chunks/ColorModeContext-DC77vyvQ.js.map +1 -0
- package/dist/chunks/CommandPaletteModalSeparator.vue_vue_type_script_setup_true_lang-B6FGFSfj.js +2080 -0
- package/dist/chunks/CommandPaletteModalSeparator.vue_vue_type_script_setup_true_lang-B6FGFSfj.js.map +1 -0
- package/dist/chunks/Compare-C5NGppdh.js +35 -0
- package/dist/chunks/Compare-C5NGppdh.js.map +1 -0
- package/dist/chunks/ComposeEventHandlers-rgxao5aD.js +12 -0
- package/dist/chunks/ComposeEventHandlers-rgxao5aD.js.map +1 -0
- package/dist/chunks/CornerPosition-FneGck5D.js.map +1 -1
- package/dist/chunks/CssExtensions-ctGVlfYU.js +161 -0
- package/dist/chunks/CssExtensions-ctGVlfYU.js.map +1 -0
- package/dist/chunks/DataAttr-7BR67dTj.js +7 -0
- package/dist/chunks/DataAttr-7BR67dTj.js.map +1 -0
- package/dist/chunks/DeepEqual-xCcUOAA8.js +131 -0
- package/dist/chunks/DeepEqual-xCcUOAA8.js.map +1 -0
- package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-DElE4ZeQ.js +322 -0
- package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-DElE4ZeQ.js.map +1 -0
- package/dist/chunks/DomOrderExtensions-Czsyvn6e.js +16 -0
- package/dist/chunks/DomOrderExtensions-Czsyvn6e.js.map +1 -0
- package/dist/chunks/DrawerContent.vue_vue_type_script_setup_true_lang-dLwafPAj.js +212 -0
- package/dist/chunks/DrawerContent.vue_vue_type_script_setup_true_lang-dLwafPAj.js.map +1 -0
- package/dist/chunks/EmojiCatalog-CR4Lcm43.js.map +1 -1
- package/dist/chunks/Environment-BLuXHzzF.js +16 -0
- package/dist/chunks/Environment-BLuXHzzF.js.map +1 -0
- package/dist/chunks/Equality-BabbLMBX.js +27 -0
- package/dist/chunks/Equality-BabbLMBX.js.map +1 -0
- package/dist/chunks/ErrorLike-CRnbeEM0.js +27 -0
- package/dist/chunks/ErrorLike-CRnbeEM0.js.map +1 -0
- package/dist/chunks/ErrorRecognizers-DO2SHD6N.js +17 -0
- package/dist/chunks/ErrorRecognizers-DO2SHD6N.js.map +1 -0
- package/dist/chunks/ExactNumber-CboRl3_0.js +224 -0
- package/dist/chunks/ExactNumber-CboRl3_0.js.map +1 -0
- package/dist/chunks/FeedbackBus-CTj18X4n.js.map +1 -1
- package/dist/chunks/FieldErrorCallout.vue_vue_type_script_setup_true_lang-C185v77U.js +55 -0
- package/dist/chunks/FieldErrorCallout.vue_vue_type_script_setup_true_lang-C185v77U.js.map +1 -0
- package/dist/chunks/FieldErrors-DIHjOm5W.js +57 -0
- package/dist/chunks/FieldErrors-DIHjOm5W.js.map +1 -0
- package/dist/chunks/FieldHelperText.vue_vue_type_script_setup_true_lang-YYE7Zysp.js +497 -0
- package/dist/chunks/FieldHelperText.vue_vue_type_script_setup_true_lang-YYE7Zysp.js.map +1 -0
- package/dist/chunks/FileName-DUtj4I5A.js +33 -0
- package/dist/chunks/FileName-DUtj4I5A.js.map +1 -0
- package/dist/chunks/FormControlContext-B71MFW26.js.map +1 -1
- package/dist/chunks/FormControlProvider.vue_vue_type_script_setup_true_lang-D_yikT2o.js +70 -0
- package/dist/chunks/FormControlProvider.vue_vue_type_script_setup_true_lang-D_yikT2o.js.map +1 -0
- package/dist/chunks/GoogleIdentity-D12Kr334.js +123 -0
- package/dist/chunks/GoogleIdentity-D12Kr334.js.map +1 -0
- package/dist/chunks/Guid-CflnxKPZ.js +68 -0
- package/dist/chunks/Guid-CflnxKPZ.js.map +1 -0
- package/dist/chunks/HtmlValues-jlKY5f9C.js +23 -0
- package/dist/chunks/HtmlValues-jlKY5f9C.js.map +1 -0
- package/dist/chunks/Icon.vue_vue_type_script_setup_true_lang-BVWSqaoe.js +28 -0
- package/dist/chunks/Icon.vue_vue_type_script_setup_true_lang-BVWSqaoe.js.map +1 -0
- package/dist/chunks/InlineLayout.vue_vue_type_script_setup_true_lang-CdG8lfst.js +68 -0
- package/dist/chunks/InlineLayout.vue_vue_type_script_setup_true_lang-CdG8lfst.js.map +1 -0
- package/dist/chunks/Key-CQlkK53D.js +34 -0
- package/dist/chunks/Key-CQlkK53D.js.map +1 -0
- package/dist/chunks/LinkItem.vue_vue_type_script_setup_true_lang-BjPIqvPc.js +1809 -0
- package/dist/chunks/LinkItem.vue_vue_type_script_setup_true_lang-BjPIqvPc.js.map +1 -0
- package/dist/chunks/LocaleContext-B7vUZmX-.js +41 -0
- package/dist/chunks/LocaleContext-B7vUZmX-.js.map +1 -0
- package/dist/chunks/Messages-CSW3nyTs.js +201 -0
- package/dist/chunks/Messages-CSW3nyTs.js.map +1 -0
- package/dist/chunks/NavItem.vue_vue_type_script_setup_true_lang-ed_LzXDI.js +86 -0
- package/dist/chunks/NavItem.vue_vue_type_script_setup_true_lang-ed_LzXDI.js.map +1 -0
- package/dist/chunks/OnboardingChecklistCardTask.vue_vue_type_script_setup_true_lang-vqTtyR9L.js +9796 -0
- package/dist/chunks/OnboardingChecklistCardTask.vue_vue_type_script_setup_true_lang-vqTtyR9L.js.map +1 -0
- package/dist/chunks/OptionalExtensions-NiO6gV0W.js +10 -0
- package/dist/chunks/OptionalExtensions-NiO6gV0W.js.map +1 -0
- package/dist/chunks/Orientation-u-sYunuG.js.map +1 -1
- package/dist/chunks/OverlayArrow.vue_vue_type_script_setup_true_lang-CLYhnI8i.js.map +1 -1
- package/dist/chunks/OverlayPosition-BNybkMGG.js.map +1 -1
- package/dist/chunks/PopoverContent.vue_vue_type_script_setup_true_lang-DPJZHdv2.js +268 -0
- package/dist/chunks/PopoverContent.vue_vue_type_script_setup_true_lang-DPJZHdv2.js.map +1 -0
- package/dist/chunks/Portal.vue_vue_type_script_setup_true_lang-C2_xSIMy.js +32 -0
- package/dist/chunks/Portal.vue_vue_type_script_setup_true_lang-C2_xSIMy.js.map +1 -0
- package/dist/chunks/Presence-BwBquQOQ.js +138 -0
- package/dist/chunks/Presence-BwBquQOQ.js.map +1 -0
- package/dist/chunks/PressExtensions-DXqhjlR2.js.map +1 -1
- package/dist/chunks/Primitive-Bt_MgDir.js +20 -0
- package/dist/chunks/Primitive-Bt_MgDir.js.map +1 -0
- package/dist/chunks/ProgressTone-BpLPUptx.js.map +1 -1
- package/dist/chunks/QueryPermission-BsLR2WRk.js +94 -0
- package/dist/chunks/QueryPermission-BsLR2WRk.js.map +1 -0
- package/dist/chunks/QueryPlugin-CfotNm6j.js.map +1 -1
- package/dist/chunks/ResultExtensions-B7dWH0FZ.js +58 -0
- package/dist/chunks/ResultExtensions-B7dWH0FZ.js.map +1 -0
- package/dist/chunks/RovingFocusGroup.vue_vue_type_script_setup_true_lang-BGZe5AX4.js +244 -0
- package/dist/chunks/RovingFocusGroup.vue_vue_type_script_setup_true_lang-BGZe5AX4.js.map +1 -0
- package/dist/chunks/ScrollLockProvider.vue_vue_type_script_setup_true_lang-DAYt3wgP.js +20 -0
- package/dist/chunks/ScrollLockProvider.vue_vue_type_script_setup_true_lang-DAYt3wgP.js.map +1 -0
- package/dist/chunks/SerializeError-BzTdy-3I.js +61 -0
- package/dist/chunks/SerializeError-BzTdy-3I.js.map +1 -0
- package/dist/chunks/Severity-D0C5oAt-.js.map +1 -1
- package/dist/chunks/Side-Kw61CDou.js +14 -0
- package/dist/chunks/Side-Kw61CDou.js.map +1 -0
- package/dist/chunks/Slot-CLT4PkWl.js +99 -0
- package/dist/chunks/Slot-CLT4PkWl.js.map +1 -0
- package/dist/chunks/SortableGroupMoveButton.vue_vue_type_script_setup_true_lang-TLzaptOC.js +14429 -0
- package/dist/chunks/SortableGroupMoveButton.vue_vue_type_script_setup_true_lang-TLzaptOC.js.map +1 -0
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-CU7oxE3n.js +23 -0
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-CU7oxE3n.js.map +1 -0
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-jgKrZLIK.js +76 -0
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-jgKrZLIK.js.map +1 -0
- package/dist/chunks/StackLayout.vue_vue_type_script_setup_true_lang-BTht83c-.js +172 -0
- package/dist/chunks/StackLayout.vue_vue_type_script_setup_true_lang-BTht83c-.js.map +1 -0
- package/dist/chunks/StatusTone-BoPK1s09.js.map +1 -1
- package/dist/chunks/StorageBroker-COC81ZGB.js.map +1 -1
- package/dist/chunks/StyleTokens-Bkz7Dm5L.js.map +1 -1
- package/dist/chunks/SubmitErrors-1_5oKOb1.js +402 -0
- package/dist/chunks/SubmitErrors-1_5oKOb1.js.map +1 -0
- package/dist/chunks/SurfaceStyles-BYLzCbuJ.js +144 -0
- package/dist/chunks/SurfaceStyles-BYLzCbuJ.js.map +1 -0
- package/dist/chunks/SwipeActionsLayout.vue_vue_type_script_setup_true_lang-Dc0UJfs9.js +2388 -0
- package/dist/chunks/SwipeActionsLayout.vue_vue_type_script_setup_true_lang-Dc0UJfs9.js.map +1 -0
- package/dist/chunks/ToError-vXncXe19.js +52 -0
- package/dist/chunks/ToError-vXncXe19.js.map +1 -0
- package/dist/chunks/Tones-DSlTgkaB.js +108 -0
- package/dist/chunks/Tones-DSlTgkaB.js.map +1 -0
- package/dist/chunks/TransitionExtensions-HyBfcJnn.js +19 -0
- package/dist/chunks/TransitionExtensions-HyBfcJnn.js.map +1 -0
- package/dist/chunks/UrlExtensions-DqgLm0KY.js +46 -0
- package/dist/chunks/UrlExtensions-DqgLm0KY.js.map +1 -0
- package/dist/chunks/UseClipboard-x6nEdQ9f.js +230 -0
- package/dist/chunks/UseClipboard-x6nEdQ9f.js.map +1 -0
- package/dist/chunks/UseControlled-BQneb7BW.js +29 -0
- package/dist/chunks/UseControlled-BQneb7BW.js.map +1 -0
- package/dist/chunks/UseDebounceHandler-BIZgvvGp.js +20 -0
- package/dist/chunks/UseDebounceHandler-BIZgvvGp.js.map +1 -0
- package/dist/chunks/UseEscape-CYPdpm_l.js +15 -0
- package/dist/chunks/UseEscape-CYPdpm_l.js.map +1 -0
- package/dist/chunks/UseEventListener-C1WgWGoT.js +17 -0
- package/dist/chunks/UseEventListener-C1WgWGoT.js.map +1 -0
- package/dist/chunks/UseHotkeys-dSOwoutT.js +82 -0
- package/dist/chunks/UseHotkeys-dSOwoutT.js.map +1 -0
- package/dist/chunks/UseId-CtgAhGrn.js +9 -0
- package/dist/chunks/UseId-CtgAhGrn.js.map +1 -0
- package/dist/chunks/UseNavigationProgress-Bx_MWd39.js +51 -0
- package/dist/chunks/UseNavigationProgress-Bx_MWd39.js.map +1 -0
- package/dist/chunks/UseOutsideClick-8TTSb9x6.js +57 -0
- package/dist/chunks/UseOutsideClick-8TTSb9x6.js.map +1 -0
- package/dist/chunks/UseRecentItems-Bgj28t5Y.js +63 -0
- package/dist/chunks/UseRecentItems-Bgj28t5Y.js.map +1 -0
- package/dist/chunks/UseReducedMotion-NZ5fg-Xb.js +36 -0
- package/dist/chunks/UseReducedMotion-NZ5fg-Xb.js.map +1 -0
- package/dist/chunks/UseResizeObserver-BUU7lC-n.js +17 -0
- package/dist/chunks/UseResizeObserver-BUU7lC-n.js.map +1 -0
- package/dist/chunks/UseScrollLock-DSk4L9xF.js +38 -0
- package/dist/chunks/UseScrollLock-DSk4L9xF.js.map +1 -0
- package/dist/chunks/UseTypeahead-C-y7nBo2.js +82 -0
- package/dist/chunks/UseTypeahead-C-y7nBo2.js.map +1 -0
- package/dist/chunks/index-BNxprnsV.js +81 -0
- package/dist/chunks/index-BNxprnsV.js.map +1 -0
- package/dist/chunks/index-BvFTmSpn.js +251 -0
- package/dist/chunks/index-BvFTmSpn.js.map +1 -0
- package/dist/chunks/index-BzMmo8Zb.js +245 -0
- package/dist/chunks/index-BzMmo8Zb.js.map +1 -0
- package/dist/chunks/index-Ck71aqGg.js +11 -0
- package/dist/chunks/index-Ck71aqGg.js.map +1 -0
- package/dist/chunks/index-ClXOmDLK.js +9 -0
- package/dist/chunks/index-ClXOmDLK.js.map +1 -0
- package/dist/chunks/index-DAbvXWP_.js +118 -0
- package/dist/chunks/index-DAbvXWP_.js.map +1 -0
- package/dist/chunks/index-DOC7DwST.js +12 -0
- package/dist/chunks/index-DOC7DwST.js.map +1 -0
- package/dist/chunks/index-DQ01kvk7.js +28 -0
- package/dist/chunks/index-DQ01kvk7.js.map +1 -0
- package/dist/chunks/index-DqGUKtAH.js +1783 -0
- package/dist/chunks/index-DqGUKtAH.js.map +1 -0
- package/dist/chunks/index-KL15HQew.js.map +1 -1
- package/dist/domain/color/Gradient.d.ts +2 -2
- package/dist/domain/color/index.d.ts +1 -1
- package/dist/domain/emoji/EmojiCatalog.d.ts +4 -4
- package/dist/domain/emoji/EmojiCatalogData.d.ts +1 -1
- package/dist/feedback/FeedbackBus.d.ts +10 -10
- package/dist/feedback/FeedbackQueryErrors.d.ts +5 -20
- package/dist/feedback/index.js +4 -5
- package/dist/feedback/index.js.map +1 -1
- package/dist/flags/FlagClient.d.ts +3 -3
- package/dist/flags/FlagProvider.d.ts +3 -3
- package/dist/flags/FlagTypes.d.ts +6 -6
- package/dist/flags/StaticFlagProvider.d.ts +4 -10
- package/dist/flags/index.d.ts +2 -2
- package/dist/flags/index.js +106 -26
- package/dist/flags/index.js.map +1 -1
- package/dist/flags/providers/FlagsContext.d.ts +31 -0
- package/dist/flags/providers/FlagsProvider.vue.d.ts +24 -0
- package/dist/formsEngine/AppForm.d.ts +259 -0
- package/dist/formsEngine/DeepEqual.d.ts +8 -0
- package/dist/formsEngine/FocusFirstInvalid.d.ts +9 -0
- package/dist/formsEngine/FormGlue.d.ts +54 -0
- package/dist/formsEngine/FormOperations.d.ts +11 -0
- package/dist/formsEngine/FormSnapshot.d.ts +7 -0
- package/dist/formsEngine/Paths.d.ts +47 -0
- package/dist/formsEngine/SchemaValidation.d.ts +39 -0
- package/dist/formsEngine/SubmitErrors.d.ts +28 -0
- package/dist/formsEngine/UseFieldArray.d.ts +87 -0
- package/dist/formsEngine/adapters/house/HouseFormCore.d.ts +34 -0
- package/dist/formsEngine/adapters/house/UseAppForm.d.ts +16 -0
- package/dist/formsEngine/adapters/house/index.js +436 -0
- package/dist/formsEngine/adapters/house/index.js.map +1 -0
- package/dist/formsEngine/adapters/tanstack/TanstackFormOverlay.d.ts +56 -0
- package/dist/formsEngine/adapters/tanstack/UseAppForm.d.ts +26 -0
- package/dist/formsEngine/adapters/tanstack/index.js +516 -0
- package/dist/formsEngine/adapters/tanstack/index.js.map +1 -0
- package/dist/formsEngine/index.d.ts +10 -0
- package/dist/formsEngine/index.js +130 -0
- package/dist/formsEngine/index.js.map +1 -0
- package/dist/foundation/animation/Animate.d.ts +1 -1
- package/dist/foundation/animation/Flip.d.ts +1 -1
- package/dist/foundation/animation/UseFlip.d.ts +1 -1
- package/dist/foundation/animation/animatedLayout/AnimatedLayout.d.ts +72 -0
- package/dist/foundation/animation/animatedLayout/index.d.ts +1 -0
- package/dist/foundation/animation/index.d.ts +5 -3
- package/dist/foundation/animation/index.js +17 -18
- package/dist/foundation/animation/index.js.map +1 -1
- package/dist/foundation/async/Retry.d.ts +1 -1
- package/dist/foundation/async/index.d.ts +1 -0
- package/dist/foundation/async/index.js +12 -6
- package/dist/foundation/async/index.js.map +1 -1
- package/dist/foundation/channels/LeaderElection.d.ts +97 -0
- package/dist/foundation/channels/SyncChannel.d.ts +76 -0
- package/dist/foundation/channels/hooks/UseBroadcastState.d.ts +31 -0
- package/dist/foundation/channels/hooks/UseLeaderElection.d.ts +25 -0
- package/dist/foundation/channels/hooks/UseSyncChannel.d.ts +16 -0
- package/dist/foundation/channels/index.d.ts +7 -0
- package/dist/foundation/channels/index.js +493 -0
- package/dist/foundation/channels/index.js.map +1 -0
- package/dist/foundation/clipboard/ClipboardFailureCode.d.ts +7 -0
- package/dist/foundation/clipboard/ClipboardPermission.d.ts +10 -4
- package/dist/foundation/clipboard/ClipboardResult.d.ts +9 -43
- package/dist/foundation/clipboard/ClipboardSupport.d.ts +14 -3
- package/dist/foundation/clipboard/PasteItems.d.ts +2 -2
- package/dist/foundation/clipboard/ReadClipboard.d.ts +1 -2
- package/dist/foundation/clipboard/hooks/UseClipboard.d.ts +25 -0
- package/dist/foundation/clipboard/hooks/UseClipboardCopy.d.ts +40 -0
- package/dist/foundation/clipboard/hooks/UsePasteHandler.d.ts +35 -0
- package/dist/foundation/clipboard/index.d.ts +5 -3
- package/dist/foundation/clipboard/index.js +52 -186
- package/dist/foundation/clipboard/index.js.map +1 -1
- package/dist/foundation/clipboard/models/ClipboardFailure.d.ts +11 -0
- package/dist/foundation/clipboard/models/ClipboardReadItemsResult.d.ts +5 -0
- package/dist/foundation/clipboard/models/ClipboardReadTextResult.d.ts +4 -0
- package/dist/foundation/clipboard/models/ClipboardWriteResult.d.ts +4 -0
- package/dist/foundation/collections/Arrays.d.ts +12 -12
- package/dist/foundation/collections/Comparison.d.ts +1 -1
- package/dist/foundation/collections/Records.d.ts +3 -3
- package/dist/foundation/collections/SetOps.d.ts +4 -4
- package/dist/foundation/collections/Tree.d.ts +5 -4
- package/dist/foundation/collections/index.d.ts +3 -2
- package/dist/foundation/collections/index.js +98 -94
- package/dist/foundation/collections/index.js.map +1 -1
- package/dist/foundation/commands/Command.d.ts +14 -22
- package/dist/foundation/commands/CommandRegistry.d.ts +11 -10
- package/dist/foundation/commands/CommandRunFailureCode.d.ts +7 -0
- package/dist/foundation/commands/SearchCommands.d.ts +3 -3
- package/dist/foundation/commands/hooks/UseCommandRegistry.d.ts +19 -0
- package/dist/foundation/commands/hooks/UseCommandShortcuts.d.ts +18 -0
- package/dist/foundation/commands/index.d.ts +9 -6
- package/dist/foundation/commands/index.js +16 -22
- package/dist/foundation/commands/index.js.map +1 -1
- package/dist/foundation/commands/models/CommandRunFailure.d.ts +11 -0
- package/dist/foundation/commands/models/CommandRunResult.d.ts +4 -0
- package/dist/foundation/commands/providers/CommandsContext.d.ts +30 -0
- package/dist/foundation/commands/providers/CommandsProvider.vue.d.ts +18 -0
- package/dist/foundation/config/ConfigField.d.ts +2 -2
- package/dist/foundation/config/ConfigSource.d.ts +3 -3
- package/dist/foundation/config/DefineConfig.d.ts +3 -3
- package/dist/foundation/config/Environment.d.ts +12 -0
- package/dist/foundation/config/index.d.ts +2 -1
- package/dist/foundation/config/index.js +11 -7
- package/dist/foundation/config/index.js.map +1 -1
- package/dist/foundation/crypto/Digest.d.ts +18 -4
- package/dist/foundation/crypto/Encoding.d.ts +4 -1
- package/dist/foundation/crypto/Random.d.ts +3 -3
- package/dist/foundation/crypto/WebCrypto.d.ts +2 -2
- package/dist/foundation/crypto/index.d.ts +2 -2
- package/dist/foundation/crypto/index.js +36 -26
- package/dist/foundation/crypto/index.js.map +1 -1
- package/dist/foundation/datetime/Comparison.d.ts +2 -2
- package/dist/foundation/datetime/Internals.d.ts +4 -4
- package/dist/foundation/datetime/TemporalCodecs.d.ts +26 -0
- package/dist/foundation/datetime/index.d.ts +2 -1
- package/dist/foundation/datetime/index.js +147 -20
- package/dist/foundation/datetime/index.js.map +1 -1
- package/dist/foundation/device/Breakpoints.d.ts +4 -10
- package/dist/foundation/device/hooks/UseBreakpoint.d.ts +4 -0
- package/dist/foundation/device/hooks/UseDisplayMode.d.ts +23 -0
- package/dist/foundation/device/hooks/UseMediaQuery.d.ts +14 -0
- package/dist/foundation/device/hooks/UsePointer.d.ts +25 -0
- package/dist/foundation/device/index.d.ts +9 -7
- package/dist/foundation/device/index.js +51 -45
- package/dist/foundation/device/index.js.map +1 -1
- package/dist/foundation/dom/DomOrderExtensions.d.ts +4 -0
- package/dist/foundation/dom/Polymorphic.d.ts +29 -0
- package/dist/foundation/dom/UrlExtensions.d.ts +5 -0
- package/dist/foundation/dom/enums/AriaAttribute.d.ts +48 -0
- package/dist/foundation/dom/enums/AttributeValue.d.ts +9 -0
- package/dist/foundation/dom/enums/DomEvent.d.ts +25 -0
- package/dist/foundation/dom/index.d.ts +16 -0
- package/dist/foundation/dom/index.js +31 -0
- package/dist/foundation/dom/index.js.map +1 -0
- package/dist/foundation/errors/ErrorLike.d.ts +1 -1
- package/dist/foundation/errors/ErrorMessage.d.ts +1 -1
- package/dist/foundation/errors/SerializeError.d.ts +13 -4
- package/dist/foundation/errors/ToError.d.ts +4 -1
- package/dist/foundation/errors/index.js +32 -12
- package/dist/foundation/errors/index.js.map +1 -1
- package/dist/foundation/files/index.d.ts +1 -1
- package/dist/foundation/files/index.js +2 -2
- package/dist/foundation/files/index.js.map +1 -1
- package/dist/foundation/formatters/Text.d.ts +52 -0
- package/dist/foundation/formatters/index.js +102 -0
- package/dist/foundation/formatters/index.js.map +1 -0
- package/dist/foundation/geolocation/DistanceBetween.d.ts +1 -1
- package/dist/foundation/geolocation/GetCurrentPosition.d.ts +3 -3
- package/dist/foundation/geolocation/PositionFailureCode.d.ts +9 -0
- package/dist/foundation/geolocation/PositionMapping.d.ts +50 -0
- package/dist/foundation/geolocation/WatchPosition.d.ts +3 -3
- package/dist/foundation/geolocation/hooks/UseGeolocation.d.ts +38 -0
- package/dist/foundation/geolocation/hooks/UseWatchPosition.d.ts +16 -0
- package/dist/foundation/geolocation/index.d.ts +6 -5
- package/dist/foundation/geolocation/index.js +39 -23
- package/dist/foundation/geolocation/index.js.map +1 -1
- package/dist/foundation/geolocation/models/GeolocationReading.d.ts +37 -0
- package/dist/foundation/geolocation/models/PositionFailure.d.ts +14 -0
- package/dist/foundation/geolocation/models/PositionReadResult.d.ts +5 -0
- package/dist/foundation/gestures/GestureMath.d.ts +4 -4
- package/dist/foundation/gestures/hooks/UseDrag.d.ts +75 -0
- package/dist/foundation/gestures/hooks/UseLongPress.d.ts +42 -0
- package/dist/foundation/gestures/hooks/UsePinch.d.ts +47 -0
- package/dist/foundation/gestures/hooks/UseSwipe.d.ts +46 -0
- package/dist/foundation/gestures/index.d.ts +6 -6
- package/dist/foundation/gestures/index.js +15 -14
- package/dist/foundation/gestures/index.js.map +1 -1
- package/dist/foundation/history/HistoryCore.d.ts +92 -0
- package/dist/foundation/history/hooks/UseUndoHistory.d.ts +66 -0
- package/dist/foundation/history/hooks/UseUndoShortcuts.d.ts +20 -0
- package/dist/foundation/history/index.d.ts +5 -0
- package/dist/foundation/history/index.js +363 -0
- package/dist/foundation/history/index.js.map +1 -0
- package/dist/foundation/http/ApiError.d.ts +7 -4
- package/dist/foundation/http/ApiFailure.d.ts +21 -0
- package/dist/foundation/http/ApiJsonCodec.d.ts +8 -0
- package/dist/foundation/http/CreateApiClient.d.ts +27 -42
- package/dist/foundation/http/Envelope.d.ts +7 -29
- package/dist/foundation/http/FieldErrors.d.ts +1 -1
- package/dist/foundation/http/index.d.ts +6 -5
- package/dist/foundation/http/index.js +123 -124
- package/dist/foundation/http/index.js.map +1 -1
- package/dist/foundation/http/models/Page.d.ts +47 -0
- package/dist/foundation/i18n/IntlCache.d.ts +4 -0
- package/dist/foundation/i18n/formattedRelative/FormattedRelative.vue.d.ts +9 -0
- package/dist/foundation/i18n/formattedRelative/index.d.ts +1 -0
- package/dist/foundation/i18n/index.d.ts +4 -3
- package/dist/foundation/i18n/index.js +13 -22
- package/dist/foundation/i18n/index.js.map +1 -1
- package/dist/foundation/i18n/providers/LocaleContext.d.ts +35 -0
- package/dist/foundation/i18n/providers/LocaleProvider.vue.d.ts +18 -0
- package/dist/foundation/icons/icon/Icon.vue.d.ts +44 -0
- package/dist/foundation/icons/icon/index.d.ts +1 -0
- package/dist/foundation/icons/index.d.ts +2 -2
- package/dist/foundation/icons/index.js +2 -2
- package/dist/foundation/icons/spinner/Spinner.vue.d.ts +6 -0
- package/dist/foundation/icons/spinner/index.d.ts +1 -0
- package/dist/foundation/idb/KeyValueStore.d.ts +3 -3
- package/dist/foundation/idb/Transactions.d.ts +1 -1
- package/dist/foundation/idb/index.d.ts +2 -2
- package/dist/foundation/idb/index.js +21 -4
- package/dist/foundation/idb/index.js.map +1 -1
- package/dist/foundation/identifiers/Guid.d.ts +6 -3
- package/dist/foundation/identifiers/index.d.ts +1 -0
- package/dist/foundation/identifiers/index.js +4 -65
- package/dist/foundation/identifiers/index.js.map +1 -1
- package/dist/foundation/json/JsonFailureCode.d.ts +9 -0
- package/dist/foundation/json/JsonLimits.d.ts +6 -0
- package/dist/foundation/json/JsonText.d.ts +12 -0
- package/dist/foundation/json/LosslessJson.d.ts +8 -0
- package/dist/foundation/json/adapters/losslessJson/JsonAdapter.d.ts +5 -0
- package/dist/foundation/json/index.d.ts +5 -0
- package/dist/foundation/json/index.js +7 -0
- package/dist/foundation/json/index.js.map +1 -0
- package/dist/foundation/json/models/JsonFailure.d.ts +6 -0
- package/dist/foundation/json/models/LosslessJsonValue.d.ts +5 -0
- package/dist/foundation/logger/ConsoleLogSink.d.ts +4 -1
- package/dist/foundation/logger/LogLevel.d.ts +8 -2
- package/dist/foundation/logger/LogRecord.d.ts +2 -2
- package/dist/foundation/logger/LogSink.d.ts +5 -2
- package/dist/foundation/logger/Logger.d.ts +15 -6
- package/dist/foundation/logger/MemoryLogSink.d.ts +1 -1
- package/dist/foundation/logger/Redaction.d.ts +4 -4
- package/dist/foundation/logger/index.js +8 -3
- package/dist/foundation/logger/index.js.map +1 -1
- package/dist/foundation/media/CanCaptureMedia.d.ts +10 -1
- package/dist/foundation/media/FacingMode.d.ts +11 -4
- package/dist/foundation/media/ListMediaDevices.d.ts +8 -5
- package/dist/foundation/media/MediaStreamFailureCode.d.ts +10 -0
- package/dist/foundation/media/MediaStreamMapping.d.ts +15 -0
- package/dist/foundation/media/RequestMediaStream.d.ts +4 -4
- package/dist/foundation/media/UseMediaStream.d.ts +18 -5
- package/dist/foundation/media/index.d.ts +2 -1
- package/dist/foundation/media/index.js +51 -23
- package/dist/foundation/media/index.js.map +1 -1
- package/dist/foundation/media/models/MediaStreamFailure.d.ts +16 -0
- package/dist/foundation/media/models/MediaStreamRequestResult.d.ts +4 -0
- package/dist/foundation/net/ConnectionState.d.ts +6 -3
- package/dist/foundation/net/CreateEventStream.d.ts +10 -4
- package/dist/foundation/net/CreatePoller.d.ts +9 -3
- package/dist/foundation/net/CreateSocketClient.d.ts +5 -5
- package/dist/foundation/net/Liveness.d.ts +1 -1
- package/dist/foundation/net/Reconnect.d.ts +1 -1
- package/dist/foundation/net/hooks/UseEventStream.d.ts +25 -0
- package/dist/foundation/net/hooks/UsePolling.d.ts +26 -0
- package/dist/foundation/net/hooks/UseSocket.d.ts +32 -0
- package/dist/foundation/net/index.d.ts +3 -3
- package/dist/foundation/net/index.js +7 -5
- package/dist/foundation/net/index.js.map +1 -1
- package/dist/foundation/notifications/NotificationFailureCode.d.ts +7 -0
- package/dist/foundation/notifications/NotificationPermission.d.ts +12 -1
- package/dist/foundation/notifications/Notify.d.ts +7 -24
- package/dist/foundation/notifications/QueryPermission.d.ts +12 -1
- package/dist/foundation/notifications/hooks/UseNotificationPermission.d.ts +27 -0
- package/dist/foundation/notifications/hooks/UsePermissionState.d.ts +14 -0
- package/dist/foundation/notifications/index.d.ts +4 -3
- package/dist/foundation/notifications/index.js +41 -19
- package/dist/foundation/notifications/index.js.map +1 -1
- package/dist/foundation/notifications/models/NotificationFailure.d.ts +10 -0
- package/dist/foundation/notifications/models/NotificationShowResult.d.ts +4 -0
- package/dist/foundation/numbers/ExactNumber.d.ts +13 -0
- package/dist/foundation/numbers/NumberLimits.d.ts +7 -0
- package/dist/foundation/numbers/adapters/bignumber/DecimalArithmetic.d.ts +4 -0
- package/dist/foundation/numbers/enums/NumberFailureCode.d.ts +10 -0
- package/dist/foundation/numbers/enums/NumberRounding.d.ts +13 -0
- package/dist/foundation/numbers/index.d.ts +6 -0
- package/dist/foundation/numbers/index.js +8 -0
- package/dist/foundation/numbers/index.js.map +1 -0
- package/dist/foundation/numbers/models/ExactNumber.d.ts +47 -0
- package/dist/foundation/numbers/models/NumberFailure.d.ts +6 -0
- package/dist/foundation/numbers/models/NumberRoundingOptions.d.ts +6 -0
- package/dist/foundation/oauth/GoogleIdentity.d.ts +98 -0
- package/dist/foundation/oauth/index.d.ts +1 -0
- package/dist/foundation/oauth/index.js +7 -0
- package/dist/foundation/oauth/index.js.map +1 -0
- package/dist/foundation/observers/ObserveIntersection.d.ts +1 -1
- package/dist/foundation/observers/ObserveMutation.d.ts +2 -2
- package/dist/foundation/observers/VisibilitySteps.d.ts +1 -1
- package/dist/foundation/observers/hooks/UseInView.d.ts +41 -0
- package/dist/foundation/observers/hooks/UseIntersectionObserver.d.ts +18 -0
- package/dist/foundation/observers/hooks/UseMutationObserver.d.ts +21 -0
- package/dist/foundation/observers/index.d.ts +5 -4
- package/dist/foundation/observers/index.js +15 -13
- package/dist/foundation/observers/index.js.map +1 -1
- package/dist/foundation/optionals/index.d.ts +1 -0
- package/dist/foundation/optionals/index.js +5 -0
- package/dist/foundation/optionals/index.js.map +1 -0
- package/dist/foundation/primitives/accessibleIcon/AccessibleIcon.d.ts +5 -6
- package/dist/foundation/primitives/anchoredPositioner/AnchoredPositioner.vue.d.ts +11 -10
- package/dist/foundation/primitives/anchoredPositioner/index.d.ts +1 -1
- package/dist/foundation/primitives/announce/Announce.vue.d.ts +7 -6
- package/dist/foundation/primitives/colorModeProvider/ColorModeProvider.vue.d.ts +8 -8
- package/dist/foundation/primitives/colorModeProvider/index.d.ts +2 -2
- package/dist/foundation/primitives/directionProvider/DirectionProvider.vue.d.ts +4 -4
- package/dist/foundation/primitives/dismissableLayer/DismissableLayer.vue.d.ts +12 -12
- package/dist/foundation/primitives/focusScope/FocusScope.vue.d.ts +18 -16
- package/dist/foundation/primitives/focusScope/FocusScopeRegistry.d.ts +27 -0
- package/dist/foundation/primitives/formControlContext/FormControlContext.d.ts +12 -3
- package/dist/foundation/primitives/formControlContext/FormControlProvider.vue.d.ts +14 -14
- package/dist/foundation/primitives/formControlContext/index.d.ts +1 -1
- package/dist/foundation/primitives/index.js +11 -11
- package/dist/foundation/primitives/overlayArrow/OverlayArrow.vue.d.ts +6 -6
- package/dist/foundation/primitives/portal/Portal.vue.d.ts +5 -5
- package/dist/foundation/primitives/presence/Presence.d.ts +5 -5
- package/dist/foundation/primitives/rovingFocusGroup/RovingFocusContext.d.ts +1 -1
- package/dist/foundation/primitives/rovingFocusGroup/RovingFocusGroup.vue.d.ts +11 -10
- package/dist/foundation/primitives/scrollLockProvider/ScrollLockProvider.vue.d.ts +6 -6
- package/dist/foundation/primitives/scrollLockProvider/index.d.ts +1 -1
- package/dist/foundation/primitives/scrollViewport/ScrollViewport.vue.d.ts +10 -9
- package/dist/foundation/primitives/slot/ComponentElement.d.ts +7 -0
- package/dist/foundation/primitives/slot/Primitive.d.ts +8 -8
- package/dist/foundation/primitives/slot/Slot.d.ts +3 -3
- package/dist/foundation/primitives/slot/index.d.ts +2 -1
- package/dist/foundation/primitives/visuallyHidden/VisuallyHidden.vue.d.ts +4 -3
- package/dist/foundation/resilience/RetryDelay.d.ts +4 -1
- package/dist/foundation/resilience/RetryPolicy.d.ts +6 -6
- package/dist/foundation/resilience/index.d.ts +2 -2
- package/dist/foundation/resilience/index.js.map +1 -1
- package/dist/foundation/results/AppErrorFactory.d.ts +22 -0
- package/dist/foundation/results/AppErrorType.d.ts +13 -0
- package/dist/foundation/results/ResultExtensions.d.ts +33 -0
- package/dist/foundation/results/index.d.ts +5 -0
- package/dist/foundation/results/index.js +8 -0
- package/dist/foundation/results/index.js.map +1 -0
- package/dist/foundation/results/models/AppError.d.ts +10 -0
- package/dist/foundation/results/models/Result.d.ts +9 -0
- package/dist/foundation/screen/Fullscreen.d.ts +6 -6
- package/dist/foundation/screen/ScreenOrientation.d.ts +7 -14
- package/dist/foundation/screen/ScreenOutcome.d.ts +5 -0
- package/dist/foundation/screen/WakeLock.d.ts +2 -2
- package/dist/foundation/screen/enums/OrientationLockFailureCode.d.ts +9 -0
- package/dist/foundation/screen/enums/ScreenFailureCode.d.ts +8 -0
- package/dist/foundation/screen/hooks/UseFullscreen.d.ts +28 -0
- package/dist/foundation/screen/hooks/UseOrientation.d.ts +28 -0
- package/dist/foundation/screen/hooks/UseWakeLock.d.ts +18 -0
- package/dist/foundation/screen/index.d.ts +7 -5
- package/dist/foundation/screen/index.js +37 -26
- package/dist/foundation/screen/index.js.map +1 -1
- package/dist/foundation/screen/models/OrientationLockFailure.d.ts +7 -0
- package/dist/foundation/screen/models/OrientationLockResult.d.ts +3 -0
- package/dist/foundation/screen/models/ScreenFailure.d.ts +14 -0
- package/dist/foundation/screen/models/ScreenRequestResult.d.ts +4 -0
- package/dist/foundation/selection/hooks/UseFilters.d.ts +34 -0
- package/dist/foundation/selection/hooks/UseSelection.d.ts +54 -0
- package/dist/foundation/selection/hooks/UseSort.d.ts +36 -0
- package/dist/foundation/selection/hooks/UseTypeahead.d.ts +42 -0
- package/dist/foundation/selection/index.d.ts +8 -7
- package/dist/foundation/selection/index.js +28 -30
- package/dist/foundation/selection/index.js.map +1 -1
- package/dist/foundation/selection/models/Filter.d.ts +71 -0
- package/dist/foundation/selection/models/Selection.d.ts +116 -0
- package/dist/foundation/selection/models/Sort.d.ts +69 -0
- package/dist/foundation/share/Share.d.ts +7 -23
- package/dist/foundation/share/ShareData.d.ts +1 -1
- package/dist/foundation/share/ShareFailureCode.d.ts +7 -0
- package/dist/foundation/share/ShareOrCopy.d.ts +6 -8
- package/dist/foundation/share/UseShare.d.ts +14 -7
- package/dist/foundation/share/index.d.ts +3 -2
- package/dist/foundation/share/index.js +43 -18
- package/dist/foundation/share/index.js.map +1 -1
- package/dist/foundation/share/models/ShareFailure.d.ts +10 -0
- package/dist/foundation/share/models/ShareSendOrCopyResult.d.ts +4 -0
- package/dist/foundation/share/models/ShareSendResult.d.ts +4 -0
- package/dist/foundation/shortcuts/Chord.d.ts +1 -1
- package/dist/foundation/shortcuts/hooks/UseHotkeys.d.ts +34 -0
- package/dist/foundation/shortcuts/index.d.ts +3 -2
- package/dist/foundation/shortcuts/index.js +5 -3
- package/dist/foundation/shortcuts/index.js.map +1 -1
- package/dist/foundation/speech/CreateSpeechRecognizer.d.ts +5 -20
- package/dist/foundation/speech/ListVoices.d.ts +3 -3
- package/dist/foundation/speech/Speak.d.ts +6 -7
- package/dist/foundation/speech/SpeechControls.d.ts +2 -0
- package/dist/foundation/speech/SpeechResult.d.ts +7 -23
- package/dist/foundation/speech/enums/RecognizerStartFailureCode.d.ts +6 -0
- package/dist/foundation/speech/enums/SpeechFailureCode.d.ts +7 -0
- package/dist/foundation/speech/hooks/UseSpeechRecognition.d.ts +45 -0
- package/dist/foundation/speech/hooks/UseSpeechSynthesis.d.ts +37 -0
- package/dist/foundation/speech/index.d.ts +6 -4
- package/dist/foundation/speech/index.js +62 -31
- package/dist/foundation/speech/index.js.map +1 -1
- package/dist/foundation/speech/models/RecognizerStartFailure.d.ts +8 -0
- package/dist/foundation/speech/models/RecognizerStartResult.d.ts +4 -0
- package/dist/foundation/speech/models/SpeechFailure.d.ts +10 -0
- package/dist/foundation/speech/models/SpeechSpeakResult.d.ts +4 -0
- package/dist/foundation/state/hooks/UseControlled.d.ts +35 -0
- package/dist/foundation/state/index.d.ts +2 -0
- package/dist/foundation/state/index.js +7 -0
- package/dist/foundation/state/index.js.map +1 -0
- package/dist/foundation/storage/StorageBroker.d.ts +1 -1
- package/dist/foundation/storage/adapters/zustand/ZustandPersist.d.ts +36 -0
- package/dist/foundation/storage/adapters/zustand/index.d.ts +1 -0
- package/dist/foundation/storage/adapters/zustand/index.js.map +1 -0
- package/dist/foundation/storage/hooks/UseAutosave.d.ts +44 -0
- package/dist/foundation/storage/hooks/UsePersistentState.d.ts +31 -0
- package/dist/foundation/storage/hooks/UseRecentItems.d.ts +34 -0
- package/dist/foundation/storage/index.d.ts +4 -1
- package/dist/foundation/storage/index.js +118 -3
- package/dist/foundation/storage/index.js.map +1 -1
- package/dist/foundation/styles/SurfaceStyles.d.ts +191 -0
- package/dist/foundation/styles/constants/Layers.d.ts +35 -0
- package/dist/foundation/styles/constants/Tones.d.ts +21 -0
- package/dist/foundation/styles/extensions/ColorExtensions.d.ts +51 -0
- package/dist/foundation/styles/extensions/CssExtensions.d.ts +124 -0
- package/dist/foundation/styles/index.d.ts +20 -0
- package/dist/foundation/styles/index.js +45 -0
- package/dist/foundation/styles/index.js.map +1 -0
- package/dist/foundation/themes/ForegroundContrast.d.ts +3 -0
- package/dist/foundation/themes/Oklch.d.ts +2 -0
- package/dist/foundation/themes/Registry.d.ts +18 -0
- package/dist/foundation/themes/Tokens.d.ts +5 -5
- package/dist/foundation/themes/Validate.d.ts +30 -0
- package/dist/foundation/themes/constants/Authored.d.ts +3 -0
- package/dist/foundation/themes/constants/Pool.d.ts +3 -0
- package/dist/foundation/themes/index.d.ts +6 -6
- package/dist/foundation/themes/index.js +30 -29
- package/dist/foundation/uploads/UploadItem.d.ts +3 -3
- package/dist/foundation/uploads/UploadQueue.d.ts +3 -3
- package/dist/foundation/uploads/UseUploadQueue.d.ts +4 -4
- package/dist/foundation/uploads/XhrUploadTransport.d.ts +1 -1
- package/dist/foundation/uploads/index.d.ts +2 -2
- package/dist/foundation/uploads/index.js +11 -11
- package/dist/foundation/uploads/index.js.map +1 -1
- package/dist/foundation/validators/Composites.d.ts +71 -0
- package/dist/foundation/validators/Messages.d.ts +69 -0
- package/dist/foundation/validators/ValidationError.d.ts +14 -0
- package/dist/foundation/validators/ValidationOutcome.d.ts +40 -0
- package/dist/foundation/validators/Validator.d.ts +76 -0
- package/dist/foundation/validators/index.d.ts +8 -0
- package/dist/foundation/validators/index.js +484 -0
- package/dist/foundation/validators/index.js.map +1 -0
- package/dist/foundation/validators/models/ValidationFailure.d.ts +6 -0
- package/dist/foundation/validators/models/ValidatorParseResult.d.ts +3 -0
- package/dist/foundation/virtualization/Measurements.d.ts +2 -2
- package/dist/foundation/virtualization/UseVirtualList.d.ts +6 -3
- package/dist/foundation/virtualization/Windowing.d.ts +7 -4
- package/dist/foundation/virtualization/index.d.ts +3 -3
- package/dist/foundation/virtualization/index.js +15 -19
- package/dist/foundation/virtualization/index.js.map +1 -1
- package/dist/foundation/workers/RunInWorker.d.ts +8 -20
- package/dist/foundation/workers/UseWorker.d.ts +2 -7
- package/dist/foundation/workers/WorkerClient.d.ts +6 -9
- package/dist/foundation/workers/WorkerHost.d.ts +3 -3
- package/dist/foundation/workers/WorkerProtocol.d.ts +2 -2
- package/dist/foundation/workers/WorkerRunFailureCode.d.ts +6 -0
- package/dist/foundation/workers/index.d.ts +3 -2
- package/dist/foundation/workers/index.js +16 -6
- package/dist/foundation/workers/index.js.map +1 -1
- package/dist/foundation/workers/models/WorkerRunFailure.d.ts +8 -0
- package/dist/foundation/workers/models/WorkerRunResult.d.ts +3 -0
- package/dist/index.css +170 -44
- package/dist/index.d.ts +7 -2
- package/dist/index.js +559 -550
- package/dist/index.js.map +1 -1
- package/dist/presentation/actions/backToTopButton/BackToTopButton.vue.d.ts +20 -18
- package/dist/presentation/actions/backToTopButton/index.d.ts +1 -1
- package/dist/presentation/actions/button/Button.variants.d.ts +83 -241
- package/dist/presentation/actions/button/Button.vue.d.ts +67 -72
- package/dist/presentation/actions/button/index.d.ts +1 -1
- package/dist/presentation/actions/buttonGroup/ButtonGroup.vue.d.ts +12 -11
- package/dist/presentation/actions/copyButton/CopyButton.vue.d.ts +22 -16
- package/dist/presentation/actions/disclosureButton/DisclosureButton.vue.d.ts +20 -18
- package/dist/presentation/actions/disclosureButton/index.d.ts +1 -1
- package/dist/presentation/actions/fabButton/FabButton.variants.d.ts +80 -0
- package/dist/presentation/actions/fabButton/FabButton.vue.d.ts +32 -0
- package/dist/presentation/actions/fabButton/index.d.ts +2 -0
- package/dist/presentation/actions/googleSignInButton/GoogleSignInButton.vue.d.ts +37 -0
- package/dist/presentation/actions/googleSignInButton/index.d.ts +1 -0
- package/dist/presentation/actions/index.d.ts +3 -8
- package/dist/presentation/actions/index.js +18 -35
- package/dist/presentation/actions/speedDialGroup/SpeedDialGroup.vue.d.ts +27 -0
- package/dist/presentation/actions/speedDialGroup/SpeedDialGroupAction.vue.d.ts +41 -0
- package/dist/presentation/actions/speedDialGroup/SpeedDialGroupContext.d.ts +36 -0
- package/dist/presentation/actions/speedDialGroup/SpeedDialGroupList.vue.d.ts +12 -0
- package/dist/presentation/actions/speedDialGroup/SpeedDialGroupTrigger.vue.d.ts +31 -0
- package/dist/presentation/actions/speedDialGroup/index.d.ts +18 -0
- package/dist/presentation/actions/toolbar/Toolbar.vue.d.ts +10 -9
- package/dist/presentation/actions/toolbar/ToolbarButton.vue.d.ts +8 -7
- package/dist/presentation/actions/toolbar/ToolbarContext.d.ts +1 -1
- package/dist/presentation/actions/toolbar/ToolbarLink.vue.d.ts +4 -3
- package/dist/presentation/actions/toolbar/ToolbarSeparator.vue.d.ts +1 -2
- package/dist/presentation/actions/toolbar/index.d.ts +6 -74
- package/dist/presentation/display/accordionGroup/AccordionGroup.vue.d.ts +44 -0
- package/dist/presentation/display/accordionGroup/AccordionGroupContent.vue.d.ts +13 -0
- package/dist/presentation/display/accordionGroup/AccordionGroupContext.d.ts +29 -0
- package/dist/presentation/display/accordionGroup/AccordionGroupItem.vue.d.ts +19 -0
- package/dist/presentation/display/accordionGroup/AccordionGroupTrigger.vue.d.ts +13 -0
- package/dist/presentation/display/accordionGroup/index.d.ts +5 -0
- package/dist/presentation/display/activityTimeline/ActivityItem.vue.d.ts +28 -0
- package/dist/presentation/display/activityTimeline/ActivityTimeline.vue.d.ts +17 -0
- package/dist/presentation/display/activityTimeline/index.d.ts +2 -0
- package/dist/presentation/display/animatedNumberText/AnimatedNumberText.vue.d.ts +33 -0
- package/dist/presentation/display/animatedNumberText/index.d.ts +1 -0
- package/dist/presentation/display/annotationBadge/AnnotationBadge.vue.d.ts +42 -0
- package/dist/presentation/display/annotationBadge/index.d.ts +1 -0
- package/dist/presentation/display/audioPlayer/AudioPlayer.vue.d.ts +19 -20
- package/dist/presentation/display/audioWaveformPreview/AudioWaveformPreview.vue.d.ts +57 -0
- package/dist/presentation/display/audioWaveformPreview/index.d.ts +1 -0
- package/dist/presentation/display/avatar/Avatar.variants.d.ts +77 -227
- package/dist/presentation/display/avatar/Avatar.vue.d.ts +24 -22
- package/dist/presentation/display/avatarGroup/AvatarGroup.vue.d.ts +10 -11
- package/dist/presentation/display/badge/Badge.variants.d.ts +35 -97
- package/dist/presentation/display/badge/Badge.vue.d.ts +6 -7
- package/dist/presentation/display/badgeOverlay/BadgeOverlay.vue.d.ts +8 -9
- package/dist/presentation/display/card/Card.vue.d.ts +10 -11
- package/dist/presentation/display/card/CardBody.vue.d.ts +3 -4
- package/dist/presentation/display/card/CardDescription.vue.d.ts +3 -4
- package/dist/presentation/display/card/CardFooter.vue.d.ts +3 -4
- package/dist/presentation/display/card/CardHeader.vue.d.ts +3 -4
- package/dist/presentation/display/card/CardTitle.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/Carousel.vue.d.ts +23 -18
- package/dist/presentation/display/carousel/CarouselDot.vue.d.ts +4 -5
- package/dist/presentation/display/carousel/CarouselDots.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/CarouselNext.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/CarouselPrev.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/CarouselSlide.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/CarouselSlides.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/CarouselViewport.vue.d.ts +3 -4
- package/dist/presentation/display/carousel/index.d.ts +1 -1
- package/dist/presentation/display/chatBubbleCard/ChatBubbleCard.vue.d.ts +78 -0
- package/dist/presentation/display/chatBubbleCard/index.d.ts +1 -0
- package/dist/presentation/display/codeText/CodeText.variants.d.ts +26 -0
- package/dist/presentation/display/codeText/CodeText.vue.d.ts +16 -0
- package/dist/presentation/display/codeText/index.d.ts +2 -0
- package/dist/presentation/display/collapsibleGroup/CollapsibleGroup.vue.d.ts +28 -0
- package/dist/presentation/display/collapsibleGroup/CollapsibleGroupContent.vue.d.ts +17 -0
- package/dist/presentation/display/collapsibleGroup/CollapsibleGroupContentInner.vue.d.ts +22 -0
- package/dist/presentation/display/collapsibleGroup/CollapsibleGroupContext.d.ts +17 -0
- package/dist/presentation/display/collapsibleGroup/CollapsibleGroupTrigger.vue.d.ts +17 -0
- package/dist/presentation/display/collapsibleGroup/index.d.ts +4 -0
- package/dist/presentation/display/colorSwatchPreview/ColorSwatchPreview.variants.d.ts +92 -0
- package/dist/presentation/display/colorSwatchPreview/ColorSwatchPreview.vue.d.ts +32 -0
- package/dist/presentation/display/colorSwatchPreview/index.d.ts +2 -0
- package/dist/presentation/display/commentThreadGroup/Comment.vue.d.ts +38 -0
- package/dist/presentation/display/commentThreadGroup/CommentThreadGroup.vue.d.ts +13 -0
- package/dist/presentation/display/commentThreadGroup/index.d.ts +2 -0
- package/dist/presentation/display/confettiOverlay/ConfettiOverlay.vue.d.ts +39 -0
- package/dist/presentation/display/confettiOverlay/index.d.ts +1 -0
- package/dist/presentation/display/countBadge/CountBadge.vue.d.ts +11 -12
- package/dist/presentation/display/countUpText/CountUpText.vue.d.ts +39 -0
- package/dist/presentation/display/countUpText/index.d.ts +1 -0
- package/dist/presentation/display/dataTable/DataTable.vue.d.ts +25 -26
- package/dist/presentation/display/descriptionGroup/DescriptionGroup.vue.d.ts +53 -0
- package/dist/presentation/display/descriptionGroup/index.d.ts +1 -0
- package/dist/presentation/display/diffViewer/DiffViewer.vue.d.ts +16 -17
- package/dist/presentation/display/emptyState/EmptyState.vue.d.ts +9 -10
- package/dist/presentation/display/eventCalendarViewer/AgendaView.vue.d.ts +12 -0
- package/dist/presentation/display/eventCalendarViewer/EventCalendarViewer.vue.d.ts +37 -0
- package/dist/presentation/display/eventCalendarViewer/EventCalendarViewerTypes.d.ts +28 -0
- package/dist/presentation/display/eventCalendarViewer/MonthView.vue.d.ts +16 -0
- package/dist/presentation/display/eventCalendarViewer/TimeGridView.vue.d.ts +17 -0
- package/dist/presentation/display/eventCalendarViewer/index.d.ts +2 -0
- package/dist/presentation/display/eyebrowText/EyebrowText.vue.d.ts +31 -0
- package/dist/presentation/display/eyebrowText/index.d.ts +1 -0
- package/dist/presentation/display/featureCard/FeatureCard.vue.d.ts +7 -61
- package/dist/presentation/display/fieldHelperText/FieldHelperText.vue.d.ts +19 -0
- package/dist/presentation/display/fieldHelperText/index.d.ts +1 -0
- package/dist/presentation/display/frameGlyph/FrameGlyph.vue.d.ts +4 -5
- package/dist/presentation/display/ganttTimeline/GanttTimeline.vue.d.ts +58 -0
- package/dist/presentation/display/ganttTimeline/index.d.ts +1 -0
- package/dist/presentation/display/gradientText/GradientText.vue.d.ts +23 -18
- package/dist/presentation/display/gradientText/index.d.ts +1 -1
- package/dist/presentation/display/heading/Heading.variants.d.ts +50 -140
- package/dist/presentation/display/heading/Heading.vue.d.ts +9 -10
- package/dist/presentation/display/heading/index.d.ts +1 -1
- package/dist/presentation/display/heatmapCalendarGrid/HeatmapCalendarGrid.vue.d.ts +64 -0
- package/dist/presentation/display/heatmapCalendarGrid/index.d.ts +1 -0
- package/dist/presentation/display/highlightText/HighlightText.vue.d.ts +19 -0
- package/dist/presentation/display/highlightText/index.d.ts +1 -0
- package/dist/presentation/display/imagePreview/ImagePreview.vue.d.ts +15 -0
- package/dist/presentation/display/imagePreview/index.d.ts +1 -0
- package/dist/presentation/display/index.d.ts +42 -42
- package/dist/presentation/display/index.js +143 -138
- package/dist/presentation/display/infoRow/InfoRow.vue.d.ts +8 -9
- package/dist/presentation/display/kbdText/KbdText.vue.d.ts +13 -0
- package/dist/presentation/display/kbdText/index.d.ts +1 -0
- package/dist/presentation/display/keyboardShortcutText/KeyboardShortcutText.vue.d.ts +12 -0
- package/dist/presentation/display/keyboardShortcutText/index.d.ts +1 -0
- package/dist/presentation/display/labelText/LabelText.vue.d.ts +34 -0
- package/dist/presentation/display/labelText/index.d.ts +1 -0
- package/dist/presentation/display/legendText/LegendText.vue.d.ts +21 -0
- package/dist/presentation/display/legendText/index.d.ts +1 -0
- package/dist/presentation/display/listGroup/ListGroup.variants.d.ts +62 -0
- package/dist/presentation/display/listGroup/ListGroup.vue.d.ts +22 -0
- package/dist/presentation/display/listGroup/ListGroupContext.d.ts +16 -0
- package/dist/presentation/display/listGroup/ListGroupItem.vue.d.ts +28 -0
- package/dist/presentation/display/listGroup/index.d.ts +4 -0
- package/dist/presentation/display/markText/MarkText.vue.d.ts +13 -0
- package/dist/presentation/display/markText/index.d.ts +1 -0
- package/dist/presentation/display/marqueeGroup/MarqueeGroup.vue.d.ts +44 -0
- package/dist/presentation/display/marqueeGroup/index.d.ts +1 -0
- package/dist/presentation/display/messageGroup/DaySeparator.vue.d.ts +16 -0
- package/dist/presentation/display/messageGroup/MessageGroup.vue.d.ts +38 -0
- package/dist/presentation/display/messageGroup/index.d.ts +2 -0
- package/dist/presentation/display/metaInlineText/MetaInlineText.vue.d.ts +20 -0
- package/dist/presentation/display/metaInlineText/index.d.ts +1 -0
- package/dist/presentation/display/metricBadge/MetricBadge.vue.d.ts +53 -0
- package/dist/presentation/display/metricBadge/index.d.ts +1 -0
- package/dist/presentation/display/moduleGlyphs/CellsGlyph.vue.d.ts +4 -5
- package/dist/presentation/display/moduleGlyphs/DotsGlyph.vue.d.ts +4 -5
- package/dist/presentation/display/moduleGlyphs/HorizontalBarsGlyph.vue.d.ts +4 -5
- package/dist/presentation/display/moduleGlyphs/ModuleGlyphs.d.ts +3 -3
- package/dist/presentation/display/moduleGlyphs/VerticalBarsGlyph.vue.d.ts +4 -5
- package/dist/presentation/display/notificationCenterGroup/NotificationCenterGroup.vue.d.ts +30 -0
- package/dist/presentation/display/notificationCenterGroup/NotificationItem.vue.d.ts +40 -0
- package/dist/presentation/display/notificationCenterGroup/index.d.ts +2 -0
- package/dist/presentation/display/notificationIndicator/NotificationIndicator.vue.d.ts +46 -0
- package/dist/presentation/display/notificationIndicator/index.d.ts +1 -0
- package/dist/presentation/display/onboardingChecklistCard/OnboardingChecklistCard.vue.d.ts +57 -0
- package/dist/presentation/display/onboardingChecklistCard/OnboardingChecklistCardTask.vue.d.ts +27 -0
- package/dist/presentation/display/onboardingChecklistCard/index.d.ts +3 -0
- package/dist/presentation/display/pdfViewer/PdfViewer.vue.d.ts +39 -0
- package/dist/presentation/display/pdfViewer/index.d.ts +1 -1
- package/dist/presentation/display/pricingCard/PricingCard.vue.d.ts +16 -70
- package/dist/presentation/display/quoteText/QuoteText.vue.d.ts +13 -0
- package/dist/presentation/display/quoteText/index.d.ts +1 -0
- package/dist/presentation/display/radiusGlyph/RadiusGlyph.vue.d.ts +6 -7
- package/dist/presentation/display/reactionBar/ReactionBar.vue.d.ts +18 -19
- package/dist/presentation/display/reactionBar/index.d.ts +1 -1
- package/dist/presentation/display/scheduleView/ScheduleView.vue.d.ts +22 -23
- package/dist/presentation/display/scrollRevealGroup/ScrollRevealGroup.vue.d.ts +49 -0
- package/dist/presentation/display/scrollRevealGroup/index.d.ts +1 -0
- package/dist/presentation/display/sectionHeading/SectionHeading.vue.d.ts +48 -0
- package/dist/presentation/display/sectionHeading/index.d.ts +1 -0
- package/dist/presentation/display/snippetText/SnippetText.vue.d.ts +20 -0
- package/dist/presentation/display/snippetText/index.d.ts +1 -0
- package/dist/presentation/display/sparkline/Sparkline.vue.d.ts +21 -22
- package/dist/presentation/display/sparkline/index.d.ts +1 -1
- package/dist/presentation/display/statCard/StatCard.vue.d.ts +47 -0
- package/dist/presentation/display/statCard/index.d.ts +1 -0
- package/dist/presentation/display/status/Status.vue.d.ts +11 -12
- package/dist/presentation/display/stepCard/StepCard.vue.d.ts +8 -62
- package/dist/presentation/display/stepperGroup/StepperGroup.vue.d.ts +28 -0
- package/dist/presentation/display/stepperGroup/StepperGroupContext.d.ts +44 -0
- package/dist/presentation/display/stepperGroup/StepperGroupList.vue.d.ts +13 -0
- package/dist/presentation/display/stepperGroup/StepperGroupPanel.vue.d.ts +15 -0
- package/dist/presentation/display/stepperGroup/StepperGroupStep.vue.d.ts +22 -0
- package/dist/presentation/display/stepperGroup/index.d.ts +5 -0
- package/dist/presentation/display/table/Table.vue.d.ts +17 -18
- package/dist/presentation/display/table/TableBody.vue.d.ts +3 -4
- package/dist/presentation/display/table/TableCaption.vue.d.ts +3 -4
- package/dist/presentation/display/table/TableCell.vue.d.ts +3 -4
- package/dist/presentation/display/table/TableContext.d.ts +3 -3
- package/dist/presentation/display/table/TableFooter.vue.d.ts +3 -4
- package/dist/presentation/display/table/TableHead.vue.d.ts +6 -7
- package/dist/presentation/display/table/TableHeaderCell.vue.d.ts +3 -4
- package/dist/presentation/display/table/TableRow.vue.d.ts +3 -4
- package/dist/presentation/display/table/index.d.ts +1 -1
- package/dist/presentation/display/tabsGroup/TabsGroup.vue.d.ts +32 -0
- package/dist/presentation/display/tabsGroup/TabsGroupContext.d.ts +34 -0
- package/dist/presentation/display/tabsGroup/TabsGroupList.vue.d.ts +13 -0
- package/dist/presentation/display/tabsGroup/TabsGroupPanel.vue.d.ts +15 -0
- package/dist/presentation/display/tabsGroup/TabsGroupTab.vue.d.ts +19 -0
- package/dist/presentation/display/tabsGroup/index.d.ts +5 -0
- package/dist/presentation/display/tag/Tag.variants.d.ts +23 -61
- package/dist/presentation/display/tag/Tag.vue.d.ts +8 -9
- package/dist/presentation/display/text/Text.variants.d.ts +74 -220
- package/dist/presentation/display/text/Text.vue.d.ts +16 -16
- package/dist/presentation/display/text/index.d.ts +1 -1
- package/dist/presentation/display/threadView/ThreadView.vue.d.ts +15 -16
- package/dist/presentation/display/timeline/Timeline.vue.d.ts +6 -7
- package/dist/presentation/display/timeline/TimelineContext.d.ts +1 -1
- package/dist/presentation/display/timeline/TimelineDescription.vue.d.ts +3 -4
- package/dist/presentation/display/timeline/TimelineItem.vue.d.ts +6 -7
- package/dist/presentation/display/timeline/TimelineTitle.vue.d.ts +3 -4
- package/dist/presentation/display/timeline/index.d.ts +1 -1
- package/dist/presentation/display/treeViewer/TreeViewer.vue.d.ts +32 -0
- package/dist/presentation/display/treeViewer/TreeViewerContext.d.ts +29 -0
- package/dist/presentation/display/treeViewer/TreeViewerGroup.vue.d.ts +27 -0
- package/dist/presentation/display/treeViewer/TreeViewerGroupContent.vue.d.ts +16 -0
- package/dist/presentation/display/treeViewer/TreeViewerItem.vue.d.ts +19 -0
- package/dist/presentation/display/treeViewer/TreeViewerNodeRow.vue.d.ts +26 -0
- package/dist/presentation/display/treeViewer/index.d.ts +4 -0
- package/dist/presentation/display/typewriterText/TypewriterText.vue.d.ts +37 -0
- package/dist/presentation/display/typewriterText/index.d.ts +1 -0
- package/dist/presentation/display/videoPlayer/VideoPlayer.vue.d.ts +26 -27
- package/dist/presentation/display/videoPlayer/index.d.ts +1 -1
- package/dist/presentation/feedback/alert/Alert.vue.d.ts +23 -23
- package/dist/presentation/feedback/alertSimple/AlertSimple.variants.d.ts +20 -54
- package/dist/presentation/feedback/alertSimple/AlertSimple.vue.d.ts +7 -7
- package/dist/presentation/feedback/banner/Banner.vue.d.ts +23 -23
- package/dist/presentation/feedback/bannerSimple/BannerSimple.variants.d.ts +20 -54
- package/dist/presentation/feedback/bannerSimple/BannerSimple.vue.d.ts +7 -7
- package/dist/presentation/feedback/callout/Callout.vue.d.ts +15 -15
- package/dist/presentation/feedback/characterCountCallout/CharacterCountCallout.vue.d.ts +14 -0
- package/dist/presentation/feedback/characterCountCallout/index.d.ts +1 -0
- package/dist/presentation/feedback/feedbackToastHost/FeedbackToastHost.vue.d.ts +17 -0
- package/dist/presentation/feedback/feedbackToastHost/index.d.ts +1 -0
- package/dist/presentation/feedback/fieldErrorCallout/FieldErrorCallout.vue.d.ts +24 -0
- package/dist/presentation/feedback/fieldErrorCallout/index.d.ts +1 -0
- package/dist/presentation/feedback/index.d.ts +9 -9
- package/dist/presentation/feedback/index.js +35 -38
- package/dist/presentation/feedback/index.js.map +1 -1
- package/dist/presentation/feedback/inlineSpinner/InlineSpinner.vue.d.ts +10 -12
- package/dist/presentation/feedback/liveCursorIndicator/LiveCursorIndicator.vue.d.ts +33 -0
- package/dist/presentation/feedback/liveCursorIndicator/index.d.ts +1 -0
- package/dist/presentation/feedback/loadingOverlay/LoadingOverlay.vue.d.ts +18 -19
- package/dist/presentation/feedback/loadingOverlay/index.d.ts +1 -1
- package/dist/presentation/feedback/loadingState/LoadingState.vue.d.ts +14 -14
- package/dist/presentation/feedback/meterBar/MeterBar.vue.d.ts +12 -13
- package/dist/presentation/feedback/passwordStrengthCallout/PasswordStrengthCallout.vue.d.ts +15 -0
- package/dist/presentation/feedback/passwordStrengthCallout/index.d.ts +1 -0
- package/dist/presentation/feedback/presenceIndicator/PresenceIndicator.vue.d.ts +12 -13
- package/dist/presentation/feedback/presenceIndicator/index.d.ts +1 -1
- package/dist/presentation/feedback/progressBar/ProgressBar.variants.d.ts +33 -91
- package/dist/presentation/feedback/progressBar/ProgressBar.vue.d.ts +11 -12
- package/dist/presentation/feedback/progressBar/index.d.ts +1 -1
- package/dist/presentation/feedback/progressCircleIndicator/ProgressCircleIndicator.vue.d.ts +20 -0
- package/dist/presentation/feedback/progressCircleIndicator/index.d.ts +1 -0
- package/dist/presentation/feedback/progressStepsIndicator/ProgressStepsIndicator.vue.d.ts +15 -0
- package/dist/presentation/feedback/progressStepsIndicator/index.d.ts +1 -0
- package/dist/presentation/feedback/skeletonState/SkeletonState.variants.d.ts +31 -0
- package/dist/presentation/feedback/skeletonState/SkeletonState.vue.d.ts +17 -0
- package/dist/presentation/feedback/skeletonState/index.d.ts +2 -0
- package/dist/presentation/feedback/spinner/Spinner.variants.d.ts +32 -90
- package/dist/presentation/feedback/spinner/Spinner.vue.d.ts +9 -10
- package/dist/presentation/feedback/statusIndicator/StatusIndicator.vue.d.ts +14 -14
- package/dist/presentation/feedback/toast/Toast.vue.d.ts +23 -23
- package/dist/presentation/feedback/toastHost/ToastHost.vue.d.ts +95 -0
- package/dist/presentation/feedback/toastHost/index.d.ts +1 -0
- package/dist/presentation/feedback/toastSimple/ToastSimple.variants.d.ts +20 -54
- package/dist/presentation/feedback/toastSimple/ToastSimple.vue.d.ts +9 -9
- package/dist/presentation/feedback/trendIndicator/TrendIndicator.vue.d.ts +16 -16
- package/dist/presentation/feedback/typingIndicator/TypingIndicator.vue.d.ts +13 -13
- package/dist/presentation/feedback/typingIndicator/index.d.ts +1 -1
- package/dist/presentation/feedback/undoBar/UndoBar.vue.d.ts +21 -21
- package/dist/presentation/forms/DateExtensions.d.ts +4 -4
- package/dist/presentation/forms/InputStyles.d.ts +53 -155
- package/dist/presentation/forms/MonthGrid.vue.d.ts +22 -24
- package/dist/presentation/forms/TimeColumns.vue.d.ts +12 -17
- package/dist/presentation/forms/UseNativeFormReset.d.ts +3 -0
- package/dist/presentation/forms/addressEditor/AddressEditor.vue.d.ts +48 -0
- package/dist/presentation/forms/addressEditor/index.d.ts +1 -0
- package/dist/presentation/forms/calendarPicker/CalendarPicker.vue.d.ts +28 -0
- package/dist/presentation/forms/calendarPicker/index.d.ts +1 -0
- package/dist/presentation/forms/chatComposerInput/ChatComposerInput.vue.d.ts +68 -0
- package/dist/presentation/forms/chatComposerInput/index.d.ts +1 -0
- package/dist/presentation/forms/checkboxField/CheckboxField.vue.d.ts +15 -11
- package/dist/presentation/forms/checkboxGroup/CheckboxGroup.vue.d.ts +14 -19
- package/dist/presentation/forms/checkboxInput/CheckboxInput.variants.d.ts +67 -0
- package/dist/presentation/forms/checkboxInput/CheckboxInput.vue.d.ts +45 -0
- package/dist/presentation/forms/checkboxInput/index.d.ts +2 -0
- package/dist/presentation/forms/choiceCard/ChoiceCard.vue.d.ts +17 -14
- package/dist/presentation/forms/codeEditor/CodeEditor.vue.d.ts +33 -33
- package/dist/presentation/forms/colorArea/ColorArea.vue.d.ts +18 -26
- package/dist/presentation/forms/colorArea/index.d.ts +1 -1
- package/dist/presentation/forms/colorInput/ColorInput.vue.d.ts +39 -0
- package/dist/presentation/forms/colorInput/index.d.ts +1 -0
- package/dist/presentation/forms/colorPicker/ColorPicker.vue.d.ts +21 -26
- package/dist/presentation/forms/colorPicker/index.d.ts +1 -1
- package/dist/presentation/forms/colorSliderInput/ColorSliderInput.vue.d.ts +42 -0
- package/dist/presentation/forms/colorSliderInput/index.d.ts +1 -0
- package/dist/presentation/forms/colorSwatchPicker/ColorSwatchItem.vue.d.ts +12 -13
- package/dist/presentation/forms/colorSwatchPicker/ColorSwatchPicker.vue.d.ts +17 -22
- package/dist/presentation/forms/colorSwatchPicker/index.d.ts +1 -1
- package/dist/presentation/forms/colorWheelInput/ColorWheelInput.vue.d.ts +29 -0
- package/dist/presentation/forms/colorWheelInput/index.d.ts +1 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPicker.vue.d.ts +47 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerContent.vue.d.ts +38 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerContext.d.ts +53 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerEmpty.vue.d.ts +10 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerGroup.vue.d.ts +19 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerInput.vue.d.ts +11 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerItem.vue.d.ts +27 -0
- package/dist/presentation/forms/comboboxPicker/ComboboxPickerSeparator.vue.d.ts +2 -0
- package/dist/presentation/forms/comboboxPicker/index.d.ts +8 -0
- package/dist/presentation/forms/controlGroupField/ControlGroupField.variants.d.ts +70 -0
- package/dist/presentation/forms/controlGroupField/ControlGroupField.vue.d.ts +34 -0
- package/dist/presentation/forms/controlGroupField/index.d.ts +2 -0
- package/dist/presentation/forms/cronInput/CronInput.vue.d.ts +27 -33
- package/dist/presentation/forms/currencyInput/CurrencyInput.vue.d.ts +6 -7
- package/dist/presentation/forms/dataGridEditor/CellEditor.vue.d.ts +28 -0
- package/dist/presentation/forms/dataGridEditor/DataGridEditor.vue.d.ts +46 -0
- package/dist/presentation/forms/dataGridEditor/DataGridEditorTypes.d.ts +65 -0
- package/dist/presentation/forms/dataGridEditor/index.d.ts +2 -0
- package/dist/presentation/forms/dateInput/DateInput.vue.d.ts +49 -0
- package/dist/presentation/forms/dateInput/index.d.ts +1 -0
- package/dist/presentation/forms/datePicker/DatePicker.vue.d.ts +23 -28
- package/dist/presentation/forms/dateRangePicker/DateRangePicker.vue.d.ts +24 -29
- package/dist/presentation/forms/dateTimeInput/DateTimeInput.vue.d.ts +54 -0
- package/dist/presentation/forms/dateTimeInput/index.d.ts +1 -0
- package/dist/presentation/forms/editableInput/EditableInput.vue.d.ts +49 -0
- package/dist/presentation/forms/editableInput/EditableInputCancel.vue.d.ts +11 -0
- package/dist/presentation/forms/editableInput/EditableInputContext.d.ts +37 -0
- package/dist/presentation/forms/editableInput/EditableInputInput.vue.d.ts +11 -0
- package/dist/presentation/forms/editableInput/EditableInputPreview.vue.d.ts +6 -0
- package/dist/presentation/forms/editableInput/EditableInputSubmit.vue.d.ts +13 -0
- package/dist/presentation/forms/editableInput/index.d.ts +7 -0
- package/dist/presentation/forms/emailInput/EmailInput.vue.d.ts +21 -26
- package/dist/presentation/forms/emojiPicker/CategoryNav.vue.d.ts +3 -4
- package/dist/presentation/forms/emojiPicker/EmojiGrid.vue.d.ts +4 -5
- package/dist/presentation/forms/emojiPicker/EmojiPicker.variants.d.ts +10 -4
- package/dist/presentation/forms/emojiPicker/EmojiPicker.vue.d.ts +4 -9
- package/dist/presentation/forms/emojiPicker/EmojiPickerPopover.vue.d.ts +3 -13
- package/dist/presentation/forms/emojiPicker/EmojiTile.vue.d.ts +3 -4
- package/dist/presentation/forms/emojiPicker/UseEmojiPicker.d.ts +48 -0
- package/dist/presentation/forms/emojiPicker/index.d.ts +2 -2
- package/dist/presentation/forms/emojiSizePicker/EmojiSizePicker.variants.d.ts +23 -0
- package/dist/presentation/forms/emojiSizePicker/EmojiSizePicker.vue.d.ts +30 -0
- package/dist/presentation/forms/emojiSizePicker/index.d.ts +2 -0
- package/dist/presentation/forms/field/Field.vue.d.ts +13 -14
- package/dist/presentation/forms/filePicker/FilePicker.vue.d.ts +14 -15
- package/dist/presentation/forms/fileUploadPicker/FileUploadPicker.vue.d.ts +59 -0
- package/dist/presentation/forms/fileUploadPicker/index.d.ts +1 -0
- package/dist/presentation/forms/fontPicker/FontPicker.vue.d.ts +21 -27
- package/dist/presentation/forms/fontPicker/index.d.ts +1 -1
- package/dist/presentation/forms/gradientPicker/GradientPicker.vue.d.ts +18 -24
- package/dist/presentation/forms/iconPicker/IconPicker.vue.d.ts +22 -28
- package/dist/presentation/forms/index.d.ts +33 -35
- package/dist/presentation/forms/index.js +163 -157
- package/dist/presentation/forms/index.js.map +1 -1
- package/dist/presentation/forms/jsonEditor/JsonEditor.vue.d.ts +41 -0
- package/dist/presentation/forms/jsonEditor/JsonEditorContext.d.ts +28 -0
- package/dist/presentation/forms/jsonEditor/JsonEditorExtensions.d.ts +13 -0
- package/dist/presentation/forms/jsonEditor/JsonEditorTextView.vue.d.ts +13 -0
- package/dist/presentation/forms/jsonEditor/JsonEditorTreeNode.vue.d.ts +14 -0
- package/dist/presentation/forms/jsonEditor/JsonEditorTreeView.vue.d.ts +7 -0
- package/dist/presentation/forms/jsonEditor/index.d.ts +2 -2
- package/dist/presentation/forms/keyboardShortcutPicker/KeyboardShortcutPicker.vue.d.ts +16 -22
- package/dist/presentation/forms/keyboardShortcutPicker/index.d.ts +1 -1
- package/dist/presentation/forms/knobInput/KnobInput.vue.d.ts +69 -0
- package/dist/presentation/forms/knobInput/index.d.ts +1 -0
- package/dist/presentation/forms/labeledField/LabeledField.vue.d.ts +22 -0
- package/dist/presentation/forms/labeledField/index.d.ts +2 -0
- package/dist/presentation/forms/listboxPicker/ListboxPicker.variants.d.ts +41 -0
- package/dist/presentation/forms/listboxPicker/ListboxPicker.vue.d.ts +66 -0
- package/dist/presentation/forms/listboxPicker/ListboxPickerContext.d.ts +47 -0
- package/dist/presentation/forms/listboxPicker/ListboxPickerEmpty.vue.d.ts +10 -0
- package/dist/presentation/forms/listboxPicker/ListboxPickerGroup.vue.d.ts +20 -0
- package/dist/presentation/forms/listboxPicker/ListboxPickerItem.vue.d.ts +24 -0
- package/dist/presentation/forms/listboxPicker/ListboxPickerSeparator.vue.d.ts +2 -0
- package/dist/presentation/forms/listboxPicker/index.d.ts +7 -0
- package/dist/presentation/forms/markdownEditor/MarkdownEditor.vue.d.ts +28 -36
- package/dist/presentation/forms/markdownEditor/index.d.ts +1 -1
- package/dist/presentation/forms/maskedInput/MaskedInput.vue.d.ts +20 -25
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPicker.vue.d.ts +49 -0
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPickerContent.vue.d.ts +30 -0
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPickerContext.d.ts +47 -0
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPickerItem.vue.d.ts +24 -0
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPickerTags.vue.d.ts +23 -0
- package/dist/presentation/forms/multiSelectPicker/MultiSelectPickerTrigger.vue.d.ts +24 -0
- package/dist/presentation/forms/multiSelectPicker/index.d.ts +6 -0
- package/dist/presentation/forms/nodeEditor/NodeEditor.vue.d.ts +58 -0
- package/dist/presentation/forms/numberInput/NumberInput.vue.d.ts +32 -32
- package/dist/presentation/forms/optionTileGroupField/OptionTileGroupField.variants.d.ts +34 -0
- package/dist/presentation/forms/optionTileGroupField/OptionTileGroupField.vue.d.ts +27 -0
- package/dist/presentation/forms/optionTileGroupField/index.d.ts +2 -0
- package/dist/presentation/forms/optionTilePicker/OptionTilePicker.variants.d.ts +8 -0
- package/dist/presentation/forms/optionTilePicker/OptionTilePicker.vue.d.ts +35 -0
- package/dist/presentation/forms/optionTilePicker/index.d.ts +2 -0
- package/dist/presentation/forms/passwordInput/PasswordInput.vue.d.ts +28 -33
- package/dist/presentation/forms/percentInput/PercentInput.vue.d.ts +3 -4
- package/dist/presentation/forms/phoneInput/PhoneInput.vue.d.ts +18 -24
- package/dist/presentation/forms/phoneInput/index.d.ts +1 -1
- package/dist/presentation/forms/pinInput/PinInput.vue.d.ts +20 -25
- package/dist/presentation/forms/radioField/RadioField.vue.d.ts +15 -11
- package/dist/presentation/forms/radioGroup/RadioGroup.vue.d.ts +15 -20
- package/dist/presentation/forms/radioInput/RadioInput.vue.d.ts +29 -0
- package/dist/presentation/forms/radioInput/index.d.ts +1 -0
- package/dist/presentation/forms/rangeCalendarPicker/RangeCalendarPicker.vue.d.ts +32 -0
- package/dist/presentation/forms/rangeCalendarPicker/index.d.ts +1 -0
- package/dist/presentation/forms/reactionPicker/ReactionPicker.vue.d.ts +14 -15
- package/dist/presentation/forms/recurrenceEditor/RecurrenceEditor.vue.d.ts +25 -31
- package/dist/presentation/forms/searchInput/SearchInput.vue.d.ts +23 -28
- package/dist/presentation/forms/segmentedPicker/SegmentedPicker.vue.d.ts +20 -0
- package/dist/presentation/forms/segmentedPicker/index.d.ts +1 -0
- package/dist/presentation/forms/selectPicker/SelectPicker.variants.d.ts +129 -0
- package/dist/presentation/forms/selectPicker/SelectPicker.vue.d.ts +62 -0
- package/dist/presentation/forms/selectPicker/SelectPickerContent.vue.d.ts +43 -0
- package/dist/presentation/forms/selectPicker/SelectPickerContext.d.ts +76 -0
- package/dist/presentation/forms/selectPicker/SelectPickerItem.vue.d.ts +33 -0
- package/dist/presentation/forms/selectPicker/SelectPickerTrigger.vue.d.ts +20 -0
- package/dist/presentation/forms/selectPicker/SelectPickerValue.vue.d.ts +22 -0
- package/dist/presentation/forms/selectPicker/index.d.ts +7 -0
- package/dist/presentation/forms/sliderInput/SliderInput.vue.d.ts +33 -0
- package/dist/presentation/forms/sliderInput/index.d.ts +1 -0
- package/dist/presentation/forms/sortableGroup/SortableGroup.vue.d.ts +17 -0
- package/dist/presentation/forms/sortableGroup/SortableGroupContext.d.ts +23 -0
- package/dist/presentation/forms/sortableGroup/SortableGroupHandle.vue.d.ts +13 -0
- package/dist/presentation/forms/sortableGroup/SortableGroupItem.vue.d.ts +15 -0
- package/dist/presentation/forms/sortableGroup/SortableGroupMoveButton.vue.d.ts +15 -0
- package/dist/presentation/forms/sortableGroup/index.d.ts +5 -0
- package/dist/presentation/forms/switchField/SwitchField.vue.d.ts +13 -14
- package/dist/presentation/forms/switchInput/SwitchInput.vue.d.ts +29 -0
- package/dist/presentation/forms/switchInput/index.d.ts +1 -0
- package/dist/presentation/forms/tagsInput/TagsInput.vue.d.ts +36 -43
- package/dist/presentation/forms/telInput/TelInput.vue.d.ts +21 -26
- package/dist/presentation/forms/textAreaInput/TextAreaInput.vue.d.ts +23 -28
- package/dist/presentation/forms/textInput/TextInput.vue.d.ts +21 -26
- package/dist/presentation/forms/timeInput/TimeInput.vue.d.ts +48 -0
- package/dist/presentation/forms/timeInput/index.d.ts +1 -0
- package/dist/presentation/forms/timePicker/TimePicker.vue.d.ts +22 -27
- package/dist/presentation/forms/toggleGroup/ToggleGroup.variants.d.ts +33 -0
- package/dist/presentation/forms/toggleGroup/ToggleGroup.vue.d.ts +73 -0
- package/dist/presentation/forms/toggleGroup/ToggleGroupContext.d.ts +24 -0
- package/dist/presentation/forms/toggleGroup/index.d.ts +3 -0
- package/dist/presentation/forms/toggleInput/ToggleInput.variants.d.ts +75 -0
- package/dist/presentation/forms/toggleInput/ToggleInput.vue.d.ts +57 -0
- package/dist/presentation/forms/toggleInput/index.d.ts +2 -0
- package/dist/presentation/forms/urlInput/UrlInput.vue.d.ts +21 -26
- package/dist/presentation/forms/wizardForm/WizardForm.vue.d.ts +35 -0
- package/dist/presentation/forms/wizardForm/WizardFormContext.d.ts +38 -0
- package/dist/presentation/forms/wizardForm/WizardFormFooter.vue.d.ts +28 -0
- package/dist/presentation/forms/wizardForm/WizardFormStep.vue.d.ts +28 -0
- package/dist/presentation/forms/wizardForm/WizardFormSteps.vue.d.ts +6 -0
- package/dist/presentation/forms/wizardForm/index.d.ts +6 -0
- package/dist/presentation/layout/anchorLayout/AnchorLayout.variants.d.ts +117 -0
- package/dist/presentation/layout/anchorLayout/AnchorLayout.vue.d.ts +63 -0
- package/dist/presentation/layout/anchorLayout/index.d.ts +2 -0
- package/dist/presentation/layout/appShell/AppShell.vue.d.ts +19 -34
- package/dist/presentation/layout/appShell/AppShellAside.vue.d.ts +3 -4
- package/dist/presentation/layout/appShell/AppShellContent.vue.d.ts +3 -4
- package/dist/presentation/layout/appShell/AppShellFooter.vue.d.ts +3 -4
- package/dist/presentation/layout/appShell/AppShellHeader.vue.d.ts +3 -4
- package/dist/presentation/layout/appShell/AppShellMain.vue.d.ts +3 -4
- package/dist/presentation/layout/appShell/AppShellSidebar.vue.d.ts +3 -4
- package/dist/presentation/layout/aspectRatioLayout/AspectRatioLayout.vue.d.ts +18 -0
- package/dist/presentation/layout/aspectRatioLayout/index.d.ts +1 -0
- package/dist/presentation/layout/boxLayout/BoxLayout.vue.d.ts +19 -0
- package/dist/presentation/layout/boxLayout/index.d.ts +1 -0
- package/dist/presentation/layout/centerLayout/CenterLayout.vue.d.ts +14 -0
- package/dist/presentation/layout/centerLayout/index.d.ts +1 -0
- package/dist/presentation/layout/clusterLayout/ClusterLayout.vue.d.ts +22 -0
- package/dist/presentation/layout/clusterLayout/index.d.ts +1 -0
- package/dist/presentation/layout/containerLayout/ContainerLayout.variants.d.ts +46 -0
- package/dist/presentation/layout/containerLayout/ContainerLayout.vue.d.ts +21 -0
- package/dist/presentation/layout/containerLayout/index.d.ts +2 -0
- package/dist/presentation/layout/dividerLayout/DividerLayout.variants.d.ts +25 -0
- package/dist/presentation/layout/dividerLayout/DividerLayout.vue.d.ts +37 -0
- package/dist/presentation/layout/dividerLayout/index.d.ts +2 -0
- package/dist/presentation/layout/fieldsetLayout/FieldsetLayout.vue.d.ts +22 -0
- package/dist/presentation/layout/fieldsetLayout/index.d.ts +1 -0
- package/dist/presentation/layout/flexLayout/FlexLayout.vue.d.ts +18 -0
- package/dist/presentation/layout/flexLayout/index.d.ts +1 -0
- package/dist/presentation/layout/frameLayout/FrameLayout.vue.d.ts +38 -0
- package/dist/presentation/layout/frameLayout/index.d.ts +1 -0
- package/dist/presentation/layout/grid/Grid.variants.d.ts +59 -153
- package/dist/presentation/layout/grid/Grid.vue.d.ts +13 -13
- package/dist/presentation/layout/hStackLayout/HStackLayout.vue.d.ts +14 -0
- package/dist/presentation/layout/hStackLayout/index.d.ts +1 -0
- package/dist/presentation/layout/index.d.ts +24 -19
- package/dist/presentation/layout/index.js +60 -56
- package/dist/presentation/layout/inlineLayout/InlineLayout.vue.d.ts +42 -0
- package/dist/presentation/layout/inlineLayout/index.d.ts +1 -0
- package/dist/presentation/layout/inputAddonLayout/InputAddonLayout.vue.d.ts +19 -0
- package/dist/presentation/layout/inputAddonLayout/index.d.ts +1 -0
- package/dist/presentation/layout/inputGroup/InputGroup.vue.d.ts +18 -0
- package/dist/presentation/layout/navbar/Navbar.variants.d.ts +20 -62
- package/dist/presentation/layout/navbar/Navbar.vue.d.ts +14 -15
- package/dist/presentation/layout/navbar/index.d.ts +1 -1
- package/dist/presentation/layout/pullToRefreshLayout/PullToRefreshLayout.vue.d.ts +21 -0
- package/dist/presentation/layout/pullToRefreshLayout/index.d.ts +1 -0
- package/dist/presentation/layout/resizablePanelsLayout/ResizablePanel.vue.d.ts +21 -0
- package/dist/presentation/layout/resizablePanelsLayout/ResizablePanelsLayout.vue.d.ts +61 -0
- package/dist/presentation/layout/resizablePanelsLayout/ResizableSeparator.vue.d.ts +9 -0
- package/dist/presentation/layout/resizablePanelsLayout/index.d.ts +4 -0
- package/dist/presentation/layout/scrollArea/ScrollArea.vue.d.ts +8 -8
- package/dist/presentation/layout/section/Section.variants.d.ts +20 -54
- package/dist/presentation/layout/section/Section.vue.d.ts +15 -17
- package/dist/presentation/layout/section/index.d.ts +1 -1
- package/dist/presentation/layout/separatorLayout/SeparatorLayout.vue.d.ts +13 -0
- package/dist/presentation/layout/separatorLayout/index.d.ts +1 -0
- package/dist/presentation/layout/spacerLayout/SpacerLayout.vue.d.ts +14 -0
- package/dist/presentation/layout/spacerLayout/index.d.ts +1 -0
- package/dist/presentation/layout/stackLayout/StackLayout.variants.d.ts +172 -0
- package/dist/presentation/layout/stackLayout/StackLayout.vue.d.ts +37 -0
- package/dist/presentation/layout/stackLayout/index.d.ts +2 -0
- package/dist/presentation/layout/surfaceLayout/SurfaceLayout.vue.d.ts +40 -0
- package/dist/presentation/layout/surfaceLayout/index.d.ts +1 -0
- package/dist/presentation/layout/swipeActionsLayout/SwipeActionsLayout.vue.d.ts +27 -0
- package/dist/presentation/layout/swipeActionsLayout/index.d.ts +1 -0
- package/dist/presentation/layout/tiltLayout/TiltLayout.vue.d.ts +30 -0
- package/dist/presentation/layout/tiltLayout/index.d.ts +1 -0
- package/dist/presentation/layout/twoColumnLayout/TwoColumnLayout.vue.d.ts +27 -0
- package/dist/presentation/layout/twoColumnLayout/index.d.ts +1 -0
- package/dist/presentation/layout/vStackLayout/VStackLayout.vue.d.ts +14 -0
- package/dist/presentation/layout/vStackLayout/index.d.ts +1 -0
- package/dist/presentation/nav/NavExtensions.d.ts +14 -0
- package/dist/presentation/nav/breadcrumb/Breadcrumb.vue.d.ts +7 -8
- package/dist/presentation/nav/breadcrumb/index.d.ts +1 -1
- package/dist/presentation/nav/contextMenu/ContextMenu.vue.d.ts +1 -2
- package/dist/presentation/nav/contextMenu/ContextMenuContent.vue.d.ts +6 -7
- package/dist/presentation/nav/contextMenu/ContextMenuTrigger.vue.d.ts +8 -9
- package/dist/presentation/nav/contextMenu/index.d.ts +3 -3
- package/dist/presentation/nav/dropdownMenu/DropdownMenu.vue.d.ts +12 -26
- package/dist/presentation/nav/dropdownMenu/DropdownMenuContent.vue.d.ts +1 -2
- package/dist/presentation/nav/dropdownMenu/DropdownMenuTrigger.vue.d.ts +6 -7
- package/dist/presentation/nav/dropdownMenu/index.d.ts +3 -3
- package/dist/presentation/nav/index.d.ts +1 -1
- package/dist/presentation/nav/index.js +49 -56
- package/dist/presentation/nav/linkItem/LinkItem.variants.d.ts +61 -0
- package/dist/presentation/nav/linkItem/LinkItem.vue.d.ts +25 -0
- package/dist/presentation/nav/linkItem/index.d.ts +2 -0
- package/dist/presentation/nav/menu/Menu.variants.d.ts +17 -43
- package/dist/presentation/nav/menu/Menu.vue.d.ts +26 -30
- package/dist/presentation/nav/menu/MenuGroup.vue.d.ts +4 -5
- package/dist/presentation/nav/menu/MenuItem.vue.d.ts +9 -10
- package/dist/presentation/nav/menu/MenuLabel.vue.d.ts +3 -4
- package/dist/presentation/nav/menu/MenuSeparator.vue.d.ts +3 -4
- package/dist/presentation/nav/menubar/Menubar.variants.d.ts +3 -5
- package/dist/presentation/nav/menubar/Menubar.vue.d.ts +12 -255
- package/dist/presentation/nav/menubar/MenubarContent.vue.d.ts +6 -7
- package/dist/presentation/nav/menubar/MenubarMenu.vue.d.ts +2 -3
- package/dist/presentation/nav/menubar/MenubarTrigger.vue.d.ts +3 -4
- package/dist/presentation/nav/navItem/NavItem.vue.d.ts +15 -16
- package/dist/presentation/nav/navigationMenu/NavigationMenu.vue.d.ts +11 -12
- package/dist/presentation/nav/navigationMenu/NavigationMenuContent.vue.d.ts +3 -4
- package/dist/presentation/nav/navigationMenu/NavigationMenuItem.vue.d.ts +4 -5
- package/dist/presentation/nav/navigationMenu/NavigationMenuLink.vue.d.ts +3 -4
- package/dist/presentation/nav/navigationMenu/NavigationMenuList.vue.d.ts +3 -246
- package/dist/presentation/nav/navigationMenu/NavigationMenuTrigger.vue.d.ts +3 -4
- package/dist/presentation/nav/navigationMenu/index.d.ts +5 -5
- package/dist/presentation/nav/pagination/Pagination.vue.d.ts +11 -14
- package/dist/presentation/nav/scrollSpy/ScrollSpy.vue.d.ts +7 -8
- package/dist/presentation/nav/scrollSpy/UseScrollSpy.d.ts +1 -1
- package/dist/presentation/nav/tableOfContents/TableOfContents.vue.d.ts +15 -16
- package/dist/presentation/nav/tableOfContents/index.d.ts +1 -1
- package/dist/presentation/overlays/OverlayBody.vue.d.ts +3 -4
- package/dist/presentation/overlays/OverlayCloseButton.vue.d.ts +6 -7
- package/dist/presentation/overlays/OverlayDescription.vue.d.ts +3 -4
- package/dist/presentation/overlays/OverlayExtensions.d.ts +14 -0
- package/dist/presentation/overlays/OverlayFooter.vue.d.ts +3 -4
- package/dist/presentation/overlays/OverlayHeader.vue.d.ts +3 -4
- package/dist/presentation/overlays/OverlayTitle.vue.d.ts +3 -4
- package/dist/presentation/overlays/actionSheet/ActionSheet.vue.d.ts +12 -17
- package/dist/presentation/overlays/actionSheet/ActionSheetAction.vue.d.ts +7 -8
- package/dist/presentation/overlays/actionSheet/ActionSheetCancel.vue.d.ts +3 -4
- package/dist/presentation/overlays/actionSheet/index.d.ts +2 -2
- package/dist/presentation/overlays/alertModal/AlertModal.vue.d.ts +6 -10
- package/dist/presentation/overlays/alertModal/AlertModalAction.vue.d.ts +5 -6
- package/dist/presentation/overlays/alertModal/AlertModalCancel.vue.d.ts +3 -4
- package/dist/presentation/overlays/alertModal/AlertModalContent.vue.d.ts +3 -4
- package/dist/presentation/overlays/alertModal/index.d.ts +3 -3
- package/dist/presentation/overlays/backdropOverlay/BackdropOverlay.vue.d.ts +39 -0
- package/dist/presentation/overlays/backdropOverlay/index.d.ts +1 -0
- package/dist/presentation/overlays/bottomSheet/BottomSheet.vue.d.ts +27 -32
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModal.vue.d.ts +37 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalContent.vue.d.ts +16 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalContext.d.ts +42 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalEmpty.vue.d.ts +18 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalGroup.vue.d.ts +18 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalInput.vue.d.ts +13 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalItem.vue.d.ts +35 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalList.vue.d.ts +18 -0
- package/dist/presentation/overlays/commandPaletteModal/CommandPaletteModalSeparator.vue.d.ts +11 -0
- package/dist/presentation/overlays/commandPaletteModal/index.d.ts +9 -0
- package/dist/presentation/overlays/drawer/Drawer.vue.d.ts +16 -29
- package/dist/presentation/overlays/drawer/DrawerContent.vue.d.ts +14 -15
- package/dist/presentation/overlays/drawer/DrawerTrigger.vue.d.ts +6 -7
- package/dist/presentation/overlays/drawer/index.d.ts +1 -1
- package/dist/presentation/overlays/hoverCard/HoverCard.vue.d.ts +17 -30
- package/dist/presentation/overlays/hoverCard/HoverCardArrow.vue.d.ts +3 -4
- package/dist/presentation/overlays/hoverCard/HoverCardContent.vue.d.ts +5 -7
- package/dist/presentation/overlays/hoverCard/HoverCardTrigger.vue.d.ts +6 -7
- package/dist/presentation/overlays/hoverCard/index.d.ts +2 -2
- package/dist/presentation/overlays/index.d.ts +4 -1
- package/dist/presentation/overlays/index.js +50 -37
- package/dist/presentation/overlays/index.js.map +1 -1
- package/dist/presentation/overlays/modal/Modal.vue.d.ts +16 -30
- package/dist/presentation/overlays/modal/ModalContent.vue.d.ts +13 -14
- package/dist/presentation/overlays/modal/ModalTrigger.vue.d.ts +6 -7
- package/dist/presentation/overlays/modal/index.d.ts +2 -2
- package/dist/presentation/overlays/popover/Popover.vue.d.ts +21 -30
- package/dist/presentation/overlays/popover/PopoverArrow.vue.d.ts +3 -4
- package/dist/presentation/overlays/popover/PopoverContent.vue.d.ts +10 -11
- package/dist/presentation/overlays/popover/PopoverTrigger.vue.d.ts +6 -7
- package/dist/presentation/overlays/tooltip/Tooltip.vue.d.ts +41 -0
- package/dist/presentation/overlays/tourPopover/TourPopover.vue.d.ts +46 -0
- package/dist/presentation/overlays/tourPopover/index.d.ts +1 -0
- package/dist/query/PageExtensions.d.ts +16 -0
- package/dist/query/Testing.d.ts +1 -0
- package/dist/query/Testing.js +48 -0
- package/dist/query/Testing.js.map +1 -0
- package/dist/query/adapters/tanstack/CreateQueryClient.d.ts +33 -0
- package/dist/query/adapters/tanstack/Endpoints.d.ts +19 -0
- package/dist/query/adapters/tanstack/OptimisticTransactions.d.ts +3 -0
- package/dist/query/adapters/tanstack/Persistence.d.ts +41 -0
- package/dist/query/adapters/tanstack/QueryOutcome.d.ts +8 -0
- package/dist/query/adapters/tanstack/QueryProgressBridge.d.ts +15 -0
- package/dist/query/adapters/tanstack/QueryProvider.vue.d.ts +16 -0
- package/dist/query/adapters/tanstack/QueryTestUtils.d.ts +54 -0
- package/dist/query/adapters/tanstack/hooks/UseAppInfiniteQuery.d.ts +49 -0
- package/dist/query/adapters/tanstack/hooks/UseAppLazyQuery.d.ts +44 -0
- package/dist/query/adapters/tanstack/hooks/UseAppMutation.d.ts +36 -0
- package/dist/query/adapters/tanstack/hooks/UseAppPaginatedQuery.d.ts +49 -0
- package/dist/query/adapters/tanstack/hooks/UseAppQueries.d.ts +50 -0
- package/dist/query/adapters/tanstack/hooks/UseAppQuery.d.ts +42 -0
- package/dist/query/adapters/tanstack/hooks/UseAppSuspenseQuery.d.ts +50 -0
- package/dist/query/adapters/tanstack/hooks/UseOptimisticMutation.d.ts +38 -0
- package/dist/query/adapters/tanstack/hooks/UsePrefetchQuery.d.ts +28 -0
- package/dist/query/adapters/tanstack/hooks/UseQueryCache.d.ts +33 -0
- package/dist/query/adapters/tanstack/index.d.ts +19 -0
- package/dist/query/adapters/tanstack/queryDevtools/QueryDevtools.vue.d.ts +9 -0
- package/dist/query/adapters/tanstack/queryDevtools/index.d.ts +1 -0
- package/dist/query/index.d.ts +1 -19
- package/dist/query/index.js +155 -93
- package/dist/query/index.js.map +1 -1
- package/dist/router/Paths.d.ts +4 -6
- package/dist/router/ProgressProvider.vue.d.ts +5 -6
- package/dist/router/adapters/vueRouter/CreateAppRouter.d.ts +65 -0
- package/dist/router/adapters/vueRouter/DocumentMeta.d.ts +13 -0
- package/dist/router/adapters/vueRouter/Guards.d.ts +32 -0
- package/dist/router/adapters/vueRouter/LazyRoute.d.ts +19 -0
- package/dist/router/adapters/vueRouter/RouteConfig.d.ts +97 -0
- package/dist/router/adapters/vueRouter/RouteHandles.d.ts +30 -0
- package/dist/router/adapters/vueRouter/RoutePersistence.d.ts +20 -0
- package/dist/router/adapters/vueRouter/appErrorBoundary/AppErrorBoundary.vue.d.ts +25 -0
- package/dist/router/adapters/vueRouter/appErrorBoundary/index.d.ts +1 -0
- package/dist/router/adapters/vueRouter/appNavLink/AppNavLink.vue.d.ts +39 -0
- package/dist/router/adapters/vueRouter/appNavLink/index.d.ts +1 -0
- package/dist/router/adapters/vueRouter/hooks/UseBreadcrumbs.d.ts +17 -0
- package/dist/router/adapters/vueRouter/hooks/UsePrefetch.d.ts +19 -0
- package/dist/router/adapters/vueRouter/index.d.ts +23 -0
- package/dist/router/adapters/vueRouter/navigationProgress/NavigationProgress.vue.d.ts +18 -0
- package/dist/router/adapters/vueRouter/navigationProgress/index.d.ts +1 -0
- package/dist/router/adapters/vueRouter/notFound/NotFound.vue.d.ts +9 -0
- package/dist/router/adapters/vueRouter/notFound/index.d.ts +1 -0
- package/dist/router/adapters/vueRouter/routeAnnouncer/RouteAnnouncer.vue.d.ts +9 -0
- package/dist/router/adapters/vueRouter/routeAnnouncer/index.d.ts +1 -0
- package/dist/router/index.d.ts +1 -23
- package/dist/router/index.js +63 -29
- package/dist/router/index.js.map +1 -1
- package/dist/themes.css +1115 -1115
- package/dist/themes.json +5 -4
- package/package.json +93 -48
- package/dist/auth/AuthContext.d.ts +0 -41
- package/dist/auth/AuthProvider.vue.d.ts +0 -33
- package/dist/chunks/Announce.vue_vue_type_script_setup_true_lang-CDTltiIl.js +0 -46
- package/dist/chunks/Announce.vue_vue_type_script_setup_true_lang-CDTltiIl.js.map +0 -1
- package/dist/chunks/ApiError-l0YdcqqV.js +0 -15
- package/dist/chunks/ApiError-l0YdcqqV.js.map +0 -1
- package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-iLYlhK05.js +0 -1002
- package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-iLYlhK05.js.map +0 -1
- package/dist/chunks/Backdrop.vue_vue_type_script_setup_true_lang-CKG--_g8.js +0 -78
- package/dist/chunks/Backdrop.vue_vue_type_script_setup_true_lang-CKG--_g8.js.map +0 -1
- package/dist/chunks/BottomSheet.vue_vue_type_script_setup_true_lang-CmNaGird.js +0 -1094
- package/dist/chunks/BottomSheet.vue_vue_type_script_setup_true_lang-CmNaGird.js.map +0 -1
- package/dist/chunks/Bytes-7Jxs6Bq6.js +0 -21
- package/dist/chunks/Bytes-7Jxs6Bq6.js.map +0 -1
- package/dist/chunks/ChatComposer.vue_vue_type_script_setup_true_lang-DfeVsj9h.js +0 -13193
- package/dist/chunks/ChatComposer.vue_vue_type_script_setup_true_lang-DfeVsj9h.js.map +0 -1
- package/dist/chunks/Chord-D9Z-j3O0.js +0 -139
- package/dist/chunks/Chord-D9Z-j3O0.js.map +0 -1
- package/dist/chunks/ColorModeContext-Bz6CBL0V.js +0 -21
- package/dist/chunks/ColorModeContext-Bz6CBL0V.js.map +0 -1
- package/dist/chunks/Compare-Du6p-OX1.js +0 -18
- package/dist/chunks/Compare-Du6p-OX1.js.map +0 -1
- package/dist/chunks/ControlGroup.vue_vue_type_script_setup_true_lang-CV8Xstes.js +0 -229
- package/dist/chunks/ControlGroup.vue_vue_type_script_setup_true_lang-CV8Xstes.js.map +0 -1
- package/dist/chunks/CssExtensions-BzLJG57F.js +0 -161
- package/dist/chunks/CssExtensions-BzLJG57F.js.map +0 -1
- package/dist/chunks/DateExtensions-C6a-h8ji.js +0 -272
- package/dist/chunks/DateExtensions-C6a-h8ji.js.map +0 -1
- package/dist/chunks/DeepEqual-7lBKnkNS.js +0 -29
- package/dist/chunks/DeepEqual-7lBKnkNS.js.map +0 -1
- package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-ptH1ttBL.js +0 -214
- package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-ptH1ttBL.js.map +0 -1
- package/dist/chunks/DrawerContent.vue_vue_type_script_setup_true_lang-4n5w3lg2.js +0 -207
- package/dist/chunks/DrawerContent.vue_vue_type_script_setup_true_lang-4n5w3lg2.js.map +0 -1
- package/dist/chunks/Environment-CuQav_mw.js +0 -68
- package/dist/chunks/Environment-CuQav_mw.js.map +0 -1
- package/dist/chunks/Equality-DIQYQysz.js +0 -21
- package/dist/chunks/Equality-DIQYQysz.js.map +0 -1
- package/dist/chunks/ErrorLike-Cfj0lZW3.js +0 -27
- package/dist/chunks/ErrorLike-Cfj0lZW3.js.map +0 -1
- package/dist/chunks/ErrorMessage-Cqt7WaFn.js +0 -26
- package/dist/chunks/ErrorMessage-Cqt7WaFn.js.map +0 -1
- package/dist/chunks/ErrorRecognizers-oTklha6D.js +0 -17
- package/dist/chunks/ErrorRecognizers-oTklha6D.js.map +0 -1
- package/dist/chunks/FieldErrors-2zjhia4U.js +0 -56
- package/dist/chunks/FieldErrors-2zjhia4U.js.map +0 -1
- package/dist/chunks/FileName-CmNjFV7t.js +0 -30
- package/dist/chunks/FileName-CmNjFV7t.js.map +0 -1
- package/dist/chunks/FormControlProvider.vue_vue_type_script_setup_true_lang-Fak7Jv46.js +0 -73
- package/dist/chunks/FormControlProvider.vue_vue_type_script_setup_true_lang-Fak7Jv46.js.map +0 -1
- package/dist/chunks/HtmlExtensions-jlKY5f9C.js +0 -23
- package/dist/chunks/HtmlExtensions-jlKY5f9C.js.map +0 -1
- package/dist/chunks/Icon.vue_vue_type_script_setup_true_lang-DgwdLCRR.js +0 -27
- package/dist/chunks/Icon.vue_vue_type_script_setup_true_lang-DgwdLCRR.js.map +0 -1
- package/dist/chunks/Inline.vue_vue_type_script_setup_true_lang-BvWbQpJD.js +0 -68
- package/dist/chunks/Inline.vue_vue_type_script_setup_true_lang-BvWbQpJD.js.map +0 -1
- package/dist/chunks/KeyboardExtensions-CQlkK53D.js +0 -34
- package/dist/chunks/KeyboardExtensions-CQlkK53D.js.map +0 -1
- package/dist/chunks/Listbox.variants-CqAkYsmK.js +0 -44
- package/dist/chunks/Listbox.variants-CqAkYsmK.js.map +0 -1
- package/dist/chunks/LocaleContext-B3UXrI6p.js +0 -39
- package/dist/chunks/LocaleContext-B3UXrI6p.js.map +0 -1
- package/dist/chunks/Messages-BGfQHMmW.js +0 -201
- package/dist/chunks/Messages-BGfQHMmW.js.map +0 -1
- package/dist/chunks/ModalContent.vue_vue_type_script_setup_true_lang-Co5jaeXk.js +0 -191
- package/dist/chunks/ModalContent.vue_vue_type_script_setup_true_lang-Co5jaeXk.js.map +0 -1
- package/dist/chunks/NavItem.vue_vue_type_script_setup_true_lang-CGBo2TiV.js +0 -86
- package/dist/chunks/NavItem.vue_vue_type_script_setup_true_lang-CGBo2TiV.js.map +0 -1
- package/dist/chunks/Navbar.vue_vue_type_script_setup_true_lang-Cy0zvm5d.js +0 -2073
- package/dist/chunks/Navbar.vue_vue_type_script_setup_true_lang-Cy0zvm5d.js.map +0 -1
- package/dist/chunks/NotificationItem.vue_vue_type_script_setup_true_lang-DySfo3fD.js +0 -2727
- package/dist/chunks/NotificationItem.vue_vue_type_script_setup_true_lang-DySfo3fD.js.map +0 -1
- package/dist/chunks/OptionTileGroup.vue_vue_type_script_setup_true_lang-CKSVGCby.js +0 -964
- package/dist/chunks/OptionTileGroup.vue_vue_type_script_setup_true_lang-CKSVGCby.js.map +0 -1
- package/dist/chunks/OverlayChrome-e4MNr8Yl.js +0 -17
- package/dist/chunks/OverlayChrome-e4MNr8Yl.js.map +0 -1
- package/dist/chunks/PopoverContent.vue_vue_type_script_setup_true_lang-DYd617X5.js +0 -212
- package/dist/chunks/PopoverContent.vue_vue_type_script_setup_true_lang-DYd617X5.js.map +0 -1
- package/dist/chunks/Portal.vue_vue_type_script_setup_true_lang-CF3R0VCZ.js +0 -34
- package/dist/chunks/Portal.vue_vue_type_script_setup_true_lang-CF3R0VCZ.js.map +0 -1
- package/dist/chunks/Presence-DE4MlrJz.js +0 -138
- package/dist/chunks/Presence-DE4MlrJz.js.map +0 -1
- package/dist/chunks/Primitive-Cm3ECaVw.js +0 -20
- package/dist/chunks/Primitive-Cm3ECaVw.js.map +0 -1
- package/dist/chunks/QueryPermission--OKfvS9c.js +0 -82
- package/dist/chunks/QueryPermission--OKfvS9c.js.map +0 -1
- package/dist/chunks/RovingFocusGroup.vue_vue_type_script_setup_true_lang-DCpYSP2V.js +0 -235
- package/dist/chunks/RovingFocusGroup.vue_vue_type_script_setup_true_lang-DCpYSP2V.js.map +0 -1
- package/dist/chunks/ScrollLockProvider.vue_vue_type_script_setup_true_lang-_ihHJ7jI.js +0 -20
- package/dist/chunks/ScrollLockProvider.vue_vue_type_script_setup_true_lang-_ihHJ7jI.js.map +0 -1
- package/dist/chunks/SerializeError-CclP2jCW.js +0 -61
- package/dist/chunks/SerializeError-CclP2jCW.js.map +0 -1
- package/dist/chunks/Side-CSys3p-F.js +0 -23
- package/dist/chunks/Side-CSys3p-F.js.map +0 -1
- package/dist/chunks/Slot-D2lIitvV.js +0 -103
- package/dist/chunks/Slot-D2lIitvV.js.map +0 -1
- package/dist/chunks/SortableHandle.vue_vue_type_script_setup_true_lang-8WPwGZ5e.js +0 -10375
- package/dist/chunks/SortableHandle.vue_vue_type_script_setup_true_lang-8WPwGZ5e.js.map +0 -1
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-BAepBy2n.js +0 -23
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-BAepBy2n.js.map +0 -1
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-C4lNiUOm.js +0 -76
- package/dist/chunks/Spinner.vue_vue_type_script_setup_true_lang-C4lNiUOm.js.map +0 -1
- package/dist/chunks/SubmitErrors-K8nmmj0P.js +0 -374
- package/dist/chunks/SubmitErrors-K8nmmj0P.js.map +0 -1
- package/dist/chunks/SurfaceStyles-B6W7zdMi.js +0 -143
- package/dist/chunks/SurfaceStyles-B6W7zdMi.js.map +0 -1
- package/dist/chunks/TableOfContents.vue_vue_type_script_setup_true_lang-C9eM0AoG.js +0 -2157
- package/dist/chunks/TableOfContents.vue_vue_type_script_setup_true_lang-C9eM0AoG.js.map +0 -1
- package/dist/chunks/ToError-CyTBsmLO.js +0 -52
- package/dist/chunks/ToError-CyTBsmLO.js.map +0 -1
- package/dist/chunks/Tones-WKBNZ_u2.js +0 -112
- package/dist/chunks/Tones-WKBNZ_u2.js.map +0 -1
- package/dist/chunks/TransitionExtensions-hFi80JX2.js +0 -19
- package/dist/chunks/TransitionExtensions-hFi80JX2.js.map +0 -1
- package/dist/chunks/UseHotkeys-CKIYK5Mq.js +0 -82
- package/dist/chunks/UseHotkeys-CKIYK5Mq.js.map +0 -1
- package/dist/chunks/UseNavigationProgress-TQIkkXyU.js +0 -51
- package/dist/chunks/UseNavigationProgress-TQIkkXyU.js.map +0 -1
- package/dist/chunks/cn-CzDCF-Ah.js +0 -9
- package/dist/chunks/cn-CzDCF-Ah.js.map +0 -1
- package/dist/chunks/dataAttr-7BR67dTj.js +0 -7
- package/dist/chunks/dataAttr-7BR67dTj.js.map +0 -1
- package/dist/chunks/index-BGzbbN9T.js +0 -1707
- package/dist/chunks/index-BGzbbN9T.js.map +0 -1
- package/dist/chunks/index-C034dEhy.js +0 -205
- package/dist/chunks/index-C034dEhy.js.map +0 -1
- package/dist/chunks/index-CEoYQiWL.js +0 -130
- package/dist/chunks/index-CEoYQiWL.js.map +0 -1
- package/dist/chunks/index-CzKEU1kI.js +0 -11
- package/dist/chunks/index-CzKEU1kI.js.map +0 -1
- package/dist/chunks/index-op-kbVUk.js +0 -234
- package/dist/chunks/index-op-kbVUk.js.map +0 -1
- package/dist/chunks/useClipboard-BVRwXC--.js +0 -37
- package/dist/chunks/useClipboard-BVRwXC--.js.map +0 -1
- package/dist/chunks/useControlled-B6M4kTLn.js +0 -24
- package/dist/chunks/useControlled-B6M4kTLn.js.map +0 -1
- package/dist/chunks/useDebounceHandler-BIZgvvGp.js +0 -20
- package/dist/chunks/useDebounceHandler-BIZgvvGp.js.map +0 -1
- package/dist/chunks/useEscape-CYPdpm_l.js +0 -15
- package/dist/chunks/useEscape-CYPdpm_l.js.map +0 -1
- package/dist/chunks/useEventListener-gohT6zGs.js +0 -16
- package/dist/chunks/useEventListener-gohT6zGs.js.map +0 -1
- package/dist/chunks/useId-CtgAhGrn.js +0 -9
- package/dist/chunks/useId-CtgAhGrn.js.map +0 -1
- package/dist/chunks/useMediaQuery-DwVcSgGk.js +0 -27
- package/dist/chunks/useMediaQuery-DwVcSgGk.js.map +0 -1
- package/dist/chunks/useOutsideClick-CW80BJfE.js +0 -22
- package/dist/chunks/useOutsideClick-CW80BJfE.js.map +0 -1
- package/dist/chunks/useRecentItems-DFnt5CBy.js +0 -137
- package/dist/chunks/useRecentItems-DFnt5CBy.js.map +0 -1
- package/dist/chunks/useReducedMotion-B9LqQ3UT.js +0 -8
- package/dist/chunks/useReducedMotion-B9LqQ3UT.js.map +0 -1
- package/dist/chunks/useResizeObserver-BUU7lC-n.js +0 -17
- package/dist/chunks/useResizeObserver-BUU7lC-n.js.map +0 -1
- package/dist/chunks/useScrollLock-d6YIGUcs.js +0 -37
- package/dist/chunks/useScrollLock-d6YIGUcs.js.map +0 -1
- package/dist/flags/FlagsContext.d.ts +0 -32
- package/dist/flags/FlagsProvider.vue.d.ts +0 -24
- package/dist/forms-engine/AppForm.d.ts +0 -258
- package/dist/forms-engine/DeepEqual.d.ts +0 -8
- package/dist/forms-engine/FocusFirstInvalid.d.ts +0 -15
- package/dist/forms-engine/FormGlue.d.ts +0 -55
- package/dist/forms-engine/Paths.d.ts +0 -47
- package/dist/forms-engine/SchemaValidation.d.ts +0 -29
- package/dist/forms-engine/SubmitErrors.d.ts +0 -33
- package/dist/forms-engine/UseFieldArray.d.ts +0 -87
- package/dist/forms-engine/house/HouseFormCore.d.ts +0 -33
- package/dist/forms-engine/house/UseAppForm.d.ts +0 -16
- package/dist/forms-engine/house/index.js +0 -315
- package/dist/forms-engine/house/index.js.map +0 -1
- package/dist/forms-engine/index.d.ts +0 -10
- package/dist/forms-engine/index.js +0 -127
- package/dist/forms-engine/index.js.map +0 -1
- package/dist/forms-engine/tanstack/TanstackFormOverlay.d.ts +0 -49
- package/dist/forms-engine/tanstack/UseAppForm.d.ts +0 -26
- package/dist/forms-engine/tanstack/index.js +0 -407
- package/dist/forms-engine/tanstack/index.js.map +0 -1
- package/dist/foundation/animation/AnimatedLayout.d.ts +0 -72
- package/dist/foundation/clipboard/UseClipboardCopy.d.ts +0 -40
- package/dist/foundation/clipboard/UsePasteHandler.d.ts +0 -35
- package/dist/foundation/commands/CommandsContext.d.ts +0 -30
- package/dist/foundation/commands/CommandsProvider.vue.d.ts +0 -18
- package/dist/foundation/commands/UseCommandRegistry.d.ts +0 -19
- package/dist/foundation/commands/UseCommandShortcuts.d.ts +0 -18
- package/dist/foundation/device/UseBreakpoint.d.ts +0 -20
- package/dist/foundation/device/UseDisplayMode.d.ts +0 -23
- package/dist/foundation/device/UsePointer.d.ts +0 -25
- package/dist/foundation/format/Text.d.ts +0 -51
- package/dist/foundation/format/index.js +0 -100
- package/dist/foundation/format/index.js.map +0 -1
- package/dist/foundation/geolocation/GeolocationReading.d.ts +0 -30
- package/dist/foundation/geolocation/PositionResult.d.ts +0 -74
- package/dist/foundation/geolocation/UseGeolocation.d.ts +0 -38
- package/dist/foundation/geolocation/UseWatchPosition.d.ts +0 -16
- package/dist/foundation/gestures/UseDrag.d.ts +0 -75
- package/dist/foundation/gestures/UseLongPress.d.ts +0 -42
- package/dist/foundation/gestures/UsePinch.d.ts +0 -47
- package/dist/foundation/gestures/UseSwipe.d.ts +0 -46
- package/dist/foundation/hooks/index.d.ts +0 -17
- package/dist/foundation/hooks/index.js +0 -34
- package/dist/foundation/hooks/index.js.map +0 -1
- package/dist/foundation/hooks/useAutosave/index.d.ts +0 -1
- package/dist/foundation/hooks/useAutosave/useAutosave.d.ts +0 -46
- package/dist/foundation/hooks/useClipboard/index.d.ts +0 -1
- package/dist/foundation/hooks/useClipboard/useClipboard.d.ts +0 -24
- package/dist/foundation/hooks/useControlled/index.d.ts +0 -1
- package/dist/foundation/hooks/useControlled/useControlled.d.ts +0 -31
- package/dist/foundation/hooks/useDebounceHandler/index.d.ts +0 -1
- package/dist/foundation/hooks/useDisclosure/index.d.ts +0 -1
- package/dist/foundation/hooks/useEscape/index.d.ts +0 -1
- package/dist/foundation/hooks/useEventListener/index.d.ts +0 -1
- package/dist/foundation/hooks/useFocusTrap/index.d.ts +0 -1
- package/dist/foundation/hooks/useId/index.d.ts +0 -1
- package/dist/foundation/hooks/useMediaQuery/index.d.ts +0 -1
- package/dist/foundation/hooks/useMediaQuery/useMediaQuery.d.ts +0 -12
- package/dist/foundation/hooks/useOutsideClick/index.d.ts +0 -1
- package/dist/foundation/hooks/usePersistentState/index.d.ts +0 -1
- package/dist/foundation/hooks/usePersistentState/usePersistentState.d.ts +0 -31
- package/dist/foundation/hooks/useRecentItems/index.d.ts +0 -1
- package/dist/foundation/hooks/useRecentItems/useRecentItems.d.ts +0 -34
- package/dist/foundation/hooks/useReducedMotion/index.d.ts +0 -1
- package/dist/foundation/hooks/useResizeObserver/index.d.ts +0 -1
- package/dist/foundation/hooks/useScrollLock/index.d.ts +0 -1
- package/dist/foundation/hooks/useTypeahead/index.d.ts +0 -1
- package/dist/foundation/hooks/useTypeahead/useTypeahead.d.ts +0 -42
- package/dist/foundation/http/Page.d.ts +0 -47
- package/dist/foundation/http/temporalReviver.d.ts +0 -9
- package/dist/foundation/i18n/FormattedRelative.vue.d.ts +0 -10
- package/dist/foundation/i18n/LocaleContext.d.ts +0 -35
- package/dist/foundation/i18n/LocaleProvider.vue.d.ts +0 -18
- package/dist/foundation/icons/Icon.vue.d.ts +0 -40
- package/dist/foundation/icons/Spinner.vue.d.ts +0 -7
- package/dist/foundation/media/MediaStreamResult.d.ts +0 -45
- package/dist/foundation/net/UseEventStream.d.ts +0 -25
- package/dist/foundation/net/UsePolling.d.ts +0 -26
- package/dist/foundation/net/UseSocket.d.ts +0 -32
- package/dist/foundation/notifications/UseNotificationPermission.d.ts +0 -27
- package/dist/foundation/notifications/UsePermissionState.d.ts +0 -14
- package/dist/foundation/observers/UseInView.d.ts +0 -41
- package/dist/foundation/observers/UseIntersectionObserver.d.ts +0 -18
- package/dist/foundation/observers/UseMutationObserver.d.ts +0 -21
- package/dist/foundation/screen/ScreenResult.d.ts +0 -38
- package/dist/foundation/screen/UseFullscreen.d.ts +0 -28
- package/dist/foundation/screen/UseOrientation.d.ts +0 -28
- package/dist/foundation/screen/UseWakeLock.d.ts +0 -18
- package/dist/foundation/selection/Filter.d.ts +0 -71
- package/dist/foundation/selection/Selection.d.ts +0 -116
- package/dist/foundation/selection/Sort.d.ts +0 -69
- package/dist/foundation/selection/UseFilters.d.ts +0 -34
- package/dist/foundation/selection/UseSelection.d.ts +0 -54
- package/dist/foundation/selection/UseSort.d.ts +0 -36
- package/dist/foundation/shortcuts/UseHotkeys.d.ts +0 -34
- package/dist/foundation/speech/UseSpeechRecognition.d.ts +0 -45
- package/dist/foundation/speech/UseSpeechSynthesis.d.ts +0 -37
- package/dist/foundation/storage/zustand/ZustandPersist.d.ts +0 -36
- package/dist/foundation/storage/zustand/index.d.ts +0 -1
- package/dist/foundation/storage/zustand/index.js.map +0 -1
- package/dist/foundation/sync/LeaderElection.d.ts +0 -88
- package/dist/foundation/sync/SyncChannel.d.ts +0 -65
- package/dist/foundation/sync/UseBroadcastState.d.ts +0 -31
- package/dist/foundation/sync/UseLeaderElection.d.ts +0 -25
- package/dist/foundation/sync/UseSyncChannel.d.ts +0 -16
- package/dist/foundation/sync/index.d.ts +0 -7
- package/dist/foundation/sync/index.js +0 -484
- package/dist/foundation/sync/index.js.map +0 -1
- package/dist/foundation/themes/pool.d.ts +0 -3
- package/dist/foundation/themes/registry.d.ts +0 -16
- package/dist/foundation/themes/validate.d.ts +0 -25
- package/dist/foundation/themes/validated.d.ts +0 -3
- package/dist/foundation/undo/HistoryCore.d.ts +0 -92
- package/dist/foundation/undo/UseUndoHistory.d.ts +0 -66
- package/dist/foundation/undo/UseUndoShortcuts.d.ts +0 -20
- package/dist/foundation/undo/index.d.ts +0 -5
- package/dist/foundation/undo/index.js +0 -361
- package/dist/foundation/undo/index.js.map +0 -1
- package/dist/foundation/utils/Align/index.d.ts +0 -1
- package/dist/foundation/utils/ColorExtensions/ColorExtensions.d.ts +0 -51
- package/dist/foundation/utils/ColorExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/Compare/index.d.ts +0 -1
- package/dist/foundation/utils/CornerPosition/index.d.ts +0 -1
- package/dist/foundation/utils/CssExtensions/CssExtensions.d.ts +0 -115
- package/dist/foundation/utils/CssExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/ElementTag/index.d.ts +0 -1
- package/dist/foundation/utils/Environment/Environment.d.ts +0 -12
- package/dist/foundation/utils/Environment/index.d.ts +0 -1
- package/dist/foundation/utils/Equality/index.d.ts +0 -1
- package/dist/foundation/utils/HtmlExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/KeyboardExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/Layers/Layers.d.ts +0 -35
- package/dist/foundation/utils/Layers/index.d.ts +0 -1
- package/dist/foundation/utils/OptionalExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/Orientation/index.d.ts +0 -1
- package/dist/foundation/utils/OverlayPosition/index.d.ts +0 -1
- package/dist/foundation/utils/PressExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/ProgressTone/index.d.ts +0 -1
- package/dist/foundation/utils/Severity/index.d.ts +0 -1
- package/dist/foundation/utils/Side/index.d.ts +0 -1
- package/dist/foundation/utils/StatusTone/index.d.ts +0 -1
- package/dist/foundation/utils/StyleTokens/index.d.ts +0 -1
- package/dist/foundation/utils/SurfaceStyles/SurfaceStyles.d.ts +0 -397
- package/dist/foundation/utils/SurfaceStyles/index.d.ts +0 -1
- package/dist/foundation/utils/Tones/Tones.d.ts +0 -21
- package/dist/foundation/utils/Tones/index.d.ts +0 -1
- package/dist/foundation/utils/TransitionExtensions/index.d.ts +0 -1
- package/dist/foundation/utils/cn/index.d.ts +0 -1
- package/dist/foundation/utils/composeEventHandlers/index.d.ts +0 -1
- package/dist/foundation/utils/dataAttr/index.d.ts +0 -1
- package/dist/foundation/utils/index.d.ts +0 -33
- package/dist/foundation/utils/index.js +0 -67
- package/dist/foundation/utils/index.js.map +0 -1
- package/dist/foundation/utils/polymorphic/index.d.ts +0 -1
- package/dist/foundation/utils/polymorphic/polymorphic.d.ts +0 -29
- package/dist/foundation/utils/tv/index.d.ts +0 -1
- package/dist/foundation/validation/Composites.d.ts +0 -62
- package/dist/foundation/validation/Messages.d.ts +0 -69
- package/dist/foundation/validation/ValidationError.d.ts +0 -14
- package/dist/foundation/validation/ValidationResult.d.ts +0 -49
- package/dist/foundation/validation/Validator.d.ts +0 -69
- package/dist/foundation/validation/index.d.ts +0 -8
- package/dist/foundation/validation/index.js +0 -512
- package/dist/foundation/validation/index.js.map +0 -1
- package/dist/presentation/actions/fab/FAB.variants.d.ts +0 -158
- package/dist/presentation/actions/fab/FAB.vue.d.ts +0 -29
- package/dist/presentation/actions/fab/index.d.ts +0 -2
- package/dist/presentation/actions/link/Link.variants.d.ts +0 -111
- package/dist/presentation/actions/link/Link.vue.d.ts +0 -24
- package/dist/presentation/actions/link/index.d.ts +0 -2
- package/dist/presentation/actions/optionTile/OptionTile.variants.d.ts +0 -10
- package/dist/presentation/actions/optionTile/OptionTile.vue.d.ts +0 -31
- package/dist/presentation/actions/optionTile/index.d.ts +0 -2
- package/dist/presentation/actions/optionTileGroup/OptionTileGroup.variants.d.ts +0 -76
- package/dist/presentation/actions/optionTileGroup/OptionTileGroup.vue.d.ts +0 -27
- package/dist/presentation/actions/optionTileGroup/index.d.ts +0 -2
- package/dist/presentation/actions/segmentedControl/SegmentedControl.vue.d.ts +0 -20
- package/dist/presentation/actions/segmentedControl/index.d.ts +0 -1
- package/dist/presentation/actions/speedDial/SpeedDial.vue.d.ts +0 -28
- package/dist/presentation/actions/speedDial/SpeedDialAction.vue.d.ts +0 -41
- package/dist/presentation/actions/speedDial/SpeedDialContext.d.ts +0 -36
- package/dist/presentation/actions/speedDial/SpeedDialList.vue.d.ts +0 -13
- package/dist/presentation/actions/speedDial/SpeedDialTrigger.vue.d.ts +0 -30
- package/dist/presentation/actions/speedDial/index.d.ts +0 -164
- package/dist/presentation/actions/toggleButton/ToggleButton.variants.d.ts +0 -141
- package/dist/presentation/actions/toggleButton/ToggleButton.vue.d.ts +0 -59
- package/dist/presentation/actions/toggleButton/index.d.ts +0 -2
- package/dist/presentation/actions/toggleButtonGroup/ToggleButtonGroup.variants.d.ts +0 -33
- package/dist/presentation/actions/toggleButtonGroup/ToggleButtonGroup.vue.d.ts +0 -72
- package/dist/presentation/actions/toggleButtonGroup/ToggleButtonGroupContext.d.ts +0 -24
- package/dist/presentation/actions/toggleButtonGroup/index.d.ts +0 -3
- package/dist/presentation/display/accordion/Accordion.vue.d.ts +0 -45
- package/dist/presentation/display/accordion/AccordionContent.vue.d.ts +0 -14
- package/dist/presentation/display/accordion/AccordionContext.d.ts +0 -29
- package/dist/presentation/display/accordion/AccordionItem.vue.d.ts +0 -20
- package/dist/presentation/display/accordion/AccordionTrigger.vue.d.ts +0 -14
- package/dist/presentation/display/accordion/index.d.ts +0 -5
- package/dist/presentation/display/activityFeed/ActivityFeed.vue.d.ts +0 -18
- package/dist/presentation/display/activityFeed/ActivityItem.vue.d.ts +0 -29
- package/dist/presentation/display/activityFeed/index.d.ts +0 -2
- package/dist/presentation/display/animatedNumber/AnimatedNumber.vue.d.ts +0 -34
- package/dist/presentation/display/animatedNumber/index.d.ts +0 -1
- package/dist/presentation/display/annotationMarker/AnnotationMarker.vue.d.ts +0 -43
- package/dist/presentation/display/annotationMarker/index.d.ts +0 -1
- package/dist/presentation/display/audioWaveform/AudioWaveform.vue.d.ts +0 -58
- package/dist/presentation/display/audioWaveform/index.d.ts +0 -1
- package/dist/presentation/display/chatBubble/ChatBubble.vue.d.ts +0 -79
- package/dist/presentation/display/chatBubble/index.d.ts +0 -1
- package/dist/presentation/display/code/Code.variants.d.ts +0 -48
- package/dist/presentation/display/code/Code.vue.d.ts +0 -17
- package/dist/presentation/display/code/index.d.ts +0 -2
- package/dist/presentation/display/collapsible/Collapsible.vue.d.ts +0 -40
- package/dist/presentation/display/collapsible/CollapsibleContent.vue.d.ts +0 -18
- package/dist/presentation/display/collapsible/CollapsibleContentInner.vue.d.ts +0 -23
- package/dist/presentation/display/collapsible/CollapsibleContext.d.ts +0 -17
- package/dist/presentation/display/collapsible/CollapsibleTrigger.vue.d.ts +0 -18
- package/dist/presentation/display/collapsible/index.d.ts +0 -4
- package/dist/presentation/display/commentThread/Comment.vue.d.ts +0 -39
- package/dist/presentation/display/commentThread/CommentThread.vue.d.ts +0 -14
- package/dist/presentation/display/commentThread/index.d.ts +0 -2
- package/dist/presentation/display/confetti/Confetti.vue.d.ts +0 -40
- package/dist/presentation/display/confetti/index.d.ts +0 -1
- package/dist/presentation/display/countUp/CountUp.vue.d.ts +0 -40
- package/dist/presentation/display/countUp/index.d.ts +0 -1
- package/dist/presentation/display/dataGrid/CellEditor.vue.d.ts +0 -29
- package/dist/presentation/display/dataGrid/DataGrid.vue.d.ts +0 -47
- package/dist/presentation/display/dataGrid/DataGridTypes.d.ts +0 -65
- package/dist/presentation/display/dataGrid/index.d.ts +0 -2
- package/dist/presentation/display/descriptionList/DescriptionList.vue.d.ts +0 -54
- package/dist/presentation/display/descriptionList/index.d.ts +0 -1
- package/dist/presentation/display/eventCalendar/AgendaView.vue.d.ts +0 -13
- package/dist/presentation/display/eventCalendar/EventCalendar.vue.d.ts +0 -42
- package/dist/presentation/display/eventCalendar/EventCalendarTypes.d.ts +0 -28
- package/dist/presentation/display/eventCalendar/MonthView.vue.d.ts +0 -17
- package/dist/presentation/display/eventCalendar/TimeGridView.vue.d.ts +0 -18
- package/dist/presentation/display/eventCalendar/index.d.ts +0 -2
- package/dist/presentation/display/eyebrow/Eyebrow.vue.d.ts +0 -32
- package/dist/presentation/display/eyebrow/index.d.ts +0 -1
- package/dist/presentation/display/gantt/Gantt.vue.d.ts +0 -59
- package/dist/presentation/display/gantt/index.d.ts +0 -1
- package/dist/presentation/display/heatmapCalendar/HeatmapCalendar.vue.d.ts +0 -62
- package/dist/presentation/display/heatmapCalendar/index.d.ts +0 -1
- package/dist/presentation/display/highlight/Highlight.vue.d.ts +0 -20
- package/dist/presentation/display/highlight/index.d.ts +0 -1
- package/dist/presentation/display/image/Image.vue.d.ts +0 -15
- package/dist/presentation/display/image/index.d.ts +0 -1
- package/dist/presentation/display/kbd/Kbd.vue.d.ts +0 -13
- package/dist/presentation/display/kbd/index.d.ts +0 -1
- package/dist/presentation/display/keyboardShortcut/KeyboardShortcut.vue.d.ts +0 -13
- package/dist/presentation/display/keyboardShortcut/index.d.ts +0 -1
- package/dist/presentation/display/list/List.variants.d.ts +0 -112
- package/dist/presentation/display/list/List.vue.d.ts +0 -23
- package/dist/presentation/display/list/ListContext.d.ts +0 -16
- package/dist/presentation/display/list/ListItem.vue.d.ts +0 -29
- package/dist/presentation/display/list/index.d.ts +0 -4
- package/dist/presentation/display/mark/Mark.vue.d.ts +0 -13
- package/dist/presentation/display/mark/index.d.ts +0 -1
- package/dist/presentation/display/marquee/Marquee.vue.d.ts +0 -39
- package/dist/presentation/display/marquee/index.d.ts +0 -1
- package/dist/presentation/display/messageList/DaySeparator.vue.d.ts +0 -17
- package/dist/presentation/display/messageList/MessageList.vue.d.ts +0 -39
- package/dist/presentation/display/messageList/index.d.ts +0 -2
- package/dist/presentation/display/metaInline/MetaInline.vue.d.ts +0 -21
- package/dist/presentation/display/metaInline/index.d.ts +0 -1
- package/dist/presentation/display/metricChip/MetricChip.vue.d.ts +0 -54
- package/dist/presentation/display/metricChip/index.d.ts +0 -1
- package/dist/presentation/display/nodeEditor/NodeEditor.vue.d.ts +0 -58
- package/dist/presentation/display/notificationDot/NotificationDot.vue.d.ts +0 -47
- package/dist/presentation/display/notificationDot/index.d.ts +0 -1
- package/dist/presentation/display/pdfViewer/PDFViewer.vue.d.ts +0 -40
- package/dist/presentation/display/quote/Quote.vue.d.ts +0 -13
- package/dist/presentation/display/quote/index.d.ts +0 -1
- package/dist/presentation/display/scrollReveal/ScrollReveal.vue.d.ts +0 -50
- package/dist/presentation/display/scrollReveal/index.d.ts +0 -1
- package/dist/presentation/display/sectionHeader/SectionHeader.vue.d.ts +0 -49
- package/dist/presentation/display/sectionHeader/index.d.ts +0 -1
- package/dist/presentation/display/separator/Separator.vue.d.ts +0 -14
- package/dist/presentation/display/separator/index.d.ts +0 -1
- package/dist/presentation/display/snippet/Snippet.vue.d.ts +0 -21
- package/dist/presentation/display/snippet/index.d.ts +0 -1
- package/dist/presentation/display/sortable/Sortable.vue.d.ts +0 -18
- package/dist/presentation/display/sortable/SortableContext.d.ts +0 -22
- package/dist/presentation/display/sortable/SortableHandle.vue.d.ts +0 -14
- package/dist/presentation/display/sortable/SortableItem.vue.d.ts +0 -16
- package/dist/presentation/display/sortable/index.d.ts +0 -4
- package/dist/presentation/display/stat/Stat.vue.d.ts +0 -48
- package/dist/presentation/display/stat/index.d.ts +0 -1
- package/dist/presentation/display/swipeActions/SwipeActions.vue.d.ts +0 -28
- package/dist/presentation/display/swipeActions/index.d.ts +0 -1
- package/dist/presentation/display/tabs/Tabs.vue.d.ts +0 -33
- package/dist/presentation/display/tabs/TabsContext.d.ts +0 -34
- package/dist/presentation/display/tabs/TabsList.vue.d.ts +0 -256
- package/dist/presentation/display/tabs/TabsPanel.vue.d.ts +0 -16
- package/dist/presentation/display/tabs/TabsTab.vue.d.ts +0 -20
- package/dist/presentation/display/tabs/index.d.ts +0 -5
- package/dist/presentation/display/tilt/Tilt.vue.d.ts +0 -31
- package/dist/presentation/display/tilt/index.d.ts +0 -1
- package/dist/presentation/display/tooltip/Tooltip.vue.d.ts +0 -53
- package/dist/presentation/display/tree/Tree.vue.d.ts +0 -275
- package/dist/presentation/display/tree/TreeContext.d.ts +0 -29
- package/dist/presentation/display/tree/TreeGroup.vue.d.ts +0 -28
- package/dist/presentation/display/tree/TreeGroupContent.vue.d.ts +0 -17
- package/dist/presentation/display/tree/TreeItem.vue.d.ts +0 -20
- package/dist/presentation/display/tree/TreeNodeRow.vue.d.ts +0 -27
- package/dist/presentation/display/tree/index.d.ts +0 -4
- package/dist/presentation/display/typewriter/Typewriter.vue.d.ts +0 -32
- package/dist/presentation/display/typewriter/index.d.ts +0 -1
- package/dist/presentation/feedback/feedbackToasts/FeedbackToasts.vue.d.ts +0 -18
- package/dist/presentation/feedback/feedbackToasts/index.d.ts +0 -1
- package/dist/presentation/feedback/liveCursor/LiveCursor.vue.d.ts +0 -33
- package/dist/presentation/feedback/liveCursor/index.d.ts +0 -1
- package/dist/presentation/feedback/notificationCenter/NotificationCenter.vue.d.ts +0 -30
- package/dist/presentation/feedback/notificationCenter/NotificationItem.vue.d.ts +0 -40
- package/dist/presentation/feedback/notificationCenter/index.d.ts +0 -2
- package/dist/presentation/feedback/onboardingChecklist/OnboardingChecklist.vue.d.ts +0 -56
- package/dist/presentation/feedback/onboardingChecklist/OnboardingChecklistTask.vue.d.ts +0 -27
- package/dist/presentation/feedback/onboardingChecklist/index.d.ts +0 -3
- package/dist/presentation/feedback/progressCircle/ProgressCircle.vue.d.ts +0 -21
- package/dist/presentation/feedback/progressCircle/index.d.ts +0 -1
- package/dist/presentation/feedback/progressSteps/ProgressSteps.vue.d.ts +0 -16
- package/dist/presentation/feedback/progressSteps/index.d.ts +0 -1
- package/dist/presentation/feedback/skeleton/Skeleton.variants.d.ts +0 -57
- package/dist/presentation/feedback/skeleton/Skeleton.vue.d.ts +0 -17
- package/dist/presentation/feedback/skeleton/index.d.ts +0 -2
- package/dist/presentation/feedback/toaster/Toaster.vue.d.ts +0 -84
- package/dist/presentation/feedback/toaster/index.d.ts +0 -1
- package/dist/presentation/feedback/tour/Tour.vue.d.ts +0 -46
- package/dist/presentation/feedback/tour/index.d.ts +0 -1
- package/dist/presentation/forms/addressForm/AddressForm.vue.d.ts +0 -54
- package/dist/presentation/forms/addressForm/index.d.ts +0 -1
- package/dist/presentation/forms/calendar/Calendar.vue.d.ts +0 -33
- package/dist/presentation/forms/calendar/index.d.ts +0 -1
- package/dist/presentation/forms/characterCount/CharacterCount.vue.d.ts +0 -15
- package/dist/presentation/forms/characterCount/index.d.ts +0 -1
- package/dist/presentation/forms/chatComposer/ChatComposer.vue.d.ts +0 -74
- package/dist/presentation/forms/chatComposer/index.d.ts +0 -1
- package/dist/presentation/forms/checkbox/Checkbox.variants.d.ts +0 -133
- package/dist/presentation/forms/checkbox/Checkbox.vue.d.ts +0 -48
- package/dist/presentation/forms/checkbox/index.d.ts +0 -2
- package/dist/presentation/forms/colorField/ColorField.vue.d.ts +0 -44
- package/dist/presentation/forms/colorField/index.d.ts +0 -1
- package/dist/presentation/forms/colorSlider/ColorSlider.vue.d.ts +0 -47
- package/dist/presentation/forms/colorSlider/index.d.ts +0 -1
- package/dist/presentation/forms/colorSwatch/ColorSwatch.variants.d.ts +0 -186
- package/dist/presentation/forms/colorSwatch/ColorSwatch.vue.d.ts +0 -33
- package/dist/presentation/forms/colorSwatch/index.d.ts +0 -2
- package/dist/presentation/forms/colorWheel/ColorWheel.vue.d.ts +0 -34
- package/dist/presentation/forms/colorWheel/index.d.ts +0 -1
- package/dist/presentation/forms/combobox/Combobox.vue.d.ts +0 -60
- package/dist/presentation/forms/combobox/ComboboxContent.vue.d.ts +0 -39
- package/dist/presentation/forms/combobox/ComboboxContext.d.ts +0 -53
- package/dist/presentation/forms/combobox/ComboboxEmpty.vue.d.ts +0 -10
- package/dist/presentation/forms/combobox/ComboboxGroup.vue.d.ts +0 -19
- package/dist/presentation/forms/combobox/ComboboxInput.vue.d.ts +0 -12
- package/dist/presentation/forms/combobox/ComboboxItem.vue.d.ts +0 -28
- package/dist/presentation/forms/combobox/ComboboxSeparator.vue.d.ts +0 -3
- package/dist/presentation/forms/combobox/index.d.ts +0 -8
- package/dist/presentation/forms/dateField/DateField.vue.d.ts +0 -54
- package/dist/presentation/forms/dateField/index.d.ts +0 -1
- package/dist/presentation/forms/dateTimeField/DateTimeField.vue.d.ts +0 -59
- package/dist/presentation/forms/dateTimeField/index.d.ts +0 -1
- package/dist/presentation/forms/editable/Editable.vue.d.ts +0 -60
- package/dist/presentation/forms/editable/EditableCancel.vue.d.ts +0 -12
- package/dist/presentation/forms/editable/EditableContext.d.ts +0 -37
- package/dist/presentation/forms/editable/EditableInput.vue.d.ts +0 -12
- package/dist/presentation/forms/editable/EditablePreview.vue.d.ts +0 -7
- package/dist/presentation/forms/editable/EditableSubmit.vue.d.ts +0 -14
- package/dist/presentation/forms/editable/index.d.ts +0 -7
- package/dist/presentation/forms/emojiPicker/useEmojiPicker.d.ts +0 -45
- package/dist/presentation/forms/emojiSizeControl/EmojiSizeControl.variants.d.ts +0 -23
- package/dist/presentation/forms/emojiSizeControl/EmojiSizeControl.vue.d.ts +0 -32
- package/dist/presentation/forms/emojiSizeControl/index.d.ts +0 -2
- package/dist/presentation/forms/fieldset/Fieldset.vue.d.ts +0 -22
- package/dist/presentation/forms/fieldset/index.d.ts +0 -1
- package/dist/presentation/forms/fileUpload/FileUpload.vue.d.ts +0 -60
- package/dist/presentation/forms/fileUpload/index.d.ts +0 -1
- package/dist/presentation/forms/formErrorMessage/FormErrorMessage.vue.d.ts +0 -24
- package/dist/presentation/forms/formErrorMessage/index.d.ts +0 -1
- package/dist/presentation/forms/formHelperText/FormHelperText.vue.d.ts +0 -19
- package/dist/presentation/forms/formHelperText/index.d.ts +0 -1
- package/dist/presentation/forms/inputAddon/InputAddon.vue.d.ts +0 -20
- package/dist/presentation/forms/inputAddon/index.d.ts +0 -1
- package/dist/presentation/forms/inputGroup/InputGroup.vue.d.ts +0 -19
- package/dist/presentation/forms/jsonEditor/JSONEditor.vue.d.ts +0 -49
- package/dist/presentation/forms/jsonEditor/JSONEditorContext.d.ts +0 -28
- package/dist/presentation/forms/jsonEditor/JSONEditorHelpers.d.ts +0 -6
- package/dist/presentation/forms/jsonEditor/JSONEditorTextView.vue.d.ts +0 -14
- package/dist/presentation/forms/jsonEditor/JSONEditorTreeNode.vue.d.ts +0 -15
- package/dist/presentation/forms/jsonEditor/JSONEditorTreeView.vue.d.ts +0 -8
- package/dist/presentation/forms/knob/Knob.vue.d.ts +0 -75
- package/dist/presentation/forms/knob/index.d.ts +0 -1
- package/dist/presentation/forms/label/Label.vue.d.ts +0 -34
- package/dist/presentation/forms/label/index.d.ts +0 -1
- package/dist/presentation/forms/labeledInput/LabeledInput.vue.d.ts +0 -23
- package/dist/presentation/forms/labeledInput/index.d.ts +0 -2
- package/dist/presentation/forms/legend/Legend.vue.d.ts +0 -21
- package/dist/presentation/forms/legend/index.d.ts +0 -1
- package/dist/presentation/forms/listbox/Listbox.variants.d.ts +0 -71
- package/dist/presentation/forms/listbox/Listbox.vue.d.ts +0 -70
- package/dist/presentation/forms/listbox/ListboxContext.d.ts +0 -47
- package/dist/presentation/forms/listbox/ListboxEmpty.vue.d.ts +0 -10
- package/dist/presentation/forms/listbox/ListboxGroup.vue.d.ts +0 -20
- package/dist/presentation/forms/listbox/ListboxItem.vue.d.ts +0 -24
- package/dist/presentation/forms/listbox/ListboxSeparator.vue.d.ts +0 -3
- package/dist/presentation/forms/listbox/index.d.ts +0 -7
- package/dist/presentation/forms/multiSelect/MultiSelect.vue.d.ts +0 -60
- package/dist/presentation/forms/multiSelect/MultiSelectContent.vue.d.ts +0 -31
- package/dist/presentation/forms/multiSelect/MultiSelectContext.d.ts +0 -47
- package/dist/presentation/forms/multiSelect/MultiSelectItem.vue.d.ts +0 -25
- package/dist/presentation/forms/multiSelect/MultiSelectTags.vue.d.ts +0 -24
- package/dist/presentation/forms/multiSelect/MultiSelectTrigger.vue.d.ts +0 -25
- package/dist/presentation/forms/multiSelect/index.d.ts +0 -6
- package/dist/presentation/forms/passwordStrength/PasswordStrength.vue.d.ts +0 -16
- package/dist/presentation/forms/passwordStrength/index.d.ts +0 -1
- package/dist/presentation/forms/radio/Radio.vue.d.ts +0 -35
- package/dist/presentation/forms/radio/index.d.ts +0 -1
- package/dist/presentation/forms/rangeCalendar/RangeCalendar.vue.d.ts +0 -37
- package/dist/presentation/forms/rangeCalendar/index.d.ts +0 -1
- package/dist/presentation/forms/select/Select.variants.d.ts +0 -263
- package/dist/presentation/forms/select/Select.vue.d.ts +0 -69
- package/dist/presentation/forms/select/SelectContent.vue.d.ts +0 -44
- package/dist/presentation/forms/select/SelectContext.d.ts +0 -76
- package/dist/presentation/forms/select/SelectItem.vue.d.ts +0 -33
- package/dist/presentation/forms/select/SelectTrigger.vue.d.ts +0 -21
- package/dist/presentation/forms/select/SelectValue.vue.d.ts +0 -22
- package/dist/presentation/forms/select/index.d.ts +0 -7
- package/dist/presentation/forms/slider/Slider.vue.d.ts +0 -38
- package/dist/presentation/forms/slider/index.d.ts +0 -1
- package/dist/presentation/forms/stepper/Stepper.vue.d.ts +0 -34
- package/dist/presentation/forms/stepper/StepperContext.d.ts +0 -44
- package/dist/presentation/forms/stepper/StepperList.vue.d.ts +0 -256
- package/dist/presentation/forms/stepper/StepperPanel.vue.d.ts +0 -16
- package/dist/presentation/forms/stepper/StepperStep.vue.d.ts +0 -23
- package/dist/presentation/forms/stepper/index.d.ts +0 -5
- package/dist/presentation/forms/switch/Switch.vue.d.ts +0 -35
- package/dist/presentation/forms/switch/index.d.ts +0 -1
- package/dist/presentation/forms/timeField/TimeField.vue.d.ts +0 -53
- package/dist/presentation/forms/timeField/index.d.ts +0 -1
- package/dist/presentation/forms/wizard/Wizard.vue.d.ts +0 -38
- package/dist/presentation/forms/wizard/WizardContext.d.ts +0 -38
- package/dist/presentation/forms/wizard/WizardFooter.vue.d.ts +0 -29
- package/dist/presentation/forms/wizard/WizardStep.vue.d.ts +0 -29
- package/dist/presentation/forms/wizard/WizardSteps.vue.d.ts +0 -7
- package/dist/presentation/forms/wizard/index.d.ts +0 -6
- package/dist/presentation/layout/aspectRatio/AspectRatio.vue.d.ts +0 -18
- package/dist/presentation/layout/aspectRatio/index.d.ts +0 -1
- package/dist/presentation/layout/box/Box.vue.d.ts +0 -19
- package/dist/presentation/layout/box/index.d.ts +0 -1
- package/dist/presentation/layout/center/Center.vue.d.ts +0 -13
- package/dist/presentation/layout/center/index.d.ts +0 -1
- package/dist/presentation/layout/cluster/Cluster.vue.d.ts +0 -22
- package/dist/presentation/layout/cluster/index.d.ts +0 -1
- package/dist/presentation/layout/container/Container.variants.d.ts +0 -84
- package/dist/presentation/layout/container/Container.vue.d.ts +0 -21
- package/dist/presentation/layout/container/index.d.ts +0 -2
- package/dist/presentation/layout/controlGroup/ControlGroup.variants.d.ts +0 -136
- package/dist/presentation/layout/controlGroup/ControlGroup.vue.d.ts +0 -35
- package/dist/presentation/layout/controlGroup/index.d.ts +0 -2
- package/dist/presentation/layout/divider/Divider.variants.d.ts +0 -47
- package/dist/presentation/layout/divider/Divider.vue.d.ts +0 -38
- package/dist/presentation/layout/divider/index.d.ts +0 -2
- package/dist/presentation/layout/flex/Flex.vue.d.ts +0 -18
- package/dist/presentation/layout/flex/index.d.ts +0 -1
- package/dist/presentation/layout/frame/Frame.vue.d.ts +0 -38
- package/dist/presentation/layout/frame/index.d.ts +0 -1
- package/dist/presentation/layout/hStack/HStack.vue.d.ts +0 -14
- package/dist/presentation/layout/hStack/index.d.ts +0 -1
- package/dist/presentation/layout/inline/Inline.vue.d.ts +0 -42
- package/dist/presentation/layout/inline/index.d.ts +0 -1
- package/dist/presentation/layout/overlay/Overlay.variants.d.ts +0 -231
- package/dist/presentation/layout/overlay/Overlay.vue.d.ts +0 -64
- package/dist/presentation/layout/overlay/index.d.ts +0 -2
- package/dist/presentation/layout/pullToRefresh/PullToRefresh.vue.d.ts +0 -22
- package/dist/presentation/layout/pullToRefresh/index.d.ts +0 -1
- package/dist/presentation/layout/resizablePanels/ResizablePanel.vue.d.ts +0 -21
- package/dist/presentation/layout/resizablePanels/ResizablePanels.vue.d.ts +0 -59
- package/dist/presentation/layout/resizablePanels/ResizableSeparator.vue.d.ts +0 -10
- package/dist/presentation/layout/resizablePanels/index.d.ts +0 -4
- package/dist/presentation/layout/spacer/Spacer.vue.d.ts +0 -15
- package/dist/presentation/layout/spacer/index.d.ts +0 -1
- package/dist/presentation/layout/stack/Stack.variants.d.ts +0 -330
- package/dist/presentation/layout/stack/Stack.vue.d.ts +0 -37
- package/dist/presentation/layout/stack/index.d.ts +0 -2
- package/dist/presentation/layout/surface/Surface.vue.d.ts +0 -39
- package/dist/presentation/layout/surface/index.d.ts +0 -1
- package/dist/presentation/layout/twoColumn/TwoColumn.vue.d.ts +0 -28
- package/dist/presentation/layout/twoColumn/index.d.ts +0 -1
- package/dist/presentation/layout/vStack/VStack.vue.d.ts +0 -14
- package/dist/presentation/layout/vStack/index.d.ts +0 -1
- package/dist/presentation/nav/NavHelpers.d.ts +0 -11
- package/dist/presentation/nav/commandPalette/CommandPalette.vue.d.ts +0 -53
- package/dist/presentation/nav/commandPalette/CommandPaletteContent.vue.d.ts +0 -17
- package/dist/presentation/nav/commandPalette/CommandPaletteContext.d.ts +0 -42
- package/dist/presentation/nav/commandPalette/CommandPaletteEmpty.vue.d.ts +0 -19
- package/dist/presentation/nav/commandPalette/CommandPaletteGroup.vue.d.ts +0 -19
- package/dist/presentation/nav/commandPalette/CommandPaletteInput.vue.d.ts +0 -14
- package/dist/presentation/nav/commandPalette/CommandPaletteItem.vue.d.ts +0 -36
- package/dist/presentation/nav/commandPalette/CommandPaletteList.vue.d.ts +0 -19
- package/dist/presentation/nav/commandPalette/CommandPaletteSeparator.vue.d.ts +0 -12
- package/dist/presentation/nav/commandPalette/index.d.ts +0 -9
- package/dist/presentation/overlays/OverlayHelpers.d.ts +0 -11
- package/dist/presentation/overlays/backdrop/Backdrop.vue.d.ts +0 -40
- package/dist/presentation/overlays/backdrop/index.d.ts +0 -1
- package/dist/query/CreateQueryClient.d.ts +0 -19
- package/dist/query/Devtools.vue.d.ts +0 -10
- package/dist/query/Endpoints.d.ts +0 -14
- package/dist/query/PageHelpers.d.ts +0 -10
- package/dist/query/Persistence.d.ts +0 -40
- package/dist/query/QueryProgressBridge.d.ts +0 -16
- package/dist/query/QueryProvider.vue.d.ts +0 -17
- package/dist/query/QueryTestUtils.d.ts +0 -54
- package/dist/query/ToApiError.d.ts +0 -7
- package/dist/query/UseAppInfiniteQuery.d.ts +0 -45
- package/dist/query/UseAppLazyQuery.d.ts +0 -40
- package/dist/query/UseAppMutation.d.ts +0 -32
- package/dist/query/UseAppPaginatedQuery.d.ts +0 -39
- package/dist/query/UseAppQueries.d.ts +0 -43
- package/dist/query/UseAppQuery.d.ts +0 -38
- package/dist/query/UseAppSuspenseQuery.d.ts +0 -42
- package/dist/query/UseOptimisticMutation.d.ts +0 -25
- package/dist/query/UsePrefetchQuery.d.ts +0 -26
- package/dist/query/UseQueryCache.d.ts +0 -31
- package/dist/query/testing.d.ts +0 -1
- package/dist/query/testing.js +0 -48
- package/dist/query/testing.js.map +0 -1
- package/dist/router/AppErrorBoundary.vue.d.ts +0 -26
- package/dist/router/AppNavLink.vue.d.ts +0 -40
- package/dist/router/CreateAppRouter.d.ts +0 -65
- package/dist/router/DocumentMeta.d.ts +0 -9
- package/dist/router/Guards.d.ts +0 -29
- package/dist/router/LazyRoute.d.ts +0 -16
- package/dist/router/NavigationProgress.vue.d.ts +0 -19
- package/dist/router/NotFound.vue.d.ts +0 -10
- package/dist/router/RouteAnnouncer.vue.d.ts +0 -10
- package/dist/router/RouteConfig.d.ts +0 -82
- package/dist/router/RouteHandles.d.ts +0 -24
- package/dist/router/RoutePersistence.d.ts +0 -21
- package/dist/router/UseBreadcrumbs.d.ts +0 -17
- package/dist/router/UsePrefetch.d.ts +0 -19
- /package/dist/{forms-engine → formsEngine}/StandardSchema.d.ts +0 -0
- /package/dist/{forms-engine → formsEngine/adapters}/house/index.d.ts +0 -0
- /package/dist/{forms-engine → formsEngine/adapters}/tanstack/index.d.ts +0 -0
- /package/dist/foundation/{utils/TransitionExtensions → animation}/TransitionExtensions.d.ts +0 -0
- /package/dist/foundation/{hooks/useDebounceHandler/useDebounceHandler.d.ts → async/UseDebounceHandler.d.ts} +0 -0
- /package/dist/foundation/{sync → channels}/CreateSyncChannel.d.ts +0 -0
- /package/dist/foundation/{sync → channels}/MemorySyncHub.d.ts +0 -0
- /package/dist/foundation/{utils/Equality → collections}/Equality.d.ts +0 -0
- /package/dist/foundation/device/{DisplayMode.d.ts → enums/DisplayMode.d.ts} +0 -0
- /package/dist/foundation/device/{PointerType.d.ts → enums/PointerType.d.ts} +0 -0
- /package/dist/foundation/device/{UseOnlineStatus.d.ts → hooks/UseOnlineStatus.d.ts} +0 -0
- /package/dist/foundation/{hooks/useReducedMotion/useReducedMotion.d.ts → device/hooks/UseReducedMotion.d.ts} +0 -0
- /package/dist/foundation/{utils/composeEventHandlers/composeEventHandlers.d.ts → dom/ComposeEventHandlers.d.ts} +0 -0
- /package/dist/foundation/{utils/dataAttr/dataAttr.d.ts → dom/DataAttr.d.ts} +0 -0
- /package/dist/foundation/{utils/PressExtensions → dom}/PressExtensions.d.ts +0 -0
- /package/dist/foundation/{utils/ElementTag → dom/enums}/ElementTag.d.ts +0 -0
- /package/dist/foundation/{utils/HtmlExtensions/HtmlExtensions.d.ts → dom/enums/HtmlValues.d.ts} +0 -0
- /package/dist/foundation/{utils/KeyboardExtensions/KeyboardExtensions.d.ts → dom/enums/Key.d.ts} +0 -0
- /package/dist/foundation/{hooks/useEventListener/useEventListener.d.ts → dom/hooks/UseEventListener.d.ts} +0 -0
- /package/dist/foundation/{hooks/useFocusTrap/useFocusTrap.d.ts → dom/hooks/UseFocusTrap.d.ts} +0 -0
- /package/dist/foundation/{hooks/useOutsideClick/useOutsideClick.d.ts → dom/hooks/UseOutsideClick.d.ts} +0 -0
- /package/dist/foundation/{hooks/useScrollLock/useScrollLock.d.ts → dom/hooks/UseScrollLock.d.ts} +0 -0
- /package/dist/foundation/{format → formatters}/Bytes.d.ts +0 -0
- /package/dist/foundation/{format → formatters}/Count.d.ts +0 -0
- /package/dist/foundation/{format → formatters}/Duration.d.ts +0 -0
- /package/dist/foundation/{format → formatters}/index.d.ts +0 -0
- /package/dist/foundation/geolocation/{Coordinates.d.ts → models/Coordinates.d.ts} +0 -0
- /package/dist/foundation/gestures/{GestureAxis.d.ts → enums/GestureAxis.d.ts} +0 -0
- /package/dist/foundation/gestures/{SwipeDirection.d.ts → enums/SwipeDirection.d.ts} +0 -0
- /package/dist/foundation/{undo → history}/SnapshotHistory.d.ts +0 -0
- /package/dist/foundation/{undo → history}/UndoHistory.d.ts +0 -0
- /package/dist/foundation/http/{ApiResponse.d.ts → models/ApiResponse.d.ts} +0 -0
- /package/dist/foundation/http/{DateBrands.d.ts → models/DateBrands.d.ts} +0 -0
- /package/dist/foundation/http/{ProblemDetails.d.ts → models/ProblemDetails.d.ts} +0 -0
- /package/dist/foundation/{utils/Compare → i18n}/Compare.d.ts +0 -0
- /package/dist/foundation/{hooks/useId/useId.d.ts → identifiers/UseId.d.ts} +0 -0
- /package/dist/foundation/{hooks/useResizeObserver/useResizeObserver.d.ts → observers/hooks/UseResizeObserver.d.ts} +0 -0
- /package/dist/foundation/observers/{UseVisibility.d.ts → hooks/UseVisibility.d.ts} +0 -0
- /package/dist/foundation/{utils/OptionalExtensions → optionals}/OptionalExtensions.d.ts +0 -0
- /package/dist/foundation/resilience/{BackoffStrategy.d.ts → enums/BackoffStrategy.d.ts} +0 -0
- /package/dist/foundation/resilience/{JitterStrategy.d.ts → enums/JitterStrategy.d.ts} +0 -0
- /package/dist/foundation/selection/{Field.d.ts → models/Field.d.ts} +0 -0
- /package/dist/foundation/{hooks/useEscape/useEscape.d.ts → shortcuts/hooks/UseEscape.d.ts} +0 -0
- /package/dist/foundation/{hooks/useDisclosure/useDisclosure.d.ts → state/hooks/UseDisclosure.d.ts} +0 -0
- /package/dist/foundation/storage/{zustand → adapters/zustand}/index.js +0 -0
- /package/dist/foundation/{utils/cn/cn.d.ts → styles/Cn.d.ts} +0 -0
- /package/dist/foundation/{utils/tv/tv.d.ts → styles/Tv.d.ts} +0 -0
- /package/dist/foundation/{utils/Align → styles/enums}/Align.d.ts +0 -0
- /package/dist/foundation/{utils/CornerPosition → styles/enums}/CornerPosition.d.ts +0 -0
- /package/dist/foundation/{utils/Orientation → styles/enums}/Orientation.d.ts +0 -0
- /package/dist/foundation/{utils/OverlayPosition → styles/enums}/OverlayPosition.d.ts +0 -0
- /package/dist/foundation/{utils/ProgressTone → styles/enums}/ProgressTone.d.ts +0 -0
- /package/dist/foundation/{utils/Severity → styles/enums}/Severity.d.ts +0 -0
- /package/dist/foundation/{utils/Side → styles/enums}/Side.d.ts +0 -0
- /package/dist/foundation/{utils/StatusTone → styles/enums}/StatusTone.d.ts +0 -0
- /package/dist/foundation/{utils/StyleTokens → styles/enums}/StyleTokens.d.ts +0 -0
- /package/dist/foundation/themes/{css.d.ts → Css.d.ts} +0 -0
- /package/dist/foundation/themes/{generate.d.ts → Generate.d.ts} +0 -0
- /package/dist/foundation/{validation → validators}/Formats.d.ts +0 -0
- /package/dist/foundation/{validation → validators}/Primitives.d.ts +0 -0
- /package/dist/foundation/{validation → validators}/StandardSchema.d.ts +0 -0
- /package/dist/presentation/{display → forms}/nodeEditor/index.d.ts +0 -0
- /package/dist/presentation/{forms → layout}/inputGroup/index.d.ts +0 -0
- /package/dist/presentation/{display → overlays}/tooltip/index.d.ts +0 -0
- /package/dist/query/{QueryPlugin.d.ts → adapters/tanstack/QueryPlugin.d.ts} +0 -0
- /package/dist/router/{DocumentTitle.d.ts → adapters/vueRouter/DocumentTitle.d.ts} +0 -0
- /package/dist/router/{PageViewTracker.d.ts → adapters/vueRouter/PageViewTracker.d.ts} +0 -0
- /package/dist/router/{UseNavigationBlocker.d.ts → adapters/vueRouter/hooks/UseNavigationBlocker.d.ts} +0 -0
- /package/dist/router/{UseRouteNavigating.d.ts → adapters/vueRouter/hooks/UseRouteNavigating.d.ts} +0 -0
- /package/dist/router/{UseTypedSearchParams.d.ts → adapters/vueRouter/hooks/UseTypedSearchParams.d.ts} +0 -0
- /package/dist/router/{UseNavigationProgress.d.ts → hooks/UseNavigationProgress.d.ts} +0 -0
package/dist/chunks/OnboardingChecklistCardTask.vue_vue_type_script_setup_true_lang-vqTtyR9L.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingChecklistCardTask.vue_vue_type_script_setup_true_lang-vqTtyR9L.js","sources":["../../src/presentation/display/heading/Heading.variants.ts","../../src/presentation/display/heading/Heading.vue","../../src/presentation/display/text/Text.variants.ts","../../src/presentation/display/text/Text.vue","../../src/presentation/display/codeText/CodeText.variants.ts","../../src/presentation/display/codeText/CodeText.vue","../../src/presentation/display/imagePreview/ImagePreview.vue","../../src/presentation/display/avatar/Avatar.variants.ts","../../src/presentation/display/avatar/Avatar.vue","../../src/presentation/display/badge/Badge.variants.ts","../../src/presentation/display/badge/Badge.vue","../../src/presentation/display/markText/MarkText.vue","../../src/presentation/display/quoteText/QuoteText.vue","../../src/presentation/display/card/Card.vue","../../src/presentation/display/card/CardHeader.vue","../../src/presentation/display/card/CardTitle.vue","../../src/presentation/display/card/CardDescription.vue","../../src/presentation/display/card/CardBody.vue","../../src/presentation/display/card/CardFooter.vue","../../src/presentation/display/avatarGroup/AvatarGroup.vue","../../src/presentation/display/emptyState/EmptyState.vue","../../src/presentation/display/statCard/StatCard.vue","../../src/presentation/display/snippetText/SnippetText.vue","../../src/presentation/display/notificationIndicator/NotificationIndicator.vue","../../src/presentation/display/countBadge/CountBadge.vue","../../src/presentation/display/status/Status.vue","../../src/presentation/display/keyboardShortcutText/KeyboardShortcutText.vue","../../src/presentation/display/descriptionGroup/DescriptionGroup.vue","../../src/presentation/display/infoRow/InfoRow.vue","../../src/presentation/display/metricBadge/MetricBadge.vue","../../src/presentation/display/eyebrowText/EyebrowText.vue","../../src/presentation/display/metaInlineText/MetaInlineText.vue","../../src/presentation/display/badgeOverlay/BadgeOverlay.vue","../../src/presentation/display/sectionHeading/SectionHeading.vue","../../src/presentation/display/highlightText/HighlightText.vue","../../src/presentation/display/collapsibleGroup/CollapsibleGroupContext.ts","../../src/presentation/display/collapsibleGroup/CollapsibleGroup.vue","../../src/presentation/display/collapsibleGroup/CollapsibleGroupTrigger.vue","../../src/presentation/display/collapsibleGroup/CollapsibleGroupContentInner.vue","../../src/presentation/display/collapsibleGroup/CollapsibleGroupContent.vue","../../src/presentation/display/accordionGroup/AccordionGroupContext.ts","../../src/presentation/display/accordionGroup/AccordionGroup.vue","../../src/presentation/display/accordionGroup/AccordionGroupItem.vue","../../src/presentation/display/accordionGroup/AccordionGroupTrigger.vue","../../src/presentation/display/accordionGroup/AccordionGroupContent.vue","../../src/presentation/display/tabsGroup/TabsGroupContext.ts","../../src/presentation/display/tabsGroup/TabsGroup.vue","../../src/presentation/display/tabsGroup/TabsGroupList.vue","../../src/presentation/display/tabsGroup/TabsGroupTab.vue","../../src/presentation/display/tabsGroup/TabsGroupPanel.vue","../../src/presentation/display/listGroup/ListGroup.variants.ts","../../src/presentation/display/listGroup/ListGroupContext.ts","../../src/presentation/display/listGroup/ListGroup.vue","../../src/presentation/display/listGroup/ListGroupItem.vue","../../src/presentation/display/timeline/TimelineContext.ts","../../src/presentation/display/timeline/Timeline.vue","../../src/presentation/display/timeline/TimelineItem.vue","../../src/presentation/display/timeline/TimelineTitle.vue","../../src/presentation/display/timeline/TimelineDescription.vue","../../src/presentation/display/treeViewer/TreeViewerContext.ts","../../src/presentation/display/treeViewer/TreeViewer.vue","../../src/presentation/display/treeViewer/TreeViewerGroupContent.vue","../../src/presentation/display/treeViewer/TreeViewerNodeRow.vue","../../src/presentation/display/treeViewer/TreeViewerGroup.vue","../../src/presentation/display/treeViewer/TreeViewerItem.vue","../../src/presentation/display/table/TableContext.ts","../../src/presentation/display/table/Table.vue","../../src/presentation/display/table/TableHead.vue","../../src/presentation/display/table/TableBody.vue","../../src/presentation/display/table/TableFooter.vue","../../src/presentation/display/table/TableRow.vue","../../src/presentation/display/table/TableHeaderCell.vue","../../src/presentation/display/table/TableCell.vue","../../src/presentation/display/table/TableCaption.vue","../../src/presentation/display/dataTable/DataTable.vue","../../src/presentation/display/carousel/CarouselContext.ts","../../src/presentation/display/carousel/Carousel.vue","../../src/presentation/display/carousel/CarouselViewport.vue","../../src/presentation/display/carousel/CarouselSlides.vue","../../src/presentation/display/carousel/CarouselSlide.vue","../../src/presentation/display/carousel/CarouselPrev.vue","../../src/presentation/display/carousel/CarouselNext.vue","../../src/presentation/display/carousel/CarouselDot.vue","../../src/presentation/display/carousel/CarouselDots.vue","../../src/presentation/display/diffViewer/DiffViewer.vue","../../src/presentation/display/sparkline/Sparkline.vue","../../src/presentation/display/radiusGlyph/RadiusGlyph.vue","../../src/presentation/display/frameGlyph/FrameGlyph.vue","../../src/presentation/display/moduleGlyphs/ModuleGlyphs.ts","../../src/presentation/display/moduleGlyphs/DotsGlyph.vue","../../src/presentation/display/moduleGlyphs/VerticalBarsGlyph.vue","../../src/presentation/display/moduleGlyphs/HorizontalBarsGlyph.vue","../../src/presentation/display/moduleGlyphs/CellsGlyph.vue","../../src/presentation/display/heatmapCalendarGrid/HeatmapCalendarGrid.vue","../../src/presentation/display/audioWaveformPreview/AudioWaveformPreview.vue","../../src/presentation/display/audioPlayer/AudioPlayer.vue","../../src/presentation/display/videoPlayer/VideoPlayer.vue","../../src/presentation/display/pdfViewer/PdfViewer.vue","../../src/presentation/display/scheduleView/ScheduleView.vue","../../src/presentation/display/ganttTimeline/GanttTimeline.vue","../../src/presentation/display/eventCalendarViewer/EventCalendarViewerTypes.ts","../../src/presentation/display/eventCalendarViewer/MonthView.vue","../../src/presentation/display/eventCalendarViewer/TimeGridView.vue","../../src/presentation/display/eventCalendarViewer/AgendaView.vue","../../src/presentation/display/eventCalendarViewer/EventCalendarViewer.vue","../../src/presentation/display/gradientText/GradientText.vue","../../src/presentation/display/countUpText/CountUpText.vue","../../src/presentation/display/animatedNumberText/AnimatedNumberText.vue","../../src/presentation/display/scrollRevealGroup/ScrollRevealGroup.vue","../../src/presentation/display/marqueeGroup/MarqueeGroup.vue","../../src/presentation/display/typewriterText/TypewriterText.vue","../../src/presentation/display/confettiOverlay/ConfettiOverlay.vue","../../src/presentation/display/annotationBadge/AnnotationBadge.vue","../../src/presentation/display/reactionBar/ReactionBar.vue","../../src/presentation/display/chatBubbleCard/ChatBubbleCard.vue","../../src/presentation/display/messageGroup/MessageGroup.vue","../../src/presentation/display/messageGroup/DaySeparator.vue","../../src/presentation/display/threadView/ThreadView.vue","../../src/presentation/display/commentThreadGroup/CommentThreadGroup.vue","../../src/presentation/display/commentThreadGroup/Comment.vue","../../src/presentation/display/activityTimeline/ActivityTimeline.vue","../../src/presentation/display/activityTimeline/ActivityItem.vue","../../src/presentation/display/featureCard/FeatureCard.vue","../../src/presentation/display/stepCard/StepCard.vue","../../src/presentation/display/pricingCard/PricingCard.vue","../../src/presentation/display/stepperGroup/StepperGroupContext.ts","../../src/presentation/display/stepperGroup/StepperGroup.vue","../../src/presentation/display/stepperGroup/StepperGroupList.vue","../../src/presentation/display/stepperGroup/StepperGroupStep.vue","../../src/presentation/display/stepperGroup/StepperGroupPanel.vue","../../src/presentation/display/notificationCenterGroup/NotificationCenterGroup.vue","../../src/presentation/display/notificationCenterGroup/NotificationItem.vue","../../src/presentation/display/onboardingChecklistCard/OnboardingChecklistCard.vue","../../src/presentation/display/onboardingChecklistCard/OnboardingChecklistCardTask.vue"],"sourcesContent":["import { tv, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the Heading visual size step (independent of semantic level). */\nexport const HeadingSize = {\n /** Refers to the extra-small step. */\n Xs: 'xs',\n /** Refers to the small step. */\n Sm: 'sm',\n /** Refers to the medium step. */\n Md: 'md',\n /** Refers to the large step. */\n Lg: 'lg',\n /** Refers to the extra-large step. */\n Xl: 'xl',\n /** Refers to the 2x-large step. */\n Xxl: '2xl',\n /** Refers to the 3x-large step. */\n Xxxl: '3xl',\n /** Refers to the 4x-large step. */\n Xxxxl: '4xl',\n} as const;\n\nexport type HeadingSize = (typeof HeadingSize)[keyof typeof HeadingSize];\n\n/** Defines the Heading font weight. */\nexport const HeadingWeight = {\n /** Refers to normal weight. */\n Normal: 'normal',\n /** Refers to medium weight. */\n Medium: 'medium',\n /** Refers to semibold weight. */\n Semibold: 'semibold',\n /** Refers to bold weight. */\n Bold: 'bold',\n} as const;\n\nexport type HeadingWeight = (typeof HeadingWeight)[keyof typeof HeadingWeight];\n\n/** Defines the Heading text alignment. */\nexport const HeadingAlign = {\n /** Refers to left alignment. */\n Left: 'left',\n /** Refers to centered alignment. */\n Center: 'center',\n /** Refers to right alignment. */\n Right: 'right',\n} as const;\n\nexport type HeadingAlign = (typeof HeadingAlign)[keyof typeof HeadingAlign];\n\nexport const headingVariants = tv({\n base: 'font-semibold tracking-tight text-foreground',\n variants: {\n size: {\n xs: 'text-sm',\n sm: 'text-base',\n md: 'text-lg',\n lg: 'text-xl',\n xl: 'text-2xl',\n '2xl': 'text-3xl',\n '3xl': 'text-4xl',\n '4xl': 'text-5xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n size: 'lg',\n weight: 'semibold',\n },\n});\n\nexport type HeadingVariants = VariantProps<typeof headingVariants>;\n\n/* Compile-time lock: enum values ≡ tv size/weight/align value-sets (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertHeadingSize: AssertExact<HeadingSize, NonNullable<VariantProps<typeof headingVariants>['size']>> = true;\nconst _assertHeadingWeight: AssertExact<\n HeadingWeight,\n NonNullable<VariantProps<typeof headingVariants>['weight']>\n> = true;\nconst _assertHeadingAlign: AssertExact<HeadingAlign, NonNullable<VariantProps<typeof headingVariants>['align']>> = true;\nvoid _assertHeadingSize;\nvoid _assertHeadingWeight;\nvoid _assertHeadingAlign;\n","<script lang=\"ts\">\nimport type { HeadingAlign, HeadingSize, HeadingWeight } from './Heading.variants';\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps {\n /** The semantic heading level (1–6). Default 2. Visual size is independent — set via `size`. */\n readonly level?: HeadingLevel;\n /** The visual size step. */\n readonly size?: HeadingSize;\n /** The font weight. */\n readonly weight?: HeadingWeight;\n /** The text alignment. */\n readonly align?: HeadingAlign;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { headingVariants } from './Heading.variants';\n\n/**\n * Renders a semantic heading whose tag (`h1`-`h6`) and visual size are set independently.\n *\n * So a visually-large heading can still sit at the right outline level.\n */\ndefineOptions({ name: 'Heading', inheritAttrs: false });\n\n/** The heading copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<HeadingProps>(), { level: 2 });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst tag = computed(() => `h${props.level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6');\n\nconst classes = computed(() =>\n cn(\n headingVariants({ size: props.size, weight: props.weight, align: props.align }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"tag\" ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></component>\n</template>\n","import { tv, Size, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the Text font weight. */\nexport const TextWeight = {\n /** Refers to normal weight. */\n Normal: 'normal',\n /** Refers to medium weight. */\n Medium: 'medium',\n /** Refers to semibold weight. */\n Semibold: 'semibold',\n /** Refers to bold weight. */\n Bold: 'bold',\n} as const;\n\nexport type TextWeight = (typeof TextWeight)[keyof typeof TextWeight];\n\n/** Defines the Text color role. */\nexport const TextColor = {\n /** Refers to the default foreground. */\n Default: 'default',\n /** Refers to the muted foreground. */\n Muted: 'muted',\n /** Refers to the subtle foreground. */\n Subtle: 'subtle',\n /** Refers to the primary brand color. */\n Brand: 'brand',\n /** Refers to the positive / confirmation color. */\n Success: 'success',\n /** Refers to the caution color. */\n Warning: 'warning',\n /** Refers to the destructive / error color. */\n Danger: 'danger',\n /** Refers to the informational color. */\n Info: 'info',\n} as const;\n\nexport type TextColor = (typeof TextColor)[keyof typeof TextColor];\n\n/** Defines the Text alignment. */\nexport const TextAlign = {\n /** Refers to left alignment. */\n Left: 'left',\n /** Refers to centered alignment. */\n Center: 'center',\n /** Refers to right alignment. */\n Right: 'right',\n /** Refers to justified alignment. */\n Justify: 'justify',\n} as const;\n\nexport type TextAlign = (typeof TextAlign)[keyof typeof TextAlign];\n\nexport const textVariants = tv({\n base: '',\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n color: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n subtle: 'text-subtle-foreground',\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n info: 'text-info',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n },\n isTruncated: {\n true: 'truncate',\n },\n isTabular: {\n true: 'tabular-nums',\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n color: 'default',\n },\n});\n\nexport type TextVariants = VariantProps<typeof textVariants>;\n\n/* Compile-time lock: enum values ≡ tv size/weight/color/align value-sets (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertTextSize: AssertExact<Size, NonNullable<VariantProps<typeof textVariants>['size']>> = true;\nconst _assertTextWeight: AssertExact<TextWeight, NonNullable<VariantProps<typeof textVariants>['weight']>> = true;\nconst _assertTextColor: AssertExact<TextColor, NonNullable<VariantProps<typeof textVariants>['color']>> = true;\nconst _assertTextAlign: AssertExact<TextAlign, NonNullable<VariantProps<typeof textVariants>['align']>> = true;\nvoid _assertTextSize;\nvoid _assertTextWeight;\nvoid _assertTextColor;\nvoid _assertTextAlign;\n","<script lang=\"ts\">\nimport type { ElementType } from '../../../foundation/dom';\nimport type { Size } from '../../../foundation/styles';\nimport type { TextAlign, TextColor, TextWeight } from './Text.variants';\n\nexport interface TextProps {\n readonly as?: ElementType;\n /** The font size step. */\n readonly size?: Size;\n /** The font weight. */\n readonly weight?: TextWeight;\n /** The color role. */\n readonly color?: TextColor;\n /** The text alignment. */\n readonly align?: TextAlign;\n /** The single-line truncation with an ellipsis. */\n readonly isTruncated?: boolean;\n /** The tabular (fixed-width) figures treatment. */\n readonly isTabular?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { textVariants } from './Text.variants';\n\n/** Renders body text as a `<p>`, or as any element given to `as` to match surrounding semantics. */\ndefineOptions({ name: 'Text', inheritAttrs: false });\n\n/** The text content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/**\n * `isTruncated` / `isTabular` default to `undefined`, not `false`: Vue casts an\n * absent `Boolean` prop to `false`, which would hand `textVariants` an explicit\n * `false` where React handed it `undefined`. Same rendered class either way for\n * these two, but the tri-state is what the variants config expects.\n */\nconst props = withDefaults(defineProps<TextProps>(), {\n as: 'p',\n isTruncated: undefined,\n isTabular: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst classes = computed(() =>\n cn(\n textVariants({\n size: props.size,\n weight: props.weight,\n color: props.color,\n align: props.align,\n isTruncated: props.isTruncated,\n isTabular: props.isTabular,\n }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"props.as\" ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></component>\n</template>\n","import { tv, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the CodeText rendering mode. */\nexport const CodeTextVariant = {\n /** Refers to inline code within a text run. */\n Inline: 'inline',\n /** Refers to a full-width block. */\n Block: 'block',\n} as const;\n\nexport type CodeTextVariant = (typeof CodeTextVariant)[keyof typeof CodeTextVariant];\n\nexport const codeVariants = tv({\n base: 'font-mono text-sm',\n variants: {\n variant: {\n inline: 'rounded-sm bg-muted px-1 py-0.5 text-foreground',\n block: 'block w-full overflow-x-auto rounded-md bg-muted p-4 text-foreground',\n },\n },\n defaultVariants: {\n variant: 'inline',\n },\n});\n\nexport type CodeTextVariants = VariantProps<typeof codeVariants>;\n\n/* Compile-time lock: enum values ≡ tv variant value-set (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertCodeVariant: AssertExact<\n CodeTextVariant,\n NonNullable<VariantProps<typeof codeVariants>['variant']>\n> = true;\nvoid _assertCodeVariant;\n","<script lang=\"ts\">\nimport type { CodeTextVariant } from './CodeText.variants';\n\nexport interface CodeTextProps {\n /** The rendering mode. */\n readonly variant?: CodeTextVariant;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { codeVariants } from './CodeText.variants';\n\n/**\n * Renders inline or block code text in the mono face — styling only, no tokenizing.\n *\n * For block, wrap children in a `<pre>` when you need pre-wrap whitespace. Syntax highlighting is L5.\n */\ndefineOptions({ name: 'CodeText', inheritAttrs: false });\n\n/** The code text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* No default: `codeVariants`' own `defaultVariants` decides, as in React. */\nconst props = defineProps<CodeTextProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst classes = computed(() => cn(codeVariants({ variant: props.variant }), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <code ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></code>\n</template>\n","<script lang=\"ts\">\nimport type { ImgHTMLAttributes } from 'vue';\n\n/** The `<img>` attributes; the error fallback is a named slot. */\nexport type ImagePreviewProps = ImgHTMLAttributes;\n</script>\n\n<script setup lang=\"ts\">\nimport { UrlExtensions } from '../../../foundation/dom';\nimport { computed, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders an `<img>` that swaps to the fallback slot when the source fails to load.\n *\n * Covers a broken `src` or a network failure. Wrap in `AspectRatioLayout` for aspect-locked images.\n */\ndefineOptions({ name: 'ImagePreview', inheritAttrs: false });\n\ndefineSlots<{\n /** The element rendered when the image fails to load. */\n fallback?(): unknown;\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLImageElement>('el');\n\nconst errored = ref(false);\n\n/* A new src deserves a fresh load attempt — reset the error latch. `src` is a\n fallthrough attr here, not a declared prop, so the watch reads it off `attrs`. */\nwatch(\n () => attrs.src,\n () => {\n errored.value = false;\n },\n);\n\n/** A fallthrough attr, not a declared prop; defaults to `''`. */\nconst alt = computed(() => (attrs.alt as string | undefined) ?? '');\n\nconst classes = computed(() => cn('block max-w-full', attrs.class as string | undefined));\n\n/** Everything but `class` / `alt`, both re-applied explicitly below. */\nconst rest = computed(() => {\n const { class: _class, alt: _alt, ...others } = attrs;\n return { ...others, src: UrlExtensions.safeResource(others.src) };\n});\n\n/**\n * A consumer-supplied `onError` rides in `rest`; Vue's `mergeProps` chains it\n * with this one rather than replacing it.\n */\nconst onError = (): void => {\n errored.value = true;\n};\n\ndefineExpose({ el });\n</script>\n\n<template>\n <slot v-if=\"errored && $slots.fallback\" name=\"fallback\" />\n <img v-else ref=\"el\" v-bind=\"rest\" :alt=\"alt\" :class=\"classes\" @error=\"onError\" />\n</template>\n","import { tv, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the Avatar silhouette. */\nexport const AvatarShape = {\n /** Refers to a circular avatar. */\n Circle: 'circle',\n /** Refers to a rounded-square avatar. */\n Square: 'square',\n} as const;\n\nexport type AvatarShape = (typeof AvatarShape)[keyof typeof AvatarShape];\n\n/** Defines the Avatar tone palette (`none` cedes color to autoColor). */\nexport const AvatarTone = {\n /** Refers to no tone — autoColor takes over the cascade. */\n None: 'none',\n /** Refers to the neutral / default palette. */\n Neutral: 'neutral',\n /** Refers to the primary brand palette. */\n Primary: 'primary',\n /** Refers to the destructive / error palette. */\n Danger: 'danger',\n /** Refers to the positive / confirmation palette. */\n Success: 'success',\n /** Refers to the caution palette. */\n Warning: 'warning',\n} as const;\n\nexport type AvatarTone = (typeof AvatarTone)[keyof typeof AvatarTone];\n\n/** Defines the Avatar background fill style. */\nexport const AvatarBackground = {\n /** Refers to a flat, solid fill. */\n Solid: 'solid',\n /** Refers to a tone-gradient fill. */\n Gradient: 'gradient',\n} as const;\n\nexport type AvatarBackground = (typeof AvatarBackground)[keyof typeof AvatarBackground];\n\n/** Defines the Avatar focus/emphasis ring tone. */\nexport const AvatarRing = {\n /** Refers to no ring. */\n None: 'none',\n /** Refers to a neutral border ring. */\n Neutral: 'neutral',\n /** Refers to a primary-toned ring. */\n Primary: 'primary',\n /** Refers to a destructive-toned ring. */\n Danger: 'danger',\n /** Refers to a success-toned ring. */\n Success: 'success',\n /** Refers to a caution-toned ring. */\n Warning: 'warning',\n} as const;\n\nexport type AvatarRing = (typeof AvatarRing)[keyof typeof AvatarRing];\n\nexport const avatarVariants = tv({\n base: 'inline-flex shrink-0 select-none items-center justify-center overflow-hidden font-medium',\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n '2xl': 'h-20 w-20 text-2xl',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-md',\n },\n tone: {\n // 'none' is used when autoColor takes over — prevents theme tokens from competing in the cascade.\n none: '',\n neutral: 'bg-muted text-muted-foreground',\n primary: 'bg-primary-soft text-primary-soft-foreground',\n danger: 'bg-destructive-soft text-destructive-soft-foreground',\n success: 'bg-success-soft text-success-soft-foreground',\n warning: 'bg-warning-soft text-warning-soft-foreground',\n },\n bgStyle: {\n solid: '',\n // Gradient class composed in compoundVariants × tone.\n gradient: '',\n },\n ring: {\n none: '',\n neutral: 'ring-2 ring-offset-2 ring-border ring-offset-background',\n primary: 'ring-2 ring-offset-2 ring-primary ring-offset-background',\n danger: 'ring-2 ring-offset-2 ring-destructive ring-offset-background',\n success: 'ring-2 ring-offset-2 ring-success ring-offset-background',\n warning: 'ring-2 ring-offset-2 ring-warning ring-offset-background',\n },\n isLoading: {\n true: 'animate-pulse bg-muted! text-transparent',\n false: '',\n },\n },\n compoundVariants: [\n // gradient × tone\n { bgStyle: 'gradient', tone: 'neutral', class: 'bg-gradient-to-br from-muted to-muted/40' },\n {\n bgStyle: 'gradient',\n tone: 'primary',\n class: 'bg-gradient-to-br from-primary-soft to-primary text-primary-foreground',\n },\n {\n bgStyle: 'gradient',\n tone: 'danger',\n class: 'bg-gradient-to-br from-destructive-soft to-destructive text-destructive-foreground',\n },\n {\n bgStyle: 'gradient',\n tone: 'success',\n class: 'bg-gradient-to-br from-success-soft to-success text-success-foreground',\n },\n {\n bgStyle: 'gradient',\n tone: 'warning',\n class: 'bg-gradient-to-br from-warning-soft to-warning text-warning-foreground',\n },\n ],\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n tone: 'neutral',\n bgStyle: 'solid',\n ring: 'none',\n isLoading: false,\n },\n});\n\nexport type AvatarVariants = VariantProps<typeof avatarVariants>;\n\n/* Compile-time lock: enum values ≡ tv shape/tone/bgStyle/ring value-sets (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertAvatarShape: AssertExact<AvatarShape, NonNullable<VariantProps<typeof avatarVariants>['shape']>> = true;\nconst _assertAvatarTone: AssertExact<AvatarTone, NonNullable<VariantProps<typeof avatarVariants>['tone']>> = true;\nconst _assertAvatarBackground: AssertExact<\n AvatarBackground,\n NonNullable<VariantProps<typeof avatarVariants>['bgStyle']>\n> = true;\nconst _assertAvatarRing: AssertExact<AvatarRing, NonNullable<VariantProps<typeof avatarVariants>['ring']>> = true;\nvoid _assertAvatarShape;\nvoid _assertAvatarTone;\nvoid _assertAvatarBackground;\nvoid _assertAvatarRing;\n","<script lang=\"ts\">\nimport type { CSSProperties } from 'vue';\nimport type { SizePreset, SizeUnion } from '../../../foundation/styles';\n/* The four value-sets are imported as values (not `import type`) so the one binding serves\n as both the prop type below and the runtime enum used in the auto-color guard. */\nimport { AvatarBackground, AvatarRing, AvatarShape, AvatarTone, type AvatarVariants } from './Avatar.variants';\n\n/* Avatar supports the full canonical preset vocabulary. */\ntype AvatarSizePreset = SizePreset;\n\n/**\n * The size union — preset (`xs|sm|md|lg|xl|2xl`) · raw number/string (square inline dims) ·\n * object (explicit dims). Named here so `AvatarGroup` can reuse it.\n */\nexport type AvatarSize = SizeUnion<AvatarSizePreset>;\n\nconst AvatarSizePresets: ReadonlySet<string> = new Set<AvatarSizePreset>(['xs', 'sm', 'md', 'lg', 'xl', '2xl']);\n\n/* autoColor palette — 17 hues, dark-mode aware. No opacity keeps contrast deterministic. */\nconst AutoColorPalette = [\n 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-100',\n 'bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-100',\n 'bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-100',\n 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100',\n 'bg-lime-100 text-lime-800 dark:bg-lime-900 dark:text-lime-100',\n 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100',\n 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900 dark:text-emerald-100',\n 'bg-teal-100 text-teal-800 dark:bg-teal-900 dark:text-teal-100',\n 'bg-cyan-100 text-cyan-800 dark:bg-cyan-900 dark:text-cyan-100',\n 'bg-sky-100 text-sky-800 dark:bg-sky-900 dark:text-sky-100',\n 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-100',\n 'bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-100',\n 'bg-violet-100 text-violet-800 dark:bg-violet-900 dark:text-violet-100',\n 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-100',\n 'bg-fuchsia-100 text-fuchsia-800 dark:bg-fuchsia-900 dark:text-fuchsia-100',\n 'bg-pink-100 text-pink-800 dark:bg-pink-900 dark:text-pink-100',\n 'bg-rose-100 text-rose-800 dark:bg-rose-900 dark:text-rose-100',\n];\n\nfunction hashName(name: string): number {\n let h = 0;\n for (let i = 0; i < name.length; i++) {\n h = (h * 31 + name.charCodeAt(i)) | 0;\n }\n return Math.abs(h);\n}\n\nfunction pickAutoColor(name: string): string {\n return AutoColorPalette[hashName(name) % AutoColorPalette.length]!;\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 0) return '';\n const first = parts[0]?.[0] ?? '';\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? '') : '';\n return (first + last).toUpperCase();\n}\n\nexport interface AvatarProps {\n /** The silhouette. */\n readonly shape?: AvatarShape;\n\n /** The tone palette (`none` cedes color to autoColor). */\n readonly tone?: AvatarTone;\n\n /** The background fill style. */\n readonly bgStyle?: AvatarBackground;\n\n /** The focus/emphasis ring tone. */\n readonly ring?: AvatarRing;\n\n /** The skeleton state — pulses the tile and hides its content. */\n readonly isLoading?: boolean;\n\n /** The image source; falls back to `name` initials or `fallback` on error. */\n readonly src?: string;\n\n /** The person/entity name — used to derive initials when no image. */\n readonly name?: string;\n\n /** The custom fallback (overrides initials). Rich content goes through the `fallback` slot. */\n readonly fallback?: string | number;\n\n /** The alt text for the underlying `<img>` (defaults to `name`). */\n readonly alt?: string;\n\n /**\n * The auto-color flag — derives a deterministic tint from the `name` hash.\n * A non-neutral `tone` or a non-solid `bgStyle` overrides it.\n */\n readonly canAutoColor?: boolean;\n\n /** The size — preset → variant class · number/string → square inline · object → explicit dims. */\n readonly size?: AvatarSize;\n}\n\n/* Compile-time lock: the hand-written `isLoading` prop ≡ the tv variant key (drift = type error).\n `shape` / `tone` / `bgStyle` / `ring` need no lock here — they use the named enums the\n variants file already locks against `avatarVariants`. */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertAvatarLoading: AssertExact<\n NonNullable<AvatarProps['isLoading']>,\n NonNullable<AvatarVariants['isLoading']>\n> = true;\nvoid _assertAvatarLoading;\n</script>\n\n<script setup lang=\"ts\">\nimport { UrlExtensions } from '../../../foundation/dom';\nimport { computed, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn, CssExtensions } from '../../../foundation/styles';\nimport { avatarVariants } from './Avatar.variants';\n\n/**\n * Renders a user image avatar that falls back to initials, with tone, ring, and loading skeleton.\n *\n * Auto-color is a deterministic hash of the name. Compose with `BadgeOverlay` for status dots / counts / icons.\n */\ndefineOptions({ name: 'Avatar', inheritAttrs: false });\n\ndefineSlots<{\n /** The custom fallback content — wins over the `fallback` prop and the derived initials. */\n fallback?(): unknown;\n}>();\n\n/**\n * `isLoading` / `canAutoColor` default to `undefined`, not `false`: Vue casts an absent\n * `Boolean` prop to `false`, and `avatarVariants` expects the tri-state React handed it.\n */\nconst props = withDefaults(defineProps<AvatarProps>(), {\n name: '',\n isLoading: undefined,\n canAutoColor: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst errored = ref(false);\n\n/* A new src deserves a fresh load attempt — reset the error latch. */\nwatch(\n () => props.src,\n () => {\n errored.value = false;\n },\n);\n\nconst showImage = computed(() => !!props.src && !errored.value && !props.isLoading);\n\n/* Parse union-typed `size` — preset routes to variant class, raw/object routes to inline dims. */\nconst parsedSize = computed(() => CssExtensions.parseSizeUnion<AvatarSizePreset>(props.size, AvatarSizePresets));\n\nconst boxStyle = computed<CSSProperties | undefined>(() =>\n parsedSize.value.box ? CssExtensions.resolveBoxSize(parsedSize.value.box) : undefined,\n);\n\n/* Auto-color fires only when: name set, no explicit non-neutral tone, bgStyle not gradient. Explicit dials win. */\nconst autoColorClass = computed(() =>\n props.canAutoColor &&\n props.name &&\n props.bgStyle !== AvatarBackground.Gradient &&\n (props.tone === undefined || props.tone === AvatarTone.Neutral)\n ? pickAutoColor(props.name)\n : undefined,\n);\n\n/* When auto-color is active, suppress the tone variant so its theme-token classes don't compete in the cascade. */\nconst effectiveTone = computed(() => (autoColorClass.value ? AvatarTone.None : props.tone));\n\nconst initials = computed(() => getInitials(props.name));\n\nconst classes = computed(() =>\n cn(\n avatarVariants({\n size: parsedSize.value.preset,\n shape: props.shape,\n tone: effectiveTone.value,\n bgStyle: props.bgStyle,\n ring: props.ring,\n isLoading: props.isLoading,\n }),\n autoColorClass.value,\n attrs.class as string | undefined,\n ),\n);\n\n/** The consumer's inline style lands last, so it wins over the parsed box dims. */\nconst styles = computed(() => [boxStyle.value, attrs.style as CSSProperties | undefined]);\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs first, `v-bind=\"rest\"` after — a consumer-supplied `data-loading` / `aria-busy`\n still wins, as it did through React's trailing `{...props}` spread. -->\n <span\n ref=\"el\"\n :data-loading=\"props.isLoading ? 'true' : undefined\"\n :aria-busy=\"props.isLoading ? true : undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n :style=\"styles\"\n >\n <img\n v-if=\"showImage\"\n :src=\"UrlExtensions.safeResource(props.src)\"\n :alt=\"props.alt ?? props.name\"\n class=\"h-full w-full object-cover\"\n @error=\"errored = true\"\n />\n <slot v-else name=\"fallback\">{{ props.fallback ?? initials }}</slot>\n </span>\n</template>\n","import { tv, Size, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the Badge color treatment. */\nexport const BadgeVariant = {\n /** Refers to the neutral grey fill. */\n Neutral: 'neutral',\n /** Refers to the primary brand tint. */\n Brand: 'brand',\n /** Refers to the positive / confirmation tint. */\n Success: 'success',\n /** Refers to the caution tint. */\n Warning: 'warning',\n /** Refers to the destructive / error tint. */\n Danger: 'danger',\n /** Refers to the informational tint. */\n Info: 'info',\n /** Refers to a bordered, transparent fill. */\n Outline: 'outline',\n} as const;\n\nexport type BadgeVariant = (typeof BadgeVariant)[keyof typeof BadgeVariant];\n\nexport const badgeVariants = tv({\n base: 'inline-flex items-center rounded-full font-medium',\n variants: {\n variant: {\n neutral: 'bg-muted text-foreground',\n brand: 'bg-primary-soft text-primary-soft-foreground',\n success: 'bg-success-soft text-success-soft-foreground',\n warning: 'bg-warning-soft text-warning-soft-foreground',\n danger: 'bg-destructive-soft text-destructive-soft-foreground',\n info: 'bg-info-soft text-info-soft-foreground',\n outline: 'border border-border text-foreground',\n },\n size: {\n sm: 'h-5 px-2 text-xs',\n md: 'h-6 px-2.5 text-xs',\n lg: 'h-7 px-3 text-sm',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'md',\n },\n});\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n\n/* Compile-time lock: enum values ≡ tv variant value-set (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertBadgeVariant: AssertExact<BadgeVariant, NonNullable<VariantProps<typeof badgeVariants>['variant']>> = true;\n/* `size` prop adopts the shared 5-member `Size`; the tv axis only styles sm/md/lg (widening is intentional). */\nconst _assertBadgeSize: [NonNullable<VariantProps<typeof badgeVariants>['size']>] extends [Size] ? true : never = true;\nvoid _assertBadgeVariant;\nvoid _assertBadgeSize;\n","<script lang=\"ts\">\nimport type { Size } from '../../../foundation/styles';\nimport type { BadgeVariant } from './Badge.variants';\n\nexport interface BadgeProps {\n /** The color treatment. */\n readonly variant?: BadgeVariant;\n /** The size step. */\n readonly size?: Size;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { badgeVariants, type BadgeVariants } from './Badge.variants';\n\n/**\n * Renders a non-interactive pill marking a status or category.\n *\n * Use `Tag` for the clickable pill, `Alert*` for severity-tinted callouts at message scale.\n */\ndefineOptions({ name: 'Badge', inheritAttrs: false });\n\n/** The badge copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<BadgeProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst classes = computed(() =>\n cn(\n badgeVariants({\n variant: props.variant,\n size: props.size as BadgeVariants['size'],\n }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></span>\n</template>\n","<script lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\n\nexport type MarkTextProps = HTMLAttributes;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders a semantic `<mark>` tint over text — search matches, \"you mentioned this\" affordances. */\ndefineOptions({ name: 'MarkText', inheritAttrs: false });\n\n/** The highlighted text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst classes = computed(() =>\n cn('rounded-sm bg-warning-soft px-0.5 text-warning-soft-foreground', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <mark ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></mark>\n</template>\n","<script lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\n\nexport type QuoteTextProps = HTMLAttributes;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders a block quote with a subtle left border and italic body text. */\ndefineOptions({ name: 'QuoteText', inheritAttrs: false });\n\n/** The quoted copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLQuoteElement>('el');\n\nconst classes = computed(() =>\n cn('border-l-4 border-border pl-4 italic text-muted-foreground', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <blockquote ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></blockquote>\n</template>\n","<script lang=\"ts\">\nimport type {\n SurfaceElevation,\n SurfacePadding,\n SurfaceRadius,\n SurfaceTone,\n SurfaceVariant,\n} from '../../../foundation/styles';\n\n/**\n * Represents the prop surface of `Card`.\n *\n * React declared these by `extends SurfaceLayoutVariants`; spelled out here because\n * `defineProps<T>()` needs a type the SFC compiler can resolve to a runtime\n * declaration, and `VariantProps<typeof surfaceVariants>` is opaque to it.\n */\nexport interface CardProps {\n /** The visual recipe — solid · soft · surface · outline · glass · elevated · flat · subtle. */\n readonly variant?: SurfaceVariant;\n /** The color tone the recipe is tinted with. */\n readonly tone?: SurfaceTone;\n /** The corner rounding. */\n readonly radius?: SurfaceRadius;\n /** The inner spacing step. */\n readonly padding?: SurfacePadding;\n /** The shadow depth. */\n readonly elevation?: SurfaceElevation;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn, surfaceVariants } from '../../../foundation/styles';\n\n/**\n * Renders a raised surface that groups content, padded to frame its header, body, and footer.\n *\n * The sub-components ship as siblings — `CardHeader` / `CardTitle` / `CardDescription` / `CardBody` / `CardFooter` —\n * rather than statics on this component, since an SFC's default export cannot carry them cleanly.\n */\ndefineOptions({ name: 'Card', inheritAttrs: false });\n\n/** The card content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<CardProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n surfaceVariants({\n variant: props.variant ?? 'surface',\n tone: props.tone,\n radius: props.radius ?? 'lg',\n padding: props.padding ?? 'none',\n elevation: props.elevation ?? 1,\n }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the stacked header region of a `Card` — title above description. */\ndefineOptions({ name: 'CardHeader', inheritAttrs: false });\n\n/** The header content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('flex flex-col gap-1 p-4 pb-2', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the `h3` title line of a `Card`, at heading weight and tight leading. */\ndefineOptions({ name: 'CardTitle', inheritAttrs: false });\n\n/** The title copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst classes = computed(() => cn('text-lg font-semibold tracking-tight', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <h3 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></h3>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the muted supporting line under a `CardTitle`, at body-text scale. */\ndefineOptions({ name: 'CardDescription', inheritAttrs: false });\n\n/** The description copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLParagraphElement>('el');\n\nconst classes = computed(() => cn('text-sm text-muted-foreground', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <p ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></p>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the main content region of a `Card`, padded to match its header and footer. */\ndefineOptions({ name: 'CardBody', inheritAttrs: false });\n\n/** The body content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('p-4 pt-2', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the bordered action row pinned to the bottom of a `Card`. */\ndefineOptions({ name: 'CardFooter', inheritAttrs: false });\n\n/** The footer content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn('flex items-center gap-2 border-t border-border p-4', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\nimport type { AvatarSize } from '../avatar/Avatar.vue';\n\nexport interface AvatarGroupProps {\n /** The maximum avatars to render. Excess is shown as a \"+N\" tile. */\n readonly max?: number;\n\n /** The avatar size applied to all children. Default `md`. */\n readonly size?: AvatarSize;\n\n /** The negative-margin overlap class applied between avatars. Default `-ml-2`. */\n readonly overlap?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { cloneVNode, computed, useAttrs, useSlots, useTemplateRef, type VNode } from 'vue';\nimport { cn, SizePreset } from '../../../foundation/styles';\nimport { renderableChildren } from '../../../foundation/primitives';\nimport Avatar from '../avatar/Avatar.vue';\n\n/** Renders a stack of overlapping `Avatar` children, with a \"+N more\" chip once they exceed `max`. */\ndefineOptions({ name: 'AvatarGroup', inheritAttrs: false });\n\n/** The `Avatar` children — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<AvatarGroupProps>(), {\n max: undefined,\n size: SizePreset.Md,\n overlap: '-ml-2',\n});\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/**\n * React rebuilt every child as `<Avatar {...child.props} size={size} />`, which forced the\n * group's size *and* the `Avatar` type. A Vue slot hands over already-rendered vnodes, so\n * each is cloned with `size` instead — same size coercion, and a child that is a wrapped or\n * decorated `Avatar` keeps its own type rather than being flattened into a bare one.\n *\n * A function, not a `computed`: the slot is re-invoked on every render, so the vnodes handed\n * to `v-for` are always fresh rather than a cached array of already-mounted ones.\n */\nfunction sizedChildren(): Array<VNode> {\n const all = renderableChildren(slots.default?.());\n const visible = props.max ? all.slice(0, props.max) : all;\n return visible.map((child) => cloneVNode(child, { size: props.size }));\n}\n\nconst overflow = computed(() => {\n const count = renderableChildren(slots.default?.()).length;\n return props.max ? Math.max(0, count - props.max) : 0;\n});\n\nconst classes = computed(() => cn('inline-flex items-center', attrs.class as string | undefined));\n\nconst itemClasses = (index: number): string => cn('ring-2 ring-background rounded-full', index > 0 && props.overlap);\n\nconst overflowClasses = computed(() => cn(props.overlap, 'ring-2 ring-background'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div v-for=\"(child, index) in sizedChildren()\" :key=\"child.key ?? index\" :class=\"itemClasses(index)\">\n <!-- Force consistent size -->\n <component :is=\"child\" />\n </div>\n <Avatar v-if=\"overflow > 0\" :size=\"props.size\" :fallback=\"`+${overflow}`\" :class=\"overflowClasses\" />\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the EmptyState visual size. */\nexport const EmptyStateSize = {\n /** Refers to the small layout. */\n Sm: 'sm',\n /** Refers to the medium layout. */\n Md: 'md',\n /** Refers to the large layout. */\n Lg: 'lg',\n} as const;\n\nexport type EmptyStateSize = (typeof EmptyStateSize)[keyof typeof EmptyStateSize];\n\nexport interface EmptyStateProps {\n /**\n * The heading copy. React typed this `ReactNode`; a scalar stays a prop so it\n * remains the discriminator, and the same-named slot is the rich override.\n */\n readonly title: string | number;\n\n /** The body copy below the title. Same prop-plus-slot pairing as `title`. */\n readonly description?: string | number;\n\n /** The visual size. Default `md`. */\n readonly size?: EmptyStateSize;\n}\n\nconst SizeClasses: Record<EmptyStateSize, { wrap: string; iconBox: string }> = {\n sm: { wrap: 'gap-2 py-6', iconBox: 'h-10 w-10' },\n md: { wrap: 'gap-3 py-10', iconBox: 'h-14 w-14' },\n lg: { wrap: 'gap-4 py-16', iconBox: 'h-20 w-20' },\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/** Renders a centred no-results affordance — icon, title, description, actions — from any subset of them. */\ndefineOptions({ name: 'EmptyState', inheritAttrs: false });\n\n/**\n * React's `icon` / `actions` were structural `ReactNode` props — regions with no\n * prop equivalent in Vue, so they become slots. `title` / `description` stay\n * props (scalars) with a same-named slot as the rich override.\n */\ndefineSlots<{\n /** The optional icon, centered in a tinted disc. */\n icon(): unknown;\n /** The heading copy — overrides the `title` prop's rendering. */\n title(): unknown;\n /** The body copy — overrides the `description` prop's rendering. */\n description(): unknown;\n /** The action(s) — usually one or two `Button`s. */\n actions(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<EmptyStateProps>(), {\n description: undefined,\n size: EmptyStateSize.Md,\n});\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst sizing = computed(() => SizeClasses[props.size]);\n\nconst headingSize = computed(() =>\n props.size === EmptyStateSize.Sm ? 'md' : props.size === EmptyStateSize.Lg ? 'xl' : 'lg',\n);\n\nconst textSize = computed(() => (props.size === EmptyStateSize.Lg ? 'md' : 'sm'));\n\nconst hasDescription = computed(() => props.description !== undefined || !!slots.description);\n\nconst classes = computed(() =>\n cn('flex flex-col items-center text-center', sizing.value.wrap, attrs.class as string | undefined),\n);\n\nconst iconBoxClasses = computed(() =>\n cn('flex items-center justify-center rounded-full bg-muted text-muted-foreground', sizing.value.iconBox),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div v-if=\"$slots.icon\" :class=\"iconBoxClasses\"><slot name=\"icon\" /></div>\n <Heading :level=\"3\" :size=\"headingSize\">\n <slot name=\"title\">{{ props.title }}</slot>\n </Heading>\n <Text v-if=\"hasDescription\" color=\"muted\" :size=\"textSize\">\n <slot name=\"description\">{{ props.description }}</slot>\n </Text>\n <div v-if=\"$slots.actions\" class=\"mt-2 flex items-center gap-2\"><slot name=\"actions\" /></div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the StatCard tile visual size. */\nexport const StatCardSize = {\n /** Refers to the small tile. */\n Sm: 'sm',\n /** Refers to the medium tile. */\n Md: 'md',\n /** Refers to the large tile. */\n Lg: 'lg',\n} as const;\n\nexport type StatCardSize = (typeof StatCardSize)[keyof typeof StatCardSize];\n\n/** The optional trend readout — positive = up/green, negative = down/red. */\nexport interface StatCardTrend {\n /** The signed percentage. */\n readonly value: number;\n\n /** The muted caption rendered after the percentage. */\n readonly label?: string | number;\n}\n\nexport interface StatCardProps {\n /** The label above the value. Rich content goes through the `label` slot. */\n readonly label: string | number;\n\n /** The primary value (large). Rich content goes through the `value` slot. */\n readonly value: string | number;\n\n /** The optional trend — positive = up/green, negative = down/red. */\n readonly trend?: StatCardTrend;\n\n /** The optional helper / supporting text below. Rich content goes through the `helper` slot. */\n readonly helper?: string | number;\n\n /** The visual size. Default `md`. */\n readonly size?: StatCardSize;\n}\n\nconst ValueSize: Record<StatCardSize, '2xl' | '3xl' | '4xl'> = {\n sm: '2xl',\n md: '3xl',\n lg: '4xl',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { TrendingDown, TrendingUp } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/** Renders a KPI tile — label, big value, optional trend and helper — for dashboard grids. */\ndefineOptions({ name: 'StatCard', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for the `label` prop. */\n label?(): unknown;\n /** The rich override for the `value` prop. */\n value?(): unknown;\n /** The rich override for the `helper` prop. */\n helper?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<StatCardProps>(), { size: 'md' });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst trendUp = computed(() => (props.trend ? props.trend.value >= 0 : false));\n\nconst valueSize = computed(() => ValueSize[props.size]);\n\nconst classes = computed(() => cn('flex flex-col gap-1', attrs.class as string | undefined));\n\nconst trendClasses = computed(() =>\n cn('inline-flex items-center gap-0.5 text-xs font-medium', trendUp.value ? 'text-success' : 'text-destructive'),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <Text size=\"sm\" color=\"muted\"\n ><slot name=\"label\">{{ props.label }}</slot></Text\n >\n <Heading :level=\"3\" :size=\"valueSize\" weight=\"bold\">\n <slot name=\"value\">{{ props.value }}</slot>\n </Heading>\n <div v-if=\"props.trend || props.helper\" class=\"mt-1 flex items-center gap-2\">\n <span v-if=\"props.trend\" :class=\"trendClasses\">\n <Icon :icon=\"trendUp ? TrendingUp : TrendingDown\" :size=\"12\" />\n {{ props.trend.value > 0 ? '+' : '' }}{{ props.trend.value }}%\n <span v-if=\"props.trend.label\" class=\"text-muted-foreground\"> {{ props.trend.label }}</span>\n </span>\n <Text v-if=\"props.helper && !props.trend\" size=\"xs\" color=\"muted\">\n <slot name=\"helper\">{{ props.helper }}</slot>\n </Text>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the SnippetText layout variant. */\nexport const SnippetTextVariant = {\n /** Refers to a single-line inline snippet. */\n Inline: 'inline',\n /** Refers to a multi-line block snippet. */\n Block: 'block',\n} as const;\n\nexport type SnippetTextVariant = (typeof SnippetTextVariant)[keyof typeof SnippetTextVariant];\n\nexport interface SnippetTextProps {\n /** The code text to display + copy. */\n readonly text: string;\n\n /** The visual variant — `inline` (single line) or `block` (multi-line). Default `inline`. */\n readonly variant?: SnippetTextVariant;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { Check, Copy } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport { useClipboard } from '../../../foundation/clipboard';\nimport CodeText from '../codeText/CodeText.vue';\n\nconst CopiedIcon = Check;\nconst CopyIcon = Copy;\n\n/**\n * Renders code text with a copy button, inline for one-liners or block for multi-line snippets.\n *\n * Copy runs through the L1 `useClipboard` hook directly — `SnippetText` stays in display and cannot import the actions\n * `CopyButton`.\n */\ndefineOptions({ name: 'SnippetText', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<SnippetTextProps>(), { variant: SnippetTextVariant.Inline });\n\nconst { copied, copy } = useClipboard();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'group relative inline-flex w-full items-start',\n props.variant === SnippetTextVariant.Inline ? 'gap-2' : 'flex-col gap-0',\n attrs.class as string | undefined,\n ),\n);\n\nconst buttonClasses = computed(() =>\n cn(\n 'absolute right-2 grid h-7 w-7 place-items-center rounded text-muted-foreground transition-colors hover:bg-background hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n props.variant === SnippetTextVariant.Inline ? 'top-1/2 -translate-y-1/2' : 'top-2',\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\nconst onCopy = (): void => {\n void copy(props.text);\n};\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <CodeText :variant=\"props.variant\" class=\"flex-1 pr-10\">{{ props.text }}</CodeText>\n <button type=\"button\" :aria-label=\"copied ? 'Copied' : 'Copy'\" :class=\"buttonClasses\" @click=\"onCopy\">\n <Icon :icon=\"copied ? CopiedIcon : CopyIcon\" :size=\"14\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { CornerPosition } from '../../../foundation/styles';\n\n/** Defines the NotificationIndicator color tone. */\nexport const NotificationIndicatorTone = {\n /** Refers to the destructive / error color. */\n Destructive: 'destructive',\n /** Refers to the positive / confirmation color. */\n Success: 'success',\n /** Refers to the caution color. */\n Warning: 'warning',\n /** Refers to the informational color. */\n Info: 'info',\n /** Refers to the primary brand color. */\n Primary: 'primary',\n /** Refers to the neutral color. */\n Neutral: 'neutral',\n} as const;\n\nexport type NotificationIndicatorTone = (typeof NotificationIndicatorTone)[keyof typeof NotificationIndicatorTone];\n\n/** Defines the NotificationIndicator size step. */\nexport const NotificationIndicatorSize = {\n /** Refers to the extra-small dot. */\n Xs: 'xs',\n /** Refers to the small dot. */\n Sm: 'sm',\n /** Refers to the medium dot. */\n Md: 'md',\n} as const;\n\nexport type NotificationIndicatorSize = (typeof NotificationIndicatorSize)[keyof typeof NotificationIndicatorSize];\n\nexport interface NotificationIndicatorProps {\n /** The color tone. Default `destructive`. */\n readonly tone?: NotificationIndicatorTone;\n\n /** The size step. Default `sm`. */\n readonly size?: NotificationIndicatorSize;\n\n /** The pulsing ring around the dot. */\n readonly hasPulse?: boolean;\n\n /** The corner position — when set, the dot is positioned absolutely relative to its parent. */\n readonly position?: CornerPosition;\n}\n\nconst ToneClass: Record<NotificationIndicatorTone, string> = {\n destructive: 'bg-destructive',\n success: 'bg-success',\n warning: 'bg-warning',\n info: 'bg-info',\n primary: 'bg-primary',\n neutral: 'bg-muted-foreground',\n};\n\n/* Static literal map — Tailwind must see the complete `after:bg-*` class names. */\nconst PulseTone: Record<NotificationIndicatorTone, string> = {\n destructive: 'after:bg-destructive',\n success: 'after:bg-success',\n warning: 'after:bg-warning',\n info: 'after:bg-info',\n primary: 'after:bg-primary',\n neutral: 'after:bg-muted-foreground',\n};\n\nconst SizeClass: Record<NotificationIndicatorSize, string> = {\n xs: 'h-1.5 w-1.5',\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n};\n\nconst PositionClass: Record<CornerPosition, string> = {\n 'top-right': 'absolute -top-0.5 -right-0.5',\n 'top-left': 'absolute -top-0.5 -left-0.5',\n 'bottom-right': 'absolute -bottom-0.5 -right-0.5',\n 'bottom-left': 'absolute -bottom-0.5 -left-0.5',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a tiny coloured unread dot, absolutely placed over its parent when given `position`.\n *\n * Pin it on an `Avatar` or a square / circle `Button`.\n */\ndefineOptions({ name: 'NotificationIndicator', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<NotificationIndicatorProps>(), {\n tone: 'destructive',\n size: 'sm',\n hasPulse: undefined,\n position: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'inline-flex rounded-full ring-2 ring-background',\n ToneClass[props.tone],\n SizeClass[props.size],\n /* `relative` anchors the ::after ring; PositionClass comes later so its `absolute` wins when positioned. */\n props.hasPulse &&\n `relative after:absolute after:inset-0 after:animate-ping after:rounded-full after:opacity-75 after:content-[\"\"] ${PulseTone[props.tone]}`,\n props.position && PositionClass[props.position],\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" aria-hidden=\"true\" v-bind=\"rest\" :class=\"classes\" />\n</template>\n","<script lang=\"ts\">\nimport type { BadgeVariant } from '../badge/Badge.variants';\n\nexport interface CountBadgeProps {\n /** The numeric count. */\n readonly value: number;\n\n /** The cap value — shows \"max+\" when exceeded. Default 99. */\n readonly max?: number;\n\n /** The hide-when-zero mode — hides entirely when count is 0. Default true. */\n readonly canHideZero?: boolean;\n\n /**\n * The color treatment. React spelled this `BadgeProps['variant']`; the named\n * `BadgeVariant` union it resolves to is used directly, because the SFC\n * compiler cannot follow an indexed access into an imported interface.\n */\n readonly variant?: BadgeVariant;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn, Size } from '../../../foundation/styles';\nimport { BadgeVariant as BadgeVariantValue } from '../badge/Badge.variants';\nimport Badge from '../badge/Badge.vue';\n\n/**\n * Renders a numeric count badge showing `value` or `{max}+` past the cap, hidden at zero by default.\n *\n * Pass `:can-hide-zero=\"false\"` to keep it visible at zero.\n */\ndefineOptions({ name: 'CountBadge', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<CountBadgeProps>(), {\n max: 99,\n canHideZero: true,\n variant: BadgeVariantValue.Danger,\n});\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<InstanceType<typeof Badge>>('inner');\n\n/** The inner `Badge`'s root element — the React original's forwarded ref. */\nconst el = computed(() => inner.value?.el ?? null);\n\n/** React returned `null` at zero; Vue renders nothing through `v-if`. */\nconst isVisible = computed(() => !(props.value === 0 && props.canHideZero));\n\nconst display = computed(() => (props.value > props.max ? `${props.max}+` : `${props.value}`));\n\nconst classes = computed(() => cn('min-w-5 justify-center px-1.5', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <Badge v-if=\"isVisible\" ref=\"inner\" :variant=\"props.variant\" :size=\"Size.Sm\" v-bind=\"rest\" :class=\"classes\">{{\n display\n }}</Badge>\n</template>\n","<script lang=\"ts\">\n/* `StatusTone` is imported here (not in `<script setup>`) so the one binding serves as both\n the prop type below and the runtime value used in `withDefaults`. */\nimport { StatusTone } from '../../../foundation/styles';\n\n/** Defines the Status visual size. */\nexport const StatusSize = {\n /** Refers to the extra-small indicator. */\n Xs: 'xs',\n /** Refers to the small indicator. */\n Sm: 'sm',\n /** Refers to the medium indicator. */\n Md: 'md',\n} as const;\n\nexport type StatusSize = (typeof StatusSize)[keyof typeof StatusSize];\n\nexport interface StatusProps {\n /** The semantic tone of the dot. Default `success`. */\n readonly tone?: StatusTone;\n\n /** The optional pulsing ring around the dot. */\n readonly hasPulse?: boolean;\n\n /** The visual size — drives dot dimensions, text size, and gap. Default `md`. */\n readonly size?: StatusSize;\n}\n\nconst ToneClass: Record<StatusTone, string> = {\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-info',\n neutral: 'bg-muted-foreground',\n};\n\nconst SizeClasses: Record<StatusSize, { wrapper: string; dot: string }> = {\n xs: { wrapper: 'gap-1.5 text-xs', dot: 'h-1.5 w-1.5' },\n sm: { wrapper: 'gap-1.5 text-sm', dot: 'h-2 w-2' },\n md: { wrapper: 'gap-2 text-sm', dot: 'h-2 w-2' },\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a coloured dot beside a text label — server status, online presence, build state.\n *\n * Use `Status` for labelled indicators; `NotificationIndicator` for the bare positioned dot.\n */\ndefineOptions({ name: 'Status', inheritAttrs: false });\n\n/** The label rendered after the dot — React's optional `children`. */\ndefineSlots<{ default?(): unknown }>();\n\nconst props = withDefaults(defineProps<StatusProps>(), {\n tone: StatusTone.Success,\n size: StatusSize.Md,\n hasPulse: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst size = computed(() => SizeClasses[props.size]);\n\nconst classes = computed(() =>\n cn('inline-flex items-center text-foreground', size.value.wrapper, attrs.class as string | undefined),\n);\n\nconst dotClasses = computed(() => cn('inline-block rounded-full', size.value.dot, ToneClass[props.tone]));\n\nconst pulseClasses = computed(() =>\n cn('absolute inset-0 inline-block rounded-full opacity-75 animate-ping', ToneClass[props.tone]),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <span class=\"relative inline-flex\">\n <span :class=\"dotClasses\" />\n <span v-if=\"props.hasPulse\" :class=\"pulseClasses\" />\n </span>\n <slot />\n </span>\n</template>\n","<script lang=\"ts\">\nexport interface KeyboardShortcutTextProps {\n /** The keys in order — e.g. `['⌘', 'K']` or `['Ctrl', 'Shift', 'P']`. */\n readonly keys: ReadonlyArray<string>;\n\n /** The connector between keys. Default `'+'`; pass `' '` for spaced keys. */\n readonly separator?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport KbdText from '../kbdText/KbdText.vue';\n\n/**\n * Renders a `keys` sequence as `KbdText` chips joined by connectors.\n *\n * For example `<KeyboardShortcutText :keys=\"['⌘', 'K']\" />` reads ⌘ + K.\n */\ndefineOptions({ name: 'KeyboardShortcutText', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<KeyboardShortcutTextProps>(), { separator: '+' });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst classes = computed(() =>\n cn('inline-flex items-center gap-1 text-muted-foreground', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <template v-for=\"(keyLabel, i) in props.keys\" :key=\"i\">\n <span v-if=\"i > 0\" aria-hidden=\"true\">{{ props.separator }}</span>\n <KbdText>{{ keyLabel }}</KbdText>\n </template>\n </span>\n</template>\n","<script lang=\"ts\">\nexport interface DescriptionGroupItem {\n /** Scalar only — what an array item can carry; the `label` slot is the rich override. */\n readonly label: string | number;\n readonly value: string | number;\n}\n\n/** Defines the DescriptionGroup row layout. */\nexport const DescriptionGroupLayout = {\n /** Refers to label/value on the same line. */\n Inline: 'inline',\n /** Refers to label stacked above its value. */\n Stacked: 'stacked',\n} as const;\n\nexport type DescriptionGroupLayout = (typeof DescriptionGroupLayout)[keyof typeof DescriptionGroupLayout];\n\n/** Defines the DescriptionGroup inter-row density. */\nexport const DescriptionGroupDensity = {\n /** Refers to tight row spacing. */\n Sm: 'sm',\n /** Refers to medium row spacing. */\n Md: 'md',\n /** Refers to loose row spacing. */\n Lg: 'lg',\n} as const;\n\nexport type DescriptionGroupDensity = (typeof DescriptionGroupDensity)[keyof typeof DescriptionGroupDensity];\n\nexport interface DescriptionGroupProps {\n readonly items: ReadonlyArray<DescriptionGroupItem>;\n\n /** The layout direction. `inline` renders label/value on the same line; `stacked` puts label above. */\n readonly layout?: DescriptionGroupLayout;\n\n /** The density between rows. Default `md`. */\n readonly density?: DescriptionGroupDensity;\n}\n\nconst RowGap: Record<NonNullable<DescriptionGroupProps['density']>, string> = {\n sm: 'gap-y-1',\n md: 'gap-y-2',\n lg: 'gap-y-3',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders label-value pairs as a semantic `<dl>` for settings and property lists.\n *\n * InlineLayout layout uses a 2-column grid; stacked puts each value below its label.\n */\ndefineOptions({ name: 'DescriptionGroup', inheritAttrs: false });\n\n/**\n * An array prop can only carry scalars, so each cell gets a scoped slot as the\n * rich override. Omitting the slot renders `item.label` / `item.value`.\n */\ndefineSlots<{\n /** The rich override for a row's label cell. */\n label?(props: { item: DescriptionGroupItem; index: number }): unknown;\n\n /** The rich override for a row's value cell. */\n value?(props: { item: DescriptionGroupItem; index: number }): unknown;\n}>();\n\nconst props = withDefaults(defineProps<DescriptionGroupProps>(), {\n layout: DescriptionGroupLayout.Inline,\n density: DescriptionGroupDensity.Md,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDListElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'text-sm',\n props.layout === DescriptionGroupLayout.Inline ? 'grid grid-cols-[max-content_1fr] gap-x-4' : 'flex flex-col gap-1',\n RowGap[props.density],\n attrs.class as string | undefined,\n ),\n);\n\nconst rowClasses = computed(() =>\n cn('contents', props.layout === DescriptionGroupLayout.Stacked && 'flex flex-col gap-0.5'),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <dl ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div v-for=\"(item, i) in props.items\" :key=\"item.label\" :class=\"rowClasses\">\n <dt class=\"text-muted-foreground\">\n <slot name=\"label\" :item=\"item\" :index=\"i\">{{ item.label }}</slot>\n </dt>\n <dd class=\"text-foreground\">\n <slot name=\"value\" :item=\"item\" :index=\"i\">{{ item.value }}</slot>\n </dd>\n </div>\n </dl>\n</template>\n","<script lang=\"ts\">\n/** Defines the InfoRow layout. */\nexport const InfoRowLayout = {\n /** Refers to label-value on one line. */\n Inline: 'inline',\n /** Refers to value stacked below its label. */\n Stacked: 'stacked',\n} as const;\n\nexport type InfoRowLayout = (typeof InfoRowLayout)[keyof typeof InfoRowLayout];\n\nexport interface InfoRowProps {\n /**\n * The label copy. React typed this as a required `ReactNode`; here the scalar\n * form is the prop and the same-named slot is the rich override, so it is\n * optional — a consumer filling `#label` need not also pass the prop.\n */\n readonly label?: string | number;\n\n /** The value copy. Optional for the same reason as `label`. */\n readonly value?: string | number;\n\n /** The layout: `inline` puts label-value on one line; `stacked` puts value below. Default `inline`. */\n readonly layout?: InfoRowLayout;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders one label-value row with an optional leading icon.\n *\n * Reach for this at one or two pairs, e.g. inside a card row; use `DescriptionGroup` for many.\n */\ndefineOptions({ name: 'InfoRow', inheritAttrs: false });\n\ndefineSlots<{\n /** The optional icon rendered before the label. */\n icon?(): unknown;\n\n /** The rich override for the `label` prop. */\n label?(): unknown;\n\n /** The rich override for the `value` prop. */\n value?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<InfoRowProps>(), { layout: InfoRowLayout.Inline });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'flex text-sm',\n props.layout === InfoRowLayout.Inline ? 'items-center justify-between gap-3' : 'flex-col gap-0.5',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <span class=\"inline-flex items-center gap-1.5 text-muted-foreground\">\n <slot name=\"icon\" />\n <slot name=\"label\">{{ props.label }}</slot>\n </span>\n <span class=\"text-foreground\">\n <slot name=\"value\">{{ props.value }}</slot>\n </span>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the MetricBadge icon tint tone. */\nexport const MetricBadgeTone = {\n /** Refers to the neutral tint. */\n Neutral: 'neutral',\n /** Refers to the positive / confirmation tint. */\n Success: 'success',\n /** Refers to the caution tint. */\n Warning: 'warning',\n /** Refers to the destructive / error tint. */\n Danger: 'danger',\n /** Refers to the informational tint. */\n Info: 'info',\n} as const;\n\nexport type MetricBadgeTone = (typeof MetricBadgeTone)[keyof typeof MetricBadgeTone];\n\n/** Defines the MetricBadge visual size. */\nexport const MetricBadgeSize = {\n /** Refers to the extra-small chip. */\n Xs: 'xs',\n /** Refers to the small chip. */\n Sm: 'sm',\n /** Refers to the medium chip. */\n Md: 'md',\n} as const;\n\nexport type MetricBadgeSize = (typeof MetricBadgeSize)[keyof typeof MetricBadgeSize];\n\nexport interface MetricBadgeProps {\n /** The uppercase mini-LABEL rendered after the icon. Rich content goes through the `label` slot. */\n readonly label: string | number;\n\n /** The value rendered after the label, tabular-nums. Rich content goes through the `value` slot. */\n readonly value: string | number;\n\n /** The tone tinting the icon and the value. Default `neutral`. */\n readonly tone?: MetricBadgeTone;\n\n /** The visual size — drives gap + text-size token. Default `sm`. */\n readonly size?: MetricBadgeSize;\n}\n\n/**\n * Tints the icon *and* the value.\n *\n * Tinting only the icon made `tone` a no-op on the icon-less chip — every tone\n * emitted an identical class string. The value is the part a reader scans, so it\n * carries the tone whether or not an icon is supplied.\n *\n * Coloured tones use `-soft-foreground`, not the full-strength `{tone}`: this text\n * sits on the host surface, where `text-warning` measures 2.15:1.\n */\nconst ToneClasses: Record<MetricBadgeTone, { icon: string; value: string }> = {\n neutral: { icon: 'text-muted-foreground', value: 'text-foreground' },\n success: { icon: 'text-success-soft-foreground', value: 'text-success-soft-foreground' },\n warning: { icon: 'text-warning-soft-foreground', value: 'text-warning-soft-foreground' },\n danger: { icon: 'text-destructive-soft-foreground', value: 'text-destructive-soft-foreground' },\n info: { icon: 'text-info-soft-foreground', value: 'text-info-soft-foreground' },\n};\n\nconst SizeClasses: Record<MetricBadgeSize, { wrapper: string; label: string; value: string }> = {\n xs: { wrapper: 'gap-1 text-[10px]', label: 'text-[10px]', value: 'text-xs' },\n sm: { wrapper: 'gap-1.5 text-xs', label: 'text-xs', value: 'text-xs' },\n md: { wrapper: 'gap-2 text-sm', label: 'text-xs', value: 'text-sm' },\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders an inline-flex label-value chip with a tone-tinted leading icon and an uppercase label.\n *\n * Used for stat strips. Distinct from `StatCard` (large KPI tile), `InfoRow` (justify-between two-column row), and\n * `Status` (dot + text).\n */\ndefineOptions({ name: 'MetricBadge', inheritAttrs: false });\n\ndefineSlots<{\n /** The optional leading icon (tone-tinted via the `tone` prop) — React's `icon` node prop. */\n icon?(): unknown;\n /** The rich override for the `label` prop. */\n label?(): unknown;\n /** The rich override for the `value` prop. */\n value?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<MetricBadgeProps>(), {\n tone: 'neutral',\n size: 'sm',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\nconst size = computed(() => SizeClasses[props.size]);\n\nconst classes = computed(() => cn('inline-flex items-center', size.value.wrapper, attrs.class as string | undefined));\n\nconst tone = computed(() => ToneClasses[props.tone]);\n\nconst iconClasses = computed(() => cn('inline-flex shrink-0 items-center', tone.value.icon));\n\nconst labelClasses = computed(() => cn('font-medium uppercase tracking-wide text-muted-foreground', size.value.label));\n\nconst valueClasses = computed(() => cn('tabular-nums', tone.value.value, size.value.value));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <span v-if=\"$slots.icon\" :class=\"iconClasses\"><slot name=\"icon\" /></span>\n <span :class=\"labelClasses\"\n ><slot name=\"label\">{{ props.label }}</slot></span\n >\n <span :class=\"valueClasses\"\n ><slot name=\"value\">{{ props.value }}</slot></span\n >\n </span>\n</template>\n","<script lang=\"ts\">\ntype EyebrowTextLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\n/** Defines the EyebrowText color tone. */\nexport const EyebrowTextTone = {\n /** Refers to the muted foreground. */\n Muted: 'muted',\n /** Refers to the subtle foreground. */\n Subtle: 'subtle',\n /** Refers to the default foreground. */\n Default: 'default',\n} as const;\n\nexport type EyebrowTextTone = (typeof EyebrowTextTone)[keyof typeof EyebrowTextTone];\n\nexport interface EyebrowTextProps {\n /** The semantic heading level (1–6). Default 3. */\n readonly level?: EyebrowTextLevel;\n\n /** The color tone. Default `muted`. */\n readonly tone?: EyebrowTextTone;\n}\n\nconst ToneClass: Record<NonNullable<EyebrowTextProps['tone']>, string> = {\n muted: 'text-muted-foreground',\n subtle: 'text-subtle-foreground',\n default: 'text-foreground',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a tiny uppercase mini-heading above a section, at standard tracking.\n *\n * Lighter than `SectionHeading`, which is a chunkier title + description + actions component.\n */\ndefineOptions({ name: 'EyebrowText', inheritAttrs: false });\n\n/** The eyebrow copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<EyebrowTextProps>(), {\n level: 3,\n tone: EyebrowTextTone.Muted,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst tag = computed(() => `h${props.level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6');\n\nconst classes = computed(() =>\n cn('text-[10px] font-semibold uppercase tracking-wider', ToneClass[props.tone], attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"tag\" ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></component>\n</template>\n","<script lang=\"ts\">\nexport interface MetaInlineTextProps {\n /** The gap between left-side meta items. Default `2`. */\n readonly gap?: '1' | '2' | '3';\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport InlineLayout from '../../layout/inlineLayout/InlineLayout.vue';\n\n/**\n * Renders an inline row of meta items with an optional trailing actions slot.\n *\n * The recurring drawer / card \"meta row\": badges, metric chips and status left, action buttons right.\n */\ndefineOptions({ name: 'MetaInlineText', inheritAttrs: false });\n\ndefineSlots<{\n /** The left-side meta items — React's `children`. */\n default(): unknown;\n\n /** The right-aligned slot — typically small action buttons. */\n actions?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<MetaInlineTextProps>(), { gap: '2' });\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<InstanceType<typeof InlineLayout>>('inner');\n\n/** The inner `InlineLayout`'s root element — the React original's forwarded ref. */\nconst el = computed(() => inner.value?.el ?? null);\n\nconst classes = computed(() => cn('w-full', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <InlineLayout ref=\"inner\" :gap=\"props.gap\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n <div v-if=\"$slots.actions\" class=\"ml-auto flex items-center gap-1\">\n <slot name=\"actions\" />\n </div>\n </InlineLayout>\n</template>\n","<script lang=\"ts\">\n/* `CornerPosition` is imported here (not in `<script setup>`) so the one binding serves\n as both the type below and the runtime value used in `withDefaults`. */\nimport { CornerPosition } from '../../../foundation/styles';\n\nexport interface BadgeOverlayProps {\n /** The position of the badge relative to the wrapper. Default `top-right`. */\n readonly position?: CornerPosition;\n\n /** The hidden state — hides the badge when truthy (e.g. when count is 0). */\n readonly isHidden?: boolean;\n}\n\nconst PositionClass: Record<NonNullable<BadgeOverlayProps['position']>, string> = {\n 'top-right': 'top-0 right-0 -translate-y-1/2 translate-x-1/2',\n 'top-left': 'top-0 left-0 -translate-y-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-0 right-0 translate-y-1/2 translate-x-1/2',\n 'bottom-left': 'bottom-0 left-0 translate-y-1/2 -translate-x-1/2',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a badge, dot, or icon pinned to a corner of whatever child it wraps.\n *\n * Attaches `CountBadge`, `NotificationIndicator`, or a `Badge` to an `Avatar`, an icon, or a square / circle `Button`.\n */\ndefineOptions({ name: 'BadgeOverlay', inheritAttrs: false });\n\n/** Both of React's required `ReactNode` props are structural, so both become slots. */\ndefineSlots<{\n /** The element to overlay on (avatar, button, image). */\n default(): unknown;\n\n /** The badge content (count, dot, icon). */\n badge(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<BadgeOverlayProps>(), {\n position: CornerPosition.TopRight,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('relative inline-flex', attrs.class as string | undefined));\n\nconst badgeClasses = computed(() => cn('absolute z-raised', PositionClass[props.position]));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n <span v-if=\"!props.isHidden\" :class=\"badgeClasses\"><slot name=\"badge\" /></span>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the SectionHeading title size step. */\nexport const SectionHeadingSize = {\n /** Refers to the medium step. */\n Md: 'md',\n /** Refers to the large step. */\n Lg: 'lg',\n /** Refers to the extra-large step. */\n Xl: 'xl',\n /** Refers to the 2x-large step. */\n Xxl: '2xl',\n} as const;\n\nexport type SectionHeadingSize = (typeof SectionHeadingSize)[keyof typeof SectionHeadingSize];\n\ntype SectionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface SectionHeadingProps {\n /**\n * The heading copy. React typed this as a required `ReactNode`; here the\n * scalar form is the prop and the same-named slot is the rich override, so\n * it is optional — a consumer filling `#title` need not also pass the prop.\n */\n readonly title?: string | number;\n\n /** The optional description below the title. */\n readonly description?: string | number;\n\n /** The heading element / size. Default level 2, size lg. */\n readonly level?: SectionHeadingLevel;\n readonly size?: SectionHeadingSize;\n\n /** The bottom border's visibility. Default true. */\n readonly isBordered?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn, Size } from '../../../foundation/styles';\nimport { TextColor } from '../text/Text.variants';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/** Renders a section header: a `Heading` title, an optional `Text` description, and an actions slot. */\ndefineOptions({ name: 'SectionHeading', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for the `title` prop. */\n title?(): unknown;\n\n /** The rich override for the `description` prop. */\n description?(): unknown;\n\n /** The right-aligned actions slot — typically Button(s). Cross-domain by design, passed as content. */\n actions?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<SectionHeadingProps>(), {\n level: 2,\n size: SectionHeadingSize.Lg,\n isBordered: true,\n});\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst hasDescription = computed(() => Boolean(props.description) || Boolean(slots.description));\n\nconst classes = computed(() =>\n cn(\n 'flex items-start justify-between gap-4 pb-3',\n props.isBordered && 'border-b border-border',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <header ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div class=\"flex min-w-0 flex-col gap-1\">\n <Heading :level=\"props.level\" :size=\"props.size\">\n <slot name=\"title\">{{ props.title }}</slot>\n </Heading>\n <Text v-if=\"hasDescription\" :size=\"Size.Sm\" :color=\"TextColor.Muted\">\n <slot name=\"description\">{{ props.description }}</slot>\n </Text>\n </div>\n <div v-if=\"$slots.actions\" class=\"flex shrink-0 items-center gap-2\">\n <slot name=\"actions\" />\n </div>\n </header>\n</template>\n","<script lang=\"ts\">\nexport interface HighlightTextProps {\n /**\n * The source text to render.\n *\n * React took this as `children: string` and split it. A Vue slot renders\n * opaque vnodes that cannot be tokenised, so the text has to arrive as a\n * prop — named `text`, matching the sibling `SnippetText`, which faced the same\n * \"string consumed by logic, not rendered as a node\" case.\n */\n readonly text: string;\n\n /** The substring(s) to highlight. Match is case-insensitive. */\n readonly query: string | ReadonlyArray<string>;\n\n /** The whole-word-only matching mode. Default `false`. */\n readonly isWholeWord?: boolean;\n}\n\n/** One run of the source text, flagged for `MarkText` wrapping. */\ninterface HighlightTextSegment {\n text: string;\n isMatch: boolean;\n}\n\nfunction escapeRegExp(re: string): string {\n return re.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport MarkText from '../markText/MarkText.vue';\n\n/**\n * Renders `text` with every occurrence of `query` wrapped in a `<MarkText>`.\n *\n * Case-insensitive, and `query` may be an array. Pass `isWholeWord` to skip partial matches.\n */\ndefineOptions({ name: 'HighlightText', inheritAttrs: false });\n\nconst props = defineProps<HighlightTextProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLSpanElement>('el');\n\n/* `typeof` rather than `Array.isArray` — the latter does not narrow a\n `ReadonlyArray` cleanly, and the two branches are equivalent here. */\nconst queries = computed<Array<string>>(() =>\n (typeof props.query === 'string' ? [props.query] : [...props.query]).filter(Boolean),\n);\n\n/**\n * With no usable query React returned the raw text in a bare span; that is the\n * single non-matching segment below, so both paths share one root element.\n */\nconst segments = computed<Array<HighlightTextSegment>>(() => {\n const list = queries.value;\n if (list.length === 0) return [{ text: props.text, isMatch: false }];\n\n const pattern = list.map(escapeRegExp).join('|');\n const regex = new RegExp(props.isWholeWord ? `\\\\b(${pattern})\\\\b` : `(${pattern})`, 'gi');\n\n return props.text\n .split(regex)\n .filter((part) => part !== '')\n .map((part) => ({\n text: part,\n isMatch: list.some((q) => part.toLowerCase() === q.toLowerCase()),\n }));\n});\n\nconst classes = computed(() => cn(attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <span ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <template v-for=\"(segment, i) in segments\" :key=\"i\">\n <MarkText v-if=\"segment.isMatch\">{{ segment.text }}</MarkText>\n <template v-else>{{ segment.text }}</template>\n </template>\n </span>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/** The open / disabled state a `CollapsibleGroup` root shares with its trigger and content. */\nexport interface CollapsibleGroupContextValue {\n /** The open state. Live getter — read it, don't destructure it. */\n readonly open: boolean;\n\n /** Sets the open state (and fires the root's `open-change`). */\n setOpen: (open: boolean) => void;\n\n /** The id the content pane carries and the trigger points at through `aria-controls`. */\n contentId: string;\n\n /** The id the trigger carries and the content pane points at through `aria-labelledby`. */\n triggerId: string;\n\n /** The disabled state. Live getter. */\n readonly disabled: boolean;\n}\n\nexport const CollapsibleGroupKey: InjectionKey<CollapsibleGroupContextValue> = Symbol('wow-two.collapsible');\n\n/** Reads the surrounding `CollapsibleGroup`. Throws outside one — the parts are not standalone. */\nexport function useCollapsibleContext(): CollapsibleGroupContextValue {\n const context = inject(CollapsibleGroupKey, null);\n if (!context) throw new Error('CollapsibleGroup.* must be used inside <CollapsibleGroup>');\n return context;\n}\n","<script lang=\"ts\">\n/** Controlled axes use their canonical Vue model names; each update event requests caller state. */\nexport interface CollapsibleGroupProps {\n /** The open state, controlled. The `v-model:open` binding target. */\n readonly open?: boolean;\n\n /** The uncontrolled initial state. Default `false`. */\n readonly defaultOpen?: boolean;\n\n /** The disabled mode — the trigger stops toggling. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useControlled } from '../../../foundation/state';\nimport { useId } from '../../../foundation/identifiers';\nimport { CollapsibleGroupKey } from './CollapsibleGroupContext';\n\n/**\n * Renders the disclosure root that owns the open state and the trigger / content id pair.\n *\n * Both reach `CollapsibleGroupTrigger` and `CollapsibleGroupContent` through injection.\n */\ndefineOptions({ name: 'CollapsibleGroup', inheritAttrs: false });\n\n/** The trigger + content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* `open: undefined` / `open: undefined` are load-bearing: Vue coerces an absent\n `Boolean` prop to `false` unless the declaration owns a `default` key, which would\n read as explicitly-closed-and-controlled and strand the uncontrolled path. */\nconst props = withDefaults(defineProps<CollapsibleGroupProps>(), {\n open: undefined,\n defaultOpen: false,\n isDisabled: false,\n});\n\nconst emit = defineEmits<{\n /** Fires when the pane opens or closes — the `v-model:open` half. */\n 'update:open': [open: boolean];\n}>();\n\n/* `useControlled` returns a handle, not React's tuple, and takes `controlled` as a getter so the\n controlled branch tracks the prop. */\nconst { value: open, setValue: setOpen } = useControlled<boolean>({\n controlled: () => props.open,\n default: props.defaultOpen,\n onChange: (next) => {\n emit('update:open', next);\n },\n});\n\nconst contentId = useId();\nconst triggerId = useId();\n\nprovide(CollapsibleGroupKey, {\n get open() {\n return open.value;\n },\n setOpen,\n contentId,\n triggerId,\n get disabled() {\n return props.isDisabled;\n },\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn(attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs first, `v-bind=\"rest\"` after — a consumer-supplied `data-state` still wins, as it\n did through React's trailing `{...rest}` spread. -->\n <div\n ref=\"el\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"dataAttr(props.isDisabled)\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface CollapsibleGroupTriggerProps {\n /** The as-child flag — renders the slot child instead of a `<button>`, with the trigger's props merged in. */\n readonly asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { shallowRef } from 'vue';\nimport { ButtonType, dataAttr, HtmlElement } from '../../../foundation/dom';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useCollapsibleContext } from './CollapsibleGroupContext';\n\n/** Renders the disclosure toggle, owning `aria-expanded` and `aria-controls` for its pane. */\ndefineOptions({ name: 'CollapsibleGroupTrigger', inheritAttrs: false });\n\n/** The trigger content — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<CollapsibleGroupTriggerProps>(), { asChild: false });\n\nconst context = useCollapsibleContext();\n\n/** The rendered element — the Vue stand-in for the React original's forwarded ref. */\nconst el = shallowRef<HTMLElement | null>(null);\nconst setEl = (value: unknown): void => {\n const node = (value as { $el?: unknown } | null)?.$el ?? value;\n el.value = node instanceof HTMLElement ? node : null;\n};\n\n/* Chained after the consumer's own click (attribute fallthrough puts theirs first) and skipped\n when they called `preventDefault()` — the original's `onClick?.(e); if (e.defaultPrevented) return`. */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented || context.disabled) return;\n context.setOpen(!context.open);\n}\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs first, `v-bind=\"$attrs\"` after (consumer wins, as through React's trailing\n `{...rest}`), own handler last so the consumer's click runs first. -->\n <Primitive\n :ref=\"setEl\"\n :as=\"HtmlElement.Button\"\n :as-child=\"asChild\"\n :id=\"context.triggerId\"\n :type=\"ButtonType.Button\"\n :aria-expanded=\"context.open\"\n :aria-controls=\"context.contentId\"\n :data-state=\"context.open ? 'open' : 'closed'\"\n :data-disabled=\"dataAttr(context.disabled)\"\n :disabled=\"context.disabled\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * Internal — not exported from `index.ts`. The element `<Presence>` mounts and clones\n * `data-state` + its tracking ref onto, split out because `Presence` needs a single\n * element it can hand `data-state` to.\n */\nexport interface CollapsibleGroupContentInnerProps {\n /** The force-mounted mode — keeps the pane in the DOM while closed. */\n readonly isForceMounted?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useCollapsibleContext } from './CollapsibleGroupContext';\n\n/**\n * Renders the animating inner pane of a `CollapsibleGroupContent`, growing its height as the pane opens.\n *\n * Height animates through grid-template-rows 0fr -> 1fr gated on `data-state`, with a fade layered on the inner pane.\n * Reduced-motion users get the resolved height / opacity with no transition (motion-safe / motion-reduce).\n */\ndefineOptions({ name: 'CollapsibleGroupContentInner', inheritAttrs: false });\n\n/** The pane content. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<CollapsibleGroupContentInnerProps>(), {\n isForceMounted: undefined,\n});\n\nconst attrs = useAttrs();\nconst context = useCollapsibleContext();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'grid grid-rows-[0fr] motion-safe:transition-[grid-template-rows]',\n 'motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out)',\n 'data-[state=open]:grid-rows-[1fr]',\n attrs.class as string | undefined,\n ),\n);\n\n/**\n * Everything but `class`, which is re-applied through `cn` above. `data-state` rides in here —\n * `Presence` clones it onto this vnode.\n */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"el\"\n :id=\"context.contentId\"\n role=\"region\"\n :aria-labelledby=\"context.triggerId\"\n :hidden=\"!context.open && !isForceMounted\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <div\n class=\"min-h-0 overflow-hidden motion-safe:data-[state=open]:animate-(--animate-fade-in) motion-safe:data-[state=closed]:animate-(--animate-fade-out) motion-reduce:animate-none\"\n :data-state=\"context.open ? 'open' : 'closed'\"\n >\n <slot />\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface CollapsibleGroupContentProps {\n /** The force-mounted mode — renders hidden content but keeps it in the DOM (for animations). */\n readonly isForceMounted?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { Presence } from '../../../foundation/primitives';\nimport { useCollapsibleContext } from './CollapsibleGroupContext';\nimport CollapsibleGroupContentInner from './CollapsibleGroupContentInner.vue';\n\n/**\n * Renders the disclosure pane, kept mounted by `Presence` until its close animation ends.\n *\n * Force-mounted it renders straight through with an explicit `data-state`; otherwise `Presence` supplies `data-state`\n * itself.\n */\ndefineOptions({ name: 'CollapsibleGroupContent', inheritAttrs: false });\n\n/** The pane content — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<CollapsibleGroupContentProps>(), {\n isForceMounted: undefined,\n});\n\nconst context = useCollapsibleContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/** The rendered pane — the Vue stand-in for the React original's forwarded ref. */\nconst el = computed<HTMLElement | null>(() => (inner.value?.$el instanceof HTMLElement ? inner.value.$el : null));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <CollapsibleGroupContentInner\n v-if=\"isForceMounted\"\n ref=\"inner\"\n :is-force-mounted=\"isForceMounted\"\n :data-state=\"context.open ? 'open' : 'closed'\"\n v-bind=\"$attrs\"\n >\n <slot />\n </CollapsibleGroupContentInner>\n <Presence v-else :is-present=\"context.open\">\n <CollapsibleGroupContentInner ref=\"inner\" :is-force-mounted=\"isForceMounted\" v-bind=\"$attrs\">\n <slot />\n </CollapsibleGroupContentInner>\n </Presence>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/** Defines the AccordionGroup selection mode. */\nexport const AccordionGroupType = {\n /** Refers to allowing one open panel at a time. */\n Single: 'single',\n /** Refers to allowing multiple open panels. */\n Multiple: 'multiple',\n} as const;\n\nexport type AccordionGroupType = (typeof AccordionGroupType)[keyof typeof AccordionGroupType];\n\n/** The open-set state an `AccordionGroup` root shares with its items. */\nexport interface AccordionGroupContextValue {\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n disabled: boolean;\n}\n\nexport const AccordionGroupKey: InjectionKey<AccordionGroupContextValue> = Symbol('wow-two.accordion');\n\n/** Reads the enclosing `AccordionGroup` state. */\nexport function useAccordionContext(): AccordionGroupContextValue {\n const context = inject(AccordionGroupKey, null);\n if (!context) throw new Error('AccordionGroup.* must be used inside <AccordionGroup>');\n return context;\n}\n\n/** The per-item state an `AccordionGroupItem` shares with its trigger and content. */\nexport interface AccordionGroupItemContextValue {\n value: string;\n open: boolean;\n contentId: string;\n triggerId: string;\n disabled: boolean;\n}\n\nexport const AccordionGroupItemKey: InjectionKey<AccordionGroupItemContextValue> = Symbol('wow-two.accordionItem');\n\n/** Reads the enclosing `AccordionGroupItem` state. */\nexport function useAccordionItemContext(): AccordionGroupItemContextValue {\n const context = inject(AccordionGroupItemKey, null);\n if (!context) throw new Error('AccordionGroup.Trigger / Content must be used inside <AccordionGroup.Item>');\n return context;\n}\n","<script lang=\"ts\">\n/* `AccordionGroupType` is imported here (not in `<script setup>`) so the one binding\n serves as both the type below and the runtime value used in `withDefaults`. */\nimport { AccordionGroupType } from './AccordionGroupContext';\n\n/**\n * Represents the prop surface of `AccordionGroup`.\n *\n * React modelled this as a discriminated union — `{ type: 'single'; value?: string }` vs\n * `{ type: 'multiple'; value?: ReadonlyArray<string> }`. `defineProps<T>()` cannot take a\n * union: the SFC compiler resolves the type into a runtime props declaration and has no\n * way to express \"these keys only when `type` is `multiple`\". The two arms are flattened\n * into one interface with widened `modelValue` / `defaultValue`, and the runtime still branches\n * on `type` exactly as before. `isCollapsible` is read only when `type` is `single`.\n */\nexport interface AccordionGroupProps {\n /** The selection mode — one open panel (`single`) or many (`multiple`). Default `single`. */\n readonly type?: AccordionGroupType;\n /** The controlled open value — a string when `single`, an array when `multiple`. */\n readonly modelValue?: string | ReadonlyArray<string>;\n /** The initial open value when uncontrolled. */\n readonly defaultValue?: string | ReadonlyArray<string>;\n /** The click-to-close behaviour for the open panel. `single` mode only. Default `false`. */\n readonly isCollapsible?: boolean;\n /** The disabled state for every item in the group. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { Orientation, RovingFocusGroup } from '../../../foundation/primitives';\nimport { AccordionGroupKey, type AccordionGroupContextValue } from './AccordionGroupContext';\n\n/**\n * Renders a vertical disclosure group that owns the open set and shares it with its items.\n *\n * Arrow-key navigation comes from `RovingFocusGroup`; items read the open set through injection.\n *\n * React attached the parts as `AccordionGroup.Item` / `.Trigger` / `.Content` via `Object.assign`. An SFC's generated\n * default export cannot carry statics cleanly, so they ship as siblings: `AccordionGroupItem`, `AccordionGroupTrigger`,\n * `AccordionGroupContent`.\n */\ndefineOptions({ name: 'AccordionGroup', inheritAttrs: false });\n\n/** The `AccordionGroupItem` children. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<AccordionGroupProps>(), {\n type: AccordionGroupType.Single,\n modelValue: undefined,\n defaultValue: undefined,\n isCollapsible: false,\n isDisabled: false,\n});\n\n/** React's `onValueChange`. Payload is a string in `single` mode, an array in `multiple`. */\nconst emit = defineEmits<{\n /** Fires when the reader opens or closes a panel, with the new open value. */\n 'update:modelValue': [value: string | ReadonlyArray<string>];\n}>();\n\nconst attrs = useAttrs();\nconst group = useTemplateRef<InstanceType<typeof RovingFocusGroup>>('group');\n\n/* Read once, exactly as React's `useState(defaultValue)` seed was. */\nconst initial = props.defaultValue ?? (props.type === AccordionGroupType.Multiple ? [] : '');\n\nconst current = useControlled<string | ReadonlyArray<string>>({\n controlled: () => props.modelValue,\n default: initial,\n onChange: (next) => emit('update:modelValue', next),\n});\n\nfunction isOpen(value: string): boolean {\n const value_ = current.value.value;\n return Array.isArray(value_) ? value_.includes(value) : value_ === value;\n}\n\nfunction toggle(value: string): void {\n const value_ = current.value.value;\n if (props.type === AccordionGroupType.Multiple) {\n const list = Array.isArray(value_) ? value_ : [];\n current.setValue(list.includes(value) ? list.filter((entry) => entry !== value) : [...list, value]);\n return;\n }\n if (value_ === value) {\n if (props.isCollapsible) current.setValue('');\n } else {\n current.setValue(value);\n }\n}\n\n/* Live getter on `disabled` — a root-level `isDisabled` flip has to reach items\n that are already mounted, which a snapshot would not do. */\nprovide<AccordionGroupContextValue>(AccordionGroupKey, {\n isOpen,\n toggle,\n get disabled() {\n return props.isDisabled;\n },\n});\n\nconst classes = computed(() => cn('flex flex-col', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el: computed(() => group.value?.el ?? null) });\n</script>\n\n<template>\n <RovingFocusGroup ref=\"group\" :orientation=\"Orientation.Vertical\" can-loop v-bind=\"rest\" :class=\"classes\">\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\nexport interface AccordionGroupItemProps {\n /** The identity of this panel within the group's open set. */\n readonly value: string;\n /** The disabled state for this item alone. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useId } from '../../../foundation/identifiers';\nimport {\n AccordionGroupItemKey,\n useAccordionContext,\n type AccordionGroupItemContextValue,\n} from './AccordionGroupContext';\n\n/** Renders one disclosure panel, pairing an `AccordionGroupTrigger` with its `AccordionGroupContent`. */\ndefineOptions({ name: 'AccordionGroupItem', inheritAttrs: false });\n\n/** The trigger + content — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<AccordionGroupItemProps>(), { isDisabled: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst accordion = useAccordionContext();\n\nconst contentId = useId();\nconst triggerId = useId();\n\nconst open = computed(() => accordion.isOpen(props.value));\nconst itemDisabled = computed(() => props.isDisabled || accordion.disabled);\n\n/* Live getters — `open` and `disabled` both change after mount. */\nprovide<AccordionGroupItemContextValue>(AccordionGroupItemKey, {\n get value() {\n return props.value;\n },\n get open() {\n return open.value;\n },\n contentId,\n triggerId,\n get disabled() {\n return itemDisabled.value;\n },\n});\n\nconst classes = computed(() => cn('border-b border-border', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"el\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"dataAttr(itemDisabled)\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `AccordionGroupTriggerProps` and consumers import it.\n Its only member was `children`, which is the default slot here; every button\n attribute falls through. */\nexport interface AccordionGroupTriggerProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs, type ComponentPublicInstance } from 'vue';\nimport { ChevronDown } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\nimport { useAccordionContext, useAccordionItemContext } from './AccordionGroupContext';\n\n/** Renders the clickable header of an `AccordionGroupItem` — toggles its panel and carries the chevron. */\ndefineOptions({ name: 'AccordionGroupTrigger', inheritAttrs: false });\n\n/** The trigger label — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst accordion = useAccordionContext();\nconst item = useAccordionItemContext();\n\n/* Reactive object — bound member-by-member below rather than destructured, since\n `tabindex` tracks the group's tab stop. */\nconst roving = useRovingFocusItem();\n\n/* React composed the roving ref with the forwarded one. Vue has no `composeRefs`,\n so one function ref feeds both the group and `defineExpose`. */\nconst el = shallowRef<HTMLButtonElement | null>(null);\n\nfunction setEl(node: Element | ComponentPublicInstance | null): void {\n el.value = (node as HTMLButtonElement | null) ?? null;\n roving.ref(node);\n}\n\n/* Own handler runs after any consumer `@click` that arrived through `rest`, so\n `defaultPrevented` is the consumer's opt-out — React's `onClick?.(e)` then\n `if (e.defaultPrevented || item.disabled) return` in the same order. */\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented || item.disabled) return;\n accordion.toggle(item.value);\n}\n\nconst classes = computed(() =>\n cn(\n 'flex w-full items-center justify-between gap-2 px-3 py-3 text-left text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n attrs.class as string | undefined,\n ),\n);\n\nconst chevronClasses = computed(() =>\n cn('h-4 w-4 shrink-0 text-muted-foreground transition-transform', item.open && 'rotate-180'),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <h3 class=\"flex\">\n <button\n :id=\"item.triggerId\"\n :ref=\"setEl\"\n type=\"button\"\n :aria-expanded=\"item.open\"\n :aria-controls=\"item.contentId\"\n :data-state=\"item.open ? 'open' : 'closed'\"\n :data-disabled=\"dataAttr(item.disabled)\"\n :disabled=\"item.disabled\"\n :tabindex=\"roving.tabindex\"\n data-roving-focus-item\n v-bind=\"rest\"\n :class=\"classes\"\n @focus=\"roving.onFocus\"\n @keydown=\"roving.onKeydown\"\n @click=\"onClick\"\n >\n <span class=\"flex-1\"><slot /></span>\n <ChevronDown :class=\"chevronClasses\" />\n </button>\n </h3>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `AccordionGroupContentProps` and consumers import it.\n Its only member was `children`, which is the default slot here; every div\n attribute falls through. */\nexport interface AccordionGroupContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { Presence } from '../../../foundation/primitives';\nimport { useAccordionItemContext } from './AccordionGroupContext';\n\n/** Renders the collapsible panel body of an `AccordionGroupItem`, mounted while its trigger is open. */\ndefineOptions({ name: 'AccordionGroupContent', inheritAttrs: false });\n\n/** The panel body — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst item = useAccordionItemContext();\n\nconst classes = computed(() =>\n cn(\n 'grid text-sm text-foreground',\n 'motion-safe:transition-[grid-template-rows] motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) motion-reduce:transition-none',\n 'data-[state=open]:grid-rows-[1fr] data-[state=closed]:grid-rows-[0fr]',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <Presence :is-present=\"item.open\">\n <!--\n Height expand/collapse via grid-template-rows 0fr -> 1fr. The outer\n grid row is what animates; the inner `min-h-0 overflow-hidden` track\n clips the content so it can collapse to zero height. `data-state`\n (and the ref) are injected by Presence so the exit transition can play\n before unmount. Motion-safe-gated; reduced-motion gets an instant snap.\n -->\n <div ref=\"el\" :id=\"item.contentId\" role=\"region\" :aria-labelledby=\"item.triggerId\" v-bind=\"rest\" :class=\"classes\">\n <!-- Content padding is consumer-owned (no default) — wrap the slot with your own\n padding so each panel sets any value; it collapses cleanly inside this clip. -->\n <div class=\"min-h-0 overflow-hidden\"><slot /></div>\n </div>\n </Presence>\n</template>\n","import { inject, type InjectionKey } from 'vue';\nimport type { Orientation } from '../../../foundation/styles';\n\n/** Defines when a TabsGroup tab activates on keyboard navigation. */\nexport const TabsGroupActivationMode = {\n /** Refers to activating a tab as soon as it is focused. */\n Automatic: 'automatic',\n /** Refers to requiring Enter/Space to activate a focused tab. */\n Manual: 'manual',\n} as const;\n\nexport type TabsGroupActivationMode = (typeof TabsGroupActivationMode)[keyof typeof TabsGroupActivationMode];\n\n/**\n * The seam between `TabsGroup` and its `TabsGroupList` / `TabsGroupTab` / `TabsGroupPanel` children.\n *\n * React attached these as `TabsGroup.List` / `.Tab` / `.Panel` statics over a\n * `createContext`. An SFC's generated default export cannot carry statics\n * cleanly, so they ship as sibling components and share state through\n * provide/inject instead.\n *\n * Every field but `setValue` is a live getter — read them, don't destructure.\n */\nexport interface TabsGroupContextValue {\n /** The active tab value. */\n readonly value: string;\n /** Selects a tab. */\n setValue: (value: string) => void;\n /** The layout axis of the tablist. */\n readonly orientation: Orientation;\n /** Whether focus alone activates a tab. */\n readonly activationMode: TabsGroupActivationMode;\n /** The id prefix shared by every tab / panel pair. */\n readonly baseId: string;\n}\n\nexport const TabsGroupKey: InjectionKey<TabsGroupContextValue> = Symbol('wow-two.tabs');\n\nexport function useTabsContext(): TabsGroupContextValue {\n const context = inject(TabsGroupKey, null);\n if (!context) throw new Error('TabsGroup.* must be used inside <TabsGroup>');\n return context;\n}\n","<script lang=\"ts\">\nimport type { Orientation } from '../../../foundation/styles';\nimport type { TabsGroupActivationMode } from './TabsGroupContext';\n\nexport interface TabsGroupProps {\n /** The controlled active tab value. */\n readonly modelValue?: string;\n /** The uncontrolled initial tab value. */\n readonly defaultValue?: string;\n /** The layout axis. Default `horizontal`. */\n readonly orientation?: Orientation;\n /** Whether focus alone activates a tab. Default `automatic`. */\n readonly activationMode?: TabsGroupActivationMode;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn, Orientation as OrientationValue } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { useId } from '../../../foundation/identifiers';\nimport {\n TabsGroupActivationMode as TabsGroupActivationModeValue,\n TabsGroupKey,\n type TabsGroupContextValue,\n} from './TabsGroupContext';\n\n/**\n * Renders the tabs root that owns the active value and shares it with its parts.\n *\n * `TabsGroupList` / `TabsGroupTab` / `TabsGroupPanel` read it through injection — React attached those as\n * `TabsGroup.List` / `.Tab` /\n * `.Panel` statics, which an SFC's default export cannot carry.\n */\ndefineOptions({ name: 'TabsGroup', inheritAttrs: false });\n\n/** The tablist and panels — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TabsGroupProps>(), {\n modelValue: undefined,\n defaultValue: undefined,\n orientation: OrientationValue.Horizontal,\n activationMode: TabsGroupActivationModeValue.Automatic,\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader selects a different tab, with its value. */\n 'update:modelValue': [value: string];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst { value: active, setValue: setActive } = useControlled<string>({\n controlled: () => props.modelValue,\n default: props.defaultValue ?? '',\n onChange: (next) => emit('update:modelValue', next),\n});\n\nconst baseId = useId();\n\n/* Live getters, not a snapshot — an orientation or activation-mode change on\n the root has to reach every already-mounted tab. */\nprovide<TabsGroupContextValue>(TabsGroupKey, {\n get value() {\n return active.value;\n },\n setValue: setActive,\n get orientation() {\n return props.orientation;\n },\n get activationMode() {\n return props.activationMode;\n },\n baseId,\n});\n\nconst classes = computed(() =>\n cn(\n props.orientation === OrientationValue.Vertical ? 'flex gap-2' : 'flex flex-col gap-2',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" :data-orientation=\"orientation\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `TabsGroupListProps` and consumers import it. Its only\n member was `children`, which is the default slot here; every attribute falls through. */\nexport interface TabsGroupListProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn, Orientation } from '../../../foundation/styles';\nimport { RovingFocusGroup, type ComponentElement } from '../../../foundation/primitives';\nimport { useTabsContext } from './TabsGroupContext';\n\n/** Renders the tablist strip, taking arrow-key navigation from `RovingFocusGroup`. */\ndefineOptions({ name: 'TabsGroupList', inheritAttrs: false });\n\n/** The `TabsGroupTab` children — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<ComponentElement>('el');\nconst tabs = useTabsContext();\n\nconst classes = computed(() =>\n cn(\n 'inline-flex border-border',\n tabs.orientation === Orientation.Vertical ? 'flex-col border-r' : 'flex-row border-b',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <RovingFocusGroup\n ref=\"el\"\n :orientation=\"tabs.orientation\"\n can-loop\n role=\"tablist\"\n :aria-orientation=\"tabs.orientation\"\n :data-orientation=\"tabs.orientation\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\nexport interface TabsGroupTabProps {\n /** The value this tab selects — pairs it with the `TabsGroupPanel` of the same value. */\n readonly value: string;\n /** The disabled state. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, mergeProps, shallowRef, useAttrs } from 'vue';\nimport { cn, Orientation } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\nimport { TabsGroupActivationMode, useTabsContext } from './TabsGroupContext';\n\n/** Renders one tab button; the selected tab is the roving tab stop, per APG. */\ndefineOptions({ name: 'TabsGroupTab', inheritAttrs: false });\n\n/** The tab label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TabsGroupTabProps>(), { isDisabled: false });\n\nconst attrs = useAttrs();\nconst tabs = useTabsContext();\n\nconst selected = computed(() => tabs.value === props.value);\n\n// Selected tab is the Tab stop (per APG) — seeds/syncs roving focusedId when focus is outside the tablist.\n// Reactive object: bound with `v-bind`, never destructured.\nconst item = useRovingFocusItem({ isActive: () => selected.value });\n\n/* One element, two consumers of `ref` — the roving group needs the node and\n `defineExpose` publishes it. React composed them with a callback ref; this is\n the same composition, and it wins over `item.ref` by sitting after `v-bind`. */\nconst el = shallowRef<HTMLButtonElement | null>(null);\nfunction setRef(node: unknown): void {\n el.value = (node ?? null) as HTMLButtonElement | null;\n item.ref(node);\n}\n\nconst tabId = computed(() => `${tabs.baseId}-tab-${props.value}`);\nconst panelId = computed(() => `${tabs.baseId}-panel-${props.value}`);\n\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n tabs.setValue(props.value);\n}\n\nfunction onFocus(): void {\n if (tabs.activationMode === TabsGroupActivationMode.Automatic && !props.isDisabled) {\n tabs.setValue(props.value);\n }\n}\n\nconst classes = computed(() =>\n cn(\n 'inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium text-muted-foreground transition-colors',\n 'hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n 'data-[state=active]:text-foreground data-[state=active]:border-primary',\n tabs.orientation === Orientation.Vertical\n ? 'border-r-2 border-transparent data-[state=active]:border-primary'\n : 'border-b-2 border-transparent data-[state=active]:border-primary',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/**\n * The fallthrough attrs merged with the roving-focus item's bindings.\n *\n * `mergeProps` rather than an object spread: both sides can carry `onFocus`, and\n * a spread would drop the consumer's. Reading `item`'s members inside a computed\n * keeps them tracked, so `tabindex` still follows the group's tab stop.\n * `item.ref` is overridden by the explicit `:ref` below, which composes it.\n */\nconst bindings = computed(() => mergeProps(rest.value, item as unknown as Record<string, unknown>));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `bindings` (fallthrough attrs + the roving item), then own\n handlers last — a consumer's `click` / `focus` handler therefore runs before\n ours, the order React got from calling `onClick?.(e)` ahead of its own logic,\n which is what makes the `defaultPrevented` check below meaningful. -->\n <button\n :id=\"tabId\"\n role=\"tab\"\n type=\"button\"\n :aria-selected=\"selected\"\n :aria-controls=\"panelId\"\n :data-state=\"selected ? 'active' : 'inactive'\"\n :data-disabled=\"dataAttr(isDisabled)\"\n :disabled=\"isDisabled\"\n v-bind=\"bindings\"\n :ref=\"setRef\"\n :class=\"classes\"\n @click=\"onClick\"\n @focus=\"onFocus\"\n >\n <slot />\n </button>\n</template>\n","<script lang=\"ts\">\nexport interface TabsGroupPanelProps {\n /** The value this panel belongs to — pairs it with the `TabsGroupTab` of the same value. */\n readonly value: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useTabsContext } from './TabsGroupContext';\n\n/**\n * Renders the panel of one tab, mounted only while that tab is active.\n *\n * Per APG there is no `Presence` exit — the outgoing panel just unmounts and the incoming one is a fresh mount, so\n * the fade-in replays. React forced that with `key={ctx.value}`.\n */\ndefineOptions({ name: 'TabsGroupPanel', inheritAttrs: false });\n\n/** The panel content — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<TabsGroupPanelProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst tabs = useTabsContext();\n\nconst isActive = computed(() => tabs.value === props.value);\n\nconst tabId = computed(() => `${tabs.baseId}-tab-${props.value}`);\nconst panelId = computed(() => `${tabs.baseId}-panel-${props.value}`);\n\nconst classes = computed(() =>\n cn(\n 'flex-1 outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n 'motion-safe:animate-(--animate-fade-in)',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n v-if=\"isActive\"\n ref=\"el\"\n v-bind=\"rest\"\n :id=\"panelId\"\n role=\"tabpanel\"\n :aria-labelledby=\"tabId\"\n :tabindex=\"0\"\n :class=\"classes\"\n >\n <slot />\n </div>\n</template>\n","import { tv, type VariantProps } from '../../../foundation/styles';\n\n/** Defines the ListGroup item marker style. */\nexport const ListGroupMarker = {\n /** Refers to no marker (flush list). */\n None: 'none',\n /** Refers to a filled-disc bullet. */\n Disc: 'disc',\n /** Refers to a decimal-numbered marker. */\n Decimal: 'decimal',\n /** Refers to a check-mark marker. */\n Check: 'check',\n} as const;\n\nexport type ListGroupMarker = (typeof ListGroupMarker)[keyof typeof ListGroupMarker];\n\n/** Defines the vertical spacing between ListGroup items. */\nexport const ListGroupSpacing = {\n /** Refers to tight spacing. */\n Tight: 'tight',\n /** Refers to normal (default) spacing. */\n Normal: 'normal',\n /** Refers to loose spacing. */\n Loose: 'loose',\n} as const;\n\nexport type ListGroupSpacing = (typeof ListGroupSpacing)[keyof typeof ListGroupSpacing];\n\nexport const listVariants = tv({\n base: 'list-outside',\n variants: {\n marker: {\n none: 'list-none pl-0',\n disc: 'list-disc pl-5',\n decimal: 'list-decimal pl-5',\n check: 'list-none pl-0',\n },\n spacing: {\n tight: '[&>li]:py-0.5',\n normal: '[&>li]:py-1',\n loose: '[&>li]:py-2',\n },\n },\n defaultVariants: {\n marker: 'none',\n spacing: 'normal',\n },\n});\n\nexport const listItemVariants = tv({\n base: 'flex items-start gap-3 text-sm text-foreground',\n});\n\nexport type ListGroupVariants = VariantProps<typeof listVariants>;\n\n/* Compile-time lock: enum values ≡ tv marker/spacing value-sets (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertListMarker: AssertExact<ListGroupMarker, NonNullable<VariantProps<typeof listVariants>['marker']>> = true;\nconst _assertListSpacing: AssertExact<\n ListGroupSpacing,\n NonNullable<VariantProps<typeof listVariants>['spacing']>\n> = true;\nvoid _assertListMarker;\nvoid _assertListSpacing;\n","import { inject, type InjectionKey } from 'vue';\nimport type { ListGroupMarker } from './ListGroup.variants';\n\n/** The marker preset a `ListGroup` root shares with its items. */\nexport interface ListGroupContextValue {\n /** The root's `marker` prop. Live getter — read it, don't destructure it. */\n readonly marker: ListGroupMarker;\n}\n\nexport const ListGroupKey: InjectionKey<ListGroupContextValue> = Symbol('wow-two.list');\n\n/**\n * Reads the surrounding `ListGroup`.\n *\n * Unlike the other compound families in this group this does **not** throw: a bare\n * `<li>` is documented as a valid child, so `ListGroupItem` has to stand alone. Outside a\n * `ListGroup` the marker reads as `none`, which is the root's own default.\n */\nexport function useListContext(): ListGroupContextValue {\n return inject(ListGroupKey, { marker: 'none' });\n}\n","<script lang=\"ts\">\nimport type { ListGroupMarker, ListGroupSpacing } from './ListGroup.variants';\n\nexport interface ListGroupProps {\n /** The ordered mode — renders `<ol>` instead of `<ul>`. */\n readonly isOrdered?: boolean;\n\n /** The item marker style. */\n readonly marker?: ListGroupMarker;\n\n /** The vertical spacing between items. */\n readonly spacing?: ListGroupSpacing;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { listVariants } from './ListGroup.variants';\nimport { ListGroupKey } from './ListGroupContext';\n\n/**\n * Renders a bulleted, numbered, or check list container.\n *\n * Pair with `ListGroupItem` for the leading-trailing row shape; a bare `<li>` works too.\n */\ndefineOptions({ name: 'ListGroup', inheritAttrs: false });\n\n/** The list items — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ListGroupProps>(), { isOrdered: undefined });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst tag = computed(() => (props.isOrdered ? 'ol' : 'ul'));\n\n/* `marker=\"check\"` sets `list-none` — the check itself is drawn by `ListGroupItem`, which\n needs the root's marker to know that. A getter keeps the value live. */\nprovide(ListGroupKey, {\n get marker() {\n return props.marker ?? 'none';\n },\n});\n\nconst classes = computed(() =>\n cn(listVariants({ marker: props.marker, spacing: props.spacing }), attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"tag\" ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></component>\n</template>\n","<script lang=\"ts\">\nexport interface ListGroupItemProps {\n /**\n * The check-marker override.\n *\n * Omitted, it follows the parent `ListGroup`'s `marker` — a check appears under\n * `marker=\"check\"` and nowhere else. Set it explicitly to force the marker on or\n * off for one row.\n */\n readonly hasCheckMarker?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { Check } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { listItemVariants } from './ListGroup.variants';\nimport { useListContext } from './ListGroupContext';\n\n/** Renders a `ListGroup` row with an optional check marker and leading / trailing adornments. */\ndefineOptions({ name: 'ListGroupItem', inheritAttrs: false });\n\ndefineSlots<{\n /** The leading slot — icon, avatar, marker. React's `leading` node prop. */\n leading?(): unknown;\n /** The trailing slot — badge, chevron, status. React's `trailing` node prop. */\n trailing?(): unknown;\n /** The row content — React's required `children`. */\n default(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<ListGroupItemProps>(), { hasCheckMarker: undefined });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLLIElement>('el');\nconst list = useListContext();\n\n/* The prop is an override; with it omitted the parent's `marker` decides. */\nconst showCheck = computed(() => props.hasCheckMarker ?? list.marker === 'check');\n\nconst classes = computed(() => cn(listItemVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <li ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <span v-if=\"showCheck\" aria-hidden=\"true\" class=\"mt-0.5 shrink-0 text-primary\">\n <Check class=\"h-4 w-4\" />\n </span>\n <span v-if=\"$slots.leading\" aria-hidden=\"true\" class=\"mt-0.5 shrink-0 text-muted-foreground\">\n <slot name=\"leading\" />\n </span>\n <span class=\"flex-1\"><slot /></span>\n <span v-if=\"$slots.trailing\" class=\"shrink-0 text-muted-foreground\"><slot name=\"trailing\" /></span>\n </li>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/** Defines the semantic status tone of a Timeline node. */\nexport const TimelineStatus = {\n /** Refers to the neutral / default node. */\n Default: 'default',\n /** Refers to the primary brand node. */\n Primary: 'primary',\n /** Refers to the positive / confirmation node. */\n Success: 'success',\n /** Refers to the caution node. */\n Warning: 'warning',\n /** Refers to the destructive / error node. */\n Destructive: 'destructive',\n /** Refers to the informational node. */\n Info: 'info',\n} as const;\n\nexport type TimelineStatus = (typeof TimelineStatus)[keyof typeof TimelineStatus];\n\n/** Defines which side the Timeline rail sits on. */\nexport const TimelineAlign = {\n /** Refers to a left-anchored rail. */\n Left: 'left',\n /** Refers to a right-anchored rail. */\n Right: 'right',\n} as const;\n\nexport type TimelineAlign = (typeof TimelineAlign)[keyof typeof TimelineAlign];\n\n/** The rail state a `Timeline` root shares with its items. */\nexport interface TimelineContextValue {\n /** The rail side. Live getter — read it, don't destructure it. */\n readonly align: TimelineAlign;\n\n /** The number of rendered items. Live getter. */\n readonly total: number;\n}\n\nexport const TimelineKey: InjectionKey<TimelineContextValue> = Symbol('wow-two.timeline');\n\n/**\n * Reads the enclosing `Timeline`, or `null` when an item renders standalone —\n * React's `createContext(null)` default, preserved so a stray `<TimelineItem>`\n * still renders left-aligned rather than throwing.\n */\nexport function useTimelineContext(): TimelineContextValue | null {\n return inject(TimelineKey, null);\n}\n\nexport const StatusBackground: Record<TimelineStatus, string> = {\n default: 'bg-muted text-muted-foreground border-border',\n primary: 'bg-primary text-primary-foreground border-primary',\n success: 'bg-success text-success-foreground border-success',\n warning: 'bg-warning text-warning-foreground border-warning',\n destructive: 'bg-destructive text-destructive-foreground border-destructive',\n info: 'bg-info text-info-foreground border-info',\n};\n","<script lang=\"ts\">\n/* `TimelineAlign` is imported here (not in `<script setup>`) so the one binding serves as both\n the prop type below and the runtime value used in `withDefaults` / the rail-side check. */\nimport { TimelineAlign } from './TimelineContext';\n\nexport interface TimelineProps {\n /** The side the rail sits on. Default `left`. */\n readonly align?: TimelineAlign;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { cloneVNode, computed, provide, useAttrs, useSlots, useTemplateRef, type VNode } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { renderableChildren } from '../../../foundation/primitives';\nimport { TimelineKey } from './TimelineContext';\n\n/** Renders a vertical rail of `TimelineItem` nodes joined by connectors, suppressed on the last. */\ndefineOptions({ name: 'Timeline', inheritAttrs: false });\n\n/** The `TimelineItem` nodes — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TimelineProps>(), { align: TimelineAlign.Left });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLOListElement>('el');\n\nconst total = computed(() => renderableChildren(slots.default?.()).length);\n\n/**\n * MarkText the last item so the connector line is suppressed. React rebuilt the child's props\n * object; a Vue slot hands over vnodes, so the flag is cloned onto the last one — it lands\n * in the item's fallthrough attrs exactly as `data-last` did in React.\n *\n * A function, not a `computed`: the slot is re-invoked on every render, so the vnodes handed\n * to `v-for` are always fresh rather than a cached array of already-mounted ones.\n */\nfunction items(): Array<VNode> {\n const children = renderableChildren(slots.default?.());\n const last = children.length - 1;\n return children.map((child, index) => (index === last ? cloneVNode(child, { 'data-last': '' }) : child));\n}\n\nprovide(TimelineKey, {\n get align() {\n return props.align;\n },\n get total() {\n return total.value;\n },\n});\n\nconst classes = computed(() =>\n cn('flex list-none flex-col', props.align === TimelineAlign.Right && 'items-end', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <ol ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <component :is=\"node\" v-for=\"(node, index) in items()\" :key=\"node.key ?? index\" />\n </ol>\n</template>\n","<script lang=\"ts\">\n/* `TimelineStatus` is imported here (not in `<script setup>`) so the one binding serves as\n both the prop type below and the runtime value used in `withDefaults`. */\nimport { TimelineStatus } from './TimelineContext';\n\nexport interface TimelineItemProps {\n /** The semantic tone of the node marker. Default `default`. */\n readonly status?: TimelineStatus;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { StatusBackground, TimelineAlign, useTimelineContext } from './TimelineContext';\n\n/** Renders one rail node — marker and connector column, then the content column. */\ndefineOptions({ name: 'TimelineItem', inheritAttrs: false });\n\ndefineSlots<{\n /** The marker glyph — React's `icon` node prop. Defaults to a filled dot. */\n icon?(): unknown;\n /** The node content — React's required `children`. */\n default(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<TimelineItemProps>(), {\n status: TimelineStatus.Default,\n});\n\nconst attrs = useAttrs();\nconst context = useTimelineContext();\nconst el = useTemplateRef<HTMLLIElement>('el');\n\n/** The root marks its last child with `data-last`; the connector line is dropped there. */\nconst isLast = computed(() => attrs['data-last'] !== undefined);\n\nconst classes = computed(() => cn('relative flex gap-3 pb-6 last:pb-0', attrs.class as string | undefined));\n\nconst markerClasses = computed(() =>\n cn('relative z-raised grid h-7 w-7 place-items-center rounded-full border-2', StatusBackground[props.status]),\n);\n\nconst contentClasses = computed(() =>\n cn('flex-1 pt-0.5', context?.align === TimelineAlign.Right && 'order-first text-right'),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `data-status` precedes `v-bind=\"rest\"` so a consumer-supplied one still wins, as it did\n through React's trailing `{...rest}` spread. -->\n <li ref=\"el\" :data-status=\"status\" v-bind=\"rest\" :class=\"classes\">\n <!-- Marker + connector column -->\n <div class=\"relative flex flex-col items-center\">\n <span aria-hidden=\"true\" :class=\"markerClasses\">\n <slot name=\"icon\"><span class=\"h-1.5 w-1.5 rounded-full bg-current\" /></slot>\n </span>\n <span v-if=\"!isLast\" aria-hidden=\"true\" class=\"absolute left-1/2 top-7 h-full w-px -translate-x-1/2 bg-border\" />\n </div>\n <!-- Content -->\n <div :class=\"contentClasses\"><slot /></div>\n </li>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an exported\n name: React declared `TimelineTitleProps` and consumers import it. Every attribute falls\n through, so the interface carries nothing in Vue. The block itself is load-bearing: in a\n `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\nexport interface TimelineTitleProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the headline of a `TimelineItem`, at the rail title weight. */\ndefineOptions({ name: 'TimelineTitle', inheritAttrs: false });\n\n/** The title copy — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst classes = computed(() => cn('text-sm font-medium text-foreground', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <h4 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></h4>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an exported\n name: React declared `TimelineDescriptionProps` and consumers import it. Every attribute\n falls through, so the interface carries nothing in Vue. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\nexport interface TimelineDescriptionProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the supporting copy under a `TimelineTitle`, at muted body scale. */\ndefineOptions({ name: 'TimelineDescription', inheritAttrs: false });\n\n/** The description copy — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLParagraphElement>('el');\n\nconst classes = computed(() => cn('text-xs text-muted-foreground', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <p ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></p>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/**\n * The seam between `TreeViewer` and its `TreeViewerGroup` / `TreeViewerItem` children.\n *\n * React attached those as `TreeViewer.Group` / `.Item` statics over a `createContext`.\n * An SFC's generated default export cannot carry statics cleanly, so they ship\n * as sibling components and share state through provide/inject instead.\n *\n * `selectedValue` and `expanded` are live getters — read them, don't destructure.\n */\nexport interface TreeViewerContextValue {\n /** The selected leaf value, or `null`. */\n readonly selectedValue: string | null;\n /** Selects a leaf. */\n setSelectedValue: (value: string) => void;\n /** The expanded branch values. */\n readonly expanded: ReadonlySet<string>;\n /** Flips one branch open/closed. */\n toggleExpanded: (value: string) => void;\n}\n\nexport const TreeViewerKey: InjectionKey<TreeViewerContextValue> = Symbol('wow-two.tree');\n\nexport function useTreeContext(): TreeViewerContextValue {\n const context = inject(TreeViewerKey, null);\n if (!context) throw new Error('TreeViewer.* must be used inside <TreeViewer>');\n return context;\n}\n\n/** The nesting depth, 1-based — React's `TreeViewerLevelContext`, defaulted to the root level. */\nexport interface TreeViewerLevelValue {\n readonly level: number;\n}\n\nexport const TreeViewerLevelKey: InjectionKey<TreeViewerLevelValue> = Symbol('wow-two.tree.level');\n\n/** Returns the level holder rather than the number, so a nested provide stays live. */\nexport function useTreeLevel(): TreeViewerLevelValue {\n return inject(TreeViewerLevelKey, { level: 1 });\n}\n","<script lang=\"ts\">\nexport interface TreeViewerProps {\n /** The controlled selected leaf value. */\n readonly modelValue?: string | null;\n /** The uncontrolled initial selected leaf value. */\n readonly defaultValue?: string | null;\n /** The controlled expanded branch values. */\n readonly expanded?: ReadonlyArray<string>;\n /** The uncontrolled initial expanded branch values. */\n readonly defaultExpanded?: ReadonlyArray<string>;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { RovingFocusGroup, type ComponentElement } from '../../../foundation/primitives';\nimport { TreeViewerKey, type TreeViewerContextValue } from './TreeViewerContext';\n\n/**\n * Renders the tree root that owns selection and expansion for its branches and leaves.\n *\n * `TreeViewerGroup` / `TreeViewerItem` read them through injection — React attached those as `TreeViewer.Group`\n * / `.Item` statics,\n * which an SFC's default export cannot carry.\n */\ndefineOptions({ name: 'TreeViewer', inheritAttrs: false });\n\n/** The `TreeViewerGroup` / `TreeViewerItem` children — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TreeViewerProps>(), {\n modelValue: undefined,\n defaultValue: undefined,\n expanded: undefined,\n defaultExpanded: undefined,\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader selects a leaf, with its value. */\n 'update:modelValue': [value: string];\n /** Fires when the reader expands or collapses a branch, with the full expanded list. */\n 'update:expanded': [values: ReadonlyArray<string>];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<ComponentElement>('el');\n\nconst { value: selected, setValue: setSelected } = useControlled<string | null>({\n controlled: () => props.modelValue,\n default: props.defaultValue ?? null,\n /* Only ever called with a string — `setSelectedValue` is the single writer. */\n onChange: (next) => emit('update:modelValue', next as string),\n});\n\nconst { value: expandedList, setValue: setExpandedList } = useControlled<ReadonlyArray<string>>({\n controlled: () => props.expanded,\n default: props.defaultExpanded ?? [],\n onChange: (next) => emit('update:expanded', next),\n});\n\nconst expandedSet = computed(() => new Set(expandedList.value));\n\nfunction toggleExpanded(value: string): void {\n const next = new Set(expandedSet.value);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n setExpandedList(Array.from(next));\n}\n\n/* Live getters, not a snapshot — selection and expansion have to reach every\n already-mounted row. */\nprovide<TreeViewerContextValue>(TreeViewerKey, {\n get selectedValue() {\n return selected.value;\n },\n setSelectedValue: setSelected,\n get expanded() {\n return expandedSet.value;\n },\n toggleExpanded,\n});\n\nconst classes = computed(() => cn('flex flex-col text-sm', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <RovingFocusGroup ref=\"el\" orientation=\"vertical\" can-loop role=\"tree\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\n/** Internal — the animated wrapper `Presence` mounts for an expanded branch. */\nexport interface TreeViewerGroupContentProps {\n /** The nesting depth published to the rows inside. */\n readonly level: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { TreeViewerLevelKey, type TreeViewerLevelValue } from './TreeViewerContext';\n\n/**\n * Renders the animating inner element of a `TreeViewerGroup`, growing its height as the branch expands.\n *\n * `<Presence>` clones this component's vnode with `data-state` + a ref, both of which reach the root\n * `<div>` through `rest`. Height animates via grid-template-rows 0fr -> 1fr, and the inner\n * `min-h-0 overflow-hidden` track clips the group so it can shrink to zero. No fade (height only) —\n * the chevron handles the rotate. Motion-safe-gated; reduced-motion gets an instant snap.\n */\ndefineOptions({ name: 'TreeViewerGroupContent', inheritAttrs: false });\n\n/** The nested `TreeViewerGroup` / `TreeViewerItem` children. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<TreeViewerGroupContentProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/* Live getter, not a snapshot — React re-provided on every render. */\nprovide<TreeViewerLevelValue>(TreeViewerLevelKey, {\n get level() {\n return props.level;\n },\n});\n\nconst classes = computed(() =>\n cn(\n 'grid',\n 'motion-safe:transition-[grid-template-rows] motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) motion-reduce:transition-none',\n 'data-[state=open]:grid-rows-[1fr] data-[state=closed]:grid-rows-[0fr]',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div class=\"min-h-0 overflow-hidden\">\n <ul role=\"group\" class=\"flex flex-col\">\n <slot />\n </ul>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Internal — the focusable `role=\"treeitem\"` row shared by `TreeViewerGroup` and `TreeViewerItem`. */\nexport interface TreeViewerNodeRowProps {\n /** The 1-based nesting depth. */\n readonly level: number;\n /** The selected state. */\n readonly isSelected: boolean;\n /** The expanded state — only meaningful when `hasChildren`. */\n readonly isExpanded?: boolean;\n /** Whether the row owns a child group. */\n readonly hasChildren: boolean;\n /** The disabled state. */\n readonly isDisabled: boolean;\n /** Toggles a branch or selects a leaf. Required, so it stays a prop rather than an emit. */\n readonly onActivate: () => void;\n}\n\n/* DOM-walking targets for the APG horizontal arrows. Anatomy per branch:\n <li role=presentation> → [row div role=treeitem, content → <ul role=group>].\n The tree root is role=\"tree\", so a root-level row has no `[role=\"group\"]`\n ancestor and ArrowLeft is a no-op there. */\n\n/** First child row of an expanded branch — ArrowRight descends into it. */\nfunction focusFirstChildRow(row: HTMLElement): void {\n row.closest('li')?.querySelector<HTMLElement>('[role=\"group\"] [role=\"treeitem\"]')?.focus();\n}\n\n/** Row of the branch owning this row — ArrowLeft climbs to it. */\nfunction findParentRow(row: HTMLElement): HTMLElement | null {\n return row.closest('[role=\"group\"]')?.closest('li')?.querySelector<HTMLElement>(':scope > [role=\"treeitem\"]') ?? null;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { ChevronRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\n\n/** Renders one tree row — chevron, label, and the `treeitem` ARIA state of a branch or a leaf. */\ndefineOptions({ name: 'TreeViewerNodeRow' });\n\n/** The row label. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TreeViewerNodeRowProps>(), {\n // `undefined` is meaningful: a leaf must render no `aria-expanded` at all.\n isExpanded: undefined,\n});\n\n// Reactive object: bound with `v-bind`, never destructured.\nconst item = useRovingFocusItem();\n\n/**\n * Runs after the roving group's own key handler — `v-bind=\"item\"` sits ahead of\n * this binding, so `defaultPrevented` reflects what that handler already did.\n */\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n const row = event.currentTarget as HTMLElement;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.onActivate();\n return;\n }\n /* APG tree pattern — the vertical roving group above ignores the\n horizontal arrows, so they are free to drive expand/collapse here. */\n if (event.key === 'ArrowRight' && props.hasChildren) {\n event.preventDefault();\n if (props.isExpanded) focusFirstChildRow(row);\n else props.onActivate(); // Expand; focus stays on the branch.\n return;\n }\n if (event.key === 'ArrowLeft') {\n if (props.hasChildren && props.isExpanded) {\n event.preventDefault();\n props.onActivate(); // Collapse; focus stays on the branch.\n return;\n }\n // Leaf or collapsed branch: climb to the parent branch, if any.\n const parentRow = findParentRow(row);\n if (parentRow) {\n event.preventDefault();\n parentRow.focus();\n }\n }\n}\n\nfunction onClick(): void {\n if (!props.isDisabled) props.onActivate();\n}\n\n/** Vue does not append `px` to a numeric `:style` value — spelled out. */\nconst rowStyle = computed(() => ({ paddingLeft: `${(props.level - 1) * 16}px` }));\n\nconst classes = computed(() =>\n cn(\n 'flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 transition-colors',\n 'hover:bg-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n props.isSelected && 'bg-primary-soft text-primary-soft-foreground',\n props.isDisabled && 'pointer-events-none opacity-50',\n ),\n);\n\nconst chevronClasses = computed(() =>\n cn('h-4 w-4 shrink-0 text-muted-foreground transition-transform', props.isExpanded && 'rotate-90'),\n);\n</script>\n\n<template>\n <div\n role=\"treeitem\"\n :aria-level=\"level\"\n :aria-selected=\"isSelected || undefined\"\n :aria-expanded=\"hasChildren ? isExpanded : undefined\"\n :aria-disabled=\"isDisabled || undefined\"\n :data-selected=\"dataAttr(isSelected)\"\n :data-disabled=\"dataAttr(isDisabled)\"\n :style=\"rowStyle\"\n :class=\"classes\"\n v-bind=\"item\"\n @keydown=\"onKeydown\"\n @click=\"onClick\"\n >\n <ChevronRight v-if=\"hasChildren\" :class=\"chevronClasses\" />\n <span v-else class=\"w-4 shrink-0\" />\n <span class=\"flex-1 truncate\"><slot /></span>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface TreeViewerGroupProps {\n /** The branch value — the key expansion is tracked under. */\n readonly value: string;\n /**\n * The branch label. React took a `ReactNode`; the scalar stays a prop and the\n * same-named `label` slot is the rich override.\n */\n readonly label: string | number;\n /** The disabled state. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { Presence } from '../../../foundation/primitives';\nimport { useTreeContext, useTreeLevel } from './TreeViewerContext';\nimport TreeViewerGroupContent from './TreeViewerGroupContent.vue';\nimport TreeViewerNodeRow from './TreeViewerNodeRow.vue';\n\n/** Renders an expandable branch of a `TreeViewer`; React shipped it as `TreeViewer.Group`. */\ndefineOptions({ name: 'TreeViewerGroup', inheritAttrs: false });\n\ndefineSlots<{\n /** The nested `TreeViewerGroup` / `TreeViewerItem` children — React's required `children`. */\n default(): unknown;\n /** Overrides the branch label. Falls back to the `label` prop. */\n label(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<TreeViewerGroupProps>(), { isDisabled: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLLIElement>('el');\nconst tree = useTreeContext();\nconst treeLevel = useTreeLevel();\n\nconst isExpanded = computed(() => tree.expanded.has(props.value));\n\nfunction activate(): void {\n tree.toggleExpanded(props.value);\n}\n\nconst classes = computed(() => cn('list-none', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <li ref=\"el\" role=\"presentation\" :data-state=\"isExpanded ? 'open' : 'closed'\" v-bind=\"rest\" :class=\"classes\">\n <TreeViewerNodeRow\n :level=\"treeLevel.level\"\n :is-selected=\"false\"\n :is-expanded=\"isExpanded\"\n has-children\n :is-disabled=\"isDisabled\"\n :on-activate=\"activate\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </TreeViewerNodeRow>\n <!-- Presence keeps the group mounted through the collapse so the exit\n plays before unmount (a plain `v-if` hard-unmount would kill it).\n It injects ref + data-state onto TreeViewerGroupContent, which animates height\n via grid-template-rows 0fr -> 1fr. -->\n <Presence :is-present=\"isExpanded\">\n <TreeViewerGroupContent :level=\"treeLevel.level + 1\">\n <slot />\n </TreeViewerGroupContent>\n </Presence>\n </li>\n</template>\n","<script lang=\"ts\">\nexport interface TreeViewerItemProps {\n /** The leaf value — the key selection is tracked under. */\n readonly value: string;\n /** The disabled state. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useTreeContext, useTreeLevel } from './TreeViewerContext';\nimport TreeViewerNodeRow from './TreeViewerNodeRow.vue';\n\n/** Renders a selectable leaf of a `TreeViewer`; React shipped it as `TreeViewer.Item`. */\ndefineOptions({ name: 'TreeViewerItem', inheritAttrs: false });\n\n/** The leaf label — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TreeViewerItemProps>(), { isDisabled: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLLIElement>('el');\nconst tree = useTreeContext();\nconst treeLevel = useTreeLevel();\n\nconst isSelected = computed(() => tree.selectedValue === props.value);\n\nfunction activate(): void {\n tree.setSelectedValue(props.value);\n}\n\nconst classes = computed(() => cn('list-none', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <li ref=\"el\" role=\"presentation\" v-bind=\"rest\" :class=\"classes\">\n <TreeViewerNodeRow\n :level=\"treeLevel.level\"\n :is-selected=\"isSelected\"\n :has-children=\"false\"\n :is-disabled=\"isDisabled\"\n :on-activate=\"activate\"\n >\n <slot />\n </TreeViewerNodeRow>\n </li>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/** Defines the Table row density. */\nexport const TableDensity = {\n /** Refers to the tightest padding. */\n Compact: 'compact',\n /** Refers to the default padding. */\n Cozy: 'cozy',\n /** Refers to relaxed padding. */\n Comfortable: 'comfortable',\n /** Refers to the roomiest padding. */\n Roomy: 'roomy',\n} as const;\n\nexport type TableDensity = (typeof TableDensity)[keyof typeof TableDensity];\n\n/** Defines the corner radius applied to the Table scroll wrapper. */\nexport const TableRadius = {\n /** Refers to square corners. */\n None: 'none',\n /** Refers to a small radius. */\n Sm: 'sm',\n /** Refers to a medium radius. */\n Md: 'md',\n /** Refers to a large radius. */\n Lg: 'lg',\n /** Refers to an extra-large radius. */\n Xl: 'xl',\n /** Refers to a 2x-large radius. */\n Xxl: '2xl',\n} as const;\n\nexport type TableRadius = (typeof TableRadius)[keyof typeof TableRadius];\n\n/** The density / striping state a `Table` root shares with its sections and cells. */\nexport interface TableContextValue {\n isStriped: boolean;\n isHoverable: boolean;\n density: TableDensity;\n}\n\nexport const TableKey: InjectionKey<TableContextValue> = Symbol('wow-two.table');\n\n/**\n * The fallback used when a section or cell renders outside a `Table` root —\n * React's `createContext` default value, preserved so a stray `<TableCell>`\n * still picks the cozy padding rather than throwing.\n */\nexport const DefaultTableContext: TableContextValue = {\n isStriped: false,\n isHoverable: false,\n density: TableDensity.Cozy,\n};\n\n/** Reads the enclosing `Table` state, falling back to the cozy defaults. */\nexport function useTableContext(): TableContextValue {\n return inject(TableKey, DefaultTableContext);\n}\n\nexport const DensityCell: Record<TableDensity, string> = {\n compact: 'px-2 py-1.5 text-sm',\n cozy: 'px-3 py-2 text-sm',\n comfortable: 'px-4 py-3 text-sm',\n roomy: 'px-5 py-4 text-sm',\n};\n\nexport const WrapperRadius: Record<TableRadius, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n};\n","<script lang=\"ts\">\n/* `TableDensity` / `TableRadius` are imported here (not in `<script setup>`) so\n the one binding serves as both the type below and the runtime value used in\n `withDefaults`. */\nimport { TableDensity, TableRadius } from './TableContext';\n\nexport interface TableProps {\n readonly isStriped?: boolean;\n readonly isHoverable?: boolean;\n readonly density?: TableDensity;\n readonly isBare?: boolean;\n /** The corner radius of the scroll wrapper (ignored when `isBare`). */\n readonly radius?: TableRadius;\n\n /** Classes for the scroll wrapper (ignored when `isBare`). A fallthrough `class` lands on the inner `<table>`. */\n readonly containerClassName?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { TableKey, WrapperRadius, type TableContextValue } from './TableContext';\n\n/**\n * Renders the table root and its scroll wrapper, sharing density and striping with its sections.\n *\n * `TableBody`, `TableCell` and `TableHeaderCell` therefore need no props of their own; `isBare` drops the wrapper.\n *\n * React attached the sections as `Table.Body` / `.Row` / … via `Object.assign`. An SFC's generated default export\n * cannot carry statics cleanly, so they ship as siblings: `TableHead`, `TableBody`, `TableFooter`, `TableRow`,\n * `TableHeaderCell`, `TableCell`, `TableCaption`.\n */\ndefineOptions({ name: 'Table', inheritAttrs: false });\n\n/** The table sections — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TableProps>(), {\n isStriped: false,\n isHoverable: false,\n density: TableDensity.Cozy,\n isBare: false,\n radius: TableRadius.Md,\n containerClassName: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableElement>('el');\n\n/* Live getters, not a snapshot — a density change on the root has to reach\n every already-mounted cell, which a plain object literal would not do. */\nprovide<TableContextValue>(TableKey, {\n get isStriped() {\n return props.isStriped;\n },\n get isHoverable() {\n return props.isHoverable;\n },\n get density() {\n return props.density;\n },\n});\n\nconst classes = computed(() =>\n cn('w-full caption-bottom border-collapse text-left', attrs.class as string | undefined),\n);\n\nconst containerClasses = computed(() =>\n cn('relative w-full overflow-x-auto border border-border', WrapperRadius[props.radius], props.containerClassName),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <table v-if=\"props.isBare\" ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </table>\n <div v-else :class=\"containerClasses\">\n <table ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </table>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the Table header typography treatment. */\nexport const TableHeadVariant = {\n /** Refers to the uppercase, tracked default. */\n Uppercase: 'uppercase',\n /** Refers to normal-case `text-sm` heads. */\n Plain: 'plain',\n} as const;\n\nexport type TableHeadVariant = (typeof TableHeadVariant)[keyof typeof TableHeadVariant];\n\nconst HeadVariant: Record<TableHeadVariant, string> = {\n uppercase: 'text-xs font-semibold uppercase tracking-wide text-muted-foreground',\n plain: 'text-sm font-semibold text-foreground',\n};\n\nexport interface TableHeadProps {\n /** The typography treatment for the header row. Defaults to `uppercase` (current look). */\n readonly headVariant?: TableHeadVariant;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the `thead` section of a `Table`, holding its header row. */\ndefineOptions({ name: 'TableHead', inheritAttrs: false });\n\n/** The header rows — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<TableHeadProps>(), {\n headVariant: TableHeadVariant.Uppercase,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableSectionElement>('el');\n\nconst classes = computed(() =>\n cn('border-b border-border bg-muted/50', HeadVariant[props.headVariant], attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <thead ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </thead>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useTableContext } from './TableContext';\n\n/** Renders the `tbody` of a `Table`, picking up striping and hover from the root. */\ndefineOptions({ name: 'TableBody', inheritAttrs: false });\n\n/** The body rows — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableSectionElement>('el');\nconst table = useTableContext();\n\nconst classes = computed(() =>\n cn(\n table.isStriped && '[&>tr:nth-child(even)]:bg-muted/30',\n table.isHoverable && '[&>tr:hover]:bg-muted',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <tbody ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </tbody>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the `tfoot` section of a `Table`, for summary rows under the body. */\ndefineOptions({ name: 'TableFooter', inheritAttrs: false });\n\n/** The footer rows — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableSectionElement>('el');\n\nconst classes = computed(() => cn('border-t border-border bg-muted/50 font-medium', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <tfoot ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </tfoot>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders a `tr` in a `Table`; `data-selected` tints it with the selection fill. */\ndefineOptions({ name: 'TableRow', inheritAttrs: false });\n\n/** The row cells — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableRowElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'border-b border-border last:border-0 transition-colors data-[selected]:bg-primary-soft',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <tr ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </tr>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `TableHeaderCellProps` and consumers import it. */\nexport interface TableHeaderCellProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { DensityCell, useTableContext } from './TableContext';\n\n/** Renders a `th` column header in a `Table`, padded to the root density. */\ndefineOptions({ name: 'TableHeaderCell', inheritAttrs: false });\n\n/** The header cell content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableCellElement>('el');\nconst table = useTableContext();\n\nconst classes = computed(() =>\n cn(DensityCell[table.density], 'font-semibold text-foreground', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <th ref=\"el\" scope=\"col\" v-bind=\"rest\" :class=\"classes\"><slot /></th>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `TableCellProps` and consumers import it. */\nexport interface TableCellProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { DensityCell, useTableContext } from './TableContext';\n\n/** Renders a `td` in a `Table`, padded to the root density. */\ndefineOptions({ name: 'TableCell', inheritAttrs: false });\n\n/** The cell content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableCellElement>('el');\nconst table = useTableContext();\n\nconst classes = computed(() => cn(DensityCell[table.density], 'align-middle', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <td ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></td>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — every attribute falls through. The block itself is load-bearing:\n in a `<script setup>`-only SFC, `vue-eslint-parser` loses `ignoreRestSiblings` and the\n `const { class: _class, ...others }` omission below trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the `caption` of a `Table`, placed below the grid. */\ndefineOptions({ name: 'TableCaption', inheritAttrs: false });\n\n/** The caption copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLTableCaptionElement>('el');\n\nconst classes = computed(() => cn('mt-2 text-sm text-muted-foreground', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <caption ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </caption>\n</template>\n","<script lang=\"ts\">\nimport { Temporal } from 'temporal-polyfill';\nimport { compareStrings } from '../../../foundation/i18n';\nimport type { TableDensity } from '../table';\n\n/** Defines the sort order of a DataTable column. */\nexport const SortDirection = {\n /** Refers to ascending order. */\n Asc: 'asc',\n /** Refers to descending order. */\n Desc: 'desc',\n} as const;\n\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\n/** Defines the horizontal text alignment of a DataTable column. */\nexport const DataTableColumnAlign = {\n /** Refers to left alignment. */\n Left: 'left',\n /** Refers to centered alignment. */\n Center: 'center',\n /** Refers to right alignment. */\n Right: 'right',\n} as const;\n\nexport type DataTableColumnAlign = (typeof DataTableColumnAlign)[keyof typeof DataTableColumnAlign];\n\nexport interface DataTableSort {\n readonly columnKey: string;\n readonly direction: SortDirection;\n}\n\nexport interface DataTableColumn<T> {\n readonly key: string;\n /**\n * The header label. React took a `ReactNode`; a column is an array entry and\n * cannot become its own slot, so the scalar stays here and the `header`\n * scoped slot is the rich override.\n */\n readonly header: string | number;\n readonly accessor?: (row: T) => unknown;\n /**\n * The per-cell renderer. Returns a value rendered as text; for rich markup\n * use the `cell` scoped slot, which receives `{ row, column, index }`.\n */\n readonly cell?: (row: T, index: number) => unknown;\n readonly isSortable?: boolean;\n readonly align?: DataTableColumnAlign;\n readonly width?: string;\n}\n\nexport interface DataTableProps<T> {\n readonly columns: ReadonlyArray<DataTableColumn<T>>;\n readonly data: ReadonlyArray<T>;\n readonly rowKey?: (row: T, index: number) => string | number;\n /**\n * Fires with the clicked row and its index.\n *\n * Kept a prop rather than an emit because its *presence* is load-bearing — it\n * seeds `isHoverable` and the `cursor-pointer` class, and Vue strips declared\n * emit listeners out of `useAttrs()`.\n */\n readonly onRowClick?: (row: T, index: number) => void;\n readonly sortBy?: DataTableSort | null;\n readonly defaultSortBy?: DataTableSort | null;\n readonly isStriped?: boolean;\n readonly isHoverable?: boolean;\n readonly density?: TableDensity;\n readonly isBare?: boolean;\n /** The empty-state text. Default `No results.`; override richly via the `emptyContent` slot. */\n readonly emptyContent?: string | number;\n}\n\nfunction defaultCompare(a: unknown, b: unknown): number {\n if (a === b) return 0;\n if (a === null || a === undefined) return 1;\n if (b === null || b === undefined) return -1;\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n if (a instanceof Temporal.PlainDate && b instanceof Temporal.PlainDate) return Temporal.PlainDate.compare(a, b);\n if (a instanceof Temporal.PlainTime && b instanceof Temporal.PlainTime) return Temporal.PlainTime.compare(a, b);\n if (a instanceof Temporal.PlainDateTime && b instanceof Temporal.PlainDateTime)\n return Temporal.PlainDateTime.compare(a, b);\n if (a instanceof Temporal.ZonedDateTime && b instanceof Temporal.ZonedDateTime)\n return Temporal.ZonedDateTime.compare(a, b);\n // Native `Date` retained: DataTable cells hold arbitrary consumer values, so a\n // consumer may still put a `Date` in a column — this is a generic value\n // comparator, not a date-value API surface.\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n return compareStrings(String(a), String(b));\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed } from 'vue';\nimport { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow } from '../table';\n\n/**\n * Renders a sortable table from a `columns` descriptor, wrapping the `Table` primitives.\n *\n * `class` and `aria-label` reach the inner `<table>` by fallthrough, which is why this component keeps `inheritAttrs`\n * on.\n */\ndefineOptions({ name: 'DataTable' });\n\nconst props = withDefaults(defineProps<DataTableProps<T>>(), {\n rowKey: undefined,\n onRowClick: undefined,\n sortBy: undefined,\n defaultSortBy: undefined,\n // Explicit `undefined` so an absent Boolean prop is not cast to `false` and\n // each one keeps deferring to `Table`'s own default.\n isStriped: undefined,\n isHoverable: undefined,\n density: undefined,\n isBare: undefined,\n emptyContent: 'No results.',\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader clicks a sortable header, with the next sort or `null` once cleared. */\n 'update:sortBy': [sort: DataTableSort | null];\n}>();\n\ndefineSlots<{\n /** Overrides a column header. Falls back to the column's own `header`. */\n header(props: { column: DataTableColumn<T> }): unknown;\n /** Overrides a body cell. Falls back to the column's `cell`, then its `accessor`. */\n cell(props: { row: T; column: DataTableColumn<T>; index: number }): unknown;\n /** Overrides the empty-state content. Falls back to the `emptyContent` prop. */\n emptyContent(): unknown;\n}>();\n\nconst { value: sort, setValue: setSort } = useControlled<DataTableSort | null>({\n controlled: () => props.sortBy,\n default: props.defaultSortBy ?? null,\n onChange: (next) => emit('update:sortBy', next),\n});\n\n/** React seeded `isHoverable` from `!!onRowClick`; kept as an explicit fallback. */\nconst resolvedHoverable = computed(() => props.isHoverable ?? props.onRowClick != null);\n\nconst sortedData = computed<ReadonlyArray<T>>(() => {\n const active = sort.value;\n if (!active) return props.data;\n const column = props.columns.find((entry) => entry.key === active.columnKey);\n const accessor = column?.accessor;\n if (!accessor) return props.data;\n return props.data\n .map((row) => ({ row, value: accessor(row) }))\n .sort((a, b) => {\n const result = defaultCompare(a.value, b.value);\n return active.direction === SortDirection.Asc ? result : -result;\n })\n .map(({ row }) => row);\n});\n\nfunction cycleSort(columnKey: string): void {\n const active = sort.value;\n if (!active || active.columnKey !== columnKey) {\n setSort({ columnKey, direction: SortDirection.Asc });\n } else if (active.direction === SortDirection.Asc) {\n setSort({ columnKey, direction: SortDirection.Desc });\n } else {\n setSort(null);\n }\n}\n\nfunction alignClass(align: DataTableColumn<T>['align']): string {\n if (align === DataTableColumnAlign.Right) return 'text-right';\n if (align === DataTableColumnAlign.Center) return 'text-center';\n return 'text-left';\n}\n\nconst headerCells = computed(() =>\n props.columns.map((column) => {\n const active = sort.value;\n const isSorted = active?.columnKey === column.key;\n return {\n key: column.key,\n column,\n isSorted,\n isAscending: isSorted && active?.direction === SortDirection.Asc,\n ariaSort: isSorted\n ? active?.direction === SortDirection.Asc\n ? 'ascending'\n : 'descending'\n : column.isSortable\n ? 'none'\n : undefined,\n style: column.width ? { width: column.width } : undefined,\n class: alignClass(column.align),\n };\n }),\n);\n\nconst rows = computed(() =>\n sortedData.value.map((row, index) => ({\n key: props.rowKey ? props.rowKey(row, index) : index,\n row,\n index,\n /* `onClick` only exists when a handler was supplied — React's `onClick={onRowClick ? … : undefined}`. */\n attrs: props.onRowClick ? { onClick: (): void => props.onRowClick?.(row, index) } : ({} as Record<string, never>),\n class: cn(props.onRowClick && 'cursor-pointer'),\n })),\n);\n\n/** The column's own renderer, then its accessor — the fallback under the `cell` slot. */\nfunction renderCell(column: DataTableColumn<T>, row: T, index: number): unknown {\n if (column.cell) return column.cell(row, index);\n if (column.accessor) return column.accessor(row);\n return null;\n}\n\nconst SortButtonClass =\n 'inline-flex items-center gap-1 rounded-sm transition-colors hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring';\n</script>\n\n<template>\n <Table :is-striped=\"isStriped\" :is-hoverable=\"resolvedHoverable\" :density=\"density\" :is-bare=\"isBare\">\n <TableHead>\n <TableRow>\n <TableHeaderCell\n v-for=\"cell in headerCells\"\n :key=\"cell.key\"\n :aria-sort=\"cell.ariaSort\"\n :style=\"cell.style\"\n :class=\"cell.class\"\n >\n <button v-if=\"cell.column.isSortable\" type=\"button\" :class=\"SortButtonClass\" @click=\"cycleSort(cell.key)\">\n <span>\n <slot name=\"header\" :column=\"cell.column\">{{ cell.column.header }}</slot>\n </span>\n <ArrowUp v-if=\"cell.isSorted && cell.isAscending\" class=\"h-3.5 w-3.5\" />\n <ArrowDown v-else-if=\"cell.isSorted\" class=\"h-3.5 w-3.5\" />\n <ArrowUpDown v-else class=\"h-3.5 w-3.5 opacity-50\" />\n </button>\n <slot v-else name=\"header\" :column=\"cell.column\">{{ cell.column.header }}</slot>\n </TableHeaderCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <template v-if=\"rows.length === 0\">\n <TableRow>\n <TableCell :colspan=\"columns.length\" class=\"py-8 text-center text-muted-foreground\">\n <slot name=\"emptyContent\">{{ emptyContent }}</slot>\n </TableCell>\n </TableRow>\n </template>\n <template v-else>\n <TableRow v-for=\"row in rows\" :key=\"row.key\" v-bind=\"row.attrs\" :class=\"row.class\">\n <TableCell v-for=\"column in columns\" :key=\"column.key\" :class=\"alignClass(column.align)\">\n <slot name=\"cell\" :row=\"row.row\" :column=\"column\" :index=\"row.index\">{{\n renderCell(column, row.row, row.index)\n }}</slot>\n </TableCell>\n </TableRow>\n </template>\n </TableBody>\n </Table>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/**\n * The seam between `Carousel` and its `Viewport` / `Slides` / `Prev` / `Next` /\n * `Dots` / `Dot` children.\n *\n * React attached those as `Carousel.Viewport` / `.Slides` / … statics over a\n * `createContext`. An SFC's generated default export cannot carry statics\n * cleanly, so they ship as sibling components and share state through\n * provide/inject instead.\n *\n * Every non-function field is a live getter — read it, don't destructure.\n */\nexport interface CarouselContextValue {\n /** The active slide index. */\n readonly index: number;\n /** Moves to a slide, clamped or wrapped per `loop`. */\n setIndex: (index: number) => void;\n /** The slide count. */\n readonly count: number;\n /** Publishes the slide count — `CarouselSlides` owns this. */\n setCount: (count: number) => void;\n /** The wrap-around state. */\n readonly loop: boolean;\n /** Moves one slide back. */\n prev: () => void;\n /** Moves one slide forward. */\n next: () => void;\n /** The auto-play pause state — hover / focus sets it. */\n readonly paused: boolean;\n /** Sets the pause state. */\n setPaused: (paused: boolean) => void;\n /** The auto-play interval in ms, when enabled. */\n readonly autoPlay: number | undefined;\n}\n\nexport const CarouselKey: InjectionKey<CarouselContextValue> = Symbol('wow-two.carousel');\n\nexport function useCarouselContext(): CarouselContextValue {\n const context = inject(CarouselKey, null);\n if (!context) throw new Error('Carousel.* must be used inside <Carousel>');\n return context;\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `CarouselNavButtonProps` and consumers import it.\n Its only member was `aria-label`, which stays a FALLTHROUGH attr here — declaring\n a hyphenated prop name would have Vue camelize it to `ariaLabel` and the default\n would never apply. Shared by `CarouselPrev` and `CarouselNext`, so it lives here\n rather than in either SFC. */\nexport interface CarouselNavButtonProps {}\n","<script lang=\"ts\">\nexport interface CarouselProps {\n /** The controlled active slide index. */\n readonly index?: number;\n /** The uncontrolled initial slide index. Default `0`. */\n readonly defaultIndex?: number;\n /** The wrap-around state. Default `false`. */\n readonly canLoop?: boolean;\n /** The auto-advance interval in ms. Omit to disable. */\n readonly autoPlay?: number;\n /** The localized pause action label. */\n readonly pauseLabel?: string;\n /** The localized resume action label. */\n readonly resumeLabel?: string;\n /** The explicit slide count — overrides the automatic count (use for virtualised slides). */\n readonly slidesCount?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, provide, ref, useAttrs, useTemplateRef, watch, watchEffect } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { useReducedMotion } from '../../../foundation/device';\nimport { CarouselKey, type CarouselContextValue } from './CarouselContext';\n\n/**\n * Renders the carousel root that owns the index, the slide count, and the auto-play pause flag.\n *\n * The parts read them through injection — `CarouselViewport` / `CarouselSlides` / `CarouselPrev` / `CarouselNext` /\n * `CarouselDots` / `CarouselDot` — because an SFC's default export cannot carry React's statics.\n */\ndefineOptions({ name: 'Carousel', inheritAttrs: false });\n\n/** The viewport, nav buttons and dots — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<CarouselProps>(), {\n index: undefined,\n defaultIndex: 0,\n canLoop: false,\n autoPlay: undefined,\n pauseLabel: 'Pause slides',\n resumeLabel: 'Resume slides',\n slidesCount: undefined,\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader moves to a different slide, with the new index. */\n 'update:index': [index: number];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst { value: index, setValue: setIndexState } = useControlled<number>({\n controlled: () => props.index,\n default: props.defaultIndex,\n onChange: (next) => emit('update:index', next),\n});\n\nconst count = ref(props.slidesCount ?? 0);\nconst paused = ref(false);\nconst pointerPaused = ref(false);\nconst focusPaused = ref(false);\nconst mounted = ref(false);\nconst reducedMotion = useReducedMotion();\nonMounted(() => {\n mounted.value = true;\n});\n\n// External override.\nwatch(\n () => props.slidesCount,\n (value) => {\n if (value != null) count.value = value;\n },\n);\n\nfunction setCount(next: number): void {\n count.value = next;\n}\n\nfunction setIndex(target: number): void {\n if (count.value === 0) {\n setIndexState(0);\n return;\n }\n const next = props.canLoop\n ? ((target % count.value) + count.value) % count.value\n : Math.max(0, Math.min(count.value - 1, target));\n setIndexState(next);\n}\n\nfunction prev(): void {\n setIndex(index.value - 1);\n}\n\nfunction next(): void {\n setIndex(index.value + 1);\n}\n\nfunction setPaused(value: boolean): void {\n paused.value = value;\n}\n\n// Auto-play. `watchEffect` rather than `watch` so the tracked set matches React's\n// dependency array exactly — every value below is read up front, which is what\n// makes the interval restart on an index change the way React's effect did.\nwatchEffect((onCleanup) => {\n const interval = props.autoPlay;\n const loop = props.canLoop;\n const total = count.value;\n const current = index.value;\n if (\n !mounted.value ||\n !interval ||\n interval <= 0 ||\n paused.value ||\n pointerPaused.value ||\n focusPaused.value ||\n reducedMotion.value ||\n total === 0\n )\n return;\n const handle = window.setInterval(() => {\n setIndex(loop ? current + 1 : Math.min(total - 1, current + 1));\n }, interval);\n onCleanup(() => window.clearInterval(handle));\n});\n\n/* Live getters, not a snapshot — index, count and pause state have to reach\n every already-mounted child. */\nprovide<CarouselContextValue>(CarouselKey, {\n get index() {\n return index.value;\n },\n setIndex,\n get count() {\n return count.value;\n },\n setCount,\n get loop() {\n return props.canLoop;\n },\n prev,\n next,\n get paused() {\n return paused.value || pointerPaused.value || focusPaused.value;\n },\n setPaused,\n get autoPlay() {\n return props.autoPlay;\n },\n});\n\nconst classes = computed(() => cn('relative', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `focusin` / `focusout`, not `focus` / `blur`: React's `onFocus` / `onBlur`\n on a container bubble from descendants, and the native pair does not. -->\n <div\n ref=\"el\"\n v-bind=\"rest\"\n :class=\"classes\"\n @mouseenter=\"pointerPaused = true\"\n @mouseleave=\"pointerPaused = false\"\n @focusin=\"focusPaused = true\"\n @focusout=\"focusPaused = el?.contains($event.relatedTarget as Node) ?? false\"\n >\n <button\n v-if=\"props.autoPlay && !reducedMotion\"\n type=\"button\"\n :aria-pressed=\"paused\"\n class=\"mb-2 rounded border px-2 py-1 text-sm\"\n @click=\"setPaused(!paused)\"\n >\n {{ paused ? props.resumeLabel : props.pauseLabel }}\n </button>\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `CarouselViewportProps` and consumers import it.\n Its only member was `aria-label`, which stays a FALLTHROUGH attr — declaring a\n hyphenated prop name would have Vue camelize it to `ariaLabel`, so the\n `'Carousel'` default below would never apply. */\nexport interface CarouselViewportProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { AriaAttribute } from '../../../foundation/dom';\nimport { cn } from '../../../foundation/styles';\nimport { useCarouselContext } from './CarouselContext';\n\n/** Renders the clipping frame and owns the arrow-key seam; React shipped it as `Carousel.Viewport`. */\ndefineOptions({ name: 'CarouselViewport', inheritAttrs: false });\n\n/** The `CarouselSlides` content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst carousel = useCarouselContext();\n\n/** The accessible label for the viewport. Default `'Carousel'`. */\nconst ariaLabel = computed(() => (attrs[AriaAttribute.Label] as string | undefined) ?? 'Carousel');\n\n/**\n * Runs after a consumer's own `keydown` — `rest` sits ahead of this binding in\n * the template, which is what makes the `defaultPrevented` check meaningful, the\n * same way React's explicit `onKeyDown?.(e)` call did.\n */\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.isComposing || event.target !== event.currentTarget) return;\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n carousel.prev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n carousel.next();\n }\n}\n\nconst classes = computed(() =>\n cn(\n 'relative overflow-hidden rounded-md focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class` and `aria-label`, both re-applied explicitly above. */\nconst rest = computed(() => {\n const { class: _class, [AriaAttribute.Label]: _ariaLabel, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"el\"\n role=\"group\"\n aria-roledescription=\"carousel\"\n :aria-label=\"ariaLabel\"\n :tabindex=\"0\"\n v-bind=\"rest\"\n :class=\"classes\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name that consumers import; the slides arrive through the default\n slot, so the interface carries no members. */\nexport interface CarouselSlidesProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUpdated, useAttrs, useSlots, useTemplateRef, type VNode } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { renderableChildren } from '../../../foundation/primitives';\nimport { useCarouselContext } from './CarouselContext';\n\n/** Renders the sliding track, wrapping each child in its own `role=\"group\"` slide frame. */\ndefineOptions({ name: 'CarouselSlides', inheritAttrs: false });\n\n/** The slides. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst carousel = useCarouselContext();\n\n/**\n * A function, not a `computed`: the slot is re-invoked on every render, so the\n * vnodes handed to `v-for` are always fresh rather than a cached array of\n * already-mounted ones. Call it — `v-for` over a bare function iterates nothing.\n */\nfunction slideChildren(): Array<VNode> {\n return renderableChildren(slots.default?.());\n}\n\n/**\n * No children array exists to depend on, so the count is re-read after every\n * render of this component — which is precisely when the slot content can have\n * changed. Writing an unchanged count is a no-op on a ref, so this cannot loop.\n */\nfunction syncCount(): void {\n carousel.setCount(slideChildren().length);\n}\n\nonMounted(syncCount);\nonUpdated(syncCount);\n\nconst classes = computed(() =>\n cn('flex transition-transform duration-300 ease-out', attrs.class as string | undefined),\n);\n\n/** Vue does not append units to a numeric `:style` value — spelled out. */\nconst trackStyle = computed(() => ({ transform: `translateX(-${carousel.index * 100}%)` }));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" :aria-live=\"carousel.autoPlay ? 'off' : 'polite'\" v-bind=\"rest\" :class=\"classes\" :style=\"trackStyle\">\n <!-- The single-element `v-for` hoists the slot call into a template local, so\n the slot is invoked once per render and `length` is the live child count\n rather than the injected count, which lags by a tick. -->\n <template v-for=\"(children, hoist) in [slideChildren()]\" :key=\"hoist\">\n <div\n v-for=\"(child, slideIndex) in children\"\n :key=\"child.key ?? slideIndex\"\n role=\"group\"\n aria-roledescription=\"slide\"\n :aria-label=\"`${slideIndex + 1} of ${children.length}`\"\n :aria-hidden=\"slideIndex !== carousel.index || undefined\"\n class=\"w-full shrink-0\"\n >\n <component :is=\"child\" />\n </div>\n </template>\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `CarouselSlideProps` (an alias of the div's HTML\n attributes) and consumers import it. Every attribute falls through here. */\nexport interface CarouselSlideProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders one slide's content box; React shipped it as `Carousel.Slide`. */\ndefineOptions({ name: 'CarouselSlide', inheritAttrs: false });\n\n/** The slide content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('h-full w-full', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — `aria-label` and `type` both stay FALLTHROUGH attrs, and\n the shared `CarouselNavButtonProps` name lives in `CarouselContext.ts`. The block\n itself is load-bearing: in a `<script setup>`-only SFC, `vue-eslint-parser` loses\n `ignoreRestSiblings` and the `const { class: _class, ...others }` omission below\n trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronLeft } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport { useCarouselContext } from './CarouselContext';\n\n/** Renders the step-back nav button; React shipped it as `Carousel.Prev`. */\ndefineOptions({ name: 'CarouselPrev', inheritAttrs: false });\n\n/** Overrides the chevron — React's `children ?? <Icon …>`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLButtonElement>('el');\nconst carousel = useCarouselContext();\n\nconst isDisabled = computed(() => !carousel.loop && carousel.index === 0);\n\n/**\n * Runs after a consumer's own `click` — `rest` sits ahead of this binding in the\n * template, which is what makes the `defaultPrevented` check meaningful, the same\n * way React's explicit `onClick?.(e)` call did.\n */\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n carousel.prev();\n}\n\nconst classes = computed(() =>\n cn(\n 'absolute left-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/80 text-foreground shadow ring-1 ring-border transition-colors hover:bg-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` and `aria-label` sit ahead of `rest`, so a consumer's own value wins —\n React's `type = 'button'` / `'aria-label' = 'Previous slide'` destructured defaults. -->\n <button\n ref=\"el\"\n type=\"button\"\n aria-label=\"Previous slide\"\n :disabled=\"isDisabled\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"onClick\"\n >\n <slot><Icon :icon=\"ChevronLeft\" :size=\"16\" /></slot>\n </button>\n</template>\n","<script lang=\"ts\">\n/* No props of its own — `aria-label` and `type` both stay FALLTHROUGH attrs, and\n the shared `CarouselNavButtonProps` name lives in `CarouselContext.ts`. The block\n itself is load-bearing: in a `<script setup>`-only SFC, `vue-eslint-parser` loses\n `ignoreRestSiblings` and the `const { class: _class, ...others }` omission below\n trips `no-unused-vars`. */\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport { useCarouselContext } from './CarouselContext';\n\n/** Renders the step-forward nav button; React shipped it as `Carousel.Next`. */\ndefineOptions({ name: 'CarouselNext', inheritAttrs: false });\n\n/** Overrides the chevron — React's `children ?? <Icon …>`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLButtonElement>('el');\nconst carousel = useCarouselContext();\n\nconst isDisabled = computed(() => !carousel.loop && carousel.index === carousel.count - 1);\n\n/**\n * Runs after a consumer's own `click` — `rest` sits ahead of this binding in the\n * template, which is what makes the `defaultPrevented` check meaningful, the same\n * way React's explicit `onClick?.(e)` call did.\n */\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n carousel.next();\n}\n\nconst classes = computed(() =>\n cn(\n 'absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/80 text-foreground shadow ring-1 ring-border transition-colors hover:bg-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` and `aria-label` sit ahead of `rest`, so a consumer's own value wins —\n React's `type = 'button'` / `'aria-label' = 'Next slide'` destructured defaults. -->\n <button\n ref=\"el\"\n type=\"button\"\n aria-label=\"Next slide\"\n :disabled=\"isDisabled\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"onClick\"\n >\n <slot><Icon :icon=\"ChevronRight\" :size=\"16\" /></slot>\n </button>\n</template>\n","<script lang=\"ts\">\nexport interface CarouselDotProps {\n /** The slide this dot jumps to. */\n readonly slideIndex: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useCarouselContext } from './CarouselContext';\n\n/** Renders one pagination dot that jumps to its slide; React shipped it as `Carousel.Dot`. */\ndefineOptions({ name: 'CarouselDot', inheritAttrs: false });\n\nconst props = defineProps<CarouselDotProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLButtonElement>('el');\nconst carousel = useCarouselContext();\n\nconst isActive = computed(() => carousel.index === props.slideIndex);\n\n/**\n * Runs after a consumer's own `click` — `rest` sits ahead of this binding in the\n * template, which is what makes the `defaultPrevented` check meaningful, the same\n * way React's explicit `onClick?.(e)` call did.\n */\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n carousel.setIndex(props.slideIndex);\n}\n\nconst classes = computed(() =>\n cn(\n 'h-1.5 rounded-full bg-border transition-all hover:bg-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n isActive.value ? 'w-6 bg-primary hover:bg-primary' : 'w-1.5',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` sits ahead of `rest` so a consumer's own value wins — React's `type = 'button'`. -->\n <button\n ref=\"el\"\n type=\"button\"\n :aria-label=\"`Go to slide ${slideIndex + 1}`\"\n :aria-current=\"isActive || undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"onClick\"\n />\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `CarouselDotsProps` (an alias of the div's HTML\n attributes) and consumers import it. Every attribute falls through here. */\nexport interface CarouselDotsProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useCarouselContext } from './CarouselContext';\nimport CarouselDot from './CarouselDot.vue';\n\n/** Renders the pagination dot row, one dot per slide; React shipped it as `Carousel.Dots`. */\ndefineOptions({ name: 'CarouselDots', inheritAttrs: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst carousel = useCarouselContext();\n\nconst slideIndexes = computed(() => Array.from({ length: carousel.count }, (_unused, i) => i));\n\nconst classes = computed(() => cn('mt-3 flex items-center justify-center gap-1.5', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <CarouselDot v-for=\"slideIndex in slideIndexes\" :key=\"slideIndex\" :slide-index=\"slideIndex\" />\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the DiffViewer layout mode. */\nexport const DiffView = {\n /** Refers to side-by-side columns. */\n Split: 'split',\n /** Refers to a single interleaved column. */\n Unified: 'unified',\n} as const;\n\nexport type DiffView = (typeof DiffView)[keyof typeof DiffView];\n\n/** Defines a diff row's change operation. */\nconst DiffOp = {\n /** Refers to an unchanged line. */\n Unchanged: 'unchanged',\n /** Refers to an added line. */\n Added: 'added',\n /** Refers to a removed line. */\n Removed: 'removed',\n} as const;\n\ntype DiffOp = (typeof DiffOp)[keyof typeof DiffOp];\n\n/** Defines which side of a split diff a column renders. */\nconst DiffSide = {\n /** Refers to the left (old) column. */\n Left: 'left',\n /** Refers to the right (new) column. */\n Right: 'right',\n} as const;\n\ntype DiffSide = (typeof DiffSide)[keyof typeof DiffSide];\n\ninterface DiffRow {\n op: DiffOp;\n leftNum: number | null;\n rightNum: number | null;\n text: string;\n}\n\nexport interface DiffViewerProps {\n readonly left: string;\n readonly right: string;\n readonly view?: DiffView;\n /** The label for the original text. Default `\"Before\"`. Rich content → the `leftLabel` slot. */\n readonly leftLabel?: string | number;\n /** The label for the modified text. Default `\"After\"`. Rich content → the `rightLabel` slot. */\n readonly rightLabel?: string | number;\n readonly hasStats?: boolean;\n}\n\n/**\n * LCS-based line diff. Returns ordered rows with `unchanged` / `added` /\n * `removed` operations. O(n×m) time + space.\n */\nfunction computeDiff(left: string, right: string): ReadonlyArray<DiffRow> {\n const a = left.split('\\n');\n const b = right.split('\\n');\n const n = a.length;\n const m = b.length;\n\n // LCS table: dp[i][j] = LCS length of a[0..i] and b[0..j].\n const dp: Array<Array<number>> = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));\n for (let i = 1; i <= n; i++) {\n for (let j = 1; j <= m; j++) {\n if (a[i - 1] === b[j - 1]) dp[i]![j] = dp[i - 1]![j - 1]! + 1;\n else dp[i]![j] = Math.max(dp[i - 1]![j]!, dp[i]![j - 1]!);\n }\n }\n\n // Backtrack.\n const rows: Array<DiffRow> = [];\n let i = n;\n let j = m;\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {\n rows.push({ op: DiffOp.Unchanged, leftNum: i, rightNum: j, text: a[i - 1]! });\n i--;\n j--;\n } else if (j > 0 && (i === 0 || dp[i]![j - 1]! >= dp[i - 1]![j]!)) {\n rows.push({ op: DiffOp.Added, leftNum: null, rightNum: j, text: b[j - 1]! });\n j--;\n } else if (i > 0) {\n rows.push({ op: DiffOp.Removed, leftNum: i, rightNum: null, text: a[i - 1]! });\n i--;\n } else {\n break;\n }\n }\n rows.reverse();\n return rows;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a line-level diff in split or unified columns, from its own LCS pass.\n *\n * No external diff dep. Intra-line word highlighting needs the `diff` package and a post-process — deferred.\n *\n * React's private `SplitView` / `UnifiedView` / `DiffColumn` components render inline here: they held no state and\n * were never exported, so a computed cell model plus two template branches replaces them.\n */\ndefineOptions({ name: 'DiffViewer', inheritAttrs: false });\n\ndefineSlots<{\n /** The left-label override, when a plain string is not enough. */\n leftLabel(): unknown;\n\n /** The right-label override, when a plain string is not enough. */\n rightLabel(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<DiffViewerProps>(), {\n /* Both sides stay declared-required — Vue still warns when one is missing — but\n the defaults keep an absent (or transiently-undefined) value out of\n `computeDiff`, which called `.split` on it and took the whole page down. */\n left: '',\n right: '',\n view: DiffView.Split,\n leftLabel: 'Before',\n rightLabel: 'After',\n hasStats: true,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/** One rendered line of a column. `op: null` marks a filler (the other side has no counterpart). */\ninterface DiffCell {\n key: number;\n op: DiffOp | null;\n num: number | null;\n text: string;\n rowClass: string;\n}\n\n/** One rendered line of the unified column — carries both line numbers and the `+` / `−` marker. */\ninterface UnifiedCell {\n key: number;\n op: DiffOp;\n leftNum: number | null;\n rightNum: number | null;\n sign: string;\n text: string;\n rowClass: string;\n}\n\nconst rows = computed(() => computeDiff(props.left, props.right));\n\nconst stats = computed(() => {\n let added = 0;\n let removed = 0;\n for (const r of rows.value) {\n if (r.op === DiffOp.Added) added += 1;\n if (r.op === DiffOp.Removed) removed += 1;\n }\n return { added, removed };\n});\n\nconst isSplit = computed(() => props.view === DiffView.Split);\n\nconst toCell = (row: DiffRow | undefined, index: number, side: DiffSide): DiffCell => {\n if (!row) return { key: index, op: null, num: null, text: '', rowClass: '' };\n const isChanged =\n (side === DiffSide.Left && row.op === DiffOp.Removed) || (side === DiffSide.Right && row.op === DiffOp.Added);\n return {\n key: index,\n op: row.op,\n num: side === DiffSide.Left ? row.leftNum : row.rightNum,\n text: row.text,\n rowClass: cn(\n 'flex',\n isChanged && side === DiffSide.Left && 'bg-destructive-soft',\n isChanged && side === DiffSide.Right && 'bg-success-soft',\n ),\n };\n};\n\n/**\n * Pair removed/added rows row-by-row when possible to align them.\n * Simple alignment: walk, when we hit \"removed\" followed by \"added\", pair them.\n */\nconst splitColumns = computed<ReadonlyArray<{ side: DiffSide; cells: ReadonlyArray<DiffCell> }>>(() => {\n const pairs: Array<{ left?: DiffRow; right?: DiffRow }> = [];\n const source = rows.value;\n for (let i = 0; i < source.length; i++) {\n const r = source[i]!;\n if (r.op === DiffOp.Unchanged) {\n pairs.push({ left: r, right: r });\n } else if (r.op === DiffOp.Removed) {\n const next = source[i + 1];\n if (next && next.op === DiffOp.Added) {\n pairs.push({ left: r, right: next });\n i++;\n } else {\n pairs.push({ left: r });\n }\n } else if (r.op === DiffOp.Added) {\n pairs.push({ right: r });\n }\n }\n return [\n { side: DiffSide.Left, cells: pairs.map((p, i) => toCell(p.left, i, DiffSide.Left)) },\n { side: DiffSide.Right, cells: pairs.map((p, i) => toCell(p.right, i, DiffSide.Right)) },\n ];\n});\n\nconst unifiedRows = computed<ReadonlyArray<UnifiedCell>>(() =>\n rows.value.map((r, i) => ({\n key: i,\n op: r.op,\n leftNum: r.leftNum,\n rightNum: r.rightNum,\n sign: r.op === DiffOp.Added ? '+' : r.op === DiffOp.Removed ? '−' : ' ',\n text: r.text,\n rowClass: cn('flex', r.op === DiffOp.Added && 'bg-success-soft', r.op === DiffOp.Removed && 'bg-destructive-soft'),\n })),\n);\n\nconst classes = computed(() =>\n cn(\n 'overflow-hidden rounded-md border border-border bg-card font-mono text-xs text-card-foreground shadow-sm',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div\n v-if=\"props.hasStats\"\n class=\"flex items-center justify-between border-b border-border bg-muted/40 px-3 py-1.5 text-xs\"\n >\n <div class=\"text-muted-foreground\">\n <slot name=\"leftLabel\">{{ props.leftLabel }}</slot> →\n <slot name=\"rightLabel\">{{ props.rightLabel }}</slot>\n </div>\n <div class=\"flex items-center gap-3\">\n <span class=\"text-success font-medium\">+{{ stats.added }}</span>\n <span class=\"text-destructive font-medium\">−{{ stats.removed }}</span>\n </div>\n </div>\n\n <div v-if=\"isSplit\" class=\"grid grid-cols-2 divide-x divide-border\">\n <div v-for=\"column in splitColumns\" :key=\"column.side\" class=\"overflow-x-auto\">\n <template v-for=\"cell in column.cells\" :key=\"cell.key\">\n <div v-if=\"cell.op === null\" class=\"flex bg-muted/30\">\n <span class=\"select-none w-10 shrink-0 px-2 py-0.5 text-right text-muted-foreground\">·</span>\n <span class=\"flex-1 whitespace-pre px-2 py-0.5\"> </span>\n </div>\n <div v-else :data-state=\"cell.op\" :class=\"cell.rowClass\">\n <span\n class=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\"\n >{{ cell.num ?? '' }}</span\n >\n <span class=\"flex-1 whitespace-pre px-2 py-0.5\">{{ cell.text || ' ' }}</span>\n </div>\n </template>\n </div>\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <div v-for=\"row in unifiedRows\" :key=\"row.key\" :data-state=\"row.op\" :class=\"row.rowClass\">\n <span\n class=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\"\n >{{ row.leftNum ?? '' }}</span\n >\n <span\n class=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\"\n >{{ row.rightNum ?? '' }}</span\n >\n <span class=\"w-5 shrink-0 px-1 py-0.5 text-center text-muted-foreground\">{{ row.sign }}</span>\n <span class=\"flex-1 whitespace-pre px-2 py-0.5\">{{ row.text || ' ' }}</span>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the Sparkline render style. */\nexport const SparklineVariant = {\n /** Refers to a connected line. */\n Line: 'line',\n /** Refers to a filled area under the line. */\n Area: 'area',\n /** Refers to vertical bars. */\n Bar: 'bar',\n /** Refers to discrete dots. */\n Dot: 'dot',\n} as const;\n\nexport type SparklineVariant = (typeof SparklineVariant)[keyof typeof SparklineVariant];\n\n/** Defines the Sparkline color tone. */\nexport const SparklineTone = {\n /** Refers to the primary brand color. */\n Brand: 'brand',\n /** Refers to the positive / confirmation color. */\n Success: 'success',\n /** Refers to the caution color. */\n Warning: 'warning',\n /** Refers to the destructive / error color. */\n Danger: 'danger',\n /** Refers to the muted color. */\n Muted: 'muted',\n /** Refers to the inherited `currentColor`. */\n Current: 'current',\n} as const;\n\nexport type SparklineTone = (typeof SparklineTone)[keyof typeof SparklineTone];\n\nexport interface SparklineProps {\n /** The series to plot, in order. */\n readonly data: ReadonlyArray<number>;\n\n /** The render style. Default `line`. */\n readonly variant?: SparklineVariant;\n\n /** The px width of the viewBox. Default `120`. */\n readonly width?: number;\n\n /** The px height of the viewBox. Default `32`. */\n readonly height?: number;\n\n /** The color tone. Default `brand`. */\n readonly tone?: SparklineTone;\n\n /** The lower bound of the value scale. Defaults to the series minimum. */\n readonly min?: number;\n\n /** The upper bound of the value scale. Defaults to the series maximum. */\n readonly max?: number;\n\n /** The emphasized dot on the final point. */\n readonly hasLast?: boolean;\n\n /** The accessible label summarizing the trend. */\n readonly ariaLabel?: string;\n}\n\n/** The derived plot geometry — React's `useMemo` payload. */\ninterface SparklineGeometry {\n points: ReadonlyArray<readonly [number, number]>;\n barWidth: number;\n barRenderWidth: number;\n lastX: number;\n lastY: number;\n areaPath: string;\n linePath: string;\n}\n\nconst EmptyGeometry: SparklineGeometry = {\n points: [],\n barWidth: 0,\n barRenderWidth: 0,\n lastX: 0,\n lastY: 0,\n areaPath: '',\n linePath: '',\n};\n\nconst ToneClass: Record<SparklineTone, string> = {\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n muted: 'text-muted-foreground',\n current: '',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useId } from '../../../foundation/identifiers';\n\n/**\n * Renders an inline trend chart — line, area, bar, or dot — as bare SVG with no scales or axes.\n *\n * Colour comes from Tailwind `text-*` tokens; pair with `currentColor` for parent inheritance.\n */\ndefineOptions({ name: 'Sparkline', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<SparklineProps>(), {\n variant: 'line',\n width: 120,\n height: 32,\n tone: 'brand',\n min: undefined,\n max: undefined,\n hasLast: undefined,\n ariaLabel: 'Trend',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<SVGSVGElement>('el');\nconst titleId = useId();\n\nconst geometry = computed<SparklineGeometry>(() => {\n const { data, width, height } = props;\n if (data.length === 0) return EmptyGeometry;\n\n let seriesMin = Number.POSITIVE_INFINITY;\n let seriesMax = Number.NEGATIVE_INFINITY;\n if (props.min === undefined || props.max === undefined) {\n for (const value of data) {\n seriesMin = Math.min(seriesMin, value);\n seriesMax = Math.max(seriesMax, value);\n }\n }\n const min = props.min ?? seriesMin;\n const max = props.max ?? seriesMax;\n const range = max - min || 1;\n const stepX = data.length === 1 ? 0 : width / (data.length - 1);\n const pad = 1; // keep stroke inside the box\n\n const points = data.map((v, i) => {\n const x = i * stepX;\n const y = height - ((v - min) / range) * (height - pad * 2) - pad;\n return [x, y] as const;\n });\n\n const first = points[0];\n const last = points[points.length - 1];\n if (!first || !last) return EmptyGeometry;\n\n const linePath = points.map(([x, y], i) => (i === 0 ? `M${x},${y}` : `L${x},${y}`)).join(' ');\n const areaPath = `${linePath} L${last[0]},${height} L${first[0]},${height} Z`;\n const barWidth = width / data.length - 1;\n\n return {\n points,\n barWidth,\n barRenderWidth: Math.max(1, barWidth),\n lastX: last[0],\n lastY: last[1],\n areaPath,\n linePath,\n };\n});\n\nconst showLast = computed(() => Boolean(props.hasLast) && props.data.length > 0 && props.variant !== 'dot');\n\nconst classes = computed(() =>\n cn('inline-block overflow-visible', ToneClass[props.tone], attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg\n ref=\"el\"\n role=\"img\"\n :aria-labelledby=\"titleId\"\n :width=\"props.width\"\n :height=\"props.height\"\n :viewBox=\"`0 0 ${props.width} ${props.height}`\"\n preserveAspectRatio=\"none\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <title :id=\"titleId\">{{ props.ariaLabel }}</title>\n\n <template v-if=\"props.variant === 'area'\">\n <path :d=\"geometry.areaPath\" fill=\"currentColor\" fill-opacity=\"0.15\" />\n <path\n :d=\"geometry.linePath\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </template>\n\n <path\n v-if=\"props.variant === 'line'\"\n :d=\"geometry.linePath\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n\n <g v-if=\"props.variant === 'bar'\">\n <rect\n v-for=\"(point, i) in geometry.points\"\n :key=\"i\"\n :x=\"point[0] - geometry.barWidth / 2\"\n :y=\"point[1]\"\n :width=\"geometry.barRenderWidth\"\n :height=\"props.height - point[1]\"\n fill=\"currentColor\"\n rx=\"1\"\n />\n </g>\n\n <g v-if=\"props.variant === 'dot'\">\n <circle\n v-for=\"(point, i) in geometry.points\"\n :key=\"i\"\n :cx=\"point[0]\"\n :cy=\"point[1]\"\n r=\"1.5\"\n fill=\"currentColor\"\n />\n </g>\n\n <circle v-if=\"showLast\" :cx=\"geometry.lastX\" :cy=\"geometry.lastY\" r=\"2.5\" fill=\"currentColor\" />\n </svg>\n</template>\n","<script lang=\"ts\">\n/** Defines props for the radius glyph. */\nexport interface RadiusGlyphProps {\n /** The filled inner disc's radius as a fraction of the outer track (`0..1`). */\n readonly extent: number;\n\n /** The glyph's pixel size. */\n readonly size?: number;\n\n /** The stroke and fill color. */\n readonly color?: string;\n\n /** The outer track's stroke width. */\n readonly strokeWidth?: number;\n\n /** The outer track's opacity. */\n readonly trackOpacity?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from 'vue';\n\n/** Renders a concentric-circle glyph whose filled inner disc scales with `extent` (`0..1`). */\ndefineOptions({ name: 'RadiusGlyph' });\n\nconst props = withDefaults(defineProps<RadiusGlyphProps>(), {\n /* `extent` stays declared-required — Vue still warns when it is missing — but a\n default keeps `undefined` out of `discRadius`, which rendered as `r=\"NaN\"` and\n made the browser reject the `<circle>`. `0` is the low end of its own `0..1`. */\n extent: 0,\n size: 16,\n color: 'currentColor',\n strokeWidth: 1.5,\n trackOpacity: 0.4,\n});\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\nconst discRadius = computed(() => Math.max(2, 10 * props.extent));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"none\"\n :stroke=\"props.color\"\n :stroke-width=\"props.strokeWidth\"\n :opacity=\"props.trackOpacity\"\n />\n <circle cx=\"12\" cy=\"12\" :r=\"discRadius\" :fill=\"props.color\" />\n </svg>\n</template>\n","<script lang=\"ts\">\n/** Defines props for a frame glyph. */\nexport interface FrameGlyphProps {\n /** The outer frame's corner radius (`0` = square). */\n readonly frameRx: number;\n\n /** The pupil's roundness as a fraction of its size (`0` = square, `0.5` = circle). */\n readonly pupilRoundness: number;\n\n /** The dot-only mode — renders only the enlarged inner pupil instead of the full frame + pupil. */\n readonly isDot?: boolean;\n\n /** The glyph's pixel size. */\n readonly size?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from 'vue';\n\n/**\n * Renders a nested-frame glyph — an outer frame plus inner pupil, or the enlarged pupil alone.\n *\n * `isDot` picks the pupil-only form. Reads as a scanner / viewfinder / QR-eye indicator.\n */\ndefineOptions({ name: 'FrameGlyph' });\n\n/* `isDot` defaults to `undefined`, not `false`: Vue casts an absent `Boolean`\n prop to `false`, and React's original left it genuinely optional. */\n/* `frameRx` / `pupilRoundness` stay declared-required — Vue still warns when one is\n missing — but the defaults keep `undefined` out of the `rx` attributes, which\n rendered as `rx=\"NaN\"` and made the browser reject the `<rect>`. `0` = square for\n both, which is each prop's own documented zero. */\nconst props = withDefaults(defineProps<FrameGlyphProps>(), {\n frameRx: 0,\n pupilRoundness: 0,\n isDot: undefined,\n size: 20,\n});\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\nconst pupilSize = computed(() => (props.isDot ? 12 : 8));\nconst pupilOffset = computed(() => (props.isDot ? 6 : 8));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <rect\n v-if=\"!props.isDot\"\n :x=\"2\"\n :y=\"2\"\n :width=\"20\"\n :height=\"20\"\n :rx=\"props.frameRx\"\n fill=\"none\"\n stroke=\"currentColor\"\n :stroke-width=\"2.5\"\n />\n <rect\n :x=\"pupilOffset\"\n :y=\"pupilOffset\"\n :width=\"pupilSize\"\n :height=\"pupilSize\"\n :rx=\"pupilSize * props.pupilRoundness\"\n fill=\"currentColor\"\n />\n </svg>\n</template>\n","// Three-cell preview geometry — cells at these x-positions, each this wide, on a 24-unit canvas.\nexport const CellPositions = [3, 9.5, 16];\nexport const CellSize = 5;\nexport const BarCornerRx = 2.4;\n\n/**\n * Defines props for a fixed-geometry glyph.\n *\n * React shipped all four glyphs from one `ModuleGlyphs.tsx`. An SFC is one\n * component per file, so the four became `DotsGlyph.vue`, `VerticalBarsGlyph.vue`,\n * `HorizontalBarsGlyph.vue` and `CellsGlyph.vue`, with the shared geometry and\n * this prop type left here.\n */\nexport interface GlyphProps {\n /** The glyph's pixel size. */\n readonly size?: number;\n}\n","<script lang=\"ts\">\nimport type { GlyphProps } from './ModuleGlyphs';\n\nexport type { GlyphProps };\n</script>\n\n<script setup lang=\"ts\">\nimport { useTemplateRef } from 'vue';\nimport { CellPositions, CellSize } from './ModuleGlyphs';\n\n/** Renders a three-dot glyph. */\ndefineOptions({ name: 'DotsGlyph' });\n\nconst props = withDefaults(defineProps<GlyphProps>(), { size: 20 });\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <circle v-for=\"x in CellPositions\" :key=\"x\" :cx=\"x + CellSize / 2\" :cy=\"12\" :r=\"2.5\" fill=\"currentColor\" />\n </svg>\n</template>\n","<script lang=\"ts\">\nimport type { GlyphProps } from './ModuleGlyphs';\n\nexport type { GlyphProps };\n</script>\n\n<script setup lang=\"ts\">\nimport { useTemplateRef } from 'vue';\nimport { BarCornerRx, CellPositions, CellSize } from './ModuleGlyphs';\n\n/** Renders a three-vertical-bar glyph. */\ndefineOptions({ name: 'VerticalBarsGlyph' });\n\nconst props = withDefaults(defineProps<GlyphProps>(), { size: 20 });\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <rect\n v-for=\"x in CellPositions\"\n :key=\"x\"\n :x=\"x\"\n :y=\"4\"\n :width=\"CellSize\"\n :height=\"16\"\n :rx=\"BarCornerRx\"\n fill=\"currentColor\"\n />\n </svg>\n</template>\n","<script lang=\"ts\">\nimport type { GlyphProps } from './ModuleGlyphs';\n\nexport type { GlyphProps };\n</script>\n\n<script setup lang=\"ts\">\nimport { useTemplateRef } from 'vue';\nimport { BarCornerRx, CellPositions, CellSize } from './ModuleGlyphs';\n\n/** Renders a three-horizontal-bar glyph. */\ndefineOptions({ name: 'HorizontalBarsGlyph' });\n\nconst props = withDefaults(defineProps<GlyphProps>(), { size: 20 });\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <rect\n v-for=\"y in CellPositions\"\n :key=\"y\"\n :x=\"4\"\n :y=\"y\"\n :width=\"16\"\n :height=\"CellSize\"\n :rx=\"BarCornerRx\"\n fill=\"currentColor\"\n />\n </svg>\n</template>\n","<script lang=\"ts\">\nimport type { GlyphProps } from './ModuleGlyphs';\n\n/** Defines props for the cells glyph. */\nexport interface CellsGlyphProps extends GlyphProps {\n /** The cells' corner radius. */\n readonly cornerRx: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useTemplateRef } from 'vue';\nimport { CellPositions, CellSize } from './ModuleGlyphs';\n\n/** Renders a three-cell glyph with the given corner radius. */\ndefineOptions({ name: 'CellsGlyph' });\n\n/* `cornerRx` stays declared-required — Vue still warns when it is missing — but a\n default keeps `undefined` out of the `rx` attribute, which rendered as\n `rx=\"NaN\"` and made the browser reject the whole `<rect>`. `0` = square. */\nconst props = withDefaults(defineProps<CellsGlyphProps>(), { cornerRx: 0, size: 20 });\n\nconst el = useTemplateRef<SVGSVGElement>('el');\n\ndefineExpose({ el });\n</script>\n\n<template>\n <svg ref=\"el\" viewBox=\"0 0 24 24\" :width=\"props.size\" :height=\"props.size\" aria-hidden=\"true\">\n <rect\n v-for=\"x in CellPositions\"\n :key=\"x\"\n :x=\"x\"\n :y=\"9.5\"\n :width=\"CellSize\"\n :height=\"CellSize\"\n :rx=\"props.cornerRx\"\n fill=\"currentColor\"\n />\n </svg>\n</template>\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\n\n// HeatmapCalendarGrid is a date-only surface → its public API is keyed by\n// `Temporal.PlainDate` (calendar math, no time zone). Internally the lookup is\n// keyed by each date's ISO `.toString()` (\"YYYY-MM-DD\") so cell values resolve\n// in O(1); no native `Date`/raw-string leaks into the API.\n\n/** Defines the HeatmapCalendarGrid color ramp tone. */\nexport const HeatmapCalendarGridTone = {\n /** Refers to the primary brand ramp. */\n Brand: 'brand',\n /** Refers to the positive / confirmation ramp. */\n Success: 'success',\n /** Refers to the caution ramp. */\n Warning: 'warning',\n /** Refers to the destructive / error ramp. */\n Danger: 'danger',\n /** Refers to the muted ramp. */\n Muted: 'muted',\n} as const;\n\nexport type HeatmapCalendarGridTone = (typeof HeatmapCalendarGridTone)[keyof typeof HeatmapCalendarGridTone];\n\nconst ToneClasses: Record<HeatmapCalendarGridTone, ReadonlyArray<string>> = {\n brand: ['bg-muted/50', 'bg-primary/20', 'bg-primary/40', 'bg-primary/70', 'bg-primary'],\n success: ['bg-muted/50', 'bg-success/20', 'bg-success/40', 'bg-success/70', 'bg-success'],\n warning: ['bg-muted/50', 'bg-warning/20', 'bg-warning/40', 'bg-warning/70', 'bg-warning'],\n danger: ['bg-muted/50', 'bg-destructive/20', 'bg-destructive/40', 'bg-destructive/70', 'bg-destructive'],\n muted: ['bg-muted/30', 'bg-muted', 'bg-muted-foreground/30', 'bg-muted-foreground/60', 'bg-muted-foreground'],\n};\n\nconst DefaultMonths: ReadonlyArray<string> = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n];\nconst DefaultWeekdays: ReadonlyArray<string> = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport interface HeatmapCalendarGridProps {\n /** The per-day counts, keyed by calendar date. */\n readonly values: Map<Temporal.PlainDate, number>;\n /** The rendered calendar year. Defaults to the current ISO year. */\n readonly year?: number;\n /** The first weekday of a column — `0` Sunday, `1` Monday. Default `0`. */\n readonly weekStart?: 0 | 1;\n /** The cell edge length in px. Default `12`. */\n readonly cellSize?: number;\n /** The gap between cells in px. Default `2`. */\n readonly gap?: number;\n /**\n * The intensity buckets (min 2, clamped). Default 5. Buckets map proportionally\n * onto the fixed 5-step tone palette, so buckets past 5 share palette classes.\n */\n readonly levels?: number;\n /** The color ramp tone. Default `brand`. */\n readonly tone?: HeatmapCalendarGridTone;\n /**\n * Fires with the clicked day and its value.\n *\n * Kept a prop rather than an emit because its *presence* is load-bearing — it\n * decides whether an in-year cell renders as a `<button>` or an inert `<div>`,\n * and Vue strips declared emit listeners out of `useAttrs()`.\n */\n readonly onCellClick?: (date: Temporal.PlainDate, value: number) => void;\n /** The 12 month labels, January first. */\n readonly monthLabels?: ReadonlyArray<string>;\n /** The 7 weekday labels, Sunday first. */\n readonly weekdayLabels?: ReadonlyArray<string>;\n /** The legend state. Default `true`. */\n readonly hasLegend?: boolean;\n}\n\ninterface HeatmapCell {\n date: Temporal.PlainDate;\n key: string;\n inYear: boolean;\n value: number;\n}\n\ninterface MonthMarker {\n month: number;\n col: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { Temporal as TemporalRuntime } from 'temporal-polyfill';\nimport { AriaAttribute } from '../../../foundation/dom';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a year-long heatmap — 53 week columns x 7 weekday rows, tinted per day.\n *\n * Cell intensity comes from `values[YYYY-MM-DD]`, bucketed into `levels` steps.\n */\ndefineOptions({ name: 'HeatmapCalendarGrid', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<HeatmapCalendarGridProps>(), {\n /* `values` stays declared-required — Vue still warns when it is missing — but a\n default keeps an absent (or transiently-undefined) value out of the `for...of`\n below, which threw `props.values is not iterable` and took the whole page down. */\n values: () => new Map<Temporal.PlainDate, number>(),\n // `year` stays undefined so the current-year fallback is evaluated lazily —\n // `withDefaults` would freeze a module-eval-time value into the options object.\n year: undefined,\n weekStart: 0,\n cellSize: 12,\n gap: 2,\n levels: 5,\n tone: 'brand',\n onCellClick: undefined,\n monthLabels: () => DefaultMonths,\n weekdayLabels: () => DefaultWeekdays,\n hasLegend: true,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst year = computed(() => props.year ?? TemporalRuntime.Now.plainDateISO().year);\n\n// Re-key the PlainDate-keyed API onto ISO strings (\"YYYY-MM-DD\") for O(1)\n// lookup during the grid walk (PlainDate is not usable as a Map identity key).\nconst valueMap = computed(() => {\n const map = new Map<string, number>();\n for (const [date, value] of props.values) map.set(date.toString(), value);\n return map;\n});\n\nconst grid = computed(() => {\n const lookup = valueMap.value;\n const start = TemporalRuntime.PlainDate.from({ year: year.value, month: 1, day: 1 });\n const end = TemporalRuntime.PlainDate.from({ year: year.value, month: 12, day: 31 });\n // Walk back to first weekStart day before/at year start.\n // Temporal `dayOfWeek`: 1 (Mon) … 7 (Sun); map to a Sunday=0 index.\n const sundayIdx = start.dayOfWeek % 7;\n const offset = (sundayIdx - props.weekStart + 7) % 7;\n let cur = start.subtract({ days: offset });\n\n const cols: Array<Array<HeatmapCell>> = [];\n let column: Array<HeatmapCell> = [];\n const months: Array<MonthMarker> = [];\n let lastSeenMonth = -1;\n let max = 0;\n\n while (TemporalRuntime.PlainDate.compare(cur, end) <= 0 || column.length > 0) {\n const inYear = cur.year === year.value;\n const key = cur.toString();\n const value = lookup.get(key) ?? 0;\n if (value > max) max = value;\n column.push({ date: cur, key, inYear, value });\n\n // Temporal `month` is 1-indexed; keep the 0-indexed marker the labels expect.\n if (inYear && cur.month - 1 !== lastSeenMonth) {\n lastSeenMonth = cur.month - 1;\n months.push({ month: cur.month - 1, col: cols.length });\n }\n\n if (column.length === 7) {\n cols.push(column);\n column = [];\n }\n cur = cur.add({ days: 1 });\n if (TemporalRuntime.PlainDate.compare(cur, end) > 0 && column.length === 0) break;\n }\n if (column.length > 0) cols.push(column);\n return { columns: cols as ReadonlyArray<ReadonlyArray<HeatmapCell>>, monthMarkers: months, maxValue: max };\n});\n\nconst toneSteps = computed(() => ToneClasses[props.tone]);\n\n/* Clamp to ≥2 so the zero step plus at least one filled step always exist. */\nconst levelCount = computed(() => Math.max(2, Math.floor(props.levels)));\n\nfunction bucket(value: number): number {\n const max = grid.value.maxValue;\n if (value <= 0 || max === 0) return 0;\n const idx = Math.ceil((value / max) * (levelCount.value - 1));\n return Math.min(levelCount.value - 1, idx);\n}\n\n/* The palette is a fixed 5-step ramp; map any bucket count onto it proportionally.\n 0 → empty step, top bucket → full tone; a nonzero bucket never returns the empty step. */\nfunction stepClass(level: number): string {\n const steps = toneSteps.value;\n if (level === 0) return steps[0]!;\n const idx = Math.round((level / (levelCount.value - 1)) * (steps.length - 1));\n return steps[Math.max(1, idx)]!;\n}\n\nconst totalWidth = computed(() => grid.value.columns.length * (props.cellSize + props.gap));\nconst colHeight = computed(() => 7 * (props.cellSize + props.gap));\n\n// Order weekdays from weekStart; the weekday number keys the row, since labels can repeat.\nconst weekdayOrder = computed(() =>\n Array.from({ length: 7 }, (_unused, i) => {\n const day = (i + props.weekStart) % 7;\n return { day, label: props.weekdayLabels[day]! };\n }),\n);\n\n/**\n * Per-cell render model. `attrs` carries only the bindings the cell actually\n * needs, so a non-interactive cell never gets a click listener.\n */\nconst renderColumns = computed(() =>\n grid.value.columns.map((col, colIdx) => ({\n key: colIdx,\n cells: col.map((cell) => {\n const isInteractive = cell.inYear && props.onCellClick != null;\n return {\n key: cell.key,\n tag: isInteractive ? 'button' : 'div',\n attrs: {\n type: isInteractive ? 'button' : undefined,\n // Value lives in the label; aria-value* is reserved for\n // range widgets and is invalid on button/generic cells.\n role: isInteractive ? undefined : 'img',\n [AriaAttribute.Label]: `${cell.key}: ${cell.value}`,\n onClick: isInteractive ? (): void => props.onCellClick?.(cell.date, cell.value) : undefined,\n },\n class: cn(\n 'rounded-[2px] transition-colors',\n cell.inYear ? stepClass(bucket(cell.value)) : 'bg-transparent',\n isInteractive &&\n 'cursor-pointer hover:ring-1 hover:ring-ring focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n ),\n };\n }),\n })),\n);\n\n/** Vue does not append `px` to a numeric `:style` value — every length is spelled out. */\nconst cellStyle = computed(() => ({\n width: `${props.cellSize}px`,\n height: `${props.cellSize}px`,\n}));\n\nconst monthRowStyle = computed(() => ({\n height: `${props.cellSize}px`,\n width: `${totalWidth.value}px`,\n}));\n\nconst gapStyle = computed(() => ({ gap: `${props.gap}px` }));\n\nconst weekdayColumnStyle = computed(() => ({\n width: '28px',\n gap: `${props.gap}px`,\n height: `${colHeight.value}px`,\n}));\n\nconst weekdayLabelStyle = computed(() => ({\n height: `${props.cellSize}px`,\n lineHeight: `${props.cellSize}px`,\n}));\n\nfunction monthMarkerStyle(marker: MonthMarker): Record<string, string> {\n return { left: `${marker.col * (props.cellSize + props.gap)}px` };\n}\n\nconst classes = computed(() => cn('inline-block', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <!-- Month labels -->\n <div class=\"relative ml-8\" :style=\"monthRowStyle\">\n <span\n v-for=\"marker in grid.monthMarkers\"\n :key=\"marker.month\"\n class=\"absolute text-[10px] uppercase text-muted-foreground\"\n :style=\"monthMarkerStyle(marker)\"\n >{{ monthLabels[marker.month] }}</span\n >\n </div>\n <div class=\"flex\" :style=\"gapStyle\">\n <!-- Weekday labels — show every other to avoid clutter. -->\n <div class=\"flex flex-col text-[10px] uppercase text-muted-foreground\" :style=\"weekdayColumnStyle\">\n <span\n v-for=\"(weekday, index) in weekdayOrder\"\n :key=\"weekday.day\"\n :class=\"index % 2 === 0 ? 'opacity-0' : ''\"\n :style=\"weekdayLabelStyle\"\n >{{ weekday.label }}</span\n >\n </div>\n <!-- Grid -->\n <div class=\"flex\" :style=\"gapStyle\">\n <div v-for=\"column in renderColumns\" :key=\"column.key\" class=\"flex flex-col\" :style=\"gapStyle\">\n <component\n :is=\"cell.tag\"\n v-for=\"cell in column.cells\"\n :key=\"cell.key\"\n v-bind=\"cell.attrs\"\n :style=\"cellStyle\"\n :class=\"cell.class\"\n />\n </div>\n </div>\n </div>\n <div v-if=\"hasLegend\" class=\"mt-2 flex items-center justify-end gap-1.5 text-[10px] text-muted-foreground\">\n <span>Less</span>\n <span\n v-for=\"stepCls in toneSteps\"\n :key=\"stepCls\"\n aria-hidden=\"true\"\n :style=\"cellStyle\"\n :class=\"cn('rounded-[2px]', stepCls)\"\n />\n <span>More</span>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the AudioWaveformPreview color tone. */\nexport const AudioWaveformPreviewTone = {\n /** Refers to the primary brand color. */\n Brand: 'brand',\n /** Refers to the positive / confirmation color. */\n Success: 'success',\n /** Refers to the caution color. */\n Warning: 'warning',\n /** Refers to the destructive / error color. */\n Danger: 'danger',\n /** Refers to the muted color. */\n Muted: 'muted',\n /** Refers to the inherited `currentColor`. */\n Current: 'current',\n} as const;\n\nexport type AudioWaveformPreviewTone = (typeof AudioWaveformPreviewTone)[keyof typeof AudioWaveformPreviewTone];\n\nconst ToneClass: Record<AudioWaveformPreviewTone, string> = {\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n muted: 'text-muted-foreground',\n current: '',\n};\n\nexport interface AudioWaveformPreviewProps {\n /** The per-bin amplitudes in 0..1. */\n readonly peaks: ReadonlyArray<number>;\n /** The played fraction in 0..1. Default `0`. */\n readonly progress?: number;\n /** The SVG width in px. Default `320`. */\n readonly width?: number;\n /** The SVG height in px. Default `48`. */\n readonly height?: number;\n /** The width of a single bar in px. Default `2`. */\n readonly barWidth?: number;\n /** The gap between bars in px. Default `1`. */\n readonly gap?: number;\n /** The color tone. Default `brand`. */\n readonly tone?: AudioWaveformPreviewTone;\n /**\n * Fires with the seeked progress in 0..1.\n *\n * Kept a prop rather than an emit because its *presence* is load-bearing —\n * it decides `role=\"slider\"` vs `role=\"img\"` when `isInteractive` is omitted,\n * and Vue strips declared emit listeners out of `useAttrs()`, leaving no way\n * to observe them.\n */\n readonly onSeek?: (progress: number) => void;\n /** The interactive state. Defaults to whether `onSeek` was supplied. */\n readonly isInteractive?: boolean;\n}\n\n/** Resample `peaks` to exactly `n` bars by max-pooling consecutive runs. */\nfunction sampleTo(peaks: ReadonlyArray<number>, n: number): ReadonlyArray<number> {\n if (peaks.length === 0) return new Array<number>(n).fill(0);\n if (peaks.length === n) return peaks;\n const out: Array<number> = new Array<number>(n);\n const ratio = peaks.length / n;\n for (let i = 0; i < n; i++) {\n const start = Math.floor(i * ratio);\n const end = Math.max(start + 1, Math.floor((i + 1) * ratio));\n let max = 0;\n for (let j = start; j < end && j < peaks.length; j++) {\n const v = Math.abs(peaks[j]!);\n if (v > max) max = v;\n }\n out[i] = max;\n }\n return out;\n}\n\ninterface Bar {\n index: number;\n x: number;\n y: number;\n height: number;\n isPlayed: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders an SVG bar waveform from per-bin `peaks` amplitudes, seekable by click and arrow keys.\n *\n * `peaks` are amplitudes in 0..1. Seeking is live only when `onSeek` is provided.\n */\ndefineOptions({ name: 'AudioWaveformPreview', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<AudioWaveformPreviewProps>(), {\n /* `peaks` stays declared-required — Vue still warns when it is missing — but a\n default keeps an absent (or transiently-undefined) value from reaching\n `sampleTo`, which read `.length` off it and took the whole page down. */\n peaks: () => [],\n progress: 0,\n width: 320,\n height: 48,\n barWidth: 2,\n gap: 1,\n tone: 'brand',\n onSeek: undefined,\n // `undefined` is meaningful — it falls back to `onSeek != null`. Without an\n // explicit default Vue would cast the absent Boolean prop to `false`.\n isInteractive: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<SVGSVGElement>('el');\n\nconst stepX = computed(() => props.barWidth + props.gap);\nconst barCount = computed(() => Math.max(1, Math.floor(props.width / stepX.value)));\nconst playedBars = computed(() => Math.round(props.progress * barCount.value));\nconst resolvedInteractive = computed(() => props.isInteractive ?? props.onSeek != null);\n\nconst bars = computed<ReadonlyArray<Bar>>(() =>\n sampleTo(props.peaks, barCount.value).map((amp, index) => {\n const height = Math.max(1, amp * props.height);\n return {\n index,\n x: index * stepX.value,\n y: (props.height - height) / 2,\n height,\n isPlayed: index < playedBars.value,\n };\n }),\n);\n\nfunction seekFromX(clientX: number, rect: DOMRect): void {\n const x = Math.max(0, Math.min(rect.width, clientX - rect.left));\n props.onSeek?.(x / rect.width);\n}\n\nfunction onClick(event: MouseEvent): void {\n if (!resolvedInteractive.value) return;\n const rect = el.value?.getBoundingClientRect();\n if (rect) seekFromX(event.clientX, rect);\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n const seek = props.onSeek;\n if (!seek) return;\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n seek(Math.min(1, props.progress + 0.05));\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n seek(Math.max(0, props.progress - 0.05));\n } else if (event.key === 'Home') {\n event.preventDefault();\n seek(0);\n } else if (event.key === 'End') {\n event.preventDefault();\n seek(1);\n }\n}\n\nconst classes = computed(() =>\n cn(\n 'inline-block',\n resolvedInteractive.value &&\n 'cursor-pointer focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring rounded-sm',\n ToneClass[props.tone],\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `rest` (a consumer attr wins, as React's trailing `{...rest}` did),\n then own handlers last so a consumer's handler runs first. -->\n <svg\n ref=\"el\"\n :role=\"resolvedInteractive ? 'slider' : 'img'\"\n aria-label=\"Audio waveform\"\n :aria-valuenow=\"Math.round(progress * 100)\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"100\"\n :tabindex=\"resolvedInteractive ? 0 : -1\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${width} ${height}`\"\n preserveAspectRatio=\"none\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"onClick\"\n @keydown=\"onKeydown\"\n >\n <rect\n v-for=\"bar in bars\"\n :key=\"bar.index\"\n :x=\"bar.x\"\n :y=\"bar.y\"\n :width=\"barWidth\"\n :height=\"bar.height\"\n :rx=\"1\"\n :class=\"bar.isPlayed ? 'fill-current' : 'fill-current opacity-30'\"\n />\n </svg>\n</template>\n","<script lang=\"ts\">\nexport interface AudioPlayerProps {\n /** The audio source URL. */\n readonly src: string;\n /** The pre-computed per-bin amplitudes — swaps the range scrubber for an `AudioWaveformPreview`. */\n readonly peaks?: ReadonlyArray<number>;\n /** The autoplay state, forwarded to the native `<audio>`. */\n readonly autoPlay?: boolean;\n /** The loop state, forwarded to the native `<audio>`. */\n readonly loop?: boolean;\n /** The initial volume in 0..1. Default `1`. */\n readonly defaultVolume?: number;\n /** The initial playback rate. Default `1`. */\n readonly defaultPlaybackRate?: number;\n /** The dense layout. Default `false`. */\n readonly isCompact?: boolean;\n}\n\nconst PlaybackRates: ReadonlyArray<number> = [0.5, 0.75, 1, 1.25, 1.5, 2];\n\nfunction formatTime(seconds: number): string {\n if (!Number.isFinite(seconds) || seconds < 0) return '0:00';\n const total = Math.floor(seconds);\n const h = Math.floor(total / 3600);\n const m = Math.floor((total % 3600) / 60);\n const sec = total % 60;\n if (h > 0) return `${h}:${String(m).padStart(2, '0')}:${String(sec).padStart(2, '0')}`;\n return `${m}:${String(sec).padStart(2, '0')}`;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { UrlExtensions } from '../../../foundation/dom';\nimport { computed, onMounted, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { Pause, Play, Volume2, VolumeX } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport { AudioWaveformPreview } from '../audioWaveformPreview';\n\n/**\n * Renders an audio player with play/pause, a scrubber, volume, and speed over a native `<audio>`.\n *\n * The scrubber becomes an `AudioWaveformPreview` when `peaks` are provided.\n */\ndefineOptions({ name: 'AudioPlayer', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<AudioPlayerProps>(), {\n peaks: undefined,\n autoPlay: undefined,\n loop: undefined,\n defaultVolume: 1,\n defaultPlaybackRate: 1,\n isCompact: undefined,\n});\n\nconst emit = defineEmits<{\n /** Fires when playback starts. */\n play: [];\n /** Fires when playback pauses. */\n pause: [];\n /** Fires when playback time advances, with the current time and the total duration. */\n 'time-update': [time: number, duration: number];\n /** Fires when playback reaches the end. */\n ended: [];\n}>();\n\nconst attrs = useAttrs();\n/** The native `<audio>` — React exposed it through `useImperativeHandle`. */\nconst el = useTemplateRef<HTMLAudioElement>('el');\n\nconst playing = ref(!!props.autoPlay);\nconst currentTime = ref(0);\nconst duration = ref(0);\nconst volume = ref(props.defaultVolume);\nconst muted = ref(false);\nconst speed = ref(props.defaultPlaybackRate);\n\n/** Push the three imperative settings onto the element — React's `useEffect`. */\nfunction applyAudioSettings(): void {\n const audio = el.value;\n if (!audio) return;\n audio.volume = volume.value;\n audio.muted = muted.value;\n audio.playbackRate = speed.value;\n}\n\nonMounted(applyAudioSettings);\nwatch([volume, muted, speed], applyAudioSettings, { flush: 'post' });\n\nfunction togglePlay(): void {\n const audio = el.value;\n if (!audio) return;\n if (audio.paused) {\n audio.play().catch(() => {\n /* autoplay rejection */\n });\n } else {\n audio.pause();\n }\n}\n\nfunction seekTo(seconds: number): void {\n const audio = el.value;\n if (!audio || !Number.isFinite(seconds)) return;\n audio.currentTime = Math.max(0, Math.min(audio.duration || 0, seconds));\n}\n\nfunction seekProgress(fraction: number): void {\n if (duration.value > 0) seekTo(fraction * duration.value);\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n // Only handle shortcuts aimed at the container itself — never hijack\n // keys from interactive children (seek slider, speed select, buttons).\n if (event.target !== event.currentTarget) return;\n switch (event.key) {\n case ' ':\n case 'Spacebar':\n event.preventDefault();\n togglePlay();\n break;\n case 'ArrowRight':\n event.preventDefault();\n seekTo(currentTime.value + 5);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n seekTo(currentTime.value - 5);\n break;\n case 'ArrowUp':\n event.preventDefault();\n volume.value = Math.min(1, volume.value + 0.1);\n break;\n case 'ArrowDown':\n event.preventDefault();\n volume.value = Math.max(0, volume.value - 0.1);\n break;\n case 'm':\n case 'M':\n event.preventDefault();\n muted.value = !muted.value;\n break;\n }\n}\n\nfunction onNativePlay(): void {\n playing.value = true;\n emit('play');\n}\n\nfunction onNativePause(): void {\n playing.value = false;\n emit('pause');\n}\n\nfunction onNativeTimeUpdate(): void {\n const audio = el.value;\n if (!audio) return;\n currentTime.value = audio.currentTime;\n emit('time-update', audio.currentTime, audio.duration);\n}\n\nfunction onNativeLoadedMetadata(): void {\n const audio = el.value;\n if (audio) duration.value = audio.duration || 0;\n}\n\nfunction onNativeEnded(): void {\n playing.value = false;\n emit('ended');\n}\n\nfunction onRangeInput(event: Event): void {\n seekTo(Number((event.target as HTMLInputElement).value));\n}\n\nconst progress = computed(() => (duration.value > 0 ? currentTime.value / duration.value : 0));\n\nconst classes = computed(() =>\n cn(\n 'flex items-center gap-3 rounded-md border border-border bg-card p-2 text-card-foreground shadow-sm focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n props.isCompact && 'gap-2 p-1.5',\n attrs.class as string | undefined,\n ),\n);\n\n/**\n * Everything but `class` — and, exactly as in the React original, it lands on\n * the inner `<audio>`, not on the wrapper. `class` is re-applied through `cn`.\n */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\nconst TimeStyle = { minWidth: '3.5rem' } as const;\nconst DurationStyle = { minWidth: '3.5rem', textAlign: 'right' } as const;\n\n/** The play / pause toggle's size-independent classes — round primary surface plus the focus ring. */\nconst PlayToggleClasses =\n 'inline-flex shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground ' +\n 'transition-colors hover:bg-primary/90 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring';\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n role=\"region\"\n aria-label=\"Audio player\"\n :tabindex=\"0\"\n :data-playing=\"playing || undefined\"\n :class=\"classes\"\n @keydown=\"onKeydown\"\n >\n <audio\n ref=\"el\"\n :src=\"UrlExtensions.safeResource(src)\"\n :autoplay=\"autoPlay\"\n :loop=\"loop\"\n v-bind=\"rest\"\n @play=\"onNativePlay\"\n @pause=\"onNativePause\"\n @timeupdate=\"onNativeTimeUpdate\"\n @loadedmetadata=\"onNativeLoadedMetadata\"\n @ended=\"onNativeEnded\"\n />\n <button\n type=\"button\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n :class=\"cn(PlayToggleClasses, isCompact ? 'h-7 w-7' : 'h-9 w-9')\"\n @click=\"togglePlay\"\n >\n <Icon :icon=\"playing ? Pause : Play\" :size=\"isCompact ? 12 : 14\" />\n </button>\n <span class=\"shrink-0 text-xs tabular-nums text-muted-foreground\" :style=\"TimeStyle\">{{\n formatTime(currentTime)\n }}</span>\n <div class=\"flex-1\">\n <AudioWaveformPreview\n v-if=\"peaks\"\n :peaks=\"peaks\"\n :progress=\"progress\"\n :on-seek=\"seekProgress\"\n :width=\"isCompact ? 200 : 320\"\n :height=\"isCompact ? 32 : 40\"\n />\n <input\n v-else\n type=\"range\"\n role=\"slider\"\n aria-label=\"Seek\"\n :aria-valuetext=\"formatTime(currentTime)\"\n :min=\"0\"\n :max=\"duration || 0\"\n step=\"any\"\n :value=\"currentTime\"\n class=\"w-full accent-primary\"\n @input=\"onRangeInput\"\n />\n </div>\n <span class=\"shrink-0 text-xs tabular-nums text-muted-foreground\" :style=\"DurationStyle\">{{\n formatTime(duration)\n }}</span>\n <button\n type=\"button\"\n :aria-label=\"muted ? 'Unmute' : 'Mute'\"\n class=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n @click=\"muted = !muted\"\n >\n <Icon :icon=\"muted || volume === 0 ? VolumeX : Volume2\" :size=\"14\" />\n </button>\n <select\n v-model=\"speed\"\n aria-label=\"Playback speed\"\n class=\"h-7 rounded-sm border border-input bg-background px-1 text-xs\"\n >\n <option v-for=\"rate in PlaybackRates\" :key=\"rate\" :value=\"rate\">{{ rate }}×</option>\n </select>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines the kind of a video text track. */\nexport const VideoTrackKind = {\n /** Refers to translation subtitles. */\n Subtitles: 'subtitles',\n /** Refers to closed captions. */\n Captions: 'captions',\n /** Refers to audio descriptions. */\n Descriptions: 'descriptions',\n /** Refers to chapter markers. */\n Chapters: 'chapters',\n /** Refers to script-only metadata. */\n Metadata: 'metadata',\n} as const;\n\nexport type VideoTrackKind = (typeof VideoTrackKind)[keyof typeof VideoTrackKind];\n\nexport interface VideoTrack {\n readonly src: string;\n readonly srcLang: string;\n readonly label: string;\n readonly kind?: VideoTrackKind;\n readonly default?: boolean;\n}\n\nexport interface VideoPlayerProps {\n /** The video source URL. */\n readonly src: string;\n /** The preview image shown before playback. */\n readonly poster?: string;\n /** The caption/subtitle tracks rendered as `<track>` children. */\n readonly tracks?: ReadonlyArray<VideoTrack>;\n /** The CSS `aspect-ratio` of the frame. Default `16 / 9`. */\n readonly aspectRatio?: string | number;\n /** The autoplay state, forwarded to the native `<video>`. */\n readonly autoPlay?: boolean;\n /** The loop state, forwarded to the native `<video>`. */\n readonly loop?: boolean;\n /** The initial muted state — seeds the internal toggle, exactly as React's `muted` did. */\n readonly muted?: boolean;\n /** The initial volume in 0..1. Default `1`. */\n readonly defaultVolume?: number;\n /** The initial playback rate. Default `1`. */\n readonly defaultPlaybackRate?: number;\n}\n\nconst PlaybackRates: ReadonlyArray<number> = [0.5, 0.75, 1, 1.25, 1.5, 2];\n\nfunction formatTime(seconds: number): string {\n if (!Number.isFinite(seconds) || seconds < 0) return '0:00';\n const total = Math.floor(seconds);\n const h = Math.floor(total / 3600);\n const m = Math.floor((total % 3600) / 60);\n const sec = total % 60;\n if (h > 0) return `${h}:${String(m).padStart(2, '0')}:${String(sec).padStart(2, '0')}`;\n return `${m}:${String(sec).padStart(2, '0')}`;\n}\n\n/** The idle delay, in ms, before the controls bar fades out during playback. */\nconst IdleHideMs = 3000;\n\nconst IconButtonClass =\n 'inline-flex h-7 w-7 items-center justify-center rounded text-white/80 hover:bg-white/20 hover:text-white';\n</script>\n\n<script setup lang=\"ts\">\nimport { UrlExtensions } from '../../../foundation/dom';\nimport { computed, onBeforeUnmount, onMounted, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport {\n Captions,\n CaptionsOff,\n Maximize,\n Minimize,\n Pause,\n PictureInPicture2,\n Play,\n Volume2,\n VolumeX,\n} from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\n\n/**\n * Renders a video player whose custom controls auto-hide 3s into playback.\n *\n * Click the video to toggle play. Keyboard shortcuts: Space / F / M / C and the arrow keys.\n */\ndefineOptions({ name: 'VideoPlayer', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<VideoPlayerProps>(), {\n poster: undefined,\n tracks: undefined,\n aspectRatio: '16 / 9',\n // Explicit `undefined` so an absent Boolean prop is not cast to `false` and the\n // native element keeps its own default.\n autoPlay: undefined,\n loop: undefined,\n muted: undefined,\n defaultVolume: 1,\n defaultPlaybackRate: 1,\n});\n\nconst attrs = useAttrs();\n/** The wrapper — React held it as `containerRef`; fullscreen and the idle timer target it. */\nconst container = useTemplateRef<HTMLDivElement>('container');\n/** The native `<video>` — React exposed it through `useImperativeHandle`. */\nconst el = useTemplateRef<HTMLVideoElement>('el');\n\nconst playing = ref(!!props.autoPlay);\nconst currentTime = ref(0);\nconst duration = ref(0);\nconst volume = ref(props.defaultVolume);\n/**\n * Named apart from the `muted` prop, which only seeds it. A setup ref and a prop\n * of the same name collapse into one template binding, so the prop keeps its\n * React name and the state gets a distinct one.\n */\nconst isMuted = ref(!!props.muted);\nconst speed = ref(props.defaultPlaybackRate);\nconst fullscreen = ref(false);\nconst captionsOn = ref(false);\nconst showControls = ref(true);\n\nlet idleTimer: number | null = null;\n\n/** Push the three imperative settings onto the element — React's first `useEffect`. */\nfunction applyVideoSettings(): void {\n const video = el.value;\n if (!video) return;\n video.volume = volume.value;\n video.muted = isMuted.value;\n video.playbackRate = speed.value;\n}\n\nonMounted(applyVideoSettings);\nwatch([volume, isMuted, speed], applyVideoSettings, { flush: 'post' });\n\n/** Mirror the caption toggle onto every `TextTrack` — React's second `useEffect`. */\nfunction applyCaptionMode(): void {\n const video = el.value;\n if (!video || !video.textTracks) return;\n for (let i = 0; i < video.textTracks.length; i++) {\n const track = video.textTracks[i];\n if (track) track.mode = captionsOn.value ? 'showing' : 'hidden';\n }\n}\n\nonMounted(applyCaptionMode);\nwatch([captionsOn, () => props.tracks], applyCaptionMode, { flush: 'post' });\n\nfunction onFullscreenChange(): void {\n fullscreen.value = document.fullscreenElement === container.value;\n}\n\nonMounted(() => {\n document.addEventListener('fullscreenchange', onFullscreenChange);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n});\n\nfunction togglePlay(): void {\n const video = el.value;\n if (!video) return;\n if (video.paused) {\n video.play().catch(() => {\n /* autoplay rejection */\n });\n } else {\n video.pause();\n }\n}\n\nfunction seekTo(seconds: number): void {\n const video = el.value;\n if (!video || !Number.isFinite(seconds)) return;\n video.currentTime = Math.max(0, Math.min(video.duration || 0, seconds));\n}\n\nfunction toggleFullscreen(): void {\n const node = container.value;\n if (!node) return;\n if (!document.fullscreenElement) {\n void node.requestFullscreen?.().catch(() => {\n /* denied by the user agent */\n });\n } else {\n void document.exitFullscreen?.().catch(() => {\n /* already exiting */\n });\n }\n}\n\nfunction togglePiP(): void {\n const video = el.value;\n if (!video) return;\n if ('pictureInPictureElement' in document && document.pictureInPictureElement) {\n void (document as unknown as { exitPictureInPicture?: () => Promise<void> }).exitPictureInPicture?.()?.catch(() => {\n /* not in picture-in-picture */\n });\n } else if ('requestPictureInPicture' in video) {\n void (video as HTMLVideoElement & { requestPictureInPicture?: () => Promise<unknown> })\n .requestPictureInPicture?.()\n ?.catch(() => {\n /* refused by the user agent */\n });\n }\n}\n\n/** Reveal the controls, and re-arm the idle fade only while playing. */\nfunction bumpControls(): void {\n showControls.value = true;\n if (idleTimer != null) window.clearTimeout(idleTimer);\n if (playing.value) {\n idleTimer = window.setTimeout(() => {\n showControls.value = false;\n }, IdleHideMs);\n }\n}\n\nonMounted(bumpControls);\nwatch(playing, bumpControls);\nonBeforeUnmount(() => {\n if (idleTimer != null) window.clearTimeout(idleTimer);\n});\n\nfunction onMouseLeave(): void {\n if (playing.value) showControls.value = false;\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n // Only handle shortcuts aimed at the container itself — never hijack\n // keys from interactive children (seek slider, speed select, buttons).\n if (event.target !== event.currentTarget) return;\n switch (event.key) {\n case ' ':\n case 'Spacebar':\n event.preventDefault();\n togglePlay();\n break;\n case 'ArrowRight':\n event.preventDefault();\n seekTo(currentTime.value + 5);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n seekTo(currentTime.value - 5);\n break;\n case 'ArrowUp':\n event.preventDefault();\n volume.value = Math.min(1, volume.value + 0.1);\n break;\n case 'ArrowDown':\n event.preventDefault();\n volume.value = Math.max(0, volume.value - 0.1);\n break;\n case 'm':\n case 'M':\n event.preventDefault();\n isMuted.value = !isMuted.value;\n break;\n case 'f':\n case 'F':\n event.preventDefault();\n toggleFullscreen();\n break;\n case 'c':\n case 'C':\n event.preventDefault();\n if (props.tracks && props.tracks.length > 0) captionsOn.value = !captionsOn.value;\n break;\n }\n}\n\n/*\n * The five handlers below sit AFTER `v-bind=\"rest\"` on the `<video>`, so a\n * consumer's own listener for the same event runs first and this one second —\n * the order React's `composeEventHandlers(theirs, ours)` produced. The\n * `defaultPrevented` guard is that helper's `checkForDefaultPrevented`.\n */\nfunction onNativePlay(event: Event): void {\n if (event.defaultPrevented) return;\n playing.value = true;\n}\n\nfunction onNativePause(event: Event): void {\n if (event.defaultPrevented) return;\n playing.value = false;\n}\n\nfunction onNativeTimeUpdate(event: Event): void {\n if (event.defaultPrevented) return;\n const video = el.value;\n if (!video) return;\n currentTime.value = video.currentTime;\n}\n\nfunction onNativeLoadedMetadata(event: Event): void {\n if (event.defaultPrevented) return;\n const video = el.value;\n if (video) duration.value = video.duration || 0;\n}\n\nfunction onVideoClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n togglePlay();\n}\n\nfunction onRangeInput(event: Event): void {\n seekTo(Number((event.target as HTMLInputElement).value));\n}\n\nconst classes = computed(() =>\n cn(\n 'group relative overflow-hidden rounded-md bg-black text-white shadow-md focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n attrs.class as string | undefined,\n ),\n);\n\n/** `aspect-ratio` is unitless, so the numeric form only needs stringifying. */\nconst containerStyle = computed(() => ({\n aspectRatio: typeof props.aspectRatio === 'number' ? String(props.aspectRatio) : props.aspectRatio,\n}));\n\nconst controlsClasses = computed(() =>\n cn(\n 'absolute inset-x-0 bottom-0 flex items-center gap-2 bg-gradient-to-t from-black/80 to-transparent px-3 pb-2 pt-6 transition-opacity',\n showControls.value ? 'opacity-100' : 'opacity-0',\n ),\n);\n\nconst hasTracks = computed(() => !!props.tracks && props.tracks.length > 0);\n\n/**\n * Everything but `class` — and, exactly as in the React original, it lands on\n * the inner `<video>`, not on the wrapper. `class` is re-applied through `cn`.\n */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"container\"\n role=\"region\"\n aria-label=\"Video player\"\n :tabindex=\"0\"\n :class=\"classes\"\n :style=\"containerStyle\"\n @keydown=\"onKeydown\"\n @mousemove=\"bumpControls\"\n @mouseleave=\"onMouseLeave\"\n >\n <video\n ref=\"el\"\n :src=\"UrlExtensions.safeResource(src)\"\n :poster=\"poster\"\n :autoplay=\"autoPlay\"\n :loop=\"loop\"\n :muted=\"isMuted\"\n v-bind=\"rest\"\n class=\"h-full w-full bg-black\"\n @play=\"onNativePlay\"\n @pause=\"onNativePause\"\n @timeupdate=\"onNativeTimeUpdate\"\n @loadedmetadata=\"onNativeLoadedMetadata\"\n @click=\"onVideoClick\"\n >\n <track\n v-for=\"item in tracks\"\n :key=\"item.src\"\n :src=\"UrlExtensions.safeResource(item.src)\"\n :srclang=\"item.srcLang\"\n :label=\"item.label\"\n :kind=\"item.kind ?? 'captions'\"\n :default=\"item.default\"\n />\n </video>\n\n <!-- Big center play button when paused -->\n <button\n v-if=\"!playing\"\n type=\"button\"\n aria-label=\"Play\"\n class=\"absolute inset-0 grid place-items-center bg-black/30 transition-opacity hover:bg-black/40\"\n @click=\"togglePlay\"\n >\n <span class=\"grid h-16 w-16 place-items-center rounded-full bg-white/90 text-foreground shadow-lg\">\n <Icon :icon=\"Play\" :size=\"28\" />\n </span>\n </button>\n\n <!-- Controls bar -->\n <div :class=\"controlsClasses\">\n <button\n type=\"button\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-white/20 text-white hover:bg-white/30\"\n @click=\"togglePlay\"\n >\n <Icon :icon=\"playing ? Pause : Play\" :size=\"14\" />\n </button>\n <span class=\"text-xs tabular-nums\"> {{ formatTime(currentTime) }} / {{ formatTime(duration) }} </span>\n <input\n type=\"range\"\n role=\"slider\"\n aria-label=\"Seek\"\n :aria-valuetext=\"formatTime(currentTime)\"\n :min=\"0\"\n :max=\"duration || 0\"\n step=\"any\"\n :value=\"currentTime\"\n class=\"flex-1 accent-primary\"\n @input=\"onRangeInput\"\n />\n <button\n type=\"button\"\n :aria-label=\"isMuted || volume === 0 ? 'Unmute' : 'Mute'\"\n :class=\"IconButtonClass\"\n @click=\"isMuted = !isMuted\"\n >\n <Icon :icon=\"isMuted || volume === 0 ? VolumeX : Volume2\" :size=\"14\" />\n </button>\n <select\n v-model=\"speed\"\n aria-label=\"Playback speed\"\n class=\"h-7 rounded-sm border border-white/20 bg-black/40 px-1 text-xs\"\n >\n <option v-for=\"rate in PlaybackRates\" :key=\"rate\" :value=\"rate\" class=\"text-foreground\">{{ rate }}×</option>\n </select>\n <button\n v-if=\"hasTracks\"\n type=\"button\"\n :aria-label=\"captionsOn ? 'Hide captions' : 'Show captions'\"\n :aria-pressed=\"captionsOn\"\n :class=\"IconButtonClass\"\n @click=\"captionsOn = !captionsOn\"\n >\n <Icon :icon=\"captionsOn ? Captions : CaptionsOff\" :size=\"14\" />\n </button>\n <button type=\"button\" aria-label=\"Picture in picture\" :class=\"IconButtonClass\" @click=\"togglePiP\">\n <Icon :icon=\"PictureInPicture2\" :size=\"14\" />\n </button>\n <button\n type=\"button\"\n :aria-label=\"fullscreen ? 'Exit fullscreen' : 'Enter fullscreen'\"\n :class=\"IconButtonClass\"\n @click=\"toggleFullscreen\"\n >\n <Icon :icon=\"fullscreen ? Minimize : Maximize\" :size=\"14\" />\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface PdfViewerProps {\n /** The PDF URL. */\n readonly src: string;\n /** The controlled page number (1-based). */\n readonly page?: number;\n /** The uncontrolled initial page. Default `1`. */\n readonly defaultPage?: number;\n /** The controlled zoom percentage. */\n readonly zoom?: number;\n /** The uncontrolled initial zoom percentage. Default `100`. */\n readonly defaultZoom?: number;\n /** The total page count, when known — enables `n / total` and clamps `next`. */\n readonly pageCount?: number;\n /** The iframe title. Default `PDF document`. */\n readonly title?: string;\n /** The download-link state. Default `true`. */\n readonly canDownload?: boolean;\n /** The CSS height of the document area. Default `70vh`. */\n readonly height?: string;\n}\n\nconst ZoomLevels: ReadonlyArray<number> = [50, 75, 100, 125, 150, 175, 200, 250, 300, 400];\n</script>\n\n<script setup lang=\"ts\">\nimport { UrlExtensions } from '../../../foundation/dom';\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronLeft, ChevronRight, Download, ZoomIn, ZoomOut } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { Icon } from '../../../foundation/icons';\n\n/**\n * Renders a PDF inline with page and zoom controls over the browser built-in viewer.\n *\n * First-gen: an `<iframe>` driven by the `#page=N&zoom=Z` URL hash. Per-page rendering, thumbnails, search, and\n * annotations all need a PDF.js wrap — deferred to a follow-up that slots into this contract.\n */\ndefineOptions({ name: 'PdfViewer', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<PdfViewerProps>(), {\n page: undefined,\n defaultPage: 1,\n zoom: undefined,\n defaultZoom: 100,\n pageCount: undefined,\n title: 'PDF document',\n canDownload: true,\n height: '70vh',\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader moves to another page, with the next page number. */\n 'update:page': [page: number];\n /** Fires when the reader zooms in or out, with the next zoom percentage. */\n 'update:zoom': [zoom: number];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst { value: page, setValue: setPage } = useControlled<number>({\n controlled: () => props.page,\n default: props.defaultPage,\n onChange: (next) => emit('update:page', next),\n});\n\nconst { value: zoom, setValue: setZoom } = useControlled<number>({\n controlled: () => props.zoom,\n default: props.defaultZoom,\n onChange: (next) => emit('update:zoom', next),\n});\n\n// Build URL with hash for page/zoom hint to native PDF viewer.\nconst hashedSrc = computed(() => {\n const safe = UrlExtensions.safeResource(props.src);\n if (safe === undefined) return undefined;\n try {\n const url = new URL(safe, typeof window !== 'undefined' ? window.location.href : 'http://localhost');\n url.hash = `page=${page.value}&zoom=${zoom.value}`;\n return url.toString();\n } catch {\n return `${safe}#page=${page.value}&zoom=${zoom.value}`;\n }\n});\n\nconst minZoom = computed(() => ZoomLevels[0]!);\nconst maxZoom = computed(() => ZoomLevels[ZoomLevels.length - 1]!);\n\nfunction goPrev(): void {\n setPage(Math.max(1, page.value - 1));\n}\n\nfunction goNext(): void {\n setPage(props.pageCount ? Math.min(props.pageCount, page.value + 1) : page.value + 1);\n}\n\nfunction zoomIn(): void {\n const next = ZoomLevels.find((level) => level > zoom.value);\n if (next) setZoom(next);\n}\n\nfunction zoomOut(): void {\n const next = [...ZoomLevels].reverse().find((level) => level < zoom.value);\n if (next) setZoom(next);\n}\n\nconst classes = computed(() =>\n cn(\n 'flex flex-col overflow-hidden rounded-md border border-border bg-card text-card-foreground shadow-sm',\n attrs.class as string | undefined,\n ),\n);\n\n/** Vue does not append `px` to a numeric `:style` value — spelled out. */\nconst frameStyle = computed(() => ({ height: props.height, border: '0' }));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div class=\"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5\">\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n :disabled=\"page <= 1\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40\"\n @click=\"goPrev\"\n >\n <Icon :icon=\"ChevronLeft\" :size=\"14\" />\n </button>\n <span class=\"px-1 text-xs tabular-nums text-foreground\">{{\n pageCount ? `${page} / ${pageCount}` : `Page ${page}`\n }}</span>\n <button\n type=\"button\"\n aria-label=\"Next page\"\n :disabled=\"pageCount != null && page >= pageCount\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40\"\n @click=\"goNext\"\n >\n <Icon :icon=\"ChevronRight\" :size=\"14\" />\n </button>\n <span class=\"mx-2 h-4 w-px bg-border\" aria-hidden=\"true\" />\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n :disabled=\"zoom <= minZoom\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40\"\n @click=\"zoomOut\"\n >\n <Icon :icon=\"ZoomOut\" :size=\"14\" />\n </button>\n <span class=\"px-1 text-xs tabular-nums text-foreground\">{{ zoom }}%</span>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n :disabled=\"zoom >= maxZoom\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40\"\n @click=\"zoomIn\"\n >\n <Icon :icon=\"ZoomIn\" :size=\"14\" />\n </button>\n <div class=\"ml-auto flex items-center gap-1\">\n <a\n v-if=\"canDownload\"\n :href=\"UrlExtensions.safeResource(src)\"\n download\n aria-label=\"Download PDF\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon :icon=\"Download\" :size=\"14\" />\n </a>\n </div>\n </div>\n <iframe :src=\"hashedSrc\" :title=\"title\" :style=\"frameStyle\" class=\"w-full bg-muted\" />\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\n\n// ScheduleView models bookings as absolute instants (a wall-clock time in a\n// specific zone) — `Temporal.ZonedDateTime`, the peer of .NET `DateTimeOffset`.\n// The single-day header projects down to the day's calendar date; the\n// intra-day slot geometry does its math on `ZonedDateTime` (`.hour`, `.add`,\n// `until`) via the shared, Temporal-based `DateExtensions`.\n\nexport interface ScheduleResource {\n readonly id: string;\n /** The row label. React took a `ReactNode`; richer content goes through the `resource` slot. */\n readonly label: string | number;\n readonly color?: string;\n}\n\nexport interface ScheduleBooking {\n readonly id: string;\n readonly resourceId: string;\n readonly start: Temporal.ZonedDateTime;\n readonly end: Temporal.ZonedDateTime;\n /** The booking label. React took a `ReactNode`; richer content goes through the `booking` slot. */\n readonly label?: string | number;\n readonly color?: string;\n}\n\nexport interface ScheduleViewProps {\n readonly resources: ReadonlyArray<ScheduleResource>;\n readonly bookings: ReadonlyArray<ScheduleBooking>;\n /** The day to render; its calendar date + time zone anchor the grid. */\n readonly date?: Temporal.ZonedDateTime;\n readonly hourRange?: [number, number];\n readonly slotMinutes?: number;\n /**\n * Handles a click on an empty slot.\n *\n * Kept a PROP rather than an emit: its presence is what renders the slot overlay at\n * all, and Vue strips a declared emit's listener out of `useAttrs()` — an emit could\n * never be detected, so the overlay would either always or never render.\n */\n readonly onSlotClick?: (resourceId: string, time: Temporal.ZonedDateTime) => void;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type StyleValue } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { cn } from '../../../foundation/styles';\nimport { formatZonedTime, minutesBetween, nowZoned, zonedAtHour } from '../../forms/DateExtensions';\n\n/* `inheritAttrs: false` so `class` folds into the component's own `cn()` call — plain fallthrough\n appends outside it and loses tailwind-merge conflict resolution. */\n/**\n * Renders a single day of a multi-resource schedule — one row per resource across an hours grid.\n *\n * Bookings sit absolutely within each row's timeline, placed by minute offset.\n */\ndefineOptions({ name: 'ScheduleView', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<ScheduleViewProps>(), {\n hourRange: () => [8, 20],\n slotMinutes: 30,\n});\n\nconst emit = defineEmits<{\n /** Fires when a booking is clicked. Replaces React's `onBookingClick`. */\n 'booking-click': [booking: ScheduleBooking];\n}>();\n\n/** Replaces React's `renderBooking` render prop, and lifts `label` to rich content. */\ndefineSlots<{\n /** Overrides a resource row's label. Falls back to `resource.label`. */\n resource?(props: { resource: ScheduleResource }): unknown;\n /** Overrides a booking's body. Falls back to the label + time range. */\n booking?(props: { booking: ScheduleBooking }): unknown;\n}>();\n\nconst attrs = useAttrs();\n\n/* `nowZoned()` reads the host time zone through `Temporal.Now` — universal, not a browser\n global, so it is safe as a computed default on the server. */\nconst day = computed(() => props.date ?? nowZoned());\n\nconst startHour = computed(() => props.hourRange[0]);\nconst endHour = computed(() => props.hourRange[1]);\nconst hourCount = computed(() => endHour.value - startHour.value);\nconst totalMinutes = computed(() => hourCount.value * 60);\nconst slotCount = computed(() => Math.ceil(totalMinutes.value / props.slotMinutes));\n\nconst dayStart = computed(() => zonedAtHour(day.value.toPlainDate(), startHour.value, day.value.timeZoneId));\n\nconst bookingsByResource = computed(() => {\n const map = new Map<string, Array<ScheduleBooking>>();\n for (const b of props.bookings) {\n const list = map.get(b.resourceId);\n if (list) list.push(b);\n else map.set(b.resourceId, [b]);\n }\n return map;\n});\n\nfunction bookingsFor(resourceId: string): Array<ScheduleBooking> {\n return bookingsByResource.value.get(resourceId) ?? [];\n}\n\nconst dayLabel = computed(() =>\n day.value.toLocaleString(undefined, { weekday: 'short', month: 'short', day: 'numeric' }),\n);\n\nconst hourColumns = computed<StyleValue>(() => ({\n gridTemplateColumns: `repeat(${hourCount.value}, 1fr)`,\n}));\n\nconst slotColumns = computed<StyleValue>(() => ({\n gridTemplateColumns: `repeat(${slotCount.value}, 1fr)`,\n}));\n\nfunction hourLabel(index: number): string {\n return `${String((startHour.value + index) % 24).padStart(2, '0')}:00`;\n}\n\nfunction slotTime(index: number): Temporal.ZonedDateTime {\n return dayStart.value.add({ minutes: index * props.slotMinutes });\n}\n\nfunction slotLabel(index: number): string {\n return `Empty slot at ${formatZonedTime(slotTime(index))}`;\n}\n\nfunction onSlot(resourceId: string, index: number): void {\n props.onSlotClick?.(resourceId, slotTime(index));\n}\n\nfunction onBooking(event: MouseEvent, booking: ScheduleBooking): void {\n event.stopPropagation();\n emit('booking-click', booking);\n}\n\nfunction bookingLabel(resource: ScheduleResource, booking: ScheduleBooking): string {\n return `${resource.label} ${formatZonedTime(booking.start)} – ${formatZonedTime(booking.end)}: ${booking.label ?? ''}`;\n}\n\n/* Numeric CSS lengths are spelled with their unit — React's style object auto-appended `px`,\n Vue's does not, so a bare `56` would be dropped as an invalid declaration. */\nfunction bookingStyle(resource: ScheduleResource, booking: ScheduleBooking): StyleValue {\n const offsetMin = Math.max(0, minutesBetween(dayStart.value, booking.start));\n const durMin = Math.max(15, minutesBetween(booking.start, booking.end));\n return {\n left: `${(offsetMin / totalMinutes.value) * 100}%`,\n width: `${(durMin / totalMinutes.value) * 100}%`,\n top: '4px',\n bottom: '4px',\n background: booking.color ?? resource.color,\n };\n}\n\nfunction bookingClass(resource: ScheduleResource, booking: ScheduleBooking): string {\n const color = booking.color ?? resource.color;\n return cn(\n 'absolute overflow-hidden rounded-md border border-border/60 px-2 py-1 text-left text-xs font-medium transition-colors hover:brightness-95 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n !color && 'bg-primary-soft text-primary-soft-foreground',\n );\n}\n\nconst RowStyle: StyleValue = { height: '56px' };\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst rootClass = computed(() =>\n cn('overflow-auto rounded-md border border-border bg-card text-sm shadow-sm', attrs.class as ClassValue),\n);\n\nconst root = useTemplateRef<HTMLDivElement>('root');\n\n/** The rendered element — the Vue stand-in for the React original's forwarded ref. */\ndefineExpose({ el: root });\n</script>\n\n<template>\n <!-- Timeline layout, no 2D keyboard nav — ARIA grid (grid > row > gridcell)\n would be a lie; group + labeled slot/booking buttons is honest. -->\n <div ref=\"root\" role=\"group\" aria-label=\"Schedule\" :class=\"rootClass\" v-bind=\"passthroughAttrs\">\n <!-- Hour header -->\n <div class=\"sticky top-0 z-raised flex border-b border-border bg-muted/40\">\n <div class=\"w-32 shrink-0 border-r border-border px-3 py-2 text-xs font-medium text-muted-foreground\">\n {{ dayLabel }}\n </div>\n <div class=\"flex-1 grid\" :style=\"hourColumns\">\n <div\n v-for=\"i in hourCount\"\n :key=\"i\"\n class=\"border-l border-border px-2 py-1 text-xs text-muted-foreground tabular-nums\"\n >\n {{ hourLabel(i - 1) }}\n </div>\n </div>\n </div>\n <!-- Rows -->\n <div v-for=\"resource in resources\" :key=\"resource.id\" class=\"flex border-b border-border last:border-b-0\">\n <div class=\"w-32 shrink-0 border-r border-border bg-muted/20 px-3 py-2 text-xs font-medium\">\n <slot name=\"resource\" :resource=\"resource\">{{ resource.label }}</slot>\n </div>\n <div class=\"relative flex-1\" :style=\"RowStyle\">\n <!-- Vertical hour gridlines -->\n <div aria-hidden=\"true\" class=\"absolute inset-0 grid pointer-events-none\" :style=\"hourColumns\">\n <div v-for=\"i in hourCount\" :key=\"i\" class=\"border-l border-border\" />\n </div>\n <!-- Slot click overlay -->\n <div v-if=\"onSlotClick\" class=\"absolute inset-0 grid\" :style=\"slotColumns\">\n <button\n v-for=\"i in slotCount\"\n :key=\"i\"\n type=\"button\"\n :aria-label=\"slotLabel(i - 1)\"\n class=\"hover:bg-primary-soft/30\"\n @click=\"onSlot(resource.id, i - 1)\"\n />\n </div>\n <!-- Bookings -->\n <button\n v-for=\"booking in bookingsFor(resource.id)\"\n :key=\"booking.id\"\n type=\"button\"\n :aria-label=\"bookingLabel(resource, booking)\"\n :style=\"bookingStyle(resource, booking)\"\n :class=\"bookingClass(resource, booking)\"\n @click=\"onBooking($event, booking)\"\n >\n <slot name=\"booking\" :booking=\"booking\">\n <div class=\"truncate\">{{ booking.label ?? booking.id }}</div>\n <div class=\"text-[10px] opacity-70 tabular-nums\">\n {{ formatZonedTime(booking.start) }}\n {{ ' – ' }}\n {{ formatZonedTime(booking.end) }}\n </div>\n </slot>\n </button>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nimport { Temporal } from 'temporal-polyfill';\nimport { addDays } from '../../forms/DateExtensions';\n\n// GanttTimeline models tasks/milestones as date-only spans → `Temporal.PlainDate`\n// (calendar math, no time zone), the shape the day-column grid wants. Day\n// counts + iteration go through the shared, Temporal-based `DateExtensions`.\n\nexport interface GanttTimelineTask {\n readonly id: string;\n /** The row label. React took a `ReactNode`; richer content goes through the `task` slot. */\n readonly label: string | number;\n readonly start: Temporal.PlainDate;\n readonly end: Temporal.PlainDate;\n readonly color?: string;\n /** 0..1 — fills the bar from the left. */\n readonly progress?: number;\n}\n\nexport interface GanttTimelineDependency {\n readonly from: string;\n readonly to: string;\n}\n\nexport interface GanttTimelineMilestone {\n readonly id: string;\n /** The milestone label. React took a `ReactNode`; the marker itself renders no text. */\n readonly label: string | number;\n readonly date: Temporal.PlainDate;\n}\n\nexport interface GanttTimelineProps {\n readonly tasks: ReadonlyArray<GanttTimelineTask>;\n readonly dependencies?: ReadonlyArray<GanttTimelineDependency>;\n readonly milestones?: ReadonlyArray<GanttTimelineMilestone>;\n readonly from?: Temporal.PlainDate;\n readonly to?: Temporal.PlainDate;\n readonly cellWidth?: number;\n readonly rowHeight?: number;\n readonly labelWidth?: number;\n readonly hasWeekends?: boolean;\n}\n\n/** Earlier of two dates. */\nfunction minDate(a: Temporal.PlainDate, b: Temporal.PlainDate): Temporal.PlainDate {\n return Temporal.PlainDate.compare(a, b) <= 0 ? a : b;\n}\n\n/** Later of two dates. */\nfunction maxDate(a: Temporal.PlainDate, b: Temporal.PlainDate): Temporal.PlainDate {\n return Temporal.PlainDate.compare(a, b) >= 0 ? a : b;\n}\n\nfunction* eachDay(from: Temporal.PlainDate, to: Temporal.PlainDate): Generator<Temporal.PlainDate> {\n let cur = from;\n while (Temporal.PlainDate.compare(cur, to) <= 0) {\n yield cur;\n cur = addDays(cur, 1);\n }\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type StyleValue } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { cn } from '../../../foundation/styles';\nimport { daysBetween, isWeekend, today } from '../../forms/DateExtensions';\n\n/* `inheritAttrs: false` so `class` folds into the component's own `cn()` call — plain fallthrough\n appends outside it and loses tailwind-merge conflict resolution. */\n/**\n * Renders a GanttTimeline chart — a task label column beside a day-scaled timeline of bars and milestones.\n *\n * First generation: bars are positioned by start / end, with optional dependency arrows and a \"today\"\n * indicator. Drag-resize, drag-move, critical path, and group rows are all deferred.\n */\ndefineOptions({ name: 'GanttTimeline', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<GanttTimelineProps>(), {\n /* `tasks` stays declared-required — Vue still warns when it is missing — but a\n default keeps an absent (or transiently-undefined) value out of the `.length`\n and `.map().reduce()` reads below. The empty-tasks branch already exists. */\n tasks: () => [],\n dependencies: () => [],\n milestones: () => [],\n cellWidth: 40,\n rowHeight: 36,\n labelWidth: 200,\n hasWeekends: true,\n});\n\nconst emit = defineEmits<{\n /** Fires when a task bar is clicked. Replaces React's `onTaskClick`. */\n 'task-click': [task: GanttTimelineTask];\n}>();\n\n/** Replaces React's inline `task.label` rendering with an override hook. */\ndefineSlots<{\n /** Overrides a task's label, in both the label column and the bar. */\n task?(props: { task: GanttTimelineTask }): unknown;\n}>();\n\nconst attrs = useAttrs();\n\n/* `today()` reads the host time zone through `Temporal.Now` — universal, not a browser\n global, so it is safe to evaluate on the server. */\nconst range = computed(() => {\n if (props.tasks.length === 0) {\n const now = today();\n return { from: now, to: now, totalDays: 1 };\n }\n const minStart = props.from ?? props.tasks.map((t) => t.start).reduce(minDate);\n const maxEnd = props.to ?? props.tasks.map((t) => t.end).reduce(maxDate);\n return { from: minStart, to: maxEnd, totalDays: daysBetween(minStart, maxEnd) + 1 };\n});\n\nconst rangeFrom = computed(() => range.value.from);\nconst totalDays = computed(() => range.value.totalDays);\n\nconst headerDates = computed(() => Array.from(eachDay(range.value.from, range.value.to)));\nconst todayOffset = computed(() => daysBetween(rangeFrom.value, today()));\nconst todayInRange = computed(() => todayOffset.value >= 0 && todayOffset.value < totalDays.value);\n\nconst taskIndex = computed(() => new Map(props.tasks.map((t, i) => [t.id, i])));\n\nconst timelineWidth = computed(() => totalDays.value * props.cellWidth);\n\n/* Numeric CSS lengths are spelled with their unit — React's style object auto-appended `px`,\n Vue's does not, so a bare `36` would be dropped as an invalid declaration. */\nconst labelColumnStyle = computed<StyleValue>(() => ({ width: `${props.labelWidth}px` }));\nconst rowStyle = computed<StyleValue>(() => ({ height: `${props.rowHeight}px` }));\nconst cellStyle = computed<StyleValue>(() => ({ width: `${props.cellWidth}px` }));\nconst timelineStyle = computed<StyleValue>(() => ({ width: `${timelineWidth.value}px` }));\nconst overlayStyle = computed<StyleValue>(() => ({\n left: '0px',\n top: `${props.rowHeight}px`,\n width: `${timelineWidth.value}px`,\n height: `${props.tasks.length * props.rowHeight}px`,\n}));\n\nfunction headerCellClass(d: Temporal.PlainDate): string {\n return cn(\n 'border-r border-border text-[10px] tabular-nums',\n isWeekend(d) && props.hasWeekends && 'bg-muted/40',\n d.day === 1 && 'border-l-2 border-l-border-strong',\n );\n}\n\nfunction gridlineClass(d: Temporal.PlainDate): string {\n return cn('border-r border-border/60', isWeekend(d) && props.hasWeekends && 'bg-muted/30');\n}\n\nfunction monthLabel(d: Temporal.PlainDate): string {\n return d.toLocaleString(undefined, { month: 'short', year: '2-digit' });\n}\n\nfunction barStyle(task: GanttTimelineTask): StyleValue {\n const offset = daysBetween(rangeFrom.value, task.start);\n const length = Math.max(1, daysBetween(task.start, task.end) + 1);\n return {\n left: `${offset * props.cellWidth + 4}px`,\n width: `${length * props.cellWidth - 8}px`,\n top: '6px',\n bottom: '6px',\n background: task.color,\n };\n}\n\nfunction barClass(task: GanttTimelineTask): string {\n return cn(\n 'absolute overflow-hidden rounded-md border border-border/60 px-2 text-left text-[11px] font-medium transition-colors hover:brightness-95 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n !task.color && 'bg-primary text-primary-foreground',\n );\n}\n\nfunction progressStyle(task: GanttTimelineTask): StyleValue {\n return { width: `${(task.progress ?? 0) * 100}%` };\n}\n\nfunction taskLabel(task: GanttTimelineTask): string {\n /* React narrowed a `ReactNode` label to a string before using it as a name; a numeric\n label falls back to the id here for the same reason. */\n return `${typeof task.label === 'string' ? task.label : task.id}: ${task.start.toLocaleString()} – ${task.end.toLocaleString()}`;\n}\n\ninterface DependencyArrow {\n key: number;\n path: string;\n points: string;\n}\n\nconst dependencyArrows = computed<Array<DependencyArrow>>(() => {\n const arrows: Array<DependencyArrow> = [];\n props.dependencies.forEach((dep, i) => {\n const fromIdx = taskIndex.value.get(dep.from);\n const toIdx = taskIndex.value.get(dep.to);\n if (fromIdx === undefined || toIdx === undefined) return;\n const fromTask = props.tasks[fromIdx]!;\n const toTask = props.tasks[toIdx]!;\n const fromX = (daysBetween(rangeFrom.value, fromTask.end) + 1) * props.cellWidth;\n const fromY = fromIdx * props.rowHeight + props.rowHeight / 2;\n const toX = daysBetween(rangeFrom.value, toTask.start) * props.cellWidth;\n const toY = toIdx * props.rowHeight + props.rowHeight / 2;\n const midX = Math.max(fromX + 8, (fromX + toX) / 2);\n arrows.push({\n key: i,\n path: `M ${fromX} ${fromY} L ${midX} ${fromY} L ${midX} ${toY} L ${toX - 4} ${toY}`,\n points: `${toX - 4},${toY - 3} ${toX - 4},${toY + 3} ${toX},${toY}`,\n });\n });\n return arrows;\n});\n\nfunction milestonePoints(m: GanttTimelineMilestone): string {\n const x = daysBetween(rangeFrom.value, m.date) * props.cellWidth + props.cellWidth / 2;\n return `${x},2 ${x + 6},10 ${x},18 ${x - 6},10`;\n}\n\nconst todayX = computed(() => todayOffset.value * props.cellWidth + props.cellWidth / 2);\nconst todayY2 = computed(() => props.tasks.length * props.rowHeight);\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst rootClass = computed(() =>\n cn('overflow-auto rounded-md border border-border bg-card text-sm shadow-sm', attrs.class as ClassValue),\n);\n\nconst root = useTemplateRef<HTMLDivElement>('root');\n\n/** The rendered element — the Vue stand-in for the React original's forwarded ref. */\ndefineExpose({ el: root });\n</script>\n\n<template>\n <div ref=\"root\" role=\"grid\" aria-label=\"GanttTimeline chart\" :class=\"rootClass\" v-bind=\"passthroughAttrs\">\n <div class=\"flex\">\n <!-- LabelText column -->\n <div class=\"shrink-0 border-r border-border bg-muted/30\" :style=\"labelColumnStyle\">\n <div class=\"border-b border-border px-3 py-2 text-xs font-medium text-muted-foreground\" :style=\"rowStyle\">\n Task\n </div>\n <div\n v-for=\"task in tasks\"\n :key=\"task.id\"\n class=\"flex items-center border-b border-border px-3 text-xs last:border-b-0\"\n :style=\"rowStyle\"\n >\n <span class=\"truncate font-medium\">\n <slot name=\"task\" :task=\"task\">{{ task.label }}</slot>\n </span>\n </div>\n </div>\n <!-- Timeline -->\n <div class=\"relative flex-1 overflow-x-auto\" style=\"min-width: 0\">\n <div :style=\"timelineStyle\">\n <!-- Header -->\n <div class=\"flex border-b border-border\" :style=\"rowStyle\">\n <div v-for=\"d in headerDates\" :key=\"d.toString()\" :class=\"headerCellClass(d)\" :style=\"cellStyle\">\n <div\n v-if=\"d.day === 1\"\n class=\"border-b border-border bg-muted px-1 py-0.5 text-center font-medium text-muted-foreground\"\n >\n {{ monthLabel(d) }}\n </div>\n <div class=\"px-1 py-0.5 text-center text-muted-foreground\">{{ d.day }}</div>\n </div>\n </div>\n <!-- Rows -->\n <div\n v-for=\"task in tasks\"\n :key=\"task.id\"\n class=\"relative border-b border-border last:border-b-0\"\n :style=\"rowStyle\"\n >\n <!-- Vertical day gridlines + weekend shading -->\n <div class=\"absolute inset-0 flex pointer-events-none\">\n <div v-for=\"d in headerDates\" :key=\"d.toString()\" :style=\"cellStyle\" :class=\"gridlineClass(d)\" />\n </div>\n <!-- Bar -->\n <button\n type=\"button\"\n :aria-label=\"taskLabel(task)\"\n :style=\"barStyle(task)\"\n :class=\"barClass(task)\"\n @click=\"emit('task-click', task)\"\n >\n <!-- Progress fill -->\n <div\n v-if=\"(task.progress ?? 0) > 0\"\n aria-hidden=\"true\"\n class=\"absolute inset-y-0 left-0 bg-foreground/20\"\n :style=\"progressStyle(task)\"\n />\n <span class=\"relative inline-flex h-full items-center truncate\">\n <slot name=\"task\" :task=\"task\">{{ task.label }}</slot>\n </span>\n </button>\n </div>\n </div>\n <!-- Dependency arrows + today line -->\n <svg class=\"pointer-events-none absolute\" :style=\"overlayStyle\">\n <g v-for=\"arrow in dependencyArrows\" :key=\"arrow.key\">\n <path :d=\"arrow.path\" fill=\"none\" stroke=\"currentColor\" :stroke-width=\"1\" class=\"text-border-strong\" />\n <polygon :points=\"arrow.points\" class=\"fill-border-strong\" />\n </g>\n <g v-for=\"m in milestones\" :key=\"m.id\">\n <polygon :points=\"milestonePoints(m)\" class=\"fill-warning stroke-warning-foreground\" :stroke-width=\"1\" />\n </g>\n <line\n v-if=\"todayInRange\"\n :x1=\"todayX\"\n :x2=\"todayX\"\n :y1=\"0\"\n :y2=\"todayY2\"\n class=\"stroke-primary\"\n :stroke-width=\"1.5\"\n stroke-dasharray=\"4 3\"\n />\n </svg>\n </div>\n </div>\n </div>\n</template>\n","/**\n * Shared vocabulary for the EventCalendarViewer folder.\n *\n * React kept these next to the component in `EventCalendarViewer.tsx`, where the private\n * `MonthView` / `TimeGridView` / `AgendaView` closed over them. Here each view is its\n * own SFC, so the enum, the event shape and the two date helpers live in a sibling\n * module all four files import — the same split `dataGrid/` uses for `DataGridEditorTypes.ts`.\n * `startOfWeek` / `startOfCellInstant` stay out of the folder barrel, exactly as they\n * were module-private in React.\n */\nimport type { Temporal } from 'temporal-polyfill';\nimport { zonedAtHour } from '../../forms/DateExtensions';\n\n/** Defines the EventCalendarViewer visible range mode. */\nexport const EventCalendarViewerView = {\n /** Refers to the month grid. */\n Month: 'month',\n /** Refers to the week columns. */\n Week: 'week',\n /** Refers to the single-day view. */\n Day: 'day',\n /** Refers to the chronological agenda list. */\n Agenda: 'agenda',\n} as const;\n\nexport type EventCalendarViewerView = (typeof EventCalendarViewerView)[keyof typeof EventCalendarViewerView];\n\nexport interface EventCalendarViewerEvent {\n readonly id: string;\n /** The event title. React took a `ReactNode`; it is narrowed to a scalar for the port. */\n readonly title?: string | number;\n readonly start: Temporal.ZonedDateTime;\n readonly end: Temporal.ZonedDateTime;\n readonly color?: string;\n readonly isAllDay?: boolean;\n}\n\n/** First visible day of the week that contains `d`, honoring `weekStart`. */\nexport function startOfWeek(d: Temporal.PlainDate, weekStart: 0 | 1): Temporal.PlainDate {\n // Temporal `dayOfWeek`: 1 (Mon) … 7 (Sun). Map to a Sunday=0 index, then shift.\n const sundayIdx = d.dayOfWeek % 7;\n const diff = (sundayIdx - weekStart + 7) % 7;\n return d.subtract({ days: diff });\n}\n\n/** Midnight instant for a calendar day in `timeZone` — the range-anchor for all-day/multi-day spans. */\nexport function startOfCellInstant(day: Temporal.PlainDate, timeZone: string): Temporal.ZonedDateTime {\n return zonedAtHour(day, 0, timeZone);\n}\n\n/** The order the header's view switcher renders its radios in. */\nexport const EventCalendarViewerViews: ReadonlyArray<EventCalendarViewerView> = [\n EventCalendarViewerView.Month,\n EventCalendarViewerView.Week,\n EventCalendarViewerView.Day,\n EventCalendarViewerView.Agenda,\n];\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\nimport type { EventCalendarViewerEvent } from './EventCalendarViewerTypes';\n\nexport interface MonthViewProps {\n readonly focusDay: Temporal.PlainDate;\n readonly timeZone: string;\n readonly events: ReadonlyArray<EventCalendarViewerEvent>;\n readonly weekStart: 0 | 1;\n}\n\ninterface MonthCell {\n day: Temporal.PlainDate;\n outOfMonth: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, type StyleValue } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { WeekdayLabelsShort, formatZonedTime, isToday, isZonedDayInRange } from '../../forms/DateExtensions';\nimport { startOfCellInstant, startOfWeek } from './EventCalendarViewerTypes';\n\n/** Renders the month grid of an `EventCalendarViewer`. Internal — never exported from the folder. */\ndefineOptions({ name: 'MonthView' });\n\nconst props = defineProps<MonthViewProps>();\n\nconst emit = defineEmits<{\n /** Fires when an event block is clicked. */\n 'event-click': [event: EventCalendarViewerEvent];\n /** Fires when an empty day cell's date button is clicked. */\n 'slot-click': [day: Temporal.PlainDate, hour?: number];\n}>();\n\n/** Reorder weekdays per weekStart. */\nconst weekdayHeaders = computed(() =>\n Array.from({ length: 7 }, (_, i) => WeekdayLabelsShort[(i + props.weekStart) % 7]!),\n);\n\n/* Build a 42-cell grid whose first column matches weekStart so dates land\n under the right headers (buildMonthGrid is Sunday-anchored, so build here). */\nconst cells = computed<Array<MonthCell>>(() => {\n const month = props.focusDay.month;\n const first = props.focusDay.with({ day: 1 });\n const gridStart = startOfWeek(first, props.weekStart);\n return Array.from({ length: 42 }, (_, i) => {\n const day = gridStart.add({ days: i });\n return { day, outOfMonth: day.month !== month };\n });\n});\n\nfunction eventsForDay(day: Temporal.PlainDate): Array<EventCalendarViewerEvent> {\n return props.events.filter((e) => isZonedDayInRange(startOfCellInstant(day, props.timeZone), e.start, e.end));\n}\n\nfunction cellClass(cell: MonthCell): string {\n return cn(\n 'flex flex-col border-b border-r border-border p-1 text-xs',\n cell.outOfMonth && 'bg-muted/20',\n isToday(cell.day) && 'bg-primary-soft/20',\n );\n}\n\nfunction dateButtonClass(cell: MonthCell): string {\n return cn(\n 'mb-1 self-start rounded-sm px-1 text-xs tabular-nums transition-colors',\n cell.outOfMonth ? 'text-muted-foreground' : 'text-foreground',\n isToday(cell.day) && 'bg-primary text-primary-foreground',\n 'hover:bg-muted',\n );\n}\n\nfunction eventClass(e: EventCalendarViewerEvent): string {\n return cn(\n 'truncate rounded-sm px-1.5 py-0.5 text-left text-[11px] font-medium transition-colors hover:brightness-95',\n !e.color && 'bg-primary-soft text-primary-soft-foreground',\n );\n}\n\nfunction eventStyle(e: EventCalendarViewerEvent): StyleValue {\n return { background: e.color };\n}\n\nfunction eventLabel(e: EventCalendarViewerEvent): string {\n /* A numeric title falls back to the id, so the accessible name is always a string. */\n return `${typeof e.title === 'string' ? e.title : e.id} at ${formatZonedTime(e.start)}`;\n}\n\nfunction onEvent(ev: MouseEvent, e: EventCalendarViewerEvent): void {\n ev.stopPropagation();\n emit('event-click', e);\n}\n\n/* Numeric CSS lengths are spelled with their unit — Vue does not append `px`, so a bare `96`\n would be dropped as an invalid declaration. */\nconst CellStyle: StyleValue = { minHeight: '96px' };\n</script>\n\n<template>\n <div class=\"grid h-full grid-cols-7 border-l border-t border-border\">\n <div\n v-for=\"wd in weekdayHeaders\"\n :key=\"wd\"\n class=\"border-b border-r border-border bg-muted/40 px-2 py-1 text-xs font-medium uppercase text-muted-foreground\"\n >\n {{ wd }}\n </div>\n <div v-for=\"cell in cells\" :key=\"cell.day.toString()\" :class=\"cellClass(cell)\" :style=\"CellStyle\">\n <button type=\"button\" :class=\"dateButtonClass(cell)\" @click=\"emit('slot-click', cell.day)\">\n {{ cell.day.day }}\n </button>\n <div class=\"flex flex-col gap-0.5\">\n <button\n v-for=\"e in eventsForDay(cell.day).slice(0, 3)\"\n :key=\"e.id\"\n type=\"button\"\n :style=\"eventStyle(e)\"\n :class=\"eventClass(e)\"\n :aria-label=\"eventLabel(e)\"\n @click=\"onEvent($event, e)\"\n >\n {{ e.isAllDay ? '• ' : '' }}{{ e.title ?? '(no title)' }}\n </button>\n <span v-if=\"eventsForDay(cell.day).length > 3\" class=\"px-1 text-[10px] text-muted-foreground\"\n >+{{ eventsForDay(cell.day).length - 3 }} more</span\n >\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\nimport type { EventCalendarViewerEvent } from './EventCalendarViewerTypes';\n\nexport interface TimeGridViewProps {\n readonly timeZone: string;\n readonly events: ReadonlyArray<EventCalendarViewerEvent>;\n readonly days: number;\n readonly firstDay: Temporal.PlainDate;\n readonly hourRange: [number, number];\n}\n\n/** The fixed pixel height of one hour row. */\nconst HourPx = 48;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, type StyleValue } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport {\n formatZonedTime,\n isToday,\n isZonedDayInRange,\n isZonedOnDay,\n maxZoned,\n minZoned,\n minutesBetween,\n nowZoned,\n zonedAtHour,\n} from '../../forms/DateExtensions';\nimport { startOfCellInstant } from './EventCalendarViewerTypes';\n\n/** Renders the week / day time grid of an `EventCalendarViewer`. Internal — never exported. */\ndefineOptions({ name: 'TimeGridView' });\n\nconst props = defineProps<TimeGridViewProps>();\n\nconst emit = defineEmits<{\n /** Fires when an event block is clicked. */\n 'event-click': [event: EventCalendarViewerEvent];\n /** Fires when an empty hour cell is clicked. */\n 'slot-click': [day: Temporal.PlainDate, hour?: number];\n}>();\n\nconst startHour = computed(() => props.hourRange[0]);\nconst endHour = computed(() => props.hourRange[1]);\nconst visibleHours = computed(() => endHour.value - startHour.value);\n\nconst dayDates = computed(() => Array.from({ length: props.days }, (_, i) => props.firstDay.add({ days: i })));\n\nfunction eventsForDay(day: Temporal.PlainDate): Array<EventCalendarViewerEvent> {\n return props.events.filter((e) => !e.isAllDay && isZonedOnDay(e.start, day));\n}\n\nfunction allDayForDay(day: Temporal.PlainDate): Array<EventCalendarViewerEvent> {\n return props.events.filter(\n (e) => e.isAllDay && isZonedDayInRange(startOfCellInstant(day, props.timeZone), e.start, e.end),\n );\n}\n\n/* Numeric CSS lengths are spelled with their unit — React's style object auto-appended `px`,\n Vue's does not, so a bare `48` would be dropped as an invalid declaration. */\nconst HourStyle: StyleValue = { height: `${HourPx}px` };\n\nconst gridColumns = computed<StyleValue>(() => ({\n gridTemplateColumns: `repeat(${props.days}, minmax(120px, 1fr))`,\n}));\n\nconst columnStyle = computed<StyleValue>(() => ({\n height: `${visibleHours.value * HourPx}px`,\n}));\n\nfunction hourLabel(index: number): string {\n return `${String((startHour.value + index) % 24).padStart(2, '0')}:00`;\n}\n\nfunction dayHeaderClass(d: Temporal.PlainDate): string {\n return cn(\n 'h-6 border-b border-r border-border bg-muted/40 px-2 text-xs font-medium',\n isToday(d) && 'bg-primary-soft/30',\n );\n}\n\nfunction dayHeaderLabel(d: Temporal.PlainDate): string {\n return d.toLocaleString(undefined, { weekday: 'short', day: 'numeric' });\n}\n\nfunction allDayClass(e: EventCalendarViewerEvent): string {\n return cn('truncate rounded-sm px-1 py-0.5', !e.color && 'bg-primary-soft text-primary-soft-foreground');\n}\n\nfunction eventStyle(e: EventCalendarViewerEvent, d: Temporal.PlainDate): StyleValue {\n const dayStart = zonedAtHour(d, startHour.value, props.timeZone);\n const dayEnd = zonedAtHour(d, endHour.value, props.timeZone);\n const start = maxZoned(e.start, dayStart);\n const end = minZoned(e.end, dayEnd);\n const topMin = minutesBetween(dayStart, start);\n const durMin = Math.max(15, minutesBetween(start, end));\n return {\n top: `${(topMin / 60) * HourPx}px`,\n height: `${(durMin / 60) * HourPx}px`,\n left: '2px',\n right: '2px',\n background: e.color,\n };\n}\n\nfunction eventClass(e: EventCalendarViewerEvent): string {\n return cn(\n 'absolute overflow-hidden rounded-sm border border-border/60 px-1 py-0.5 text-left text-[11px] font-medium transition-colors hover:brightness-95',\n !e.color && 'bg-primary text-primary-foreground',\n );\n}\n\nfunction eventStartLabel(e: EventCalendarViewerEvent, d: Temporal.PlainDate): string {\n const dayStart = zonedAtHour(d, startHour.value, props.timeZone);\n return formatZonedTime(maxZoned(e.start, dayStart));\n}\n\n/* Read on every render, exactly as React's per-render `nowZoned()` was — a `computed` would\n cache the instant for the component's lifetime. `Temporal.Now` is universal, not a browser\n global, so this is SSR-safe. */\nfunction todayLineTop(d: Temporal.PlainDate): string | undefined {\n if (!isToday(d)) return undefined;\n const dayStart = zonedAtHour(d, startHour.value, props.timeZone);\n const minutes = minutesBetween(dayStart, nowZoned());\n if (minutes < 0 || minutes > visibleHours.value * 60) return undefined;\n return `${(minutes / 60) * HourPx}px`;\n}\n\nfunction onEvent(ev: MouseEvent, e: EventCalendarViewerEvent): void {\n ev.stopPropagation();\n emit('event-click', e);\n}\n</script>\n\n<template>\n <div class=\"flex\">\n <!-- Hour gutter -->\n <div class=\"w-14 shrink-0 border-r border-border\">\n <div class=\"h-6 border-b border-border bg-muted/40\" />\n <div class=\"h-7 border-b border-border bg-muted/20\" />\n <div\n v-for=\"i in visibleHours\"\n :key=\"i\"\n class=\"border-b border-border bg-muted/10 px-1 text-[10px] tabular-nums text-muted-foreground\"\n :style=\"HourStyle\"\n >\n {{ hourLabel(i - 1) }}\n </div>\n </div>\n <div class=\"flex-1 overflow-x-auto\">\n <div class=\"grid\" :style=\"gridColumns\">\n <!-- Day headers -->\n <div v-for=\"d in dayDates\" :key=\"`h-${d.toString()}`\" :class=\"dayHeaderClass(d)\">\n {{ dayHeaderLabel(d) }}\n </div>\n <!-- All-day row -->\n <div\n v-for=\"d in dayDates\"\n :key=\"`ad-${d.toString()}`\"\n class=\"h-7 border-b border-r border-border bg-muted/10 p-0.5 text-[11px]\"\n >\n <div class=\"flex flex-wrap gap-0.5\">\n <button\n v-for=\"e in allDayForDay(d)\"\n :key=\"e.id\"\n type=\"button\"\n :style=\"{ background: e.color }\"\n :class=\"allDayClass(e)\"\n @click=\"onEvent($event, e)\"\n >\n {{ e.title ?? '(no title)' }}\n </button>\n </div>\n </div>\n <!-- Time grid columns -->\n <div\n v-for=\"d in dayDates\"\n :key=\"`g-${d.toString()}`\"\n class=\"relative border-r border-border\"\n :style=\"columnStyle\"\n >\n <!-- Hour grid lines -->\n <div\n v-for=\"i in visibleHours\"\n :key=\"i\"\n class=\"border-b border-border/60\"\n :style=\"HourStyle\"\n @click=\"emit('slot-click', d, startHour + i - 1)\"\n />\n <!-- Today line -->\n <div\n v-if=\"todayLineTop(d)\"\n aria-hidden=\"true\"\n class=\"absolute inset-x-0 z-raised border-t border-primary\"\n :style=\"{ top: todayLineTop(d) }\"\n />\n <!-- Events -->\n <button\n v-for=\"e in eventsForDay(d)\"\n :key=\"e.id\"\n type=\"button\"\n :style=\"eventStyle(e, d)\"\n :class=\"eventClass(e)\"\n @click=\"onEvent($event, e)\"\n >\n <div class=\"truncate\">{{ e.title ?? '(no title)' }}</div>\n <div class=\"text-[10px] opacity-80 tabular-nums\">\n {{ eventStartLabel(e, d) }}\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\nimport type { EventCalendarViewerEvent } from './EventCalendarViewerTypes';\n\nexport interface AgendaViewProps {\n readonly focusDay: Temporal.PlainDate;\n readonly events: ReadonlyArray<EventCalendarViewerEvent>;\n}\n\ninterface AgendaGroup {\n key: string;\n day: Temporal.PlainDate;\n events: Array<EventCalendarViewerEvent>;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, type StyleValue } from 'vue';\nimport { Temporal as TemporalValue } from 'temporal-polyfill';\nimport { cn } from '../../../foundation/styles';\nimport { formatZonedTime, isToday } from '../../forms/DateExtensions';\n\n/** Renders the chronological agenda list of an `EventCalendarViewer`. Internal — never exported. */\ndefineOptions({ name: 'AgendaView' });\n\nconst props = defineProps<AgendaViewProps>();\n\nconst emit = defineEmits<{\n /** Fires when an agenda row is clicked. */\n 'event-click': [event: EventCalendarViewerEvent];\n}>();\n\nconst groups = computed<Array<AgendaGroup>>(() => {\n const horizon = props.focusDay.add({ days: 30 });\n const upcoming = props.events.filter((e) => {\n const startDay = e.start.toPlainDate();\n const endDay = e.end.toPlainDate();\n return (\n TemporalValue.PlainDate.compare(endDay, props.focusDay) >= 0 &&\n TemporalValue.PlainDate.compare(startDay, horizon) <= 0\n );\n });\n /* Group by calendar day of the event start. */\n const map = new Map<string, Array<EventCalendarViewerEvent>>();\n for (const e of upcoming) {\n const key = e.start.toPlainDate().toString();\n const list = map.get(key);\n if (list) list.push(e);\n else map.set(key, [e]);\n }\n return Array.from(map.entries()).map(([key, list]) => ({\n key,\n day: list[0]!.start.toPlainDate(),\n events: list,\n }));\n});\n\nfunction groupHeadingClass(day: Temporal.PlainDate): string {\n return cn('mb-2 text-xs font-semibold uppercase text-muted-foreground', isToday(day) && 'text-primary');\n}\n\nfunction groupLabel(day: Temporal.PlainDate): string {\n return day.toLocaleString(undefined, { weekday: 'long', month: 'short', day: 'numeric' });\n}\n\nfunction dotStyle(e: EventCalendarViewerEvent): StyleValue {\n return { background: e.color || 'var(--color-primary)' };\n}\n\nfunction timeLabel(e: EventCalendarViewerEvent): string {\n return e.isAllDay ? 'All day' : `${formatZonedTime(e.start)} – ${formatZonedTime(e.end)}`;\n}\n</script>\n\n<template>\n <div v-if=\"groups.length === 0\" class=\"p-6 text-center text-sm text-muted-foreground\">No upcoming events.</div>\n <ul v-else class=\"divide-y divide-border\">\n <li v-for=\"group in groups\" :key=\"group.key\" class=\"px-4 py-3\">\n <div :class=\"groupHeadingClass(group.day)\">{{ groupLabel(group.day) }}</div>\n <ul class=\"space-y-1\">\n <li v-for=\"e in group.events\" :key=\"e.id\">\n <button\n type=\"button\"\n class=\"flex w-full items-start gap-3 rounded-md p-2 text-left transition-colors hover:bg-muted\"\n @click=\"emit('event-click', e)\"\n >\n <span aria-hidden=\"true\" class=\"mt-1 h-2 w-2 shrink-0 rounded-full\" :style=\"dotStyle(e)\" />\n <span class=\"flex-1\">\n <span class=\"block text-sm font-medium\">{{ e.title ?? '(no title)' }}</span>\n <span class=\"block text-xs text-muted-foreground tabular-nums\">\n {{ timeLabel(e) }}\n </span>\n </span>\n </button>\n </li>\n </ul>\n </li>\n </ul>\n</template>\n","<script lang=\"ts\">\nimport type { Temporal } from 'temporal-polyfill';\nimport type { EventCalendarViewerEvent, EventCalendarViewerView } from './EventCalendarViewerTypes';\n\n// EventCalendarViewer models events as absolute instants (a wall-clock time in a\n// specific zone) — `Temporal.ZonedDateTime`, the peer of .NET `DateTimeOffset`.\n// The month/week grid + navigation project down to `Temporal.PlainDate`; the\n// intra-day time-slot geometry does its math on `ZonedDateTime` (`.hour`,\n// `.add`, `until`). Both come from the shared, Temporal-based `DateExtensions`.\n\nexport interface EventCalendarViewerProps {\n readonly events: ReadonlyArray<EventCalendarViewerEvent>;\n\n /** The visible range mode, controlled. The `v-model:view` binding target. */\n readonly view?: EventCalendarViewerView;\n\n /** The initial view when uncontrolled. */\n readonly defaultView?: EventCalendarViewerView;\n\n /**\n * The focused instant, controlled; its calendar day drives the visible month/week/day.\n * The `v-model:date` binding target.\n */\n readonly date?: Temporal.ZonedDateTime;\n\n /** The initial focused instant when uncontrolled. Defaults to now. */\n readonly defaultDate?: Temporal.ZonedDateTime;\n\n readonly weekStart?: 0 | 1;\n readonly hourRange?: [number, number];\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { Temporal as TemporalValue } from 'temporal-polyfill';\nimport { ChevronLeft, ChevronRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { Icon } from '../../../foundation/icons';\nimport { MonthLabelsLong, addDays, nowZoned } from '../../forms/DateExtensions';\nimport {\n EventCalendarViewerViews,\n EventCalendarViewerView as EventCalendarViewerViewValue,\n startOfWeek,\n} from './EventCalendarViewerTypes';\nimport MonthView from './MonthView.vue';\nimport TimeGridView from './TimeGridView.vue';\nimport AgendaView from './AgendaView.vue';\n\n/* `inheritAttrs: false` so `class` folds into the component's own `cn()` call — plain fallthrough\n appends outside it and loses tailwind-merge conflict resolution. */\n/**\n * Renders a calendar in month, week, day, or agenda view, under a header of period controls.\n *\n * First generation: the header carries Today / Prev / Next / Title plus the view switcher, and events\n * are colored blocks. Drag-edit, recurrence, and \"+N more\" overflow are deferred.\n */\ndefineOptions({ name: 'EventCalendarViewer', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<EventCalendarViewerProps>(), {\n /* `events` stays declared-required — Vue still warns when it is missing — but a\n default keeps an absent (or transiently-undefined) value out of the `[...spread]`\n below, which threw `props.events is not iterable` and took the whole page down. */\n events: () => [],\n defaultView: EventCalendarViewerViewValue.Month,\n weekStart: 0,\n hourRange: () => [0, 24],\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader switches view — the `v-model:view` half. */\n 'update:view': [view: EventCalendarViewerView];\n /** Fires when the focused date moves — the `v-model:date` half. */\n 'update:date': [date: Temporal.ZonedDateTime];\n /** Fires when the reader clicks an event block, with that event. */\n 'event-click': [event: EventCalendarViewerEvent];\n /** Fires when the reader clicks an empty slot — `day` is the calendar day, `hour` the grid hour. */\n 'slot-click': [day: Temporal.PlainDate, hour?: number];\n}>();\n\nconst attrs = useAttrs();\n\nconst viewControlled = useControlled<EventCalendarViewerView>({\n controlled: () => props.view,\n default: () => props.defaultView,\n onChange: (next) => {\n emit('update:view', next);\n },\n});\n\n/* `nowZoned()` reads the host time zone through `Temporal.Now` — universal, not a browser\n global, so it is safe as the uncontrolled seed on the server. */\nconst dateControlled = useControlled<Temporal.ZonedDateTime>({\n controlled: () => props.date,\n default: () => props.defaultDate ?? nowZoned(),\n onChange: (next) => {\n emit('update:date', next);\n },\n});\n\n/* Named apart from the `view` / `date` props: a setup const sharing a prop name shadows it\n in the template and trips `vue/no-dupe-keys`. */\nconst currentView = viewControlled.value;\nconst currentDate = dateControlled.value;\n\n/** CalendarPicker day the view is anchored on, in the focus instant's own zone. */\nconst focusDay = computed(() => currentDate.value.toPlainDate());\n\nconst timeZone = computed(() => currentDate.value.timeZoneId);\n\nconst sortedEvents = computed(() =>\n [...props.events].sort((a, b) => TemporalValue.ZonedDateTime.compare(a.start, b.start)),\n);\n\nfunction goPrev(): void {\n switch (currentView.value) {\n case EventCalendarViewerViewValue.Month:\n dateControlled.setValue(currentDate.value.add({ months: -1 }));\n break;\n case EventCalendarViewerViewValue.Week:\n dateControlled.setValue(currentDate.value.add({ days: -7 }));\n break;\n case EventCalendarViewerViewValue.Day:\n case EventCalendarViewerViewValue.Agenda:\n dateControlled.setValue(currentDate.value.add({ days: -1 }));\n break;\n }\n}\n\nfunction goNext(): void {\n switch (currentView.value) {\n case EventCalendarViewerViewValue.Month:\n dateControlled.setValue(currentDate.value.add({ months: 1 }));\n break;\n case EventCalendarViewerViewValue.Week:\n dateControlled.setValue(currentDate.value.add({ days: 7 }));\n break;\n case EventCalendarViewerViewValue.Day:\n case EventCalendarViewerViewValue.Agenda:\n dateControlled.setValue(currentDate.value.add({ days: 1 }));\n break;\n }\n}\n\nfunction goToday(): void {\n dateControlled.setValue(nowZoned());\n}\n\nfunction setView(next: EventCalendarViewerView): void {\n viewControlled.setValue(next);\n}\n\nconst title = computed(() => {\n const day = focusDay.value;\n switch (currentView.value) {\n case EventCalendarViewerViewValue.Month:\n return `${MonthLabelsLong[day.month - 1]} ${day.year}`;\n case EventCalendarViewerViewValue.Week: {\n const ws = startOfWeek(day, props.weekStart);\n const we = addDays(ws, 6);\n return `${ws.toLocaleString(undefined, { month: 'short', day: 'numeric' })} – ${we.toLocaleString(undefined, { month: 'short', day: 'numeric', year: 'numeric' })}`;\n }\n case EventCalendarViewerViewValue.Day:\n return day.toLocaleString(undefined, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n case EventCalendarViewerViewValue.Agenda:\n return `Upcoming from ${day.toLocaleString(undefined, { month: 'short', day: 'numeric' })}`;\n }\n return '';\n});\n\nconst weekFirstDay = computed(() => startOfWeek(focusDay.value, props.weekStart));\n\nfunction viewButtonClass(v: EventCalendarViewerView): string {\n return cn(\n 'inline-flex h-6 items-center rounded px-2 text-xs font-medium transition-colors',\n currentView.value === v ? 'bg-primary text-primary-foreground' : 'text-muted-foreground hover:text-foreground',\n );\n}\n\nconst isMonth = computed(() => currentView.value === EventCalendarViewerViewValue.Month);\nconst isWeek = computed(() => currentView.value === EventCalendarViewerViewValue.Week);\nconst isDay = computed(() => currentView.value === EventCalendarViewerViewValue.Day);\nconst isAgenda = computed(() => currentView.value === EventCalendarViewerViewValue.Agenda);\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst rootClass = computed(() =>\n cn(\n 'flex flex-col overflow-hidden rounded-md border border-border bg-card text-sm shadow-sm',\n attrs.class as ClassValue,\n ),\n);\n\nconst root = useTemplateRef<HTMLDivElement>('root');\n\n/** The rendered element — the Vue stand-in for the React original's forwarded ref. */\ndefineExpose({ el: root });\n</script>\n\n<template>\n <div ref=\"root\" :class=\"rootClass\" v-bind=\"passthroughAttrs\">\n <!-- Header -->\n <div class=\"flex items-center gap-2 border-b border-border bg-muted/30 px-3 py-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-7 items-center rounded-md border border-border bg-background px-2.5 text-xs font-medium hover:bg-muted\"\n @click=\"goToday\"\n >\n Today\n </button>\n <button\n type=\"button\"\n aria-label=\"Previous\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-muted\"\n @click=\"goPrev\"\n >\n <Icon :icon=\"ChevronLeft\" :size=\"14\" />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next\"\n class=\"inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-muted\"\n @click=\"goNext\"\n >\n <Icon :icon=\"ChevronRight\" :size=\"14\" />\n </button>\n <h3 class=\"ml-1 text-base font-semibold\">{{ title }}</h3>\n <div\n role=\"radiogroup\"\n aria-label=\"View\"\n class=\"ml-auto flex items-center gap-0.5 rounded-md bg-card p-0.5 ring-1 ring-border\"\n >\n <button\n v-for=\"v in EventCalendarViewerViews\"\n :key=\"v\"\n type=\"button\"\n role=\"radio\"\n :aria-checked=\"currentView === v\"\n :class=\"viewButtonClass(v)\"\n @click=\"setView(v)\"\n >\n {{ v }}\n </button>\n </div>\n </div>\n <!-- Body -->\n <div class=\"flex-1 overflow-auto\" style=\"min-height: 0\">\n <MonthView\n v-if=\"isMonth\"\n :focus-day=\"focusDay\"\n :time-zone=\"timeZone\"\n :events=\"sortedEvents\"\n :week-start=\"weekStart\"\n @event-click=\"emit('event-click', $event)\"\n @slot-click=\"(day, hour) => emit('slot-click', day, hour)\"\n />\n <TimeGridView\n v-else-if=\"isWeek\"\n :time-zone=\"timeZone\"\n :events=\"sortedEvents\"\n :days=\"7\"\n :first-day=\"weekFirstDay\"\n :hour-range=\"hourRange\"\n @event-click=\"emit('event-click', $event)\"\n @slot-click=\"(day, hour) => emit('slot-click', day, hour)\"\n />\n <TimeGridView\n v-else-if=\"isDay\"\n :time-zone=\"timeZone\"\n :events=\"sortedEvents\"\n :days=\"1\"\n :first-day=\"focusDay\"\n :hour-range=\"hourRange\"\n @event-click=\"emit('event-click', $event)\"\n @slot-click=\"(day, hour) => emit('slot-click', day, hour)\"\n />\n <AgendaView\n v-else-if=\"isAgenda\"\n :focus-day=\"focusDay\"\n :events=\"sortedEvents\"\n @event-click=\"emit('event-click', $event)\"\n />\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { ElementTag } from '../../../foundation/dom';\n\n/** Defines the gradient sweep direction (compass shorthand). */\nexport const GradientTextDirection = {\n /** Refers to a left-to-right sweep. */\n Right: 'r',\n /** Refers to a right-to-left sweep. */\n Left: 'l',\n /** Refers to a bottom-to-top sweep. */\n Top: 't',\n /** Refers to a top-to-bottom sweep. */\n Bottom: 'b',\n /** Refers to a bottom-left-to-top-right sweep. */\n TopRight: 'tr',\n /** Refers to a top-left-to-bottom-right sweep. */\n BottomRight: 'br',\n /** Refers to a top-right-to-bottom-left sweep. */\n TopLeft: 'tl',\n /** Refers to a bottom-right-to-top-left sweep. */\n BottomLeft: 'bl',\n} as const;\n\nexport type GradientTextDirection = (typeof GradientTextDirection)[keyof typeof GradientTextDirection];\n\nexport interface GradientTextProps {\n /** The first color stop. Default `var(--color-primary)`. */\n readonly from?: string;\n\n /** The optional middle color stop. */\n readonly via?: string;\n\n /** The last color stop. Default `var(--color-accent, var(--color-primary))`. */\n readonly to?: string;\n\n /** The sweep direction. Default `r`. */\n readonly direction?: GradientTextDirection;\n\n /** The gradient-pan animation, skipped under `prefers-reduced-motion`. */\n readonly isAnimated?: boolean;\n /** The localized pause action label. */\n readonly pauseLabel?: string;\n /** The localized resume action label. */\n readonly resumeLabel?: string;\n\n /** The rendered tag. Default `span`. */\n readonly as?: ElementTag;\n}\n\nconst DirToDeg: Record<GradientTextDirection, number> = {\n r: 90,\n l: 270,\n t: 0,\n b: 180,\n tr: 45,\n br: 135,\n bl: 225,\n tl: 315,\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, normalizeStyle, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders text filled with a gradient through `background-clip: text`.\n *\n * Optional `isAnimated` pans the gradient on a 4s loop, skipped under `prefers-reduced-motion` via the global\n * `motion-reduce:` CSS guard.\n */\ndefineOptions({ name: 'GradientText', inheritAttrs: false });\n\n/** The gradient-filled copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<GradientTextProps>(), {\n pauseLabel: 'Pause animation',\n resumeLabel: 'Resume animation',\n from: 'var(--color-primary)',\n via: undefined,\n to: 'var(--color-accent, var(--color-primary))',\n direction: 'r',\n isAnimated: undefined,\n as: 'span',\n});\n\nconst paused = ref(false);\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst stops = computed(() => (props.via ? `${props.from}, ${props.via}, ${props.to}` : `${props.from}, ${props.to}`));\n\nconst classes = computed(() =>\n cn(\n 'inline-block bg-clip-text text-transparent',\n props.isAnimated && 'motion-safe:animate-[gradient-shift_4s_ease-in-out_infinite]',\n attrs.class as string | undefined,\n ),\n);\n\n/** `normalizeStyle` merges left → right, so a caller's `style` lands last and wins. */\nconst styles = computed(() =>\n normalizeStyle([\n {\n backgroundImage: `linear-gradient(${DirToDeg[props.direction]}deg, ${stops.value})`,\n backgroundSize: props.isAnimated ? '200% 100%' : undefined,\n },\n attrs.style,\n { animationPlayState: paused.value ? 'paused' : undefined },\n ]),\n);\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"props.as\" ref=\"el\" v-bind=\"rest\" :class=\"classes\" :style=\"styles\">\n <slot />\n </component>\n <button\n v-if=\"isAnimated\"\n type=\"button\"\n :aria-pressed=\"paused\"\n class=\"ml-2 rounded border px-2 py-1 text-sm motion-reduce:hidden\"\n @click=\"paused = !paused\"\n >\n {{ paused ? resumeLabel : pauseLabel }}\n </button>\n</template>\n","<script lang=\"ts\">\nimport type { ElementTag } from '../../../foundation/dom';\n\nexport interface CountUpTextProps {\n /** The target value. */\n readonly to: number;\n\n /** The starting value. Default `0`. */\n readonly from?: number;\n\n /** The tween length in ms. Default `1500`. */\n readonly duration?: number;\n\n /** The easing applied to the tween's normalized time. Default `easeOutCubic`. */\n readonly easing?: (t: number) => number;\n\n /** The value formatter. Rich content → the `value` slot. */\n readonly format?: (value: number) => string;\n\n /** The start-when-scrolled-into-view mode. Default `false` (starts on mount). */\n readonly canTriggerOnView?: boolean;\n\n /** The rendered tag. Default `span`. */\n readonly as?: ElementTag;\n}\n\n/* Module scope, not `<script setup>`: `withDefaults` defaults are hoisted into the\n component options object outside `setup()`, so they cannot reference a setup local. */\nconst easeOutCubic = (t: number): number => 1 - Math.pow(1 - t, 3);\nconst defaultFormat = (v: number): string => v.toFixed(0);\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders a number that counts up to `to` on mount, or when it first enters the viewport.\n *\n * rAF tween; `prefers-reduced-motion` jumps straight to `to`. `canTriggerOnView` picks the viewport trigger.\n */\ndefineOptions({ name: 'CountUpText', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for the formatted number — receives the live tween value. */\n value?(props: { value: number; display: string }): unknown;\n}>();\n\nconst props = withDefaults(defineProps<CountUpTextProps>(), {\n from: 0,\n duration: 1500,\n easing: easeOutCubic,\n format: defaultFormat,\n canTriggerOnView: false,\n as: 'span',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n/* Called before the lifecycle hooks below so its own `onMounted` subscription\n lands first and the flag is already settled when `run` fires. */\nconst reducedMotion = useReducedMotion();\n\nconst current = ref(props.canTriggerOnView ? props.from : props.to);\n\n/* React held both in `useRef`s — mutable non-render values, so plain `let`s. */\nlet started = false;\nlet cleanup: (() => void) | undefined;\n\nfunction animate(): () => void {\n const from = props.from;\n const to = props.to;\n const duration = props.duration;\n const easing = props.easing;\n if (!Number.isFinite(duration) || duration <= 0 || from === to) {\n current.value = to;\n return () => undefined;\n }\n const start = performance.now();\n let raf = 0;\n\n const tick = (now: number): void => {\n const t = Math.min(1, (now - start) / duration);\n current.value = t < 1 ? from + (to - from) * easing(t) : to;\n if (t < 1) raf = requestAnimationFrame(tick);\n };\n\n raf = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(raf);\n}\n\n/** Cancels stale work and observes the current root until its first viewport entry. */\nfunction run(): void {\n cleanup?.();\n cleanup = undefined;\n\n if (reducedMotion.value) {\n current.value = props.to;\n return;\n }\n\n const node = el.value;\n if (!node) return;\n if (props.canTriggerOnView && !started && typeof IntersectionObserver !== 'undefined') {\n let cancel: (() => void) | undefined;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting && !started) {\n started = true;\n observer.disconnect();\n cancel = animate();\n }\n }\n },\n { threshold: 0.2 },\n );\n observer.observe(node);\n cleanup = () => {\n observer.disconnect();\n cancel?.();\n };\n return;\n }\n\n cleanup = animate();\n}\n\nwatch(\n [\n el,\n reducedMotion,\n () => props.to,\n () => props.from,\n () => props.duration,\n () => props.easing,\n () => props.canTriggerOnView,\n ],\n run,\n { flush: 'post' },\n);\n\nonBeforeUnmount(() => cleanup?.());\n\nconst display = computed(() => props.format(current.value));\n\nconst classes = computed(() => cn('tabular-nums', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"props.as\" ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot name=\"value\" :value=\"current\" :display=\"display\">{{ display }}</slot>\n </component>\n</template>\n","<script lang=\"ts\">\nimport type { ElementTag } from '../../../foundation/dom';\n\nexport interface AnimatedNumberTextProps {\n /** The target value — every change tweens the display from where it currently sits. */\n readonly value: number;\n\n /** The tween length in ms. Default `500`. */\n readonly duration?: number;\n\n /** The easing applied to the tween's normalized time. Default `easeOutCubic`. */\n readonly easing?: (t: number) => number;\n\n /** The value formatter. Rich content → the `value` slot. */\n readonly format?: (value: number) => string;\n\n /** The rendered tag. Default `span`. */\n readonly as?: ElementTag;\n}\n\n/* Module scope, not `<script setup>`: `withDefaults` defaults are hoisted into the\n component options object outside `setup()`, so they cannot reference a setup local. */\nconst easeOutCubic = (t: number): number => 1 - Math.pow(1 - t, 3);\nconst defaultFormat = (v: number): string => v.toFixed(0);\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders a number that tweens from its previous value to `value` on every change.\n *\n * rAF tween; respects `prefers-reduced-motion`.\n */\ndefineOptions({ name: 'AnimatedNumberText', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for the formatted number — receives the live tween value. */\n value?(props: { value: number; display: string }): unknown;\n}>();\n\nconst props = withDefaults(defineProps<AnimatedNumberTextProps>(), {\n duration: 500,\n easing: easeOutCubic,\n format: defaultFormat,\n as: 'span',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\nconst reducedMotion = useReducedMotion();\n\n/** The live tween value driving the render. */\nconst current = ref(props.value);\n\n/* React held this in a `useRef` — a mutable non-render value, so a plain `let`. */\nlet from = props.value;\n\n/** Retargets from the displayed value and settles immediately when motion is disabled. */\nwatch(\n [reducedMotion, () => props.value, () => props.duration, () => props.easing],\n (_next, _previous, onCleanup) => {\n if (reducedMotion.value || !Number.isFinite(props.duration) || props.duration <= 0) {\n current.value = props.value;\n from = props.value;\n return;\n }\n const base = from;\n const to = props.value;\n if (base === to) return;\n\n const duration = props.duration;\n const easing = props.easing;\n const start = performance.now();\n let raf = 0;\n\n const tick = (now: number): void => {\n const t = Math.min(1, (now - start) / duration);\n const eased = easing(t);\n const next = t < 1 ? base + (to - base) * eased : to;\n current.value = next;\n // Track the displayed value so an interrupting tween starts from\n // where the display actually is, not the stale pre-animation base.\n from = next;\n if (t < 1) raf = requestAnimationFrame(tick);\n };\n\n raf = requestAnimationFrame(tick);\n onCleanup(() => cancelAnimationFrame(raf));\n },\n { immediate: true },\n);\n\nconst display = computed(() => props.format(current.value));\n\nconst classes = computed(() => cn('tabular-nums', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"props.as\" ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <slot name=\"value\" :value=\"current\" :display=\"display\">{{ display }}</slot>\n </component>\n</template>\n","<script lang=\"ts\">\nimport type { ElementTag } from '../../../foundation/dom';\n\n/** Defines the ScrollRevealGroup enter-viewport animation. */\nexport const ScrollRevealGroupEffect = {\n /** Refers to a plain opacity fade. */\n Fade: 'fade',\n /** Refers to a fade + upward slide. */\n SlideUp: 'slide-up',\n /** Refers to a fade + downward slide. */\n SlideDown: 'slide-down',\n /** Refers to a fade + leftward slide. */\n SlideLeft: 'slide-left',\n /** Refers to a fade + rightward slide. */\n SlideRight: 'slide-right',\n /** Refers to a fade + scale-in zoom. */\n Zoom: 'zoom',\n} as const;\n\nexport type ScrollRevealGroupEffect = (typeof ScrollRevealGroupEffect)[keyof typeof ScrollRevealGroupEffect];\n\nexport interface ScrollRevealGroupProps {\n /** The enter animation. Default `fade`. */\n readonly effect?: ScrollRevealGroupEffect;\n\n /** The transition length in ms. Default `600`. */\n readonly duration?: number;\n\n /** The transition delay in ms. Default `0`. */\n readonly delay?: number;\n\n /** The IntersectionObserver visibility ratio that counts as revealed. Default `0.1`. */\n readonly threshold?: number;\n\n /** The reveal-once flag — `false` re-hides when scrolled back out. Default `true`. */\n readonly isOnce?: boolean;\n\n /** The rendered tag. Default `div`. */\n readonly as?: ElementTag;\n}\n\nconst HiddenTransforms: Record<ScrollRevealGroupEffect, string> = {\n fade: '',\n 'slide-up': 'translateY(20px)',\n 'slide-down': 'translateY(-20px)',\n 'slide-left': 'translateX(20px)',\n 'slide-right': 'translateX(-20px)',\n zoom: 'scale(0.95)',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, normalizeStyle, onBeforeUnmount, onMounted, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders children hidden until they enter the viewport, then fades and slides them in.\n *\n * CSS-driven (opacity + transform); an IntersectionObserver toggles `data-revealed`. Reduced motion shows content\n * from the start, with no transform or opacity at all.\n */\ndefineOptions({ name: 'ScrollRevealGroup', inheritAttrs: false });\n\n/** The revealed content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ScrollRevealGroupProps>(), {\n effect: 'fade',\n duration: 600,\n delay: 0,\n threshold: 0.1,\n isOnce: true,\n as: 'div',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n/* Called before the lifecycle hooks below so its own `onMounted` subscription\n lands first and the flag is already settled when `observe` fires. */\nconst reducedMotion = useReducedMotion();\n\nconst revealed = ref(false);\n\n/*\n * React's `useEffect` on `[reduced, threshold, isOnce]`. Kicked off from\n * `onMounted` rather than an `immediate` watcher because the observer needs the\n * element, which only exists after mount.\n */\nlet observer: IntersectionObserver | undefined;\n\nfunction disconnect(): void {\n observer?.disconnect();\n observer = undefined;\n}\n\nfunction observe(): void {\n disconnect();\n\n if (reducedMotion.value) {\n revealed.value = true;\n return;\n }\n\n const node = el.value;\n if (!node || typeof IntersectionObserver === 'undefined') {\n revealed.value = true;\n return;\n }\n\n observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n revealed.value = true;\n if (props.isOnce) disconnect();\n } else if (!props.isOnce) {\n revealed.value = false;\n }\n }\n },\n { threshold: props.threshold },\n );\n observer.observe(node);\n}\n\nonMounted(observe);\n\nwatch([reducedMotion, () => props.threshold, () => props.isOnce], observe);\n\nonBeforeUnmount(disconnect);\n\nconst classes = computed(() => cn(attrs.class as string | undefined));\n\n/** `normalizeStyle` merges left → right, so a caller's `style` lands last and wins. */\nconst styles = computed(() =>\n normalizeStyle([\n {\n opacity: revealed.value || reducedMotion.value ? 1 : 0,\n transform: revealed.value || reducedMotion.value ? 'none' : HiddenTransforms[props.effect],\n transition: reducedMotion.value\n ? undefined\n : `opacity ${props.duration}ms ease-out ${props.delay}ms, transform ${props.duration}ms ease-out ${props.delay}ms`,\n },\n attrs.style,\n ]),\n);\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component\n :is=\"props.as\"\n ref=\"el\"\n :data-revealed=\"revealed || undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n :style=\"styles\"\n >\n <slot />\n </component>\n</template>\n","<script lang=\"ts\">\n/** Defines the MarqueeGroup scroll direction. */\nexport const MarqueeGroupDirection = {\n /** Refers to leftward horizontal scroll. */\n Left: 'left',\n /** Refers to rightward horizontal scroll. */\n Right: 'right',\n /** Refers to upward vertical scroll. */\n Up: 'up',\n /** Refers to downward vertical scroll. */\n Down: 'down',\n} as const;\n\nexport type MarqueeGroupDirection = (typeof MarqueeGroupDirection)[keyof typeof MarqueeGroupDirection];\n\nexport interface MarqueeGroupProps {\n /** The scroll direction. Default `left`. */\n readonly direction?: MarqueeGroupDirection;\n\n /** The seconds for one full traversal of the inner content. */\n readonly speed?: number;\n\n /** The pause-while-hovered behaviour. Default `true`. */\n readonly canPauseOnHover?: boolean;\n\n /** The localized pause action label. */\n readonly pauseLabel?: string;\n\n /** The localized resume action label. */\n readonly resumeLabel?: string;\n\n /** The px gap between repeated items. Default `48`. */\n readonly gap?: number;\n}\n\n/* The two track copies. Index `1` is the aria-hidden duplicate that makes the\n -50% keyframes loop seamlessly. */\nconst CopyIndexes = [0, 1] as const;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, normalizeStyle, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders children scrolling continuously, duplicated once for a seamless loop.\n *\n * The loop animates by `-50%`; pause-on-hover toggles `animation-play-state`.\n */\ndefineOptions({ name: 'MarqueeGroup', inheritAttrs: false });\n\n/** The scrolled content — React's required `children`. Rendered once per copy. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<MarqueeGroupProps>(), {\n direction: 'left',\n speed: 30,\n canPauseOnHover: true,\n pauseLabel: 'Pause animation',\n resumeLabel: 'Resume animation',\n gap: 48,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst reducedMotion = useReducedMotion();\nconst paused = ref(false);\n\nconst horizontal = computed(() => props.direction === 'left' || props.direction === 'right');\nconst reverse = computed(() => props.direction === 'right' || props.direction === 'down');\nconst animationName = computed(() => (horizontal.value ? 'marquee-x' : 'marquee-y'));\n\nconst classes = computed(() =>\n cn(\n 'group/marquee relative overflow-hidden',\n horizontal.value ? 'flex' : 'flex flex-col',\n attrs.class as string | undefined,\n ),\n);\n\n/** `normalizeStyle` merges left → right, so a caller's `style` lands last and wins. */\nconst styles = computed(() => normalizeStyle([{ '--marquee-gap': `${props.gap}px` }, attrs.style]));\n\nconst trackClasses = computed(() =>\n cn(\n 'flex shrink-0',\n horizontal.value ? 'items-center' : 'flex-col items-center',\n props.canPauseOnHover && 'group-hover/marquee:[animation-play-state:paused]',\n 'group-focus-within/marquee:[animation-play-state:paused]',\n ),\n);\n\nconst trackStyle = computed(() => ({\n animation: reducedMotion.value\n ? undefined\n : `${animationName.value} ${props.speed}s linear infinite ${reverse.value ? 'reverse' : 'normal'}`,\n animationPlayState: paused.value ? ('paused' as const) : undefined,\n}));\n\nconst copyClasses = computed(() =>\n cn('shrink-0', horizontal.value ? 'flex items-center' : 'flex flex-col items-center'),\n);\n\n/** Vue does not append `px` to a numeric `:style` value, so every length is spelled out. */\nconst copyStyle = computed(() => ({\n gap: `${props.gap}px`,\n paddingInline: horizontal.value ? `${props.gap / 2}px` : '0px',\n paddingBlock: horizontal.value ? '0px' : `${props.gap / 2}px`,\n}));\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"marquee\" :data-direction=\"props.direction\" v-bind=\"rest\" :class=\"classes\" :style=\"styles\">\n <!-- Single animated track holding both copies — each copy is exactly\n 50% of the track, so the -50% keyframes loop seamlessly. -->\n <div :class=\"trackClasses\" :style=\"trackStyle\">\n <div\n v-for=\"copy in CopyIndexes\"\n :key=\"copy\"\n :aria-hidden=\"copy === 1\"\n :inert=\"copy === 1\"\n :class=\"copyClasses\"\n :style=\"copyStyle\"\n >\n <slot />\n </div>\n </div>\n <button\n v-if=\"!reducedMotion\"\n type=\"button\"\n :aria-pressed=\"paused\"\n class=\"relative z-10 shrink-0 rounded border bg-background px-2 py-1 text-sm\"\n @click=\"paused = !paused\"\n >\n {{ paused ? props.resumeLabel : props.pauseLabel }}\n </button>\n </div>\n</template>\n","<script lang=\"ts\">\nimport type { ElementTag } from '../../../foundation/dom';\n\nexport interface TypewriterTextProps {\n /** The phrase, or the phrases to cycle through. */\n readonly text: string | ReadonlyArray<string>;\n\n /** The ms between typed characters. Default `60`. */\n readonly typeSpeed?: number;\n\n /** The ms between deleted characters. Default `40`. */\n readonly deleteSpeed?: number;\n\n /** The ms held on a completed phrase before deleting. Default `1500`. */\n readonly pauseBetween?: number;\n\n /** The cycle-forever flag. Defaults to `true` when more than one phrase was given. */\n readonly canLoop?: boolean;\n\n /** The localized pause action label. */\n readonly pauseLabel?: string;\n\n /** The localized resume action label. */\n readonly resumeLabel?: string;\n\n /** The blinking caret. Default `true`. */\n readonly hasCursor?: boolean;\n\n /** The caret glyph. Default `│`. */\n readonly cursorChar?: string;\n\n /** The rendered tag. Default `span`. */\n readonly as?: ElementTag;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders text typed character by character, cycling when given an array of strings.\n *\n * A single string types once; an array types, pauses, deletes, then moves on. `prefers-reduced-motion` short-circuits\n * to the full string.\n */\ndefineOptions({ name: 'TypewriterText', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<TypewriterTextProps>(), {\n typeSpeed: 60,\n pauseLabel: 'Pause animation',\n resumeLabel: 'Resume animation',\n deleteSpeed: 40,\n pauseBetween: 1500,\n // `undefined` is meaningful — it falls back to `phrases.length > 1`, and Vue\n // would otherwise cast an absent Boolean prop to `false`.\n canLoop: undefined,\n hasCursor: true,\n cursorChar: '│',\n as: 'span',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n/* Called before the lifecycle hooks below so its own `onMounted` subscription\n lands first and the flag is already settled when `step` first runs. */\nconst reducedMotion = useReducedMotion();\n\nconst phrases = computed(() => (Array.isArray(props.text) ? props.text : [props.text]));\nconst shouldLoop = computed(() => props.canLoop ?? phrases.value.length > 1);\n\nconst phraseIndex = ref(0);\nconst charIndex = ref(0);\nconst deleting = ref(false);\nconst paused = ref(false);\n\n/* React's `useEffect` re-ran on every state / timing change and cleared its\n pending timeout on the way out. Driven from `onMounted` rather than an\n `immediate` watcher so `window.setTimeout` is never touched on the server. */\nlet timer: number | undefined;\n\nfunction clearTimer(): void {\n if (timer !== undefined) {\n window.clearTimeout(timer);\n timer = undefined;\n }\n}\n\nfunction step(): void {\n clearTimer();\n if (reducedMotion.value || paused.value || phrases.value.length === 0) return;\n\n const current = phrases.value[phraseIndex.value] ?? '';\n\n if (!deleting.value) {\n // Typing phase.\n if (charIndex.value < current.length) {\n timer = window.setTimeout(() => {\n charIndex.value += 1;\n }, props.typeSpeed);\n } else {\n // Done typing this phrase.\n if (!shouldLoop.value && phraseIndex.value === phrases.value.length - 1) return;\n timer = window.setTimeout(() => {\n deleting.value = true;\n }, props.pauseBetween);\n }\n return;\n }\n\n // Deleting phase.\n if (charIndex.value > 0) {\n timer = window.setTimeout(() => {\n charIndex.value -= 1;\n }, props.deleteSpeed);\n return;\n }\n\n // Move to next phrase.\n const nextIndex = (phraseIndex.value + 1) % phrases.value.length;\n if (!shouldLoop.value && nextIndex === 0) return;\n deleting.value = false;\n phraseIndex.value = nextIndex;\n}\n\nonMounted(step);\n\nwatch(\n [\n charIndex,\n deleting,\n phraseIndex,\n phrases,\n shouldLoop,\n reducedMotion,\n paused,\n () => props.typeSpeed,\n () => props.deleteSpeed,\n () => props.pauseBetween,\n ],\n step,\n);\n\nwatch(\n () => props.text,\n () => {\n phraseIndex.value = 0;\n charIndex.value = 0;\n deleting.value = false;\n },\n);\n\nonBeforeUnmount(clearTimer);\n\nconst fullText = computed(() =>\n reducedMotion.value\n ? Array.isArray(props.text)\n ? (props.text[0] ?? '')\n : props.text\n : (phrases.value[phraseIndex.value] ?? '').slice(0, charIndex.value),\n);\n\nconst hasCursor = computed(() => props.hasCursor && !reducedMotion.value && !paused.value);\n\nconst classes = computed(() => cn('inline-block', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <component :is=\"props.as\" ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <span class=\"sr-only\">{{ phrases.join(' ') }}</span>\n <span aria-hidden=\"true\"\n >{{ fullText\n }}<span v-if=\"hasCursor\" class=\"ml-0.5 inline-block motion-safe:animate-[blink-caret_1s_step-end_infinite]\">{{\n props.cursorChar\n }}</span></span\n >\n <button\n v-if=\"!reducedMotion\"\n type=\"button\"\n :aria-pressed=\"paused\"\n class=\"ml-2 rounded border px-2 py-1 text-sm\"\n @click=\"paused = !paused\"\n >\n {{ paused ? props.resumeLabel : props.pauseLabel }}\n </button>\n </component>\n</template>\n","<script lang=\"ts\">\nexport interface ConfettiOverlayOrigin {\n readonly x?: number;\n readonly y?: number;\n}\n\nexport interface ConfettiOverlayFireOptions {\n particleCount?: number;\n colors?: ReadonlyArray<string>;\n spread?: number;\n velocity?: number;\n origin?: ConfettiOverlayOrigin;\n}\n\nexport interface ConfettiOverlayProps {\n readonly particleCount?: number;\n readonly colors?: ReadonlyArray<string>;\n readonly gravity?: number;\n readonly spread?: number;\n readonly velocity?: number;\n readonly lifetime?: number;\n readonly origin?: ConfettiOverlayOrigin;\n /** The auto-fire-on-mount mode. Useful for one-shot confetti on a route landing. */\n readonly canAutoFire?: boolean;\n}\n\n/** The imperative handle — React's `useImperativeHandle`, here `defineExpose`. */\nexport interface ConfettiOverlayHandle {\n fire: (opts?: ConfettiOverlayFireOptions) => void;\n}\n\n/** Defines a confetti particle's silhouette. */\nconst ConfettiOverlayShape = {\n /** Refers to a rectangular particle. */\n Rect: 'rect',\n /** Refers to a circular particle. */\n Circle: 'circle',\n} as const;\n\ntype ConfettiOverlayShape = (typeof ConfettiOverlayShape)[keyof typeof ConfettiOverlayShape];\n\ninterface Particle {\n id: number;\n x: number;\n y: number;\n vx: number;\n vy: number;\n rotation: number;\n rotationSpeed: number;\n size: number;\n color: string;\n shape: ConfettiOverlayShape;\n bornAt: number;\n}\n\nconst DefaultColors = ['#ef4444', '#f59e0b', '#10b981', '#3b82f6', '#a855f7', '#ec4899'];\n\nlet nextParticleId = 0;\n</script>\n\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, shallowRef, watch } from 'vue';\nimport { Portal } from '../../../foundation/primitives';\nimport { useReducedMotion } from '../../../foundation/device';\n\n/**\n * Renders a burst of SVG confetti particles, animated by rAF from an imperative `fire()`.\n *\n * Fires on mount with `canAutoFire`. No-op under `prefers-reduced-motion`.\n */\ndefineOptions({ name: 'ConfettiOverlay', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<ConfettiOverlayProps>(), {\n particleCount: 60,\n colors: () => DefaultColors,\n gravity: 1200,\n spread: 60,\n velocity: 500,\n lifetime: 3000,\n origin: undefined,\n canAutoFire: undefined,\n});\n\nconst reducedMotion = useReducedMotion();\n\n/* `shallowRef`: the array is replaced wholesale every frame, and deep-proxying\n 60 particle objects per tick would cost far more than the render. */\nconst particles = shallowRef<ReadonlyArray<Particle>>([]);\n\nlet raf: number | null = null;\nlet lastTime = 0;\n\nfunction stop(): void {\n if (raf != null) cancelAnimationFrame(raf);\n raf = null;\n lastTime = 0;\n}\n\n/*\n * React restarted the loop from an effect keyed on `particles.length`. Here the\n * loop owns its own lifetime: it starts when a burst spawns and stops when the\n * last particle has fallen out of view or aged past `lifetime`.\n */\nfunction tick(now: number): void {\n const last = lastTime || now;\n const dt = (now - last) / 1000;\n lastTime = now;\n const viewportH = typeof window !== 'undefined' ? window.innerHeight : 800;\n\n particles.value = particles.value\n .map((p) => ({\n ...p,\n x: p.x + p.vx * dt,\n y: p.y + p.vy * dt,\n vy: p.vy + props.gravity * dt,\n rotation: p.rotation + p.rotationSpeed * dt,\n }))\n .filter((p) => p.y < viewportH + 80 && now - p.bornAt < props.lifetime);\n\n if (particles.value.length === 0) {\n stop();\n return;\n }\n raf = requestAnimationFrame(tick);\n}\n\nfunction start(): void {\n if (raf != null) return;\n lastTime = 0;\n raf = requestAnimationFrame(tick);\n}\n\nfunction fire(opts?: ConfettiOverlayFireOptions): void {\n if (reducedMotion.value) return;\n\n const count = opts?.particleCount ?? props.particleCount;\n const palette = opts?.colors ?? props.colors;\n const sp = opts?.spread ?? props.spread;\n const vel = opts?.velocity ?? props.velocity;\n const o = opts?.origin ?? props.origin;\n const x = o?.x ?? (typeof window !== 'undefined' ? window.innerWidth / 2 : 200);\n const y = o?.y ?? (typeof window !== 'undefined' ? window.innerHeight / 2 : 200);\n\n const burst: Array<Particle> = [];\n const now = performance.now();\n for (let i = 0; i < count; i++) {\n // Angle: upward (-90deg) ± spread/2.\n const angle = -Math.PI / 2 + ((Math.random() - 0.5) * (sp * Math.PI)) / 180;\n const speed = vel * (0.7 + Math.random() * 0.6);\n burst.push({\n id: ++nextParticleId,\n x,\n y,\n vx: Math.cos(angle) * speed + (Math.random() - 0.5) * 60,\n vy: Math.sin(angle) * speed,\n rotation: Math.random() * 360,\n rotationSpeed: (Math.random() - 0.5) * 720,\n size: 6 + Math.random() * 6,\n color: palette[Math.floor(Math.random() * palette.length)] ?? '#000',\n shape: Math.random() > 0.5 ? 'rect' : 'circle',\n bornAt: now,\n });\n }\n\n particles.value = [...particles.value, ...burst];\n start();\n}\n\n/*\n * React re-ran the auto-fire effect whenever the memoized `spawn` changed — i.e.\n * on any config-prop change. Here it fires on mount and whenever the flag itself\n * flips on, which is what the prop name promises.\n */\nonMounted(() => {\n if (props.canAutoFire) fire();\n});\n\nwatch(\n () => props.canAutoFire,\n (value) => {\n if (value) fire();\n },\n);\n\nonBeforeUnmount(stop);\n\ndefineExpose<ConfettiOverlayHandle>({ fire });\n</script>\n\n<template>\n <Portal v-if=\"particles.length > 0\">\n <svg\n aria-hidden=\"true\"\n class=\"pointer-events-none fixed inset-0 z-toast\"\n :style=\"{ width: '100vw', height: '100vh' }\"\n >\n <template v-for=\"p in particles\" :key=\"p.id\">\n <rect\n v-if=\"p.shape === 'rect'\"\n :x=\"p.x - p.size / 2\"\n :y=\"p.y - p.size / 2\"\n :width=\"p.size\"\n :height=\"p.size * 0.5\"\n :fill=\"p.color\"\n :transform=\"`rotate(${p.rotation} ${p.x} ${p.y})`\"\n />\n <circle v-else :cx=\"p.x\" :cy=\"p.y\" :r=\"p.size / 2\" :fill=\"p.color\" />\n </template>\n </svg>\n </Portal>\n</template>\n","<script lang=\"ts\">\n/** Defines the AnnotationBadge highlight tone. */\nexport const AnnotationTone = {\n /** Refers to an informational note. */\n Note: 'note',\n /** Refers to a comment. */\n Comment: 'comment',\n /** Refers to a suggestion. */\n Suggestion: 'suggestion',\n /** Refers to a flagged issue. */\n Issue: 'issue',\n /** Refers to a resolved annotation. */\n Resolved: 'resolved',\n} as const;\n\nexport type AnnotationTone = (typeof AnnotationTone)[keyof typeof AnnotationTone];\n\nexport interface AnnotationBadgeProps {\n /** The numeric badge / index shown in the pin. Rich content → the `index` slot. */\n readonly index?: number | string;\n\n /** The tone — drives the highlight color. */\n readonly tone?: AnnotationTone;\n\n /** The pin-only mode — a small floating pin without underline. */\n readonly isPinOnly?: boolean;\n\n /** The resolved state (dimmed, struck-through highlight). */\n readonly isResolved?: boolean;\n\n /** The active state — the currently focused / hovered annotation. */\n readonly isActive?: boolean;\n}\n\nconst ToneHighlight: Record<AnnotationTone, string> = {\n note: 'bg-info-soft/60 decoration-info',\n comment: 'bg-primary-soft/60 decoration-primary',\n suggestion: 'bg-success-soft/60 decoration-success',\n issue: 'bg-destructive-soft/60 decoration-destructive',\n resolved: 'bg-muted decoration-muted-foreground',\n};\n\nconst TonePin: Record<AnnotationTone, string> = {\n note: 'bg-info text-info-foreground',\n comment: 'bg-primary text-primary-foreground',\n suggestion: 'bg-success text-success-foreground',\n issue: 'bg-destructive text-destructive-foreground',\n resolved: 'bg-muted-foreground text-background',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a focusable annotation marker around content, or a bare numbered chip with `isPinOnly`.\n *\n * Click fires the open-thread flow. Pin-only suits margin markers or floating layers (position via `class`).\n */\ndefineOptions({ name: 'AnnotationBadge', inheritAttrs: false });\n\ndefineSlots<{\n /** The wrapped text or content the annotation refers to. Omit for a standalone pin. */\n default?(): unknown;\n /** The rich override for the pin's badge — replaces the `index` prop. */\n index?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<AnnotationBadgeProps>(), { tone: 'comment' });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLButtonElement>('el');\n\nconst effectiveTone = computed<AnnotationTone>(() => (props.isResolved ? 'resolved' : props.tone));\n\n/** React branched on `isPinOnly || children == null`; the default slot is Vue's `children`. */\nconst isPin = computed(() => Boolean(props.isPinOnly) || !slots.default);\n\nconst pinClasses = computed(() =>\n cn(\n 'inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 text-[10px] font-semibold leading-none',\n TonePin[effectiveTone.value],\n ),\n);\n\nconst classes = computed(() =>\n isPin.value\n ? cn(\n 'inline-flex items-center gap-1 align-middle rounded-full ring-1 ring-transparent transition-shadow',\n props.isActive && 'ring-ring',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n attrs.class as string | undefined,\n )\n : cn(\n 'group inline-flex items-baseline gap-1 align-baseline rounded-sm px-0.5 transition-colors',\n 'underline decoration-2 underline-offset-4',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n ToneHighlight[effectiveTone.value],\n props.isResolved && 'line-through opacity-70',\n props.isActive && 'ring-1 ring-ring',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <button\n ref=\"el\"\n type=\"button\"\n :data-tone=\"effectiveTone\"\n :data-active=\"props.isActive ? '' : undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <span v-if=\"!isPin\"><slot /></span>\n <span aria-hidden=\"true\" :class=\"pinClasses\"\n ><slot name=\"index\">{{ props.index ?? '' }}</slot></span\n >\n </button>\n</template>\n","<script lang=\"ts\">\nexport interface Reaction {\n /** Stable id (typically the emoji or shortcode). */\n readonly key: string;\n\n /** Emoji displayed in the chip. Rich content → the `emoji` scoped slot. */\n readonly emoji: string | number;\n\n /** Total count of users who reacted. */\n readonly count: number;\n\n /** Whether the current viewer has reacted with this. */\n readonly isReactedByMe?: boolean;\n\n /** Optional list of user names — surfaced in the chip's `title`. */\n readonly users?: ReadonlyArray<string>;\n}\n\nexport interface ReactionBarProps {\n readonly reactions: ReadonlyArray<Reaction>;\n\n /** The trailing \"add reaction\" button's visibility. Default true. */\n readonly hasAddButton?: boolean;\n\n /** The compact mode — emoji only, no counts. */\n readonly isCompact?: boolean;\n\n /** The empty-chip visibility — renders chips with `count === 0`. Default false. */\n readonly hasEmpty?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, useAttrs, useTemplateRef } from 'vue';\nimport { SmilePlus } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\n\n/**\n * Renders a row of reaction chips with an optional trailing add-reaction button.\n *\n * Each chip emits `@react` with its key; the trailing `+` emits `@add` to open a picker. Pair with\n * `forms/ReactionPicker` to wire the add flow.\n */\ndefineOptions({ name: 'ReactionBar', inheritAttrs: false });\n\n/**\n * React typed `Reaction.emoji` as a `ReactNode`, so a chip could hold a custom\n * glyph. The prop keeps the scalar form and the per-row node becomes a scoped\n * slot whose fallback is the default rendering.\n */\ndefineSlots<{\n /** The chip glyph override, per reaction. */\n emoji(props: { reaction: Reaction; index: number }): unknown;\n}>();\n\nconst props = withDefaults(defineProps<ReactionBarProps>(), {\n /* `reactions` stays declared-required — Vue still warns when it is missing — but a\n default keeps an absent (or transiently-undefined) value out of the `.filter`\n below, which took the whole page down. */\n reactions: () => [],\n hasAddButton: true,\n isCompact: undefined,\n hasEmpty: false,\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader toggles a reaction chip, with that chip's key. */\n react: [key: string];\n\n /** Fires when the trailing \"add\" button is activated (opens a picker). */\n add: [];\n}>();\n\nconst attrs = useAttrs();\nconst instance = getCurrentInstance();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/**\n * Mirrors React's `hasAddButton && onAdd && <button/>` guard — the button\n * renders only when the consumer bound `@add`. Read through a call, not a\n * cached computed: `instance.vnode` is replaced on every re-render.\n */\nconst hasAdd = () => props.hasAddButton && Boolean(instance?.vnode.props?.onAdd);\n\nconst visible = computed(() => (props.hasEmpty ? props.reactions : props.reactions.filter((r) => r.count > 0)));\n\n/** Was React's private `ReactionChip` component — a class map is all it carried. */\nconst chipClasses = (reaction: Reaction): string =>\n cn(\n 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs leading-none transition-colors',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n reaction.isReactedByMe\n ? 'border-primary bg-primary-soft text-primary-soft-foreground'\n : 'border-border bg-background hover:bg-muted',\n );\n\nconst chipTitle = (reaction: Reaction): string | undefined =>\n reaction.users?.length ? reaction.users.join(', ') : undefined;\n\nconst classes = computed(() => cn('inline-flex flex-wrap items-center gap-1', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"group\" aria-label=\"Reactions\" v-bind=\"rest\" :class=\"classes\">\n <button\n v-for=\"(reaction, index) in visible\"\n :key=\"reaction.key\"\n type=\"button\"\n :data-active=\"dataAttr(reaction.isReactedByMe)\"\n :title=\"chipTitle(reaction)\"\n :class=\"chipClasses(reaction)\"\n @click=\"emit('react', reaction.key)\"\n >\n <span class=\"text-sm leading-none\">\n <slot name=\"emoji\" :reaction=\"reaction\" :index=\"index\">{{ reaction.emoji }}</slot>\n </span>\n <span v-if=\"!props.isCompact\" class=\"font-medium tabular-nums\">{{ reaction.count }}</span>\n </button>\n <button\n v-if=\"hasAdd()\"\n type=\"button\"\n aria-label=\"Add reaction\"\n class=\"inline-flex items-center justify-center rounded-full border border-dashed border-border px-2 py-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n @click=\"emit('add')\"\n >\n <SmilePlus class=\"h-3.5 w-3.5\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\">\n/** Defines which side of the conversation a bubble sits on. */\nexport const ChatSide = {\n /** Refers to the inbound side (them). */\n Start: 'start',\n /** Refers to the outbound side (me). */\n End: 'end',\n} as const;\n\nexport type ChatSide = (typeof ChatSide)[keyof typeof ChatSide];\n\n/** Defines the delivery state of a chat message. */\nexport const ChatStatus = {\n /** Refers to a message in flight. */\n Sending: 'sending',\n /** Refers to a message sent to the server. */\n Sent: 'sent',\n /** Refers to a message delivered to the recipient. */\n Delivered: 'delivered',\n /** Refers to a message read by the recipient. */\n Read: 'read',\n /** Refers to a message that failed to send. */\n Failed: 'failed',\n} as const;\n\nexport type ChatStatus = (typeof ChatStatus)[keyof typeof ChatStatus];\n\n/** Defines the chat bubble color tone. */\nexport const ChatTone = {\n /** Refers to the neutral inbound bubble. */\n Default: 'default',\n /** Refers to the primary outbound bubble. */\n Primary: 'primary',\n /** Refers to a centered, muted system row. */\n System: 'system',\n /** Refers to a subtle bordered bubble. */\n Subtle: 'subtle',\n} as const;\n\nexport type ChatTone = (typeof ChatTone)[keyof typeof ChatTone];\n\nexport interface ChatBubbleCardProps {\n /** The side of the conversation. `start` = them, `end` = me. */\n readonly side?: ChatSide;\n\n /** The bubble color tone. `system` is centered + muted (e.g. \"Alex joined\"). */\n readonly tone?: ChatTone;\n\n /** The author label (rendered above the bubble). Rich content → the `author` slot. */\n readonly author?: string | number;\n\n /** The timestamp (rendered next to the status row). Rich content → the `timestamp` slot. */\n readonly timestamp?: string | number;\n\n /** The delivery state. Hidden when `side === 'start'` by default. */\n readonly status?: ChatStatus;\n\n /** The status-on-inbound override — force-shows status even on the inbound side. */\n readonly canShowStatusOnStart?: boolean;\n\n /** The tailless mode — hides the bubble's tail (for stacked / grouped messages). */\n readonly isTailless?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef, type Component } from 'vue';\nimport { Check, CheckCheck, Clock, AlertTriangle } from 'lucide-vue-next';\nimport { cn, Tones } from '../../../foundation/styles';\n\n/**\n * Renders one chat message bubble with author, timestamp, delivery status, and a footer slot.\n *\n * Compose `<ChatBubbleCard side=\"end\" tone=\"primary\" status=\"read\" timestamp=\"9:42 AM\">…</ChatBubbleCard>` inside a\n * `MessageGroup`. Use `system` tone for join / leave / metadata rows. Pair the `footer` slot with\n * `display/ReactionBar`.\n *\n * React's `avatar` / `footer` were structural `ReactNode` props with no string form worth keeping; they are slots\n * only. `author` / `timestamp` keep their prop form and gain same-named slots.\n */\ndefineOptions({ name: 'ChatBubbleCard', inheritAttrs: false });\n\ndefineSlots<{\n /** The avatar, rendered next to the bubble on the same side. */\n avatar(): unknown;\n\n /** The author-label override, when a plain string is not enough. */\n author(): unknown;\n\n /** The bubble body — React's required `children`. */\n default(): unknown;\n\n /** The timestamp override, when a plain string is not enough. */\n timestamp(): unknown;\n\n /** The reactions / footer region (e.g. a `ReactionBar`). */\n footer(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<ChatBubbleCardProps>(), {\n side: ChatSide.Start,\n tone: undefined,\n author: undefined,\n timestamp: undefined,\n status: undefined,\n canShowStatusOnStart: undefined,\n isTailless: undefined,\n});\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/** Maps each chat tone to the shared `Tones` palette (system stays custom — transparent + italic). */\nconst ToneBase: Record<ChatTone, string> = {\n default: Tones.soft.neutral,\n primary: Tones.solid.primary,\n system: 'bg-transparent text-muted-foreground italic',\n subtle: `border ${Tones.surface.neutral}`,\n};\n\n/* React inlined the sized JSX per status; Vue splits the component from the class it carries. */\nconst StatusIcon: Record<ChatStatus, Component> = {\n sending: Clock,\n sent: Check,\n delivered: CheckCheck,\n read: CheckCheck,\n failed: AlertTriangle,\n};\n\nconst StatusIconClass: Record<ChatStatus, string> = {\n sending: 'h-3 w-3',\n sent: 'h-3 w-3',\n delivered: 'h-3 w-3',\n read: 'h-3 w-3 text-info',\n failed: 'h-3 w-3 text-destructive',\n};\n\nconst isEnd = computed(() => props.side === ChatSide.End);\n\nconst effectiveTone = computed<ChatTone>(() => props.tone ?? (isEnd.value ? ChatTone.Primary : ChatTone.Default));\n\nconst isSystem = computed(() => effectiveTone.value === ChatTone.System);\n\nconst showStatus = computed(() => Boolean(props.status) && (isEnd.value || Boolean(props.canShowStatusOnStart)));\n\nconst statusIcon = computed(() => (props.status ? StatusIcon[props.status] : undefined));\n\nconst statusIconClass = computed(() => (props.status ? StatusIconClass[props.status] : undefined));\n\nconst hasAuthor = computed(() => props.author != null || Boolean(slots.author));\n\nconst hasTimestamp = computed(() => props.timestamp != null || Boolean(slots.timestamp));\n\nconst classes = computed(() =>\n isSystem.value\n ? cn('flex w-full justify-center', attrs.class as string | undefined)\n : cn('flex w-full gap-2', isEnd.value ? 'flex-row-reverse' : 'flex-row', attrs.class as string | undefined),\n);\n\nconst systemInnerClasses = computed(() => cn('text-center text-xs', ToneBase.system));\n\nconst columnClasses = computed(() => cn('flex max-w-[75%] flex-col gap-1', isEnd.value ? 'items-end' : 'items-start'));\n\nconst bubbleClasses = computed(() =>\n cn(\n 'relative inline-block px-3 py-2 text-sm break-words',\n ToneBase[effectiveTone.value],\n props.isTailless ? 'rounded-2xl' : isEnd.value ? 'rounded-2xl rounded-br-sm' : 'rounded-2xl rounded-bl-sm',\n ),\n);\n\nconst metaClasses = computed(() =>\n cn('flex items-center gap-1 text-[11px] text-muted-foreground', isEnd.value ? 'flex-row-reverse' : 'flex-row'),\n);\n\nconst footerClasses = computed(() => cn(isEnd.value && 'self-end'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div v-if=\"isSystem\" ref=\"el\" :data-side=\"props.side\" v-bind=\"rest\" :class=\"classes\">\n <div :class=\"systemInnerClasses\"><slot /></div>\n </div>\n <div v-else ref=\"el\" :data-side=\"props.side\" v-bind=\"rest\" :class=\"classes\">\n <div v-if=\"$slots.avatar\" class=\"shrink-0 self-end\"><slot name=\"avatar\" /></div>\n <div :class=\"columnClasses\">\n <div v-if=\"hasAuthor\" class=\"text-xs font-medium text-muted-foreground\">\n <slot name=\"author\">{{ props.author }}</slot>\n </div>\n <div :class=\"bubbleClasses\"><slot /></div>\n <div v-if=\"hasTimestamp || showStatus\" :class=\"metaClasses\">\n <span v-if=\"hasTimestamp\"\n ><slot name=\"timestamp\">{{ props.timestamp }}</slot></span\n >\n <!-- aria-label is prohibited on a generic span — img role carries it. -->\n <span v-if=\"showStatus && statusIcon\" role=\"img\" :aria-label=\"`Status: ${props.status}`\">\n <component :is=\"statusIcon\" :class=\"statusIconClass\" />\n </span>\n </div>\n <div v-if=\"$slots.footer\" :class=\"footerClasses\"><slot name=\"footer\" /></div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/** The imperative surface exposed on a `MessageGroup` template ref. */\nexport interface MessageGroupHandle {\n scrollToBottom: (behavior?: ScrollBehavior) => void;\n isAtBottom: () => boolean;\n}\n\nexport interface MessageGroupProps {\n /** The sticky auto-scroll — scrolls to bottom when children change *and* the viewer is near it. Default true. */\n readonly isSticky?: boolean;\n\n /** The threshold (px) considered \"at bottom\" for stickiness. Default 32. */\n readonly bottomThreshold?: number;\n\n /** The floating \"jump to bottom\" button's visibility when scrolled away. Default true. */\n readonly hasJumpToBottom?: boolean;\n\n /** The reversed render order (newest at top). v1 keeps natural top→bottom. */\n readonly isReversed?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, onUpdated, ref, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronDown } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders a scrolling message viewport with sticky auto-scroll and a jump-to-latest affordance.\n *\n * Messages stay in the default slot — `MessageGroup` owns the viewport, not the rows.\n *\n * React's `header` / `footer` were structural `ReactNode` props with no string form worth keeping; they are slots\n * only.\n */\ndefineOptions({ name: 'MessageGroup', inheritAttrs: false });\n\ndefineSlots<{\n /** The region above the message stream (e.g. \"load older\"). */\n header(): unknown;\n\n /** The message rows — React's required `children`. */\n default(): unknown;\n\n /** The region below the message stream (e.g. typing indicator). */\n footer(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<MessageGroupProps>(), {\n isSticky: true,\n bottomThreshold: 32,\n hasJumpToBottom: true,\n isReversed: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst scroller = useTemplateRef<HTMLDivElement>('scroller');\n\n/**\n * Near-bottom state recorded *before* a new message commits (in the scroll\n * handler). Measuring inside the post-update hook would see the just-committed\n * message, so anything taller than `bottomThreshold` would defeat stickiness.\n * Plain `let`, not a `ref` — nothing renders off it, exactly like React's ref.\n */\nlet nearBottom = true;\n\nconst atBottom = ref(true);\n\nconst isNearBottom = (): boolean => {\n const node = scroller.value;\n if (!node) return true;\n return node.scrollHeight - node.clientHeight - node.scrollTop <= props.bottomThreshold;\n};\n\nconst scrollToBottom = (behavior: ScrollBehavior = 'smooth'): void => {\n const node = scroller.value;\n if (!node) return;\n node.scrollTo({ top: node.scrollHeight, behavior });\n};\n\nconst onScroll = (): void => {\n nearBottom = isNearBottom();\n atBottom.value = nearBottom;\n};\n\n/**\n * React ran the sticky scroll in a layout effect keyed on `children`, *before*\n * the effect that attached the listener — so the first paint lands at the\n * bottom while `nearBottom` is still its initial `true`. The mount order below\n * preserves that: scroll first, then attach and take the first measurement.\n */\nonMounted(() => {\n if (props.isSticky && nearBottom) scrollToBottom('auto');\n const node = scroller.value;\n if (!node) return;\n node.addEventListener('scroll', onScroll, { passive: true });\n onScroll();\n});\n\nonBeforeUnmount(() => {\n scroller.value?.removeEventListener('scroll', onScroll);\n});\n\n/**\n * Stands in for React's `useLayoutEffect(…, [children])`. A slot's content is\n * not a reactive dependency Vue can watch, but any new message re-renders this\n * component, and `onUpdated` is the hook that fires after that commit.\n */\nonUpdated(() => {\n if (props.isSticky && nearBottom) scrollToBottom('auto');\n});\n\nconst classes = computed(() => cn('relative flex h-full min-h-0 flex-col', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** React's `useImperativeHandle` surface (`MessageGroupHandle`), plus the root element. */\ndefineExpose({ el, scrollToBottom, isAtBottom: isNearBottom });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <div v-if=\"$slots.header\" class=\"shrink-0\"><slot name=\"header\" /></div>\n <div\n ref=\"scroller\"\n class=\"flex-1 min-h-0 overflow-y-auto px-3 py-3\"\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n >\n <div class=\"flex flex-col gap-2\"><slot /></div>\n </div>\n <div v-if=\"$slots.footer\" class=\"shrink-0 border-t border-border px-3 py-2\">\n <slot name=\"footer\" />\n </div>\n <button\n v-if=\"props.hasJumpToBottom && !atBottom\"\n type=\"button\"\n aria-label=\"Jump to latest\"\n class=\"absolute bottom-3 right-3 inline-flex h-9 w-9 items-center justify-center rounded-full border border-border bg-background text-foreground shadow-md hover:bg-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n @click=\"scrollToBottom('smooth')\"\n >\n <ChevronDown class=\"h-4 w-4\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface DaySeparatorProps {\n /** The label (e.g. \"Today\", \"Yesterday\", \"Mar 5\"). Rich content → the `label` slot. */\n readonly label: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/** Renders the date divider between message groups in a `MessageGroup`. */\ndefineOptions({ name: 'DaySeparator', inheritAttrs: false });\n\ndefineSlots<{\n /** The label override, when a plain string is not enough. */\n label(): unknown;\n}>();\n\n/** `label` was required in React and stays required here — the slot is a rich override, not a substitute. */\nconst props = defineProps<DaySeparatorProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('flex items-center gap-3 py-2', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"separator\" v-bind=\"rest\" :class=\"classes\">\n <span class=\"h-px flex-1 bg-border\" aria-hidden=\"true\" />\n <span class=\"text-[11px] font-medium uppercase tracking-wide text-muted-foreground\">\n <slot name=\"label\">{{ props.label }}</slot>\n </span>\n <span class=\"h-px flex-1 bg-border\" aria-hidden=\"true\" />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface ThreadViewProps {\n /** The title for the thread panel header. Default `\"Thread\"`. Rich content → the `title` slot. */\n readonly title?: string | number;\n\n /** The subtitle shown under the title (e.g. \"in #engineering\"). Rich content → the `subtitle` slot. */\n readonly subtitle?: string | number;\n\n /**\n * The reply count label. Left unset it falls back to a count derived from the\n * reply slot; pass `null` to hide the separator row entirely. Rich content →\n * the `replyCount` slot.\n */\n readonly replyCount?: string | number | null;\n\n /** The close button's visibility. Default true. */\n readonly hasCloseButton?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { X as CloseIcon } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { renderableChildren } from '../../../foundation/primitives';\n\n/**\n * Renders the chrome of a thread panel: header, parent message, reply-count separator, composer.\n *\n * The messages themselves stay in the slots — `ThreadView` only owns the chrome.\n *\n * `parent` / `composer` are structural, so they are slots only. `title` / `subtitle` / `replyCount` take either a\n * prop or a same-named slot.\n */\ndefineOptions({ name: 'ThreadView', inheritAttrs: false });\n\ndefineSlots<{\n /** The title override, when a plain string is not enough. */\n title(): unknown;\n\n /** The subtitle override, when a plain string is not enough. */\n subtitle(): unknown;\n\n /** The parent message — typically a `ChatBubbleCard`. Required. */\n parent(): unknown;\n\n /** The reply-count label override, when a plain string is not enough. */\n replyCount(): unknown;\n\n /** The reply nodes — typically `ChatBubbleCard` items. */\n default(): unknown;\n\n /** The composer rendered at the bottom of the panel. */\n composer(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<ThreadViewProps>(), {\n title: 'Thread',\n subtitle: undefined,\n replyCount: undefined,\n hasCloseButton: true,\n});\n\n/** Omitting `@close` omits the close button. */\nconst emit = defineEmits<{\n /** Fires when the close button is activated. */\n close: [];\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst instance = getCurrentInstance();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/**\n * The button renders only when `hasCloseButton` holds and the consumer bound\n * `@close`. Read through a call, not a cached computed: `instance.vnode` is\n * replaced on every re-render.\n */\nconst hasClose = () => props.hasCloseButton && Boolean(instance?.vnode.props?.onClose);\n\n/**\n * Counts the reply vnodes. Called per render rather than cached — a slot's\n * content is only knowable at render time, and `renderableChildren` drops the\n * comment/whitespace vnodes that would otherwise read as replies.\n */\nconst defaultReplyCount = (): string => {\n const count = renderableChildren(slots.default?.()).length;\n if (count === 0) return 'No replies yet';\n return count === 1 ? '1 reply' : `${count} replies`;\n};\n\nconst hasSubtitle = computed(() => props.subtitle != null || Boolean(slots.subtitle));\n\nconst classes = computed(() =>\n cn('flex h-full min-h-0 flex-col rounded-md border border-border bg-card', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"complementary\" aria-label=\"Thread\" v-bind=\"rest\" :class=\"classes\">\n <header class=\"flex items-start justify-between gap-2 border-b border-border px-4 py-3\">\n <div class=\"min-w-0\">\n <div class=\"text-sm font-semibold text-foreground\">\n <slot name=\"title\">{{ props.title }}</slot>\n </div>\n <div v-if=\"hasSubtitle\" class=\"text-xs text-muted-foreground\">\n <slot name=\"subtitle\">{{ props.subtitle }}</slot>\n </div>\n </div>\n <button\n v-if=\"hasClose()\"\n type=\"button\"\n aria-label=\"Close thread\"\n class=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n @click=\"emit('close')\"\n >\n <CloseIcon class=\"h-4 w-4\" />\n </button>\n </header>\n <div class=\"flex-1 min-h-0 overflow-y-auto px-4 py-3\">\n <div><slot name=\"parent\" /></div>\n <div v-if=\"props.replyCount !== null\" class=\"my-3 flex items-center gap-3\">\n <span class=\"text-xs text-muted-foreground\">\n <slot name=\"replyCount\">{{ props.replyCount ?? defaultReplyCount() }}</slot>\n </span>\n <span aria-hidden=\"true\" class=\"h-px flex-1 bg-border\" />\n </div>\n <div class=\"flex flex-col gap-2\"><slot /></div>\n </div>\n <div v-if=\"$slots.composer\" class=\"border-t border-border px-3 py-2\">\n <slot name=\"composer\" />\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `CommentThreadGroupProps` and consumers import it. Its\n only member was `children`, which is the default slot here; the rest of the\n React interface was `HTMLAttributes`, which falls through. */\nexport interface CommentThreadGroupProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\n\n/**\n * Renders the root of a nested comment tree, owning the ARIA `tree` role and nothing else.\n *\n * Every row is a `Comment`; nesting happens through each `Comment`'s `replies` slot.\n */\ndefineOptions({ name: 'CommentThreadGroup', inheritAttrs: false });\n\n/** The `Comment` rows — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn('flex flex-col gap-3', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"tree\" aria-label=\"Comments\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\nexport interface CommentProps {\n /** The author name. Rich content → the `author` slot. */\n readonly author: string | number;\n\n /** The timestamp / metadata. Rich content → the `timestamp` slot. */\n readonly timestamp?: string | number;\n\n /** The initial collapsed state for replies. */\n readonly defaultCollapsed?: boolean;\n\n /** The highlighted state — marks as the OP / highlighted comment. */\n readonly isHighlighted?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { ChevronDown, ChevronRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { renderableChildren } from '../../../foundation/primitives';\n\n/**\n * Renders one comment: avatar and collapse rail, header line, body, actions, and nested replies.\n *\n * React's `avatar` / `badge` / `actions` / `replies` were structural `ReactNode` props with no string form worth\n * keeping; they are slots only. `author` / `timestamp` keep their prop form and gain same-named slots.\n */\ndefineOptions({ name: 'Comment', inheritAttrs: false });\n\ndefineSlots<{\n /** The avatar / author photo. */\n avatar(): unknown;\n\n /** The author-name override, when a plain string is not enough. */\n author(): unknown;\n\n /** The trailing chip for badges (e.g. \"OP\", \"Author\"). */\n badge(): unknown;\n\n /** The timestamp override, when a plain string is not enough. */\n timestamp(): unknown;\n\n /** The body / content — React's required `children`. */\n default(): unknown;\n\n /** The footer actions (e.g. Reply / Vote / Report). */\n actions(): unknown;\n\n /** The nested replies — pass `Comment` items. */\n replies(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<CommentProps>(), {\n timestamp: undefined,\n defaultCollapsed: false,\n isHighlighted: undefined,\n});\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst collapsed = ref(props.defaultCollapsed);\n\n/**\n * Replaces React's `Children.toArray(replies).filter(isValidElement).length`.\n * Called per render rather than cached — a slot's content is only knowable at\n * render time, and `renderableChildren` drops the comment/whitespace vnodes\n * that would otherwise read as replies.\n */\nconst replyCount = (): number => renderableChildren(slots.replies?.()).length;\n\nconst hasReplies = (): boolean => replyCount() > 0;\n\nconst hasTimestamp = computed(() => props.timestamp != null || Boolean(slots.timestamp));\n\nconst classes = computed(() =>\n cn(\n 'flex gap-2 rounded-md',\n props.isHighlighted && 'bg-primary-soft/30 ring-1 ring-primary/20 p-2',\n attrs.class as string | undefined,\n ),\n);\n\nconst repliesWrapClasses = computed(() => cn('mt-2', collapsed.value && 'hidden'));\n\nconst railTrackClasses = computed(() =>\n cn(\n 'mx-auto w-px flex-1 bg-border transition-colors group-hover/rail:bg-foreground/30',\n collapsed.value && 'opacity-40',\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"el\"\n role=\"treeitem\"\n :aria-expanded=\"hasReplies() ? !collapsed : undefined\"\n :data-highlighted=\"dataAttr(props.isHighlighted)\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <!-- Avatar + collapse rail -->\n <div class=\"flex flex-col items-center gap-1\">\n <div class=\"shrink-0\"><slot name=\"avatar\" /></div>\n <button\n v-if=\"hasReplies()\"\n type=\"button\"\n :aria-label=\"collapsed ? 'Expand replies' : 'Collapse replies'\"\n class=\"flex flex-1 items-stretch -my-1 group/rail focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring rounded-full\"\n @click=\"collapsed = !collapsed\"\n >\n <span aria-hidden=\"true\" :class=\"railTrackClasses\" />\n </button>\n </div>\n\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex flex-wrap items-baseline gap-x-2 text-sm\">\n <span class=\"font-medium text-foreground\">\n <slot name=\"author\">{{ props.author }}</slot>\n </span>\n <slot name=\"badge\" />\n <span v-if=\"hasTimestamp\" class=\"text-xs text-muted-foreground\">\n <slot name=\"timestamp\">{{ props.timestamp }}</slot>\n </span>\n </div>\n <div class=\"mt-1 text-sm text-foreground\"><slot /></div>\n <div v-if=\"$slots.actions\" class=\"mt-1 flex items-center gap-2 text-xs text-muted-foreground\">\n <slot name=\"actions\" />\n </div>\n\n <div v-if=\"hasReplies()\" :class=\"repliesWrapClasses\">\n <!-- treeitem children must sit in a role=group per the ARIA tree pattern -->\n <div role=\"group\" class=\"flex flex-col gap-3 border-l border-border pl-3\">\n <slot name=\"replies\" />\n </div>\n </div>\n\n <button\n v-if=\"hasReplies() && collapsed\"\n type=\"button\"\n class=\"mt-1 inline-flex items-center gap-1 text-xs text-primary hover:underline focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring rounded\"\n @click=\"collapsed = false\"\n >\n <ChevronRight class=\"h-3 w-3\" />\n Show {{ replyCount() }} {{ replyCount() === 1 ? 'reply' : 'replies' }}\n </button>\n <button\n v-if=\"hasReplies() && !collapsed\"\n type=\"button\"\n class=\"mt-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring rounded\"\n @click=\"collapsed = true\"\n >\n <ChevronDown class=\"h-3 w-3\" />\n Collapse\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface ActivityTimelineProps {\n /** The compact spacing variant. */\n readonly isDense?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\n\n/**\n * Renders an ordered feed of `ActivityItem` rows joined by a connector rail down the leading column.\n *\n * Each row reads as an \"actor + verb + target\" sentence.\n */\ndefineOptions({ name: 'ActivityTimeline', inheritAttrs: false });\n\n/** The `ActivityItem` rows — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/**\n * `isDense` defaults to `undefined`, not `false`: Vue casts an absent `Boolean`\n * prop to `false`, and `data-dense` must stay absent rather than render empty.\n */\nconst props = withDefaults(defineProps<ActivityTimelineProps>(), { isDense: undefined });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLOListElement>('el');\n\nconst classes = computed(() =>\n cn('flex list-none flex-col', props.isDense ? 'gap-3' : 'gap-5', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <ol ref=\"el\" :data-dense=\"dataAttr(props.isDense)\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </ol>\n</template>\n","<script lang=\"ts\">\nexport interface ActivityItemProps {\n /** The timestamp (relative or absolute). Rich content → the `timestamp` slot. */\n readonly timestamp?: string | number;\n\n /** The connector-line suppression under the leading column. */\n readonly isLast?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\n\n/**\n * Renders one `ActivityTimeline` row: avatar rail, the activity sentence, optional preview and actions.\n *\n * React's `avatar` / `preview` / `actions` were structural `ReactNode` props with no string form worth keeping; they\n * are slots only. `timestamp` keeps its prop form and gains a same-named slot for rich content.\n */\ndefineOptions({ name: 'ActivityItem', inheritAttrs: false });\n\ndefineSlots<{\n /** The avatar / icon node rendered in the leading column. */\n avatar(): unknown;\n\n /** The activity sentence (actor + verb + target) — React's required `children`. */\n default(): unknown;\n\n /** The timestamp override, when a plain string is not enough. */\n timestamp(): unknown;\n\n /** The content preview rendered under the sentence (quoted comment, file name, image). */\n preview(): unknown;\n\n /** The trailing actions (e.g. Reply / Like). */\n actions(): unknown;\n}>();\n\n/**\n * `isLast` defaults to `undefined`, not `false`: Vue casts an absent `Boolean`\n * prop to `false`, and `data-last` must stay absent rather than render empty.\n */\nconst props = withDefaults(defineProps<ActivityItemProps>(), { isLast: undefined });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLLIElement>('el');\n\nconst hasTimestamp = computed(() => props.timestamp != null || Boolean(slots.timestamp));\n\nconst classes = computed(() => cn('relative flex gap-3', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <li ref=\"el\" :data-last=\"dataAttr(props.isLast)\" v-bind=\"rest\" :class=\"classes\">\n <div class=\"relative flex flex-col items-center\">\n <div class=\"z-raised shrink-0\"><slot name=\"avatar\" /></div>\n <span v-if=\"!props.isLast\" aria-hidden=\"true\" class=\"mt-1 w-px flex-1 bg-border\" />\n </div>\n <div class=\"min-w-0 flex-1 pb-1\">\n <div class=\"text-sm leading-relaxed text-foreground\">\n <slot />\n <span v-if=\"hasTimestamp\" class=\"ml-2 text-xs text-muted-foreground\">\n <slot name=\"timestamp\">{{ props.timestamp }}</slot>\n </span>\n </div>\n <div\n v-if=\"$slots.preview\"\n class=\"mt-1.5 rounded-md border border-border bg-muted/40 px-3 py-2 text-sm text-muted-foreground\"\n >\n <slot name=\"preview\" />\n </div>\n <div v-if=\"$slots.actions\" class=\"mt-1 flex items-center gap-3 text-xs text-muted-foreground\">\n <slot name=\"actions\" />\n </div>\n </div>\n </li>\n</template>\n","<script lang=\"ts\">\nexport interface FeatureCardProps {\n /**\n * The feature title. React typed this `ReactNode`; a scalar stays a prop so it\n * remains the discriminator, and the same-named slot is the rich override.\n */\n readonly title: string | number;\n\n /** The optional supporting copy below the title. Falls back to the default slot when omitted. */\n readonly description?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentElement } from '../../../foundation/primitives';\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport Card from '../card/Card.vue';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/**\n * Renders a marketing feature tile — tinted icon badge, title, description — in an outlined card.\n *\n * Content-only: no baked routing. Compose the icon slot with any node.\n */\ndefineOptions({ name: 'FeatureCard', inheritAttrs: false });\n\n/**\n * React's `icon` was a structural `ReactNode` prop — a region with no prop\n * equivalent in Vue, so it becomes a slot. `title` / `description` stay props\n * (scalars) with a same-named slot as the rich override; the default slot is\n * the body fallback React spelled `description ?? children`.\n */\ndefineSlots<{\n /** The icon node rendered inside a tinted badge (`bg-primary-soft text-primary`). Size it yourself. */\n icon(): unknown;\n /** The feature title — overrides the `title` prop's rendering. */\n title(): unknown;\n /** The supporting copy — overrides the `description` prop's rendering. */\n description(): unknown;\n /** The body content — used when neither `description` nor its slot is provided. */\n default(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<FeatureCardProps>(), { description: undefined });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<ComponentElement>('el');\n\nconst hasBody = computed(() => props.description !== undefined || !!slots.description || !!slots.default);\n\nconst classes = computed(() => cn('bg-card p-6', attrs.class as string | undefined));\n\nconst headingClasses = computed(() => cn('tracking-normal', !!slots.icon && 'mt-4'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <Card ref=\"el\" variant=\"outline\" radius=\"xl\" :elevation=\"0\" v-bind=\"rest\" :class=\"classes\">\n <span v-if=\"$slots.icon\" class=\"grid size-11 place-items-center rounded-lg bg-primary-soft text-primary\">\n <slot name=\"icon\" />\n </span>\n <Heading :level=\"3\" size=\"md\" :class=\"headingClasses\">\n <slot name=\"title\">{{ props.title }}</slot>\n </Heading>\n <Text v-if=\"hasBody\" size=\"sm\" color=\"muted\" class=\"mt-2 leading-relaxed\">\n <slot name=\"description\">\n <template v-if=\"props.description !== undefined\">{{ props.description }}</template>\n <slot v-else />\n </slot>\n </Text>\n </Card>\n</template>\n","<script lang=\"ts\">\nexport interface StepCardProps {\n /** The step number — rendered as a large faint overlay top-right. */\n readonly step: number;\n\n /**\n * The step title. React typed this `ReactNode`; a scalar stays a prop so it\n * remains the discriminator, and the same-named slot is the rich override.\n */\n readonly title: string | number;\n\n /** The optional supporting copy below the title. Falls back to the default slot when omitted. */\n readonly description?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentElement } from '../../../foundation/primitives';\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/styles';\nimport Card from '../card/Card.vue';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/**\n * Renders a numbered \"how it works\" step — faint step number, tinted icon badge, title, description.\n *\n * Outlined card, content-only, no baked routing.\n */\ndefineOptions({ name: 'StepCard', inheritAttrs: false });\n\n/**\n * React's `icon` was a structural `ReactNode` prop — a region with no prop\n * equivalent in Vue, so it becomes a slot. `title` / `description` stay props\n * (scalars) with a same-named slot as the rich override; the default slot is\n * the body fallback React spelled `description ?? children`.\n */\ndefineSlots<{\n /** The icon node rendered inside a tinted badge (`bg-primary-soft text-primary`). Size it yourself. */\n icon(): unknown;\n /** The step title — overrides the `title` prop's rendering. */\n title(): unknown;\n /** The supporting copy — overrides the `description` prop's rendering. */\n description(): unknown;\n /** The body content — used when neither `description` nor its slot is provided. */\n default(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<StepCardProps>(), { description: undefined });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<ComponentElement>('el');\n\nconst hasBody = computed(() => props.description !== undefined || !!slots.description || !!slots.default);\n\nconst classes = computed(() => cn('relative overflow-hidden bg-card p-6', attrs.class as string | undefined));\n\nconst headingClasses = computed(() => cn('tracking-normal', !!slots.icon && 'mt-4'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <Card ref=\"el\" variant=\"outline\" radius=\"xl\" :elevation=\"0\" v-bind=\"rest\" :class=\"classes\">\n <span class=\"absolute right-4 top-3 text-5xl font-bold text-foreground/5\">{{ props.step }}</span>\n <span v-if=\"$slots.icon\" class=\"grid size-11 place-items-center rounded-lg bg-primary-soft text-primary\">\n <slot name=\"icon\" />\n </span>\n <Heading :level=\"3\" size=\"md\" :class=\"headingClasses\">\n <slot name=\"title\">{{ props.title }}</slot>\n </Heading>\n <Text v-if=\"hasBody\" size=\"sm\" color=\"muted\" class=\"mt-2\">\n <slot name=\"description\">\n <template v-if=\"props.description !== undefined\">{{ props.description }}</template>\n <slot v-else />\n </slot>\n </Text>\n </Card>\n</template>\n","<script lang=\"ts\">\nexport interface PricingCardProps {\n /**\n * The tier name (e.g. \"Pro\"). React typed this `ReactNode`; a scalar stays a\n * prop so it remains the discriminator, and the same-named slot is the rich\n * override. The same pairing applies to `price` / `cadence` / `tagline` /\n * `badgeLabel` below.\n */\n readonly name: string | number;\n\n /** The headline price (e.g. \"$9\"). */\n readonly price: string | number;\n\n /** The billing cadence beside the price (e.g. \"/mo\"). */\n readonly cadence?: string | number;\n\n /** The short positioning line below the price. */\n readonly tagline?: string | number;\n\n /** The feature bullets — each rendered with a leading `Check`. The scoped `feature` slot overrides a row. */\n readonly features: ReadonlyArray<string | number>;\n\n /** The featured state — highlights this tier with a primary border + shadow + a badge. */\n readonly featured?: boolean;\n\n /** The badge label shown when `featured`. Default \"Most popular\". */\n readonly badgeLabel?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentElement } from '../../../foundation/primitives';\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { Check } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport Badge from '../badge/Badge.vue';\nimport Card from '../card/Card.vue';\nimport Heading from '../heading/Heading.vue';\nimport Text from '../text/Text.vue';\n\n/**\n * Renders a pricing tier: name, price baseline, tagline, checked feature list, bottom-pinned CTA.\n *\n * Content-only — the CTA is the default slot, never baked routing. `featured` adds a primary border, a shadow, and a\n * \"Most popular\" badge.\n */\ndefineOptions({ name: 'PricingCard', inheritAttrs: false });\n\n/**\n * React's `children` was the CTA region; it becomes the default slot. Every\n * scalar prop above pairs with a same-named override slot, and `feature` is\n * scoped so a consumer can render a rich bullet per entry.\n */\ndefineSlots<{\n /** The tier name — overrides the `name` prop's rendering. */\n name(): unknown;\n /** The headline price — overrides the `price` prop's rendering. */\n price(): unknown;\n /** The billing cadence — overrides the `cadence` prop's rendering. */\n cadence(): unknown;\n /** The positioning line — overrides the `tagline` prop's rendering. */\n tagline(): unknown;\n /** The featured badge label — overrides the `badgeLabel` prop's rendering. */\n badgeLabel(): unknown;\n /** One feature bullet — overrides the row body (the leading `Check` stays). */\n feature(props: { feature: string | number; index: number }): unknown;\n /** The CTA pinned to the bottom — pass a `Button`. */\n default(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<PricingCardProps>(), {\n cadence: undefined,\n tagline: undefined,\n featured: false,\n badgeLabel: 'Most popular',\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<ComponentElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'relative flex flex-col bg-card p-6',\n props.featured ? 'border-primary shadow-lg shadow-primary/10' : 'border-border',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <Card ref=\"el\" variant=\"outline\" radius=\"2xl\" :elevation=\"0\" v-bind=\"rest\" :class=\"classes\">\n <Badge\n v-if=\"props.featured\"\n variant=\"brand\"\n size=\"md\"\n class=\"absolute -top-3 left-6 bg-primary px-3 py-1 text-xs font-medium text-primary-foreground\"\n >\n <slot name=\"badgeLabel\">{{ props.badgeLabel }}</slot>\n </Badge>\n <Heading :level=\"3\" size=\"md\" class=\"tracking-normal\">\n <slot name=\"name\">{{ props.name }}</slot>\n </Heading>\n <div class=\"mt-2 flex items-baseline gap-1\">\n <span class=\"text-3xl font-bold tracking-tight\">\n <slot name=\"price\">{{ props.price }}</slot>\n </span>\n <Text v-if=\"props.cadence !== undefined || $slots.cadence\" as=\"span\" size=\"sm\" color=\"muted\">\n <slot name=\"cadence\">{{ props.cadence }}</slot>\n </Text>\n </div>\n <Text v-if=\"props.tagline !== undefined || $slots.tagline\" size=\"sm\" color=\"muted\" class=\"mt-2\">\n <slot name=\"tagline\">{{ props.tagline }}</slot>\n </Text>\n <ul class=\"mt-5 flex flex-1 flex-col gap-2.5\">\n <li v-for=\"(feature, index) in props.features\" :key=\"feature\" class=\"flex items-start gap-2 text-sm\">\n <Icon :icon=\"Check\" :size=\"16\" class=\"mt-0.5 text-primary\" />\n <span\n ><slot name=\"feature\" :feature=\"feature\" :index=\"index\">{{ feature }}</slot></span\n >\n </li>\n </ul>\n <div v-if=\"$slots.default\" class=\"mt-6\"><slot /></div>\n </Card>\n</template>\n","import { inject, type InjectionKey } from 'vue';\nimport type { Orientation } from '../../../foundation/styles';\n\n/** Defines a step's position relative to the active step. */\nexport const StepStatus = {\n /** Refers to a step ahead of the active one (not yet reached). */\n Pending: 'pending',\n /** Refers to the currently active step. */\n Active: 'active',\n /** Refers to a step behind the active one (already passed). */\n Complete: 'complete',\n} as const;\n\nexport type StepStatus = (typeof StepStatus)[keyof typeof StepStatus];\n\n/**\n * The seam between `StepperGroup` and its `StepperGroupList` / `StepperGroupStep` / `StepperGroupPanel` children.\n *\n * React attached those as `StepperGroup.List` / `.Step` / `.Panel` statics over a `createContext`.\n * An SFC's generated default export cannot carry statics cleanly, so they ship as sibling\n * components and share state through provide/inject instead.\n *\n * Every field but the setters is a live getter — read them off the object, don't destructure.\n */\nexport interface StepperGroupContextValue {\n /** The active step value. */\n readonly value: string;\n /** Selects a step. */\n setValue: (value: string) => void;\n /** The layout axis. */\n readonly orientation: Orientation;\n /** The id prefix shared by every step / panel pair. */\n readonly baseId: string;\n /**\n * The registered step values in mount order.\n *\n * React kept this in a `useRef` array, which never re-rendered a step when a sibling\n * registered — the very first step could render its connector against a stale length.\n * A reactive array here closes that, and matches how `SelectPicker` registers its items.\n */\n readonly steps: ReadonlyArray<string>;\n registerStep: (value: string) => void;\n unregisterStep: (value: string) => void;\n}\n\nexport const StepperGroupKey: InjectionKey<StepperGroupContextValue> = Symbol('wow-two.stepper');\n\n/** Reads the surrounding stepper context; throws when used outside a `<StepperGroup>`. */\nexport function useStepperContext(): StepperGroupContextValue {\n const context = inject(StepperGroupKey, null);\n if (!context) throw new Error('StepperGroup.* must be used inside <StepperGroup>');\n return context;\n}\n","<script lang=\"ts\">\nimport type { Orientation } from '../../../foundation/styles';\n\nexport interface StepperGroupProps {\n /** The active step value, controlled. The `v-model` binding target. */\n readonly modelValue?: string;\n\n /** The initial active step value when uncontrolled. */\n readonly defaultValue?: string;\n\n /** The layout axis. Default `horizontal`. */\n readonly orientation?: Orientation;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, ref, useAttrs, useTemplateRef } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { cn, Orientation as OrientationValue } from '../../../foundation/styles';\nimport { useControlled } from '../../../foundation/state';\nimport { useId } from '../../../foundation/identifiers';\nimport { StepperGroupKey, type StepperGroupContextValue } from './StepperGroupContext';\n\n/**\n * Renders the stepper root, owning the active step value for the strip and panels below it.\n *\n * Publishes that value to `StepperGroupList` / `StepperGroupStep` / `StepperGroupPanel` through injection — React\n * attached those as `StepperGroup.List` / `.Step` / `.Panel` statics, which an SFC's default export\n * cannot carry.\n */\n/* `inheritAttrs: false` so `class` folds into the root's own `cn()` call — plain fallthrough\n appends outside it and loses tailwind-merge conflict resolution. */\ndefineOptions({ name: 'StepperGroup', inheritAttrs: false });\n\n/** The step list and panels — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<StepperGroupProps>(), {\n orientation: OrientationValue.Horizontal,\n /* Explicit `undefined` defaults: `useControlled` keys on `=== undefined`. */\n modelValue: undefined,\n defaultValue: undefined,\n});\n\nconst emit = defineEmits<{\n /** Fires when the reader moves to a different step — the `v-model` half. */\n 'update:modelValue': [value: string];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst controlled = useControlled<string>({\n controlled: () => props.modelValue,\n default: () => props.defaultValue ?? '',\n onChange: (next) => {\n emit('update:modelValue', next);\n },\n});\n\nconst active = controlled.value;\nconst baseId = useId();\n\n/* Reactive, unlike React's `useRef` array: `StepperGroupStep` derives its status and its connector\n visibility from this list at render time, so a sibling registering has to re-render it. */\nconst steps = ref<Array<string>>([]);\n\nfunction registerStep(value: string): void {\n if (!steps.value.includes(value)) steps.value = [...steps.value, value];\n}\n\nfunction unregisterStep(value: string): void {\n steps.value = steps.value.filter((x) => x !== value);\n}\n\n/* Live getters, not a snapshot — an orientation change on the root has to reach every\n already-mounted step. */\nprovide<StepperGroupContextValue>(StepperGroupKey, {\n get value() {\n return active.value;\n },\n setValue: controlled.setValue,\n get orientation() {\n return props.orientation;\n },\n baseId,\n get steps() {\n return steps.value;\n },\n registerStep,\n unregisterStep,\n});\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst rootClass = computed(() =>\n cn(props.orientation === OrientationValue.Vertical ? 'flex gap-4' : 'flex flex-col gap-4', attrs.class as ClassValue),\n);\n\n/** The rendered root `<div>` — the Vue stand-in for the React original's forwarded ref. */\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" :data-orientation=\"orientation\" :class=\"rootClass\" v-bind=\"passthroughAttrs\">\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/* eslint-disable-next-line @typescript-eslint/no-empty-object-type -- kept as an\n exported name: React declared `StepperGroupListProps` and consumers import it. Its only\n member was `children`, which is the default slot here; every attribute falls through. */\nexport interface StepperGroupListProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { cn, Orientation } from '../../../foundation/styles';\nimport { RovingFocusGroup, type ComponentElement } from '../../../foundation/primitives';\nimport { useStepperContext } from './StepperGroupContext';\n\n/** Renders the step strip, its arrow-key navigation coming from the surrounding `RovingFocusGroup`. */\ndefineOptions({ name: 'StepperGroupList', inheritAttrs: false });\n\n/** The `StepperGroupStep` children — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<ComponentElement>('el');\nconst stepper = useStepperContext();\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst listClass = computed(() =>\n cn(\n 'flex',\n stepper.orientation === Orientation.Vertical ? 'flex-col gap-4' : 'flex-row items-center gap-2',\n attrs.class as ClassValue,\n ),\n);\n\n/** Exposes the child's documented DOM handle, never its component instance. */\nconst rootElement = computed<HTMLElement | null>(() => {\n const node = el.value?.el;\n const elementType = node?.ownerDocument.defaultView?.HTMLElement;\n return elementType && node instanceof elementType ? node : null;\n});\n\ndefineExpose({ el: rootElement });\n</script>\n\n<template>\n <RovingFocusGroup\n ref=\"el\"\n :orientation=\"stepper.orientation\"\n role=\"tablist\"\n :aria-orientation=\"stepper.orientation\"\n :data-orientation=\"stepper.orientation\"\n :class=\"listClass\"\n v-bind=\"passthroughAttrs\"\n >\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\nexport interface StepperGroupStepProps {\n /** The value this step selects — pairs it with the `StepperGroupPanel` of the same value. */\n readonly value: string;\n\n /** The sub-label under the step title. Fill the `description` slot for richer content. */\n readonly description?: string | number;\n\n /** The disabled state. Default `false`. */\n readonly isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, mergeProps, onBeforeUnmount, onMounted, shallowRef, useAttrs, useSlots } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { Check } from 'lucide-vue-next';\nimport { cn, Orientation } from '../../../foundation/styles';\nimport { dataAttr } from '../../../foundation/dom';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\nimport { StepStatus, useStepperContext } from './StepperGroupContext';\n\n/** Renders one step as an index-or-tick button, its label and description, plus a trailing connector. */\ndefineOptions({ name: 'StepperGroupStep', inheritAttrs: false });\n\n/** The step title — React's required `children`. */\ndefineSlots<{\n default(): unknown;\n description?(): unknown;\n}>();\n\nconst props = withDefaults(defineProps<StepperGroupStepProps>(), { isDisabled: false });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst stepper = useStepperContext();\n\n/* Reactive object: bound with `v-bind`, never destructured. React called this with no\n options, so the roving tab stop is the first enabled step rather than the active one. */\nconst item = useRovingFocusItem();\n\n/* Registration order follows mount order, which is DOM order — the same ordering React got\n from its mount effect. */\nonMounted(() => stepper.registerStep(props.value));\nonBeforeUnmount(() => stepper.unregisterStep(props.value));\n\n/* One element, two consumers of `ref` — the roving group needs the node and `defineExpose`\n publishes it. React composed them with a callback ref; this is the same composition. */\nconst el = shallowRef<HTMLButtonElement | null>(null);\nfunction setRef(node: unknown): void {\n el.value = (node ?? null) as HTMLButtonElement | null;\n item.ref(node);\n}\n\nconst index = computed(() => stepper.steps.indexOf(props.value));\nconst activeIndex = computed(() => stepper.steps.indexOf(stepper.value));\n\nconst status = computed<StepStatus>(() => {\n if (index.value < activeIndex.value) return StepStatus.Complete;\n return index.value === activeIndex.value ? StepStatus.Active : StepStatus.Pending;\n});\n\nconst stepId = computed(() => `${stepper.baseId}-step-${props.value}`);\nconst panelId = computed(() => `${stepper.baseId}-panel-${props.value}`);\nconst stepNumber = computed(() => index.value + 1);\n\nconst hasDescription = computed(() => Boolean(props.description) || Boolean(slots.description));\n\nconst showConnector = computed(\n () => stepper.orientation === Orientation.Horizontal && index.value < stepper.steps.length - 1,\n);\n\nfunction onClick(event: MouseEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n stepper.setValue(props.value);\n}\n\nconst buttonClass = computed(() =>\n cn(\n 'group flex items-center gap-2 text-left text-sm focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring rounded-sm',\n props.isDisabled && 'pointer-events-none opacity-50',\n attrs.class as ClassValue,\n ),\n);\n\nconst markerClass = computed(() =>\n cn(\n 'grid h-7 w-7 shrink-0 place-items-center rounded-full border-2 text-xs font-semibold transition-colors',\n status.value === StepStatus.Pending && 'border-border text-muted-foreground',\n status.value === StepStatus.Active && 'border-primary bg-primary text-primary-foreground',\n status.value === StepStatus.Complete && 'border-primary bg-primary text-primary-foreground',\n ),\n);\n\nconst titleClass = computed(() =>\n cn('font-medium', status.value === StepStatus.Pending ? 'text-muted-foreground' : 'text-foreground'),\n);\n\nconst connectorClass = computed(() =>\n cn('h-px flex-1 transition-colors', status.value === StepStatus.Pending ? 'bg-border' : 'bg-primary'),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\n/**\n * The fallthrough attrs merged with the roving-focus item's bindings.\n *\n * `mergeProps` rather than an object spread: both sides can carry `onFocus`, and a spread\n * would drop the consumer's. Reading `item`'s members inside a computed keeps them tracked,\n * so `tabindex` still follows the group's tab stop.\n */\nconst bindings = computed(() => mergeProps(rest.value, item as unknown as Record<string, unknown>));\n\nconst CheckIcon = Check;\n\n/** The rendered `<button>` — the Vue stand-in for the React original's forwarded ref. */\ndefineExpose({ el });\n</script>\n\n<template>\n <div class=\"flex flex-1 items-center gap-2\">\n <!-- Own attrs, then `bindings` (fallthrough attrs + the roving item), then own handlers\n last — a consumer's `click` handler therefore runs before ours, the order React got\n from calling `onClick?.(e)` ahead of its own logic. -->\n <button\n :id=\"stepId\"\n type=\"button\"\n role=\"tab\"\n :aria-selected=\"status === 'active'\"\n :aria-controls=\"panelId\"\n :aria-current=\"status === 'active' ? 'step' : undefined\"\n :data-status=\"status\"\n :data-disabled=\"dataAttr(isDisabled)\"\n :disabled=\"isDisabled\"\n v-bind=\"bindings\"\n :ref=\"setRef\"\n :class=\"buttonClass\"\n @click=\"onClick\"\n >\n <span aria-hidden=\"true\" :class=\"markerClass\">\n <CheckIcon v-if=\"status === 'complete'\" class=\"h-4 w-4\" />\n <template v-else>{{ stepNumber }}</template>\n </span>\n <span class=\"flex flex-col\">\n <span :class=\"titleClass\"><slot /></span>\n <span v-if=\"hasDescription\" class=\"text-xs text-muted-foreground\">\n <slot name=\"description\">{{ description }}</slot>\n </span>\n </span>\n </button>\n <span v-if=\"showConnector\" aria-hidden=\"true\" :class=\"connectorClass\" />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface StepperGroupPanelProps {\n /** The value this panel belongs to — pairs it with the `StepperGroupStep` of the same value. */\n readonly value: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport type { ClassValue } from 'clsx';\nimport { cn } from '../../../foundation/styles';\nimport { useStepperContext } from './StepperGroupContext';\n\n/** Renders one step's panel, and only while that step is the active one — the rest stay unmounted. */\ndefineOptions({ name: 'StepperGroupPanel', inheritAttrs: false });\n\n/** The panel content — React's required `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<StepperGroupPanelProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst stepper = useStepperContext();\n\nconst isActive = computed(() => stepper.value === props.value);\n\nconst stepId = computed(() => `${stepper.baseId}-step-${props.value}`);\nconst panelId = computed(() => `${stepper.baseId}-panel-${props.value}`);\n\nconst OwnedAttributes: ReadonlySet<string> = new Set(['class']);\nconst passthroughAttrs = computed(() =>\n Object.fromEntries(Object.entries(attrs).filter(([key]) => !OwnedAttributes.has(key))),\n);\n\nconst panelClass = computed(() => cn('flex-1 outline-hidden', attrs.class as ClassValue));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n v-if=\"isActive\"\n ref=\"el\"\n :id=\"panelId\"\n role=\"tabpanel\"\n :aria-labelledby=\"stepId\"\n :tabindex=\"0\"\n :class=\"panelClass\"\n v-bind=\"passthroughAttrs\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface NotificationCenterGroupProps {\n /** The header title. Default `\"Notifications\"`. Rich content → the `title` slot. */\n readonly title?: string;\n\n /** The badge / count rendered next to the title. Rich content → the `count` slot. */\n readonly count?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { Bell } from 'lucide-vue-next';\nimport { cn, surfaceVariants } from '../../../foundation/styles';\nimport { renderableChildren } from '../../../foundation/primitives';\n\n/**\n * Renders a notification panel — title and count header, a scrolling item list, optional footer.\n * The default slot holds `NotificationItem` children.\n *\n * React's `headerActions` / `emptyState` / `footer` were `ReactNode` props with\n * no string form worth keeping; they are slots only. `title` / `count` keep\n * their prop form and gain same-named slots.\n */\ndefineOptions({ name: 'NotificationCenterGroup', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<NotificationCenterGroupProps>(), { title: 'Notifications' });\n\ndefineSlots<{\n /** The `NotificationItem` children filling the scrolling list. */\n default?(): unknown;\n /** The header title. Falls back to the `title` prop. */\n title?(): unknown;\n /** The header badge. Falls back to the `count` prop. */\n count?(): unknown;\n /** The controls at the right of the header. */\n headerActions?(): unknown;\n /** Replaces the built-in \"all caught up\" placeholder shown with no items. */\n emptyState?(): unknown;\n /** The footer band under the list. Omitting it drops the band. */\n footer?(): unknown;\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/**\n * Replaces React's `Children.toArray(children).filter(isValidElement)`. Called\n * per render rather than cached — a slot's content is only knowable at render\n * time, and `renderableChildren` drops the comment/whitespace vnodes that would\n * otherwise read as content.\n */\nconst isEmpty = () => renderableChildren(slots.default?.()).length === 0;\n\nconst classes = computed(() =>\n cn('flex w-80 flex-col', surfaceVariants({ variant: 'surface', radius: 'md' }), attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"region\" aria-label=\"Notifications\" v-bind=\"rest\" :class=\"classes\">\n <header class=\"flex items-center justify-between gap-2 border-b border-border px-3 py-2.5\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-sm font-semibold\">\n <slot name=\"title\">{{ props.title }}</slot>\n </span>\n <span\n v-if=\"props.count != null || $slots.count\"\n class=\"inline-flex items-center justify-center rounded-full bg-primary px-1.5 text-[10px] font-semibold leading-5 text-primary-foreground\"\n >\n <slot name=\"count\">{{ props.count }}</slot>\n </span>\n </div>\n <slot name=\"headerActions\" />\n </header>\n <div class=\"max-h-96 overflow-y-auto py-1\">\n <template v-if=\"isEmpty()\">\n <slot name=\"emptyState\">\n <div class=\"flex flex-col items-center gap-2 px-4 py-10 text-center text-muted-foreground\">\n <Bell class=\"h-6 w-6\" />\n <p class=\"text-sm\">You're all caught up.</p>\n </div>\n </slot>\n </template>\n <div v-else class=\"flex flex-col\"><slot /></div>\n </div>\n <div v-if=\"$slots.footer\" class=\"border-t border-border px-3 py-2 text-center text-xs\">\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface NotificationItemProps {\n /** The leading icon / avatar. Rich content → the `icon` slot. */\n readonly icon?: string;\n\n /** The primary title. Rich content → the `title` slot. Supply this or the slot. */\n readonly title?: string;\n\n /** The body / description. Rich content → the `description` slot. */\n readonly description?: string;\n\n /** The timestamp / relative time label. Rich content → the `timestamp` slot. */\n readonly timestamp?: string;\n\n /** The unread flag (bold + leading dot). */\n readonly isUnread?: boolean;\n\n /** The trailing actions. Rich content → the `actions` slot. */\n readonly actions?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { X } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Key } from '../../../foundation/dom';\n\n/** Renders one notification row — icon, title, description, timestamp, and an unread dot. */\ndefineOptions({ name: 'NotificationItem', inheritAttrs: false });\n\nconst props = defineProps<NotificationItemProps>();\n\nconst emit = defineEmits<{\n /**\n * Fires when the reader activates the row by click, Enter, or Space; binding it\n * makes the row interactive (`role=\"button\"`, `tabindex=\"0\"`).\n *\n * Declared as an emit even though `select` is also a DOM event name — the\n * React prop was a custom callback, not the native `select`, and an emit is\n * the only way to keep the name. A `@select` binding reaches this emit, not\n * the (never-fired-on-a-div) native event.\n */\n select: [];\n /** Fires when the reader presses the dismiss button, which renders on hover only when bound. */\n dismiss: [];\n}>();\n\ndefineSlots<{\n /** The leading icon. Falls back to the `icon` prop. */\n icon?(): unknown;\n /** The title line. Falls back to the `title` prop. */\n title?(): unknown;\n /** The right-aligned timestamp. Falls back to the `timestamp` prop. */\n timestamp?(): unknown;\n /** The body text under the title. Falls back to the `description` prop. */\n description?(): unknown;\n /** The action row under the description. Falls back to the `actions` prop. */\n actions?(): unknown;\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst instance = getCurrentInstance();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/**\n * Mirror React's `!!onSelect` / `onDismiss &&` guards. Read through a call, not\n * a cached computed: `instance.vnode` is replaced on every re-render.\n */\nconst interactive = () => Boolean(instance?.vnode.props?.onSelect);\nconst hasDismiss = () => Boolean(instance?.vnode.props?.onDismiss);\n\nconst hasIcon = computed(() => Boolean(props.icon) || Boolean(slots.icon));\nconst hasTimestamp = computed(() => Boolean(props.timestamp) || Boolean(slots.timestamp));\nconst hasDescription = computed(() => Boolean(props.description) || Boolean(slots.description));\nconst hasActions = computed(() => Boolean(props.actions) || Boolean(slots.actions));\n\nconst classes = computed(() =>\n cn(\n 'group/notif relative flex gap-3 rounded-md px-3 py-2.5 text-sm',\n interactive() &&\n 'cursor-pointer hover:bg-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring',\n props.isUnread && 'bg-primary-soft/30',\n attrs.class as string | undefined,\n ),\n);\n\nconst titleClasses = computed(() => cn('truncate text-foreground', props.isUnread ? 'font-semibold' : 'font-medium'));\n\nconst bodyClasses = computed(() => cn('min-w-0 flex-1', !hasIcon.value && 'pl-3'));\n\n/** The dismiss button's resting classes — corner placement, box, and the hidden-until-hover opacity. */\nconst DismissRestingClasses =\n 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground opacity-0';\n\n/** The dismiss button's hover / focus classes — the raised surface and the focus ring. */\nconst DismissInteractionClasses =\n 'hover:bg-background hover:text-foreground focus-visible:opacity-100 ' +\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring';\n\nconst onKeyDown = (event: KeyboardEvent) => {\n if (!interactive()) return;\n if (event.target !== event.currentTarget) return;\n if (event.key === Key.Enter || event.key === Key.Space) {\n event.preventDefault();\n emit('select');\n }\n};\n\nconst onDismissClick = (event: MouseEvent) => {\n event.stopPropagation();\n emit('dismiss');\n};\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n ref=\"el\"\n :role=\"interactive() ? 'button' : undefined\"\n :tabindex=\"interactive() ? 0 : undefined\"\n :data-unread=\"props.isUnread ? '' : undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"emit('select')\"\n @keydown=\"onKeyDown\"\n >\n <span\n v-if=\"props.isUnread\"\n aria-hidden=\"true\"\n class=\"absolute left-1 top-3 inline-block h-2 w-2 rounded-full bg-primary\"\n />\n <div v-if=\"hasIcon\" class=\"shrink-0 self-start pl-3\">\n <slot name=\"icon\">{{ props.icon }}</slot>\n </div>\n <div :class=\"bodyClasses\">\n <div class=\"flex items-baseline gap-2\">\n <span :class=\"titleClasses\">\n <slot name=\"title\">{{ props.title }}</slot>\n </span>\n <span v-if=\"hasTimestamp\" class=\"ml-auto whitespace-nowrap text-xs text-muted-foreground\">\n <slot name=\"timestamp\">{{ props.timestamp }}</slot>\n </span>\n </div>\n <div v-if=\"hasDescription\" class=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">\n <slot name=\"description\">{{ props.description }}</slot>\n </div>\n <div v-if=\"hasActions\" class=\"mt-1.5 flex items-center gap-2\">\n <slot name=\"actions\">{{ props.actions }}</slot>\n </div>\n </div>\n <button\n v-if=\"hasDismiss()\"\n type=\"button\"\n aria-label=\"Dismiss notification\"\n :class=\"\n cn(\n DismissRestingClasses,\n 'group-hover/notif:opacity-100 group-focus-within/notif:opacity-100',\n DismissInteractionClasses,\n )\n \"\n @click=\"onDismissClick\"\n >\n <X class=\"h-3.5 w-3.5\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\">\nimport { inject, type InjectionKey } from 'vue';\n\nexport interface OnboardingContextValue {\n /** A live getter — read it, never destructure it. */\n readonly open: boolean;\n setOpen: (open: boolean) => void;\n}\n\n/**\n * The record a `OnboardingChecklistCardTask` hands the root on mount. `isDone` is a\n * live getter over the task's own prop, so the root's progress computeds track\n * it without the task re-registering on every toggle.\n */\nexport interface OnboardingTaskRecord {\n readonly isDone: boolean;\n}\n\nexport interface OnboardingRegistry {\n register: (task: OnboardingTaskRecord) => void;\n unregister: (task: OnboardingTaskRecord) => void;\n}\n\nexport const onboardingContextKey: InjectionKey<OnboardingContextValue> = Symbol('wow-two.onboardingChecklist');\n\n/**\n * Replaces React's `Children.toArray` + `isValidElement` child-walking, which\n * has no Vue counterpart: slots are functions, so the root cannot inspect its\n * children's props. Tasks register themselves instead.\n */\nexport const onboardingRegistryKey: InjectionKey<OnboardingRegistry> = Symbol('wow-two.onboardingChecklist.registry');\n\nexport interface OnboardingChecklistCardProps {\n /** The card heading. Rich content → the `title` slot. */\n readonly title?: string;\n readonly defaultOpen?: boolean;\n readonly canDismissOnComplete?: boolean;\n /** The delay in ms after 100% before unmounting. */\n readonly dismissDelay?: number;\n}\n\nexport function useOnboardingChecklist(): OnboardingContextValue {\n const context = inject(onboardingContextKey, null);\n if (!context) throw new Error('useOnboardingChecklist must be used inside <OnboardingChecklistCard>');\n return context;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, ref, shallowRef, useAttrs, useTemplateRef, watch } from 'vue';\nimport { ChevronDown } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\n\nconst ChevronDownIcon = ChevronDown;\n\n/**\n * Renders an onboarding card — title, progress meter, and the checklist rows in its default slot.\n * The default slot holds `OnboardingChecklistCardTask` components; progress is auto-derived from the\n * `isDone` prop each one registers with this root.\n */\ndefineOptions({ name: 'OnboardingChecklistCard', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<OnboardingChecklistCardProps>(), {\n title: 'Get started',\n defaultOpen: true,\n canDismissOnComplete: false,\n dismissDelay: 2000,\n});\n\nconst emit = defineEmits<{\n /** Fires when the card dismisses itself, `dismissDelay` ms after the reader completes the last task. */\n dismiss: [];\n}>();\n\ndefineSlots<{\n /** The `OnboardingChecklistCardTask` rows driving the progress meter. */\n default?(): unknown;\n /** The card heading. Falls back to the `title` prop. */\n title?(): unknown;\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst open = ref(props.defaultOpen);\nconst dismissed = ref(false);\n\nconst tasks = shallowRef<ReadonlyArray<OnboardingTaskRecord>>([]);\n\nprovide<OnboardingRegistry>(onboardingRegistryKey, {\n register: (task) => {\n if (!tasks.value.includes(task)) tasks.value = [...tasks.value, task];\n },\n unregister: (task) => {\n tasks.value = tasks.value.filter((existing) => existing !== task);\n },\n});\n\nprovide<OnboardingContextValue>(onboardingContextKey, {\n get open() {\n return open.value;\n },\n setOpen: (value: boolean) => {\n open.value = value;\n },\n});\n\nconst total = computed(() => tasks.value.length);\nconst done = computed(() => tasks.value.filter((task) => task.isDone).length);\nconst complete = computed(() => total.value > 0 && done.value === total.value);\n\nwatch(\n [complete, () => props.canDismissOnComplete, () => props.dismissDelay, dismissed],\n ([isComplete, canDismiss, delay, isDismissed], _previous, onCleanup) => {\n if (!canDismiss || !isComplete || isDismissed) return;\n const handle = window.setTimeout(() => {\n dismissed.value = true;\n emit('dismiss');\n }, delay);\n onCleanup(() => window.clearTimeout(handle));\n },\n { immediate: true, flush: 'post' },\n);\n\nconst classes = computed(() =>\n cn('overflow-hidden rounded-lg border border-border bg-card shadow-sm', attrs.class as string | undefined),\n);\n\nconst fillClasses = computed(() =>\n cn('h-full bg-primary transition-[width] duration-300', complete.value && 'bg-success'),\n);\n\nconst fillStyle = computed(() => ({\n width: total.value ? `${(done.value / total.value) * 100}%` : '0%',\n}));\n\nconst chevronClasses = computed(() => cn('text-muted-foreground transition-transform', open.value && 'rotate-180'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div v-if=\"!dismissed\" ref=\"el\" v-bind=\"rest\" :class=\"classes\">\n <button\n type=\"button\"\n :aria-expanded=\"open\"\n class=\"flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/40 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n @click=\"open = !open\"\n >\n <div class=\"flex-1\">\n <div class=\"text-sm font-medium text-foreground\">\n <slot name=\"title\">{{ props.title }}</slot>\n </div>\n <div class=\"mt-1 text-xs text-muted-foreground\">{{ done }} of {{ total }} tasks complete</div>\n <div class=\"mt-2 h-1.5 overflow-hidden rounded-full bg-border\">\n <div :class=\"fillClasses\" :style=\"fillStyle\" />\n </div>\n </div>\n <Icon :icon=\"ChevronDownIcon\" :size=\"16\" :class=\"chevronClasses\" />\n </button>\n <!--\n Tasks register on mount, so they must stay mounted for `total` / `done` to\n be correct while collapsed — `v-show`, not `v-if`, unlike React's `{open && …}`\n which could re-derive counts from the children array without rendering them.\n -->\n <ul v-show=\"open\" role=\"list\" class=\"border-t border-border\">\n <slot />\n </ul>\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface OnboardingChecklistCardTaskProps {\n /** The task label. Rich content → the `label` slot. Supply this or the slot. */\n readonly label?: string;\n /** The secondary line under the label. Rich content → the `description` slot. */\n readonly description?: string;\n readonly isDone?: boolean;\n /** The trailing call-to-action, hidden once done. Rich content → the `action` slot. */\n readonly action?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, inject, onMounted, onUnmounted, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { Check } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/styles';\nimport { Icon } from '../../../foundation/icons';\nimport { onboardingRegistryKey, type OnboardingTaskRecord } from './OnboardingChecklistCard.vue';\n\nconst CheckIcon = Check;\n\n/** Renders one checklist row and registers it with the enclosing `OnboardingChecklistCard` for progress. */\ndefineOptions({ name: 'OnboardingChecklistCardTask', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<OnboardingChecklistCardTaskProps>(), { isDone: false });\n\ndefineSlots<{\n /** The task label. Falls back to the `label` prop. */\n label?(): unknown;\n /** The helper line under the label. Falls back to the `description` prop. */\n description?(): unknown;\n /** The trailing control, hidden once the task is done. Falls back to the `action` prop. */\n action?(): unknown;\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLLIElement>('el');\n\n/**\n * `isDone` is exposed as a getter so the root's progress computeds re-evaluate\n * on toggle without this task re-registering.\n */\nconst record: OnboardingTaskRecord = {\n get isDone() {\n return props.isDone;\n },\n};\n\nconst registry = inject(onboardingRegistryKey, null);\nonMounted(() => registry?.register(record));\nonUnmounted(() => registry?.unregister(record));\n\nconst hasDescription = computed(() => Boolean(props.description) || Boolean(slots.description));\nconst hasAction = computed(() => Boolean(props.action) || Boolean(slots.action));\n\nconst classes = computed(() =>\n cn(\n 'flex items-start gap-3 px-4 py-3 transition-colors',\n props.isDone && 'opacity-60',\n attrs.class as string | undefined,\n ),\n);\n\nconst markerClasses = computed(() =>\n cn(\n 'mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border',\n props.isDone ? 'border-success bg-success text-success-foreground' : 'border-border',\n ),\n);\n\nconst labelClasses = computed(() => cn('text-sm font-medium text-foreground', props.isDone && 'line-through'));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <li ref=\"el\" :data-done=\"props.isDone || undefined\" v-bind=\"rest\" :class=\"classes\">\n <span aria-hidden=\"true\" :class=\"markerClasses\">\n <Icon v-if=\"props.isDone\" :icon=\"CheckIcon\" :size=\"12\" />\n </span>\n <div class=\"min-w-0 flex-1\">\n <div :class=\"labelClasses\">\n <slot name=\"label\">{{ props.label }}</slot>\n </div>\n <div v-if=\"hasDescription\" class=\"mt-0.5 text-xs text-muted-foreground\">\n <slot name=\"description\">{{ props.description }}</slot>\n </div>\n </div>\n <div v-if=\"hasAction && !props.isDone\" class=\"shrink-0\">\n <slot name=\"action\">{{ props.action }}</slot>\n </div>\n </li>\n</template>\n"],"names":["_createBlock","_resolveDynamicComponent","_mergeProps","_renderSlot","_openBlock","_createElementBlock","$slots","_unref","_Fragment","_renderList","_normalizeClass","Avatar","SizeClasses","_createVNode","Heading","_createTextVNode","_toDisplayString","Text","_hoisted_1","Icon","_hoisted_2","CodeText","_createElementVNode","ToneClass","PositionClass","Badge","KbdText","ToneClasses","InlineLayout","MarkText","$attrs","CollapsibleGroupContentInner","_hoisted_3","OrientationValue","Orientation","_hoisted_4","TreeViewerNodeRow","TreeViewerGroupContent","Table","TableHead","TableRow","TableHeaderCell","_normalizeStyle","TableBody","TableCell","next","CarouselDot","i","j","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_8","TemporalRuntime","PlaybackRates","formatTime","AudioWaveformPreview","TemporalValue","EventCalendarViewerViewValue","MonthView","TimeGridView","AgendaView","easeOutCubic","defaultFormat","Portal","CloseIcon","Card","_withDirectives"],"mappings":"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"}
|