@dogsbay/docs-layout 0.2.0-beta.112 → 0.2.0-beta.114

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dogsbay/docs-layout",
3
- "version": "0.2.0-beta.112",
3
+ "version": "0.2.0-beta.114",
4
4
  "description": "Standard documentation layout components for Dogsbay",
5
5
  "type": "module",
6
6
  "exports": {
@@ -30,8 +30,8 @@
30
30
  "./json-ld": "./src/json-ld.ts"
31
31
  },
32
32
  "dependencies": {
33
- "@dogsbay/primitives": "0.2.0-beta.112",
34
- "@dogsbay/ui": "0.2.0-beta.112"
33
+ "@dogsbay/primitives": "0.2.0-beta.114",
34
+ "@dogsbay/ui": "0.2.0-beta.114"
35
35
  },
36
36
  "devDependencies": {
37
37
  "happy-dom": "^20.10.6",
@@ -32,6 +32,14 @@ interface Props {
32
32
  llmsLink?: boolean;
33
33
  /** Path to llms.txt. Default `/llms.txt`. */
34
34
  llmsLinkHref?: string;
35
+ /**
36
+ * "Powered by DogsBay" attribution. On by default for generated sites;
37
+ * turned off with `poweredBy: false` in dogsbay.config.yml. Kept as a
38
+ * prop rather than hard-coded so a site that opts out renders no trace
39
+ * of it — an attribution you cannot remove is a reason not to adopt a
40
+ * tool. See docs/powered-by.md.
41
+ */
42
+ poweredBy?: boolean;
35
43
  class?: string;
36
44
  }
37
45
 
@@ -45,6 +53,7 @@ const {
45
53
  copyright,
46
54
  llmsLink = false,
47
55
  llmsLinkHref = "/llms.txt",
56
+ poweredBy = false,
48
57
  class: className,
49
58
  } = Astro.props;
50
59
 
@@ -101,20 +110,51 @@ function formatDate(value: string): string {
101
110
  </nav>
102
111
  )}
103
112
 
104
- {/* Footer meta — copyright + agent-friendly llms.txt link */}
105
- {(copyright || llmsLink) && (
113
+ {/* Footer meta — copyright + agent-friendly llms.txt link + attribution */}
114
+ {(copyright || llmsLink || poweredBy) && (
106
115
  <div class="mt-6 flex flex-wrap items-center justify-between gap-2 border-t pt-4 text-xs text-muted-foreground">
107
116
  {copyright ? <span><Fragment set:html={copyright} /></span> : <span />}
108
- {llmsLink && (
109
- <a
110
- href={llmsLinkHref}
111
- class="hover:text-foreground"
112
- data-llms-link
113
- aria-label="View this site as llms.txt for LLMs"
114
- >
115
- View as llms.txt
116
- </a>
117
- )}
117
+ <div class="flex flex-wrap items-center gap-4">
118
+ {llmsLink && (
119
+ <a
120
+ href={llmsLinkHref}
121
+ class="hover:text-foreground"
122
+ data-llms-link
123
+ aria-label="View this site as llms.txt for LLMs"
124
+ >
125
+ View as llms.txt
126
+ </a>
127
+ )}
128
+ {poweredBy && (
129
+ <a
130
+ href="https://dogsbay.ai"
131
+ class="inline-flex items-center gap-1.5 hover:text-foreground"
132
+ data-powered-by
133
+ target="_blank"
134
+ rel="noopener"
135
+ >
136
+ {/* Inline SVG, not an <img>: no extra request, no asset to copy
137
+ into every generated project, and it inherits the text colour
138
+ so it works in both themes without a second file. */}
139
+ <svg
140
+ width="14"
141
+ height="14"
142
+ viewBox="0 0 24 24"
143
+ fill="none"
144
+ stroke="currentColor"
145
+ stroke-width="2"
146
+ stroke-linecap="round"
147
+ stroke-linejoin="round"
148
+ aria-hidden="true"
149
+ >
150
+ <path d="M3 17.5 12 21l9-3.5" />
151
+ <path d="M3 12.5 12 16l9-3.5" />
152
+ <path d="m12 3 9 4.5-9 4.5-9-4.5L12 3Z" />
153
+ </svg>
154
+ Powered by DogsBay
155
+ </a>
156
+ )}
157
+ </div>
118
158
  </div>
119
159
  )}
120
160
  </footer>
@@ -455,10 +455,17 @@ interface Props {
455
455
  external?: string;
456
456
  internal?: string;
457
457
  };
458
+ /**
459
+ * "Powered by DogsBay" footer attribution. Generated sites pass
460
+ * `siteConfig.poweredBy`, which defaults to true and is turned off with
461
+ * `poweredBy: false` in dogsbay.config.yml. See docs/powered-by.md.
462
+ */
463
+ poweredBy?: boolean;
458
464
  class?: string;
459
465
  }
460
466
 
461
467
  const {
468
+ poweredBy = false,
462
469
  siteName,
463
470
  title,
464
471
  siteUrl = "/",
@@ -1311,6 +1318,7 @@ const siteIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
1311
1318
  copyright={copyright}
1312
1319
  llmsLink={llmFooterLink}
1313
1320
  llmsLinkHref={llmsLinkHrefResolved}
1321
+ poweredBy={poweredBy}
1314
1322
  />
1315
1323
  </div>
1316
1324
  </main>