@jxsuite/starters 3.3.1 → 3.4.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.
- package/package.json +5 -5
- package/sites/blog/package.json +3 -3
- package/sites/blog/project.jxn +86 -0
- package/sites/course/package.json +3 -3
- package/sites/course/project.jxn +94 -0
- package/sites/event/package.json +3 -3
- package/sites/event/project.jxn +114 -0
- package/sites/fitness-studio/package.json +3 -3
- package/sites/fitness-studio/project.jxn +124 -0
- package/sites/home-services/package.json +3 -3
- package/sites/home-services/project.jxn +113 -0
- package/sites/museum/package.json +3 -3
- package/sites/museum/project.jxn +130 -0
- package/sites/nonprofit/package.json +3 -3
- package/sites/nonprofit/project.jxn +99 -0
- package/sites/portfolio/package.json +3 -3
- package/sites/portfolio/project.jxn +85 -0
- package/sites/professional-firm/package.json +3 -3
- package/sites/professional-firm/project.jxn +94 -0
- package/sites/real-estate/package.json +3 -3
- package/sites/real-estate/project.jxn +103 -0
- package/sites/restaurant/package.json +3 -3
- package/sites/restaurant/project.jxn +93 -0
- package/sites/saas/package.json +3 -3
- package/sites/saas/project.jxn +119 -0
- package/sites/shop/package.json +3 -3
- package/sites/shop/project.jxn +100 -0
- package/sites/blog/project.json +0 -140
- package/sites/course/project.json +0 -141
- package/sites/event/project.json +0 -163
- package/sites/fitness-studio/project.json +0 -175
- package/sites/home-services/project.json +0 -160
- package/sites/museum/project.json +0 -179
- package/sites/nonprofit/project.json +0 -147
- package/sites/portfolio/project.json +0 -137
- package/sites/professional-firm/project.json +0 -145
- package/sites/real-estate/project.json +0 -163
- package/sites/restaurant/project.json +0 -145
- package/sites/saas/project.json +0 -166
- package/sites/shop/project.json +0 -156
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project Atrium
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
i18n {
|
|
10
|
+
defaultLocale en
|
|
11
|
+
locales en fr-CA ar
|
|
12
|
+
routing prefix-except-default
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
$head {
|
|
16
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
17
|
+
meta name=description content="Atrium is the city museum of art and history — four centuries of the harbour, its makers and its maps, in a glass hall open to everyone, in English, French and Arabic."
|
|
18
|
+
link rel=icon href="/favicon.svg" type="image/svg+xml"
|
|
19
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
20
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
21
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Noto+Sans+Display:wght@400;500;700&family=Noto+Sans+Mono:wght@400;500&family=Noto+Serif:wght@400;500;600&family=Noto+Kufi+Arabic:wght@400;500;700&family=Noto+Naskh+Arabic:wght@400;500;600&display=swap"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
$media {
|
|
25
|
+
--lg "(max-width: 1080px)"
|
|
26
|
+
--md "(max-width: 840px)"
|
|
27
|
+
--sm "(max-width: 600px)"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
style {
|
|
31
|
+
--color-ink "#17181d"
|
|
32
|
+
--color-ink-deep "#0b0c10"
|
|
33
|
+
--color-chalk "#e7e3da"
|
|
34
|
+
--color-chalk-deep "#d8d3c6"
|
|
35
|
+
--color-card "#f7f5f0"
|
|
36
|
+
--color-pigment "#2438c8"
|
|
37
|
+
--color-pigment-deep "#182a9c"
|
|
38
|
+
--color-pigment-tint "rgba(36, 56, 200, 0.09)"
|
|
39
|
+
--color-clay "#ad4529"
|
|
40
|
+
--color-muted "#5c5a66"
|
|
41
|
+
--color-hairline "#cbc5b8"
|
|
42
|
+
--font-display "'Noto Sans Display', 'Noto Kufi Arabic', system-ui, -apple-system, sans-serif"
|
|
43
|
+
--font-text "'Noto Serif', 'Noto Naskh Arabic', Georgia, 'Times New Roman', serif"
|
|
44
|
+
--font-label "'Noto Sans Mono', 'Noto Kufi Arabic', ui-monospace, SFMono-Regular, Menlo, monospace"
|
|
45
|
+
--label-tracking "0.16em"
|
|
46
|
+
--label-case uppercase
|
|
47
|
+
--display-tracking "-0.035em"
|
|
48
|
+
--radius "0"
|
|
49
|
+
--max-width "1240px"
|
|
50
|
+
--measure "62ch"
|
|
51
|
+
--label-column "9.5rem"
|
|
52
|
+
--gutter "clamp(1.25rem, 4vw, 3rem)"
|
|
53
|
+
--band-space "clamp(3.25rem, 7vw, 6rem)"
|
|
54
|
+
--flip-inline "1"
|
|
55
|
+
--leading-scale "1"
|
|
56
|
+
margin "0"
|
|
57
|
+
padding "0"
|
|
58
|
+
fontFamily "var(--font-text)"
|
|
59
|
+
fontSize "17px"
|
|
60
|
+
lineHeight "1.7"
|
|
61
|
+
color "var(--color-ink)"
|
|
62
|
+
backgroundColor "var(--color-chalk)"
|
|
63
|
+
WebkitFontSmoothing antialiased
|
|
64
|
+
":lang(ar)" {
|
|
65
|
+
--label-tracking "0"
|
|
66
|
+
--label-case none
|
|
67
|
+
--display-tracking "0"
|
|
68
|
+
--flip-inline "-1"
|
|
69
|
+
--leading-scale "1.35"
|
|
70
|
+
}
|
|
71
|
+
":dir(rtl)" {
|
|
72
|
+
--flip-inline "-1"
|
|
73
|
+
}
|
|
74
|
+
":lang(ar) h1, :lang(ar) h2, :lang(ar) h3" {
|
|
75
|
+
textWrap balance
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
images optimize=#false lazyLoad=#true
|
|
80
|
+
|
|
81
|
+
content {
|
|
82
|
+
exhibitions {
|
|
83
|
+
source "./content/exhibitions/{locale}/"
|
|
84
|
+
format Markdown
|
|
85
|
+
schema {
|
|
86
|
+
type object
|
|
87
|
+
properties {
|
|
88
|
+
title type=string description="Exhibition title, as it appears on the wall."
|
|
89
|
+
description {
|
|
90
|
+
type string
|
|
91
|
+
description "One-sentence standfirst for cards and search results."
|
|
92
|
+
}
|
|
93
|
+
date {
|
|
94
|
+
type string
|
|
95
|
+
description "Opening date, ISO 8601 (YYYY-MM-DD) — Intl/formatDate renders it in each page's own language."
|
|
96
|
+
}
|
|
97
|
+
until type=string description="Closing date, ISO 8601 (YYYY-MM-DD)."
|
|
98
|
+
gallery type=string description="Where in the building it hangs."
|
|
99
|
+
curator {
|
|
100
|
+
type string
|
|
101
|
+
description "Curator's name — a proper noun, so it stays the same in every language."
|
|
102
|
+
}
|
|
103
|
+
works {
|
|
104
|
+
type number
|
|
105
|
+
description "Number of objects on show; formatted with Intl/formatNumber, so Arabic pages get Arabic-Indic digits."
|
|
106
|
+
}
|
|
107
|
+
hue {
|
|
108
|
+
type number
|
|
109
|
+
description "Hue (0–360) of this exhibition's drawn plate. The starter ships no photographs; each card's art is CSS, generated from this one number."
|
|
110
|
+
}
|
|
111
|
+
enKey {
|
|
112
|
+
type string
|
|
113
|
+
description "This entry's id, repeated as a field only the English entries carry. Three translations share one id, and ContentEntry matches a field value across the whole collection — so each locale's detail route matches its own key field, and the value being the id is what keeps the three URLs parallel."
|
|
114
|
+
}
|
|
115
|
+
lang {
|
|
116
|
+
type string
|
|
117
|
+
description "BCP 47 tag of the directory this entry came from. One collection holds every language at once, so a locale's index filters on this to list only its own."
|
|
118
|
+
}
|
|
119
|
+
order type=number description="Running order on the exhibitions index."
|
|
120
|
+
}
|
|
121
|
+
required title description date until gallery lang
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
127
|
+
|
|
128
|
+
extensions {
|
|
129
|
+
- "@jxsuite/parser"
|
|
130
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^4.3.
|
|
12
|
+
"@jxsuite/parser": "^4.3.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^6.2.
|
|
15
|
+
"@jxsuite/compiler": "^8.5.0",
|
|
16
|
+
"@jxsuite/runtime": "^6.2.2"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project "Rivertown Foundation"
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
$head {
|
|
10
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
11
|
+
meta name=description content="Rivertown Foundation is a community nonprofit running local programs in food security, youth mentoring, housing, and job training — powered by neighbors helping neighbors."
|
|
12
|
+
link rel=icon href="/favicon.svg"
|
|
13
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
14
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
15
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400..700;1,9..144,400..600&family=Nunito:wght@400;500;600;700;800&display=swap"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$media {
|
|
19
|
+
-- "1200px"
|
|
20
|
+
--lg "(max-width: 1024px)"
|
|
21
|
+
--md "(max-width: 768px)"
|
|
22
|
+
--sm "(max-width: 560px)"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
style {
|
|
26
|
+
--color-primary "#2f7d55"
|
|
27
|
+
--color-primary-hover "#256845"
|
|
28
|
+
--color-primary-deep "#173a2b"
|
|
29
|
+
--color-primary-soft "#e3efe6"
|
|
30
|
+
--color-accent "#f26a3d"
|
|
31
|
+
--color-accent-hover "#e0552b"
|
|
32
|
+
--color-accent-soft "#ffe6da"
|
|
33
|
+
--color-gold "#e9a63d"
|
|
34
|
+
--color-gold-soft "#fbeccf"
|
|
35
|
+
--color-ink "#22332a"
|
|
36
|
+
--color-bg-dark "#173a2b"
|
|
37
|
+
--color-bg-cream "#fbf5ec"
|
|
38
|
+
--color-bg-cream-deep "#f6ecda"
|
|
39
|
+
--color-bg-mint "#eef6ef"
|
|
40
|
+
--color-bg-white "#ffffff"
|
|
41
|
+
--color-text-primary "#23342b"
|
|
42
|
+
--color-text-secondary "#3f5147"
|
|
43
|
+
--color-text-muted "#61715f"
|
|
44
|
+
--color-text-white "#ffffff"
|
|
45
|
+
--color-border "#eadfce"
|
|
46
|
+
--color-border-strong "#dccdb4"
|
|
47
|
+
--font-display "'Fraunces', Georgia, 'Times New Roman', serif"
|
|
48
|
+
--font-heading "'Fraunces', Georgia, 'Times New Roman', serif"
|
|
49
|
+
--font-body "'Nunito', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
50
|
+
--max-width "1180px"
|
|
51
|
+
--max-width-wide "1300px"
|
|
52
|
+
--max-width-narrow "760px"
|
|
53
|
+
--radius "1.25rem"
|
|
54
|
+
--radius-sm "0.75rem"
|
|
55
|
+
--radius-lg "2rem"
|
|
56
|
+
--radius-pill "999px"
|
|
57
|
+
--shadow-card "0 2px 6px rgba(23,58,43,0.05), 0 20px 44px -26px rgba(23,58,43,0.3)"
|
|
58
|
+
--shadow-float "0 34px 74px -32px rgba(23,58,43,0.4)"
|
|
59
|
+
margin "0"
|
|
60
|
+
padding "0"
|
|
61
|
+
fontFamily "var(--font-body)"
|
|
62
|
+
fontSize "17px"
|
|
63
|
+
lineHeight "1.7"
|
|
64
|
+
color "var(--color-text-primary)"
|
|
65
|
+
backgroundColor "var(--color-bg-white)"
|
|
66
|
+
WebkitFontSmoothing antialiased
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
images {
|
|
70
|
+
optimize #true
|
|
71
|
+
widths 320 640 960 1280 1920
|
|
72
|
+
formats webp avif
|
|
73
|
+
quality webp=80 avif=65 jpeg=80 png=80
|
|
74
|
+
sizes "(max-width: 768px) 100vw, 50vw"
|
|
75
|
+
lazyLoad #true
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
content {
|
|
79
|
+
programs {
|
|
80
|
+
source "./content/programs/"
|
|
81
|
+
format Markdown
|
|
82
|
+
schema {
|
|
83
|
+
type object
|
|
84
|
+
properties {
|
|
85
|
+
title type=string
|
|
86
|
+
summary type=string
|
|
87
|
+
image type=string format=image
|
|
88
|
+
order type=number
|
|
89
|
+
}
|
|
90
|
+
required title summary
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
96
|
+
|
|
97
|
+
extensions {
|
|
98
|
+
- "@jxsuite/parser"
|
|
99
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^4.3.
|
|
12
|
+
"@jxsuite/parser": "^4.3.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^6.2.
|
|
15
|
+
"@jxsuite/compiler": "^8.5.0",
|
|
16
|
+
"@jxsuite/runtime": "^6.2.2"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project "Aperture Studio"
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
$head {
|
|
10
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
11
|
+
meta name=description content="Aperture Studio — a photography and creative studio crafting image-forward stories across weddings, portraits, editorial, travel, food, and architecture."
|
|
12
|
+
link rel=icon href="/favicon.svg"
|
|
13
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
14
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
15
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500&family=Fraunces:opsz,wght@9..144,300;9..144,400&display=swap"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$media {
|
|
19
|
+
-- "1200px"
|
|
20
|
+
--lg "(max-width: 1024px)"
|
|
21
|
+
--md "(max-width: 768px)"
|
|
22
|
+
--sm "(max-width: 640px)"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
style {
|
|
26
|
+
--color-primary "#c8a45c"
|
|
27
|
+
--color-primary-hover "#dcbd77"
|
|
28
|
+
--color-ink "#ece9e3"
|
|
29
|
+
--color-bg-dark "#161619"
|
|
30
|
+
--color-bg-cream "#161619"
|
|
31
|
+
--color-bg-white "#0c0c0d"
|
|
32
|
+
--color-bg "#0c0c0d"
|
|
33
|
+
--color-bg-elev "#161619"
|
|
34
|
+
--color-text-primary "#ece9e3"
|
|
35
|
+
--color-text-white "#ece9e3"
|
|
36
|
+
--color-text-muted "#8f8b82"
|
|
37
|
+
--color-border "#2a2a2e"
|
|
38
|
+
--color-line "#2a2a2e"
|
|
39
|
+
--color-accent "#c8a45c"
|
|
40
|
+
--font-heading "'Cormorant Garamond', Georgia, 'Times New Roman', serif"
|
|
41
|
+
--font-label "'Fraunces', Georgia, serif"
|
|
42
|
+
--max-width "1400px"
|
|
43
|
+
--max-width-narrow "760px"
|
|
44
|
+
--radius "0"
|
|
45
|
+
margin "0"
|
|
46
|
+
padding "0"
|
|
47
|
+
fontFamily "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
48
|
+
lineHeight "1.6"
|
|
49
|
+
color "var(--color-text-primary)"
|
|
50
|
+
backgroundColor "var(--color-bg)"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
images {
|
|
54
|
+
optimize #true
|
|
55
|
+
widths 320 640 960 1280 1920
|
|
56
|
+
formats webp avif
|
|
57
|
+
quality webp=80 avif=65 jpeg=80 png=80
|
|
58
|
+
sizes "(max-width: 768px) 100vw, 50vw"
|
|
59
|
+
lazyLoad #true
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
content {
|
|
63
|
+
projects {
|
|
64
|
+
source "./content/projects/"
|
|
65
|
+
format Markdown
|
|
66
|
+
schema {
|
|
67
|
+
type object
|
|
68
|
+
properties {
|
|
69
|
+
title type=string
|
|
70
|
+
category type=string
|
|
71
|
+
cover type=string format=image
|
|
72
|
+
year type=number
|
|
73
|
+
order type=number
|
|
74
|
+
slug type=string
|
|
75
|
+
}
|
|
76
|
+
required title category slug
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
82
|
+
|
|
83
|
+
extensions {
|
|
84
|
+
- "@jxsuite/parser"
|
|
85
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^4.3.
|
|
12
|
+
"@jxsuite/parser": "^4.3.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^6.2.
|
|
15
|
+
"@jxsuite/compiler": "^8.5.0",
|
|
16
|
+
"@jxsuite/runtime": "^6.2.2"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project "Meridian Advisory"
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
$head {
|
|
10
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
11
|
+
meta name=description content="Meridian Advisory is a boutique CPA and advisory firm for founders and growing companies — tax, assurance, and fractional CFO counsel, published as a quarterly of practical financial thinking."
|
|
12
|
+
link rel=icon href="/favicon.svg"
|
|
13
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
14
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
15
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&family=Archivo:wght@400;500;600;700&display=swap"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$media {
|
|
19
|
+
-- "1200px"
|
|
20
|
+
--lg "(max-width: 1024px)"
|
|
21
|
+
--md "(max-width: 768px)"
|
|
22
|
+
--sm "(max-width: 640px)"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
style {
|
|
26
|
+
--color-ink "#161a2c"
|
|
27
|
+
--color-ink-deep "#0d101d"
|
|
28
|
+
--color-navy "#1d2748"
|
|
29
|
+
--color-paper "#f4f1e9"
|
|
30
|
+
--color-paper-2 "#ece7da"
|
|
31
|
+
--color-surface "#fbf9f3"
|
|
32
|
+
--color-accent "#9a7b3c"
|
|
33
|
+
--color-accent-deep "#7c6230"
|
|
34
|
+
--color-muted "#605e55"
|
|
35
|
+
--color-rule "#161a2c"
|
|
36
|
+
--color-hairline "#d5cdba"
|
|
37
|
+
--color-primary "#161a2c"
|
|
38
|
+
--color-primary-hover "#242c4a"
|
|
39
|
+
--color-bg-dark "#0d101d"
|
|
40
|
+
--color-bg-cream "#ece7da"
|
|
41
|
+
--color-bg-white "#fbf9f3"
|
|
42
|
+
--color-text-primary "#161a2c"
|
|
43
|
+
--color-text-white "#f4f1e9"
|
|
44
|
+
--color-text-muted "#605e55"
|
|
45
|
+
--color-border "#d5cdba"
|
|
46
|
+
--font-serif "'Spectral', Georgia, 'Times New Roman', serif"
|
|
47
|
+
--font-sans "'Archivo', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
48
|
+
--font-heading "'Spectral', Georgia, 'Times New Roman', serif"
|
|
49
|
+
--max-width "1180px"
|
|
50
|
+
--max-width-narrow "720px"
|
|
51
|
+
--measure "660px"
|
|
52
|
+
--radius "0"
|
|
53
|
+
margin "0"
|
|
54
|
+
padding "0"
|
|
55
|
+
fontFamily "var(--font-sans)"
|
|
56
|
+
fontSize "17px"
|
|
57
|
+
lineHeight "1.6"
|
|
58
|
+
color "var(--color-ink)"
|
|
59
|
+
backgroundColor "var(--color-paper)"
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
images {
|
|
63
|
+
optimize #true
|
|
64
|
+
widths 320 640 960 1280 1920
|
|
65
|
+
formats webp avif
|
|
66
|
+
quality webp=80 avif=65 jpeg=80 png=80
|
|
67
|
+
sizes "(max-width: 768px) 100vw, 50vw"
|
|
68
|
+
lazyLoad #true
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
content {
|
|
72
|
+
insights {
|
|
73
|
+
source "./content/insights/"
|
|
74
|
+
format Markdown
|
|
75
|
+
schema {
|
|
76
|
+
type object
|
|
77
|
+
properties {
|
|
78
|
+
title type=string
|
|
79
|
+
excerpt type=string
|
|
80
|
+
date type=string
|
|
81
|
+
author type=string
|
|
82
|
+
category type=string
|
|
83
|
+
order type=number
|
|
84
|
+
}
|
|
85
|
+
required title excerpt date
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
91
|
+
|
|
92
|
+
extensions {
|
|
93
|
+
- "@jxsuite/parser"
|
|
94
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^4.3.
|
|
12
|
+
"@jxsuite/parser": "^4.3.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^6.2.
|
|
15
|
+
"@jxsuite/compiler": "^8.5.0",
|
|
16
|
+
"@jxsuite/runtime": "^6.2.2"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project "Northshore Realty"
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
$head {
|
|
10
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
11
|
+
meta name=description content="Northshore Realty is the north shore's property index — search live listings by neighborhood, price, and bedrooms, then work with agents who actually live here."
|
|
12
|
+
link rel=icon href="/favicon.svg"
|
|
13
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
14
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
15
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Spectral:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$media {
|
|
19
|
+
-- "1200px"
|
|
20
|
+
--lg "(max-width: 1024px)"
|
|
21
|
+
--md "(max-width: 768px)"
|
|
22
|
+
--sm "(max-width: 640px)"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
style {
|
|
26
|
+
--color-primary "#0f766e"
|
|
27
|
+
--color-primary-hover "#115e59"
|
|
28
|
+
--color-accent "#0d9488"
|
|
29
|
+
--color-accent-bright "#14b8a6"
|
|
30
|
+
--color-accent-soft "#ccfbf1"
|
|
31
|
+
--color-teal-tint "#f0fdfa"
|
|
32
|
+
--color-ink "#0b1220"
|
|
33
|
+
--color-navy "#0f172a"
|
|
34
|
+
--color-bg-dark "#0b1220"
|
|
35
|
+
--color-bg-ink-soft "#152238"
|
|
36
|
+
--color-bg-cream "#f6f8fb"
|
|
37
|
+
--color-bg-tint "#eef2f7"
|
|
38
|
+
--color-bg-white "#ffffff"
|
|
39
|
+
--color-text-primary "#0f172a"
|
|
40
|
+
--color-text-secondary "#334155"
|
|
41
|
+
--color-text-muted "#64748b"
|
|
42
|
+
--color-text-white "#ffffff"
|
|
43
|
+
--color-border "#e4e9f0"
|
|
44
|
+
--color-border-strong "#cbd5e1"
|
|
45
|
+
--color-status-new "#0d9488"
|
|
46
|
+
--font-display "'Spectral', Georgia, 'Times New Roman', serif"
|
|
47
|
+
--font-heading "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
48
|
+
--font-ui "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
49
|
+
--font-body "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
|
50
|
+
--max-width "1240px"
|
|
51
|
+
--max-width-narrow "760px"
|
|
52
|
+
--radius "0.75rem"
|
|
53
|
+
--radius-sm "0.5rem"
|
|
54
|
+
--radius-lg "1.25rem"
|
|
55
|
+
--shadow-card "0 1px 2px rgba(15,23,42,0.04), 0 10px 26px -14px rgba(15,23,42,0.18)"
|
|
56
|
+
--shadow-float "0 30px 70px -28px rgba(11,18,32,0.42)"
|
|
57
|
+
margin "0"
|
|
58
|
+
padding "0"
|
|
59
|
+
fontFamily "var(--font-body)"
|
|
60
|
+
fontSize "17px"
|
|
61
|
+
lineHeight "1.6"
|
|
62
|
+
color "var(--color-text-primary)"
|
|
63
|
+
backgroundColor "var(--color-bg-white)"
|
|
64
|
+
WebkitFontSmoothing antialiased
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
images {
|
|
68
|
+
optimize #true
|
|
69
|
+
widths 320 640 960 1280 1920
|
|
70
|
+
formats webp avif
|
|
71
|
+
quality webp=80 avif=65 jpeg=80 png=80
|
|
72
|
+
sizes "(max-width: 768px) 100vw, 50vw"
|
|
73
|
+
lazyLoad #true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
content {
|
|
77
|
+
listings {
|
|
78
|
+
source "./content/listings.csv"
|
|
79
|
+
format Csv
|
|
80
|
+
schema {
|
|
81
|
+
type object
|
|
82
|
+
properties {
|
|
83
|
+
Title type=string
|
|
84
|
+
slug type=string
|
|
85
|
+
price type=number
|
|
86
|
+
beds type=number
|
|
87
|
+
baths type=number
|
|
88
|
+
sqft type=number
|
|
89
|
+
city type=string
|
|
90
|
+
image type=string format=image
|
|
91
|
+
status type=string
|
|
92
|
+
order type=number
|
|
93
|
+
}
|
|
94
|
+
required Title slug
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
100
|
+
|
|
101
|
+
extensions {
|
|
102
|
+
- "@jxsuite/parser"
|
|
103
|
+
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"dev": "jx dev"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jxsuite/parser": "^4.3.
|
|
12
|
+
"@jxsuite/parser": "^4.3.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@jxsuite/compiler": "^8.
|
|
16
|
-
"@jxsuite/runtime": "^6.2.
|
|
15
|
+
"@jxsuite/compiler": "^8.5.0",
|
|
16
|
+
"@jxsuite/runtime": "^6.2.2"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/- kdl-version 2
|
|
2
|
+
$schema "./project.schema.json"
|
|
3
|
+
project "Bistro & Café"
|
|
4
|
+
|
|
5
|
+
url "https://example.com"
|
|
6
|
+
|
|
7
|
+
defaults layout="./layouts/base.json" lang=en
|
|
8
|
+
|
|
9
|
+
$head {
|
|
10
|
+
meta name=viewport content="width=device-width, initial-scale=1"
|
|
11
|
+
meta name=description content="A neighborhood bistro and café serving seasonal plates, house pastries, and small-batch coffee."
|
|
12
|
+
link rel=icon href="/favicon.svg"
|
|
13
|
+
link rel=preconnect href="https://fonts.googleapis.com"
|
|
14
|
+
link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
|
|
15
|
+
link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700&family=Mulish:wght@300;400;500;600;700;800&display=swap"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$media {
|
|
19
|
+
-- "1200px"
|
|
20
|
+
--lg "(max-width: 1024px)"
|
|
21
|
+
--md "(max-width: 768px)"
|
|
22
|
+
--sm "(max-width: 640px)"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
style {
|
|
26
|
+
--color-primary "#bd5a34"
|
|
27
|
+
--color-primary-hover "#a44827"
|
|
28
|
+
--color-amber "#c98a3c"
|
|
29
|
+
--color-ink "#241b14"
|
|
30
|
+
--color-espresso "#1e150f"
|
|
31
|
+
--color-bg-dark "#1e150f"
|
|
32
|
+
--color-bg-cream "#efe3d1"
|
|
33
|
+
--color-bg-paper "#f6ecdb"
|
|
34
|
+
--color-bg-white "#fffaf2"
|
|
35
|
+
--color-text-primary "#2a1f17"
|
|
36
|
+
--color-text-white "#f6ecdb"
|
|
37
|
+
--color-text-muted "#7c6a58"
|
|
38
|
+
--color-border "#e2d5bf"
|
|
39
|
+
--color-border-strong "#cbb99d"
|
|
40
|
+
--color-accent "#bd5a34"
|
|
41
|
+
--font-heading "'Playfair Display', Georgia, 'Times New Roman', serif"
|
|
42
|
+
--font-body "'Mulish', system-ui, -apple-system, 'Segoe UI', sans-serif"
|
|
43
|
+
--max-width "1200px"
|
|
44
|
+
--max-width-wide "1320px"
|
|
45
|
+
--max-width-narrow "780px"
|
|
46
|
+
--radius "0.25rem"
|
|
47
|
+
margin "0"
|
|
48
|
+
padding "0"
|
|
49
|
+
fontFamily "var(--font-body)"
|
|
50
|
+
fontSize "17px"
|
|
51
|
+
lineHeight "1.7"
|
|
52
|
+
color "var(--color-text-primary)"
|
|
53
|
+
backgroundColor "var(--color-bg-paper)"
|
|
54
|
+
"& a" {
|
|
55
|
+
color "var(--color-primary)"
|
|
56
|
+
textUnderlineOffset "0.2em"
|
|
57
|
+
textDecorationColor "var(--color-border-strong)"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
images {
|
|
62
|
+
optimize #true
|
|
63
|
+
widths 320 640 960 1280 1920
|
|
64
|
+
formats webp avif
|
|
65
|
+
quality webp=80 avif=65 jpeg=80 png=80
|
|
66
|
+
sizes "(max-width: 768px) 100vw, 50vw"
|
|
67
|
+
lazyLoad #true
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
content {
|
|
71
|
+
menu {
|
|
72
|
+
source "./content/menu/"
|
|
73
|
+
format Markdown
|
|
74
|
+
schema {
|
|
75
|
+
type object
|
|
76
|
+
properties {
|
|
77
|
+
name type=string
|
|
78
|
+
course type=string
|
|
79
|
+
price type=string
|
|
80
|
+
description type=string
|
|
81
|
+
image type=string format=image
|
|
82
|
+
order type=number
|
|
83
|
+
}
|
|
84
|
+
required name course
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
build outDir="./dist" format=directory trailingSlash=always
|
|
90
|
+
|
|
91
|
+
extensions {
|
|
92
|
+
- "@jxsuite/parser"
|
|
93
|
+
}
|