create-avocado-site 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE ADDED
@@ -0,0 +1,8 @@
1
+ Avocado Studio
2
+ Copyright 2026 Avocado Studio Contributors
3
+
4
+ This product includes software developed by the Avocado Studio
5
+ Contributors (https://www.avocadostudio.dev).
6
+
7
+ Licensed under the Apache License, Version 2.0. See LICENSE for the
8
+ full license text.
@@ -690,21 +690,13 @@ export default function RootLayout({ children }: { children: ReactNode }) {
690
690
  <body style={{ background: "var(--bg-0, #12170f)" }}>
691
691
  {children}
692
692
  {/*
693
- Two controls, one state — see the note in \`theme-toggle.tsx\`.
694
-
695
- The header copy is portalled into the nav the SiteHeader block
693
+ One control, in the header's top-right corner — see the note in
694
+ \`theme-toggle.tsx\`. It is portalled into the nav the SiteHeader block
696
695
  renders, because that markup belongs to the blocks package rather
697
696
  than to this app; as a real child of that flex row it inherits the
698
697
  sticky positioning instead of guessing at the header's height.
699
-
700
- The footer copy needs no portal. \`children\` is the whole page
701
- including the footer, so a sibling after it lands exactly where the
702
- demo puts it: on the footer's own ground, below the last link.
703
698
  */}
704
699
  <SiteThemeToggle portalTo=".site-top-nav-inner" />
705
- <div className="site-theme-bar">
706
- <SiteThemeToggle />
707
- </div>
708
700
  </body>
709
701
  </html>
710
702
  )
@@ -17,7 +17,7 @@
17
17
  * `@avocadostudio-ai/orchestrator-core`, already pinned there; naming it again
18
18
  * here is how a project ends up with two.
19
19
  */
20
- export declare const AVOCADO = "0.21.0";
20
+ export declare const AVOCADO = "0.22.0";
21
21
  /**
22
22
  * Next 15.5.25 rather than 16, because that is the version every example app
23
23
  * and the demo site in this repository build and test against. The SDK
package/dist/versions.js CHANGED
@@ -17,7 +17,7 @@
17
17
  * `@avocadostudio-ai/orchestrator-core`, already pinned there; naming it again
18
18
  * here is how a project ends up with two.
19
19
  */
20
- export const AVOCADO = "0.21.0";
20
+ export const AVOCADO = "0.22.0";
21
21
  /**
22
22
  * Next 15.5.25 rather than 16, because that is the version every example app
23
23
  * and the demo site in this repository build and test against. The SDK
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-avocado-site",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Bootstrap a runnable Avocado Studio demo site, or wire Avocado into an existing Next.js project",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,7 +11,8 @@
11
11
  "assets",
12
12
  "theme",
13
13
  "README.md",
14
- "LICENSE"
14
+ "LICENSE",
15
+ "NOTICE"
15
16
  ],
16
17
  "keywords": [
17
18
  "avocado",
@@ -30,14 +31,14 @@
30
31
  },
31
32
  "dependencies": {
32
33
  "@clack/prompts": "^0.9.1",
33
- "@avocadostudio-ai/skills": "^0.21.0"
34
+ "@avocadostudio-ai/skills": "^0.22.0"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/node": "^22.13.10",
37
38
  "tsx": "^4.19.0",
38
39
  "typescript": "^5.7.3",
39
- "@avocadostudio-ai/shared": "0.21.0",
40
- "@avocadostudio-ai/site-sdk": "0.21.0"
40
+ "@avocadostudio-ai/site-sdk": "0.22.0",
41
+ "@avocadostudio-ai/shared": "0.22.0"
41
42
  },
42
43
  "license": "Apache-2.0",
43
44
  "homepage": "https://docs.avocadostudio.dev",
@@ -19,19 +19,12 @@
19
19
  */
20
20
 
21
21
  /*
22
- * The theme control, in the footer.
22
+ * The theme control lives in one place: the top-right corner of the header.
23
23
  *
24
- * It was styled as a 38x36 icon square for a header slot it was never
25
- * actually placed in. In the footer it can afford a label, which removes the
26
- * guess a lone sun-or-moon glyph always asks of the reader: does the icon
27
- * show the theme I am in, or the one I would get?
24
+ * It also sat in the footer, and the editor's preview only ever mounted that
25
+ * copy, so on the public demo the one control a visitor could find was below
26
+ * the last link of a long page.
28
27
  */
29
- .site-theme-bar {
30
- display: flex;
31
- justify-content: center;
32
- padding: 0 var(--section-pad-x) var(--section-pad-y-tight);
33
- background: var(--footer-bg);
34
- }
35
28
 
36
29
  /*
37
30
  * Icon only, and square.
@@ -77,15 +70,6 @@
77
70
  color: var(--accent-ink);
78
71
  }
79
72
 
80
- /* On the footer's own ground, which is a different surface from the page. */
81
- .site-theme-bar .site-theme-toggle {
82
- color: var(--footer-link);
83
- }
84
-
85
- .site-theme-bar .site-theme-toggle:hover {
86
- color: var(--footer-link-hover);
87
- }
88
-
89
73
  /* Portalled into the header's inner flex row; `auto` pushes it to the far
90
74
  right without the row needing to know it is there. */
91
75
  .site-top-nav-inner > .site-theme-toggle {
@@ -36,9 +36,9 @@ const LABEL: Record<Choice, string> = { system: "System", light: "Light", dark:
36
36
  /*
37
37
  * Both copies of the control answer to one state.
38
38
  *
39
- * There are two on the page — one in the header, one in the footer — and two
40
- * React instances do not share a `useState`. Without this, clicking the header
41
- * button changed the theme and left the footer button still reporting the old
39
+ * There is one on the page now, in the header's top-right corner, but a host
40
+ * can mount more, and two React instances do not share a `useState`. Without
41
+ * this, clicking one changed the theme and left the other reporting the old
42
42
  * one, which is the kind of thing that looks like a caching bug.
43
43
  */
44
44
  const THEME_EVENT = "site-theme-change"