@pyreon/zero 0.12.7 → 0.12.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"favicon2.d.ts","names":[],"sources":["../../../src/favicon.ts"],"mappings":";;;UA6BiB,mBAAA;;EAEf,MAAA;EAFkC;EAIlC,UAAA;AAAA;AAAA,UAGe,mBAAA;EAAA;EAEf,MAAA;;EAEA,UAAA;EAFA;EAIA,eAAA;EAAA;EAEA,IAAA;EAEA;EAAA,QAAA;EA0BA;;;;;EApBA,UAAA;EAqEc;;;;;;;;;AA8XhB;;;;;;;;;;EA/aE,OAAA,GAAU,MAAA,SAAe,mBAAA;EAkb4B;;;AAmDvD;;;;;;;;;AAMA;;;;EA1dE,SAAA;AAAA;;;;;;;;;;;;;;;;;iBAgCc,aAAA,CAAc,MAAA,EAAQ,mBAAA,GAAsB,MAAA;;;;;;;;;;;iBA8X5C,YAAA,CACd,MAAA,sBACA,MAAA,EAAQ,mBAAA,GACP,KAAA;EAAQ,GAAA;EAAa,IAAA;EAAe,KAAA;EAAgB,IAAA;AAAA;AAAA,UAmDtC,QAAA;EACf,MAAA,EAAQ,MAAA;EACR,IAAA;AAAA;;iBAIc,iBAAA,CAAkB,OAAA,EAAS,QAAA,KAAa,UAAA"}
1
+ {"version":3,"file":"favicon2.d.ts","names":[],"sources":["../../../src/favicon.ts"],"mappings":";;;UA6BiB,mBAAA;;EAEf,MAAA;EAFkC;EAIlC,UAAA;AAAA;AAAA,UAGe,mBAAA;EAAA;EAEf,MAAA;;EAEA,UAAA;EAFA;EAIA,eAAA;EAAA;EAEA,IAAA;EAEA;EAAA,QAAA;EA0BA;;;;;EApBA,UAAA;EAqEc;;;;;;;;;AA2YhB;;;;;;;;;;EA5bE,OAAA,GAAU,MAAA,SAAe,mBAAA;EA+b4B;;;AAmDvD;;;;;;;;;AAMA;;;;EAveE,SAAA;AAAA;;;;;;;;;;;;;;;;;iBAgCc,aAAA,CAAc,MAAA,EAAQ,mBAAA,GAAsB,MAAA;;;;;;;;;;;iBA2Y5C,YAAA,CACd,MAAA,sBACA,MAAA,EAAQ,mBAAA,GACP,KAAA;EAAQ,GAAA;EAAa,IAAA;EAAe,KAAA;EAAgB,IAAA;AAAA;AAAA,UAmDtC,QAAA;EACf,MAAA,EAAQ,MAAA;EACR,IAAA;AAAA;;iBAIc,iBAAA,CAAkB,OAAA,EAAS,QAAA,KAAa,UAAA"}
@@ -1,6 +1,31 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
3
  //#region src/image-plugin.d.ts
4
+ /**
5
+ * CDN provider — rewrites image URLs to CDN endpoints.
6
+ * Return the rewritten URL, or null to use local processing.
7
+ */
8
+ type ImageCdnProvider = (src: string, opts: {
9
+ width: number;
10
+ quality: number;
11
+ format: ImageFormat;
12
+ }) => string | null;
13
+ /** Built-in CDN providers. */
14
+ declare const cdnProviders: {
15
+ /** Cloudinary: `https://res.cloudinary.com/{cloud}/image/upload/...` */readonly cloudinary: (cloudName: string) => ImageCdnProvider; /** Imgix: `https://{domain}.imgix.net/...?w=...&q=...&fm=...` */
16
+ readonly imgix: (domain: string) => ImageCdnProvider; /** Vercel Image Optimization: `/_next/image?url=...&w=...&q=...` */
17
+ readonly vercel: () => ImageCdnProvider; /** Bunny CDN: `https://{pullZone}.b-cdn.net/...?width=...&quality=...` */
18
+ readonly bunny: (pullZone: string) => ImageCdnProvider;
19
+ };
20
+ /** Placeholder generation strategy. */
21
+ type PlaceholderStrategy = 'blur' | 'dominant-color' | 'none';
22
+ /** SVG processing options for ?component imports. */
23
+ interface SvgOptions {
24
+ /** Replace fill/stroke with currentColor. Default: true */
25
+ currentColor?: boolean;
26
+ /** Default size (width/height). */
27
+ defaultSize?: number;
28
+ }
4
29
  interface ImagePluginConfig {
5
30
  /** Output directory for processed images. Default: "assets/img" */
6
31
  outDir?: string;
@@ -12,8 +37,31 @@ interface ImagePluginConfig {
12
37
  quality?: number;
13
38
  /** Blur placeholder size in px. Default: 16 */
14
39
  placeholderSize?: number;
40
+ /** Placeholder strategy. Default: "blur" */
41
+ placeholder?: PlaceholderStrategy;
15
42
  /** File patterns to process. Default: /\.(jpe?g|png|webp|avif)$/i */
16
43
  include?: RegExp;
44
+ /**
45
+ * CDN provider for URL rewriting. When set, images are NOT processed
46
+ * locally — URLs are rewritten to the CDN endpoint.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * imagePlugin({ cdn: cdnProviders.cloudinary('my-cloud') })
51
+ * imagePlugin({ cdn: cdnProviders.vercel() })
52
+ * ```
53
+ */
54
+ cdn?: ImageCdnProvider;
55
+ /**
56
+ * SVG processing options. Enables `?component` import for inline SVGs.
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * import Logo from './logo.svg?component'
61
+ * <Logo width={24} class="text-primary" />
62
+ * ```
63
+ */
64
+ svg?: SvgOptions | boolean;
17
65
  }
18
66
  type ImageFormat = 'webp' | 'avif' | 'jpeg' | 'png';
19
67
  /** Per-format source set for <picture> <source> elements. */
@@ -79,5 +127,5 @@ declare function parseWebPDimensions(buffer: Buffer): {
79
127
  height: number;
80
128
  };
81
129
  //#endregion
82
- export { FormatSource, ImageFormat, ImagePluginConfig, ProcessedImage, imagePlugin, parseJpegDimensions, parseWebPDimensions };
130
+ export { FormatSource, ImageCdnProvider, ImageFormat, ImagePluginConfig, PlaceholderStrategy, ProcessedImage, SvgOptions, cdnProviders, imagePlugin, parseJpegDimensions, parseWebPDimensions };
83
131
  //# sourceMappingURL=image-plugin2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-plugin2.d.ts","names":[],"sources":["../../../src/image-plugin.ts"],"mappings":";;;UA+BiB,iBAAA;;EAEf,MAAA;EAFgC;EAIhC,MAAA;EAQgB;EANhB,OAAA,GAAU,WAAA;EAFV;EAIA,OAAA;EAFU;EAIV,eAAA;EAAA;EAEA,OAAA,GAAU,MAAA;AAAA;AAAA,KAGA,WAAA;;UAGK,YAAA;EAHM;EAKrB,IAAA;EALqB;EAOrB,MAAA;AAAA;AAAA,UAGe,cAAA;;EAEf,GAAA;EALM;EAON,MAAA;EAJ6B;EAM7B,KAAA;EAQc;EANd,MAAA;EAJA;EAMA,WAAA;EAFA;EAIA,OAAA,EAAS,YAAA;EAAT;EAEA,OAAA,EAAS,KAAA;IAAQ,GAAA;IAAa,KAAA;IAAe,MAAA;EAAA;AAAA;;;AA6B/C;;;;;;;;;AA4NA;;;;;;;;;;AAqBA;;;iBAjPgB,WAAA,CAAY,MAAA,GAAQ,iBAAA,GAAyB,MAAA;;iBA4N7C,mBAAA,CAAoB,MAAA,EAAQ,MAAA;EAC1C,KAAA;EACA,MAAA;AAAA;;iBAmBc,mBAAA,CAAoB,MAAA,EAAQ,MAAA;EAC1C,KAAA;EACA,MAAA;AAAA"}
1
+ {"version":3,"file":"image-plugin2.d.ts","names":[],"sources":["../../../src/image-plugin.ts"],"mappings":";;;;;AAmCA;;KAAY,gBAAA,IAAoB,GAAA,UAAa,IAAA;EAC3C,KAAA;EACA,OAAA;EACA,MAAA,EAAQ,WAAA;AAAA;;cAIG,YAAA;EAPgC,oHASV,gBAAA,EALlC;EAAA,oCAS0B,gBAAA,EAUjB;EAAA,uBANI,gBAAA,EARqB;EAAA,sCAYN,gBAAA;AAAA;;KAKjB,mBAAA;;UAGK,UAAA;;EAEf,YAAA;;EAEA,WAAA;AAAA;AAAA,UAGe,iBAAA;EAnBH;EAqBZ,MAAA;;EAEA,MAAA;EAnB2C;EAqB3C,OAAA,GAAU,WAAA;EAhBA;EAkBV,OAAA;;EAEA,eAAA;EApB6B;EAsB7B,WAAA,GAAc,mBAAA;EAnBW;EAqBzB,OAAA,GAAU,MAAA;EAnBV;;AAKF;;;;;;;;EAyBE,GAAA,GAAM,gBAAA;EAUU;;;;;;;;;EAAhB,GAAA,GAAM,UAAA;AAAA;AAAA,KAGI,WAAA;;UAGK,YAAA;EANT;EAQN,IAAA;EARgB;EAUhB,MAAA;AAAA;AAAA,UAGe,cAAA;EAVM;EAYrB,GAAA;EATe;EAWf,MAAA;;EAEA,KAAA;EATM;EAWN,MAAA;EAR6B;EAU7B,WAAA;EAIc;EAFd,OAAA,EAAS,YAAA;EART;EAUA,OAAA,EAAS,KAAA;IAAQ,GAAA;IAAa,KAAA;IAAe,MAAA;EAAA;AAAA;;;;;;;AA6B/C;;;;;;;;;AA4SA;;;;;;;;;iBA5SgB,WAAA,CAAY,MAAA,GAAQ,iBAAA,GAAyB,MAAA;AAiU7D;AAAA,iBArBgB,mBAAA,CAAoB,MAAA,EAAQ,MAAA;EAC1C,KAAA;EACA,MAAA;AAAA;;iBAmBc,mBAAA,CAAoB,MAAA,EAAQ,MAAA;EAC1C,KAAA;EACA,MAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"image2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx"],"mappings":";;;UAiDiB,YAAA;EC3Bf;ED6BA,IAAA;ECzBA;ED2BA,MAAA;AAAA;;;UCrCe,UAAA;;EAEf,GAAA;ED+B2B;EC7B3B,GAAA;ED+BA;EC7BA,KAAA;;EAEA,MAAA;;EAEA,KAAA;EAVyB;EAYzB,MAAA,YAAkB,WAAA;EAEI;EAAtB,OAAA,GAAU,YAAA;EAVV;EAYA,OAAA;EARA;EAUA,QAAA;EANA;EAQA,WAAA;EANA;EAQA,KAAA;EANA;EAQA,KAAA;EAJA;EAMA,GAAA;EAFA;EAIA,QAAA;EAAA;;;;AASF;EAHE,GAAA;AAAA;AAAA,UAGe,WAAA;EACf,GAAA;EACA,KAAA;AAAA;;;;;;;;;;;;;;iBAgBc,KAAA,CAAM,KAAA,EAAO,UAAA,GAAa,UAAA"}
1
+ {"version":3,"file":"image2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx"],"mappings":";;;UAgHiB,YAAA;;EAEf,IAAA;;EAEA,MAAA;AAAA;;;UCpGe,UAAA;;EAEf,GAAA;ED8F2B;EC5F3B,GAAA;ED8FA;EC5FA,KAAA;;EAEA,MAAA;;EAEA,KAAA;EAVyB;EAYzB,MAAA,YAAkB,WAAA;EAEI;EAAtB,OAAA,GAAU,YAAA;EAVV;EAYA,OAAA;EARA;EAUA,QAAA;EANA;EAQA,WAAA;EANA;EAQA,KAAA;EANA;EAQA,KAAA;EAJA;EAMA,GAAA;EAFA;EAIA,QAAA;EAAA;;;;AASF;EAHE,GAAA;AAAA;AAAA,UAGe,WAAA;EACf,GAAA;EACA,KAAA;AAAA;;;;;;;;;;;;;;iBAgBc,KAAA,CAAM,KAAA,EAAO,UAAA,GAAa,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":"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"}
@@ -391,6 +391,430 @@ declare function getContext(ctx: MiddlewareContext): Record<string, unknown>;
391
391
  */
392
392
  declare function zeroPlugin(userConfig?: ZeroConfig): Plugin;
393
393
  //#endregion
394
+ //#region src/favicon.d.ts
395
+ interface FaviconLocaleConfig {
396
+ /** Locale-specific source icon (SVG or PNG). */
397
+ source: string;
398
+ /** Optional dark mode variant for this locale. */
399
+ darkSource?: string;
400
+ }
401
+ interface FaviconPluginConfig {
402
+ /** Path to the source icon (SVG or PNG, at least 512x512 for PNG). */
403
+ source: string;
404
+ /** Theme color for web manifest. Default: "#ffffff" */
405
+ themeColor?: string;
406
+ /** Background color for web manifest. Default: "#ffffff" */
407
+ backgroundColor?: string;
408
+ /** App name for web manifest. Uses package.json name if not set. */
409
+ name?: string;
410
+ /** Generate web manifest. Default: true */
411
+ manifest?: boolean;
412
+ /**
413
+ * Dark mode favicon (SVG only).
414
+ * When provided, the SVG favicon uses prefers-color-scheme media query
415
+ * to switch between light and dark variants.
416
+ */
417
+ darkSource?: string;
418
+ /**
419
+ * Locale-specific icon overrides. Each key is a locale code,
420
+ * value is a source icon (and optional dark variant).
421
+ * Locales not in this map use the base `source`.
422
+ *
423
+ * Generated files are placed under `/{locale}/` prefix:
424
+ * /de/favicon.svg, /de/favicon-32x32.png, etc.
425
+ *
426
+ * @example
427
+ * ```ts
428
+ * faviconPlugin({
429
+ * source: "./icon.svg",
430
+ * locales: {
431
+ * de: { source: "./icon-de.svg" },
432
+ * cs: { source: "./icon-cs.svg" },
433
+ * },
434
+ * })
435
+ * ```
436
+ */
437
+ locales?: Record<string, FaviconLocaleConfig>;
438
+ /**
439
+ * Dev mode favicon — shown only during development to distinguish
440
+ * dev tabs from production. Can be:
441
+ * - A path to a separate icon file
442
+ * - `true` to auto-generate a dev badge (grayscale + "DEV" overlay)
443
+ *
444
+ * @example
445
+ * ```ts
446
+ * faviconPlugin({
447
+ * source: "./icon.svg",
448
+ * devSource: "./icon-dev.svg", // custom dev icon
449
+ * // OR
450
+ * devSource: true, // auto-generate grayscale badge
451
+ * })
452
+ * ```
453
+ */
454
+ devSource?: string | boolean;
455
+ }
456
+ /**
457
+ * Favicon generation Vite plugin.
458
+ *
459
+ * Generates all required favicon formats at build time from a single source.
460
+ * In dev mode, serves the source directly.
461
+ *
462
+ * @example
463
+ * ```ts
464
+ * // vite.config.ts
465
+ * import { faviconPlugin } from "@pyreon/zero"
466
+ *
467
+ * export default {
468
+ * plugins: [faviconPlugin({ source: "./src/assets/icon.svg" })],
469
+ * }
470
+ * ```
471
+ */
472
+ declare function faviconPlugin(config: FaviconPluginConfig): Plugin;
473
+ /**
474
+ * Get favicon link tags for a specific locale.
475
+ * Returns link objects suitable for `useHead()` or direct HTML injection.
476
+ *
477
+ * @example
478
+ * ```ts
479
+ * const links = faviconLinks("de", { source: "./icon.svg", locales: { de: { source: "./icon-de.svg" } } })
480
+ * // → [{ rel: "icon", type: "image/svg+xml", href: "/de/favicon.svg" }, ...]
481
+ * ```
482
+ */
483
+ declare function faviconLinks(locale: string | undefined, config: FaviconPluginConfig): Array<{
484
+ rel: string;
485
+ type?: string;
486
+ sizes?: string;
487
+ href: string;
488
+ }>;
489
+ //#endregion
490
+ //#region src/seo.d.ts
491
+ interface SitemapConfig {
492
+ /** Base URL of the site (required). e.g. "https://example.com" */
493
+ origin: string;
494
+ /** Paths to exclude from the sitemap. */
495
+ exclude?: string[];
496
+ /** Default change frequency. Default: "weekly" */
497
+ changefreq?: ChangeFreq;
498
+ /** Default priority. Default: 0.7 */
499
+ priority?: number;
500
+ /** Additional URLs to include (for dynamic routes). */
501
+ additionalPaths?: SitemapEntry[];
502
+ }
503
+ interface SitemapEntry {
504
+ path: string;
505
+ changefreq?: ChangeFreq;
506
+ priority?: number;
507
+ lastmod?: string;
508
+ }
509
+ type ChangeFreq = 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
510
+ /**
511
+ * Generate a sitemap.xml string from route file paths.
512
+ */
513
+ declare function generateSitemap(routeFiles: string[], config: SitemapConfig): string;
514
+ interface RobotsConfig {
515
+ /** Rules per user-agent. */
516
+ rules?: RobotsRule[];
517
+ /** Sitemap URL. */
518
+ sitemap?: string;
519
+ /** Host directive. */
520
+ host?: string;
521
+ }
522
+ interface RobotsRule {
523
+ userAgent: string;
524
+ allow?: string[];
525
+ disallow?: string[];
526
+ crawlDelay?: number;
527
+ }
528
+ /**
529
+ * Generate a robots.txt string.
530
+ */
531
+ declare function generateRobots(config?: RobotsConfig): string;
532
+ /**
533
+ * Generate a JSON-LD script tag string for structured data.
534
+ *
535
+ * @example
536
+ * useHead({
537
+ * script: [jsonLd({
538
+ * "@type": "WebSite",
539
+ * name: "My Site",
540
+ * url: "https://example.com",
541
+ * })],
542
+ * })
543
+ */
544
+ declare function jsonLd(data: Record<string, unknown>): string;
545
+ interface SeoPluginConfig {
546
+ /** Sitemap configuration. */
547
+ sitemap?: SitemapConfig;
548
+ /** Robots.txt configuration. */
549
+ robots?: RobotsConfig;
550
+ }
551
+ /**
552
+ * Zero SEO Vite plugin.
553
+ * Generates sitemap.xml and robots.txt at build time.
554
+ *
555
+ * @example
556
+ * import { seoPlugin } from "@pyreon/zero/seo"
557
+ *
558
+ * export default {
559
+ * plugins: [
560
+ * pyreon(),
561
+ * zero(),
562
+ * seoPlugin({
563
+ * sitemap: { origin: "https://example.com" },
564
+ * robots: { sitemap: "https://example.com/sitemap.xml" },
565
+ * }),
566
+ * ],
567
+ * }
568
+ */
569
+ declare function seoPlugin(config?: SeoPluginConfig): Plugin;
570
+ /**
571
+ * SEO middleware for dev server.
572
+ * Serves sitemap.xml and robots.txt dynamically during development.
573
+ */
574
+ declare function seoMiddleware(config?: SeoPluginConfig): Middleware;
575
+ //#endregion
576
+ //#region src/og-image.d.ts
577
+ interface OgImageLayer {
578
+ /**
579
+ * Text content. Can be:
580
+ * - A string (same for all locales)
581
+ * - A record mapping locale → text
582
+ * - A function receiving locale and returning text
583
+ */
584
+ text: string | Record<string, string> | ((locale: string) => string);
585
+ /** X position — number (px) or string with % (e.g. "50%"). Default: "50%" */
586
+ x?: number | string;
587
+ /** Y position — number (px) or string with % (e.g. "40%"). Default: "50%" */
588
+ y?: number | string;
589
+ /** Font size in px. Default: 64 */
590
+ fontSize?: number;
591
+ /** Font family. Default: "sans-serif" */
592
+ fontFamily?: string;
593
+ /** Font weight. Default: "bold" */
594
+ fontWeight?: string;
595
+ /** Text color. Default: "#ffffff" */
596
+ color?: string;
597
+ /** Text anchor (alignment). Default: "middle" */
598
+ textAnchor?: 'start' | 'middle' | 'end';
599
+ /** Max width in px before wrapping. Default: 80% of image width. */
600
+ maxWidth?: number;
601
+ }
602
+ interface OgImageTemplate {
603
+ /** Template name — used for output file naming. */
604
+ name: string;
605
+ /**
606
+ * Background: path to an image file, or a solid color config.
607
+ *
608
+ * @example "./src/assets/og-bg.jpg"
609
+ * @example { color: "#0066ff", width: 1200, height: 630 }
610
+ */
611
+ background: string | {
612
+ color: string;
613
+ width?: number;
614
+ height?: number;
615
+ };
616
+ /** Output width. Default: 1200 */
617
+ width?: number;
618
+ /** Output height. Default: 630 */
619
+ height?: number;
620
+ /** Output format. Default: "png" */
621
+ format?: 'png' | 'jpeg';
622
+ /** JPEG quality (1-100). Default: 90 */
623
+ quality?: number;
624
+ /** Text layers to overlay on the background. */
625
+ layers?: OgImageLayer[];
626
+ }
627
+ interface OgImagePluginConfig {
628
+ /** Templates to generate. */
629
+ templates: OgImageTemplate[];
630
+ /** Locales to generate for. When omitted, generates a single image per template. */
631
+ locales?: string[];
632
+ /** Output directory prefix. Default: "og" */
633
+ outDir?: string;
634
+ }
635
+ /**
636
+ * Compute the OG image path for a template and locale.
637
+ *
638
+ * @example
639
+ * ```ts
640
+ * ogImagePath("default", "de") // → "/og/default-de.png"
641
+ * ogImagePath("default") // → "/og/default.png"
642
+ * ogImagePath("hero", "en", "images") // → "/images/hero-en.png"
643
+ * ```
644
+ */
645
+ declare function ogImagePath(templateName: string, locale?: string, outDir?: string, format?: 'png' | 'jpeg'): string;
646
+ /**
647
+ * OG image generation Vite plugin.
648
+ *
649
+ * Generates Open Graph images at build time. In dev, generates on-demand.
650
+ * Requires `sharp` as an optional dependency.
651
+ *
652
+ * @example
653
+ * ```ts
654
+ * // vite.config.ts
655
+ * import { ogImagePlugin } from "@pyreon/zero/og-image"
656
+ *
657
+ * export default {
658
+ * plugins: [
659
+ * ogImagePlugin({
660
+ * locales: ["en", "de"],
661
+ * templates: [{
662
+ * name: "default",
663
+ * background: { color: "#0066ff" },
664
+ * layers: [{ text: { en: "Hello", de: "Hallo" }, fontSize: 72 }],
665
+ * }],
666
+ * }),
667
+ * ],
668
+ * }
669
+ * ```
670
+ */
671
+ declare function ogImagePlugin(config: OgImagePluginConfig): Plugin;
672
+ //#endregion
673
+ //#region src/ai.d.ts
674
+ interface AiPluginConfig {
675
+ /** App/API name. */
676
+ name: string;
677
+ /** App description for AI agents. */
678
+ description: string;
679
+ /** Base URL. e.g. "https://example.com" */
680
+ origin: string;
681
+ /** Contact email (required by OpenAI plugin spec). */
682
+ contactEmail?: string;
683
+ /** Legal info URL. */
684
+ legalUrl?: string;
685
+ /** Logo URL for the plugin. */
686
+ logoUrl?: string;
687
+ /** Routes directory relative to project root. Default: "src/routes" */
688
+ routesDir?: string;
689
+ /** API routes directory relative to project root. Default: "src/api" */
690
+ apiDir?: string;
691
+ /**
692
+ * API route descriptions — map of pattern to description.
693
+ * Used for llms.txt and ai-plugin.json.
694
+ *
695
+ * @example
696
+ * ```ts
697
+ * apiDescriptions: {
698
+ * "GET /api/posts": "List all blog posts, supports ?page=N&limit=N",
699
+ * "GET /api/posts/:id": "Get a single post by ID",
700
+ * "POST /api/posts": "Create a new post (requires auth)",
701
+ * }
702
+ * ```
703
+ */
704
+ apiDescriptions?: Record<string, string>;
705
+ /**
706
+ * Page descriptions — map of URL path to description.
707
+ * Used for llms.txt. Falls back to route meta.title/description.
708
+ */
709
+ pageDescriptions?: Record<string, string>;
710
+ /**
711
+ * Additional content to append to llms.txt.
712
+ * Useful for authentication instructions, rate limits, etc.
713
+ */
714
+ llmsExtra?: string;
715
+ }
716
+ /**
717
+ * Generate llms.txt content from route files and config.
718
+ *
719
+ * Format follows the llms.txt proposal:
720
+ * ```
721
+ * # {name}
722
+ * > {description}
723
+ *
724
+ * ## Pages
725
+ * - [/about](/about): About page
726
+ *
727
+ * ## API
728
+ * - GET /api/posts: List posts
729
+ * ```
730
+ *
731
+ * @internal Exported for testing.
732
+ */
733
+ declare function generateLlmsTxt(routeFiles: string[], apiFiles: string[], config: AiPluginConfig): string;
734
+ /**
735
+ * Generate llms-full.txt — expanded version with more detail.
736
+ * Includes all route metadata and API descriptions.
737
+ *
738
+ * @internal Exported for testing.
739
+ */
740
+ declare function generateLlmsFullTxt(routeFiles: string[], apiFiles: string[], config: AiPluginConfig): string;
741
+ interface InferJsonLdOptions {
742
+ /** Page URL. */
743
+ url: string;
744
+ /** Page title. */
745
+ title?: string;
746
+ /** Page description. */
747
+ description?: string;
748
+ /** Page image. */
749
+ image?: string;
750
+ /** Site name. */
751
+ siteName?: string;
752
+ /** Page type hint. */
753
+ type?: 'website' | 'article' | 'product' | 'profile';
754
+ /** Article metadata. */
755
+ publishedTime?: string;
756
+ /** Article author. */
757
+ author?: string;
758
+ /** Article tags. */
759
+ tags?: string[];
760
+ /** Breadcrumb path segments. */
761
+ breadcrumbs?: Array<{
762
+ name: string;
763
+ url: string;
764
+ }>;
765
+ }
766
+ /**
767
+ * Auto-infer JSON-LD structured data from page metadata.
768
+ *
769
+ * Returns an array of JSON-LD objects (multiple schemas can apply to one page).
770
+ * For example, an article page gets both `Article` and `BreadcrumbList`.
771
+ *
772
+ * @example
773
+ * ```tsx
774
+ * const schemas = inferJsonLd({
775
+ * url: "https://example.com/blog/my-post",
776
+ * title: "My Post",
777
+ * description: "A great article",
778
+ * type: "article",
779
+ * author: "Vit Bokisch",
780
+ * publishedTime: "2026-03-31",
781
+ * })
782
+ * // → [Article schema, BreadcrumbList schema]
783
+ * ```
784
+ */
785
+ declare function inferJsonLd(options: InferJsonLdOptions): Record<string, unknown>[];
786
+ /**
787
+ * AI integration Vite plugin.
788
+ *
789
+ * Generates at build time:
790
+ * - `/llms.txt` — concise site summary for AI agents
791
+ * - `/llms-full.txt` — detailed reference for AI agents
792
+ * - `/.well-known/ai-plugin.json` — OpenAI plugin manifest
793
+ * - `/.well-known/openapi.yaml` — minimal OpenAPI spec from API routes
794
+ *
795
+ * In dev, serves these files via middleware.
796
+ *
797
+ * @example
798
+ * ```ts
799
+ * import { aiPlugin } from "@pyreon/zero/ai"
800
+ *
801
+ * export default {
802
+ * plugins: [
803
+ * aiPlugin({
804
+ * name: "My App",
805
+ * origin: "https://example.com",
806
+ * description: "A modern web application",
807
+ * apiDescriptions: {
808
+ * "GET /api/posts": "List blog posts",
809
+ * "GET /api/posts/:id": "Get post by ID",
810
+ * },
811
+ * }),
812
+ * ],
813
+ * }
814
+ * ```
815
+ */
816
+ declare function aiPlugin(config: AiPluginConfig): Plugin;
817
+ //#endregion
394
818
  //#region src/i18n-routing.d.ts
395
819
  interface I18nRoutingConfig {
396
820
  /** Supported locales. e.g. ["en", "de", "cs"] */
@@ -451,5 +875,5 @@ declare function createLocaleContext(locale: string, path: string, config: I18nR
451
875
  */
452
876
  declare function i18nRouting(config: I18nRoutingConfig): Plugin;
453
877
  //#endregion
454
- export { type CreateAppOptions, type CreateServerOptions, type GenerateRouteModuleOptions, bunAdapter, cloudflareAdapter, compose, createApp, createISRHandler, createLocaleContext, createServer, zeroPlugin as default, defineConfig, detectLocaleFromHeader, filePathToUrlPath, generateMiddlewareModule, generateRouteModule, getContext, i18nRouting, netlifyAdapter, nodeAdapter, parseFileRoutes, render404Page, resolveAdapter, resolveConfig, scanRouteFiles, staticAdapter, vercelAdapter };
878
+ export { type AiPluginConfig, type CreateAppOptions, type CreateServerOptions, type FaviconLocaleConfig, type FaviconPluginConfig, type GenerateRouteModuleOptions, type InferJsonLdOptions, type OgImageLayer, type OgImagePluginConfig, type OgImageTemplate, type RobotsConfig, type SeoPluginConfig, type SitemapConfig, aiPlugin, bunAdapter, cloudflareAdapter, compose, createApp, createISRHandler, createLocaleContext, createServer, zeroPlugin as default, defineConfig, detectLocaleFromHeader, faviconLinks, faviconPlugin, filePathToUrlPath, generateLlmsFullTxt, generateLlmsTxt, generateMiddlewareModule, generateRobots, generateRouteModule, generateSitemap, getContext, i18nRouting, inferJsonLd, jsonLd, netlifyAdapter, nodeAdapter, ogImagePath, ogImagePlugin, parseFileRoutes, render404Page, resolveAdapter, resolveConfig, scanRouteFiles, seoMiddleware, seoPlugin, staticAdapter, vercelAdapter };
455
879
  //# sourceMappingURL=server2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/i18n-routing.ts"],"mappings":"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"}
1
+ {"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/favicon.ts","../../../src/seo.ts","../../../src/og-image.ts","../../../src/ai.ts","../../../src/i18n-routing.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/zero",
3
- "version": "0.12.7",
3
+ "version": "0.12.9",
4
4
  "description": "Pyreon Zero — zero-config full-stack framework powered by Pyreon and Vite",
5
5
  "license": "MIT",
6
6
  "author": "Vit Bokisch",
@@ -166,17 +166,17 @@
166
166
  "lint": "oxlint ."
167
167
  },
168
168
  "dependencies": {
169
- "@pyreon/core": "^0.12.7",
170
- "@pyreon/head": "^0.12.7",
171
- "@pyreon/meta": "^0.12.7",
172
- "@pyreon/router": "^0.12.7",
173
- "@pyreon/runtime-dom": "^0.12.7",
174
- "@pyreon/runtime-server": "^0.12.7",
175
- "@pyreon/server": "^0.12.7",
176
- "@pyreon/vite-plugin": "^0.12.7",
169
+ "@pyreon/core": "^0.12.9",
170
+ "@pyreon/head": "^0.12.9",
171
+ "@pyreon/meta": "^0.12.9",
172
+ "@pyreon/router": "^0.12.9",
173
+ "@pyreon/runtime-dom": "^0.12.9",
174
+ "@pyreon/runtime-server": "^0.12.9",
175
+ "@pyreon/server": "^0.12.9",
176
+ "@pyreon/vite-plugin": "^0.12.9",
177
177
  "vite": "^8.0.0"
178
178
  },
179
179
  "peerDependencies": {
180
- "@pyreon/reactivity": "^0.12.7"
180
+ "@pyreon/reactivity": "^0.12.9"
181
181
  }
182
182
  }
package/src/favicon.ts CHANGED
@@ -303,6 +303,19 @@ export function faviconPlugin(config: FaviconPluginConfig): Plugin {
303
303
  injectTo: 'head',
304
304
  })
305
305
 
306
+ // Auto-inject favicon swap script when dark variant exists.
307
+ // This runs in the blocking <head> before any render — no flash.
308
+ // Reads theme from localStorage or OS preference, then swaps
309
+ // data-favicon-theme media attributes.
310
+ if (hasDark) {
311
+ tags.push({
312
+ tag: 'script',
313
+ attrs: {},
314
+ injectTo: 'head',
315
+ children: `(function(){try{var t=localStorage.getItem("zero-theme");var r=t==="light"?"light":t==="dark"?"dark":window.matchMedia("(prefers-color-scheme:dark)").matches?"dark":"light";document.querySelectorAll("[data-favicon-theme]").forEach(function(l){l.media=l.dataset.faviconTheme===r?"":"not all"})}catch(e){}})()`,
316
+ } as any)
317
+ }
318
+
306
319
  return tags
307
320
  },
308
321