@olonjs/cli 3.0.123 → 3.0.124
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.
|
@@ -1644,7 +1644,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
1644
1644
|
"@tiptap/extension-link": "^2.11.5",
|
|
1645
1645
|
"@tiptap/react": "^2.11.5",
|
|
1646
1646
|
"@tiptap/starter-kit": "^2.11.5",
|
|
1647
|
-
"@olonjs/core": "^1.0.
|
|
1647
|
+
"@olonjs/core": "^1.0.113",
|
|
1648
1648
|
"class-variance-authority": "^0.7.1",
|
|
1649
1649
|
"clsx": "^2.1.1",
|
|
1650
1650
|
"lucide-react": "^0.474.0",
|
|
@@ -5315,7 +5315,7 @@ interface FooterViewProps {
|
|
|
5315
5315
|
|
|
5316
5316
|
export function Footer({ data, settings }: FooterViewProps) {
|
|
5317
5317
|
const showLogo = settings?.showLogo ?? true;
|
|
5318
|
-
const links = data.
|
|
5318
|
+
const links = data.menu ?? [];
|
|
5319
5319
|
|
|
5320
5320
|
return (
|
|
5321
5321
|
<footer className="border-t border-border px-6 py-8">
|
|
@@ -5374,7 +5374,7 @@ import { z } from 'zod';
|
|
|
5374
5374
|
export const FooterSchema = z.object({
|
|
5375
5375
|
brandText: z.string().describe('ui:text'),
|
|
5376
5376
|
copyright: z.string().describe('ui:text'),
|
|
5377
|
-
|
|
5377
|
+
menu: z.array(z.object({
|
|
5378
5378
|
label: z.string().describe('ui:text'),
|
|
5379
5379
|
href: z.string().describe('ui:text'),
|
|
5380
5380
|
})).optional().describe('ui:list'),
|
|
@@ -5564,7 +5564,7 @@ export function Header({ data, settings, menu }: HeaderViewProps) {
|
|
|
5564
5564
|
const isSticky = settings?.sticky ?? true;
|
|
5565
5565
|
const navRef = useRef<HTMLElement>(null);
|
|
5566
5566
|
|
|
5567
|
-
const linksField = data.
|
|
5567
|
+
const linksField = data.menu as unknown;
|
|
5568
5568
|
const rawLinks = Array.isArray(linksField) ? linksField : [];
|
|
5569
5569
|
const menuItems = Array.isArray(menu) ? (menu as unknown[]) : [];
|
|
5570
5570
|
// If tenant explicitly uses a JSON ref for links, resolve from menu config.
|
|
@@ -6007,7 +6007,7 @@ export const HeaderSchema = z.object({
|
|
|
6007
6007
|
signinHref: z.string().optional().describe('ui:text'),
|
|
6008
6008
|
ctaHref: z.string().optional().describe('ui:text'),
|
|
6009
6009
|
ctaLabel: z.string().optional().describe('ui:text'),
|
|
6010
|
-
|
|
6010
|
+
menu: z.array(z.object({
|
|
6011
6011
|
label: z.string().describe('ui:text'),
|
|
6012
6012
|
href: z.string().describe('ui:text'),
|
|
6013
6013
|
isCta: z.boolean().default(false).describe('ui:checkbox'),
|
|
@@ -10694,15 +10694,14 @@ echo "Creating src/data/config/menu.json..."
|
|
|
10694
10694
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
|
|
10695
10695
|
{
|
|
10696
10696
|
"main": [
|
|
10697
|
-
{
|
|
10698
|
-
"label": "Why",
|
|
10699
|
-
"href": "#Why"
|
|
10700
|
-
|
|
10701
|
-
},
|
|
10702
10697
|
{
|
|
10703
10698
|
"label": "Architecture",
|
|
10704
10699
|
"href": "#Architecture"
|
|
10705
10700
|
},
|
|
10701
|
+
{
|
|
10702
|
+
"label": "Whys",
|
|
10703
|
+
"href": "#Why"
|
|
10704
|
+
},
|
|
10706
10705
|
{
|
|
10707
10706
|
"label": "Example",
|
|
10708
10707
|
"href": "#Example"
|
|
@@ -10711,14 +10710,59 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
|
|
|
10711
10710
|
"label": "Get started",
|
|
10712
10711
|
"href": "#Getstarted"
|
|
10713
10712
|
},
|
|
10714
|
-
|
|
10713
|
+
{
|
|
10715
10714
|
"label": "GitHub",
|
|
10716
10715
|
"href": "https://github.com/olonjs/core"
|
|
10717
10716
|
}
|
|
10717
|
+
],
|
|
10718
|
+
"footer": [
|
|
10719
|
+
{
|
|
10720
|
+
"label": "GitHubs",
|
|
10721
|
+
"href": "https://github.com/olonjs/core"
|
|
10722
|
+
}
|
|
10723
|
+
],
|
|
10724
|
+
"nested": [
|
|
10725
|
+
{
|
|
10726
|
+
"label": "Why",
|
|
10727
|
+
"href": "/why",
|
|
10728
|
+
"children": [
|
|
10729
|
+
{
|
|
10730
|
+
"label": "Overview",
|
|
10731
|
+
"href": "/platform/overview"
|
|
10732
|
+
},
|
|
10733
|
+
{
|
|
10734
|
+
"label": "Architecture",
|
|
10735
|
+
"href": "/platform/architecture"
|
|
10736
|
+
},
|
|
10737
|
+
{
|
|
10738
|
+
"label": "Security",
|
|
10739
|
+
"href": "/platform/security"
|
|
10740
|
+
},
|
|
10741
|
+
{
|
|
10742
|
+
"label": "Integrations",
|
|
10743
|
+
"href": "/platform/integrations"
|
|
10744
|
+
},
|
|
10745
|
+
{
|
|
10746
|
+
"label": "Roadmap",
|
|
10747
|
+
"href": "/platform/roadmap"
|
|
10748
|
+
}
|
|
10749
|
+
]
|
|
10750
|
+
},
|
|
10751
|
+
{
|
|
10752
|
+
"label": "Solutions",
|
|
10753
|
+
"href": "/solutions"
|
|
10754
|
+
},
|
|
10755
|
+
{
|
|
10756
|
+
"label": "Pricing",
|
|
10757
|
+
"href": "/pricing"
|
|
10758
|
+
},
|
|
10759
|
+
{
|
|
10760
|
+
"label": "Resources",
|
|
10761
|
+
"href": "/resources"
|
|
10762
|
+
}
|
|
10718
10763
|
]
|
|
10719
10764
|
}
|
|
10720
10765
|
END_OF_FILE_CONTENT
|
|
10721
|
-
# SKIP: src/data/config/menu.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
10722
10766
|
echo "Creating src/data/config/menu_example_for_schema.json..."
|
|
10723
10767
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu_example_for_schema.json"
|
|
10724
10768
|
{
|
|
@@ -10767,51 +10811,15 @@ END_OF_FILE_CONTENT
|
|
|
10767
10811
|
echo "Creating src/data/config/site.json..."
|
|
10768
10812
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
|
|
10769
10813
|
{
|
|
10770
|
-
"identity": {
|
|
10771
|
-
"title": "OlonJS",
|
|
10772
|
-
"logoUrl": "/brand/mark/olon-mark-dark.svg"
|
|
10773
|
-
},
|
|
10774
|
-
"pages": [
|
|
10775
|
-
{
|
|
10776
|
-
"slug": "home",
|
|
10777
|
-
"label": "Home"
|
|
10778
|
-
},
|
|
10779
|
-
{
|
|
10780
|
-
"slug": "design-system",
|
|
10781
|
-
"label": "Design System"
|
|
10782
|
-
}
|
|
10783
|
-
],
|
|
10784
10814
|
"header": {
|
|
10785
10815
|
"id": "global-header",
|
|
10786
10816
|
"type": "header",
|
|
10787
10817
|
"data": {
|
|
10788
10818
|
"logoText": "Olon",
|
|
10789
10819
|
"badge": "JS",
|
|
10790
|
-
"
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
"href": "#Why"
|
|
10794
|
-
},
|
|
10795
|
-
{
|
|
10796
|
-
"label": "Architecture",
|
|
10797
|
-
"href": "#Architecture"
|
|
10798
|
-
},
|
|
10799
|
-
{
|
|
10800
|
-
"label": "Example",
|
|
10801
|
-
"href": "#Example"
|
|
10802
|
-
},
|
|
10803
|
-
{
|
|
10804
|
-
"label": "Get started",
|
|
10805
|
-
"href": "#Getstarted"
|
|
10806
|
-
},
|
|
10807
|
-
{
|
|
10808
|
-
"label": "GitHub",
|
|
10809
|
-
"href": "https://github.com/olonjs/core"
|
|
10810
|
-
}
|
|
10811
|
-
],
|
|
10812
|
-
"ctaLabel": "",
|
|
10813
|
-
"ctaHref": "",
|
|
10814
|
-
"signinHref": ""
|
|
10820
|
+
"menu": {
|
|
10821
|
+
"$ref": "../config/menu.json#/main"
|
|
10822
|
+
}
|
|
10815
10823
|
}
|
|
10816
10824
|
},
|
|
10817
10825
|
"footer": {
|
|
@@ -10820,21 +10828,17 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
|
|
|
10820
10828
|
"data": {
|
|
10821
10829
|
"brandText": "OlonJS",
|
|
10822
10830
|
"copyright": "© 2026 OlonJS · v1.5 · Guido Serio",
|
|
10823
|
-
"
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
"href": "https://github.com/olonjs/core"
|
|
10827
|
-
}
|
|
10828
|
-
],
|
|
10829
|
-
"designSystemHref": ""
|
|
10830
|
-
},
|
|
10831
|
-
"settings": {
|
|
10832
|
-
"showLogo": true
|
|
10831
|
+
"menu": {
|
|
10832
|
+
"$ref": "../config/menu.json#/footer"
|
|
10833
|
+
}
|
|
10833
10834
|
}
|
|
10834
|
-
}
|
|
10835
|
+
},
|
|
10836
|
+
"identity": {
|
|
10837
|
+
"title": "Site"
|
|
10838
|
+
},
|
|
10839
|
+
"pages": []
|
|
10835
10840
|
}
|
|
10836
10841
|
END_OF_FILE_CONTENT
|
|
10837
|
-
# SKIP: src/data/config/site.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
10838
10842
|
echo "Creating src/data/config/theme.json..."
|
|
10839
10843
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
10840
10844
|
{
|
|
@@ -11002,7 +11006,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
|
11002
11006
|
}
|
|
11003
11007
|
}
|
|
11004
11008
|
END_OF_FILE_CONTENT
|
|
11005
|
-
# SKIP: src/data/config/theme.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
11006
11009
|
mkdir -p "src/data/pages"
|
|
11007
11010
|
echo "Creating src/data/pages/design-system.json..."
|
|
11008
11011
|
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/design-system.json"
|
|
@@ -11063,9 +11066,9 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/home.json"
|
|
|
11063
11066
|
"data": {
|
|
11064
11067
|
"id": "hero-main",
|
|
11065
11068
|
"eyebrow": "CONTRACT LAYER · V1.5 · OPEN SOURCE",
|
|
11066
|
-
"headline": "
|
|
11067
|
-
"subline": "
|
|
11068
|
-
"body": "
|
|
11069
|
+
"headline": "Build Websites ",
|
|
11070
|
+
"subline": "AI Agents Can Operate",
|
|
11071
|
+
"body": "Aaa agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
|
|
11069
11072
|
"primaryCta": {
|
|
11070
11073
|
"label": "Get started",
|
|
11071
11074
|
"href": "#getstarted"
|
|
@@ -13927,6 +13930,7 @@ export default defineConfig({
|
|
|
13927
13930
|
if (!fs.existsSync(DATA_CONFIG_DIR)) fs.mkdirSync(DATA_CONFIG_DIR, { recursive: true });
|
|
13928
13931
|
if (!fs.existsSync(DATA_PAGES_DIR)) fs.mkdirSync(DATA_PAGES_DIR, { recursive: true });
|
|
13929
13932
|
if (projectState.site != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'site.json'), JSON.stringify(projectState.site, null, 2), 'utf8');
|
|
13933
|
+
if (projectState.menu != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'menu.json'), JSON.stringify(projectState.menu, null, 2), 'utf8');
|
|
13930
13934
|
if (projectState.theme != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'theme.json'), JSON.stringify(projectState.theme, null, 2), 'utf8');
|
|
13931
13935
|
if (projectState.page != null) {
|
|
13932
13936
|
const safeSlug = (slug.replace(/[^a-zA-Z0-9-_]/g, '_') || 'page');
|
|
@@ -13982,5 +13986,4 @@ export default defineConfig({
|
|
|
13982
13986
|
|
|
13983
13987
|
|
|
13984
13988
|
|
|
13985
|
-
|
|
13986
13989
|
END_OF_FILE_CONTENT
|
|
@@ -596,7 +596,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
596
596
|
"@tiptap/extension-link": "^2.11.5",
|
|
597
597
|
"@tiptap/react": "^2.11.5",
|
|
598
598
|
"@tiptap/starter-kit": "^2.11.5",
|
|
599
|
-
"@olonjs/core": "^1.0.
|
|
599
|
+
"@olonjs/core": "^1.0.113",
|
|
600
600
|
"clsx": "^2.1.1",
|
|
601
601
|
"lucide-react": "^0.474.0",
|
|
602
602
|
"react": "^19.0.0",
|
|
@@ -1644,7 +1644,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
1644
1644
|
"@tiptap/extension-link": "^2.11.5",
|
|
1645
1645
|
"@tiptap/react": "^2.11.5",
|
|
1646
1646
|
"@tiptap/starter-kit": "^2.11.5",
|
|
1647
|
-
"@olonjs/core": "^1.0.
|
|
1647
|
+
"@olonjs/core": "^1.0.113",
|
|
1648
1648
|
"class-variance-authority": "^0.7.1",
|
|
1649
1649
|
"clsx": "^2.1.1",
|
|
1650
1650
|
"lucide-react": "^0.474.0",
|
|
@@ -5315,7 +5315,7 @@ interface FooterViewProps {
|
|
|
5315
5315
|
|
|
5316
5316
|
export function Footer({ data, settings }: FooterViewProps) {
|
|
5317
5317
|
const showLogo = settings?.showLogo ?? true;
|
|
5318
|
-
const links = data.
|
|
5318
|
+
const links = data.menu ?? [];
|
|
5319
5319
|
|
|
5320
5320
|
return (
|
|
5321
5321
|
<footer className="border-t border-border px-6 py-8">
|
|
@@ -5374,7 +5374,7 @@ import { z } from 'zod';
|
|
|
5374
5374
|
export const FooterSchema = z.object({
|
|
5375
5375
|
brandText: z.string().describe('ui:text'),
|
|
5376
5376
|
copyright: z.string().describe('ui:text'),
|
|
5377
|
-
|
|
5377
|
+
menu: z.array(z.object({
|
|
5378
5378
|
label: z.string().describe('ui:text'),
|
|
5379
5379
|
href: z.string().describe('ui:text'),
|
|
5380
5380
|
})).optional().describe('ui:list'),
|
|
@@ -5564,7 +5564,7 @@ export function Header({ data, settings, menu }: HeaderViewProps) {
|
|
|
5564
5564
|
const isSticky = settings?.sticky ?? true;
|
|
5565
5565
|
const navRef = useRef<HTMLElement>(null);
|
|
5566
5566
|
|
|
5567
|
-
const linksField = data.
|
|
5567
|
+
const linksField = data.menu as unknown;
|
|
5568
5568
|
const rawLinks = Array.isArray(linksField) ? linksField : [];
|
|
5569
5569
|
const menuItems = Array.isArray(menu) ? (menu as unknown[]) : [];
|
|
5570
5570
|
// If tenant explicitly uses a JSON ref for links, resolve from menu config.
|
|
@@ -6007,7 +6007,7 @@ export const HeaderSchema = z.object({
|
|
|
6007
6007
|
signinHref: z.string().optional().describe('ui:text'),
|
|
6008
6008
|
ctaHref: z.string().optional().describe('ui:text'),
|
|
6009
6009
|
ctaLabel: z.string().optional().describe('ui:text'),
|
|
6010
|
-
|
|
6010
|
+
menu: z.array(z.object({
|
|
6011
6011
|
label: z.string().describe('ui:text'),
|
|
6012
6012
|
href: z.string().describe('ui:text'),
|
|
6013
6013
|
isCta: z.boolean().default(false).describe('ui:checkbox'),
|
|
@@ -10694,15 +10694,14 @@ echo "Creating src/data/config/menu.json..."
|
|
|
10694
10694
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
|
|
10695
10695
|
{
|
|
10696
10696
|
"main": [
|
|
10697
|
-
{
|
|
10698
|
-
"label": "Why",
|
|
10699
|
-
"href": "#Why"
|
|
10700
|
-
|
|
10701
|
-
},
|
|
10702
10697
|
{
|
|
10703
10698
|
"label": "Architecture",
|
|
10704
10699
|
"href": "#Architecture"
|
|
10705
10700
|
},
|
|
10701
|
+
{
|
|
10702
|
+
"label": "Whys",
|
|
10703
|
+
"href": "#Why"
|
|
10704
|
+
},
|
|
10706
10705
|
{
|
|
10707
10706
|
"label": "Example",
|
|
10708
10707
|
"href": "#Example"
|
|
@@ -10711,14 +10710,59 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
|
|
|
10711
10710
|
"label": "Get started",
|
|
10712
10711
|
"href": "#Getstarted"
|
|
10713
10712
|
},
|
|
10714
|
-
|
|
10713
|
+
{
|
|
10715
10714
|
"label": "GitHub",
|
|
10716
10715
|
"href": "https://github.com/olonjs/core"
|
|
10717
10716
|
}
|
|
10717
|
+
],
|
|
10718
|
+
"footer": [
|
|
10719
|
+
{
|
|
10720
|
+
"label": "GitHubs",
|
|
10721
|
+
"href": "https://github.com/olonjs/core"
|
|
10722
|
+
}
|
|
10723
|
+
],
|
|
10724
|
+
"nested": [
|
|
10725
|
+
{
|
|
10726
|
+
"label": "Why",
|
|
10727
|
+
"href": "/why",
|
|
10728
|
+
"children": [
|
|
10729
|
+
{
|
|
10730
|
+
"label": "Overview",
|
|
10731
|
+
"href": "/platform/overview"
|
|
10732
|
+
},
|
|
10733
|
+
{
|
|
10734
|
+
"label": "Architecture",
|
|
10735
|
+
"href": "/platform/architecture"
|
|
10736
|
+
},
|
|
10737
|
+
{
|
|
10738
|
+
"label": "Security",
|
|
10739
|
+
"href": "/platform/security"
|
|
10740
|
+
},
|
|
10741
|
+
{
|
|
10742
|
+
"label": "Integrations",
|
|
10743
|
+
"href": "/platform/integrations"
|
|
10744
|
+
},
|
|
10745
|
+
{
|
|
10746
|
+
"label": "Roadmap",
|
|
10747
|
+
"href": "/platform/roadmap"
|
|
10748
|
+
}
|
|
10749
|
+
]
|
|
10750
|
+
},
|
|
10751
|
+
{
|
|
10752
|
+
"label": "Solutions",
|
|
10753
|
+
"href": "/solutions"
|
|
10754
|
+
},
|
|
10755
|
+
{
|
|
10756
|
+
"label": "Pricing",
|
|
10757
|
+
"href": "/pricing"
|
|
10758
|
+
},
|
|
10759
|
+
{
|
|
10760
|
+
"label": "Resources",
|
|
10761
|
+
"href": "/resources"
|
|
10762
|
+
}
|
|
10718
10763
|
]
|
|
10719
10764
|
}
|
|
10720
10765
|
END_OF_FILE_CONTENT
|
|
10721
|
-
# SKIP: src/data/config/menu.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
10722
10766
|
echo "Creating src/data/config/menu_example_for_schema.json..."
|
|
10723
10767
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu_example_for_schema.json"
|
|
10724
10768
|
{
|
|
@@ -10767,51 +10811,15 @@ END_OF_FILE_CONTENT
|
|
|
10767
10811
|
echo "Creating src/data/config/site.json..."
|
|
10768
10812
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
|
|
10769
10813
|
{
|
|
10770
|
-
"identity": {
|
|
10771
|
-
"title": "OlonJS",
|
|
10772
|
-
"logoUrl": "/brand/mark/olon-mark-dark.svg"
|
|
10773
|
-
},
|
|
10774
|
-
"pages": [
|
|
10775
|
-
{
|
|
10776
|
-
"slug": "home",
|
|
10777
|
-
"label": "Home"
|
|
10778
|
-
},
|
|
10779
|
-
{
|
|
10780
|
-
"slug": "design-system",
|
|
10781
|
-
"label": "Design System"
|
|
10782
|
-
}
|
|
10783
|
-
],
|
|
10784
10814
|
"header": {
|
|
10785
10815
|
"id": "global-header",
|
|
10786
10816
|
"type": "header",
|
|
10787
10817
|
"data": {
|
|
10788
10818
|
"logoText": "Olon",
|
|
10789
10819
|
"badge": "JS",
|
|
10790
|
-
"
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
"href": "#Why"
|
|
10794
|
-
},
|
|
10795
|
-
{
|
|
10796
|
-
"label": "Architecture",
|
|
10797
|
-
"href": "#Architecture"
|
|
10798
|
-
},
|
|
10799
|
-
{
|
|
10800
|
-
"label": "Example",
|
|
10801
|
-
"href": "#Example"
|
|
10802
|
-
},
|
|
10803
|
-
{
|
|
10804
|
-
"label": "Get started",
|
|
10805
|
-
"href": "#Getstarted"
|
|
10806
|
-
},
|
|
10807
|
-
{
|
|
10808
|
-
"label": "GitHub",
|
|
10809
|
-
"href": "https://github.com/olonjs/core"
|
|
10810
|
-
}
|
|
10811
|
-
],
|
|
10812
|
-
"ctaLabel": "",
|
|
10813
|
-
"ctaHref": "",
|
|
10814
|
-
"signinHref": ""
|
|
10820
|
+
"menu": {
|
|
10821
|
+
"$ref": "../config/menu.json#/main"
|
|
10822
|
+
}
|
|
10815
10823
|
}
|
|
10816
10824
|
},
|
|
10817
10825
|
"footer": {
|
|
@@ -10820,21 +10828,17 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
|
|
|
10820
10828
|
"data": {
|
|
10821
10829
|
"brandText": "OlonJS",
|
|
10822
10830
|
"copyright": "© 2026 OlonJS · v1.5 · Guido Serio",
|
|
10823
|
-
"
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
"href": "https://github.com/olonjs/core"
|
|
10827
|
-
}
|
|
10828
|
-
],
|
|
10829
|
-
"designSystemHref": ""
|
|
10830
|
-
},
|
|
10831
|
-
"settings": {
|
|
10832
|
-
"showLogo": true
|
|
10831
|
+
"menu": {
|
|
10832
|
+
"$ref": "../config/menu.json#/footer"
|
|
10833
|
+
}
|
|
10833
10834
|
}
|
|
10834
|
-
}
|
|
10835
|
+
},
|
|
10836
|
+
"identity": {
|
|
10837
|
+
"title": "Site"
|
|
10838
|
+
},
|
|
10839
|
+
"pages": []
|
|
10835
10840
|
}
|
|
10836
10841
|
END_OF_FILE_CONTENT
|
|
10837
|
-
# SKIP: src/data/config/site.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
10838
10842
|
echo "Creating src/data/config/theme.json..."
|
|
10839
10843
|
cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
10840
10844
|
{
|
|
@@ -11002,7 +11006,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
|
11002
11006
|
}
|
|
11003
11007
|
}
|
|
11004
11008
|
END_OF_FILE_CONTENT
|
|
11005
|
-
# SKIP: src/data/config/theme.json:Zone.Identifier is binary and cannot be embedded as text.
|
|
11006
11009
|
mkdir -p "src/data/pages"
|
|
11007
11010
|
echo "Creating src/data/pages/design-system.json..."
|
|
11008
11011
|
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/design-system.json"
|
|
@@ -11063,9 +11066,9 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/home.json"
|
|
|
11063
11066
|
"data": {
|
|
11064
11067
|
"id": "hero-main",
|
|
11065
11068
|
"eyebrow": "CONTRACT LAYER · V1.5 · OPEN SOURCE",
|
|
11066
|
-
"headline": "
|
|
11067
|
-
"subline": "
|
|
11068
|
-
"body": "
|
|
11069
|
+
"headline": "Build Websites ",
|
|
11070
|
+
"subline": "AI Agents Can Operate",
|
|
11071
|
+
"body": "Aaa agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
|
|
11069
11072
|
"primaryCta": {
|
|
11070
11073
|
"label": "Get started",
|
|
11071
11074
|
"href": "#getstarted"
|
|
@@ -13927,6 +13930,7 @@ export default defineConfig({
|
|
|
13927
13930
|
if (!fs.existsSync(DATA_CONFIG_DIR)) fs.mkdirSync(DATA_CONFIG_DIR, { recursive: true });
|
|
13928
13931
|
if (!fs.existsSync(DATA_PAGES_DIR)) fs.mkdirSync(DATA_PAGES_DIR, { recursive: true });
|
|
13929
13932
|
if (projectState.site != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'site.json'), JSON.stringify(projectState.site, null, 2), 'utf8');
|
|
13933
|
+
if (projectState.menu != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'menu.json'), JSON.stringify(projectState.menu, null, 2), 'utf8');
|
|
13930
13934
|
if (projectState.theme != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'theme.json'), JSON.stringify(projectState.theme, null, 2), 'utf8');
|
|
13931
13935
|
if (projectState.page != null) {
|
|
13932
13936
|
const safeSlug = (slug.replace(/[^a-zA-Z0-9-_]/g, '_') || 'page');
|
|
@@ -13982,5 +13986,4 @@ export default defineConfig({
|
|
|
13982
13986
|
|
|
13983
13987
|
|
|
13984
13988
|
|
|
13985
|
-
|
|
13986
13989
|
END_OF_FILE_CONTENT
|