@zpress/config 0.4.0 → 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/index.d.ts CHANGED
@@ -82,6 +82,26 @@ export declare type ConfigErrorType = 'not_found' | 'parse_error' | 'validation_
82
82
 
83
83
  export declare type ConfigResult<T> = Result<T, ConfigError>;
84
84
 
85
+ /**
86
+ * Non-fatal config issue that may cause unexpected behavior.
87
+ */
88
+ export declare interface ConfigWarning {
89
+ readonly _tag: 'ConfigWarning';
90
+ readonly type: ConfigWarningType;
91
+ readonly message: string;
92
+ }
93
+
94
+ /**
95
+ * Create a ConfigWarning with the given type and message.
96
+ *
97
+ * @param type - The warning type discriminant
98
+ * @param message - Human-readable warning message
99
+ * @returns A ConfigWarning object
100
+ */
101
+ export declare function configWarning(type: ConfigWarningType, message: string): ConfigWarning;
102
+
103
+ export declare type ConfigWarningType = 'duplicate_include_prefix';
104
+
85
105
  /**
86
106
  * Type-safe config helper for zpress.config.ts files.
87
107
  *
@@ -624,6 +644,25 @@ export declare interface ZpressConfig {
624
644
  readonly icon?: IconId;
625
645
  readonly tagline?: string;
626
646
  readonly actions?: readonly HeroAction[];
647
+ /**
648
+ * Workspace apps — standalone applications and runnable services (APIs,
649
+ * workers, web apps, and anything that deploys independently).
650
+ * Single source of truth for app metadata used on the home page,
651
+ * landing pages, and introduction page.
652
+ */
653
+ readonly apps?: readonly Workspace[];
654
+ /**
655
+ * Workspace packages — reusable modules shared across the codebase
656
+ * (libraries, utilities, configs, SDKs, and internal tooling).
657
+ * Single source of truth for package metadata used on the home page,
658
+ * landing pages, and introduction page.
659
+ */
660
+ readonly packages?: readonly Workspace[];
661
+ /**
662
+ * Custom workspace groups — arbitrary named groups of workspace items.
663
+ * Each group receives the same card/landing-page treatment as apps and packages.
664
+ * Rendered after apps and packages, in array order.
665
+ */
627
666
  readonly workspaces?: readonly WorkspaceCategory[];
628
667
  readonly features?: readonly Feature[];
629
668
  readonly sidebar?: SidebarConfig;
@@ -810,6 +849,378 @@ export declare const zpressConfigSchema: z.ZodObject<{
810
849
  }>>;
811
850
  icon: z.ZodOptional<z.ZodType<`catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`, z.ZodTypeDef, `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`>>;
812
851
  tagline: z.ZodOptional<z.ZodString>;
852
+ apps: z.ZodOptional<z.ZodArray<z.ZodObject<{
853
+ title: z.ZodUnion<[z.ZodString, z.ZodObject<{
854
+ from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
855
+ transform: z.ZodOptional<z.ZodType<(text: string, slug: string) => string, z.ZodTypeDef, (text: string, slug: string) => string>>;
856
+ }, "strict", z.ZodTypeAny, {
857
+ from: "auto" | "filename" | "heading" | "frontmatter";
858
+ transform?: ((text: string, slug: string) => string) | undefined;
859
+ }, {
860
+ from: "auto" | "filename" | "heading" | "frontmatter";
861
+ transform?: ((text: string, slug: string) => string) | undefined;
862
+ }>]>;
863
+ icon: z.ZodOptional<z.ZodUnion<[z.ZodType<`catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`, z.ZodTypeDef, `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`>, z.ZodObject<{
864
+ id: z.ZodType<`catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`, z.ZodTypeDef, `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`>;
865
+ color: z.ZodString;
866
+ }, "strict", z.ZodTypeAny, {
867
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
868
+ color: string;
869
+ }, {
870
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
871
+ color: string;
872
+ }>]>>;
873
+ description: z.ZodString;
874
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
875
+ badge: z.ZodOptional<z.ZodObject<{
876
+ src: z.ZodString;
877
+ alt: z.ZodString;
878
+ }, "strict", z.ZodTypeAny, {
879
+ alt: string;
880
+ src: string;
881
+ }, {
882
+ alt: string;
883
+ src: string;
884
+ }>>;
885
+ path: z.ZodString;
886
+ include: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
887
+ items: z.ZodOptional<z.ZodArray<z.ZodType<Section, z.ZodTypeDef, Section>, "many">>;
888
+ sort: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["default", "alpha", "filename"]>, z.ZodType<(a: ResolvedPage, b: ResolvedPage) => number, z.ZodTypeDef, (a: ResolvedPage, b: ResolvedPage) => number>]>>;
889
+ exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
890
+ recursive: z.ZodOptional<z.ZodBoolean>;
891
+ entryFile: z.ZodOptional<z.ZodString>;
892
+ frontmatter: z.ZodOptional<z.ZodObject<{
893
+ title: z.ZodOptional<z.ZodString>;
894
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
895
+ description: z.ZodOptional<z.ZodString>;
896
+ layout: z.ZodOptional<z.ZodString>;
897
+ sidebar: z.ZodOptional<z.ZodBoolean>;
898
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
899
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
900
+ navbar: z.ZodOptional<z.ZodBoolean>;
901
+ editLink: z.ZodOptional<z.ZodBoolean>;
902
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
903
+ footer: z.ZodOptional<z.ZodBoolean>;
904
+ pageClass: z.ZodOptional<z.ZodString>;
905
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
906
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
907
+ title: z.ZodOptional<z.ZodString>;
908
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
909
+ description: z.ZodOptional<z.ZodString>;
910
+ layout: z.ZodOptional<z.ZodString>;
911
+ sidebar: z.ZodOptional<z.ZodBoolean>;
912
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
913
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
914
+ navbar: z.ZodOptional<z.ZodBoolean>;
915
+ editLink: z.ZodOptional<z.ZodBoolean>;
916
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
917
+ footer: z.ZodOptional<z.ZodBoolean>;
918
+ pageClass: z.ZodOptional<z.ZodString>;
919
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
920
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
921
+ title: z.ZodOptional<z.ZodString>;
922
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
923
+ description: z.ZodOptional<z.ZodString>;
924
+ layout: z.ZodOptional<z.ZodString>;
925
+ sidebar: z.ZodOptional<z.ZodBoolean>;
926
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
927
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
928
+ navbar: z.ZodOptional<z.ZodBoolean>;
929
+ editLink: z.ZodOptional<z.ZodBoolean>;
930
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
931
+ footer: z.ZodOptional<z.ZodBoolean>;
932
+ pageClass: z.ZodOptional<z.ZodString>;
933
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
934
+ }, z.ZodTypeAny, "passthrough">>>;
935
+ openapi: z.ZodOptional<z.ZodObject<{
936
+ spec: z.ZodString;
937
+ path: z.ZodString;
938
+ title: z.ZodOptional<z.ZodString>;
939
+ sidebarLayout: z.ZodOptional<z.ZodEnum<["method-path", "title"]>>;
940
+ }, "strict", z.ZodTypeAny, {
941
+ path: string;
942
+ spec: string;
943
+ title?: string | undefined;
944
+ sidebarLayout?: "title" | "method-path" | undefined;
945
+ }, {
946
+ path: string;
947
+ spec: string;
948
+ title?: string | undefined;
949
+ sidebarLayout?: "title" | "method-path" | undefined;
950
+ }>>;
951
+ }, "strict", z.ZodTypeAny, {
952
+ title: string | {
953
+ from: "auto" | "filename" | "heading" | "frontmatter";
954
+ transform?: ((text: string, slug: string) => string) | undefined;
955
+ };
956
+ description: string;
957
+ path: string;
958
+ frontmatter?: z.objectOutputType<{
959
+ title: z.ZodOptional<z.ZodString>;
960
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
961
+ description: z.ZodOptional<z.ZodString>;
962
+ layout: z.ZodOptional<z.ZodString>;
963
+ sidebar: z.ZodOptional<z.ZodBoolean>;
964
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
965
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
966
+ navbar: z.ZodOptional<z.ZodBoolean>;
967
+ editLink: z.ZodOptional<z.ZodBoolean>;
968
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
969
+ footer: z.ZodOptional<z.ZodBoolean>;
970
+ pageClass: z.ZodOptional<z.ZodString>;
971
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
972
+ }, z.ZodTypeAny, "passthrough"> | undefined;
973
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
974
+ items?: Section[] | undefined;
975
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
976
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
977
+ color: string;
978
+ } | undefined;
979
+ tags?: string[] | undefined;
980
+ badge?: {
981
+ alt: string;
982
+ src: string;
983
+ } | undefined;
984
+ include?: string | string[] | undefined;
985
+ exclude?: string[] | undefined;
986
+ recursive?: boolean | undefined;
987
+ entryFile?: string | undefined;
988
+ openapi?: {
989
+ path: string;
990
+ spec: string;
991
+ title?: string | undefined;
992
+ sidebarLayout?: "title" | "method-path" | undefined;
993
+ } | undefined;
994
+ }, {
995
+ title: string | {
996
+ from: "auto" | "filename" | "heading" | "frontmatter";
997
+ transform?: ((text: string, slug: string) => string) | undefined;
998
+ };
999
+ description: string;
1000
+ path: string;
1001
+ frontmatter?: z.objectInputType<{
1002
+ title: z.ZodOptional<z.ZodString>;
1003
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1004
+ description: z.ZodOptional<z.ZodString>;
1005
+ layout: z.ZodOptional<z.ZodString>;
1006
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1007
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1008
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1009
+ navbar: z.ZodOptional<z.ZodBoolean>;
1010
+ editLink: z.ZodOptional<z.ZodBoolean>;
1011
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1012
+ footer: z.ZodOptional<z.ZodBoolean>;
1013
+ pageClass: z.ZodOptional<z.ZodString>;
1014
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1015
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1016
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1017
+ items?: Section[] | undefined;
1018
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1019
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1020
+ color: string;
1021
+ } | undefined;
1022
+ tags?: string[] | undefined;
1023
+ badge?: {
1024
+ alt: string;
1025
+ src: string;
1026
+ } | undefined;
1027
+ include?: string | string[] | undefined;
1028
+ exclude?: string[] | undefined;
1029
+ recursive?: boolean | undefined;
1030
+ entryFile?: string | undefined;
1031
+ openapi?: {
1032
+ path: string;
1033
+ spec: string;
1034
+ title?: string | undefined;
1035
+ sidebarLayout?: "title" | "method-path" | undefined;
1036
+ } | undefined;
1037
+ }>, "many">>;
1038
+ packages: z.ZodOptional<z.ZodArray<z.ZodObject<{
1039
+ title: z.ZodUnion<[z.ZodString, z.ZodObject<{
1040
+ from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
1041
+ transform: z.ZodOptional<z.ZodType<(text: string, slug: string) => string, z.ZodTypeDef, (text: string, slug: string) => string>>;
1042
+ }, "strict", z.ZodTypeAny, {
1043
+ from: "auto" | "filename" | "heading" | "frontmatter";
1044
+ transform?: ((text: string, slug: string) => string) | undefined;
1045
+ }, {
1046
+ from: "auto" | "filename" | "heading" | "frontmatter";
1047
+ transform?: ((text: string, slug: string) => string) | undefined;
1048
+ }>]>;
1049
+ icon: z.ZodOptional<z.ZodUnion<[z.ZodType<`catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`, z.ZodTypeDef, `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`>, z.ZodObject<{
1050
+ id: z.ZodType<`catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`, z.ZodTypeDef, `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`>;
1051
+ color: z.ZodString;
1052
+ }, "strict", z.ZodTypeAny, {
1053
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1054
+ color: string;
1055
+ }, {
1056
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1057
+ color: string;
1058
+ }>]>>;
1059
+ description: z.ZodString;
1060
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1061
+ badge: z.ZodOptional<z.ZodObject<{
1062
+ src: z.ZodString;
1063
+ alt: z.ZodString;
1064
+ }, "strict", z.ZodTypeAny, {
1065
+ alt: string;
1066
+ src: string;
1067
+ }, {
1068
+ alt: string;
1069
+ src: string;
1070
+ }>>;
1071
+ path: z.ZodString;
1072
+ include: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
1073
+ items: z.ZodOptional<z.ZodArray<z.ZodType<Section, z.ZodTypeDef, Section>, "many">>;
1074
+ sort: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["default", "alpha", "filename"]>, z.ZodType<(a: ResolvedPage, b: ResolvedPage) => number, z.ZodTypeDef, (a: ResolvedPage, b: ResolvedPage) => number>]>>;
1075
+ exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1076
+ recursive: z.ZodOptional<z.ZodBoolean>;
1077
+ entryFile: z.ZodOptional<z.ZodString>;
1078
+ frontmatter: z.ZodOptional<z.ZodObject<{
1079
+ title: z.ZodOptional<z.ZodString>;
1080
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1081
+ description: z.ZodOptional<z.ZodString>;
1082
+ layout: z.ZodOptional<z.ZodString>;
1083
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1084
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1085
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1086
+ navbar: z.ZodOptional<z.ZodBoolean>;
1087
+ editLink: z.ZodOptional<z.ZodBoolean>;
1088
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1089
+ footer: z.ZodOptional<z.ZodBoolean>;
1090
+ pageClass: z.ZodOptional<z.ZodString>;
1091
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1092
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1093
+ title: z.ZodOptional<z.ZodString>;
1094
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1095
+ description: z.ZodOptional<z.ZodString>;
1096
+ layout: z.ZodOptional<z.ZodString>;
1097
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1098
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1099
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1100
+ navbar: z.ZodOptional<z.ZodBoolean>;
1101
+ editLink: z.ZodOptional<z.ZodBoolean>;
1102
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1103
+ footer: z.ZodOptional<z.ZodBoolean>;
1104
+ pageClass: z.ZodOptional<z.ZodString>;
1105
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1106
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1107
+ title: z.ZodOptional<z.ZodString>;
1108
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1109
+ description: z.ZodOptional<z.ZodString>;
1110
+ layout: z.ZodOptional<z.ZodString>;
1111
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1112
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1113
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1114
+ navbar: z.ZodOptional<z.ZodBoolean>;
1115
+ editLink: z.ZodOptional<z.ZodBoolean>;
1116
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1117
+ footer: z.ZodOptional<z.ZodBoolean>;
1118
+ pageClass: z.ZodOptional<z.ZodString>;
1119
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1120
+ }, z.ZodTypeAny, "passthrough">>>;
1121
+ openapi: z.ZodOptional<z.ZodObject<{
1122
+ spec: z.ZodString;
1123
+ path: z.ZodString;
1124
+ title: z.ZodOptional<z.ZodString>;
1125
+ sidebarLayout: z.ZodOptional<z.ZodEnum<["method-path", "title"]>>;
1126
+ }, "strict", z.ZodTypeAny, {
1127
+ path: string;
1128
+ spec: string;
1129
+ title?: string | undefined;
1130
+ sidebarLayout?: "title" | "method-path" | undefined;
1131
+ }, {
1132
+ path: string;
1133
+ spec: string;
1134
+ title?: string | undefined;
1135
+ sidebarLayout?: "title" | "method-path" | undefined;
1136
+ }>>;
1137
+ }, "strict", z.ZodTypeAny, {
1138
+ title: string | {
1139
+ from: "auto" | "filename" | "heading" | "frontmatter";
1140
+ transform?: ((text: string, slug: string) => string) | undefined;
1141
+ };
1142
+ description: string;
1143
+ path: string;
1144
+ frontmatter?: z.objectOutputType<{
1145
+ title: z.ZodOptional<z.ZodString>;
1146
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1147
+ description: z.ZodOptional<z.ZodString>;
1148
+ layout: z.ZodOptional<z.ZodString>;
1149
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1150
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1151
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1152
+ navbar: z.ZodOptional<z.ZodBoolean>;
1153
+ editLink: z.ZodOptional<z.ZodBoolean>;
1154
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1155
+ footer: z.ZodOptional<z.ZodBoolean>;
1156
+ pageClass: z.ZodOptional<z.ZodString>;
1157
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1158
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1159
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1160
+ items?: Section[] | undefined;
1161
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1162
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1163
+ color: string;
1164
+ } | undefined;
1165
+ tags?: string[] | undefined;
1166
+ badge?: {
1167
+ alt: string;
1168
+ src: string;
1169
+ } | undefined;
1170
+ include?: string | string[] | undefined;
1171
+ exclude?: string[] | undefined;
1172
+ recursive?: boolean | undefined;
1173
+ entryFile?: string | undefined;
1174
+ openapi?: {
1175
+ path: string;
1176
+ spec: string;
1177
+ title?: string | undefined;
1178
+ sidebarLayout?: "title" | "method-path" | undefined;
1179
+ } | undefined;
1180
+ }, {
1181
+ title: string | {
1182
+ from: "auto" | "filename" | "heading" | "frontmatter";
1183
+ transform?: ((text: string, slug: string) => string) | undefined;
1184
+ };
1185
+ description: string;
1186
+ path: string;
1187
+ frontmatter?: z.objectInputType<{
1188
+ title: z.ZodOptional<z.ZodString>;
1189
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1190
+ description: z.ZodOptional<z.ZodString>;
1191
+ layout: z.ZodOptional<z.ZodString>;
1192
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1193
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1194
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1195
+ navbar: z.ZodOptional<z.ZodBoolean>;
1196
+ editLink: z.ZodOptional<z.ZodBoolean>;
1197
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1198
+ footer: z.ZodOptional<z.ZodBoolean>;
1199
+ pageClass: z.ZodOptional<z.ZodString>;
1200
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1201
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1202
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1203
+ items?: Section[] | undefined;
1204
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1205
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1206
+ color: string;
1207
+ } | undefined;
1208
+ tags?: string[] | undefined;
1209
+ badge?: {
1210
+ alt: string;
1211
+ src: string;
1212
+ } | undefined;
1213
+ include?: string | string[] | undefined;
1214
+ exclude?: string[] | undefined;
1215
+ recursive?: boolean | undefined;
1216
+ entryFile?: string | undefined;
1217
+ openapi?: {
1218
+ path: string;
1219
+ spec: string;
1220
+ title?: string | undefined;
1221
+ sidebarLayout?: "title" | "method-path" | undefined;
1222
+ } | undefined;
1223
+ }>, "many">>;
813
1224
  workspaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
814
1225
  title: z.ZodUnion<[z.ZodString, z.ZodObject<{
815
1226
  from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
@@ -1565,6 +1976,94 @@ export declare const zpressConfigSchema: z.ZodObject<{
1565
1976
  } | undefined;
1566
1977
  } | undefined;
1567
1978
  tagline?: string | undefined;
1979
+ apps?: {
1980
+ title: string | {
1981
+ from: "auto" | "filename" | "heading" | "frontmatter";
1982
+ transform?: ((text: string, slug: string) => string) | undefined;
1983
+ };
1984
+ description: string;
1985
+ path: string;
1986
+ frontmatter?: z.objectOutputType<{
1987
+ title: z.ZodOptional<z.ZodString>;
1988
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1989
+ description: z.ZodOptional<z.ZodString>;
1990
+ layout: z.ZodOptional<z.ZodString>;
1991
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1992
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1993
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1994
+ navbar: z.ZodOptional<z.ZodBoolean>;
1995
+ editLink: z.ZodOptional<z.ZodBoolean>;
1996
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1997
+ footer: z.ZodOptional<z.ZodBoolean>;
1998
+ pageClass: z.ZodOptional<z.ZodString>;
1999
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2000
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2001
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2002
+ items?: Section[] | undefined;
2003
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2004
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2005
+ color: string;
2006
+ } | undefined;
2007
+ tags?: string[] | undefined;
2008
+ badge?: {
2009
+ alt: string;
2010
+ src: string;
2011
+ } | undefined;
2012
+ include?: string | string[] | undefined;
2013
+ exclude?: string[] | undefined;
2014
+ recursive?: boolean | undefined;
2015
+ entryFile?: string | undefined;
2016
+ openapi?: {
2017
+ path: string;
2018
+ spec: string;
2019
+ title?: string | undefined;
2020
+ sidebarLayout?: "title" | "method-path" | undefined;
2021
+ } | undefined;
2022
+ }[] | undefined;
2023
+ packages?: {
2024
+ title: string | {
2025
+ from: "auto" | "filename" | "heading" | "frontmatter";
2026
+ transform?: ((text: string, slug: string) => string) | undefined;
2027
+ };
2028
+ description: string;
2029
+ path: string;
2030
+ frontmatter?: z.objectOutputType<{
2031
+ title: z.ZodOptional<z.ZodString>;
2032
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2033
+ description: z.ZodOptional<z.ZodString>;
2034
+ layout: z.ZodOptional<z.ZodString>;
2035
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2036
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2037
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2038
+ navbar: z.ZodOptional<z.ZodBoolean>;
2039
+ editLink: z.ZodOptional<z.ZodBoolean>;
2040
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2041
+ footer: z.ZodOptional<z.ZodBoolean>;
2042
+ pageClass: z.ZodOptional<z.ZodString>;
2043
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2044
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2045
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2046
+ items?: Section[] | undefined;
2047
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2048
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2049
+ color: string;
2050
+ } | undefined;
2051
+ tags?: string[] | undefined;
2052
+ badge?: {
2053
+ alt: string;
2054
+ src: string;
2055
+ } | undefined;
2056
+ include?: string | string[] | undefined;
2057
+ exclude?: string[] | undefined;
2058
+ recursive?: boolean | undefined;
2059
+ entryFile?: string | undefined;
2060
+ openapi?: {
2061
+ path: string;
2062
+ spec: string;
2063
+ title?: string | undefined;
2064
+ sidebarLayout?: "title" | "method-path" | undefined;
2065
+ } | undefined;
2066
+ }[] | undefined;
1568
2067
  actions?: {
1569
2068
  link: string;
1570
2069
  text: string;
@@ -1736,6 +2235,94 @@ export declare const zpressConfigSchema: z.ZodObject<{
1736
2235
  } | undefined;
1737
2236
  } | undefined;
1738
2237
  tagline?: string | undefined;
2238
+ apps?: {
2239
+ title: string | {
2240
+ from: "auto" | "filename" | "heading" | "frontmatter";
2241
+ transform?: ((text: string, slug: string) => string) | undefined;
2242
+ };
2243
+ description: string;
2244
+ path: string;
2245
+ frontmatter?: z.objectInputType<{
2246
+ title: z.ZodOptional<z.ZodString>;
2247
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2248
+ description: z.ZodOptional<z.ZodString>;
2249
+ layout: z.ZodOptional<z.ZodString>;
2250
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2251
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2252
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2253
+ navbar: z.ZodOptional<z.ZodBoolean>;
2254
+ editLink: z.ZodOptional<z.ZodBoolean>;
2255
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2256
+ footer: z.ZodOptional<z.ZodBoolean>;
2257
+ pageClass: z.ZodOptional<z.ZodString>;
2258
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2259
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2260
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2261
+ items?: Section[] | undefined;
2262
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2263
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2264
+ color: string;
2265
+ } | undefined;
2266
+ tags?: string[] | undefined;
2267
+ badge?: {
2268
+ alt: string;
2269
+ src: string;
2270
+ } | undefined;
2271
+ include?: string | string[] | undefined;
2272
+ exclude?: string[] | undefined;
2273
+ recursive?: boolean | undefined;
2274
+ entryFile?: string | undefined;
2275
+ openapi?: {
2276
+ path: string;
2277
+ spec: string;
2278
+ title?: string | undefined;
2279
+ sidebarLayout?: "title" | "method-path" | undefined;
2280
+ } | undefined;
2281
+ }[] | undefined;
2282
+ packages?: {
2283
+ title: string | {
2284
+ from: "auto" | "filename" | "heading" | "frontmatter";
2285
+ transform?: ((text: string, slug: string) => string) | undefined;
2286
+ };
2287
+ description: string;
2288
+ path: string;
2289
+ frontmatter?: z.objectInputType<{
2290
+ title: z.ZodOptional<z.ZodString>;
2291
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2292
+ description: z.ZodOptional<z.ZodString>;
2293
+ layout: z.ZodOptional<z.ZodString>;
2294
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2295
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2296
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2297
+ navbar: z.ZodOptional<z.ZodBoolean>;
2298
+ editLink: z.ZodOptional<z.ZodBoolean>;
2299
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2300
+ footer: z.ZodOptional<z.ZodBoolean>;
2301
+ pageClass: z.ZodOptional<z.ZodString>;
2302
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2303
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2304
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2305
+ items?: Section[] | undefined;
2306
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2307
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2308
+ color: string;
2309
+ } | undefined;
2310
+ tags?: string[] | undefined;
2311
+ badge?: {
2312
+ alt: string;
2313
+ src: string;
2314
+ } | undefined;
2315
+ include?: string | string[] | undefined;
2316
+ exclude?: string[] | undefined;
2317
+ recursive?: boolean | undefined;
2318
+ entryFile?: string | undefined;
2319
+ openapi?: {
2320
+ path: string;
2321
+ spec: string;
2322
+ title?: string | undefined;
2323
+ sidebarLayout?: "title" | "method-path" | undefined;
2324
+ } | undefined;
2325
+ }[] | undefined;
1739
2326
  actions?: {
1740
2327
  link: string;
1741
2328
  text: string;
package/dist/index.mjs CHANGED
@@ -10,6 +10,13 @@ function configError(type, message) {
10
10
  message
11
11
  };
12
12
  }
13
+ function configWarning(type, message) {
14
+ return {
15
+ _tag: 'ConfigWarning',
16
+ type,
17
+ message
18
+ };
19
+ }
13
20
  function configErrorFromZod(zodError) {
14
21
  return {
15
22
  _tag: 'ConfigError',
@@ -290,6 +297,8 @@ const zpressConfigSchema = z.object({
290
297
  theme: themeConfigSchema.optional(),
291
298
  icon: iconIdSchema.optional(),
292
299
  tagline: z.string().optional(),
300
+ apps: z.array(workspaceItemSchema).optional(),
301
+ packages: z.array(workspaceItemSchema).optional(),
293
302
  workspaces: z.array(workspaceGroupSchema).optional(),
294
303
  features: z.array(featureSchema).optional(),
295
304
  actions: z.array(heroActionSchema).optional(),
@@ -375,4 +384,4 @@ function getErrorMessage(error) {
375
384
  return String(error);
376
385
  }
377
386
  export { COLOR_MODES, ICON_COLORS, THEME_NAMES, isBuiltInIconColor, isBuiltInTheme, resolveDefaultColorMode } from "@zpress/theme";
378
- export { configError, configErrorFromZod, defineConfig, loader_loadConfig as loadConfig, pathsSchema, validateConfig, zpressConfigSchema };
387
+ export { configError, configErrorFromZod, configWarning, defineConfig, loader_loadConfig as loadConfig, pathsSchema, validateConfig, zpressConfigSchema };