@anthusai/papyrus 1.0.0-next.2 → 1.0.0-next.4

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 (58) hide show
  1. package/amplify/data/resource.js +26 -0
  2. package/amplify/data/resource.ts +30 -0
  3. package/amplify/data/schema.js +26 -0
  4. package/amplify/data/schema.ts +30 -0
  5. package/amplify/functions/content-actions/handler.py +107 -0
  6. package/amplify/functions/content-actions/requirements.txt +4 -0
  7. package/amplify/functions/content-actions/resource.js +40 -0
  8. package/amplify/functions/content-actions/resource.ts +54 -0
  9. package/amplify/functions/shared/python-bundle.js +17 -2
  10. package/amplify/functions/shared/python-bundle.ts +23 -2
  11. package/amplify/site-backend.js +10 -0
  12. package/amplify/site-backend.ts +15 -0
  13. package/app/[year]/[month]/[day]/[articleSlug]/page.tsx +2 -2
  14. package/app/globals.css +1 -4
  15. package/app/layout.tsx +8 -12
  16. package/app/robots.ts +11 -0
  17. package/bin/papyrus-infra.mjs +46 -16
  18. package/components/news-desk-page.tsx +1 -4
  19. package/components/staging-banner.tsx +11 -0
  20. package/infra/amplify-app-shell.js +123 -80
  21. package/infra/amplify-app-shell.ts +139 -113
  22. package/infra/build-specs.js +86 -0
  23. package/infra/build-specs.ts +132 -0
  24. package/infra/index.js +2 -0
  25. package/infra/site-config.js +125 -0
  26. package/infra/site-config.ts +163 -0
  27. package/lib/cached-content-repository.ts +2 -1
  28. package/lib/content-actions-client.ts +98 -0
  29. package/lib/content-repository.ts +3 -0
  30. package/lib/content-source-context.ts +16 -0
  31. package/lib/empty-theme.css +1 -0
  32. package/lib/graphql-content-repository.ts +182 -37
  33. package/lib/layout-scenarios.ts +8 -8
  34. package/lib/site-brand-tenant.ts +3 -22
  35. package/lib/site-brand.ts +44 -42
  36. package/lib/site-env.ts +52 -0
  37. package/lib/staging-gate.ts +37 -0
  38. package/middleware.ts +46 -34
  39. package/package.json +6 -1
  40. package/renderers/pretext/article-page.tsx +1 -6
  41. package/renderers/pretext/presentation-shell.tsx +2 -9
  42. package/routes.manifest.json +1 -1
  43. package/src/with-papyrus.mjs +15 -2
  44. package/publications/anth_us/brand.ts +0 -68
  45. package/publications/anth_us/theme.css +0 -66
  46. package/publications/pilobol_us/brand.ts +0 -37
  47. package/publications/pilobol_us/theme.css +0 -140
  48. package/publications/threat_intelligence/blog-defense/graph.ts +0 -636
  49. package/publications/threat_intelligence/blog-defense/layout.ts +0 -934
  50. package/publications/threat_intelligence/blog-defense/page-background.tsx +0 -590
  51. package/publications/threat_intelligence/brand.ts +0 -40
  52. package/publications/threat_intelligence/pictograms/art.tsx +0 -608
  53. package/publications/threat_intelligence/pictograms/figure.tsx +0 -82
  54. package/publications/threat_intelligence/pictograms/registry.ts +0 -30
  55. package/publications/threat_intelligence/pictograms/system.tsx +0 -305
  56. package/publications/threat_intelligence/seed/seed-edition-content.json +0 -629
  57. package/publications/threat_intelligence/theme.css +0 -1440
  58. /package/{publications/papyrus/theme.css → app/papyrus-theme.css} +0 -0
@@ -1,66 +0,0 @@
1
- /* Anthus theme pack — colors only.
2
- Hex values are read off the live Gatsby site at AnthusAI/Anth.us
3
- (`src/styles/variables.scss` `:root`). That file is not loaded at runtime.
4
- Shadcn owns typography. Do not set a font stack here.
5
-
6
- Slot-by-slot provenance (including the three derived values) is documented
7
- on ANTH_US_THEME_PACK_TOKENS in lib/site-stack.ts — keep the two in sync.
8
-
9
- NO DARK BLOCK ON PURPOSE. The source site has no dark mode: its only
10
- `prefers-color-scheme: dark` rule swaps two code-highlight tints. Porting a
11
- light-only publication means pinning `color-scheme: light` rather than
12
- inventing a dark palette. If Anthus later designs one, add it here and to
13
- `ANTH_US_THEME_PACK_TOKENS.dark` together. */
14
-
15
- :root[data-theme-pack="anth-us"],
16
- :root[data-site-brand="anth-us"] {
17
- color-scheme: light;
18
- --theme-ink: #333333;
19
- --theme-muted: #5f6b73;
20
- --theme-paper: #f1f9fe;
21
- --theme-card: #ffffff;
22
- --theme-line: #cccccc;
23
- --theme-moss: #dc5497;
24
- --theme-ochre: #ff57b4;
25
- --theme-quote: #9b165d;
26
- --theme-tip: #0389d7;
27
- --theme-caution: #e95800;
28
- --theme-stage: #fedded;
29
- --background: var(--theme-paper);
30
- --foreground: var(--theme-ink);
31
- --foreground-strong: var(--theme-ink);
32
- --foreground-muted: var(--theme-muted);
33
- --card: var(--theme-card);
34
- --card-foreground: var(--theme-ink);
35
- --popover: var(--theme-card);
36
- --popover-foreground: var(--theme-ink);
37
- --primary: var(--theme-moss);
38
- --primary-foreground: var(--theme-card);
39
- --secondary: var(--theme-stage);
40
- --secondary-foreground: var(--theme-ink);
41
- --muted: var(--theme-stage);
42
- --muted-foreground: var(--theme-muted);
43
- --accent: var(--theme-ochre);
44
- --accent-foreground: var(--theme-card);
45
- --border: var(--theme-line);
46
- --input: var(--theme-line);
47
- --ring: var(--theme-moss);
48
- --destructive: var(--theme-caution);
49
- --destructive-foreground: var(--theme-card);
50
- --danger: var(--theme-caution);
51
- --danger-foreground: var(--theme-card);
52
- --surface: var(--theme-card);
53
- --surface-foreground: var(--theme-ink);
54
- --paper: var(--theme-paper);
55
- --ink: var(--theme-ink);
56
- }
57
-
58
- /* The source site is light-only, so a dark-preferring browser must not be
59
- handed a half-dark Anthus. Re-assert the light tokens inside the dark media
60
- query for parity with how the other packs are structured. */
61
- @media (prefers-color-scheme: dark) {
62
- :root[data-theme-pack="anth-us"],
63
- :root[data-site-brand="anth-us"] {
64
- color-scheme: light;
65
- }
66
- }
@@ -1,37 +0,0 @@
1
- import type { SiteBrand } from "../../lib/site-brand";
2
- import { PILOBOL_US_THEME_PACK_TOKENS } from "../../lib/site-stack";
3
-
4
- export const pilobolUsBrand: SiteBrand = {
5
- id: "pilobol-us",
6
- appTitle: "Pilobolus",
7
- appDescription: "Pilobolus publication on Papyrus (Pilobol.us).",
8
- mastheadTitle: "PILOBOL.US",
9
- mastheadSubtitle: "Field notes",
10
- backToHomeLabel: "Back to Pilobolus",
11
- articleTitleSuffix: "Pilobolus",
12
- placeholderByline: "Pilobolus",
13
- defaultPresentation: "magazine",
14
- textFont: 'ui-sans-serif, system-ui, "Plus Jakarta Sans", sans-serif',
15
- mastheadWordSplit: false,
16
- mastheadDateFormat: "formatted",
17
- mastheadSource: "brand",
18
- sectionLinkStrategy: "route",
19
- themePack: "pilobol-us",
20
- themeTokens: PILOBOL_US_THEME_PACK_TOKENS,
21
- renderer: { kind: "markus" },
22
- hosting: { kind: "amplify-ssr" },
23
- readerDeployment: {
24
- kind: "amplify-static",
25
- repository: "https://github.com/AnthusAI/Pilobol.us",
26
- domain: "pilobol.us",
27
- amplifyAppId: "d1od6t7lzbwanr",
28
- },
29
- rootRoute: { kind: "newsroom" },
30
- newsroomBasePath: "",
31
- opsChrome: "app",
32
- corpusKey: "pilobol-us",
33
- steeringConfigPath: "corpora/pilobol-us-steering.yml",
34
- newsroomSectionsConfigPath: "corpora/pilobol-us-newsroom-sections.yml",
35
- analysisProfilesPath: "corpora/pilobol-us-analysis-profiles.yml",
36
- publicationName: "Pilobolus",
37
- };
@@ -1,140 +0,0 @@
1
- /* Pilobolus theme pack — colors only.
2
- Hex values are copied from AnthusAI/Pilobol.us `web/css/pilobil-theme-v10.css`
3
- (`pilobil-` spelling is the live filename; a `pilobol-theme-v10.css` rename
4
- may follow). That file is not loaded at runtime.
5
- Shadcn owns typography. Do not set a font stack here. */
6
-
7
- :root[data-theme-pack="pilobol-us"],
8
- :root[data-site-brand="pilobol-us"] {
9
- color-scheme: light;
10
- --theme-ink: #211d17;
11
- --theme-muted: #6b6153;
12
- --theme-paper: #f1ead9;
13
- --theme-card: #fbf6ea;
14
- --theme-line: #d7cbb2;
15
- --theme-moss: #3f5d43;
16
- --theme-ochre: #a35a2a;
17
- --theme-quote: #4a3548;
18
- --theme-tip: #4f6b3a;
19
- --theme-caution: #8a3324;
20
- --theme-stage: #ddd4bf;
21
- --background: var(--theme-paper);
22
- --foreground: var(--theme-ink);
23
- --foreground-strong: var(--theme-ink);
24
- --foreground-muted: var(--theme-muted);
25
- --card: var(--theme-card);
26
- --card-foreground: var(--theme-ink);
27
- --popover: var(--theme-card);
28
- --popover-foreground: var(--theme-ink);
29
- --primary: var(--theme-moss);
30
- --primary-foreground: var(--theme-paper);
31
- --secondary: var(--theme-stage);
32
- --secondary-foreground: var(--theme-ink);
33
- --muted: var(--theme-stage);
34
- --muted-foreground: var(--theme-muted);
35
- --accent: var(--theme-ochre);
36
- --accent-foreground: var(--theme-paper);
37
- --border: var(--theme-line);
38
- --input: var(--theme-line);
39
- --ring: var(--theme-moss);
40
- --destructive: var(--theme-caution);
41
- --destructive-foreground: var(--theme-paper);
42
- --danger: var(--theme-caution);
43
- --danger-foreground: var(--theme-paper);
44
- --surface: var(--theme-card);
45
- --surface-foreground: var(--theme-ink);
46
- --paper: var(--theme-paper);
47
- --ink: var(--theme-ink);
48
- }
49
-
50
- @media (prefers-color-scheme: dark) {
51
- :root[data-theme-pack="pilobol-us"]:not([data-papyrus-theme="light"]):not(.light-theme),
52
- :root[data-site-brand="pilobol-us"]:not([data-papyrus-theme="light"]):not(.light-theme) {
53
- color-scheme: dark;
54
- --theme-ink: #dfded0;
55
- --theme-muted: #8b9184;
56
- --theme-paper: #14170f;
57
- --theme-card: #1c2117;
58
- --theme-line: #333b2a;
59
- --theme-moss: #b7d18a;
60
- --theme-ochre: #d0895a;
61
- --theme-quote: #b7a3c4;
62
- --theme-tip: #9fce7a;
63
- --theme-caution: #d17e6e;
64
- --theme-stage: #0d0f0a;
65
- --background: var(--theme-paper);
66
- --foreground: var(--theme-ink);
67
- --foreground-strong: var(--theme-ink);
68
- --foreground-muted: var(--theme-muted);
69
- --card: var(--theme-card);
70
- --card-foreground: var(--theme-ink);
71
- --popover: var(--theme-card);
72
- --popover-foreground: var(--theme-ink);
73
- --primary: var(--theme-moss);
74
- --primary-foreground: var(--theme-stage);
75
- --secondary: var(--theme-card);
76
- --secondary-foreground: var(--theme-ink);
77
- --muted: var(--theme-card);
78
- --muted-foreground: var(--theme-muted);
79
- --accent: var(--theme-ochre);
80
- --accent-foreground: var(--theme-stage);
81
- --border: var(--theme-line);
82
- --input: var(--theme-line);
83
- --ring: var(--theme-moss);
84
- --destructive: var(--theme-caution);
85
- --destructive-foreground: var(--theme-stage);
86
- --danger: var(--theme-caution);
87
- --danger-foreground: var(--theme-stage);
88
- --surface: var(--theme-card);
89
- --surface-foreground: var(--theme-ink);
90
- --paper: var(--theme-paper);
91
- --ink: var(--theme-ink);
92
- }
93
- }
94
-
95
- :root.dark[data-theme-pack="pilobol-us"],
96
- :root.dark-theme[data-theme-pack="pilobol-us"],
97
- :root[data-theme-pack="pilobol-us"][data-papyrus-theme="dark"],
98
- :root.dark[data-site-brand="pilobol-us"],
99
- :root.dark-theme[data-site-brand="pilobol-us"],
100
- :root[data-site-brand="pilobol-us"][data-papyrus-theme="dark"] {
101
- color-scheme: dark;
102
- --theme-ink: #dfded0;
103
- --theme-muted: #8b9184;
104
- --theme-paper: #14170f;
105
- --theme-card: #1c2117;
106
- --theme-line: #333b2a;
107
- --theme-moss: #b7d18a;
108
- --theme-ochre: #d0895a;
109
- --theme-quote: #b7a3c4;
110
- --theme-tip: #9fce7a;
111
- --theme-caution: #d17e6e;
112
- --theme-stage: #0d0f0a;
113
- --background: var(--theme-paper);
114
- --foreground: var(--theme-ink);
115
- --foreground-strong: var(--theme-ink);
116
- --foreground-muted: var(--theme-muted);
117
- --card: var(--theme-card);
118
- --card-foreground: var(--theme-ink);
119
- --popover: var(--theme-card);
120
- --popover-foreground: var(--theme-ink);
121
- --primary: var(--theme-moss);
122
- --primary-foreground: var(--theme-stage);
123
- --secondary: var(--theme-card);
124
- --secondary-foreground: var(--theme-ink);
125
- --muted: var(--theme-card);
126
- --muted-foreground: var(--theme-muted);
127
- --accent: var(--theme-ochre);
128
- --accent-foreground: var(--theme-stage);
129
- --border: var(--theme-line);
130
- --input: var(--theme-line);
131
- --ring: var(--theme-moss);
132
- --destructive: var(--theme-caution);
133
- --destructive-foreground: var(--theme-stage);
134
- --danger: var(--theme-caution);
135
- --danger-foreground: var(--theme-stage);
136
- --surface: var(--theme-card);
137
- --surface-foreground: var(--theme-ink);
138
- --paper: var(--theme-paper);
139
- --ink: var(--theme-ink);
140
- }