mr-md 1.0.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.
@@ -0,0 +1,207 @@
1
+ export type BlockType = "heading" | "markdown" | "section" | "important" | "note" | "warning" | "tip" | "simulation" | "animation" | "media" | "youtube" | "latex" | "columns" | "quiz" | "divider" | "code";
2
+ export interface BaseBlock {
3
+ type: BlockType;
4
+ }
5
+ export interface HeadingBlock extends BaseBlock {
6
+ type: "heading";
7
+ src: string;
8
+ title?: string;
9
+ }
10
+ export interface MarkdownBlock extends BaseBlock {
11
+ type: "markdown";
12
+ src: string;
13
+ }
14
+ export interface SectionBlock extends BaseBlock {
15
+ type: "section";
16
+ src: string;
17
+ label?: string;
18
+ }
19
+ export interface CalloutBlock extends BaseBlock {
20
+ type: "important" | "warning" | "tip" | "note";
21
+ src: string;
22
+ }
23
+ export interface CodeBlock extends BaseBlock {
24
+ type: "code";
25
+ src: string;
26
+ lang?: string;
27
+ label?: string;
28
+ }
29
+ export type BlockAccent = "neutral" | "blue" | "teal" | "amber" | "rose" | "violet";
30
+ export interface CaptionedBlock {
31
+ label?: string;
32
+ caption?: string;
33
+ }
34
+ export interface SimulationBlock extends BaseBlock, CaptionedBlock {
35
+ type: "simulation";
36
+ src: string;
37
+ props?: Record<string, unknown>;
38
+ tunables?: Record<string, SimulationControl>;
39
+ dependencies?: string[];
40
+ height?: number;
41
+ controls?: "interactive" | "observe";
42
+ accent?: BlockAccent;
43
+ }
44
+ export interface AnimationBlock extends BaseBlock, CaptionedBlock {
45
+ type: "animation";
46
+ src: string;
47
+ loop?: boolean;
48
+ height?: number;
49
+ accent?: BlockAccent;
50
+ }
51
+ export type MediaKind = "image" | "video" | "audio";
52
+ export interface MediaBlock extends BaseBlock, CaptionedBlock {
53
+ type: "media";
54
+ src: string;
55
+ kind: MediaKind;
56
+ alt?: string;
57
+ credit?: string;
58
+ poster?: string;
59
+ controls?: boolean;
60
+ }
61
+ export interface YouTubeBlock extends BaseBlock, CaptionedBlock {
62
+ type: "youtube";
63
+ id: string;
64
+ start?: number;
65
+ }
66
+ export interface LatexBlock extends BaseBlock, CaptionedBlock {
67
+ type: "latex";
68
+ tex: string;
69
+ display?: boolean;
70
+ }
71
+ export interface ColumnItem {
72
+ src?: string;
73
+ markdown?: string;
74
+ latex?: string;
75
+ width?: string;
76
+ }
77
+ export interface ColumnsBlock extends BaseBlock, CaptionedBlock {
78
+ type: "columns";
79
+ columns: ColumnItem[];
80
+ }
81
+ export interface QuizBlock extends BaseBlock, CaptionedBlock {
82
+ type: "quiz";
83
+ src: string;
84
+ }
85
+ export interface DividerBlock extends BaseBlock {
86
+ type: "divider";
87
+ }
88
+ export type Block = HeadingBlock | MarkdownBlock | SectionBlock | CalloutBlock | CodeBlock | SimulationBlock | AnimationBlock | MediaBlock | YouTubeBlock | LatexBlock | ColumnsBlock | QuizBlock | DividerBlock;
89
+ export interface LessonMeta {
90
+ title: string;
91
+ slug: string;
92
+ description?: string;
93
+ tags?: string[];
94
+ author?: string;
95
+ status?: "read" | "unread" | "locked";
96
+ parentSlug?: string;
97
+ prevSlug?: string;
98
+ prevTitle?: string;
99
+ nextSlug?: string;
100
+ nextTitle?: string;
101
+ }
102
+ export interface Lesson {
103
+ meta: LessonMeta;
104
+ blocks: Block[];
105
+ }
106
+ export interface LessonPreset {
107
+ layout?: "lesson" | "article" | "lab";
108
+ density?: "comfortable" | "compact";
109
+ tone?: "scholarly" | "studio" | "minimal";
110
+ }
111
+ export interface QuizQuestion {
112
+ q: string;
113
+ options: string[];
114
+ answer: number;
115
+ explanation?: string;
116
+ }
117
+ export interface QuizFile {
118
+ questions: QuizQuestion[];
119
+ }
120
+ /**
121
+ * Global configuration for building a lesson or chapter.
122
+ * Passed to `lesson(title, options)` or `chapter(title, options)`.
123
+ */
124
+ export interface BuildOptions {
125
+ /** Directory where the generated HTML file will be written. Default: `'./out'` */
126
+ outDir?: string;
127
+ /** Base path for resolving local files like `.md`, `.js`, `.json`. Default: `'.'` */
128
+ contentBase?: string;
129
+ /** Light or dark mode. `auto` respects user system preferences. Default: `'auto'` */
130
+ theme?: "light" | "dark" | "auto";
131
+ /** Visual color palette of the generated page. Default: `'ink'` */
132
+ palette?: "ink" | "field" | "ember";
133
+ /** Custom CSS font-family string (e.g. `'Inter, sans-serif'`). */
134
+ font?: string;
135
+ /** Path to a favicon. */
136
+ favicon?: string;
137
+ /** Custom raw HTML to inject into the `<head>` tag. */
138
+ head?: string;
139
+ /** Preset for layout, density, and tone. */
140
+ preset?: LessonPreset;
141
+ /** If true, throws errors on missing files and invalid blocks to prevent silent failures. Default: `true` */
142
+ strict?: boolean;
143
+ }
144
+ /** Configuration for simulation blocks */
145
+ export interface SimulationOptions {
146
+ props?: Record<string, unknown>;
147
+ tunables?: Record<string, SimulationControl>;
148
+ height?: number;
149
+ label?: string;
150
+ caption?: string;
151
+ controls?: SimulationBlock["controls"];
152
+ accent?: BlockAccent;
153
+ }
154
+ export interface SimulationConfig extends SimulationOptions {
155
+ dependencies?: string[];
156
+ }
157
+ /** Represents a single interactive control in a simulation (e.g., a slider) */
158
+ export interface SimulationControl {
159
+ label?: string;
160
+ min?: number;
161
+ max?: number;
162
+ step?: number;
163
+ }
164
+ export interface AnimationOptions {
165
+ loop?: boolean;
166
+ height?: number;
167
+ label?: string;
168
+ caption?: string;
169
+ accent?: BlockAccent;
170
+ }
171
+ export interface MediaOptions {
172
+ kind?: MediaKind;
173
+ alt?: string;
174
+ label?: string;
175
+ caption?: string;
176
+ credit?: string;
177
+ poster?: string;
178
+ controls?: boolean;
179
+ }
180
+ export interface YouTubeOptions {
181
+ start?: number;
182
+ label?: string;
183
+ caption?: string;
184
+ }
185
+ export interface LatexOptions {
186
+ display?: boolean;
187
+ label?: string;
188
+ caption?: string;
189
+ }
190
+ export interface ColumnsOptions {
191
+ label?: string;
192
+ caption?: string;
193
+ }
194
+ /**
195
+ * Represents a logical grouping of multiple lessons.
196
+ */
197
+ export interface ChapterMeta {
198
+ title: string;
199
+ slug: string;
200
+ description?: string;
201
+ status?: "completed" | "active" | "locked";
202
+ }
203
+ export interface Chapter {
204
+ meta: ChapterMeta;
205
+ lessons: Lesson[];
206
+ }
207
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ // ─── Block Types ─────────────────────────────────────────────────────────────
2
+ export {};
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "mr-md",
3
+ "version": "1.0.0",
4
+ "description": "Mr Markdown is an opinionated TypeScript SDK for building interactive, single-file learning pages.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "src"
18
+ ],
19
+ "directories": {
20
+ "demo": "demo"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc -p tsconfig.build.json && mkdir -p dist/styles dist/client && cp -r src/styles/* dist/styles/ && cp -r src/client/* dist/client/",
24
+ "prepublishOnly": "bun run build",
25
+ "build:example": "bun demo/demo-1/course.ts",
26
+ "serve:example": "bunx serve demo/demo-1/out",
27
+ "typecheck": "bunx tsc --noEmit",
28
+ "test": "bun test && bun run typecheck",
29
+ "test:watch": "bun test --watch",
30
+ "lint": "biome lint .",
31
+ "format": "biome format --write .",
32
+ "check": "biome check --write ."
33
+ },
34
+ "keywords": [
35
+ "markdown",
36
+ "blog",
37
+ "interactive",
38
+ "education",
39
+ "shiki",
40
+ "katex",
41
+ "course"
42
+ ],
43
+ "author": "Chirayu Chhabra",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/chirayuChhabra/blogkit.git"
47
+ },
48
+ "license": "ISC",
49
+ "devDependencies": {
50
+ "@types/katex": "^0.16.8",
51
+ "@types/node": "^25.8.0",
52
+ "biome": "^0.3.3",
53
+ "ts-node": "^10.9.2",
54
+ "typescript": "^6.0.3"
55
+ },
56
+ "dependencies": {
57
+ "highlight.js": "^11.11.1",
58
+ "katex": "^0.16.47",
59
+ "marked": "^18.0.4",
60
+ "marked-highlight": "^2.2.4"
61
+ }
62
+ }