@ankhorage/templates 1.3.3 → 1.4.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 (36) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +8 -0
  3. package/dist/templates/shared/create-manifest-shell.d.ts +0 -1
  4. package/dist/templates/shared/create-manifest-shell.d.ts.map +1 -1
  5. package/dist/templates/shared/create-manifest-shell.js +1 -8
  6. package/dist/templates/shared/create-manifest-shell.js.map +1 -1
  7. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.d.ts +92 -0
  8. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.d.ts.map +1 -0
  9. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.js +188 -0
  10. package/dist/templates/starter/categories/food-drink/content.nutrition-catalog-scan.js.map +1 -0
  11. package/dist/templates/starter/categories/food-drink/index.d.ts.map +1 -1
  12. package/dist/templates/starter/categories/food-drink/index.js +7 -0
  13. package/dist/templates/starter/categories/food-drink/index.js.map +1 -1
  14. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.d.ts +4 -0
  15. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.d.ts.map +1 -0
  16. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.js +17 -0
  17. package/dist/templates/starter/categories/food-drink/nutrition-catalog-scan.template.js.map +1 -0
  18. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.d.ts +13 -0
  19. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.d.ts.map +1 -0
  20. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.js +51 -0
  21. package/dist/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.js.map +1 -0
  22. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.d.ts +5 -0
  23. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.d.ts.map +1 -0
  24. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.js +184 -0
  25. package/dist/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.js.map +1 -0
  26. package/dist/templates/starter/categories/games/poker.data.d.ts +2 -4
  27. package/dist/templates/starter/categories/games/poker.data.d.ts.map +1 -1
  28. package/dist/templates/starter/categories/games/poker.data.js +7 -94
  29. package/dist/templates/starter/categories/games/poker.data.js.map +1 -1
  30. package/dist/templates/starter/categories/games/poker.screens.d.ts.map +1 -1
  31. package/dist/templates/starter/categories/games/poker.screens.js +7 -7
  32. package/dist/templates/starter/categories/games/poker.screens.js.map +1 -1
  33. package/dist/templates/starter/categories/games/poker.template.d.ts.map +1 -1
  34. package/dist/templates/starter/categories/games/poker.template.js +0 -2
  35. package/dist/templates/starter/categories/games/poker.template.js.map +1 -1
  36. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhorage/templates
2
2
 
3
+ ## 1.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - aea3450: Add a `food_drink/nutrition-catalog-scan` starter manifest for Swiss nutrition product catalog apps with ZORA-first product browsing, scan-to-add capture flow, and API Gateway integration guidance.
8
+
9
+ ## 1.3.4
10
+
11
+ ### Patch Changes
12
+
13
+ - 7f7c6a8: Keep the poker/card trainer starter API-neutral by removing generated `poker_situations` manifest data and switching sample table copy from `Hero` to `User` terminology.
14
+
3
15
  ## 1.3.3
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -101,6 +101,14 @@ Additional variants:
101
101
  - `games/chess`: Home · Settings. The Home screen renders a `ChessBoard` node with a static
102
102
  initial FEN and requires generated apps to provide `@ankhorage/zora-chess` through their
103
103
  extension registry.
104
+ - `food_drink/nutrition-catalog-scan`: Products · Scan · Capture · Queue · Settings. This
105
+ catalog-first Swiss nutrition starter expects API Gateway clients for `GET /v1/nutrition/products`,
106
+ `GET /v1/nutrition/products/by-barcode/{barcode}`, and `POST /v1/nutrition/products/capture`.
107
+ It intentionally keeps Supabase out of the generated app surface. Native barcode scanning can use
108
+ `expo-camera` behind an app adapter, while permission prompts, scan overlays, loading states,
109
+ form fields, buttons, notices, and product cards should be composed through ZORA. A reusable
110
+ `BarcodeScannerView` / `CameraPermissionView` belongs in ZORA once the scanner API stabilizes,
111
+ not in Surface.
104
112
  - `social_community/creator`: Studio · Posts · Audience · Insights · Settings
105
113
 
106
114
  Only categories that exist in `AppCategory` are registered. New category literals should be added
@@ -10,7 +10,6 @@ export declare function createManifestShell(args: {
10
10
  version: string;
11
11
  navigator: AppManifest['navigator'];
12
12
  screens: AppManifest['screens'];
13
- data?: AppManifest['data'];
14
13
  }): AppManifestWithSplashScreen;
15
14
  export {};
16
15
  //# sourceMappingURL=create-manifest-shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-manifest-shell.d.ts","sourceRoot":"","sources":["../../../src/templates/shared/create-manifest-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAsB,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEvF,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B,GAAG,2BAA2B,CAyB9B"}
1
+ {"version":3,"file":"create-manifest-shell.d.ts","sourceRoot":"","sources":["../../../src/templates/shared/create-manifest-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAsB,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEvF,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACjC,GAAG,2BAA2B,CAgB9B"}
@@ -1,7 +1,7 @@
1
1
  import { BASE_INFRA, BASE_SETTINGS } from '../../internal/defaults';
2
2
  import { createSplashScreen } from './splash-screen';
3
3
  export function createManifestShell(args) {
4
- const manifest = {
4
+ return {
5
5
  metadata: {
6
6
  name: args.seed.appName,
7
7
  slug: args.seed.slug,
@@ -16,12 +16,5 @@ export function createManifestShell(args) {
16
16
  navigator: args.navigator,
17
17
  screens: args.screens,
18
18
  };
19
- if (!args.data) {
20
- return manifest;
21
- }
22
- return {
23
- ...manifest,
24
- data: args.data,
25
- };
26
19
  }
27
20
  //# sourceMappingURL=create-manifest-shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-manifest-shell.js","sourceRoot":"","sources":["../../../src/templates/shared/create-manifest-shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAoC,MAAM,iBAAiB,CAAC;AAOvF,MAAM,UAAU,mBAAmB,CAAC,IAOnC;IACC,MAAM,QAAQ,GAAgC;QAC5C,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;SACvB;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QAC5B,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-manifest-shell.js","sourceRoot":"","sources":["../../../src/templates/shared/create-manifest-shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAoC,MAAM,iBAAiB,CAAC;AAOvF,MAAM,UAAU,mBAAmB,CAAC,IAMnC;IACC,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;SACvB;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QAC5B,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,92 @@
1
+ export declare const nutritionCatalogScanContent: {
2
+ catalog: {
3
+ eyebrow: string;
4
+ title: string;
5
+ description: string;
6
+ sections: {
7
+ title: string;
8
+ description: string;
9
+ cards: {
10
+ eyebrow: string;
11
+ title: string;
12
+ description: string;
13
+ }[];
14
+ }[];
15
+ };
16
+ detail: {
17
+ eyebrow: string;
18
+ title: string;
19
+ description: string;
20
+ sections: {
21
+ title: string;
22
+ description: string;
23
+ cards: {
24
+ eyebrow: string;
25
+ title: string;
26
+ description: string;
27
+ }[];
28
+ }[];
29
+ };
30
+ scan: {
31
+ eyebrow: string;
32
+ title: string;
33
+ description: string;
34
+ sections: {
35
+ title: string;
36
+ description: string;
37
+ cards: {
38
+ eyebrow: string;
39
+ title: string;
40
+ description: string;
41
+ }[];
42
+ }[];
43
+ };
44
+ capture: {
45
+ eyebrow: string;
46
+ title: string;
47
+ description: string;
48
+ sections: {
49
+ title: string;
50
+ description: string;
51
+ cards: {
52
+ eyebrow: string;
53
+ title: string;
54
+ description: string;
55
+ }[];
56
+ }[];
57
+ };
58
+ success: {
59
+ eyebrow: string;
60
+ title: string;
61
+ description: string;
62
+ sections: {
63
+ title: string;
64
+ description: string;
65
+ cards: {
66
+ eyebrow: string;
67
+ title: string;
68
+ description: string;
69
+ }[];
70
+ }[];
71
+ };
72
+ queue: {
73
+ eyebrow: string;
74
+ title: string;
75
+ description: string;
76
+ sections: {
77
+ title: string;
78
+ description: string;
79
+ cards: {
80
+ eyebrow: string;
81
+ title: string;
82
+ description: string;
83
+ }[];
84
+ }[];
85
+ };
86
+ settings: {
87
+ eyebrow: string;
88
+ title: string;
89
+ description: string;
90
+ };
91
+ };
92
+ //# sourceMappingURL=content.nutrition-catalog-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.nutrition-catalog-scan.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/content.nutrition-catalog-scan.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmNvC,CAAC"}
@@ -0,0 +1,188 @@
1
+ export const nutritionCatalogScanContent = {
2
+ catalog: {
3
+ eyebrow: 'Swiss product catalog',
4
+ title: 'Available products',
5
+ description: 'Browse published products from the API Gateway and use the primary scan action to add more products from Swiss stores.',
6
+ sections: [
7
+ {
8
+ title: 'Catalog feed',
9
+ description: 'Backed by the planned GET /v1/nutrition/products endpoint with search, pagination, and store-chain filters.',
10
+ cards: [
11
+ {
12
+ eyebrow: 'Migros · published',
13
+ title: 'Bio Greek Yogurt 250 g',
14
+ description: 'Example published product card with brand, quantity, barcode, and confidence metadata.',
15
+ },
16
+ {
17
+ eyebrow: 'Coop · published',
18
+ title: 'Haferdrink Barista 1 l',
19
+ description: 'Catalog items should render with ZORA cards and never read directly from Supabase.',
20
+ },
21
+ {
22
+ eyebrow: 'Denner · candidate',
23
+ title: 'Protein Quark Vanilla',
24
+ description: 'The template reserves room for recent captures once review and publish flows are available.',
25
+ },
26
+ ],
27
+ },
28
+ {
29
+ title: 'Primary contribution action',
30
+ description: 'The scan CTA is the main way to grow the database while keeping browsing useful for users who do not scan yet.',
31
+ cards: [
32
+ {
33
+ eyebrow: 'Main CTA',
34
+ title: 'Scan barcode',
35
+ description: 'Open the scanner, normalize barcode digits, then lookup or create a queued capture submission.',
36
+ },
37
+ {
38
+ eyebrow: 'Fallback',
39
+ title: 'Enter barcode manually',
40
+ description: 'Useful on web, simulator, denied camera permission, or damaged retail labels.',
41
+ },
42
+ ],
43
+ },
44
+ ],
45
+ },
46
+ detail: {
47
+ eyebrow: 'Published product',
48
+ title: 'Product detail',
49
+ description: 'Show barcode, brand, quantity, confidence, store observations, and nutrition facts from the public lookup model.',
50
+ sections: [
51
+ {
52
+ title: 'Product summary',
53
+ description: 'A product detail screen for data returned by the API Gateway.',
54
+ cards: [
55
+ {
56
+ eyebrow: 'Primary barcode',
57
+ title: '7612345678901 · EAN-13',
58
+ description: 'Barcode values are normalized by removing non-digits before lookup.',
59
+ },
60
+ {
61
+ eyebrow: 'Nutrition facts',
62
+ title: 'Per 100 g values',
63
+ description: 'Energy, protein, carbohydrates, sugars, fat, saturated fat, fiber, salt, and sodium can appear once published.',
64
+ },
65
+ ],
66
+ },
67
+ ],
68
+ },
69
+ scan: {
70
+ eyebrow: 'Scan to add',
71
+ title: 'Scan barcode',
72
+ description: 'Use expo-camera under a local adapter now and migrate the visible scanner and permission states into ZORA later.',
73
+ sections: [
74
+ {
75
+ title: 'Camera permission',
76
+ description: 'Permission prompts, denied states, retry actions, and manual entry fallback should be composed from ZORA UI.',
77
+ cards: [
78
+ {
79
+ eyebrow: 'Native capability',
80
+ title: 'expo-camera barcode scanner',
81
+ description: 'The native camera dependency should stay isolated behind a small scanner adapter, not leak into generic templates.',
82
+ },
83
+ {
84
+ eyebrow: 'Future ZORA component',
85
+ title: 'BarcodeScannerView',
86
+ description: 'A reusable ZORA scanner wrapper can own permission UI, scan overlay, loading, and error states.',
87
+ },
88
+ ],
89
+ },
90
+ {
91
+ title: 'Lookup branch',
92
+ description: 'After scanning, call GET /v1/nutrition/products/by-barcode/{barcode}.',
93
+ cards: [
94
+ {
95
+ eyebrow: 'Found',
96
+ title: 'Open product detail',
97
+ description: 'A 200 response opens the product detail screen for the published product.',
98
+ },
99
+ {
100
+ eyebrow: 'Unknown',
101
+ title: 'Create capture',
102
+ description: 'A 404 response is expected for unknown barcodes and opens the capture form.',
103
+ },
104
+ ],
105
+ },
106
+ ],
107
+ },
108
+ capture: {
109
+ eyebrow: 'Queued contribution',
110
+ title: 'Capture missing product',
111
+ description: 'Collect the minimal data needed to create a queued capture submission through the API Gateway.',
112
+ sections: [
113
+ {
114
+ title: 'Required fields',
115
+ description: 'Keep the first PR fast and field-friendly.',
116
+ cards: [
117
+ {
118
+ eyebrow: 'Product identity',
119
+ title: 'Name, brand, quantity',
120
+ description: 'The barcode is prefilled from the scanner or manual input.',
121
+ },
122
+ {
123
+ eyebrow: 'Store observation',
124
+ title: 'Store chain and location label',
125
+ description: 'Country defaults to CH with de-CH client locale for the Swiss MVP.',
126
+ },
127
+ {
128
+ eyebrow: 'Photos placeholder',
129
+ title: 'Front, nutrition, ingredients, barcode',
130
+ description: 'Real image upload is intentionally deferred; capture image paths stay API-shaped.',
131
+ },
132
+ ],
133
+ },
134
+ ],
135
+ },
136
+ success: {
137
+ eyebrow: 'Submission queued',
138
+ title: 'Thanks — product queued',
139
+ description: 'The API returns a submission id and queued status. Publishing happens later through review/merge tooling.',
140
+ sections: [
141
+ {
142
+ title: 'Next actions',
143
+ description: 'Keep contributors in the scan loop.',
144
+ cards: [
145
+ {
146
+ eyebrow: 'Continue',
147
+ title: 'Scan another product',
148
+ description: 'Return to the scan screen for fast in-store collection.',
149
+ },
150
+ {
151
+ eyebrow: 'Review',
152
+ title: 'Open local queue',
153
+ description: 'Inspect pending or failed submissions once offline retry is wired.',
154
+ },
155
+ ],
156
+ },
157
+ ],
158
+ },
159
+ queue: {
160
+ eyebrow: 'Offline-ready shell',
161
+ title: 'Capture queue',
162
+ description: 'A simple local queue abstraction prepares the template for offline retry without overbuilding the first PR.',
163
+ sections: [
164
+ {
165
+ title: 'Queue states',
166
+ description: 'Use ZORA cards and notices for pending, failed, and submitted items.',
167
+ cards: [
168
+ {
169
+ eyebrow: 'Pending',
170
+ title: 'Waiting for connection',
171
+ description: 'Submissions can be stored locally with anonymousDeviceId and clientCapturedAt.',
172
+ },
173
+ {
174
+ eyebrow: 'Failed',
175
+ title: 'Retry required',
176
+ description: 'Keep failures visible instead of silently dropping field data.',
177
+ },
178
+ ],
179
+ },
180
+ ],
181
+ },
182
+ settings: {
183
+ eyebrow: 'Field scanner settings',
184
+ title: 'Settings',
185
+ description: 'Configuration for API Gateway base URL, locale, app version, and anonymous device id.',
186
+ },
187
+ };
188
+ //# sourceMappingURL=content.nutrition-catalog-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.nutrition-catalog-scan.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/content.nutrition-catalog-scan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,yBAAyB;;;;;GAOkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAGpE,eAAO,MAAM,yBAAyB;;;;;GAckB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { createFoodDrinkStarterTemplate } from './default.template';
2
+ import { createNutritionCatalogScanStarterTemplate } from './nutrition-catalog-scan.template';
2
3
  export const foodDrinkStarterTemplates = [
3
4
  {
4
5
  id: 'default',
@@ -6,5 +7,11 @@ export const foodDrinkStarterTemplates = [
6
7
  description: 'A discover, menu, reservations, orders, and profile starter for food apps.',
7
8
  create: createFoodDrinkStarterTemplate,
8
9
  },
10
+ {
11
+ id: 'nutrition-catalog-scan',
12
+ label: 'Nutrition catalog scan',
13
+ description: 'A Swiss product catalog starter with ZORA-first product browsing and scan-to-add capture flow.',
14
+ create: createNutritionCatalogScanStarterTemplate,
15
+ },
9
16
  ];
10
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,4EAA4E;QACzF,MAAM,EAAE,8BAA8B;KACvC;CACqD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,yCAAyC,EAAE,MAAM,mCAAmC,CAAC;AAE9F,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,4EAA4E;QACzF,MAAM,EAAE,8BAA8B;KACvC;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,gGAAgG;QAClG,MAAM,EAAE,yCAAyC;KAClD;CACqD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ import type { TemplateSeed } from '../../starter.types';
3
+ export declare function createNutritionCatalogScanStarterTemplate(seed: TemplateSeed): AppManifest;
4
+ //# sourceMappingURL=nutrition-catalog-scan.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nutrition-catalog-scan.template.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/nutrition-catalog-scan.template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOxD,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAYzF"}
@@ -0,0 +1,17 @@
1
+ import { DEFAULT_TEMPLATE_VERSION } from '../../../../internal/defaults';
2
+ import { createManifestShell, createTheme } from '../../../shared';
3
+ import { createNutritionCatalogScanNavigator, createNutritionCatalogScanScreenIds, } from './routes.nutrition-catalog-scan';
4
+ import { createNutritionCatalogScanScreens } from './screens.nutrition-catalog-scan';
5
+ export function createNutritionCatalogScanStarterTemplate(seed) {
6
+ const idPrefix = `${seed.category}-nutrition-catalog-scan`;
7
+ const theme = createTheme(seed);
8
+ const screenIds = createNutritionCatalogScanScreenIds(idPrefix);
9
+ return createManifestShell({
10
+ seed,
11
+ theme,
12
+ version: seed.version ?? DEFAULT_TEMPLATE_VERSION,
13
+ navigator: createNutritionCatalogScanNavigator(screenIds),
14
+ screens: createNutritionCatalogScanScreens(seed, idPrefix, screenIds),
15
+ });
16
+ }
17
+ //# sourceMappingURL=nutrition-catalog-scan.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nutrition-catalog-scan.template.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/nutrition-catalog-scan.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EACL,mCAAmC,EACnC,mCAAmC,GACpC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAErF,MAAM,UAAU,yCAAyC,CAAC,IAAkB;IAC1E,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,yBAAyB,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IAEhE,OAAO,mBAAmB,CAAC;QACzB,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,wBAAwB;QACjD,SAAS,EAAE,mCAAmC,CAAC,SAAS,CAAC;QACzD,OAAO,EAAE,iCAAiC,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;KACtE,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ export interface NutritionCatalogScanScreenIds {
3
+ readonly catalog: string;
4
+ readonly detail: string;
5
+ readonly scan: string;
6
+ readonly capture: string;
7
+ readonly success: string;
8
+ readonly queue: string;
9
+ readonly settings: string;
10
+ }
11
+ export declare function createNutritionCatalogScanScreenIds(idPrefix: string): NutritionCatalogScanScreenIds;
12
+ export declare function createNutritionCatalogScanNavigator(screenIds: NutritionCatalogScanScreenIds): AppManifest['navigator'];
13
+ //# sourceMappingURL=routes.nutrition-catalog-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.nutrition-catalog-scan.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,MAAM,GACf,6BAA6B,CAU/B;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,6BAA6B,GACvC,WAAW,CAAC,WAAW,CAAC,CAqC1B"}
@@ -0,0 +1,51 @@
1
+ import { createRoute } from '../../../shared';
2
+ export function createNutritionCatalogScanScreenIds(idPrefix) {
3
+ return {
4
+ catalog: `${idPrefix}-catalog`,
5
+ detail: `${idPrefix}-detail`,
6
+ scan: `${idPrefix}-scan`,
7
+ capture: `${idPrefix}-capture`,
8
+ success: `${idPrefix}-success`,
9
+ queue: `${idPrefix}-queue`,
10
+ settings: `${idPrefix}-settings`,
11
+ };
12
+ }
13
+ export function createNutritionCatalogScanNavigator(screenIds) {
14
+ return {
15
+ type: 'tabs',
16
+ initialRouteName: 'index',
17
+ routes: [
18
+ createRoute({
19
+ name: 'index',
20
+ screenId: screenIds.catalog,
21
+ label: 'Products',
22
+ icon: { provider: 'material-community', name: 'barcode-scan' },
23
+ }),
24
+ createRoute({
25
+ name: 'scan',
26
+ screenId: screenIds.scan,
27
+ label: 'Scan',
28
+ icon: { provider: 'material-community', name: 'camera-outline' },
29
+ }),
30
+ createRoute({
31
+ name: 'capture',
32
+ screenId: screenIds.capture,
33
+ label: 'Capture',
34
+ icon: { provider: 'material-community', name: 'package-variant-plus' },
35
+ }),
36
+ createRoute({
37
+ name: 'queue',
38
+ screenId: screenIds.queue,
39
+ label: 'Queue',
40
+ icon: { provider: 'material-community', name: 'tray-full' },
41
+ }),
42
+ createRoute({
43
+ name: 'settings',
44
+ screenId: screenIds.settings,
45
+ label: 'Settings',
46
+ icon: { provider: 'material-community', name: 'cog-outline' },
47
+ }),
48
+ ],
49
+ };
50
+ }
51
+ //# sourceMappingURL=routes.nutrition-catalog-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.nutrition-catalog-scan.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/routes.nutrition-catalog-scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAY9C,MAAM,UAAU,mCAAmC,CACjD,QAAgB;IAEhB,OAAO;QACL,OAAO,EAAE,GAAG,QAAQ,UAAU;QAC9B,MAAM,EAAE,GAAG,QAAQ,SAAS;QAC5B,IAAI,EAAE,GAAG,QAAQ,OAAO;QACxB,OAAO,EAAE,GAAG,QAAQ,UAAU;QAC9B,OAAO,EAAE,GAAG,QAAQ,UAAU;QAC9B,KAAK,EAAE,GAAG,QAAQ,QAAQ;QAC1B,QAAQ,EAAE,GAAG,QAAQ,WAAW;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,SAAwC;IAExC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,gBAAgB,EAAE,OAAO;QACzB,MAAM,EAAE;YACN,WAAW,CAAC;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS,CAAC,OAAO;gBAC3B,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE;aAC/D,CAAC;YACF,WAAW,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,SAAS,CAAC,IAAI;gBACxB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE;aACjE,CAAC;YACF,WAAW,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS,CAAC,OAAO;gBAC3B,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,sBAAsB,EAAE;aACvE,CAAC;YACF,WAAW,CAAC;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS,CAAC,KAAK;gBACzB,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE;aAC5D,CAAC;YACF,WAAW,CAAC;gBACV,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE;aAC9D,CAAC;SACH;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ import type { TemplateSeed } from '../../starter.types';
3
+ import type { NutritionCatalogScanScreenIds } from './routes.nutrition-catalog-scan';
4
+ export declare function createNutritionCatalogScanScreens(seed: TemplateSeed, idPrefix: string, screenIds: NutritionCatalogScanScreenIds): AppManifest['screens'];
5
+ //# sourceMappingURL=screens.nutrition-catalog-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens.nutrition-catalog-scan.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAUxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AA4IrF,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,6BAA6B,GACvC,WAAW,CAAC,SAAS,CAAC,CA2GxB"}
@@ -0,0 +1,184 @@
1
+ import { createScreen, createScreenRoot, createSection, createSettingsSection, createZoraNode, } from '../../../shared';
2
+ import { nutritionCatalogScanContent } from './content.nutrition-catalog-scan';
3
+ function createContentScreen(args) {
4
+ const idSegment = args.name.toLowerCase().replaceAll(' ', '-');
5
+ const sectionNodes = args.content.sections.map((section, sectionIndex) => createSection(`${args.idPrefix}-${idSegment}-section-${sectionIndex + 1}`, { title: section.title, description: section.description }, [
6
+ createZoraNode(`${args.idPrefix}-${idSegment}-panel-${sectionIndex + 1}`, 'Panel', { title: section.title, description: section.description, tone: 'subtle' }, section.cards.map((card, cardIndex) => createZoraNode(`${args.idPrefix}-${idSegment}-card-${sectionIndex + 1}-${cardIndex + 1}`, 'Card', {
7
+ eyebrow: card.eyebrow,
8
+ title: card.title,
9
+ description: card.description,
10
+ tone: 'outline',
11
+ }))),
12
+ ]));
13
+ return createScreen({
14
+ id: args.screenId,
15
+ name: args.name,
16
+ title: args.content.title,
17
+ description: args.content.description,
18
+ root: createScreenRoot(`${args.idPrefix}-${idSegment}-screen`, { width: 'wide' }, [
19
+ createZoraNode(`${args.idPrefix}-${idSegment}-header`, 'SectionHeader', {
20
+ eyebrow: args.content.eyebrow,
21
+ title: args.content.title,
22
+ description: args.content.description,
23
+ }),
24
+ ...(args.headerActions ?? []),
25
+ ...sectionNodes,
26
+ ]),
27
+ });
28
+ }
29
+ function createCatalogActions(idPrefix) {
30
+ return [
31
+ createZoraNode(`${idPrefix}-catalog-search-field`, 'FormField', {
32
+ label: 'Search products',
33
+ description: 'Search by product name, brand, barcode, or store chain.',
34
+ }),
35
+ createZoraNode(`${idPrefix}-catalog-search-input`, 'Input', {
36
+ placeholder: 'Search Migros, Coop, barcode...',
37
+ autoCapitalize: 'none',
38
+ size: 'm',
39
+ }),
40
+ createZoraNode(`${idPrefix}-catalog-scan-button`, 'Button', {
41
+ children: 'Scan barcode',
42
+ color: 'primary',
43
+ size: 'm',
44
+ fullWidth: true,
45
+ }),
46
+ ];
47
+ }
48
+ function createScannerNotice(idPrefix) {
49
+ return createZoraNode(`${idPrefix}-scan-zora-notice`, 'Notice', {
50
+ title: 'Scanner implementation note',
51
+ description: 'Use expo-camera behind a local adapter now. Promote reusable permission, overlay, and scanner UI into ZORA later.',
52
+ color: 'primary',
53
+ });
54
+ }
55
+ function createCaptureFormPreview(idPrefix) {
56
+ return createZoraNode(`${idPrefix}-capture-form-panel`, 'Panel', {
57
+ title: 'Minimal capture form',
58
+ description: 'Prioritize fast in-store entry over OCR or review workflow complexity.',
59
+ tone: 'subtle',
60
+ }, [
61
+ createZoraNode(`${idPrefix}-capture-barcode-field`, 'FormField', {
62
+ label: 'Barcode',
63
+ description: 'Prefilled from scan or manual entry; normalized before API calls.',
64
+ required: true,
65
+ }),
66
+ createZoraNode(`${idPrefix}-capture-barcode-input`, 'Input', {
67
+ placeholder: '7612345678901',
68
+ keyboardType: 'number-pad',
69
+ size: 'm',
70
+ }),
71
+ createZoraNode(`${idPrefix}-capture-name-field`, 'FormField', {
72
+ label: 'Product name',
73
+ description: 'Required by the minimal request.',
74
+ required: true,
75
+ }),
76
+ createZoraNode(`${idPrefix}-capture-name-input`, 'Input', {
77
+ placeholder: 'Product name',
78
+ size: 'm',
79
+ }),
80
+ createZoraNode(`${idPrefix}-capture-submit-button`, 'Button', {
81
+ children: 'Submit queued capture',
82
+ color: 'primary',
83
+ size: 'm',
84
+ fullWidth: true,
85
+ }),
86
+ ]);
87
+ }
88
+ export function createNutritionCatalogScanScreens(seed, idPrefix, screenIds) {
89
+ return {
90
+ [screenIds.catalog]: createContentScreen({
91
+ idPrefix,
92
+ screenId: screenIds.catalog,
93
+ name: 'Products',
94
+ content: nutritionCatalogScanContent.catalog,
95
+ headerActions: createCatalogActions(idPrefix),
96
+ }),
97
+ [screenIds.detail]: createContentScreen({
98
+ idPrefix,
99
+ screenId: screenIds.detail,
100
+ name: 'Product Detail',
101
+ content: nutritionCatalogScanContent.detail,
102
+ }),
103
+ [screenIds.scan]: createContentScreen({
104
+ idPrefix,
105
+ screenId: screenIds.scan,
106
+ name: 'Scan',
107
+ content: nutritionCatalogScanContent.scan,
108
+ headerActions: [createScannerNotice(idPrefix)],
109
+ }),
110
+ [screenIds.capture]: createContentScreen({
111
+ idPrefix,
112
+ screenId: screenIds.capture,
113
+ name: 'Capture',
114
+ content: nutritionCatalogScanContent.capture,
115
+ headerActions: [createCaptureFormPreview(idPrefix)],
116
+ }),
117
+ [screenIds.success]: createContentScreen({
118
+ idPrefix,
119
+ screenId: screenIds.success,
120
+ name: 'Capture Success',
121
+ content: nutritionCatalogScanContent.success,
122
+ }),
123
+ [screenIds.queue]: createContentScreen({
124
+ idPrefix,
125
+ screenId: screenIds.queue,
126
+ name: 'Queue',
127
+ content: nutritionCatalogScanContent.queue,
128
+ }),
129
+ [screenIds.settings]: createScreen({
130
+ id: screenIds.settings,
131
+ name: 'Settings',
132
+ title: nutritionCatalogScanContent.settings.title,
133
+ description: nutritionCatalogScanContent.settings.description,
134
+ root: createScreenRoot(`${idPrefix}-settings-screen`, { width: 'default' }, [
135
+ createZoraNode(`${idPrefix}-settings-header`, 'SectionHeader', {
136
+ eyebrow: nutritionCatalogScanContent.settings.eyebrow,
137
+ title: nutritionCatalogScanContent.settings.title,
138
+ description: nutritionCatalogScanContent.settings.description,
139
+ }),
140
+ createSettingsSection(`${idPrefix}-settings-api`, 'API Gateway', 'Keep runtime clients API-only and never connect this template directly to Supabase.', [
141
+ {
142
+ id: 'base-url-row',
143
+ title: 'API base URL',
144
+ description: 'Defaults to https://api-gateway.fabio-gartenmann.workers.dev.',
145
+ meta: 'runtime',
146
+ },
147
+ {
148
+ id: 'product-list-row',
149
+ title: 'Product list endpoint',
150
+ description: 'Requires GET /v1/nutrition/products for the catalog-first home screen.',
151
+ meta: 'backend gap',
152
+ },
153
+ {
154
+ id: 'capture-row',
155
+ title: 'Capture endpoint',
156
+ description: 'POST /v1/nutrition/products/capture queues submissions for later review.',
157
+ meta: 'live',
158
+ },
159
+ ]),
160
+ createSettingsSection(`${idPrefix}-settings-client`, 'Client defaults', `${seed.appName} should persist anonymousDeviceId and send appVersion, platform, locale, and clientCapturedAt with captures.`, [
161
+ {
162
+ id: 'locale-row',
163
+ title: 'Default locale',
164
+ description: 'de-CH for the Swiss retail MVP.',
165
+ meta: 'de-CH',
166
+ },
167
+ {
168
+ id: 'country-row',
169
+ title: 'Default country',
170
+ description: 'Store observations default to CH.',
171
+ meta: 'CH',
172
+ },
173
+ {
174
+ id: 'camera-row',
175
+ title: 'Camera dependency',
176
+ description: 'Isolate expo-camera behind a scanner adapter and compose visible UI from ZORA.',
177
+ meta: 'ZORA-first',
178
+ },
179
+ ]),
180
+ ]),
181
+ }),
182
+ };
183
+ }
184
+ //# sourceMappingURL=screens.nutrition-catalog-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens.nutrition-catalog-scan.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/food-drink/screens.nutrition-catalog-scan.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { AppManifest } from '@ankhorage/contracts';
2
1
  interface PokerPlayingCard {
3
2
  readonly rank: string;
4
3
  readonly suit: 'clubs' | 'diamonds' | 'hearts' | 'spades';
@@ -18,8 +17,8 @@ export interface PokerSituation {
18
17
  readonly id: string;
19
18
  readonly street: string;
20
19
  readonly blinds: string;
21
- readonly heroPosition: string;
22
- readonly heroCards: readonly PokerPlayingCard[];
20
+ readonly userPosition: string;
21
+ readonly userCards: readonly PokerPlayingCard[];
23
22
  readonly pot: string;
24
23
  readonly level: string;
25
24
  readonly progress: number;
@@ -32,6 +31,5 @@ export interface PokerSituation {
32
31
  readonly seats: readonly PokerSeatState[];
33
32
  }
34
33
  export declare const pokerSituation: PokerSituation;
35
- export declare const pokerTrainerData: AppManifest['data'];
36
34
  export {};
37
35
  //# sourceMappingURL=poker.data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"poker.data.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,sBAAsB,CAAC;AAE3E,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC3D;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED,eAAO,MAAM,cAAc,EAAE,cAoE5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAgDhD,CAAC"}
1
+ {"version":3,"file":"poker.data.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.data.ts"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC3D;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED,eAAO,MAAM,cAAc,EAAE,cAoE5B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  export const pokerSituation = {
2
- id: 'preflop-btn-aa',
2
+ id: 'preflop-user-btn-aa',
3
3
  street: 'Preflop',
4
4
  blinds: '400 / 800',
5
- heroPosition: 'BTN',
6
- heroCards: [
5
+ userPosition: 'BTN',
6
+ userCards: [
7
7
  { rank: 'A', suit: 'hearts' },
8
8
  { rank: 'A', suit: 'clubs' },
9
9
  ],
@@ -12,13 +12,13 @@ export const pokerSituation = {
12
12
  progress: 7,
13
13
  progressTotal: 20,
14
14
  score: '84%',
15
- prompt: 'Hero is on the button with A♥ A♣. HJ opened to 2.4K, CO folded, and action is on you.',
15
+ prompt: 'You are on the button with A♥ A♣. HJ opened to 2.4K, CO folded, and action is on you.',
16
16
  availableActions: ['Fold', 'Call', 'All-In'],
17
17
  correctAction: 'All-In',
18
18
  explanation: 'Aces crush the button shoving range at this stack depth. Apply maximum pressure instead of flat-calling.',
19
19
  seats: [
20
20
  {
21
- id: 'seat-button',
21
+ id: 'seat-user',
22
22
  label: 'BTN',
23
23
  sublabel: '98K',
24
24
  cards: [
@@ -26,8 +26,8 @@ export const pokerSituation = {
26
26
  { rank: 'A', suit: 'clubs' },
27
27
  ],
28
28
  selected: true,
29
- tokenLabel: 'Hero',
30
- accessibilityLabel: 'Hero on button with ace of hearts and ace of clubs',
29
+ tokenLabel: 'User',
30
+ accessibilityLabel: 'User on button with ace of hearts and ace of clubs',
31
31
  },
32
32
  {
33
33
  id: 'seat-small-blind',
@@ -66,91 +66,4 @@ export const pokerSituation = {
66
66
  },
67
67
  ],
68
68
  };
69
- export const pokerTrainerData = {
70
- apis: {
71
- poker_situations: {
72
- id: 'poker_situations',
73
- kind: 'generated',
74
- preset: 'crud',
75
- label: 'Poker situations',
76
- description: 'Generated card-trainer scenario records for the poker starter.',
77
- basePath: '/poker-situations',
78
- endpoints: [
79
- {
80
- id: 'list-poker-situations',
81
- label: 'List poker situations',
82
- method: 'GET',
83
- path: '/',
84
- intent: 'list',
85
- },
86
- {
87
- id: 'read-poker-situation',
88
- label: 'Read poker situation',
89
- method: 'GET',
90
- path: '/:id',
91
- intent: 'read',
92
- },
93
- ],
94
- resource: {
95
- kind: 'collection',
96
- collection: {
97
- name: 'poker_situations',
98
- primaryKey: 'id',
99
- fields: [
100
- { name: 'id', type: 'text', required: true, unique: true },
101
- { name: 'street', type: 'text', required: true },
102
- { name: 'blinds', type: 'text', required: true },
103
- { name: 'heroPosition', type: 'text', required: true },
104
- { name: 'heroCards', type: 'json', required: true },
105
- { name: 'pot', type: 'text', required: true },
106
- { name: 'seats', type: 'json', required: true },
107
- { name: 'availableActions', type: 'json', required: true },
108
- { name: 'correctAction', type: 'text', required: true },
109
- { name: 'prompt', type: 'text', required: true },
110
- { name: 'explanation', type: 'text', required: true },
111
- ],
112
- },
113
- seed: [toPokerSeedRecord(pokerSituation)],
114
- },
115
- },
116
- },
117
- };
118
- function toPokerSeedRecord(situation) {
119
- return {
120
- id: situation.id,
121
- street: situation.street,
122
- blinds: situation.blinds,
123
- heroPosition: situation.heroPosition,
124
- heroCards: situation.heroCards.map(toCardRecord),
125
- pot: situation.pot,
126
- level: situation.level,
127
- progress: situation.progress,
128
- progressTotal: situation.progressTotal,
129
- score: situation.score,
130
- prompt: situation.prompt,
131
- availableActions: [...situation.availableActions],
132
- correctAction: situation.correctAction,
133
- explanation: situation.explanation,
134
- seats: situation.seats.map(toSeatRecord),
135
- };
136
- }
137
- function toCardRecord(card) {
138
- return {
139
- rank: card.rank,
140
- suit: card.suit,
141
- };
142
- }
143
- function toSeatRecord(seat) {
144
- return {
145
- id: seat.id,
146
- label: seat.label,
147
- ...(seat.sublabel ? { sublabel: seat.sublabel } : {}),
148
- ...(seat.cards ? { cards: seat.cards.map(toCardRecord) } : {}),
149
- ...(seat.faceDownCards !== undefined ? { faceDownCards: seat.faceDownCards } : {}),
150
- ...(seat.selected !== undefined ? { selected: seat.selected } : {}),
151
- ...(seat.muted !== undefined ? { muted: seat.muted } : {}),
152
- ...(seat.tokenLabel ? { tokenLabel: seat.tokenLabel } : {}),
153
- ...(seat.accessibilityLabel ? { accessibilityLabel: seat.accessibilityLabel } : {}),
154
- };
155
- }
156
69
  //# sourceMappingURL=poker.data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poker.data.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"poker.data.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.data.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,EAAE,EAAE,qBAAqB;IACzB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE;QACT,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;KAC7B;IACD,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,uFAAuF;IAC/F,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC5C,aAAa,EAAE,QAAQ;IACvB,WAAW,EACT,0GAA0G;IAC5G,KAAK,EAAE;QACL;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B;YACD,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,MAAM;YAClB,kBAAkB,EAAE,oDAAoD;SACzE;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,CAAC;SACjB;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,CAAC;SACjB;QACD;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,CAAC;SACjB;QACD;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,CAAC;SACjB;QACD;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,CAAC;SACjB;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"poker.screens.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.screens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,sBAAsB,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0ErD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,cAAc,GACxB,WAAW,CAAC,SAAS,CAAC,CAgFxB"}
1
+ {"version":3,"file":"poker.screens.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.screens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,sBAAsB,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0ErD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,cAAc,GACxB,WAAW,CAAC,SAAS,CAAC,CAiFxB"}
@@ -30,7 +30,7 @@ function createScenarioChips(idPrefix, situation) {
30
30
  variant: 'soft',
31
31
  }),
32
32
  createNode(`${idPrefix}-home-chip-position`, 'Button', {
33
- children: `Hero ${situation.heroPosition}`,
33
+ children: `User ${situation.userPosition}`,
34
34
  color: 'primary',
35
35
  disabled: true,
36
36
  size: 's',
@@ -76,7 +76,7 @@ export function createPokerScreens(seed, idPrefix, screenIds) {
76
76
  centerSublabel: `Level ${situation.level}`,
77
77
  seatCount: situation.seats.length,
78
78
  shape: 'oval',
79
- cardSize: 'small',
79
+ cardSize: 'medium',
80
80
  seats: situation.seats,
81
81
  testID: `${idPrefix}-home-table`,
82
82
  }),
@@ -102,7 +102,7 @@ export function createPokerScreens(seed, idPrefix, screenIds) {
102
102
  {
103
103
  id: 'table-row',
104
104
  title: 'Table layout',
105
- description: 'Start with six compact seats, visible hero cards, stacks, and chip labels.',
105
+ description: 'Start with six compact seats, visible user cards, stacks, and chip labels.',
106
106
  meta: '6 seats',
107
107
  },
108
108
  {
@@ -112,10 +112,10 @@ export function createPokerScreens(seed, idPrefix, screenIds) {
112
112
  meta: 'after answer',
113
113
  },
114
114
  {
115
- id: 'api-row',
116
- title: 'Scenario API',
117
- description: 'Generated data is modeled through manifest.data.apis.poker_situations.',
118
- meta: 'api-first',
115
+ id: 'bindings-row',
116
+ title: 'Data binding',
117
+ description: 'Map tabletop props to app API data in Studio when the real trainer data source is available.',
118
+ meta: 'app-owned',
119
119
  },
120
120
  ]),
121
121
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"poker.screens.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.screens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"poker.screens.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.screens.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"poker.template.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAa1E"}
1
+ {"version":3,"file":"poker.template.d.ts","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAY1E"}
@@ -1,6 +1,5 @@
1
1
  import { DEFAULT_TEMPLATE_VERSION } from '../../../../internal/defaults';
2
2
  import { createManifestShell, createTheme } from '../../../shared';
3
- import { pokerTrainerData } from './poker.data';
4
3
  import { createPokerNavigator, createPokerScreenIds } from './poker.routes';
5
4
  import { createPokerScreens } from './poker.screens';
6
5
  export function createPokerStarterTemplate(seed) {
@@ -13,7 +12,6 @@ export function createPokerStarterTemplate(seed) {
13
12
  version: seed.version ?? DEFAULT_TEMPLATE_VERSION,
14
13
  navigator: createPokerNavigator(screenIds),
15
14
  screens: createPokerScreens(seed, idPrefix, screenIds),
16
- data: pokerTrainerData,
17
15
  });
18
16
  }
19
17
  //# sourceMappingURL=poker.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poker.template.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,0BAA0B,CAAC,IAAkB;IAC3D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,QAAQ,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEjD,OAAO,mBAAmB,CAAC;QACzB,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,wBAAwB;QACjD,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;QAC1C,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;QACtD,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"poker.template.js","sourceRoot":"","sources":["../../../../../src/templates/starter/categories/games/poker.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,0BAA0B,CAAC,IAAkB;IAC3D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,QAAQ,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEjD,OAAO,mBAAmB,CAAC;QACzB,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,wBAAwB;QACjD,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;QAC1C,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;KACvD,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/templates",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "description": "Reusable Ankhorage app templates, presets, and manifest generators.",
5
5
  "homepage": "https://github.com/ankhorage/templates#readme",
6
6
  "bugs": {
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "dependencies": {
54
54
  "@ankhorage/contracts": "^1.16.0",
55
- "@ankhorage/zora": "^2.6.0"
55
+ "@ankhorage/zora": "^2.6.1"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@ankhorage/devtools": "^1.0.6",