@webx-ui/module-seo 0.4.5 → 0.5.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.
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .wx-seo-test[data-v-116e47cd]{display:flex;flex-direction:column;gap:var(--wx-space-16)}.wx-seo-test__ask[data-v-116e47cd]{width:100%}.wx-seo-test__input[data-v-116e47cd]{flex:1 1 auto}.wx-seo-test__matched[data-v-116e47cd],.wx-seo-test__result[data-v-116e47cd],.wx-seo-test__chain[data-v-116e47cd]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-seo-aliases__note[data-v-6816a871]{margin-bottom:var(--wx-space-12)}.wx-seo[data-v-1a19e926]{container-type:inline-size}.wx-seo__fields[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-12);padding-block-start:var(--wx-space-12)}.wx-seo__image[data-v-1a19e926]{max-width:var(--wx-field-max-width, 640px)}.wx-seo__count[data-v-1a19e926]{display:flex;justify-content:flex-end}.wx-seo__preview[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-4)}.wx-seo__snippet[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-2);padding:var(--wx-space-12);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-subtle)}.wx-seo__snippet-address[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo__snippet-title[data-v-1a19e926]{color:var(--wx-color-primary);font-size:var(--wx-font-size-lg);overflow-wrap:anywhere}.wx-seo__snippet-text[data-v-1a19e926]{color:var(--wx-text-default);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo__share[data-v-1a19e926]{max-width:var(--wx-field-max-width, 640px);overflow:hidden;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-subtle)}.wx-seo__share-image[data-v-1a19e926]{display:flex;align-items:center;justify-content:center;aspect-ratio:1.91 / 1;padding:var(--wx-space-16);border-block-end:1px solid var(--wx-border-default);background:var(--wx-bg-muted);text-align:center}.wx-seo__share-image img[data-v-1a19e926]{width:100%;height:100%;object-fit:cover}.wx-seo__share-body[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-2);padding:var(--wx-space-12)}.wx-seo__share-address[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-xs);text-transform:uppercase;overflow-wrap:anywhere}.wx-seo__share-title[data-v-1a19e926]{color:var(--wx-text-default);font-weight:var(--wx-font-weight-medium);overflow-wrap:anywhere}.wx-seo__share-text[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo-redirect[data-v-685edbd5]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-seo-redirect__row[data-v-685edbd5]{display:grid;grid-template-columns:140px 1fr;gap:var(--wx-space-12);align-items:start}.wx-seo-rule[data-v-fa975d05]{display:flex;flex-direction:column;gap:var(--wx-space-16);container-type:inline-size}.wx-seo-rule__where[data-v-fa975d05]{display:grid;grid-template-columns:180px 1fr 140px 100px;gap:var(--wx-space-12);align-items:start}@container (max-width: 720px){.wx-seo-rule__where[data-v-fa975d05]{grid-template-columns:1fr 1fr}.wx-seo-rule__address[data-v-fa975d05]{grid-column:1 / -1}}
1
+ .wx-seo-test[data-v-43684c27]{display:flex;flex-direction:column;gap:var(--wx-space-16)}.wx-seo-test__ask[data-v-43684c27]{width:100%}.wx-seo-test__input[data-v-43684c27]{flex:1 1 auto}.wx-seo-test__matched[data-v-43684c27],.wx-seo-test__result[data-v-43684c27],.wx-seo-test__chain[data-v-43684c27]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-seo-aliases__note[data-v-6816a871]{margin-bottom:var(--wx-space-12)}.wx-seo[data-v-1a19e926]{container-type:inline-size}.wx-seo__fields[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-12);padding-block-start:var(--wx-space-12)}.wx-seo__image[data-v-1a19e926]{max-width:var(--wx-field-max-width, 640px)}.wx-seo__count[data-v-1a19e926]{display:flex;justify-content:flex-end}.wx-seo__preview[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-4)}.wx-seo__snippet[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-2);padding:var(--wx-space-12);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-subtle)}.wx-seo__snippet-address[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo__snippet-title[data-v-1a19e926]{color:var(--wx-color-primary);font-size:var(--wx-font-size-lg);overflow-wrap:anywhere}.wx-seo__snippet-text[data-v-1a19e926]{color:var(--wx-text-default);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo__share[data-v-1a19e926]{max-width:var(--wx-field-max-width, 640px);overflow:hidden;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-subtle)}.wx-seo__share-image[data-v-1a19e926]{display:flex;align-items:center;justify-content:center;aspect-ratio:1.91 / 1;padding:var(--wx-space-16);border-block-end:1px solid var(--wx-border-default);background:var(--wx-bg-muted);text-align:center}.wx-seo__share-image img[data-v-1a19e926]{width:100%;height:100%;object-fit:cover}.wx-seo__share-body[data-v-1a19e926]{display:flex;flex-direction:column;gap:var(--wx-space-2);padding:var(--wx-space-12)}.wx-seo__share-address[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-xs);text-transform:uppercase;overflow-wrap:anywhere}.wx-seo__share-title[data-v-1a19e926]{color:var(--wx-text-default);font-weight:var(--wx-font-weight-medium);overflow-wrap:anywhere}.wx-seo__share-text[data-v-1a19e926]{color:var(--wx-text-muted);font-size:var(--wx-font-size-sm);overflow-wrap:anywhere}.wx-seo-redirect[data-v-685edbd5]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-seo-redirect__row[data-v-685edbd5]{display:grid;grid-template-columns:140px 1fr;gap:var(--wx-space-12);align-items:start}.wx-seo-sitemap[data-v-28cc71dc]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--wx-space-12);padding:var(--wx-space-12) var(--wx-space-16);border-bottom:1px solid var(--wx-border-muted)}.wx-seo-sitemap__main[data-v-28cc71dc]{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--wx-space-6);min-width:0}.wx-seo-sitemap__head[data-v-28cc71dc],.wx-seo-sitemap__facts[data-v-28cc71dc]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wx-space-6) var(--wx-space-12);min-width:0}.wx-seo-sitemap__url[data-v-28cc71dc]{min-width:0;overflow-wrap:anywhere}.wx-seo-sitemap__rebuild[data-v-28cc71dc]{flex:none}.wx-seo-rule[data-v-fa975d05]{display:flex;flex-direction:column;gap:var(--wx-space-16);container-type:inline-size}.wx-seo-rule__where[data-v-fa975d05]{display:grid;grid-template-columns:180px 1fr 140px 100px;gap:var(--wx-space-12);align-items:start}@container (max-width: 720px){.wx-seo-rule__where[data-v-fa975d05]{grid-template-columns:1fr 1fr}.wx-seo-rule__address[data-v-fa975d05]{grid-column:1 / -1}}
package/dist/types.d.ts CHANGED
@@ -173,6 +173,29 @@ export interface SeoTestResult {
173
173
  matched: SeoUrlRule | null;
174
174
  chain: SeoChainStep[];
175
175
  seo: SeoResolved;
176
+ /** Whether the address is in the sitemap, and why not — the first question when a page is missing from a search engine. */
177
+ sitemap: SeoSitemapVerdict;
178
+ }
179
+ /** Why an address is not in the sitemap. `null` when it is. */
180
+ export type SeoSitemapReason = 'disabled' | 'unknown' | 'alias' | 'hidden' | 'noindex' | 'canonical';
181
+ export interface SeoSitemapVerdict {
182
+ included: boolean;
183
+ reason: SeoSitemapReason | null;
184
+ }
185
+ /**
186
+ * The sitemap as a crawler gets it: the card above the rules. `files` counts the addresses in
187
+ * each file of the map; `excluded` counts the visible ones the resolver closed, by why.
188
+ */
189
+ export interface SeoSitemapStatus {
190
+ enabled: boolean;
191
+ url: string;
192
+ built_at: string | null;
193
+ files: Record<string, number>;
194
+ total: number;
195
+ excluded: {
196
+ noindex: number;
197
+ canonical: number;
198
+ };
176
199
  }
177
200
  /** The meta directives the card offers as checkboxes. Anything else is kept as written. */
178
201
  export declare const robotsDirectives: readonly ["noindex", "nofollow", "noarchive", "nosnippet", "noimageindex"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webx-ui/module-seo",
3
- "version": "0.4.5",
3
+ "version": "0.5.1",
4
4
  "description": "SEO for the WebX UI admin panel: rules for addresses, redirects, and the card that edits what a page says about itself.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,9 +43,9 @@
43
43
  "vue-router": "^4.5.0"
44
44
  },
45
45
  "dependencies": {
46
- "@webx-ui/core": "^0.32.1",
47
- "@webx-ui/module-admin": "^0.14.2",
48
- "@webx-ui/schema": "^0.5.0"
46
+ "@webx-ui/core": "^0.33.0",
47
+ "@webx-ui/module-admin": "^0.15.0",
48
+ "@webx-ui/schema": "^0.6.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/node": "^24.10.1",