@tryghost/activitypub 3.1.11 → 3.1.13

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.
Files changed (57) hide show
  1. package/dist/activitypub.js +1 -1
  2. package/dist/{at-sign-Mjg-pZ6w.mjs → at-sign-WxdwrLgJ.mjs} +3 -3
  3. package/dist/{at-sign-Mjg-pZ6w.mjs.map → at-sign-WxdwrLgJ.mjs.map} +1 -1
  4. package/dist/{avatar-flipboard-DrqqZst3.mjs → avatar-flipboard-DSiWdH0F.mjs} +3 -3
  5. package/dist/{avatar-flipboard-DrqqZst3.mjs.map → avatar-flipboard-DSiWdH0F.mjs.map} +1 -1
  6. package/dist/{bluesky-sharing-Chejq-Bq.mjs → bluesky-sharing-B86jF6P2.mjs} +4 -4
  7. package/dist/{bluesky-sharing-Chejq-Bq.mjs.map → bluesky-sharing-B86jF6P2.mjs.map} +1 -1
  8. package/dist/{copy-Ba_lzzCd.mjs → copy-Dv_Mr41S.mjs} +3 -3
  9. package/dist/{copy-Ba_lzzCd.mjs.map → copy-Dv_Mr41S.mjs.map} +1 -1
  10. package/dist/{deleted-feed-item-BfpxKMlB.mjs → deleted-feed-item-DwgIr7vo.mjs} +3 -3
  11. package/dist/{deleted-feed-item-BfpxKMlB.mjs.map → deleted-feed-item-DwgIr7vo.mjs.map} +1 -1
  12. package/dist/{edit-profile-jtzZtWG8.mjs → edit-profile-BJDgAblO.mjs} +3 -3
  13. package/dist/{edit-profile-jtzZtWG8.mjs.map → edit-profile-BJDgAblO.mjs.map} +1 -1
  14. package/dist/{feed-BkSec9BE.mjs → feed-Dg6CeeCP.mjs} +4 -4
  15. package/dist/{feed-BkSec9BE.mjs.map → feed-Dg6CeeCP.mjs.map} +1 -1
  16. package/dist/{hash-D8uyJrFB.mjs → hash-CSsTpjMi.mjs} +3 -3
  17. package/dist/{hash-D8uyJrFB.mjs.map → hash-CSsTpjMi.mjs.map} +1 -1
  18. package/dist/{inbox-DZqNPQ3D.mjs → inbox-DexTffBg.mjs} +3 -3
  19. package/dist/{inbox-DZqNPQ3D.mjs.map → inbox-DexTffBg.mjs.map} +1 -1
  20. package/dist/{index-nevBSPxu.mjs → index-BCgaO9tm.mjs} +2 -2
  21. package/dist/{index-nevBSPxu.mjs.map → index-BCgaO9tm.mjs.map} +1 -1
  22. package/dist/{index-D8Ct0JF0.mjs → index-BgIuNjJ4.mjs} +6 -6
  23. package/dist/{index-D8Ct0JF0.mjs.map → index-BgIuNjJ4.mjs.map} +1 -1
  24. package/dist/{index-psiB4m1D.mjs → index-C5SK4d-U.mjs} +7 -7
  25. package/dist/{index-psiB4m1D.mjs.map → index-C5SK4d-U.mjs.map} +1 -1
  26. package/dist/{index-DYjHwtl7.mjs → index-D0zVs-Le.mjs} +4 -4
  27. package/dist/{index-DYjHwtl7.mjs.map → index-D0zVs-Le.mjs.map} +1 -1
  28. package/dist/{index-CSkOAA7W.mjs → index-DHVdVxus.mjs} +155 -126
  29. package/dist/index-DHVdVxus.mjs.map +1 -0
  30. package/dist/{index-CCW2g6Oi.mjs → index-DunzATiq.mjs} +2 -2
  31. package/dist/{index-CCW2g6Oi.mjs.map → index-DunzATiq.mjs.map} +1 -1
  32. package/dist/{index-Bq0BHGkI.mjs → index-Kd9Hi0Fn.mjs} +7 -7
  33. package/dist/{index-Bq0BHGkI.mjs.map → index-Kd9Hi0Fn.mjs.map} +1 -1
  34. package/dist/{index-CQNBd3-F.mjs → index-Vj6Uo60G.mjs} +9 -9
  35. package/dist/{index-CQNBd3-F.mjs.map → index-Vj6Uo60G.mjs.map} +1 -1
  36. package/dist/{moderation-DFdpfisa.mjs → moderation-DltWXOVa.mjs} +3 -3
  37. package/dist/{moderation-DFdpfisa.mjs.map → moderation-DltWXOVa.mjs.map} +1 -1
  38. package/dist/{note-kWeM_V5e.mjs → note-m0fl222x.mjs} +4 -4
  39. package/dist/{note-kWeM_V5e.mjs.map → note-m0fl222x.mjs.map} +1 -1
  40. package/dist/{reply-1lPjfeAY.mjs → reply-BwjYYb5Y.mjs} +3 -3
  41. package/dist/{reply-1lPjfeAY.mjs.map → reply-BwjYYb5Y.mjs.map} +1 -1
  42. package/dist/{separator-COhI8ngj.mjs → separator-CdEv3ahM.mjs} +2 -2
  43. package/dist/{separator-COhI8ngj.mjs.map → separator-CdEv3ahM.mjs.map} +1 -1
  44. package/dist/{settings-CEx9EwpB.mjs → settings-BdWI832x.mjs} +3 -3
  45. package/dist/{settings-CEx9EwpB.mjs.map → settings-BdWI832x.mjs.map} +1 -1
  46. package/dist/{step-1-DoxN5zA3.mjs → step-1-xd_G9AFI.mjs} +3 -3
  47. package/dist/{step-1-DoxN5zA3.mjs.map → step-1-xd_G9AFI.mjs.map} +1 -1
  48. package/dist/{step-2-BWvVMlaH.mjs → step-2-C-T0bLP6.mjs} +6 -6
  49. package/dist/{step-2-BWvVMlaH.mjs.map → step-2-C-T0bLP6.mjs.map} +1 -1
  50. package/dist/{step-3-Dnq4l5zZ.mjs → step-3-Cxv0ahQZ.mjs} +8 -8
  51. package/dist/{step-3-Dnq4l5zZ.mjs.map → step-3-Cxv0ahQZ.mjs.map} +1 -1
  52. package/dist/{tabs-DTWhZwdk.mjs → tabs-BDqPEpa2.mjs} +4 -4
  53. package/dist/{tabs-DTWhZwdk.mjs.map → tabs-BDqPEpa2.mjs.map} +1 -1
  54. package/dist/{topic-filter-4W4f_LiH.mjs → topic-filter-C1NL6HYi.mjs} +2 -2
  55. package/dist/{topic-filter-4W4f_LiH.mjs.map → topic-filter-C1NL6HYi.mjs.map} +1 -1
  56. package/package.json +17 -2
  57. package/dist/index-CSkOAA7W.mjs.map +0 -1
@@ -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-CSkOAA7W.mjs";
1
+ import { l as v, c as r, b as T, e as g, j as l, B as j } from "./index-DHVdVxus.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;
@@ -36,4 +36,4 @@ const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
36
36
  export {
37
37
  N as T
38
38
  };
39
- //# sourceMappingURL=topic-filter-4W4f_LiH.mjs.map
39
+ //# sourceMappingURL=topic-filter-C1NL6HYi.mjs.map
@@ -1 +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;"}
1
+ {"version":3,"file":"topic-filter-C1NL6HYi.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.11",
3
+ "version": "3.1.13",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,6 +14,13 @@
14
14
  ],
15
15
  "main": "./dist/activitypub.umd.cjs",
16
16
  "module": "./dist/activitypub.js",
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/activitypub.js",
20
+ "require": "./dist/activitypub.umd.cjs"
21
+ },
22
+ "./api": "./src/index.tsx"
23
+ },
17
24
  "private": false,
18
25
  "scripts": {
19
26
  "dev": "vite build --watch",
@@ -22,6 +29,7 @@
22
29
  "lint": "pnpm run lint:code && pnpm run lint:test",
23
30
  "lint:code": "eslint --ext .js,.ts,.cjs,.tsx --cache src",
24
31
  "lint:test": "eslint -c test/.eslintrc.cjs --ext .js,.ts,.cjs,.tsx --cache test",
32
+ "test": "pnpm test:unit",
25
33
  "test:unit": "tsc --noEmit && vitest run",
26
34
  "test:acceptance": "NODE_OPTIONS='--experimental-specifier-resolution=node --no-warnings' VITE_TEST=true playwright test",
27
35
  "test:acceptance:slowmo": "TIMEOUT=100000 PLAYWRIGHT_SLOWMO=100 pnpm test:acceptance --headed",
@@ -36,6 +44,7 @@
36
44
  "@types/react": "18.3.28",
37
45
  "@types/react-dom": "18.3.7",
38
46
  "jest": "29.7.0",
47
+ "tailwindcss": "^4.2.2",
39
48
  "ts-jest": "29.4.9",
40
49
  "vite": "5.4.21",
41
50
  "vitest": "1.6.1"
@@ -67,7 +76,9 @@
67
76
  }
68
77
  },
69
78
  "dependencies": {
79
+ "@hookform/resolvers": "5.2.2",
70
80
  "@radix-ui/react-form": "0.1.8",
81
+ "@tanstack/react-query": "4.36.1",
71
82
  "@tryghost/admin-x-framework": "workspace:*",
72
83
  "@tryghost/shade": "workspace:*",
73
84
  "clsx": "2.1.1",
@@ -75,6 +86,10 @@
75
86
  "html2canvas-objectfit-fix": "1.2.0",
76
87
  "react": "18.3.1",
77
88
  "react-dom": "18.3.1",
78
- "use-debounce": "10.1.1"
89
+ "react-hook-form": "7.72.1",
90
+ "react-router": "7.14.0",
91
+ "sonner": "2.0.7",
92
+ "use-debounce": "10.1.1",
93
+ "zod": "4.1.12"
79
94
  }
80
95
  }