@lupinum/ginko 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.
Files changed (89) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +2 -2
  3. package/dist/basics.d.mts +492 -0
  4. package/dist/basics.d.ts +492 -0
  5. package/dist/basics.mjs +416 -0
  6. package/dist/cli/index.mjs +54 -55
  7. package/dist/index.d.mts +5 -4
  8. package/dist/index.d.ts +5 -4
  9. package/dist/index.mjs +3 -3
  10. package/dist/internal/search.mjs +6 -3
  11. package/dist/internal.d.mts +387 -41
  12. package/dist/internal.d.ts +387 -41
  13. package/dist/internal.mjs +267 -101
  14. package/dist/nuxt/module.d.mts +2 -2
  15. package/dist/nuxt/module.d.ts +2 -2
  16. package/dist/nuxt/module.mjs +105 -13
  17. package/dist/nuxt/runtime/GinkoImage.d.mts +1 -1
  18. package/dist/nuxt/runtime/GinkoMarkdown.mjs +2 -2
  19. package/dist/nuxt/runtime/composables.d.mts +4 -3
  20. package/dist/nuxt/runtime/composables.mjs +19 -15
  21. package/dist/nuxt/runtime/fetch.d.mts +3 -1
  22. package/dist/nuxt/runtime/fetch.mjs +12 -6
  23. package/dist/nuxt/runtime/markdown.d.mts +3 -0
  24. package/dist/nuxt/runtime/markdown.mjs +15 -3
  25. package/dist/nuxt/runtime/plugin.mjs +6 -35
  26. package/dist/nuxt/runtime/preview-listener.d.mts +13 -0
  27. package/dist/nuxt/runtime/preview-listener.mjs +37 -0
  28. package/dist/nuxt/runtime/preview.vue +3 -1
  29. package/dist/nuxt/runtime/schema.d.ts +6 -0
  30. package/dist/nuxt/runtime/server/bundles.d.ts +4 -0
  31. package/dist/nuxt/runtime/server/files-md.d.ts +2 -0
  32. package/dist/nuxt/runtime/server/files.d.ts +2 -0
  33. package/dist/nuxt/runtime/server/headers.d.ts +2 -0
  34. package/dist/nuxt/runtime/server/items.d.mts +12 -0
  35. package/dist/nuxt/runtime/server/items.d.ts +12 -0
  36. package/dist/nuxt/runtime/server/items.mjs +17 -0
  37. package/dist/nuxt/runtime/server/llms-full.d.ts +2 -0
  38. package/dist/nuxt/runtime/server/llms.d.ts +2 -0
  39. package/dist/nuxt/runtime/server/markdown-trees.d.ts +2 -0
  40. package/dist/nuxt/runtime/server/markdown.d.ts +2 -0
  41. package/dist/nuxt/runtime/server/markdown.mjs +1 -1
  42. package/dist/nuxt/runtime/server/platform-md.d.mts +3 -0
  43. package/dist/nuxt/runtime/server/platform-md.d.ts +3 -0
  44. package/dist/nuxt/runtime/server/platform-md.mjs +71 -0
  45. package/dist/nuxt/runtime/server/redirects.d.ts +2 -0
  46. package/dist/nuxt/runtime/server/robots.d.ts +2 -0
  47. package/dist/nuxt/runtime/server/search.d.ts +2 -0
  48. package/dist/nuxt/runtime/server/site-config.d.ts +14 -0
  49. package/dist/nuxt/runtime/server/sitemap-source.d.ts +2 -0
  50. package/dist/nuxt/runtime/server/sitemap-xml.d.ts +24 -0
  51. package/dist/nuxt/runtime/server/sitemap.d.ts +2 -0
  52. package/dist/nuxt/runtime/shared.d.mts +10 -3
  53. package/dist/nuxt/runtime/shared.mjs +2 -2
  54. package/dist/shared/ginko.1wwZv4B_.d.ts +1622 -0
  55. package/dist/shared/{ginko.BBkZW2nW.d.ts → ginko.6cI8KXZP.d.mts} +2 -2
  56. package/dist/shared/{ginko.CQvxhyez.mjs → ginko.AprJymER.mjs} +30 -1
  57. package/dist/shared/ginko.BNVC-g9n.mjs +10389 -0
  58. package/dist/shared/{ginko.Bwan3BB-.d.mts → ginko.B_pACpVU.d.ts} +2 -2
  59. package/dist/shared/{ginko.CrNRBkS5.mjs → ginko.C4gcOovG.mjs} +253 -309
  60. package/dist/shared/{ginko.C90fPpMP.mjs → ginko.CXA2R3aS.mjs} +128 -101
  61. package/dist/shared/ginko.CjWB8N7f.d.ts +128 -0
  62. package/dist/shared/ginko.D1PeQ3ds.mjs +36 -0
  63. package/dist/shared/ginko.DIl7l-75.mjs +26 -0
  64. package/dist/shared/ginko.DY7RbCEw.mjs +601 -0
  65. package/dist/shared/ginko.Dmgixfpf.mjs +130 -0
  66. package/dist/shared/{ginko.D-fNojn9.d.mts → ginko.DrkUeYFP.d.mts} +824 -10
  67. package/dist/shared/{ginko.D-fNojn9.d.ts → ginko.DrkUeYFP.d.ts} +824 -10
  68. package/dist/shared/{ginko.akHewCGt.d.mts → ginko.DvPtlHIz.d.mts} +50 -5
  69. package/dist/shared/{ginko.BDF3bW0C.d.ts → ginko.EelR5dt9.d.ts} +50 -5
  70. package/dist/shared/ginko.ULKQnAWd.d.ts +91 -0
  71. package/dist/shared/ginko.loGIxGZg.d.mts +91 -0
  72. package/dist/shared/ginko.o1yIKlgj.d.mts +128 -0
  73. package/dist/shared/ginko.plW4dLmm.d.mts +1622 -0
  74. package/dist/shared/{ginko.Dht0xxE5.mjs → ginko.raCzOPYC.mjs} +1 -2
  75. package/dist/shared/ginko.yKMIjJ68.mjs +84 -0
  76. package/dist/vue.d.mts +5 -4
  77. package/dist/vue.d.ts +5 -4
  78. package/dist/vue.mjs +1 -1
  79. package/i18n/ar.json +212 -0
  80. package/i18n/de.json +9 -1
  81. package/i18n/en.json +9 -1
  82. package/i18n/es.json +12 -4
  83. package/i18n/fr.json +212 -0
  84. package/i18n/it.json +212 -0
  85. package/package.json +7 -3
  86. package/dist/shared/ginko.BTUfZCfa.d.mts +0 -172
  87. package/dist/shared/ginko.C-QjDn3O.mjs +0 -4944
  88. package/dist/shared/ginko.Dc0oNcDv.d.ts +0 -172
  89. package/dist/shared/ginko.Mn30dmlm.mjs +0 -20
@@ -4,6 +4,7 @@ import { ComarkPlugin } from 'comark';
4
4
  declare namespace issues {
5
5
  let unknownBrick: string;
6
6
  let markdown: string;
7
+ let markdownAt: string;
7
8
  let notObject: string;
8
9
  let unknownField: string;
9
10
  let fieldMissing: string;
@@ -25,6 +26,8 @@ declare namespace issues {
25
26
  let badTime: string;
26
27
  let badDateRange: string;
27
28
  let dateRangeOrder: string;
29
+ let timeOrder: string;
30
+ let notWeekStart: string;
28
31
  let badChoice: string;
29
32
  let badChoices: string;
30
33
  let duplicateValues: string;
@@ -41,6 +44,9 @@ declare namespace issues {
41
44
  let duplicateRowId: string;
42
45
  let notImage: string;
43
46
  let altMissing: string;
47
+ let fileRefMissing: string;
48
+ let fileRefPdf: string;
49
+ let markdownImageAltMissing: string;
44
50
  let altTooLong: string;
45
51
  let notFile: string;
46
52
  }
@@ -61,6 +67,8 @@ declare namespace markdown_1 {
61
67
  let unsafeLink: string;
62
68
  let oneParagraph: string;
63
69
  let tooComplex: string;
70
+ let componentNotClosed: string;
71
+ let bracketText: string;
64
72
  }
65
73
 
66
74
  declare namespace component {
@@ -248,6 +256,7 @@ declare const coreCatalogs: {
248
256
  issues: {
249
257
  unknownBrick: string;
250
258
  markdown: string;
259
+ markdownAt: string;
251
260
  notObject: string;
252
261
  unknownField: string;
253
262
  fieldMissing: string;
@@ -269,6 +278,8 @@ declare const coreCatalogs: {
269
278
  badTime: string;
270
279
  badDateRange: string;
271
280
  dateRangeOrder: string;
281
+ timeOrder: string;
282
+ notWeekStart: string;
272
283
  badChoice: string;
273
284
  badChoices: string;
274
285
  duplicateValues: string;
@@ -285,6 +296,9 @@ declare const coreCatalogs: {
285
296
  duplicateRowId: string;
286
297
  notImage: string;
287
298
  altMissing: string;
299
+ fileRefMissing: string;
300
+ fileRefPdf: string;
301
+ markdownImageAltMissing: string;
288
302
  altTooLong: string;
289
303
  notFile: string;
290
304
  };
@@ -305,6 +319,8 @@ declare const coreCatalogs: {
305
319
  unsafeLink: string;
306
320
  oneParagraph: string;
307
321
  tooComplex: string;
322
+ componentNotClosed: string;
323
+ bracketText: string;
308
324
  };
309
325
  component: {
310
326
  or: string;
@@ -452,6 +468,7 @@ declare const coreCatalogs: {
452
468
  issues: {
453
469
  unknownBrick: string;
454
470
  markdown: string;
471
+ markdownAt: string;
455
472
  notObject: string;
456
473
  unknownField: string;
457
474
  fieldMissing: string;
@@ -473,6 +490,8 @@ declare const coreCatalogs: {
473
490
  badTime: string;
474
491
  badDateRange: string;
475
492
  dateRangeOrder: string;
493
+ timeOrder: string;
494
+ notWeekStart: string;
476
495
  badChoice: string;
477
496
  badChoices: string;
478
497
  duplicateValues: string;
@@ -489,6 +508,9 @@ declare const coreCatalogs: {
489
508
  duplicateRowId: string;
490
509
  notImage: string;
491
510
  altMissing: string;
511
+ fileRefMissing: string;
512
+ fileRefPdf: string;
513
+ markdownImageAltMissing: string;
492
514
  altTooLong: string;
493
515
  notFile: string;
494
516
  };
@@ -509,6 +531,8 @@ declare const coreCatalogs: {
509
531
  unsafeLink: string;
510
532
  oneParagraph: string;
511
533
  tooComplex: string;
534
+ componentNotClosed: string;
535
+ bracketText: string;
512
536
  };
513
537
  component: {
514
538
  or: string;
@@ -656,6 +680,7 @@ declare const coreCatalogs: {
656
680
  issues: {
657
681
  unknownBrick: string;
658
682
  markdown: string;
683
+ markdownAt: string;
659
684
  notObject: string;
660
685
  unknownField: string;
661
686
  fieldMissing: string;
@@ -677,6 +702,8 @@ declare const coreCatalogs: {
677
702
  badTime: string;
678
703
  badDateRange: string;
679
704
  dateRangeOrder: string;
705
+ timeOrder: string;
706
+ notWeekStart: string;
680
707
  badChoice: string;
681
708
  badChoices: string;
682
709
  duplicateValues: string;
@@ -693,6 +720,9 @@ declare const coreCatalogs: {
693
720
  duplicateRowId: string;
694
721
  notImage: string;
695
722
  altMissing: string;
723
+ fileRefMissing: string;
724
+ fileRefPdf: string;
725
+ markdownImageAltMissing: string;
696
726
  altTooLong: string;
697
727
  notFile: string;
698
728
  };
@@ -713,6 +743,644 @@ declare const coreCatalogs: {
713
743
  unsafeLink: string;
714
744
  oneParagraph: string;
715
745
  tooComplex: string;
746
+ componentNotClosed: string;
747
+ bracketText: string;
748
+ };
749
+ component: {
750
+ or: string;
751
+ and: string;
752
+ quoted: string;
753
+ unknown: string;
754
+ propUnknown: string;
755
+ propInvalid: string;
756
+ propMissing: string;
757
+ propEmpty: string;
758
+ blockInParagraph: string;
759
+ parentOnly: string;
760
+ slotUnknown: string;
761
+ noSlots: string;
762
+ childNotAllowed: string;
763
+ prop: {
764
+ notBoolean: string;
765
+ notNumber: string;
766
+ outOfRange: string;
767
+ badStep: string;
768
+ notText: string;
769
+ tooLong: string;
770
+ badChoice: string;
771
+ badChoices: string;
772
+ duplicateValues: string;
773
+ tooManyChosen: string;
774
+ badImage: string;
775
+ notId: string;
776
+ badType: string;
777
+ };
778
+ };
779
+ links: {
780
+ snippetMissing: string;
781
+ linkBroken: string;
782
+ linkRedirected: string;
783
+ pathUnknown: string;
784
+ anchorMissing: string;
785
+ externalBroken: string;
786
+ };
787
+ editor: {
788
+ component: {
789
+ unknown: string;
790
+ more: string;
791
+ };
792
+ prop: {
793
+ missing: string;
794
+ empty: string;
795
+ invalid: string;
796
+ };
797
+ problem: {
798
+ imageNoDescription: string;
799
+ };
800
+ source: {
801
+ unstable: string;
802
+ lossy: string;
803
+ failed: string;
804
+ };
805
+ };
806
+ diff: {
807
+ freshSetting: string;
808
+ freshLocales: string;
809
+ siteRenamed: string;
810
+ currencyChanged: string;
811
+ mainLocaleChanged: string;
812
+ localeRemoved: string;
813
+ localeOrder: string;
814
+ localeAdded: string;
815
+ timezoneChanged: string;
816
+ valueChanged: string;
817
+ pagesChanged: string;
818
+ agentsChanged: string;
819
+ tasksChanged: string;
820
+ retiredBack: string;
821
+ unretired: string;
822
+ retiredRuleChanged: string;
823
+ retiredNow: string;
824
+ migrationChanged: string;
825
+ migrationFillsExisting: string;
826
+ migrationAdded: string;
827
+ migrationDropped: string;
828
+ brickRemoved: string;
829
+ brickAdded: string;
830
+ singleWithoutDefault: string;
831
+ unknownChange: string;
832
+ kindChanged: string;
833
+ textChanged: string;
834
+ maxLowered: string;
835
+ maxRaised: string;
836
+ routeAdded: string;
837
+ routeAddedLocale: string;
838
+ routeChanged: string;
839
+ fieldRemoved: string;
840
+ fieldAdded: string;
841
+ fieldAddedDefault: string;
842
+ fieldAddedMigration: string;
843
+ requiredWithoutDefault: string;
844
+ typeChanged: string;
845
+ retiredFieldChanged: string;
846
+ madeRequired: string;
847
+ madeOptional: string;
848
+ translationChanged: string;
849
+ defaultChanged: string;
850
+ minRaised: string;
851
+ minLowered: string;
852
+ minOffGrid: string;
853
+ propChanged: string;
854
+ optionRemoved: string;
855
+ optionRenamed: string;
856
+ optionAdded: string;
857
+ uniqueChanged: string;
858
+ uniqueDropped: string;
859
+ fix: {
860
+ newField: string;
861
+ newFieldOnly: string;
862
+ newSite: string;
863
+ moneyFields: string;
864
+ planMigration: string;
865
+ keepLocale: string;
866
+ keepLocaleOrder: string;
867
+ keepTimezone: string;
868
+ keepRule: string;
869
+ newMigrationId: string;
870
+ fillNewFieldsOnly: string;
871
+ retireBrick: string;
872
+ defaultOrOptional: string;
873
+ keepProperty: string;
874
+ keepMax: string;
875
+ keepRoute: string;
876
+ defaultMigrationOrOptional: string;
877
+ keepDefinition: string;
878
+ keepDefault: string;
879
+ keepMin: string;
880
+ minOnGrid: string;
881
+ keepOption: string;
882
+ newList: string;
883
+ };
884
+ };
885
+ preview: {
886
+ notFound: string;
887
+ failed: string;
888
+ loading: string;
889
+ };
890
+ };
891
+ readonly fr: {
892
+ issues: {
893
+ unknownBrick: string;
894
+ markdown: string;
895
+ markdownAt: string;
896
+ notObject: string;
897
+ unknownField: string;
898
+ fieldMissing: string;
899
+ notLocalized: string;
900
+ unknownLocale: string;
901
+ fieldEmpty: string;
902
+ notText: string;
903
+ tooLong: string;
904
+ controlChars: string;
905
+ badFormat: string;
906
+ badSlug: string;
907
+ notNumber: string;
908
+ outOfRange: string;
909
+ badStep: string;
910
+ notMoney: string;
911
+ moneyOutOfRange: string;
912
+ notBoolean: string;
913
+ badDate: string;
914
+ badTime: string;
915
+ badDateRange: string;
916
+ dateRangeOrder: string;
917
+ timeOrder: string;
918
+ notWeekStart: string;
919
+ badChoice: string;
920
+ badChoices: string;
921
+ duplicateValues: string;
922
+ tooManyChosen: string;
923
+ notIdList: string;
924
+ notId: string;
925
+ duplicateEntries: string;
926
+ refGone: string;
927
+ notList: string;
928
+ tooManyRows: string;
929
+ tooFewRows: string;
930
+ duplicateRowValue: string;
931
+ badRowId: string;
932
+ duplicateRowId: string;
933
+ notImage: string;
934
+ altMissing: string;
935
+ fileRefMissing: string;
936
+ fileRefPdf: string;
937
+ markdownImageAltMissing: string;
938
+ altTooLong: string;
939
+ notFile: string;
940
+ };
941
+ file: {
942
+ typeNotAllowed: string;
943
+ tooBig: string;
944
+ };
945
+ markdown: {
946
+ profile: {
947
+ inline: string;
948
+ basic: string;
949
+ rich: string;
950
+ page: string;
951
+ };
952
+ tagBlocked: string;
953
+ tagNotInProfile: string;
954
+ propBlocked: string;
955
+ unsafeLink: string;
956
+ oneParagraph: string;
957
+ tooComplex: string;
958
+ componentNotClosed: string;
959
+ bracketText: string;
960
+ };
961
+ component: {
962
+ or: string;
963
+ and: string;
964
+ quoted: string;
965
+ unknown: string;
966
+ propUnknown: string;
967
+ propInvalid: string;
968
+ propMissing: string;
969
+ propEmpty: string;
970
+ blockInParagraph: string;
971
+ parentOnly: string;
972
+ slotUnknown: string;
973
+ noSlots: string;
974
+ childNotAllowed: string;
975
+ prop: {
976
+ notBoolean: string;
977
+ notNumber: string;
978
+ outOfRange: string;
979
+ badStep: string;
980
+ notText: string;
981
+ tooLong: string;
982
+ badChoice: string;
983
+ badChoices: string;
984
+ duplicateValues: string;
985
+ tooManyChosen: string;
986
+ badImage: string;
987
+ notId: string;
988
+ badType: string;
989
+ };
990
+ };
991
+ links: {
992
+ snippetMissing: string;
993
+ linkBroken: string;
994
+ linkRedirected: string;
995
+ pathUnknown: string;
996
+ anchorMissing: string;
997
+ externalBroken: string;
998
+ };
999
+ editor: {
1000
+ component: {
1001
+ unknown: string;
1002
+ more: string;
1003
+ };
1004
+ prop: {
1005
+ missing: string;
1006
+ empty: string;
1007
+ invalid: string;
1008
+ };
1009
+ problem: {
1010
+ imageNoDescription: string;
1011
+ };
1012
+ source: {
1013
+ unstable: string;
1014
+ lossy: string;
1015
+ failed: string;
1016
+ };
1017
+ };
1018
+ diff: {
1019
+ freshSetting: string;
1020
+ freshLocales: string;
1021
+ siteRenamed: string;
1022
+ currencyChanged: string;
1023
+ mainLocaleChanged: string;
1024
+ localeRemoved: string;
1025
+ localeOrder: string;
1026
+ localeAdded: string;
1027
+ timezoneChanged: string;
1028
+ valueChanged: string;
1029
+ pagesChanged: string;
1030
+ agentsChanged: string;
1031
+ tasksChanged: string;
1032
+ retiredBack: string;
1033
+ unretired: string;
1034
+ retiredRuleChanged: string;
1035
+ retiredNow: string;
1036
+ migrationChanged: string;
1037
+ migrationFillsExisting: string;
1038
+ migrationAdded: string;
1039
+ migrationDropped: string;
1040
+ brickRemoved: string;
1041
+ brickAdded: string;
1042
+ singleWithoutDefault: string;
1043
+ unknownChange: string;
1044
+ kindChanged: string;
1045
+ textChanged: string;
1046
+ maxLowered: string;
1047
+ maxRaised: string;
1048
+ routeAdded: string;
1049
+ routeAddedLocale: string;
1050
+ routeChanged: string;
1051
+ fieldRemoved: string;
1052
+ fieldAdded: string;
1053
+ fieldAddedDefault: string;
1054
+ fieldAddedMigration: string;
1055
+ requiredWithoutDefault: string;
1056
+ typeChanged: string;
1057
+ retiredFieldChanged: string;
1058
+ madeRequired: string;
1059
+ madeOptional: string;
1060
+ translationChanged: string;
1061
+ defaultChanged: string;
1062
+ minRaised: string;
1063
+ minLowered: string;
1064
+ minOffGrid: string;
1065
+ propChanged: string;
1066
+ optionRemoved: string;
1067
+ optionRenamed: string;
1068
+ optionAdded: string;
1069
+ uniqueChanged: string;
1070
+ uniqueDropped: string;
1071
+ fix: {
1072
+ newField: string;
1073
+ newFieldOnly: string;
1074
+ newSite: string;
1075
+ moneyFields: string;
1076
+ planMigration: string;
1077
+ keepLocale: string;
1078
+ keepLocaleOrder: string;
1079
+ keepTimezone: string;
1080
+ keepRule: string;
1081
+ newMigrationId: string;
1082
+ fillNewFieldsOnly: string;
1083
+ retireBrick: string;
1084
+ defaultOrOptional: string;
1085
+ keepProperty: string;
1086
+ keepMax: string;
1087
+ keepRoute: string;
1088
+ defaultMigrationOrOptional: string;
1089
+ keepDefinition: string;
1090
+ keepDefault: string;
1091
+ keepMin: string;
1092
+ minOnGrid: string;
1093
+ keepOption: string;
1094
+ newList: string;
1095
+ };
1096
+ };
1097
+ preview: {
1098
+ notFound: string;
1099
+ failed: string;
1100
+ loading: string;
1101
+ };
1102
+ };
1103
+ readonly it: {
1104
+ issues: {
1105
+ unknownBrick: string;
1106
+ markdown: string;
1107
+ markdownAt: string;
1108
+ notObject: string;
1109
+ unknownField: string;
1110
+ fieldMissing: string;
1111
+ notLocalized: string;
1112
+ unknownLocale: string;
1113
+ fieldEmpty: string;
1114
+ notText: string;
1115
+ tooLong: string;
1116
+ controlChars: string;
1117
+ badFormat: string;
1118
+ badSlug: string;
1119
+ notNumber: string;
1120
+ outOfRange: string;
1121
+ badStep: string;
1122
+ notMoney: string;
1123
+ moneyOutOfRange: string;
1124
+ notBoolean: string;
1125
+ badDate: string;
1126
+ badTime: string;
1127
+ badDateRange: string;
1128
+ dateRangeOrder: string;
1129
+ timeOrder: string;
1130
+ notWeekStart: string;
1131
+ badChoice: string;
1132
+ badChoices: string;
1133
+ duplicateValues: string;
1134
+ tooManyChosen: string;
1135
+ notIdList: string;
1136
+ notId: string;
1137
+ duplicateEntries: string;
1138
+ refGone: string;
1139
+ notList: string;
1140
+ tooManyRows: string;
1141
+ tooFewRows: string;
1142
+ duplicateRowValue: string;
1143
+ badRowId: string;
1144
+ duplicateRowId: string;
1145
+ notImage: string;
1146
+ altMissing: string;
1147
+ fileRefMissing: string;
1148
+ fileRefPdf: string;
1149
+ markdownImageAltMissing: string;
1150
+ altTooLong: string;
1151
+ notFile: string;
1152
+ };
1153
+ file: {
1154
+ typeNotAllowed: string;
1155
+ tooBig: string;
1156
+ };
1157
+ markdown: {
1158
+ profile: {
1159
+ inline: string;
1160
+ basic: string;
1161
+ rich: string;
1162
+ page: string;
1163
+ };
1164
+ tagBlocked: string;
1165
+ tagNotInProfile: string;
1166
+ propBlocked: string;
1167
+ unsafeLink: string;
1168
+ oneParagraph: string;
1169
+ tooComplex: string;
1170
+ componentNotClosed: string;
1171
+ bracketText: string;
1172
+ };
1173
+ component: {
1174
+ or: string;
1175
+ and: string;
1176
+ quoted: string;
1177
+ unknown: string;
1178
+ propUnknown: string;
1179
+ propInvalid: string;
1180
+ propMissing: string;
1181
+ propEmpty: string;
1182
+ blockInParagraph: string;
1183
+ parentOnly: string;
1184
+ slotUnknown: string;
1185
+ noSlots: string;
1186
+ childNotAllowed: string;
1187
+ prop: {
1188
+ notBoolean: string;
1189
+ notNumber: string;
1190
+ outOfRange: string;
1191
+ badStep: string;
1192
+ notText: string;
1193
+ tooLong: string;
1194
+ badChoice: string;
1195
+ badChoices: string;
1196
+ duplicateValues: string;
1197
+ tooManyChosen: string;
1198
+ badImage: string;
1199
+ notId: string;
1200
+ badType: string;
1201
+ };
1202
+ };
1203
+ links: {
1204
+ snippetMissing: string;
1205
+ linkBroken: string;
1206
+ linkRedirected: string;
1207
+ pathUnknown: string;
1208
+ anchorMissing: string;
1209
+ externalBroken: string;
1210
+ };
1211
+ editor: {
1212
+ component: {
1213
+ unknown: string;
1214
+ more: string;
1215
+ };
1216
+ prop: {
1217
+ missing: string;
1218
+ empty: string;
1219
+ invalid: string;
1220
+ };
1221
+ problem: {
1222
+ imageNoDescription: string;
1223
+ };
1224
+ source: {
1225
+ unstable: string;
1226
+ lossy: string;
1227
+ failed: string;
1228
+ };
1229
+ };
1230
+ diff: {
1231
+ freshSetting: string;
1232
+ freshLocales: string;
1233
+ siteRenamed: string;
1234
+ currencyChanged: string;
1235
+ mainLocaleChanged: string;
1236
+ localeRemoved: string;
1237
+ localeOrder: string;
1238
+ localeAdded: string;
1239
+ timezoneChanged: string;
1240
+ valueChanged: string;
1241
+ pagesChanged: string;
1242
+ agentsChanged: string;
1243
+ tasksChanged: string;
1244
+ retiredBack: string;
1245
+ unretired: string;
1246
+ retiredRuleChanged: string;
1247
+ retiredNow: string;
1248
+ migrationChanged: string;
1249
+ migrationFillsExisting: string;
1250
+ migrationAdded: string;
1251
+ migrationDropped: string;
1252
+ brickRemoved: string;
1253
+ brickAdded: string;
1254
+ singleWithoutDefault: string;
1255
+ unknownChange: string;
1256
+ kindChanged: string;
1257
+ textChanged: string;
1258
+ maxLowered: string;
1259
+ maxRaised: string;
1260
+ routeAdded: string;
1261
+ routeAddedLocale: string;
1262
+ routeChanged: string;
1263
+ fieldRemoved: string;
1264
+ fieldAdded: string;
1265
+ fieldAddedDefault: string;
1266
+ fieldAddedMigration: string;
1267
+ requiredWithoutDefault: string;
1268
+ typeChanged: string;
1269
+ retiredFieldChanged: string;
1270
+ madeRequired: string;
1271
+ madeOptional: string;
1272
+ translationChanged: string;
1273
+ defaultChanged: string;
1274
+ minRaised: string;
1275
+ minLowered: string;
1276
+ minOffGrid: string;
1277
+ propChanged: string;
1278
+ optionRemoved: string;
1279
+ optionRenamed: string;
1280
+ optionAdded: string;
1281
+ uniqueChanged: string;
1282
+ uniqueDropped: string;
1283
+ fix: {
1284
+ newField: string;
1285
+ newFieldOnly: string;
1286
+ newSite: string;
1287
+ moneyFields: string;
1288
+ planMigration: string;
1289
+ keepLocale: string;
1290
+ keepLocaleOrder: string;
1291
+ keepTimezone: string;
1292
+ keepRule: string;
1293
+ newMigrationId: string;
1294
+ fillNewFieldsOnly: string;
1295
+ retireBrick: string;
1296
+ defaultOrOptional: string;
1297
+ keepProperty: string;
1298
+ keepMax: string;
1299
+ keepRoute: string;
1300
+ defaultMigrationOrOptional: string;
1301
+ keepDefinition: string;
1302
+ keepDefault: string;
1303
+ keepMin: string;
1304
+ minOnGrid: string;
1305
+ keepOption: string;
1306
+ newList: string;
1307
+ };
1308
+ };
1309
+ preview: {
1310
+ notFound: string;
1311
+ failed: string;
1312
+ loading: string;
1313
+ };
1314
+ };
1315
+ readonly ar: {
1316
+ issues: {
1317
+ unknownBrick: string;
1318
+ markdown: string;
1319
+ markdownAt: string;
1320
+ notObject: string;
1321
+ unknownField: string;
1322
+ fieldMissing: string;
1323
+ notLocalized: string;
1324
+ unknownLocale: string;
1325
+ fieldEmpty: string;
1326
+ notText: string;
1327
+ tooLong: string;
1328
+ controlChars: string;
1329
+ badFormat: string;
1330
+ badSlug: string;
1331
+ notNumber: string;
1332
+ outOfRange: string;
1333
+ badStep: string;
1334
+ notMoney: string;
1335
+ moneyOutOfRange: string;
1336
+ notBoolean: string;
1337
+ badDate: string;
1338
+ badTime: string;
1339
+ badDateRange: string;
1340
+ dateRangeOrder: string;
1341
+ timeOrder: string;
1342
+ notWeekStart: string;
1343
+ badChoice: string;
1344
+ badChoices: string;
1345
+ duplicateValues: string;
1346
+ tooManyChosen: string;
1347
+ notIdList: string;
1348
+ notId: string;
1349
+ duplicateEntries: string;
1350
+ refGone: string;
1351
+ notList: string;
1352
+ tooManyRows: string;
1353
+ tooFewRows: string;
1354
+ duplicateRowValue: string;
1355
+ badRowId: string;
1356
+ duplicateRowId: string;
1357
+ notImage: string;
1358
+ altMissing: string;
1359
+ fileRefMissing: string;
1360
+ fileRefPdf: string;
1361
+ markdownImageAltMissing: string;
1362
+ altTooLong: string;
1363
+ notFile: string;
1364
+ };
1365
+ file: {
1366
+ typeNotAllowed: string;
1367
+ tooBig: string;
1368
+ };
1369
+ markdown: {
1370
+ profile: {
1371
+ inline: string;
1372
+ basic: string;
1373
+ rich: string;
1374
+ page: string;
1375
+ };
1376
+ tagBlocked: string;
1377
+ tagNotInProfile: string;
1378
+ propBlocked: string;
1379
+ unsafeLink: string;
1380
+ oneParagraph: string;
1381
+ tooComplex: string;
1382
+ componentNotClosed: string;
1383
+ bracketText: string;
716
1384
  };
717
1385
  component: {
718
1386
  or: string;
@@ -863,12 +1531,15 @@ declare function coreMessage(locale: string | undefined, key: string, params?: M
863
1531
  declare function msg(key: CoreKey, params?: Msg['params']): Described;
864
1532
 
865
1533
  /**
866
- * In page state the tree is replaced by `ref`, the site path that serves it, so a page's payload
867
- * carries only the texts it shows (CONTENT.md, Phase 14). `toc` stays for lists and navigation.
1534
+ * In page state the tree is replaced by `ref`, the site path that serves it (withMarkdownRefs), so a page's
1535
+ * payload carries only the texts it shows (CONTENT.md, Phase 14). The toc comes with the loaded tree; page
1536
+ * state no longer carries it, `toc` stays optional here so the type does not change. `words` is the tree's word
1537
+ * count (`wordsOf`), so a list page can show a reading time without loading every text.
868
1538
  */
869
1539
  type MarkdownValue = MarkdownTree | {
870
1540
  ref: string;
871
1541
  toc?: MarkdownToc;
1542
+ words?: number;
872
1543
  };
873
1544
  /**
874
1545
  * The parsed tree: comark nodes (`[tag, props, ...children]` or a string). `summary` holds the nodes
@@ -902,6 +1573,12 @@ declare const MARKDOWN_PROFILES: readonly ["inline", "basic", "rich", "page"];
902
1573
  type MarkdownProfile = (typeof MARKDOWN_PROFILES)[number];
903
1574
  /** Attributes that hold an address; their value must pass `isSafeHref` (`srcset`: each address in it). */
904
1575
  declare const URL_PROPS: ReadonlySet<string>;
1576
+ /** What `attributeProblem` reads of the component registry: the declared props and their types. A full `ComponentRegistry` fits. */
1577
+ type AttributeRegistry = Record<string, {
1578
+ props: Record<string, {
1579
+ type: string;
1580
+ }>;
1581
+ }>;
905
1582
  declare const UNSAFE_LINK: string;
906
1583
  /** A short description of what the profile allows, for agent tools and editor hints. */
907
1584
  declare function describeProfile(profile: MarkdownProfile, locale?: string): string;
@@ -926,8 +1603,17 @@ interface ParsedMarkdown {
926
1603
  /** What the profile does not allow, as sentences. Empty when the text is fine. */
927
1604
  problems: string[];
928
1605
  /** The same problems with catalog key and parameters (`coreMessage(locale, key, params)`), in the same order. */
929
- problemMessages: Described[];
1606
+ problemMessages: MarkdownProblem[];
1607
+ /**
1608
+ * True when the text has parts the tree does not show: link reference definitions (`[g]: https://…`, resolved into
1609
+ * their links and images) and HTML comments (`<!-- … -->`). A text written from the tree would lose them.
1610
+ */
1611
+ hidden?: true;
930
1612
  }
1613
+ /** A problem of a text; `line` (1-based, in the parsed text, frontmatter included) when it belongs to one line. */
1614
+ type MarkdownProblem = Described & {
1615
+ line?: number;
1616
+ };
931
1617
  /** Parses Markdown with comark, checks it against the profile, adds heading anchors and the toc (h2, h3). */
932
1618
  declare function parseMarkdown(text: string, options?: ParseOptions): Promise<ParsedMarkdown>;
933
1619
  /** One top-level block of a text: its text, and for an h2 or h3 also its level and anchor. Code blocks (`pre`) are not blocks. */
@@ -942,6 +1628,11 @@ interface TextBlock {
942
1628
  declare function textBlocks(tree: MarkdownTree | readonly Json[]): TextBlock[];
943
1629
  /** All text of a tree (or of a node list), for excerpts and search. Blocks are separated by a line break; code blocks are left out. */
944
1630
  declare function plainText(tree: MarkdownTree | readonly Json[]): string;
1631
+ /**
1632
+ * The number of words of a text, e.g. for a reading time: of the tree's `plainText`, or the count a `{ ref }` carries
1633
+ * in page state. `undefined` for a ref without a count or no value.
1634
+ */
1635
+ declare function wordsOf(value: MarkdownValue | null | undefined): number | undefined;
945
1636
 
946
1637
  /**
947
1638
  * Provide/inject key of the app-wide tag → component map that `<GinkoMarkdown>` merges under its `components`
@@ -966,7 +1657,11 @@ interface ComponentDef<P extends Fields = Fields> {
966
1657
  children?: readonly string[];
967
1658
  /** This component may only appear directly inside one of these. */
968
1659
  parents?: readonly string[];
969
- /** Slash menu: `group` is the heading the entry is listed under, per language like `label`. */
1660
+ /**
1661
+ * Slash menu: `group` is the heading the entry is listed under, per language like `label`. `example` is the Markdown
1662
+ * the menu inserts; its sample text shows as a placeholder. Without one the menu inserts the bare tag with no text
1663
+ * line, so a component that takes text should have an example with one.
1664
+ */
970
1665
  editor?: {
971
1666
  icon?: string;
972
1667
  group?: Label;
@@ -1028,8 +1723,11 @@ type ValueOf<F extends Field> = F extends RefField ? (F['multiple'] extends true
1028
1723
  from: string;
1029
1724
  to: string;
1030
1725
  } : F extends NumberField ? number : F extends BooleanField ? boolean : F extends TextField | LongTextField | SlugField | DateField | TimeField ? string : unknown;
1726
+ /** Optional fields, and fields with `showWhen`: those are required only while shown, so a value can be absent. */
1031
1727
  type OptionalKeys<F extends Fields> = {
1032
- [K in keyof F]: F[K]['optional'] extends true ? K : never;
1728
+ [K in keyof F]: F[K]['optional'] extends true ? K : F[K] extends {
1729
+ showWhen: object;
1730
+ } ? K : never;
1033
1731
  }[keyof F];
1034
1732
  type RetiredKeys<F extends Fields> = {
1035
1733
  [K in keyof F]: F[K]['retired'] extends true ? K : never;
@@ -1225,6 +1923,11 @@ declare function isTranslatable(field: {
1225
1923
  }): boolean;
1226
1924
  /** The longest alt text, own or library. */
1227
1925
  declare const ALT_MAX = 300;
1926
+ /**
1927
+ * What an image description must not hold: control characters (as text fields, `controlChars`) and bidi overrides,
1928
+ * which turn the words around when a screen reader reads them out.
1929
+ */
1930
+ declare const ALT_INVISIBLE: RegExp;
1228
1931
  /**
1229
1932
  * The description an image use shows in one language: the field's own trimmed text when it has
1230
1933
  * some, else the Files library text of that language, else ''. Validation, the missing-alt
@@ -1234,6 +1937,14 @@ declare function effectiveAlt(own: unknown, library: Record<string, string> | un
1234
1937
 
1235
1938
  /** `YYYY-MM-DD` of `now` in `timeZone`. */
1236
1939
  declare function todayIn(timeZone: string, now?: Date): string;
1940
+ /** How far `timeZone` is ahead of UTC at the instant `ms`, in ms (+1 h for Vienna in winter, +2 h in summer). */
1941
+ declare function zoneOffset(timeZone: string, ms: number): number;
1942
+ /**
1943
+ * A wall-clock time in `timeZone` as ISO 8601 with its offset: `2026-12-03` `19:30` in Europe/Vienna →
1944
+ * `2026-12-03T19:30:00+01:00` (`+02:00` in summer). In the hour a clock change skips or repeats, the offset is one of
1945
+ * the two (no event is planned for a time that does not exist).
1946
+ */
1947
+ declare function zonedDateTime(date: string, time: string, timeZone: string): string;
1237
1948
  declare function addDays(date: string, days: number): string;
1238
1949
  /** First day of the week and weekend days, ISO numbering (1 = Monday, 7 = Sunday). */
1239
1950
  interface WeekInfo {
@@ -1255,8 +1966,40 @@ declare function startOfWeek(date: string, week: WeekInfo): string;
1255
1966
  * Monday-first with Sat+Sun off: Saturday and Sunday. Sunday-first with Sat+Sun off: only Saturday.
1256
1967
  */
1257
1968
  declare function workWeekOf(date: string, week: WeekInfo): string;
1969
+ /**
1970
+ * The first day on which `weekStart` is the work week (`workWeekOf`): the day a week planned ahead starts to show.
1971
+ * Monday-first with Saturday and Sunday off: the Saturday before.
1972
+ */
1973
+ declare function firstDayShown(weekStart: string, week: WeekInfo): string;
1258
1974
  declare function resolveToken(token: string, timeZone: string, week: WeekInfo, now?: Date): string | undefined;
1259
1975
 
1976
+ /** One public holiday with its name for guests in German and English. */
1977
+ interface Holiday {
1978
+ date: string;
1979
+ de: string;
1980
+ en: string;
1981
+ }
1982
+ /** A site's own holidays: all holidays of `year`. */
1983
+ type HolidayCalendar = (year: number) => Holiday[];
1984
+ /** The built-in calendars. `DE` has the nationwide holidays only. */
1985
+ type HolidayCalendarName = 'AT' | 'DE' | 'SG' | 'none';
1986
+ /** The `calendar` option of a site: a built-in calendar or the site's own function. */
1987
+ type HolidaysOption = HolidayCalendarName | HolidayCalendar;
1988
+ /** `schema.holidays`: the resolved calendar; `custom` is a function in the site's code that only the site can run. */
1989
+ type StoredHolidays = HolidayCalendarName | 'custom';
1990
+ declare const CALENDAR_NAMES: readonly HolidayCalendarName[];
1991
+ declare const STORED_HOLIDAYS: readonly StoredHolidays[];
1992
+ /** The calendar a country has, or `undefined` when Ginko has none for it. */
1993
+ declare function calendarOfCountry(country: string): HolidayCalendarName | undefined;
1994
+ /**
1995
+ * The stored calendar of a site: an explicit `calendar` wins (a function is `custom`), else the calendar of `country`
1996
+ * (`none` for a country without one), else `undefined` (unset: each caller keeps its own default, Austria in the gastro preset).
1997
+ */
1998
+ declare function holidaysOf(site: {
1999
+ country?: string;
2000
+ calendar?: HolidaysOption;
2001
+ }): StoredHolidays | undefined;
2002
+
1260
2003
  /**
1261
2004
  * A locale code: a canonical BCP-47 tag such as `de`, `es`, `pt-BR` or `zh-Hant`, the key of every translated
1262
2005
  * value and the URL segment (not the `languages` tag used for `lang` and formats). Open; `isLocale` is the runtime check.
@@ -1341,6 +2084,8 @@ interface DateField extends FieldBase {
1341
2084
  }
1342
2085
  interface TimeField extends FieldBase {
1343
2086
  type: 'time';
2087
+ /** Another time field of the brick that this one must be later than (an end after its start), checked when both are set. */
2088
+ after?: string;
1344
2089
  }
1345
2090
  interface DateRangeField extends FieldBase {
1346
2091
  type: 'daterange';
@@ -1359,6 +2104,12 @@ interface ChoicesField<V extends string = string> extends FieldBase {
1359
2104
  label: Label;
1360
2105
  }[];
1361
2106
  max?: number;
2107
+ /**
2108
+ * A text field next to this one (a field of the same brick, or a column of the same list row) that this choice answers
2109
+ * for, such as the dish of its allergens. When that text changes in the main language and this choice does not, the
2110
+ * Studio asks whether it is still right and Save waits for the answer.
2111
+ */
2112
+ askAgainWhen?: string;
1362
2113
  }
1363
2114
  interface ListField<F extends Fields = Fields> extends FieldBase {
1364
2115
  type: 'list';
@@ -1403,7 +2154,10 @@ declare const isPrefillToken: (value: unknown) => value is PrefillToken;
1403
2154
  * A quick task of a brick. `needsApproval: true`: what staff does with this task goes live only after an owner or
1404
2155
  * admin approves it (SPEC 17). `F` is the fields of the brick: in `single()` and `collection()` a task names only
1405
2156
  * fields the brick has, and a prefill is written like that field's value (see `ValueInput`). The release check
1406
- * reports a token on a field that is not a `date`.
2157
+ * reports a token on a field that is not a `date`. A `create` task may list `fields`: it then asks for and writes only
2158
+ * those (besides its prefill and the fields' defaults), like an `edit` task. Without `fields` it asks for every field
2159
+ * but the slug and the plan of a planned change. The release check wants every required field without a default
2160
+ * (and not a slug) in `fields` or in the prefill.
1407
2161
  */
1408
2162
  type Task<F extends Fields = Fields> = {
1409
2163
  id: string;
@@ -1417,6 +2171,7 @@ type Task<F extends Fields = Fields> = {
1417
2171
  id: string;
1418
2172
  label: Label;
1419
2173
  kind: 'create';
2174
+ fields?: readonly (keyof F & string)[];
1420
2175
  prefill?: Prefill<F>;
1421
2176
  needsApproval?: boolean;
1422
2177
  } | {
@@ -1445,6 +2200,35 @@ type Visibility<K extends string = string> = {
1445
2200
  days?: number;
1446
2201
  deleteExpired?: boolean;
1447
2202
  };
2203
+ /**
2204
+ * The one-line status of a collection on the Studio's Today page, computed on the server from the live entries:
2205
+ * `next` the first entry whose date (a `date`, or a `daterange` that has not ended) is today or later; `count` how many
2206
+ * entries end within 7 days (needs `visible: { mode: 'until' }`); `missing` how many entries leave an optional field
2207
+ * without a default empty; `age` the newest entry by a date field and how long ago that is. A status also says when a
2208
+ * section is due: entries end within 7 days, entries miss the field, or the next entry is within 7 days and misses a
2209
+ * required text. Changing it changes no stored data.
2210
+ */
2211
+ type CollectionStatus<D extends string = string, K extends string = string> = {
2212
+ next: D;
2213
+ } | {
2214
+ count: true;
2215
+ } | {
2216
+ missing: K;
2217
+ } | {
2218
+ age: D;
2219
+ };
2220
+ /**
2221
+ * The status of a single brick on the Studio's Today page: `hours` shows today's opening hours ("Open today
2222
+ * 11:30–14:30", "Closed today") from the brick's `week`, `exceptions`, `closedOn` and `holidays` fields.
2223
+ * `{ hours: { plans: 'hourPlans' } }` also reads the site's hour plans (a collection of `hourPlans()`, by its key): the
2224
+ * line follows the plan that applies today.
2225
+ */
2226
+ type SingleStatus = {
2227
+ hours: true | {
2228
+ plans: string;
2229
+ };
2230
+ };
2231
+ type BrickStatus = CollectionStatus | SingleStatus;
1448
2232
  /** Where a brick's content comes from: the platform (default) or Markdown files in the site's repo (CONTENT.md). */
1449
2233
  type BrickSource = 'files';
1450
2234
  interface SingleBrick<F extends Fields = Fields> {
@@ -1459,6 +2243,19 @@ interface SingleBrick<F extends Fields = Fields> {
1459
2243
  /** How the Studio shows field groups: headings one below the other, or tabs on wide screens (phones always show headings). */
1460
2244
  layout?: 'sections' | 'tabs';
1461
2245
  tasks?: readonly Task[];
2246
+ /**
2247
+ * A planned change of one field: from the date in `from` on, the value in `next` replaces `field`, e.g. a price that
2248
+ * goes up on the 1st. `next` (the type of `field`) and `from` (a date) are optional fields that are set together, and
2249
+ * every edit task that changes `field` shows them too. The site applies the plan; the platform checks it and opens a
2250
+ * task on the value in effect.
2251
+ */
2252
+ planned?: {
2253
+ field: string;
2254
+ next: string;
2255
+ from: string;
2256
+ };
2257
+ /** The status line on the Studio's Today page (see `SingleStatus`). */
2258
+ status?: SingleStatus;
1462
2259
  /** @internal Platform-managed: set when the brick is listed in `retired`. Do not set it. */
1463
2260
  retired?: true;
1464
2261
  }
@@ -1475,6 +2272,17 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
1475
2272
  /** How the Studio shows field groups: headings one below the other, or tabs on wide screens (phones always show headings). */
1476
2273
  layout?: 'sections' | 'tabs';
1477
2274
  tasks?: readonly Task[];
2275
+ /**
2276
+ * A planned change of one field: from the date in `from` on, the value in `next` replaces `field`, e.g. a price that
2277
+ * goes up on the 1st. `next` (the type of `field`) and `from` (a date) are optional fields that are set together, and
2278
+ * every edit task that changes `field` shows them too. The site applies the plan; the platform checks it and opens a
2279
+ * task on the value in effect.
2280
+ */
2281
+ planned?: {
2282
+ field: string;
2283
+ next: string;
2284
+ from: string;
2285
+ };
1478
2286
  max: number;
1479
2287
  /** `manual`: the owner sorts the entries. Else by a field, ascending unless `dir: 'desc'`. */
1480
2288
  order: 'manual' | {
@@ -1484,8 +2292,10 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
1484
2292
  route?: R;
1485
2293
  visible?: Visibility;
1486
2294
  /**
1487
- * What an entry does in a language where a translatable required field is missing or outdated: `'fallback'`
1488
- * (default) shows the main language there, `'hide'` leaves the entry out of that language.
2295
+ * What an entry does in a language where a translatable required field is missing (an outdated translation still
2296
+ * counts): `'hide'` leaves it out of that language (no page, not in lists, sitemap or hreflang); `'fallback'` shows
2297
+ * the main language there and, with a `route`, links to the main-language page. Default: `'hide'` with a `route`,
2298
+ * else `'fallback'` (`untranslatedMode`).
1489
2299
  */
1490
2300
  untranslated?: 'fallback' | 'hide';
1491
2301
  /** Entries of this collection plan weeks of the single brick `brick`; `field` (a date field here) holds the first day of the week (`week.firstDay`). A planned week counts as entered for the weekly upkeep rule. */
@@ -1495,6 +2305,8 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
1495
2305
  };
1496
2306
  /** Entries can be saved as drafts and are shown only once published. */
1497
2307
  drafts?: boolean;
2308
+ /** The status line on the Studio's Today page (see `CollectionStatus`). Without one, a collection with drafts shows its drafts and scheduled entries. */
2309
+ status?: CollectionStatus;
1498
2310
  /** @internal Platform-managed: set when the brick is listed in `retired`. Do not set it. */
1499
2311
  retired?: true;
1500
2312
  }
@@ -1527,6 +2339,8 @@ interface Schema {
1527
2339
  currency: Currency;
1528
2340
  /** First day of the week and weekend days of the site (computed once from the main language or `firstDayOfWeek`). */
1529
2341
  week: WeekInfo;
2342
+ /** The public-holiday calendar of the site (`calendar`, else from `country`); absent when the config sets neither. */
2343
+ holidays?: StoredHolidays;
1530
2344
  /** Static pages by key, each with its path per locale (the home page is the one whose main-locale path is `/`). */
1531
2345
  pages: Record<string, Partial<Record<Locale, string>>>;
1532
2346
  bricks: Record<string, Brick>;
@@ -1550,5 +2364,5 @@ interface Issue {
1550
2364
  message: string;
1551
2365
  }
1552
2366
 
1553
- export { ALT_MAX as A, GINKO_COMPONENTS_KEY as G, MARKDOWN_PROFILES as N, PREFILL_TOKENS as a0, UNSAFE_LINK as a9, weekInfoOf as aA, workWeekOf as aB, URL_PROPS as aa, addDays as ad, componentProblems as ae, componentPropMessage as af, componentPropProblem as ag, coreCatalogs as ah, coreMessage as ai, defineComponents as aj, describeProfile as ak, effectiveAlt as al, effectiveMax as am, effectiveProfile as an, f as ao, isPrefillToken as ap, isShown as aq, isTranslatable as ar, msg as as, parseMarkdown as at, plainText as au, profileCovers as av, resolveToken as aw, startOfWeek as ax, textBlocks as ay, todayIn as az, DEFAULT_WEEK as p, GINKO_TOC_KEY as w };
1554
- export type { NumberField as $, Brick as B, Currency as C, Described as D, ListField as E, Fields as F, Localized as H, Issue as I, Json as J, LongTextField as K, Locale as L, MarkdownTree as M, MarkdownField as O, ParseOptions as P, MarkdownProfile as Q, RetiredRule as R, Schema as S, Task as T, MarkdownToc as U, Visibility as V, WeekInfo as W, MarkdownValue as X, MigrationDescriptor as Y, Money as Z, MoneyField as _, ComponentRegistry as a, ParsedMarkdown as a1, PrefillToken as a2, RefField as a3, SlugField as a4, TextBlock as a5, TextField as a6, TimeField as a7, TocLink as a8, UnknownChoice as ab, ValueOf as ac, Msg as b, Label as c, BrickSource as d, CollectionBrick as e, SingleBrick as f, FileField as g, BooleanField as h, BrickValue as i, ChoiceField as j, ChoiceOption as k, ChoicesField as l, ComponentDef as m, ComponentSlot as n, CoreKey as o, DataOf as q, DateField as r, DateRangeField as s, Field as t, FieldType as u, FileValue as v, ImageField as x, ImageValue as y, ItemOf as z };
2367
+ export { ALT_INVISIBLE as K, ALT_MAX as O, CALENDAR_NAMES as X, DEFAULT_WEEK as a1, GINKO_COMPONENTS_KEY as a5, GINKO_TOC_KEY as a6, effectiveProfile as aA, f as aB, firstDayShown as aC, holidaysOf as aD, isPrefillToken as aE, isShown as aF, isTranslatable as aG, msg as aH, parseMarkdown as aI, plainText as aJ, profileCovers as aK, resolveToken as aL, startOfWeek as aM, textBlocks as aN, todayIn as aO, weekInfoOf as aP, wordsOf as aQ, workWeekOf as aR, zoneOffset as aS, zonedDateTime as aT, MARKDOWN_PROFILES as aa, PREFILL_TOKENS as ag, STORED_HOLIDAYS as aj, UNSAFE_LINK as am, URL_PROPS as an, addDays as aq, componentProblems as ar, componentPropMessage as as, componentPropProblem as at, coreCatalogs as au, coreMessage as av, defineComponents as aw, describeProfile as ax, effectiveAlt as ay, effectiveMax as az, calendarOfCountry as z };
2368
+ export type { ComponentSlot as $, AttributeRegistry as A, Brick as B, Currency as C, DateField as D, Issue as E, Fields as F, Described as G, HolidaysOption as H, ImageField as I, Json as J, Locale as L, MarkdownTree as M, NumberField as N, ParseOptions as P, BrickStatus as Q, RetiredRule as R, Schema as S, Task as T, BrickValue as U, Visibility as V, WeekInfo as W, ChoiceOption as Y, ChoicesField as Z, ComponentDef as _, Msg as a, CoreKey as a0, DataOf as a2, FieldType as a3, FileValue as a4, ImageValue as a7, ItemOf as a8, Localized as a9, MarkdownProfile as ab, MarkdownToc as ac, MarkdownValue as ad, MigrationDescriptor as ae, Money as af, ParsedMarkdown as ah, PrefillToken as ai, TextBlock as ak, TocLink as al, UnknownChoice as ao, ValueOf as ap, ComponentRegistry as b, Label as c, BrickSource as d, CollectionStatus as e, CollectionBrick as f, SingleStatus as g, SingleBrick as h, TextField as i, SlugField as j, DateRangeField as k, TimeField as l, MarkdownField as m, MoneyField as n, BooleanField as o, Field as p, RefField as q, ChoiceField as r, Holiday as s, HolidayCalendar as t, StoredHolidays as u, ListField as v, LongTextField as w, FileField as x, HolidayCalendarName as y };