@ankhorage/templates 1.6.0 → 1.7.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.
Files changed (153) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +14 -4
  3. package/dist/internal/zora-nodes.d.ts +19 -1
  4. package/dist/internal/zora-nodes.d.ts.map +1 -1
  5. package/dist/internal/zora-nodes.js.map +1 -1
  6. package/dist/templates/starter/categories/business-productivity/index.d.ts.map +1 -1
  7. package/dist/templates/starter/categories/business-productivity/index.js +7 -0
  8. package/dist/templates/starter/categories/business-productivity/index.js.map +1 -1
  9. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/content.d.ts +190 -0
  10. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/content.d.ts.map +1 -0
  11. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/content.js +236 -0
  12. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/content.js.map +1 -0
  13. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/index.d.ts +2 -0
  14. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/index.d.ts.map +1 -0
  15. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/index.js +2 -0
  16. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/index.js.map +1 -0
  17. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/routes.d.ts +7 -0
  18. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/routes.d.ts.map +1 -0
  19. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/routes.js +21 -0
  20. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/routes.js.map +1 -0
  21. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/screens.d.ts +4 -0
  22. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/screens.d.ts.map +1 -0
  23. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/screens.js +41 -0
  24. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/screens.js.map +1 -0
  25. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/template.d.ts +4 -0
  26. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/template.d.ts.map +1 -0
  27. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/template.js +27 -0
  28. package/dist/templates/starter/categories/business-productivity/urban-water-monitor/template.js.map +1 -0
  29. package/dist/templates/starter/categories/food-drink/index.js +1 -1
  30. package/dist/templates/starter/categories/food-drink/index.js.map +1 -1
  31. package/dist/templates/starter/categories/food-drink/{content.nutrition-catalog-scan.d.ts → nutrition-catalog-scan/content.d.ts} +1 -1
  32. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/content.d.ts.map +1 -0
  33. package/dist/templates/starter/categories/food-drink/{content.nutrition-catalog-scan.js → nutrition-catalog-scan/content.js} +1 -1
  34. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/content.js.map +1 -0
  35. package/dist/templates/starter/categories/food-drink/{data.nutrition-catalog-scan.d.ts → nutrition-catalog-scan/data.d.ts} +1 -1
  36. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/data.d.ts.map +1 -0
  37. package/dist/templates/starter/categories/food-drink/{data.nutrition-catalog-scan.js → nutrition-catalog-scan/data.js} +1 -1
  38. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/data.js.map +1 -0
  39. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/index.d.ts +2 -0
  40. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/index.d.ts.map +1 -0
  41. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/index.js +2 -0
  42. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/index.js.map +1 -0
  43. package/dist/templates/starter/categories/food-drink/{routes.nutrition-catalog-scan.d.ts → nutrition-catalog-scan/routes.d.ts} +1 -1
  44. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/routes.d.ts.map +1 -0
  45. package/dist/templates/starter/categories/food-drink/{routes.nutrition-catalog-scan.js → nutrition-catalog-scan/routes.js} +8 -35
  46. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/routes.js.map +1 -0
  47. package/dist/templates/starter/categories/food-drink/{screens.nutrition-catalog-scan.d.ts → nutrition-catalog-scan/screens.d.ts} +3 -3
  48. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/screens.d.ts.map +1 -0
  49. package/dist/templates/starter/categories/food-drink/{screens.nutrition-catalog-scan.js → nutrition-catalog-scan/screens.js} +85 -94
  50. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/screens.js.map +1 -0
  51. package/dist/templates/starter/categories/food-drink/{nutrition-catalog-scan.template.d.ts → nutrition-catalog-scan/template.d.ts} +2 -2
  52. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/template.d.ts.map +1 -0
  53. package/dist/templates/starter/categories/food-drink/{nutrition-catalog-scan.template.js → nutrition-catalog-scan/template.js} +8 -8
  54. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan/template.js.map +1 -0
  55. package/dist/templates/starter/categories/games/{chess.content.d.ts → chess/content.d.ts} +1 -1
  56. package/dist/templates/starter/categories/games/chess/content.d.ts.map +1 -0
  57. package/dist/templates/starter/categories/games/{chess.content.js → chess/content.js} +1 -1
  58. package/dist/templates/starter/categories/games/chess/content.js.map +1 -0
  59. package/dist/templates/starter/categories/games/chess/index.d.ts +2 -0
  60. package/dist/templates/starter/categories/games/chess/index.d.ts.map +1 -0
  61. package/dist/templates/starter/categories/games/chess/index.js +2 -0
  62. package/dist/templates/starter/categories/games/chess/index.js.map +1 -0
  63. package/dist/templates/starter/categories/games/{chess.routes.d.ts → chess/routes.d.ts} +1 -1
  64. package/dist/templates/starter/categories/games/chess/routes.d.ts.map +1 -0
  65. package/dist/templates/starter/categories/games/{chess.routes.js → chess/routes.js} +2 -2
  66. package/dist/templates/starter/categories/games/chess/routes.js.map +1 -0
  67. package/dist/templates/starter/categories/games/{chess.screens.d.ts → chess/screens.d.ts} +3 -3
  68. package/dist/templates/starter/categories/games/chess/screens.d.ts.map +1 -0
  69. package/dist/templates/starter/categories/games/{chess.screens.js → chess/screens.js} +3 -3
  70. package/dist/templates/starter/categories/games/chess/screens.js.map +1 -0
  71. package/dist/templates/starter/categories/games/{chess.template.d.ts → chess/template.d.ts} +2 -2
  72. package/dist/templates/starter/categories/games/chess/template.d.ts.map +1 -0
  73. package/dist/templates/starter/categories/games/{chess.template.js → chess/template.js} +5 -5
  74. package/dist/templates/starter/categories/games/chess/template.js.map +1 -0
  75. package/dist/templates/starter/categories/games/index.js +2 -2
  76. package/dist/templates/starter/categories/games/index.js.map +1 -1
  77. package/dist/templates/starter/categories/games/{poker.content.d.ts → poker/content.d.ts} +1 -1
  78. package/dist/templates/starter/categories/games/poker/content.d.ts.map +1 -0
  79. package/dist/templates/starter/categories/games/{poker.content.js → poker/content.js} +1 -1
  80. package/dist/templates/starter/categories/games/poker/content.js.map +1 -0
  81. package/dist/templates/starter/categories/games/{poker.data.d.ts → poker/data.d.ts} +1 -1
  82. package/dist/templates/starter/categories/games/poker/data.d.ts.map +1 -0
  83. package/dist/templates/starter/categories/games/{poker.data.js → poker/data.js} +1 -1
  84. package/dist/templates/starter/categories/games/poker/data.js.map +1 -0
  85. package/dist/templates/starter/categories/games/poker/index.d.ts +2 -0
  86. package/dist/templates/starter/categories/games/poker/index.d.ts.map +1 -0
  87. package/dist/templates/starter/categories/games/poker/index.js +2 -0
  88. package/dist/templates/starter/categories/games/poker/index.js.map +1 -0
  89. package/dist/templates/starter/categories/games/{poker.routes.d.ts → poker/routes.d.ts} +1 -1
  90. package/dist/templates/starter/categories/games/poker/routes.d.ts.map +1 -0
  91. package/dist/templates/starter/categories/games/{poker.routes.js → poker/routes.js} +2 -2
  92. package/dist/templates/starter/categories/games/poker/routes.js.map +1 -0
  93. package/dist/templates/starter/categories/games/{poker.screens.d.ts → poker/screens.d.ts} +3 -3
  94. package/dist/templates/starter/categories/games/poker/screens.d.ts.map +1 -0
  95. package/dist/templates/starter/categories/games/{poker.screens.js → poker/screens.js} +4 -4
  96. package/dist/templates/starter/categories/games/poker/screens.js.map +1 -0
  97. package/dist/templates/starter/categories/games/{poker.template.d.ts → poker/template.d.ts} +2 -2
  98. package/dist/templates/starter/categories/games/poker/template.d.ts.map +1 -0
  99. package/dist/templates/starter/categories/games/{poker.template.js → poker/template.js} +5 -5
  100. package/dist/templates/starter/categories/games/poker/template.js.map +1 -0
  101. package/dist/templates/starter/categories/social-community/creator/index.d.ts +2 -0
  102. package/dist/templates/starter/categories/social-community/creator/index.d.ts.map +1 -0
  103. package/dist/templates/starter/categories/social-community/creator/index.js +2 -0
  104. package/dist/templates/starter/categories/social-community/creator/index.js.map +1 -0
  105. package/dist/templates/starter/categories/social-community/{routes.creator.d.ts → creator/routes.d.ts} +1 -1
  106. package/dist/templates/starter/categories/social-community/creator/routes.d.ts.map +1 -0
  107. package/dist/templates/starter/categories/social-community/{routes.creator.js → creator/routes.js} +2 -2
  108. package/dist/templates/starter/categories/social-community/creator/routes.js.map +1 -0
  109. package/dist/templates/starter/categories/social-community/{screens.creator.d.ts → creator/screens.d.ts} +3 -3
  110. package/dist/templates/starter/categories/social-community/creator/screens.d.ts.map +1 -0
  111. package/dist/templates/starter/categories/social-community/{screens.creator.js → creator/screens.js} +3 -3
  112. package/dist/templates/starter/categories/social-community/creator/screens.js.map +1 -0
  113. package/dist/templates/starter/categories/social-community/{creator.template.d.ts → creator/template.d.ts} +2 -2
  114. package/dist/templates/starter/categories/social-community/creator/template.d.ts.map +1 -0
  115. package/dist/templates/starter/categories/social-community/{creator.template.js → creator/template.js} +5 -5
  116. package/dist/templates/starter/categories/social-community/creator/template.js.map +1 -0
  117. package/dist/templates/starter/categories/social-community/index.js +1 -1
  118. package/dist/templates/starter/categories/social-community/index.js.map +1 -1
  119. package/package.json +1 -1
  120. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.d.ts.map +0 -1
  121. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.js.map +0 -1
  122. package/dist/templates/starter/categories/food-drink/data.nutrition-catalog-scan.d.ts.map +0 -1
  123. package/dist/templates/starter/categories/food-drink/data.nutrition-catalog-scan.js.map +0 -1
  124. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.d.ts.map +0 -1
  125. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.js.map +0 -1
  126. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.d.ts.map +0 -1
  127. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.js.map +0 -1
  128. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.d.ts.map +0 -1
  129. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.js.map +0 -1
  130. package/dist/templates/starter/categories/games/chess.content.d.ts.map +0 -1
  131. package/dist/templates/starter/categories/games/chess.content.js.map +0 -1
  132. package/dist/templates/starter/categories/games/chess.routes.d.ts.map +0 -1
  133. package/dist/templates/starter/categories/games/chess.routes.js.map +0 -1
  134. package/dist/templates/starter/categories/games/chess.screens.d.ts.map +0 -1
  135. package/dist/templates/starter/categories/games/chess.screens.js.map +0 -1
  136. package/dist/templates/starter/categories/games/chess.template.d.ts.map +0 -1
  137. package/dist/templates/starter/categories/games/chess.template.js.map +0 -1
  138. package/dist/templates/starter/categories/games/poker.content.d.ts.map +0 -1
  139. package/dist/templates/starter/categories/games/poker.content.js.map +0 -1
  140. package/dist/templates/starter/categories/games/poker.data.d.ts.map +0 -1
  141. package/dist/templates/starter/categories/games/poker.data.js.map +0 -1
  142. package/dist/templates/starter/categories/games/poker.routes.d.ts.map +0 -1
  143. package/dist/templates/starter/categories/games/poker.routes.js.map +0 -1
  144. package/dist/templates/starter/categories/games/poker.screens.d.ts.map +0 -1
  145. package/dist/templates/starter/categories/games/poker.screens.js.map +0 -1
  146. package/dist/templates/starter/categories/games/poker.template.d.ts.map +0 -1
  147. package/dist/templates/starter/categories/games/poker.template.js.map +0 -1
  148. package/dist/templates/starter/categories/social-community/creator.template.d.ts.map +0 -1
  149. package/dist/templates/starter/categories/social-community/creator.template.js.map +0 -1
  150. package/dist/templates/starter/categories/social-community/routes.creator.d.ts.map +0 -1
  151. package/dist/templates/starter/categories/social-community/routes.creator.js.map +0 -1
  152. package/dist/templates/starter/categories/social-community/screens.creator.d.ts.map +0 -1
  153. package/dist/templates/starter/categories/social-community/screens.creator.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @ankhorage/templates
2
2
 
3
+ ## 1.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 5ebfab7: Add the `urban-water-monitor` starter variant under Business & Productivity.
8
+
9
+ The new template introduces a single Project screen for an event-based urban water monitoring concept, covering field campaigns, sampling workflows, lab result handling, API strategy, data trust, stakeholder communication, MVP scope, and future screens.
10
+
11
+ Also reorganize existing named starter variants into per-template folders under their category directories while preserving public template IDs, labels, descriptions, and generated manifest behavior.
12
+
13
+ ## 1.7.0
14
+
15
+ ### Minor Changes
16
+
17
+ - 368456f: Make the nutrition scanner starter useful with Products, Scan, Stats, and Profile tabs plus direct ZORA scanner and product grid nodes.
18
+
3
19
  ## 1.6.0
4
20
 
5
21
  ### Minor Changes
package/README.md CHANGED
@@ -98,6 +98,8 @@ The fallback template remains available and is used only for unknown runtime cat
98
98
 
99
99
  Additional variants:
100
100
 
101
+ - `business_productivity/urban-water-monitor`: Project. This urban water monitoring concept
102
+ starter uses a single `project` route and keeps API strategy as Project screen copy only.
101
103
  - `games/chess`: Home · Settings. The Home screen renders a `ChessBoard` node with a static
102
104
  initial FEN and requires generated apps to provide `@ankhorage/zora-chess` through their
103
105
  extension registry.
@@ -115,14 +117,22 @@ in `@ankhorage/contracts` before this package registers templates for them.
115
117
 
116
118
  ## Adding A Category Template
117
119
 
118
- Add category-owned files under `src/templates/starter/categories/<category>/`:
120
+ Add category-owned default files under `src/templates/starter/categories/<category>/`:
119
121
 
120
122
  - `content.ts` for category-specific copy and placeholder data
121
- - `routes.ts` or `routes.<variant>.ts` for route names, labels, screen ids, and icons
122
- - `screens.ts` or `screens.<variant>.ts` for ZORA node trees
123
- - `<variant>.template.ts` for manifest assembly
123
+ - `routes.ts` for route names, labels, screen ids, and icons
124
+ - `screens.ts` for ZORA node trees
125
+ - `default.template.ts` for manifest assembly
124
126
  - `index.ts` for `CategoryStarterTemplateDefinition` metadata
125
127
 
128
+ Add named non-default variants in their own folder:
129
+
130
+ - `src/templates/starter/categories/<category>/<template-id>/content.ts`
131
+ - `src/templates/starter/categories/<category>/<template-id>/routes.ts`
132
+ - `src/templates/starter/categories/<category>/<template-id>/screens.ts`
133
+ - `src/templates/starter/categories/<category>/<template-id>/template.ts`
134
+ - `src/templates/starter/categories/<category>/<template-id>/index.ts`
135
+
126
136
  Register the category in `src/templates/starter/starter.registry.ts`. Keep shared behavior in
127
137
  `src/templates/shared/*`; category wording and navigation should stay inside the category folder.
128
138
 
@@ -1,5 +1,5 @@
1
1
  import type { UiNode } from '@ankhorage/contracts';
2
- import type { ButtonProps, CardProps, InputProps } from '@ankhorage/zora';
2
+ import type { ButtonProps, CardProps, GridProps, InputProps } from '@ankhorage/zora';
3
3
  import type { EmptyStateProps, NoticeProps, OAuthProviderListProps, PanelProps } from '@ankhorage/zora';
4
4
  import type { ScreenProps, ScreenSectionProps } from '@ankhorage/zora';
5
5
  import type { SectionHeaderProps, SettingsRowProps } from '@ankhorage/zora';
@@ -54,6 +54,22 @@ type SerializableEmptyStateProps = Omit<EmptyStateProps, 'description' | 'eyebro
54
54
  eyebrow?: string;
55
55
  footer?: string;
56
56
  };
57
+ type SerializableGridProps = SerializableProps<Omit<GridProps, 'children'>>;
58
+ type SerializableBarcodeScannerViewProps = SerializableProps<{
59
+ permissionStatus: 'unknown' | 'requesting' | 'granted' | 'denied';
60
+ title?: string;
61
+ description?: string;
62
+ overlayTitle?: string;
63
+ overlayDescription?: string;
64
+ cornerLabel?: string;
65
+ requestPermissionLabel?: string;
66
+ deniedPermissionLabel?: string;
67
+ manualEntryLabel?: string;
68
+ onBarcodeScanned?: string;
69
+ onManualEntry?: string;
70
+ onRequestPermission?: string;
71
+ testID?: string;
72
+ }>;
57
73
  interface SerializableOAuthProviderIconSpec {
58
74
  name: string;
59
75
  provider?: string;
@@ -86,11 +102,13 @@ type SerializableChessBoardProps = SerializableProps<{
86
102
  testID?: string;
87
103
  }>;
88
104
  export interface ZoraNodePropsByType {
105
+ BarcodeScannerView: SerializableBarcodeScannerViewProps;
89
106
  Button: SerializableButtonProps;
90
107
  Card: SerializableCardProps;
91
108
  ChessBoard: SerializableChessBoardProps;
92
109
  EmptyState: SerializableEmptyStateProps;
93
110
  FormField: SerializableFormFieldProps;
111
+ Grid: SerializableGridProps;
94
112
  Input: SerializableInputProps;
95
113
  Notice: SerializableNoticeProps;
96
114
  OAuthProviderList: SerializableOAuthProviderListProps;
@@ -1 +1 @@
1
- {"version":3,"file":"zora-nodes.d.ts","sourceRoot":"","sources":["../../src/internal/zora-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zora-nodes.d.ts","sourceRoot":"","sources":["../../src/internal/zora-nodes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zora-nodes.js","sourceRoot":"","sources":["../../src/internal/zora-nodes.ts"],"names":[],"mappings":"AAiKA,MAAM,UAAU,cAAc,CAC5B,EAAU,EACV,IAAW,EACX,KAAkC,EAClC,QAAqB;IAErB,OAAO;QACL,EAAE;QACF,IAAI;QACJ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"zora-nodes.js","sourceRoot":"","sources":["../../src/internal/zora-nodes.ts"],"names":[],"mappings":"AAmLA,MAAM,UAAU,cAAc,CAC5B,EAAU,EACV,IAAW,EACX,KAAkC,EAClC,QAAqB;IAErB,OAAO;QACL,EAAE;QACF,IAAI;QACJ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/business-productivity/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yCAAyC,EAAE,MAAM,oBAAoB,CAAC;AAE/E,eAAO,MAAM,oCAAoC;;;;;GAQO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/business-productivity/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yCAAyC,EAAE,MAAM,oBAAoB,CAAC;AAG/E,eAAO,MAAM,oCAAoC;;;;;GAeO,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { createBusinessProductivityStarterTemplate } from './default.template';
2
+ import { createUrbanWaterMonitorStarterTemplate } from './urban-water-monitor';
2
3
  export const businessProductivityStarterTemplates = [
3
4
  {
4
5
  id: 'default',
@@ -6,5 +7,11 @@ export const businessProductivityStarterTemplates = [
6
7
  description: 'A dashboard, projects, tasks, calendar, reports, and settings starter for productivity apps.',
7
8
  create: createBusinessProductivityStarterTemplate,
8
9
  },
10
+ {
11
+ id: 'urban-water-monitor',
12
+ label: 'Urban Water Monitor',
13
+ description: 'An event-based urban water quality monitoring and field-campaign concept starter.',
14
+ create: createUrbanWaterMonitorStarterTemplate,
15
+ },
9
16
  ];
10
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/business-productivity/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yCAAyC,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,CAAC,MAAM,oCAAoC,GAAG;IAClD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,8FAA8F;QAChG,MAAM,EAAE,yCAAyC;KAClD;CACqD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/business-productivity/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yCAAyC,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,sCAAsC,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,CAAC,MAAM,oCAAoC,GAAG;IAClD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,8FAA8F;QAChG,MAAM,EAAE,yCAAyC;KAClD;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,mFAAmF;QACrF,MAAM,EAAE,sCAAsC;KAC/C;CACqD,CAAC"}
@@ -0,0 +1,190 @@
1
+ interface UrbanWaterMonitorCardContent {
2
+ readonly eyebrow: string;
3
+ readonly title: string;
4
+ readonly description: string;
5
+ }
6
+ export interface UrbanWaterMonitorSectionContent {
7
+ readonly title: string;
8
+ readonly description: string;
9
+ readonly cards: readonly UrbanWaterMonitorCardContent[];
10
+ }
11
+ export declare const urbanWaterMonitorProjectContent: {
12
+ readonly eyebrow: "Project";
13
+ readonly title: "Urban Water Monitor";
14
+ readonly description: "Event-based monitoring for urban water quality, field campaigns, and stakeholder communication.";
15
+ readonly sections: readonly [{
16
+ readonly title: "Product Vision";
17
+ readonly description: "Urban Water Monitor is an event-based monitoring and campaign-management app for urban water quality. It connects weather events, hydrological context, sampling workflows, passive samplers, lab results, infrastructure assets, and stakeholder communication.";
18
+ readonly cards: readonly [{
19
+ readonly eyebrow: "Purpose";
20
+ readonly title: "Plan and explain monitoring campaigns";
21
+ readonly description: "Help teams decide where and when monitoring is most useful, document field work properly, and explain findings to different audiences.";
22
+ }, {
23
+ readonly eyebrow: "Scope";
24
+ readonly title: "Context plus verified evidence";
25
+ readonly description: "Connect public environmental data with field monitoring workflows, professional sampling, passive sampler campaigns, lab results, and clear communication.";
26
+ }];
27
+ }, {
28
+ readonly title: "Problem";
29
+ readonly description: "Urban water quality is difficult to monitor because relevant pollution often appears during short, dynamic events. A single sample can miss the most important moment.";
30
+ readonly cards: readonly [{
31
+ readonly eyebrow: "Event peaks";
32
+ readonly title: "Short windows matter";
33
+ readonly description: "Rainfall, runoff, traffic surfaces, combined sewer overflows, infrastructure, land use, and seasonal conditions can influence what enters a water body.";
34
+ }, {
35
+ readonly eyebrow: "Interpretation";
36
+ readonly title: "Sampling needs context";
37
+ readonly description: "Sampling without event context is hard to interpret, lab results often arrive later, and stakeholders need different levels of detail.";
38
+ }];
39
+ }, {
40
+ readonly title: "Core Idea";
41
+ readonly description: "The app should become an operating system for urban water monitoring by combining live context data, plans, observations, sampling tasks, passive sampler deployments, laboratory results, and communication layers.";
42
+ readonly cards: readonly [{
43
+ readonly eyebrow: "Question";
44
+ readonly title: "Where, when, and why should we monitor?";
45
+ readonly description: "Identify event windows worth sampling, guide field teams through documented workflows, and link every sample to time, place, weather, hydrology, and method.";
46
+ }, {
47
+ readonly eyebrow: "Views";
48
+ readonly title: "Role-specific interpretation";
49
+ readonly description: "Turn complex monitoring records into views for researchers, authorities, municipalities, utilities, NGOs, field teams, and public-interest audiences.";
50
+ }];
51
+ }, {
52
+ readonly title: "Data Sources and API Integrations";
53
+ readonly description: "Urban Water Monitor is designed around a concrete integration strategy. Public APIs provide context, while field and lab workflows provide monitoring evidence.";
54
+ readonly cards: readonly [{
55
+ readonly eyebrow: "Official production APIs";
56
+ readonly title: "Weather, radar, geodata, and catalogue sources";
57
+ readonly description: "Use MeteoSwiss Open Data via data.geo.admin.ch STAC for rainfall, weather station context, and radar precipitation; use geo.admin.ch / Federal Spatial Data Infrastructure for map layers, feature lookup, and spatial context; use the opendata.swiss CKAN API for dataset discovery and source provenance.";
58
+ }, {
59
+ readonly eyebrow: "Regional open data";
60
+ readonly title: "Cantonal and municipal resources";
61
+ readonly description: "Support station metadata, hydrometric datasets, WFS, WMS, CSV, GeoPackage, and SHP resources as optional regional connectors, starting with structured imports where available.";
62
+ }, {
63
+ readonly eyebrow: "Prototype-only APIs";
64
+ readonly title: "Fast demos without production claims";
65
+ readonly description: "Existenz.ch Hydro and SwissMetNet JSON APIs can accelerate prototypes, but must be marked prototype-only and must not become the source of truth for verified monitoring decisions.";
66
+ }, {
67
+ readonly eyebrow: "Internal field and lab data";
68
+ readonly title: "App-owned monitoring evidence";
69
+ readonly description: "Campaigns, monitoring locations, rain events, sampling tasks, samples, passive samplers, field observations, photos, lab results, QA/QC flags, pollutants, reports, and stakeholder notes are internal app data.";
70
+ }, {
71
+ readonly eyebrow: "Future standards";
72
+ readonly title: "Interoperability path";
73
+ readonly description: "OGC SensorThings API can support future sensor interoperability, and OGC WaterML 2.0 can support future hydrological time-series exchange.";
74
+ }, {
75
+ readonly eyebrow: "Trust label";
76
+ readonly title: "Context is not confirmation";
77
+ readonly description: "External context data supports decisions. Verified field and lab records provide monitoring evidence. Modelled risk scores are decision-support indicators, not confirmed pollution measurements.";
78
+ }];
79
+ }, {
80
+ readonly title: "Monitoring Workflow";
81
+ readonly description: "The app should support professional monitoring campaigns from planning to interpretation.";
82
+ readonly cards: readonly [{
83
+ readonly eyebrow: "Plan";
84
+ readonly title: "Define the campaign";
85
+ readonly description: "Define objectives, select locations and catchments, define event triggers, assign sampling tasks, and prepare field checklists.";
86
+ }, {
87
+ readonly eyebrow: "Document";
88
+ readonly title: "Capture field and lab records";
89
+ readonly description: "Deploy passive samplers or collect grab and composite samples, register samples with QR codes, document field conditions, import laboratory results, and add QA/QC notes.";
90
+ }, {
91
+ readonly eyebrow: "Interpret";
92
+ readonly title: "Report with event context";
93
+ readonly description: "Validate data, interpret results in event context, and generate stakeholder-specific reports.";
94
+ }];
95
+ }, {
96
+ readonly title: "App Modules";
97
+ readonly description: "The complete app can grow into several planned product areas after this first Project screen.";
98
+ readonly cards: readonly [{
99
+ readonly eyebrow: "Operations";
100
+ readonly title: "Monitoring and field work";
101
+ readonly description: "Map Dashboard, Event Timeline, Sampling Planner, Passive Sampler Manager, Lab Result Import, Reports and Exports.";
102
+ }, {
103
+ readonly eyebrow: "Knowledge";
104
+ readonly title: "Context and interpretation";
105
+ readonly description: "Pollutant Library, Risk Scoring, Blue-Green Infrastructure Monitor, Citizen Observations, Stakeholder Portal, Admin and Permissions.";
106
+ }];
107
+ }, {
108
+ readonly title: "Stakeholder Views";
109
+ readonly description: "Different users need different levels of detail, so the app should support role-specific views instead of showing the same dashboard to everyone.";
110
+ readonly cards: readonly [{
111
+ readonly eyebrow: "Technical";
112
+ readonly title: "Research, utility, field, and admin views";
113
+ readonly description: "Research View for raw data, methods, uncertainty, QA/QC, and exports; Utility View for early warning context and stations; Field Team View for tasks, QR codes, photos, and sample status; Admin View for users, permissions, and data sources.";
114
+ }, {
115
+ readonly eyebrow: "Decision and public";
116
+ readonly title: "Municipality and public views";
117
+ readonly description: "Municipality View focuses on hotspots, infrastructure, actions, and summaries. Public View uses simple explanations, status, observations, and education.";
118
+ }];
119
+ }, {
120
+ readonly title: "Risk and Event Logic";
121
+ readonly description: "The app should include transparent event and risk logic. Risk scores should help prioritize monitoring, not present absolute truth.";
122
+ readonly cards: readonly [{
123
+ readonly eyebrow: "Factors";
124
+ readonly title: "Event signals";
125
+ readonly description: "Rain intensity, dry period before rainfall, runoff potential, traffic or sealed surface influence, hydrological response, nearby infrastructure, previous observations, and lab result trends.";
126
+ }, {
127
+ readonly eyebrow: "Rule";
128
+ readonly title: "Decision-support indicator";
129
+ readonly description: "Risk scores are decision-support indicators, not verified pollution measurements.";
130
+ }];
131
+ }, {
132
+ readonly title: "Blue-Green Infrastructure";
133
+ readonly description: "The app should help track blue-green infrastructure and its potential role in reducing runoff, delaying peaks, improving infiltration, or supporting treatment.";
134
+ readonly cards: readonly [{
135
+ readonly eyebrow: "Assets";
136
+ readonly title: "Mitigation inventory";
137
+ readonly description: "Retention basins, infiltration areas, green roofs, constructed wetlands, rain gardens, permeable surfaces, swales, and sponge-city elements.";
138
+ }, {
139
+ readonly eyebrow: "Fields";
140
+ readonly title: "Monitoring connection";
141
+ readonly description: "Track asset type, location, catchment, design capacity, maintenance status, related monitoring stations, before/after event comparison, photos, and inspections.";
142
+ }];
143
+ }, {
144
+ readonly title: "Pollutant Library";
145
+ readonly description: "The app should contain a structured pollutant library that explains relevant pollutant groups and how they relate to urban water systems.";
146
+ readonly cards: readonly [{
147
+ readonly eyebrow: "Metadata";
148
+ readonly title: "Searchable substance context";
149
+ readonly description: "Store name, substance group, CAS number where applicable, sources, pathways, measurement method, detection limits, quality criteria, ecotoxicological relevance, persistence, transformation products, and public explanation.";
150
+ }, {
151
+ readonly eyebrow: "Groups";
152
+ readonly title: "Relevant pollutant groups";
153
+ readonly description: "PFAS, pesticides, biocides, pharmaceuticals, tire-wear related compounds, heavy metals, nutrients, microplastics, and organic micropollutants.";
154
+ }];
155
+ }, {
156
+ readonly title: "Data Trust and Communication";
157
+ readonly description: "The app must clearly communicate data trust levels. A field observation is not the same as a laboratory-confirmed result, and a modelled risk score is not a measured concentration.";
158
+ readonly cards: readonly [{
159
+ readonly eyebrow: "Trust levels";
160
+ readonly title: "Separate evidence types";
161
+ readonly description: "Public open data, field observation, sensor measurement, laboratory result, modelled estimate, and expert-reviewed interpretation must remain distinct.";
162
+ }, {
163
+ readonly eyebrow: "Communication";
164
+ readonly title: "Useful without false certainty";
165
+ readonly description: "Avoid false certainty, show uncertainty where relevant, explain what is known and unknown, separate raw data from interpretation, and keep public communication understandable and non-alarmist.";
166
+ }];
167
+ }, {
168
+ readonly title: "MVP Scope";
169
+ readonly description: "The first useful MVP should focus on event context and monitoring workflow, not on measuring every pollutant live.";
170
+ readonly cards: readonly [{
171
+ readonly eyebrow: "Included";
172
+ readonly title: "Realistic first product surface";
173
+ readonly description: "Project overview, map with monitoring locations, mock hydrology stations, mock rain events, event timeline, sampling planner, passive sampler records, lab result import placeholder, pollutant library starter, stakeholder placeholders, and role-based navigation structure.";
174
+ }, {
175
+ readonly eyebrow: "Excluded";
176
+ readonly title: "No unsupported claims";
177
+ readonly description: "Real-time measurement of complex micropollutants, automated regulatory decisions, public alarm systems, unverified pollution claims, and attribution to external inspiration sources are out of scope.";
178
+ }];
179
+ }, {
180
+ readonly title: "Future Screens";
181
+ readonly description: "The first template iteration only adds the Project screen. Future issues should define the operational screens.";
182
+ readonly cards: readonly [{
183
+ readonly eyebrow: "Planned";
184
+ readonly title: "Operational navigation later";
185
+ readonly description: "Dashboard, Map, Events, Monitoring Campaigns, Samples, Passive Samplers, Lab Results, Pollutant Library, Infrastructure, Observations, Reports, Stakeholders, and Settings.";
186
+ }];
187
+ }];
188
+ };
189
+ export {};
190
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../../../src/templates/starter/categories/business-productivity/urban-water-monitor/content.ts"],"names":[],"mappings":"AAAA,UAAU,4BAA4B;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACzD;AAED,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsRlC,CAAC"}
@@ -0,0 +1,236 @@
1
+ export const urbanWaterMonitorProjectContent = {
2
+ eyebrow: 'Project',
3
+ title: 'Urban Water Monitor',
4
+ description: 'Event-based monitoring for urban water quality, field campaigns, and stakeholder communication.',
5
+ sections: [
6
+ {
7
+ title: 'Product Vision',
8
+ description: 'Urban Water Monitor is an event-based monitoring and campaign-management app for urban water quality. It connects weather events, hydrological context, sampling workflows, passive samplers, lab results, infrastructure assets, and stakeholder communication.',
9
+ cards: [
10
+ {
11
+ eyebrow: 'Purpose',
12
+ title: 'Plan and explain monitoring campaigns',
13
+ description: 'Help teams decide where and when monitoring is most useful, document field work properly, and explain findings to different audiences.',
14
+ },
15
+ {
16
+ eyebrow: 'Scope',
17
+ title: 'Context plus verified evidence',
18
+ description: 'Connect public environmental data with field monitoring workflows, professional sampling, passive sampler campaigns, lab results, and clear communication.',
19
+ },
20
+ ],
21
+ },
22
+ {
23
+ title: 'Problem',
24
+ description: 'Urban water quality is difficult to monitor because relevant pollution often appears during short, dynamic events. A single sample can miss the most important moment.',
25
+ cards: [
26
+ {
27
+ eyebrow: 'Event peaks',
28
+ title: 'Short windows matter',
29
+ description: 'Rainfall, runoff, traffic surfaces, combined sewer overflows, infrastructure, land use, and seasonal conditions can influence what enters a water body.',
30
+ },
31
+ {
32
+ eyebrow: 'Interpretation',
33
+ title: 'Sampling needs context',
34
+ description: 'Sampling without event context is hard to interpret, lab results often arrive later, and stakeholders need different levels of detail.',
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ title: 'Core Idea',
40
+ description: 'The app should become an operating system for urban water monitoring by combining live context data, plans, observations, sampling tasks, passive sampler deployments, laboratory results, and communication layers.',
41
+ cards: [
42
+ {
43
+ eyebrow: 'Question',
44
+ title: 'Where, when, and why should we monitor?',
45
+ description: 'Identify event windows worth sampling, guide field teams through documented workflows, and link every sample to time, place, weather, hydrology, and method.',
46
+ },
47
+ {
48
+ eyebrow: 'Views',
49
+ title: 'Role-specific interpretation',
50
+ description: 'Turn complex monitoring records into views for researchers, authorities, municipalities, utilities, NGOs, field teams, and public-interest audiences.',
51
+ },
52
+ ],
53
+ },
54
+ {
55
+ title: 'Data Sources and API Integrations',
56
+ description: 'Urban Water Monitor is designed around a concrete integration strategy. Public APIs provide context, while field and lab workflows provide monitoring evidence.',
57
+ cards: [
58
+ {
59
+ eyebrow: 'Official production APIs',
60
+ title: 'Weather, radar, geodata, and catalogue sources',
61
+ description: 'Use MeteoSwiss Open Data via data.geo.admin.ch STAC for rainfall, weather station context, and radar precipitation; use geo.admin.ch / Federal Spatial Data Infrastructure for map layers, feature lookup, and spatial context; use the opendata.swiss CKAN API for dataset discovery and source provenance.',
62
+ },
63
+ {
64
+ eyebrow: 'Regional open data',
65
+ title: 'Cantonal and municipal resources',
66
+ description: 'Support station metadata, hydrometric datasets, WFS, WMS, CSV, GeoPackage, and SHP resources as optional regional connectors, starting with structured imports where available.',
67
+ },
68
+ {
69
+ eyebrow: 'Prototype-only APIs',
70
+ title: 'Fast demos without production claims',
71
+ description: 'Existenz.ch Hydro and SwissMetNet JSON APIs can accelerate prototypes, but must be marked prototype-only and must not become the source of truth for verified monitoring decisions.',
72
+ },
73
+ {
74
+ eyebrow: 'Internal field and lab data',
75
+ title: 'App-owned monitoring evidence',
76
+ description: 'Campaigns, monitoring locations, rain events, sampling tasks, samples, passive samplers, field observations, photos, lab results, QA/QC flags, pollutants, reports, and stakeholder notes are internal app data.',
77
+ },
78
+ {
79
+ eyebrow: 'Future standards',
80
+ title: 'Interoperability path',
81
+ description: 'OGC SensorThings API can support future sensor interoperability, and OGC WaterML 2.0 can support future hydrological time-series exchange.',
82
+ },
83
+ {
84
+ eyebrow: 'Trust label',
85
+ title: 'Context is not confirmation',
86
+ description: 'External context data supports decisions. Verified field and lab records provide monitoring evidence. Modelled risk scores are decision-support indicators, not confirmed pollution measurements.',
87
+ },
88
+ ],
89
+ },
90
+ {
91
+ title: 'Monitoring Workflow',
92
+ description: 'The app should support professional monitoring campaigns from planning to interpretation.',
93
+ cards: [
94
+ {
95
+ eyebrow: 'Plan',
96
+ title: 'Define the campaign',
97
+ description: 'Define objectives, select locations and catchments, define event triggers, assign sampling tasks, and prepare field checklists.',
98
+ },
99
+ {
100
+ eyebrow: 'Document',
101
+ title: 'Capture field and lab records',
102
+ description: 'Deploy passive samplers or collect grab and composite samples, register samples with QR codes, document field conditions, import laboratory results, and add QA/QC notes.',
103
+ },
104
+ {
105
+ eyebrow: 'Interpret',
106
+ title: 'Report with event context',
107
+ description: 'Validate data, interpret results in event context, and generate stakeholder-specific reports.',
108
+ },
109
+ ],
110
+ },
111
+ {
112
+ title: 'App Modules',
113
+ description: 'The complete app can grow into several planned product areas after this first Project screen.',
114
+ cards: [
115
+ {
116
+ eyebrow: 'Operations',
117
+ title: 'Monitoring and field work',
118
+ description: 'Map Dashboard, Event Timeline, Sampling Planner, Passive Sampler Manager, Lab Result Import, Reports and Exports.',
119
+ },
120
+ {
121
+ eyebrow: 'Knowledge',
122
+ title: 'Context and interpretation',
123
+ description: 'Pollutant Library, Risk Scoring, Blue-Green Infrastructure Monitor, Citizen Observations, Stakeholder Portal, Admin and Permissions.',
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ title: 'Stakeholder Views',
129
+ description: 'Different users need different levels of detail, so the app should support role-specific views instead of showing the same dashboard to everyone.',
130
+ cards: [
131
+ {
132
+ eyebrow: 'Technical',
133
+ title: 'Research, utility, field, and admin views',
134
+ description: 'Research View for raw data, methods, uncertainty, QA/QC, and exports; Utility View for early warning context and stations; Field Team View for tasks, QR codes, photos, and sample status; Admin View for users, permissions, and data sources.',
135
+ },
136
+ {
137
+ eyebrow: 'Decision and public',
138
+ title: 'Municipality and public views',
139
+ description: 'Municipality View focuses on hotspots, infrastructure, actions, and summaries. Public View uses simple explanations, status, observations, and education.',
140
+ },
141
+ ],
142
+ },
143
+ {
144
+ title: 'Risk and Event Logic',
145
+ description: 'The app should include transparent event and risk logic. Risk scores should help prioritize monitoring, not present absolute truth.',
146
+ cards: [
147
+ {
148
+ eyebrow: 'Factors',
149
+ title: 'Event signals',
150
+ description: 'Rain intensity, dry period before rainfall, runoff potential, traffic or sealed surface influence, hydrological response, nearby infrastructure, previous observations, and lab result trends.',
151
+ },
152
+ {
153
+ eyebrow: 'Rule',
154
+ title: 'Decision-support indicator',
155
+ description: 'Risk scores are decision-support indicators, not verified pollution measurements.',
156
+ },
157
+ ],
158
+ },
159
+ {
160
+ title: 'Blue-Green Infrastructure',
161
+ description: 'The app should help track blue-green infrastructure and its potential role in reducing runoff, delaying peaks, improving infiltration, or supporting treatment.',
162
+ cards: [
163
+ {
164
+ eyebrow: 'Assets',
165
+ title: 'Mitigation inventory',
166
+ description: 'Retention basins, infiltration areas, green roofs, constructed wetlands, rain gardens, permeable surfaces, swales, and sponge-city elements.',
167
+ },
168
+ {
169
+ eyebrow: 'Fields',
170
+ title: 'Monitoring connection',
171
+ description: 'Track asset type, location, catchment, design capacity, maintenance status, related monitoring stations, before/after event comparison, photos, and inspections.',
172
+ },
173
+ ],
174
+ },
175
+ {
176
+ title: 'Pollutant Library',
177
+ description: 'The app should contain a structured pollutant library that explains relevant pollutant groups and how they relate to urban water systems.',
178
+ cards: [
179
+ {
180
+ eyebrow: 'Metadata',
181
+ title: 'Searchable substance context',
182
+ description: 'Store name, substance group, CAS number where applicable, sources, pathways, measurement method, detection limits, quality criteria, ecotoxicological relevance, persistence, transformation products, and public explanation.',
183
+ },
184
+ {
185
+ eyebrow: 'Groups',
186
+ title: 'Relevant pollutant groups',
187
+ description: 'PFAS, pesticides, biocides, pharmaceuticals, tire-wear related compounds, heavy metals, nutrients, microplastics, and organic micropollutants.',
188
+ },
189
+ ],
190
+ },
191
+ {
192
+ title: 'Data Trust and Communication',
193
+ description: 'The app must clearly communicate data trust levels. A field observation is not the same as a laboratory-confirmed result, and a modelled risk score is not a measured concentration.',
194
+ cards: [
195
+ {
196
+ eyebrow: 'Trust levels',
197
+ title: 'Separate evidence types',
198
+ description: 'Public open data, field observation, sensor measurement, laboratory result, modelled estimate, and expert-reviewed interpretation must remain distinct.',
199
+ },
200
+ {
201
+ eyebrow: 'Communication',
202
+ title: 'Useful without false certainty',
203
+ description: 'Avoid false certainty, show uncertainty where relevant, explain what is known and unknown, separate raw data from interpretation, and keep public communication understandable and non-alarmist.',
204
+ },
205
+ ],
206
+ },
207
+ {
208
+ title: 'MVP Scope',
209
+ description: 'The first useful MVP should focus on event context and monitoring workflow, not on measuring every pollutant live.',
210
+ cards: [
211
+ {
212
+ eyebrow: 'Included',
213
+ title: 'Realistic first product surface',
214
+ description: 'Project overview, map with monitoring locations, mock hydrology stations, mock rain events, event timeline, sampling planner, passive sampler records, lab result import placeholder, pollutant library starter, stakeholder placeholders, and role-based navigation structure.',
215
+ },
216
+ {
217
+ eyebrow: 'Excluded',
218
+ title: 'No unsupported claims',
219
+ description: 'Real-time measurement of complex micropollutants, automated regulatory decisions, public alarm systems, unverified pollution claims, and attribution to external inspiration sources are out of scope.',
220
+ },
221
+ ],
222
+ },
223
+ {
224
+ title: 'Future Screens',
225
+ description: 'The first template iteration only adds the Project screen. Future issues should define the operational screens.',
226
+ cards: [
227
+ {
228
+ eyebrow: 'Planned',
229
+ title: 'Operational navigation later',
230
+ description: 'Dashboard, Map, Events, Monitoring Campaigns, Samples, Passive Samplers, Lab Results, Pollutant Library, Infrastructure, Observations, Reports, Stakeholders, and Settings.',
231
+ },
232
+ ],
233
+ },
234
+ ],
235
+ };
236
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../../../src/templates/starter/categories/business-productivity/urban-water-monitor/content.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,iGAAiG;IACnG,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,kQAAkQ;YACpQ,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,uCAAuC;oBAC9C,WAAW,EACT,wIAAwI;iBAC3I;gBACD;oBACE,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,gCAAgC;oBACvC,WAAW,EACT,4JAA4J;iBAC/J;aACF;SACF;QACD;YACE,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,wKAAwK;YAC1K,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,sBAAsB;oBAC7B,WAAW,EACT,yJAAyJ;iBAC5J;gBACD;oBACE,OAAO,EAAE,gBAAgB;oBACzB,KAAK,EAAE,wBAAwB;oBAC/B,WAAW,EACT,wIAAwI;iBAC3I;aACF;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,WAAW,EACT,sNAAsN;YACxN,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,yCAAyC;oBAChD,WAAW,EACT,8JAA8J;iBACjK;gBACD;oBACE,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,8BAA8B;oBACrC,WAAW,EACT,uJAAuJ;iBAC1J;aACF;SACF;QACD;YACE,KAAK,EAAE,mCAAmC;YAC1C,WAAW,EACT,iKAAiK;YACnK,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,0BAA0B;oBACnC,KAAK,EAAE,gDAAgD;oBACvD,WAAW,EACT,8SAA8S;iBACjT;gBACD;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,KAAK,EAAE,kCAAkC;oBACzC,WAAW,EACT,iLAAiL;iBACpL;gBACD;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,KAAK,EAAE,sCAAsC;oBAC7C,WAAW,EACT,qLAAqL;iBACxL;gBACD;oBACE,OAAO,EAAE,6BAA6B;oBACtC,KAAK,EAAE,+BAA+B;oBACtC,WAAW,EACT,kNAAkN;iBACrN;gBACD;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,KAAK,EAAE,uBAAuB;oBAC9B,WAAW,EACT,4IAA4I;iBAC/I;gBACD;oBACE,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,6BAA6B;oBACpC,WAAW,EACT,mMAAmM;iBACtM;aACF;SACF;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EACT,2FAA2F;YAC7F,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,qBAAqB;oBAC5B,WAAW,EACT,iIAAiI;iBACpI;gBACD;oBACE,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,+BAA+B;oBACtC,WAAW,EACT,2KAA2K;iBAC9K;gBACD;oBACE,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE,2BAA2B;oBAClC,WAAW,EACT,+FAA+F;iBAClG;aACF;SACF;QACD;YACE,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,+FAA+F;YACjG,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE,2BAA2B;oBAClC,WAAW,EACT,mHAAmH;iBACtH;gBACD;oBACE,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EACT,sIAAsI;iBACzI;aACF;SACF;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EACT,mJAAmJ;YACrJ,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE,2CAA2C;oBAClD,WAAW,EACT,iPAAiP;iBACpP;gBACD;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,KAAK,EAAE,+BAA+B;oBACtC,WAAW,EACT,2JAA2J;iBAC9J;aACF;SACF;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,qIAAqI;YACvI,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,eAAe;oBACtB,WAAW,EACT,gMAAgM;iBACnM;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EACT,mFAAmF;iBACtF;aACF;SACF;QACD;YACE,KAAK,EAAE,2BAA2B;YAClC,WAAW,EACT,iKAAiK;YACnK,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,sBAAsB;oBAC7B,WAAW,EACT,8IAA8I;iBACjJ;gBACD;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,uBAAuB;oBAC9B,WAAW,EACT,kKAAkK;iBACrK;aACF;SACF;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EACT,2IAA2I;YAC7I,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,8BAA8B;oBACrC,WAAW,EACT,gOAAgO;iBACnO;gBACD;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE,2BAA2B;oBAClC,WAAW,EACT,gJAAgJ;iBACnJ;aACF;SACF;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,WAAW,EACT,sLAAsL;YACxL,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,cAAc;oBACvB,KAAK,EAAE,yBAAyB;oBAChC,WAAW,EACT,yJAAyJ;iBAC5J;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,gCAAgC;oBACvC,WAAW,EACT,kMAAkM;iBACrM;aACF;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,WAAW,EACT,oHAAoH;YACtH,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,iCAAiC;oBACxC,WAAW,EACT,iRAAiR;iBACpR;gBACD;oBACE,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,uBAAuB;oBAC9B,WAAW,EACT,wMAAwM;iBAC3M;aACF;SACF;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,iHAAiH;YACnH,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,8BAA8B;oBACrC,WAAW,EACT,6KAA6K;iBAChL;aACF;SACF;KACF;CACO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createUrbanWaterMonitorStarterTemplate } from './template';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/templates/starter/categories/business-productivity/urban-water-monitor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createUrbanWaterMonitorStarterTemplate } from './template';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/templates/starter/categories/business-productivity/urban-water-monitor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ export interface UrbanWaterMonitorScreenIds {
3
+ project: string;
4
+ }
5
+ export declare function createUrbanWaterMonitorScreenIds(idPrefix: string): UrbanWaterMonitorScreenIds;
6
+ export declare function createUrbanWaterMonitorNavigator(screenIds: UrbanWaterMonitorScreenIds): AppManifest['navigator'];
7
+ //# sourceMappingURL=routes.d.ts.map