@cratis/scene.blueprint.inventory 0.0.0-stage → 4.53.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 (138) hide show
  1. package/README.md +66 -2
  2. package/blueprint.ts +16 -0
  3. package/blueprintCatalog.json +190 -0
  4. package/dist/cjs/blueprint.js +19 -0
  5. package/dist/cjs/blueprint.js.map +1 -0
  6. package/dist/cjs/index.js +72 -0
  7. package/dist/cjs/index.js.map +1 -0
  8. package/dist/cjs/inventoryApplication.js +49 -0
  9. package/dist/cjs/inventoryApplication.js.map +1 -0
  10. package/dist/cjs/inventoryParts.js +131 -0
  11. package/dist/cjs/inventoryParts.js.map +1 -0
  12. package/dist/cjs/inventoryQueries.js +72 -0
  13. package/dist/cjs/inventoryQueries.js.map +1 -0
  14. package/dist/cjs/inventoryScreenSet.js +69 -0
  15. package/dist/cjs/inventoryScreenSet.js.map +1 -0
  16. package/dist/cjs/manifest.js +65 -0
  17. package/dist/cjs/manifest.js.map +1 -0
  18. package/dist/cjs/navigation.js +143 -0
  19. package/dist/cjs/navigation.js.map +1 -0
  20. package/dist/cjs/package.json +3 -0
  21. package/dist/cjs/packageName.js +8 -0
  22. package/dist/cjs/packageName.js.map +1 -0
  23. package/dist/cjs/screens/index.js +22 -0
  24. package/dist/cjs/screens/index.js.map +1 -0
  25. package/dist/cjs/templateProvenance.js +24 -0
  26. package/dist/cjs/templateProvenance.js.map +1 -0
  27. package/dist/cjs/templates/dashboardTemplate.js +92 -0
  28. package/dist/cjs/templates/dashboardTemplate.js.map +1 -0
  29. package/dist/cjs/templates/formTemplates.js +94 -0
  30. package/dist/cjs/templates/formTemplates.js.map +1 -0
  31. package/dist/cjs/templates/index.js +34 -0
  32. package/dist/cjs/templates/index.js.map +1 -0
  33. package/dist/cjs/templates/listTemplates.js +212 -0
  34. package/dist/cjs/templates/listTemplates.js.map +1 -0
  35. package/dist/cjs/templates/locationsTemplate.js +63 -0
  36. package/dist/cjs/templates/locationsTemplate.js.map +1 -0
  37. package/dist/cjs/templates/recordTemplates.js +111 -0
  38. package/dist/cjs/templates/recordTemplates.js.map +1 -0
  39. package/dist/esm/blueprint.d.ts +3 -0
  40. package/dist/esm/blueprint.d.ts.map +1 -0
  41. package/dist/esm/blueprint.js +17 -0
  42. package/dist/esm/blueprint.js.map +1 -0
  43. package/dist/esm/index.d.ts +12 -0
  44. package/dist/esm/index.d.ts.map +1 -0
  45. package/dist/esm/index.js +18 -0
  46. package/dist/esm/index.js.map +1 -0
  47. package/dist/esm/inventoryApplication.d.ts +10 -0
  48. package/dist/esm/inventoryApplication.d.ts.map +1 -0
  49. package/dist/esm/inventoryApplication.js +44 -0
  50. package/dist/esm/inventoryApplication.js.map +1 -0
  51. package/dist/esm/inventoryParts.d.ts +15 -0
  52. package/dist/esm/inventoryParts.d.ts.map +1 -0
  53. package/dist/esm/inventoryParts.js +114 -0
  54. package/dist/esm/inventoryParts.js.map +1 -0
  55. package/dist/esm/inventoryQueries.d.ts +44 -0
  56. package/dist/esm/inventoryQueries.d.ts.map +1 -0
  57. package/dist/esm/inventoryQueries.js +64 -0
  58. package/dist/esm/inventoryQueries.js.map +1 -0
  59. package/dist/esm/inventoryScreenSet.d.ts +7 -0
  60. package/dist/esm/inventoryScreenSet.d.ts.map +1 -0
  61. package/dist/esm/inventoryScreenSet.js +67 -0
  62. package/dist/esm/inventoryScreenSet.js.map +1 -0
  63. package/dist/esm/manifest.d.ts +3 -0
  64. package/dist/esm/manifest.d.ts.map +1 -0
  65. package/dist/esm/manifest.js +63 -0
  66. package/dist/esm/manifest.js.map +1 -0
  67. package/dist/esm/navigation.d.ts +5 -0
  68. package/dist/esm/navigation.d.ts.map +1 -0
  69. package/dist/esm/navigation.js +139 -0
  70. package/dist/esm/navigation.js.map +1 -0
  71. package/dist/esm/package.json +3 -0
  72. package/dist/esm/packageName.d.ts +2 -0
  73. package/dist/esm/packageName.d.ts.map +1 -0
  74. package/dist/esm/packageName.js +6 -0
  75. package/dist/esm/packageName.js.map +1 -0
  76. package/dist/esm/screens/index.d.ts +3 -0
  77. package/dist/esm/screens/index.d.ts.map +1 -0
  78. package/dist/esm/screens/index.js +20 -0
  79. package/dist/esm/screens/index.js.map +1 -0
  80. package/dist/esm/templateProvenance.d.ts +3 -0
  81. package/dist/esm/templateProvenance.d.ts.map +1 -0
  82. package/dist/esm/templateProvenance.js +22 -0
  83. package/dist/esm/templateProvenance.js.map +1 -0
  84. package/dist/esm/templates/dashboardTemplate.d.ts +3 -0
  85. package/dist/esm/templates/dashboardTemplate.d.ts.map +1 -0
  86. package/dist/esm/templates/dashboardTemplate.js +90 -0
  87. package/dist/esm/templates/dashboardTemplate.js.map +1 -0
  88. package/dist/esm/templates/formTemplates.d.ts +5 -0
  89. package/dist/esm/templates/formTemplates.d.ts.map +1 -0
  90. package/dist/esm/templates/formTemplates.js +90 -0
  91. package/dist/esm/templates/formTemplates.js.map +1 -0
  92. package/dist/esm/templates/index.d.ts +8 -0
  93. package/dist/esm/templates/index.d.ts.map +1 -0
  94. package/dist/esm/templates/index.js +22 -0
  95. package/dist/esm/templates/index.js.map +1 -0
  96. package/dist/esm/templates/listTemplates.d.ts +6 -0
  97. package/dist/esm/templates/listTemplates.d.ts.map +1 -0
  98. package/dist/esm/templates/listTemplates.js +207 -0
  99. package/dist/esm/templates/listTemplates.js.map +1 -0
  100. package/dist/esm/templates/locationsTemplate.d.ts +3 -0
  101. package/dist/esm/templates/locationsTemplate.d.ts.map +1 -0
  102. package/dist/esm/templates/locationsTemplate.js +61 -0
  103. package/dist/esm/templates/locationsTemplate.js.map +1 -0
  104. package/dist/esm/templates/recordTemplates.d.ts +3 -0
  105. package/dist/esm/templates/recordTemplates.d.ts.map +1 -0
  106. package/dist/esm/templates/recordTemplates.js +109 -0
  107. package/dist/esm/templates/recordTemplates.js.map +1 -0
  108. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  109. package/index.ts +14 -0
  110. package/inventoryApplication.ts +28 -0
  111. package/inventoryParts.ts +52 -0
  112. package/inventoryQueries.ts +64 -0
  113. package/inventoryScreenSet.ts +25 -0
  114. package/manifest.ts +41 -0
  115. package/navigation.ts +60 -0
  116. package/package.json +78 -4
  117. package/packageName.ts +5 -0
  118. package/sampleData/inventory-warehouse.json +1770 -0
  119. package/screens/index.ts +20 -0
  120. package/templateProvenance.ts +15 -0
  121. package/templates/dashboardTemplate.ts +45 -0
  122. package/templates/formTemplates.ts +60 -0
  123. package/templates/index.ts +25 -0
  124. package/templates/listTemplates.ts +109 -0
  125. package/templates/locationsTemplate.ts +36 -0
  126. package/templates/recordTemplates.ts +45 -0
  127. package/thumbnails/InventoryAdjustStock.svg +12 -0
  128. package/thumbnails/InventoryCheckInOut.svg +17 -0
  129. package/thumbnails/InventoryDashboard.svg +14 -0
  130. package/thumbnails/InventoryItemGallery.svg +29 -0
  131. package/thumbnails/InventoryItemList.svg +13 -0
  132. package/thumbnails/InventoryItemPage.svg +18 -0
  133. package/thumbnails/InventoryLocations.svg +20 -0
  134. package/thumbnails/InventoryMovementList.svg +13 -0
  135. package/thumbnails/InventoryQuickCreateItem.svg +12 -0
  136. package/thumbnails/InventoryQuickCreateSupplier.svg +12 -0
  137. package/thumbnails/InventorySupplierList.svg +13 -0
  138. package/thumbnails/inventory.svg +14 -0
@@ -0,0 +1,1770 @@
1
+ {
2
+ "id": "inventory-warehouse",
3
+ "title": "Inventory · Warehouse",
4
+ "locale": "en-GB",
5
+ "owner": "blueprint:inventory",
6
+ "sets": [
7
+ {
8
+ "shape": "InventorySettings",
9
+ "rows": [
10
+ {
11
+ "locale": "en-GB",
12
+ "currency": "GBP"
13
+ }
14
+ ]
15
+ },
16
+ {
17
+ "shape": "Items",
18
+ "rows": [
19
+ {
20
+ "id": "item-1",
21
+ "sku": "EQ-1001",
22
+ "name": "Pallet jack",
23
+ "category": "Equipment",
24
+ "location": "Main warehouse / Aisle A / Shelf A1",
25
+ "quantity": 6,
26
+ "reorderLevel": 2,
27
+ "unitCost": 289,
28
+ "status": "In stock",
29
+ "tone": "",
30
+ "supplier": "Hartley Industrial",
31
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2830,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2830,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E"
32
+ },
33
+ {
34
+ "id": "item-2",
35
+ "sku": "EQ-1002",
36
+ "name": "Hand truck",
37
+ "category": "Equipment",
38
+ "location": "Main warehouse / Aisle A / Shelf A2",
39
+ "quantity": 3,
40
+ "reorderLevel": 4,
41
+ "unitCost": 96,
42
+ "status": "Low stock",
43
+ "tone": "warning",
44
+ "supplier": "Hartley Industrial",
45
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2851,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2851,45%25,25%25%29' font-family='sans-serif'%3EH%3C/text%3E%3C/svg%3E"
46
+ },
47
+ {
48
+ "id": "item-3",
49
+ "sku": "EQ-1003",
50
+ "name": "Forklift battery",
51
+ "category": "Equipment",
52
+ "location": "Returns cage",
53
+ "quantity": 1,
54
+ "reorderLevel": 2,
55
+ "unitCost": 1450,
56
+ "status": "Low stock",
57
+ "tone": "warning",
58
+ "supplier": "Hartley Industrial",
59
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2872,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2872,45%25,25%25%29' font-family='sans-serif'%3EF%3C/text%3E%3C/svg%3E"
60
+ },
61
+ {
62
+ "id": "item-4",
63
+ "sku": "EQ-1004",
64
+ "name": "Tape measure",
65
+ "category": "Equipment",
66
+ "location": "Main warehouse / Aisle A / Shelf A2",
67
+ "quantity": 24,
68
+ "reorderLevel": 10,
69
+ "unitCost": 7,
70
+ "status": "In stock",
71
+ "tone": "",
72
+ "supplier": "Hartley Industrial",
73
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2893,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2893,45%25,25%25%29' font-family='sans-serif'%3ET%3C/text%3E%3C/svg%3E"
74
+ },
75
+ {
76
+ "id": "item-5",
77
+ "sku": "SF-2001",
78
+ "name": "Safety gloves (L)",
79
+ "category": "Safety",
80
+ "location": "Main warehouse / Aisle B / Shelf B1",
81
+ "quantity": 140,
82
+ "reorderLevel": 60,
83
+ "unitCost": 3,
84
+ "status": "In stock",
85
+ "tone": "",
86
+ "supplier": "Safeway PPE",
87
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28114,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28114,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
88
+ },
89
+ {
90
+ "id": "item-6",
91
+ "sku": "SF-2002",
92
+ "name": "Hi-vis vest",
93
+ "category": "Safety",
94
+ "location": "Main warehouse / Aisle B / Shelf B1",
95
+ "quantity": 58,
96
+ "reorderLevel": 40,
97
+ "unitCost": 6,
98
+ "status": "In stock",
99
+ "tone": "",
100
+ "supplier": "Safeway PPE",
101
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28135,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28135,45%25,25%25%29' font-family='sans-serif'%3EH%3C/text%3E%3C/svg%3E"
102
+ },
103
+ {
104
+ "id": "item-7",
105
+ "sku": "SF-2003",
106
+ "name": "Safety boots (42)",
107
+ "category": "Safety",
108
+ "location": "Main warehouse / Aisle B / Shelf B2",
109
+ "quantity": 0,
110
+ "reorderLevel": 8,
111
+ "unitCost": 54,
112
+ "status": "Out of stock",
113
+ "tone": "danger",
114
+ "supplier": "Safeway PPE",
115
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28156,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28156,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
116
+ },
117
+ {
118
+ "id": "item-8",
119
+ "sku": "PK-3001",
120
+ "name": "Stretch wrap roll",
121
+ "category": "Packaging",
122
+ "location": "Main warehouse / Aisle B / Shelf B2",
123
+ "quantity": 82,
124
+ "reorderLevel": 30,
125
+ "unitCost": 11,
126
+ "status": "In stock",
127
+ "tone": "",
128
+ "supplier": "Brightpack Ltd",
129
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28177,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28177,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
130
+ },
131
+ {
132
+ "id": "item-9",
133
+ "sku": "PK-3002",
134
+ "name": "Packing tape",
135
+ "category": "Packaging",
136
+ "location": "Main warehouse / Aisle B / Shelf B2",
137
+ "quantity": 12,
138
+ "reorderLevel": 40,
139
+ "unitCost": 2,
140
+ "status": "Low stock",
141
+ "tone": "warning",
142
+ "supplier": "Brightpack Ltd",
143
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28198,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28198,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E"
144
+ },
145
+ {
146
+ "id": "item-10",
147
+ "sku": "PK-3003",
148
+ "name": "Cardboard box M",
149
+ "category": "Packaging",
150
+ "location": "Main warehouse / Aisle A / Shelf A1",
151
+ "quantity": 420,
152
+ "reorderLevel": 150,
153
+ "unitCost": 1,
154
+ "status": "In stock",
155
+ "tone": "",
156
+ "supplier": "Brightpack Ltd",
157
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28219,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28219,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
158
+ },
159
+ {
160
+ "id": "item-11",
161
+ "sku": "PK-3004",
162
+ "name": "Cardboard box L",
163
+ "category": "Packaging",
164
+ "location": "Main warehouse / Aisle A / Shelf A1",
165
+ "quantity": 260,
166
+ "reorderLevel": 120,
167
+ "unitCost": 2,
168
+ "status": "In stock",
169
+ "tone": "",
170
+ "supplier": "Brightpack Ltd",
171
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28240,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28240,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
172
+ },
173
+ {
174
+ "id": "item-12",
175
+ "sku": "PK-3005",
176
+ "name": "Bubble wrap",
177
+ "category": "Packaging",
178
+ "location": "Main warehouse / Aisle A / Shelf A2",
179
+ "quantity": 35,
180
+ "reorderLevel": 20,
181
+ "unitCost": 18,
182
+ "status": "In stock",
183
+ "tone": "",
184
+ "supplier": "Brightpack Ltd",
185
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28261,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28261,45%25,25%25%29' font-family='sans-serif'%3EB%3C/text%3E%3C/svg%3E"
186
+ },
187
+ {
188
+ "id": "item-13",
189
+ "sku": "EL-4001",
190
+ "name": "Barcode scanner",
191
+ "category": "Electronics",
192
+ "location": "Cold store / Rack 1",
193
+ "quantity": 14,
194
+ "reorderLevel": 5,
195
+ "unitCost": 168,
196
+ "status": "In stock",
197
+ "tone": "",
198
+ "supplier": "Scanline Systems",
199
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28282,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28282,45%25,25%25%29' font-family='sans-serif'%3EB%3C/text%3E%3C/svg%3E"
200
+ },
201
+ {
202
+ "id": "item-14",
203
+ "sku": "EL-4002",
204
+ "name": "Label printer",
205
+ "category": "Electronics",
206
+ "location": "Cold store / Rack 1",
207
+ "quantity": 4,
208
+ "reorderLevel": 5,
209
+ "unitCost": 240,
210
+ "status": "Low stock",
211
+ "tone": "warning",
212
+ "supplier": "Scanline Systems",
213
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28303,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28303,45%25,25%25%29' font-family='sans-serif'%3EL%3C/text%3E%3C/svg%3E"
214
+ },
215
+ {
216
+ "id": "item-15",
217
+ "sku": "EL-4003",
218
+ "name": "Thermal labels 100x150",
219
+ "category": "Electronics",
220
+ "location": "Cold store / Rack 1",
221
+ "quantity": 38,
222
+ "reorderLevel": 25,
223
+ "unitCost": 9,
224
+ "status": "In stock",
225
+ "tone": "",
226
+ "supplier": "Northern Labels",
227
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28324,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28324,45%25,25%25%29' font-family='sans-serif'%3ET%3C/text%3E%3C/svg%3E"
228
+ },
229
+ {
230
+ "id": "item-16",
231
+ "sku": "EL-4004",
232
+ "name": "Cable ties (100)",
233
+ "category": "Electronics",
234
+ "location": "Cold store / Rack 1",
235
+ "quantity": 7,
236
+ "reorderLevel": 20,
237
+ "unitCost": 4,
238
+ "status": "Low stock",
239
+ "tone": "warning",
240
+ "supplier": "Scanline Systems",
241
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28345,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28345,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
242
+ }
243
+ ]
244
+ },
245
+ {
246
+ "shape": "ItemColumns",
247
+ "rows": [
248
+ {
249
+ "field": "sku",
250
+ "header": "SKU"
251
+ },
252
+ {
253
+ "field": "name",
254
+ "header": "Name"
255
+ },
256
+ {
257
+ "field": "category",
258
+ "header": "Category"
259
+ },
260
+ {
261
+ "field": "location",
262
+ "header": "Location"
263
+ },
264
+ {
265
+ "field": "quantity",
266
+ "header": "Quantity",
267
+ "kind": "number"
268
+ },
269
+ {
270
+ "field": "status",
271
+ "header": "Status",
272
+ "kind": "status",
273
+ "tones": {
274
+ "In stock": "success",
275
+ "Low stock": "warning",
276
+ "Out of stock": "danger"
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "shape": "ItemFilterFields",
283
+ "rows": [
284
+ {
285
+ "name": "category",
286
+ "label": "Category",
287
+ "type": "select",
288
+ "options": [
289
+ "Equipment",
290
+ "Safety",
291
+ "Packaging",
292
+ "Electronics"
293
+ ]
294
+ },
295
+ {
296
+ "name": "location",
297
+ "label": "Location",
298
+ "type": "select",
299
+ "options": [
300
+ "Main warehouse / Aisle A / Shelf A1",
301
+ "Main warehouse / Aisle A / Shelf A2",
302
+ "Main warehouse / Aisle B / Shelf B1",
303
+ "Main warehouse / Aisle B / Shelf B2",
304
+ "Cold store / Rack 1",
305
+ "Returns cage"
306
+ ]
307
+ },
308
+ {
309
+ "name": "status",
310
+ "label": "Status",
311
+ "type": "select",
312
+ "options": [
313
+ "In stock",
314
+ "Low stock",
315
+ "Out of stock"
316
+ ]
317
+ },
318
+ {
319
+ "name": "quantity",
320
+ "label": "Quantity",
321
+ "type": "number"
322
+ }
323
+ ]
324
+ },
325
+ {
326
+ "shape": "ItemViews",
327
+ "rows": [
328
+ {
329
+ "id": "all",
330
+ "label": "All items"
331
+ },
332
+ {
333
+ "id": "low",
334
+ "label": "Low stock"
335
+ },
336
+ {
337
+ "id": "out",
338
+ "label": "Out of stock"
339
+ }
340
+ ]
341
+ },
342
+ {
343
+ "shape": "ItemColumnChoices",
344
+ "rows": [
345
+ {
346
+ "id": "sku",
347
+ "label": "SKU",
348
+ "locked": true
349
+ },
350
+ {
351
+ "id": "name",
352
+ "label": "Name"
353
+ },
354
+ {
355
+ "id": "category",
356
+ "label": "Category"
357
+ },
358
+ {
359
+ "id": "location",
360
+ "label": "Location"
361
+ },
362
+ {
363
+ "id": "quantity",
364
+ "label": "Quantity"
365
+ },
366
+ {
367
+ "id": "status",
368
+ "label": "Status"
369
+ }
370
+ ]
371
+ },
372
+ {
373
+ "shape": "ItemSelection",
374
+ "rows": []
375
+ },
376
+ {
377
+ "shape": "Movements",
378
+ "rows": [
379
+ {
380
+ "id": "move-1",
381
+ "when": "2026-10-16",
382
+ "item": "Cardboard box M",
383
+ "type": "Check in",
384
+ "quantity": 120,
385
+ "location": "Main warehouse / Aisle A / Shelf A1",
386
+ "by": "Hannah Cole"
387
+ },
388
+ {
389
+ "id": "move-2",
390
+ "when": "2026-10-16",
391
+ "item": "Safety gloves (L)",
392
+ "type": "Check out",
393
+ "quantity": -20,
394
+ "location": "Main warehouse / Aisle B / Shelf B1",
395
+ "by": "Marcus Webb"
396
+ },
397
+ {
398
+ "id": "move-3",
399
+ "when": "2026-10-15",
400
+ "item": "Barcode scanner",
401
+ "type": "Check out",
402
+ "quantity": -2,
403
+ "location": "Cold store / Rack 1",
404
+ "by": "Aisha Patel"
405
+ },
406
+ {
407
+ "id": "move-4",
408
+ "when": "2026-10-15",
409
+ "item": "Stretch wrap roll",
410
+ "type": "Check in",
411
+ "quantity": 40,
412
+ "location": "Main warehouse / Aisle B / Shelf B2",
413
+ "by": "Tom Eriksen"
414
+ },
415
+ {
416
+ "id": "move-5",
417
+ "when": "2026-10-14",
418
+ "item": "Packing tape",
419
+ "type": "Check out",
420
+ "quantity": -28,
421
+ "location": "Main warehouse / Aisle B / Shelf B2",
422
+ "by": "Hannah Cole"
423
+ },
424
+ {
425
+ "id": "move-6",
426
+ "when": "2026-10-14",
427
+ "item": "Pallet jack",
428
+ "type": "Transfer",
429
+ "quantity": 1,
430
+ "location": "Main warehouse / Aisle A / Shelf A1",
431
+ "by": "Marcus Webb"
432
+ },
433
+ {
434
+ "id": "move-7",
435
+ "when": "2026-10-13",
436
+ "item": "Hi-vis vest",
437
+ "type": "Adjustment",
438
+ "quantity": -2,
439
+ "location": "Main warehouse / Aisle B / Shelf B1",
440
+ "by": "Aisha Patel"
441
+ },
442
+ {
443
+ "id": "move-8",
444
+ "when": "2026-10-13",
445
+ "item": "Cable ties (100)",
446
+ "type": "Check out",
447
+ "quantity": -13,
448
+ "location": "Cold store / Rack 1",
449
+ "by": "Tom Eriksen"
450
+ },
451
+ {
452
+ "id": "move-9",
453
+ "when": "2026-10-12",
454
+ "item": "Label printer",
455
+ "type": "Check in",
456
+ "quantity": 2,
457
+ "location": "Cold store / Rack 1",
458
+ "by": "Hannah Cole"
459
+ },
460
+ {
461
+ "id": "move-10",
462
+ "when": "2026-10-12",
463
+ "item": "Cardboard box L",
464
+ "type": "Check out",
465
+ "quantity": -40,
466
+ "location": "Main warehouse / Aisle A / Shelf A1",
467
+ "by": "Marcus Webb"
468
+ },
469
+ {
470
+ "id": "move-11",
471
+ "when": "2026-10-09",
472
+ "item": "Thermal labels 100x150",
473
+ "type": "Check in",
474
+ "quantity": 20,
475
+ "location": "Cold store / Rack 1",
476
+ "by": "Aisha Patel"
477
+ },
478
+ {
479
+ "id": "move-12",
480
+ "when": "2026-10-09",
481
+ "item": "Hand truck",
482
+ "type": "Check out",
483
+ "quantity": -1,
484
+ "location": "Main warehouse / Aisle A / Shelf A2",
485
+ "by": "Tom Eriksen"
486
+ },
487
+ {
488
+ "id": "move-13",
489
+ "when": "2026-10-08",
490
+ "item": "Bubble wrap",
491
+ "type": "Adjustment",
492
+ "quantity": -1,
493
+ "location": "Main warehouse / Aisle A / Shelf A2",
494
+ "by": "Hannah Cole"
495
+ },
496
+ {
497
+ "id": "move-14",
498
+ "when": "2026-10-07",
499
+ "item": "Safety boots (42)",
500
+ "type": "Check out",
501
+ "quantity": -4,
502
+ "location": "Main warehouse / Aisle B / Shelf B2",
503
+ "by": "Marcus Webb"
504
+ }
505
+ ]
506
+ },
507
+ {
508
+ "shape": "MovementColumns",
509
+ "rows": [
510
+ {
511
+ "field": "when",
512
+ "header": "Date",
513
+ "kind": "date"
514
+ },
515
+ {
516
+ "field": "item",
517
+ "header": "Item"
518
+ },
519
+ {
520
+ "field": "type",
521
+ "header": "Type",
522
+ "kind": "status",
523
+ "tones": {
524
+ "Check in": "success",
525
+ "Check out": "info",
526
+ "Transfer": "neutral",
527
+ "Adjustment": "warning"
528
+ }
529
+ },
530
+ {
531
+ "field": "quantity",
532
+ "header": "Quantity",
533
+ "kind": "number"
534
+ },
535
+ {
536
+ "field": "location",
537
+ "header": "Location"
538
+ },
539
+ {
540
+ "field": "by",
541
+ "header": "By"
542
+ }
543
+ ]
544
+ },
545
+ {
546
+ "shape": "MovementFilterFields",
547
+ "rows": [
548
+ {
549
+ "name": "type",
550
+ "label": "Type",
551
+ "type": "select",
552
+ "options": [
553
+ "Check in",
554
+ "Check out",
555
+ "Transfer",
556
+ "Adjustment"
557
+ ]
558
+ },
559
+ {
560
+ "name": "location",
561
+ "label": "Location",
562
+ "type": "select",
563
+ "options": [
564
+ "Main warehouse / Aisle A / Shelf A1",
565
+ "Main warehouse / Aisle A / Shelf A2",
566
+ "Main warehouse / Aisle B / Shelf B1",
567
+ "Main warehouse / Aisle B / Shelf B2",
568
+ "Cold store / Rack 1",
569
+ "Returns cage"
570
+ ]
571
+ },
572
+ {
573
+ "name": "by",
574
+ "label": "By",
575
+ "type": "select",
576
+ "options": [
577
+ "Hannah Cole",
578
+ "Marcus Webb",
579
+ "Aisha Patel",
580
+ "Tom Eriksen"
581
+ ]
582
+ },
583
+ {
584
+ "name": "when",
585
+ "label": "Date",
586
+ "type": "date"
587
+ }
588
+ ]
589
+ },
590
+ {
591
+ "shape": "MovementViews",
592
+ "rows": [
593
+ {
594
+ "id": "all",
595
+ "label": "All movements"
596
+ },
597
+ {
598
+ "id": "today",
599
+ "label": "Today"
600
+ },
601
+ {
602
+ "id": "mine",
603
+ "label": "My movements"
604
+ }
605
+ ]
606
+ },
607
+ {
608
+ "shape": "MovementColumnChoices",
609
+ "rows": [
610
+ {
611
+ "id": "when",
612
+ "label": "Date",
613
+ "locked": true
614
+ },
615
+ {
616
+ "id": "item",
617
+ "label": "Item"
618
+ },
619
+ {
620
+ "id": "type",
621
+ "label": "Type"
622
+ },
623
+ {
624
+ "id": "quantity",
625
+ "label": "Quantity"
626
+ },
627
+ {
628
+ "id": "location",
629
+ "label": "Location"
630
+ },
631
+ {
632
+ "id": "by",
633
+ "label": "By"
634
+ }
635
+ ]
636
+ },
637
+ {
638
+ "shape": "MovementSelection",
639
+ "rows": []
640
+ },
641
+ {
642
+ "shape": "Suppliers",
643
+ "rows": [
644
+ {
645
+ "id": "supplier-1",
646
+ "name": "Hartley Industrial",
647
+ "contact": "Ben Hartley",
648
+ "email": "orders@hartley.example.co.uk",
649
+ "phone": "+44 20 7946 0210",
650
+ "items": 5,
651
+ "status": "Active"
652
+ },
653
+ {
654
+ "id": "supplier-2",
655
+ "name": "Brightpack Ltd",
656
+ "contact": "Nora Quinn",
657
+ "email": "sales@brightpack.example.co.uk",
658
+ "phone": "+44 161 496 0311",
659
+ "items": 4,
660
+ "status": "Active"
661
+ },
662
+ {
663
+ "id": "supplier-3",
664
+ "name": "Safeway PPE",
665
+ "contact": "Omar Rahman",
666
+ "email": "trade@safeway.example.co.uk",
667
+ "phone": "+44 113 496 0412",
668
+ "items": 3,
669
+ "status": "Active"
670
+ },
671
+ {
672
+ "id": "supplier-4",
673
+ "name": "Scanline Systems",
674
+ "contact": "Ivy Chen",
675
+ "email": "hello@scanline.example.co.uk",
676
+ "phone": "+44 131 496 0513",
677
+ "items": 3,
678
+ "status": "On hold"
679
+ },
680
+ {
681
+ "id": "supplier-5",
682
+ "name": "Northern Labels",
683
+ "contact": "Fred Alder",
684
+ "email": "orders@northernlabels.example.co.uk",
685
+ "phone": "+44 191 496 0614",
686
+ "items": 1,
687
+ "status": "Active"
688
+ }
689
+ ]
690
+ },
691
+ {
692
+ "shape": "SupplierColumns",
693
+ "rows": [
694
+ {
695
+ "field": "name",
696
+ "header": "Name"
697
+ },
698
+ {
699
+ "field": "contact",
700
+ "header": "Contact"
701
+ },
702
+ {
703
+ "field": "email",
704
+ "header": "Email"
705
+ },
706
+ {
707
+ "field": "items",
708
+ "header": "Items",
709
+ "kind": "number"
710
+ },
711
+ {
712
+ "field": "status",
713
+ "header": "Status",
714
+ "kind": "status",
715
+ "tones": {
716
+ "Active": "success",
717
+ "On hold": "warning"
718
+ }
719
+ }
720
+ ]
721
+ },
722
+ {
723
+ "shape": "SupplierFilterFields",
724
+ "rows": [
725
+ {
726
+ "name": "status",
727
+ "label": "Status",
728
+ "type": "select",
729
+ "options": [
730
+ "Active",
731
+ "On hold"
732
+ ]
733
+ },
734
+ {
735
+ "name": "items",
736
+ "label": "Items supplied",
737
+ "type": "number"
738
+ }
739
+ ]
740
+ },
741
+ {
742
+ "shape": "SupplierViews",
743
+ "rows": [
744
+ {
745
+ "id": "all",
746
+ "label": "All suppliers"
747
+ },
748
+ {
749
+ "id": "active",
750
+ "label": "Active suppliers"
751
+ }
752
+ ]
753
+ },
754
+ {
755
+ "shape": "SupplierColumnChoices",
756
+ "rows": [
757
+ {
758
+ "id": "name",
759
+ "label": "Name",
760
+ "locked": true
761
+ },
762
+ {
763
+ "id": "contact",
764
+ "label": "Contact"
765
+ },
766
+ {
767
+ "id": "email",
768
+ "label": "Email"
769
+ },
770
+ {
771
+ "id": "items",
772
+ "label": "Items"
773
+ },
774
+ {
775
+ "id": "status",
776
+ "label": "Status"
777
+ }
778
+ ]
779
+ },
780
+ {
781
+ "shape": "SupplierSelection",
782
+ "rows": []
783
+ },
784
+ {
785
+ "shape": "ItemSections",
786
+ "rows": [
787
+ {
788
+ "id": "item",
789
+ "title": "Item details",
790
+ "columns": 2,
791
+ "fields": [
792
+ {
793
+ "name": "sku",
794
+ "label": "SKU"
795
+ },
796
+ {
797
+ "name": "name",
798
+ "label": "Name"
799
+ },
800
+ {
801
+ "name": "category",
802
+ "label": "Category"
803
+ },
804
+ {
805
+ "name": "location",
806
+ "label": "Location"
807
+ },
808
+ {
809
+ "name": "quantity",
810
+ "label": "Quantity",
811
+ "type": "number"
812
+ },
813
+ {
814
+ "name": "reorderLevel",
815
+ "label": "Reorder level",
816
+ "type": "number"
817
+ },
818
+ {
819
+ "name": "unitCost",
820
+ "label": "Unit cost",
821
+ "type": "currency"
822
+ }
823
+ ]
824
+ },
825
+ {
826
+ "id": "supplier",
827
+ "title": "Supplier",
828
+ "columns": 2,
829
+ "fields": [
830
+ {
831
+ "name": "supplierName",
832
+ "label": "Supplier"
833
+ },
834
+ {
835
+ "name": "supplierContact",
836
+ "label": "Contact"
837
+ },
838
+ {
839
+ "name": "supplierEmail",
840
+ "label": "Email"
841
+ },
842
+ {
843
+ "name": "supplierPhone",
844
+ "label": "Phone"
845
+ },
846
+ {
847
+ "name": "leadTime",
848
+ "label": "Lead time"
849
+ }
850
+ ]
851
+ }
852
+ ]
853
+ },
854
+ {
855
+ "shape": "ItemQuickSections",
856
+ "rows": [
857
+ {
858
+ "id": "quick",
859
+ "title": "New item",
860
+ "columns": 1,
861
+ "fields": [
862
+ {
863
+ "name": "sku",
864
+ "label": "SKU",
865
+ "required": true
866
+ },
867
+ {
868
+ "name": "name",
869
+ "label": "Name",
870
+ "required": true
871
+ },
872
+ {
873
+ "name": "category",
874
+ "label": "Category",
875
+ "type": "select",
876
+ "options": [
877
+ "Equipment",
878
+ "Safety",
879
+ "Packaging",
880
+ "Electronics"
881
+ ],
882
+ "required": true
883
+ },
884
+ {
885
+ "name": "location",
886
+ "label": "Location",
887
+ "type": "select",
888
+ "options": [
889
+ "Main warehouse / Aisle A / Shelf A1",
890
+ "Main warehouse / Aisle A / Shelf A2",
891
+ "Main warehouse / Aisle B / Shelf B1",
892
+ "Main warehouse / Aisle B / Shelf B2",
893
+ "Cold store / Rack 1",
894
+ "Returns cage"
895
+ ]
896
+ },
897
+ {
898
+ "name": "quantity",
899
+ "label": "Opening quantity",
900
+ "type": "number"
901
+ }
902
+ ]
903
+ }
904
+ ]
905
+ },
906
+ {
907
+ "shape": "SupplierQuickSections",
908
+ "rows": [
909
+ {
910
+ "id": "quick",
911
+ "title": "New supplier",
912
+ "columns": 1,
913
+ "fields": [
914
+ {
915
+ "name": "name",
916
+ "label": "Name",
917
+ "required": true
918
+ },
919
+ {
920
+ "name": "contact",
921
+ "label": "Contact"
922
+ },
923
+ {
924
+ "name": "email",
925
+ "label": "Email",
926
+ "required": true
927
+ },
928
+ {
929
+ "name": "phone",
930
+ "label": "Phone"
931
+ }
932
+ ]
933
+ }
934
+ ]
935
+ },
936
+ {
937
+ "shape": "AdjustStockSections",
938
+ "rows": [
939
+ {
940
+ "id": "adjust",
941
+ "title": "Adjust stock",
942
+ "columns": 1,
943
+ "fields": [
944
+ {
945
+ "name": "item",
946
+ "label": "Item",
947
+ "type": "select",
948
+ "options": [
949
+ "Pallet jack",
950
+ "Hand truck",
951
+ "Forklift battery",
952
+ "Tape measure",
953
+ "Safety gloves (L)",
954
+ "Hi-vis vest",
955
+ "Safety boots (42)",
956
+ "Stretch wrap roll",
957
+ "Packing tape",
958
+ "Cardboard box M",
959
+ "Cardboard box L",
960
+ "Bubble wrap",
961
+ "Barcode scanner",
962
+ "Label printer",
963
+ "Thermal labels 100x150",
964
+ "Cable ties (100)"
965
+ ],
966
+ "required": true
967
+ },
968
+ {
969
+ "name": "change",
970
+ "label": "Quantity change",
971
+ "type": "number",
972
+ "required": true,
973
+ "help": "Use a minus sign to take stock away."
974
+ },
975
+ {
976
+ "name": "reason",
977
+ "label": "Reason",
978
+ "type": "select",
979
+ "options": [
980
+ "Cycle count",
981
+ "Damaged",
982
+ "Found",
983
+ "Expired",
984
+ "Other"
985
+ ],
986
+ "required": true
987
+ },
988
+ {
989
+ "name": "note",
990
+ "label": "Note"
991
+ }
992
+ ]
993
+ }
994
+ ]
995
+ },
996
+ {
997
+ "shape": "CheckInOutSections",
998
+ "rows": [
999
+ {
1000
+ "id": "item",
1001
+ "title": "Item",
1002
+ "columns": 1,
1003
+ "fields": [
1004
+ {
1005
+ "name": "item",
1006
+ "label": "Item",
1007
+ "required": true,
1008
+ "placeholder": "Scan a barcode or search for an item",
1009
+ "help": "A barcode scanner types the SKU for you; or type a SKU or a name."
1010
+ },
1011
+ {
1012
+ "name": "direction",
1013
+ "label": "Direction",
1014
+ "type": "select",
1015
+ "options": [
1016
+ "Check out",
1017
+ "Check in"
1018
+ ],
1019
+ "required": true
1020
+ },
1021
+ {
1022
+ "name": "quantity",
1023
+ "label": "Quantity",
1024
+ "type": "number",
1025
+ "required": true
1026
+ }
1027
+ ]
1028
+ },
1029
+ {
1030
+ "id": "assignment",
1031
+ "title": "Who has it",
1032
+ "columns": 1,
1033
+ "fields": [
1034
+ {
1035
+ "name": "assignee",
1036
+ "label": "Assignee",
1037
+ "type": "select",
1038
+ "options": [
1039
+ "Hannah Cole",
1040
+ "Marcus Webb",
1041
+ "Aisha Patel",
1042
+ "Tom Eriksen"
1043
+ ],
1044
+ "required": true
1045
+ },
1046
+ {
1047
+ "name": "due",
1048
+ "label": "Due back",
1049
+ "type": "date"
1050
+ },
1051
+ {
1052
+ "name": "note",
1053
+ "label": "Note"
1054
+ }
1055
+ ]
1056
+ }
1057
+ ]
1058
+ },
1059
+ {
1060
+ "shape": "ItemRecord",
1061
+ "rows": [
1062
+ {
1063
+ "id": "item-1",
1064
+ "sku": "EQ-1001",
1065
+ "name": "Pallet jack",
1066
+ "category": "Equipment",
1067
+ "location": "Main warehouse / Aisle A / Shelf A1",
1068
+ "quantity": 6,
1069
+ "reorderLevel": 2,
1070
+ "unitCost": 289,
1071
+ "status": "In stock",
1072
+ "tone": "",
1073
+ "supplier": "Hartley Industrial",
1074
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2830,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2830,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E",
1075
+ "supplierName": "Hartley Industrial",
1076
+ "supplierContact": "Ben Hartley",
1077
+ "supplierEmail": "orders@hartley.example.co.uk",
1078
+ "supplierPhone": "+44 20 7946 0210",
1079
+ "leadTime": "5 working days"
1080
+ }
1081
+ ]
1082
+ },
1083
+ {
1084
+ "shape": "ItemSummary",
1085
+ "rows": [
1086
+ {
1087
+ "status": "In stock",
1088
+ "tone": "success",
1089
+ "onHand": 6,
1090
+ "reorderLevel": 2,
1091
+ "stockValue": 1734
1092
+ }
1093
+ ]
1094
+ },
1095
+ {
1096
+ "shape": "StockByLocationColumns",
1097
+ "rows": [
1098
+ {
1099
+ "field": "location",
1100
+ "header": "Location"
1101
+ },
1102
+ {
1103
+ "field": "quantity",
1104
+ "header": "On hand",
1105
+ "kind": "number"
1106
+ },
1107
+ {
1108
+ "field": "reserved",
1109
+ "header": "Reserved",
1110
+ "kind": "number"
1111
+ },
1112
+ {
1113
+ "field": "status",
1114
+ "header": "Status",
1115
+ "kind": "status",
1116
+ "tones": {
1117
+ "In stock": "success",
1118
+ "Low stock": "warning",
1119
+ "Out of stock": "danger"
1120
+ }
1121
+ }
1122
+ ]
1123
+ },
1124
+ {
1125
+ "shape": "ItemStockByLocation",
1126
+ "rows": [
1127
+ {
1128
+ "id": "sbl-1",
1129
+ "location": "Main warehouse / Aisle A / Shelf A1",
1130
+ "quantity": 4,
1131
+ "reserved": 1,
1132
+ "status": "In stock"
1133
+ },
1134
+ {
1135
+ "id": "sbl-2",
1136
+ "location": "Main warehouse / Aisle A / Shelf A2",
1137
+ "quantity": 2,
1138
+ "reserved": 0,
1139
+ "status": "Low stock"
1140
+ }
1141
+ ]
1142
+ },
1143
+ {
1144
+ "shape": "ItemMovements",
1145
+ "rows": [
1146
+ {
1147
+ "id": "move-6",
1148
+ "when": "2026-10-14",
1149
+ "item": "Pallet jack",
1150
+ "type": "Transfer",
1151
+ "quantity": 1,
1152
+ "location": "Main warehouse / Aisle A / Shelf A1",
1153
+ "by": "Marcus Webb"
1154
+ },
1155
+ {
1156
+ "id": "move-12",
1157
+ "when": "2026-10-09",
1158
+ "item": "Hand truck",
1159
+ "type": "Check out",
1160
+ "quantity": -1,
1161
+ "location": "Main warehouse / Aisle A / Shelf A2",
1162
+ "by": "Tom Eriksen"
1163
+ }
1164
+ ]
1165
+ },
1166
+ {
1167
+ "shape": "ItemActivity",
1168
+ "rows": [
1169
+ {
1170
+ "id": "a0",
1171
+ "actor": "Hannah Cole",
1172
+ "action": "counted the shelf",
1173
+ "kind": "change",
1174
+ "at": "2026-10-14T09:30:00Z",
1175
+ "body": "Cycle count matched the system: 6 on hand."
1176
+ },
1177
+ {
1178
+ "id": "a1",
1179
+ "actor": "Marcus Webb",
1180
+ "action": "moved 1 to Shelf A2",
1181
+ "kind": "change",
1182
+ "at": "2026-10-13T14:05:00Z",
1183
+ "body": ""
1184
+ },
1185
+ {
1186
+ "id": "a2",
1187
+ "actor": "Aisha Patel",
1188
+ "action": "commented",
1189
+ "kind": "comment",
1190
+ "at": "2026-10-12T08:45:00Z",
1191
+ "body": "The left wheel squeaks; booked a service for next week."
1192
+ }
1193
+ ]
1194
+ },
1195
+ {
1196
+ "shape": "ItemTasks",
1197
+ "rows": [
1198
+ {
1199
+ "title": "Cycle counts",
1200
+ "items": [
1201
+ {
1202
+ "id": "c0",
1203
+ "label": "Count Shelf A1",
1204
+ "owner": "Hannah Cole",
1205
+ "due": "2026-10-21",
1206
+ "done": false
1207
+ },
1208
+ {
1209
+ "id": "c1",
1210
+ "label": "Count Shelf A2",
1211
+ "owner": "Marcus Webb",
1212
+ "due": "2026-10-22",
1213
+ "done": false
1214
+ },
1215
+ {
1216
+ "id": "c2",
1217
+ "label": "Reconcile the count with the system",
1218
+ "owner": "Hannah Cole",
1219
+ "due": "2026-10-23",
1220
+ "done": true
1221
+ }
1222
+ ]
1223
+ }
1224
+ ]
1225
+ },
1226
+ {
1227
+ "shape": "InventoryRecordTabs",
1228
+ "rows": [
1229
+ {
1230
+ "id": "overview",
1231
+ "label": "Overview"
1232
+ },
1233
+ {
1234
+ "id": "stock",
1235
+ "label": "Stock"
1236
+ },
1237
+ {
1238
+ "id": "movements",
1239
+ "label": "Movements"
1240
+ },
1241
+ {
1242
+ "id": "supplier",
1243
+ "label": "Supplier"
1244
+ }
1245
+ ]
1246
+ },
1247
+ {
1248
+ "shape": "InventoryKpis",
1249
+ "rows": [
1250
+ {
1251
+ "value": 6,
1252
+ "change": -1
1253
+ },
1254
+ {
1255
+ "value": 10586,
1256
+ "change": 2.4
1257
+ },
1258
+ {
1259
+ "value": 128,
1260
+ "change": 6.7
1261
+ }
1262
+ ]
1263
+ },
1264
+ {
1265
+ "shape": "InventoryTopMovers",
1266
+ "rows": [
1267
+ {
1268
+ "categories": [
1269
+ "Cardboard box M",
1270
+ "Cardboard box L",
1271
+ "Safety gloves (L)",
1272
+ "Packing tape",
1273
+ "Stretch wrap roll",
1274
+ "Thermal labels"
1275
+ ],
1276
+ "series": [
1277
+ {
1278
+ "name": "Units moved",
1279
+ "values": [
1280
+ 310,
1281
+ 220,
1282
+ 146,
1283
+ 98,
1284
+ 74,
1285
+ 52
1286
+ ]
1287
+ }
1288
+ ]
1289
+ }
1290
+ ]
1291
+ },
1292
+ {
1293
+ "shape": "InventoryLowStock",
1294
+ "rows": [
1295
+ {
1296
+ "id": "item-2",
1297
+ "sku": "EQ-1002",
1298
+ "name": "Hand truck",
1299
+ "category": "Equipment",
1300
+ "location": "Main warehouse / Aisle A / Shelf A2",
1301
+ "quantity": 3,
1302
+ "reorderLevel": 4,
1303
+ "unitCost": 96,
1304
+ "status": "Low stock",
1305
+ "tone": "warning",
1306
+ "supplier": "Hartley Industrial",
1307
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2851,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2851,45%25,25%25%29' font-family='sans-serif'%3EH%3C/text%3E%3C/svg%3E"
1308
+ },
1309
+ {
1310
+ "id": "item-3",
1311
+ "sku": "EQ-1003",
1312
+ "name": "Forklift battery",
1313
+ "category": "Equipment",
1314
+ "location": "Returns cage",
1315
+ "quantity": 1,
1316
+ "reorderLevel": 2,
1317
+ "unitCost": 1450,
1318
+ "status": "Low stock",
1319
+ "tone": "warning",
1320
+ "supplier": "Hartley Industrial",
1321
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2872,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2872,45%25,25%25%29' font-family='sans-serif'%3EF%3C/text%3E%3C/svg%3E"
1322
+ },
1323
+ {
1324
+ "id": "item-7",
1325
+ "sku": "SF-2003",
1326
+ "name": "Safety boots (42)",
1327
+ "category": "Safety",
1328
+ "location": "Main warehouse / Aisle B / Shelf B2",
1329
+ "quantity": 0,
1330
+ "reorderLevel": 8,
1331
+ "unitCost": 54,
1332
+ "status": "Out of stock",
1333
+ "tone": "danger",
1334
+ "supplier": "Safeway PPE",
1335
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28156,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28156,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
1336
+ },
1337
+ {
1338
+ "id": "item-9",
1339
+ "sku": "PK-3002",
1340
+ "name": "Packing tape",
1341
+ "category": "Packaging",
1342
+ "location": "Main warehouse / Aisle B / Shelf B2",
1343
+ "quantity": 12,
1344
+ "reorderLevel": 40,
1345
+ "unitCost": 2,
1346
+ "status": "Low stock",
1347
+ "tone": "warning",
1348
+ "supplier": "Brightpack Ltd",
1349
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28198,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28198,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E"
1350
+ },
1351
+ {
1352
+ "id": "item-14",
1353
+ "sku": "EL-4002",
1354
+ "name": "Label printer",
1355
+ "category": "Electronics",
1356
+ "location": "Cold store / Rack 1",
1357
+ "quantity": 4,
1358
+ "reorderLevel": 5,
1359
+ "unitCost": 240,
1360
+ "status": "Low stock",
1361
+ "tone": "warning",
1362
+ "supplier": "Scanline Systems",
1363
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28303,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28303,45%25,25%25%29' font-family='sans-serif'%3EL%3C/text%3E%3C/svg%3E"
1364
+ },
1365
+ {
1366
+ "id": "item-16",
1367
+ "sku": "EL-4004",
1368
+ "name": "Cable ties (100)",
1369
+ "category": "Electronics",
1370
+ "location": "Cold store / Rack 1",
1371
+ "quantity": 7,
1372
+ "reorderLevel": 20,
1373
+ "unitCost": 4,
1374
+ "status": "Low stock",
1375
+ "tone": "warning",
1376
+ "supplier": "Scanline Systems",
1377
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28345,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28345,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
1378
+ }
1379
+ ]
1380
+ },
1381
+ {
1382
+ "shape": "RecentMovements",
1383
+ "rows": [
1384
+ {
1385
+ "id": "move-1",
1386
+ "when": "2026-10-16",
1387
+ "item": "Cardboard box M",
1388
+ "type": "Check in",
1389
+ "quantity": 120,
1390
+ "location": "Main warehouse / Aisle A / Shelf A1",
1391
+ "by": "Hannah Cole"
1392
+ },
1393
+ {
1394
+ "id": "move-2",
1395
+ "when": "2026-10-16",
1396
+ "item": "Safety gloves (L)",
1397
+ "type": "Check out",
1398
+ "quantity": -20,
1399
+ "location": "Main warehouse / Aisle B / Shelf B1",
1400
+ "by": "Marcus Webb"
1401
+ },
1402
+ {
1403
+ "id": "move-3",
1404
+ "when": "2026-10-15",
1405
+ "item": "Barcode scanner",
1406
+ "type": "Check out",
1407
+ "quantity": -2,
1408
+ "location": "Cold store / Rack 1",
1409
+ "by": "Aisha Patel"
1410
+ },
1411
+ {
1412
+ "id": "move-4",
1413
+ "when": "2026-10-15",
1414
+ "item": "Stretch wrap roll",
1415
+ "type": "Check in",
1416
+ "quantity": 40,
1417
+ "location": "Main warehouse / Aisle B / Shelf B2",
1418
+ "by": "Tom Eriksen"
1419
+ },
1420
+ {
1421
+ "id": "move-5",
1422
+ "when": "2026-10-14",
1423
+ "item": "Packing tape",
1424
+ "type": "Check out",
1425
+ "quantity": -28,
1426
+ "location": "Main warehouse / Aisle B / Shelf B2",
1427
+ "by": "Hannah Cole"
1428
+ },
1429
+ {
1430
+ "id": "move-6",
1431
+ "when": "2026-10-14",
1432
+ "item": "Pallet jack",
1433
+ "type": "Transfer",
1434
+ "quantity": 1,
1435
+ "location": "Main warehouse / Aisle A / Shelf A1",
1436
+ "by": "Marcus Webb"
1437
+ }
1438
+ ]
1439
+ },
1440
+ {
1441
+ "shape": "LocationNodes",
1442
+ "rows": [
1443
+ {
1444
+ "id": "Main warehouse",
1445
+ "label": "Main warehouse",
1446
+ "title": "11 items"
1447
+ },
1448
+ {
1449
+ "id": "Main warehouse / Aisle A",
1450
+ "label": "Aisle A",
1451
+ "title": "6 items",
1452
+ "parentId": "Main warehouse"
1453
+ },
1454
+ {
1455
+ "id": "Main warehouse / Aisle A / Shelf A1",
1456
+ "label": "Shelf A1",
1457
+ "title": "3 items",
1458
+ "parentId": "Main warehouse / Aisle A"
1459
+ },
1460
+ {
1461
+ "id": "Main warehouse / Aisle A / Shelf A2",
1462
+ "label": "Shelf A2",
1463
+ "title": "3 items",
1464
+ "parentId": "Main warehouse / Aisle A"
1465
+ },
1466
+ {
1467
+ "id": "Main warehouse / Aisle B",
1468
+ "label": "Aisle B",
1469
+ "title": "5 items",
1470
+ "parentId": "Main warehouse"
1471
+ },
1472
+ {
1473
+ "id": "Main warehouse / Aisle B / Shelf B1",
1474
+ "label": "Shelf B1",
1475
+ "title": "2 items",
1476
+ "parentId": "Main warehouse / Aisle B"
1477
+ },
1478
+ {
1479
+ "id": "Main warehouse / Aisle B / Shelf B2",
1480
+ "label": "Shelf B2",
1481
+ "title": "3 items",
1482
+ "parentId": "Main warehouse / Aisle B"
1483
+ },
1484
+ {
1485
+ "id": "Cold store",
1486
+ "label": "Cold store",
1487
+ "title": "4 items"
1488
+ },
1489
+ {
1490
+ "id": "Cold store / Rack 1",
1491
+ "label": "Rack 1",
1492
+ "title": "4 items",
1493
+ "parentId": "Cold store"
1494
+ },
1495
+ {
1496
+ "id": "Returns cage",
1497
+ "label": "Returns cage",
1498
+ "title": "1 items"
1499
+ }
1500
+ ]
1501
+ },
1502
+ {
1503
+ "shape": "LocationContentColumns",
1504
+ "rows": [
1505
+ {
1506
+ "field": "name",
1507
+ "header": "Item"
1508
+ },
1509
+ {
1510
+ "field": "sku",
1511
+ "header": "SKU"
1512
+ },
1513
+ {
1514
+ "field": "location",
1515
+ "header": "Location"
1516
+ },
1517
+ {
1518
+ "field": "quantity",
1519
+ "header": "Quantity",
1520
+ "kind": "number"
1521
+ },
1522
+ {
1523
+ "field": "status",
1524
+ "header": "Status",
1525
+ "kind": "status",
1526
+ "tones": {
1527
+ "In stock": "success",
1528
+ "Low stock": "warning",
1529
+ "Out of stock": "danger"
1530
+ }
1531
+ }
1532
+ ]
1533
+ },
1534
+ {
1535
+ "shape": "LocationContents",
1536
+ "rows": [
1537
+ {
1538
+ "id": "item-1",
1539
+ "sku": "EQ-1001",
1540
+ "name": "Pallet jack",
1541
+ "category": "Equipment",
1542
+ "location": "Main warehouse / Aisle A / Shelf A1",
1543
+ "quantity": 6,
1544
+ "reorderLevel": 2,
1545
+ "unitCost": 289,
1546
+ "status": "In stock",
1547
+ "tone": "",
1548
+ "supplier": "Hartley Industrial",
1549
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2830,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2830,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E"
1550
+ },
1551
+ {
1552
+ "id": "item-2",
1553
+ "sku": "EQ-1002",
1554
+ "name": "Hand truck",
1555
+ "category": "Equipment",
1556
+ "location": "Main warehouse / Aisle A / Shelf A2",
1557
+ "quantity": 3,
1558
+ "reorderLevel": 4,
1559
+ "unitCost": 96,
1560
+ "status": "Low stock",
1561
+ "tone": "warning",
1562
+ "supplier": "Hartley Industrial",
1563
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2851,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2851,45%25,25%25%29' font-family='sans-serif'%3EH%3C/text%3E%3C/svg%3E"
1564
+ },
1565
+ {
1566
+ "id": "item-3",
1567
+ "sku": "EQ-1003",
1568
+ "name": "Forklift battery",
1569
+ "category": "Equipment",
1570
+ "location": "Returns cage",
1571
+ "quantity": 1,
1572
+ "reorderLevel": 2,
1573
+ "unitCost": 1450,
1574
+ "status": "Low stock",
1575
+ "tone": "warning",
1576
+ "supplier": "Hartley Industrial",
1577
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2872,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2872,45%25,25%25%29' font-family='sans-serif'%3EF%3C/text%3E%3C/svg%3E"
1578
+ },
1579
+ {
1580
+ "id": "item-4",
1581
+ "sku": "EQ-1004",
1582
+ "name": "Tape measure",
1583
+ "category": "Equipment",
1584
+ "location": "Main warehouse / Aisle A / Shelf A2",
1585
+ "quantity": 24,
1586
+ "reorderLevel": 10,
1587
+ "unitCost": 7,
1588
+ "status": "In stock",
1589
+ "tone": "",
1590
+ "supplier": "Hartley Industrial",
1591
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%2893,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%2893,45%25,25%25%29' font-family='sans-serif'%3ET%3C/text%3E%3C/svg%3E"
1592
+ },
1593
+ {
1594
+ "id": "item-5",
1595
+ "sku": "SF-2001",
1596
+ "name": "Safety gloves (L)",
1597
+ "category": "Safety",
1598
+ "location": "Main warehouse / Aisle B / Shelf B1",
1599
+ "quantity": 140,
1600
+ "reorderLevel": 60,
1601
+ "unitCost": 3,
1602
+ "status": "In stock",
1603
+ "tone": "",
1604
+ "supplier": "Safeway PPE",
1605
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28114,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28114,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
1606
+ },
1607
+ {
1608
+ "id": "item-6",
1609
+ "sku": "SF-2002",
1610
+ "name": "Hi-vis vest",
1611
+ "category": "Safety",
1612
+ "location": "Main warehouse / Aisle B / Shelf B1",
1613
+ "quantity": 58,
1614
+ "reorderLevel": 40,
1615
+ "unitCost": 6,
1616
+ "status": "In stock",
1617
+ "tone": "",
1618
+ "supplier": "Safeway PPE",
1619
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28135,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28135,45%25,25%25%29' font-family='sans-serif'%3EH%3C/text%3E%3C/svg%3E"
1620
+ },
1621
+ {
1622
+ "id": "item-7",
1623
+ "sku": "SF-2003",
1624
+ "name": "Safety boots (42)",
1625
+ "category": "Safety",
1626
+ "location": "Main warehouse / Aisle B / Shelf B2",
1627
+ "quantity": 0,
1628
+ "reorderLevel": 8,
1629
+ "unitCost": 54,
1630
+ "status": "Out of stock",
1631
+ "tone": "danger",
1632
+ "supplier": "Safeway PPE",
1633
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28156,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28156,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
1634
+ },
1635
+ {
1636
+ "id": "item-8",
1637
+ "sku": "PK-3001",
1638
+ "name": "Stretch wrap roll",
1639
+ "category": "Packaging",
1640
+ "location": "Main warehouse / Aisle B / Shelf B2",
1641
+ "quantity": 82,
1642
+ "reorderLevel": 30,
1643
+ "unitCost": 11,
1644
+ "status": "In stock",
1645
+ "tone": "",
1646
+ "supplier": "Brightpack Ltd",
1647
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28177,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28177,45%25,25%25%29' font-family='sans-serif'%3ES%3C/text%3E%3C/svg%3E"
1648
+ },
1649
+ {
1650
+ "id": "item-9",
1651
+ "sku": "PK-3002",
1652
+ "name": "Packing tape",
1653
+ "category": "Packaging",
1654
+ "location": "Main warehouse / Aisle B / Shelf B2",
1655
+ "quantity": 12,
1656
+ "reorderLevel": 40,
1657
+ "unitCost": 2,
1658
+ "status": "Low stock",
1659
+ "tone": "warning",
1660
+ "supplier": "Brightpack Ltd",
1661
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28198,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28198,45%25,25%25%29' font-family='sans-serif'%3EP%3C/text%3E%3C/svg%3E"
1662
+ },
1663
+ {
1664
+ "id": "item-10",
1665
+ "sku": "PK-3003",
1666
+ "name": "Cardboard box M",
1667
+ "category": "Packaging",
1668
+ "location": "Main warehouse / Aisle A / Shelf A1",
1669
+ "quantity": 420,
1670
+ "reorderLevel": 150,
1671
+ "unitCost": 1,
1672
+ "status": "In stock",
1673
+ "tone": "",
1674
+ "supplier": "Brightpack Ltd",
1675
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28219,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28219,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
1676
+ },
1677
+ {
1678
+ "id": "item-11",
1679
+ "sku": "PK-3004",
1680
+ "name": "Cardboard box L",
1681
+ "category": "Packaging",
1682
+ "location": "Main warehouse / Aisle A / Shelf A1",
1683
+ "quantity": 260,
1684
+ "reorderLevel": 120,
1685
+ "unitCost": 2,
1686
+ "status": "In stock",
1687
+ "tone": "",
1688
+ "supplier": "Brightpack Ltd",
1689
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28240,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28240,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
1690
+ },
1691
+ {
1692
+ "id": "item-12",
1693
+ "sku": "PK-3005",
1694
+ "name": "Bubble wrap",
1695
+ "category": "Packaging",
1696
+ "location": "Main warehouse / Aisle A / Shelf A2",
1697
+ "quantity": 35,
1698
+ "reorderLevel": 20,
1699
+ "unitCost": 18,
1700
+ "status": "In stock",
1701
+ "tone": "",
1702
+ "supplier": "Brightpack Ltd",
1703
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28261,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28261,45%25,25%25%29' font-family='sans-serif'%3EB%3C/text%3E%3C/svg%3E"
1704
+ },
1705
+ {
1706
+ "id": "item-13",
1707
+ "sku": "EL-4001",
1708
+ "name": "Barcode scanner",
1709
+ "category": "Electronics",
1710
+ "location": "Cold store / Rack 1",
1711
+ "quantity": 14,
1712
+ "reorderLevel": 5,
1713
+ "unitCost": 168,
1714
+ "status": "In stock",
1715
+ "tone": "",
1716
+ "supplier": "Scanline Systems",
1717
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28282,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28282,45%25,25%25%29' font-family='sans-serif'%3EB%3C/text%3E%3C/svg%3E"
1718
+ },
1719
+ {
1720
+ "id": "item-14",
1721
+ "sku": "EL-4002",
1722
+ "name": "Label printer",
1723
+ "category": "Electronics",
1724
+ "location": "Cold store / Rack 1",
1725
+ "quantity": 4,
1726
+ "reorderLevel": 5,
1727
+ "unitCost": 240,
1728
+ "status": "Low stock",
1729
+ "tone": "warning",
1730
+ "supplier": "Scanline Systems",
1731
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28303,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28303,45%25,25%25%29' font-family='sans-serif'%3EL%3C/text%3E%3C/svg%3E"
1732
+ },
1733
+ {
1734
+ "id": "item-15",
1735
+ "sku": "EL-4003",
1736
+ "name": "Thermal labels 100x150",
1737
+ "category": "Electronics",
1738
+ "location": "Cold store / Rack 1",
1739
+ "quantity": 38,
1740
+ "reorderLevel": 25,
1741
+ "unitCost": 9,
1742
+ "status": "In stock",
1743
+ "tone": "",
1744
+ "supplier": "Northern Labels",
1745
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28324,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28324,45%25,25%25%29' font-family='sans-serif'%3ET%3C/text%3E%3C/svg%3E"
1746
+ },
1747
+ {
1748
+ "id": "item-16",
1749
+ "sku": "EL-4004",
1750
+ "name": "Cable ties (100)",
1751
+ "category": "Electronics",
1752
+ "location": "Cold store / Rack 1",
1753
+ "quantity": 7,
1754
+ "reorderLevel": 20,
1755
+ "unitCost": 4,
1756
+ "status": "Low stock",
1757
+ "tone": "warning",
1758
+ "supplier": "Scanline Systems",
1759
+ "photo": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180'%3E%3Crect width='320' height='180' fill='hsl%28345,45%25,82%25%29'/%3E%3Ctext x='160' y='108' font-size='72' text-anchor='middle' fill='hsl%28345,45%25,25%25%29' font-family='sans-serif'%3EC%3C/text%3E%3C/svg%3E"
1760
+ }
1761
+ ]
1762
+ },
1763
+ {
1764
+ "shape": "InventoryFormErrors",
1765
+ "rows": [
1766
+ {}
1767
+ ]
1768
+ }
1769
+ ]
1770
+ }