summary refs log tree commit diff stats
path: root/boudin.page.style.scm
diff options
context:
space:
mode:
Diffstat (limited to 'boudin.page.style.scm')
-rw-r--r--boudin.page.style.scm47
1 files changed, 47 insertions, 0 deletions
diff --git a/boudin.page.style.scm b/boudin.page.style.scm new file mode 100644 index 0000000..351cf1a --- /dev/null +++ b/boudin.page.style.scm
@@ -0,0 +1,47 @@
1(declare (module (boudin page style))
2 (export make-style
3 style
4 page-style
5 style-template
6 site-style
7 style-writer))
8
9(import (boudin page)
10 (boudin site)
11 (scss)
12 (html-parser)
13 (srfi 152)
14 (chicken pathname))
15
16(define (make-style . rules)
17 (make-page rules
18 (make-pathname (site-output) "style.css")
19 (style-template)
20 (style-writer)
21 '()))
22
23(define (style props)
24 ;; sxml: `(el (@ ,(style '((padding 3em) (color red)))) content ...)
25 (let ((sty (scss->css `(css+ (_ ,@props)))))
26 (list 'style
27 (substring sty 4 (- (string-length sty) 2)))))
28
29(define (page-style . rules)
30 ;; sxml: `(html (head ,(page-style '(body (margin auto)))))
31 `(style ,(scss->css `(css+ ,@rules))))
32
33(define style-template
34 (make-parameter
35 (lambda (pg)
36 `(css+ ,@(page-content pg)))))
37
38(define site-style
39 (make-parameter
40 '((body (font 18px/1.4 sans-serif)
41 (max-width 70ch)
42 (padding 2ch)
43 (margin 0 auto)))))
44
45(define style-writer
46 (make-parameter
47 write-css))