@janga/norna 0.7.8 → 0.7.9
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/docs/README.md +4 -0
- package/docs/design/norna-diagram-design.md +156 -0
- package/examples/typography-presets/.astro/collections/site.schema.json +776 -0
- package/examples/typography-presets/.astro/collections/theme.schema.json +668 -0
- package/examples/typography-presets/.astro/content-assets.mjs +4 -0
- package/examples/typography-presets/.astro/content-modules.mjs +1 -0
- package/examples/typography-presets/.astro/content.d.ts +175 -0
- package/examples/typography-presets/.astro/data-store.json +1 -0
- package/examples/typography-presets/.astro/dev-local.json +8 -0
- package/examples/typography-presets/.astro/dev.json +15 -0
- package/examples/typography-presets/.astro/dev.log +24 -0
- package/examples/typography-presets/.astro/settings.json +5 -0
- package/examples/typography-presets/.astro/types.d.ts +2 -0
- package/examples/typography-presets/node_modules/.vite/deps/_metadata.json +80 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
- package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js +1389 -0
- package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
- package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
- package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/package.json +3 -0
- package/examples/typography-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
- package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
- package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
- package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
- package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
- package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
- package/examples/typography-presets/site/.norna/generated-images.json +290 -0
- package/examples/typography-presets/site/config.mjs +42 -0
- package/examples/typography-presets/site/content.md +134 -0
- package/examples/typography-presets/site/images/compact-gallery/black-schnauzer.jpg +0 -0
- package/examples/typography-presets/site/images/compact-gallery/retriever-portrait.jpg +0 -0
- package/examples/typography-presets/site/images/compact-gallery/schnauzer-portrait.jpg +0 -0
- package/examples/typography-presets/site/images/quiet-gallery/puppy-portrait.jpg +0 -0
- package/examples/typography-presets/site/images/quiet-gallery/shepherd-portrait.jpg +0 -0
- package/examples/typography-presets/site/images/quiet-gallery/white-puppy.jpg +0 -0
- package/examples/typography-presets/site/images/statement/black-pedigree.jpg +0 -0
- package/examples/typography-presets/site/images/statement/sheepdog-grass.jpg +0 -0
- package/examples/typography-presets/site/images/statement/sheepdog-wide.jpg +0 -0
- package/examples/typography-presets/site/images/text-forward/boxer-portrait.jpg +0 -0
- package/examples/typography-presets/site/images/text-forward/grass-puppy.jpg +0 -0
- package/examples/typography-presets/site/images/text-forward/grey-street-dog.jpg +0 -0
- package/examples/typography-presets/site/public/robots.txt +2 -0
- package/examples/typography-presets/site/theme.md +43 -0
- package/package.json +1 -1
- package/scripts/lib/site-content.mjs +76 -0
- package/scripts/lib/theme-config.mjs +2 -0
- package/scripts/sync-content-sections.mjs +3 -0
- package/scripts/test-content-check.mjs +30 -0
- package/scripts/test-package-check.mjs +17 -0
- package/src/components/SiteSection.astro +1 -1
- package/src/lib/sectionContent.ts +10 -2
- package/src/styles/global.css +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
declare module 'astro:content' {
|
|
2
|
+
export interface RenderResult {
|
|
3
|
+
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
|
4
|
+
headings: import('astro').MarkdownHeading[];
|
|
5
|
+
remarkPluginFrontmatter: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
interface Render {
|
|
8
|
+
'.md': Promise<RenderResult>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface RenderedContent {
|
|
12
|
+
html: string;
|
|
13
|
+
metadata?: {
|
|
14
|
+
imagePaths: Array<string>;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
|
20
|
+
|
|
21
|
+
export type CollectionKey = keyof DataEntryMap;
|
|
22
|
+
export type CollectionEntry<C extends CollectionKey> = Flatten<DataEntryMap[C]>;
|
|
23
|
+
|
|
24
|
+
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
|
25
|
+
|
|
26
|
+
export type ReferenceDataEntry<
|
|
27
|
+
C extends CollectionKey,
|
|
28
|
+
E extends keyof DataEntryMap[C] = string,
|
|
29
|
+
> = {
|
|
30
|
+
collection: C;
|
|
31
|
+
id: E;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type ReferenceLiveEntry<C extends keyof LiveContentConfig['collections']> = {
|
|
35
|
+
collection: C;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function getCollection<C extends keyof DataEntryMap, E extends CollectionEntry<C>>(
|
|
40
|
+
collection: C,
|
|
41
|
+
filter?: (entry: CollectionEntry<C>) => entry is E,
|
|
42
|
+
): Promise<E[]>;
|
|
43
|
+
export function getCollection<C extends keyof DataEntryMap>(
|
|
44
|
+
collection: C,
|
|
45
|
+
filter?: (entry: CollectionEntry<C>) => unknown,
|
|
46
|
+
): Promise<CollectionEntry<C>[]>;
|
|
47
|
+
|
|
48
|
+
export function getLiveCollection<C extends keyof LiveContentConfig['collections']>(
|
|
49
|
+
collection: C,
|
|
50
|
+
filter?: LiveLoaderCollectionFilterType<C>,
|
|
51
|
+
): Promise<
|
|
52
|
+
import('astro').LiveDataCollectionResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>
|
|
53
|
+
>;
|
|
54
|
+
|
|
55
|
+
export function getEntry<
|
|
56
|
+
C extends keyof DataEntryMap,
|
|
57
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
58
|
+
>(
|
|
59
|
+
entry: ReferenceDataEntry<C, E>,
|
|
60
|
+
): E extends keyof DataEntryMap[C]
|
|
61
|
+
? Promise<DataEntryMap[C][E]>
|
|
62
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
63
|
+
export function getEntry<
|
|
64
|
+
C extends keyof DataEntryMap,
|
|
65
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
66
|
+
>(
|
|
67
|
+
collection: C,
|
|
68
|
+
id: E,
|
|
69
|
+
): E extends keyof DataEntryMap[C]
|
|
70
|
+
? string extends keyof DataEntryMap[C]
|
|
71
|
+
? Promise<DataEntryMap[C][E]> | undefined
|
|
72
|
+
: Promise<DataEntryMap[C][E]>
|
|
73
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
74
|
+
export function getLiveEntry<C extends keyof LiveContentConfig['collections']>(
|
|
75
|
+
collection: C,
|
|
76
|
+
filter: string | LiveLoaderEntryFilterType<C>,
|
|
77
|
+
): Promise<import('astro').LiveDataEntryResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>>;
|
|
78
|
+
|
|
79
|
+
/** Resolve an array of entry references from the same collection */
|
|
80
|
+
export function getEntries<C extends keyof DataEntryMap>(
|
|
81
|
+
entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
|
|
82
|
+
): Promise<CollectionEntry<C>[]>;
|
|
83
|
+
|
|
84
|
+
export function render<C extends keyof DataEntryMap>(
|
|
85
|
+
entry: DataEntryMap[C][string],
|
|
86
|
+
): Promise<RenderResult>;
|
|
87
|
+
|
|
88
|
+
export function render<C extends keyof LiveContentConfig['collections']>(
|
|
89
|
+
entry: import('astro').LiveDataEntry<LiveLoaderDataType<C>>,
|
|
90
|
+
): Promise<RenderResult>;
|
|
91
|
+
|
|
92
|
+
export function reference<
|
|
93
|
+
C extends
|
|
94
|
+
| keyof DataEntryMap
|
|
95
|
+
// Allow generic `string` to avoid excessive type errors in the config
|
|
96
|
+
// if `dev` is not running to update as you edit.
|
|
97
|
+
// Invalid collection names will be caught at build time.
|
|
98
|
+
| (string & {}),
|
|
99
|
+
>(
|
|
100
|
+
collection: C,
|
|
101
|
+
): import('astro/zod').ZodPipe<
|
|
102
|
+
import('astro/zod').ZodString,
|
|
103
|
+
import('astro/zod').ZodTransform<
|
|
104
|
+
C extends keyof DataEntryMap
|
|
105
|
+
? {
|
|
106
|
+
collection: C;
|
|
107
|
+
id: string;
|
|
108
|
+
}
|
|
109
|
+
: never,
|
|
110
|
+
string
|
|
111
|
+
>
|
|
112
|
+
>;
|
|
113
|
+
|
|
114
|
+
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
115
|
+
type InferEntrySchema<C extends keyof DataEntryMap> = import('astro/zod').infer<
|
|
116
|
+
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
|
117
|
+
>;
|
|
118
|
+
type ExtractLoaderConfig<T> = T extends { loader: infer L } ? L : never;
|
|
119
|
+
type InferLoaderSchema<
|
|
120
|
+
C extends keyof DataEntryMap,
|
|
121
|
+
L = ExtractLoaderConfig<ContentConfig['collections'][C]>,
|
|
122
|
+
> = L extends { schema: import('astro/zod').ZodSchema }
|
|
123
|
+
? import('astro/zod').infer<L['schema']>
|
|
124
|
+
: any;
|
|
125
|
+
|
|
126
|
+
type DataEntryMap = {
|
|
127
|
+
"site": Record<string, {
|
|
128
|
+
id: string;
|
|
129
|
+
body?: string;
|
|
130
|
+
collection: "site";
|
|
131
|
+
data: InferEntrySchema<"site">;
|
|
132
|
+
rendered?: RenderedContent;
|
|
133
|
+
filePath?: string;
|
|
134
|
+
}>;
|
|
135
|
+
"theme": Record<string, {
|
|
136
|
+
id: string;
|
|
137
|
+
body?: string;
|
|
138
|
+
collection: "theme";
|
|
139
|
+
data: InferEntrySchema<"theme">;
|
|
140
|
+
rendered?: RenderedContent;
|
|
141
|
+
filePath?: string;
|
|
142
|
+
}>;
|
|
143
|
+
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
type ExtractLoaderTypes<T> = T extends import('astro/loaders').LiveLoader<
|
|
147
|
+
infer TData,
|
|
148
|
+
infer TEntryFilter,
|
|
149
|
+
infer TCollectionFilter,
|
|
150
|
+
infer TError
|
|
151
|
+
>
|
|
152
|
+
? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError }
|
|
153
|
+
: { data: never; entryFilter: never; collectionFilter: never; error: never };
|
|
154
|
+
type ExtractEntryFilterType<T> = ExtractLoaderTypes<T>['entryFilter'];
|
|
155
|
+
type ExtractCollectionFilterType<T> = ExtractLoaderTypes<T>['collectionFilter'];
|
|
156
|
+
type ExtractErrorType<T> = ExtractLoaderTypes<T>['error'];
|
|
157
|
+
type ExtractDataType<T> = ExtractLoaderTypes<T>['data'];
|
|
158
|
+
|
|
159
|
+
type LiveLoaderDataType<C extends keyof LiveContentConfig['collections']> =
|
|
160
|
+
LiveContentConfig['collections'][C]['schema'] extends undefined
|
|
161
|
+
? ExtractDataType<LiveContentConfig['collections'][C]['loader']>
|
|
162
|
+
: import('astro/zod').infer<
|
|
163
|
+
Exclude<LiveContentConfig['collections'][C]['schema'], undefined>
|
|
164
|
+
>;
|
|
165
|
+
type LiveLoaderEntryFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
166
|
+
ExtractEntryFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
167
|
+
type LiveLoaderCollectionFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
168
|
+
ExtractCollectionFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
169
|
+
type LiveLoaderErrorType<C extends keyof LiveContentConfig['collections']> = ExtractErrorType<
|
|
170
|
+
LiveContentConfig['collections'][C]['loader']
|
|
171
|
+
>;
|
|
172
|
+
|
|
173
|
+
export type ContentConfig = typeof import("../../../src/content.config.js");
|
|
174
|
+
export type LiveContentConfig = never;
|
|
175
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[["Map",1,2,9,10,86,87],"meta::meta",["Map",3,4,5,6,7,8],"astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":\"jsx\",\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":\"0.0.0.0\",\"port\":4321,\"allowedHosts\":[\"0.0.0.0\",\"0.0.0.0\",\"0.0.0.0\",\"0.0.0.0\"]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"dangerouslyProcessSVG\":false,\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"processor\":{\"name\":\"satteri\",\"options\":{\"mdastPlugins\":[],\"hastPlugins\":[],\"features\":{}}}},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"csp\":false,\"actionBodySizeLimit\":1048576,\"serverIslandBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"prerenderConflictBehavior\":\"warn\",\"fetchFile\":\"fetch\",\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"chromeDevtoolsWorkspace\":false,\"collectionStorage\":\"single-file\"},\"legacy\":{\"collectionsBackwardsCompat\":false}}","astro-version","7.1.3","content-config-digest","ccc39d7fb56a7431","site",["Map",11,12],"site-content",{"id":11,"data":13,"body":35,"filePath":36,"digest":37,"rendered":38},{"title":14,"description":15,"navigation":16,"sections":18},"Typography Presets","A Norna example page showing every built-in typography preset.",{"label":17},"Presets",{"quiet-gallery":19,"compact-gallery":23,"text-forward":27,"statement":31},{"presentation":20},{"typography":21},{"preset":22},"quiet-gallery",{"presentation":24},{"typography":25},{"preset":26},"compact-gallery",{"presentation":28},{"typography":29},{"preset":30},"text-forward",{"presentation":32},{"typography":33},{"preset":34},"statement","## Quiet Gallery {#quiet-gallery}\n\nThis section uses the `quiet-gallery` preset. Its purpose is to keep text\nrestrained so images can carry much of the page without the typography\ncompeting for attention.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a\nante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis\ninterdum. Donec ullamcorper nulla non metus auctor fringilla.\n\n### Reading rhythm\n\nCurabitur blandit tempus porttitor. Praesent commodo cursus magna, vel\nscelerisque nisl consectetur et. Vestibulum id ligula porta felis euismod\nsemper.\n\n```norna-image-stack\n- image: puppy-portrait.jpg\n alt: A puppy sitting outdoors and looking toward the camera.\n caption: Puppy portrait. Photo by Bicanski, CC0, via Pixnio.\n- image: shepherd-portrait.jpg\n alt: A shepherd dog standing outdoors and looking toward the camera.\n caption: Shepherd dog portrait. Photo by Bicanski, CC0, via Pixnio.\n- image: white-puppy.jpg\n alt: A white puppy outdoors in winter.\n caption: White puppy outdoors. Photo by Bicanski, CC0, via Pixnio.\n```\n\n## Compact Gallery {#compact-gallery}\n\nThis section uses the `compact-gallery` preset. Its purpose is to make denser\nimage-led pages easier to scan when a site contains many sections, many images\nor short information blocks.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lacinia\nbibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod.\n\n### Dense sections\n\nNullam id dolor id nibh ultricies vehicula ut id elit. Fusce dapibus, tellus ac\ncursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit\namet risus.\n\n```norna-image-stack\n- image: schnauzer-portrait.jpg\n alt: A schnauzer-type dog sitting outdoors.\n caption: Schnauzer portrait. Photo by Bicanski, CC0, via Pixnio.\n- image: black-schnauzer.jpg\n alt: A black schnauzer-type dog standing on grass.\n caption: Black hunting dog portrait. Photo by Bicanski, CC0, via Pixnio.\n- image: retriever-portrait.jpg\n alt: A retriever-type dog sitting outdoors.\n caption: Retriever portrait. Photo by Bicanski, CC0, via Pixnio.\n```\n\n## Text Forward {#text-forward}\n\nThis section uses the `text-forward` preset. Its purpose is to give longer\nexplanatory text more presence while still supporting image captions and\nimage-led sections.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere\nconsectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.\nVivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.\n\n### Longer explanations\n\nMorbi leo risus, porta ac consectetur ac, vestibulum at eros. Donec sed odio\ndui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget\nlacinia odio sem nec elit.\n\n```norna-image-stack\n- image: grass-puppy.jpg\n alt: A puppy standing in green grass.\n caption: Puppy in grass. Photo by Bicanski, CC0, via Pixnio.\n- image: grey-street-dog.jpg\n alt: A grey dog standing on a paved street.\n caption: Grey dog on pavement. Photo by Bicanski, CC0, via Pixnio.\n- image: boxer-portrait.jpg\n alt: A brown boxer-type dog looking at the camera.\n caption: Brown dog portrait. Photo by Bicanski, CC0, via Pixnio.\n```\n\n## Statement {#statement}\n\nThis section uses the `statement` preset. Its purpose is to make short,\ndeclarative sections feel more direct and programmatic. It is intentionally\nstronger than the other presets and should usually be used sparingly.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi\nporta gravida at eget metus. Integer posuere erat a ante venenatis dapibus\nposuere velit aliquet.\n\n### Short emphasis\n\nPraesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean\nlacinia bibendum nulla sed consectetur. Maecenas sed diam eget risus varius\nblandit sit amet non magna.\n\n```norna-image-stack\n- image: sheepdog-grass.jpg\n alt: A sheepdog puppy sitting in green grass.\n caption: Sheepdog puppy in grass. Photo by Bicanski, CC0, via Pixnio.\n- image: sheepdog-wide.jpg\n alt: A sheepdog puppy lying outdoors.\n caption: Sheepdog puppy outdoors. Photo by Bicanski, CC0, via Pixnio.\n- image: black-pedigree.jpg\n alt: A black dog standing in grass.\n caption: Black pedigree dog portrait. Photo by Bicanski, CC0, via Pixnio.\n```","site/content.md","a68e5ee7be3be768",{"html":39,"metadata":40},"\u003Ch2 id=\"quiet-gallery-quiet-gallery\">Quiet Gallery {#quiet-gallery}\u003C/h2>\n\u003Cp>This section uses the \u003Ccode>quiet-gallery\u003C/code> preset. Its purpose is to keep text\nrestrained so images can carry much of the page without the typography\ncompeting for attention.\u003C/p>\n\u003Cp>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a\nante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis\ninterdum. Donec ullamcorper nulla non metus auctor fringilla.\u003C/p>\n\u003Ch3 id=\"reading-rhythm\">Reading rhythm\u003C/h3>\n\u003Cp>Curabitur blandit tempus porttitor. Praesent commodo cursus magna, vel\nscelerisque nisl consectetur et. Vestibulum id ligula porta felis euismod\nsemper.\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>- image: puppy-portrait.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A puppy sitting outdoors and looking toward the camera.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Puppy portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: shepherd-portrait.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A shepherd dog standing outdoors and looking toward the camera.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Shepherd dog portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: white-puppy.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A white puppy outdoors in winter.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: White puppy outdoors. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"compact-gallery-compact-gallery\">Compact Gallery {#compact-gallery}\u003C/h2>\n\u003Cp>This section uses the \u003Ccode>compact-gallery\u003C/code> preset. Its purpose is to make denser\nimage-led pages easier to scan when a site contains many sections, many images\nor short information blocks.\u003C/p>\n\u003Cp>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lacinia\nbibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod.\u003C/p>\n\u003Ch3 id=\"dense-sections\">Dense sections\u003C/h3>\n\u003Cp>Nullam id dolor id nibh ultricies vehicula ut id elit. Fusce dapibus, tellus ac\ncursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit\namet risus.\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>- image: schnauzer-portrait.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A schnauzer-type dog sitting outdoors.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Schnauzer portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: black-schnauzer.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A black schnauzer-type dog standing on grass.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Black hunting dog portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: retriever-portrait.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A retriever-type dog sitting outdoors.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Retriever portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"text-forward-text-forward\">Text Forward {#text-forward}\u003C/h2>\n\u003Cp>This section uses the \u003Ccode>text-forward\u003C/code> preset. Its purpose is to give longer\nexplanatory text more presence while still supporting image captions and\nimage-led sections.\u003C/p>\n\u003Cp>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere\nconsectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.\nVivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.\u003C/p>\n\u003Ch3 id=\"longer-explanations\">Longer explanations\u003C/h3>\n\u003Cp>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Donec sed odio\ndui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget\nlacinia odio sem nec elit.\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>- image: grass-puppy.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A puppy standing in green grass.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Puppy in grass. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: grey-street-dog.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A grey dog standing on a paved street.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Grey dog on pavement. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: boxer-portrait.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A brown boxer-type dog looking at the camera.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Brown dog portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"statement-statement\">Statement {#statement}\u003C/h2>\n\u003Cp>This section uses the \u003Ccode>statement\u003C/code> preset. Its purpose is to make short,\ndeclarative sections feel more direct and programmatic. It is intentionally\nstronger than the other presets and should usually be used sparingly.\u003C/p>\n\u003Cp>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi\nporta gravida at eget metus. Integer posuere erat a ante venenatis dapibus\nposuere velit aliquet.\u003C/p>\n\u003Ch3 id=\"short-emphasis\">Short emphasis\u003C/h3>\n\u003Cp>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean\nlacinia bibendum nulla sed consectetur. Maecenas sed diam eget risus varius\nblandit sit amet non magna.\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>- image: sheepdog-grass.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A sheepdog puppy sitting in green grass.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Sheepdog puppy in grass. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: sheepdog-wide.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A sheepdog puppy lying outdoors.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Sheepdog puppy outdoors. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>- image: black-pedigree.jpg\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> alt: A black dog standing in grass.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> caption: Black pedigree dog portrait. Photo by Bicanski, CC0, via Pixnio.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n",{"headings":41,"localImagePaths":68,"remoteImagePaths":69,"frontmatter":70,"imagePaths":85},[42,46,50,53,56,59,62,65],{"depth":43,"slug":44,"text":45},2,"quiet-gallery-quiet-gallery","Quiet Gallery {#quiet-gallery}",{"depth":47,"slug":48,"text":49},3,"reading-rhythm","Reading rhythm",{"depth":43,"slug":51,"text":52},"compact-gallery-compact-gallery","Compact Gallery {#compact-gallery}",{"depth":47,"slug":54,"text":55},"dense-sections","Dense sections",{"depth":43,"slug":57,"text":58},"text-forward-text-forward","Text Forward {#text-forward}",{"depth":47,"slug":60,"text":61},"longer-explanations","Longer explanations",{"depth":43,"slug":63,"text":64},"statement-statement","Statement {#statement}",{"depth":47,"slug":66,"text":67},"short-emphasis","Short emphasis",[],[],{"title":14,"description":15,"navigation":71,"sections":72},{"label":17},{"quiet-gallery":73,"compact-gallery":76,"text-forward":79,"statement":82},{"presentation":74},{"typography":75},{"preset":22},{"presentation":77},{"typography":78},{"preset":26},{"presentation":80},{"typography":81},{"preset":30},{"presentation":83},{"typography":84},{"preset":34},[],"theme",["Map",88,89],"site-theme",{"id":88,"data":90,"filePath":124,"digest":125,"rendered":126},{"navigation":91,"layout":92,"gallery":110,"typography":117,"presentation":119,"frame":122},{"brand":14},{"density":93,"pageWidth":94,"gutter":95,"spacing":98},"normal","1320px",{"desktop":96,"mobile":97},"clamp(1.25rem, 4vw, 3rem)","1rem",{"bodyToImages":99,"finalSectionBottom":101,"firstSectionTop":104,"imageGap":106,"sectionGap":109},{"desktop":100,"mobile":97},"1.25rem",{"desktop":102,"mobile":103},"clamp(2rem, 4vw, 3.5rem)","2rem",{"desktop":105,"mobile":97},"clamp(1.5rem, 3vw, 2.5rem)",{"desktop":107,"mobile":108},"clamp(1.25rem, 3vw, 2.25rem)","1.5rem",{"desktop":102,"mobile":103},{"width":111,"maxAvailableWidthPercent":112,"maxAvailableHeightPercent":114},"70vw",{"desktop":113,"mobile":113},100,{"desktop":115,"mobile":116},72,68,{"fontFamily":118,"preset":22,"rhythm":93},"Arial, 'Helvetica Neue', Helvetica, sans-serif",{"backgroundColor":120,"textColor":121},"#f8f5ee","#17201d",{"colors":123},"presentation","site/theme.md","0309eb6531ccc823",{"html":127,"metadata":128},"",{"headings":129,"localImagePaths":130,"remoteImagePaths":131,"frontmatter":132,"imagePaths":148},[],[],[],{"navigation":133,"layout":134,"gallery":142,"typography":145,"presentation":146,"frame":147},{"brand":14},{"density":93,"pageWidth":94,"gutter":135,"spacing":136},{"desktop":96,"mobile":97},{"firstSectionTop":137,"sectionGap":138,"finalSectionBottom":139,"bodyToImages":140,"imageGap":141},{"desktop":105,"mobile":97},{"desktop":102,"mobile":103},{"desktop":102,"mobile":103},{"desktop":100,"mobile":97},{"desktop":107,"mobile":108},{"width":111,"maxAvailableWidthPercent":143,"maxAvailableHeightPercent":144},{"desktop":113,"mobile":113},{"desktop":115,"mobile":116},{"fontFamily":118,"preset":22,"rhythm":93},{"backgroundColor":120,"textColor":121},{"colors":123},[]]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pid": 30816,
|
|
3
|
+
"port": 4321,
|
|
4
|
+
"url": "http://localhost:4321",
|
|
5
|
+
"urls": {
|
|
6
|
+
"local": [
|
|
7
|
+
"http://localhost:4321/"
|
|
8
|
+
],
|
|
9
|
+
"network": [
|
|
10
|
+
"http://192.168.1.102:4321/"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"background": true,
|
|
14
|
+
"startedAt": "2026-08-16T09:11:02.237Z"
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
11:11:01 [vite] connected.
|
|
2
|
+
11:11:01 [types] Generated 0ms
|
|
3
|
+
11:11:01 [vite] connected.
|
|
4
|
+
11:11:02 [content] Syncing content
|
|
5
|
+
11:11:02 [content] Astro config changed
|
|
6
|
+
11:11:02 [content] Clearing content store
|
|
7
|
+
[Shiki] The language "norna-image-stack" doesn't exist, falling back to "plaintext".
|
|
8
|
+
[Shiki] The language "norna-image-stack" doesn't exist, falling back to "plaintext".
|
|
9
|
+
[Shiki] The language "norna-image-stack" doesn't exist, falling back to "plaintext".
|
|
10
|
+
[Shiki] The language "norna-image-stack" doesn't exist, falling back to "plaintext".
|
|
11
|
+
11:11:02 [content] Synced content
|
|
12
|
+
astro v7.1.3 ready in 1095 ms
|
|
13
|
+
┃ Local http://localhost:4321/
|
|
14
|
+
┃ Network http://192.168.1.102:4321/
|
|
15
|
+
11:11:02 watching for file changes...
|
|
16
|
+
11:11:02 [200] / 50ms
|
|
17
|
+
11:11:02 [200] / 6ms
|
|
18
|
+
11:11:02 [200] / 7ms
|
|
19
|
+
11:12:06 [200] / 9ms
|
|
20
|
+
11:12:06 [WARN] [router] A `getStaticPaths()` route pattern was matched, but no matching static path was found for requested path `/favicon.ico`.
|
|
21
|
+
|
|
22
|
+
Possible dynamic routes being matched: ../../src/pages/[slug].astro.
|
|
23
|
+
11:16:24 [200] / 10ms
|
|
24
|
+
11:21:16 [200] / 8ms
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hash": "7d356e4b",
|
|
3
|
+
"configHash": "43eb97c5",
|
|
4
|
+
"lockfileHash": "808f2e8e",
|
|
5
|
+
"browserHash": "660a1d07",
|
|
6
|
+
"optimized": {
|
|
7
|
+
"astro > aria-query": {
|
|
8
|
+
"src": "../../../../../node_modules/aria-query/lib/index.js",
|
|
9
|
+
"file": "astro_n_aria-query.js",
|
|
10
|
+
"fileHash": "290be963",
|
|
11
|
+
"needsInterop": true
|
|
12
|
+
},
|
|
13
|
+
"astro > axobject-query": {
|
|
14
|
+
"src": "../../../../../node_modules/axobject-query/lib/index.js",
|
|
15
|
+
"file": "astro_n_axobject-query.js",
|
|
16
|
+
"fileHash": "1ce7e04f",
|
|
17
|
+
"needsInterop": true
|
|
18
|
+
},
|
|
19
|
+
"astro > html-escaper": {
|
|
20
|
+
"src": "../../../../../node_modules/html-escaper/esm/index.js",
|
|
21
|
+
"file": "astro_n_html-escaper.js",
|
|
22
|
+
"fileHash": "fd0adc71",
|
|
23
|
+
"needsInterop": false
|
|
24
|
+
},
|
|
25
|
+
"astro/runtime/client/dev-toolbar/entrypoint.js": {
|
|
26
|
+
"src": "../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js",
|
|
27
|
+
"file": "astro_runtime_client_dev-toolbar_entrypoint__js.js",
|
|
28
|
+
"fileHash": "4fbc375c",
|
|
29
|
+
"needsInterop": false
|
|
30
|
+
},
|
|
31
|
+
"embla-carousel": {
|
|
32
|
+
"src": "../../../../../node_modules/embla-carousel/esm/embla-carousel.esm.js",
|
|
33
|
+
"file": "embla-carousel.js",
|
|
34
|
+
"fileHash": "7d6b9ca3",
|
|
35
|
+
"needsInterop": false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"chunks": {
|
|
39
|
+
"astro-D_GIpJIE": {
|
|
40
|
+
"file": "astro-D_GIpJIE.js",
|
|
41
|
+
"isDynamicEntry": true
|
|
42
|
+
},
|
|
43
|
+
"audit-DM9Hkl5B": {
|
|
44
|
+
"file": "audit-DM9Hkl5B.js",
|
|
45
|
+
"isDynamicEntry": true
|
|
46
|
+
},
|
|
47
|
+
"highlight-DnZ1ULOL": {
|
|
48
|
+
"file": "highlight-DnZ1ULOL.js",
|
|
49
|
+
"isDynamicEntry": false
|
|
50
|
+
},
|
|
51
|
+
"icons-RyebKi45": {
|
|
52
|
+
"file": "icons-RyebKi45.js",
|
|
53
|
+
"isDynamicEntry": false
|
|
54
|
+
},
|
|
55
|
+
"rolldown-runtime-BvCyGRYZ": {
|
|
56
|
+
"file": "rolldown-runtime-BvCyGRYZ.js",
|
|
57
|
+
"isDynamicEntry": false
|
|
58
|
+
},
|
|
59
|
+
"settings-DaU-gNnK": {
|
|
60
|
+
"file": "settings-DaU-gNnK.js",
|
|
61
|
+
"isDynamicEntry": true
|
|
62
|
+
},
|
|
63
|
+
"toolbar-63PA619H": {
|
|
64
|
+
"file": "toolbar-63PA619H.js",
|
|
65
|
+
"isDynamicEntry": true
|
|
66
|
+
},
|
|
67
|
+
"ui-library--bkcNSYz": {
|
|
68
|
+
"file": "ui-library--bkcNSYz.js",
|
|
69
|
+
"isDynamicEntry": true
|
|
70
|
+
},
|
|
71
|
+
"window-jPkpKVcy": {
|
|
72
|
+
"file": "window-jPkpKVcy.js",
|
|
73
|
+
"isDynamicEntry": false
|
|
74
|
+
},
|
|
75
|
+
"xray-BXCHpEJP": {
|
|
76
|
+
"file": "xray-BXCHpEJP.js",
|
|
77
|
+
"isDynamicEntry": true
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|