@zpress/config 0.4.0 → 0.5.0

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
@@ -624,6 +624,25 @@ export declare interface ZpressConfig {
624
624
  readonly icon?: IconId;
625
625
  readonly tagline?: string;
626
626
  readonly actions?: readonly HeroAction[];
627
+ /**
628
+ * Workspace apps — standalone applications and runnable services (APIs,
629
+ * workers, web apps, and anything that deploys independently).
630
+ * Single source of truth for app metadata used on the home page,
631
+ * landing pages, and introduction page.
632
+ */
633
+ readonly apps?: readonly Workspace[];
634
+ /**
635
+ * Workspace packages — reusable modules shared across the codebase
636
+ * (libraries, utilities, configs, SDKs, and internal tooling).
637
+ * Single source of truth for package metadata used on the home page,
638
+ * landing pages, and introduction page.
639
+ */
640
+ readonly packages?: readonly Workspace[];
641
+ /**
642
+ * Custom workspace groups — arbitrary named groups of workspace items.
643
+ * Each group receives the same card/landing-page treatment as apps and packages.
644
+ * Rendered after apps and packages, in array order.
645
+ */
627
646
  readonly workspaces?: readonly WorkspaceCategory[];
628
647
  readonly features?: readonly Feature[];
629
648
  readonly sidebar?: SidebarConfig;
@@ -810,6 +829,378 @@ export declare const zpressConfigSchema: z.ZodObject<{
810
829
  }>>;
811
830
  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
831
  tagline: z.ZodOptional<z.ZodString>;
832
+ apps: z.ZodOptional<z.ZodArray<z.ZodObject<{
833
+ title: z.ZodUnion<[z.ZodString, z.ZodObject<{
834
+ from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
835
+ transform: z.ZodOptional<z.ZodType<(text: string, slug: string) => string, z.ZodTypeDef, (text: string, slug: string) => string>>;
836
+ }, "strict", z.ZodTypeAny, {
837
+ from: "auto" | "filename" | "heading" | "frontmatter";
838
+ transform?: ((text: string, slug: string) => string) | undefined;
839
+ }, {
840
+ from: "auto" | "filename" | "heading" | "frontmatter";
841
+ transform?: ((text: string, slug: string) => string) | undefined;
842
+ }>]>;
843
+ 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<{
844
+ 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}`>;
845
+ color: z.ZodString;
846
+ }, "strict", z.ZodTypeAny, {
847
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
848
+ color: string;
849
+ }, {
850
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
851
+ color: string;
852
+ }>]>>;
853
+ description: z.ZodString;
854
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
855
+ badge: z.ZodOptional<z.ZodObject<{
856
+ src: z.ZodString;
857
+ alt: z.ZodString;
858
+ }, "strict", z.ZodTypeAny, {
859
+ alt: string;
860
+ src: string;
861
+ }, {
862
+ alt: string;
863
+ src: string;
864
+ }>>;
865
+ path: z.ZodString;
866
+ include: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
867
+ items: z.ZodOptional<z.ZodArray<z.ZodType<Section, z.ZodTypeDef, Section>, "many">>;
868
+ sort: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["default", "alpha", "filename"]>, z.ZodType<(a: ResolvedPage, b: ResolvedPage) => number, z.ZodTypeDef, (a: ResolvedPage, b: ResolvedPage) => number>]>>;
869
+ exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
870
+ recursive: z.ZodOptional<z.ZodBoolean>;
871
+ entryFile: z.ZodOptional<z.ZodString>;
872
+ frontmatter: z.ZodOptional<z.ZodObject<{
873
+ title: z.ZodOptional<z.ZodString>;
874
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
875
+ description: z.ZodOptional<z.ZodString>;
876
+ layout: z.ZodOptional<z.ZodString>;
877
+ sidebar: z.ZodOptional<z.ZodBoolean>;
878
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
879
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
880
+ navbar: z.ZodOptional<z.ZodBoolean>;
881
+ editLink: z.ZodOptional<z.ZodBoolean>;
882
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
883
+ footer: z.ZodOptional<z.ZodBoolean>;
884
+ pageClass: z.ZodOptional<z.ZodString>;
885
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
886
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
887
+ title: z.ZodOptional<z.ZodString>;
888
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
889
+ description: z.ZodOptional<z.ZodString>;
890
+ layout: z.ZodOptional<z.ZodString>;
891
+ sidebar: z.ZodOptional<z.ZodBoolean>;
892
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
893
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
894
+ navbar: z.ZodOptional<z.ZodBoolean>;
895
+ editLink: z.ZodOptional<z.ZodBoolean>;
896
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
897
+ footer: z.ZodOptional<z.ZodBoolean>;
898
+ pageClass: z.ZodOptional<z.ZodString>;
899
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
900
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
901
+ title: z.ZodOptional<z.ZodString>;
902
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
903
+ description: z.ZodOptional<z.ZodString>;
904
+ layout: z.ZodOptional<z.ZodString>;
905
+ sidebar: z.ZodOptional<z.ZodBoolean>;
906
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
907
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
908
+ navbar: z.ZodOptional<z.ZodBoolean>;
909
+ editLink: z.ZodOptional<z.ZodBoolean>;
910
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
911
+ footer: z.ZodOptional<z.ZodBoolean>;
912
+ pageClass: z.ZodOptional<z.ZodString>;
913
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
914
+ }, z.ZodTypeAny, "passthrough">>>;
915
+ openapi: z.ZodOptional<z.ZodObject<{
916
+ spec: z.ZodString;
917
+ path: z.ZodString;
918
+ title: z.ZodOptional<z.ZodString>;
919
+ sidebarLayout: z.ZodOptional<z.ZodEnum<["method-path", "title"]>>;
920
+ }, "strict", z.ZodTypeAny, {
921
+ path: string;
922
+ spec: string;
923
+ title?: string | undefined;
924
+ sidebarLayout?: "title" | "method-path" | undefined;
925
+ }, {
926
+ path: string;
927
+ spec: string;
928
+ title?: string | undefined;
929
+ sidebarLayout?: "title" | "method-path" | undefined;
930
+ }>>;
931
+ }, "strict", z.ZodTypeAny, {
932
+ title: string | {
933
+ from: "auto" | "filename" | "heading" | "frontmatter";
934
+ transform?: ((text: string, slug: string) => string) | undefined;
935
+ };
936
+ description: string;
937
+ path: string;
938
+ frontmatter?: z.objectOutputType<{
939
+ title: z.ZodOptional<z.ZodString>;
940
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
941
+ description: z.ZodOptional<z.ZodString>;
942
+ layout: z.ZodOptional<z.ZodString>;
943
+ sidebar: z.ZodOptional<z.ZodBoolean>;
944
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
945
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
946
+ navbar: z.ZodOptional<z.ZodBoolean>;
947
+ editLink: z.ZodOptional<z.ZodBoolean>;
948
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
949
+ footer: z.ZodOptional<z.ZodBoolean>;
950
+ pageClass: z.ZodOptional<z.ZodString>;
951
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
952
+ }, z.ZodTypeAny, "passthrough"> | undefined;
953
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
954
+ items?: Section[] | undefined;
955
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
956
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
957
+ color: string;
958
+ } | undefined;
959
+ tags?: string[] | undefined;
960
+ badge?: {
961
+ alt: string;
962
+ src: string;
963
+ } | undefined;
964
+ include?: string | string[] | undefined;
965
+ exclude?: string[] | undefined;
966
+ recursive?: boolean | undefined;
967
+ entryFile?: string | undefined;
968
+ openapi?: {
969
+ path: string;
970
+ spec: string;
971
+ title?: string | undefined;
972
+ sidebarLayout?: "title" | "method-path" | undefined;
973
+ } | undefined;
974
+ }, {
975
+ title: string | {
976
+ from: "auto" | "filename" | "heading" | "frontmatter";
977
+ transform?: ((text: string, slug: string) => string) | undefined;
978
+ };
979
+ description: string;
980
+ path: string;
981
+ frontmatter?: z.objectInputType<{
982
+ title: z.ZodOptional<z.ZodString>;
983
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
984
+ description: z.ZodOptional<z.ZodString>;
985
+ layout: z.ZodOptional<z.ZodString>;
986
+ sidebar: z.ZodOptional<z.ZodBoolean>;
987
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
988
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
989
+ navbar: z.ZodOptional<z.ZodBoolean>;
990
+ editLink: z.ZodOptional<z.ZodBoolean>;
991
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
992
+ footer: z.ZodOptional<z.ZodBoolean>;
993
+ pageClass: z.ZodOptional<z.ZodString>;
994
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
995
+ }, z.ZodTypeAny, "passthrough"> | undefined;
996
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
997
+ items?: Section[] | undefined;
998
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
999
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1000
+ color: string;
1001
+ } | undefined;
1002
+ tags?: string[] | undefined;
1003
+ badge?: {
1004
+ alt: string;
1005
+ src: string;
1006
+ } | undefined;
1007
+ include?: string | string[] | undefined;
1008
+ exclude?: string[] | undefined;
1009
+ recursive?: boolean | undefined;
1010
+ entryFile?: string | undefined;
1011
+ openapi?: {
1012
+ path: string;
1013
+ spec: string;
1014
+ title?: string | undefined;
1015
+ sidebarLayout?: "title" | "method-path" | undefined;
1016
+ } | undefined;
1017
+ }>, "many">>;
1018
+ packages: z.ZodOptional<z.ZodArray<z.ZodObject<{
1019
+ title: z.ZodUnion<[z.ZodString, z.ZodObject<{
1020
+ from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
1021
+ transform: z.ZodOptional<z.ZodType<(text: string, slug: string) => string, z.ZodTypeDef, (text: string, slug: string) => string>>;
1022
+ }, "strict", z.ZodTypeAny, {
1023
+ from: "auto" | "filename" | "heading" | "frontmatter";
1024
+ transform?: ((text: string, slug: string) => string) | undefined;
1025
+ }, {
1026
+ from: "auto" | "filename" | "heading" | "frontmatter";
1027
+ transform?: ((text: string, slug: string) => string) | undefined;
1028
+ }>]>;
1029
+ 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<{
1030
+ 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}`>;
1031
+ color: z.ZodString;
1032
+ }, "strict", z.ZodTypeAny, {
1033
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1034
+ color: string;
1035
+ }, {
1036
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1037
+ color: string;
1038
+ }>]>>;
1039
+ description: z.ZodString;
1040
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1041
+ badge: z.ZodOptional<z.ZodObject<{
1042
+ src: z.ZodString;
1043
+ alt: z.ZodString;
1044
+ }, "strict", z.ZodTypeAny, {
1045
+ alt: string;
1046
+ src: string;
1047
+ }, {
1048
+ alt: string;
1049
+ src: string;
1050
+ }>>;
1051
+ path: z.ZodString;
1052
+ include: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
1053
+ items: z.ZodOptional<z.ZodArray<z.ZodType<Section, z.ZodTypeDef, Section>, "many">>;
1054
+ sort: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["default", "alpha", "filename"]>, z.ZodType<(a: ResolvedPage, b: ResolvedPage) => number, z.ZodTypeDef, (a: ResolvedPage, b: ResolvedPage) => number>]>>;
1055
+ exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1056
+ recursive: z.ZodOptional<z.ZodBoolean>;
1057
+ entryFile: z.ZodOptional<z.ZodString>;
1058
+ frontmatter: z.ZodOptional<z.ZodObject<{
1059
+ title: z.ZodOptional<z.ZodString>;
1060
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1061
+ description: z.ZodOptional<z.ZodString>;
1062
+ layout: z.ZodOptional<z.ZodString>;
1063
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1064
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1065
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1066
+ navbar: z.ZodOptional<z.ZodBoolean>;
1067
+ editLink: z.ZodOptional<z.ZodBoolean>;
1068
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1069
+ footer: z.ZodOptional<z.ZodBoolean>;
1070
+ pageClass: z.ZodOptional<z.ZodString>;
1071
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1072
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1073
+ title: z.ZodOptional<z.ZodString>;
1074
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1075
+ description: z.ZodOptional<z.ZodString>;
1076
+ layout: z.ZodOptional<z.ZodString>;
1077
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1078
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1079
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1080
+ navbar: z.ZodOptional<z.ZodBoolean>;
1081
+ editLink: z.ZodOptional<z.ZodBoolean>;
1082
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1083
+ footer: z.ZodOptional<z.ZodBoolean>;
1084
+ pageClass: z.ZodOptional<z.ZodString>;
1085
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1086
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1087
+ title: z.ZodOptional<z.ZodString>;
1088
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1089
+ description: z.ZodOptional<z.ZodString>;
1090
+ layout: z.ZodOptional<z.ZodString>;
1091
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1092
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1093
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1094
+ navbar: z.ZodOptional<z.ZodBoolean>;
1095
+ editLink: z.ZodOptional<z.ZodBoolean>;
1096
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1097
+ footer: z.ZodOptional<z.ZodBoolean>;
1098
+ pageClass: z.ZodOptional<z.ZodString>;
1099
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1100
+ }, z.ZodTypeAny, "passthrough">>>;
1101
+ openapi: z.ZodOptional<z.ZodObject<{
1102
+ spec: z.ZodString;
1103
+ path: z.ZodString;
1104
+ title: z.ZodOptional<z.ZodString>;
1105
+ sidebarLayout: z.ZodOptional<z.ZodEnum<["method-path", "title"]>>;
1106
+ }, "strict", z.ZodTypeAny, {
1107
+ path: string;
1108
+ spec: string;
1109
+ title?: string | undefined;
1110
+ sidebarLayout?: "title" | "method-path" | undefined;
1111
+ }, {
1112
+ path: string;
1113
+ spec: string;
1114
+ title?: string | undefined;
1115
+ sidebarLayout?: "title" | "method-path" | undefined;
1116
+ }>>;
1117
+ }, "strict", z.ZodTypeAny, {
1118
+ title: string | {
1119
+ from: "auto" | "filename" | "heading" | "frontmatter";
1120
+ transform?: ((text: string, slug: string) => string) | undefined;
1121
+ };
1122
+ description: string;
1123
+ path: string;
1124
+ frontmatter?: z.objectOutputType<{
1125
+ title: z.ZodOptional<z.ZodString>;
1126
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1127
+ description: z.ZodOptional<z.ZodString>;
1128
+ layout: z.ZodOptional<z.ZodString>;
1129
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1130
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1131
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1132
+ navbar: z.ZodOptional<z.ZodBoolean>;
1133
+ editLink: z.ZodOptional<z.ZodBoolean>;
1134
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1135
+ footer: z.ZodOptional<z.ZodBoolean>;
1136
+ pageClass: z.ZodOptional<z.ZodString>;
1137
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1138
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1139
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1140
+ items?: Section[] | undefined;
1141
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1142
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1143
+ color: string;
1144
+ } | undefined;
1145
+ tags?: string[] | undefined;
1146
+ badge?: {
1147
+ alt: string;
1148
+ src: string;
1149
+ } | undefined;
1150
+ include?: string | string[] | undefined;
1151
+ exclude?: string[] | undefined;
1152
+ recursive?: boolean | undefined;
1153
+ entryFile?: string | undefined;
1154
+ openapi?: {
1155
+ path: string;
1156
+ spec: string;
1157
+ title?: string | undefined;
1158
+ sidebarLayout?: "title" | "method-path" | undefined;
1159
+ } | undefined;
1160
+ }, {
1161
+ title: string | {
1162
+ from: "auto" | "filename" | "heading" | "frontmatter";
1163
+ transform?: ((text: string, slug: string) => string) | undefined;
1164
+ };
1165
+ description: string;
1166
+ path: string;
1167
+ frontmatter?: z.objectInputType<{
1168
+ title: z.ZodOptional<z.ZodString>;
1169
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1170
+ description: z.ZodOptional<z.ZodString>;
1171
+ layout: z.ZodOptional<z.ZodString>;
1172
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1173
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1174
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1175
+ navbar: z.ZodOptional<z.ZodBoolean>;
1176
+ editLink: z.ZodOptional<z.ZodBoolean>;
1177
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1178
+ footer: z.ZodOptional<z.ZodBoolean>;
1179
+ pageClass: z.ZodOptional<z.ZodString>;
1180
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1181
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1182
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1183
+ items?: Section[] | undefined;
1184
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1185
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1186
+ color: string;
1187
+ } | undefined;
1188
+ tags?: string[] | undefined;
1189
+ badge?: {
1190
+ alt: string;
1191
+ src: string;
1192
+ } | undefined;
1193
+ include?: string | string[] | undefined;
1194
+ exclude?: string[] | undefined;
1195
+ recursive?: boolean | undefined;
1196
+ entryFile?: string | undefined;
1197
+ openapi?: {
1198
+ path: string;
1199
+ spec: string;
1200
+ title?: string | undefined;
1201
+ sidebarLayout?: "title" | "method-path" | undefined;
1202
+ } | undefined;
1203
+ }>, "many">>;
813
1204
  workspaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
814
1205
  title: z.ZodUnion<[z.ZodString, z.ZodObject<{
815
1206
  from: z.ZodEnum<["auto", "filename", "heading", "frontmatter"]>;
@@ -1565,6 +1956,94 @@ export declare const zpressConfigSchema: z.ZodObject<{
1565
1956
  } | undefined;
1566
1957
  } | undefined;
1567
1958
  tagline?: string | undefined;
1959
+ apps?: {
1960
+ title: string | {
1961
+ from: "auto" | "filename" | "heading" | "frontmatter";
1962
+ transform?: ((text: string, slug: string) => string) | undefined;
1963
+ };
1964
+ description: string;
1965
+ path: string;
1966
+ frontmatter?: z.objectOutputType<{
1967
+ title: z.ZodOptional<z.ZodString>;
1968
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1969
+ description: z.ZodOptional<z.ZodString>;
1970
+ layout: z.ZodOptional<z.ZodString>;
1971
+ sidebar: z.ZodOptional<z.ZodBoolean>;
1972
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
1973
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
1974
+ navbar: z.ZodOptional<z.ZodBoolean>;
1975
+ editLink: z.ZodOptional<z.ZodBoolean>;
1976
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
1977
+ footer: z.ZodOptional<z.ZodBoolean>;
1978
+ pageClass: z.ZodOptional<z.ZodString>;
1979
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
1980
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1981
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
1982
+ items?: Section[] | undefined;
1983
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
1984
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
1985
+ color: string;
1986
+ } | undefined;
1987
+ tags?: string[] | undefined;
1988
+ badge?: {
1989
+ alt: string;
1990
+ src: string;
1991
+ } | undefined;
1992
+ include?: string | string[] | undefined;
1993
+ exclude?: string[] | undefined;
1994
+ recursive?: boolean | undefined;
1995
+ entryFile?: string | undefined;
1996
+ openapi?: {
1997
+ path: string;
1998
+ spec: string;
1999
+ title?: string | undefined;
2000
+ sidebarLayout?: "title" | "method-path" | undefined;
2001
+ } | undefined;
2002
+ }[] | undefined;
2003
+ packages?: {
2004
+ title: string | {
2005
+ from: "auto" | "filename" | "heading" | "frontmatter";
2006
+ transform?: ((text: string, slug: string) => string) | undefined;
2007
+ };
2008
+ description: string;
2009
+ path: string;
2010
+ frontmatter?: z.objectOutputType<{
2011
+ title: z.ZodOptional<z.ZodString>;
2012
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2013
+ description: z.ZodOptional<z.ZodString>;
2014
+ layout: z.ZodOptional<z.ZodString>;
2015
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2016
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2017
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2018
+ navbar: z.ZodOptional<z.ZodBoolean>;
2019
+ editLink: z.ZodOptional<z.ZodBoolean>;
2020
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2021
+ footer: z.ZodOptional<z.ZodBoolean>;
2022
+ pageClass: z.ZodOptional<z.ZodString>;
2023
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2024
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2025
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2026
+ items?: Section[] | undefined;
2027
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2028
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2029
+ color: string;
2030
+ } | undefined;
2031
+ tags?: string[] | undefined;
2032
+ badge?: {
2033
+ alt: string;
2034
+ src: string;
2035
+ } | undefined;
2036
+ include?: string | string[] | undefined;
2037
+ exclude?: string[] | undefined;
2038
+ recursive?: boolean | undefined;
2039
+ entryFile?: string | undefined;
2040
+ openapi?: {
2041
+ path: string;
2042
+ spec: string;
2043
+ title?: string | undefined;
2044
+ sidebarLayout?: "title" | "method-path" | undefined;
2045
+ } | undefined;
2046
+ }[] | undefined;
1568
2047
  actions?: {
1569
2048
  link: string;
1570
2049
  text: string;
@@ -1736,6 +2215,94 @@ export declare const zpressConfigSchema: z.ZodObject<{
1736
2215
  } | undefined;
1737
2216
  } | undefined;
1738
2217
  tagline?: string | undefined;
2218
+ apps?: {
2219
+ title: string | {
2220
+ from: "auto" | "filename" | "heading" | "frontmatter";
2221
+ transform?: ((text: string, slug: string) => string) | undefined;
2222
+ };
2223
+ description: string;
2224
+ path: string;
2225
+ frontmatter?: z.objectInputType<{
2226
+ title: z.ZodOptional<z.ZodString>;
2227
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2228
+ description: z.ZodOptional<z.ZodString>;
2229
+ layout: z.ZodOptional<z.ZodString>;
2230
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2231
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2232
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2233
+ navbar: z.ZodOptional<z.ZodBoolean>;
2234
+ editLink: z.ZodOptional<z.ZodBoolean>;
2235
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2236
+ footer: z.ZodOptional<z.ZodBoolean>;
2237
+ pageClass: z.ZodOptional<z.ZodString>;
2238
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2239
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2240
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2241
+ items?: Section[] | undefined;
2242
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2243
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2244
+ color: string;
2245
+ } | undefined;
2246
+ tags?: string[] | undefined;
2247
+ badge?: {
2248
+ alt: string;
2249
+ src: string;
2250
+ } | undefined;
2251
+ include?: string | string[] | undefined;
2252
+ exclude?: string[] | undefined;
2253
+ recursive?: boolean | undefined;
2254
+ entryFile?: string | undefined;
2255
+ openapi?: {
2256
+ path: string;
2257
+ spec: string;
2258
+ title?: string | undefined;
2259
+ sidebarLayout?: "title" | "method-path" | undefined;
2260
+ } | undefined;
2261
+ }[] | undefined;
2262
+ packages?: {
2263
+ title: string | {
2264
+ from: "auto" | "filename" | "heading" | "frontmatter";
2265
+ transform?: ((text: string, slug: string) => string) | undefined;
2266
+ };
2267
+ description: string;
2268
+ path: string;
2269
+ frontmatter?: z.objectInputType<{
2270
+ title: z.ZodOptional<z.ZodString>;
2271
+ titleTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
2272
+ description: z.ZodOptional<z.ZodString>;
2273
+ layout: z.ZodOptional<z.ZodString>;
2274
+ sidebar: z.ZodOptional<z.ZodBoolean>;
2275
+ aside: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"left">]>>;
2276
+ outline: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodLiteral<"deep">]>>;
2277
+ navbar: z.ZodOptional<z.ZodBoolean>;
2278
+ editLink: z.ZodOptional<z.ZodBoolean>;
2279
+ lastUpdated: z.ZodOptional<z.ZodBoolean>;
2280
+ footer: z.ZodOptional<z.ZodBoolean>;
2281
+ pageClass: z.ZodOptional<z.ZodString>;
2282
+ head: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>], null>, "many">>;
2283
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2284
+ sort?: "filename" | "default" | "alpha" | ((a: ResolvedPage, b: ResolvedPage) => number) | undefined;
2285
+ items?: Section[] | undefined;
2286
+ icon?: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}` | {
2287
+ id: `catppuccin:${string}` | `devicon:${string}` | `logos:${string}` | `material-icon-theme:${string}` | `mdi:${string}` | `pixelarticons:${string}` | `simple-icons:${string}` | `skill-icons:${string}` | `vscode-icons:${string}`;
2288
+ color: string;
2289
+ } | undefined;
2290
+ tags?: string[] | undefined;
2291
+ badge?: {
2292
+ alt: string;
2293
+ src: string;
2294
+ } | undefined;
2295
+ include?: string | string[] | undefined;
2296
+ exclude?: string[] | undefined;
2297
+ recursive?: boolean | undefined;
2298
+ entryFile?: string | undefined;
2299
+ openapi?: {
2300
+ path: string;
2301
+ spec: string;
2302
+ title?: string | undefined;
2303
+ sidebarLayout?: "title" | "method-path" | undefined;
2304
+ } | undefined;
2305
+ }[] | undefined;
1739
2306
  actions?: {
1740
2307
  link: string;
1741
2308
  text: string;
package/dist/index.mjs CHANGED
@@ -290,6 +290,8 @@ const zpressConfigSchema = z.object({
290
290
  theme: themeConfigSchema.optional(),
291
291
  icon: iconIdSchema.optional(),
292
292
  tagline: z.string().optional(),
293
+ apps: z.array(workspaceItemSchema).optional(),
294
+ packages: z.array(workspaceItemSchema).optional(),
293
295
  workspaces: z.array(workspaceGroupSchema).optional(),
294
296
  features: z.array(featureSchema).optional(),
295
297
  actions: z.array(heroActionSchema).optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zpress/config",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Configuration loading and validation for zpress",
5
5
  "keywords": [
6
6
  "config",
@@ -40,14 +40,14 @@
40
40
  "ts-pattern": "^5.9.0",
41
41
  "type-fest": "^5.5.0",
42
42
  "zod": "^4.3.6",
43
- "@zpress/theme": "0.3.1"
43
+ "@zpress/theme": "0.3.2"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@rslib/core": "^0.20.0",
47
47
  "@types/node": "^25.5.0",
48
48
  "tsx": "^4.21.0",
49
- "typescript": "^5.9.3",
50
- "vitest": "^4.1.0",
49
+ "typescript": "^6.0.2",
50
+ "vitest": "^4.1.1",
51
51
  "zod-to-json-schema": "^3.25.1"
52
52
  },
53
53
  "engines": {