@getvitops/generator 7.0.0 → 8.0.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/index.d.mts CHANGED
@@ -437,6 +437,13 @@ declare const AdPropertySchema: z.ZodMiniObject<{
437
437
  }>>;
438
438
  enabled: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
439
439
  }, z.z.core.$strip>;
440
+ /**
441
+ * How one location's Google reviews are selected and ordered for display.
442
+ *
443
+ * Keyed by `organization.locations` key, mirroring `site.ads`/`site.searchConsole`
444
+ * — `vitops reviews` needs to know which physical location a fetched review set
445
+ * belongs to, and that record already exists.
446
+ */
440
447
  /**
441
448
  * Which template set the generated legal documents are written against. This is
442
449
  * a closed enum rather than a free string because an unrecognised value would
@@ -756,6 +763,22 @@ declare const SiteSectionSchema: z.ZodMiniObject<{
756
763
  }>>;
757
764
  enabled: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
758
765
  }, z.z.core.$strip>>>;
766
+ reviews: z.ZodMiniOptional<z.ZodMiniObject<{
767
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
768
+ locations: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
769
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
770
+ locationId: z.ZodMiniString<string>;
771
+ featured: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
772
+ minRating: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
773
+ limit: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
774
+ sort: z.ZodMiniOptional<z.ZodMiniEnum<{
775
+ rating: "rating";
776
+ recent: "recent";
777
+ }>>;
778
+ }, z.z.core.$strip>>;
779
+ schema: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
780
+ avatars: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
781
+ }, z.z.core.$strip>>;
759
782
  security: z.ZodMiniOptional<z.ZodMiniObject<{
760
783
  turnstile: z.ZodMiniOptional<z.ZodMiniObject<{
761
784
  siteKey: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -974,6 +997,7 @@ declare const OrganizationSectionSchema: z.ZodMiniObject<{
974
997
  }, z.z.core.$strip>>;
975
998
  }, z.z.core.$strip>;
976
999
  declare const ConfigSchema: z.ZodMiniObject<{
1000
+ $schema: z.ZodMiniOptional<z.ZodMiniString<string>>;
977
1001
  designSystem: z.ZodMiniObject<{
978
1002
  themes: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
979
1003
  $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
@@ -1498,6 +1522,22 @@ declare const ConfigSchema: z.ZodMiniObject<{
1498
1522
  }>>;
1499
1523
  enabled: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1500
1524
  }, z.z.core.$strip>>>;
1525
+ reviews: z.ZodMiniOptional<z.ZodMiniObject<{
1526
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
1527
+ locations: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1528
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
1529
+ locationId: z.ZodMiniString<string>;
1530
+ featured: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
1531
+ minRating: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1532
+ limit: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
1533
+ sort: z.ZodMiniOptional<z.ZodMiniEnum<{
1534
+ rating: "rating";
1535
+ recent: "recent";
1536
+ }>>;
1537
+ }, z.z.core.$strip>>;
1538
+ schema: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1539
+ avatars: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
1540
+ }, z.z.core.$strip>>;
1501
1541
  security: z.ZodMiniOptional<z.ZodMiniObject<{
1502
1542
  turnstile: z.ZodMiniOptional<z.ZodMiniObject<{
1503
1543
  siteKey: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -1604,9 +1644,12 @@ type SiteSearchConsole = z.infer<typeof SearchConsoleSchema>;
1604
1644
  /** One `site.ads` entry — an ad property to link via `vitops ads setup`. */
1605
1645
  type SiteAdProperty = z.infer<typeof AdPropertySchema>;
1606
1646
  declare const CONFIG_SCHEMA_URL = "https://unpkg.com/@getvitops/generator/config.schema.json";
1647
+ /** The installed copy, not the unpinned unpkg URL — see `SCHEMA_LOCAL_PATH`'s twin. */
1648
+ declare const CONFIG_SCHEMA_LOCAL_PATH = "./node_modules/@getvitops/generator/config.schema.json";
1607
1649
  /** The published JSON Schema (draft-2020-12), derived from the zod schema. */
1608
1650
  declare const configJsonSchema: {
1609
1651
  "~standard": z.z.core.ZodStandardSchemaWithJSON<z.ZodMiniObject<{
1652
+ $schema: z.ZodMiniOptional<z.ZodMiniString<string>>;
1610
1653
  designSystem: z.ZodMiniObject<{
1611
1654
  themes: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
1612
1655
  $schema: z.ZodMiniOptional<z.ZodMiniOptional<z.ZodMiniString<string>>>;
@@ -2131,6 +2174,22 @@ declare const configJsonSchema: {
2131
2174
  }>>;
2132
2175
  enabled: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
2133
2176
  }, z.z.core.$strip>>>;
2177
+ reviews: z.ZodMiniOptional<z.ZodMiniObject<{
2178
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
2179
+ locations: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniObject<{
2180
+ accountId: z.ZodMiniOptional<z.ZodMiniString<string>>;
2181
+ locationId: z.ZodMiniString<string>;
2182
+ featured: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
2183
+ minRating: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
2184
+ limit: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
2185
+ sort: z.ZodMiniOptional<z.ZodMiniEnum<{
2186
+ rating: "rating";
2187
+ recent: "recent";
2188
+ }>>;
2189
+ }, z.z.core.$strip>>;
2190
+ schema: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
2191
+ avatars: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
2192
+ }, z.z.core.$strip>>;
2134
2193
  security: z.ZodMiniOptional<z.ZodMiniObject<{
2135
2194
  turnstile: z.ZodMiniOptional<z.ZodMiniObject<{
2136
2195
  siteKey: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -2961,7 +3020,6 @@ interface IconSpriteOptions {
2961
3020
  }
2962
3021
  interface IconSpriteResult {
2963
3022
  svg: string;
2964
- /** Every `<symbol>` id emitted, in order. */
2965
3023
  ids: string[];
2966
3024
  /** `prefix:name` entries that were asked for but not found. */
2967
3025
  missing: string[];
@@ -3430,6 +3488,25 @@ declare function renderNodes(cfg: Config, doc: LegalDoc): ContentNode[];
3430
3488
  */
3431
3489
  declare function generateLegal(cfg: Config, opts?: GenerateLegalOptions): Record<string, string>;
3432
3490
  //#endregion
3491
+ //#region src/robots.d.ts
3492
+ interface RenderRobotsOptions {
3493
+ /** Which `site.environments` entry to render for. Default `'production'`. */
3494
+ env?: string;
3495
+ }
3496
+ /**
3497
+ * Render `robots.txt` for one environment.
3498
+ *
3499
+ * A blocked environment gets `Disallow: /` for every user agent and no sitemap
3500
+ * line — publishing the sitemap of a site asking not to be indexed would be
3501
+ * the more damaging way to get this wrong, handing every listed URL to a
3502
+ * crawler that then finds itself blocked from all of them, but has already
3503
+ * seen where they are. An allowed environment gets a permissive robots.txt
3504
+ * plus a `Sitemap:` line, using the exact URL `vitops search notify` would
3505
+ * submit — `site.seo.indexing.sitemapUrl`, or `<canonical>/sitemap-index.xml`,
3506
+ * the same default `@astrojs/sitemap` produces.
3507
+ */
3508
+ declare function renderRobotsTxt(cfg: Config, options?: RenderRobotsOptions): string;
3509
+ //#endregion
3433
3510
  //#region src/index.d.ts
3434
3511
  /**
3435
3512
  * A minimal but complete starter design system, used by `vitops init`. It
@@ -3437,6 +3514,21 @@ declare function generateLegal(cfg: Config, opts?: GenerateLegalOptions): Record
3437
3514
  * new project can `vitops generate` immediately and then tune from here.
3438
3515
  */
3439
3516
  declare function defaultConfig(): DesignSystem;
3517
+ /**
3518
+ * A minimal but complete starter site config, used by `vitops init --site`.
3519
+ *
3520
+ * `designSystem.themes.default` embeds `defaultConfig()` directly — a scaffolded
3521
+ * `Config` cannot reference a separate `design-system.json`: `ConfigSchema`
3522
+ * requires `designSystem`, and there is no file-level `extends`, so the token set
3523
+ * must live inside the document. `site.environments.dev` ships `noindex,nofollow`
3524
+ * for free — it costs nothing and is the one fact a launch checklist most often
3525
+ * forgets to flip back.
3526
+ */
3527
+ declare function defaultSiteConfig(opts?: {
3528
+ name?: string;
3529
+ url?: string;
3530
+ locale?: string;
3531
+ }): Config;
3440
3532
  //#endregion
3441
- export { AD_PROVIDERS, type AdProvider, BASE_HOOK, type Block, CONFIG_SCHEMA_URL, CONTRAST, type ColorUtility, type Config, ConfigSchema, type ConfigValidationResult, type ContactObject, DARK_SEL, DOC_ORDER, DOC_SLUGS, type DesignSystem, DesignSystemSchema, type DocSet, type ExpandedHue, type Format, type FunctionalRole, type GenerateLegalOptions, type GenerateOptions, type GenerateResult, type IconSpriteOptions, type IconSpriteResult, JURISDICTIONS, JURISDICTION_COUNTRIES, type JsonSchemaNode, type Jurisdiction, KNOWN_PROCESSORS, type KnownProcessorKey, type LegalDoc, type LegalOutput, NUMERIC_STEPS, type OrganizationConfig, type PolicyVars, type PostalAddress, type Processor, type ProcessorStorage, REQUIRED_ROLES, ROLE_TOKEN_KEYS, type ResolvedInput, type RoleKind, type RoleSpec, SCHEMA_LOCAL_PATH, SCHEMA_URL, type SchemaTreeNode, type SchemaTreeOptions, type SiteAdProperty, type SiteFont, SiteFontSchema, type SiteIndexNow, type SiteIndexing, type SiteSearchConsole, type SiteSection, type Span, type StylesheetFormat, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, type Tier, type TierAstro, type TierCss, type TierEntry, type TierProjection, type TierWc, type ValidationResult, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, movedTokens, parseMarkdown, processorsMissingLocation, renderInlineMarkdown, renderMarkdown, renderNodes, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
3533
+ export { AD_PROVIDERS, type AdProvider, BASE_HOOK, type Block, CONFIG_SCHEMA_LOCAL_PATH, CONFIG_SCHEMA_URL, CONTRAST, type ColorUtility, type Config, ConfigSchema, type ConfigValidationResult, type ContactObject, DARK_SEL, DOC_ORDER, DOC_SLUGS, type DesignSystem, DesignSystemSchema, type DocSet, type ExpandedHue, type Format, type FunctionalRole, type GenerateLegalOptions, type GenerateOptions, type GenerateResult, type IconSpriteOptions, type IconSpriteResult, JURISDICTIONS, JURISDICTION_COUNTRIES, type JsonSchemaNode, type Jurisdiction, KNOWN_PROCESSORS, type KnownProcessorKey, type LegalDoc, type LegalOutput, NUMERIC_STEPS, type OrganizationConfig, type PolicyVars, type PostalAddress, type Processor, type ProcessorStorage, REQUIRED_ROLES, ROLE_TOKEN_KEYS, type RenderRobotsOptions, type ResolvedInput, type RoleKind, type RoleSpec, SCHEMA_LOCAL_PATH, SCHEMA_URL, type SchemaTreeNode, type SchemaTreeOptions, type SiteAdProperty, type SiteFont, SiteFontSchema, type SiteIndexNow, type SiteIndexing, type SiteSearchConsole, type SiteSection, type Span, type StylesheetFormat, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, type Tier, type TierAstro, type TierCss, type TierEntry, type TierProjection, type TierWc, type ValidationResult, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, defaultSiteConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, movedTokens, parseMarkdown, processorsMissingLocation, renderInlineMarkdown, renderMarkdown, renderNodes, renderRobotsTxt, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
3442
3534
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":["left","top","width","height","rotate","hFlip","vFlip","IconifyDimenisons","IconifyTransformations","IconifyOptional","parent","body","hidden","IconifyIcon","APIIconAttributes","IconifyAlias","index","ExtendedIconifyIcon","ExtendedIconifyAlias","name","total","version","author","url","license","title","spdx","samples","displayHeight","category","tags","palette","prefix","suffix","info","IconifyInfo","chars","IconifyChars","categories","IconifyCategories","themes","LegacyIconifyThemes","prefixes","Record","suffixes","provider","icons","IconifyIcons","aliases","IconifyAliases","IconifyJSONIconsData","IconifyMetaData","lastModified","not_found","IconifyJSON","metadata"],"sources":["../src/schema.ts","../src/config.ts","../src/tokens.ts","../src/generate.ts","../src/docs.ts","../src/tiers.ts","../../../node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts","../src/icons-sprite.ts","../src/shared.ts","../src/token-refs.ts","../src/legal/providers.ts","../src/legal/derive.ts","../src/legal/templates/cookies.ca.ts","../src/legal/templates/privacy.ca.ts","../src/legal/templates/terms.ca.ts","../src/legal/templates/index.ts","../src/legal/render.ts","../src/legal/index.ts","../src/index.ts"],"x_google_ignoreList":[6],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":["left","top","width","height","rotate","hFlip","vFlip","IconifyDimenisons","IconifyTransformations","IconifyOptional","parent","body","hidden","IconifyIcon","APIIconAttributes","IconifyAlias","index","ExtendedIconifyIcon","ExtendedIconifyAlias","name","total","version","author","url","license","title","spdx","samples","displayHeight","category","tags","palette","prefix","suffix","info","IconifyInfo","chars","IconifyChars","categories","IconifyCategories","themes","LegacyIconifyThemes","prefixes","Record","suffixes","provider","icons","IconifyIcons","aliases","IconifyAliases","IconifyJSONIconsData","IconifyMetaData","lastModified","not_found","IconifyJSON","metadata"],"sources":["../src/schema.ts","../src/config.ts","../src/tokens.ts","../src/generate.ts","../src/docs.ts","../src/tiers.ts","../../../node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts","../src/icons-sprite.ts","../src/shared.ts","../src/token-refs.ts","../src/legal/providers.ts","../src/legal/derive.ts","../src/legal/templates/cookies.ca.ts","../src/legal/templates/privacy.ca.ts","../src/legal/templates/terms.ca.ts","../src/legal/templates/index.ts","../src/legal/render.ts","../src/legal/index.ts","../src/robots.ts","../src/index.ts"],"x_google_ignoreList":[6],"mappings":";;;;cAmQa,kBAAA,EAAkB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CnB,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,kBAAA;;;;;;cA0B7B,UAAA;;;;;;;;;;;;;cAcA,iBAAA;;cAGA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkDD,gBAAA;EACN,EAAA;EAAU,IAAA,EAAM,YAAA;EAAc,MAAA;EAAY,QAAA;AAAA;EAC1C,EAAA;EAAW,IAAA;EAAiB,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,SAAS;EAAI,QAAA;AAAA;;;;;;;;iBAsD9C,QAAA,CAAS,KAAA,YAAiB,gBAAgB;;;cCvTpD,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;;;;cAWnB,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;;;;;;;;;KAUb,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC/B,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,cAyM9B,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4LrB,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;cAed,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;cAWnB,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;cAgCP,YAAA;AAAA,KAWD,UAAA,WAAqB,YAAY;;;;;;;;;;;cAYvC,gBAAA,EAAgB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAyFT,aAAA;AAAA,KAED,YAAA,WAAuB,aAAa;;;;;;;;;;;;;;cAenC,sBAAA;EAE2B,EAAA;AAAA;AAAA,cA+ClC,iBAAA,EAAiB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqWjB,yBAAA,EAAyB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmClB,YAAA,EAAY,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
package/dist/index.mjs CHANGED
@@ -9,6 +9,7 @@ import { LIGHTNESS_LADDER, contrastLc, generateOklchPalette, hexToOklch, oklchSt
9
9
  import { AD_PLATFORMS, AD_PROVIDER_KEYS } from "@getvitops/utils/ads";
10
10
  import { generateIconInclude, nodesToHtml, resolveIcon, t } from "@getvitops/utils";
11
11
  import { getIconData, iconToSVG, replaceIDs } from "@iconify/utils";
12
+ import { resolveSitemapUrl } from "@getvitops/utils/indexing";
12
13
 
13
14
  //#region src/shared.ts
14
15
  /**
@@ -328,7 +329,7 @@ const LADDER_TOLERANCE = .03;
328
329
  function ladderWarnings(palette) {
329
330
  const warnings = [];
330
331
  for (const [hue, expanded] of Object.entries(palette)) for (const [step, deviation] of Object.entries(expanded.deviations ?? {})) {
331
- if (Math.abs(deviation) <= .03) continue;
332
+ if (Math.abs(deviation) <= LADDER_TOLERANCE) continue;
332
333
  const dir = deviation > 0 ? "lighter" : "darker";
333
334
  warnings.push(`colors.palette.${hue}: the colour pinned at step ${step} is ${Math.abs(deviation).toFixed(3)} ${dir} than the shared lightness ladder — this hue will read ${dir} than others at ${step}. Legal, but move it to a neighbouring step if that wasn't intended.`);
334
335
  }
@@ -1618,6 +1619,27 @@ const AdPropertySchema = z.object({
1618
1619
  enabled: desc(z.optional(z.boolean()), "Set false to keep the property on record without emitting its tag.")
1619
1620
  });
1620
1621
  /**
1622
+ * How one location's Google reviews are selected and ordered for display.
1623
+ *
1624
+ * Keyed by `organization.locations` key, mirroring `site.ads`/`site.searchConsole`
1625
+ * — `vitops reviews` needs to know which physical location a fetched review set
1626
+ * belongs to, and that record already exists.
1627
+ */
1628
+ const ReviewLocationSchema = z.object({
1629
+ accountId: desc(z.optional(z.string()), "GBP account resource id (`accounts/…`), overriding `site.reviews.accountId` for this location."),
1630
+ locationId: desc(z.string(), "GBP location resource id (`locations/…`) to fetch reviews for."),
1631
+ featured: desc(z.optional(z.array(z.string())), "Review ids to always include, in this order, ahead of everything else automatically selected."),
1632
+ minRating: desc(z.optional(z.number()), "Drop reviews below this star rating (default 4) from the automatic (non-featured) selection."),
1633
+ limit: desc(z.optional(z.number()), "Keep at most this many reviews after filtering."),
1634
+ sort: desc(z.optional(z.enum(["recent", "rating"])), "Ordering for the non-featured remainder (default `recent`).")
1635
+ });
1636
+ const ReviewsSchema = z.object({
1637
+ accountId: desc(z.optional(z.string()), "Default GBP account resource id (`accounts/…`) for locations that do not override it."),
1638
+ locations: desc(z.record(z.string(), ReviewLocationSchema), "Which `organization.locations` to fetch Google reviews for, and how each one’s reviews are filtered/ordered. `vitops reviews` writes the result to `.vitops/reviews.json`."),
1639
+ schema: desc(z.optional(z.boolean()), "Emit `Review` JSON-LD for these reviews (default false). Off by default: Google’s structured-data policy treats a business marking up reviews of itself as ineligible for review rich results, and risks a manual action."),
1640
+ avatars: desc(z.optional(z.boolean()), "Render the reviewer’s Google-hosted avatar photo (default false). Off by default: every visitor would otherwise issue a third-party request to googleusercontent.com, and the URLs are not guaranteed to stay live.")
1641
+ });
1642
+ /**
1621
1643
  * Which template set the generated legal documents are written against. This is
1622
1644
  * a closed enum rather than a free string because an unrecognised value would
1623
1645
  * otherwise silently fall back to the wrong body of law; `validateConfig` rejects
@@ -1724,6 +1746,7 @@ const SiteSectionSchema = z.object({
1724
1746
  platforms: desc(z.optional(z.array(z.string())), "Informational list of ad platforms in use. Capture recognises every known click-ID parameter regardless.")
1725
1747
  })), "Ad-click attribution for conversion tracking."),
1726
1748
  ads: desc(z.optional(z.partialRecord(AdProviderSchema, AdPropertySchema)), "Ad properties this site is linked to, keyed by platform. Read by `vitops ads setup` (ensure the DNS verification record), `vitops ads tags` (emit the consent-gated pixel), and the generated cookie notice (disclose what each pixel stores). Credentials never live here — the DNS write uses CLOUDFLARE_API_TOKEN from the environment."),
1749
+ reviews: desc(z.optional(ReviewsSchema), "Google Business Profile reviews to cache and display, keyed by `organization.locations`. Read by `vitops reviews`. Credentials never live here — a Google OAuth credential comes from the environment, same as `site.searchConsole`."),
1727
1750
  security: desc(z.optional(z.object({ turnstile: z.optional(z.object({ siteKey: desc(z.optional(z.string()), "Cloudflare Turnstile site key (public).") })) })), "Security integrations (bot protection)."),
1728
1751
  legal: desc(z.optional(z.object({
1729
1752
  jurisdiction: desc(z.optional(JurisdictionSchema), "Which legal template set the generated documents use. Default `ca`."),
@@ -1799,11 +1822,14 @@ const OrganizationSectionSchema = z.extend(OrganizationSchema, {
1799
1822
  })), "Public profile URLs (also feed JSON-LD `sameAs` via `organization.sameAs`).")
1800
1823
  });
1801
1824
  const ConfigSchema = z.object({
1825
+ $schema: desc(z.optional(z.string()), "URL of the published config JSON Schema (stamped by `vitops init --site`) so editors provide autocomplete + validation."),
1802
1826
  designSystem: DesignSystemBlock,
1803
1827
  organization: desc(z.optional(OrganizationSectionSchema), "The company: schema.org Organization details for JSON-LD (name, legalName, logo, tax IDs, sameAs), plus its contact, physical locations, services and public profiles. These stay true across sites — several sites can share one `organization` and differ only in `site`."),
1804
1828
  site: desc(SiteSectionSchema, "This published site: locales, domains, environments, content templates, SEO, analytics, legal documents, icons, favicon and deployment. Facts about a *presentation* of the organization rather than the organization itself.")
1805
1829
  });
1806
1830
  const CONFIG_SCHEMA_URL = "https://unpkg.com/@getvitops/generator/config.schema.json";
1831
+ /** The installed copy, not the unpinned unpkg URL — see `SCHEMA_LOCAL_PATH`'s twin. */
1832
+ const CONFIG_SCHEMA_LOCAL_PATH = "./node_modules/@getvitops/generator/config.schema.json";
1807
1833
  /** The published JSON Schema (draft-2020-12), derived from the zod schema. */
1808
1834
  const configJsonSchema = {
1809
1835
  $id: CONFIG_SCHEMA_URL,
@@ -2010,6 +2036,17 @@ function validateConfig(input) {
2010
2036
  if (entry.domainVerification != null && entry.domain == null && site.domains?.canonical == null) errors.push(issue([...at, "domain"], `site.ads.${provider}.domainVerification needs a domain to put the record on — set site.domains.canonical, or state site.ads.${provider}.domain explicitly`));
2011
2037
  if (entry.accountId == null && entry.pixelId == null) errors.push(issue(at, `site.ads.${provider} identifies nothing — set accountId (the advertising account) and/or pixelId (the tag: ${platform.tag.needs} is what its snippet needs)`));
2012
2038
  }
2039
+ for (const [key, entry] of Object.entries(site.reviews?.locations ?? {})) {
2040
+ const at = [
2041
+ "site",
2042
+ "reviews",
2043
+ "locations",
2044
+ key
2045
+ ];
2046
+ if (!has(org?.locations, key)) errors.push(issue(at, `"${key}" is not an organization.locations key`));
2047
+ else if (org?.locations?.[key]?.listings?.google == null) errors.push(issue(at, `organization.locations.${key} has no listings.google id — record the GBP location id there first`));
2048
+ if (entry.accountId == null && site.reviews?.accountId == null) errors.push(issue([...at, "accountId"], `no accountId — set site.reviews.accountId or site.reviews.locations.${key}.accountId`));
2049
+ }
2013
2050
  if (errors.length) return {
2014
2051
  ok: false,
2015
2052
  data: void 0,
@@ -2275,10 +2312,10 @@ const TIERS = {
2275
2312
  wc: {
2276
2313
  tag: "wc-gallery",
2277
2314
  registered: true,
2278
- adds: "prev/next, arrow keys, swipe, an image counter, neighbour preload and the view-transition morph"
2315
+ adds: "a real `showModal()` open, neighbour preload and the thumbnail→full-image view-transition morph"
2279
2316
  },
2280
2317
  astro: a("Gallery", "wc"),
2281
- use: "`<Gallery images={…} label=\"…\" />` — it emits `<wc-gallery>` itself, so do NOT add your own wrapper. Each thumbnail is a `command=\"show-modal\"` invoker for its own `<dialog class=\"lightbox-dialog\">` (see `lightbox`), so it is a working modal lightbox with no JS."
2318
+ use: "`<Gallery images={…} label=\"…\" />` — it emits `<wc-gallery>` wrapping a `<Carousel />` (which emits its own `<wc-carousel>`) itself, so do NOT add your own wrapper around either. Each thumbnail is a plain `<a href=\"#slide-id\">` into the carousel's own `<li id=\"slide-id\">` inside a single `<dialog class=\"lightbox-dialog\">` (see `lightbox`), so it is a working modal lightbox — WITH prev/next — before any script runs. Stepping between images is the carousel's job, not the gallery's."
2282
2319
  },
2283
2320
  entries: {
2284
2321
  css: c([
@@ -2358,7 +2395,8 @@ const TIERS = {
2358
2395
  registered: true,
2359
2396
  adds: "fills the track with enough copies to scroll seamlessly"
2360
2397
  },
2361
- use: "`<wc-marquee>` around one `.marquee__content`. Scrolls via CSS alone; JS only removes the seam."
2398
+ astro: a("Marquee", "wc"),
2399
+ use: "`<Marquee>` around one `.marquee__content`, or `<wc-marquee>` by hand. Scrolls via CSS alone; JS only removes the seam."
2362
2400
  },
2363
2401
  counter: {
2364
2402
  css: c([
@@ -2635,11 +2673,10 @@ const TIERS = {
2635
2673
  lightbox: {
2636
2674
  css: c([
2637
2675
  "lightbox-dialog",
2638
- "lightbox-dialog__content",
2639
- "lightbox-dialog__image",
2640
- "lightbox-dialog__nav-button"
2676
+ "lightbox-dialog__track",
2677
+ "lightbox-dialog__close"
2641
2678
  ], "patterns/lightbox.css", true),
2642
- use: "The `<dialog class=\"lightbox-dialog\">` half of a lightbox. Use `gallery` for the thumbnail grid that drives it — `<Gallery />` emits both."
2679
+ use: "The single `<dialog class=\"lightbox-dialog\">` a gallery opens — it wraps ONE `.carousel` (`lightbox-dialog__track`) of every image, not one dialog per image. Use `gallery` for the thumbnail grid that drives it — `<Gallery />` emits both, and the carousel inside already owns prev/next/dots/keys/swipe."
2643
2680
  },
2644
2681
  comment: {
2645
2682
  css: c([
@@ -2649,6 +2686,17 @@ const TIERS = {
2649
2686
  ], "patterns/comment.css", true),
2650
2687
  use: "`.comment` inside `.comment-thread`."
2651
2688
  },
2689
+ review: {
2690
+ css: c([
2691
+ "review",
2692
+ "review__stars",
2693
+ "review__body",
2694
+ "review__reply",
2695
+ "review__source"
2696
+ ], "patterns/review.css", true),
2697
+ astro: a("ReviewCard", "css"),
2698
+ use: "`<ReviewCard review={…} />` — one card, from `vitops reviews`' `.vitops/reviews.json` cache. Put several inside `<Carousel>` slides or `<Marquee>` items; there is no group component and no `wc-review`."
2699
+ },
2652
2700
  tabs: {
2653
2701
  css: c(["tabs"], void 0, true),
2654
2702
  use: "Generated pattern only; no structural partial and no component yet."
@@ -4069,11 +4117,12 @@ split in two rather than shelved whole. \`layout.css\` (patterns) and \`layout-u
4069
4117
  format reaches the same arrangement by its own route — patterns in \`@layer components\`,
4070
4118
  utilities as \`@utility\`.
4071
4119
 
4072
- Known gap: the \`typography.headings\` bare-element bindings (\`h1\`, \`h2\`, \`body\`) are
4073
- emitted alongside \`.font-<role>\` and so sit in \`vitops.utilities\`, where a tag rule
4074
- outranks every pattern — \`<h2 class="pull-quote">\` keeps the heading's font-size in
4075
- \`css\`/\`bricks\` and the pattern's in \`tailwind\`, which puts the bindings in \`@layer base\`.
4076
- Give the element a \`.font-<role>\` class to pin it either way.
4120
+ The \`typography.headings\` bare-element bindings (\`h1\`, \`h2\`, \`body\`) are a DEFAULT for an
4121
+ unstyled element, not a utility, so they emit into their own chunk in \`vitops.base\` — below
4122
+ every pattern — rather than alongside \`.font-<role>\` in \`vitops.utilities\`. That is what lets
4123
+ \`<h2 class="pull-quote">\` keep the pattern's font-size in every format: the bare \`h2\` binding
4124
+ never outranks \`.pull-quote\`, regardless of specificity, because a layer decides before
4125
+ specificity is ever asked.
4077
4126
 
4078
4127
  ## \`bricks\` — WordPress / Bricks Builder payload
4079
4128
 
@@ -7371,8 +7420,10 @@ function build(ds, format, assetsDir, buildOpts = {}) {
7371
7420
  const headings = typography?.headings ?? {};
7372
7421
  let typo = `/* GENERATED typography roles — do not edit by hand. */\n`;
7373
7422
  for (const [role, spec] of Object.entries(roles)) typo += `.font-${role} {\n${decls(roleDecls(role, spec))}\n}\n`;
7374
- for (const [tag, role] of Object.entries(headings)) if (roles[role]) typo += `${tag} {\n${decls(roleDecls(role, roles[role]))}\n}\n`;
7375
7423
  generated["typography.css"] = typo;
7424
+ let typoHeadings = `/* GENERATED typography.headings bare-element bindings — do not edit by hand. */\n`;
7425
+ for (const [tag, role] of Object.entries(headings)) if (roles[role]) typoHeadings += `${tag} {\n${decls(roleDecls(role, roles[role]))}\n}\n`;
7426
+ generated["typography-headings.css"] = typoHeadings;
7376
7427
  }
7377
7428
  const stateRules = (sel, role, states, colorProp = "background-color") => {
7378
7429
  let out = "";
@@ -8128,6 +8179,7 @@ const CHUNK_LAYER = {
8128
8179
  "global.css": "vitops.base",
8129
8180
  "generated/type-tokens.css": "vitops.base",
8130
8181
  "generated/tokens.css": "vitops.base",
8182
+ "generated/typography-headings.css": "vitops.base",
8131
8183
  "generated/color.css": "vitops.utilities",
8132
8184
  "generated/shadows.css": "vitops.utilities",
8133
8185
  "generated/typography.css": "vitops.utilities",
@@ -8297,6 +8349,68 @@ function loadConfigFile(input, siteEnv) {
8297
8349
  return resolveConfig(typeof input === "string" ? JSON.parse(readFileSync(input, "utf8")) : input, siteEnv);
8298
8350
  }
8299
8351
 
8352
+ //#endregion
8353
+ //#region src/robots.ts
8354
+ /**
8355
+ * `robots.txt`, generated from the same fact the indexing gate and the
8356
+ * `<meta name="robots">` tag already read.
8357
+ *
8358
+ * Before this, nothing in the toolchain emitted one at all — a staging
8359
+ * environment with `robots: "noindex,nofollow"` got a `<meta>` tag and a
8360
+ * blocked `search notify` run, but a crawler reading `/robots.txt` directly
8361
+ * saw nothing and was free to index it anyway. `plan()`
8362
+ * (`@getvitops/utils/indexing`) already treats `noindex` in the resolved
8363
+ * environment's directive as a hard stop for notifying search engines; this is
8364
+ * the same fact, read the same way, applied to the file crawlers actually ask
8365
+ * for first.
8366
+ *
8367
+ * A sibling of `generateLegal`, not a `generate()` format: this renders from a
8368
+ * **`Config`** (a `site.environments` entry), not a `DesignSystem`, so bolting
8369
+ * it onto `generate()` would be a format that ignores its own input.
8370
+ *
8371
+ * Pure: no filesystem, no clock, no shared state. The CLI writes it to stdout
8372
+ * or `--out`; the Astro integration writes `public/robots.txt` directly,
8373
+ * mirroring how it already writes the IndexNow key file.
8374
+ */
8375
+ /**
8376
+ * A directive string (`site.environments[env].robots` or `site.seo.robots`)
8377
+ * blocks indexing if it contains `noindex` — matching `plan()`'s own check in
8378
+ * `@getvitops/utils/indexing`, so the two can't read the same fact two ways.
8379
+ */
8380
+ function isBlocked(directive) {
8381
+ return /noindex/i.test(directive ?? "");
8382
+ }
8383
+ /**
8384
+ * Render `robots.txt` for one environment.
8385
+ *
8386
+ * A blocked environment gets `Disallow: /` for every user agent and no sitemap
8387
+ * line — publishing the sitemap of a site asking not to be indexed would be
8388
+ * the more damaging way to get this wrong, handing every listed URL to a
8389
+ * crawler that then finds itself blocked from all of them, but has already
8390
+ * seen where they are. An allowed environment gets a permissive robots.txt
8391
+ * plus a `Sitemap:` line, using the exact URL `vitops search notify` would
8392
+ * submit — `site.seo.indexing.sitemapUrl`, or `<canonical>/sitemap-index.xml`,
8393
+ * the same default `@astrojs/sitemap` produces.
8394
+ */
8395
+ function renderRobotsTxt(cfg, options = {}) {
8396
+ const envName = options.env ?? "production";
8397
+ const site = cfg.site;
8398
+ const env = site.environments?.[envName];
8399
+ const directive = env?.robots ?? site.seo?.robots;
8400
+ const lines = ["User-agent: *"];
8401
+ if (isBlocked(directive)) {
8402
+ lines.push("Disallow: /");
8403
+ return lines.join("\n") + "\n";
8404
+ }
8405
+ lines.push("Allow: /");
8406
+ const sitemapUrl = resolveSitemapUrl({
8407
+ canonical: env?.url ?? site.domains?.canonical,
8408
+ sitemapUrl: site.seo?.indexing?.sitemapUrl
8409
+ });
8410
+ if (sitemapUrl) lines.push("", `Sitemap: ${sitemapUrl}`);
8411
+ return lines.join("\n") + "\n";
8412
+ }
8413
+
8300
8414
  //#endregion
8301
8415
  //#region src/index.ts
8302
8416
  /**
@@ -8571,7 +8685,40 @@ function defaultConfig() {
8571
8685
  }
8572
8686
  };
8573
8687
  }
8688
+ /**
8689
+ * A minimal but complete starter site config, used by `vitops init --site`.
8690
+ *
8691
+ * `designSystem.themes.default` embeds `defaultConfig()` directly — a scaffolded
8692
+ * `Config` cannot reference a separate `design-system.json`: `ConfigSchema`
8693
+ * requires `designSystem`, and there is no file-level `extends`, so the token set
8694
+ * must live inside the document. `site.environments.dev` ships `noindex,nofollow`
8695
+ * for free — it costs nothing and is the one fact a launch checklist most often
8696
+ * forgets to flip back.
8697
+ */
8698
+ function defaultSiteConfig(opts) {
8699
+ const locale = opts?.locale ?? "en";
8700
+ const url = opts?.url ?? "https://example.com";
8701
+ return {
8702
+ $schema: CONFIG_SCHEMA_LOCAL_PATH,
8703
+ designSystem: {
8704
+ themes: { default: defaultConfig() },
8705
+ defaultColorScheme: "light"
8706
+ },
8707
+ organization: { name: opts?.name ?? "My Organization" },
8708
+ site: {
8709
+ defaultLocale: locale,
8710
+ locales: { [locale]: { name: "English" } },
8711
+ environments: {
8712
+ production: { url },
8713
+ dev: {
8714
+ url,
8715
+ robots: "noindex,nofollow"
8716
+ }
8717
+ }
8718
+ }
8719
+ };
8720
+ }
8574
8721
 
8575
8722
  //#endregion
8576
- export { AD_PROVIDERS, BASE_HOOK, CONFIG_SCHEMA_URL, CONTRAST, ConfigSchema, DARK_SEL, DOC_ORDER, DOC_SLUGS, DesignSystemSchema, JURISDICTIONS, JURISDICTION_COUNTRIES, KNOWN_PROCESSORS, NUMERIC_STEPS, REQUIRED_ROLES, ROLE_TOKEN_KEYS, SCHEMA_LOCAL_PATH, SCHEMA_URL, SiteFontSchema, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, movedTokens, parseMarkdown, processorsMissingLocation, renderInlineMarkdown, renderMarkdown, renderNodes, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
8723
+ export { AD_PROVIDERS, BASE_HOOK, CONFIG_SCHEMA_LOCAL_PATH, CONFIG_SCHEMA_URL, CONTRAST, ConfigSchema, DARK_SEL, DOC_ORDER, DOC_SLUGS, DesignSystemSchema, JURISDICTIONS, JURISDICTION_COUNTRIES, KNOWN_PROCESSORS, NUMERIC_STEPS, REQUIRED_ROLES, ROLE_TOKEN_KEYS, SCHEMA_LOCAL_PATH, SCHEMA_URL, SiteFontSchema, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, defaultSiteConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, movedTokens, parseMarkdown, processorsMissingLocation, renderInlineMarkdown, renderMarkdown, renderNodes, renderRobotsTxt, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
8577
8724
  //# sourceMappingURL=index.mjs.map