@tryghost/activitypub 3.1.8 → 3.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/activitypub.js +1 -1
- package/dist/{at-sign-B8iQvS42.mjs → at-sign-Mjg-pZ6w.mjs} +2 -2
- package/dist/at-sign-Mjg-pZ6w.mjs.map +1 -0
- package/dist/{avatar-flipboard-DNwig8eO.mjs → avatar-flipboard-DrqqZst3.mjs} +2 -2
- package/dist/avatar-flipboard-DrqqZst3.mjs.map +1 -0
- package/dist/{bluesky-sharing-Cx4y2eb_.mjs → bluesky-sharing-Chejq-Bq.mjs} +7 -7
- package/dist/bluesky-sharing-Chejq-Bq.mjs.map +1 -0
- package/dist/{copy-Dg0Olymi.mjs → copy-Ba_lzzCd.mjs} +2 -2
- package/dist/copy-Ba_lzzCd.mjs.map +1 -0
- package/dist/{deleted-feed-item-C6ttBewp.mjs → deleted-feed-item-BfpxKMlB.mjs} +8 -8
- package/dist/deleted-feed-item-BfpxKMlB.mjs.map +1 -0
- package/dist/edit-profile-jtzZtWG8.mjs +3810 -0
- package/dist/edit-profile-jtzZtWG8.mjs.map +1 -0
- package/dist/{feed-OJkCDmvZ.mjs → feed-BkSec9BE.mjs} +12 -12
- package/dist/feed-BkSec9BE.mjs.map +1 -0
- package/dist/{hash-CaF6a8FN.mjs → hash-D8uyJrFB.mjs} +2 -2
- package/dist/hash-D8uyJrFB.mjs.map +1 -0
- package/dist/{inbox-DKED2HYQ.mjs → inbox-DZqNPQ3D.mjs} +2 -2
- package/dist/inbox-DZqNPQ3D.mjs.map +1 -0
- package/dist/{index-Cjktkl_Z.mjs → index-Bq0BHGkI.mjs} +24 -24
- package/dist/index-Bq0BHGkI.mjs.map +1 -0
- package/dist/{index-B3WQF6P6.mjs → index-CCW2g6Oi.mjs} +49 -49
- package/dist/index-CCW2g6Oi.mjs.map +1 -0
- package/dist/{index-BTDCxNUL.mjs → index-CQNBd3-F.mjs} +54 -54
- package/dist/index-CQNBd3-F.mjs.map +1 -0
- package/dist/{index-q4Ygdo0-.mjs → index-CSkOAA7W.mjs} +13533 -12736
- package/dist/index-CSkOAA7W.mjs.map +1 -0
- package/dist/{index-Cl_bAvCu.mjs → index-D8Ct0JF0.mjs} +19 -19
- package/dist/index-D8Ct0JF0.mjs.map +1 -0
- package/dist/{index-DUNT0yV6.mjs → index-DYjHwtl7.mjs} +7 -7
- package/dist/index-DYjHwtl7.mjs.map +1 -0
- package/dist/{index-CVvjItO-.mjs → index-nevBSPxu.mjs} +2 -2
- package/dist/index-nevBSPxu.mjs.map +1 -0
- package/dist/{index-Cty-No3l.mjs → index-psiB4m1D.mjs} +92 -92
- package/dist/index-psiB4m1D.mjs.map +1 -0
- package/dist/{moderation-nXSBmheF.mjs → moderation-DFdpfisa.mjs} +7 -7
- package/dist/moderation-DFdpfisa.mjs.map +1 -0
- package/dist/{note-uNSHIe4G.mjs → note-kWeM_V5e.mjs} +6 -6
- package/dist/note-kWeM_V5e.mjs.map +1 -0
- package/dist/{reply-BVkBkA2M.mjs → reply-1lPjfeAY.mjs} +2 -2
- package/dist/reply-1lPjfeAY.mjs.map +1 -0
- package/dist/separator-COhI8ngj.mjs +39 -0
- package/dist/separator-COhI8ngj.mjs.map +1 -0
- package/dist/{settings-CjuIDMTF.mjs → settings-CEx9EwpB.mjs} +3 -3
- package/dist/settings-CEx9EwpB.mjs.map +1 -0
- package/dist/{step-1-YV90JpzH.mjs → step-1-DoxN5zA3.mjs} +8 -8
- package/dist/{step-1-YV90JpzH.mjs.map → step-1-DoxN5zA3.mjs.map} +1 -1
- package/dist/{step-2-BO7QOUb7.mjs → step-2-BWvVMlaH.mjs} +13 -13
- package/dist/step-2-BWvVMlaH.mjs.map +1 -0
- package/dist/{step-3-qgcA50w6.mjs → step-3-Dnq4l5zZ.mjs} +14 -14
- package/dist/step-3-Dnq4l5zZ.mjs.map +1 -0
- package/dist/{tabs-DdupTuil.mjs → tabs-DTWhZwdk.mjs} +224 -226
- package/dist/tabs-DTWhZwdk.mjs.map +1 -0
- package/dist/{topic-filter-DqTL6EKu.mjs → topic-filter-4W4f_LiH.mjs} +4 -4
- package/dist/topic-filter-4W4f_LiH.mjs.map +1 -0
- package/package.json +11 -11
- package/dist/at-sign-B8iQvS42.mjs.map +0 -1
- package/dist/avatar-flipboard-DNwig8eO.mjs.map +0 -1
- package/dist/bluesky-sharing-Cx4y2eb_.mjs.map +0 -1
- package/dist/copy-Dg0Olymi.mjs.map +0 -1
- package/dist/deleted-feed-item-C6ttBewp.mjs.map +0 -1
- package/dist/edit-profile-D17SCzby.mjs +0 -3741
- package/dist/edit-profile-D17SCzby.mjs.map +0 -1
- package/dist/feed-OJkCDmvZ.mjs.map +0 -1
- package/dist/hash-CaF6a8FN.mjs.map +0 -1
- package/dist/inbox-DKED2HYQ.mjs.map +0 -1
- package/dist/index-B3WQF6P6.mjs.map +0 -1
- package/dist/index-BTDCxNUL.mjs.map +0 -1
- package/dist/index-CVvjItO-.mjs.map +0 -1
- package/dist/index-Cjktkl_Z.mjs.map +0 -1
- package/dist/index-Cl_bAvCu.mjs.map +0 -1
- package/dist/index-Cty-No3l.mjs.map +0 -1
- package/dist/index-DUNT0yV6.mjs.map +0 -1
- package/dist/index-q4Ygdo0-.mjs.map +0 -1
- package/dist/moderation-nXSBmheF.mjs.map +0 -1
- package/dist/note-uNSHIe4G.mjs.map +0 -1
- package/dist/reply-BVkBkA2M.mjs.map +0 -1
- package/dist/separator-BljDgTc9.mjs +0 -116
- package/dist/separator-BljDgTc9.mjs.map +0 -1
- package/dist/settings-CjuIDMTF.mjs.map +0 -1
- package/dist/step-2-BO7QOUb7.mjs.map +0 -1
- package/dist/step-3-qgcA50w6.mjs.map +0 -1
- package/dist/tabs-DdupTuil.mjs.map +0 -1
- package/dist/topic-filter-DqTL6EKu.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-DTWhZwdk.mjs","sources":["../../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@18.3.7_@types+react@18.3.28__@types+react@_6db026cd1527317527c6849c7bd26c2f/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-menu@2.1.16_@types+react-dom@18.3.7_@types+react@18.3.28__@types+react@_69d1a512f3b5663a6f762fe6479cdc77/node_modules/@radix-ui/react-menu/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-dropdown-menu@2.1.16_@types+react-dom@18.3.7_@types+react@18.3.28__@typ_d35e5dc40abab5fe5f4878bdec8fbaa2/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../../../node_modules/.pnpm/lucide-react@0.553.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/circle.js","../../shade/es/components/ui/dropdown-menu.js","../../shade/es/components/ui/tabs.js"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DROPDOWN_MENU_NAME\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: \"DropdownMenuSub\"\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]];\nconst Circle = createLucideIcon(\"circle\", __iconNode);\n\nexport { __iconNode, Circle as default };\n//# sourceMappingURL=circle.js.map\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { ChevronRight, Check, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/ds-utils.js\";\nimport \"moment-timezone\";\nimport \"validator/es/lib/isEmail\";\nimport { a as SHADE_APP_NAMESPACES } from \"../../shade-app-iTzriHs0.js\";\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nconst DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(\n DropdownMenuPrimitive.SubTrigger,\n {\n ref,\n className: cn(\n \"flex cursor-default gap-2 select-none hover:bg-accent items-center rounded-xs px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n ),\n ...props,\n children: [\n children,\n /* @__PURE__ */ jsx(ChevronRight, { className: \"ml-auto\" })\n ]\n }\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\nconst DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(\"div\", { className: SHADE_APP_NAMESPACES, children: /* @__PURE__ */ jsx(\n DropdownMenuPrimitive.SubContent,\n {\n ref,\n className: cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n ),\n ...props\n }\n) }));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\nconst DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(\"div\", { className: SHADE_APP_NAMESPACES, children: /* @__PURE__ */ jsx(\n DropdownMenuPrimitive.Content,\n {\n ref,\n className: cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n ),\n sideOffset,\n ...props\n }\n) }) }));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\nconst DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(\n DropdownMenuPrimitive.Item,\n {\n ref,\n className: cn(\n \"relative flex cursor-default select-none cursor-pointer items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n ),\n ...props\n }\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\nconst DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(\n DropdownMenuPrimitive.CheckboxItem,\n {\n ref,\n checked,\n className: cn(\n \"relative flex cursor-default select-none items-center rounded-xs py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n ),\n ...props,\n children: [\n /* @__PURE__ */ jsx(\"span\", { className: \"absolute left-2 flex size-3.5 items-center justify-center\", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: \"size-4\" }) }) }),\n children\n ]\n }\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\nconst DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(\n DropdownMenuPrimitive.RadioItem,\n {\n ref,\n className: cn(\n \"relative flex cursor-default select-none items-center rounded-xs py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n ),\n ...props,\n children: [\n /* @__PURE__ */ jsx(\"span\", { className: \"absolute left-2 flex size-3.5 items-center justify-center\", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: \"size-2 fill-current\" }) }) }),\n children\n ]\n }\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\nconst DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(\n DropdownMenuPrimitive.Label,\n {\n ref,\n className: cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n ),\n ...props\n }\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\nconst DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(\n DropdownMenuPrimitive.Separator,\n {\n ref,\n className: cn(\"-mx-1 my-1 h-px bg-muted\", className),\n ...props\n }\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}) => {\n return /* @__PURE__ */ jsx(\n \"span\",\n {\n className: cn(\"ml-auto text-xs tracking-wider opacity-60\", className),\n ...props\n }\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger\n};\n//# sourceMappingURL=dropdown-menu.js.map\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { DropdownMenuTrigger } from \"./dropdown-menu.js\";\nimport { cn } from \"../../lib/ds-utils.js\";\nimport \"moment-timezone\";\nimport \"validator/es/lib/isEmail\";\nimport { cva } from \"class-variance-authority\";\nimport * as LucideIcons from \"lucide-react\";\nimport { TrendingUp, TrendingDown } from \"lucide-react\";\nimport { Button } from \"./button.js\";\nconst TabsVariantContext = React.createContext(\"segmented\");\nconst tabsVariants = cva(\n \"\",\n {\n variants: {\n variant: {\n segmented: \"\",\n \"segmented-sm\": \"\",\n button: \"\",\n \"button-sm\": \"\",\n underline: \"\",\n navbar: \"\",\n pill: \"\",\n kpis: \"\"\n }\n },\n defaultVariants: {\n variant: \"segmented\"\n }\n }\n);\nconst Tabs = React.forwardRef(({ variant = \"segmented\", ...props }, ref) => /* @__PURE__ */ jsx(TabsVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, ...props }) }));\nTabs.displayName = TabsPrimitive.Root.displayName;\nconst tabsListVariants = cva(\n \"inline-flex items-center text-muted-foreground\",\n {\n variants: {\n variant: {\n segmented: \"h-(--control-height) rounded-lg bg-muted px-[3px]\",\n \"segmented-sm\": \"h-8 rounded-lg bg-muted px-[3px]\",\n button: \"gap-2\",\n \"button-sm\": \"gap-1\",\n underline: \"w-full gap-5 border-b border-border-default\",\n navbar: \"h-[52px] items-end gap-6\",\n pill: \"-ml-0.5 h-[30px] gap-px\",\n kpis: \"border-b ring-0\"\n }\n },\n defaultVariants: {\n variant: \"segmented\"\n }\n }\n);\nconst TabsList = React.forwardRef(({ className, ...props }, ref) => {\n const variant = React.useContext(TabsVariantContext);\n return /* @__PURE__ */ jsx(\n TabsPrimitive.List,\n {\n ref,\n className: cn(tabsListVariants({ variant, className })),\n ...props\n }\n );\n});\nTabsList.displayName = TabsPrimitive.List.displayName;\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center px-3 py-1 whitespace-nowrap ring-offset-background transition-all focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n segmented: \"h-7 rounded-md text-sm font-medium data-[state=active]:shadow-md\",\n \"segmented-sm\": \"h-[26px] rounded-md text-xs font-medium data-[state=active]:shadow-md\",\n button: \"h-(--control-height) gap-1.5 rounded-md py-2 text-sm font-normal hover:bg-muted data-[state=active]:bg-muted-foreground/10 data-[state=active]:font-medium\",\n \"button-sm\": \"h-6 gap-1.5 rounded-md p-2 text-xs font-normal text-text-secondary hover:bg-muted data-[state=active]:bg-muted-foreground/10 data-[state=active]:font-medium data-[state=active]:text-foreground\",\n underline: 'relative h-9 px-0 text-md font-semibold text-text-secondary after:absolute after:inset-x-0 after:-bottom-px after:h-0.5 after:bg-foreground after:opacity-0 after:content-[\"\"] hover:after:opacity-10 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:after:opacity-100!',\n navbar: 'relative h-[52px] px-px text-md font-semibold text-muted-foreground after:absolute after:inset-x-0 after:-bottom-px after:h-0.5 after:bg-foreground after:opacity-0 after:content-[\"\"] hover:text-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:after:opacity-100!',\n pill: \"relative h-[30px] rounded-md px-3 text-md font-medium text-text-secondary hover:text-foreground data-[state=active]:bg-muted-foreground/10 data-[state=active]:font-semibold data-[state=active]:text-foreground\",\n kpis: 'relative h-full! items-start! rounded-none border-border bg-transparent px-6 py-5 text-foreground ring-0 transition-all after:absolute after:inset-x-0 after:-bottom-px after:h-0.5 after:bg-foreground after:opacity-0 after:content-[\"\"] first:rounded-tl-md last:rounded-tr-md hover:bg-accent/50 data-[state=active]:bg-transparent data-[state=active]:after:opacity-100 [&:not(:last-child)]:border-r [&[data-state=active]_[data-type=\"value\"]]:text-foreground'\n }\n },\n defaultVariants: {\n variant: \"segmented\"\n }\n }\n);\nconst TabsTrigger = React.forwardRef(({ className, ...props }, ref) => {\n const variant = React.useContext(TabsVariantContext);\n return /* @__PURE__ */ jsx(\n TabsPrimitive.Trigger,\n {\n ref,\n className: cn(tabsTriggerVariants({ variant, className })),\n ...props\n }\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\nconst TabsTriggerCount = ({ className = \"\", children }) => {\n return /* @__PURE__ */ jsx(\"span\", { className: `mt-px ml-1.5 flex h-5 items-center justify-center rounded-full bg-surface-elevated px-1.5 py-0 text-xs leading-[21px] font-semibold text-text-secondary ${className}`, children });\n};\nTabsTriggerCount.displayName = \"TabsTriggerCount\";\nconst tabsContentVariants = cva(\n \"ring-offset-background focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:outline-hidden\",\n {\n variants: {\n variant: {\n segmented: \"\",\n \"segmented-sm\": \"\",\n button: \"\",\n \"button-sm\": \"\",\n underline: \"\",\n navbar: \"\",\n pill: \"\",\n kpis: \"ring-0\"\n }\n },\n defaultVariants: {\n variant: \"segmented\"\n }\n }\n);\nconst TabsContent = React.forwardRef(({ className, ...props }, ref) => {\n const variant = React.useContext(TabsVariantContext);\n return /* @__PURE__ */ jsx(\n TabsPrimitive.Content,\n {\n ref,\n className: cn(tabsContentVariants({ variant, className })),\n ...props\n }\n );\n});\nTabsContent.displayName = TabsPrimitive.Content.displayName;\nconst KpiTabTrigger = ({ children, ...props }) => {\n return /* @__PURE__ */ jsx(TabsTrigger, { className: \"h-auto\", ...props, children });\n};\nconst KpiTabValue = ({\n color,\n icon: iconName,\n label,\n value,\n diffDirection,\n diffValue,\n className,\n \"data-testid\": testId\n}) => {\n const IconComponent = iconName ? LucideIcons[iconName] : null;\n const diffContainerClassName = cn(\n \"flex items-center gap-1 text-xs h-[22px] px-1.5 rounded-xs group/diff cursor-default mt-0.5\",\n diffDirection === \"up\" && \"text-state-success bg-state-success/10\",\n diffDirection === \"down\" && \"text-state-danger bg-state-danger/10\",\n diffDirection === \"same\" && \"text-text-secondary bg-muted\"\n );\n return /* @__PURE__ */ jsxs(\"div\", { className: cn(\"group flex w-full flex-col items-start gap-2\", className), children: [\n /* @__PURE__ */ jsxs(\"div\", { className: \"flex h-[22px] items-center gap-1.5 text-base font-medium text-muted-foreground transition-all group-hover:text-foreground\", \"data-type\": \"value\", children: [\n color && /* @__PURE__ */ jsx(\"div\", { className: \"ml-1 size-2 rounded-full opacity-50\", style: { backgroundColor: color } }),\n IconComponent && /* @__PURE__ */ jsx(IconComponent, { size: 16, strokeWidth: 1.5 }),\n label\n ] }),\n /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col items-start gap-2 lg:flex-row xl:gap-3\", children: [\n /* @__PURE__ */ jsx(\"div\", { className: \"text-[2.3rem] leading-none font-semibold tracking-tighter xl:text-[2.6rem]\", \"data-testid\": testId, children: value }),\n diffDirection && diffDirection !== \"hidden\" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(\"div\", { className: diffContainerClassName, \"data-testid\": testId ? `${testId}-diff` : void 0, children: [\n /* @__PURE__ */ jsx(\"span\", { className: \"leading-none font-medium\", children: diffValue }),\n diffDirection === \"up\" && /* @__PURE__ */ jsx(TrendingUp, { className: \"size-3!\", size: 14, strokeWidth: 2 }),\n diffDirection === \"down\" && /* @__PURE__ */ jsx(TrendingDown, { className: \"size-3!\", size: 14, strokeWidth: 2 })\n ] }) })\n ] })\n ] });\n};\nconst KpiDropdownButton = React.forwardRef(\n ({ variant = \"dropdown\", className, ...props }, ref) => {\n return /* @__PURE__ */ jsx(\n Button,\n {\n ref,\n className: cn(\n \"h-auto w-full rounded-none border-x-0 border-t-0 focus-visible:ring-0 bg-transparent py-5\",\n className\n ),\n variant,\n ...props\n }\n );\n }\n);\nKpiDropdownButton.displayName = \"KpiDropdownButton\";\nconst TabsDropdownTrigger = React.forwardRef(({\n children,\n className,\n ...props\n}, ref) => {\n const variant = React.useContext(TabsVariantContext);\n return /* @__PURE__ */ jsxs(\"div\", { className: \"relative rounded-md hover:bg-muted\", children: [\n /* @__PURE__ */ jsx(\n TabsPrimitive.Trigger,\n {\n ref,\n className: cn(tabsTriggerVariants({ variant, className })),\n ...props,\n children: /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center gap-2\", children })\n }\n ),\n /* @__PURE__ */ jsx(\n DropdownMenuTrigger,\n {\n className: \"absolute inset-0 size-full cursor-pointer\",\n onClick: (e) => {\n e.preventDefault();\n }\n }\n )\n ] });\n});\nTabsDropdownTrigger.displayName = \"TabsDropdownTrigger\";\nexport {\n KpiDropdownButton,\n KpiTabTrigger,\n KpiTabValue,\n Tabs,\n TabsContent,\n TabsDropdownTrigger,\n TabsList,\n TabsTrigger,\n TabsTriggerCount,\n tabsVariants\n};\n//# sourceMappingURL=tabs.js.map\n"],"names":["TABS_NAME","createTabsContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React.forwardRef","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","React.useRef","React.useEffect","rAF","Presence","present","baseId","Root2","List","Trigger","Content","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","Collection","useCollection","createCollectionScope","createCollection","createMenuContext","createMenuScope","createPopperScope","usePopperScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","ANCHOR_NAME","MenuAnchor","__scopeMenu","anchorProps","popperScope","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","MenuPortal","container","PortalPrimitive","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","rootContext","MenuRootContentModal","MenuRootContentNonModal","ref","composedRefs","useComposedRefs","content","hideOthers","MenuContentImpl","Slot","createSlot","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEntryFocus","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","disableOutsideScroll","getItems","currentItemId","setCurrentItemId","React.useState","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","React.Fragment","scrollLockWrapperProps","handleTypeaheadSearch","key","search","items","item","currentItem","currentMatch","_a","values","nextMatch","getNextMatch","newItem","_b","updateSearch","useFocusGuards","isPointerMovingToSubmenu","React.useCallback","isPointerInGraceArea","intent","FocusScope","DismissableLayer","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","candidateNodes","focusFirst","whenMouse","target","pointerXHasChanged","newDir","GROUP_NAME","MenuGroup","groupProps","LABEL_NAME","MenuLabel","labelProps","ITEM_NAME","ITEM_SELECT","MenuItem","onSelect","itemProps","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","dispatchDiscreteCustomEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","handleValueChange","useCallbackRef","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","ARROW_NAME","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","scope","clearOpenTimer","pointerGraceTimer","composeRefs","contentRect","side","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","open","candidates","PREVIOUSLY_FOCUSED_ELEMENT","candidate","wrapArray","array","startIndex","_","index","normalizedSearch","char","currentMatchIndex","wrappedValues","isPointInPolygon","point","polygon","x","y","inside","i","j","ii","jj","xi","yi","xj","yj","area","cursorPos","handler","Anchor2","Portal","Content2","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenuTrigger","__scopeDropdownMenu","menuScope","MenuPrimitive.Anchor","DropdownMenuPortal","portalProps","MenuPrimitive.Portal","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Portal2","Label2","CheckboxItem2","RadioItem2","ItemIndicator2","Separator2","SubTrigger2","SubContent2","__iconNode","Circle","createLucideIcon","DropdownMenuPrimitive.Trigger","className","inset","jsxs","DropdownMenuPrimitive.SubTrigger","cn","ChevronRight","SHADE_APP_NAMESPACES","DropdownMenuPrimitive.SubContent","sideOffset","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","Check","DropdownMenuPrimitive.RadioItem","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","TabsVariantContext","React.createContext","variant","TabsPrimitive.Root","tabsListVariants","cva","React.useContext","TabsPrimitive.List","tabsTriggerVariants","TabsPrimitive.Trigger","TabsTriggerCount","tabsContentVariants","TabsPrimitive.Content","KpiDropdownButton","Button","TabsDropdownTrigger","e"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as v, c as r, b as T, e as g, j as l, B as j } from "./index-
|
|
1
|
+
import { l as v, c as r, b as T, e as g, j as l, B as j } from "./index-CSkOAA7W.mjs";
|
|
2
2
|
const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
|
|
3
3
|
const { topicsQuery: i } = v(), { data: t } = i, d = { slug: "following", name: "Following" }, f = (t == null ? void 0 : t.topics) || [], u = [d, ...f].filter(({ slug: e }) => !c.includes(e)), s = r(null), p = r(null), [m, h] = T(!0), w = (e) => {
|
|
4
4
|
const { scrollLeft: n, scrollWidth: x, clientWidth: b } = e.currentTarget;
|
|
@@ -15,7 +15,7 @@ const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
|
|
|
15
15
|
"div",
|
|
16
16
|
{
|
|
17
17
|
ref: p,
|
|
18
|
-
className: "flex w-full
|
|
18
|
+
className: "flex w-full max-w-full min-w-0 snap-x snap-mandatory gap-2 overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
19
19
|
onScroll: w,
|
|
20
20
|
children: u.map(({ slug: e, name: n }) => /* @__PURE__ */ l.jsx(
|
|
21
21
|
j,
|
|
@@ -30,10 +30,10 @@ const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
|
|
|
30
30
|
))
|
|
31
31
|
}
|
|
32
32
|
),
|
|
33
|
-
m && /* @__PURE__ */ l.jsx("div", { className: "pointer-events-none absolute
|
|
33
|
+
m && /* @__PURE__ */ l.jsx("div", { className: "pointer-events-none absolute top-0 right-0 h-full w-12 bg-gradient-to-l from-white to-transparent dark:from-black" })
|
|
34
34
|
] });
|
|
35
35
|
};
|
|
36
36
|
export {
|
|
37
37
|
N as T
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=topic-filter-
|
|
39
|
+
//# sourceMappingURL=topic-filter-4W4f_LiH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topic-filter-4W4f_LiH.mjs","sources":["../src/components/topic-filter.tsx"],"sourcesContent":["import React, {useEffect, useRef, useState} from 'react';\nimport {Button} from '@tryghost/shade/components';\nimport {useTopicsForUser} from '@src/hooks/use-activity-pub-queries';\n\nexport type Topic = string;\n\ninterface TopicFilterProps {\n currentTopic: Topic;\n onTopicChange: (topic: Topic) => void;\n excludeTopics?: Topic[];\n}\n\nconst TopicFilter: React.FC<TopicFilterProps> = ({currentTopic, onTopicChange, excludeTopics = []}) => {\n const {topicsQuery} = useTopicsForUser();\n const {data: topicsData} = topicsQuery;\n\n // Always include \"Following\" topic at the beginning, then merge with API topics\n const followingTopic = {slug: 'following', name: 'Following'};\n const apiTopics = topicsData?.topics || [];\n const allTopics = [followingTopic, ...apiTopics];\n\n const filteredTopics = allTopics.filter(({slug}) => !excludeTopics.includes(slug));\n const selectedButtonRef = useRef<HTMLButtonElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [showGradient, setShowGradient] = useState(true);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n const {scrollLeft, scrollWidth, clientWidth} = e.currentTarget;\n setShowGradient(scrollLeft + clientWidth < scrollWidth - 1);\n };\n\n useEffect(() => {\n if (selectedButtonRef.current) {\n selectedButtonRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n }\n }, [currentTopic]);\n\n return (\n <div className=\"relative w-full\">\n <div\n ref={scrollContainerRef}\n className=\"flex w-full max-w-full min-w-0 snap-x snap-mandatory gap-2 overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n >\n {filteredTopics.map(({slug, name}) => (\n <Button\n key={slug}\n ref={currentTopic === slug ? selectedButtonRef : null}\n className=\"h-8 snap-start rounded-full px-3.5 text-sm\"\n variant={currentTopic === slug ? 'default' : 'secondary'}\n onClick={() => onTopicChange(slug)}\n >\n {name}\n </Button>\n ))}\n </div>\n {showGradient && (\n <div className=\"pointer-events-none absolute top-0 right-0 h-full w-12 bg-gradient-to-l from-white to-transparent dark:from-black\" />\n )}\n </div>\n );\n};\n\nexport default TopicFilter;\n"],"names":["TopicFilter","currentTopic","onTopicChange","excludeTopics","topicsQuery","useTopicsForUser","topicsData","followingTopic","apiTopics","filteredTopics","slug","selectedButtonRef","useRef","scrollContainerRef","showGradient","setShowGradient","useState","handleScroll","scrollLeft","scrollWidth","clientWidth","useEffect","jsxs","jsx","name","Button"],"mappings":";AAYA,MAAMA,IAA0C,CAAC,EAAC,cAAAC,GAAc,eAAAC,GAAe,eAAAC,IAAgB,CAAA,QAAQ;AACnG,QAAM,EAAC,aAAAC,EAAA,IAAeC,EAAA,GAChB,EAAC,MAAMC,EAAA,IAAcF,GAGrBG,IAAiB,EAAC,MAAM,aAAa,MAAM,YAAA,GAC3CC,KAAYF,KAAA,gBAAAA,EAAY,WAAU,CAAA,GAGlCG,IAFY,CAACF,GAAgB,GAAGC,CAAS,EAEd,OAAO,CAAC,EAAC,MAAAE,EAAA,MAAU,CAACP,EAAc,SAASO,CAAI,CAAC,GAC3EC,IAAoBC,EAA0B,IAAI,GAClDC,IAAqBD,EAAuB,IAAI,GAChD,CAACE,GAAcC,CAAe,IAAIC,EAAS,EAAI,GAE/CC,IAAe,CAAC,MAAqC;AACvD,UAAM,EAAC,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAe,EAAE;AACjD,IAAAL,EAAgBG,IAAaE,IAAcD,IAAc,CAAC;AAAA,EAC9D;AAEA,SAAAE,EAAU,MAAM;AACZ,IAAIV,EAAkB,WAClBA,EAAkB,QAAQ,eAAe;AAAA,MACrC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACX;AAAA,EAET,GAAG,CAACV,CAAY,CAAC,GAGbqB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,mBACX,UAAA;AAAA,IAAAC,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAKV;AAAA,QACL,WAAU;AAAA,QACV,UAAUI;AAAA,QAET,YAAe,IAAI,CAAC,EAAC,MAAAP,GAAM,MAAAc,QACxBD,gBAAAA,EAAAA;AAAAA,UAACE;AAAA,UAAA;AAAA,YAEG,KAAKxB,MAAiBS,IAAOC,IAAoB;AAAA,YACjD,WAAU;AAAA,YACV,SAASV,MAAiBS,IAAO,YAAY;AAAA,YAC7C,SAAS,MAAMR,EAAcQ,CAAI;AAAA,YAEhC,UAAAc;AAAA,UAAA;AAAA,UANId;AAAA,QAAA,CAQZ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEJI,KACGS,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oHAAA,CAAoH;AAAA,EAAA,GAE3I;AAER;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryghost/activitypub",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.11",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,25 +19,25 @@
|
|
|
19
19
|
"dev": "vite build --watch",
|
|
20
20
|
"dev:start": "vite",
|
|
21
21
|
"build": "tsc && vite build",
|
|
22
|
-
"lint": "
|
|
22
|
+
"lint": "pnpm run lint:code && pnpm run lint:test",
|
|
23
23
|
"lint:code": "eslint --ext .js,.ts,.cjs,.tsx --cache src",
|
|
24
24
|
"lint:test": "eslint -c test/.eslintrc.cjs --ext .js,.ts,.cjs,.tsx --cache test",
|
|
25
25
|
"test:unit": "tsc --noEmit && vitest run",
|
|
26
26
|
"test:acceptance": "NODE_OPTIONS='--experimental-specifier-resolution=node --no-warnings' VITE_TEST=true playwright test",
|
|
27
|
-
"test:acceptance:slowmo": "TIMEOUT=100000 PLAYWRIGHT_SLOWMO=100
|
|
28
|
-
"test:acceptance:full": "ALL_BROWSERS=1
|
|
27
|
+
"test:acceptance:slowmo": "TIMEOUT=100000 PLAYWRIGHT_SLOWMO=100 pnpm test:acceptance --headed",
|
|
28
|
+
"test:acceptance:full": "ALL_BROWSERS=1 pnpm test:acceptance",
|
|
29
29
|
"preview": "vite preview"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@playwright/test": "1.
|
|
32
|
+
"@playwright/test": "1.59.1",
|
|
33
33
|
"@testing-library/react": "14.3.1",
|
|
34
34
|
"@types/dompurify": "3.2.0",
|
|
35
35
|
"@types/jest": "29.5.14",
|
|
36
|
-
"@types/react": "18.3.
|
|
36
|
+
"@types/react": "18.3.28",
|
|
37
37
|
"@types/react-dom": "18.3.7",
|
|
38
38
|
"jest": "29.7.0",
|
|
39
|
-
"ts-jest": "29.4.
|
|
40
|
-
"vite": "5.4.
|
|
39
|
+
"ts-jest": "29.4.9",
|
|
40
|
+
"vite": "5.4.21",
|
|
41
41
|
"vitest": "1.6.1"
|
|
42
42
|
},
|
|
43
43
|
"nx": {
|
|
@@ -68,13 +68,13 @@
|
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@radix-ui/react-form": "0.1.8",
|
|
71
|
-
"@tryghost/admin-x-framework": "
|
|
72
|
-
"@tryghost/shade": "
|
|
71
|
+
"@tryghost/admin-x-framework": "workspace:*",
|
|
72
|
+
"@tryghost/shade": "workspace:*",
|
|
73
73
|
"clsx": "2.1.1",
|
|
74
74
|
"dompurify": "3.3.1",
|
|
75
75
|
"html2canvas-objectfit-fix": "1.2.0",
|
|
76
76
|
"react": "18.3.1",
|
|
77
77
|
"react-dom": "18.3.1",
|
|
78
|
-
"use-debounce": "10.
|
|
78
|
+
"use-debounce": "10.1.1"
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"at-sign-B8iQvS42.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/at-sign.js"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\", key: \"7n84p3\" }]\n];\nconst AtSign = createLucideIcon(\"at-sign\", __iconNode);\n\nexport { __iconNode, AtSign as default };\n//# sourceMappingURL=at-sign.js.map\n"],"names":["__iconNode","AtSign","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,4CAA4C,KAAK,SAAQ,CAAE;AAC3E,GACMC,IAASC,EAAiB,WAAWF,CAAU;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-flipboard-DNwig8eO.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/repeat.js","../src/components/layout/onboarding/components/header.tsx","../src/assets/images/onboarding/avatar-flipboard.png"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m17 2 4 4-4 4\", key: \"nntrym\" }],\n [\"path\", { d: \"M3 11v-1a4 4 0 0 1 4-4h14\", key: \"84bu3i\" }],\n [\"path\", { d: \"m7 22-4-4 4-4\", key: \"1wqhfi\" }],\n [\"path\", { d: \"M21 13v1a4 4 0 0 1-4 4H3\", key: \"1rx37r\" }]\n];\nconst Repeat = createLucideIcon(\"repeat\", __iconNode);\n\nexport { __iconNode, Repeat as default };\n//# sourceMappingURL=repeat.js.map\n","import React, {ReactNode} from 'react';\n\nconst Header:React.FC<{children?: ReactNode}> = ({children}) => {\n return (\n <div className='flex w-full justify-between'>\n {children}\n </div>\n );\n};\n\nexport default Header;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHgSURBVHgB7dxBTgIxGMXx13E0BEVWSDiBXoANXoCb6HF0p2fiGkQTNkoCimGYsR2JO33ptxim4f02xkQS/CtN+tHi1jfXFeRPGeRfCkQoEKFAhAIRCkQoEKFAhAIRCkQoEKFARA6LzHddLlFtNoBzaLWqgut0gH4fKEvEsgXycfK7e2TjMVAUaLU8RzmboXh+Ano9xDIFCv85IU4+nSIF4U9YPj4gMwSyrUHhVbXbIhnF1j9l21KgRZpQIEKBCAUiFIhQIEKBCAUiFIhQIOI4Ajn7r2nbzR+CH1uUi4XfA+6iHobMoVqt6q8W6QTyc6fP2wmq+Tx6BuW6XbjRKD4uUgrkucEAzs93TEM6Q5xAizShQIQCEQpEKBChQIQCEQpEKBChQIQCEc0HMhwg+JU1/3Qb36yGkcXHZIJseBX1uHpc8bZs/DRJ87t5P9fB6wtwdopoBzhqc7hxR9vPFe1pkSYUiFAgQoEIBSIUiFAgQoEIBSIUiLAFCjftTwx7Ka9+Z7RM56q+aS8W7j7Ux/vDN0XEgfKw/1qvgYtzpMKZPnmhvszyjmrzFb/p9D/vhsP23/HYs+3mw9CrdwkXf/XhRyJxAi3ShAIRCkQoEKFAhAIRCkQoEKFAhAIRCkQoEPENOBxXkSLnWXkAAAAASUVORK5CYII=\""],"names":["__iconNode","Repeat","createLucideIcon","Header","children","jsx","flipboardAvatar"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAAA,EAC9C,CAAC,QAAQ,EAAE,GAAG,6BAA6B,KAAK,SAAQ,CAAE;AAAA,EAC1D,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAAA,EAC9C,CAAC,QAAQ,EAAE,GAAG,4BAA4B,KAAK,SAAQ,CAAE;AAC3D,GACMC,IAASC,EAAiB,UAAUF,CAAU,GCb9CG,IAA0C,CAAC,EAAC,UAAAC,QAE1CC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,+BACV,UAAAD,EAAA,CACL,GCNRE,IAAe;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bluesky-sharing-Cx4y2eb_.mjs","sources":["../src/views/preferences/components/bluesky-sharing.tsx"],"sourcesContent":["import APAvatar from '@src/components/global/ap-avatar';\nimport EditProfile from '@src/views/preferences/components/edit-profile';\nimport Layout from '@src/components/layout';\nimport React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n Button,\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n H2,\n H3,\n LoadingIndicator,\n LucideIcon,\n buttonVariants} from '@tryghost/shade';\nimport {toast} from 'sonner';\nimport {useAccountForUser, useConfirmBlueskyHandleMutationForUser, useDisableBlueskyMutationForUser, useEnableBlueskyMutationForUser} from '@hooks/use-activity-pub-queries';\n\nconst CONFIRMATION_INTERVAL = 5000;\nconst MAX_CONFIRMATION_RETRIES = 12;\n\nconst BlueskySharing: React.FC = () => {\n const {data: account, isLoading: isLoadingAccount} = useAccountForUser('index', 'me');\n const [loading, setLoading] = useState(() => account?.blueskyEnabled && !account?.blueskyHandleConfirmed);\n const [copied, setCopied] = useState(false);\n const [isEditingProfile, setIsEditingProfile] = useState(false);\n const [showConfirm, setShowConfirm] = useState(false);\n const [handleConfirmed, setHandleConfirmed] = useState(false);\n const retryCountRef = useRef(0);\n const enableBlueskyMutation = useEnableBlueskyMutationForUser('index');\n const disableBlueskyMutation = useDisableBlueskyMutationForUser('index');\n const confirmBlueskyHandleMutation = useConfirmBlueskyHandleMutationForUser('index');\n\n const handleCopy = async () => {\n setCopied(true);\n await navigator.clipboard.writeText(account?.blueskyHandle || '');\n setTimeout(() => setCopied(false), 2000);\n };\n\n const handleEnable = async () => {\n if (!account?.avatarUrl) {\n setIsEditingProfile(true);\n } else {\n setLoading(true);\n try {\n await enableBlueskyMutation.mutateAsync();\n } catch {\n setLoading(false);\n toast.error('Something went wrong, please try again.');\n }\n }\n };\n\n const handleDisable = async () => {\n setLoading(true);\n try {\n await disableBlueskyMutation.mutateAsync();\n setShowConfirm(false);\n toast.success('Bluesky sharing disabled');\n } finally {\n setLoading(false);\n }\n };\n\n const confirmHandle = useCallback(() => {\n confirmBlueskyHandleMutation.mutateAsync().then((handle) => {\n if (handle) {\n setHandleConfirmed(true);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []); // Empty deps - mutations are stable in practice\n\n useEffect(() => {\n if (!account?.blueskyEnabled) {\n setHandleConfirmed(false);\n setLoading(false);\n retryCountRef.current = 0;\n\n return;\n }\n\n if (account?.blueskyHandleConfirmed) {\n setHandleConfirmed(true);\n setLoading(false);\n\n // Only show toast on first confirmation\n if (retryCountRef.current > 0) {\n toast.success('Bluesky sharing enabled');\n }\n retryCountRef.current = 0;\n\n return;\n }\n\n setHandleConfirmed(false);\n setLoading(true);\n retryCountRef.current = 0;\n\n const confirmHandleInterval = setInterval(async () => {\n retryCountRef.current += 1;\n\n if (retryCountRef.current > MAX_CONFIRMATION_RETRIES) {\n clearInterval(confirmHandleInterval);\n\n toast.error('Something went wrong, please try again.');\n\n await disableBlueskyMutation.mutateAsync();\n setLoading(false);\n\n return;\n }\n\n confirmHandle();\n }, CONFIRMATION_INTERVAL);\n\n return () => clearInterval(confirmHandleInterval);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [account?.blueskyEnabled, account?.blueskyHandleConfirmed, confirmHandle]); // disableBlueskyMutation is stable\n\n if (isLoadingAccount) {\n return (\n <Layout>\n <div className='mx-auto max-w-[620px] py-[min(4vh,48px)]'>\n <div className='flex items-center justify-between gap-8'>\n <H2>Bluesky sharing</H2>\n </div>\n <div className='mt-6 flex justify-center'>\n <LoadingIndicator size='md' />\n </div>\n </div>\n </Layout>\n );\n }\n\n const showAsEnabled = account?.blueskyEnabled && account?.blueskyHandleConfirmed;\n\n return (\n <Layout>\n <div className='mx-auto max-w-[620px] py-[min(4vh,48px)]'>\n <div className='flex items-center justify-between gap-8'>\n <H2>Bluesky sharing</H2>\n {showAsEnabled && <Button className='hover:bg-red/5! group w-24 translate-y-1 px-2 hover:text-red' size='default' variant='outline' onClick={() => setShowConfirm(true)}>\n <span className='size-2 rounded-full bg-green group-hover:hidden'></span>\n <span className='group-hover:hidden'>Enabled</span>\n <span className='group-hover:visible! group-hover:inline! hidden'>Disable</span>\n </Button>}\n </div>\n {!showAsEnabled ?\n <div className='mt-3 flex flex-col gap-5'>\n <p className='text-base'>{!account?.avatarUrl ?\n 'Add a profile image to connect to Bluesky. Profile pictures help prevent spam.' :\n <>Connect your account to <a className=\"text-purple hover:text-purple-600\" href=\"https://fed.brid.gy\" rel=\"noreferrer\" target=\"_blank\">Bridgy Fed</a> to share content directly to a dedicated Bluesky profile and increase your reach across the social web.</>\n }</p>\n <p className='-mt-2 text-base'>You can't change your Bluesky username, so make sure you're happy with your current social web handle before connecting.</p>\n {!account?.avatarUrl ? (\n <Dialog open={isEditingProfile} onOpenChange={setIsEditingProfile}>\n <DialogTrigger>\n <Button className='h-10 w-full text-base' variant='secondary'>Edit profile</Button>\n </DialogTrigger>\n <DialogContent className='w-full max-w-[520px]' onOpenAutoFocus={e => e.preventDefault()}>\n <DialogHeader>\n <DialogTitle>Profile settings</DialogTitle>\n </DialogHeader>\n {account && <EditProfile account={account} setIsEditingProfile={setIsEditingProfile} />}\n </DialogContent>\n </Dialog>\n ) : (\n <>\n <Button className='h-10 text-base' disabled={loading} variant='secondary' onClick={handleEnable}>\n {!loading ?\n <><svg height=\"32\" role=\"img\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 10.8c-1.087 -2.114 -4.046 -6.053 -6.798 -7.995C2.566 0.944 1.561 1.266 0.902 1.565 0.139 1.908 0 3.08 0 3.768c0 0.69 0.378 5.65 0.624 6.479 0.815 2.736 3.713 3.66 6.383 3.364 0.136 -0.02 0.275 -0.039 0.415 -0.056 -0.138 0.022 -0.276 0.04 -0.415 0.056 -3.912 0.58 -7.387 2.005 -2.83 7.078 5.013 5.19 6.87 -1.113 7.823 -4.308 0.953 3.195 2.05 9.271 7.733 4.308 4.267 -4.308 1.172 -6.498 -2.74 -7.078a8.741 8.741 0 0 1 -0.415 -0.056c0.14 0.017 0.279 0.036 0.415 0.056 2.67 0.297 5.568 -0.628 6.383 -3.364 0.246 -0.828 0.624 -5.79 0.624 -6.478 0 -0.69 -0.139 -1.861 -0.902 -2.206 -0.659 -0.298 -1.664 -0.62 -4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z\" fill=\"#0385FF\" strokeWidth=\"1\"></path></svg>\n Enable Bluesky sharing</> :\n <div className='flex items-center gap-2'>\n <LoadingIndicator size='sm' />\n <span>Enabling Bluesky sharing...</span>\n </div>\n }\n </Button>\n {loading && (\n <p className='-mt-2 text-center text-sm text-gray-700 dark:text-gray-600'>You can leave this page and come back to check the status.</p>\n )}\n </>\n )}\n </div> :\n <>\n <p className='mt-2 pr-32 text-base'>Your social web profile is now connected to Bluesky, via <a className=\"text-purple hover:text-purple-600\" href=\"https://fed.brid.gy\" rel=\"noreferrer\" target=\"_blank\">Bridgy Fed</a>. Posts are automatically synced after a short delay to complete activation.</p>\n {handleConfirmed && (\n <div className='mt-6 flex flex-col items-center gap-4 rounded-lg border border-gray-200 p-8 dark:border-gray-950'>\n <div className='relative'>\n <APAvatar\n author={\n {\n icon: {\n url: account?.avatarUrl || ''\n },\n name: account?.name || '',\n handle: account?.handle || ''\n }\n }\n size='md'\n />\n <div className='absolute bottom-0 right-0 z-10 flex size-6 items-center justify-center rounded-full bg-white shadow-xs'>\n <svg height=\"14\" role=\"img\" viewBox=\"0 0 24 24\" width=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 10.8c-1.087 -2.114 -4.046 -6.053 -6.798 -7.995C2.566 0.944 1.561 1.266 0.902 1.565 0.139 1.908 0 3.08 0 3.768c0 0.69 0.378 5.65 0.624 6.479 0.815 2.736 3.713 3.66 6.383 3.364 0.136 -0.02 0.275 -0.039 0.415 -0.056 -0.138 0.022 -0.276 0.04 -0.415 0.056 -3.912 0.58 -7.387 2.005 -2.83 7.078 5.013 5.19 6.87 -1.113 7.823 -4.308 0.953 3.195 2.05 9.271 7.733 4.308 4.267 -4.308 1.172 -6.498 -2.74 -7.078a8.741 8.741 0 0 1 -0.415 -0.056c0.14 0.017 0.279 0.036 0.415 0.056 2.67 0.297 5.568 -0.628 6.383 -3.364 0.246 -0.828 0.624 -5.79 0.624 -6.478 0 -0.69 -0.139 -1.861 -0.902 -2.206 -0.659 -0.298 -1.664 -0.62 -4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z\" fill=\"#0385FF\" strokeWidth=\"1\"></path></svg>\n </div>\n </div>\n <div className='flex grow flex-col items-center'>\n <H3>{account?.name || ''}</H3>\n <div className='flex items-center gap-1 text-gray-800'>\n <span className='text-lg font-medium'>{account?.blueskyHandle}</span>\n <Button className='size-6 p-0 hover:opacity-80' title='Copy handle' variant='link' onClick={handleCopy}>\n {!copied ?\n <LucideIcon.Copy size={16} /> :\n <LucideIcon.Check size={16} />\n }\n </Button>\n </div>\n </div>\n <Button className='mt-2 w-full' size='lg' variant='secondary' asChild>\n <a href={`https://bsky.app/profile/${account?.blueskyHandle?.replace(/^@/, '')}`} rel='noreferrer' target='_blank'>\n Open profile\n <LucideIcon.ExternalLink size={14} strokeWidth={1.25} />\n </a>\n </Button>\n </div>\n )}\n </>\n }\n </div>\n\n <AlertDialog open={showConfirm} onOpenChange={setShowConfirm}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n Disable Bluesky sharing?\n </AlertDialogTitle>\n <AlertDialogDescription>\n Your bridged Bluesky account will be deactivated and your content will no longer be shared on Bluesky. You can re-enable sharing at any time.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>\n Cancel\n </AlertDialogCancel>\n <AlertDialogAction\n className={buttonVariants({variant: 'destructive'})}\n disabled={loading}\n onClick={(e) => {\n e.preventDefault();\n handleDisable();\n }}\n >\n {loading ? <LoadingIndicator color='light' size='sm' /> : 'Disable'}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </Layout>\n );\n};\n\nexport default BlueskySharing;\n"],"names":["CONFIRMATION_INTERVAL","MAX_CONFIRMATION_RETRIES","BlueskySharing","account","isLoadingAccount","useAccountForUser","loading","setLoading","useState","copied","setCopied","isEditingProfile","setIsEditingProfile","showConfirm","setShowConfirm","handleConfirmed","setHandleConfirmed","retryCountRef","useRef","enableBlueskyMutation","useEnableBlueskyMutationForUser","disableBlueskyMutation","useDisableBlueskyMutationForUser","confirmBlueskyHandleMutation","useConfirmBlueskyHandleMutationForUser","handleCopy","handleEnable","toast","handleDisable","confirmHandle","useCallback","handle","useEffect","confirmHandleInterval","jsx","Layout","jsxs","H2","LoadingIndicator","showAsEnabled","Button","Fragment","APAvatar","H3","LucideIcon.Check","LucideIcon.Copy","_a","LucideIcon.ExternalLink","Dialog","DialogTrigger","DialogContent","e","DialogHeader","DialogTitle","EditProfile","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","buttonVariants"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy-Dg0Olymi.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/copy.js"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.js.map\n"],"names":["__iconNode","Copy","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,OAAO,MAAM,QAAQ,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,UAAU;AAAA,EACvF,CAAC,QAAQ,EAAE,GAAG,2DAA2D,KAAK,SAAQ,CAAE;AAC1F,GACMC,IAAOC,EAAiB,QAAQF,CAAU;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleted-feed-item-C6ttBewp.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/trash.js","../src/components/global/show-replies-button.tsx","../src/hooks/use-reply-chain-data.ts","../src/components/global/ap-reply-box.tsx","../src/components/feed/deleted-feed-item.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash = createLucideIcon(\"trash\", __iconNode);\n\nexport { __iconNode, Trash as default };\n//# sourceMappingURL=trash.js.map\n","import React, {useRef} from 'react';\nimport {Button, LoadingIndicator} from '@tryghost/shade';\n\ninterface ShowRepliesButtonProps {\n count?: number;\n onClick: () => void;\n variant?: 'default' | 'expand' | 'loadMore';\n preserveScroll?: boolean;\n loading?: boolean;\n}\n\nconst ShowRepliesButton: React.FC<ShowRepliesButtonProps> = ({count, onClick, variant = 'default', preserveScroll = true, loading = false}) => {\n const buttonRef = useRef<HTMLDivElement>(null);\n\n const getButtonText = () => {\n if (count && count > 0) {\n return `Show ${count} more ${count === 1 ? 'reply' : 'replies'}`;\n }\n\n switch (variant) {\n case 'expand':\n return 'Show replies';\n case 'loadMore':\n return 'Show more replies';\n default:\n return 'Show replies';\n }\n };\n\n const handleClick = () => {\n if (preserveScroll) {\n const container = document.querySelector('[data-scrollable-container]') as HTMLElement;\n const scrollTop = container ? container.scrollTop : window.scrollY;\n\n onClick();\n\n setTimeout(() => {\n if (container) {\n container.scrollTop = scrollTop;\n } else {\n window.scrollTo(0, scrollTop);\n }\n }, 0);\n } else {\n onClick();\n }\n };\n\n return (\n <div ref={buttonRef} className='mt-[-7px] flex items-center pb-3'>\n <div className='flex w-10 flex-col items-center justify-center gap-1'>\n <div className='size-0.5 rounded-sm bg-gray-300'></div>\n <div className='size-0.5 rounded-sm bg-gray-300'></div>\n <div className='size-0.5 rounded-sm bg-gray-300'></div>\n </div>\n <Button\n className='hover:text-blue-800 text-sm font-medium text-blue-600'\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n e.stopPropagation();\n (e.target as HTMLElement).blur();\n handleClick();\n }}\n >\n {loading ? (\n <div className='flex items-center gap-2'>\n <LoadingIndicator size='sm' />\n <span>Loading...</span>\n </div>\n ) : (\n getButtonText()\n )}\n </Button>\n </div>\n );\n};\n\nexport default ShowRepliesButton;\n","import {mapPostToActivity} from '@src/utils/posts';\nimport {useReplyChainForUser} from '@hooks/use-activity-pub-queries';\n\ninterface UseReplyChainDataOptions {\n includeAncestors?: boolean;\n}\n\nexport function useReplyChainData(postId: string, options: UseReplyChainDataOptions = {}) {\n const {includeAncestors = false} = options;\n\n const {data: replyChain, isLoading: isReplyChainLoading, loadMoreChildren, loadMoreChildReplies, hasMoreChildren, hasMoreChildReplies} = useReplyChainForUser('index', postId);\n\n const threadParents = includeAncestors ? (replyChain?.ancestors?.chain?.map(mapPostToActivity) || []) : [];\n const threadPost = replyChain?.post ? mapPostToActivity(replyChain.post) : undefined;\n const processedReplies = (replyChain?.children ?? []).map((childData) => {\n const mainReply = mapPostToActivity(childData.post);\n const chainItems = childData.chain ? childData.chain.map(mapPostToActivity) : [];\n\n return {\n mainReply,\n chain: chainItems\n };\n });\n\n return {\n threadParents,\n post: threadPost,\n processedReplies,\n isLoading: isReplyChainLoading,\n loadMoreChildren,\n loadMoreChildReplies,\n hasMoreChildren,\n hasMoreChildReplies\n };\n}\n","import React, {HTMLProps, useState} from 'react';\n\nimport APAvatar from './ap-avatar';\nimport NewNoteModal from '@components/modals/new-note-modal';\nimport getUsername from '../../utils/get-username';\nimport {ActorProperties, ObjectProperties} from '@tryghost/admin-x-framework/api/activitypub';\nimport {useUserDataForUser} from '@hooks/use-activity-pub-queries';\n\nexport interface APTextAreaProps extends HTMLProps<HTMLDivElement> {\n object: ObjectProperties;\n onReply?: () => void;\n onReplyError?: () => void;\n}\n\nconst APReplyBox: React.FC<APTextAreaProps> = ({\n object,\n onReply,\n onReplyError,\n className,\n ...props\n}) => {\n const {data: user} = useUserDataForUser('index');\n const [showReplyModal, setShowReplyModal] = useState(false);\n\n if (!user) {\n return null;\n }\n\n const attributedTo = object.attributedTo as ActorProperties | undefined;\n let placeholder = 'Reply...';\n if (attributedTo?.preferredUsername && attributedTo?.id) {\n placeholder = `Reply to ${getUsername(attributedTo)}...`;\n }\n\n return (\n <>\n <div\n className={`flex w-full cursor-pointer gap-x-3 py-6 ${className || ''}`}\n onClick={() => setShowReplyModal(true)}\n {...props}\n >\n <APAvatar author={user as ActorProperties} />\n <div className='flex w-full items-center'>\n <div className='w-full text-[1.5rem] text-gray-500 transition-colors dark:text-gray-400'>\n {placeholder}\n </div>\n </div>\n </div>\n\n {showReplyModal && (\n <NewNoteModal\n open={showReplyModal}\n replyTo={{\n object: object,\n actor: object.attributedTo as ActorProperties\n }}\n onOpenChange={(open) => {\n setShowReplyModal(open);\n }}\n onReply={() => {\n onReply?.();\n setShowReplyModal(false);\n }}\n onReplyError={() => {\n onReplyError?.();\n }}\n />\n )}\n </>\n );\n};\n\nexport default APReplyBox;\n","import React from 'react';\nimport {LucideIcon} from '@tryghost/shade';\n\ninterface DeletedFeedItemProps {\n last?: boolean;\n}\n\nconst DeletedFeedItem: React.FC<DeletedFeedItemProps> = ({last}) => {\n return (\n <div className='relative mt-[-5px] py-5'>\n <div className='flex h-12 grow items-center gap-2 rounded-lg border border-gray-200 p-2 px-[10px] text-gray-600'>\n <LucideIcon.Trash size={18} strokeWidth={1.25} />\n This post has been deleted\n </div>\n {!last && <div className=\"absolute bottom-0 left-[18px] top-[70px] z-0 mb-[-13px] w-[2px] rounded-sm bg-gray-200\"></div>}\n </div>\n );\n};\n\nexport default DeletedFeedItem;\n"],"names":["__iconNode","Trash","createLucideIcon","ShowRepliesButton","count","onClick","variant","preserveScroll","loading","buttonRef","useRef","getButtonText","handleClick","container","scrollTop","jsxs","jsx","Button","e","LoadingIndicator","useReplyChainData","postId","options","includeAncestors","replyChain","isReplyChainLoading","loadMoreChildren","loadMoreChildReplies","hasMoreChildren","hasMoreChildReplies","useReplyChainForUser","threadParents","_b","_a","mapPostToActivity","threadPost","processedReplies","childData","mainReply","chainItems","APReplyBox","object","onReply","onReplyError","className","props","user","useUserDataForUser","showReplyModal","setShowReplyModal","useState","attributedTo","placeholder","getUsername","Fragment","APAvatar","NewNoteModal","open","DeletedFeedItem","last","LucideIcon.Trash"],"mappings":"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","x_google_ignoreList":[0]}
|