-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontent.config.ts
More file actions
91 lines (86 loc) · 2.95 KB
/
Copy pathcontent.config.ts
File metadata and controls
91 lines (86 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { defineCollection } from "astro:content";
import { glob } from "astro/loaders";
import { z } from "astro/zod";
// Final merged schema — docs/explorations/0008 (merges 0002/0003/0004/0005).
const practices = defineCollection({
loader: glob({ pattern: "**/*.md", base: "./src/content/practices" }),
schema: z.object({
title: z.string(),
states: z.array(
z.enum(["settle", "remobilize", "build-capacity", "freeze-blend"]),
),
durationMinutes: z.number().min(1).max(10),
sequenceTier: z.union([z.literal(1), z.literal(2), z.literal(3)]),
posture: z.enum(["lying", "seated", "standing", "walking", "any"]),
modality: z.enum(["movement", "stillness", "touch", "sound", "breath"]),
anchor: z.enum(["external", "mixed", "internal"]),
stimPositive: z.boolean().default(true),
soundContent: z.enum(["none", "voice", "chimes"]).default("none"),
whyItWorks: z.string(),
source: z.string(),
lastReviewed: z.coerce.date(),
}),
});
const modalities = defineCollection({
loader: glob({ pattern: "**/*.md", base: "./src/content/modalities" }),
schema: z.object({
name: z.string(),
category: z.enum([
"therapy",
"bodywork",
"movement",
"breath",
"medical",
"substance",
"framework",
]),
// Only set for substance/medical modalities; drives an honest legality
// note on the page (0009). Never a how-to — see CONTENT_GUIDELINES.md.
legalStatus: z
.enum(["prescription-only", "research-only", "illegal", "varies"])
.optional(),
evidenceTier: z.enum([
"strong",
"moderate",
"preliminary",
"practitioner-reported",
"contested",
]),
evidenceNote: z.string(),
credentialGate: z.enum([
"licensed",
"certified-unlicensed",
"unregulated",
]),
costAccess: z.string(),
whoItTendsToFit: z.string(),
whoItMayNotFit: z.string(),
directoryUrl: z.url().optional(),
archivedDirectoryUrl: z.url().optional(),
founderExperience: z.string().optional(),
freeFirstSteps: z.array(z.string()).default([]),
lastReviewed: z.coerce.date(),
}),
});
const garden = defineCollection({
loader: glob({ pattern: "**/*.md", base: "./src/content/garden" }),
schema: z.object({
title: z.string(),
type: z.enum(["note", "essay", "guide", "field-guide"]).default("note"),
stage: z.enum(["seedling", "budding", "evergreen"]).default("seedling"),
series: z.string().optional(),
order: z.number().optional(),
practiceStage: z.enum(["notice", "connect", "act"]).default("notice"),
demo: z
.enum(["none", "tone-probe", "percept-poll", "illusion"])
.default("none"),
description: z.string(),
planted: z.coerce.date(),
lastTended: z.coerce.date().optional(),
lastReviewed: z.coerce.date(),
sources: z
.array(z.object({ label: z.string(), url: z.url() }))
.default([]),
}),
});
export const collections = { practices, modalities, garden };