@argusoft/medplat-core 1.0.31 → 1.0.32

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 (199) hide show
  1. package/dist/{AccessRights-DUgY6ewy.js → AccessRights-DBjTQA1-.js} +421 -424
  2. package/dist/AccessRights-DBjTQA1-.js.map +1 -0
  3. package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
  4. package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
  5. package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
  6. package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
  7. package/dist/AddMenuConfiguration.css +1 -1
  8. package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +45 -45
  9. package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
  10. package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js → CategoriesPage-BprQEYJw-CclreTv1.js} +43 -43
  11. package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js.map → CategoriesPage-BprQEYJw-CclreTv1.js.map} +1 -1
  12. package/dist/{ChangePasswordModalCore-lQ9GamH1.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
  13. package/dist/{ChangePasswordModalCore-lQ9GamH1.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
  14. package/dist/{ConditionConfig-BQBmBHaM.js → ConditionConfig-Bpm6OoV5.js} +3 -3
  15. package/dist/{ConditionConfig-BQBmBHaM.js.map → ConditionConfig-Bpm6OoV5.js.map} +1 -1
  16. package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +29 -29
  17. package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
  18. package/dist/EntityManagement-BGwJGl9k.js +62 -0
  19. package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
  20. package/dist/{EventConfigurations-CUPEN5BV.js → EventConfigurations-B-z7xHh_.js} +3 -3
  21. package/dist/{EventConfigurations-CUPEN5BV.js.map → EventConfigurations-B-z7xHh_.js.map} +1 -1
  22. package/dist/{EventsExceptionModal-BX-ArkBE.js → EventsExceptionModal-DafomIv6.js} +2 -2
  23. package/dist/{EventsExceptionModal-BX-ArkBE.js.map → EventsExceptionModal-DafomIv6.js.map} +1 -1
  24. package/dist/{EventsUi-D6O9S7BK.js → EventsUi-Dl_yckSA.js} +37 -32
  25. package/dist/EventsUi-Dl_yckSA.js.map +1 -0
  26. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
  27. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
  28. package/dist/{FeatureMenu-CHsBbw3W.js → FeatureMenu-Kc73yPHH.js} +2 -2
  29. package/dist/{FeatureMenu-CHsBbw3W.js.map → FeatureMenu-Kc73yPHH.js.map} +1 -1
  30. package/dist/{FhirServerList-iXBPkRVF.js → FhirServerList-CrIHMAxz.js} +19 -19
  31. package/dist/{FhirServerList-iXBPkRVF.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
  32. package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
  33. package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
  34. package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
  35. package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
  36. package/dist/{ImmunizationConfigurationBase-aUtx0JEe.js → ImmunizationConfigurationBase-lKsJZMak.js} +1342 -1301
  37. package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
  38. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
  39. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
  40. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
  41. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
  42. package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
  43. package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
  44. package/dist/{ManageEventConfiguration-DqW3krT6.js → ManageEventConfiguration-DqPbn3Oi.js} +5 -5
  45. package/dist/{ManageEventConfiguration-DqW3krT6.js.map → ManageEventConfiguration-DqPbn3Oi.js.map} +1 -1
  46. package/dist/ManageRole-CyfpySt9.js +981 -0
  47. package/dist/ManageRole-CyfpySt9.js.map +1 -0
  48. package/dist/{ManageUser-DZltBina.js → ManageUser-Dm0l833u.js} +172 -172
  49. package/dist/{ManageUser-DZltBina.js.map → ManageUser-Dm0l833u.js.map} +1 -1
  50. package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +37 -37
  51. package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
  52. package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
  53. package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
  54. package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
  55. package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
  56. package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js → MobileTypeEventConfigModal-DodU3beR.js} +3 -3
  57. package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js.map → MobileTypeEventConfigModal-DodU3beR.js.map} +1 -1
  58. package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
  59. package/dist/NewServerManagement-BdayO78D.js.map +1 -0
  60. package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
  61. package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
  62. package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +56 -56
  63. package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
  64. package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +38 -38
  65. package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
  66. package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
  67. package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
  68. package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
  69. package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
  70. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
  71. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
  72. package/dist/{PickupsPage-D7zyioJB-bHKnARYw.js → PickupsPage-BWblMlic-CWkgeBw0.js} +122 -122
  73. package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
  74. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
  75. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
  76. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
  77. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
  78. package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +29 -29
  79. package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js.map → ProductsPage-BI22nPb4-CQBjnc-n.js.map} +1 -1
  80. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
  81. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
  82. package/dist/{PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +446 -436
  83. package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
  84. package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +55 -55
  85. package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
  86. package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +61 -61
  87. package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
  88. package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
  89. package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
  90. package/dist/Roles-BoNGJhtR.js +19 -0
  91. package/dist/Roles-BoNGJhtR.js.map +1 -0
  92. package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +33 -33
  93. package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
  94. package/dist/{SalesPage-DPIRrC_O-M8rqnK7z.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +34 -34
  95. package/dist/SalesPage-eF9Yr42z-BQ9FlXC3.js.map +1 -0
  96. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
  97. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
  98. package/dist/{StorageUnitsPage-BDRkdCjW-UF64rf7q.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +213 -190
  99. package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
  100. package/dist/{SubMenu-BdMTYtC1.js → SubMenu-OO2zhKiu.js} +2 -2
  101. package/dist/{SubMenu-BdMTYtC1.js.map → SubMenu-OO2zhKiu.js.map} +1 -1
  102. package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
  103. package/dist/TableDetails-Cc40dEUs.js.map +1 -0
  104. package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
  105. package/dist/TableList-B5tX4wII.js.map +1 -0
  106. package/dist/{TransactionsPage-CqWTMNU8-Df6eGFDW.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +185 -170
  107. package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
  108. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
  109. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
  110. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
  111. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
  112. package/dist/{TypeConfiguration-JbRCN6GR.js → TypeConfiguration-EaFiOzRE.js} +3 -3
  113. package/dist/{TypeConfiguration-JbRCN6GR.js.map → TypeConfiguration-EaFiOzRE.js.map} +1 -1
  114. package/dist/UserList-Cf5B-o_1.js +1904 -0
  115. package/dist/UserList-Cf5B-o_1.js.map +1 -0
  116. package/dist/Users-MC7txo1V.js +43 -0
  117. package/dist/{Users-CsJ08Kjm.js.map → Users-MC7txo1V.js.map} +1 -1
  118. package/dist/VaccineEducation-T_UE57Ef.js +231 -0
  119. package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
  120. package/dist/VaccineEducation.css +1 -0
  121. package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
  122. package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
  123. package/dist/VaccineEducationConfigurator.css +4 -0
  124. package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
  125. package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
  126. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
  127. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
  128. package/dist/{constants-DpXnLsAB-D6lN5cjK.js → constants-BTpJFQe_-CYPZIqQF.js} +160 -61
  129. package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
  130. package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
  131. package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
  132. package/dist/index-mfoqII2U.js +524 -0
  133. package/dist/index-mfoqII2U.js.map +1 -0
  134. package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
  135. package/dist/index-o8Pyt1Bt.js.map +1 -0
  136. package/dist/index.css +1 -1
  137. package/dist/index.js +1 -1
  138. package/dist/{index.lib-ETRQOzvE.js → index.lib-BySa9-Z-.js} +302 -260
  139. package/dist/index.lib-BySa9-Z-.js.map +1 -0
  140. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
  141. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
  142. package/package.json +5 -1
  143. package/dist/AccessRights-DUgY6ewy.js.map +0 -1
  144. package/dist/AddMenuConfiguration-c6ZKiN0i.js +0 -8898
  145. package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +0 -1
  146. package/dist/EntityManagement-CPQL6qBj.js +0 -50
  147. package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
  148. package/dist/EventsUi-D6O9S7BK.js.map +0 -1
  149. package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js +0 -79
  150. package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +0 -1
  151. package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +0 -1
  152. package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js +0 -665
  153. package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js.map +0 -1
  154. package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
  155. package/dist/ManageRole-CNZBRKGU.js +0 -776
  156. package/dist/ManageRole-CNZBRKGU.js.map +0 -1
  157. package/dist/MobileAnalytics-BLOionG_.js +0 -17301
  158. package/dist/MobileAnalytics-BLOionG_.js.map +0 -1
  159. package/dist/MobileMenuManagement-68Wijb0X.js +0 -220
  160. package/dist/MobileMenuManagement-68Wijb0X.js.map +0 -1
  161. package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
  162. package/dist/OtherTypeEventConfigModal-stNmuSv_.js +0 -1812
  163. package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +0 -1
  164. package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
  165. package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +0 -783
  166. package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +0 -1
  167. package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +0 -1
  168. package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +0 -599
  169. package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +0 -1
  170. package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +0 -1305
  171. package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +0 -1
  172. package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +0 -675
  173. package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +0 -1
  174. package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +0 -1
  175. package/dist/Roles-BIyiic67.js +0 -14
  176. package/dist/Roles-BIyiic67.js.map +0 -1
  177. package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +0 -1
  178. package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +0 -676
  179. package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js.map +0 -1
  180. package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +0 -1
  181. package/dist/TableDetails-BtafRxXb.js.map +0 -1
  182. package/dist/TableList-Dpo6dO7S.js.map +0 -1
  183. package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +0 -1
  184. package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +0 -315
  185. package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +0 -1
  186. package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +0 -476
  187. package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +0 -1
  188. package/dist/UserList-L41Xw0Q6.js +0 -1129
  189. package/dist/UserList-L41Xw0Q6.js.map +0 -1
  190. package/dist/Users-CsJ08Kjm.js +0 -40
  191. package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +0 -321
  192. package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +0 -1
  193. package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +0 -1
  194. package/dist/dashboardLayoutUtils-CJivzaU1.js +0 -408
  195. package/dist/dashboardLayoutUtils-CJivzaU1.js.map +0 -1
  196. package/dist/index-D9YNFPn9.js.map +0 -1
  197. package/dist/index.lib-ETRQOzvE.js.map +0 -1
  198. package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +0 -36
  199. package/dist/listValueStore-BFQtDYIR-Bj0yX145.js.map +0 -1
@@ -0,0 +1,231 @@
1
+ import { execute as s } from "@/common/services/GlobalApis";
2
+ import { I as h } from "./index.lib-BySa9-Z-.js";
3
+ import { faClipboardList as u, faLightbulb as g, faUsers as m, faCalendarCheck as S, faSyringe as y, faCircleInfo as C, faTriangleExclamation as T, faShieldHalved as E, faStethoscope as v, faCircleQuestion as _, faImage as w, faVideo as I } from "@fortawesome/free-solid-svg-icons";
4
+ import './VaccineEducation.css';const p = [
5
+ {
6
+ id: "overview",
7
+ group: "Content",
8
+ title: "Overview",
9
+ icon: u,
10
+ help: "A short, plain-language description of what this vaccine is and what it protects against.",
11
+ type: "richtext",
12
+ field: "overview",
13
+ maxLength: 400
14
+ },
15
+ {
16
+ id: "whyItMatters",
17
+ group: "Content",
18
+ title: "Why it matters",
19
+ icon: g,
20
+ help: "The benefit, in simple terms — why this vaccine is worth getting.",
21
+ type: "richtext",
22
+ field: "whyItMatters",
23
+ maxLength: 400
24
+ },
25
+ {
26
+ id: "whoShouldGet",
27
+ group: "Content",
28
+ title: "Who should get it",
29
+ icon: m,
30
+ help: "Plain-language target group — who this vaccine is recommended for.",
31
+ type: "richtext",
32
+ field: "whoShouldGet",
33
+ maxLength: 250
34
+ },
35
+ {
36
+ id: "dosageSchedule",
37
+ group: "Content",
38
+ title: "Dosage & schedule",
39
+ icon: S,
40
+ help: "Plain-language notes on the dosing schedule, if useful.",
41
+ type: "richtext",
42
+ field: "dosageScheduleText",
43
+ maxLength: 300,
44
+ optional: !0
45
+ },
46
+ {
47
+ id: "howItsGiven",
48
+ group: "Content",
49
+ title: "How it's given",
50
+ icon: y,
51
+ help: "Route and site of administration, in one or two lines.",
52
+ type: "richtext",
53
+ field: "howItsGiven",
54
+ maxLength: 200
55
+ },
56
+ {
57
+ id: "commonSideEffects",
58
+ group: "Safety",
59
+ title: "Common side effects",
60
+ icon: C,
61
+ help: "Mild, expected reactions. Add one at a time.",
62
+ type: "chips",
63
+ field: "commonSideEffects",
64
+ chipTone: "default"
65
+ },
66
+ {
67
+ id: "seriousSideEffects",
68
+ group: "Safety",
69
+ title: "Serious side effects — seek care",
70
+ icon: T,
71
+ tone: "critical",
72
+ help: "Reactions that need urgent medical attention. Keep this list short and unambiguous.",
73
+ type: "chips",
74
+ field: "seriousSideEffects",
75
+ chipTone: "critical"
76
+ },
77
+ {
78
+ id: "precautions",
79
+ group: "Safety",
80
+ title: "Who should NOT get it",
81
+ icon: E,
82
+ tone: "warning",
83
+ help: "Contraindications, allergies, or conditions that need a doctor's input first.",
84
+ type: "chips",
85
+ field: "precautions",
86
+ chipTone: "warning"
87
+ },
88
+ {
89
+ id: "afterCareTips",
90
+ group: "Safety",
91
+ title: "After-vaccination care",
92
+ icon: v,
93
+ help: "What to expect afterward and simple self-care steps.",
94
+ type: "chips",
95
+ field: "afterCareTips",
96
+ chipTone: "default"
97
+ },
98
+ {
99
+ id: "faqs",
100
+ group: "Content",
101
+ title: "Frequently asked questions",
102
+ icon: _,
103
+ help: "Optional. Common questions about this vaccine, answered directly.",
104
+ type: "faq",
105
+ field: "faqs",
106
+ optional: !0
107
+ },
108
+ {
109
+ id: "images",
110
+ group: "Media",
111
+ title: "Images",
112
+ icon: w,
113
+ help: "Diagrams, posters, or photos that support this vaccine's content.",
114
+ type: "media",
115
+ field: "images",
116
+ mediaType: "image",
117
+ optional: !0
118
+ },
119
+ {
120
+ id: "videos",
121
+ group: "Media",
122
+ title: "Videos",
123
+ icon: I,
124
+ help: "Short explainer videos, if you have them.",
125
+ type: "media",
126
+ field: "videos",
127
+ mediaType: "video",
128
+ optional: !0
129
+ }
130
+ ], O = ["Content", "Safety", "Media"], V = O.flatMap(
131
+ (e) => p.filter((t) => t.group === e)
132
+ ), l = () => ({
133
+ overview: "",
134
+ whyItMatters: "",
135
+ whoShouldGet: "",
136
+ dosageScheduleText: "",
137
+ howItsGiven: "",
138
+ commonSideEffects: [],
139
+ seriousSideEffects: [],
140
+ precautions: [],
141
+ afterCareTips: [],
142
+ faqs: [],
143
+ images: [],
144
+ videos: [],
145
+ // Supplementary, vaccine-specific sections on top of the fixed list above — the
146
+ // fixed sections stay mandatory/undeletable (that's what guarantees side effects,
147
+ // precautions, etc. can never silently get skipped); this is purely additive.
148
+ // Deliberately excluded from countCompletedSections — that count measures the
149
+ // fixed guided sections specifically, and a variable-length bonus list would make
150
+ // "X of N completed" mean something different per vaccine.
151
+ customSections: []
152
+ }), D = 80, L = 600, G = () => ({
153
+ id: `custom-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,
154
+ title: "",
155
+ content: ""
156
+ }), x = (e) => (e || "").replace(/<[^>]*>/g, "").trim(), N = (e, t) => {
157
+ const i = e == null ? void 0 : e[t.field];
158
+ return t.type === "richtext" ? x(i).length > 0 : Array.isArray(i) ? i.length > 0 : !1;
159
+ }, f = (e) => p.filter((t) => N(e, t)).length, A = (e) => e && typeof e == "object" && typeof e.value == "string" && "type" in e, c = (e) => {
160
+ let t = e, i = 0;
161
+ for (; A(t) && i < 10; ) {
162
+ try {
163
+ t = JSON.parse(t.value);
164
+ } catch {
165
+ t = null;
166
+ break;
167
+ }
168
+ i += 1;
169
+ }
170
+ if (typeof t == "string")
171
+ try {
172
+ t = JSON.parse(t);
173
+ } catch {
174
+ t = null;
175
+ }
176
+ return !t || typeof t != "object" ? l() : { ...l(), ...t };
177
+ }, r = (e) => ({
178
+ id: e.vaccine_id ?? e.id,
179
+ name: e.vaccine_name,
180
+ // Both queries alias this as `category` from the real target_prevention column —
181
+ // medplat_immunization_master has no separate disease/category columns (verified
182
+ // against the live schema, not assumed from frontend field-name guesses).
183
+ category: e.category || e.target_prevention || "",
184
+ doses: e.no_of_doses || 0
185
+ }), q = async () => {
186
+ var i;
187
+ const e = await s({ code: "FETCH_VACCINE_EDUCATION_STATUS_LIST", parameters: {} });
188
+ return (((i = e == null ? void 0 : e.data) == null ? void 0 : i.result) || []).map((o) => ({
189
+ vaccine: r(o),
190
+ // updatedOn surfaced for the list screen's "Last updated" column — attached here
191
+ // rather than inside parseContent, since it's metadata about the row, not part of
192
+ // the education content itself.
193
+ record: { ...c(o.content), updatedOn: o.updated_on }
194
+ })).filter(({ record: o }) => f(o) > 0);
195
+ }, F = async (e) => {
196
+ var o, n;
197
+ const t = await s({ code: "FETCH_VACCINE_EDUCATION", parameters: { vaccineId: e } }), i = (n = (o = t == null ? void 0 : t.data) == null ? void 0 : o.result) == null ? void 0 : n[0];
198
+ if (!i)
199
+ throw new Error("Vaccine not found");
200
+ return {
201
+ vaccine: r(i),
202
+ record: c(i.content)
203
+ };
204
+ }, R = async (e, t) => (await s({
205
+ code: "SAVE_VACCINE_EDUCATION",
206
+ parameters: { vaccineId: e, content: JSON.stringify(t) }
207
+ }), { ok: !0 }), W = async () => {
208
+ var n, d;
209
+ const [e, t] = await Promise.all([
210
+ h.getVaccines(),
211
+ s({ code: "FETCH_VACCINE_EDUCATION_STATUS_LIST", parameters: {} })
212
+ ]), i = (((n = e == null ? void 0 : e.data) == null ? void 0 : n.result) || []).filter((a) => a.is_active !== !1), o = new Set(
213
+ (((d = t == null ? void 0 : t.data) == null ? void 0 : d.result) || []).filter((a) => f(c(a.content)) > 0).map((a) => String(a.vaccine_id))
214
+ );
215
+ return i.filter((a) => !o.has(String(a.id))).map((a) => r({ ...a, vaccine_id: a.id }));
216
+ };
217
+ export {
218
+ D as C,
219
+ V as G,
220
+ p as S,
221
+ q as a,
222
+ O as b,
223
+ f as c,
224
+ G as d,
225
+ L as e,
226
+ F as g,
227
+ N as i,
228
+ W as l,
229
+ R as s
230
+ };
231
+ //# sourceMappingURL=VaccineEducation-T_UE57Ef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VaccineEducation-T_UE57Ef.js","sources":["../src/views/VaccineEducation/constants/sectionDefs.js","../src/views/VaccineEducation/services/vaccineEducationService.js"],"sourcesContent":["import {\n faClipboardList,\n faLightbulb,\n faUsers,\n faCalendarCheck,\n faSyringe,\n faCircleInfo,\n faTriangleExclamation,\n faShieldHalved,\n faStethoscope,\n faCircleQuestion,\n faImage,\n faVideo,\n} from \"@fortawesome/free-solid-svg-icons\";\n\n// The fixed, named sections a Vaccine Education record is authored in. Order and\n// membership here drives the configurator's section rail, the guided cards, and the\n// completeness count. How this content actually renders to an end user is entirely up\n// to whichever consumer reads this stored config — deliberately not this repo's call.\nexport const SECTION_DEFS = [\n {\n id: \"overview\",\n group: \"Content\",\n title: \"Overview\",\n icon: faClipboardList,\n help: \"A short, plain-language description of what this vaccine is and what it protects against.\",\n type: \"richtext\",\n field: \"overview\",\n maxLength: 400,\n },\n {\n id: \"whyItMatters\",\n group: \"Content\",\n title: \"Why it matters\",\n icon: faLightbulb,\n help: \"The benefit, in simple terms — why this vaccine is worth getting.\",\n type: \"richtext\",\n field: \"whyItMatters\",\n maxLength: 400,\n },\n {\n id: \"whoShouldGet\",\n group: \"Content\",\n title: \"Who should get it\",\n icon: faUsers,\n help: \"Plain-language target group — who this vaccine is recommended for.\",\n type: \"richtext\",\n field: \"whoShouldGet\",\n maxLength: 250,\n },\n {\n id: \"dosageSchedule\",\n group: \"Content\",\n title: \"Dosage & schedule\",\n icon: faCalendarCheck,\n help: \"Plain-language notes on the dosing schedule, if useful.\",\n type: \"richtext\",\n field: \"dosageScheduleText\",\n maxLength: 300,\n optional: true,\n },\n {\n id: \"howItsGiven\",\n group: \"Content\",\n title: \"How it's given\",\n icon: faSyringe,\n help: \"Route and site of administration, in one or two lines.\",\n type: \"richtext\",\n field: \"howItsGiven\",\n maxLength: 200,\n },\n {\n id: \"commonSideEffects\",\n group: \"Safety\",\n title: \"Common side effects\",\n icon: faCircleInfo,\n help: \"Mild, expected reactions. Add one at a time.\",\n type: \"chips\",\n field: \"commonSideEffects\",\n chipTone: \"default\",\n },\n {\n id: \"seriousSideEffects\",\n group: \"Safety\",\n title: \"Serious side effects — seek care\",\n icon: faTriangleExclamation,\n tone: \"critical\",\n help: \"Reactions that need urgent medical attention. Keep this list short and unambiguous.\",\n type: \"chips\",\n field: \"seriousSideEffects\",\n chipTone: \"critical\",\n },\n {\n id: \"precautions\",\n group: \"Safety\",\n title: \"Who should NOT get it\",\n icon: faShieldHalved,\n tone: \"warning\",\n help: \"Contraindications, allergies, or conditions that need a doctor's input first.\",\n type: \"chips\",\n field: \"precautions\",\n chipTone: \"warning\",\n },\n {\n id: \"afterCareTips\",\n group: \"Safety\",\n title: \"After-vaccination care\",\n icon: faStethoscope,\n help: \"What to expect afterward and simple self-care steps.\",\n type: \"chips\",\n field: \"afterCareTips\",\n chipTone: \"default\",\n },\n {\n id: \"faqs\",\n group: \"Content\",\n title: \"Frequently asked questions\",\n icon: faCircleQuestion,\n help: \"Optional. Common questions about this vaccine, answered directly.\",\n type: \"faq\",\n field: \"faqs\",\n optional: true,\n },\n {\n id: \"images\",\n group: \"Media\",\n title: \"Images\",\n icon: faImage,\n help: \"Diagrams, posters, or photos that support this vaccine's content.\",\n type: \"media\",\n field: \"images\",\n mediaType: \"image\",\n optional: true,\n },\n {\n id: \"videos\",\n group: \"Media\",\n title: \"Videos\",\n icon: faVideo,\n help: \"Short explainer videos, if you have them.\",\n type: \"media\",\n field: \"videos\",\n mediaType: \"video\",\n optional: true,\n },\n];\n\nexport const SECTION_GROUPS = [\"Content\", \"Safety\", \"Media\"];\n\n// SECTION_DEFS is declared in a logical authoring order, but a section's `group`\n// doesn't have to match its position in that array (see faqs, grouped under Content\n// but declared after the Safety entries). The rail renders group-by-group; the\n// configurator's main content used to just map SECTION_DEFS in raw array order —\n// so the two silently disagreed on where FAQs sat. GROUPED_SECTION_DEFS is the one\n// shared, group-ordered sequence both the rail and the main content now render from,\n// so they can't diverge again regardless of how SECTION_DEFS is edited later.\nexport const GROUPED_SECTION_DEFS = SECTION_GROUPS.flatMap((group) =>\n SECTION_DEFS.filter((section) => section.group === group),\n);\n\nexport const emptyEducationRecord = () => ({\n overview: \"\",\n whyItMatters: \"\",\n whoShouldGet: \"\",\n dosageScheduleText: \"\",\n howItsGiven: \"\",\n commonSideEffects: [],\n seriousSideEffects: [],\n precautions: [],\n afterCareTips: [],\n faqs: [],\n images: [],\n videos: [],\n // Supplementary, vaccine-specific sections on top of the fixed list above — the\n // fixed sections stay mandatory/undeletable (that's what guarantees side effects,\n // precautions, etc. can never silently get skipped); this is purely additive.\n // Deliberately excluded from countCompletedSections — that count measures the\n // fixed guided sections specifically, and a variable-length bonus list would make\n // \"X of N completed\" mean something different per vaccine.\n customSections: [],\n});\n\nexport const CUSTOM_SECTION_TITLE_MAX = 80;\nexport const CUSTOM_SECTION_CONTENT_MAX = 600;\n\nexport const createCustomSection = () => ({\n id: `custom-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,\n title: \"\",\n content: \"\",\n});\n\nconst stripToText = (html) => (html || \"\").replace(/<[^>]*>/g, \"\").trim();\n\nexport const isSectionFilled = (record, section) => {\n const value = record?.[section.field];\n if (section.type === \"richtext\") return stripToText(value).length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return false;\n};\n\nexport const countCompletedSections = (record) =>\n SECTION_DEFS.filter((section) => isSectionFilled(record, section)).length;\n","import { execute } from \"@/common/services/GlobalApis\";\nimport { ImmunizationUtil } from \"../../ImmunizationConfiguration/service/ImmunizationUtil\";\nimport { emptyEducationRecord, countCompletedSections } from \"../constants/sectionDefs\";\n\n// Real query codes — see the DDL + Code/Description/Query handed off alongside this\n// file for what needs to exist in query_master before these calls will succeed:\n// FETCH_VACCINE_EDUCATION_STATUS_LIST, FETCH_VACCINE_EDUCATION, SAVE_VACCINE_EDUCATION\n// FETCH_IMMUNISATION_MASTER is not new — it's the same code ImmunizationConfiguration\n// already uses (see ImmunizationUtil.getVaccines()), reused here rather than duplicated.\n\n// The backend's generic query executor (FETCH_VACCINE_EDUCATION / _STATUS_LIST) can\n// return a Postgres JSONB column as its raw JDBC wrapper shape —\n// { type: \"jsonb\", value: \"<the real content, JSON-encoded as a string>\", null: bool }\n// — instead of the already-parsed value. Confirmed directly against a live row: a\n// prior save (before this fix) merged that wrapper's own type/value/null keys in as\n// if they were real content, then re-wrapped it one layer deeper on every subsequent\n// save. Unwrap it here — recursively, since already-corrupted rows are nested several\n// levels deep — rather than trusting the shape at face value. A normal save after this\n// fix writes back a clean object, so existing corrupted rows self-heal on next edit;\n// no manual data fix needed.\nconst isJdbcJsonbWrapper = (value) =>\n value && typeof value === \"object\" && typeof value.value === \"string\" && \"type\" in value;\n\nconst parseContent = (raw) => {\n let value = raw;\n let guard = 0;\n while (isJdbcJsonbWrapper(value) && guard < 10) {\n try {\n value = JSON.parse(value.value);\n } catch {\n value = null;\n break;\n }\n guard += 1;\n }\n if (typeof value === \"string\") {\n try {\n value = JSON.parse(value);\n } catch {\n value = null;\n }\n }\n if (!value || typeof value !== \"object\") return emptyEducationRecord();\n return { ...emptyEducationRecord(), ...value };\n};\n\nconst toVaccineSummary = (row) => ({\n id: row.vaccine_id ?? row.id,\n name: row.vaccine_name,\n // Both queries alias this as `category` from the real target_prevention column —\n // medplat_immunization_master has no separate disease/category columns (verified\n // against the live schema, not assumed from frontend field-name guesses).\n category: row.category || row.target_prevention || \"\",\n doses: row.no_of_doses || 0,\n});\n\nexport const listEducationRecords = async () => {\n const res = await execute({ code: \"FETCH_VACCINE_EDUCATION_STATUS_LIST\", parameters: {} });\n const rows = res?.data?.result || [];\n return rows\n .map((row) => ({\n vaccine: toVaccineSummary(row),\n // updatedOn surfaced for the list screen's \"Last updated\" column — attached here\n // rather than inside parseContent, since it's metadata about the row, not part of\n // the education content itself.\n record: { ...parseContent(row.content), updatedOn: row.updated_on },\n }))\n // A record with no answered section is \"no content yet\", same as no record at all —\n // it must not show up as a configured vaccine (older saves could be empty).\n .filter(({ record }) => countCompletedSections(record) > 0);\n};\n\nexport const getEducationRecord = async (vaccineId) => {\n const res = await execute({ code: \"FETCH_VACCINE_EDUCATION\", parameters: { vaccineId } });\n const row = res?.data?.result?.[0];\n if (!row) {\n throw new Error(\"Vaccine not found\");\n }\n return {\n vaccine: toVaccineSummary(row),\n record: parseContent(row.content),\n };\n};\n\nexport const saveEducationRecord = async (vaccineId, content) => {\n await execute({\n code: \"SAVE_VACCINE_EDUCATION\",\n parameters: { vaccineId, content: JSON.stringify(content) },\n });\n return { ok: true };\n};\n\nexport const listVaccinesWithoutEducation = async () => {\n const [vaccinesRes, statusRes] = await Promise.all([\n ImmunizationUtil.getVaccines(),\n execute({ code: \"FETCH_VACCINE_EDUCATION_STATUS_LIST\", parameters: {} }),\n ]);\n const allVaccines = (vaccinesRes?.data?.result || []).filter((v) => v.is_active !== false);\n const configuredIds = new Set(\n (statusRes?.data?.result || [])\n .filter((row) => countCompletedSections(parseContent(row.content)) > 0)\n .map((row) => String(row.vaccine_id)),\n );\n return allVaccines\n .filter((v) => !configuredIds.has(String(v.id)))\n .map((v) => toVaccineSummary({ ...v, vaccine_id: v.id }));\n};\n"],"names":["SECTION_DEFS","faClipboardList","faLightbulb","faUsers","faCalendarCheck","faSyringe","faCircleInfo","faTriangleExclamation","faShieldHalved","faStethoscope","faCircleQuestion","faImage","faVideo","SECTION_GROUPS","GROUPED_SECTION_DEFS","group","section","emptyEducationRecord","CUSTOM_SECTION_TITLE_MAX","CUSTOM_SECTION_CONTENT_MAX","createCustomSection","stripToText","html","isSectionFilled","record","value","countCompletedSections","isJdbcJsonbWrapper","parseContent","raw","guard","toVaccineSummary","row","listEducationRecords","res","execute","_a","getEducationRecord","vaccineId","_b","saveEducationRecord","content","listVaccinesWithoutEducation","vaccinesRes","statusRes","ImmunizationUtil","allVaccines","v","configuredIds"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ :root{--ve-accent: #0e6e62;--ve-accent-soft: #e1f0ec;--ve-warn: #92600a;--ve-warn-soft: #fbf0da;--ve-warn-line: #e9ce97;--ve-critical: #8e2f29;--ve-critical-soft: #fbe7e4;--ve-critical-line: #efbfb8;--ve-media: #5b4b95;--ve-media-soft: #ece8f6;--ve-custom: #47576b;--ve-custom-soft: #e9edf1}html.dark{--ve-accent: #2dd4bf;--ve-accent-soft: #103a34;--ve-warn: #e8b04a;--ve-warn-soft: #3a2c10;--ve-warn-line: #6b5424;--ve-critical: #f0766d;--ve-critical-soft: #3a1917;--ve-critical-line: #6b2e28;--ve-media: #a292e0;--ve-media-soft: #241f3a;--ve-custom: #93a7bd;--ve-custom-soft: #232b35}.group-content,.group-safety{--ve-tone: var(--ve-accent);--ve-tone-soft: var(--ve-accent-soft)}.group-media{--ve-tone: var(--ve-media);--ve-tone-soft: var(--ve-media-soft)}.group-custom{--ve-tone: var(--ve-custom);--ve-tone-soft: var(--ve-custom-soft)}.tone-warning{--ve-tone: var(--ve-warn);--ve-tone-soft: var(--ve-warn-soft)}.tone-critical{--ve-tone: var(--ve-critical);--ve-tone-soft: var(--ve-critical-soft)}.chip-list-item-critical{background:var(--ve-critical-soft)!important;color:var(--ve-critical)!important;border:1px solid var(--ve-critical-line)}.chip-list-item-warning{background:var(--ve-warn-soft)!important;color:var(--ve-warn)!important;border:1px solid var(--ve-warn-line)}.ve-list-page{max-width:1400px;margin:0 auto;padding:28px 24px 64px}.ve-header-icon{width:52px;height:52px;flex-shrink:0;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--ve-accent);background:var(--ve-accent-soft)}.ve-stat-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:22px}.ve-stat-tile{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:13px;border:1px solid var(--color-gray3);background:var(--color-background);transition:border-color .12s ease,background .12s ease}.ve-stat-tile.is-clickable{cursor:pointer}.ve-stat-tile.is-clickable:hover{border-color:var(--color-gray2)}.ve-stat-tile.tone-complete .ve-stat-icon{color:var(--ve-accent);background:var(--ve-accent-soft)}.ve-stat-tile.tone-complete .ve-stat-value{color:var(--ve-accent)}.ve-stat-tile.tone-complete.is-active{border-color:var(--ve-accent);background:var(--ve-accent-soft)}.ve-stat-tile.tone-partial .ve-stat-icon{color:var(--ve-warn);background:var(--ve-warn-soft)}.ve-stat-tile.tone-partial .ve-stat-value{color:var(--ve-warn)}.ve-stat-tile.tone-partial.is-active{border-color:var(--ve-warn);background:var(--ve-warn-soft)}.ve-stat-tile.tone-empty .ve-stat-icon{color:var(--color-gray2);background:var(--color-gray4)}.ve-stat-tile.tone-empty .ve-stat-value{color:var(--color-gray2)}.ve-stat-icon{width:42px;height:42px;flex-shrink:0;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:16px}.ve-stat-value{display:block;font-size:22px;font-weight:800;line-height:1.25;font-variant-numeric:tabular-nums}.ve-stat-label{display:block;font-size:12.5px;color:var(--color-gray2);line-height:1.3}.ve-stat-chevron{flex-shrink:0;font-size:12px;color:var(--color-gray3)}.ve-filter-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px 5px 12px;border-radius:999px;background:var(--ve-accent-soft);color:var(--ve-accent);font-size:12.5px;font-weight:600}.ve-filter-chip button{all:unset;cursor:pointer;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:999px;font-size:14px;line-height:1}.ve-filter-chip button:hover{background:#00000014}.ve-list-status{min-width:0}.ve-status-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.ve-status-pill svg{font-size:10px}.ve-status-pill.is-complete{background:var(--ve-accent-soft);color:var(--ve-accent)}.ve-status-pill.is-partial{background:var(--ve-warn-soft);color:var(--ve-warn)}.ve-status-pill.is-empty{background:var(--color-gray4);color:var(--color-gray2)}.ve-list-table{border-radius:14px;overflow:hidden}.ve-list-head{display:grid;grid-template-columns:44px minmax(190px,2.1fr) minmax(190px,1.3fr) 122px minmax(130px,.9fr) 96px;gap:18px;align-items:center;padding:12px 20px;background:var(--color-gray4);border-bottom:1px solid var(--color-gray3)}.ve-list-head span{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--color-gray2)}.ve-list-head .ve-list-head-vaccine{grid-column:1/span 2}.ve-list-head .ve-list-head-actions{text-align:right}.ve-list-row{display:grid;grid-template-columns:44px minmax(190px,2.1fr) minmax(190px,1.3fr) 122px minmax(130px,.9fr) 96px;gap:18px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--color-gray3);transition:background .12s ease}.ve-list-row:last-child{border-bottom:none}.ve-list-row:hover{background:var(--ve-accent-soft)}.ve-list-avatar{width:40px;height:40px;border-radius:999px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--ve-accent);background:var(--ve-accent-soft)}.ve-list-vaccine{min-width:0}.ve-list-vaccine p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ve-list-progress{display:flex;align-items:center;gap:9px}.ve-list-progress-label,.ve-list-progress-pct{font-weight:700;color:var(--color-gray2);white-space:nowrap;font-variant-numeric:tabular-nums;flex-shrink:0}.ve-list-progress-pct{min-width:32px;text-align:right}.ve-list-updated{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--color-gray2);white-space:nowrap}.ve-list-updated-empty{color:var(--color-gray3)}.ve-list-actions{display:flex;justify-content:flex-end;gap:6px}.ve-list-icon-btn{border:1px solid var(--color-gray3);border-radius:8px;width:32px;height:32px;color:var(--color-gray2)}.ve-list-icon-btn:hover{border-color:var(--ve-accent);color:var(--ve-accent);background:var(--ve-accent-soft)}.ve-progress-track{flex:1;height:9px;border-radius:999px;background:var(--color-gray4);overflow:hidden}html.dark .ve-progress-track{background:#ffffff17}.ve-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--ve-accent),#14a394);transition:width .25s ease}.ve-progress-fill.is-partial{background:var(--ve-warn)}.ve-progress-count{font-size:26px;font-weight:800;color:var(--ve-accent);line-height:1}.ve-list-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 4px 0;flex-wrap:wrap}.ve-list-footer-count{color:var(--color-gray2);white-space:nowrap}.ve-list-pagination .MuiPaginationItem-root.Mui-selected{background:var(--color-background);border:1px solid var(--color-primary);color:var(--color-primary);font-weight:700}.ve-list-pagination .MuiPaginationItem-root.Mui-selected:hover{background:var(--color-background)}.ve-list-rows-select{min-width:108px}.ve-list-rows-select .MuiSelect-select{padding:6px 32px 6px 12px;font-size:13px}.ve-config-scroll,.ve-rail{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) transparent}.ve-config-scroll::-webkit-scrollbar,.ve-rail::-webkit-scrollbar{width:3px;height:3px}.ve-config-scroll::-webkit-scrollbar-track,.ve-rail::-webkit-scrollbar-track{background:transparent}.ve-config-scroll::-webkit-scrollbar-thumb,.ve-rail::-webkit-scrollbar-thumb{background:#80808040;border-radius:999px}.ve-config-scroll::-webkit-scrollbar-thumb:hover,.ve-rail::-webkit-scrollbar-thumb:hover{background:#8080808c}.ve-configurator{display:flex;align-items:stretch;overflow:hidden}.ve-rail{width:260px;flex-shrink:0;height:100%;overflow-y:auto;background:var(--color-background);padding:16px 12px}.ve-rail-vax{display:flex;align-items:center;gap:10px;padding:12px;margin-bottom:16px;background:var(--ve-accent-soft);border-radius:12px;box-shadow:0 2px 6px -2px #12201e1f}.ve-rail-vax-avatar{width:40px;height:40px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;background:linear-gradient(135deg,var(--ve-accent),#14a394);box-shadow:0 3px 8px -2px #0e6e6273}.ve-config-main{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.ve-config-topbar{flex-shrink:0;background:transparent;padding:14px 24px;display:flex;justify-content:space-between;align-items:center}.ve-config-scroll{flex:1;min-height:0;overflow-y:auto;padding:24px 28px 40px}.ve-config-inner{width:100%;max-width:1280px;margin:0 auto}.ve-rail-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer;color:var(--color-gray1);font-size:13px;font-weight:500;transition:background .15s ease,color .15s ease,transform .15s ease}.ve-rail-item svg{color:currentColor;opacity:.7}.ve-rail-item:hover{background:var(--ve-tone-soft, var(--color-gray4));color:var(--ve-tone, var(--ve-accent));transform:translate(2px)}.ve-rail-item:hover svg{opacity:1}.ve-rail-item.active{background:var(--ve-tone, var(--ve-accent));color:#fff;font-weight:700;box-shadow:0 3px 10px -4px #12201e59}.ve-rail-item.active svg{opacity:1}.ve-rail-dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.3;margin-left:auto;flex-shrink:0}.ve-rail-check{margin-left:auto;font-size:13px;color:var(--color-success);flex-shrink:0}.ve-rail-item.active .ve-rail-check{color:#fff}.ve-rail-group-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--color-gray2);font-weight:700;margin:18px 10px 6px}.ve-add-section-btn{width:100%;justify-content:flex-start;margin-top:14px;padding:8px 10px;border-radius:9px;color:var(--ve-custom);font-size:13px;border:1px dashed var(--color-gray3)}.ve-add-section-btn:hover{background:var(--ve-custom-soft);border-color:var(--ve-custom)}.ve-section-card{scroll-margin-top:16px;border-left:4px solid var(--ve-tone, var(--color-gray3))!important;border-radius:12px;margin-bottom:10px;transition:box-shadow .15s ease,margin-bottom .15s ease}.ve-section-card.is-expanded{margin-bottom:14px}.ve-section-card.is-expanded:hover{box-shadow:none}.ve-section-card.is-collapsed:hover{box-shadow:0 6px 18px -10px #12201e40}.ve-section-card .ve-section-ico{width:40px;height:40px;border-radius:11px;background:var(--ve-tone-soft, var(--ve-accent-soft));color:var(--ve-tone, var(--ve-accent));display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px;border:1px solid var(--ve-tone, var(--ve-accent-soft))}.ve-section-header{display:flex;align-items:center;gap:14px;padding:14px 18px}.is-collapsed .ve-section-header{cursor:pointer}.is-collapsed .ve-section-header:hover{background:var(--color-gray4)}.is-expanded .ve-section-header{align-items:flex-start;padding-bottom:4px}.ve-section-help{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ve-section-header-check{color:var(--color-success);margin-left:7px;font-size:12px}.ve-section-chevron{flex-shrink:0;color:var(--color-gray2);transition:transform .2s ease}.ve-section-chevron.is-open{transform:rotate(180deg);color:var(--ve-tone, var(--ve-accent))}.ve-section-body{padding:0 18px 18px;animation:ve-body-in .18s ease}@keyframes ve-body-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}