@openrails/contentkit-ui 0.98.6 → 0.99.0

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 (99) hide show
  1. package/README.md +26 -0
  2. package/dist/client/content/comments.d.ts +4 -2
  3. package/dist/client/content/comments.js +10 -6
  4. package/dist/client/content/comments.js.map +1 -1
  5. package/dist/client/generated/routes.d.ts +28 -2
  6. package/dist/client/generated/routes.js +39 -2
  7. package/dist/client/generated/routes.js.map +1 -1
  8. package/dist/client/generated/wire.d.ts +85 -0
  9. package/dist/client/generated/wire.js.map +1 -1
  10. package/dist/client/media/client.d.ts +4 -0
  11. package/dist/client/media/client.js +8 -4
  12. package/dist/client/media/client.js.map +1 -1
  13. package/dist/client/media/queue.js +42 -26
  14. package/dist/client/media/queue.js.map +1 -1
  15. package/dist/client/media/rules.d.ts +6 -0
  16. package/dist/client/media/rules.js +64 -10
  17. package/dist/client/media/rules.js.map +1 -1
  18. package/dist/client/versions.d.ts +6 -2
  19. package/dist/client/versions.js +26 -0
  20. package/dist/client/versions.js.map +1 -1
  21. package/dist/components/admin/page-review.d.ts +13 -0
  22. package/dist/components/admin/page-review.js +216 -0
  23. package/dist/components/admin/page-review.js.map +1 -0
  24. package/dist/components/content/card.js +98 -103
  25. package/dist/components/content/card.js.map +1 -1
  26. package/dist/components/content/daily-releases.d.ts +8 -1
  27. package/dist/components/content/daily-releases.js +291 -133
  28. package/dist/components/content/daily-releases.js.map +1 -1
  29. package/dist/components/content/editors.js +216 -210
  30. package/dist/components/content/editors.js.map +1 -1
  31. package/dist/components/content/filter-dialog.d.ts +11 -0
  32. package/dist/components/content/filter-dialog.js +29 -0
  33. package/dist/components/content/filter-dialog.js.map +1 -0
  34. package/dist/components/content/filters.d.ts +10 -0
  35. package/dist/components/content/filters.js +5 -2
  36. package/dist/components/content/filters.js.map +1 -1
  37. package/dist/components/content/grid.js +19 -14
  38. package/dist/components/content/grid.js.map +1 -1
  39. package/dist/components/content/index.d.ts +2 -1
  40. package/dist/components/content/release-reveal.d.ts +5 -0
  41. package/dist/components/content/release-reveal.js +62 -0
  42. package/dist/components/content/release-reveal.js.map +1 -0
  43. package/dist/components/social/comments.d.ts +1 -1
  44. package/dist/components/social/comments.js +15 -15
  45. package/dist/components/social/comments.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.js +24 -22
  48. package/dist/locales/admin/de.js +23 -0
  49. package/dist/locales/admin/de.js.map +1 -1
  50. package/dist/locales/admin/en.d.ts +23 -0
  51. package/dist/locales/admin/en.js +23 -0
  52. package/dist/locales/admin/en.js.map +1 -1
  53. package/dist/locales/admin/es.js +23 -0
  54. package/dist/locales/admin/es.js.map +1 -1
  55. package/dist/locales/admin/ja.js +23 -0
  56. package/dist/locales/admin/ja.js.map +1 -1
  57. package/dist/locales/admin/ko.js +23 -0
  58. package/dist/locales/admin/ko.js.map +1 -1
  59. package/dist/locales/admin/zh.js +23 -0
  60. package/dist/locales/admin/zh.js.map +1 -1
  61. package/dist/locales/discovery/de.js +11 -0
  62. package/dist/locales/discovery/de.js.map +1 -1
  63. package/dist/locales/discovery/en.d.ts +11 -0
  64. package/dist/locales/discovery/en.js +11 -0
  65. package/dist/locales/discovery/en.js.map +1 -1
  66. package/dist/locales/discovery/es.js +11 -0
  67. package/dist/locales/discovery/es.js.map +1 -1
  68. package/dist/locales/discovery/ja.js +11 -0
  69. package/dist/locales/discovery/ja.js.map +1 -1
  70. package/dist/locales/discovery/ko.js +11 -0
  71. package/dist/locales/discovery/ko.js.map +1 -1
  72. package/dist/locales/discovery/zh.js +11 -0
  73. package/dist/locales/discovery/zh.js.map +1 -1
  74. package/dist/locales/en.d.ts +34 -0
  75. package/dist/locales/social/en.js +2 -2
  76. package/dist/locales/social/en.js.map +1 -1
  77. package/dist/react/comments.d.ts +2 -1
  78. package/dist/react/comments.js +10 -8
  79. package/dist/react/comments.js.map +1 -1
  80. package/dist/react/folder.js +39 -39
  81. package/dist/react/folder.js.map +1 -1
  82. package/dist/react/index.d.ts +1 -0
  83. package/dist/react/page-review.d.ts +14 -0
  84. package/dist/react/page-review.js +36 -0
  85. package/dist/react/page-review.js.map +1 -0
  86. package/dist/react/public.d.ts +3 -1
  87. package/dist/react/public.js +76 -72
  88. package/dist/react/public.js.map +1 -1
  89. package/dist/react/resources.d.ts +5 -13
  90. package/dist/react/resources.js +58 -49
  91. package/dist/react/resources.js.map +1 -1
  92. package/dist/react/use-resource.d.ts +1 -1
  93. package/dist/react/use-resource.js +23 -13
  94. package/dist/react/use-resource.js.map +1 -1
  95. package/dist/react/versions.js +70 -42
  96. package/dist/react/versions.js.map +1 -1
  97. package/dist/react.js +8 -7
  98. package/dist/styles.css +1 -1
  99. package/package.json +1 -1
package/README.md CHANGED
@@ -362,6 +362,25 @@ properties (`href`, `decorate`, `groupKinds`, `tiers`, and so on) remain availab
362
362
  For a custom layout, `useDailyReleases(query)` exposes the same shared read and
363
363
  `client.discovery.releases(query)` exposes the typed request directly.
364
364
 
365
+ Opt into `collapsePremium` to replace a day's locked tier previews with one
366
+ counted tile at their first original position. Opening it restores their order
367
+ within the existing card budget; **Show more** still controls the rest. This
368
+ only reveals previews and never grants access. Native layout/reveal animations
369
+ respect reduced motion, and keyboard activation focuses the first revealed
370
+ card. `summaryLabels.premium(count)` and `.filtered(count)` can supply a host's
371
+ nouns; the shared defaults use localized item labels.
372
+
373
+ Each day's `filtered_count` is a distinct-content total hidden only by the
374
+ reader's toggleable preferences. A filtered tile opens `ContentFilterDialog`
375
+ with `filtered_entities` counts for that day and the same configured controls
376
+ as `ReaderSettings`. Per-entity counts may overlap; they must not be added to
377
+ compute the total. Changing a preference refreshes the feed and counts while
378
+ the dialog remains open. Hard domain rules and internal classifications are
379
+ never controls or count labels. A day with only filtered items remains visible.
380
+ For custom interfaces, pass selection-specific `counts` to
381
+ `ContentFilterSettings` or the controlled `ContentFilterDialog`; omit `counts`
382
+ for ordinary settings without listing totals.
383
+
365
384
  `published_within` filters a listing by publication age independently of its
366
385
  ranking window. For example, `{ sort: "popular:7d", published_within: "7d" }`
367
386
  ranks only content published during the past seven days.
@@ -669,6 +688,13 @@ const nav = useMemo(() => ({ pathname: location.pathname, search: location.searc
669
688
  emphasis, lists, quotes, links and images picked, pasted or dropped. Its
670
689
  HTML keeps to that schema, so bodies stay a small, predictable subset.
671
690
 
691
+ - **`PageReview`**: retained page sources, original filenames, automatic cleanup
692
+ reasons, previews, inclusion overrides and ordering. `ContentManager` includes
693
+ it for reader versions; use `content` and `version` to embed it separately.
694
+ `usePageReview()` exposes the same revision-checked API. Explicitly segmented
695
+ versions keep their selection/order and show read-only review controls so
696
+ cleanup cannot move pages across release/access boundaries.
697
+
672
698
  - **`ReaderManifestEditor`**: a reader version's manifest over its published
673
699
  pages and audio: scroll anchors, audio cues (matched to pages or anchors by
674
700
  file name in one step), background tracks and auto-advance. Page order is
@@ -29,8 +29,10 @@ export declare class CommentsClient {
29
29
  delete(id: string): Promise<void>;
30
30
  /** Sets the caller's reaction to a comment. */
31
31
  react(id: string, value: Reaction): Promise<ReactionCounts>;
32
- /** Whether the caller may comment on the item, the ban that stops it, and what it may do to others' comments. */
33
- standing(t: Target, signal?: AbortSignal): Promise<CommentStanding>;
32
+ /** Commenting permissions and the authoritative visible top-level count in query.language (all languages by default); hidden/locked threads withhold the count. */
33
+ standing(t: Target, signal?: AbortSignal, query?: {
34
+ language?: string;
35
+ }): Promise<CommentStanding>;
34
36
  /** The newest published comments across the site, with their items; a page may under-fill. */
35
37
  latest(q?: PageQuery & {
36
38
  language?: string;
@@ -68,14 +68,18 @@ var n = class {
68
68
  counts: o
69
69
  }), o;
70
70
  }
71
- standing(t, n) {
72
- let r = {
71
+ standing(t, n, r = {}) {
72
+ let i = {
73
73
  params: { id: t.id },
74
- signal: n
74
+ signal: n,
75
+ query: r
75
76
  };
76
- return t.type === "entities" ? e(this.http, "GET", "/entities/{id}/can-comment", r) : e(this.http, "GET", "/contents/{id}/can-comment", {
77
- ...r,
78
- query: { version: t.version }
77
+ return t.type === "entities" ? e(this.http, "GET", "/entities/{id}/can-comment", i) : e(this.http, "GET", "/contents/{id}/can-comment", {
78
+ ...i,
79
+ query: {
80
+ ...r,
81
+ version: t.version
82
+ }
79
83
  });
80
84
  }
81
85
  latest(t = {}, n) {
@@ -1 +1 @@
1
- {"version":3,"file":"comments.js","names":[],"sources":["../../../src/client/content/comments.ts"],"sourcesContent":["import type { AdminComment, Comment, CommentInput, CommentStanding, FeedItem, ReactionCounts } from \"../generated/wire.js\";\nimport type { Http } from \"../http.js\";\nimport { call, type PageQuery } from \"../route.js\";\nimport { reactionVerb, type Reaction, type Sort, type Target } from \"./types.js\";\n\nexport interface CommentQuery extends PageQuery {\n sort?: Sort;\n /** Only this language's thread. */\n language?: string;\n}\n\nexport interface AdminCommentQuery extends PageQuery {\n /** Only comments on this content kind. */\n contentKind?: string;\n /** Only comments by this user id. */\n author?: string;\n}\n\n/** Comments on an item: threads, replies, edits, tombstones, reactions, standing, the latest feed and moderation. */\nexport class CommentsClient {\n constructor(private readonly http: Http) {}\n\n /** The target's top-level comments with reply counts; the caller also gets its own held and rejected ones. */\n list(t: Target, q: CommentQuery = {}, signal?: AbortSignal): Promise<Comment[]> {\n const o = { params: { id: t.id }, signal };\n return t.type === \"entities\"\n ? call(this.http, \"GET\", \"/entities/{id}/comments\", { ...o, query: q })\n : call(this.http, \"GET\", \"/contents/{id}/comments\", { ...o, query: { ...q, version: t.version } });\n }\n /** A top-level comment's replies, oldest first. */\n replies(id: string, q: PageQuery = {}, signal?: AbortSignal): Promise<Comment[]> {\n return call(this.http, \"GET\", \"/comments/{cid}/replies\", { params: { cid: id }, query: q, signal });\n }\n /** Comments on the target in a language's thread, or replies to a top-level comment (reply_to_id); anonymous callers give anon_name. */\n async create(t: Target, input: CommentInput): Promise<Comment> {\n const emit = this.http.captureChanges();\n const o = { params: { id: t.id }, body: input };\n const comment: Comment =\n t.type === \"entities\" ? await call(this.http, \"POST\", \"/entities/{id}/comments\", o) : await call(this.http, \"POST\", \"/contents/{id}/comments\", { ...o, query: { version: t.version } });\n emit({ type: \"comment.created\", target: t, comment });\n return comment;\n }\n /** Replaces the body: its author, or a moderator. */\n async edit(id: string, body: string): Promise<Comment> {\n const emit = this.http.captureChanges();\n const comment: Comment = await call(this.http, \"PATCH\", \"/comments/{cid}\", { params: { cid: id }, body: { body } });\n emit({ type: \"comment.updated\", comment });\n return comment;\n }\n /** Leaves a tombstone: its author, or a moderator. */\n async delete(id: string): Promise<void> {\n const emit = this.http.captureChanges();\n await call(this.http, \"DELETE\", \"/comments/{cid}\", { params: { cid: id } });\n emit({ type: \"comment.deleted\", id });\n }\n /** Sets the caller's reaction to a comment. */\n async react(id: string, value: Reaction): Promise<ReactionCounts> {\n const emit = this.http.captureChanges();\n const params = { cid: id };\n const counts: ReactionCounts =\n value === 0 ? await call(this.http, \"DELETE\", \"/comments/{cid}/reaction\", { params }) : await call(this.http, \"POST\", `/comments/{cid}/${reactionVerb(value)}` as const, { params });\n emit({ type: \"comment.reacted\", id, counts });\n return counts;\n }\n /** Whether the caller may comment on the item, the ban that stops it, and what it may do to others' comments. */\n standing(t: Target, signal?: AbortSignal): Promise<CommentStanding> {\n const o = { params: { id: t.id }, signal };\n return t.type === \"entities\"\n ? call(this.http, \"GET\", \"/entities/{id}/can-comment\", o)\n : call(this.http, \"GET\", \"/contents/{id}/can-comment\", { ...o, query: { version: t.version } });\n }\n /** The newest published comments across the site, with their items; a page may under-fill. */\n latest(q: PageQuery & { language?: string } = {}, signal?: AbortSignal): Promise<FeedItem[]> {\n return call(this.http, \"GET\", \"/comments/latest\", { query: q, signal });\n }\n /** Every comment, newest first, deleted, held and rejected ones with their bodies (root:comments:moderate). */\n adminList(q: AdminCommentQuery = {}, signal?: AbortSignal): Promise<AdminComment[]> {\n const { contentKind, ...rest } = q;\n return call(this.http, \"GET\", \"/comments/admin\", { query: { ...rest, content_kind: contentKind }, signal });\n }\n /** Restores a deleted comment (root:comments:moderate). */\n async restore(id: string): Promise<void> {\n const emit = this.http.captureChanges();\n await call(this.http, \"POST\", \"/comments/{cid}/restore\", { params: { cid: id } });\n emit({ type: \"comment.restored\", id });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"comments.js","names":[],"sources":["../../../src/client/content/comments.ts"],"sourcesContent":["import type { AdminComment, Comment, CommentInput, CommentStanding, FeedItem, ReactionCounts } from \"../generated/wire.js\";\nimport type { Http } from \"../http.js\";\nimport { call, type PageQuery } from \"../route.js\";\nimport { reactionVerb, type Reaction, type Sort, type Target } from \"./types.js\";\n\nexport interface CommentQuery extends PageQuery {\n sort?: Sort;\n /** Only this language's thread. */\n language?: string;\n}\n\nexport interface AdminCommentQuery extends PageQuery {\n /** Only comments on this content kind. */\n contentKind?: string;\n /** Only comments by this user id. */\n author?: string;\n}\n\n/** Comments on an item: threads, replies, edits, tombstones, reactions, standing, the latest feed and moderation. */\nexport class CommentsClient {\n constructor(private readonly http: Http) {}\n\n /** The target's top-level comments with reply counts; the caller also gets its own held and rejected ones. */\n list(t: Target, q: CommentQuery = {}, signal?: AbortSignal): Promise<Comment[]> {\n const o = { params: { id: t.id }, signal };\n return t.type === \"entities\"\n ? call(this.http, \"GET\", \"/entities/{id}/comments\", { ...o, query: q })\n : call(this.http, \"GET\", \"/contents/{id}/comments\", { ...o, query: { ...q, version: t.version } });\n }\n /** A top-level comment's replies, oldest first. */\n replies(id: string, q: PageQuery = {}, signal?: AbortSignal): Promise<Comment[]> {\n return call(this.http, \"GET\", \"/comments/{cid}/replies\", { params: { cid: id }, query: q, signal });\n }\n /** Comments on the target in a language's thread, or replies to a top-level comment (reply_to_id); anonymous callers give anon_name. */\n async create(t: Target, input: CommentInput): Promise<Comment> {\n const emit = this.http.captureChanges();\n const o = { params: { id: t.id }, body: input };\n const comment: Comment =\n t.type === \"entities\" ? await call(this.http, \"POST\", \"/entities/{id}/comments\", o) : await call(this.http, \"POST\", \"/contents/{id}/comments\", { ...o, query: { version: t.version } });\n emit({ type: \"comment.created\", target: t, comment });\n return comment;\n }\n /** Replaces the body: its author, or a moderator. */\n async edit(id: string, body: string): Promise<Comment> {\n const emit = this.http.captureChanges();\n const comment: Comment = await call(this.http, \"PATCH\", \"/comments/{cid}\", { params: { cid: id }, body: { body } });\n emit({ type: \"comment.updated\", comment });\n return comment;\n }\n /** Leaves a tombstone: its author, or a moderator. */\n async delete(id: string): Promise<void> {\n const emit = this.http.captureChanges();\n await call(this.http, \"DELETE\", \"/comments/{cid}\", { params: { cid: id } });\n emit({ type: \"comment.deleted\", id });\n }\n /** Sets the caller's reaction to a comment. */\n async react(id: string, value: Reaction): Promise<ReactionCounts> {\n const emit = this.http.captureChanges();\n const params = { cid: id };\n const counts: ReactionCounts =\n value === 0 ? await call(this.http, \"DELETE\", \"/comments/{cid}/reaction\", { params }) : await call(this.http, \"POST\", `/comments/{cid}/${reactionVerb(value)}` as const, { params });\n emit({ type: \"comment.reacted\", id, counts });\n return counts;\n }\n /** Commenting permissions and the authoritative visible top-level count in query.language (all languages by default); hidden/locked threads withhold the count. */\n standing(t: Target, signal?: AbortSignal, query: { language?: string } = {}): Promise<CommentStanding> {\n const o = { params: { id: t.id }, signal, query };\n return t.type === \"entities\"\n ? call(this.http, \"GET\", \"/entities/{id}/can-comment\", o)\n : call(this.http, \"GET\", \"/contents/{id}/can-comment\", { ...o, query: { ...query, version: t.version } });\n }\n /** The newest published comments across the site, with their items; a page may under-fill. */\n latest(q: PageQuery & { language?: string } = {}, signal?: AbortSignal): Promise<FeedItem[]> {\n return call(this.http, \"GET\", \"/comments/latest\", { query: q, signal });\n }\n /** Every comment, newest first, deleted, held and rejected ones with their bodies (root:comments:moderate). */\n adminList(q: AdminCommentQuery = {}, signal?: AbortSignal): Promise<AdminComment[]> {\n const { contentKind, ...rest } = q;\n return call(this.http, \"GET\", \"/comments/admin\", { query: { ...rest, content_kind: contentKind }, signal });\n }\n /** Restores a deleted comment (root:comments:moderate). */\n async restore(id: string): Promise<void> {\n const emit = this.http.captureChanges();\n await call(this.http, \"POST\", \"/comments/{cid}/restore\", { params: { cid: id } });\n emit({ type: \"comment.restored\", id });\n }\n}\n"],"mappings":"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"}
@@ -736,7 +736,7 @@ export declare const CONTENTKIT_ROUTES: readonly [{
736
736
  readonly path: "/contents/{id}/can-comment";
737
737
  readonly auth: "public";
738
738
  readonly permission: null;
739
- readonly query: readonly ["version"];
739
+ readonly query: readonly ["version", "language"];
740
740
  readonly request: null;
741
741
  readonly responses: {
742
742
  readonly 200: "CommentStanding";
@@ -749,7 +749,7 @@ export declare const CONTENTKIT_ROUTES: readonly [{
749
749
  readonly path: "/entities/{id}/can-comment";
750
750
  readonly auth: "public";
751
751
  readonly permission: null;
752
- readonly query: readonly [];
752
+ readonly query: readonly ["language"];
753
753
  readonly request: null;
754
754
  readonly responses: {
755
755
  readonly 200: "CommentStanding";
@@ -1655,6 +1655,32 @@ export declare const CONTENTKIT_ROUTES: readonly [{
1655
1655
  };
1656
1656
  readonly errors: readonly ["conflict"];
1657
1657
  readonly errorSets: readonly ["module:notifications", "auth", "request"];
1658
+ }, {
1659
+ readonly method: "GET";
1660
+ readonly module: "versions";
1661
+ readonly path: "/contents/{id}/versions/{version}/pages";
1662
+ readonly auth: "editor";
1663
+ readonly permission: "root:content:write";
1664
+ readonly query: readonly [];
1665
+ readonly request: null;
1666
+ readonly responses: {
1667
+ readonly 200: "PageReview";
1668
+ };
1669
+ readonly errors: readonly ["not_found", "forbidden"];
1670
+ readonly errorSets: readonly ["module:versions", "auth", "request"];
1671
+ }, {
1672
+ readonly method: "PATCH";
1673
+ readonly module: "versions";
1674
+ readonly path: "/contents/{id}/versions/{version}/pages";
1675
+ readonly auth: "editor";
1676
+ readonly permission: "root:content:write";
1677
+ readonly query: readonly [];
1678
+ readonly request: "PageReviewPatch";
1679
+ readonly responses: {
1680
+ readonly 200: "PageReview";
1681
+ };
1682
+ readonly errors: readonly ["conflict", "invalid_request", "not_found", "forbidden"];
1683
+ readonly errorSets: readonly ["module:versions", "auth", "request"];
1658
1684
  }, {
1659
1685
  readonly method: "GET";
1660
1686
  readonly module: "versions";
@@ -1054,7 +1054,7 @@ var e = {
1054
1054
  path: "/contents/{id}/can-comment",
1055
1055
  auth: "public",
1056
1056
  permission: null,
1057
- query: ["version"],
1057
+ query: ["version", "language"],
1058
1058
  request: null,
1059
1059
  responses: { 200: "CommentStanding" },
1060
1060
  errors: ["not_found"],
@@ -1070,7 +1070,7 @@ var e = {
1070
1070
  path: "/entities/{id}/can-comment",
1071
1071
  auth: "public",
1072
1072
  permission: null,
1073
- query: [],
1073
+ query: ["language"],
1074
1074
  request: null,
1075
1075
  responses: { 200: "CommentStanding" },
1076
1076
  errors: ["not_found"],
@@ -2308,6 +2308,43 @@ var e = {
2308
2308
  "request"
2309
2309
  ]
2310
2310
  },
2311
+ {
2312
+ method: "GET",
2313
+ module: "versions",
2314
+ path: "/contents/{id}/versions/{version}/pages",
2315
+ auth: "editor",
2316
+ permission: "root:content:write",
2317
+ query: [],
2318
+ request: null,
2319
+ responses: { 200: "PageReview" },
2320
+ errors: ["not_found", "forbidden"],
2321
+ errorSets: [
2322
+ "module:versions",
2323
+ "auth",
2324
+ "request"
2325
+ ]
2326
+ },
2327
+ {
2328
+ method: "PATCH",
2329
+ module: "versions",
2330
+ path: "/contents/{id}/versions/{version}/pages",
2331
+ auth: "editor",
2332
+ permission: "root:content:write",
2333
+ query: [],
2334
+ request: "PageReviewPatch",
2335
+ responses: { 200: "PageReview" },
2336
+ errors: [
2337
+ "conflict",
2338
+ "invalid_request",
2339
+ "not_found",
2340
+ "forbidden"
2341
+ ],
2342
+ errorSets: [
2343
+ "module:versions",
2344
+ "auth",
2345
+ "request"
2346
+ ]
2347
+ },
2311
2348
  {
2312
2349
  method: "GET",
2313
2350
  module: "versions",