@crombolo/cli 0.0.0-stage → 0.9.1

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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +69 -0
  3. package/bin/crombolo.ts +2108 -0
  4. package/package.json +42 -4
  5. package/src/index.ts +7 -0
  6. package/src/operations/commands.ts +775 -0
  7. package/src/operations/sections.ts +423 -0
  8. package/src/templates.ts +309 -0
  9. package/templates/basic/bundle/bundle.json +45 -0
  10. package/templates/basic/bundle/nodes/36955f6e-d110-469e-b280-72096eccd148.json +38 -0
  11. package/templates/basic/files/components/homePage.tsx +22 -0
  12. package/templates/basic/files/schema/content-types/home-page.toml +28 -0
  13. package/templates/basic/files/schema/schema.toml +2 -0
  14. package/templates/basic/template.json +4 -0
  15. package/templates/demo/harbourstone/CREDITS.md +42 -0
  16. package/templates/demo/harbourstone/bundle/blobs/180cc8ef/distillery-from-the-cliff-path.jpg +0 -0
  17. package/templates/demo/harbourstone/bundle/blobs/68c9cfdf/bottle-brine-and-kiln.jpg +0 -0
  18. package/templates/demo/harbourstone/bundle/blobs/6be45535/bottle-oloroso-pier.jpg +0 -0
  19. package/templates/demo/harbourstone/bundle/blobs/6d8d6398/bottle-the-cove.jpg +0 -0
  20. package/templates/demo/harbourstone/bundle/blobs/7b4713f8/copper-pot-stills.jpg +0 -0
  21. package/templates/demo/harbourstone/bundle/blobs/c114b7d8/bottle-neap-tide.jpg +0 -0
  22. package/templates/demo/harbourstone/bundle/blobs/fd337567/casks-in-the-sea-facing-warehouse.jpg +0 -0
  23. package/templates/demo/harbourstone/bundle/bundle.json +197 -0
  24. package/templates/demo/harbourstone/bundle/nodes/069cc3c5-c9f5-4792-90c9-e2bfcc4855b6.json +35 -0
  25. package/templates/demo/harbourstone/bundle/nodes/13788fe7-1a45-4b48-8ae4-f4227e154e1e.json +35 -0
  26. package/templates/demo/harbourstone/bundle/nodes/180cc8ef-caf1-4316-b6a7-e3b5aee41ffd.json +60 -0
  27. package/templates/demo/harbourstone/bundle/nodes/22144db2-e214-4006-a0bb-53b5bd121fd6.json +35 -0
  28. package/templates/demo/harbourstone/bundle/nodes/26e87610-e2d6-4b47-bf92-3967f7186907.json +35 -0
  29. package/templates/demo/harbourstone/bundle/nodes/2caa099b-3884-472d-9cea-797a0f0c376f.json +35 -0
  30. package/templates/demo/harbourstone/bundle/nodes/2efbdb5b-7888-4a49-bca5-c0f85b76e472.json +42 -0
  31. package/templates/demo/harbourstone/bundle/nodes/2fe03891-1294-4344-8e24-47e8b212e5b0.json +35 -0
  32. package/templates/demo/harbourstone/bundle/nodes/38b009f7-03c0-4fda-b5c7-843ad6044e9c.json +35 -0
  33. package/templates/demo/harbourstone/bundle/nodes/3d312cc8-2937-40e1-ba14-fd781c9a862d.json +95 -0
  34. package/templates/demo/harbourstone/bundle/nodes/3dc30fc1-973a-4217-b26f-24902210be17.json +35 -0
  35. package/templates/demo/harbourstone/bundle/nodes/40107d59-f3e9-4592-aee8-5b03d4586cbd.json +101 -0
  36. package/templates/demo/harbourstone/bundle/nodes/483a0d3b-a10c-4c9d-8c81-d9607d37e968.json +35 -0
  37. package/templates/demo/harbourstone/bundle/nodes/4b760c0b-b83a-4eee-aa29-c225cfabf19b.json +35 -0
  38. package/templates/demo/harbourstone/bundle/nodes/4e5c7f3f-54cb-4328-ad61-bc4c2736b890.json +35 -0
  39. package/templates/demo/harbourstone/bundle/nodes/62f479ff-0875-453e-99ae-3bf1bec5e3c8.json +35 -0
  40. package/templates/demo/harbourstone/bundle/nodes/68c9cfdf-6b40-47da-a1d2-17256a6cc6db.json +60 -0
  41. package/templates/demo/harbourstone/bundle/nodes/6ad8f0f3-9334-47f1-b805-80c4b4b4fa88.json +101 -0
  42. package/templates/demo/harbourstone/bundle/nodes/6be45535-83e5-4469-acf0-4127016721ae.json +60 -0
  43. package/templates/demo/harbourstone/bundle/nodes/6d8d6398-738f-4f38-ad3c-e5d6e9a971fe.json +60 -0
  44. package/templates/demo/harbourstone/bundle/nodes/7b4713f8-d917-457d-a9d8-7dd01a3617b4.json +60 -0
  45. package/templates/demo/harbourstone/bundle/nodes/88ec1185-53b5-439a-a2ce-3f56603be4ff.json +35 -0
  46. package/templates/demo/harbourstone/bundle/nodes/97469df2-107c-4010-8c14-4de88f735529.json +35 -0
  47. package/templates/demo/harbourstone/bundle/nodes/a2eb439f-71d9-4ea6-89d7-c5bc72618281.json +35 -0
  48. package/templates/demo/harbourstone/bundle/nodes/a562f0a2-cb6e-4ead-a1ce-4d180632419f.json +101 -0
  49. package/templates/demo/harbourstone/bundle/nodes/a5e36a18-a2ef-4eb5-85b4-7e12b21cca06.json +35 -0
  50. package/templates/demo/harbourstone/bundle/nodes/b1876d3a-50a7-4358-84bf-a0899932ffa9.json +35 -0
  51. package/templates/demo/harbourstone/bundle/nodes/b4e38bbd-c1a3-431a-b7a9-5868aa32993a.json +35 -0
  52. package/templates/demo/harbourstone/bundle/nodes/c114b7d8-0138-404b-9d8f-a39d992577a2.json +60 -0
  53. package/templates/demo/harbourstone/bundle/nodes/cb4c569e-c28a-43b6-a4d7-d33bb544e973.json +136 -0
  54. package/templates/demo/harbourstone/bundle/nodes/cd681b4b-9c4e-4624-9c13-450aa6a9c135.json +101 -0
  55. package/templates/demo/harbourstone/bundle/nodes/d60ef12b-0f0a-4db5-9763-21fa52b8d4da.json +150 -0
  56. package/templates/demo/harbourstone/bundle/nodes/d7f13222-d060-4496-b86d-bef21da963c1.json +35 -0
  57. package/templates/demo/harbourstone/bundle/nodes/f36dd4a9-927c-4ca3-a790-c9c859ac7302.json +35 -0
  58. package/templates/demo/harbourstone/bundle/nodes/fd337567-df67-41ca-ae94-9d84d8d6042f.json +60 -0
  59. package/templates/demo/harbourstone/files/components/pages/contactPage.tsx +36 -0
  60. package/templates/demo/harbourstone/files/components/pages/contentPage.tsx +54 -0
  61. package/templates/demo/harbourstone/files/components/pages/expression.tsx +33 -0
  62. package/templates/demo/harbourstone/files/components/pages/homePage.tsx +71 -0
  63. package/templates/demo/harbourstone/files/components/pages/whiskyList.tsx +19 -0
  64. package/templates/demo/harbourstone/files/components/shared/bottling.tsx +59 -0
  65. package/templates/demo/harbourstone/files/components/shared/highlights.tsx +39 -0
  66. package/templates/demo/harbourstone/files/components/shared/layout.tsx +49 -0
  67. package/templates/demo/harbourstone/files/components/shared/section-intro.tsx +40 -0
  68. package/templates/demo/harbourstone/files/components/shared/site-footer.tsx +14 -0
  69. package/templates/demo/harbourstone/files/components/shared/site-header.tsx +57 -0
  70. package/templates/demo/harbourstone/files/css/site.css +720 -0
  71. package/templates/demo/harbourstone/files/schema/content-types/contact-page.toml +75 -0
  72. package/templates/demo/harbourstone/files/schema/content-types/content-page.toml +89 -0
  73. package/templates/demo/harbourstone/files/schema/content-types/expression.toml +78 -0
  74. package/templates/demo/harbourstone/files/schema/content-types/highlight.toml +27 -0
  75. package/templates/demo/harbourstone/files/schema/content-types/home-page.toml +104 -0
  76. package/templates/demo/harbourstone/files/schema/content-types/tasting-note.toml +26 -0
  77. package/templates/demo/harbourstone/files/schema/content-types/whisky-list.toml +35 -0
  78. package/templates/demo/harbourstone/files/schema/data-types/highlight-picker.toml +10 -0
  79. package/templates/demo/harbourstone/files/schema/data-types/tasting-note-picker.toml +11 -0
  80. package/templates/demo/harbourstone/files/schema/forms/contact.toml +119 -0
  81. package/templates/demo/harbourstone/files/schema/schema.toml +2 -0
  82. package/templates/demo/harbourstone/template.json +10 -0
  83. package/templates/starter/bundle/bundle.json +49 -0
  84. package/templates/starter/bundle/nodes/634dd948-cf83-4cad-9b7b-7c938b33da76.json +62 -0
  85. package/templates/starter/bundle/nodes/64d95359-d91a-4050-b440-3e5124a74999.json +62 -0
  86. package/templates/starter/bundle/nodes/d2997ebb-36ca-47cb-bbc8-31fefca787c0.json +45 -0
  87. package/templates/starter/files/components/pages/contentPage.tsx +25 -0
  88. package/templates/starter/files/components/shared/layout.tsx +24 -0
  89. package/templates/starter/files/components/shared/site-footer.tsx +9 -0
  90. package/templates/starter/files/components/shared/site-header.tsx +40 -0
  91. package/templates/starter/files/css/site.css +117 -0
  92. package/templates/starter/files/schema/content-types/content-page.toml +51 -0
  93. package/templates/starter/files/schema/schema.toml +2 -0
  94. package/templates/starter/template.json +4 -0
  95. package/README.md +0 -3
@@ -0,0 +1,62 @@
1
+ {
2
+ "key": "634dd948-cf83-4cad-9b7b-7c938b33da76",
3
+ "kind": "document",
4
+ "contentType": {
5
+ "key": "8491ffa4-9b2f-48b0-a3c0-f40c1034216e",
6
+ "alias": "contentPage"
7
+ },
8
+ "parent": "64d95359-d91a-4050-b440-3e5124a74999",
9
+ "sortOrder": 0,
10
+ "template": "pages/contentPage",
11
+ "variants": [
12
+ {
13
+ "culture": null,
14
+ "segment": null,
15
+ "name": "About",
16
+ "published": true
17
+ }
18
+ ],
19
+ "values": [
20
+ {
21
+ "property": "bodyText",
22
+ "culture": null,
23
+ "segment": null,
24
+ "editor": "Umbraco.RichText",
25
+ "value": {
26
+ "markup": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
27
+ "blocks": null
28
+ }
29
+ },
30
+ {
31
+ "property": "intro",
32
+ "culture": null,
33
+ "segment": null,
34
+ "editor": "Umbraco.TextArea",
35
+ "value": "A sentence or two about who you are and what you do."
36
+ },
37
+ {
38
+ "property": "sidebarHeading",
39
+ "culture": null,
40
+ "segment": null,
41
+ "editor": "Umbraco.TextBox",
42
+ "value": "At a glance"
43
+ },
44
+ {
45
+ "property": "sidebarText",
46
+ "culture": null,
47
+ "segment": null,
48
+ "editor": "Umbraco.RichText",
49
+ "value": {
50
+ "markup": "<ul><li>Founded: placeholder</li><li>Based in: placeholder</li><li>Team: placeholder</li></ul>",
51
+ "blocks": null
52
+ }
53
+ },
54
+ {
55
+ "property": "title",
56
+ "culture": null,
57
+ "segment": null,
58
+ "editor": "Umbraco.TextBox",
59
+ "value": "About us"
60
+ }
61
+ ]
62
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "key": "64d95359-d91a-4050-b440-3e5124a74999",
3
+ "kind": "document",
4
+ "contentType": {
5
+ "key": "8491ffa4-9b2f-48b0-a3c0-f40c1034216e",
6
+ "alias": "contentPage"
7
+ },
8
+ "parent": null,
9
+ "sortOrder": 0,
10
+ "template": "pages/contentPage",
11
+ "variants": [
12
+ {
13
+ "culture": null,
14
+ "segment": null,
15
+ "name": "Home",
16
+ "published": true
17
+ }
18
+ ],
19
+ "values": [
20
+ {
21
+ "property": "bodyText",
22
+ "culture": null,
23
+ "segment": null,
24
+ "editor": "Umbraco.RichText",
25
+ "value": {
26
+ "markup": "<h2>A place to start</h2><p>Every page here is a Content Page: a title, an introduction, a main column and a sidebar. Add pages under this one and they appear in the header.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
27
+ "blocks": null
28
+ }
29
+ },
30
+ {
31
+ "property": "intro",
32
+ "culture": null,
33
+ "segment": null,
34
+ "editor": "Umbraco.TextArea",
35
+ "value": "This is placeholder text. Replace it in the back office, then make the layout your own."
36
+ },
37
+ {
38
+ "property": "sidebarHeading",
39
+ "culture": null,
40
+ "segment": null,
41
+ "editor": "Umbraco.TextBox",
42
+ "value": "In the sidebar"
43
+ },
44
+ {
45
+ "property": "sidebarText",
46
+ "culture": null,
47
+ "segment": null,
48
+ "editor": "Umbraco.RichText",
49
+ "value": {
50
+ "markup": "<p>Use the sidebar for a short note, contact details or links. Leave it empty and the main column takes the full width.</p>",
51
+ "blocks": null
52
+ }
53
+ },
54
+ {
55
+ "property": "title",
56
+ "culture": null,
57
+ "segment": null,
58
+ "editor": "Umbraco.TextBox",
59
+ "value": "Welcome to your new site"
60
+ }
61
+ ]
62
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "key": "d2997ebb-36ca-47cb-bbc8-31fefca787c0",
3
+ "kind": "document",
4
+ "contentType": {
5
+ "key": "8491ffa4-9b2f-48b0-a3c0-f40c1034216e",
6
+ "alias": "contentPage"
7
+ },
8
+ "parent": "64d95359-d91a-4050-b440-3e5124a74999",
9
+ "sortOrder": 1,
10
+ "template": "pages/contentPage",
11
+ "variants": [
12
+ {
13
+ "culture": null,
14
+ "segment": null,
15
+ "name": "Contact",
16
+ "published": true
17
+ }
18
+ ],
19
+ "values": [
20
+ {
21
+ "property": "bodyText",
22
+ "culture": null,
23
+ "segment": null,
24
+ "editor": "Umbraco.RichText",
25
+ "value": {
26
+ "markup": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
27
+ "blocks": null
28
+ }
29
+ },
30
+ {
31
+ "property": "intro",
32
+ "culture": null,
33
+ "segment": null,
34
+ "editor": "Umbraco.TextArea",
35
+ "value": "Tell visitors how to reach you."
36
+ },
37
+ {
38
+ "property": "title",
39
+ "culture": null,
40
+ "segment": null,
41
+ "editor": "Umbraco.TextBox",
42
+ "value": "Get in touch"
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,25 @@
1
+ import type { PageProps } from '@crombolo/crombolo'
2
+ import { Layout } from '../shared/layout.tsx'
3
+
4
+ /** A main column and a sidebar; with nothing in the sidebar, the main column takes the width. */
5
+ export default function ContentPage(props: PageProps) {
6
+ const { model } = props
7
+ const sidebar = model.hasValue('sidebarText')
8
+ return (
9
+ <Layout {...props}>
10
+ <div class={sidebar ? 'columns' : undefined}>
11
+ <article>
12
+ <h1>{model.text('title') || model.name}</h1>
13
+ {model.hasValue('intro') ? <p class="intro">{model.text('intro')}</p> : null}
14
+ {model.html('bodyText')}
15
+ </article>
16
+ {sidebar ? (
17
+ <aside>
18
+ {model.hasValue('sidebarHeading') ? <h2>{model.text('sidebarHeading')}</h2> : null}
19
+ {model.html('sidebarText')}
20
+ </aside>
21
+ ) : null}
22
+ </div>
23
+ </Layout>
24
+ )
25
+ }
@@ -0,0 +1,24 @@
1
+ import { type Child, type PageProps, SeoHead } from '@crombolo/crombolo'
2
+ import { SiteFooter } from './site-footer.tsx'
3
+ import { SiteHeader } from './site-header.tsx'
4
+
5
+ /** The shell every page shares: head tags, the header, the page, the footer. */
6
+ export function Layout(props: PageProps & { children?: Child }) {
7
+ const { model, nav, seo, children } = props
8
+ const siteName = seo.siteName || nav.root()[0]?.name || ''
9
+ return (
10
+ <html lang="en">
11
+ <head>
12
+ <meta charset="utf-8" />
13
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
14
+ <SeoHead {...props} title={model.text('title') || model.name} />
15
+ <link rel="stylesheet" href="/css/site.css" />
16
+ </head>
17
+ <body>
18
+ <SiteHeader model={model} nav={nav} siteName={siteName} />
19
+ <main class="container">{children}</main>
20
+ <SiteFooter siteName={siteName} />
21
+ </body>
22
+ </html>
23
+ )
24
+ }
@@ -0,0 +1,9 @@
1
+ export function SiteFooter({ siteName }: { siteName: string }) {
2
+ return (
3
+ <footer class="site-footer">
4
+ <div class="container">
5
+ <p>{siteName} · Built with Crombolo</p>
6
+ </div>
7
+ </footer>
8
+ )
9
+ }
@@ -0,0 +1,40 @@
1
+ import type { Navigation, PublishedContent } from '@crombolo/crombolo'
2
+
3
+ /**
4
+ * The site name, from the config, and the primary nav: the home page followed by its children, so
5
+ * adding a page in the backoffice adds it here.
6
+ */
7
+ export function SiteHeader({
8
+ model,
9
+ nav,
10
+ siteName,
11
+ }: {
12
+ model: PublishedContent
13
+ nav: Navigation
14
+ siteName: string
15
+ }) {
16
+ const home = nav.root()[0]
17
+ if (!home) return null
18
+ const ancestry = model.path.split(',')
19
+ const links = [home, ...nav.children(home, { visibleOnly: true })]
20
+ return (
21
+ <header class="site-header">
22
+ <div class="container site-header__inner">
23
+ <a class="site-name" href={home.url}>
24
+ {siteName}
25
+ </a>
26
+ <nav aria-label="Primary">
27
+ {links.map((link) => {
28
+ const here =
29
+ link.key === home.key ? model.key === home.key : ancestry.includes(String(link.id))
30
+ return (
31
+ <a href={link.url} aria-current={here ? 'page' : undefined}>
32
+ {link.key === home.key ? 'Home' : link.name}
33
+ </a>
34
+ )
35
+ })}
36
+ </nav>
37
+ </div>
38
+ </header>
39
+ )
40
+ }
@@ -0,0 +1,117 @@
1
+ :root {
2
+ --text: #1f2933;
3
+ --muted: #616e7c;
4
+ --accent: #2f6fde;
5
+ --surface: #f5f7fa;
6
+ --border: #e4e7eb;
7
+ --width: 68rem;
8
+ font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
9
+ line-height: 1.6;
10
+ color: var(--text);
11
+ }
12
+
13
+ * {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ body {
18
+ margin: 0;
19
+ display: flex;
20
+ flex-direction: column;
21
+ min-height: 100vh;
22
+ }
23
+
24
+ a {
25
+ color: var(--accent);
26
+ }
27
+
28
+ .container {
29
+ width: 100%;
30
+ max-width: var(--width);
31
+ margin: 0 auto;
32
+ padding: 0 1.25rem;
33
+ }
34
+
35
+ main {
36
+ flex: 1;
37
+ padding-top: 2.5rem;
38
+ padding-bottom: 3rem;
39
+ }
40
+
41
+ .site-header {
42
+ border-bottom: 1px solid var(--border);
43
+ }
44
+
45
+ .site-header__inner {
46
+ display: flex;
47
+ flex-wrap: wrap;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ gap: 0.75rem 2rem;
51
+ padding-top: 1rem;
52
+ padding-bottom: 1rem;
53
+ }
54
+
55
+ .site-name {
56
+ font-weight: 700;
57
+ font-size: 1.25rem;
58
+ color: var(--text);
59
+ text-decoration: none;
60
+ }
61
+
62
+ .site-header nav {
63
+ display: flex;
64
+ flex-wrap: wrap;
65
+ gap: 1.25rem;
66
+ }
67
+
68
+ .site-header nav a {
69
+ color: var(--muted);
70
+ text-decoration: none;
71
+ }
72
+
73
+ .site-header nav a[aria-current="page"] {
74
+ color: var(--text);
75
+ font-weight: 600;
76
+ }
77
+
78
+ h1 {
79
+ font-size: 2.25rem;
80
+ line-height: 1.2;
81
+ margin: 0 0 1rem;
82
+ }
83
+
84
+ .intro {
85
+ font-size: 1.2rem;
86
+ color: var(--muted);
87
+ }
88
+
89
+ .columns {
90
+ display: grid;
91
+ grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
92
+ gap: 3rem;
93
+ }
94
+
95
+ aside {
96
+ background: var(--surface);
97
+ border-radius: 0.5rem;
98
+ padding: 1.5rem;
99
+ align-self: start;
100
+ }
101
+
102
+ aside h2 {
103
+ font-size: 1.1rem;
104
+ margin-top: 0;
105
+ }
106
+
107
+ .site-footer {
108
+ border-top: 1px solid var(--border);
109
+ color: var(--muted);
110
+ font-size: 0.9rem;
111
+ }
112
+
113
+ @media (max-width: 48rem) {
114
+ .columns {
115
+ grid-template-columns: 1fr;
116
+ }
117
+ }
@@ -0,0 +1,51 @@
1
+ [content-type]
2
+ key = "8491ffa4-9b2f-48b0-a3c0-f40c1034216e"
3
+ alias = "contentPage"
4
+ name = "Content Page"
5
+ description = "A page with a main column and a sidebar"
6
+ icon = "icon-document"
7
+ allow-at-root = true
8
+ allow-children = ["contentPage"]
9
+ compositions = ["seoFields"]
10
+ components = ["pages/contentPage"]
11
+ default-component = "pages/contentPage"
12
+
13
+ [[tab]]
14
+ name = "Content"
15
+
16
+ [[tab.property]]
17
+ key = "98fd8217-c0d5-4388-92e2-9e94b43265de"
18
+ alias = "title"
19
+ name = "Title"
20
+ description = "Shown as the page heading"
21
+ type = "textstring"
22
+ mandatory = true
23
+
24
+ [[tab.property]]
25
+ key = "7028eeb8-9739-4cc9-b3e1-8b424dd1e929"
26
+ alias = "intro"
27
+ name = "Introduction"
28
+ description = "A sentence or two under the heading"
29
+ type = "textarea"
30
+
31
+ [[tab.property]]
32
+ key = "ecf97032-ce17-472e-a0ba-c1dbfc31633d"
33
+ alias = "bodyText"
34
+ name = "Body"
35
+ type = "richtext"
36
+
37
+ [[tab]]
38
+ name = "Sidebar"
39
+
40
+ [[tab.property]]
41
+ key = "d049eba5-ae38-4fe9-9b05-64d1fa50b35e"
42
+ alias = "sidebarHeading"
43
+ name = "Heading"
44
+ type = "textstring"
45
+
46
+ [[tab.property]]
47
+ key = "fff4d170-e192-419a-9490-59affd2f6148"
48
+ alias = "sidebarText"
49
+ name = "Text"
50
+ description = "Leave empty for a single-column page"
51
+ type = "richtext"
@@ -0,0 +1,2 @@
1
+ [schema]
2
+ version = "1.0.0"
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "Starter",
3
+ "description": "a header, a footer and a two-column page layout with placeholder text, ready to restyle"
4
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.