@nebularstreams/statify 3.0.7 → 3.0.8

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.
Files changed (68) hide show
  1. package/package.json +2 -1
  2. package/skill/statify-site/SKILL.md +53 -0
  3. package/skill/statify-site/agents/openai.yaml +4 -0
  4. package/skill/statify-site/references/authoring.md +121 -0
  5. package/skill/statify-site/references/landing-pages.md +107 -0
  6. package/skill/statify-site/references/skins.md +150 -0
  7. package/templates/landing/metadata.json +1 -1
  8. package/templates/landing/pages/docs/cookies.md +25 -0
  9. package/templates/landing/pages/docs/index.md +13 -0
  10. package/templates/landing/pages/docs/privacy.md +50 -0
  11. package/templates/landing/pages/docs/tos.md +49 -0
  12. package/templates/landing/pages/index.json +3 -3
  13. package/templates/landing-rich/assets/app/webfonts/fa-brands-400.woff2 +0 -0
  14. package/templates/landing-rich/assets/app/webfonts/fa-solid-900.woff2 +0 -0
  15. package/templates/landing-rich/assets/app/website.css +32 -0
  16. package/templates/landing-rich/assets/app/website.min.js +6 -0
  17. package/templates/landing-rich/assets/res/carousel/image-1.webp +0 -0
  18. package/templates/landing-rich/assets/res/carousel/image-2.webp +0 -0
  19. package/templates/landing-rich/assets/res/carousel/image-3.webp +0 -0
  20. package/templates/landing-rich/assets/res/custom.css +122 -0
  21. package/templates/landing-rich/assets/res/logos/favicon.ico +0 -0
  22. package/templates/landing-rich/assets/res/logos/favicon.png +0 -0
  23. package/templates/landing-rich/assets/res/logos/logo.medallion.png +0 -0
  24. package/templates/landing-rich/assets/res/logos/logo.white.png +0 -0
  25. package/templates/landing-rich/assets/res/proj/banda-tech-client.webp +0 -0
  26. package/templates/landing-rich/assets/res/proj/banda-tech-server.webp +0 -0
  27. package/templates/landing-rich/assets/res/proj/proj-common-ground.webp +0 -0
  28. package/templates/landing-rich/assets/res/proj/proj-fieldnote.webp +0 -0
  29. package/templates/landing-rich/assets/res/proj/proj-tribes.webp +0 -0
  30. package/templates/landing-rich/images.json +932 -0
  31. package/templates/landing-rich/metadata.json +115 -0
  32. package/templates/landing-rich/pages/docs/cookies.md +25 -0
  33. package/templates/landing-rich/pages/docs/index.md +13 -0
  34. package/templates/landing-rich/pages/docs/privacy.md +50 -0
  35. package/templates/landing-rich/pages/docs/tos.md +49 -0
  36. package/templates/landing-rich/pages/faq.json +68 -0
  37. package/templates/landing-rich/pages/index.json +333 -0
  38. package/templates/landing-rich/pages/res/bg/molecule.svg +3 -0
  39. package/templates/landing-rich/pages/res/custom.css +270 -0
  40. package/templates/landing-rich/pages/res/icon-1024.png +0 -0
  41. package/templates/landing-rich/pages/res/index/cooking-0.webp +0 -0
  42. package/templates/landing-rich/pages/res/index/cooking-1.webp +0 -0
  43. package/templates/landing-rich/pages/res/index/cooking-2.webp +0 -0
  44. package/templates/landing-rich/pages/res/index/cooking-3.webp +0 -0
  45. package/templates/landing-rich/pages/res/index/icon-holopoke.png +0 -0
  46. package/templates/landing-rich/pages/res/index/obscene-diagram.webp +0 -0
  47. package/templates/landing-rich/pages/res/index/obscene-screenshot.webp +0 -0
  48. package/templates/landing-rich/pages/res/index/obscene-screenshots.png +0 -0
  49. package/templates/landing-rich/pages/res/index/obscene-studio-midi-controllers-3.webp +0 -0
  50. package/templates/landing-rich/pages/res/index/scr-avion-dentro.webp +0 -0
  51. package/templates/landing-rich/pages/res/index/scr-avion.webp +0 -0
  52. package/templates/landing-rich/pages/res/index/scr-football-0.webp +0 -0
  53. package/templates/landing-rich/pages/res/index/scr-football-0a.webp +0 -0
  54. package/templates/landing-rich/pages/res/index/scr-football-1.webp +0 -0
  55. package/templates/landing-rich/pages/res/index/scr-football-1b.webp +0 -0
  56. package/templates/landing-rich/pages/res/index/scr-football-jp.webp +0 -0
  57. package/templates/landing-rich/pages/res/index/scr-gaming-warning-mini.webp +0 -0
  58. package/templates/landing-rich/pages/res/index/scr-gaming-warning.webp +0 -0
  59. package/templates/landing-rich/pages/res/index/scr-music-clubbing.webp +0 -0
  60. package/templates/landing-rich/pages/res/index/scr-pollos-hermanos.webp +0 -0
  61. package/templates/landing-rich/pages/res/index/shot-livestream.webp +0 -0
  62. package/templates/landing-rich/pages/res/index/studio-screenshot.webp +0 -0
  63. package/templates/landing-rich/pages/res/trans-horizontal.png +0 -0
  64. package/templates/landing-rich/pages/res/videos/obscene-promo-720.mp4 +0 -0
  65. package/templates/landing-rich/pages/res/videos/obscene-promo-720.webp +0 -0
  66. package/templates/landing-rich/pages/res/videos/obscene-studio-showcase-1.mp4 +0 -0
  67. package/templates/landing-rich/pages/res/videos/obscene-studio-showcase-1.webp +0 -0
  68. package/tool/cli.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nebularstreams/statify",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "description": "Generate Cool Landing and Documentation Pages",
5
5
  "scripts": {
6
6
  "build:app": "node tool/cli.js app",
@@ -21,6 +21,7 @@
21
21
  "src.website/*.mjs",
22
22
  "src.website/package.json",
23
23
  "src.website/package-lock.json",
24
+ "skill/",
24
25
  "templates/",
25
26
  "tool/cli.js",
26
27
  "readme.md"
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: statify-site
3
+ description: Create or update static documentation sites and landing pages with Statify templates, Markdown, JSON page definitions, and supported website widgets. Use for websites built with @nebularstreams/statify; do not use for unrelated web frameworks.
4
+ ---
5
+
6
+ # Statify Site
7
+
8
+ Create a maintainable Statify source site and verify the generated output. Preserve the user's content, branding, chosen template, and existing custom widgets.
9
+
10
+ ## Start from the installed tool
11
+
12
+ Confirm that `statify --help` works in the target project. Prefer the project's pinned dependency through an npm script or `npx --no-install statify`; do not fetch or globally install a different version without permission.
13
+
14
+ For a new site, initialize one of the bundled templates:
15
+
16
+ ```sh
17
+ statify init <site-directory> documentation
18
+ statify init <site-directory> landing
19
+ ```
20
+
21
+ For an existing site, inspect its `metadata.json`, `pages/`, `assets/`, and custom styles before editing. Do not reinitialize it.
22
+
23
+ ## Author the site
24
+
25
+ Read [references/authoring.md](references/authoring.md) for the source layout, metadata conventions, links, and documentation pages.
26
+
27
+ For landing pages or JSON widgets, also read [references/landing-pages.md](references/landing-pages.md). Inspect `templates/landing-rich` when advanced examples such as background video, YouTube embeds, FAQs, or nested cards are relevant.
28
+
29
+ When choosing colors, typography scale, control sizes, or light/dark presentation, read [references/skins.md](references/skins.md) before editing the template's local stylesheet.
30
+
31
+ Keep content factual and specific to the user's request. Treat template names, companies, URLs, analytics identifiers, contact details, and legal text as examples to replace—not facts to preserve. Preserve accurate image attribution when reusing an image.
32
+
33
+ Prefer the simplest supported structure that expresses the page. Reuse the template's existing widgets and CSS conventions.
34
+
35
+ Do not invent licenses, customer claims, testimonials, compliance claims, analytics IDs, legal identities, or production contact details. Mark placeholder legal content clearly and recommend appropriate review.
36
+
37
+ ## Build and verify
38
+
39
+ Generate into a disposable output directory unless the user specifies the deployment directory:
40
+
41
+ ```sh
42
+ statify folder <site-directory> <output-directory>
43
+ ```
44
+
45
+ Before handing off:
46
+
47
+ - Parse every edited JSON file.
48
+ - Confirm local image, stylesheet, script, and page references resolve or are intentional deployment paths.
49
+ - Build the complete folder, not just an individual page.
50
+ - Inspect generated filenames and check representative HTML for the expected title, canonical URL, navigation, and content.
51
+ - When visual inspection is available, preview at least the home page and one representative documentation or secondary page at desktop and narrow widths.
52
+
53
+ Report the source directory, output directory, template/flavour used, validation performed, and any placeholders still requiring user content or assets.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Statify Site"
3
+ short_description: "Build documentation sites and landing pages"
4
+ default_prompt: "Use $statify-site to create a responsive website from a Statify template."
@@ -0,0 +1,121 @@
1
+ # Statify authoring
2
+
3
+ ## Source layout
4
+
5
+ ```text
6
+ site/
7
+ metadata.json
8
+ images.json
9
+ pages/
10
+ index.md or index.json
11
+ nested-section/
12
+ index.md
13
+ res/
14
+ assets/
15
+ app/
16
+ website.css
17
+ website.min.js
18
+ res/
19
+ custom.css
20
+ ```
21
+
22
+ `statify folder` walks `pages/` recursively. It converts `.md` and `.json` pages to matching `.html` paths, copies other files unchanged, and copies the contents of optional `assets/` into the output root.
23
+
24
+ Both `pages/res/` and `assets/res/` produce `/res/...` in the output. Choose the partition that best expresses ownership:
25
+
26
+ - Keep page-local resources beside the content under `pages/res/`.
27
+ - Keep shared site resources under `assets/res/`.
28
+ - Use other `assets/` subfolders for global output folders; for example, `assets/app/` becomes `/app/`.
29
+
30
+ Do not create the same output path in both trees. When editing an existing site, preserve its chosen partition unless there is a concrete reason to reorganize it.
31
+
32
+ ## Metadata
33
+
34
+ Start from the selected template's `metadata.json` because the renderer expects its established shape. Update at least:
35
+
36
+ - `title` and `description`
37
+ - `canonical`
38
+ - social `image`
39
+ - `site.name`, `site.url`, and `site.domain`
40
+ - `author` and `publisher`
41
+ - icons, stylesheets, scripts, and font paths in `head`
42
+ - navigation and breadcrumb URLs
43
+
44
+ Keep the canonical origin consistent. `site.domain` is required by the renderer. Use `example.com` only for an explicitly fictional or unfinished site.
45
+
46
+ `head` entries use `t` for the HTML tag and ordinary element attributes for the remaining fields:
47
+
48
+ ```json
49
+ {
50
+ "t": "link",
51
+ "rel": "stylesheet",
52
+ "href": "app/website.css"
53
+ }
54
+ ```
55
+
56
+ Navigation links live in `navibar.links`. A separator entry is represented by:
57
+
58
+ ```json
59
+ {
60
+ "SPACER": {
61
+ "separator": true
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Documentation pages
67
+
68
+ Write documentation as Markdown beneath `pages/`. Headings create the page outline. Relative Markdown links are rewritten to generated page routes, so prefer:
69
+
70
+ ```markdown
71
+ [Installation](guide/install.md)
72
+ ```
73
+
74
+ Keep a single H1 followed by meaningful H2/H3 sections. Tables, task lists, fenced code, images, and ordinary inline Markdown are supported.
75
+
76
+ Subfolders may provide arbitrary documentation trees. Keep link paths relative to the source page when possible.
77
+
78
+ The legal pages bundled with the documentation template are examples. Replace their organization, jurisdiction, dates, practices, and contact details. Do not present template policies as legal advice.
79
+
80
+ ## Images
81
+
82
+ `images.json` supplies decorative image data in an Unsplash-compatible shape. Preserve attribution fields for third-party images. Do not invent attribution or remove licensing information merely to simplify a template.
83
+
84
+ ## Local styling and skin colors
85
+
86
+ Use the template's local stylesheet—normally `assets/res/custom.css`—for branding and page-specific presentation. `website.css` contains the shared application styles and should remain untouched during ordinary authoring.
87
+
88
+ Read [skins.md](skins.md) when the task includes visual personalization. It lists the overridable variables supplied by the application skin.
89
+
90
+ At minimum, personalize the accent variables:
91
+
92
+ ```css
93
+ :root {
94
+ --accent: #ff8800;
95
+ --accent-tx: rgba(255, 136, 0, 0.5);
96
+ }
97
+ ```
98
+
99
+ Choose `--accent-tx` as a translucent version or companion of the main accent. Check that text and controls using the accent remain legible in both skins.
100
+
101
+ The application supports light and dark skins. Use scoped overrides only when the shared values do not work in both:
102
+
103
+ ```css
104
+ .skinroot.light {
105
+ --accent: #b74d00;
106
+ }
107
+
108
+ .skinroot.dark {
109
+ --accent: #ff9d3d;
110
+ }
111
+ ```
112
+
113
+ The standard navigation can expose a light/dark toggle. If it is present, verify both states and confirm the preference survives a reload. Prefer skin variables over one-off hard-coded colors so both modes remain coherent.
114
+
115
+ ## Individual pages
116
+
117
+ Use the full-folder build for final validation. For a focused iteration, a page can be generated with:
118
+
119
+ ```sh
120
+ statify file <site>/pages/path/page.md <output> <site>
121
+ ```
@@ -0,0 +1,107 @@
1
+ # Landing pages and widgets
2
+
3
+ Landing pages are JSON objects rendered by a named widget. Begin with `templates/landing/pages/index.json`; consult `templates/landing-rich/pages/index.json` only for relevant advanced patterns.
4
+
5
+ ## Page shell
6
+
7
+ The common landing page uses `FeatureList`:
8
+
9
+ ```json
10
+ {
11
+ "widget": "FeatureList",
12
+ "title": "Company name",
13
+ "canonical": "https://example.com",
14
+ "features": {
15
+ "title": {
16
+ "items": []
17
+ },
18
+ "cards": []
19
+ },
20
+ "footer": {
21
+ "links": []
22
+ }
23
+ }
24
+ ```
25
+
26
+ Use the exact property names and nesting demonstrated by the templates. CSS class strings are presentation hooks consumed by the website flavour; reuse known classes rather than guessing new behavior.
27
+
28
+ ## Content items
29
+
30
+ A basic text or heading item:
31
+
32
+ ```json
33
+ {
34
+ "el": "h2",
35
+ "text": "A useful heading",
36
+ "class": "accent"
37
+ }
38
+ ```
39
+
40
+ An image item:
41
+
42
+ ```json
43
+ {
44
+ "image": "/res/product.webp",
45
+ "alt": "The product dashboard showing weekly activity",
46
+ "class": "shot col-12"
47
+ }
48
+ ```
49
+
50
+ Always provide meaningful `alt` text unless an image is purely decorative.
51
+
52
+ A link item:
53
+
54
+ ```json
55
+ {
56
+ "link": {
57
+ "text": "Get started",
58
+ "href": "/docs/start",
59
+ "class": "accentbutton"
60
+ }
61
+ }
62
+ ```
63
+
64
+ Cards can contain `items`, nested `cards`, and optional `links`. Keep nesting shallow unless the layout demonstrated by an existing template calls for it.
65
+
66
+ ## Video
67
+
68
+ The rich template demonstrates two different video forms.
69
+
70
+ Use `features.video` for a local background or showcase video:
71
+
72
+ ```json
73
+ {
74
+ "url": "/res/videos/showcase",
75
+ "title": "Product showcase",
76
+ "autoplay": true,
77
+ "muted": "muted",
78
+ "loop": true
79
+ }
80
+ ```
81
+
82
+ The URL is a media basename in the existing convention. Confirm the required encoded video files exist. Autoplay video must remain muted and should not be the only way important information is communicated.
83
+
84
+ Use a `youtube` item for a consent-aware YouTube embed:
85
+
86
+ ```json
87
+ {
88
+ "youtube": {
89
+ "ref": "VIDEO_ID",
90
+ "image": "/res/video-poster.webp",
91
+ "title": "Descriptive video title",
92
+ "class": "smallervideo"
93
+ }
94
+ }
95
+ ```
96
+
97
+ Use only a real video ID supplied by the user or verified from their source. Provide a local poster image and descriptive title.
98
+
99
+ ## Other demonstrated patterns
100
+
101
+ - `imageCarousel` accepts an array of objects with `url` values.
102
+ - `Faq` pages use `faq.mainEntity`, with `name` and Markdown-capable `acceptedAnswer` values.
103
+
104
+ ## Choosing complexity
105
+
106
+ Use ordinary text, images, links, and cards for most sites. Richer sites could include video, FAQs, carousels.
107
+ A rich reference is a syntax catalogue, not a target page length.
@@ -0,0 +1,150 @@
1
+ # Skin variables
2
+
3
+ Statify's shared `website.css` defines a variable-driven light/dark skin. Override these variables in the template-local stylesheet, normally `assets/res/custom.css`; do not edit the compiled application stylesheet.
4
+
5
+ Use `:root` for a value shared by both modes. Use `.skinroot.light` or `.skinroot.dark` when a token needs different contrast in each mode. Keep overrides limited to variables the design actually needs.
6
+
7
+ ## Core surface and text tokens
8
+
9
+ | Variable | Role |
10
+ | --- | --- |
11
+ | `--window-background` | Main application background |
12
+ | `--window-background-0` | Lowest dark-skin surface step |
13
+ | `--window-background-1` | First raised dark-skin surface step |
14
+ | `--window-background-2` | Second raised dark-skin surface step |
15
+ | `--window-background-3` | Third raised dark-skin surface step |
16
+ | `--window-background-hi` | Highlighted or raised surface |
17
+ | `--window-background-lo` | Recessed light-skin surface |
18
+ | `--primary-color` | Primary chrome or strong surface color |
19
+ | `--black` | Stable black token |
20
+ | `--text` | Main text color |
21
+ | `--text-lo` | Secondary or subdued text |
22
+ | `--border-color` | Borders and separators |
23
+ | `--placeholder` | Placeholder or empty-state surface |
24
+ | `--inputs` | Input background |
25
+ | `--shadow-color` | Shadow color |
26
+
27
+ The numbered `--window-background-*` variables are present in the dark source skin, while `--window-background-lo` is present in the light source skin. A custom stylesheet may define the complete set in both modes when its components need them.
28
+
29
+ ## Accent and foreground tokens
30
+
31
+ The templates define the main branding accents locally:
32
+
33
+ | Variable | Role |
34
+ | --- | --- |
35
+ | `--accent` | Primary brand/action color |
36
+ | `--accent-tx` | Translucent or softer accent used by decorative treatments |
37
+
38
+ The shared skin provides related foreground and state tokens:
39
+
40
+ | Variable | Role |
41
+ | --- | --- |
42
+ | `--accent-light` | Pale accent surface, especially in light mode |
43
+ | `--accent-alt` | Alternate accent |
44
+ | `--text-over-accent` | Text placed over the main accent |
45
+ | `--text-over-accent-hover` | Hover text over the main accent |
46
+ | `--text-over-primary` | Text placed over the primary surface |
47
+ | `--text-over-primary-hover` | Hover text over the primary surface |
48
+
49
+ Check text-over-color pairs together. A visually attractive accent is not usable if `--text-over-accent` lacks contrast.
50
+
51
+ ## Status and overlay tokens
52
+
53
+ | Variable | Role |
54
+ | --- | --- |
55
+ | `--back-success` | Success-message background |
56
+ | `--back-warning` | Warning-message background |
57
+ | `--back-error` | Error-message background |
58
+ | `--bg-ok` | Strong success indicator |
59
+ | `--bg-warning` | Strong warning indicator |
60
+ | `--bg-error` | Strong error indicator |
61
+ | `--alpha-band` | Translucent band or overlay |
62
+ | `--alpha-gradient` | Overlay/gradient endpoint |
63
+ | `--green` | Generic green utility color |
64
+ | `--orange` | Generic orange utility color |
65
+ | `--red` | Generic red utility color |
66
+
67
+ `--bg-ok`, `--bg-warning`, and `--bg-error` are declared by the light skin; define dark equivalents only if components using them need different dark-mode values. Preserve recognizable success, warning, and error meaning.
68
+
69
+ ## Section backgrounds
70
+
71
+ The `.back-zero`, `.back-one`, `.back-two`, and `.back-three` helpers consume matching variables:
72
+
73
+ | Variable | Default intent |
74
+ | --- | --- |
75
+ | `--back-zero` | Base section background |
76
+ | `--back-one` | First contrasting section background |
77
+ | `--back-two` | Second contrasting section background |
78
+ | `--back-three` | Third contrasting section background |
79
+
80
+ The default dark skin derives these from the window surfaces with 45-degree gradients. They may also be solid colors. Some templates define additional local levels such as `--back-four` and `--back-five`; these are template extensions, not base skin variables.
81
+
82
+ Example paired palette:
83
+
84
+ ```css
85
+ .skinroot.light {
86
+ --back-zero: #ffffff;
87
+ --back-one: #f6f2ff;
88
+ --back-two: #e8dcff;
89
+ --back-three: #cab0ff;
90
+ }
91
+
92
+ .skinroot.dark {
93
+ --back-zero: #111111;
94
+ --back-one: #211934;
95
+ --back-two: #32234f;
96
+ --back-three: #49316f;
97
+ }
98
+ ```
99
+
100
+ Only define levels used by the page. Check the main and subdued text colors against every chosen level.
101
+
102
+ ## Responsive font variables
103
+
104
+ The application provides root font sizes by breakpoint:
105
+
106
+ | Variable | Source default |
107
+ | --- | --- |
108
+ | `--font-xs` | `16px` |
109
+ | `--font-sm` | `16px` |
110
+ | `--font-md` | `18px` |
111
+ | `--font-lg` | `18px` |
112
+ | `--font-xl` | `18px` |
113
+ | `--font-fullhd` | `20px` |
114
+
115
+ Override these only when the site needs a different global type scale. Preserve readable mobile sizes and test long headings, navigation labels, tables, and code blocks after changing them.
116
+
117
+ ## Control-size variables
118
+
119
+ | Variable | Source default | Role |
120
+ | --- | --- | --- |
121
+ | `--unitsize` | `3rem` | Standard control and navigation unit |
122
+ | `--unitsize-small` | `2.54rem` | Compact control unit |
123
+
124
+ These are structural variables rather than branding colors. Change them cautiously because many controls, icons, and navigation elements share them.
125
+
126
+ ## Practical starter override
127
+
128
+ For most sites, begin with the accents and leave the structural defaults alone:
129
+
130
+ ```css
131
+ :root {
132
+ --accent: #ff8800;
133
+ --accent-tx: rgba(255, 136, 0, 0.5);
134
+ }
135
+
136
+ .skinroot.light {
137
+ --accent: #b74d00;
138
+ --accent-light: #fff1e6;
139
+ --text-over-accent: #ffffff;
140
+ --text-over-accent-hover: #ffffff;
141
+ }
142
+
143
+ .skinroot.dark {
144
+ --accent: #ff9d3d;
145
+ --text-over-accent: #111111;
146
+ --text-over-accent-hover: #000000;
147
+ }
148
+ ```
149
+
150
+ Preview the generated site in both skins at narrow and wide widths. Verify ordinary text, muted text, links, buttons, inputs, borders, cards, status colors, and every section-background level used by the page.
@@ -96,7 +96,7 @@
96
96
  "separator": true
97
97
  },
98
98
  "Documentation": {
99
- "url": "/docs/index",
99
+ "url": "docs/index",
100
100
  "icon": "book"
101
101
  },
102
102
  "Contact": {
@@ -0,0 +1,25 @@
1
+ # Cookies and Local Storage
2
+
3
+ **Example policy — replace before publishing. Last updated: September 17, 2026.**
4
+
5
+ This page explains how the Brightfield Labs website uses cookies and browser storage.
6
+
7
+ ## What we store
8
+
9
+ The website does not use advertising or third-party tracking cookies. It stores only preferences requested by the visitor.
10
+
11
+ | Storage key | Purpose | Duration |
12
+ | --- | --- | --- |
13
+ | `brightfield.preferences` | Remembers theme and policy-notice choices | Until changed or deleted |
14
+
15
+ This information remains in the visitor's browser and is not used to create an advertising profile.
16
+
17
+ ## Managing stored data
18
+
19
+ Visitors can remove local preferences through their browser's privacy or site-data settings. Removing them resets the saved theme and may display the policy notice again.
20
+
21
+ If optional analytics or other cookies are introduced, this policy and the website's consent controls should be updated before those technologies are enabled.
22
+
23
+ ## Contact
24
+
25
+ Questions about this example policy can be sent to [privacy@example.com](mailto:privacy@example.com).
@@ -0,0 +1,13 @@
1
+ # Documentation
2
+
3
+ Welcome to the Brightfield Labs documentation center. Use this template for product guides, company policies, technical references, or any other structured content.
4
+
5
+ ## Company Policies
6
+
7
+ * [Terms of Service](tos.md)
8
+ * [Privacy Policy](privacy.md)
9
+ * [Cookies and Local Storage](cookies.md)
10
+
11
+ ## Getting Started
12
+
13
+ Add Markdown files anywhere inside the `pages` folder. Subfolders become sections, and ordinary assets such as stylesheets and downloads are copied into the generated site.
@@ -0,0 +1,50 @@
1
+ # Privacy Policy
2
+
3
+ **Example policy — obtain appropriate legal review before publishing. Last updated: September 17, 2026.**
4
+
5
+ This policy describes how **Brightfield Labs** (**we**, **us**, or **our**) handles personal information when someone visits **example.com** or contacts us.
6
+
7
+ ## Information we process
8
+
9
+ We aim to collect only the information needed to operate and protect the website, communicate with visitors, and provide requested services.
10
+
11
+ This may include:
12
+
13
+ * ordinary technical request data, such as IP address, browser information, requested pages, and timestamps;
14
+ * preferences stored locally in the visitor's browser;
15
+ * contact details and message content supplied when someone writes to us; and
16
+ * information required to provide a service requested by a customer.
17
+
18
+ We do not sell personal information or use website visitor information to create advertising profiles.
19
+
20
+ ## Why we use information
21
+
22
+ We may use information to operate and secure the website, prevent abuse, respond to enquiries, deliver requested services, meet legal obligations, and protect our rights. The appropriate legal basis depends on the context and applicable law.
23
+
24
+ ## Cookies and local storage
25
+
26
+ The website may store limited preferences in the visitor's browser. See our [Cookies and Local Storage Policy](cookies.md) for details.
27
+
28
+ ## Service providers and transfers
29
+
30
+ Trusted providers may process information when they host, maintain, deliver, or secure the website. We expect providers to handle information under suitable contractual and legal safeguards, including safeguards for international transfers where required.
31
+
32
+ ## Retention and security
33
+
34
+ We retain information only as long as reasonably necessary for its purpose, legal obligations, security, and dispute resolution. We use reasonable technical and organizational safeguards, although no internet service can guarantee absolute security.
35
+
36
+ ## Individual rights
37
+
38
+ Depending on location, individuals may have rights to access, correct, delete, restrict, or receive a copy of their personal information, or to object to certain processing. Identity verification may be required before a request is completed.
39
+
40
+ ## Changes
41
+
42
+ We may update this policy as the website, our practices, or applicable requirements change. The revision date above identifies the latest version.
43
+
44
+ ## Contact
45
+
46
+ **Brightfield Labs**
47
+ 100 Example Street
48
+ Sample City, EX 10000
49
+
50
+ Email: [privacy@example.com](mailto:privacy@example.com)
@@ -0,0 +1,49 @@
1
+ # Website Terms
2
+
3
+ **Example terms — obtain appropriate legal review before publishing. Last updated: September 17, 2026.**
4
+
5
+ These terms govern access to the Brightfield Labs website at **example.com**. By using the website, visitors agree to these terms.
6
+
7
+ ## Website purpose
8
+
9
+ The website provides general information about Brightfield Labs, its services, and example work. Descriptions, demonstrations, roadmaps, and other materials are informational and do not create a binding offer, warranty, or service commitment.
10
+
11
+ Separate agreements may govern paid products, professional services, software licenses, support, or customer projects. Those agreements take precedence for the services they cover.
12
+
13
+ ## Intellectual property
14
+
15
+ Unless stated otherwise, Brightfield Labs owns the original website content and design or uses them with permission. Visitors may view the website for ordinary informational and business-evaluation purposes, but may not republish or commercially exploit substantial content without permission.
16
+
17
+ Third-party names, trademarks, and materials remain the property of their respective owners.
18
+
19
+ ## Acceptable use
20
+
21
+ Visitors must not use the website unlawfully, interfere with its operation or security, attempt unauthorized access, introduce malicious code, impose unreasonable automated load, or misrepresent an affiliation with Brightfield Labs.
22
+
23
+ ## External services
24
+
25
+ Links to third-party websites are provided for convenience. Brightfield Labs does not control their availability, security, content, or terms.
26
+
27
+ ## Availability and disclaimer
28
+
29
+ We may change, suspend, or discontinue the website at any time. The website and its informational content are provided on an **"as available"** basis. To the extent permitted by law, we do not guarantee that the website will always be available, error-free, complete, or suitable for a particular purpose.
30
+
31
+ ## Liability
32
+
33
+ To the extent permitted by law, Brightfield Labs is not liable for indirect or consequential losses arising solely from use of, inability to use, or reliance on this public website. Nothing here excludes rights or liabilities that cannot legally be excluded.
34
+
35
+ ## Privacy
36
+
37
+ Our handling of personal information is described in the [Privacy Policy](privacy.md), and browser storage is described in the [Cookies and Local Storage Policy](cookies.md).
38
+
39
+ ## Changes
40
+
41
+ We may update these terms from time to time. Updated terms apply from publication unless otherwise stated.
42
+
43
+ ## Contact
44
+
45
+ **Brightfield Labs**
46
+ 100 Example Street
47
+ Sample City, EX 10000
48
+
49
+ Email: [hello@example.com](mailto:hello@example.com)
@@ -250,17 +250,17 @@
250
250
  },
251
251
  {
252
252
  "title": "Cookies",
253
- "href": "/docs/cookies",
253
+ "href": "docs/cookies",
254
254
  "target": "doc"
255
255
  },
256
256
  {
257
257
  "title": "Privacy",
258
- "href": "/docs/privacy",
258
+ "href": "docs/privacy",
259
259
  "target": "doc"
260
260
  },
261
261
  {
262
262
  "title": "Terms",
263
- "href": "/docs/tos",
263
+ "href": "docs/tos",
264
264
  "target": "doc"
265
265
  }
266
266
  ]