@controleonline/ui-common 1.2.70 → 1.2.75

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 (188) hide show
  1. package/.github/actions/workers/manager/action.yml +147 -0
  2. package/.github/actions/workers/qa/action.yml +44 -0
  3. package/.github/actions/workers/security/action.yml +44 -0
  4. package/.github/actions/workers/technical-documenter/action.yml +51 -0
  5. package/.github/workflows/manager-worker.yml +168 -0
  6. package/.github/workflows/publish-npm.yml +45 -0
  7. package/.gitmodules +3 -0
  8. package/AGENTS.md +6 -0
  9. package/README.md +14 -0
  10. package/package.json +32 -28
  11. package/src/api/fetch.js +1 -1
  12. package/src/api/index.js +328 -58
  13. package/src/react/components/AddImportModal.js +95 -111
  14. package/src/react/components/AnimatedModal.js +171 -0
  15. package/src/react/components/AnimatedModal.styles.js +21 -0
  16. package/src/react/components/AppTypeSwitcher.js +164 -0
  17. package/src/react/components/AppTypeSwitcher.styles.js +109 -0
  18. package/src/react/components/BackgroundRuntimeBridge.js +5 -4
  19. package/src/react/components/BottomNavigationBar.config.js +211 -231
  20. package/src/react/components/BottomNavigationBar.js +86 -31
  21. package/src/react/components/BottomNavigationBar.styles.js +118 -110
  22. package/src/react/components/CategoryForm.js +52 -35
  23. package/src/react/components/DefaultProvider.native.js +194 -156
  24. package/src/react/components/DefaultProvider.web.js +188 -112
  25. package/src/react/components/DeliveryPushBridge.native.js +2 -2
  26. package/src/react/components/DeviceAlertSoundService.js +3 -3
  27. package/src/react/components/KioskModeBridge.js +2 -2
  28. package/src/react/components/LauncherModeBridge.js +2 -2
  29. package/src/react/components/ManagerPushBridge.native.js +2 -2
  30. package/src/react/components/NetworkPrinterPreviewModal.js +249 -0
  31. package/src/react/components/NetworkPrinterPreviewModal.styles.js +159 -0
  32. package/src/react/components/RemoteCheckoutService.js +28 -20
  33. package/src/react/components/RuntimeBottomNavigationBar.js +146 -119
  34. package/src/react/components/RuntimeInfoFooter.js +137 -45
  35. package/src/react/components/RuntimeInfoFooter.styles.js +3 -0
  36. package/src/react/components/StateStore.js +258 -0
  37. package/src/react/components/UnifiedPaymentBar.js +7 -4
  38. package/src/react/components/UserAvatar.js +160 -0
  39. package/src/react/components/WebsocketListener.native.js +11 -11
  40. package/src/react/components/integrations/IntegrationHero/index.js +48 -0
  41. package/src/react/components/integrations/IntegrationHero/styles.js +57 -0
  42. package/src/react/components/integrations/IntegrationTabs/index.js +89 -0
  43. package/src/react/components/integrations/IntegrationTabs/styles.js +44 -0
  44. package/src/react/config/deviceConfigBootstrap.js +71 -30
  45. package/src/react/css/orders.js +72 -0
  46. package/src/react/pages/Connections.js +229 -0
  47. package/src/react/pages/Connections.styles.js +222 -0
  48. package/src/react/pages/DeviceDetailPage.js +2814 -0
  49. package/src/react/pages/DeviceDetailPage.styles.js +308 -0
  50. package/src/react/pages/Devices/currentDevice.js +194 -0
  51. package/src/react/pages/Devices/deviceTypes/DeviceGroupCard.js +257 -0
  52. package/src/react/pages/Devices/deviceTypes/all.js +23 -0
  53. package/src/react/pages/Devices/deviceTypes/device.js +25 -0
  54. package/src/react/pages/Devices/deviceTypes/deviceListHelpers.js +178 -0
  55. package/src/react/pages/Devices/deviceTypes/display.js +26 -0
  56. package/src/react/pages/Devices/deviceTypes/index.js +145 -0
  57. package/src/react/pages/Devices/deviceTypes/ipCamera.js +35 -0
  58. package/src/react/pages/Devices/deviceTypes/pdv.js +88 -0
  59. package/src/react/pages/Devices/deviceTypes/printer.js +37 -0
  60. package/src/react/pages/Devices/deviceTypes/shared.js +453 -0
  61. package/src/react/pages/Devices/deviceTypes/useDeviceNetworkConnectivity.js +145 -0
  62. package/src/react/pages/Devices.js +183 -0
  63. package/src/react/pages/Devices.styles.js +353 -0
  64. package/src/react/pages/Food99IntegrationPage/components/Food99CatalogTab.js +219 -0
  65. package/src/react/pages/Food99IntegrationPage/components/Food99OverviewTab.js +134 -0
  66. package/src/react/pages/Food99IntegrationPage/components/Food99PreviewModal.js +173 -0
  67. package/src/react/pages/Food99IntegrationPage/components/Food99ProductCard.js +1 -0
  68. package/src/react/pages/Food99IntegrationPage/components/Food99QuickWalletModal.js +181 -0
  69. package/src/react/pages/Food99IntegrationPage/components/Food99SettingsTab.js +306 -0
  70. package/src/react/pages/Food99IntegrationPage/components/Food99StoreTab.js +417 -0
  71. package/src/react/pages/Food99IntegrationPage/index.js +1530 -0
  72. package/src/react/pages/Food99IntegrationPage/styles.js +792 -0
  73. package/src/react/pages/Food99IntegrationPage/utils.js +155 -0
  74. package/src/react/pages/Food99IntegrationPage.js +1 -0
  75. package/src/react/pages/Food99IntegrationPage.styles.js +1 -0
  76. package/src/react/pages/GenericLogPage.js +42 -167
  77. package/src/react/pages/IFoodIntegrationPage/components/IFoodCatalogTab.js +8 -0
  78. package/src/react/pages/IFoodIntegrationPage/components/IFoodOperationsTab.js +420 -0
  79. package/src/react/pages/IFoodIntegrationPage/components/IFoodOverviewTab.js +118 -0
  80. package/src/react/pages/IFoodIntegrationPage/components/IFoodPreviewModal.js +103 -0
  81. package/src/react/pages/IFoodIntegrationPage/components/IFoodProductCard.js +1 -0
  82. package/src/react/pages/IFoodIntegrationPage/components/IFoodStoreTab.js +150 -0
  83. package/src/react/pages/IFoodIntegrationPage/index.js +1298 -0
  84. package/src/react/pages/IFoodIntegrationPage/styles.js +764 -0
  85. package/src/react/pages/IFoodIntegrationPage/utils.js +91 -0
  86. package/src/react/pages/IFoodIntegrationPage.js +1 -0
  87. package/src/react/pages/IFoodIntegrationPage.styles.js +1 -0
  88. package/src/react/pages/Imports.js +214 -166
  89. package/src/react/pages/IntegrationConfigPage.js +744 -0
  90. package/src/react/pages/IntegrationConfigPage.styles.js +269 -0
  91. package/src/react/pages/Integrations.js +299 -0
  92. package/src/react/pages/Integrations.styles.js +130 -0
  93. package/src/react/pages/ManagerOrderNotificationsPage.js +642 -0
  94. package/src/react/pages/MarketplaceIntegrationPage/components/MarketplaceProductCard.js +205 -0
  95. package/src/react/pages/MarketplaceIntegrationPage/components/RemoteMarketplaceMenuTab.js +335 -0
  96. package/src/react/pages/MarketplaceIntegrationPage/index.js +60 -0
  97. package/src/react/pages/MarketplaceIntegrationPage/utils.js +137 -0
  98. package/src/react/pages/MercadoLivreIntegrationPage.js +538 -0
  99. package/src/react/pages/PrinterDeviceDetailPage.js +1916 -0
  100. package/src/react/pages/PrinterDeviceDetailPage.styles.js +223 -0
  101. package/src/react/pages/PrinterDeviceFormPage.js +521 -0
  102. package/src/react/pages/PrinterDeviceFormPage.styles.js +159 -0
  103. package/src/react/pages/SettingsPage/PaymentTypesByWalletTab.js +484 -454
  104. package/src/react/pages/SettingsPage/index.js +1266 -1167
  105. package/src/react/pages/WhatsAppConnectionPage.js +459 -0
  106. package/src/react/pages/WhatsAppConnectionPage.styles.js +284 -0
  107. package/src/react/pages/integrationsCatalog.js +399 -0
  108. package/src/react/print/providers/local.js +1 -1
  109. package/src/react/router/publicRoutes.js +25 -0
  110. package/src/react/services/Cielo/Checkout.js +39 -0
  111. package/src/react/services/Cielo/Cielo.js +193 -0
  112. package/src/react/services/Cielo/Print.js +7 -0
  113. package/src/react/services/InfinitePay/Checkout.js +33 -0
  114. package/src/react/services/InfinitePay/InfinitePay.js +24 -0
  115. package/src/react/{utils → services}/paymentGatewayExecution.js +91 -91
  116. package/src/react/styles/global.js +115 -0
  117. package/src/react/utils/categoryContexts.js +46 -0
  118. package/src/react/utils/entityDisplay.js +222 -217
  119. package/src/react/utils/fileUrl.js +201 -16
  120. package/src/react/utils/integrationPage.js +16 -0
  121. package/src/react/utils/menuNavigation.js +31 -0
  122. package/src/react/utils/orderIdentity.js +277 -0
  123. package/src/react/utils/remotePayment.js +115 -61
  124. package/src/react/utils/runtimeFooter.js +40 -22
  125. package/src/react/utils/runtimeLanguage.js +50 -9
  126. package/src/react/utils/runtimeMenu.js +190 -98
  127. package/src/react/utils/runtimeZoom.js +43 -0
  128. package/src/react/utils/shopConfig.js +72 -34
  129. package/src/react/utils/shopFranchises.js +182 -23
  130. package/src/react/utils/socketRuntimePipeline.js +14 -14
  131. package/src/react/utils/storeColumns.js +23 -4
  132. package/src/react/utils/userAvatar.js +104 -0
  133. package/src/store/categories/index.js +48 -20
  134. package/src/store/configs/index.js +2 -2
  135. package/src/store/device_config/index.js +62 -21
  136. package/src/store/entity_log/index.js +22 -1
  137. package/src/store/imports/customActions.js +51 -0
  138. package/src/store/imports/index.js +89 -88
  139. package/src/store/status/index.js +11 -11
  140. package/src/store/themes/index.js +22 -0
  141. package/src/store/timezones/index.js +3 -1
  142. package/src/tests/browser/manager/connections.spec.js +143 -0
  143. package/src/tests/browser/manager/devices-current.spec.js +343 -0
  144. package/src/tests/browser/manager/mercado-livre-integration.spec.js +268 -0
  145. package/src/tests/react/api/deviceHeaders.test.js +114 -0
  146. package/src/tests/react/api/loadSmokeIndex.test.js +75 -0
  147. package/src/tests/react/components/AddImportModal.test.js +166 -0
  148. package/src/tests/react/components/BottomNavigationBar.config.test.js +20 -0
  149. package/src/tests/react/components/UserAvatar.test.js +52 -0
  150. package/src/tests/react/config/deviceConfigBootstrap.test.js +47 -0
  151. package/src/tests/react/pages/DevicePickerStyles.test.js +47 -0
  152. package/src/tests/react/pages/Devices/deviceListHelpers.test.js +39 -0
  153. package/src/tests/react/pages/DevicesCurrentDevice.test.js +198 -0
  154. package/src/tests/react/pages/connectionsHelpers.test.js +34 -0
  155. package/src/tests/react/pages/mercadoLivreIntegrationPageContract.test.mjs +16 -0
  156. package/src/tests/react/print/localPrintProvider.test.js +1 -1
  157. package/src/tests/react/services/Cielo.test.js +190 -0
  158. package/src/tests/react/store/categoriesOrdering.test.js +26 -0
  159. package/src/tests/react/utils/appDomain.test.js +62 -0
  160. package/src/tests/react/utils/entityDisplay.test.js +2 -2
  161. package/src/tests/react/utils/fileUrl.test.js +62 -0
  162. package/src/tests/react/utils/formatter.test.mjs +33 -0
  163. package/src/tests/react/utils/importStatus.test.js +2 -2
  164. package/src/tests/react/utils/orderIdentity.test.js +139 -0
  165. package/src/tests/react/utils/remotePayment.test.js +62 -0
  166. package/src/tests/react/utils/runtimeFooter.test.js +32 -9
  167. package/src/tests/react/utils/runtimeLanguage.test.js +80 -10
  168. package/src/tests/react/utils/runtimeMenu.test.js +195 -111
  169. package/src/tests/react/utils/runtimeZoom.test.js +38 -0
  170. package/src/tests/react/utils/shopConfig.test.js +75 -0
  171. package/src/tests/react/utils/shopFranchises.test.js +122 -12
  172. package/src/tests/react/utils/translate.discovery.test.mjs +170 -0
  173. package/src/tests/react/utils/translate.test.helpers.mjs +152 -0
  174. package/src/tests/react/utils/translate.test.mjs +252 -396
  175. package/src/tests/react/utils/userAvatar.test.js +63 -0
  176. package/src/utils/appDomain.js +15 -4
  177. package/src/utils/formatter.js +122 -16
  178. package/src/utils/integrationConfigs.js +1 -0
  179. package/src/utils/translate.js +277 -398
  180. package/src/utils/translateDiscovery.js +96 -0
  181. package/src/utils/translateNormalize.js +33 -0
  182. package/src/utils/translatePending.js +92 -0
  183. package/src/utils/translateStorage.js +142 -0
  184. package/.github/agents/developer.agent.md +0 -30
  185. package/.github/agents/devops.agent.md +0 -30
  186. package/.github/agents/qa.agent.md +0 -30
  187. package/.github/agents/security.agent.md +0 -30
  188. package/.github/workflows/npmjs.yml +0 -35
@@ -0,0 +1,792 @@
1
+ import {Platform, StyleSheet} from 'react-native';
2
+ import {colors} from '@controleonline/../../src/styles/colors';
3
+
4
+ const styles = StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: colors.background,
8
+ },
9
+ scroll: {
10
+ paddingHorizontal: 20,
11
+ paddingTop: 16,
12
+ paddingBottom: 32,
13
+ gap: 18,
14
+ },
15
+ centerState: {
16
+ flex: 1,
17
+ alignItems: 'center',
18
+ justifyContent: 'center',
19
+ paddingHorizontal: 32,
20
+ gap: 10,
21
+ },
22
+ centerStateTitle: {
23
+ fontSize: 20,
24
+ fontWeight: '700',
25
+ color: '#0F172A',
26
+ textAlign: 'center',
27
+ },
28
+ centerStateText: {
29
+ fontSize: 14,
30
+ color: '#64748B',
31
+ textAlign: 'center',
32
+ lineHeight: 20,
33
+ },
34
+ heroCard: {
35
+ borderRadius: 24,
36
+ padding: 22,
37
+ flexDirection: 'row',
38
+ justifyContent: 'space-between',
39
+ alignItems: 'flex-start',
40
+ },
41
+ heroCopy: {
42
+ flex: 1,
43
+ paddingRight: 16,
44
+ },
45
+ heroEyebrow: {
46
+ fontSize: 12,
47
+ fontWeight: '700',
48
+ color: 'rgba(255,255,255,0.78)',
49
+ textTransform: 'uppercase',
50
+ letterSpacing: 1,
51
+ marginBottom: 8,
52
+ },
53
+ heroTitle: {
54
+ fontSize: 28,
55
+ fontWeight: '800',
56
+ color: '#fff',
57
+ marginBottom: 10,
58
+ letterSpacing: -0.8,
59
+ },
60
+ heroText: {
61
+ fontSize: 14,
62
+ lineHeight: 21,
63
+ color: 'rgba(255,255,255,0.88)',
64
+ },
65
+ heroBadge: {
66
+ width: 48,
67
+ height: 48,
68
+ borderRadius: 16,
69
+ backgroundColor: '#fff',
70
+ alignItems: 'center',
71
+ justifyContent: 'center',
72
+ },
73
+ companyRow: {
74
+ flexDirection: 'row',
75
+ alignItems: 'center',
76
+ justifyContent: 'space-between',
77
+ gap: 12,
78
+ },
79
+ sectionTitle: {
80
+ fontSize: 16,
81
+ fontWeight: '700',
82
+ color: '#0F172A',
83
+ marginBottom: 4,
84
+ },
85
+ companyName: {
86
+ fontSize: 14,
87
+ color: '#475569',
88
+ fontWeight: '600',
89
+ },
90
+ statusPill: {
91
+ borderRadius: 999,
92
+ paddingHorizontal: 12,
93
+ paddingVertical: 8,
94
+ },
95
+ statusPillText: {
96
+ fontSize: 12,
97
+ fontWeight: '700',
98
+ },
99
+ summaryGrid: {
100
+ flexDirection: 'row',
101
+ flexWrap: 'wrap',
102
+ gap: 12,
103
+ },
104
+ summaryCard: {
105
+ width: '48%',
106
+ backgroundColor: '#fff',
107
+ borderRadius: 20,
108
+ padding: 18,
109
+ },
110
+ summaryIcon: {
111
+ width: 40,
112
+ height: 40,
113
+ borderRadius: 12,
114
+ alignItems: 'center',
115
+ justifyContent: 'center',
116
+ marginBottom: 14,
117
+ },
118
+ summaryValue: {
119
+ fontSize: 22,
120
+ fontWeight: '800',
121
+ color: '#0F172A',
122
+ marginBottom: 4,
123
+ },
124
+ summaryLabel: {
125
+ fontSize: 13,
126
+ color: '#64748B',
127
+ fontWeight: '600',
128
+ },
129
+ panel: {
130
+ backgroundColor: '#fff',
131
+ borderRadius: 24,
132
+ padding: 18,
133
+ },
134
+ panelHeader: {
135
+ flexDirection: 'row',
136
+ justifyContent: 'space-between',
137
+ alignItems: 'flex-start',
138
+ gap: 12,
139
+ marginBottom: 16,
140
+ },
141
+ panelTitle: {
142
+ fontSize: 18,
143
+ fontWeight: '800',
144
+ color: '#0F172A',
145
+ letterSpacing: -0.3,
146
+ },
147
+ panelSubtitle: {
148
+ fontSize: 13,
149
+ lineHeight: 19,
150
+ color: '#64748B',
151
+ marginTop: 4,
152
+ },
153
+ inlineAction: {
154
+ flexDirection: 'row',
155
+ alignItems: 'center',
156
+ gap: 6,
157
+ backgroundColor: '#EEF2FF',
158
+ borderRadius: 999,
159
+ paddingHorizontal: 10,
160
+ paddingVertical: 8,
161
+ },
162
+ inlineActionText: {
163
+ fontSize: 12,
164
+ fontWeight: '700',
165
+ },
166
+ infoBanner: {
167
+ flexDirection: 'row',
168
+ alignItems: 'center',
169
+ gap: 8,
170
+ borderRadius: 14,
171
+ paddingHorizontal: 12,
172
+ paddingVertical: 10,
173
+ marginBottom: 14,
174
+ },
175
+ infoBannerText: {
176
+ flex: 1,
177
+ fontSize: 12,
178
+ fontWeight: '700',
179
+ lineHeight: 18,
180
+ },
181
+ errorBanner: {
182
+ flexDirection: 'row',
183
+ alignItems: 'center',
184
+ gap: 8,
185
+ borderRadius: 14,
186
+ paddingHorizontal: 12,
187
+ paddingVertical: 10,
188
+ marginBottom: 14,
189
+ backgroundColor: '#FEE2E2',
190
+ },
191
+ errorBannerText: {
192
+ flex: 1,
193
+ fontSize: 12,
194
+ fontWeight: '700',
195
+ lineHeight: 18,
196
+ color: '#B91C1C',
197
+ },
198
+ statusRows: {
199
+ flexDirection: 'row',
200
+ flexWrap: 'wrap',
201
+ gap: 12,
202
+ },
203
+ statusRowItem: {
204
+ width: '48%',
205
+ backgroundColor: '#F8FAFC',
206
+ borderRadius: 16,
207
+ padding: 14,
208
+ },
209
+ statusRowItemWide: {
210
+ width: '100%',
211
+ },
212
+ statusRowLabel: {
213
+ fontSize: 12,
214
+ color: '#64748B',
215
+ fontWeight: '600',
216
+ marginBottom: 6,
217
+ },
218
+ statusRowValue: {
219
+ fontSize: 15,
220
+ color: '#0F172A',
221
+ fontWeight: '800',
222
+ },
223
+ statusRowValueSmall: {
224
+ fontSize: 13,
225
+ color: '#0F172A',
226
+ fontWeight: '700',
227
+ },
228
+ actionRow: {
229
+ marginTop: 18,
230
+ gap: 10,
231
+ },
232
+ divider: {
233
+ height: 1,
234
+ backgroundColor: '#E2E8F0',
235
+ marginVertical: 14,
236
+ },
237
+ settingsForm: {
238
+ marginTop: 14,
239
+ gap: 10,
240
+ },
241
+ formRow: {
242
+ flexDirection: 'row',
243
+ gap: 10,
244
+ flexWrap: 'wrap',
245
+ },
246
+ formRowSingle: {
247
+ justifyContent: 'flex-end',
248
+ },
249
+ formField: {
250
+ width: '100%',
251
+ gap: 6,
252
+ },
253
+ formFieldHeaderRow: {
254
+ flexDirection: 'row',
255
+ alignItems: 'center',
256
+ justifyContent: 'space-between',
257
+ gap: 12,
258
+ flexWrap: 'wrap',
259
+ },
260
+ formFieldHalf: {
261
+ width: '48%',
262
+ },
263
+ formLabel: {
264
+ fontSize: 12,
265
+ color: '#64748B',
266
+ fontWeight: '700',
267
+ },
268
+ formInput: {
269
+ borderWidth: 1,
270
+ borderColor: '#E2E8F0',
271
+ borderRadius: 12,
272
+ minHeight: 42,
273
+ backgroundColor: '#F8FAFC',
274
+ paddingHorizontal: 12,
275
+ paddingVertical: 10,
276
+ fontSize: 13,
277
+ color: '#0F172A',
278
+ },
279
+ pickerWrap: {
280
+ borderWidth: 1,
281
+ borderColor: '#E2E8F0',
282
+ borderRadius: 12,
283
+ overflow: 'hidden',
284
+ backgroundColor: '#F8FAFC',
285
+ },
286
+ picker: {
287
+ minHeight: 42,
288
+ },
289
+ formHint: {
290
+ fontSize: 12,
291
+ lineHeight: 18,
292
+ color: '#64748B',
293
+ },
294
+ optionGroup: {
295
+ flexDirection: 'row',
296
+ gap: 8,
297
+ flexWrap: 'wrap',
298
+ },
299
+ optionChip: {
300
+ borderWidth: 1,
301
+ borderColor: '#CBD5E1',
302
+ borderRadius: 999,
303
+ backgroundColor: '#F8FAFC',
304
+ paddingVertical: 8,
305
+ paddingHorizontal: 12,
306
+ },
307
+ optionChipText: {
308
+ fontSize: 12,
309
+ fontWeight: '700',
310
+ color: '#334155',
311
+ },
312
+ secondaryActionButton: {
313
+ flex: 1,
314
+ minHeight: 42,
315
+ borderWidth: 1,
316
+ borderRadius: 12,
317
+ backgroundColor: '#fff',
318
+ alignItems: 'center',
319
+ justifyContent: 'center',
320
+ flexDirection: 'row',
321
+ gap: 8,
322
+ paddingHorizontal: 12,
323
+ },
324
+ secondaryActionButtonText: {
325
+ fontSize: 13,
326
+ fontWeight: '800',
327
+ },
328
+ dangerActionButton: {
329
+ borderColor: '#FECACA',
330
+ },
331
+ primaryButton: {
332
+ minHeight: 46,
333
+ borderRadius: 14,
334
+ paddingHorizontal: 16,
335
+ flexDirection: 'row',
336
+ alignItems: 'center',
337
+ justifyContent: 'center',
338
+ gap: 8,
339
+ },
340
+ primaryButtonText: {
341
+ color: '#fff',
342
+ fontSize: 14,
343
+ fontWeight: '800',
344
+ },
345
+ searchBox: {
346
+ flexDirection: 'row',
347
+ alignItems: 'center',
348
+ gap: 10,
349
+ borderWidth: 1,
350
+ borderColor: '#E2E8F0',
351
+ borderRadius: 16,
352
+ paddingHorizontal: 14,
353
+ paddingVertical: Platform.OS === 'web' ? 12 : 4,
354
+ marginBottom: 14,
355
+ backgroundColor: '#F8FAFC',
356
+ },
357
+ searchInput: {
358
+ flex: 1,
359
+ fontSize: 14,
360
+ color: '#0F172A',
361
+ paddingVertical: 10,
362
+ },
363
+ selectionSummaryRow: {
364
+ flexDirection: 'row',
365
+ alignItems: 'center',
366
+ justifyContent: 'space-between',
367
+ gap: 12,
368
+ marginTop: 8,
369
+ marginBottom: 16,
370
+ },
371
+ selectionSummaryText: {
372
+ flex: 1,
373
+ fontSize: 13,
374
+ color: '#64748B',
375
+ lineHeight: 18,
376
+ },
377
+ selectionBadge: {
378
+ borderRadius: 999,
379
+ paddingHorizontal: 12,
380
+ paddingVertical: 8,
381
+ },
382
+ selectionBadgeText: {
383
+ fontSize: 12,
384
+ fontWeight: '800',
385
+ },
386
+ previewButton: {
387
+ minHeight: 42,
388
+ borderRadius: 14,
389
+ paddingHorizontal: 14,
390
+ flexDirection: 'row',
391
+ alignItems: 'center',
392
+ justifyContent: 'center',
393
+ gap: 8,
394
+ },
395
+ previewButtonText: {
396
+ color: '#fff',
397
+ fontSize: 13,
398
+ fontWeight: '800',
399
+ },
400
+ productsList: {
401
+ gap: 10,
402
+ },
403
+ productCard: {
404
+ borderWidth: 1,
405
+ borderColor: '#E2E8F0',
406
+ borderRadius: 18,
407
+ padding: 14,
408
+ backgroundColor: '#fff',
409
+ },
410
+ productMain: {
411
+ flexDirection: 'row',
412
+ alignItems: 'flex-start',
413
+ gap: 12,
414
+ },
415
+ productStatusIcon: {
416
+ width: 34,
417
+ height: 34,
418
+ borderRadius: 12,
419
+ alignItems: 'center',
420
+ justifyContent: 'center',
421
+ marginTop: 2,
422
+ },
423
+ productContent: {
424
+ flex: 1,
425
+ minWidth: 0,
426
+ },
427
+ productTitleRow: {
428
+ flexDirection: 'row',
429
+ alignItems: 'center',
430
+ justifyContent: 'space-between',
431
+ gap: 10,
432
+ marginBottom: 4,
433
+ },
434
+ productName: {
435
+ flex: 1,
436
+ fontSize: 15,
437
+ fontWeight: '800',
438
+ color: '#0F172A',
439
+ },
440
+ productPrice: {
441
+ fontSize: 13,
442
+ fontWeight: '800',
443
+ color: '#1E293B',
444
+ },
445
+ productMeta: {
446
+ fontSize: 12,
447
+ color: '#64748B',
448
+ marginBottom: 4,
449
+ },
450
+ productDescription: {
451
+ fontSize: 12,
452
+ color: '#475569',
453
+ marginBottom: 4,
454
+ },
455
+ productCode: {
456
+ fontSize: 11,
457
+ color: '#1D4ED8',
458
+ fontWeight: '700',
459
+ },
460
+ productRemoteState: {
461
+ fontSize: 11,
462
+ color: '#15803D',
463
+ fontWeight: '700',
464
+ marginTop: 4,
465
+ },
466
+ productBlocker: {
467
+ fontSize: 11,
468
+ color: '#DC2626',
469
+ fontWeight: '700',
470
+ marginTop: 4,
471
+ },
472
+ productDisclosureButton: {
473
+ flexDirection: 'row',
474
+ alignItems: 'center',
475
+ alignSelf: 'flex-start',
476
+ gap: 6,
477
+ borderRadius: 999,
478
+ borderWidth: 1,
479
+ paddingHorizontal: 10,
480
+ paddingVertical: 7,
481
+ marginTop: 8,
482
+ },
483
+ productDisclosureButtonText: {
484
+ fontSize: 12,
485
+ fontWeight: '800',
486
+ },
487
+ childrenSection: {
488
+ marginTop: 12,
489
+ paddingTop: 12,
490
+ borderTopWidth: 1,
491
+ borderTopColor: '#E2E8F0',
492
+ gap: 10,
493
+ },
494
+ childrenSectionLabel: {
495
+ fontSize: 11,
496
+ fontWeight: '800',
497
+ color: '#64748B',
498
+ textTransform: 'uppercase',
499
+ letterSpacing: 0.4,
500
+ },
501
+ childGroupCard: {
502
+ borderWidth: 1,
503
+ borderColor: '#E2E8F0',
504
+ borderRadius: 16,
505
+ backgroundColor: '#F8FAFC',
506
+ padding: 12,
507
+ gap: 10,
508
+ },
509
+ childGroupHeader: {
510
+ gap: 4,
511
+ },
512
+ childGroupTitle: {
513
+ fontSize: 13,
514
+ fontWeight: '800',
515
+ color: '#0F172A',
516
+ },
517
+ childGroupMeta: {
518
+ fontSize: 11,
519
+ color: '#64748B',
520
+ fontWeight: '700',
521
+ },
522
+ childItemsList: {
523
+ gap: 8,
524
+ },
525
+ childItemRow: {
526
+ flexDirection: 'row',
527
+ alignItems: 'flex-start',
528
+ justifyContent: 'space-between',
529
+ gap: 12,
530
+ },
531
+ childItemContent: {
532
+ flex: 1,
533
+ minWidth: 0,
534
+ gap: 2,
535
+ },
536
+ childItemName: {
537
+ fontSize: 12,
538
+ fontWeight: '800',
539
+ color: '#0F172A',
540
+ },
541
+ childItemMeta: {
542
+ fontSize: 11,
543
+ color: '#64748B',
544
+ lineHeight: 15,
545
+ },
546
+ childItemPrice: {
547
+ fontSize: 12,
548
+ fontWeight: '800',
549
+ color: '#0F172A',
550
+ },
551
+ emptyProducts: {
552
+ borderRadius: 12,
553
+ borderWidth: 1,
554
+ borderColor: '#E2E8F0',
555
+ backgroundColor: '#F8FAFC',
556
+ padding: 16,
557
+ alignItems: 'center',
558
+ },
559
+ emptyProductsText: {
560
+ color: '#64748B',
561
+ fontSize: 13,
562
+ },
563
+ remoteHeaderCopy: {
564
+ flex: 1,
565
+ minWidth: 0,
566
+ },
567
+ remoteSummaryGrid: {
568
+ flexDirection: 'row',
569
+ flexWrap: 'wrap',
570
+ gap: 10,
571
+ marginBottom: 16,
572
+ },
573
+ remoteSummaryCard: {
574
+ minWidth: 130,
575
+ flex: 1,
576
+ backgroundColor: '#F8FAFC',
577
+ borderRadius: 14,
578
+ padding: 12,
579
+ },
580
+ remoteSummaryValue: {
581
+ fontSize: 18,
582
+ fontWeight: '800',
583
+ color: '#0F172A',
584
+ marginBottom: 3,
585
+ },
586
+ remoteSummaryLabel: {
587
+ fontSize: 11,
588
+ fontWeight: '700',
589
+ color: '#64748B',
590
+ },
591
+ remoteTreeList: {
592
+ gap: 10,
593
+ },
594
+ remoteCategoryCard: {
595
+ borderWidth: 1,
596
+ borderColor: '#CBD5E1',
597
+ borderRadius: 16,
598
+ backgroundColor: '#F8FAFC',
599
+ padding: 12,
600
+ },
601
+ remoteProductCard: {
602
+ borderWidth: 1,
603
+ borderColor: '#E2E8F0',
604
+ borderRadius: 14,
605
+ backgroundColor: '#fff',
606
+ padding: 10,
607
+ },
608
+ remoteGroupCard: {
609
+ borderWidth: 1,
610
+ borderColor: '#E2E8F0',
611
+ borderRadius: 12,
612
+ backgroundColor: '#F8FAFC',
613
+ padding: 10,
614
+ },
615
+ remoteTreeHeader: {
616
+ flexDirection: 'row',
617
+ alignItems: 'flex-start',
618
+ gap: 8,
619
+ },
620
+ remoteTreeContent: {
621
+ flex: 1,
622
+ minWidth: 0,
623
+ },
624
+ remoteCategoryTitle: {
625
+ fontSize: 15,
626
+ fontWeight: '800',
627
+ color: '#0F172A',
628
+ },
629
+ remoteTreeTitle: {
630
+ fontSize: 13,
631
+ fontWeight: '800',
632
+ color: '#0F172A',
633
+ },
634
+ remoteTreeMeta: {
635
+ fontSize: 11,
636
+ fontWeight: '700',
637
+ color: '#64748B',
638
+ lineHeight: 16,
639
+ marginTop: 2,
640
+ },
641
+ remoteTreeHint: {
642
+ fontSize: 11,
643
+ fontWeight: '700',
644
+ color: '#B45309',
645
+ lineHeight: 16,
646
+ marginTop: 2,
647
+ },
648
+ remoteTreePrice: {
649
+ fontSize: 12,
650
+ fontWeight: '800',
651
+ color: '#0F172A',
652
+ },
653
+ remoteTreeChildren: {
654
+ marginTop: 10,
655
+ gap: 8,
656
+ },
657
+ remoteOptionRow: {
658
+ flexDirection: 'row',
659
+ alignItems: 'flex-start',
660
+ justifyContent: 'space-between',
661
+ gap: 10,
662
+ borderRadius: 10,
663
+ backgroundColor: '#fff',
664
+ padding: 10,
665
+ },
666
+ remoteDescription: {
667
+ fontSize: 12,
668
+ color: '#475569',
669
+ lineHeight: 18,
670
+ },
671
+ remoteEmptyText: {
672
+ fontSize: 12,
673
+ color: '#64748B',
674
+ fontWeight: '600',
675
+ },
676
+ modalShell: {
677
+ flex: 1,
678
+ justifyContent: 'flex-end',
679
+ },
680
+ modalCard: {
681
+ backgroundColor: '#fff',
682
+ borderTopLeftRadius: 28,
683
+ borderTopRightRadius: 28,
684
+ paddingHorizontal: 20,
685
+ paddingTop: 18,
686
+ paddingBottom: 24,
687
+ maxHeight: '88%',
688
+ },
689
+ modalHeader: {
690
+ flexDirection: 'row',
691
+ alignItems: 'flex-start',
692
+ justifyContent: 'space-between',
693
+ gap: 12,
694
+ marginBottom: 16,
695
+ },
696
+ modalTitle: {
697
+ fontSize: 20,
698
+ fontWeight: '800',
699
+ color: '#0F172A',
700
+ },
701
+ modalSubtitle: {
702
+ fontSize: 13,
703
+ color: '#64748B',
704
+ marginTop: 4,
705
+ },
706
+ modalCloseButton: {
707
+ width: 34,
708
+ height: 34,
709
+ borderRadius: 12,
710
+ alignItems: 'center',
711
+ justifyContent: 'center',
712
+ backgroundColor: '#F8FAFC',
713
+ },
714
+ modalContent: {
715
+ paddingBottom: 10,
716
+ },
717
+ modalSummaryGrid: {
718
+ flexDirection: 'row',
719
+ gap: 10,
720
+ marginBottom: 18,
721
+ },
722
+ modalSummaryCard: {
723
+ flex: 1,
724
+ backgroundColor: '#F8FAFC',
725
+ borderRadius: 16,
726
+ padding: 14,
727
+ alignItems: 'center',
728
+ },
729
+ modalSummaryValue: {
730
+ fontSize: 22,
731
+ fontWeight: '800',
732
+ color: '#0F172A',
733
+ marginBottom: 4,
734
+ },
735
+ modalSummaryLabel: {
736
+ fontSize: 12,
737
+ fontWeight: '700',
738
+ color: '#64748B',
739
+ },
740
+ previewSection: {
741
+ marginBottom: 18,
742
+ },
743
+ previewSectionTitle: {
744
+ fontSize: 15,
745
+ fontWeight: '800',
746
+ color: '#0F172A',
747
+ marginBottom: 10,
748
+ },
749
+ previewLine: {
750
+ borderWidth: 1,
751
+ borderColor: '#E2E8F0',
752
+ borderRadius: 14,
753
+ padding: 12,
754
+ marginBottom: 8,
755
+ backgroundColor: '#fff',
756
+ },
757
+ previewLineTitle: {
758
+ fontSize: 14,
759
+ fontWeight: '700',
760
+ color: '#0F172A',
761
+ marginBottom: 4,
762
+ },
763
+ previewLineMeta: {
764
+ fontSize: 12,
765
+ color: '#64748B',
766
+ },
767
+ modalActions: {
768
+ flexDirection: 'row',
769
+ gap: 10,
770
+ marginTop: 8,
771
+ },
772
+ secondaryButton: {
773
+ flex: 1,
774
+ minHeight: 46,
775
+ borderRadius: 14,
776
+ borderWidth: 1,
777
+ borderColor: '#CBD5E1',
778
+ alignItems: 'center',
779
+ justifyContent: 'center',
780
+ backgroundColor: '#fff',
781
+ },
782
+ secondaryButtonText: {
783
+ fontSize: 14,
784
+ fontWeight: '800',
785
+ color: '#334155',
786
+ },
787
+ modalPrimaryButton: {
788
+ flex: 1.4,
789
+ },
790
+ });
791
+
792
+ export default styles;