adp-web-components 0.3.14 → 0.3.16
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.
- package/dist/cjs/{add-icon-BaoMAIgg.js → add-icon-BklgM02f.js} +1 -1
- package/dist/cjs/{app-globals-DBRBLgev.js → app-globals-XGpRBTr6.js} +1 -1
- package/dist/cjs/{arrow-icon-CJX1aUJ8.js → arrow-icon-yMlETDbD.js} +1 -1
- package/dist/cjs/{arrow-up-icon-B3Z5Myqt.js → arrow-up-icon-BLo1aQC2.js} +1 -1
- package/dist/cjs/{form-dialog_13.cjs.entry.js → branch-slot-dropdown_15.cjs.entry.js} +557 -38
- package/dist/cjs/{calendar-days-icon-CsHz2cgV.js → calendar-days-icon-Cf14ROXV.js} +1 -1
- package/dist/cjs/{check-icon-CqTKjw2o.js → check-icon-DaQxP2EY.js} +1 -1
- package/dist/cjs/dead-stock-lookup_3.cjs.entry.js +13 -13
- package/dist/cjs/{decode-time-offset-DOSaziv5.js → decode-time-offset-DOUImlif.js} +1 -1
- package/dist/cjs/flexible-container.cjs.entry.js +4 -4
- package/dist/cjs/form-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/form-date-picker.cjs.entry.js +8 -8
- package/dist/cjs/{form-error-message-K-KI154V.js → form-error-message-BtLdHgxO.js} +1 -1
- package/dist/cjs/{form-input-label-uhneFYXO.js → form-input-label-B4lkF89K.js} +1 -1
- package/dist/cjs/form-input_7.cjs.entry.js +24 -24
- package/dist/cjs/form-switch.cjs.entry.js +4 -4
- package/dist/cjs/form-time-picker.cjs.entry.js +9 -9
- package/dist/cjs/{functions-DBDDNNNX.js → functions-CGcEF0Sy.js} +3 -3
- package/dist/cjs/general-form.cjs.entry.js +10 -10
- package/dist/cjs/general-inquiry-form.cjs.entry.js +10 -10
- package/dist/cjs/{get-language-from-url-9TyZFCRO.js → get-language-from-url-DwOt9DVH.js} +1 -1
- package/dist/cjs/{get-local-language-DjRj7WaF.js → get-local-language-B805IYI-.js} +7 -3
- package/dist/cjs/{get-mock-files-Br7Co-Fj.js → get-mock-files-_dswvp-k.js} +2 -2
- package/dist/cjs/{index-Bi6W8dMN.js → index-BdHAYIvO.js} +16 -0
- package/dist/cjs/information-table.cjs.entry.js +3 -3
- package/dist/cjs/{loader-icon-By94sKO7.js → loader-icon-aY56OHXW.js} +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/loading-spinner.cjs.entry.js +3 -3
- package/dist/cjs/manufacturer-part-lookup.cjs.entry.js +5 -5
- package/dist/cjs/{mappers-DF2WCWpn.js → mappers-BlH-TAo7.js} +27 -5
- package/dist/cjs/{material-card-BqsZgRVE.js → material-card-D1UQcy6U.js} +1 -1
- package/dist/cjs/part-lookup.cjs.entry.js +4 -4
- package/dist/cjs/{qr-code-scan-B-8WHa22.js → qr-code-scan-CtKK6wLL.js} +1 -1
- package/dist/cjs/service-booking-form.cjs.entry.js +10 -10
- package/dist/cjs/shift-accordion.cjs.entry.js +2 -2
- package/dist/cjs/shift-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/shift-components.cjs.js +3 -3
- package/dist/cjs/shift-slider.cjs.entry.js +2 -2
- package/dist/cjs/shift-switch.cjs.entry.js +3 -3
- package/dist/cjs/shift-tab-content.cjs.entry.js +3 -3
- package/dist/cjs/shift-tabs_2.cjs.entry.js +15 -15
- package/dist/cjs/ssc-lookup-form.cjs.entry.js +10 -10
- package/dist/cjs/test-drive-form.cjs.entry.js +10 -10
- package/dist/cjs/{triangle-alert-CN15U99s.js → triangle-alert-BjQBwsRv.js} +1 -1
- package/dist/cjs/{vehicle-accessories_7.cjs.entry.js → vehicle-accessories_8.cjs.entry.js} +565 -47
- package/dist/cjs/{vehicle-info-layout-sV6altzn.js → vehicle-info-layout-CRpL8UMY.js} +1 -1
- package/dist/cjs/vehicle-lookup.cjs.entry.js +10 -6
- package/dist/cjs/vehicle-quotation-form.cjs.entry.js +7 -7
- package/dist/cjs/{get-custom-classes-for-portal-NNOxAU3P.js → white-loader-CveXuRsH.js} +15 -15
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/components/empty.css +1 -1
- package/dist/collection/components/components/flexible-container.css +1 -1
- package/dist/collection/components/components/flexible-container.js +2 -2
- package/dist/collection/components/components/information-table.css +1 -1
- package/dist/collection/components/components/loading-spinner.css +1 -1
- package/dist/collection/components/components/loading-spinner.js +1 -1
- package/dist/collection/components/components/shift-accordion.js +1 -1
- package/dist/collection/components/components/shift-checkbox.js +1 -1
- package/dist/collection/components/components/shift-portal.css +1 -1
- package/dist/collection/components/components/shift-select-dropdown.css +1 -1
- package/dist/collection/components/components/shift-select-dropdown.js +2 -2
- package/dist/collection/components/components/shift-select.css +1 -1
- package/dist/collection/components/components/shift-select.js +3 -3
- package/dist/collection/components/components/shift-slider.js +1 -1
- package/dist/collection/components/components/shift-switch.js +1 -1
- package/dist/collection/components/components/shift-tab-content.css +1 -1
- package/dist/collection/components/components/shift-tab-content.js +1 -1
- package/dist/collection/components/components/shift-tabs.css +1 -1
- package/dist/collection/components/components/shift-tabs.js +2 -2
- package/dist/collection/components/form-elements/branch-slot-dropdown.css +1 -0
- package/dist/collection/components/form-elements/branch-slot-dropdown.js +405 -0
- package/dist/collection/components/form-elements/branch-slot-picker.css +1 -0
- package/dist/collection/components/form-elements/branch-slot-picker.js +921 -0
- package/dist/collection/components/form-elements/form-checkbox.js +1 -1
- package/dist/collection/components/form-elements/form-date-picker-legacy.js +4 -4
- package/dist/collection/components/form-elements/form-dialog.js +1 -1
- package/dist/collection/components/form-elements/form-file.js +2 -2
- package/dist/collection/components/form-elements/form-input.js +2 -2
- package/dist/collection/components/form-elements/form-inputs.css +1 -1
- package/dist/collection/components/form-elements/form-picker-input.js +2 -2
- package/dist/collection/components/form-elements/form-shadow-input.js +1 -1
- package/dist/collection/components/form-elements/form-stepper-control.js +2 -2
- package/dist/collection/components/form-elements/form-stepper-submit.js +2 -2
- package/dist/collection/components/form-elements/form-stepper.js +1 -1
- package/dist/collection/components/form-elements/form-structure-error.js +1 -1
- package/dist/collection/components/form-elements/form-submit.js +2 -2
- package/dist/collection/components/form-elements/form-switch.js +1 -1
- package/dist/collection/components/form-elements/form-text-area.js +2 -2
- package/dist/collection/components/form-elements/form-time-picker-legacy.js +5 -5
- package/dist/collection/components/form-elements/form-vin-input.js +2 -2
- package/dist/collection/components/forms/defaults/mappers.js +23 -1
- package/dist/collection/components/forms/general-form.js +2 -2
- package/dist/collection/components/forms/general-inquiry.js +2 -2
- package/dist/collection/components/forms/service-booking.js +2 -2
- package/dist/collection/components/forms/ssc-lookup.js +2 -2
- package/dist/collection/components/forms/test-drive.js +2 -2
- package/dist/collection/components/forms/vehicle-quotation.js +2 -2
- package/dist/collection/components/part-lookup/dead-stock-lookup.css +1 -1
- package/dist/collection/components/part-lookup/dead-stock-lookup.js +2 -2
- package/dist/collection/components/part-lookup/distributor-lookup.css +1 -1
- package/dist/collection/components/part-lookup/distributor-lookup.js +2 -2
- package/dist/collection/components/part-lookup/manufacturer-lookup.css +1 -1
- package/dist/collection/components/part-lookup/manufacturer-part-lookup.css +1 -1
- package/dist/collection/components/part-lookup/manufacturer-part-lookup.js +1 -1
- package/dist/collection/components/part-lookup/part-lookup.css +1 -1
- package/dist/collection/components/vehicle-lookup/components/CoverageTimeline.js +317 -0
- package/dist/collection/components/vehicle-lookup/components/claimable-item-popover.js +51 -3
- package/dist/collection/components/vehicle-lookup/components/claimable-item.js +14 -1
- package/dist/collection/components/vehicle-lookup/vehicle-accessories.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-accessories.js +2 -2
- package/dist/collection/components/vehicle-lookup/vehicle-claimable-items.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-claimable-items.js +79 -23
- package/dist/collection/components/vehicle-lookup/vehicle-item-claim-form.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-item-claim-form.js +8 -8
- package/dist/collection/components/vehicle-lookup/vehicle-lookup.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-lookup.js +6 -2
- package/dist/collection/components/vehicle-lookup/vehicle-paint-thickness.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-sale-information.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-sale-information.js +2 -2
- package/dist/collection/components/vehicle-lookup/vehicle-service-history.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-service-history.js +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-specification.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-specification.js +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-warranty-details.css +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-warranty-timeline.css +1 -0
- package/dist/collection/components/vehicle-lookup/vehicle-warranty-timeline.js +467 -0
- package/dist/collection/components/vin-extractor/vin-extractor.js +1 -1
- package/dist/collection/global/assets/hourglass-icon.js +6 -0
- package/dist/collection/global/assets/lock-icon.js +6 -0
- package/dist/collection/global/types/generated/vehicle-lookup/vehicle-extended-warranty-dto.js +1 -0
- package/dist/collection/global/types/generated/vehicle-lookup/vehicle-service-item-lock-dto.js +1 -0
- package/dist/collection/global/types/generated/vehicle-lookup/vehicle-service-item-prerequisite-dto.js +1 -0
- package/dist/collection/locale-mapper.js +5 -1
- package/dist/collection/locales/vehicleLookup/warrantyTimeline/type.js +31 -0
- package/dist/collection/templates/vehicle-lookup/prototype-assets/extended-warranty/adp-logo.svg +11 -0
- package/dist/collection/templates/vehicle-lookup/warranty-mock-data.js +96 -1
- package/dist/collection/tests/asset-stub.js +3 -0
- package/dist/components/branch-slot-dropdown.d.ts +11 -0
- package/dist/components/branch-slot-dropdown.js +5 -0
- package/dist/components/branch-slot-picker.d.ts +11 -0
- package/dist/components/branch-slot-picker.js +5 -0
- package/dist/components/dead-stock-lookup.js +1 -1
- package/dist/components/distributor-lookup.js +1 -1
- package/dist/components/flexible-container.js +1 -1
- package/dist/components/form-checkbox.js +1 -1
- package/dist/components/form-date-picker.js +1 -1
- package/dist/components/form-dialog.js +1 -1
- package/dist/components/form-file.js +1 -1
- package/dist/components/form-input-preview.js +1 -1
- package/dist/components/form-input.js +1 -1
- package/dist/components/form-phone-number.js +1 -1
- package/dist/components/form-picker-input.js +1 -1
- package/dist/components/form-select.js +1 -1
- package/dist/components/form-shadow-input.js +1 -1
- package/dist/components/form-stepper-control.js +1 -1
- package/dist/components/form-stepper-submit.js +1 -1
- package/dist/components/form-stepper.js +1 -1
- package/dist/components/form-structure-error.js +1 -1
- package/dist/components/form-structure.js +1 -1
- package/dist/components/form-submit.js +1 -1
- package/dist/components/form-switch.js +1 -1
- package/dist/components/form-text-area.js +1 -1
- package/dist/components/form-time-picker.js +1 -1
- package/dist/components/form-vin-input.js +1 -1
- package/dist/components/general-form.js +1 -1
- package/dist/components/general-inquiry-form.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/information-table.js +1 -1
- package/dist/components/loading-spinner.js +1 -1
- package/dist/components/manufacturer-lookup.js +1 -1
- package/dist/components/manufacturer-part-lookup.js +1 -1
- package/dist/components/{p-CsqoymFO.js → p-3f-o34tT.js} +1 -1
- package/dist/components/{p-DJ66XSRQ.js → p-8TjpeJSM.js} +1 -1
- package/dist/components/{p-vYuOlXCR.js → p-B-ee46vn.js} +1 -1
- package/dist/components/{p-ABcgwu6F.js → p-B2FtamaW.js} +1 -1
- package/dist/components/p-B5VLbYvi.js +5 -0
- package/dist/components/p-B7gfOpxv.js +5 -0
- package/dist/components/{p-B6_q3Jaz.js → p-B87nMNzg.js} +1 -1
- package/dist/components/p-BFM-DcG_.js +5 -0
- package/dist/components/{p-DlJAm0cB.js → p-BI9fJaw-.js} +1 -1
- package/dist/components/{p-B2ZE4oRD.js → p-BRSUeqZY.js} +1 -1
- package/dist/components/p-BRga86YJ.js +5 -0
- package/dist/components/{p-DoGNkDP-.js → p-B__72-PA.js} +1 -1
- package/dist/components/{p-CRJSM0nN.js → p-BcDVkdxZ.js} +1 -1
- package/dist/components/{p-CgimfOQ7.js → p-BrWGW8tX.js} +1 -1
- package/dist/components/p-BzXn-wtv.js +5 -0
- package/dist/components/{p-BTfZ7GAi.js → p-C4kEe245.js} +1 -1
- package/dist/components/{p-DTQIIqm5.js → p-C4o65xY0.js} +1 -1
- package/dist/components/{p-qYvbkatn.js → p-C8Fy2Klg.js} +1 -1
- package/dist/components/{p-BP6R1nYk.js → p-CADxWthH.js} +1 -1
- package/dist/components/p-CCuYl9VQ.js +5 -0
- package/dist/components/{p-BIeJEFM6.js → p-CDQ5F3Oe.js} +1 -1
- package/dist/components/{p-DWGSY0dp.js → p-CFAD5EiT.js} +1 -1
- package/dist/components/{p-SQ4fUegy.js → p-CXDKH9dP.js} +1 -1
- package/dist/components/{p-CYGQmS-P.js → p-CkOYv-3p.js} +1 -1
- package/dist/components/{p-emKMuKu4.js → p-ClyGZeVx.js} +1 -1
- package/dist/components/{p-Bu1VjE_4.js → p-CwhHBYbG.js} +1 -1
- package/dist/components/p-Czytw_So.js +5 -0
- package/dist/components/{p-0Leiluv7.js → p-D7eC7KnG.js} +1 -1
- package/dist/components/{p-DwJkEi88.js → p-DDbQOqlR.js} +1 -1
- package/dist/components/{p-BUGOUxbr.js → p-DFDuwRN_.js} +1 -1
- package/dist/components/p-DGpQUIZ3.js +5 -0
- package/dist/components/{p-CN6RvIb-.js → p-DHx3Ycv-.js} +1 -1
- package/dist/components/{p-Y2dufCGw.js → p-DVBif7ht.js} +1 -1
- package/dist/components/{p-DIMe8nY5.js → p-DVHM8Qgv.js} +1 -1
- package/dist/components/{p-B5T-06-W.js → p-DZQhS99P.js} +1 -1
- package/dist/components/{p-A2T8KqHs.js → p-Dr_ggnvT.js} +1 -1
- package/dist/components/{p-DJa_zubh.js → p-DsIilFPI.js} +1 -1
- package/dist/components/{p-puPUmTHi.js → p-DuG7sgOh.js} +1 -1
- package/dist/components/{p-COyo4v_L.js → p-DzVx9lgv.js} +1 -1
- package/dist/components/p-WXgB5UwE.js +5 -0
- package/dist/components/{p-CCpbwft_.js → p-_LAr7EWQ.js} +1 -1
- package/dist/components/{p-CH5Rb3vr.js → p-dHk4hFiZ.js} +1 -1
- package/dist/components/{p-DdUaptEO.js → p-mkmziXBF.js} +1 -1
- package/dist/components/{p-9zux5VXM.js → p-qYnLW3ti.js} +1 -1
- package/dist/components/p-rCUaKToY.js +5 -0
- package/dist/components/{p-Dhy4YWgm.js → p-yq14A9cI.js} +1 -1
- package/dist/components/part-lookup.js +1 -1
- package/dist/components/service-booking-form.js +1 -1
- package/dist/components/shift-accordion.js +1 -1
- package/dist/components/shift-checkbox.js +1 -1
- package/dist/components/shift-portal.js +1 -1
- package/dist/components/shift-select-dropdown.js +1 -1
- package/dist/components/shift-select.js +1 -1
- package/dist/components/shift-slider.js +1 -1
- package/dist/components/shift-switch.js +1 -1
- package/dist/components/shift-tab-content.js +1 -1
- package/dist/components/shift-tabs.js +1 -1
- package/dist/components/ssc-lookup-form.js +1 -1
- package/dist/components/test-drive-form.js +1 -1
- package/dist/components/vehicle-accessories.js +1 -1
- package/dist/components/vehicle-claimable-items.js +1 -1
- package/dist/components/vehicle-item-claim-form.js +1 -1
- package/dist/components/vehicle-lookup.js +1 -1
- package/dist/components/vehicle-paint-thickness.js +1 -1
- package/dist/components/vehicle-quotation-form.js +1 -1
- package/dist/components/vehicle-sale-information.js +1 -1
- package/dist/components/vehicle-service-history.js +1 -1
- package/dist/components/vehicle-specification.js +1 -1
- package/dist/components/vehicle-warranty-details.js +1 -1
- package/dist/components/vehicle-warranty-timeline.d.ts +11 -0
- package/dist/components/vehicle-warranty-timeline.js +5 -0
- package/dist/components/vin-extractor.js +1 -1
- package/dist/esm/{add-icon-DxQVyX6U.js → add-icon-DHh6DJXR.js} +1 -1
- package/dist/esm/{app-globals-ci3rJxmu.js → app-globals-CusTGK9D.js} +1 -1
- package/dist/esm/{arrow-icon-DRTeN2D5.js → arrow-icon-DziuNOTp.js} +1 -1
- package/dist/esm/{arrow-up-icon-FAYFxG6c.js → arrow-up-icon-Dw_d-rG9.js} +1 -1
- package/dist/esm/{form-dialog_13.entry.js → branch-slot-dropdown_15.entry.js} +554 -37
- package/dist/esm/{calendar-days-icon-BOy0a_W-.js → calendar-days-icon-CnASOv7M.js} +1 -1
- package/dist/esm/{check-icon-BYK1ESZG.js → check-icon-BZQF4tzH.js} +1 -1
- package/dist/esm/dead-stock-lookup_3.entry.js +13 -13
- package/dist/esm/{decode-time-offset-ChO_PV6l.js → decode-time-offset-Cib1aJfV.js} +1 -1
- package/dist/esm/flexible-container.entry.js +4 -4
- package/dist/esm/form-checkbox.entry.js +4 -4
- package/dist/esm/form-date-picker.entry.js +8 -8
- package/dist/esm/{form-error-message-YvMHko71.js → form-error-message-DWl6p6Dz.js} +1 -1
- package/dist/esm/{form-input-label-cuvgzRcH.js → form-input-label-6blOw1BN.js} +1 -1
- package/dist/esm/form-input_7.entry.js +23 -23
- package/dist/esm/form-switch.entry.js +4 -4
- package/dist/esm/form-time-picker.entry.js +9 -9
- package/dist/esm/{functions-DG73G3O6.js → functions-LONv8snV.js} +3 -3
- package/dist/esm/general-form.entry.js +10 -10
- package/dist/esm/general-inquiry-form.entry.js +10 -10
- package/dist/esm/{get-language-from-url-C1D-aPDq.js → get-language-from-url-fV-K15uy.js} +1 -1
- package/dist/esm/{get-local-language-DsJgnZ5L.js → get-local-language-CizYq_00.js} +7 -3
- package/dist/esm/{get-mock-files-_k2h1OdV.js → get-mock-files-k02F3T7q.js} +2 -2
- package/dist/esm/{index-Cg4V9l26.js → index-CteZTPhq.js} +16 -1
- package/dist/esm/information-table.entry.js +3 -3
- package/dist/esm/{loader-icon-B2ls1yXl.js → loader-icon-BvAmA41s.js} +1 -1
- package/dist/esm/loader.js +4 -4
- package/dist/esm/loading-spinner.entry.js +3 -3
- package/dist/esm/manufacturer-part-lookup.entry.js +5 -5
- package/dist/esm/{mappers-CeTQZn37.js → mappers-9IKbvPiR.js} +27 -5
- package/dist/esm/{material-card-BMtefyp-.js → material-card-jbQd-0as.js} +1 -1
- package/dist/esm/part-lookup.entry.js +4 -4
- package/dist/esm/{qr-code-scan-CktgNBSD.js → qr-code-scan-B1nViqZl.js} +1 -1
- package/dist/esm/service-booking-form.entry.js +10 -10
- package/dist/esm/shift-accordion.entry.js +2 -2
- package/dist/esm/shift-checkbox.entry.js +4 -4
- package/dist/esm/shift-components.js +4 -4
- package/dist/esm/shift-slider.entry.js +2 -2
- package/dist/esm/shift-switch.entry.js +3 -3
- package/dist/esm/shift-tab-content.entry.js +3 -3
- package/dist/esm/shift-tabs_2.entry.js +15 -15
- package/dist/esm/ssc-lookup-form.entry.js +10 -10
- package/dist/esm/test-drive-form.entry.js +10 -10
- package/dist/esm/{triangle-alert-D4H9aWiT.js → triangle-alert-Brtqhx2d.js} +1 -1
- package/dist/esm/{vehicle-accessories_7.entry.js → vehicle-accessories_8.entry.js} +565 -48
- package/dist/esm/{vehicle-info-layout-DQ12Civq.js → vehicle-info-layout-Dmx94GLp.js} +1 -1
- package/dist/esm/vehicle-lookup.entry.js +10 -6
- package/dist/esm/vehicle-quotation-form.entry.js +7 -7
- package/dist/esm/{get-custom-classes-for-portal-C4LvwyrX.js → white-loader-B3tJFuNO.js} +15 -15
- package/dist/integration-manifest.json +66 -2
- package/dist/locales/vehicleLookup/warrantyTimeline/ar.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/en.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/ku.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/ru.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/type.ts +29 -0
- package/dist/mocks/generated/broker-dealer/vehicle-lookup.json +19 -1
- package/dist/mocks/generated/edge-cases/vehicle-lookup.json +57 -0
- package/dist/mocks/generated/standard-dealer/part-lookup.json +18 -18
- package/dist/mocks/generated/standard-dealer/vehicle-lookup.json +123 -2
- package/dist/shift-components/{p-8e478de8.entry.js → p-0f576cb7.entry.js} +1 -1
- package/dist/shift-components/{p-83a38f2f.entry.js → p-10f68d42.entry.js} +1 -1
- package/dist/shift-components/{p-1416551c.entry.js → p-1aaf2b7f.entry.js} +1 -1
- package/dist/shift-components/{p-bd772f48.entry.js → p-1e26a2c4.entry.js} +1 -1
- package/dist/shift-components/{p-cc3bdbd7.entry.js → p-316aa46b.entry.js} +1 -1
- package/dist/shift-components/{p-8387da9d.entry.js → p-404ab3a9.entry.js} +1 -1
- package/dist/shift-components/{p-acd9087d.entry.js → p-4c0e75bc.entry.js} +1 -1
- package/dist/shift-components/{p-79faecaa.entry.js → p-65aad39b.entry.js} +1 -1
- package/dist/shift-components/p-695436be.entry.js +5 -0
- package/dist/shift-components/{p-b4f9de18.entry.js → p-6b46a2d7.entry.js} +1 -1
- package/dist/shift-components/{p-e65d8cc3.entry.js → p-6fe01a86.entry.js} +1 -1
- package/dist/shift-components/p-79150c47.entry.js +5 -0
- package/dist/shift-components/{p-9fbdc7fd.entry.js → p-8250a9d6.entry.js} +1 -1
- package/dist/shift-components/{p-d73f83a1.entry.js → p-829f24b9.entry.js} +1 -1
- package/dist/shift-components/p-902c5265.entry.js +5 -0
- package/dist/shift-components/{p-f148f0db.entry.js → p-9d1bbc0c.entry.js} +1 -1
- package/dist/shift-components/{p-56f69d7f.entry.js → p-9d41e300.entry.js} +1 -1
- package/dist/shift-components/{p-B8RCucpl.js → p-B9kqtQjS.js} +1 -1
- package/dist/shift-components/p-BOBRhkdK.js +5 -0
- package/dist/shift-components/p-BTNA9XsD.js +5 -0
- package/dist/shift-components/{p-CiA8HlYO.js → p-C4NpWwNE.js} +1 -1
- package/dist/shift-components/{p-BaC5C1YJ.js → p-C8PvXL-3.js} +1 -1
- package/dist/shift-components/p-C_QDvFTV.js +5 -0
- package/dist/shift-components/{p-BpCf2ue6.js → p-Ccwtsrgg.js} +1 -1
- package/dist/shift-components/p-CteZTPhq.js +6 -0
- package/dist/shift-components/p-CzKJCNU9.js +5 -0
- package/dist/shift-components/{p-BG5y01yj.js → p-D1ioFMhR.js} +1 -1
- package/dist/shift-components/{p-pUYjpajc.js → p-D6syzMN5.js} +1 -1
- package/dist/shift-components/{p-FFH7sR1n.js → p-D7cqTTll.js} +1 -1
- package/dist/shift-components/p-DWoutohJ.js +5 -0
- package/dist/shift-components/{p-BtLpOQVM.js → p-DtD7FZCG.js} +1 -1
- package/dist/shift-components/{p-CEfxRHUk.js → p-DzV_ls5o.js} +1 -1
- package/dist/shift-components/{p-08Pl1Pmo.js → p-MzYTUgsB.js} +1 -1
- package/dist/shift-components/{p-DwFWMVcD.js → p-OlAbjfKx.js} +1 -1
- package/dist/shift-components/p-aa2bf198.entry.js +5 -0
- package/dist/shift-components/{p-89853d6c.entry.js → p-aac87b64.entry.js} +1 -1
- package/dist/shift-components/{p-6a10c7ff.entry.js → p-ac83e668.entry.js} +1 -1
- package/dist/shift-components/p-bd1b1b6a.entry.js +5 -0
- package/dist/shift-components/{p-CtUQMviL.js → p-bfwabdVa.js} +1 -1
- package/dist/shift-components/{p-7ff0ea83.entry.js → p-c6a7902c.entry.js} +1 -1
- package/dist/shift-components/{p-d5db4fb4.entry.js → p-cb518142.entry.js} +1 -1
- package/dist/shift-components/{p-04b02a2a.entry.js → p-d26cc97e.entry.js} +1 -1
- package/dist/shift-components/{p-2b0e3d27.entry.js → p-d6973435.entry.js} +1 -1
- package/dist/shift-components/p-f092c7a2.entry.js +5 -0
- package/dist/shift-components/p-hABirfUj.js +5 -0
- package/dist/shift-components/{p-CRd5RAng.js → p-oFzLYYzz.js} +1 -1
- package/dist/shift-components/{p-Dvl1mJ6N.js → p-oQAUbfw7.js} +1 -1
- package/dist/shift-components/shift-components.esm.js +1 -1
- package/dist/stencil-docs.json +8468 -6799
- package/dist/types/components/form-elements/branch-slot-dropdown.d.ts +48 -0
- package/dist/types/components/form-elements/branch-slot-picker.d.ts +128 -0
- package/dist/types/components/forms/defaults/mappers.d.ts +16 -0
- package/dist/types/components/vehicle-lookup/components/CoverageTimeline.d.ts +13 -0
- package/dist/types/components/vehicle-lookup/vehicle-claimable-items.d.ts +15 -0
- package/dist/types/components/vehicle-lookup/vehicle-lookup.d.ts +3 -0
- package/dist/types/components/vehicle-lookup/vehicle-warranty-timeline.d.ts +46 -0
- package/dist/types/components.d.ts +452 -4
- package/dist/types/features/multi-lingual/types.d.ts +4 -4
- package/dist/types/global/assets/hourglass-icon.d.ts +6 -0
- package/dist/types/global/assets/lock-icon.d.ts +6 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-extended-warranty-dto.d.ts +9 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-service-item-dto.d.ts +2 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-service-item-lock-dto.d.ts +5 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-service-item-prerequisite-dto.d.ts +6 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-warranty-dto.d.ts +4 -0
- package/dist/types/locale-mapper.d.ts +2 -1
- package/dist/types/locales/type.d.ts +2 -2
- package/dist/types/locales/vehicleLookup/paintThickness/type.d.ts +6 -6
- package/dist/types/locales/vehicleLookup/warranty/type.d.ts +4 -4
- package/dist/types/locales/vehicleLookup/warrantyTimeline/type.d.ts +50 -0
- package/dist/types/locales/vehicleLookup/wrapper-type.d.ts +10 -10
- package/package.json +1 -1
- package/dist/components/p-B6gnG2lN.js +0 -5
- package/dist/components/p-B6ib31CX.js +0 -5
- package/dist/components/p-BL5YkEz-.js +0 -5
- package/dist/components/p-CK3C2jeL.js +0 -5
- package/dist/components/p-CbL2RmJ1.js +0 -5
- package/dist/components/p-WdDnbO6s.js +0 -5
- package/dist/components/p-_i2jGDlH.js +0 -5
- package/dist/shift-components/p-214259ae.entry.js +0 -5
- package/dist/shift-components/p-2f764c75.entry.js +0 -5
- package/dist/shift-components/p-50819229.entry.js +0 -5
- package/dist/shift-components/p-64205a8d.entry.js +0 -5
- package/dist/shift-components/p-9c950549.entry.js +0 -5
- package/dist/shift-components/p-BBmr0kTe.js +0 -5
- package/dist/shift-components/p-BVDXHvth.js +0 -5
- package/dist/shift-components/p-C_AHRam8.js +0 -5
- package/dist/shift-components/p-Cg4V9l26.js +0 -6
- package/dist/shift-components/p-D2XgNV12.js +0 -5
- package/dist/shift-components/p-D6ZxBLEm.js +0 -5
- package/dist/shift-components/p-DlBduQTw.js +0 -5
- package/dist/shift-components/p-c3f88c4c.entry.js +0 -5
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by ShiftSoftware
|
|
3
|
+
* Copyright (c)
|
|
4
|
+
*/
|
|
5
|
+
import { h } from "@stencil/core";
|
|
6
|
+
const TONE_STANDARD = {
|
|
7
|
+
base: 'var(--green)',
|
|
8
|
+
dark: 'var(--green-dark)',
|
|
9
|
+
tint: 'rgba(232, 244, 237, 0.9)',
|
|
10
|
+
border: 'rgba(44, 138, 88, 0.55)',
|
|
11
|
+
};
|
|
12
|
+
// Extended coverages cycle through these. The prototype hard-coded one class per
|
|
13
|
+
// provider; a vehicle can hold more than two, so the tone repeats and the segment's
|
|
14
|
+
// alternating border style keeps neighbouring bands apart.
|
|
15
|
+
const TONES_EXTENDED = [
|
|
16
|
+
{ base: 'var(--blue)', dark: 'var(--blue-dark)', tint: 'rgba(232, 241, 248, 0.88)', border: 'rgba(48, 113, 169, 0.64)' },
|
|
17
|
+
{ base: 'var(--violet)', dark: 'var(--violet-dark)', tint: 'rgba(240, 236, 247, 0.9)', border: 'rgba(117, 90, 165, 0.65)' },
|
|
18
|
+
];
|
|
19
|
+
const toTimestamp = (isoDate) => Date.parse(`${isoDate}T00:00:00Z`);
|
|
20
|
+
/** DTO dates are serialized as yyyy-MM-dd, but tolerate a full timestamp. */
|
|
21
|
+
const asDate = (value) => (value || '').slice(0, 10);
|
|
22
|
+
const todayInUtc = () => new Date().toISOString().slice(0, 10);
|
|
23
|
+
const clampPercentage = (value) => Math.min(100, Math.max(0, value));
|
|
24
|
+
const asPercentage = (value) => `${value.toFixed(6)}%`;
|
|
25
|
+
const monthsBetween = (start, end) => {
|
|
26
|
+
const [startYear, startMonth, startDay] = start.split('-').map(Number);
|
|
27
|
+
const [endYear, endMonth, endDay] = end.split('-').map(Number);
|
|
28
|
+
const months = (endYear - startYear) * 12 + (endMonth - startMonth) - (endDay < startDay ? 1 : 0);
|
|
29
|
+
return Math.max(0, months);
|
|
30
|
+
};
|
|
31
|
+
const formatDuration = (months, locale) => {
|
|
32
|
+
const years = Math.floor(months / 12);
|
|
33
|
+
const remainingMonths = months % 12;
|
|
34
|
+
const parts = [];
|
|
35
|
+
if (years)
|
|
36
|
+
parts.push(`${years} ${years === 1 ? locale.year : locale.years}`);
|
|
37
|
+
if (remainingMonths || !years)
|
|
38
|
+
parts.push(`${remainingMonths} ${remainingMonths === 1 ? locale.month : locale.months}`);
|
|
39
|
+
return parts.join(' ');
|
|
40
|
+
};
|
|
41
|
+
const buildCoverages = (vehicleInformation, locale) => {
|
|
42
|
+
const warranty = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty;
|
|
43
|
+
const coverages = [];
|
|
44
|
+
const standardStart = asDate(warranty === null || warranty === void 0 ? void 0 : warranty.warrantyStartDate);
|
|
45
|
+
const standardEnd = asDate(warranty === null || warranty === void 0 ? void 0 : warranty.warrantyEndDate);
|
|
46
|
+
if (standardStart && standardEnd && toTimestamp(standardEnd) > toTimestamp(standardStart))
|
|
47
|
+
coverages.push({
|
|
48
|
+
id: 'standard',
|
|
49
|
+
kind: 'standard',
|
|
50
|
+
label: locale.standardWarranty,
|
|
51
|
+
start: standardStart,
|
|
52
|
+
end: standardEnd,
|
|
53
|
+
tone: TONE_STANDARD,
|
|
54
|
+
alt: false,
|
|
55
|
+
});
|
|
56
|
+
((warranty === null || warranty === void 0 ? void 0 : warranty.extendedWarranties) || [])
|
|
57
|
+
.map(coverage => ({
|
|
58
|
+
id: (coverage === null || coverage === void 0 ? void 0 : coverage.id) || '',
|
|
59
|
+
name: (coverage === null || coverage === void 0 ? void 0 : coverage.name) || '',
|
|
60
|
+
providerName: (coverage === null || coverage === void 0 ? void 0 : coverage.providerCompanyName) || '',
|
|
61
|
+
logo: (coverage === null || coverage === void 0 ? void 0 : coverage.providerCompanyLogo) || '',
|
|
62
|
+
start: asDate(coverage === null || coverage === void 0 ? void 0 : coverage.startDate),
|
|
63
|
+
end: asDate(coverage === null || coverage === void 0 ? void 0 : coverage.endDate),
|
|
64
|
+
}))
|
|
65
|
+
.filter(coverage => coverage.start && coverage.end && toTimestamp(coverage.end) > toTimestamp(coverage.start))
|
|
66
|
+
.sort((a, b) => toTimestamp(a.start) - toTimestamp(b.start))
|
|
67
|
+
.forEach((coverage, index) => {
|
|
68
|
+
coverages.push({
|
|
69
|
+
id: coverage.id || `extended-${index}`,
|
|
70
|
+
kind: 'extended',
|
|
71
|
+
// The identifier is not a display string. A configured definition supplies a name;
|
|
72
|
+
// a persisted entry has none, so those fall back to the generic label.
|
|
73
|
+
label: coverage.name || locale.extendedWarranty,
|
|
74
|
+
start: coverage.start,
|
|
75
|
+
end: coverage.end,
|
|
76
|
+
tone: TONES_EXTENDED[index % TONES_EXTENDED.length],
|
|
77
|
+
alt: index % 2 === 1,
|
|
78
|
+
logo: coverage.logo || undefined,
|
|
79
|
+
providerName: coverage.providerName || undefined,
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
return coverages;
|
|
83
|
+
};
|
|
84
|
+
/** Coverage name, qualified by the provider when one resolved. Used for the accessible text only. */
|
|
85
|
+
const describe = (coverage) => (coverage.providerName ? `${coverage.label} · ${coverage.providerName}` : coverage.label);
|
|
86
|
+
const coverageStatus = (coverage, today) => {
|
|
87
|
+
const snapshot = toTimestamp(today);
|
|
88
|
+
if (snapshot < toTimestamp(coverage.start))
|
|
89
|
+
return 'upcoming';
|
|
90
|
+
if (snapshot >= toTimestamp(coverage.end))
|
|
91
|
+
return 'expired';
|
|
92
|
+
return 'active';
|
|
93
|
+
};
|
|
94
|
+
/** Track drawn past the snapshot so the marker sits in the rail rather than on its edge. */
|
|
95
|
+
const RAIL_HEADROOM = 0.04;
|
|
96
|
+
/**
|
|
97
|
+
* The span the rail draws. Coverage fixes one end; today is always inside it.
|
|
98
|
+
*
|
|
99
|
+
* A rail that stopped at the last expiry date would put "today" hard against its edge and lose the
|
|
100
|
+
* one thing a lapsed warranty most needs to show — how long ago cover ran out. Drawing through to
|
|
101
|
+
* today instead turns that into what it is: empty track, as wide as the time that has passed.
|
|
102
|
+
*/
|
|
103
|
+
const railRange = (coverages, today) => {
|
|
104
|
+
const first = toTimestamp(coverages[0].start);
|
|
105
|
+
const last = coverages.reduce((latest, coverage) => Math.max(latest, toTimestamp(coverage.end)), toTimestamp(coverages[0].end));
|
|
106
|
+
const snapshot = toTimestamp(today);
|
|
107
|
+
const headroom = Math.round((Math.max(last, snapshot) - Math.min(first, snapshot)) * RAIL_HEADROOM);
|
|
108
|
+
return {
|
|
109
|
+
from: first <= snapshot ? first : snapshot - headroom,
|
|
110
|
+
to: last >= snapshot ? last : snapshot + headroom,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
const toneVariables = (tone) => ({
|
|
114
|
+
'--tone': tone.base,
|
|
115
|
+
'--tone-dark': tone.dark,
|
|
116
|
+
'--tone-tint': tone.tint,
|
|
117
|
+
'--tone-border': tone.border,
|
|
118
|
+
});
|
|
119
|
+
/** Clearance between two axis dates before they read as one smudge. */
|
|
120
|
+
const AXIS_GAP = 10;
|
|
121
|
+
/**
|
|
122
|
+
* Hides the axis dates that would collide, always keeping the closing one.
|
|
123
|
+
*
|
|
124
|
+
* Crowding is not only a narrow-screen problem: consecutive coverages routinely hand over within a
|
|
125
|
+
* week of each other on a rail spanning years, and those two labels overlap at any width. The
|
|
126
|
+
* decision needs the measured width of rendered text, which the render pass cannot know, so it is
|
|
127
|
+
* applied to the DOM afterwards and re-applied whenever the rail is resized.
|
|
128
|
+
*/
|
|
129
|
+
const thinAxis = (axis) => {
|
|
130
|
+
if (!axis)
|
|
131
|
+
return;
|
|
132
|
+
const apply = () => {
|
|
133
|
+
const dates = Array.from(axis.children);
|
|
134
|
+
const railWidth = axis.clientWidth;
|
|
135
|
+
// jsdom reports no layout, so specs leave every date alone rather than hiding all of them.
|
|
136
|
+
if (dates.length < 2 || !railWidth)
|
|
137
|
+
return;
|
|
138
|
+
dates.forEach(date => date.classList.remove('is-crowded'));
|
|
139
|
+
const last = dates.length - 1;
|
|
140
|
+
const boxOf = (date) => {
|
|
141
|
+
const at = (parseFloat(date.style.getPropertyValue('--at')) / 100) * railWidth;
|
|
142
|
+
const width = date.offsetWidth;
|
|
143
|
+
// Mirrors the stylesheet: a date at the rail's start runs rightwards from its tick, one at
|
|
144
|
+
// its end leftwards from its own, and everything between is centred on its tick.
|
|
145
|
+
if (date.dataset.align === 'start')
|
|
146
|
+
return [at, at + width];
|
|
147
|
+
if (date.dataset.align === 'end')
|
|
148
|
+
return [at - width, at];
|
|
149
|
+
return [at - width / 2, at + width / 2];
|
|
150
|
+
};
|
|
151
|
+
const boxes = dates.map(boxOf);
|
|
152
|
+
const survives = new Set([0, last]);
|
|
153
|
+
let occupiedTo = boxes[0][1];
|
|
154
|
+
for (let index = 1; index < last; index++) {
|
|
155
|
+
const [left, right] = boxes[index];
|
|
156
|
+
if (left < occupiedTo + AXIS_GAP)
|
|
157
|
+
continue;
|
|
158
|
+
if (right + AXIS_GAP > boxes[last][0])
|
|
159
|
+
continue;
|
|
160
|
+
survives.add(index);
|
|
161
|
+
occupiedTo = right;
|
|
162
|
+
}
|
|
163
|
+
// A rail too narrow to hold even the two bounds keeps the closing date: when the cover runs out
|
|
164
|
+
// is the question the panel is answering.
|
|
165
|
+
if (boxes[0][1] + AXIS_GAP > boxes[last][0])
|
|
166
|
+
survives.delete(0);
|
|
167
|
+
dates.forEach((date, index) => date.classList.toggle('is-crowded', !survives.has(index)));
|
|
168
|
+
};
|
|
169
|
+
const schedule = () => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(apply) : apply());
|
|
170
|
+
schedule();
|
|
171
|
+
// Both triggers are needed and neither is enough on its own: the rail resizes without the dates
|
|
172
|
+
// changing, and switching vehicle replaces the dates without the rail resizing.
|
|
173
|
+
if (axis.__axisWatched)
|
|
174
|
+
return;
|
|
175
|
+
axis.__axisWatched = true;
|
|
176
|
+
if (typeof ResizeObserver !== 'undefined')
|
|
177
|
+
new ResizeObserver(schedule).observe(axis);
|
|
178
|
+
if (typeof MutationObserver !== 'undefined')
|
|
179
|
+
new MutationObserver(schedule).observe(axis, { childList: true });
|
|
180
|
+
};
|
|
181
|
+
/** Pulls the snapshot pill back onto the rail when centring it would overhang either edge. */
|
|
182
|
+
const positionTodayPill = (head, todayPosition) => {
|
|
183
|
+
if (!head)
|
|
184
|
+
return;
|
|
185
|
+
const apply = () => {
|
|
186
|
+
const pill = head.firstElementChild;
|
|
187
|
+
if (!pill || !head.clientWidth)
|
|
188
|
+
return;
|
|
189
|
+
const pillCentre = (head.clientWidth * clampPercentage(todayPosition)) / 100;
|
|
190
|
+
head.classList.toggle('is-near-end', pillCentre + pill.offsetWidth / 2 > head.clientWidth);
|
|
191
|
+
head.classList.toggle('is-near-start', pillCentre - pill.offsetWidth / 2 < 0);
|
|
192
|
+
};
|
|
193
|
+
if (typeof requestAnimationFrame === 'function')
|
|
194
|
+
requestAnimationFrame(apply);
|
|
195
|
+
else
|
|
196
|
+
apply();
|
|
197
|
+
};
|
|
198
|
+
// Inline rather than an ~assets import: the glyph takes its colour from the badge
|
|
199
|
+
// state via currentColor, which an <img src> cannot do.
|
|
200
|
+
const BADGE_GLYPHS = {
|
|
201
|
+
positive: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',
|
|
202
|
+
negative: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z',
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Why the warranty has not started. Possession is not a sale: while the distributor, an intermediary
|
|
206
|
+
* or an un-invoiced broker still holds the vehicle, coverage deliberately has not begun and the
|
|
207
|
+
* holder's invoice date is not used — the customer would lose that period off the front. The panel
|
|
208
|
+
* says so rather than showing an unexplained empty rail.
|
|
209
|
+
*
|
|
210
|
+
* Only the broker case is derivable from the response; the supply-chain cases depend on the host's
|
|
211
|
+
* own company classification, so the reason is read from the DTO. An older API that does not send
|
|
212
|
+
* `startState` reads as started and shows nothing, exactly as before.
|
|
213
|
+
*/
|
|
214
|
+
const notStartedMessage = (vehicleInformation, locale) => {
|
|
215
|
+
var _a, _b, _c;
|
|
216
|
+
const startState = (_a = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty) === null || _a === void 0 ? void 0 : _a.startState;
|
|
217
|
+
if (!vehicleInformation || !startState || startState === 'Started')
|
|
218
|
+
return '';
|
|
219
|
+
if (startState === 'AwaitingBrokerInvoice')
|
|
220
|
+
return locale.awaitingBrokerInvoice + (((_c = (_b = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.saleInformation) === null || _b === void 0 ? void 0 : _b.broker) === null || _c === void 0 ? void 0 : _c.brokerName) || '');
|
|
221
|
+
if (startState === 'AwaitingEndCustomerSale')
|
|
222
|
+
return locale.awaitingEndCustomerSale;
|
|
223
|
+
return locale.awaitingActivation;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* The one row the card is allowed to gain and lose. The grid track animates the height rather than
|
|
227
|
+
* the content, so the row still slides shut on the frame its message is cleared. Everything else
|
|
228
|
+
* keeps its place and fades, which is what holds the card to a single height across vehicles.
|
|
229
|
+
*/
|
|
230
|
+
const Collapsible = ({ open }, children) => (h("div", { class: "collapsible", "data-open": open ? 'true' : 'false', "aria-hidden": open ? null : 'true' }, h("div", { class: "collapsible-body" }, children)));
|
|
231
|
+
const NoticeStrip = ({ text }) => (h("div", { class: "warranty-notice", role: "status" }, h("svg", { class: "notice-icon", viewBox: "0 0 512 512", "aria-hidden": "true", focusable: "false" }, h("path", { fill: "currentColor", d: BADGE_GLYPHS.negative })), h("span", null, text)));
|
|
232
|
+
/**
|
|
233
|
+
* A verdict, or the absence of one. Before a lookup there is no vehicle to judge, and an absent
|
|
234
|
+
* `isAuthorized` reading as `false` opened the panel accusing every vehicle of being unauthorized
|
|
235
|
+
* and out of cover. The idle chip keeps its box and its split cap so nothing shifts when the
|
|
236
|
+
* verdict lands, and asserts nothing until it does — the treatment the older warranty panel
|
|
237
|
+
* already gives its own cards.
|
|
238
|
+
*/
|
|
239
|
+
const StatusBadge = ({ state, text }) => {
|
|
240
|
+
const idle = state === 'idle';
|
|
241
|
+
return (h("span", { class: `status-badge is-${state}`, "aria-label": idle ? null : text, "aria-hidden": idle ? 'true' : null }, h("svg", { class: "badge-icon", viewBox: "0 0 512 512", "aria-hidden": "true", focusable: "false" }, !idle && h("path", { fill: "currentColor", d: state === 'positive' ? BADGE_GLYPHS.positive : BADGE_GLYPHS.negative })), h("span", null, idle ? '' : text)));
|
|
242
|
+
};
|
|
243
|
+
export default function CoverageTimeline({ vehicleInformation, locale, isAuthorized, today }) {
|
|
244
|
+
var _a, _b;
|
|
245
|
+
const snapshot = today || todayInUtc();
|
|
246
|
+
const coverages = buildCoverages(vehicleInformation, locale);
|
|
247
|
+
const hasCoverage = coverages.length > 0;
|
|
248
|
+
const dealerName = ((_a = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.saleInformation) === null || _a === void 0 ? void 0 : _a.companyName) || '';
|
|
249
|
+
const notice = notStartedMessage(vehicleInformation, locale);
|
|
250
|
+
// The broker that actually anchored the warranty — a warranty fact, not a sale fact, so it is read
|
|
251
|
+
// from the warranty DTO rather than inferred from the presence of a broker on the sale.
|
|
252
|
+
const activatingBroker = ((_b = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty) === null || _b === void 0 ? void 0 : _b.activatedByBrokerName) || '';
|
|
253
|
+
// "Activated by" is only truthful once something started the coverage. Before that the company is
|
|
254
|
+
// just the dealer holding it, and when a broker started it both parties matter.
|
|
255
|
+
const dealerLabel = activatingBroker || notice ? locale.dealer : locale.activatedBy;
|
|
256
|
+
const hasActiveWarranty = coverages.some(coverage => coverageStatus(coverage, snapshot) === 'active');
|
|
257
|
+
// Both chips are verdicts about a vehicle, so neither can be given before there is one to judge.
|
|
258
|
+
const verdict = (isPositive) => (!vehicleInformation ? 'idle' : isPositive ? 'positive' : 'negative');
|
|
259
|
+
const range = hasCoverage ? railRange(coverages, snapshot) : { from: 0, to: 1 };
|
|
260
|
+
const positionInRange = (isoDate) => ((toTimestamp(isoDate) - range.from) / (range.to - range.from)) * 100;
|
|
261
|
+
// The stripe is proportioned across the cover itself, not the rail. The rail stretches to reach
|
|
262
|
+
// today, so sharing its scale would leave the stripe part-drawn, with the last band's colour
|
|
263
|
+
// running out to the edge on any vehicle whose warranty has lapsed.
|
|
264
|
+
const planFrom = hasCoverage ? toTimestamp(coverages[0].start) : 0;
|
|
265
|
+
const planTo = hasCoverage ? coverages.reduce((latest, coverage) => Math.max(latest, toTimestamp(coverage.end)), planFrom + 1) : 1;
|
|
266
|
+
const positionInPlan = (isoDate) => ((toTimestamp(isoDate) - planFrom) / (planTo - planFrom)) * 100;
|
|
267
|
+
const ticks = hasCoverage ? Array.from(new Set(coverages.flatMap(coverage => [coverage.start, coverage.end]))).sort((a, b) => toTimestamp(a) - toTimestamp(b)) : [];
|
|
268
|
+
// Inside the rail by construction; clamped anyway so malformed dates can never put an element at
|
|
269
|
+
// `left: 190%`, which widens the rail to match and makes the card scroll sideways to reach it.
|
|
270
|
+
const todayPosition = hasCoverage ? clampPercentage(positionInRange(snapshot)) : 0;
|
|
271
|
+
const cardAccent = !hasCoverage
|
|
272
|
+
? // No bands means no coverage to describe, so the accent must not fall through to a
|
|
273
|
+
// green/blue/violet gradient — that reads as a three-stage plan on a vehicle that has none.
|
|
274
|
+
// Red when we are saying why coverage has not started, otherwise inert.
|
|
275
|
+
notice
|
|
276
|
+
? 'var(--red)'
|
|
277
|
+
: 'var(--line)'
|
|
278
|
+
: coverages.length === 1
|
|
279
|
+
? TONE_STANDARD.base
|
|
280
|
+
: `linear-gradient(90deg, ${coverages
|
|
281
|
+
.map(coverage => `${coverage.tone.base} ${asPercentage(positionInPlan(coverage.start))} ${asPercentage(positionInPlan(coverage.end))}`)
|
|
282
|
+
.join(', ')})`;
|
|
283
|
+
const summary = coverages.map(coverage => `${describe(coverage)}: ${coverage.start} — ${coverage.end} (${coverageStatus(coverage, snapshot)})`).join('. ');
|
|
284
|
+
// One structure for every vehicle. Blocks a vehicle has nothing to put in fade out in place
|
|
285
|
+
// instead of being dropped, so moving between vehicles does not resize the card under the reader.
|
|
286
|
+
return (h("article", { class: "coverage-timeline warranty-card", "data-empty": hasCoverage ? 'false' : 'true', style: { '--card-accent': cardAccent } }, h("header", { class: "activation-header" }, h("div", { class: "activation-main" }, h("p", { class: "activation-title" }, h("span", null, dealerLabel, ":"), " ", h("strong", null, dealerName || '—')), h("div", { class: "broker-slot", "data-empty": activatingBroker ? 'false' : 'true', "aria-hidden": activatingBroker ? null : 'true' }, h("p", { class: "activation-broker" }, h("span", null, locale.broker, ":"), " ", h("strong", null, activatingBroker)))), h("div", { class: "total-slot", "data-empty": hasCoverage ? 'false' : 'true', "aria-hidden": hasCoverage ? null : 'true' }, h(TotalCoverage, { coverages: coverages, locale: locale }))), h(Collapsible, { open: !!notice }, h(NoticeStrip, { text: notice })), h("section", { class: "journey", "aria-label": locale.warrantyCoverage }, h("div", { class: "journey-head" }, h(StatusBadge, { state: verdict(isAuthorized), text: isAuthorized ? locale.authorized : locale.unauthorized }), h(StatusBadge, { state: verdict(hasActiveWarranty), text: hasActiveWarranty ? locale.activeWarranty : locale.notActiveWarranty })), h("div", { class: "timeline-shell", "data-empty": hasCoverage ? 'false' : 'true', "aria-hidden": hasCoverage ? null : 'true' }, h("div", { class: "timeline shift-skeleton", role: "group", "aria-label": locale.warrantyCoverage }, h("div", { class: "today-head", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) }, ref: element => positionTodayPill(element, todayPosition) }, hasCoverage && h("span", { class: "today-pill" }, `${locale.today} · ${snapshot}`)), h("div", { class: "axis", "aria-hidden": "true", ref: thinAxis }, ticks.map(tick => {
|
|
287
|
+
const at = positionInRange(tick);
|
|
288
|
+
// Ticks no longer necessarily reach the rail's ends — a lapsed warranty's dates all
|
|
289
|
+
// sit left of today — so which way a date is set follows its position rather than
|
|
290
|
+
// its place in the list.
|
|
291
|
+
return (h("span", { class: "axis-date", key: tick, "data-align": at <= 0.5 ? 'start' : at >= 99.5 ? 'end' : 'mid', style: { '--at': asPercentage(at) } }, tick));
|
|
292
|
+
})), h("div", { class: "lane" }, hasCoverage && h("span", { class: "today-tail", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) } }), h("div", { class: "coverage-list", role: "list" }, coverages.map(coverage => {
|
|
293
|
+
const status = coverageStatus(coverage, snapshot);
|
|
294
|
+
const start = positionInRange(coverage.start);
|
|
295
|
+
const span = positionInRange(coverage.end) - start;
|
|
296
|
+
return (h("div", { key: coverage.id, role: "listitem", class: "coverage-entry", "data-kind": coverage.kind, "data-status": status, "aria-label": `${describe(coverage)}, ${coverage.start} — ${coverage.end}`, style: Object.assign({ '--start': asPercentage(start), '--span': asPercentage(span) }, toneVariables(coverage.tone)) }, h("div", { class: `segment ${coverage.kind === 'standard' ? 'is-standard' : 'is-extended'}${coverage.alt ? ' tone-alt' : ''}` }, coverage.kind === 'standard' ? (h("strong", null, locale.standardWarrantyMark)) : coverage.logo ? (
|
|
297
|
+
// Decorative: the provider is already named in the entry's aria-label,
|
|
298
|
+
// so alt text here would announce it twice.
|
|
299
|
+
h("img", { class: "provider-logo", src: coverage.logo, alt: "", loading: "lazy" })) : null), h("span", { class: "coverage-label" }, coverage.label)));
|
|
300
|
+
})), hasCoverage && h("span", { class: "past-wash", "aria-hidden": "true", style: { '--to': asPercentage(todayPosition) } }), h("div", { class: "boundary-layer", "aria-hidden": "true" }, coverages.slice(1).map(coverage => (h("span", { key: coverage.id, class: "boundary", style: Object.assign({ '--at': asPercentage(positionInRange(coverage.start)) }, toneVariables(coverage.tone)) })))), hasCoverage && h("span", { class: "today-marker", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) } })), hasCoverage && h("p", { class: "sr-only" }, summary))))));
|
|
301
|
+
}
|
|
302
|
+
function TotalCoverage({ coverages, locale }) {
|
|
303
|
+
const monthsFor = (kind) => coverages.filter(coverage => coverage.kind === kind).reduce((total, coverage) => total + monthsBetween(coverage.start, coverage.end), 0);
|
|
304
|
+
const standardMonths = monthsFor('standard');
|
|
305
|
+
const extendedMonths = monthsFor('extended');
|
|
306
|
+
const mix = [
|
|
307
|
+
standardMonths ? `${formatDuration(standardMonths, locale)} ${locale.standard}` : '',
|
|
308
|
+
extendedMonths ? `${formatDuration(extendedMonths, locale)} ${locale.extended}` : '',
|
|
309
|
+
]
|
|
310
|
+
.filter(Boolean)
|
|
311
|
+
.join(' + ');
|
|
312
|
+
// The block keeps its box on a vehicle with no coverage so the header does not resize, but it
|
|
313
|
+
// reports no total rather than a total of zero — and a dash is narrow enough that it does not
|
|
314
|
+
// reflow the label beside it, which is what made the invisible block taller than a real one.
|
|
315
|
+
const total = mix ? formatDuration(standardMonths + extendedMonths, locale) : '—';
|
|
316
|
+
return (h("aside", { class: "total-coverage", "aria-label": `${locale.totalPlannedProtection}: ${mix || total}` }, h("span", null, locale.totalPlannedProtection), h("strong", null, total), h("span", { class: "coverage-mix" }, mix)));
|
|
317
|
+
}
|
|
@@ -6,6 +6,7 @@ import { h } from "@stencil/core";
|
|
|
6
6
|
import cn from "../../../global/lib/cn";
|
|
7
7
|
import { formatDateTime } from "../../../global/lib/format-date-time";
|
|
8
8
|
import { TriangleIcon } from "../../../global/assets/triangle-icon";
|
|
9
|
+
import { CheckIcon } from "../../../global/assets/check-icon";
|
|
9
10
|
import { ActivationIcon } from "../../../global/assets/activation-icon";
|
|
10
11
|
const detailRows = [
|
|
11
12
|
{
|
|
@@ -21,19 +22,41 @@ const detailRows = [
|
|
|
21
22
|
{ label: 'jobNumber', key: 'jobNumber' },
|
|
22
23
|
{ label: 'packageCode', key: 'packageCode' },
|
|
23
24
|
];
|
|
25
|
+
// A locked reward has no catalog entry naming its prerequisites — they are services the customer
|
|
26
|
+
// pays for outside this catalog, which is why the mileage label is the only name there is.
|
|
27
|
+
const lockExplanations = {
|
|
28
|
+
Locked: 'Complete the services below to unlock this item.',
|
|
29
|
+
Missed: 'This item was available until the next periodic service was performed.',
|
|
30
|
+
};
|
|
24
31
|
export const POPOVER_WIDTH = 540;
|
|
25
32
|
const HALF_POPOVER_WIDTH = POPOVER_WIDTH / 2;
|
|
26
33
|
const ARROW_PADDING = 19;
|
|
27
34
|
const ARROW_HALF_WIDTH = 25;
|
|
28
35
|
const VIEWPORT_PADDING = 16;
|
|
36
|
+
// Three columns to a row, as the claim voucher lays its specs out. The count is what makes the
|
|
37
|
+
// popover short enough to need no scrolling: eight fields is three rows here and eight rows stacked.
|
|
38
|
+
const SPEC_COLUMNS = 3;
|
|
39
|
+
// Every field but one has a bounded length — a date, a type, an invoice or job number — and fits a
|
|
40
|
+
// third of the card comfortably. A package code is whatever the source system writes, so it gets two
|
|
41
|
+
// columns and is packed as if it were two fields.
|
|
42
|
+
const specColumns = (row) => (row.key === 'packageCode' ? 2 : 1);
|
|
43
|
+
const detailValue = (item, row) => (item ? (row.formatter ? row.formatter(item) : item[row.key]) : '');
|
|
29
44
|
export const ClaimableItemPopover = ({ locale, item, target, popoverHeight, showPopover, fadingOut, contentFading, bodyContentHeight, claim, onMouseEnter, onMouseLeave, }) => {
|
|
45
|
+
var _a;
|
|
30
46
|
const viewportWidth = window.innerWidth;
|
|
31
47
|
const viewportHeight = window.innerHeight;
|
|
32
48
|
const minArrowX = VIEWPORT_PADDING + ARROW_HALF_WIDTH;
|
|
33
49
|
const maxArrowX = viewportWidth - VIEWPORT_PADDING - ARROW_HALF_WIDTH;
|
|
34
50
|
const arrowX = Math.max(minArrowX, Math.min(target.centerX, maxArrowX));
|
|
35
|
-
const
|
|
36
|
-
const
|
|
51
|
+
const spaceBelow = viewportHeight - target.bottomY - ARROW_PADDING - VIEWPORT_PADDING;
|
|
52
|
+
const spaceAbove = target.topY - ARROW_PADDING - VIEWPORT_PADDING;
|
|
53
|
+
// Flip only when below cannot hold it AND above genuinely has more room. Flipping on "does not fit
|
|
54
|
+
// below" alone moves the overflow to the top of the window rather than removing it.
|
|
55
|
+
//
|
|
56
|
+
// There is deliberately no height cap and nothing scrolls: the popover is laid out to stay short —
|
|
57
|
+
// three specs to a row and prerequisites as chips that wrap — so the content cannot grow into a
|
|
58
|
+
// column tall enough to need one.
|
|
59
|
+
const flipVertically = popoverHeight > spaceBelow && spaceAbove > spaceBelow;
|
|
37
60
|
// Anchor by `bottom` when flipped so the popover's height doesn't drag its visible
|
|
38
61
|
// position up/down between items with different content. Anchor by `top` otherwise.
|
|
39
62
|
const verticalStyle = flipVertically
|
|
@@ -47,5 +70,30 @@ export const ClaimableItemPopover = ({ locale, item, target, popoverHeight, show
|
|
|
47
70
|
bodyOffset = VIEWPORT_PADDING - naturalBodyLeft;
|
|
48
71
|
else if (naturalBodyRight > viewportWidth - VIEWPORT_PADDING)
|
|
49
72
|
bodyOffset = viewportWidth - VIEWPORT_PADDING - naturalBodyRight;
|
|
50
|
-
|
|
73
|
+
// A field with nothing in it is not information. Claim details are the common case — an item that
|
|
74
|
+
// is pending, expired, cancelled or locked has never been claimed, so its claim date, claiming
|
|
75
|
+
// company, invoice and job number are all blank — but the rule is about the value, not the state,
|
|
76
|
+
// so it needs no list of which statuses to except.
|
|
77
|
+
//
|
|
78
|
+
// Falls back to the full set if that would leave nothing at all, so the popover is never empty.
|
|
79
|
+
const populatedRows = detailRows.filter(row => !!detailValue(item, row));
|
|
80
|
+
const visibleRows = populatedRows.length > 0 ? populatedRows : detailRows;
|
|
81
|
+
// Packed by column width rather than by count, so a two-column field never gets squeezed into a
|
|
82
|
+
// third of a row and wrapped.
|
|
83
|
+
const specRows = [];
|
|
84
|
+
let currentRow = [];
|
|
85
|
+
let columnsUsed = 0;
|
|
86
|
+
for (const row of visibleRows) {
|
|
87
|
+
const columns = specColumns(row);
|
|
88
|
+
if (currentRow.length && columnsUsed + columns > SPEC_COLUMNS) {
|
|
89
|
+
specRows.push(currentRow);
|
|
90
|
+
currentRow = [];
|
|
91
|
+
columnsUsed = 0;
|
|
92
|
+
}
|
|
93
|
+
currentRow.push(row);
|
|
94
|
+
columnsUsed += columns;
|
|
95
|
+
}
|
|
96
|
+
if (currentRow.length)
|
|
97
|
+
specRows.push(currentRow);
|
|
98
|
+
return (h("div", { "aria-expanded": showPopover.toString(), dir: locale.sharedLocales.direction, style: Object.assign(Object.assign({}, verticalStyle), { left: `${left}px` }), class: cn('claimable-item-popover', { 'fading-out': fadingOut, 'content-fading': contentFading }), onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, h("div", { class: "popover-relative-container" }, h("div", { class: cn('popover-arrow-icon', { flipped: flipVertically }) }, h(TriangleIcon, { class: "popover-arrow-icon-svg" }), h("div", { class: "popover-arrow-bottom-line" })), h("div", { style: { transform: `translateX(${bodyOffset}px)` }, class: "popover-body" }, h("div", { class: "popover-body-content", style: bodyContentHeight > 0 ? { height: `${bodyContentHeight}px` } : {} }, h("div", { class: "popover-body-inner" }, specRows.map(specRow => (h("div", { class: "popover-specs" }, specRow.map(row => (h("div", { class: cn('popover-spec', { pkg: specColumns(row) > 1, full: specColumns(row) > 1 && specRow.length === 1 }) }, h("div", { class: "lab" }, locale[row.label]), h("div", { class: "val", dir: "ltr" }, detailValue(item, row)))))))), (item === null || item === void 0 ? void 0 : item.lock) && (h("div", { class: cn('popover-lock', `popover-lock-${item.lock.state}`) }, h("div", { class: "lab" }, lockExplanations[item.lock.state]), ((_a = item.lock.prerequisites) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("div", { class: "popover-lock-prerequisites" }, item.lock.prerequisites.map(prerequisite => (h("div", { class: cn('popover-prerequisite', { satisfied: prerequisite.satisfied }) }, h("div", { class: "popover-prerequisite-mark" }, prerequisite.satisfied ? h(CheckIcon, null) : null), h("div", { class: "popover-prerequisite-text" }, h("div", { class: "val", dir: "ltr" }, prerequisite.label), h("div", { class: "popover-prerequisite-date", dir: "ltr" }, prerequisite.satisfiedOn ? formatDateTime(prerequisite.satisfiedOn) : ''))))))))), (item === null || item === void 0 ? void 0 : item.claimable) && (h("button", { onClick: () => claim && claim(item), class: "claim-button" }, h(ActivationIcon, null), h("span", null, locale.claim)))))))));
|
|
51
99
|
};
|
|
@@ -9,6 +9,8 @@ import pendingIcon from "~assets/pending.svg";
|
|
|
9
9
|
import cancelledIcon from "~assets/cancelled.svg";
|
|
10
10
|
import processedIcon from "~assets/processed.svg";
|
|
11
11
|
import activationRequiredIcon from "~assets/activationRequired.svg";
|
|
12
|
+
import { LockIcon } from "../../../global/assets/lock-icon";
|
|
13
|
+
import { HourglassIcon } from "../../../global/assets/hourglass-icon";
|
|
12
14
|
const icons = {
|
|
13
15
|
expired: expiredIcon,
|
|
14
16
|
pending: pendingIcon,
|
|
@@ -16,7 +18,14 @@ const icons = {
|
|
|
16
18
|
cancelled: cancelledIcon,
|
|
17
19
|
activationRequired: activationRequiredIcon,
|
|
18
20
|
};
|
|
21
|
+
// The only two words this feature adds to the screen, kept together so moving them into the locale
|
|
22
|
+
// files is one edit. Left untranslated deliberately for now — see the locked-items plan.
|
|
23
|
+
const lockStateLabels = {
|
|
24
|
+
Locked: 'Locked',
|
|
25
|
+
Missed: 'Missed',
|
|
26
|
+
};
|
|
19
27
|
export const ClaimableItem = ({ item, locale, addStatusClass, setClaimableItemPopover }) => {
|
|
28
|
+
var _a;
|
|
20
29
|
const removeLoadAnimationClass = (event) => {
|
|
21
30
|
const component = event.target;
|
|
22
31
|
component.classList.remove('load-animation');
|
|
@@ -24,5 +33,9 @@ export const ClaimableItem = ({ item, locale, addStatusClass, setClaimableItemPo
|
|
|
24
33
|
let headerEl;
|
|
25
34
|
const openPopover = () => setClaimableItemPopover(true, item, headerEl);
|
|
26
35
|
const closePopover = () => setClaimableItemPopover(false);
|
|
27
|
-
|
|
36
|
+
// A locked or missed item carries an ordinary status underneath — usually pending, because
|
|
37
|
+
// nothing about its lifecycle changed. The lock is what the customer is being told, so it takes
|
|
38
|
+
// over the card: the status would say "Pending" about a reward they cannot claim.
|
|
39
|
+
const lockState = (_a = item === null || item === void 0 ? void 0 : item.lock) === null || _a === void 0 ? void 0 : _a.state;
|
|
40
|
+
return (h("div", { class: cn('claimable-item', { [item.status]: addStatusClass && !lockState, [`lock-${lockState}`]: !!lockState }) }, h("div", { class: "claimable-item-container" }, h("div", { ref: el => (headerEl = el), onBlur: closePopover, onClick: openPopover, onMouseEnter: openPopover, onMouseLeave: closePopover, onAnimationEnd: removeLoadAnimationClass, class: "claimable-item-header load-animation" }, lockState ? h("div", { class: "claimable-item-lock-icon" }, lockState === 'Missed' ? h(HourglassIcon, null) : h(LockIcon, null)) : h("img", { src: icons[item.status], alt: "status icon" }), h("div", null, lockState ? lockStateLabels[lockState] : locale[item === null || item === void 0 ? void 0 : item.status])), h("div", { onAnimationEnd: removeLoadAnimationClass, class: "claimable-item-circle load-animation" }), h("div", { onAnimationEnd: removeLoadAnimationClass, class: "claimable-item-footer load-animation" }, item === null || item === void 0 ? void 0 : item.name))));
|
|
28
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border:0 solid #e5e7eb;box-sizing:border-box}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.\!pointer-events-none{pointer-events:none!important}.fixed{position:fixed}.absolute{position:absolute}.\!relative{position:relative!important}.relative{position:relative}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.block{display:block}.flex{display:flex}.hidden{display:none}.origin-left{transform-origin:left}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!overflow-hidden{overflow:hidden!important}.rounded-\[4px\]{border-radius:4px}.border{border-width:1px}.opacity-0{opacity:0}.opacity-100{opacity:1}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.shift-skeleton{border-radius:4px;position:relative!important}.loading .shift-skeleton,.loading.shift-skeleton{border-style:none!important;overflow:hidden!important;pointer-events:none!important;position:relative!important}.shift-skeleton:after{background:linear-gradient(-45deg,#d4d8de,#e2e5e9,#d4d8de);background-size:300% 300%;border-radius:inherit!important;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform-origin:left;transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%;z-index:10}.loading .shift-skeleton:after,.loading.shift-skeleton:after{--tw-scale-x:1;animation:shimmer 2s ease-in-out infinite;opacity:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes shimmer{0%{background-position:100% 0}50%{background-position:0 100%}to{background-position:100% 0}}.image-viewer-overlay{background-color:rgba(0,0,0,.4);height:100dvh;left:0;opacity:0;pointer-events:none;position:fixed;top:0;transition-duration:.4s;transition-property:all;width:100dvw;z-index:50}.image-viewer-overlay.active{opacity:1;pointer-events:auto;transition-delay:.2s}.image-viewer-close-btn{align-items:center;cursor:pointer;display:flex;flex-direction:column;float:right;height:3rem;justify-content:center;margin-right:16px;margin-top:16px;width:3rem}.image-viewer-close-line{background-color:#fff;border-radius:9999px;height:.25rem;position:absolute;width:3rem}.image-viewer-close-line.first{transform:rotate(45deg)}.image-viewer-close-line.second{transform:rotate(-45deg)}.image-viewer-expanded-image{border-radius:.5rem;opacity:0;position:fixed;transition-property:all;z-index:50}.vehicle-info-container{background-color:#fdfdfd;border:1px solid #dcdcdc;border-radius:5px;box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 hsla(0,0%,100%,.1);overflow:hidden;padding:0;position:relative;transition-duration:.5s;transition-property:all}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#f6f6f6;border-radius:5px;border-top:1px solid #dcdcdc;border-top-left-radius:0;border-top-right-radius:0}::-webkit-scrollbar-thumb{background:#c5c5c5;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.hide-scroll ::-webkit-scrollbar-thumb,.hide-scroll::-webkit-scrollbar-thumb,.loading ::-webkit-scrollbar-thumb{background:transparent}.vehicle-info-body{display:flex;flex-direction:column;overflow:hidden;position:relative;transition-duration:.5s;transition-property:all;transition-timing-function:ease-in-out}.vehicle-info-content{transition-duration:.5s;transition-property:all;width:100%}.vehicle-info-header{align-items:center;background-color:#f6f6f6;border:1px solid #ededed;display:flex;height:54px;justify-content:center;position:relative;text-align:center}.vehicle-info-header-action{align-items:center;display:flex;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.vehicle-info-header-vin{display:inline-block;font-size:16px;transition-duration:.5s;transition-property:all}.vehicle-info-header-vin span{color:#ef4444}.loading .vehicle-info-header-vin{opacity:0;transform:scale(1.5);visibility:hidden}:host{all:initial!important;display:block;font-family:inherit!important;font-family:Noto Kufi Arabic,Nunito,Roboto,Arial,sans-serif!important}*,:host *{font-family:inherit!important}.pointer-events-none{pointer-events:none}.static{position:static}.mx-auto{margin-left:auto;margin-right:auto}.size-\[100px\]{height:100px;width:100px}.size-full{height:100%;width:100%}.h-auto{height:auto}.max-h-\[100px\]{max-height:100px}.w-auto{width:auto}.w-fit{width:fit-content}.max-w-\[100px\]{max-width:100px}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-\[4px\]{gap:4px}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.bg-black\/40{background-color:rgba(0,0,0,.4)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.duration-300{transition-duration:.3s}.hover\:opacity-100:hover{opacity:1}.\[\&_div\]\:hover\:\!opacity-100:hover div{opacity:1!important}.\[\&_img\]\:hover\:shadow-lg:hover img{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.h-\[200px\]{height:200px}.w-full{width:100%}.text-\[26px\]{font-size:26px}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.pointer-events-auto{pointer-events:auto}.bottom-\[40px\]{bottom:40px}.left-1\/2{left:50%}.left-\[30px\]{left:30px}.ml-\[-125px\]{margin-left:-125px}.box-content{box-sizing:content-box}.size-\[30px\]{height:30px;width:30px}.size-\[90px\]{height:90px;width:90px}.h-10{height:2.5rem}.h-\[320px\]{height:320px}.h-full{height:100%}.w-1\/2{width:50%}.w-\[150\%\]{width:150%}.w-\[90\%\]{width:90%}.w-\[calc\(100\%-0px\)\]{width:100%}.w-\[calc\(100\%-60px\)\]{width:calc(100% - 60px)}.min-w-full{min-width:100%}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[-50\%\],.translate-y-\[-5px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-5px\]{--tw-translate-y:-5px}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-\[70\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[70\%\]{--tw-scale-x:70%;--tw-scale-y:70%}.resize{resize:both}.justify-between{justify-content:space-between}.gap-\[250px\]{gap:250px}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-scroll{overflow-x:scroll}.rounded-\[6px\]{border-radius:6px}.border-\[\#f2aeb5\]{--tw-border-opacity:1;border-color:rgb(242 174 181/var(--tw-border-opacity,1))}.border-\[\#faebcc\]{--tw-border-opacity:1;border-color:rgb(250 235 204/var(--tw-border-opacity,1))}.bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.bg-\[\#f7d7d8\]{--tw-bg-opacity:1;background-color:rgb(247 215 216/var(--tw-bg-opacity,1))}.bg-\[\#fcf8e3\]{--tw-bg-opacity:1;background-color:rgb(252 248 227/var(--tw-bg-opacity,1))}.bg-\[linear-gradient\(to_bottom\2c _\#428bca_0\%\2c _\#3071a9_100\%\)\]{background-image:linear-gradient(180deg,#428bca,#3071a9)}.p-\[25px\]{padding:25px}.px-\[30px\]{padding-left:30px;padding-right:30px}.pt-\[16px\]{padding-top:16px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.font-semibold{font-weight:600}.text-\[\#58151c\]{--tw-text-opacity:1;color:rgb(88 21 28/var(--tw-text-opacity,1))}.text-\[\#8a6d3b\]{--tw-text-opacity:1;color:rgb(138 109 59/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.\[\&_\*\]\:shrink-0 *{flex-shrink:0}.end-0{inset-inline-end:0}.top-full{top:100%}.my-auto{margin-bottom:auto;margin-top:auto}.me-\[16px\]{margin-inline-end:16px}.mt-\[4px\]{margin-top:4px}.size-\[16px\]{height:16px;width:16px}.size-\[18px\]{height:18px;width:18px}.h-\[150px\]{height:150px}.w-\[84px\]{width:84px}.min-w-0{min-width:0}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.gap-\[16px\]{gap:16px}.gap-\[6px\]{gap:6px}.gap-\[8px\]{gap:8px}.whitespace-nowrap{white-space:nowrap}.border-b{border-bottom-width:1px}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-\[12px\]{padding:12px}.p-\[6px\]{padding:6px}.px-\[16px\]{padding-left:16px;padding-right:16px}.px-\[24px\]{padding-left:24px;padding-right:24px}.py-\[10px\]{padding-bottom:10px;padding-top:10px}.py-\[15px\]{padding-bottom:15px;padding-top:15px}.py-\[16px\]{padding-bottom:16px;padding-top:16px}.py-\[6px\]{padding-bottom:6px;padding-top:6px}.py-\[8px\]{padding-bottom:8px;padding-top:8px}.text-center{text-align:center}.text-\[17px\]{font-size:17px}.font-medium{font-weight:500}.no-underline{text-decoration-line:none}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity,1))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.hover\:bg-sky-100\/50:hover{background-color:rgba(224,242,254,.5)}.max-w-\[460px\]{max-width:460px}.max-w-\[520px\]{max-width:520px}.translate-y-\[-4px\]{--tw-translate-y:-4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-none{user-select:none}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.gap-\[12px\]{gap:12px}.gap-\[2px\]{gap:2px}.overflow-auto{overflow:auto}.\!rounded-\[12px\]{border-radius:12px!important}.rounded-\[14px\]{border-radius:14px}.p-\[16px\]{padding:16px}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[14px\]{padding-left:14px;padding-right:14px}.py-\[12px\]{padding-bottom:12px;padding-top:12px}.\!pb-0{padding-bottom:0!important}.text-\[13\.5px\]{font-size:13.5px}.leading-\[1\.35\]{line-height:1.35}.text-amber-900\/90{color:rgba(120,53,15,.9)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:768px){.md\:justify-between{justify-content:space-between}}.\[\&\>div\]\:grow>div{flex-grow:1}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.z-\[999\]{z-index:999}.h-\[100dvh\]{height:100dvh}.w-\[100dvw\]{width:100dvw}.scale-100,.scale-\[110\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[110\%\]{--tw-scale-x:110%;--tw-scale-y:110%}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.stroke-\[1\.5px\]{stroke-width:1.5px}.my-2{margin-bottom:.5rem;margin-top:.5rem}.grow{flex-grow:1}.mt-\[32px\]{margin-top:32px}.h-\[25px\]{height:25px}.h-\[50px\]{height:50px}.h-\[8px\]{height:8px}.bg-\[\#f6f6f6\]{--tw-bg-opacity:1;background-color:rgb(246 246 246/var(--tw-bg-opacity,1))}.pt-\[40px\]{padding-top:40px}.text-\[18px\]{font-size:18px}.font-bold{font-weight:700}.success-card{background-color:#d0e7de;border-color:#a2d0bb;color:#0b3521}.reject-card{background-color:#f7d7d8;border-color:#f2aeb5;color:#58151c}
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border:0 solid #e5e7eb;box-sizing:border-box}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.\!pointer-events-none{pointer-events:none!important}.fixed{position:fixed}.absolute{position:absolute}.\!relative{position:relative!important}.relative{position:relative}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.block{display:block}.flex{display:flex}.hidden{display:none}.origin-left{transform-origin:left}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!overflow-hidden{overflow:hidden!important}.rounded-\[4px\]{border-radius:4px}.border{border-width:1px}.opacity-0{opacity:0}.opacity-100{opacity:1}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.shift-skeleton{border-radius:4px;position:relative!important}.loading .shift-skeleton,.loading.shift-skeleton{border-style:none!important;overflow:hidden!important;pointer-events:none!important;position:relative!important}.shift-skeleton:after{background:linear-gradient(-45deg,#d4d8de,#e2e5e9,#d4d8de);background-size:300% 300%;border-radius:inherit!important;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform-origin:left;transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%;z-index:10}.loading .shift-skeleton:after,.loading.shift-skeleton:after{--tw-scale-x:1;animation:shimmer 2s ease-in-out infinite;opacity:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes shimmer{0%{background-position:100% 0}50%{background-position:0 100%}to{background-position:100% 0}}.image-viewer-overlay{background-color:rgba(0,0,0,.4);height:100dvh;left:0;opacity:0;pointer-events:none;position:fixed;top:0;transition-duration:.4s;transition-property:all;width:100dvw;z-index:50}.image-viewer-overlay.active{opacity:1;pointer-events:auto;transition-delay:.2s}.image-viewer-close-btn{align-items:center;cursor:pointer;display:flex;flex-direction:column;float:right;height:3rem;justify-content:center;margin-right:16px;margin-top:16px;width:3rem}.image-viewer-close-line{background-color:#fff;border-radius:9999px;height:.25rem;position:absolute;width:3rem}.image-viewer-close-line.first{transform:rotate(45deg)}.image-viewer-close-line.second{transform:rotate(-45deg)}.image-viewer-expanded-image{border-radius:.5rem;opacity:0;position:fixed;transition-property:all;z-index:50}.vehicle-info-container{background-color:#fdfdfd;border:1px solid #dcdcdc;border-radius:5px;box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 hsla(0,0%,100%,.1);overflow:hidden;padding:0;position:relative;transition-duration:.5s;transition-property:all}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#f6f6f6;border-radius:5px;border-top:1px solid #dcdcdc;border-top-left-radius:0;border-top-right-radius:0}::-webkit-scrollbar-thumb{background:#c5c5c5;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.hide-scroll ::-webkit-scrollbar-thumb,.hide-scroll::-webkit-scrollbar-thumb,.loading ::-webkit-scrollbar-thumb{background:transparent}.vehicle-info-body{display:flex;flex-direction:column;overflow:hidden;position:relative;transition-duration:.5s;transition-property:all;transition-timing-function:ease-in-out}.vehicle-info-content{transition-duration:.5s;transition-property:all;width:100%}.vehicle-info-header{align-items:center;background-color:#f6f6f6;border:1px solid #ededed;display:flex;height:54px;justify-content:center;position:relative;text-align:center}.vehicle-info-header-action{align-items:center;display:flex;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.vehicle-info-header-vin{display:inline-block;font-size:16px;transition-duration:.5s;transition-property:all}.vehicle-info-header-vin span{color:#ef4444}.loading .vehicle-info-header-vin{opacity:0;transform:scale(1.5);visibility:hidden}:host{all:initial!important;display:block;font-family:inherit!important;font-family:Noto Kufi Arabic,Nunito,Roboto,Arial,sans-serif!important}*,:host *{font-family:inherit!important}.static{position:static}.h-\[200px\]{height:200px}.w-full{width:100%}.items-center{align-items:center}.justify-center{justify-content:center}.text-\[26px\]{font-size:26px}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.bottom-\[40px\]{bottom:40px}.left-1\/2{left:50%}.left-\[30px\]{left:30px}.ml-\[-125px\]{margin-left:-125px}.box-content{box-sizing:content-box}.size-\[30px\]{height:30px;width:30px}.size-\[90px\]{height:90px;width:90px}.size-full{height:100%;width:100%}.h-10{height:2.5rem}.h-\[320px\]{height:320px}.h-full{height:100%}.w-1\/2{width:50%}.w-\[150\%\]{width:150%}.w-\[90\%\]{width:90%}.w-\[calc\(100\%-0px\)\]{width:100%}.w-\[calc\(100\%-60px\)\]{width:calc(100% - 60px)}.w-fit{width:fit-content}.min-w-full{min-width:100%}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[-50\%\],.translate-y-\[-5px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-5px\]{--tw-translate-y:-5px}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-\[70\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[70\%\]{--tw-scale-x:70%;--tw-scale-y:70%}.resize{resize:both}.flex-col{flex-direction:column}.justify-between{justify-content:space-between}.gap-\[250px\]{gap:250px}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-scroll{overflow-x:scroll}.rounded-\[6px\]{border-radius:6px}.border-\[\#f2aeb5\]{--tw-border-opacity:1;border-color:rgb(242 174 181/var(--tw-border-opacity,1))}.border-\[\#faebcc\]{--tw-border-opacity:1;border-color:rgb(250 235 204/var(--tw-border-opacity,1))}.bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.bg-\[\#f7d7d8\]{--tw-bg-opacity:1;background-color:rgb(247 215 216/var(--tw-bg-opacity,1))}.bg-\[\#fcf8e3\]{--tw-bg-opacity:1;background-color:rgb(252 248 227/var(--tw-bg-opacity,1))}.bg-\[linear-gradient\(to_bottom\2c _\#428bca_0\%\2c _\#3071a9_100\%\)\]{background-image:linear-gradient(180deg,#428bca,#3071a9)}.p-\[25px\]{padding:25px}.px-\[30px\]{padding-left:30px;padding-right:30px}.pt-\[16px\]{padding-top:16px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.font-semibold{font-weight:600}.text-\[\#58151c\]{--tw-text-opacity:1;color:rgb(88 21 28/var(--tw-text-opacity,1))}.text-\[\#8a6d3b\]{--tw-text-opacity:1;color:rgb(138 109 59/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.\[\&_\*\]\:shrink-0 *{flex-shrink:0}.mx-auto{margin-left:auto;margin-right:auto}.size-\[100px\]{height:100px;width:100px}.h-auto{height:auto}.max-h-\[100px\]{max-height:100px}.w-auto{width:auto}.max-w-\[100px\]{max-width:100px}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.gap-\[4px\]{gap:4px}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.bg-black\/40{background-color:rgba(0,0,0,.4)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.hover\:opacity-100:hover{opacity:1}.\[\&_div\]\:hover\:\!opacity-100:hover div{opacity:1!important}.\[\&_img\]\:hover\:shadow-lg:hover img{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.end-0{inset-inline-end:0}.top-full{top:100%}.my-auto{margin-bottom:auto;margin-top:auto}.me-\[16px\]{margin-inline-end:16px}.mt-\[4px\]{margin-top:4px}.size-\[16px\]{height:16px;width:16px}.size-\[18px\]{height:18px;width:18px}.h-\[150px\]{height:150px}.w-\[84px\]{width:84px}.min-w-0{min-width:0}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.gap-\[16px\]{gap:16px}.gap-\[6px\]{gap:6px}.gap-\[8px\]{gap:8px}.whitespace-nowrap{white-space:nowrap}.border-b{border-bottom-width:1px}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-\[12px\]{padding:12px}.p-\[6px\]{padding:6px}.px-\[16px\]{padding-left:16px;padding-right:16px}.px-\[24px\]{padding-left:24px;padding-right:24px}.py-\[10px\]{padding-bottom:10px;padding-top:10px}.py-\[15px\]{padding-bottom:15px;padding-top:15px}.py-\[16px\]{padding-bottom:16px;padding-top:16px}.py-\[6px\]{padding-bottom:6px;padding-top:6px}.py-\[8px\]{padding-bottom:8px;padding-top:8px}.text-center{text-align:center}.text-\[17px\]{font-size:17px}.font-medium{font-weight:500}.no-underline{text-decoration-line:none}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity,1))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.hover\:bg-sky-100\/50:hover{background-color:rgba(224,242,254,.5)}.table{display:table}.grid{display:grid}.size-\[20px\]{height:20px;width:20px}.size-\[32px\]{height:32px;width:32px}.place-items-center{place-items:center}.rounded{border-radius:.25rem}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity,1))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity,1))}.bg-slate-200\/70{background-color:rgba(226,232,240,.7)}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[6px\]{padding-left:6px;padding-right:6px}.px-\[8px\]{padding-left:8px;padding-right:8px}.text-\[13px\]{font-size:13px}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity,1))}.hover\:bg-slate-200\/70:hover{background-color:rgba(226,232,240,.7)}.max-w-\[460px\]{max-width:460px}.max-w-\[520px\]{max-width:520px}.translate-y-\[-4px\]{--tw-translate-y:-4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-none{user-select:none}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.gap-\[12px\]{gap:12px}.gap-\[2px\]{gap:2px}.overflow-auto{overflow:auto}.\!rounded-\[12px\]{border-radius:12px!important}.rounded-\[14px\]{border-radius:14px}.p-\[16px\]{padding:16px}.px-\[14px\]{padding-left:14px;padding-right:14px}.py-\[12px\]{padding-bottom:12px;padding-top:12px}.\!pb-0{padding-bottom:0!important}.text-\[13\.5px\]{font-size:13.5px}.leading-\[1\.35\]{line-height:1.35}.text-amber-900\/90{color:rgba(120,53,15,.9)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:768px){.md\:justify-between{justify-content:space-between}}.\[\&\>div\]\:grow>div{flex-grow:1}.my-2{margin-bottom:.5rem;margin-top:.5rem}.grow{flex-grow:1}.mt-\[32px\]{margin-top:32px}.h-\[25px\]{height:25px}.h-\[50px\]{height:50px}.h-\[8px\]{height:8px}.bg-\[\#f6f6f6\]{--tw-bg-opacity:1;background-color:rgb(246 246 246/var(--tw-bg-opacity,1))}.pt-\[40px\]{padding-top:40px}.text-\[18px\]{font-size:18px}.font-bold{font-weight:700}.success-card{background-color:#d0e7de;border-color:#a2d0bb;color:#0b3521}.reject-card{background-color:#f7d7d8;border-color:#f2aeb5;color:#58151c}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.z-\[999\]{z-index:999}.h-\[100dvh\]{height:100dvh}.w-\[100dvw\]{width:100dvw}.scale-100,.scale-\[110\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[110\%\]{--tw-scale-x:110%;--tw-scale-y:110%}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.stroke-\[1\.5px\]{stroke-width:1.5px}
|
|
@@ -77,9 +77,9 @@ export class VehicleAccessories {
|
|
|
77
77
|
image: () => (h("div", { class: "size-[100px] flex mx-auto items-center justify-center" }, h("button", { onClick: ({ target }) => openImageViewer.bind(this)(target, accessory === null || accessory === void 0 ? void 0 : accessory.image), class: "shrink-0 relative ring-0 outline-none w-fit mx-auto [&_img]:hover:shadow-lg [&_div]:hover:!opacity-100 cursor-pointer" }, h("div", { class: "absolute flex-col justify-center gap-[4px] size-full flex items-center pointer-events-none hover:opacity-100 rounded-lg opacity-0 bg-black/40 transition-all duration-300" }, h("img", { src: Eye }), h("span", { class: "text-white" }, texts.expand)), h("img", { class: "w-auto h-auto max-w-[100px] max-h-[100px] cursor-pointer shadow-sm rounded-lg transition-all duration-300", src: accessory === null || accessory === void 0 ? void 0 : accessory.image })))),
|
|
78
78
|
}));
|
|
79
79
|
const templateRow = {
|
|
80
|
-
image: () => h("div", { key: '
|
|
80
|
+
image: () => h("div", { key: 'e9d29ca002cbdff7ba6861a76b667292d8776764', class: "size-[100px] flex mx-auto items-center justify-center" }, "\u00A0"),
|
|
81
81
|
};
|
|
82
|
-
return (h(Host, { key: '
|
|
82
|
+
return (h(Host, { key: '5754d83d9a87285824e896a8bb7531a2b68a5f01', translate: "no" }, h(ImageViewer, { key: 'a7102dba9d94d368c84f62bd40892105596014da', closeImageViewer: () => closeImageViewer.bind(this)(), expandedImage: this.expandedImage }), h(VehicleInfoLayout, { key: '370101d7d7223328381e5b48f3b9cd5b33f3b4cc', isError: this.isError, isLoading: this.isLoading, coreOnly: this.coreOnly, header: (_c = this.vehicleLookup) === null || _c === void 0 ? void 0 : _c.vin, direction: this.locale.sharedLocales.direction, errorMessage: this.locale.sharedLocales.errors[this.errorMessage] || this.locale.sharedLocales.errors.wildCard }, h("div", { key: '416ef484b9c8f892512d8b72cbab3bcd22c022ea', class: "overflow-x-auto" }, h("information-table", { key: 'ba80b210fdf468ceea7661237ae4d548c4fd8205', templateRow: templateRow, rows: rows, headers: tableHeaders, isLoading: this.isLoading })))));
|
|
83
83
|
}
|
|
84
84
|
static get is() { return "vehicle-accessories"; }
|
|
85
85
|
static get encapsulation() { return "shadow"; }
|