mint 0.8.1 → 0.10.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.
- checksums.yaml +4 -4
- data/Gemfile +1 -26
- data/README.md +117 -37
- data/bin/mint +2 -81
- data/config/templates/base/navigation.css +136 -0
- data/config/templates/base/print.css +152 -0
- data/config/templates/{reset.css → base/reset.css} +1 -1
- data/config/templates/base/style.css +117 -137
- data/config/templates/base/utilities.css +136 -0
- data/config/templates/base/variables.css +124 -0
- data/config/templates/basic/style.css +151 -0
- data/config/templates/default/layout.erb +33 -3
- data/config/templates/default/style.css +95 -164
- data/config/templates/magazine/style.css +383 -0
- data/config/templates/nord/style.css +105 -220
- data/config/templates/nord-dark/style.css +82 -263
- data/lib/mint/commandline/parse.rb +144 -0
- data/lib/mint/commandline/publish.rb +46 -0
- data/lib/mint/commandline/run.rb +30 -0
- data/lib/mint/config.rb +162 -0
- data/lib/mint/{css.rb → css_dsl.rb} +9 -9
- data/lib/mint/css_parser.rb +45 -25
- data/lib/mint/document.rb +250 -365
- data/lib/mint/document_tree.rb +163 -0
- data/lib/mint/exceptions.rb +2 -3
- data/lib/mint/helpers.rb +23 -180
- data/lib/mint/layout.rb +26 -9
- data/lib/mint/renderers/css_renderer.rb +32 -0
- data/lib/mint/renderers/erb_renderer.rb +11 -0
- data/lib/mint/renderers/markdown_renderer.rb +45 -0
- data/lib/mint/style.rb +21 -31
- data/lib/mint/template.rb +30 -0
- data/lib/mint/version.rb +1 -1
- data/lib/mint/workspace.rb +171 -0
- data/lib/mint.rb +44 -12
- data/man/mint.1 +85 -44
- data/spec/cli/README.md +2 -2
- data/spec/cli/argument_parsing_spec.rb +89 -147
- data/spec/cli/bin_integration_spec.rb +23 -243
- data/spec/cli/full_workflow_integration_spec.rb +99 -442
- data/spec/cli/original_style_integration_spec.rb +58 -0
- data/spec/cli/publish_workflow_spec.rb +72 -70
- data/spec/commandline_path_integration_spec.rb +230 -0
- data/spec/config_file_integration_spec.rb +362 -0
- data/spec/{css_spec.rb → css_dsl_spec.rb} +7 -3
- data/spec/css_parser_spec.rb +59 -1
- data/spec/document_spec.rb +37 -242
- data/spec/flattened_path_spec.rb +150 -0
- data/spec/layout_spec.rb +42 -3
- data/spec/mint_spec.rb +22 -217
- data/spec/path_handling_spec.rb +237 -0
- data/spec/run_cli_tests.rb +1 -1
- data/spec/spec_helper.rb +3 -10
- data/spec/style_spec.rb +31 -56
- data/spec/support/cli_helpers.rb +7 -10
- data/spec/support/matchers.rb +1 -1
- data/spec/template_spec.rb +31 -0
- data/spec/workspace_spec.rb +177 -0
- metadata +75 -89
- data/bin/mint-epub +0 -20
- data/config/templates/garden/layout.erb +0 -38
- data/config/templates/garden/style.css +0 -303
- data/config/templates/nord/layout.erb +0 -11
- data/config/templates/nord-dark/layout.erb +0 -11
- data/config/templates/zen/layout.erb +0 -11
- data/config/templates/zen/style.css +0 -114
- data/lib/mint/command_line.rb +0 -360
- data/lib/mint/css_template.rb +0 -37
- data/lib/mint/markdown_template.rb +0 -47
- data/lib/mint/mint.rb +0 -313
- data/lib/mint/plugin.rb +0 -136
- data/lib/mint/plugins/epub.rb +0 -293
- data/lib/mint/resource.rb +0 -101
- data/plugins/templates/epub/layouts/container.haml +0 -5
- data/plugins/templates/epub/layouts/content.haml +0 -35
- data/plugins/templates/epub/layouts/layout.haml +0 -6
- data/plugins/templates/epub/layouts/title.haml +0 -11
- data/plugins/templates/epub/layouts/toc.haml +0 -26
- data/spec/cli/configuration_management_spec.rb +0 -363
- data/spec/cli/template_management_spec.rb +0 -300
- data/spec/helpers_spec.rb +0 -249
- data/spec/plugin_spec.rb +0 -449
- data/spec/resource_spec.rb +0 -135
@@ -1,15 +1,22 @@
|
|
1
1
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap');
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
/* Import base system */
|
4
|
+
@import "../base/style.css";
|
5
|
+
@import "../base/navigation.css";
|
6
|
+
@import "../base/utilities.css";
|
7
7
|
|
8
|
+
/* Nord template theme variables */
|
9
|
+
:root {
|
10
|
+
/* Typography settings */
|
11
|
+
--base-font-size: 16px;
|
12
|
+
--base-line-height: 1.6;
|
13
|
+
--scale-ratio: 1.2;
|
14
|
+
|
15
|
+
/* Print settings */
|
8
16
|
--print-font-size: 11pt;
|
9
17
|
--print-line-height: 16pt;
|
10
|
-
|
11
|
-
|
12
|
-
/* Nord color scheme */
|
18
|
+
|
19
|
+
/* Nord color palette */
|
13
20
|
--nord0: #2e3440; /* Polar Night - darkest */
|
14
21
|
--nord1: #3b4252; /* Polar Night */
|
15
22
|
--nord2: #434c5e; /* Polar Night */
|
@@ -26,314 +33,192 @@
|
|
26
33
|
--nord13: #ebcb8b; /* Aurora - yellow */
|
27
34
|
--nord14: #a3be8c; /* Aurora - green */
|
28
35
|
--nord15: #b48ead; /* Aurora - purple */
|
29
|
-
|
30
|
-
|
31
|
-
--
|
32
|
-
--
|
33
|
-
--
|
34
|
-
--
|
35
|
-
--
|
36
|
-
--
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
|
37
|
+
/* Semantic colors using Nord palette */
|
38
|
+
--color-text: var(--nord0);
|
39
|
+
--color-text-subtle: var(--nord3);
|
40
|
+
--color-text-muted: var(--nord2);
|
41
|
+
--color-background: #ffffff;
|
42
|
+
--color-surface: #ffffff;
|
43
|
+
--color-surface-subtle: var(--nord6);
|
44
|
+
--color-border: var(--nord4);
|
45
|
+
--color-accent: var(--nord10);
|
46
|
+
--color-accent-hover: var(--nord8);
|
47
|
+
--color-accent-subtle: rgba(94, 129, 172, 0.1);
|
48
|
+
|
49
|
+
/* Component colors */
|
50
|
+
--color-code-bg: var(--nord5);
|
51
|
+
--color-code-text: var(--nord0);
|
52
|
+
--color-pre-bg: var(--nord6);
|
53
|
+
--color-pre-text: var(--nord0);
|
54
|
+
--color-quote-bg: rgba(143, 188, 187, 0.05);
|
55
|
+
--color-quote-text: var(--nord3);
|
56
|
+
--color-quote-border: var(--nord8);
|
57
|
+
|
58
|
+
/* Navigation colors */
|
59
|
+
--color-nav-bg: var(--nord6);
|
60
|
+
--color-nav-text: var(--nord2);
|
61
|
+
--color-nav-text-hover: var(--nord0);
|
62
|
+
--color-nav-text-active: var(--nord10);
|
63
|
+
--color-nav-bg-hover: var(--nord5);
|
64
|
+
--color-nav-bg-active: rgba(94, 129, 172, 0.1);
|
65
|
+
--color-nav-border: var(--nord4);
|
66
|
+
--color-nav-border-active: var(--nord10);
|
67
|
+
|
68
|
+
/* Table colors */
|
69
|
+
--color-table-bg: #ffffff;
|
70
|
+
--color-table-header-bg: var(--nord5);
|
71
|
+
--color-table-header-text: var(--nord0);
|
72
|
+
--color-table-border: var(--nord4);
|
73
|
+
--color-table-stripe: transparent;
|
74
|
+
--color-table-hover: rgba(143, 188, 187, 0.03);
|
75
|
+
|
76
|
+
/* Layout */
|
77
|
+
--container-max-width: 90ch;
|
78
|
+
}
|
79
|
+
|
80
|
+
/* Typography */
|
41
81
|
body {
|
42
82
|
font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
43
|
-
color: var(--
|
44
|
-
|
45
|
-
background-color: var(--nord-background);
|
83
|
+
background-color: var(--color-background);
|
84
|
+
color: var(--color-text);
|
46
85
|
font-weight: 400;
|
47
|
-
letter-spacing: -0.005em;
|
48
86
|
font-feature-settings: "liga" 1, "kern" 1;
|
87
|
+
overflow-x: hidden;
|
49
88
|
}
|
50
89
|
|
51
90
|
h1, h2, h3, h4, h5, h6 {
|
52
91
|
font-weight: 600;
|
53
|
-
color: var(--nord-text);
|
54
|
-
letter-spacing: -0.02em;
|
55
92
|
}
|
56
93
|
|
57
94
|
h1 {
|
58
|
-
font-size: calc(var(--screen-font-size) * 1.8);
|
59
|
-
margin-top: calc(var(--screen-unit) * 2);
|
60
|
-
margin-bottom: calc(var(--screen-unit) * 1.5);
|
61
|
-
line-height: 1.3;
|
62
95
|
color: var(--nord0);
|
63
96
|
}
|
64
97
|
|
65
98
|
h2 {
|
66
|
-
font-size: calc(var(--screen-font-size) * 1.4);
|
67
|
-
margin-top: calc(var(--screen-unit) * 1.5);
|
68
|
-
margin-bottom: calc(var(--screen-unit) * 0.75);
|
69
|
-
line-height: 1.4;
|
70
99
|
color: var(--nord1);
|
71
100
|
}
|
72
101
|
|
73
102
|
h3 {
|
74
|
-
font-size: calc(var(--screen-font-size) * 1.2);
|
75
|
-
margin-top: calc(var(--screen-unit) * 1.25);
|
76
|
-
margin-bottom: calc(var(--screen-unit) * 0.5);
|
77
|
-
line-height: 1.4;
|
78
103
|
color: var(--nord2);
|
79
104
|
}
|
80
105
|
|
81
106
|
h4, h5, h6 {
|
82
|
-
font-size: calc(var(--screen-font-size) * 1.05);
|
83
|
-
margin-top: calc(var(--screen-unit) * 1);
|
84
|
-
margin-bottom: calc(var(--screen-unit) * 0.25);
|
85
|
-
line-height: 1.4;
|
86
107
|
color: var(--nord3);
|
87
108
|
}
|
88
109
|
|
89
|
-
|
90
|
-
|
110
|
+
/* Container layouts */
|
111
|
+
#container {
|
112
|
+
max-width: var(--container-max-width);
|
113
|
+
margin: var(--space-base) auto;
|
114
|
+
padding: var(--space-base) var(--space-2xl);
|
91
115
|
}
|
92
116
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
padding:
|
101
|
-
border-radius: 0 4px 4px 0;
|
117
|
+
/* Container adjustments when navigation is present */
|
118
|
+
body:has(#navigation) #container,
|
119
|
+
body.has-navigation #container {
|
120
|
+
max-width: calc(var(--container-max-width) - var(--navigation-width));
|
121
|
+
margin-right: auto;
|
122
|
+
margin-top: var(--space-base);
|
123
|
+
margin-bottom: var(--space-base);
|
124
|
+
padding: var(--space-base) var(--space-2xl);
|
102
125
|
}
|
103
126
|
|
127
|
+
/* Enhanced code styling */
|
104
128
|
code {
|
105
129
|
font-family: "SF Mono", "JetBrains Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace;
|
106
|
-
font-size: calc(var(--screen-font-size) * 0.9);
|
107
|
-
background-color: var(--nord5);
|
108
|
-
color: var(--nord0);
|
109
|
-
padding: 0.15em 0.4em;
|
110
|
-
border-radius: 4px;
|
111
130
|
font-weight: 500;
|
112
|
-
letter-spacing: 0;
|
113
|
-
}
|
114
|
-
|
115
|
-
pre {
|
116
|
-
background-color: var(--nord6);
|
117
|
-
border: 1px solid var(--nord-border);
|
118
|
-
border-radius: 8px;
|
119
|
-
padding: calc(var(--screen-unit) * 1);
|
120
|
-
overflow-x: auto;
|
121
|
-
margin: calc(var(--screen-unit) * 1) 0;
|
122
131
|
}
|
123
132
|
|
124
133
|
pre code {
|
125
|
-
|
126
|
-
|
127
|
-
border-radius: 0;
|
128
|
-
font-size: calc(var(--screen-font-size) * 0.85);
|
129
|
-
color: var(--nord0);
|
130
|
-
}
|
131
|
-
|
132
|
-
a:link, a:visited {
|
133
|
-
color: var(--nord-accent);
|
134
|
-
text-decoration: none;
|
135
|
-
border-bottom: 1px solid transparent;
|
136
|
-
transition: all 0.2s ease;
|
137
|
-
}
|
138
|
-
|
139
|
-
a:hover {
|
140
|
-
color: var(--nord8);
|
141
|
-
border-bottom-color: var(--nord8);
|
134
|
+
color: var(--color-text);
|
135
|
+
font-weight: normal;
|
142
136
|
}
|
143
137
|
|
138
|
+
/* Enhanced styling */
|
144
139
|
strong {
|
145
140
|
font-weight: 600;
|
146
|
-
color: var(--
|
141
|
+
color: var(--color-text);
|
147
142
|
}
|
148
143
|
|
149
144
|
em {
|
150
|
-
font-style: italic;
|
151
145
|
color: var(--nord1);
|
152
146
|
}
|
153
147
|
|
154
|
-
|
155
|
-
margin: calc(var(--screen-unit) * 0.75) 0;
|
156
|
-
padding-left: calc(var(--screen-unit) * 1.5);
|
157
|
-
}
|
158
|
-
|
159
|
-
li {
|
160
|
-
margin: calc(var(--screen-unit) * 0.25) 0;
|
161
|
-
}
|
162
|
-
|
163
|
-
table {
|
164
|
-
border-collapse: collapse;
|
165
|
-
margin: calc(var(--screen-unit) * 1) 0;
|
166
|
-
width: 100%;
|
167
|
-
background-color: var(--nord-surface);
|
168
|
-
border-radius: 6px;
|
169
|
-
overflow: hidden;
|
170
|
-
box-shadow: 0 1px 3px rgba(46, 52, 64, 0.1);
|
171
|
-
}
|
172
|
-
|
173
|
-
th, td {
|
174
|
-
padding: calc(var(--screen-unit) * 0.5) calc(var(--screen-unit) * 0.75);
|
175
|
-
text-align: left;
|
176
|
-
border-bottom: 1px solid var(--nord-border);
|
177
|
-
}
|
178
|
-
|
148
|
+
/* Table enhancements */
|
179
149
|
th {
|
180
|
-
background-color: var(--nord5);
|
181
|
-
font-weight: 600;
|
182
|
-
color: var(--nord0);
|
183
|
-
font-size: calc(var(--screen-font-size) * 0.9);
|
184
150
|
text-transform: uppercase;
|
185
|
-
letter-spacing: 0.05em;
|
186
151
|
}
|
187
152
|
|
188
153
|
tr:last-child td {
|
189
154
|
border-bottom: none;
|
190
155
|
}
|
191
156
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
hr {
|
197
|
-
border: none;
|
198
|
-
height: 1px;
|
199
|
-
background-color: var(--nord-border);
|
200
|
-
margin: calc(var(--screen-unit) * 2) 0;
|
157
|
+
/* Navigation font size adjustments */
|
158
|
+
#navigation h3 {
|
159
|
+
font-weight: 600;
|
160
|
+
color: var(--color-text-subtle);
|
201
161
|
}
|
202
162
|
|
203
|
-
#
|
204
|
-
|
205
|
-
|
206
|
-
margin: calc(var(--screen-unit) * 3) auto;
|
207
|
-
padding: calc(var(--screen-unit) * 3) calc(var(--screen-unit) * 4);
|
208
|
-
border: 1px solid var(--nord-border);
|
209
|
-
background-color: var(--nord-surface);
|
210
|
-
box-shadow:
|
211
|
-
0 4px 6px rgba(46, 52, 64, 0.05),
|
212
|
-
0 10px 20px rgba(46, 52, 64, 0.1);
|
213
|
-
border-radius: 8px;
|
163
|
+
#navigation .directory-name {
|
164
|
+
font-weight: 600;
|
165
|
+
color: var(--nord1);
|
214
166
|
}
|
215
167
|
|
216
|
-
|
168
|
+
/* Responsive design */
|
169
|
+
@media (max-width: 960px) {
|
170
|
+
body {
|
171
|
+
background-color: transparent;
|
172
|
+
margin: 0;
|
173
|
+
}
|
174
|
+
|
175
|
+
#navigation {
|
176
|
+
border-bottom: 1px solid var(--color-border);
|
177
|
+
}
|
178
|
+
|
179
|
+
body:has(#navigation) #container,
|
180
|
+
body.has-navigation #container,
|
217
181
|
#container {
|
218
|
-
|
219
|
-
|
182
|
+
max-width: var(--container-max-width);
|
183
|
+
margin: 0;
|
184
|
+
padding: var(--space-xl) var(--space-xl);
|
220
185
|
border-radius: 0;
|
221
186
|
box-shadow: none;
|
222
187
|
border: none;
|
223
188
|
}
|
224
189
|
}
|
225
190
|
|
191
|
+
/* Print styles - Nord-specific overrides */
|
226
192
|
@media print {
|
227
|
-
@page {
|
228
|
-
margin: 0.75in;
|
229
|
-
size: letter;
|
230
|
-
}
|
231
|
-
|
232
|
-
:root {
|
233
|
-
--print-font-size: 11pt;
|
234
|
-
--print-line-height: 16pt;
|
235
|
-
--screen-font-size: var(--print-font-size);
|
236
|
-
--screen-line-height: var(--print-line-height);
|
237
|
-
--screen-unit: var(--print-line-height);
|
238
|
-
}
|
239
|
-
|
240
193
|
body {
|
241
194
|
background-color: white !important;
|
242
195
|
color: #000 !important;
|
243
|
-
font-size: var(--print-font-size) !important;
|
244
|
-
line-height: var(--print-line-height) !important;
|
245
196
|
}
|
246
197
|
|
247
198
|
#container {
|
248
|
-
box-shadow: none !important;
|
249
|
-
border: none !important;
|
250
|
-
border-radius: 0 !important;
|
251
|
-
margin: 0 !important;
|
252
|
-
padding: 0 !important;
|
253
|
-
max-width: none !important;
|
254
199
|
background-color: white !important;
|
255
200
|
}
|
256
201
|
|
257
202
|
h1, h2, h3, h4, h5, h6 {
|
258
203
|
color: #000 !important;
|
259
|
-
page-break-after: avoid;
|
260
|
-
}
|
261
|
-
|
262
|
-
h1 {
|
263
|
-
font-size: 18pt !important;
|
264
|
-
line-height: 22pt !important;
|
265
|
-
}
|
266
|
-
|
267
|
-
h2 {
|
268
|
-
font-size: 14pt !important;
|
269
|
-
line-height: 18pt !important;
|
270
|
-
}
|
271
|
-
|
272
|
-
h3 {
|
273
|
-
font-size: 12pt !important;
|
274
|
-
line-height: 16pt !important;
|
275
|
-
}
|
276
|
-
|
277
|
-
h4, h5, h6 {
|
278
|
-
font-size: 11pt !important;
|
279
|
-
line-height: 16pt !important;
|
280
|
-
}
|
281
|
-
|
282
|
-
p, li {
|
283
|
-
orphans: 3;
|
284
|
-
widows: 3;
|
285
|
-
}
|
286
|
-
|
287
|
-
blockquote, pre {
|
288
|
-
page-break-inside: avoid;
|
289
|
-
}
|
290
|
-
|
291
|
-
a {
|
292
|
-
color: #000 !important;
|
293
|
-
text-decoration: underline !important;
|
294
204
|
}
|
295
205
|
|
296
206
|
code {
|
297
207
|
background-color: #f5f5f5 !important;
|
298
|
-
border-radius: 0 !important;
|
299
208
|
color: #000 !important;
|
300
|
-
font-size: 9pt !important;
|
301
209
|
}
|
302
210
|
|
303
211
|
pre {
|
304
212
|
background-color: #f8f8f8 !important;
|
305
213
|
border: 1px solid #ddd !important;
|
306
|
-
border-radius: 0 !important;
|
307
214
|
color: #000 !important;
|
308
215
|
}
|
309
216
|
|
310
|
-
pre code {
|
311
|
-
background-color: transparent !important;
|
312
|
-
font-size: 9pt !important;
|
313
|
-
}
|
314
|
-
|
315
217
|
table {
|
316
|
-
border-collapse: collapse !important;
|
317
|
-
border-radius: 0 !important;
|
318
218
|
background-color: white !important;
|
319
|
-
box-shadow: none !important;
|
320
|
-
}
|
321
|
-
|
322
|
-
th, td {
|
323
|
-
border: 1px solid #000 !important;
|
324
|
-
color: #000 !important;
|
325
219
|
}
|
326
220
|
|
327
221
|
th {
|
328
222
|
background-color: #f0f0f0 !important;
|
329
223
|
}
|
330
|
-
|
331
|
-
table, table tr td, table tr th {
|
332
|
-
page-break-inside: avoid;
|
333
|
-
}
|
334
|
-
|
335
|
-
img {
|
336
|
-
max-width: 100% !important;
|
337
|
-
page-break-inside: avoid;
|
338
|
-
}
|
339
224
|
}
|