@fleetbase/fleetops-engine 0.6.65 → 0.6.66
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/RELEASE.md +11 -6
- package/addon/components/ai/create-order-preview.hbs +10 -5
- package/addon/components/asset/pill.hbs +24 -0
- package/addon/components/asset/summary.hbs +1 -0
- package/addon/components/asset-connection/pill.hbs +24 -0
- package/addon/components/asset-connection/summary.hbs +1 -0
- package/addon/components/attachable/pill.hbs +24 -0
- package/addon/components/attachable/summary.hbs +1 -0
- package/addon/components/cell/asset-connection-identity.hbs +1 -0
- package/addon/components/cell/asset-identity.hbs +1 -0
- package/addon/components/cell/attachable-identity.hbs +1 -0
- package/addon/components/cell/contact-identity.hbs +1 -0
- package/addon/components/cell/customer-identity.hbs +1 -0
- package/addon/components/cell/device-event-identity.hbs +1 -0
- package/addon/components/cell/device-identity.hbs +1 -24
- package/addon/components/cell/driver-identity.hbs +1 -33
- package/addon/components/cell/entity-identity.hbs +1 -0
- package/addon/components/cell/equipment-identity.hbs +1 -5
- package/addon/components/cell/facilitator-identity.hbs +1 -0
- package/addon/components/cell/fleet-driver-identity.hbs +1 -0
- package/addon/components/cell/fleet-identity.hbs +1 -0
- package/addon/components/cell/fuel-provider-connection-identity.hbs +1 -0
- package/addon/components/cell/fuel-provider-transaction-identity.hbs +1 -0
- package/addon/components/cell/fuel-report-identity.hbs +1 -0
- package/addon/components/cell/inspection-form-identity.hbs +1 -0
- package/addon/components/cell/inspection-item-result-identity.hbs +1 -0
- package/addon/components/cell/inspection-submission-identity.hbs +1 -0
- package/addon/components/cell/integrated-vendor-identity.hbs +1 -0
- package/addon/components/cell/issue-identity.hbs +1 -0
- package/addon/components/cell/maintenance-identity.hbs +1 -0
- package/addon/components/cell/maintenance-schedule-identity.hbs +1 -0
- package/addon/components/cell/maintenance-subject-identity.hbs +1 -0
- package/addon/components/cell/manifest-identity.hbs +1 -0
- package/addon/components/cell/manifest-stop-identity.hbs +1 -0
- package/addon/components/cell/order-config-identity.hbs +1 -0
- package/addon/components/cell/order-identity.hbs +1 -0
- package/addon/components/cell/part-identity.hbs +1 -5
- package/addon/components/cell/payload-identity.hbs +1 -0
- package/addon/components/cell/place-identity.hbs +1 -0
- package/addon/components/cell/position-identity.hbs +1 -0
- package/addon/components/cell/purchase-rate-identity.hbs +1 -0
- package/addon/components/cell/recurring-order-schedule-identity.hbs +1 -0
- package/addon/components/cell/resource-list.hbs +10 -0
- package/addon/components/cell/resource-list.js +28 -0
- package/addon/components/cell/route-identity.hbs +1 -0
- package/addon/components/cell/sensor-identity.hbs +1 -0
- package/addon/components/cell/service-area-identity.hbs +1 -0
- package/addon/components/cell/service-quote-identity.hbs +1 -0
- package/addon/components/cell/service-quote-item-identity.hbs +1 -0
- package/addon/components/cell/service-rate-fee-identity.hbs +1 -0
- package/addon/components/cell/service-rate-identity.hbs +1 -0
- package/addon/components/cell/service-rate-parcel-fee-identity.hbs +1 -0
- package/addon/components/cell/telematic-identity.hbs +1 -0
- package/addon/components/cell/tracking-number-identity.hbs +1 -0
- package/addon/components/cell/tracking-status-identity.hbs +1 -0
- package/addon/components/cell/trailer-identity.hbs +1 -0
- package/addon/components/cell/vehicle-device-identity.hbs +1 -0
- package/addon/components/cell/vehicle-identity.hbs +1 -33
- package/addon/components/cell/vendor-identity.hbs +1 -0
- package/addon/components/cell/warranty-identity.hbs +1 -0
- package/addon/components/cell/waypoint-identity.hbs +1 -0
- package/addon/components/cell/work-order-identity.hbs +1 -0
- package/addon/components/cell/zone-identity.hbs +1 -0
- package/addon/components/contact/form.hbs +2 -4
- package/addon/components/contact/pill.hbs +24 -0
- package/addon/components/contact/summary.hbs +1 -0
- package/addon/components/customer/create-order-form.hbs +8 -4
- package/addon/components/customer/form.hbs +2 -4
- package/addon/components/customer/order-form.hbs +10 -8
- package/addon/components/customer/pill.hbs +24 -0
- package/addon/components/customer/summary.hbs +1 -0
- package/addon/components/device/details.hbs +3 -1
- package/addon/components/device/form.hbs +4 -13
- package/addon/components/device/panel-header.hbs +3 -2
- package/addon/components/device/panel-header.js +1 -5
- package/addon/components/device/panel-tabs/vehicle.hbs +2 -2
- package/addon/components/device/pill.hbs +24 -16
- package/addon/components/device/summary.hbs +1 -0
- package/addon/components/device/telemetry.hbs +17 -0
- package/addon/components/device/telemetry.js +117 -0
- package/addon/components/device-event/details.hbs +6 -24
- package/addon/components/device-event/pill.hbs +24 -0
- package/addon/components/device-event/summary.hbs +1 -0
- package/addon/components/driver/details.hbs +9 -1
- package/addon/components/driver/form.hbs +6 -18
- package/addon/components/driver/panel-header.hbs +3 -4
- package/addon/components/driver/panel-header.js +8 -1
- package/addon/components/driver/pill.hbs +16 -8
- package/addon/components/driver/summary.hbs +1 -0
- package/addon/components/entity/pill.hbs +24 -0
- package/addon/components/entity/summary.hbs +1 -0
- package/addon/components/equipment/details.hbs +6 -2
- package/addon/components/equipment/form.hbs +10 -4
- package/addon/components/equipment/pill.hbs +24 -20
- package/addon/components/equipment/summary.hbs +1 -0
- package/addon/components/facilitator/pill.hbs +24 -0
- package/addon/components/facilitator/summary.hbs +1 -0
- package/addon/components/fleet/details.hbs +6 -2
- package/addon/components/fleet/driver-listing.hbs +3 -12
- package/addon/components/fleet/form.hbs +8 -4
- package/addon/components/fleet/pill.hbs +24 -0
- package/addon/components/fleet/summary.hbs +1 -0
- package/addon/components/fleet/vehicle-listing.hbs +3 -12
- package/addon/components/fleet-driver/pill.hbs +24 -0
- package/addon/components/fleet-driver/summary.hbs +1 -0
- package/addon/components/fleet-driver-listing.hbs +2 -1
- package/addon/components/fleet-panel/details.hbs +6 -2
- package/addon/components/fleet-panel/driver-listing.hbs +2 -1
- package/addon/components/fleet-panel/vehicle-listing.hbs +2 -1
- package/addon/components/fleet-vehicle-listing.hbs +2 -1
- package/addon/components/fuel-integration/form.hbs +125 -25
- package/addon/components/fuel-integration/form.js +74 -19
- package/addon/components/fuel-integration/hub.hbs +68 -65
- package/addon/components/fuel-integration/hub.js +15 -19
- package/addon/components/fuel-provider-connection/pill.hbs +24 -0
- package/addon/components/fuel-provider-connection/summary.hbs +1 -0
- package/addon/components/fuel-provider-transaction/pill.hbs +24 -0
- package/addon/components/fuel-provider-transaction/summary.hbs +1 -0
- package/addon/components/fuel-report/details.hbs +9 -3
- package/addon/components/fuel-report/form.hbs +6 -3
- package/addon/components/fuel-report/pill.hbs +24 -0
- package/addon/components/fuel-report/summary.hbs +1 -0
- package/addon/components/fuel-transaction-status.hbs +1 -0
- package/addon/components/fuel-transaction-status.js +8 -0
- package/addon/components/geofence-map.hbs +19 -0
- package/addon/components/geofence-map.js +83 -0
- package/addon/components/inspection-field/form.hbs +103 -0
- package/addon/components/inspection-field/form.js +211 -0
- package/addon/components/inspection-field/input.hbs +270 -0
- package/addon/components/inspection-field/input.js +472 -0
- package/addon/components/inspection-field/value.hbs +90 -0
- package/addon/components/inspection-field/value.js +158 -0
- package/addon/components/inspection-flyout.hbs +34 -0
- package/addon/components/inspection-flyout.js +66 -0
- package/addon/components/inspection-form/builder.hbs +88 -0
- package/addon/components/inspection-form/builder.js +211 -0
- package/addon/components/inspection-form/details/submissions.hbs +48 -0
- package/addon/components/inspection-form/details/submissions.js +42 -0
- package/addon/components/inspection-form/details.hbs +97 -0
- package/addon/components/inspection-form/details.js +57 -0
- package/addon/components/inspection-form/form.hbs +93 -0
- package/addon/components/inspection-form/form.js +79 -0
- package/addon/components/inspection-form/pill.hbs +24 -0
- package/addon/components/inspection-form/summary.hbs +1 -0
- package/addon/components/inspection-item-result/pill.hbs +24 -0
- package/addon/components/inspection-item-result/summary.hbs +1 -0
- package/addon/components/inspection-link/list.hbs +94 -0
- package/addon/components/inspection-link/list.js +129 -0
- package/addon/components/inspection-sheet/group.hbs +45 -0
- package/addon/components/inspection-sheet/group.js +75 -0
- package/addon/components/inspection-sheet.hbs +77 -0
- package/addon/components/inspection-sheet.js +152 -0
- package/addon/components/inspection-submission/details.hbs +149 -0
- package/addon/components/inspection-submission/details.js +130 -0
- package/addon/components/inspection-submission/form.hbs +114 -0
- package/addon/components/inspection-submission/form.js +129 -0
- package/addon/components/inspection-submission/photos.hbs +20 -0
- package/addon/components/inspection-submission/photos.js +57 -0
- package/addon/components/inspection-submission/pill.hbs +24 -0
- package/addon/components/inspection-submission/summary.hbs +1 -0
- package/addon/components/integrated-vendor/pill.hbs +24 -0
- package/addon/components/integrated-vendor/summary.hbs +1 -0
- package/addon/components/issue/details.hbs +12 -0
- package/addon/components/issue/details.js +36 -0
- package/addon/components/issue/form.hbs +10 -5
- package/addon/components/issue/pill.hbs +24 -0
- package/addon/components/issue/summary.hbs +1 -0
- package/addon/components/layout/fleet-ops-sidebar.js +14 -3
- package/addon/components/maintenance/details.hbs +9 -3
- package/addon/components/maintenance/form.hbs +22 -3
- package/addon/components/maintenance/form.js +4 -4
- package/addon/components/maintenance/panel-header.hbs +14 -12
- package/addon/components/maintenance/pill.hbs +24 -0
- package/addon/components/maintenance/summary.hbs +1 -0
- package/addon/components/maintenance-schedule/details.hbs +7 -3
- package/addon/components/maintenance-schedule/form.hbs +20 -2
- package/addon/components/maintenance-schedule/form.js +6 -6
- package/addon/components/maintenance-schedule/pill.hbs +24 -0
- package/addon/components/maintenance-schedule/summary.hbs +1 -0
- package/addon/components/maintenance-schedule/work-orders.hbs +39 -0
- package/addon/components/maintenance-schedule/work-orders.js +37 -0
- package/addon/components/maintenance-subject/pill.hbs +24 -0
- package/addon/components/maintenance-subject/summary.hbs +1 -0
- package/addon/components/manifest/pill.hbs +24 -0
- package/addon/components/manifest/summary.hbs +1 -0
- package/addon/components/manifest-stop/pill.hbs +24 -0
- package/addon/components/manifest-stop/summary.hbs +1 -0
- package/addon/components/map/drawer/device-event-listing.hbs +4 -14
- package/addon/components/map/drawer/device-event-listing.js +3 -1
- package/addon/components/map/drawer/driver-listing.js +6 -2
- package/addon/components/map/drawer/position-listing.hbs +2 -16
- package/addon/components/map/drawer/vehicle-listing.js +1 -2
- package/addon/components/modals/add-driver-shift.hbs +2 -1
- package/addon/components/modals/assign-driver.hbs +2 -16
- package/addon/components/modals/attach-device.hbs +2 -1
- package/addon/components/modals/attach-equipment.hbs +2 -4
- package/addon/components/modals/attach-telematic-device.hbs +8 -1
- package/addon/components/modals/attach-trailer.hbs +2 -1
- package/addon/components/modals/bulk-assign-driver.hbs +2 -9
- package/addon/components/modals/bulk-assign-orders.hbs +2 -9
- package/addon/components/modals/driver-assign-order.hbs +2 -6
- package/addon/components/modals/driver-assign-vehicle.hbs +4 -12
- package/addon/components/modals/driver-assign-vehicle.js +30 -0
- package/addon/components/modals/driver-assign-vendor.hbs +2 -1
- package/addon/components/modals/driver-form.hbs +4 -2
- package/addon/components/modals/fleet-assign-driver.hbs +2 -1
- package/addon/components/modals/fleet-assign-vehicle.hbs +2 -1
- package/addon/components/modals/fleet-form.hbs +4 -2
- package/addon/components/modals/fuel-connection-diagnostics.hbs +35 -0
- package/addon/components/modals/fuel-connection-diagnostics.js +87 -0
- package/addon/components/modals/fuel-report-form.hbs +4 -2
- package/addon/components/modals/fuel-transaction-action.hbs +48 -0
- package/addon/components/modals/fuel-transaction-action.js +98 -0
- package/addon/components/modals/group-form.hbs +2 -1
- package/addon/components/modals/inspection-follow-up.hbs +31 -0
- package/addon/components/modals/inspection-follow-up.js +39 -0
- package/addon/components/modals/inspection-link.hbs +100 -0
- package/addon/components/modals/inspection-link.js +83 -0
- package/addon/components/modals/issue-assign.hbs +2 -1
- package/addon/components/modals/issue-from.hbs +8 -4
- package/addon/components/modals/map-layer-form.hbs +2 -1
- package/addon/components/modals/order-assign-driver.hbs +2 -16
- package/addon/components/modals/order-form.hbs +8 -46
- package/addon/components/modals/order-route-form.hbs +8 -4
- package/addon/components/modals/place-assign-vendor.hbs +3 -2
- package/addon/components/modals/place-details.hbs +1 -1
- package/addon/components/modals/point-map.hbs +1 -1
- package/addon/components/modals/radar-notice.hbs +24 -0
- package/addon/components/modals/radar-notice.js +8 -0
- package/addon/components/modals/radar-save-view.hbs +7 -0
- package/addon/components/modals/radar-select-resource.hbs +35 -0
- package/addon/components/modals/radar-send-pin.hbs +20 -0
- package/addon/components/modals/radar-send-pin.js +8 -0
- package/addon/components/modals/select-trailer.hbs +2 -4
- package/addon/components/modals/vehicle-form.hbs +2 -1
- package/addon/components/modals/vendor-form.hbs +2 -3
- package/addon/components/order/details/activity.js +9 -0
- package/addon/components/order/details/detail.hbs +2 -32
- package/addon/components/order/form/details.hbs +10 -48
- package/addon/components/order/form/route.hbs +10 -12
- package/addon/components/order/form/service-rate.hbs +2 -3
- package/addon/components/order/pill.hbs +24 -34
- package/addon/components/order/route-editor.hbs +8 -4
- package/addon/components/order/schedule-card.hbs +2 -1
- package/addon/components/order/summary.hbs +1 -0
- package/addon/components/order-config/pill.hbs +24 -0
- package/addon/components/order-config/summary.hbs +1 -0
- package/addon/components/part/details.hbs +15 -3
- package/addon/components/part/details.js +37 -1
- package/addon/components/part/form.hbs +12 -5
- package/addon/components/part/pill.hbs +24 -0
- package/addon/components/part/summary.hbs +1 -0
- package/addon/components/payload/pill.hbs +24 -0
- package/addon/components/payload/summary.hbs +1 -0
- package/addon/components/place/details.hbs +1 -1
- package/addon/components/place/pill.hbs +24 -0
- package/addon/components/place/summary.hbs +1 -0
- package/addon/components/position/pill.hbs +24 -0
- package/addon/components/position/summary.hbs +1 -0
- package/addon/components/positions-replay.hbs +2 -4
- package/addon/components/public-inspection.hbs +174 -0
- package/addon/components/public-inspection.js +279 -0
- package/addon/components/purchase-rate/pill.hbs +24 -0
- package/addon/components/purchase-rate/summary.hbs +1 -0
- package/addon/components/radar/agenda/entry.hbs +17 -0
- package/addon/components/radar/agenda/entry.js +26 -0
- package/addon/components/radar/agenda/lane.hbs +33 -0
- package/addon/components/radar/agenda/lane.js +80 -0
- package/addon/components/radar/agenda.hbs +69 -0
- package/addon/components/radar/agenda.js +29 -0
- package/addon/components/radar/briefing.hbs +108 -0
- package/addon/components/radar/briefing.js +43 -0
- package/addon/components/radar/bulk-bar.hbs +41 -0
- package/addon/components/radar/bulk-bar.js +32 -0
- package/addon/components/radar/decision-card.hbs +28 -0
- package/addon/components/radar/decision-card.js +7 -0
- package/addon/components/radar/empty-state.hbs +30 -0
- package/addon/components/radar/empty-state.js +27 -0
- package/addon/components/radar/filter-pills.hbs +22 -0
- package/addon/components/radar/filter-pills.js +3 -0
- package/addon/components/radar/handover-card.hbs +62 -0
- package/addon/components/radar/handover-card.js +14 -0
- package/addon/components/radar/header.hbs +28 -0
- package/addon/components/radar/header.js +12 -0
- package/addon/components/radar/item-drawer.hbs +92 -0
- package/addon/components/radar/item-drawer.js +37 -0
- package/addon/components/radar/item-list.hbs +20 -0
- package/addon/components/radar/item-list.js +3 -0
- package/addon/components/radar/item-row.hbs +90 -0
- package/addon/components/radar/item-row.js +43 -0
- package/addon/components/radar/keyboard-hints.hbs +8 -0
- package/addon/components/radar/keyboard-hints.js +3 -0
- package/addon/components/radar/subject.hbs +14 -0
- package/addon/components/radar/subject.js +26 -0
- package/addon/components/radar/view-bar.hbs +27 -0
- package/addon/components/radar/view-bar.js +16 -0
- package/addon/components/recurring-order-schedule/pill.hbs +24 -0
- package/addon/components/recurring-order-schedule/summary.hbs +1 -0
- package/addon/components/resource-activity.hbs +1 -0
- package/addon/components/resource-activity.js +4 -0
- package/addon/components/route/pill.hbs +24 -0
- package/addon/components/route/summary.hbs +1 -0
- package/addon/components/select-option/asset-connection.hbs +12 -0
- package/addon/components/select-option/asset.hbs +12 -0
- package/addon/components/select-option/attachable.hbs +12 -0
- package/addon/components/select-option/contact.hbs +12 -0
- package/addon/components/select-option/customer.hbs +12 -0
- package/addon/components/select-option/device-event.hbs +12 -0
- package/addon/components/select-option/device.hbs +12 -0
- package/addon/components/select-option/driver.hbs +12 -0
- package/addon/components/select-option/entity.hbs +12 -0
- package/addon/components/select-option/equipment.hbs +12 -0
- package/addon/components/select-option/facilitator.hbs +12 -0
- package/addon/components/select-option/fleet-driver.hbs +12 -0
- package/addon/components/select-option/fleet.hbs +12 -0
- package/addon/components/select-option/fuel-provider-connection.hbs +12 -0
- package/addon/components/select-option/fuel-provider-transaction.hbs +12 -0
- package/addon/components/select-option/fuel-report.hbs +12 -0
- package/addon/components/select-option/inspection-form.hbs +12 -0
- package/addon/components/select-option/inspection-item-result.hbs +12 -0
- package/addon/components/select-option/inspection-submission.hbs +12 -0
- package/addon/components/select-option/integrated-vendor.hbs +12 -0
- package/addon/components/select-option/issue.hbs +12 -0
- package/addon/components/select-option/maintenance-schedule.hbs +12 -0
- package/addon/components/select-option/maintenance-subject.hbs +12 -0
- package/addon/components/select-option/maintenance.hbs +12 -0
- package/addon/components/select-option/manifest-stop.hbs +12 -0
- package/addon/components/select-option/manifest.hbs +12 -0
- package/addon/components/select-option/order-config.hbs +12 -0
- package/addon/components/select-option/order.hbs +12 -0
- package/addon/components/select-option/part.hbs +12 -0
- package/addon/components/select-option/payload.hbs +12 -0
- package/addon/components/select-option/place.hbs +12 -0
- package/addon/components/select-option/position.hbs +12 -0
- package/addon/components/select-option/purchase-rate.hbs +12 -0
- package/addon/components/select-option/recurring-order-schedule.hbs +12 -0
- package/addon/components/select-option/route.hbs +12 -0
- package/addon/components/select-option/sensor.hbs +12 -0
- package/addon/components/select-option/service-area.hbs +12 -0
- package/addon/components/select-option/service-quote-item.hbs +12 -0
- package/addon/components/select-option/service-quote.hbs +12 -0
- package/addon/components/select-option/service-rate-fee.hbs +12 -0
- package/addon/components/select-option/service-rate-parcel-fee.hbs +12 -0
- package/addon/components/select-option/service-rate.hbs +12 -0
- package/addon/components/select-option/telematic.hbs +12 -0
- package/addon/components/select-option/trackable.hbs +8 -0
- package/addon/components/select-option/tracking-number.hbs +12 -0
- package/addon/components/select-option/tracking-status.hbs +12 -0
- package/addon/components/select-option/trailer.hbs +12 -0
- package/addon/components/select-option/vehicle-device.hbs +12 -0
- package/addon/components/select-option/vehicle.hbs +12 -0
- package/addon/components/select-option/vendor.hbs +12 -0
- package/addon/components/select-option/warranty.hbs +12 -0
- package/addon/components/select-option/waypoint.hbs +12 -0
- package/addon/components/select-option/work-order.hbs +12 -0
- package/addon/components/select-option/zone.hbs +12 -0
- package/addon/components/sensor/details.hbs +6 -2
- package/addon/components/sensor/form.hbs +6 -17
- package/addon/components/sensor/panel-header.hbs +1 -1
- package/addon/components/sensor/pill.hbs +24 -0
- package/addon/components/sensor/summary.hbs +1 -0
- package/addon/components/service-area/details.hbs +1 -20
- package/addon/components/service-area/pill.hbs +24 -0
- package/addon/components/service-area/summary.hbs +1 -0
- package/addon/components/service-quote/pill.hbs +24 -0
- package/addon/components/service-quote/summary.hbs +1 -0
- package/addon/components/service-quote-item/pill.hbs +24 -0
- package/addon/components/service-quote-item/summary.hbs +1 -0
- package/addon/components/service-rate/details.hbs +12 -6
- package/addon/components/service-rate/form.hbs +10 -8
- package/addon/components/service-rate/pill.hbs +24 -0
- package/addon/components/service-rate/summary.hbs +1 -0
- package/addon/components/service-rate-fee/pill.hbs +24 -0
- package/addon/components/service-rate-fee/summary.hbs +1 -0
- package/addon/components/service-rate-parcel-fee/pill.hbs +24 -0
- package/addon/components/service-rate-parcel-fee/summary.hbs +1 -0
- package/addon/components/table/cell/fleet-ops-option.hbs +20 -0
- package/addon/components/telematic/details.hbs +4 -1
- package/addon/components/telematic/details.js +1 -0
- package/addon/components/telematic/form.hbs +6 -1
- package/addon/components/telematic/form.js +1 -0
- package/addon/components/telematic/pill.hbs +24 -0
- package/addon/components/telematic/settings.hbs +6 -1
- package/addon/components/telematic/settings.js +1 -0
- package/addon/components/telematic/summary.hbs +1 -0
- package/addon/components/telematic/telemetry-status.hbs +43 -0
- package/addon/components/telematic/telemetry-status.js +95 -0
- package/addon/components/tracking-number/pill.hbs +24 -0
- package/addon/components/tracking-number/summary.hbs +1 -0
- package/addon/components/tracking-status/pill.hbs +24 -0
- package/addon/components/tracking-status/summary.hbs +1 -0
- package/addon/components/trailer/card.hbs +2 -5
- package/addon/components/trailer/details.hbs +11 -5
- package/addon/components/trailer/details.js +4 -0
- package/addon/components/trailer/form.hbs +6 -3
- package/addon/components/trailer/pill.hbs +24 -21
- package/addon/components/trailer/summary.hbs +1 -0
- package/addon/components/vehicle/card.hbs +4 -8
- package/addon/components/vehicle/details/inspections.hbs +49 -0
- package/addon/components/vehicle/details/inspections.js +44 -0
- package/addon/components/vehicle/details/maintenance-history.hbs +1 -1
- package/addon/components/vehicle/details/schedules.hbs +2 -2
- package/addon/components/vehicle/details/work-orders.hbs +1 -1
- package/addon/components/vehicle/details.hbs +18 -1
- package/addon/components/vehicle/form.hbs +2 -1
- package/addon/components/vehicle/panel-header.hbs +3 -4
- package/addon/components/vehicle/panel-header.js +8 -1
- package/addon/components/vehicle/pill.hbs +15 -24
- package/addon/components/vehicle/summary.hbs +1 -0
- package/addon/components/vehicle-device/pill.hbs +24 -0
- package/addon/components/vehicle-device/summary.hbs +1 -0
- package/addon/components/vendor/form.hbs +2 -4
- package/addon/components/vendor/personnel-manager.hbs +2 -9
- package/addon/components/vendor/personnel-tab.hbs +1 -0
- package/addon/components/vendor/personnel-tab.js +4 -0
- package/addon/components/vendor/pill.hbs +24 -0
- package/addon/components/vendor/summary.hbs +1 -0
- package/addon/components/warranty/details.hbs +3 -1
- package/addon/components/warranty/form.hbs +2 -1
- package/addon/components/warranty/pill.hbs +24 -0
- package/addon/components/warranty/summary.hbs +1 -0
- package/addon/components/waypoint/pill.hbs +24 -0
- package/addon/components/waypoint/summary.hbs +1 -0
- package/addon/components/widget/radar.hbs +28 -0
- package/addon/components/widget/radar.js +44 -0
- package/addon/components/work-order/details.hbs +20 -4
- package/addon/components/work-order/details.js +64 -1
- package/addon/components/work-order/form.hbs +20 -2
- package/addon/components/work-order/form.js +10 -10
- package/addon/components/work-order/panel-header.hbs +15 -13
- package/addon/components/work-order/pill.hbs +24 -0
- package/addon/components/work-order/summary.hbs +1 -0
- package/addon/components/zone/details.hbs +2 -21
- package/addon/components/zone/pill.hbs +24 -0
- package/addon/components/zone/summary.hbs +1 -0
- package/addon/controllers/connectivity/devices/index/details/sensors.js +4 -0
- package/addon/controllers/connectivity/devices/index/details.js +1 -18
- package/addon/controllers/connectivity/events/index.js +1 -4
- package/addon/controllers/connectivity/fuel-providers/details/index.js +6 -0
- package/addon/controllers/connectivity/fuel-providers/details/matching.js +13 -0
- package/addon/controllers/connectivity/fuel-providers/details/sync.js +21 -10
- package/addon/controllers/connectivity/fuel-providers/details/transactions.js +5 -16
- package/addon/controllers/connectivity/fuel-providers/details.js +76 -13
- package/addon/controllers/connectivity/fuel-providers/index.js +22 -17
- package/addon/controllers/connectivity/sensors/index.js +1 -3
- package/addon/controllers/connectivity/telematics/details/events.js +8 -0
- package/addon/controllers/connectivity/telematics/details/sensors.js +3 -2
- package/addon/controllers/connectivity/telematics/index.js +3 -1
- package/addon/controllers/maintenance/inspection-forms/index/details.js +29 -0
- package/addon/controllers/maintenance/inspection-forms/index/edit.js +39 -0
- package/addon/controllers/maintenance/inspection-forms/index/new.js +48 -0
- package/addon/controllers/maintenance/inspection-forms/index.js +90 -0
- package/addon/controllers/maintenance/inspection-submissions/index/details.js +53 -0
- package/addon/controllers/maintenance/inspection-submissions/index/edit.js +39 -0
- package/addon/controllers/maintenance/inspection-submissions/index/new.js +48 -0
- package/addon/controllers/maintenance/inspection-submissions/index.js +142 -0
- package/addon/controllers/maintenance/maintenances/index.js +6 -2
- package/addon/controllers/maintenance/schedules/index/details.js +4 -86
- package/addon/controllers/maintenance/schedules/index.js +15 -0
- package/addon/controllers/maintenance/work-orders/index.js +19 -1
- package/addon/controllers/management/contacts/customers.js +6 -4
- package/addon/controllers/management/contacts/index.js +6 -3
- package/addon/controllers/management/drivers/index/details.js +1 -66
- package/addon/controllers/management/drivers/index.js +9 -34
- package/addon/controllers/management/fleets/index/details.js +2 -15
- package/addon/controllers/management/fleets/index.js +12 -20
- package/addon/controllers/management/fuel-reports/index.js +9 -59
- package/addon/controllers/management/fuel-transactions/index/details.js +51 -48
- package/addon/controllers/management/fuel-transactions/index.js +32 -32
- package/addon/controllers/management/index.js +1367 -49
- package/addon/controllers/management/issues/index/details.js +1 -33
- package/addon/controllers/management/issues/index.js +10 -59
- package/addon/controllers/management/trailers/index/details.js +4 -78
- package/addon/controllers/management/trailers/index.js +20 -22
- package/addon/controllers/management/vehicles/index/details.js +9 -77
- package/addon/controllers/management/vehicles/index.js +50 -72
- package/addon/controllers/management/vendors/index.js +6 -3
- package/addon/controllers/operations/orders/index.js +38 -11
- package/addon/controllers/operations/service-rates/index.js +10 -2
- package/addon/controllers/settings/payments/index.js +11 -2
- package/addon/extension.js +36 -0
- package/addon/helpers/initials.js +6 -0
- package/addon/helpers/leaflet-tile-url.js +6 -1
- package/addon/instance-initializers/register-fleetops-resource-descriptors.js +29 -0
- package/addon/modifiers/inspection-flyout.js +237 -0
- package/addon/modifiers/radar-keyboard.js +78 -0
- package/addon/modifiers/sync-value.js +26 -0
- package/addon/modifiers/when-changed.js +25 -0
- package/addon/routes/connectivity/fuel-providers/details/settings.js +5 -2
- package/addon/routes/connectivity/fuel-providers/details/sync.js +6 -13
- package/addon/routes/connectivity/fuel-providers/details/transactions.js +8 -7
- package/addon/routes/connectivity/fuel-providers/details.js +15 -2
- package/addon/routes/connectivity/fuel-providers/edit.js +2 -1
- package/addon/routes/connectivity/fuel-providers/index.js +5 -0
- package/addon/routes/maintenance/inspection-forms/index/details/index.js +3 -0
- package/addon/routes/maintenance/inspection-forms/index/details/submissions.js +3 -0
- package/addon/routes/maintenance/inspection-forms/index/details.js +18 -0
- package/addon/routes/maintenance/inspection-forms/index/edit.js +18 -0
- package/addon/routes/maintenance/inspection-forms/index/new.js +3 -0
- package/addon/routes/maintenance/inspection-forms/index.js +22 -0
- package/addon/routes/maintenance/inspection-forms.js +3 -0
- package/addon/routes/maintenance/inspection-submissions/index/details/audit.js +8 -0
- package/addon/routes/maintenance/inspection-submissions/index/details/index.js +3 -0
- package/addon/routes/maintenance/inspection-submissions/index/details/photos.js +8 -0
- package/addon/routes/maintenance/inspection-submissions/index/details.js +18 -0
- package/addon/routes/maintenance/inspection-submissions/index/edit.js +18 -0
- package/addon/routes/maintenance/inspection-submissions/index/new.js +3 -0
- package/addon/routes/maintenance/inspection-submissions/index.js +25 -0
- package/addon/routes/maintenance/inspection-submissions.js +3 -0
- package/addon/routes/management/fuel-transactions/index/details.js +12 -2
- package/addon/routes/management/fuel-transactions/index.js +6 -0
- package/addon/routes/management/index.js +17 -1
- package/addon/routes/management/vehicles/index/details/inspections.js +3 -0
- package/addon/routes/management/vehicles/index.js +2 -2
- package/addon/routes.js +24 -0
- package/addon/services/contact-actions.js +22 -4
- package/addon/services/customer-actions.js +7 -4
- package/addon/services/device-actions.js +28 -0
- package/addon/services/driver-actions.js +79 -16
- package/addon/services/equipment-actions.js +15 -6
- package/addon/services/fleet-actions.js +20 -4
- package/addon/services/fuel-report-actions.js +7 -7
- package/addon/services/inspection-form-actions.js +236 -0
- package/addon/services/inspection-submission-actions.js +273 -0
- package/addon/services/issue-actions.js +58 -7
- package/addon/services/maintenance-actions.js +22 -3
- package/addon/services/maintenance-schedule-actions.js +70 -5
- package/addon/services/movement-tracker.js +52 -1
- package/addon/services/part-actions.js +13 -7
- package/addon/services/place-actions.js +8 -7
- package/addon/services/service-area-actions.js +27 -4
- package/addon/services/trailer-actions.js +60 -7
- package/addon/services/vehicle-actions.js +58 -3
- package/addon/services/vendor-actions.js +8 -7
- package/addon/services/work-order-actions.js +14 -5
- package/addon/services/zone-actions.js +27 -4
- package/addon/styles/fleetops-engine.css +3621 -75
- package/addon/templates/connectivity/devices/index/details/vehicle.hbs +2 -2
- package/addon/templates/connectivity/events/details.hbs +2 -2
- package/addon/templates/connectivity/fuel-providers/details/index.hbs +65 -35
- package/addon/templates/connectivity/fuel-providers/details/matching.hbs +2 -2
- package/addon/templates/connectivity/fuel-providers/details/sync.hbs +54 -43
- package/addon/templates/connectivity/fuel-providers/details/transactions.hbs +10 -5
- package/addon/templates/connectivity/fuel-providers/details.hbs +38 -13
- package/addon/templates/connectivity/fuel-providers/edit.hbs +1 -0
- package/addon/templates/connectivity/fuel-providers/index.hbs +2 -1
- package/addon/templates/connectivity/fuel-providers/new.hbs +1 -1
- package/addon/templates/connectivity/telematics/details/attachments.hbs +2 -1
- package/addon/templates/maintenance/inspection-forms/index/details/index.hbs +1 -0
- package/addon/templates/maintenance/inspection-forms/index/details/submissions.hbs +2 -0
- package/addon/templates/maintenance/inspection-forms/index/details.hbs +14 -0
- package/addon/templates/maintenance/inspection-forms/index/edit.hbs +11 -0
- package/addon/templates/maintenance/inspection-forms/index/new.hbs +11 -0
- package/addon/templates/maintenance/inspection-forms/index.hbs +28 -0
- package/addon/templates/maintenance/inspection-forms.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details/audit.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details/index.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details/photos.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details.hbs +14 -0
- package/addon/templates/maintenance/inspection-submissions/index/edit.hbs +11 -0
- package/addon/templates/maintenance/inspection-submissions/index/new.hbs +11 -0
- package/addon/templates/maintenance/inspection-submissions/index.hbs +28 -0
- package/addon/templates/maintenance/inspection-submissions.hbs +1 -0
- package/addon/templates/management/fuel-transactions/index/details.hbs +64 -62
- package/addon/templates/management/fuel-transactions/index.hbs +9 -31
- package/addon/templates/management/index.hbs +110 -102
- package/addon/templates/management/vehicles/index/details/inspections.hbs +2 -0
- package/addon/templates/operations/orders/index.hbs +2 -4
- package/addon/utils/context-panel.js +34 -0
- package/addon/utils/device-table-columns.js +18 -27
- package/addon/utils/fleet-ops-options.js +40 -0
- package/addon/utils/fuel-integration-format.js +43 -0
- package/addon/utils/fuel-transaction.js +115 -0
- package/addon/utils/identity-cell-resource.js +56 -0
- package/addon/utils/inspection-answers.js +283 -0
- package/addon/utils/inspection-field-types.js +74 -0
- package/addon/utils/inspection-form-structure.js +161 -0
- package/addon/utils/radar.js +212 -0
- package/addon/utils/relation-value.js +37 -0
- package/addon/utils/resource-descriptors/assets.js +246 -0
- package/addon/utils/resource-descriptors/connectivity.js +146 -0
- package/addon/utils/resource-descriptors/fuel.js +75 -0
- package/addon/utils/resource-descriptors/helpers.js +191 -0
- package/addon/utils/resource-descriptors/index.js +35 -0
- package/addon/utils/resource-descriptors/maintenance.js +175 -0
- package/addon/utils/resource-descriptors/operations.js +215 -0
- package/addon/utils/resource-descriptors/people.js +173 -0
- package/addon/utils/resource-descriptors/polymorphic.js +123 -0
- package/addon/utils/resource-descriptors/sub-records.js +297 -0
- package/addon/utils/telemetry-timestamp.js +6 -0
- package/app/components/asset/pill.js +1 -0
- package/app/components/asset/summary.js +1 -0
- package/app/components/asset-connection/pill.js +1 -0
- package/app/components/asset-connection/summary.js +1 -0
- package/app/components/attachable/pill.js +1 -0
- package/app/components/attachable/summary.js +1 -0
- package/app/components/cell/asset-connection-identity.js +1 -0
- package/app/components/cell/{attached-vehicle.js → asset-identity.js} +1 -1
- package/app/components/cell/attachable-identity.js +1 -0
- package/app/components/cell/{telematic-device.js → contact-identity.js} +1 -1
- package/app/components/cell/customer-identity.js +1 -0
- package/app/components/cell/device-event-identity.js +1 -0
- package/app/components/cell/entity-identity.js +1 -0
- package/app/components/cell/facilitator-identity.js +1 -0
- package/app/components/cell/fleet-driver-identity.js +1 -0
- package/app/components/cell/fleet-identity.js +1 -0
- package/app/components/cell/fuel-provider-connection-identity.js +1 -0
- package/app/components/cell/fuel-provider-transaction-identity.js +1 -0
- package/app/components/cell/fuel-report-identity.js +1 -0
- package/app/components/cell/inspection-form-identity.js +1 -0
- package/app/components/cell/inspection-item-result-identity.js +1 -0
- package/app/components/cell/inspection-submission-identity.js +1 -0
- package/app/components/cell/integrated-vendor-identity.js +1 -0
- package/app/components/cell/issue-identity.js +1 -0
- package/app/components/cell/maintenance-identity.js +1 -0
- package/app/components/cell/maintenance-schedule-identity.js +1 -0
- package/app/components/cell/maintenance-subject-identity.js +1 -0
- package/app/components/cell/manifest-identity.js +1 -0
- package/app/components/cell/manifest-stop-identity.js +1 -0
- package/app/components/cell/order-config-identity.js +1 -0
- package/app/components/cell/order-identity.js +1 -0
- package/app/components/cell/payload-identity.js +1 -0
- package/app/components/cell/place-identity.js +1 -0
- package/app/components/cell/position-identity.js +1 -0
- package/app/components/cell/purchase-rate-identity.js +1 -0
- package/app/components/cell/recurring-order-schedule-identity.js +1 -0
- package/app/components/cell/resource-list.js +1 -0
- package/app/components/cell/route-identity.js +1 -0
- package/app/components/cell/sensor-identity.js +1 -0
- package/app/components/cell/service-area-identity.js +1 -0
- package/app/components/cell/service-quote-identity.js +1 -0
- package/app/components/cell/service-quote-item-identity.js +1 -0
- package/app/components/cell/service-rate-fee-identity.js +1 -0
- package/app/components/cell/service-rate-identity.js +1 -0
- package/app/components/cell/service-rate-parcel-fee-identity.js +1 -0
- package/app/components/cell/{telematic-provider.js → telematic-identity.js} +1 -1
- package/app/components/cell/tracking-number-identity.js +1 -0
- package/app/components/cell/tracking-status-identity.js +1 -0
- package/app/components/cell/trailer-identity.js +1 -0
- package/app/components/cell/vehicle-device-identity.js +1 -0
- package/app/components/cell/vendor-identity.js +1 -0
- package/app/components/cell/warranty-identity.js +1 -0
- package/app/components/cell/waypoint-identity.js +1 -0
- package/app/components/cell/work-order-identity.js +1 -0
- package/app/components/cell/zone-identity.js +1 -0
- package/app/components/{cell/driver-name.js → contact/pill.js} +1 -1
- package/app/components/{cell/vehicle-name.js → contact/summary.js} +1 -1
- package/app/components/customer/pill.js +1 -0
- package/app/components/customer/summary.js +1 -0
- package/app/components/device/summary.js +1 -0
- package/app/components/device/telemetry.js +1 -0
- package/app/components/device-event/pill.js +1 -0
- package/app/components/device-event/summary.js +1 -0
- package/app/components/driver/summary.js +1 -0
- package/app/components/entity/pill.js +1 -0
- package/app/components/entity/summary.js +1 -0
- package/app/components/equipment/card.js +1 -0
- package/app/components/equipment/panel-header.js +1 -0
- package/app/components/equipment/summary.js +1 -0
- package/app/components/{filter/multi-model.js → facilitator/pill.js} +1 -1
- package/app/components/facilitator/summary.js +1 -0
- package/app/components/fleet/pill.js +1 -0
- package/app/components/fleet/summary.js +1 -0
- package/app/components/fleet-driver/pill.js +1 -0
- package/app/components/fleet-driver/summary.js +1 -0
- package/app/components/fuel-provider-connection/pill.js +1 -0
- package/app/components/fuel-provider-connection/summary.js +1 -0
- package/app/components/fuel-provider-transaction/pill.js +1 -0
- package/app/components/fuel-provider-transaction/summary.js +1 -0
- package/app/components/fuel-report/pill.js +1 -0
- package/app/components/fuel-report/summary.js +1 -0
- package/app/components/fuel-transaction-status.js +1 -0
- package/app/components/geofence-map.js +1 -0
- package/app/components/inspection-field/form.js +1 -0
- package/app/components/inspection-field/input.js +1 -0
- package/app/components/inspection-field/value.js +1 -0
- package/app/components/inspection-flyout.js +1 -0
- package/app/components/inspection-form/builder.js +1 -0
- package/app/components/inspection-form/details/submissions.js +1 -0
- package/app/components/inspection-form/details.js +1 -0
- package/app/components/inspection-form/form.js +1 -0
- package/app/components/inspection-form/pill.js +1 -0
- package/app/components/inspection-form/summary.js +1 -0
- package/app/components/inspection-item-result/pill.js +1 -0
- package/app/components/inspection-item-result/summary.js +1 -0
- package/app/components/inspection-link/list.js +1 -0
- package/app/components/inspection-sheet/group.js +1 -0
- package/app/components/inspection-sheet.js +1 -0
- package/app/components/inspection-submission/details.js +1 -0
- package/app/components/inspection-submission/form.js +1 -0
- package/app/components/inspection-submission/photos.js +1 -0
- package/app/components/inspection-submission/pill.js +1 -0
- package/app/components/inspection-submission/summary.js +1 -0
- package/app/components/integrated-vendor/pill.js +1 -0
- package/app/components/integrated-vendor/summary.js +1 -0
- package/app/components/issue/pill.js +1 -0
- package/app/components/issue/summary.js +1 -0
- package/app/components/issue/timeline.js +1 -0
- package/app/components/layout/fleet-ops-sidebar/operations-monitor.js +1 -0
- package/app/components/maintenance/pill.js +1 -0
- package/app/components/maintenance/summary.js +1 -0
- package/app/components/maintenance-schedule/pill.js +1 -0
- package/app/components/maintenance-schedule/summary.js +1 -0
- package/app/components/maintenance-schedule/work-orders.js +1 -0
- package/app/components/maintenance-subject/pill.js +1 -0
- package/app/components/maintenance-subject/summary.js +1 -0
- package/app/components/manifest/pill.js +1 -0
- package/app/components/manifest/summary.js +1 -0
- package/app/components/manifest-stop/pill.js +1 -0
- package/app/components/manifest-stop/summary.js +1 -0
- package/app/components/modals/fuel-connection-diagnostics.js +1 -0
- package/app/components/modals/fuel-transaction-action.js +1 -0
- package/app/components/modals/inspection-follow-up.js +1 -0
- package/app/components/modals/inspection-link.js +1 -0
- package/app/components/modals/radar-notice.js +1 -0
- package/app/components/modals/radar-save-view.js +1 -0
- package/app/components/modals/radar-select-resource.js +1 -0
- package/app/components/modals/radar-send-pin.js +1 -0
- package/app/components/order/summary.js +1 -0
- package/app/components/order-config/pill.js +1 -0
- package/app/components/order-config/summary.js +1 -0
- package/app/components/part/card.js +1 -0
- package/app/components/part/panel-header.js +1 -0
- package/app/components/part/pill.js +1 -0
- package/app/components/part/summary.js +1 -0
- package/app/components/payload/pill.js +1 -0
- package/app/components/payload/summary.js +1 -0
- package/app/components/place/pill.js +1 -0
- package/app/components/place/summary.js +1 -0
- package/app/components/position/pill.js +1 -0
- package/app/components/position/summary.js +1 -0
- package/app/components/public-inspection.js +1 -0
- package/app/components/purchase-rate/pill.js +1 -0
- package/app/components/purchase-rate/summary.js +1 -0
- package/app/components/radar/agenda/entry.js +1 -0
- package/app/components/radar/agenda/lane.js +1 -0
- package/app/components/radar/agenda.js +1 -0
- package/app/components/radar/briefing.js +1 -0
- package/app/components/radar/bulk-bar.js +1 -0
- package/app/components/radar/decision-card.js +1 -0
- package/app/components/radar/empty-state.js +1 -0
- package/app/components/radar/filter-pills.js +1 -0
- package/app/components/radar/handover-card.js +1 -0
- package/app/components/radar/header.js +1 -0
- package/app/components/radar/item-drawer.js +1 -0
- package/app/components/radar/item-list.js +1 -0
- package/app/components/radar/item-row.js +1 -0
- package/app/components/radar/keyboard-hints.js +1 -0
- package/app/components/radar/subject.js +1 -0
- package/app/components/radar/view-bar.js +1 -0
- package/app/components/recurring-order-schedule/pill.js +1 -0
- package/app/components/recurring-order-schedule/summary.js +1 -0
- package/app/components/resource-activity.js +1 -0
- package/app/components/route/pill.js +1 -0
- package/app/components/route/summary.js +1 -0
- package/app/components/select-option/asset-connection.js +1 -0
- package/app/components/select-option/asset.js +1 -0
- package/app/components/select-option/attachable.js +1 -0
- package/app/components/select-option/contact.js +1 -0
- package/app/components/select-option/customer.js +1 -0
- package/app/components/select-option/device-event.js +1 -0
- package/app/components/select-option/device.js +1 -0
- package/app/components/select-option/driver.js +1 -0
- package/app/components/select-option/entity.js +1 -0
- package/app/components/select-option/equipment.js +1 -0
- package/app/components/select-option/facilitator.js +1 -0
- package/app/components/select-option/fleet-driver.js +1 -0
- package/app/components/select-option/fleet.js +1 -0
- package/app/components/select-option/fuel-provider-connection.js +1 -0
- package/app/components/select-option/fuel-provider-transaction.js +1 -0
- package/app/components/select-option/fuel-report.js +1 -0
- package/app/components/select-option/inspection-form.js +1 -0
- package/app/components/select-option/inspection-item-result.js +1 -0
- package/app/components/select-option/inspection-submission.js +1 -0
- package/app/components/select-option/integrated-vendor.js +1 -0
- package/app/components/select-option/issue.js +1 -0
- package/app/components/select-option/maintenance-schedule.js +1 -0
- package/app/components/select-option/maintenance-subject.js +1 -0
- package/app/components/select-option/maintenance.js +1 -0
- package/app/components/select-option/manifest-stop.js +1 -0
- package/app/components/select-option/manifest.js +1 -0
- package/app/components/select-option/order-config.js +1 -0
- package/app/components/select-option/order.js +1 -0
- package/app/components/select-option/part.js +1 -0
- package/app/components/select-option/payload.js +1 -0
- package/app/components/select-option/place.js +1 -0
- package/app/components/select-option/position.js +1 -0
- package/app/components/select-option/purchase-rate.js +1 -0
- package/app/components/select-option/recurring-order-schedule.js +1 -0
- package/app/components/select-option/route.js +1 -0
- package/app/components/select-option/sensor.js +1 -0
- package/app/components/select-option/service-area.js +1 -0
- package/app/components/select-option/service-quote-item.js +1 -0
- package/app/components/select-option/service-quote.js +1 -0
- package/app/components/select-option/service-rate-fee.js +1 -0
- package/app/components/select-option/service-rate-parcel-fee.js +1 -0
- package/app/components/select-option/service-rate.js +1 -0
- package/app/components/select-option/telematic.js +1 -0
- package/app/components/select-option/trackable.js +1 -0
- package/app/components/select-option/tracking-number.js +1 -0
- package/app/components/select-option/tracking-status.js +1 -0
- package/app/components/select-option/trailer.js +1 -0
- package/app/components/select-option/vehicle-device.js +1 -0
- package/app/components/select-option/vehicle.js +1 -0
- package/app/components/select-option/vendor.js +1 -0
- package/app/components/select-option/warranty.js +1 -0
- package/app/components/select-option/waypoint.js +1 -0
- package/app/components/select-option/work-order.js +1 -0
- package/app/components/select-option/zone.js +1 -0
- package/app/components/sensor/pill.js +1 -0
- package/app/components/sensor/summary.js +1 -0
- package/app/components/service-area/pill.js +1 -0
- package/app/components/service-area/summary.js +1 -0
- package/app/components/service-quote/pill.js +1 -0
- package/app/components/service-quote/summary.js +1 -0
- package/app/components/service-quote-item/pill.js +1 -0
- package/app/components/service-quote-item/summary.js +1 -0
- package/app/components/service-rate/pill.js +1 -0
- package/app/components/service-rate/summary.js +1 -0
- package/app/components/service-rate-fee/pill.js +1 -0
- package/app/components/service-rate-fee/summary.js +1 -0
- package/app/components/service-rate-parcel-fee/pill.js +1 -0
- package/app/components/service-rate-parcel-fee/summary.js +1 -0
- package/app/components/table/cell/fleet-ops-option.js +1 -0
- package/app/components/telematic/pill.js +1 -0
- package/app/components/telematic/summary.js +1 -0
- package/app/components/telematic/telemetry-status.js +1 -0
- package/app/components/tracking-number/pill.js +1 -0
- package/app/components/tracking-number/summary.js +1 -0
- package/app/components/tracking-status/pill.js +1 -0
- package/app/components/tracking-status/summary.js +1 -0
- package/app/components/trailer/summary.js +1 -0
- package/app/components/vehicle/details/inspections.js +1 -0
- package/app/components/vehicle/summary.js +1 -0
- package/app/components/vehicle-device/pill.js +1 -0
- package/app/components/vehicle-device/summary.js +1 -0
- package/app/components/vendor/personnel-tab.js +1 -0
- package/app/components/vendor/pill.js +1 -0
- package/app/components/vendor/summary.js +1 -0
- package/app/components/warranty/pill.js +1 -0
- package/app/components/warranty/summary.js +1 -0
- package/app/components/waypoint/pill.js +1 -0
- package/app/components/waypoint/summary.js +1 -0
- package/app/components/widget/radar.js +1 -0
- package/app/components/work-order/panel-header.js +1 -0
- package/app/components/work-order/pill.js +1 -0
- package/app/components/work-order/summary.js +1 -0
- package/app/components/zone/pill.js +1 -0
- package/app/components/zone/summary.js +1 -0
- package/app/controllers/maintenance/inspection-forms/index/details.js +1 -0
- package/app/controllers/maintenance/inspection-forms/index/edit.js +1 -0
- package/app/controllers/maintenance/inspection-forms/index/new.js +1 -0
- package/app/controllers/maintenance/inspection-forms/index.js +1 -0
- package/app/controllers/maintenance/inspection-submissions/index/details.js +1 -0
- package/app/controllers/maintenance/inspection-submissions/index/edit.js +1 -0
- package/app/controllers/maintenance/inspection-submissions/index/new.js +1 -0
- package/app/controllers/maintenance/inspection-submissions/index.js +1 -0
- package/app/helpers/initials.js +1 -0
- package/app/modifiers/inspection-flyout.js +1 -0
- package/app/modifiers/radar-keyboard.js +1 -0
- package/app/modifiers/sync-value.js +1 -0
- package/app/modifiers/when-changed.js +1 -0
- package/app/routes/maintenance/inspection-forms/index/details/index.js +1 -0
- package/app/routes/maintenance/inspection-forms/index/details/submissions.js +1 -0
- package/app/routes/maintenance/inspection-forms/index/details.js +1 -0
- package/app/routes/maintenance/inspection-forms/index/edit.js +1 -0
- package/app/routes/maintenance/inspection-forms/index/new.js +1 -0
- package/app/routes/maintenance/inspection-forms/index.js +1 -0
- package/app/routes/maintenance/inspection-forms.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/details/audit.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/details/index.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/details/photos.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/details.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/edit.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index/new.js +1 -0
- package/app/routes/maintenance/inspection-submissions/index.js +1 -0
- package/app/routes/maintenance/inspection-submissions.js +1 -0
- package/app/routes/management/vehicles/index/details/inspections.js +1 -0
- package/app/services/inspection-form-actions.js +1 -0
- package/app/services/inspection-submission-actions.js +1 -0
- package/app/templates/maintenance/inspection-forms/index/details/index.js +1 -0
- package/app/templates/maintenance/inspection-forms/index/details/submissions.js +1 -0
- package/app/templates/maintenance/inspection-forms/index/details.js +1 -0
- package/app/templates/maintenance/inspection-forms/index/edit.js +1 -0
- package/app/templates/maintenance/inspection-forms/index/new.js +1 -0
- package/app/templates/maintenance/inspection-forms/index.js +1 -0
- package/app/templates/maintenance/inspection-forms.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/details/audit.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/details/index.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/details/photos.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/details.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/edit.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index/new.js +1 -0
- package/app/templates/maintenance/inspection-submissions/index.js +1 -0
- package/app/templates/maintenance/inspection-submissions.js +1 -0
- package/app/templates/management/vehicles/index/details/inspections.js +1 -0
- package/app/utils/inspection-field-types.js +2 -0
- package/app/utils/inspection-form-structure.js +1 -0
- package/app/utils/radar.js +1 -0
- package/composer.json +1 -1
- package/docs/AFAQY.md +91 -0
- package/docs/TELEMETRY_ARCHITECTURE.md +115 -0
- package/extension.json +1 -1
- package/package.json +3 -3
- package/scripts/coverage-summary.php +11 -0
- package/scripts/pest-bootstrap.php +1 -1
- package/server/config/afaqy.php +8 -0
- package/server/config/fuel-providers.php +28 -7
- package/server/config/telematics.php +8 -1
- package/server/config/telemetry.php +17 -0
- package/server/migrations/2026_09_09_000001_create_inspection_tables.php +152 -0
- package/server/migrations/2026_09_10_000001_convert_inspection_form_items_to_field_groups.php +44 -0
- package/server/migrations/2026_09_10_000002_add_token_to_inspection_links.php +39 -0
- package/server/migrations/2026_09_11_000001_add_assignee_and_pin_to_inspection_links.php +39 -0
- package/server/migrations/2026_09_15_000001_create_telematic_telemetry_tables.php +62 -0
- package/server/migrations/2026_09_15_000002_scope_fuel_transactions_to_connection.php +25 -0
- package/server/migrations/2026_09_16_000001_add_public_id_to_alerts_table.php +45 -0
- package/server/resources/views/mail/inspection-link-pin.blade.php +34 -0
- package/server/src/Auth/Schemas/FleetOps.php +12 -0
- package/server/src/Console/Commands/DrainTelematicInbox.php +82 -0
- package/server/src/Console/Commands/ProcessMaintenanceTriggers.php +4 -1
- package/server/src/Console/Commands/SyncTelematics.php +32 -2
- package/server/src/Contracts/TelemetryProviderInterface.php +27 -0
- package/server/src/Events/DeviceTelemetryUpdated.php +37 -0
- package/server/src/Events/VehicleLocationChanged.php +8 -4
- package/server/src/Exports/InspectionExport.php +125 -0
- package/server/src/Http/Controllers/Api/v1/GeofenceController.php +1 -1
- package/server/src/Http/Controllers/Api/v1/InspectionController.php +300 -0
- package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +40 -8
- package/server/src/Http/Controllers/Internal/v1/HubController.php +36 -11
- package/server/src/Http/Controllers/Internal/v1/InspectionFormController.php +326 -0
- package/server/src/Http/Controllers/Internal/v1/InspectionSubmissionController.php +229 -0
- package/server/src/Http/Controllers/Internal/v1/RadarController.php +1117 -0
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +67 -0
- package/server/src/Http/Controllers/Public/PublicInspectionController.php +243 -0
- package/server/src/Http/Controllers/TelematicPositionWebhookController.php +60 -0
- package/server/src/Http/Controllers/TelematicWebhookController.php +3 -0
- package/server/src/Http/Filter/FuelProviderConnectionFilter.php +1 -1
- package/server/src/Http/Middleware/ForceJsonResponse.php +25 -0
- package/server/src/Http/Resources/v1/InspectionForm.php +153 -0
- package/server/src/Http/Resources/v1/InspectionItemResult.php +77 -0
- package/server/src/Http/Resources/v1/InspectionLink.php +84 -0
- package/server/src/Http/Resources/v1/InspectionSubmission.php +173 -0
- package/server/src/Jobs/PollTelematicTelemetry.php +118 -0
- package/server/src/Jobs/ProcessTelematicDelivery.php +122 -0
- package/server/src/Jobs/SyncFuelProviderTransactionsJob.php +21 -4
- package/server/src/Mail/InspectionLinkPinMail.php +57 -0
- package/server/src/Models/Driver.php +8 -2
- package/server/src/Models/FuelProviderTransaction.php +1 -0
- package/server/src/Models/InspectionForm.php +240 -0
- package/server/src/Models/InspectionItemResult.php +90 -0
- package/server/src/Models/InspectionLink.php +284 -0
- package/server/src/Models/InspectionSubmission.php +440 -0
- package/server/src/Models/Part.php +9 -2
- package/server/src/Models/WorkOrder.php +3 -0
- package/server/src/Observers/WorkOrderObserver.php +1 -1
- package/server/src/Providers/FleetOpsServiceProvider.php +9 -0
- package/server/src/Rules/Base64OrUrl.php +54 -0
- package/server/src/Support/FuelProviders/FuelProviderService.php +64 -27
- package/server/src/Support/FuelProviders/Providers/PetroAppFuelProvider.php +81 -15
- package/server/src/Support/InspectionFileStore.php +268 -0
- package/server/src/Support/InspectionFormSync.php +231 -0
- package/server/src/Support/InspectionLinkPin.php +150 -0
- package/server/src/Support/InspectionSubmitter.php +297 -0
- package/server/src/Support/Radar/RadarAgenda.php +375 -0
- package/server/src/Support/Radar/RadarBriefing.php +504 -0
- package/server/src/Support/Radar/RadarItemState.php +435 -0
- package/server/src/Support/Radar/RadarRules.php +1424 -0
- package/server/src/Support/Reporting/FleetOpsReportSchema.php +178 -0
- package/server/src/Support/Telematics/Afaqy/Payload.php +49 -0
- package/server/src/Support/Telematics/Providers/AfaqyProvider.php +179 -61
- package/server/src/Support/Telematics/TelematicService.php +37 -6
- package/server/src/Support/Telematics/Telemetry/Configuration.php +30 -0
- package/server/src/Support/Telematics/Telemetry/Inbox.php +61 -0
- package/server/src/Support/Telematics/Telemetry/Ingestor.php +112 -0
- package/server/src/Support/Telematics/Telemetry/Queue.php +28 -0
- package/server/src/Support/Telematics/Telemetry/Sample.php +54 -0
- package/server/src/routes.php +76 -0
- package/server/tests/ApiManifestControllerContractsTest.php +9 -9
- package/server/tests/ControllerFilterContractsTest.php +1 -1
- package/server/tests/EventContractsTest.php +2 -1
- package/server/tests/Feature/Http/AfaqyRealtimeIngestionTest.php +792 -0
- package/server/tests/Feature/Http/Api/GeofenceControllerContractsTest.php +4 -4
- package/server/tests/Feature/Http/Api/TrailerControllerLifecycleTest.php +1 -1
- package/server/tests/Feature/Http/Internal/DriverControllerCreateRecordTest.php +1 -1
- package/server/tests/Feature/Http/Internal/DriverControllerExistingUserAdoptionTest.php +1 -1
- package/server/tests/Feature/Http/Internal/HubControllerTest.php +28 -2
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +1 -1
- package/server/tests/Feature/Http/Internal/RadarControllerDatabaseTest.php +415 -0
- package/server/tests/Feature/Http/Internal/RadarControllerTest.php +594 -0
- package/server/tests/FuelProviderConnectionControllerContractsTest.php +83 -3
- package/server/tests/FuelProviderImplementationTest.php +10 -2
- package/server/tests/HubAndGettingStartedContractsTest.php +26 -3
- package/server/tests/InspectionControllerContractsTest.php +1329 -0
- package/server/tests/InspectionFieldContractsTest.php +1019 -0
- package/server/tests/InspectionModelContractsTest.php +728 -0
- package/server/tests/InspectionSubmitterRulesTest.php +47 -0
- package/server/tests/ObserverContractsTest.php +1 -1
- package/server/tests/QueueJobContractsTest.php +3 -4
- package/server/tests/RadarRoutesTest.php +35 -0
- package/server/tests/ReportSchemaContractsTest.php +15 -1
- package/server/tests/RouteRegistrationExecutionTest.php +109 -18
- package/server/tests/Support/AfaqyTestCrypto.php +27 -0
- package/server/tests/Support/ExampleTelemetryProvider.php +82 -0
- package/server/tests/Support/TelemetryTestEnvironment.php +53 -0
- package/server/tests/TelematicsHardeningTest.php +17 -17
- package/server/tests/TrailerSupportCoverageTest.php +1 -1
- package/server/tests/Unit/Http/Resources/ManifestResourceTest.php +3 -3
- package/server/tests/Unit/Support/FuelProviderServiceMatchingTest.php +127 -0
- package/server/tests/Unit/Support/PetroAppFuelProviderTest.php +126 -1
- package/server/tests/Unit/Support/RadarAgendaTest.php +200 -0
- package/server/tests/Unit/Support/RadarBriefingTest.php +214 -0
- package/server/tests/Unit/Support/RadarItemStateTest.php +260 -0
- package/server/tests/Unit/Support/RadarRulesTest.php +523 -0
- package/server/tests/Unit/Support/Telematics/Providers/AfaqyProviderTest.php +9 -1
- package/server/tests/Unit/Support/Telematics/Providers/AfaqyProviderTransportTest.php +8 -0
- package/server/tests/Unit/Support/Telematics/Providers/AfaqyRealtimeContractTest.php +188 -0
- package/server/tests/Unit/Support/Telematics/TelematicServiceTelemetryTest.php +1 -0
- package/translations/ar-ae.yml +3 -1
- package/translations/bg-bg.yaml +3 -1
- package/translations/en-us.yaml +738 -15
- package/translations/es-pa.yaml +3 -1
- package/translations/fr-fr.yaml +3 -1
- package/translations/mn-mn.yaml +3 -1
- package/translations/pt-br.yaml +3 -1
- package/translations/ru-ru.yaml +3 -1
- package/translations/vi-vn.yaml +3 -1
- package/addon/components/cell/attached-vehicle.hbs +0 -10
- package/addon/components/cell/attached-vehicle.js +0 -58
- package/addon/components/cell/device-identity.js +0 -129
- package/addon/components/cell/driver-identity.js +0 -143
- package/addon/components/cell/driver-name.hbs +0 -26
- package/addon/components/cell/driver-name.js +0 -30
- package/addon/components/cell/equipment-identity.js +0 -48
- package/addon/components/cell/part-identity.js +0 -63
- package/addon/components/cell/telematic-device.hbs +0 -38
- package/addon/components/cell/telematic-device.js +0 -44
- package/addon/components/cell/telematic-provider.hbs +0 -33
- package/addon/components/cell/telematic-provider.js +0 -78
- package/addon/components/cell/vehicle-identity.js +0 -138
- package/addon/components/cell/vehicle-name.hbs +0 -23
- package/addon/components/cell/vehicle-name.js +0 -3
- package/addon/components/device/pill.js +0 -3
- package/addon/components/driver/pill.js +0 -7
- package/addon/components/equipment/pill.js +0 -3
- package/addon/components/filter/multi-model.hbs +0 -19
- package/addon/components/filter/multi-model.js +0 -90
- package/addon/components/order/pill.js +0 -3
- package/addon/components/trailer/pill.js +0 -3
- package/addon/components/vehicle/pill.js +0 -7
- package/addon/templates/connectivity/fuel-providers/details/settings.hbs +0 -11
|
@@ -280,18 +280,6 @@ body[data-theme='dark'] .fleetops-connectivity-kpi-accent-rose .fleetops-connect
|
|
|
280
280
|
right: 0.65rem;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
.status-badge.long-offline-status-badge > span,
|
|
284
|
-
.status-badge.long_offline-status-badge > span {
|
|
285
|
-
background-color: #854d0e;
|
|
286
|
-
border-color: #a16207;
|
|
287
|
-
color: #fef9c3;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.status-badge.long-offline-status-badge > span svg,
|
|
291
|
-
.status-badge.long_offline-status-badge > span svg {
|
|
292
|
-
color: #fde047;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
283
|
.fleetops-device-status-badge.status-badge > span {
|
|
296
284
|
padding: 0 0.25rem !important;
|
|
297
285
|
border-radius: 0.125rem !important;
|
|
@@ -4780,7 +4768,9 @@ body[data-theme='dark'] .order-pool-card.selected,
|
|
|
4780
4768
|
background: #263040 !important;
|
|
4781
4769
|
}
|
|
4782
4770
|
|
|
4783
|
-
/* ── Driver card ──
|
|
4771
|
+
/* ── Driver card ──
|
|
4772
|
+
The hover colours were written for the dark orchestrator workbench; the
|
|
4773
|
+
drivers index card shares the class, so light mode gets its own pair. */
|
|
4784
4774
|
.driver-card {
|
|
4785
4775
|
cursor: pointer;
|
|
4786
4776
|
transition:
|
|
@@ -4789,6 +4779,12 @@ body[data-theme='dark'] .order-pool-card.selected,
|
|
|
4789
4779
|
}
|
|
4790
4780
|
|
|
4791
4781
|
.driver-card:hover {
|
|
4782
|
+
background: #f3f4f6; /* gray-100 */
|
|
4783
|
+
border-color: #d1d5db; /* gray-300 */
|
|
4784
|
+
}
|
|
4785
|
+
|
|
4786
|
+
body[data-theme='dark'] .driver-card:hover,
|
|
4787
|
+
.dark .driver-card:hover {
|
|
4792
4788
|
background: #263040;
|
|
4793
4789
|
border-color: #4b5563;
|
|
4794
4790
|
}
|
|
@@ -8535,41 +8531,272 @@ body[data-theme='dark'] .fleetbase-ai-create-order-preview__cancelled {
|
|
|
8535
8531
|
}
|
|
8536
8532
|
}
|
|
8537
8533
|
|
|
8538
|
-
/* ──
|
|
8539
|
-
|
|
8540
|
-
|
|
8541
|
-
|
|
8542
|
-
|
|
8543
|
-
|
|
8544
|
-
|
|
8545
|
-
|
|
8546
|
-
color: #
|
|
8534
|
+
/* ── The follow-up an inspection raises ──
|
|
8535
|
+
What an action will do, previewed before it happens, and what it made,
|
|
8536
|
+
shown afterwards as something you can open rather than a bare id. */
|
|
8537
|
+
.inspection-follow-up__heading {
|
|
8538
|
+
font-size: 0.75rem;
|
|
8539
|
+
font-weight: 600;
|
|
8540
|
+
text-transform: uppercase;
|
|
8541
|
+
letter-spacing: 0.06em;
|
|
8542
|
+
color: #6b7280;
|
|
8543
|
+
margin-bottom: 0.375rem;
|
|
8547
8544
|
}
|
|
8548
8545
|
|
|
8549
|
-
.
|
|
8550
|
-
|
|
8551
|
-
|
|
8546
|
+
.inspection-follow-up__list {
|
|
8547
|
+
display: flex;
|
|
8548
|
+
flex-direction: column;
|
|
8549
|
+
gap: 0.25rem;
|
|
8550
|
+
margin: 0;
|
|
8551
|
+
padding: 0;
|
|
8552
|
+
list-style: none;
|
|
8553
|
+
}
|
|
8554
|
+
|
|
8555
|
+
.inspection-follow-up__item {
|
|
8556
|
+
display: flex;
|
|
8557
|
+
align-items: center;
|
|
8558
|
+
gap: 0.5rem;
|
|
8559
|
+
border: 1px solid #e5e7eb;
|
|
8560
|
+
border-radius: 0.375rem;
|
|
8561
|
+
background-color: #f9fafb;
|
|
8562
|
+
padding: 0.375rem 0.5rem;
|
|
8563
|
+
}
|
|
8564
|
+
|
|
8565
|
+
.inspection-follow-up__label {
|
|
8566
|
+
flex: 1 1 auto;
|
|
8567
|
+
min-width: 0;
|
|
8568
|
+
font-size: 0.8125rem;
|
|
8569
|
+
font-weight: 500;
|
|
8570
|
+
}
|
|
8571
|
+
|
|
8572
|
+
.inspection-follow-up__note,
|
|
8573
|
+
.inspection-follow-up__empty {
|
|
8574
|
+
font-size: 0.75rem;
|
|
8575
|
+
color: #6b7280;
|
|
8552
8576
|
}
|
|
8553
8577
|
|
|
8554
|
-
.
|
|
8555
|
-
|
|
8578
|
+
.inspection-follow-up__empty {
|
|
8579
|
+
border: 1px dashed #e5e7eb;
|
|
8580
|
+
border-radius: 0.375rem;
|
|
8581
|
+
padding: 0.625rem 0.75rem;
|
|
8582
|
+
}
|
|
8583
|
+
|
|
8584
|
+
body[data-theme='dark'] .inspection-follow-up__item {
|
|
8585
|
+
border-color: #374151;
|
|
8556
8586
|
background-color: #1f2937;
|
|
8587
|
+
}
|
|
8588
|
+
|
|
8589
|
+
body[data-theme='dark'] .inspection-follow-up__empty {
|
|
8557
8590
|
border-color: #374151;
|
|
8558
|
-
color: #f3f4f6;
|
|
8559
8591
|
}
|
|
8560
8592
|
|
|
8561
|
-
|
|
8562
|
-
|
|
8563
|
-
|
|
8593
|
+
body[data-theme='dark'] .inspection-follow-up__heading,
|
|
8594
|
+
body[data-theme='dark'] .inspection-follow-up__note,
|
|
8595
|
+
body[data-theme='dark'] .inspection-follow-up__empty {
|
|
8596
|
+
color: #9ca3af;
|
|
8597
|
+
}
|
|
8598
|
+
|
|
8599
|
+
/* The record's own follow-ups: a row that opens what it names. */
|
|
8600
|
+
.inspection-followup {
|
|
8601
|
+
display: flex;
|
|
8602
|
+
flex-direction: column;
|
|
8603
|
+
gap: 0.25rem;
|
|
8604
|
+
width: 100%;
|
|
8605
|
+
border: 1px solid #e5e7eb;
|
|
8606
|
+
border-radius: 0.5rem;
|
|
8607
|
+
background-color: #f9fafb;
|
|
8608
|
+
padding: 0.625rem 0.75rem;
|
|
8609
|
+
text-align: left;
|
|
8610
|
+
cursor: pointer;
|
|
8611
|
+
}
|
|
8612
|
+
|
|
8613
|
+
.inspection-followup:hover {
|
|
8614
|
+
border-color: #9ca3af;
|
|
8615
|
+
}
|
|
8616
|
+
|
|
8617
|
+
.inspection-followup__head {
|
|
8618
|
+
display: flex;
|
|
8619
|
+
align-items: center;
|
|
8620
|
+
gap: 0.5rem;
|
|
8621
|
+
}
|
|
8622
|
+
|
|
8623
|
+
.inspection-followup__kind {
|
|
8624
|
+
font-size: 0.625rem;
|
|
8625
|
+
font-weight: 700;
|
|
8626
|
+
text-transform: uppercase;
|
|
8627
|
+
letter-spacing: 0.06em;
|
|
8628
|
+
color: #6b7280;
|
|
8629
|
+
}
|
|
8630
|
+
|
|
8631
|
+
.inspection-followup__id {
|
|
8632
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
8633
|
+
font-size: 0.6875rem;
|
|
8634
|
+
color: #6b7280;
|
|
8635
|
+
}
|
|
8636
|
+
|
|
8637
|
+
.inspection-followup__open {
|
|
8638
|
+
margin-left: auto;
|
|
8639
|
+
font-size: 0.6875rem;
|
|
8640
|
+
color: #9ca3af;
|
|
8641
|
+
}
|
|
8642
|
+
|
|
8643
|
+
.inspection-followup__title {
|
|
8644
|
+
font-size: 0.8125rem;
|
|
8645
|
+
font-weight: 600;
|
|
8646
|
+
color: #111827;
|
|
8647
|
+
}
|
|
8648
|
+
|
|
8649
|
+
.inspection-followup__meta {
|
|
8650
|
+
display: flex;
|
|
8651
|
+
flex-wrap: wrap;
|
|
8652
|
+
align-items: center;
|
|
8653
|
+
gap: 0.375rem;
|
|
8654
|
+
}
|
|
8655
|
+
|
|
8656
|
+
.inspection-followup__type {
|
|
8657
|
+
font-size: 0.6875rem;
|
|
8658
|
+
color: #6b7280;
|
|
8659
|
+
}
|
|
8660
|
+
|
|
8661
|
+
body[data-theme='dark'] .inspection-followup {
|
|
8662
|
+
border-color: #374151;
|
|
8663
|
+
background-color: #1f2937;
|
|
8664
|
+
}
|
|
8665
|
+
|
|
8666
|
+
body[data-theme='dark'] .inspection-followup:hover {
|
|
8667
|
+
border-color: #6b7280;
|
|
8668
|
+
}
|
|
8669
|
+
|
|
8670
|
+
body[data-theme='dark'] .inspection-followup__title {
|
|
8671
|
+
color: #f9fafb;
|
|
8672
|
+
}
|
|
8673
|
+
|
|
8674
|
+
/* ── A link out of a details panel to the record it names ──
|
|
8675
|
+
The form name was a bare button with no styling and a full-size icon
|
|
8676
|
+
sitting apart from it; it did not read as a link at all. */
|
|
8677
|
+
.field-info-container > .inspection-record__link,
|
|
8678
|
+
.inspection-record__link {
|
|
8679
|
+
display: inline-flex;
|
|
8680
|
+
align-items: center;
|
|
8681
|
+
gap: 0.375rem;
|
|
8682
|
+
color: #3b82f6;
|
|
8683
|
+
cursor: pointer;
|
|
8684
|
+
text-align: left;
|
|
8685
|
+
background: none;
|
|
8686
|
+
border: 0;
|
|
8687
|
+
padding: 0;
|
|
8688
|
+
}
|
|
8689
|
+
|
|
8690
|
+
.field-info-container > .inspection-record__link:hover,
|
|
8691
|
+
.inspection-record__link:hover {
|
|
8692
|
+
color: #2563eb;
|
|
8693
|
+
text-decoration: underline;
|
|
8694
|
+
}
|
|
8695
|
+
|
|
8696
|
+
.inspection-record__link-icon {
|
|
8697
|
+
flex-shrink: 0;
|
|
8698
|
+
opacity: 0.75;
|
|
8699
|
+
}
|
|
8700
|
+
|
|
8701
|
+
body[data-theme='dark'] .field-info-container > .inspection-record__link,
|
|
8702
|
+
body[data-theme='dark'] .inspection-record__link {
|
|
8703
|
+
color: #60a5fa;
|
|
8704
|
+
}
|
|
8705
|
+
|
|
8706
|
+
body[data-theme='dark'] .field-info-container > .inspection-record__link:hover,
|
|
8707
|
+
body[data-theme='dark'] .inspection-record__link:hover {
|
|
8708
|
+
color: #93c5fd;
|
|
8709
|
+
}
|
|
8710
|
+
|
|
8711
|
+
/* ── A vehicle's inspection history ──
|
|
8712
|
+
A table could not survive the overlay's width: six columns squeezed into
|
|
8713
|
+
a 580px panel wrapped the form name onto three lines and pushed the date
|
|
8714
|
+
off the edge behind a scrollbar. One block per inspection instead. */
|
|
8715
|
+
.inspection-history {
|
|
8716
|
+
display: flex;
|
|
8717
|
+
flex-direction: column;
|
|
8718
|
+
gap: 0.5rem;
|
|
8719
|
+
}
|
|
8720
|
+
|
|
8721
|
+
.inspection-history__card {
|
|
8722
|
+
display: flex;
|
|
8723
|
+
flex-direction: column;
|
|
8724
|
+
gap: 0.375rem;
|
|
8725
|
+
width: 100%;
|
|
8726
|
+
border: 1px solid #e5e7eb;
|
|
8727
|
+
border-radius: 0.5rem;
|
|
8728
|
+
background-color: #f9fafb;
|
|
8729
|
+
padding: 0.75rem;
|
|
8730
|
+
text-align: left;
|
|
8731
|
+
cursor: pointer;
|
|
8732
|
+
}
|
|
8733
|
+
|
|
8734
|
+
.inspection-history__card:hover {
|
|
8735
|
+
border-color: #9ca3af;
|
|
8736
|
+
}
|
|
8737
|
+
|
|
8738
|
+
.inspection-history__head {
|
|
8739
|
+
display: flex;
|
|
8740
|
+
flex-wrap: wrap;
|
|
8741
|
+
align-items: center;
|
|
8742
|
+
gap: 0.375rem;
|
|
8743
|
+
}
|
|
8744
|
+
|
|
8745
|
+
.inspection-history__form {
|
|
8746
|
+
flex: 1 1 auto;
|
|
8747
|
+
min-width: 0;
|
|
8748
|
+
font-size: 0.8125rem;
|
|
8749
|
+
font-weight: 600;
|
|
8750
|
+
color: #111827;
|
|
8751
|
+
}
|
|
8752
|
+
|
|
8753
|
+
.inspection-history__meta {
|
|
8754
|
+
display: flex;
|
|
8755
|
+
flex-wrap: wrap;
|
|
8756
|
+
align-items: center;
|
|
8757
|
+
gap: 0.75rem;
|
|
8758
|
+
font-size: 0.6875rem;
|
|
8759
|
+
color: #6b7280;
|
|
8760
|
+
}
|
|
8761
|
+
|
|
8762
|
+
.inspection-history__meta > span {
|
|
8763
|
+
display: inline-flex;
|
|
8764
|
+
align-items: center;
|
|
8765
|
+
gap: 0.25rem;
|
|
8766
|
+
}
|
|
8767
|
+
|
|
8768
|
+
.inspection-history__meta-icon {
|
|
8769
|
+
opacity: 0.7;
|
|
8770
|
+
}
|
|
8771
|
+
|
|
8772
|
+
.inspection-history__failed {
|
|
8773
|
+
color: #b91c1c;
|
|
8774
|
+
font-weight: 500;
|
|
8775
|
+
}
|
|
8776
|
+
|
|
8777
|
+
.inspection-history__id {
|
|
8778
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
8779
|
+
font-size: 0.625rem;
|
|
8780
|
+
color: #9ca3af;
|
|
8781
|
+
overflow: hidden;
|
|
8782
|
+
text-overflow: ellipsis;
|
|
8783
|
+
white-space: nowrap;
|
|
8784
|
+
}
|
|
8785
|
+
|
|
8786
|
+
body[data-theme='dark'] .inspection-history__card {
|
|
8787
|
+
border-color: #374151;
|
|
8788
|
+
background-color: #1f2937;
|
|
8564
8789
|
}
|
|
8565
8790
|
|
|
8566
|
-
|
|
8567
|
-
|
|
8568
|
-
border-color: #b91c1c;
|
|
8569
|
-
color: #fee2e2;
|
|
8791
|
+
body[data-theme='dark'] .inspection-history__card:hover {
|
|
8792
|
+
border-color: #6b7280;
|
|
8570
8793
|
}
|
|
8571
8794
|
|
|
8572
|
-
|
|
8795
|
+
body[data-theme='dark'] .inspection-history__form {
|
|
8796
|
+
color: #f9fafb;
|
|
8797
|
+
}
|
|
8798
|
+
|
|
8799
|
+
body[data-theme='dark'] .inspection-history__failed {
|
|
8573
8800
|
color: #fca5a5;
|
|
8574
8801
|
}
|
|
8575
8802
|
|
|
@@ -8821,65 +9048,3384 @@ body[data-theme='dark'] .fleetops-card-meta-link {
|
|
|
8821
9048
|
color: #60a5fa;
|
|
8822
9049
|
}
|
|
8823
9050
|
|
|
8824
|
-
/*
|
|
8825
|
-
|
|
9051
|
+
/* ==========================================================================
|
|
9052
|
+
Inspection sheet — "Promotion"
|
|
9053
|
+
--------------------------------------------------------------------------
|
|
9054
|
+
The author's grid survives, but only for fields that stay compact. The
|
|
9055
|
+
moment a field needs room — a pass-fail that failed and now owes a
|
|
9056
|
+
severity, a comment and photos, or a note, upload or signature that never
|
|
9057
|
+
fitted a column — it is promoted out of the grid into a full-width band at
|
|
9058
|
+
the end of its group. Nothing stretches its neighbour, because after
|
|
9059
|
+
promotion it has no neighbour.
|
|
9060
|
+
|
|
9061
|
+
Each group header carries one dot per field, so an inspector can see at a
|
|
9062
|
+
glance what is still open without reading a label.
|
|
9063
|
+
|
|
9064
|
+
Rendered identically by the console's submission form, the read-only
|
|
9065
|
+
record, and the public link a driver opens on a phone.
|
|
9066
|
+
========================================================================== */
|
|
9067
|
+
|
|
9068
|
+
.inspection-sheet,
|
|
9069
|
+
.inspection-flyout {
|
|
9070
|
+
--ins-bg: #fff;
|
|
9071
|
+
--ins-bg-sunken: #f9fafb;
|
|
9072
|
+
--ins-border: #e5e7eb;
|
|
9073
|
+
--ins-border-strong: #d1d5db;
|
|
9074
|
+
--ins-text: #111827;
|
|
9075
|
+
--ins-text-soft: #374151;
|
|
9076
|
+
--ins-text-muted: #6b7280;
|
|
9077
|
+
--ins-text-faint: #9ca3af;
|
|
9078
|
+
--ins-pass: #16a34a;
|
|
9079
|
+
--ins-pass-text: #15803d;
|
|
9080
|
+
--ins-pass-edge: #bbf7d0;
|
|
9081
|
+
--ins-pass-fill: #f0fdf4;
|
|
9082
|
+
--ins-fail: #dc2626;
|
|
9083
|
+
--ins-fail-text: #b91c1c;
|
|
9084
|
+
--ins-fail-edge: #fecaca;
|
|
9085
|
+
--ins-fail-fill: #fef2f2;
|
|
9086
|
+
--ins-fail-fill-strong: #fee2e2;
|
|
9087
|
+
--ins-fail-field: #fff;
|
|
9088
|
+
--ins-fail-placeholder: #f87171;
|
|
9089
|
+
--ins-fail-ring: rgb(220 38 38 / 22%);
|
|
9090
|
+
--ins-fail-hatch-a: #fecaca;
|
|
9091
|
+
--ins-fail-hatch-b: #fee2e2;
|
|
9092
|
+
--ins-na: #6b7280;
|
|
9093
|
+
--ins-warn: #d97706;
|
|
9094
|
+
--ins-warn-text: #92400e;
|
|
9095
|
+
--ins-warn-strong: #b45309;
|
|
9096
|
+
--ins-hatch-a: #e5e7eb;
|
|
9097
|
+
--ins-hatch-b: #f3f4f6;
|
|
9098
|
+
--ins-mono: ui-monospace, 'IBM Plex Mono', sfmono-regular, menlo, monaco, consolas, monospace;
|
|
9099
|
+
}
|
|
9100
|
+
|
|
9101
|
+
.inspection-sheet {
|
|
9102
|
+
/* The floating flyouts are positioned against the sheet. */
|
|
8826
9103
|
position: relative;
|
|
9104
|
+
display: flex;
|
|
9105
|
+
flex-direction: column;
|
|
9106
|
+
|
|
9107
|
+
/*
|
|
9108
|
+
* The sheet is measured, not the window. It renders in a ~600px overlay
|
|
9109
|
+
* panel on a wide screen and full width on a phone, so a viewport media
|
|
9110
|
+
* query would collapse the author's columns in exactly the wrong places.
|
|
9111
|
+
*/
|
|
9112
|
+
container-type: inline-size;
|
|
9113
|
+
}
|
|
9114
|
+
|
|
9115
|
+
body[data-theme='dark'] .inspection-sheet,
|
|
9116
|
+
body[data-theme='dark'] .inspection-flyout {
|
|
9117
|
+
--ins-bg: #1f2937;
|
|
9118
|
+
--ins-bg-sunken: #1f2937;
|
|
9119
|
+
--ins-border: #374151;
|
|
9120
|
+
--ins-border-strong: #4b5563;
|
|
9121
|
+
--ins-text: #f9fafb;
|
|
9122
|
+
--ins-text-soft: #e5e7eb;
|
|
9123
|
+
--ins-text-muted: #9ca3af;
|
|
9124
|
+
--ins-text-faint: #6b7280;
|
|
9125
|
+
--ins-pass: #16a34a;
|
|
9126
|
+
--ins-pass-text: #86efac;
|
|
9127
|
+
--ins-pass-edge: #2f5a3c;
|
|
9128
|
+
--ins-pass-fill: #1c2e22;
|
|
9129
|
+
--ins-fail: #dc2626;
|
|
9130
|
+
--ins-fail-text: #fca5a5;
|
|
9131
|
+
--ins-fail-edge: #4c2326;
|
|
9132
|
+
--ins-fail-fill: #241b1e;
|
|
9133
|
+
--ins-fail-fill-strong: #3f1d1d;
|
|
9134
|
+
--ins-fail-field: #1b1416;
|
|
9135
|
+
--ins-fail-placeholder: #a86b6e;
|
|
9136
|
+
--ins-fail-ring: rgb(239 68 68 / 28%);
|
|
9137
|
+
--ins-fail-hatch-a: #3b2326;
|
|
9138
|
+
--ins-fail-hatch-b: #2c1b1e;
|
|
9139
|
+
--ins-na: #9ca3af;
|
|
9140
|
+
--ins-warn: #b45309;
|
|
9141
|
+
--ins-warn-text: #fcd34d;
|
|
9142
|
+
--ins-warn-strong: #fbbf24;
|
|
9143
|
+
--ins-hatch-a: #374151;
|
|
9144
|
+
--ins-hatch-b: #2b3644;
|
|
9145
|
+
}
|
|
9146
|
+
|
|
9147
|
+
/* The sheet is one card, not one card per group. */
|
|
9148
|
+
.inspection-sheet__body {
|
|
9149
|
+
border: 1px solid var(--ins-border);
|
|
9150
|
+
border-radius: 0.5rem;
|
|
9151
|
+
background-color: var(--ins-bg);
|
|
9152
|
+
box-shadow: 0 1px 2px rgb(0 0 0 / 6%);
|
|
9153
|
+
overflow: hidden;
|
|
8827
9154
|
}
|
|
8828
9155
|
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
top: 0;
|
|
8832
|
-
right: 0;
|
|
8833
|
-
padding: 0.5rem 0.75rem 0 0;
|
|
8834
|
-
color: #374151;
|
|
9156
|
+
body[data-theme='dark'] .inspection-sheet__body {
|
|
9157
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 35%);
|
|
8835
9158
|
}
|
|
8836
9159
|
|
|
8837
|
-
.
|
|
8838
|
-
|
|
9160
|
+
.inspection-sheet__groups {
|
|
9161
|
+
padding: 1rem;
|
|
8839
9162
|
}
|
|
8840
9163
|
|
|
8841
|
-
|
|
8842
|
-
|
|
8843
|
-
|
|
9164
|
+
/* --- group header ------------------------------------------------------- */
|
|
9165
|
+
|
|
9166
|
+
.inspection-group__header {
|
|
9167
|
+
display: flex;
|
|
9168
|
+
align-items: center;
|
|
9169
|
+
gap: 0.625rem;
|
|
9170
|
+
padding-bottom: 0.5625rem;
|
|
9171
|
+
border-bottom: 1px solid var(--ins-border);
|
|
8844
9172
|
}
|
|
8845
9173
|
|
|
8846
|
-
|
|
8847
|
-
|
|
9174
|
+
.inspection-group + .inspection-group {
|
|
9175
|
+
margin-top: 1.75rem;
|
|
8848
9176
|
}
|
|
8849
9177
|
|
|
8850
|
-
.
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
9178
|
+
.inspection-group__name {
|
|
9179
|
+
font-size: 0.75rem;
|
|
9180
|
+
font-weight: 600;
|
|
9181
|
+
line-height: 1;
|
|
9182
|
+
letter-spacing: 0.08em;
|
|
9183
|
+
text-transform: uppercase;
|
|
9184
|
+
color: var(--ins-text-soft);
|
|
8855
9185
|
min-width: 0;
|
|
8856
9186
|
}
|
|
8857
9187
|
|
|
8858
|
-
/*
|
|
8859
|
-
|
|
8860
|
-
.filter-multi-model .ember-power-select-multiple-trigger {
|
|
9188
|
+
/* One dot per field: what is answered, what failed, what is still open. */
|
|
9189
|
+
.inspection-group__dots {
|
|
8861
9190
|
display: flex;
|
|
8862
9191
|
align-items: center;
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
max-height: none !important;
|
|
8866
|
-
overflow: visible !important;
|
|
8867
|
-
padding-top: 0.125rem;
|
|
8868
|
-
padding-bottom: 0.125rem;
|
|
8869
|
-
padding-right: 2.5rem;
|
|
9192
|
+
gap: 0.25rem;
|
|
9193
|
+
flex-shrink: 0;
|
|
8870
9194
|
}
|
|
8871
9195
|
|
|
8872
|
-
.
|
|
8873
|
-
|
|
8874
|
-
|
|
8875
|
-
|
|
9196
|
+
.inspection-dot {
|
|
9197
|
+
width: 7px;
|
|
9198
|
+
height: 7px;
|
|
9199
|
+
border-radius: 50%;
|
|
9200
|
+
box-sizing: border-box;
|
|
9201
|
+
background-color: var(--ins-text-faint);
|
|
8876
9202
|
}
|
|
8877
9203
|
|
|
8878
|
-
.
|
|
8879
|
-
|
|
9204
|
+
.inspection-dot[data-marker='pass'] {
|
|
9205
|
+
background-color: var(--ins-pass);
|
|
8880
9206
|
}
|
|
8881
9207
|
|
|
8882
|
-
.
|
|
8883
|
-
|
|
8884
|
-
|
|
9208
|
+
.inspection-dot[data-marker='fail'] {
|
|
9209
|
+
background-color: var(--ins-fail);
|
|
9210
|
+
}
|
|
9211
|
+
|
|
9212
|
+
.inspection-dot[data-marker='na'] {
|
|
9213
|
+
background-color: var(--ins-na);
|
|
9214
|
+
}
|
|
9215
|
+
|
|
9216
|
+
.inspection-dot[data-marker='outstanding'] {
|
|
9217
|
+
background-color: var(--ins-warn-strong);
|
|
9218
|
+
}
|
|
9219
|
+
|
|
9220
|
+
.inspection-dot[data-marker='empty'] {
|
|
9221
|
+
background-color: transparent;
|
|
9222
|
+
border: 1px solid var(--ins-text-faint);
|
|
9223
|
+
}
|
|
9224
|
+
|
|
9225
|
+
.inspection-group__meta {
|
|
9226
|
+
margin-left: auto;
|
|
9227
|
+
flex-shrink: 0;
|
|
9228
|
+
font-family: var(--ins-mono);
|
|
9229
|
+
font-size: 0.6875rem;
|
|
9230
|
+
line-height: 1;
|
|
9231
|
+
letter-spacing: 0.02em;
|
|
9232
|
+
text-transform: uppercase;
|
|
9233
|
+
color: var(--ins-text-faint);
|
|
9234
|
+
white-space: nowrap;
|
|
9235
|
+
}
|
|
9236
|
+
|
|
9237
|
+
.inspection-group__meta[data-outstanding='true'] {
|
|
9238
|
+
color: var(--ins-warn-strong);
|
|
9239
|
+
}
|
|
9240
|
+
|
|
9241
|
+
.inspection-group__description {
|
|
9242
|
+
margin: 0.5rem 0 0;
|
|
9243
|
+
font-size: 0.75rem;
|
|
9244
|
+
line-height: 1.45;
|
|
9245
|
+
color: var(--ins-text-muted);
|
|
9246
|
+
}
|
|
9247
|
+
|
|
9248
|
+
.inspection-group__empty {
|
|
9249
|
+
padding: 0.75rem 0;
|
|
9250
|
+
font-size: 0.75rem;
|
|
9251
|
+
color: var(--ins-text-muted);
|
|
9252
|
+
}
|
|
9253
|
+
|
|
9254
|
+
/* --- the author's grid, for fields that stay compact -------------------- */
|
|
9255
|
+
|
|
9256
|
+
.inspection-group__grid {
|
|
9257
|
+
display: grid;
|
|
9258
|
+
gap: 1rem 0.875rem;
|
|
9259
|
+
align-items: start;
|
|
9260
|
+
padding-top: 0.875rem;
|
|
9261
|
+
}
|
|
9262
|
+
|
|
9263
|
+
.inspection-group__grid > .inspection-band {
|
|
9264
|
+
grid-column: 1 / -1;
|
|
9265
|
+
}
|
|
9266
|
+
|
|
9267
|
+
.inspection-group__grid[data-columns='1'] {
|
|
9268
|
+
grid-template-columns: minmax(0, 1fr);
|
|
9269
|
+
}
|
|
9270
|
+
|
|
9271
|
+
.inspection-group__grid[data-columns='2'] {
|
|
9272
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
9273
|
+
}
|
|
9274
|
+
|
|
9275
|
+
.inspection-group__grid[data-columns='3'] {
|
|
9276
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
9277
|
+
}
|
|
9278
|
+
|
|
9279
|
+
.inspection-group__grid[data-columns='4'] {
|
|
9280
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
9281
|
+
}
|
|
9282
|
+
|
|
9283
|
+
/* A narrow sheet cannot hold the wider authored grids. */
|
|
9284
|
+
@container (width <= 660px) {
|
|
9285
|
+
.inspection-group__grid[data-columns='3'],
|
|
9286
|
+
.inspection-group__grid[data-columns='4'] {
|
|
9287
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
9288
|
+
}
|
|
9289
|
+
}
|
|
9290
|
+
|
|
9291
|
+
/*
|
|
9292
|
+
* A phone-width sheet stacks every grid. Matched to the `[data-columns]`
|
|
9293
|
+
* rules' specificity: as a bare class it lost to them, and an authored two- or
|
|
9294
|
+
* three-column group stayed in two 160px columns on a phone.
|
|
9295
|
+
*/
|
|
9296
|
+
@container (width <= 420px) {
|
|
9297
|
+
.inspection-group__grid[data-columns] {
|
|
9298
|
+
grid-template-columns: minmax(0, 1fr);
|
|
9299
|
+
}
|
|
9300
|
+
}
|
|
9301
|
+
|
|
9302
|
+
/* --- a compact field --------------------------------------------------- */
|
|
9303
|
+
|
|
9304
|
+
.inspection-cell {
|
|
9305
|
+
display: flex;
|
|
9306
|
+
flex-direction: column;
|
|
9307
|
+
gap: 0.5rem;
|
|
9308
|
+
min-width: 0;
|
|
9309
|
+
}
|
|
9310
|
+
|
|
9311
|
+
.inspection-cell__label {
|
|
9312
|
+
font-size: 0.8125rem;
|
|
9313
|
+
font-weight: 600;
|
|
9314
|
+
line-height: 1.3;
|
|
9315
|
+
color: var(--ins-text);
|
|
9316
|
+
}
|
|
9317
|
+
|
|
9318
|
+
.inspection-required {
|
|
9319
|
+
color: var(--ins-fail);
|
|
9320
|
+
margin-left: 0.125rem;
|
|
9321
|
+
}
|
|
9322
|
+
|
|
9323
|
+
.inspection-cell__hint {
|
|
9324
|
+
font-size: 0.75rem;
|
|
9325
|
+
line-height: 1.4;
|
|
9326
|
+
color: var(--ins-text-muted);
|
|
9327
|
+
white-space: pre-wrap;
|
|
9328
|
+
}
|
|
9329
|
+
|
|
9330
|
+
.inspection-cell__control {
|
|
9331
|
+
display: flex;
|
|
9332
|
+
align-items: center;
|
|
9333
|
+
gap: 0.5rem;
|
|
9334
|
+
min-width: 0;
|
|
9335
|
+
width: 100%;
|
|
9336
|
+
}
|
|
9337
|
+
|
|
9338
|
+
.inspection-cell__control > .fleetbase-model-select,
|
|
9339
|
+
.inspection-cell__control > .ember-basic-dropdown {
|
|
9340
|
+
flex: 1 1 auto;
|
|
9341
|
+
min-width: 0;
|
|
9342
|
+
}
|
|
9343
|
+
|
|
9344
|
+
.inspection-unit {
|
|
9345
|
+
flex-shrink: 0;
|
|
9346
|
+
font-family: var(--ins-mono);
|
|
9347
|
+
font-size: 0.75rem;
|
|
9348
|
+
color: var(--ins-text-muted);
|
|
9349
|
+
}
|
|
9350
|
+
|
|
9351
|
+
.inspection-note {
|
|
9352
|
+
font-size: 0.75rem;
|
|
9353
|
+
color: var(--ins-text-faint);
|
|
9354
|
+
}
|
|
9355
|
+
|
|
9356
|
+
/* A required answer that is still missing says so on its own edge. */
|
|
9357
|
+
.inspection-input--outstanding.form-input,
|
|
9358
|
+
.inspection-input--outstanding .ember-power-select-trigger {
|
|
9359
|
+
border-color: var(--ins-warn);
|
|
9360
|
+
}
|
|
9361
|
+
|
|
9362
|
+
/* --- the pass / fail / n-a and severity segmented controls -------------- */
|
|
9363
|
+
|
|
9364
|
+
.inspection-choice {
|
|
9365
|
+
display: flex;
|
|
9366
|
+
align-items: stretch;
|
|
9367
|
+
min-height: 2.25rem;
|
|
9368
|
+
border: 1px solid var(--ins-border);
|
|
9369
|
+
border-radius: 0.375rem;
|
|
9370
|
+
overflow: hidden;
|
|
9371
|
+
flex: 1 1 auto;
|
|
9372
|
+
min-width: 0;
|
|
9373
|
+
}
|
|
9374
|
+
|
|
9375
|
+
/* On a promoted band the control is pushed to the right at its natural size. */
|
|
9376
|
+
.inspection-choice--auto {
|
|
9377
|
+
flex: 0 0 auto;
|
|
9378
|
+
margin-left: auto;
|
|
9379
|
+
}
|
|
9380
|
+
|
|
9381
|
+
.inspection-choice__option {
|
|
9382
|
+
appearance: none;
|
|
9383
|
+
border: 0;
|
|
9384
|
+
background: transparent;
|
|
9385
|
+
flex: 1 1 0;
|
|
9386
|
+
min-width: 0;
|
|
9387
|
+
display: flex;
|
|
9388
|
+
align-items: center;
|
|
9389
|
+
justify-content: center;
|
|
9390
|
+
padding: 0.375rem 0.5rem;
|
|
9391
|
+
font-size: 0.8125rem;
|
|
9392
|
+
font-weight: 500;
|
|
9393
|
+
line-height: 1;
|
|
9394
|
+
color: var(--ins-text-muted);
|
|
9395
|
+
cursor: pointer;
|
|
9396
|
+
white-space: nowrap;
|
|
9397
|
+
transition:
|
|
9398
|
+
background-color 0.12s ease,
|
|
9399
|
+
color 0.12s ease;
|
|
9400
|
+
}
|
|
9401
|
+
|
|
9402
|
+
.inspection-choice--auto .inspection-choice__option {
|
|
9403
|
+
flex: 0 0 auto;
|
|
9404
|
+
padding: 0 0.75rem;
|
|
9405
|
+
}
|
|
9406
|
+
|
|
9407
|
+
.inspection-choice__option + .inspection-choice__option {
|
|
9408
|
+
border-left: 1px solid var(--ins-border);
|
|
9409
|
+
}
|
|
9410
|
+
|
|
9411
|
+
.inspection-choice__option:hover:not(:disabled) {
|
|
9412
|
+
color: var(--ins-text);
|
|
9413
|
+
}
|
|
9414
|
+
|
|
9415
|
+
.inspection-choice__option:focus-visible {
|
|
9416
|
+
outline: 2px solid #2563eb;
|
|
9417
|
+
outline-offset: -2px;
|
|
9418
|
+
}
|
|
9419
|
+
|
|
9420
|
+
.inspection-choice__option:disabled {
|
|
9421
|
+
cursor: not-allowed;
|
|
9422
|
+
opacity: 0.55;
|
|
9423
|
+
}
|
|
9424
|
+
|
|
9425
|
+
.inspection-choice__option[aria-pressed='true'] {
|
|
9426
|
+
font-weight: 600;
|
|
9427
|
+
color: #fff;
|
|
9428
|
+
background-color: var(--ins-na);
|
|
9429
|
+
}
|
|
9430
|
+
|
|
9431
|
+
.inspection-choice__option[aria-pressed='true'][data-answer='pass'] {
|
|
9432
|
+
background-color: var(--ins-pass);
|
|
9433
|
+
}
|
|
9434
|
+
|
|
9435
|
+
.inspection-choice__option[aria-pressed='true'][data-answer='fail'],
|
|
9436
|
+
.inspection-choice__option[aria-pressed='true'][data-answer='severity'] {
|
|
9437
|
+
background-color: var(--ins-fail);
|
|
9438
|
+
}
|
|
9439
|
+
|
|
9440
|
+
/* --- a promoted band ---------------------------------------------------- */
|
|
9441
|
+
|
|
9442
|
+
.inspection-band {
|
|
9443
|
+
border: 1px solid var(--ins-border);
|
|
9444
|
+
border-radius: 0.375rem;
|
|
9445
|
+
overflow: hidden;
|
|
9446
|
+
}
|
|
9447
|
+
|
|
9448
|
+
.inspection-band__head {
|
|
9449
|
+
display: flex;
|
|
9450
|
+
align-items: center;
|
|
9451
|
+
gap: 0.625rem;
|
|
9452
|
+
padding: 0.6875rem 0.75rem;
|
|
9453
|
+
}
|
|
9454
|
+
|
|
9455
|
+
.inspection-band__label {
|
|
9456
|
+
font-size: 0.8125rem;
|
|
9457
|
+
font-weight: 600;
|
|
9458
|
+
line-height: 1.3;
|
|
9459
|
+
color: var(--ins-text);
|
|
9460
|
+
min-width: 0;
|
|
9461
|
+
}
|
|
9462
|
+
|
|
9463
|
+
.inspection-band__aside {
|
|
9464
|
+
margin-left: auto;
|
|
9465
|
+
display: flex;
|
|
9466
|
+
align-items: center;
|
|
9467
|
+
gap: 0.5625rem;
|
|
9468
|
+
flex-shrink: 0;
|
|
9469
|
+
}
|
|
9470
|
+
|
|
9471
|
+
.inspection-band__body {
|
|
9472
|
+
padding: 0.75rem;
|
|
9473
|
+
display: flex;
|
|
9474
|
+
flex-direction: column;
|
|
9475
|
+
gap: 0.625rem;
|
|
9476
|
+
}
|
|
9477
|
+
|
|
9478
|
+
.inspection-band--stacked .inspection-band__body {
|
|
9479
|
+
padding-top: 0;
|
|
9480
|
+
}
|
|
9481
|
+
|
|
9482
|
+
/* A failure keeps the same band, in red, with its own detail below. */
|
|
9483
|
+
.inspection-band--defect {
|
|
9484
|
+
border-color: var(--ins-fail);
|
|
9485
|
+
background-color: var(--ins-fail-fill);
|
|
9486
|
+
}
|
|
9487
|
+
|
|
9488
|
+
.inspection-band--defect .inspection-band__head {
|
|
9489
|
+
border-bottom: 1px solid var(--ins-fail-edge);
|
|
9490
|
+
padding-right: 0.75rem;
|
|
9491
|
+
}
|
|
9492
|
+
|
|
9493
|
+
.inspection-chip {
|
|
9494
|
+
flex-shrink: 0;
|
|
9495
|
+
font-family: var(--ins-mono);
|
|
9496
|
+
font-size: 0.625rem;
|
|
9497
|
+
font-weight: 700;
|
|
9498
|
+
line-height: 1;
|
|
9499
|
+
letter-spacing: 0.06em;
|
|
9500
|
+
text-transform: uppercase;
|
|
9501
|
+
color: var(--ins-fail-text);
|
|
9502
|
+
border: 1px solid var(--ins-fail-edge);
|
|
9503
|
+
border-radius: 0.1875rem;
|
|
9504
|
+
padding: 0.25rem 0.3125rem;
|
|
9505
|
+
}
|
|
9506
|
+
|
|
9507
|
+
.inspection-band--defect .form-input {
|
|
9508
|
+
border-color: var(--ins-fail-edge);
|
|
9509
|
+
background-color: transparent;
|
|
9510
|
+
}
|
|
9511
|
+
|
|
9512
|
+
.inspection-band--defect .form-input:focus {
|
|
9513
|
+
border-color: var(--ins-fail);
|
|
9514
|
+
}
|
|
9515
|
+
|
|
9516
|
+
.inspection-band--defect .inspection-choice,
|
|
9517
|
+
.inspection-band--defect .inspection-slot {
|
|
9518
|
+
border-color: var(--ins-fail-edge);
|
|
9519
|
+
}
|
|
9520
|
+
|
|
9521
|
+
.inspection-defect__row {
|
|
9522
|
+
display: grid;
|
|
9523
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
9524
|
+
gap: 0.625rem;
|
|
9525
|
+
align-items: center;
|
|
9526
|
+
}
|
|
9527
|
+
|
|
9528
|
+
@container (width <= 560px) {
|
|
9529
|
+
.inspection-defect__row {
|
|
9530
|
+
grid-template-columns: minmax(0, 1fr);
|
|
9531
|
+
}
|
|
9532
|
+
}
|
|
9533
|
+
|
|
9534
|
+
/* The unsafe switch is a pill, not a bare toggle: it is the gravest thing here. */
|
|
9535
|
+
.inspection-unsafe {
|
|
9536
|
+
display: flex;
|
|
9537
|
+
align-items: center;
|
|
9538
|
+
gap: 0.4375rem;
|
|
9539
|
+
min-height: 2.25rem;
|
|
9540
|
+
padding: 0 0.625rem;
|
|
9541
|
+
border: 1px solid var(--ins-fail);
|
|
9542
|
+
border-radius: 0.375rem;
|
|
9543
|
+
font-size: 0.75rem;
|
|
9544
|
+
font-weight: 600;
|
|
9545
|
+
color: var(--ins-fail-text);
|
|
9546
|
+
white-space: nowrap;
|
|
9547
|
+
}
|
|
9548
|
+
|
|
9549
|
+
.inspection-unsafe[data-on='true'] {
|
|
9550
|
+
background-color: var(--ins-fail-fill-strong);
|
|
9551
|
+
}
|
|
9552
|
+
|
|
9553
|
+
/* --- photo slots -------------------------------------------------------- */
|
|
9554
|
+
|
|
9555
|
+
.inspection-slots {
|
|
9556
|
+
display: flex;
|
|
9557
|
+
flex-wrap: wrap;
|
|
9558
|
+
align-items: center;
|
|
9559
|
+
gap: 0.5rem;
|
|
9560
|
+
}
|
|
9561
|
+
|
|
9562
|
+
.inspection-slot {
|
|
9563
|
+
display: block;
|
|
9564
|
+
position: relative;
|
|
9565
|
+
width: 60px;
|
|
9566
|
+
height: 44px;
|
|
9567
|
+
border-radius: 0.3125rem;
|
|
9568
|
+
border: 1px solid var(--ins-border);
|
|
9569
|
+
overflow: hidden;
|
|
9570
|
+
flex-shrink: 0;
|
|
9571
|
+
background: repeating-linear-gradient(45deg, var(--ins-hatch-a) 0 6px, var(--ins-hatch-b) 6px 12px);
|
|
9572
|
+
}
|
|
9573
|
+
|
|
9574
|
+
.inspection-slot img {
|
|
9575
|
+
display: block;
|
|
9576
|
+
width: 100%;
|
|
9577
|
+
height: 100%;
|
|
9578
|
+
object-fit: cover;
|
|
9579
|
+
}
|
|
9580
|
+
|
|
9581
|
+
.inspection-slot__icon {
|
|
9582
|
+
display: flex;
|
|
9583
|
+
width: 100%;
|
|
9584
|
+
height: 100%;
|
|
9585
|
+
align-items: center;
|
|
9586
|
+
justify-content: center;
|
|
9587
|
+
color: var(--ins-text-faint);
|
|
9588
|
+
}
|
|
9589
|
+
|
|
9590
|
+
.inspection-slot__remove {
|
|
9591
|
+
position: absolute;
|
|
9592
|
+
top: 0;
|
|
9593
|
+
right: 0;
|
|
9594
|
+
}
|
|
9595
|
+
|
|
9596
|
+
/* The empty slot invites the next photo rather than sitting as a button. */
|
|
9597
|
+
.inspection-slot--add {
|
|
9598
|
+
display: flex;
|
|
9599
|
+
align-items: center;
|
|
9600
|
+
justify-content: center;
|
|
9601
|
+
border: 1px dashed var(--ins-border-strong);
|
|
9602
|
+
background: none;
|
|
9603
|
+
cursor: pointer;
|
|
9604
|
+
font-size: 1.125rem;
|
|
9605
|
+
line-height: 1;
|
|
9606
|
+
color: var(--ins-text-faint);
|
|
9607
|
+
padding: 0;
|
|
9608
|
+
text-decoration: none;
|
|
9609
|
+
}
|
|
9610
|
+
|
|
9611
|
+
.inspection-slot--add:hover {
|
|
9612
|
+
color: var(--ins-text);
|
|
9613
|
+
border-color: var(--ins-text-faint);
|
|
9614
|
+
}
|
|
9615
|
+
|
|
9616
|
+
.inspection-slots__note {
|
|
9617
|
+
margin-left: auto;
|
|
9618
|
+
text-align: right;
|
|
9619
|
+
font-family: var(--ins-mono);
|
|
9620
|
+
font-size: 0.6875rem;
|
|
9621
|
+
line-height: 1.4;
|
|
9622
|
+
text-transform: uppercase;
|
|
9623
|
+
color: var(--ins-text-faint);
|
|
9624
|
+
}
|
|
9625
|
+
|
|
9626
|
+
/* --- the foot ----------------------------------------------------------- */
|
|
9627
|
+
|
|
9628
|
+
.inspection-foot {
|
|
9629
|
+
border-top: 1px solid var(--ins-border);
|
|
9630
|
+
background-color: var(--ins-bg-sunken);
|
|
9631
|
+
padding: 1rem;
|
|
9632
|
+
display: flex;
|
|
9633
|
+
flex-direction: column;
|
|
9634
|
+
gap: 0.625rem;
|
|
9635
|
+
}
|
|
9636
|
+
|
|
9637
|
+
.inspection-tallies {
|
|
9638
|
+
display: flex;
|
|
9639
|
+
align-items: stretch;
|
|
9640
|
+
gap: 0.5rem;
|
|
9641
|
+
}
|
|
9642
|
+
|
|
9643
|
+
.inspection-tally {
|
|
9644
|
+
flex: 1 1 0;
|
|
9645
|
+
min-width: 0;
|
|
9646
|
+
background-color: var(--ins-bg);
|
|
9647
|
+
border: 1px solid var(--ins-border);
|
|
9648
|
+
border-left: 3px solid var(--ins-na);
|
|
9649
|
+
border-radius: 0.375rem;
|
|
9650
|
+
padding: 0.625rem 0.75rem;
|
|
9651
|
+
display: flex;
|
|
9652
|
+
flex-direction: column;
|
|
9653
|
+
gap: 0.3125rem;
|
|
9654
|
+
}
|
|
9655
|
+
|
|
9656
|
+
.inspection-tally[data-kind='passed'] {
|
|
9657
|
+
border-left-color: var(--ins-pass);
|
|
9658
|
+
}
|
|
9659
|
+
|
|
9660
|
+
.inspection-tally[data-kind='failed'] {
|
|
9661
|
+
border-left-color: var(--ins-fail);
|
|
9662
|
+
}
|
|
9663
|
+
|
|
9664
|
+
.inspection-tally[data-kind='outstanding'] {
|
|
9665
|
+
border-left-color: var(--ins-warn);
|
|
9666
|
+
}
|
|
9667
|
+
|
|
9668
|
+
.inspection-tally[data-kind='outstanding'][data-any='true'] {
|
|
9669
|
+
border-color: var(--ins-warn);
|
|
9670
|
+
border-left-color: var(--ins-warn);
|
|
9671
|
+
}
|
|
9672
|
+
|
|
9673
|
+
.inspection-tally__value {
|
|
9674
|
+
font-size: 1.25rem;
|
|
9675
|
+
font-weight: 700;
|
|
9676
|
+
line-height: 1;
|
|
9677
|
+
font-variant-numeric: tabular-nums;
|
|
9678
|
+
color: var(--ins-text);
|
|
9679
|
+
}
|
|
9680
|
+
|
|
9681
|
+
.inspection-tally[data-kind='outstanding'][data-any='true'] .inspection-tally__value {
|
|
9682
|
+
color: var(--ins-warn-text);
|
|
9683
|
+
}
|
|
9684
|
+
|
|
9685
|
+
.inspection-tally__label {
|
|
9686
|
+
font-size: 0.6875rem;
|
|
9687
|
+
font-weight: 500;
|
|
9688
|
+
line-height: 1;
|
|
9689
|
+
letter-spacing: 0.06em;
|
|
9690
|
+
text-transform: uppercase;
|
|
9691
|
+
color: var(--ins-text-muted);
|
|
9692
|
+
}
|
|
9693
|
+
|
|
9694
|
+
/*
|
|
9695
|
+
* On a phone, four tallies in a row leave "Outstanding" no room: two by two.
|
|
9696
|
+
* A grid rather than wrapping flex items at half width, which only pairs up
|
|
9697
|
+
* under border-box sizing; with padding added to the basis they stack one high.
|
|
9698
|
+
*/
|
|
9699
|
+
@container (width <= 420px) {
|
|
9700
|
+
.inspection-tallies {
|
|
9701
|
+
display: grid;
|
|
9702
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
9703
|
+
}
|
|
9704
|
+
}
|
|
9705
|
+
|
|
9706
|
+
.inspection-tally[data-kind='outstanding'][data-any='true'] .inspection-tally__label {
|
|
9707
|
+
color: var(--ins-warn-strong);
|
|
9708
|
+
}
|
|
9709
|
+
|
|
9710
|
+
.inspection-banner {
|
|
9711
|
+
display: flex;
|
|
9712
|
+
align-items: center;
|
|
9713
|
+
gap: 0.625rem;
|
|
9714
|
+
padding: 0.6875rem 0.75rem;
|
|
9715
|
+
border: 1px solid var(--ins-warn);
|
|
9716
|
+
border-radius: 0.375rem;
|
|
9717
|
+
background-color: var(--ins-bg);
|
|
9718
|
+
font-size: 0.75rem;
|
|
9719
|
+
line-height: 1.4;
|
|
9720
|
+
color: var(--ins-warn-text);
|
|
9721
|
+
}
|
|
9722
|
+
|
|
9723
|
+
.inspection-banner--unsafe {
|
|
9724
|
+
border-color: var(--ins-fail);
|
|
9725
|
+
background-color: var(--ins-fail-fill);
|
|
9726
|
+
color: var(--ins-fail-text);
|
|
9727
|
+
}
|
|
9728
|
+
|
|
9729
|
+
body[data-theme='dark'] .inspection-banner--unsafe {
|
|
9730
|
+
background-color: #3f1d1d;
|
|
9731
|
+
}
|
|
9732
|
+
|
|
9733
|
+
.inspection-banner__chip {
|
|
9734
|
+
flex-shrink: 0;
|
|
9735
|
+
font-family: var(--ins-mono);
|
|
9736
|
+
font-size: 0.6875rem;
|
|
9737
|
+
font-weight: 700;
|
|
9738
|
+
line-height: 1;
|
|
9739
|
+
letter-spacing: 0.05em;
|
|
9740
|
+
text-transform: uppercase;
|
|
9741
|
+
color: #fff;
|
|
9742
|
+
background-color: var(--ins-fail);
|
|
9743
|
+
border-radius: 0.25rem;
|
|
9744
|
+
padding: 0.3125rem 0.4375rem;
|
|
9745
|
+
}
|
|
9746
|
+
|
|
9747
|
+
.inspection-banner__jump {
|
|
9748
|
+
appearance: none;
|
|
9749
|
+
border: 0;
|
|
9750
|
+
background: none;
|
|
9751
|
+
margin-left: auto;
|
|
9752
|
+
flex-shrink: 0;
|
|
9753
|
+
padding: 0;
|
|
9754
|
+
font-size: 0.75rem;
|
|
9755
|
+
font-weight: 600;
|
|
9756
|
+
color: inherit;
|
|
9757
|
+
cursor: pointer;
|
|
9758
|
+
white-space: nowrap;
|
|
9759
|
+
}
|
|
9760
|
+
|
|
9761
|
+
.inspection-banner__jump:hover {
|
|
9762
|
+
text-decoration: underline;
|
|
9763
|
+
}
|
|
9764
|
+
|
|
9765
|
+
/* A jumped-to field is held for a moment so the eye can find it. */
|
|
9766
|
+
.inspection-cell--targeted,
|
|
9767
|
+
.inspection-band--targeted {
|
|
9768
|
+
animation: inspection-target 1.6s ease-out;
|
|
9769
|
+
}
|
|
9770
|
+
|
|
9771
|
+
@keyframes inspection-target {
|
|
9772
|
+
0%,
|
|
9773
|
+
60% {
|
|
9774
|
+
box-shadow: 0 0 0 2px var(--ins-warn);
|
|
9775
|
+
}
|
|
9776
|
+
|
|
9777
|
+
100% {
|
|
9778
|
+
box-shadow: 0 0 0 2px transparent;
|
|
9779
|
+
}
|
|
9780
|
+
}
|
|
9781
|
+
|
|
9782
|
+
@media (prefers-reduced-motion: reduce) {
|
|
9783
|
+
.inspection-cell--targeted,
|
|
9784
|
+
.inspection-band--targeted {
|
|
9785
|
+
animation: none;
|
|
9786
|
+
box-shadow: 0 0 0 2px var(--ins-warn);
|
|
9787
|
+
}
|
|
9788
|
+
}
|
|
9789
|
+
|
|
9790
|
+
/*
|
|
9791
|
+
* The sheet sits inside an overlay panel that has its own edge. Without an
|
|
9792
|
+
* inset its borders land on that edge and read as a double rule.
|
|
9793
|
+
*/
|
|
9794
|
+
.inspection-sheet-inset {
|
|
9795
|
+
padding: 0.75rem;
|
|
9796
|
+
}
|
|
9797
|
+
|
|
9798
|
+
/* ==========================================================================
|
|
9799
|
+
Inspection links
|
|
9800
|
+
--------------------------------------------------------------------------
|
|
9801
|
+
A generated link used to exist only as a toast. These are the rows that
|
|
9802
|
+
replaced it: one per link, with the link itself, who and what it was for,
|
|
9803
|
+
and whether it still works.
|
|
9804
|
+
========================================================================== */
|
|
9805
|
+
|
|
9806
|
+
.inspection-link-list {
|
|
9807
|
+
--inspection-border: #e5e7eb;
|
|
9808
|
+
--inspection-surface: #fff;
|
|
9809
|
+
--inspection-surface-sunken: #f9fafb;
|
|
9810
|
+
--inspection-text: #111827;
|
|
9811
|
+
--inspection-text-muted: #6b7280;
|
|
9812
|
+
}
|
|
9813
|
+
|
|
9814
|
+
body[data-theme='dark'] .inspection-link-list {
|
|
9815
|
+
--inspection-border: #374151;
|
|
9816
|
+
--inspection-surface: #1f2937;
|
|
9817
|
+
--inspection-surface-sunken: #1f2937;
|
|
9818
|
+
--inspection-text: #f9fafb;
|
|
9819
|
+
--inspection-text-muted: #9ca3af;
|
|
9820
|
+
}
|
|
9821
|
+
|
|
9822
|
+
.inspection-link-list__empty {
|
|
9823
|
+
padding: 0.75rem;
|
|
9824
|
+
font-size: 0.75rem;
|
|
9825
|
+
color: var(--inspection-text-muted);
|
|
9826
|
+
}
|
|
9827
|
+
|
|
9828
|
+
/* The modal shows the list inside its own bordered block. */
|
|
9829
|
+
.inspection-link-panel {
|
|
9830
|
+
border: 1px solid var(--inspection-border, #e5e7eb);
|
|
9831
|
+
border-radius: 0.5rem;
|
|
9832
|
+
overflow: hidden;
|
|
9833
|
+
}
|
|
9834
|
+
|
|
9835
|
+
body[data-theme='dark'] .inspection-link-panel {
|
|
9836
|
+
border-color: #374151;
|
|
9837
|
+
}
|
|
9838
|
+
|
|
9839
|
+
.inspection-link-panel__header {
|
|
9840
|
+
padding: 0.5rem 0.625rem;
|
|
9841
|
+
border-bottom: 1px solid var(--inspection-border, #e5e7eb);
|
|
9842
|
+
font-size: 0.75rem;
|
|
9843
|
+
font-weight: 600;
|
|
9844
|
+
letter-spacing: 0.08em;
|
|
9845
|
+
text-transform: uppercase;
|
|
9846
|
+
color: #374151;
|
|
9847
|
+
}
|
|
9848
|
+
|
|
9849
|
+
body[data-theme='dark'] .inspection-link-panel__header {
|
|
9850
|
+
border-bottom-color: #374151;
|
|
9851
|
+
color: #e5e7eb;
|
|
9852
|
+
}
|
|
9853
|
+
|
|
9854
|
+
.inspection-link {
|
|
9855
|
+
display: flex;
|
|
9856
|
+
flex-direction: column;
|
|
9857
|
+
gap: 0.375rem;
|
|
9858
|
+
padding: 0.5rem 0.625rem;
|
|
9859
|
+
}
|
|
9860
|
+
|
|
9861
|
+
.inspection-link + .inspection-link {
|
|
9862
|
+
border-top: 1px solid var(--inspection-border);
|
|
9863
|
+
}
|
|
9864
|
+
|
|
9865
|
+
/* A link that can no longer be used recedes rather than disappearing. */
|
|
9866
|
+
.inspection-link:not([data-state='active']) {
|
|
9867
|
+
opacity: 0.6;
|
|
9868
|
+
}
|
|
9869
|
+
|
|
9870
|
+
.inspection-link__head {
|
|
9871
|
+
display: flex;
|
|
9872
|
+
flex-wrap: wrap;
|
|
9873
|
+
align-items: center;
|
|
9874
|
+
gap: 0.5rem;
|
|
9875
|
+
}
|
|
9876
|
+
|
|
9877
|
+
.inspection-link__state {
|
|
9878
|
+
flex-shrink: 0;
|
|
9879
|
+
border-radius: 9999px;
|
|
9880
|
+
padding: 0.125rem 0.5rem;
|
|
9881
|
+
font-size: 0.625rem;
|
|
9882
|
+
font-weight: 700;
|
|
9883
|
+
text-transform: uppercase;
|
|
9884
|
+
letter-spacing: 0.04em;
|
|
9885
|
+
background-color: #e5e7eb;
|
|
9886
|
+
color: #374151;
|
|
9887
|
+
}
|
|
9888
|
+
|
|
9889
|
+
.inspection-link__state[data-state='active'] {
|
|
9890
|
+
background-color: #16a34a;
|
|
9891
|
+
color: #fff;
|
|
9892
|
+
}
|
|
9893
|
+
|
|
9894
|
+
.inspection-link__state[data-state='expired'],
|
|
9895
|
+
.inspection-link__state[data-state='revoked'] {
|
|
9896
|
+
background-color: #dc2626;
|
|
9897
|
+
color: #fff;
|
|
9898
|
+
}
|
|
9899
|
+
|
|
9900
|
+
.inspection-link__state[data-state='used'] {
|
|
9901
|
+
background-color: #2563eb;
|
|
9902
|
+
color: #fff;
|
|
9903
|
+
}
|
|
9904
|
+
|
|
9905
|
+
/* Locked after too many wrong PINs: stopped, but by a guesser, not by anyone here. */
|
|
9906
|
+
.inspection-link__state[data-state='locked'] {
|
|
9907
|
+
background-color: #d97706;
|
|
9908
|
+
color: #fff;
|
|
9909
|
+
}
|
|
9910
|
+
|
|
9911
|
+
.inspection-link__for {
|
|
9912
|
+
font-size: 0.8125rem;
|
|
9913
|
+
font-weight: 600;
|
|
9914
|
+
color: var(--inspection-text);
|
|
9915
|
+
min-width: 0;
|
|
9916
|
+
}
|
|
9917
|
+
|
|
9918
|
+
.inspection-link__when {
|
|
9919
|
+
margin-left: auto;
|
|
9920
|
+
flex-shrink: 0;
|
|
9921
|
+
font-size: 0.6875rem;
|
|
9922
|
+
color: var(--inspection-text-muted);
|
|
9923
|
+
}
|
|
9924
|
+
|
|
9925
|
+
.inspection-link__url {
|
|
9926
|
+
display: flex;
|
|
9927
|
+
align-items: center;
|
|
9928
|
+
gap: 0.375rem;
|
|
9929
|
+
border: 1px solid var(--inspection-border);
|
|
9930
|
+
border-radius: 0.375rem;
|
|
9931
|
+
background-color: var(--inspection-surface);
|
|
9932
|
+
box-shadow: inset 0 1px 2px rgb(0 0 0 / 6%);
|
|
9933
|
+
padding: 0.25rem 0.375rem;
|
|
9934
|
+
}
|
|
9935
|
+
|
|
9936
|
+
body[data-theme='dark'] .inspection-link__url {
|
|
9937
|
+
box-shadow: inset 0 1px 2px rgb(0 0 0 / 25%);
|
|
9938
|
+
}
|
|
9939
|
+
|
|
9940
|
+
.inspection-link__code {
|
|
9941
|
+
flex: 1 1 auto;
|
|
9942
|
+
min-width: 0;
|
|
9943
|
+
overflow-x: auto;
|
|
9944
|
+
white-space: nowrap;
|
|
9945
|
+
font-size: 0.6875rem;
|
|
9946
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
9947
|
+
color: var(--inspection-text-muted);
|
|
9948
|
+
}
|
|
9949
|
+
|
|
9950
|
+
.inspection-link__note {
|
|
9951
|
+
font-size: 0.6875rem;
|
|
9952
|
+
font-style: italic;
|
|
9953
|
+
color: var(--inspection-text-muted);
|
|
9954
|
+
}
|
|
9955
|
+
|
|
9956
|
+
.inspection-link__foot {
|
|
9957
|
+
display: flex;
|
|
9958
|
+
flex-wrap: wrap;
|
|
9959
|
+
align-items: center;
|
|
9960
|
+
gap: 0.375rem;
|
|
9961
|
+
font-size: 0.6875rem;
|
|
9962
|
+
color: var(--inspection-text-muted);
|
|
9963
|
+
}
|
|
9964
|
+
|
|
9965
|
+
.inspection-link__sep {
|
|
9966
|
+
padding: 0 0.125rem;
|
|
9967
|
+
color: var(--inspection-text-muted);
|
|
9968
|
+
}
|
|
9969
|
+
|
|
9970
|
+
.inspection-link__warn {
|
|
9971
|
+
color: #b45309;
|
|
9972
|
+
}
|
|
9973
|
+
|
|
9974
|
+
body[data-theme='dark'] .inspection-link__warn {
|
|
9975
|
+
color: #fbbf24;
|
|
9976
|
+
}
|
|
9977
|
+
|
|
9978
|
+
/* The PIN that goes with a link, with ways to copy it or send it again. */
|
|
9979
|
+
.inspection-link__pin {
|
|
9980
|
+
display: flex;
|
|
9981
|
+
flex-wrap: wrap;
|
|
9982
|
+
align-items: center;
|
|
9983
|
+
gap: 0.375rem;
|
|
9984
|
+
font-size: 0.6875rem;
|
|
9985
|
+
color: var(--inspection-text-muted);
|
|
9986
|
+
}
|
|
9987
|
+
|
|
9988
|
+
.inspection-link__pin-label {
|
|
9989
|
+
font-size: 0.625rem;
|
|
9990
|
+
font-weight: 700;
|
|
9991
|
+
letter-spacing: 0.06em;
|
|
9992
|
+
text-transform: uppercase;
|
|
9993
|
+
}
|
|
9994
|
+
|
|
9995
|
+
.inspection-link__pin-code {
|
|
9996
|
+
margin-right: 0.25rem;
|
|
9997
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
9998
|
+
font-size: 0.875rem;
|
|
9999
|
+
font-weight: 700;
|
|
10000
|
+
letter-spacing: 0.2em;
|
|
10001
|
+
color: var(--inspection-text, #111827);
|
|
10002
|
+
}
|
|
10003
|
+
|
|
10004
|
+
body[data-theme='dark'] .inspection-link__pin-code {
|
|
10005
|
+
color: #f9fafb;
|
|
10006
|
+
}
|
|
10007
|
+
|
|
10008
|
+
/* The PIN asked for before a public link shows its form: large, spaced, easy to type on a phone. */
|
|
10009
|
+
.public-inspection-pin input.public-inspection-pin__input.form-input {
|
|
10010
|
+
height: auto;
|
|
10011
|
+
padding: 0.625rem 0.75rem;
|
|
10012
|
+
text-align: center;
|
|
10013
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
10014
|
+
font-size: 1.5rem;
|
|
10015
|
+
letter-spacing: 0.5em;
|
|
10016
|
+
text-indent: 0.5em;
|
|
10017
|
+
}
|
|
10018
|
+
|
|
10019
|
+
/* On a phone the submit button spans the page, where a thumb can reach it. */
|
|
10020
|
+
@media (width <= 639px) {
|
|
10021
|
+
.public-inspection-submit__button,
|
|
10022
|
+
.public-inspection-submit__button > button {
|
|
10023
|
+
width: 100%;
|
|
10024
|
+
justify-content: center;
|
|
10025
|
+
}
|
|
10026
|
+
}
|
|
10027
|
+
|
|
10028
|
+
/* A link just generated, shown above the form until the modal closes. */
|
|
10029
|
+
.inspection-link-generated {
|
|
10030
|
+
display: flex;
|
|
10031
|
+
flex-direction: column;
|
|
10032
|
+
gap: 0.5rem;
|
|
10033
|
+
border: 1px solid #bbf7d0;
|
|
10034
|
+
border-radius: 0.5rem;
|
|
10035
|
+
background-color: #f0fdf4;
|
|
10036
|
+
padding: 0.625rem;
|
|
10037
|
+
}
|
|
10038
|
+
|
|
10039
|
+
body[data-theme='dark'] .inspection-link-generated {
|
|
10040
|
+
border-color: #166534;
|
|
10041
|
+
background-color: rgb(22 101 52 / 20%);
|
|
10042
|
+
}
|
|
10043
|
+
|
|
10044
|
+
.inspection-link-generated__title {
|
|
10045
|
+
display: flex;
|
|
10046
|
+
align-items: center;
|
|
10047
|
+
gap: 0.375rem;
|
|
10048
|
+
font-size: 0.8125rem;
|
|
10049
|
+
font-weight: 600;
|
|
10050
|
+
color: #14532d;
|
|
10051
|
+
}
|
|
10052
|
+
|
|
10053
|
+
body[data-theme='dark'] .inspection-link-generated__title {
|
|
10054
|
+
color: #bbf7d0;
|
|
10055
|
+
}
|
|
10056
|
+
|
|
10057
|
+
.inspection-link-generated__help {
|
|
10058
|
+
margin: 0;
|
|
10059
|
+
font-size: 0.6875rem;
|
|
10060
|
+
color: #166534;
|
|
10061
|
+
}
|
|
10062
|
+
|
|
10063
|
+
body[data-theme='dark'] .inspection-link-generated__help {
|
|
10064
|
+
color: #86efac;
|
|
10065
|
+
}
|
|
10066
|
+
|
|
10067
|
+
.inspection-link-generated .inspection-link__url {
|
|
10068
|
+
background-color: #fff;
|
|
10069
|
+
}
|
|
10070
|
+
|
|
10071
|
+
body[data-theme='dark'] .inspection-link-generated .inspection-link__url {
|
|
10072
|
+
background-color: #1f2937;
|
|
10073
|
+
border-color: #374151;
|
|
10074
|
+
}
|
|
10075
|
+
|
|
10076
|
+
/* A stored answer, read back: the same row, with the value where the control was. */
|
|
10077
|
+
.inspection-row__answer {
|
|
10078
|
+
font-size: 0.8125rem;
|
|
10079
|
+
color: var(--inspection-text);
|
|
10080
|
+
}
|
|
10081
|
+
|
|
10082
|
+
/* A stored answer, read back: the value sits where the control was. */
|
|
10083
|
+
.inspection-answer {
|
|
10084
|
+
margin: 0;
|
|
10085
|
+
font-size: 0.8125rem;
|
|
10086
|
+
line-height: 1.5;
|
|
10087
|
+
color: var(--ins-text-soft);
|
|
10088
|
+
white-space: pre-wrap;
|
|
10089
|
+
min-width: 0;
|
|
10090
|
+
}
|
|
10091
|
+
|
|
10092
|
+
/*
|
|
10093
|
+
* A read-back answer keeps the shape of the field it was given in. A cell had
|
|
10094
|
+
* no container at all — a bare label with a value loose beneath it — while a
|
|
10095
|
+
* note or an upload drew a bordered card, so one row read as a card and the
|
|
10096
|
+
* next as stray text. Cells take the same card, quieter than a defect's.
|
|
10097
|
+
*/
|
|
10098
|
+
.inspection-cell--readonly {
|
|
10099
|
+
gap: 0.375rem;
|
|
10100
|
+
|
|
10101
|
+
/* Each card is as tall as its own answer: stretched to the row's tallest,
|
|
10102
|
+
a lone chip sat in half a card of empty space. */
|
|
10103
|
+
align-self: start;
|
|
10104
|
+
border: 1px solid var(--ins-border);
|
|
10105
|
+
border-radius: 0.375rem;
|
|
10106
|
+
background-color: var(--ins-bg-sunken);
|
|
10107
|
+
padding: 0.625rem 0.75rem;
|
|
10108
|
+
}
|
|
10109
|
+
|
|
10110
|
+
/*
|
|
10111
|
+
* A pass and a fail are the same card, coloured by the answer. The fail used
|
|
10112
|
+
* to be a band, and a band spans the grid — so one answer ran the full width
|
|
10113
|
+
* while its neighbours sat in columns. It keeps its detail; it just keeps it
|
|
10114
|
+
* in the column the form gave it.
|
|
10115
|
+
*/
|
|
10116
|
+
.inspection-cell--result {
|
|
10117
|
+
gap: 0;
|
|
10118
|
+
padding: 0;
|
|
10119
|
+
overflow: hidden;
|
|
10120
|
+
}
|
|
10121
|
+
|
|
10122
|
+
.inspection-cell--result .inspection-cell__head {
|
|
10123
|
+
display: flex;
|
|
10124
|
+
align-items: center;
|
|
10125
|
+
gap: 0.5rem;
|
|
10126
|
+
min-width: 0;
|
|
10127
|
+
padding: 0.5rem 0.625rem;
|
|
10128
|
+
}
|
|
10129
|
+
|
|
10130
|
+
.inspection-cell--result .inspection-cell__label {
|
|
10131
|
+
min-width: 0;
|
|
10132
|
+
overflow-wrap: anywhere;
|
|
10133
|
+
}
|
|
10134
|
+
|
|
10135
|
+
.inspection-cell--result .inspection-cell__body {
|
|
10136
|
+
display: flex;
|
|
10137
|
+
flex-direction: column;
|
|
10138
|
+
gap: 0.5rem;
|
|
10139
|
+
padding: 0 0.625rem 0.5rem;
|
|
10140
|
+
}
|
|
10141
|
+
|
|
10142
|
+
.inspection-cell--result .inspection-cell__meta {
|
|
10143
|
+
display: flex;
|
|
10144
|
+
flex-wrap: wrap;
|
|
10145
|
+
gap: 0.375rem;
|
|
10146
|
+
}
|
|
10147
|
+
|
|
10148
|
+
.inspection-cell--readonly[data-answer='pass'] {
|
|
10149
|
+
border-color: var(--ins-pass-edge);
|
|
10150
|
+
background-color: var(--ins-pass-fill);
|
|
10151
|
+
}
|
|
10152
|
+
|
|
10153
|
+
.inspection-cell--readonly[data-answer='pass'] .inspection-cell__head {
|
|
10154
|
+
border-bottom: 0;
|
|
10155
|
+
}
|
|
10156
|
+
|
|
10157
|
+
.inspection-cell--readonly[data-answer='fail'] {
|
|
10158
|
+
border-color: var(--ins-fail);
|
|
10159
|
+
background-color: var(--ins-fail-fill);
|
|
10160
|
+
}
|
|
10161
|
+
|
|
10162
|
+
.inspection-cell--readonly[data-answer='fail'] .inspection-cell__body {
|
|
10163
|
+
border-top: 1px solid var(--ins-fail-edge);
|
|
10164
|
+
padding-top: 0.5rem;
|
|
10165
|
+
}
|
|
10166
|
+
|
|
10167
|
+
/* The chip takes the answer's colour: red is not the only state. */
|
|
10168
|
+
.inspection-cell--readonly[data-answer='pass'] .inspection-chip {
|
|
10169
|
+
color: var(--ins-pass-text);
|
|
10170
|
+
border-color: var(--ins-pass-edge);
|
|
10171
|
+
}
|
|
10172
|
+
|
|
10173
|
+
.inspection-cell--readonly[data-answer='na'] .inspection-chip {
|
|
10174
|
+
color: var(--ins-text-muted);
|
|
10175
|
+
border-color: var(--ins-border);
|
|
10176
|
+
}
|
|
10177
|
+
|
|
10178
|
+
.inspection-cell--readonly .inspection-cell__label {
|
|
10179
|
+
font-size: 0.75rem;
|
|
10180
|
+
font-weight: 500;
|
|
10181
|
+
letter-spacing: 0.02em;
|
|
10182
|
+
color: var(--ins-text-muted);
|
|
10183
|
+
}
|
|
10184
|
+
|
|
10185
|
+
/* The answer itself is what the eye should land on. */
|
|
10186
|
+
.inspection-cell--readonly .inspection-answer {
|
|
10187
|
+
font-size: 0.875rem;
|
|
10188
|
+
font-weight: 600;
|
|
10189
|
+
color: var(--ins-text);
|
|
10190
|
+
}
|
|
10191
|
+
|
|
10192
|
+
/* ==========================================================================
|
|
10193
|
+
Defect flyout
|
|
10194
|
+
--------------------------------------------------------------------------
|
|
10195
|
+
A failed check keeps its cell. Its severity, unsafe flag, comment and
|
|
10196
|
+
photos open in a panel anchored to that cell, so failing a check can never
|
|
10197
|
+
change the layout of the sheet. Closing it leaves a chip in the cell, and
|
|
10198
|
+
the defects tray at the foot keeps the record.
|
|
10199
|
+
========================================================================== */
|
|
10200
|
+
|
|
10201
|
+
/* The open field is ringed with an outline, which takes no space: opening a
|
|
10202
|
+
flyout must not move anything either. */
|
|
10203
|
+
.inspection-cell--flyout-open {
|
|
10204
|
+
outline: 2px solid var(--ins-fail);
|
|
10205
|
+
outline-offset: 6px;
|
|
10206
|
+
border-radius: 0.375rem;
|
|
10207
|
+
}
|
|
10208
|
+
|
|
10209
|
+
/* --- the chip a closed failure leaves in its cell ----------------------- */
|
|
10210
|
+
|
|
10211
|
+
.inspection-defect-chip {
|
|
10212
|
+
appearance: none;
|
|
10213
|
+
display: flex;
|
|
10214
|
+
flex-wrap: wrap;
|
|
10215
|
+
align-items: center;
|
|
10216
|
+
gap: 0.375rem 0.5rem;
|
|
10217
|
+
width: 100%;
|
|
10218
|
+
padding: 0.4375rem 0.625rem;
|
|
10219
|
+
border: 1px solid var(--ins-fail-edge);
|
|
10220
|
+
border-left: 3px solid var(--ins-fail);
|
|
10221
|
+
border-radius: 0.375rem;
|
|
10222
|
+
background-color: var(--ins-fail-fill);
|
|
10223
|
+
color: var(--ins-fail-text);
|
|
10224
|
+
font-size: 0.75rem;
|
|
10225
|
+
line-height: 1.3;
|
|
10226
|
+
text-align: left;
|
|
10227
|
+
cursor: pointer;
|
|
10228
|
+
}
|
|
10229
|
+
|
|
10230
|
+
.inspection-defect-chip:hover:not(:disabled) {
|
|
10231
|
+
border-color: var(--ins-fail);
|
|
10232
|
+
}
|
|
10233
|
+
|
|
10234
|
+
.inspection-defect-chip:focus-visible {
|
|
10235
|
+
outline: 2px solid #2563eb;
|
|
10236
|
+
outline-offset: 2px;
|
|
10237
|
+
}
|
|
10238
|
+
|
|
10239
|
+
.inspection-defect-chip:disabled {
|
|
10240
|
+
cursor: default;
|
|
10241
|
+
}
|
|
10242
|
+
|
|
10243
|
+
.inspection-defect-chip.is-incomplete {
|
|
10244
|
+
border-left-color: var(--ins-warn);
|
|
10245
|
+
}
|
|
10246
|
+
|
|
10247
|
+
.inspection-defect-chip__severity {
|
|
10248
|
+
font-size: 0.6875rem;
|
|
10249
|
+
font-weight: 700;
|
|
10250
|
+
letter-spacing: 0.04em;
|
|
10251
|
+
text-transform: uppercase;
|
|
10252
|
+
}
|
|
10253
|
+
|
|
10254
|
+
.inspection-defect-chip__unsafe {
|
|
10255
|
+
font-family: var(--ins-mono);
|
|
10256
|
+
font-size: 0.625rem;
|
|
10257
|
+
font-weight: 700;
|
|
10258
|
+
letter-spacing: 0.05em;
|
|
10259
|
+
text-transform: uppercase;
|
|
10260
|
+
color: #fff;
|
|
10261
|
+
background-color: var(--ins-fail);
|
|
10262
|
+
border-radius: 0.1875rem;
|
|
10263
|
+
padding: 0.1875rem 0.3125rem;
|
|
10264
|
+
}
|
|
10265
|
+
|
|
10266
|
+
.inspection-defect-chip__meta {
|
|
10267
|
+
display: inline-flex;
|
|
10268
|
+
align-items: center;
|
|
10269
|
+
gap: 0.25rem;
|
|
10270
|
+
color: var(--ins-text-muted);
|
|
10271
|
+
}
|
|
10272
|
+
|
|
10273
|
+
.inspection-defect-chip__status {
|
|
10274
|
+
font-weight: 600;
|
|
10275
|
+
color: var(--ins-warn-strong);
|
|
10276
|
+
}
|
|
10277
|
+
|
|
10278
|
+
.inspection-defect-chip__edit {
|
|
10279
|
+
margin-left: auto;
|
|
10280
|
+
color: var(--ins-text-muted);
|
|
10281
|
+
}
|
|
10282
|
+
|
|
10283
|
+
/* --- the flyout -------------------------------------------------------- */
|
|
10284
|
+
|
|
10285
|
+
.inspection-flyout {
|
|
10286
|
+
display: flex;
|
|
10287
|
+
flex-direction: column;
|
|
10288
|
+
background-color: var(--ins-fail-fill);
|
|
10289
|
+
color: var(--ins-text);
|
|
10290
|
+
border: 1px solid var(--ins-fail);
|
|
10291
|
+
border-radius: 0.5rem;
|
|
10292
|
+
box-shadow:
|
|
10293
|
+
0 12px 32px rgb(0 0 0 / 18%),
|
|
10294
|
+
0 2px 6px rgb(0 0 0 / 8%);
|
|
10295
|
+
outline: none;
|
|
10296
|
+
}
|
|
10297
|
+
|
|
10298
|
+
body[data-theme='dark'] .inspection-flyout {
|
|
10299
|
+
box-shadow:
|
|
10300
|
+
0 16px 40px rgb(0 0 0 / 55%),
|
|
10301
|
+
0 2px 6px rgb(0 0 0 / 30%);
|
|
10302
|
+
}
|
|
10303
|
+
|
|
10304
|
+
.inspection-flyout--floating {
|
|
10305
|
+
position: absolute;
|
|
10306
|
+
z-index: 40;
|
|
10307
|
+
width: min(30rem, calc(100% - 1rem));
|
|
10308
|
+
animation: inspection-flyout-in 0.14s ease-out;
|
|
10309
|
+
}
|
|
10310
|
+
|
|
10311
|
+
.inspection-flyout--floating[data-placement='top'] {
|
|
10312
|
+
animation-name: inspection-flyout-in-above;
|
|
10313
|
+
}
|
|
10314
|
+
|
|
10315
|
+
/*
|
|
10316
|
+
* Room for the reveal's margin at the very end of the page. An absolutely
|
|
10317
|
+
* placed box extends the scroll area, but its margin does not, so without this
|
|
10318
|
+
* a flyout opened below the last field could only ever sit flush against the
|
|
10319
|
+
* bottom edge of the panel.
|
|
10320
|
+
*/
|
|
10321
|
+
.inspection-flyout--floating::after {
|
|
10322
|
+
content: '';
|
|
10323
|
+
position: absolute;
|
|
10324
|
+
left: 0;
|
|
10325
|
+
right: 0;
|
|
10326
|
+
bottom: -0.5rem;
|
|
10327
|
+
height: 0.5rem;
|
|
10328
|
+
pointer-events: none;
|
|
10329
|
+
}
|
|
10330
|
+
|
|
10331
|
+
/* A caret points at the Fail button of the field it belongs to. */
|
|
10332
|
+
.inspection-flyout__caret {
|
|
10333
|
+
position: absolute;
|
|
10334
|
+
left: var(--flyout-caret-x, 1.5rem);
|
|
10335
|
+
width: 12px;
|
|
10336
|
+
height: 12px;
|
|
10337
|
+
background-color: var(--ins-fail-fill);
|
|
10338
|
+
border: 1px solid var(--ins-fail);
|
|
10339
|
+
transform: translateX(-50%) rotate(45deg);
|
|
10340
|
+
pointer-events: none;
|
|
10341
|
+
}
|
|
10342
|
+
|
|
10343
|
+
.inspection-flyout[data-placement='bottom'] .inspection-flyout__caret {
|
|
10344
|
+
top: -7px;
|
|
10345
|
+
border-right: 0;
|
|
10346
|
+
border-bottom: 0;
|
|
10347
|
+
}
|
|
10348
|
+
|
|
10349
|
+
.inspection-flyout[data-placement='top'] .inspection-flyout__caret {
|
|
10350
|
+
bottom: -7px;
|
|
10351
|
+
border-top: 0;
|
|
10352
|
+
border-left: 0;
|
|
10353
|
+
}
|
|
10354
|
+
|
|
10355
|
+
.inspection-flyout__head {
|
|
10356
|
+
display: flex;
|
|
10357
|
+
align-items: center;
|
|
10358
|
+
gap: 0.5rem;
|
|
10359
|
+
padding: 0.625rem 0.75rem;
|
|
10360
|
+
border-bottom: 1px solid var(--ins-fail-edge);
|
|
10361
|
+
}
|
|
10362
|
+
|
|
10363
|
+
.inspection-flyout__title {
|
|
10364
|
+
min-width: 0;
|
|
10365
|
+
font-size: 0.8125rem;
|
|
10366
|
+
font-weight: 600;
|
|
10367
|
+
line-height: 1.3;
|
|
10368
|
+
}
|
|
10369
|
+
|
|
10370
|
+
.inspection-flyout__close {
|
|
10371
|
+
appearance: none;
|
|
10372
|
+
border: 0;
|
|
10373
|
+
background: none;
|
|
10374
|
+
margin-left: auto;
|
|
10375
|
+
padding: 0.25rem 0.375rem;
|
|
10376
|
+
border-radius: 0.25rem;
|
|
10377
|
+
color: var(--ins-text-muted);
|
|
10378
|
+
cursor: pointer;
|
|
10379
|
+
}
|
|
10380
|
+
|
|
10381
|
+
.inspection-flyout__close:hover {
|
|
10382
|
+
color: var(--ins-text);
|
|
10383
|
+
}
|
|
10384
|
+
|
|
10385
|
+
.inspection-flyout__close:focus-visible {
|
|
10386
|
+
outline: 2px solid #2563eb;
|
|
10387
|
+
}
|
|
10388
|
+
|
|
10389
|
+
.inspection-flyout__body {
|
|
10390
|
+
display: flex;
|
|
10391
|
+
flex-direction: column;
|
|
10392
|
+
gap: 0.625rem;
|
|
10393
|
+
padding: 0.75rem;
|
|
10394
|
+
overflow-y: auto;
|
|
10395
|
+
}
|
|
10396
|
+
|
|
10397
|
+
.inspection-flyout__foot {
|
|
10398
|
+
display: flex;
|
|
10399
|
+
align-items: center;
|
|
10400
|
+
justify-content: flex-end;
|
|
10401
|
+
gap: 0.75rem;
|
|
10402
|
+
padding: 0.625rem 0.75rem;
|
|
10403
|
+
border-top: 1px solid var(--ins-fail-edge);
|
|
10404
|
+
}
|
|
10405
|
+
|
|
10406
|
+
.inspection-flyout__note {
|
|
10407
|
+
margin-right: auto;
|
|
10408
|
+
font-family: var(--ins-mono);
|
|
10409
|
+
font-size: 0.6875rem;
|
|
10410
|
+
line-height: 1.4;
|
|
10411
|
+
text-transform: uppercase;
|
|
10412
|
+
color: var(--ins-warn-strong);
|
|
10413
|
+
}
|
|
10414
|
+
|
|
10415
|
+
/* Inside a failure, every control takes the failure's colours. */
|
|
10416
|
+
.inspection-flyout .inspection-choice {
|
|
10417
|
+
border-color: var(--ins-fail-edge);
|
|
10418
|
+
}
|
|
10419
|
+
|
|
10420
|
+
.inspection-flyout .inspection-choice__option + .inspection-choice__option {
|
|
10421
|
+
border-left-color: var(--ins-fail-edge);
|
|
10422
|
+
}
|
|
10423
|
+
|
|
10424
|
+
.inspection-flyout .inspection-choice__option:hover:not(:disabled) {
|
|
10425
|
+
background-color: var(--ins-fail-fill-strong);
|
|
10426
|
+
}
|
|
10427
|
+
|
|
10428
|
+
/*
|
|
10429
|
+
* The comment box belongs to the failure. ember-ui styles every console
|
|
10430
|
+
* input with `body[data-theme='dark'] .fleetbase-console .form-input`, which
|
|
10431
|
+
* outranks a plain `.inspection-flyout .form-input` — so an earlier attempt
|
|
10432
|
+
* at this left a grey box inside a red panel. This selector is deliberately
|
|
10433
|
+
* heavier than that rule, and takes its colours from the theme tokens.
|
|
10434
|
+
*/
|
|
10435
|
+
html body .inspection-flyout textarea.inspection-defect-comment.form-input {
|
|
10436
|
+
background-color: var(--ins-fail-field);
|
|
10437
|
+
border-color: var(--ins-fail-edge);
|
|
10438
|
+
color: var(--ins-text);
|
|
10439
|
+
box-shadow: none;
|
|
10440
|
+
}
|
|
10441
|
+
|
|
10442
|
+
html body .inspection-flyout textarea.inspection-defect-comment.form-input::placeholder {
|
|
10443
|
+
color: var(--ins-fail-placeholder);
|
|
10444
|
+
}
|
|
10445
|
+
|
|
10446
|
+
html body .inspection-flyout textarea.inspection-defect-comment.form-input:focus {
|
|
10447
|
+
border-color: var(--ins-fail);
|
|
10448
|
+
box-shadow: 0 0 0 3px var(--ins-fail-ring);
|
|
10449
|
+
outline: none;
|
|
10450
|
+
}
|
|
10451
|
+
|
|
10452
|
+
/* Photos sit in the failure too: red hatching, a red-edged slot for the next. */
|
|
10453
|
+
.inspection-flyout .inspection-slot:not(.inspection-slot--add) {
|
|
10454
|
+
border-color: var(--ins-fail-edge);
|
|
10455
|
+
background: repeating-linear-gradient(45deg, var(--ins-fail-hatch-a) 0 6px, var(--ins-fail-hatch-b) 6px 12px);
|
|
10456
|
+
}
|
|
10457
|
+
|
|
10458
|
+
.inspection-flyout .inspection-slot--add {
|
|
10459
|
+
border-color: var(--ins-fail-edge);
|
|
10460
|
+
color: var(--ins-fail-text);
|
|
10461
|
+
}
|
|
10462
|
+
|
|
10463
|
+
.inspection-flyout .inspection-slot--add:hover {
|
|
10464
|
+
border-color: var(--ins-fail);
|
|
10465
|
+
color: var(--ins-fail);
|
|
10466
|
+
}
|
|
10467
|
+
|
|
10468
|
+
/* --- on a phone, the same content as a bottom sheet --------------------- */
|
|
10469
|
+
|
|
10470
|
+
.inspection-flyout--sheet {
|
|
10471
|
+
position: fixed;
|
|
10472
|
+
left: 0;
|
|
10473
|
+
right: 0;
|
|
10474
|
+
bottom: 0;
|
|
10475
|
+
z-index: 1100;
|
|
10476
|
+
max-height: 85vh;
|
|
10477
|
+
border-bottom: 0;
|
|
10478
|
+
border-radius: 0.875rem 0.875rem 0 0;
|
|
10479
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
10480
|
+
animation: inspection-sheet-in 0.2s ease-out;
|
|
10481
|
+
}
|
|
10482
|
+
|
|
10483
|
+
/* A grab handle, so it reads as something that came up and will go down. */
|
|
10484
|
+
.inspection-flyout--sheet::before {
|
|
10485
|
+
content: '';
|
|
10486
|
+
display: block;
|
|
10487
|
+
width: 2.5rem;
|
|
10488
|
+
height: 0.25rem;
|
|
10489
|
+
margin: 0.5rem auto 0;
|
|
10490
|
+
border-radius: 9999px;
|
|
10491
|
+
background-color: var(--ins-border-strong);
|
|
10492
|
+
}
|
|
10493
|
+
|
|
10494
|
+
.inspection-flyout-backdrop {
|
|
10495
|
+
position: fixed;
|
|
10496
|
+
inset: 0;
|
|
10497
|
+
z-index: 1099;
|
|
10498
|
+
background-color: rgb(0 0 0 / 40%);
|
|
10499
|
+
animation: inspection-fade-in 0.2s ease-out;
|
|
10500
|
+
}
|
|
10501
|
+
|
|
10502
|
+
@keyframes inspection-flyout-in {
|
|
10503
|
+
from {
|
|
10504
|
+
opacity: 0;
|
|
10505
|
+
transform: translateY(-4px);
|
|
10506
|
+
}
|
|
10507
|
+
|
|
10508
|
+
to {
|
|
10509
|
+
opacity: 1;
|
|
10510
|
+
transform: none;
|
|
10511
|
+
}
|
|
10512
|
+
}
|
|
10513
|
+
|
|
10514
|
+
@keyframes inspection-flyout-in-above {
|
|
10515
|
+
from {
|
|
10516
|
+
opacity: 0;
|
|
10517
|
+
transform: translateY(4px);
|
|
10518
|
+
}
|
|
10519
|
+
|
|
10520
|
+
to {
|
|
10521
|
+
opacity: 1;
|
|
10522
|
+
transform: none;
|
|
10523
|
+
}
|
|
10524
|
+
}
|
|
10525
|
+
|
|
10526
|
+
@keyframes inspection-sheet-in {
|
|
10527
|
+
from {
|
|
10528
|
+
transform: translateY(100%);
|
|
10529
|
+
}
|
|
10530
|
+
|
|
10531
|
+
to {
|
|
10532
|
+
transform: none;
|
|
10533
|
+
}
|
|
10534
|
+
}
|
|
10535
|
+
|
|
10536
|
+
@keyframes inspection-fade-in {
|
|
10537
|
+
from {
|
|
10538
|
+
opacity: 0;
|
|
10539
|
+
}
|
|
10540
|
+
|
|
10541
|
+
to {
|
|
10542
|
+
opacity: 1;
|
|
10543
|
+
}
|
|
10544
|
+
}
|
|
10545
|
+
|
|
10546
|
+
@media (prefers-reduced-motion: reduce) {
|
|
10547
|
+
.inspection-flyout,
|
|
10548
|
+
.inspection-flyout-backdrop {
|
|
10549
|
+
animation: none;
|
|
10550
|
+
}
|
|
10551
|
+
}
|
|
10552
|
+
|
|
10553
|
+
/* --- the defects tray -------------------------------------------------- */
|
|
10554
|
+
|
|
10555
|
+
.inspection-tray {
|
|
10556
|
+
border: 1px solid var(--ins-border);
|
|
10557
|
+
border-radius: 0.375rem;
|
|
10558
|
+
background-color: var(--ins-bg);
|
|
10559
|
+
overflow: hidden;
|
|
10560
|
+
}
|
|
10561
|
+
|
|
10562
|
+
.inspection-tray__head {
|
|
10563
|
+
display: flex;
|
|
10564
|
+
align-items: center;
|
|
10565
|
+
gap: 0.5rem;
|
|
10566
|
+
padding: 0.5rem 0.75rem;
|
|
10567
|
+
border-bottom: 1px solid var(--ins-border);
|
|
10568
|
+
font-size: 0.6875rem;
|
|
10569
|
+
font-weight: 700;
|
|
10570
|
+
letter-spacing: 0.08em;
|
|
10571
|
+
text-transform: uppercase;
|
|
10572
|
+
color: var(--ins-text-soft);
|
|
10573
|
+
}
|
|
10574
|
+
|
|
10575
|
+
.inspection-tray__count {
|
|
10576
|
+
min-width: 1.25rem;
|
|
10577
|
+
padding: 0.125rem 0.375rem;
|
|
10578
|
+
border-radius: 9999px;
|
|
10579
|
+
background-color: var(--ins-fail);
|
|
10580
|
+
color: #fff;
|
|
10581
|
+
font-size: 0.625rem;
|
|
10582
|
+
text-align: center;
|
|
10583
|
+
letter-spacing: 0;
|
|
10584
|
+
}
|
|
10585
|
+
|
|
10586
|
+
.inspection-tray__row {
|
|
10587
|
+
appearance: none;
|
|
10588
|
+
border: 0;
|
|
10589
|
+
background: none;
|
|
10590
|
+
width: 100%;
|
|
10591
|
+
display: flex;
|
|
10592
|
+
align-items: center;
|
|
10593
|
+
gap: 0.625rem;
|
|
10594
|
+
padding: 0.625rem 0.75rem;
|
|
10595
|
+
text-align: left;
|
|
10596
|
+
cursor: pointer;
|
|
10597
|
+
color: var(--ins-text);
|
|
10598
|
+
font-size: 0.8125rem;
|
|
10599
|
+
}
|
|
10600
|
+
|
|
10601
|
+
.inspection-tray__row + .inspection-tray__row {
|
|
10602
|
+
border-top: 1px solid var(--ins-border);
|
|
10603
|
+
}
|
|
10604
|
+
|
|
10605
|
+
.inspection-tray__row:hover {
|
|
10606
|
+
background-color: rgb(127 127 127 / 8%);
|
|
10607
|
+
}
|
|
10608
|
+
|
|
10609
|
+
.inspection-tray__row:focus-visible {
|
|
10610
|
+
outline: 2px solid #2563eb;
|
|
10611
|
+
outline-offset: -2px;
|
|
10612
|
+
}
|
|
10613
|
+
|
|
10614
|
+
.inspection-tray__severity {
|
|
10615
|
+
flex-shrink: 0;
|
|
10616
|
+
min-width: 4.25rem;
|
|
10617
|
+
padding: 0.25rem 0.375rem;
|
|
10618
|
+
border: 1px solid var(--ins-fail-edge);
|
|
10619
|
+
border-radius: 0.25rem;
|
|
10620
|
+
font-size: 0.625rem;
|
|
10621
|
+
font-weight: 700;
|
|
10622
|
+
letter-spacing: 0.06em;
|
|
10623
|
+
text-align: center;
|
|
10624
|
+
text-transform: uppercase;
|
|
10625
|
+
color: var(--ins-fail-text);
|
|
10626
|
+
}
|
|
10627
|
+
|
|
10628
|
+
.inspection-tray__severity[data-severity='high'],
|
|
10629
|
+
.inspection-tray__severity[data-severity='critical'] {
|
|
10630
|
+
border-color: var(--ins-fail);
|
|
10631
|
+
background-color: var(--ins-fail);
|
|
10632
|
+
color: #fff;
|
|
10633
|
+
}
|
|
10634
|
+
|
|
10635
|
+
.inspection-tray__label {
|
|
10636
|
+
flex: 1 1 auto;
|
|
10637
|
+
min-width: 0;
|
|
10638
|
+
font-weight: 600;
|
|
10639
|
+
}
|
|
10640
|
+
|
|
10641
|
+
.inspection-tray__evidence {
|
|
10642
|
+
flex-shrink: 0;
|
|
10643
|
+
font-size: 0.75rem;
|
|
10644
|
+
color: var(--ins-text-muted);
|
|
10645
|
+
}
|
|
10646
|
+
|
|
10647
|
+
.inspection-tray__evidence[data-incomplete='true'] {
|
|
10648
|
+
font-weight: 600;
|
|
10649
|
+
color: var(--ins-warn-strong);
|
|
10650
|
+
}
|
|
10651
|
+
|
|
10652
|
+
.inspection-tray__action {
|
|
10653
|
+
flex-shrink: 0;
|
|
10654
|
+
font-size: 0.75rem;
|
|
10655
|
+
font-weight: 600;
|
|
10656
|
+
color: var(--ins-fail-text);
|
|
10657
|
+
}
|
|
10658
|
+
|
|
10659
|
+
@container (width <= 480px) {
|
|
10660
|
+
.inspection-tray__row {
|
|
10661
|
+
flex-wrap: wrap;
|
|
10662
|
+
}
|
|
10663
|
+
|
|
10664
|
+
.inspection-tray__evidence {
|
|
10665
|
+
flex-basis: 100%;
|
|
10666
|
+
order: 5;
|
|
10667
|
+
}
|
|
10668
|
+
}
|
|
10669
|
+
|
|
10670
|
+
/* ==========================================================================
|
|
10671
|
+
Radar — the triage list that replaced the Resources Hub. Sits on the
|
|
10672
|
+
control-hub shell (header band, body width) and adds the pills, tabs,
|
|
10673
|
+
rows and drawer. Light rules first, dark overrides at the end.
|
|
10674
|
+
========================================================================== */
|
|
10675
|
+
|
|
10676
|
+
.fleet-ops-radar-body {
|
|
10677
|
+
max-width: 88rem;
|
|
10678
|
+
gap: 0.625rem;
|
|
10679
|
+
padding-bottom: 1.25rem;
|
|
10680
|
+
}
|
|
10681
|
+
|
|
10682
|
+
.fleet-ops-radar-header-row {
|
|
10683
|
+
display: flex;
|
|
10684
|
+
flex-wrap: wrap;
|
|
10685
|
+
align-items: center;
|
|
10686
|
+
gap: 0.75rem 1rem;
|
|
10687
|
+
width: 100%;
|
|
10688
|
+
min-width: 0;
|
|
10689
|
+
}
|
|
10690
|
+
|
|
10691
|
+
.fleet-ops-radar-header-summary {
|
|
10692
|
+
font-size: 0.75rem;
|
|
10693
|
+
color: #6b7280;
|
|
10694
|
+
align-self: flex-end;
|
|
10695
|
+
padding-bottom: 0.2rem;
|
|
10696
|
+
}
|
|
10697
|
+
|
|
10698
|
+
.fleet-ops-radar-header-actions {
|
|
10699
|
+
margin-left: auto;
|
|
10700
|
+
display: flex;
|
|
10701
|
+
flex-wrap: wrap;
|
|
10702
|
+
align-items: center;
|
|
10703
|
+
justify-content: flex-end;
|
|
10704
|
+
gap: 0.5rem;
|
|
10705
|
+
}
|
|
10706
|
+
|
|
10707
|
+
/* Every control in the header shares one height. */
|
|
10708
|
+
.fleet-ops-radar-header-actions .btn-wrapper,
|
|
10709
|
+
.fleet-ops-radar-header-actions .btn-wrapper > .btn {
|
|
10710
|
+
height: 2rem;
|
|
10711
|
+
}
|
|
10712
|
+
|
|
10713
|
+
.fleet-ops-radar-header-actions .btn-wrapper > .btn {
|
|
10714
|
+
display: inline-flex;
|
|
10715
|
+
align-items: center;
|
|
10716
|
+
padding-top: 0;
|
|
10717
|
+
padding-bottom: 0;
|
|
10718
|
+
}
|
|
10719
|
+
|
|
10720
|
+
.fleet-ops-radar-search {
|
|
10721
|
+
position: relative;
|
|
10722
|
+
width: 12rem;
|
|
10723
|
+
height: 2rem;
|
|
10724
|
+
}
|
|
10725
|
+
|
|
10726
|
+
.fleet-ops-radar-search svg {
|
|
10727
|
+
position: absolute;
|
|
10728
|
+
left: 0.6rem;
|
|
10729
|
+
top: 50%;
|
|
10730
|
+
transform: translateY(-50%);
|
|
10731
|
+
font-size: 0.7rem;
|
|
10732
|
+
color: #9ca3af;
|
|
10733
|
+
pointer-events: none;
|
|
10734
|
+
}
|
|
10735
|
+
|
|
10736
|
+
/* Beats ember-ui's `input.form-input.form-input-sm` padding so the text clears the icon. */
|
|
10737
|
+
.fleet-ops-radar-search input.form-input.form-input-sm {
|
|
10738
|
+
height: 2rem;
|
|
10739
|
+
padding-left: 1.85rem;
|
|
10740
|
+
padding-right: 1.85rem;
|
|
10741
|
+
}
|
|
10742
|
+
|
|
10743
|
+
.fleet-ops-radar-search kbd {
|
|
10744
|
+
position: absolute;
|
|
10745
|
+
right: 0.45rem;
|
|
10746
|
+
top: 50%;
|
|
10747
|
+
transform: translateY(-50%);
|
|
10748
|
+
}
|
|
10749
|
+
|
|
10750
|
+
.fleet-ops-radar-view-toggle {
|
|
10751
|
+
display: inline-flex;
|
|
10752
|
+
align-items: stretch;
|
|
10753
|
+
box-sizing: border-box;
|
|
10754
|
+
height: 2rem;
|
|
10755
|
+
border: 1px solid #e5e7eb;
|
|
10756
|
+
border-radius: 0.375rem;
|
|
10757
|
+
background: #fff;
|
|
10758
|
+
padding: 2px;
|
|
10759
|
+
gap: 2px;
|
|
10760
|
+
}
|
|
10761
|
+
|
|
10762
|
+
.fleet-ops-radar-view-toggle-button {
|
|
10763
|
+
border: 0;
|
|
10764
|
+
background: transparent;
|
|
10765
|
+
border-radius: 0.25rem;
|
|
10766
|
+
padding: 0 0.6rem;
|
|
10767
|
+
font-size: 0.75rem;
|
|
10768
|
+
font-weight: 600;
|
|
10769
|
+
color: #6b7280;
|
|
10770
|
+
display: inline-flex;
|
|
10771
|
+
align-items: center;
|
|
10772
|
+
gap: 0.35rem;
|
|
10773
|
+
cursor: pointer;
|
|
10774
|
+
}
|
|
10775
|
+
|
|
10776
|
+
.fleet-ops-radar-view-toggle-button.is-active {
|
|
10777
|
+
background: #3485e2;
|
|
10778
|
+
color: #fff;
|
|
10779
|
+
}
|
|
10780
|
+
|
|
10781
|
+
.fleet-ops-radar-sources-warning {
|
|
10782
|
+
display: flex;
|
|
10783
|
+
align-items: center;
|
|
10784
|
+
gap: 0.5rem;
|
|
10785
|
+
border: 1px solid #fde68a;
|
|
10786
|
+
background: #fffbeb;
|
|
10787
|
+
color: #b45309;
|
|
10788
|
+
border-radius: 0.375rem;
|
|
10789
|
+
padding: 0.5rem 0.75rem;
|
|
10790
|
+
font-size: 0.75rem;
|
|
10791
|
+
}
|
|
10792
|
+
|
|
10793
|
+
/* Morning brief: score, category rows, prose, decision cards. */
|
|
10794
|
+
.fleet-ops-radar-briefing {
|
|
10795
|
+
background: #fff;
|
|
10796
|
+
border: 1px solid #e5e7eb;
|
|
10797
|
+
border-radius: 0.5rem;
|
|
10798
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
10799
|
+
padding: 0.75rem 1rem;
|
|
10800
|
+
display: flex;
|
|
10801
|
+
flex-direction: column;
|
|
10802
|
+
gap: 0.75rem;
|
|
10803
|
+
}
|
|
10804
|
+
|
|
10805
|
+
.fleet-ops-radar-briefing-bar {
|
|
10806
|
+
display: flex;
|
|
10807
|
+
flex-wrap: wrap;
|
|
10808
|
+
align-items: center;
|
|
10809
|
+
gap: 0.75rem;
|
|
10810
|
+
}
|
|
10811
|
+
|
|
10812
|
+
.fleet-ops-radar-briefing-toggle {
|
|
10813
|
+
margin-left: auto;
|
|
10814
|
+
border: 0;
|
|
10815
|
+
background: transparent;
|
|
10816
|
+
color: #6b7280;
|
|
10817
|
+
font-size: 0.72rem;
|
|
10818
|
+
font-weight: 600;
|
|
10819
|
+
cursor: pointer;
|
|
10820
|
+
display: inline-flex;
|
|
10821
|
+
align-items: center;
|
|
10822
|
+
gap: 0.35rem;
|
|
10823
|
+
}
|
|
10824
|
+
|
|
10825
|
+
.fleet-ops-radar-briefing-loading {
|
|
10826
|
+
display: flex;
|
|
10827
|
+
justify-content: center;
|
|
10828
|
+
padding: 1rem;
|
|
10829
|
+
}
|
|
10830
|
+
|
|
10831
|
+
.fleet-ops-radar-briefing-grid {
|
|
10832
|
+
display: grid;
|
|
10833
|
+
grid-template-columns: 1fr;
|
|
10834
|
+
gap: 1rem;
|
|
10835
|
+
}
|
|
10836
|
+
|
|
10837
|
+
@media (width >= 1024px) {
|
|
10838
|
+
.fleet-ops-radar-briefing-grid {
|
|
10839
|
+
grid-template-columns: 11rem minmax(0, 1fr);
|
|
10840
|
+
grid-template-areas:
|
|
10841
|
+
'score categories'
|
|
10842
|
+
'prose prose'
|
|
10843
|
+
'decisions decisions';
|
|
10844
|
+
}
|
|
10845
|
+
|
|
10846
|
+
.fleet-ops-radar-briefing-score {
|
|
10847
|
+
grid-area: score;
|
|
10848
|
+
}
|
|
10849
|
+
|
|
10850
|
+
.fleet-ops-radar-briefing-categories {
|
|
10851
|
+
grid-area: categories;
|
|
10852
|
+
}
|
|
10853
|
+
|
|
10854
|
+
.fleet-ops-radar-briefing-prose {
|
|
10855
|
+
grid-area: prose;
|
|
10856
|
+
}
|
|
10857
|
+
|
|
10858
|
+
.fleet-ops-radar-briefing-decisions {
|
|
10859
|
+
grid-area: decisions;
|
|
10860
|
+
}
|
|
10861
|
+
}
|
|
10862
|
+
|
|
10863
|
+
@media (width >= 1280px) {
|
|
10864
|
+
.fleet-ops-radar-briefing-grid {
|
|
10865
|
+
grid-template-columns: 11rem minmax(0, 1fr) minmax(20rem, 26rem);
|
|
10866
|
+
grid-template-areas:
|
|
10867
|
+
'score categories decisions'
|
|
10868
|
+
'prose prose decisions';
|
|
10869
|
+
}
|
|
10870
|
+
}
|
|
10871
|
+
|
|
10872
|
+
.fleet-ops-radar-briefing-score-value {
|
|
10873
|
+
display: flex;
|
|
10874
|
+
align-items: baseline;
|
|
10875
|
+
gap: 0.25rem;
|
|
10876
|
+
}
|
|
10877
|
+
|
|
10878
|
+
.fleet-ops-radar-briefing-score-number {
|
|
10879
|
+
font-size: 2.25rem;
|
|
10880
|
+
font-weight: 900;
|
|
10881
|
+
line-height: 1;
|
|
10882
|
+
color: #111827;
|
|
10883
|
+
}
|
|
10884
|
+
|
|
10885
|
+
.fleet-ops-radar-briefing-score-of {
|
|
10886
|
+
font-size: 0.8rem;
|
|
10887
|
+
color: #6b7280;
|
|
10888
|
+
}
|
|
10889
|
+
|
|
10890
|
+
.fleet-ops-radar-briefing-score-delta {
|
|
10891
|
+
margin-top: 0.4rem;
|
|
10892
|
+
}
|
|
10893
|
+
|
|
10894
|
+
.fleet-ops-radar-briefing-categories {
|
|
10895
|
+
display: grid;
|
|
10896
|
+
grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
|
|
10897
|
+
gap: 0.5rem 0.9rem;
|
|
10898
|
+
}
|
|
10899
|
+
|
|
10900
|
+
.fleet-ops-radar-briefing-category {
|
|
10901
|
+
display: flex;
|
|
10902
|
+
flex-direction: column;
|
|
10903
|
+
gap: 0.25rem;
|
|
10904
|
+
font-size: 0.72rem;
|
|
10905
|
+
}
|
|
10906
|
+
|
|
10907
|
+
.fleet-ops-radar-briefing-category-head {
|
|
10908
|
+
display: flex;
|
|
10909
|
+
justify-content: space-between;
|
|
10910
|
+
font-weight: 700;
|
|
10911
|
+
color: #111827;
|
|
10912
|
+
}
|
|
10913
|
+
|
|
10914
|
+
.fleet-ops-radar-briefing-category-score {
|
|
10915
|
+
font-weight: 900;
|
|
10916
|
+
}
|
|
10917
|
+
|
|
10918
|
+
.fleet-ops-radar-briefing-category-bar {
|
|
10919
|
+
height: 6px;
|
|
10920
|
+
border-radius: 3px;
|
|
10921
|
+
background: #f3f4f6;
|
|
10922
|
+
overflow: hidden;
|
|
10923
|
+
}
|
|
10924
|
+
|
|
10925
|
+
.fleet-ops-radar-briefing-category-bar > span {
|
|
10926
|
+
display: block;
|
|
10927
|
+
height: 100%;
|
|
10928
|
+
border-radius: 3px;
|
|
10929
|
+
background: #059669;
|
|
10930
|
+
transition: width 0.3s ease;
|
|
10931
|
+
}
|
|
10932
|
+
|
|
10933
|
+
.fleet-ops-radar-briefing-category-bar > span.is-warn {
|
|
10934
|
+
background: #d97706;
|
|
10935
|
+
}
|
|
10936
|
+
|
|
10937
|
+
.fleet-ops-radar-briefing-category-bar > span.is-bad {
|
|
10938
|
+
background: #e11d48;
|
|
10939
|
+
}
|
|
10940
|
+
|
|
10941
|
+
.fleet-ops-radar-briefing-category-gaps {
|
|
10942
|
+
display: flex;
|
|
10943
|
+
justify-content: space-between;
|
|
10944
|
+
gap: 0.5rem;
|
|
10945
|
+
color: #6b7280;
|
|
10946
|
+
}
|
|
10947
|
+
|
|
10948
|
+
.fleet-ops-radar-briefing-link {
|
|
10949
|
+
border: 0;
|
|
10950
|
+
background: transparent;
|
|
10951
|
+
padding: 0;
|
|
10952
|
+
font: inherit;
|
|
10953
|
+
font-weight: 600;
|
|
10954
|
+
color: #1c6cc7;
|
|
10955
|
+
cursor: pointer;
|
|
10956
|
+
display: inline;
|
|
10957
|
+
}
|
|
10958
|
+
|
|
10959
|
+
.fleet-ops-radar-briefing-link:hover {
|
|
10960
|
+
text-decoration: underline;
|
|
10961
|
+
}
|
|
10962
|
+
|
|
10963
|
+
.fleet-ops-radar-briefing-link:disabled {
|
|
10964
|
+
opacity: 0.5;
|
|
10965
|
+
cursor: default;
|
|
10966
|
+
}
|
|
10967
|
+
|
|
10968
|
+
.fleet-ops-radar-briefing-prose p {
|
|
10969
|
+
margin: 0;
|
|
10970
|
+
font-size: 0.8125rem;
|
|
10971
|
+
line-height: 1.65;
|
|
10972
|
+
color: #374151;
|
|
10973
|
+
text-wrap: pretty;
|
|
10974
|
+
}
|
|
10975
|
+
|
|
10976
|
+
.fleet-ops-radar-briefing-decisions {
|
|
10977
|
+
display: flex;
|
|
10978
|
+
flex-direction: column;
|
|
10979
|
+
gap: 0.5rem;
|
|
10980
|
+
}
|
|
10981
|
+
|
|
10982
|
+
.fleet-ops-radar-briefing-decisions-head {
|
|
10983
|
+
display: flex;
|
|
10984
|
+
justify-content: space-between;
|
|
10985
|
+
align-items: center;
|
|
10986
|
+
}
|
|
10987
|
+
|
|
10988
|
+
.fleet-ops-radar-decision {
|
|
10989
|
+
border: 1px solid #e5e7eb;
|
|
10990
|
+
border-left-width: 3px;
|
|
10991
|
+
border-radius: 0.375rem;
|
|
10992
|
+
padding: 0.6rem 0.75rem;
|
|
10993
|
+
display: flex;
|
|
10994
|
+
flex-direction: column;
|
|
10995
|
+
gap: 0.4rem;
|
|
10996
|
+
background: #fff;
|
|
10997
|
+
}
|
|
10998
|
+
|
|
10999
|
+
.fleet-ops-radar-decision.is-critical {
|
|
11000
|
+
border-left-color: #e11d48;
|
|
11001
|
+
}
|
|
11002
|
+
|
|
11003
|
+
.fleet-ops-radar-decision.is-warning {
|
|
11004
|
+
border-left-color: #d97706;
|
|
11005
|
+
}
|
|
11006
|
+
|
|
11007
|
+
.fleet-ops-radar-decision.is-info {
|
|
11008
|
+
border-left-color: #3485e2;
|
|
11009
|
+
}
|
|
11010
|
+
|
|
11011
|
+
.fleet-ops-radar-decision-head {
|
|
11012
|
+
display: flex;
|
|
11013
|
+
flex-wrap: wrap;
|
|
11014
|
+
align-items: center;
|
|
11015
|
+
gap: 0.4rem;
|
|
11016
|
+
}
|
|
11017
|
+
|
|
11018
|
+
.fleet-ops-radar-decision-title {
|
|
11019
|
+
font-size: 0.8125rem;
|
|
11020
|
+
font-weight: 700;
|
|
11021
|
+
color: #111827;
|
|
11022
|
+
}
|
|
11023
|
+
|
|
11024
|
+
.fleet-ops-radar-decision-reasoning {
|
|
11025
|
+
margin: 0;
|
|
11026
|
+
font-size: 0.75rem;
|
|
11027
|
+
line-height: 1.55;
|
|
11028
|
+
color: #4b5563;
|
|
11029
|
+
}
|
|
11030
|
+
|
|
11031
|
+
.fleet-ops-radar-decision-actions {
|
|
11032
|
+
display: flex;
|
|
11033
|
+
flex-wrap: wrap;
|
|
11034
|
+
align-items: center;
|
|
11035
|
+
gap: 0.4rem;
|
|
11036
|
+
font-size: 0.72rem;
|
|
11037
|
+
}
|
|
11038
|
+
|
|
11039
|
+
.fleet-ops-radar-briefing-strip {
|
|
11040
|
+
display: flex;
|
|
11041
|
+
flex-wrap: wrap;
|
|
11042
|
+
align-items: center;
|
|
11043
|
+
gap: 0.5rem;
|
|
11044
|
+
border: 1px solid #e5e7eb;
|
|
11045
|
+
border-radius: 0.375rem;
|
|
11046
|
+
padding: 0.4rem 0.75rem;
|
|
11047
|
+
font-size: 0.72rem;
|
|
11048
|
+
color: #374151;
|
|
11049
|
+
background: #f9fafb;
|
|
11050
|
+
}
|
|
11051
|
+
|
|
11052
|
+
.fleet-ops-radar-briefing-strip.is-confirmed svg {
|
|
11053
|
+
color: #059669;
|
|
11054
|
+
}
|
|
11055
|
+
|
|
11056
|
+
.fleet-ops-radar-briefing-strip.is-snoozed svg {
|
|
11057
|
+
color: #d97706;
|
|
11058
|
+
}
|
|
11059
|
+
|
|
11060
|
+
.fleet-ops-radar-briefing-strip-label {
|
|
11061
|
+
font-weight: 700;
|
|
11062
|
+
}
|
|
11063
|
+
|
|
11064
|
+
.fleet-ops-radar-briefing-strip-title {
|
|
11065
|
+
color: #6b7280;
|
|
11066
|
+
flex: 1 1 auto;
|
|
11067
|
+
}
|
|
11068
|
+
|
|
11069
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing,
|
|
11070
|
+
body[data-theme='dark'] .fleet-ops-radar-decision {
|
|
11071
|
+
background: #1f2937;
|
|
11072
|
+
border-color: #374151;
|
|
11073
|
+
}
|
|
11074
|
+
|
|
11075
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-strip {
|
|
11076
|
+
background: #111827;
|
|
11077
|
+
border-color: #374151;
|
|
11078
|
+
color: #d1d5db;
|
|
11079
|
+
}
|
|
11080
|
+
|
|
11081
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-score-number,
|
|
11082
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-category-head,
|
|
11083
|
+
body[data-theme='dark'] .fleet-ops-radar-decision-title {
|
|
11084
|
+
color: #f9fafb;
|
|
11085
|
+
}
|
|
11086
|
+
|
|
11087
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-score-of,
|
|
11088
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-category-gaps,
|
|
11089
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-toggle,
|
|
11090
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-strip-title {
|
|
11091
|
+
color: #9ca3af;
|
|
11092
|
+
}
|
|
11093
|
+
|
|
11094
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-prose p,
|
|
11095
|
+
body[data-theme='dark'] .fleet-ops-radar-decision-reasoning {
|
|
11096
|
+
color: #d1d5db;
|
|
11097
|
+
}
|
|
11098
|
+
|
|
11099
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-category-bar {
|
|
11100
|
+
background: #374151;
|
|
11101
|
+
}
|
|
11102
|
+
|
|
11103
|
+
body[data-theme='dark'] .fleet-ops-radar-briefing-link {
|
|
11104
|
+
color: #93c5fd;
|
|
11105
|
+
}
|
|
11106
|
+
|
|
11107
|
+
/* Count pills: the only filter UI. */
|
|
11108
|
+
.fleet-ops-radar-pills {
|
|
11109
|
+
display: flex;
|
|
11110
|
+
flex-wrap: wrap;
|
|
11111
|
+
gap: 0.4rem;
|
|
11112
|
+
}
|
|
11113
|
+
|
|
11114
|
+
.fleet-ops-radar-pill {
|
|
11115
|
+
display: inline-flex;
|
|
11116
|
+
align-items: center;
|
|
11117
|
+
gap: 0.35rem;
|
|
11118
|
+
border: 1px solid #e5e7eb;
|
|
11119
|
+
background: #fff;
|
|
11120
|
+
color: #374151;
|
|
11121
|
+
border-radius: 999px;
|
|
11122
|
+
padding: 0.3rem 0.7rem;
|
|
11123
|
+
font-size: 0.75rem;
|
|
11124
|
+
line-height: 1;
|
|
11125
|
+
cursor: pointer;
|
|
11126
|
+
transition:
|
|
11127
|
+
border-color 0.12s ease,
|
|
11128
|
+
background-color 0.12s ease;
|
|
11129
|
+
}
|
|
11130
|
+
|
|
11131
|
+
.fleet-ops-radar-pill:hover {
|
|
11132
|
+
border-color: #bfdbfe;
|
|
11133
|
+
}
|
|
11134
|
+
|
|
11135
|
+
.fleet-ops-radar-pill.is-active {
|
|
11136
|
+
background: #3485e2;
|
|
11137
|
+
border-color: #3485e2;
|
|
11138
|
+
color: #fff;
|
|
11139
|
+
}
|
|
11140
|
+
|
|
11141
|
+
.fleet-ops-radar-pill.is-empty:not(.is-active) {
|
|
11142
|
+
color: #9ca3af;
|
|
11143
|
+
}
|
|
11144
|
+
|
|
11145
|
+
.fleet-ops-radar-pill-dot {
|
|
11146
|
+
width: 6px;
|
|
11147
|
+
height: 6px;
|
|
11148
|
+
border-radius: 3px;
|
|
11149
|
+
background: #e11d48;
|
|
11150
|
+
}
|
|
11151
|
+
|
|
11152
|
+
.fleet-ops-radar-pill.is-active .fleet-ops-radar-pill-dot {
|
|
11153
|
+
background: #fecdd3;
|
|
11154
|
+
}
|
|
11155
|
+
|
|
11156
|
+
.fleet-ops-radar-pill-count {
|
|
11157
|
+
font-weight: 800;
|
|
11158
|
+
}
|
|
11159
|
+
|
|
11160
|
+
.fleet-ops-radar-pill-clear {
|
|
11161
|
+
font-size: 0.7rem;
|
|
11162
|
+
opacity: 0.7;
|
|
11163
|
+
}
|
|
11164
|
+
|
|
11165
|
+
/* Status tabs and saved views. */
|
|
11166
|
+
.fleet-ops-radar-view-bar {
|
|
11167
|
+
display: flex;
|
|
11168
|
+
align-items: flex-end;
|
|
11169
|
+
gap: 1rem;
|
|
11170
|
+
border-bottom: 1px solid #e5e7eb;
|
|
11171
|
+
}
|
|
11172
|
+
|
|
11173
|
+
.fleet-ops-radar-tabs {
|
|
11174
|
+
display: flex;
|
|
11175
|
+
gap: 1rem;
|
|
11176
|
+
}
|
|
11177
|
+
|
|
11178
|
+
.fleet-ops-radar-tab {
|
|
11179
|
+
border: 0;
|
|
11180
|
+
background: transparent;
|
|
11181
|
+
padding: 0 1px 0.55rem;
|
|
11182
|
+
border-bottom: 2px solid transparent;
|
|
11183
|
+
font-size: 0.8125rem;
|
|
11184
|
+
color: #6b7280;
|
|
11185
|
+
cursor: pointer;
|
|
11186
|
+
display: inline-flex;
|
|
11187
|
+
gap: 0.35rem;
|
|
11188
|
+
}
|
|
11189
|
+
|
|
11190
|
+
.fleet-ops-radar-tab.is-active {
|
|
11191
|
+
color: #111827;
|
|
11192
|
+
font-weight: 700;
|
|
11193
|
+
border-bottom-color: #3485e2;
|
|
11194
|
+
}
|
|
11195
|
+
|
|
11196
|
+
.fleet-ops-radar-tab-count {
|
|
11197
|
+
color: #6b7280;
|
|
11198
|
+
font-weight: 600;
|
|
11199
|
+
}
|
|
11200
|
+
|
|
11201
|
+
.fleet-ops-radar-view-bar-right {
|
|
11202
|
+
margin-left: auto;
|
|
11203
|
+
display: flex;
|
|
11204
|
+
align-items: center;
|
|
11205
|
+
gap: 0.5rem;
|
|
11206
|
+
padding-bottom: 0.4rem;
|
|
11207
|
+
font-size: 0.75rem;
|
|
11208
|
+
color: #6b7280;
|
|
11209
|
+
}
|
|
11210
|
+
|
|
11211
|
+
.fleet-ops-radar-view-bar-label {
|
|
11212
|
+
font-size: 0.65rem;
|
|
11213
|
+
font-weight: 800;
|
|
11214
|
+
letter-spacing: 0.06em;
|
|
11215
|
+
text-transform: uppercase;
|
|
11216
|
+
}
|
|
11217
|
+
|
|
11218
|
+
.fleet-ops-radar-saved-view {
|
|
11219
|
+
display: inline-flex;
|
|
11220
|
+
align-items: center;
|
|
11221
|
+
box-sizing: border-box;
|
|
11222
|
+
height: 1.625rem;
|
|
11223
|
+
gap: 0.35rem;
|
|
11224
|
+
border: 1px solid #e5e7eb;
|
|
11225
|
+
background: #fff;
|
|
11226
|
+
border-radius: 0.375rem;
|
|
11227
|
+
padding: 0 0.55rem;
|
|
11228
|
+
line-height: 1;
|
|
11229
|
+
font-size: 0.75rem;
|
|
11230
|
+
color: #374151;
|
|
11231
|
+
cursor: pointer;
|
|
11232
|
+
}
|
|
11233
|
+
|
|
11234
|
+
.fleet-ops-radar-saved-view.is-active {
|
|
11235
|
+
border-color: #3485e2;
|
|
11236
|
+
color: #1c6cc7;
|
|
11237
|
+
background: #eff6ff;
|
|
11238
|
+
}
|
|
11239
|
+
|
|
11240
|
+
.fleet-ops-radar-saved-view-apply,
|
|
11241
|
+
.fleet-ops-radar-saved-view-delete {
|
|
11242
|
+
border: 0;
|
|
11243
|
+
background: transparent;
|
|
11244
|
+
padding: 0;
|
|
11245
|
+
color: inherit;
|
|
11246
|
+
font: inherit;
|
|
11247
|
+
cursor: pointer;
|
|
11248
|
+
display: inline-flex;
|
|
11249
|
+
align-items: center;
|
|
11250
|
+
gap: 0.35rem;
|
|
11251
|
+
}
|
|
11252
|
+
|
|
11253
|
+
.fleet-ops-radar-saved-view-delete {
|
|
11254
|
+
opacity: 0.6;
|
|
11255
|
+
font-size: 0.7rem;
|
|
11256
|
+
}
|
|
11257
|
+
|
|
11258
|
+
.fleet-ops-radar-saved-view-delete:hover {
|
|
11259
|
+
opacity: 1;
|
|
11260
|
+
}
|
|
11261
|
+
|
|
11262
|
+
.fleet-ops-radar-saved-view-save {
|
|
11263
|
+
font: inherit;
|
|
11264
|
+
font-size: 0.75rem;
|
|
11265
|
+
}
|
|
11266
|
+
|
|
11267
|
+
/* The bulk bar: appears above the list while something is selected. */
|
|
11268
|
+
.fleet-ops-radar-bulk-bar {
|
|
11269
|
+
display: flex;
|
|
11270
|
+
flex-wrap: wrap;
|
|
11271
|
+
align-items: center;
|
|
11272
|
+
gap: 0.6rem;
|
|
11273
|
+
border: 1px solid #bfdbfe;
|
|
11274
|
+
background: #eff6ff;
|
|
11275
|
+
border-radius: 0.5rem;
|
|
11276
|
+
padding: 0.5rem 0.75rem;
|
|
11277
|
+
font-size: 0.78rem;
|
|
11278
|
+
color: #1e3a8a;
|
|
11279
|
+
}
|
|
11280
|
+
|
|
11281
|
+
.fleet-ops-radar-bulk-bar .fleet-ops-radar-row-check {
|
|
11282
|
+
color: #3485e2;
|
|
11283
|
+
}
|
|
11284
|
+
|
|
11285
|
+
.fleet-ops-radar-bulk-copy {
|
|
11286
|
+
display: flex;
|
|
11287
|
+
flex-direction: column;
|
|
11288
|
+
line-height: 1.2;
|
|
11289
|
+
}
|
|
11290
|
+
|
|
11291
|
+
.fleet-ops-radar-bulk-actions {
|
|
11292
|
+
margin-left: auto;
|
|
11293
|
+
display: flex;
|
|
11294
|
+
flex-wrap: wrap;
|
|
11295
|
+
align-items: center;
|
|
11296
|
+
gap: 0.35rem;
|
|
11297
|
+
}
|
|
11298
|
+
|
|
11299
|
+
body[data-theme='dark'] .fleet-ops-radar-bulk-bar {
|
|
11300
|
+
background: rgba(28, 108, 199, 0.18);
|
|
11301
|
+
border-color: #1c6cc7;
|
|
11302
|
+
color: #bfdbfe;
|
|
11303
|
+
}
|
|
11304
|
+
|
|
11305
|
+
/* The list card, its group headers and rows. */
|
|
11306
|
+
.fleet-ops-radar-list {
|
|
11307
|
+
background: #fff;
|
|
11308
|
+
border: 1px solid #e5e7eb;
|
|
11309
|
+
border-radius: 0.5rem;
|
|
11310
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
11311
|
+
overflow: hidden;
|
|
11312
|
+
}
|
|
11313
|
+
|
|
11314
|
+
.fleet-ops-radar-group-header {
|
|
11315
|
+
display: flex;
|
|
11316
|
+
align-items: center;
|
|
11317
|
+
gap: 0.5rem;
|
|
11318
|
+
padding: 0.45rem 0.75rem;
|
|
11319
|
+
border-bottom: 1px solid #e5e7eb;
|
|
11320
|
+
background: #f9fafb;
|
|
11321
|
+
font-size: 0.65rem;
|
|
11322
|
+
font-weight: 800;
|
|
11323
|
+
letter-spacing: 0.06em;
|
|
11324
|
+
text-transform: uppercase;
|
|
11325
|
+
color: #6b7280;
|
|
11326
|
+
}
|
|
11327
|
+
|
|
11328
|
+
.fleet-ops-radar-group-header.is-overdue {
|
|
11329
|
+
background: #fff1f2;
|
|
11330
|
+
border-bottom-color: #fecdd3;
|
|
11331
|
+
color: #be123c;
|
|
11332
|
+
}
|
|
11333
|
+
|
|
11334
|
+
.fleet-ops-radar-group-header.is-today {
|
|
11335
|
+
background: #fffbeb;
|
|
11336
|
+
border-bottom-color: #fde68a;
|
|
11337
|
+
color: #b45309;
|
|
11338
|
+
}
|
|
11339
|
+
|
|
11340
|
+
.fleet-ops-radar-group-count {
|
|
11341
|
+
font-weight: 800;
|
|
11342
|
+
}
|
|
11343
|
+
|
|
11344
|
+
.fleet-ops-radar-row {
|
|
11345
|
+
display: grid;
|
|
11346
|
+
grid-template-columns: 1.25rem 5.25rem 8px minmax(0, 1fr) auto;
|
|
11347
|
+
align-items: center;
|
|
11348
|
+
gap: 0.6rem;
|
|
11349
|
+
padding: 0.55rem 0.75rem;
|
|
11350
|
+
border-bottom: 1px solid #f3f4f6;
|
|
11351
|
+
position: relative;
|
|
11352
|
+
outline: none;
|
|
11353
|
+
transition: background-color 0.12s ease;
|
|
11354
|
+
}
|
|
11355
|
+
|
|
11356
|
+
.fleet-ops-radar-row:last-child {
|
|
11357
|
+
border-bottom: 0;
|
|
11358
|
+
}
|
|
11359
|
+
|
|
11360
|
+
.fleet-ops-radar-row:hover,
|
|
11361
|
+
.fleet-ops-radar-row.is-focused {
|
|
11362
|
+
background: #f9fafb;
|
|
11363
|
+
}
|
|
11364
|
+
|
|
11365
|
+
.fleet-ops-radar-row.is-focused {
|
|
11366
|
+
box-shadow: inset 3px 0 0 #3485e2;
|
|
11367
|
+
}
|
|
11368
|
+
|
|
11369
|
+
.fleet-ops-radar-row.is-selected {
|
|
11370
|
+
background: #eff6ff;
|
|
11371
|
+
}
|
|
11372
|
+
|
|
11373
|
+
.fleet-ops-radar-row-check {
|
|
11374
|
+
display: flex;
|
|
11375
|
+
align-items: center;
|
|
11376
|
+
justify-content: center;
|
|
11377
|
+
border: 0;
|
|
11378
|
+
background: transparent;
|
|
11379
|
+
padding: 0;
|
|
11380
|
+
color: #9ca3af;
|
|
11381
|
+
cursor: pointer;
|
|
11382
|
+
font-size: 0.85rem;
|
|
11383
|
+
line-height: 1;
|
|
11384
|
+
}
|
|
11385
|
+
|
|
11386
|
+
.fleet-ops-radar-row.is-selected .fleet-ops-radar-row-check {
|
|
11387
|
+
color: #3485e2;
|
|
11388
|
+
}
|
|
11389
|
+
|
|
11390
|
+
.fleet-ops-radar-row-check > div {
|
|
11391
|
+
align-items: center;
|
|
11392
|
+
}
|
|
11393
|
+
|
|
11394
|
+
.fleet-ops-radar-row-chip .status-badge > span {
|
|
11395
|
+
width: 100%;
|
|
11396
|
+
justify-content: center;
|
|
11397
|
+
font-size: 0.6rem;
|
|
11398
|
+
font-weight: 800;
|
|
11399
|
+
letter-spacing: 0.04em;
|
|
11400
|
+
text-transform: uppercase;
|
|
11401
|
+
padding: 2px 5px;
|
|
11402
|
+
}
|
|
11403
|
+
|
|
11404
|
+
.fleet-ops-radar-severity {
|
|
11405
|
+
width: 8px;
|
|
11406
|
+
height: 8px;
|
|
11407
|
+
border-radius: 4px;
|
|
11408
|
+
background: #3485e2;
|
|
11409
|
+
}
|
|
11410
|
+
|
|
11411
|
+
.fleet-ops-radar-severity.is-critical {
|
|
11412
|
+
background: #e11d48;
|
|
11413
|
+
}
|
|
11414
|
+
|
|
11415
|
+
.fleet-ops-radar-severity.is-warning {
|
|
11416
|
+
background: #d97706;
|
|
11417
|
+
}
|
|
11418
|
+
|
|
11419
|
+
.fleet-ops-radar-row.is-acknowledged .fleet-ops-radar-severity {
|
|
11420
|
+
opacity: 0.35;
|
|
11421
|
+
}
|
|
11422
|
+
|
|
11423
|
+
.fleet-ops-radar-row-main {
|
|
11424
|
+
display: flex;
|
|
11425
|
+
align-items: center;
|
|
11426
|
+
flex-wrap: wrap;
|
|
11427
|
+
gap: 0.35rem 0.6rem;
|
|
11428
|
+
min-width: 0;
|
|
11429
|
+
}
|
|
11430
|
+
|
|
11431
|
+
.fleet-ops-radar-row-title {
|
|
11432
|
+
border: 0;
|
|
11433
|
+
background: transparent;
|
|
11434
|
+
padding: 0;
|
|
11435
|
+
font-size: 0.8125rem;
|
|
11436
|
+
font-weight: 600;
|
|
11437
|
+
color: #111827;
|
|
11438
|
+
text-align: left;
|
|
11439
|
+
cursor: pointer;
|
|
11440
|
+
}
|
|
11441
|
+
|
|
11442
|
+
.fleet-ops-radar-row-title:hover {
|
|
11443
|
+
color: #1c6cc7;
|
|
11444
|
+
}
|
|
11445
|
+
|
|
11446
|
+
.fleet-ops-radar-row.is-acknowledged .fleet-ops-radar-row-title {
|
|
11447
|
+
font-weight: 500;
|
|
11448
|
+
color: #4b5563;
|
|
11449
|
+
}
|
|
11450
|
+
|
|
11451
|
+
.fleet-ops-radar-subject {
|
|
11452
|
+
display: inline-flex;
|
|
11453
|
+
align-items: center;
|
|
11454
|
+
gap: 0.35rem;
|
|
11455
|
+
background: #f3f4f6;
|
|
11456
|
+
border-radius: 999px;
|
|
11457
|
+
padding: 2px 8px 2px 3px;
|
|
11458
|
+
font-size: 0.72rem;
|
|
11459
|
+
color: #374151;
|
|
11460
|
+
max-width: 18rem;
|
|
11461
|
+
}
|
|
11462
|
+
|
|
11463
|
+
.fleet-ops-radar-subject-label {
|
|
11464
|
+
overflow: hidden;
|
|
11465
|
+
text-overflow: ellipsis;
|
|
11466
|
+
white-space: nowrap;
|
|
11467
|
+
}
|
|
11468
|
+
|
|
11469
|
+
.fleet-ops-radar-avatar {
|
|
11470
|
+
width: 18px;
|
|
11471
|
+
height: 18px;
|
|
11472
|
+
border-radius: 9px;
|
|
11473
|
+
background: #d1d5db;
|
|
11474
|
+
color: #111827;
|
|
11475
|
+
display: inline-flex;
|
|
11476
|
+
align-items: center;
|
|
11477
|
+
justify-content: center;
|
|
11478
|
+
font-size: 0.55rem;
|
|
11479
|
+
font-weight: 800;
|
|
11480
|
+
overflow: hidden;
|
|
11481
|
+
flex: 0 0 auto;
|
|
11482
|
+
}
|
|
11483
|
+
|
|
11484
|
+
.fleet-ops-radar-avatar img {
|
|
11485
|
+
width: 100%;
|
|
11486
|
+
height: 100%;
|
|
11487
|
+
object-fit: cover;
|
|
11488
|
+
}
|
|
11489
|
+
|
|
11490
|
+
.fleet-ops-radar-avatar.is-user {
|
|
11491
|
+
background: #dbeafe;
|
|
11492
|
+
color: #1d4ed8;
|
|
11493
|
+
}
|
|
11494
|
+
|
|
11495
|
+
.fleet-ops-radar-row-meta {
|
|
11496
|
+
font-size: 0.72rem;
|
|
11497
|
+
color: #6b7280;
|
|
11498
|
+
}
|
|
11499
|
+
|
|
11500
|
+
.fleet-ops-radar-row-state {
|
|
11501
|
+
display: inline-flex;
|
|
11502
|
+
align-items: center;
|
|
11503
|
+
gap: 0.3rem;
|
|
11504
|
+
font-size: 0.72rem;
|
|
11505
|
+
color: #6b7280;
|
|
11506
|
+
}
|
|
11507
|
+
|
|
11508
|
+
.fleet-ops-radar-row-state svg {
|
|
11509
|
+
font-size: 0.65rem;
|
|
11510
|
+
}
|
|
11511
|
+
|
|
11512
|
+
.fleet-ops-radar-row-side {
|
|
11513
|
+
display: flex;
|
|
11514
|
+
align-items: center;
|
|
11515
|
+
gap: 0.6rem;
|
|
11516
|
+
justify-content: flex-end;
|
|
11517
|
+
}
|
|
11518
|
+
|
|
11519
|
+
.fleet-ops-radar-row-due {
|
|
11520
|
+
font-size: 0.72rem;
|
|
11521
|
+
font-weight: 700;
|
|
11522
|
+
color: #374151;
|
|
11523
|
+
white-space: nowrap;
|
|
11524
|
+
}
|
|
11525
|
+
|
|
11526
|
+
.fleet-ops-radar-row-due.is-overdue {
|
|
11527
|
+
color: #dc2626;
|
|
11528
|
+
}
|
|
11529
|
+
|
|
11530
|
+
.fleet-ops-radar-row-due.is-none {
|
|
11531
|
+
color: #9ca3af;
|
|
11532
|
+
font-weight: 500;
|
|
11533
|
+
}
|
|
11534
|
+
|
|
11535
|
+
.fleet-ops-radar-row-assignee {
|
|
11536
|
+
display: inline-flex;
|
|
11537
|
+
align-items: center;
|
|
11538
|
+
gap: 0.35rem;
|
|
11539
|
+
font-size: 0.72rem;
|
|
11540
|
+
color: #374151;
|
|
11541
|
+
min-width: 6.5rem;
|
|
11542
|
+
}
|
|
11543
|
+
|
|
11544
|
+
.fleet-ops-radar-row-assignee.is-empty {
|
|
11545
|
+
color: #9ca3af;
|
|
11546
|
+
}
|
|
11547
|
+
|
|
11548
|
+
/* The quick-action rail: fixed width so the row never reflows on hover. */
|
|
11549
|
+
.fleet-ops-radar-row-rail {
|
|
11550
|
+
display: flex;
|
|
11551
|
+
align-items: center;
|
|
11552
|
+
gap: 0.25rem;
|
|
11553
|
+
opacity: 0;
|
|
11554
|
+
transition: opacity 0.12s ease;
|
|
11555
|
+
}
|
|
11556
|
+
|
|
11557
|
+
.fleet-ops-radar-row:hover .fleet-ops-radar-row-rail,
|
|
11558
|
+
.fleet-ops-radar-row.is-focused .fleet-ops-radar-row-rail,
|
|
11559
|
+
.fleet-ops-radar-row-rail:focus-within {
|
|
11560
|
+
opacity: 1;
|
|
11561
|
+
}
|
|
11562
|
+
|
|
11563
|
+
/* The snooze DropdownButton wraps its button in a trigger; flatten it so it lines up. */
|
|
11564
|
+
.fleet-ops-radar-row-rail .ember-basic-dropdown,
|
|
11565
|
+
.fleet-ops-radar-row-rail .ember-basic-dropdown-trigger,
|
|
11566
|
+
.fleet-ops-radar-bulk-actions .ember-basic-dropdown,
|
|
11567
|
+
.fleet-ops-radar-bulk-actions .ember-basic-dropdown-trigger {
|
|
11568
|
+
display: inline-flex;
|
|
11569
|
+
align-items: center;
|
|
11570
|
+
}
|
|
11571
|
+
|
|
11572
|
+
.fleet-ops-radar-row-rail .btn-wrapper,
|
|
11573
|
+
.fleet-ops-radar-row-rail .btn-wrapper > .btn,
|
|
11574
|
+
.fleet-ops-radar-bulk-actions .btn-wrapper,
|
|
11575
|
+
.fleet-ops-radar-bulk-actions .btn-wrapper > .btn {
|
|
11576
|
+
height: 1.75rem;
|
|
11577
|
+
}
|
|
11578
|
+
|
|
11579
|
+
.fleet-ops-radar-row-rail .btn-wrapper > .btn,
|
|
11580
|
+
.fleet-ops-radar-bulk-actions .btn-wrapper > .btn {
|
|
11581
|
+
display: inline-flex;
|
|
11582
|
+
align-items: center;
|
|
11583
|
+
padding-top: 0;
|
|
11584
|
+
padding-bottom: 0;
|
|
11585
|
+
}
|
|
11586
|
+
|
|
11587
|
+
.fleet-ops-radar-row-open {
|
|
11588
|
+
display: inline-flex;
|
|
11589
|
+
align-items: center;
|
|
11590
|
+
justify-content: center;
|
|
11591
|
+
border: 0;
|
|
11592
|
+
background: transparent;
|
|
11593
|
+
color: #9ca3af;
|
|
11594
|
+
cursor: pointer;
|
|
11595
|
+
padding: 0.15rem;
|
|
11596
|
+
font-size: 0.7rem;
|
|
11597
|
+
line-height: 1;
|
|
11598
|
+
}
|
|
11599
|
+
|
|
11600
|
+
.fleet-ops-radar-row-open svg {
|
|
11601
|
+
width: 0.7rem;
|
|
11602
|
+
height: 0.7rem;
|
|
11603
|
+
}
|
|
11604
|
+
|
|
11605
|
+
.fleet-ops-radar-row-open:hover {
|
|
11606
|
+
color: #1c6cc7;
|
|
11607
|
+
}
|
|
11608
|
+
|
|
11609
|
+
@media (width <= 1023px) {
|
|
11610
|
+
.fleet-ops-radar-row {
|
|
11611
|
+
grid-template-columns: 1.25rem minmax(0, 1fr);
|
|
11612
|
+
}
|
|
11613
|
+
|
|
11614
|
+
.fleet-ops-radar-row-chip,
|
|
11615
|
+
.fleet-ops-radar-severity {
|
|
11616
|
+
display: none;
|
|
11617
|
+
}
|
|
11618
|
+
|
|
11619
|
+
.fleet-ops-radar-row-side {
|
|
11620
|
+
grid-column: 2;
|
|
11621
|
+
justify-content: flex-start;
|
|
11622
|
+
}
|
|
11623
|
+
|
|
11624
|
+
.fleet-ops-radar-row-rail {
|
|
11625
|
+
opacity: 1;
|
|
11626
|
+
}
|
|
11627
|
+
}
|
|
11628
|
+
|
|
11629
|
+
/* Footer: keys and paging, a full-width bar pinned to the bottom of the page while the list scrolls. */
|
|
11630
|
+
.fleet-ops-radar-footer {
|
|
11631
|
+
position: sticky;
|
|
11632
|
+
bottom: 0;
|
|
11633
|
+
z-index: 20;
|
|
11634
|
+
display: flex;
|
|
11635
|
+
flex-wrap: wrap;
|
|
11636
|
+
align-items: center;
|
|
11637
|
+
gap: 0.5rem 1.25rem;
|
|
11638
|
+
width: 100%;
|
|
11639
|
+
box-sizing: border-box;
|
|
11640
|
+
|
|
11641
|
+
/* The sidebar's attribution footer: 0.75rem padding either side of a
|
|
11642
|
+
0.875rem line plus its 1px top border, so the two borders line up. */
|
|
11643
|
+
min-height: 2.4375rem;
|
|
11644
|
+
margin: 0;
|
|
11645
|
+
padding: 0.25rem 1rem;
|
|
11646
|
+
background: #fff;
|
|
11647
|
+
border-top: 1px solid #e5e7eb;
|
|
11648
|
+
box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.06);
|
|
11649
|
+
font-size: 0.72rem;
|
|
11650
|
+
color: #6b7280;
|
|
11651
|
+
}
|
|
11652
|
+
|
|
11653
|
+
@media (width >= 768px) {
|
|
11654
|
+
.fleet-ops-radar-footer {
|
|
11655
|
+
flex-wrap: nowrap;
|
|
11656
|
+
height: 2.4375rem;
|
|
11657
|
+
padding: 0 1.5rem;
|
|
11658
|
+
overflow: hidden;
|
|
11659
|
+
}
|
|
11660
|
+
}
|
|
11661
|
+
|
|
11662
|
+
.fleet-ops-radar-footer-meta {
|
|
11663
|
+
margin-left: auto;
|
|
11664
|
+
display: flex;
|
|
11665
|
+
align-items: center;
|
|
11666
|
+
gap: 0.75rem;
|
|
11667
|
+
}
|
|
11668
|
+
|
|
11669
|
+
.fleet-ops-radar-footer-meta .fleet-ops-radar-paging {
|
|
11670
|
+
margin-left: 0;
|
|
11671
|
+
}
|
|
11672
|
+
|
|
11673
|
+
.fleet-ops-radar-footer .btn-wrapper,
|
|
11674
|
+
.fleet-ops-radar-footer .btn-wrapper > .btn {
|
|
11675
|
+
height: 1.5rem;
|
|
11676
|
+
}
|
|
11677
|
+
|
|
11678
|
+
.fleet-ops-radar-footer .btn-wrapper > .btn {
|
|
11679
|
+
display: inline-flex;
|
|
11680
|
+
align-items: center;
|
|
11681
|
+
padding-top: 0;
|
|
11682
|
+
padding-bottom: 0;
|
|
11683
|
+
}
|
|
11684
|
+
|
|
11685
|
+
.fleet-ops-radar-keys {
|
|
11686
|
+
display: flex;
|
|
11687
|
+
flex-wrap: wrap;
|
|
11688
|
+
gap: 0.75rem;
|
|
11689
|
+
}
|
|
11690
|
+
|
|
11691
|
+
.fleet-ops-radar-keys span {
|
|
11692
|
+
display: inline-flex;
|
|
11693
|
+
align-items: center;
|
|
11694
|
+
gap: 0.3rem;
|
|
11695
|
+
}
|
|
11696
|
+
|
|
11697
|
+
.fleet-ops-radar kbd {
|
|
11698
|
+
border: 1px solid #d1d5db;
|
|
11699
|
+
border-bottom-width: 2px;
|
|
11700
|
+
border-radius: 4px;
|
|
11701
|
+
background: #f9fafb;
|
|
11702
|
+
padding: 0 5px;
|
|
11703
|
+
font-family: inherit;
|
|
11704
|
+
font-size: 0.65rem;
|
|
11705
|
+
font-weight: 700;
|
|
11706
|
+
color: #374151;
|
|
11707
|
+
line-height: 1.3;
|
|
11708
|
+
}
|
|
11709
|
+
|
|
11710
|
+
.fleet-ops-radar-paging {
|
|
11711
|
+
margin-left: auto;
|
|
11712
|
+
display: flex;
|
|
11713
|
+
align-items: center;
|
|
11714
|
+
gap: 0.35rem;
|
|
11715
|
+
}
|
|
11716
|
+
|
|
11717
|
+
/* Empty states. */
|
|
11718
|
+
.fleet-ops-radar-empty {
|
|
11719
|
+
padding: 2.5rem 1.5rem;
|
|
11720
|
+
text-align: center;
|
|
11721
|
+
}
|
|
11722
|
+
|
|
11723
|
+
.fleet-ops-radar-empty-icon {
|
|
11724
|
+
width: 2.75rem;
|
|
11725
|
+
height: 2.75rem;
|
|
11726
|
+
border-radius: 0.5rem;
|
|
11727
|
+
background: #ecfdf5;
|
|
11728
|
+
color: #047857;
|
|
11729
|
+
display: inline-flex;
|
|
11730
|
+
align-items: center;
|
|
11731
|
+
justify-content: center;
|
|
11732
|
+
font-size: 1.1rem;
|
|
11733
|
+
margin-bottom: 0.75rem;
|
|
11734
|
+
}
|
|
11735
|
+
|
|
11736
|
+
.fleet-ops-radar-empty-icon.is-neutral {
|
|
11737
|
+
background: #f3f4f6;
|
|
11738
|
+
color: #6b7280;
|
|
11739
|
+
}
|
|
11740
|
+
|
|
11741
|
+
.fleet-ops-radar-empty-title {
|
|
11742
|
+
font-size: 0.9375rem;
|
|
11743
|
+
font-weight: 700;
|
|
11744
|
+
color: #111827;
|
|
11745
|
+
}
|
|
11746
|
+
|
|
11747
|
+
.fleet-ops-radar-empty-hint {
|
|
11748
|
+
font-size: 0.8125rem;
|
|
11749
|
+
color: #6b7280;
|
|
11750
|
+
margin-top: 0.25rem;
|
|
11751
|
+
}
|
|
11752
|
+
|
|
11753
|
+
.fleet-ops-radar-empty-schedule {
|
|
11754
|
+
margin: 1rem auto 0;
|
|
11755
|
+
max-width: 28rem;
|
|
11756
|
+
text-align: left;
|
|
11757
|
+
border: 1px solid #e5e7eb;
|
|
11758
|
+
border-radius: 0.375rem;
|
|
11759
|
+
font-size: 0.75rem;
|
|
11760
|
+
}
|
|
11761
|
+
|
|
11762
|
+
.fleet-ops-radar-empty-schedule > div {
|
|
11763
|
+
display: flex;
|
|
11764
|
+
justify-content: space-between;
|
|
11765
|
+
gap: 1rem;
|
|
11766
|
+
padding: 0.45rem 0.75rem;
|
|
11767
|
+
border-bottom: 1px solid #f3f4f6;
|
|
11768
|
+
color: #374151;
|
|
11769
|
+
}
|
|
11770
|
+
|
|
11771
|
+
.fleet-ops-radar-empty-schedule > div:last-child {
|
|
11772
|
+
border-bottom: 0;
|
|
11773
|
+
}
|
|
11774
|
+
|
|
11775
|
+
.fleet-ops-radar-empty-schedule time {
|
|
11776
|
+
color: #6b7280;
|
|
11777
|
+
white-space: nowrap;
|
|
11778
|
+
}
|
|
11779
|
+
|
|
11780
|
+
/* Drawer. */
|
|
11781
|
+
.fleet-ops-radar-drawer-section {
|
|
11782
|
+
padding: 0.875rem 1rem;
|
|
11783
|
+
border-bottom: 1px solid #e5e7eb;
|
|
11784
|
+
}
|
|
11785
|
+
|
|
11786
|
+
.fleet-ops-radar-drawer-label {
|
|
11787
|
+
font-size: 0.65rem;
|
|
11788
|
+
font-weight: 800;
|
|
11789
|
+
letter-spacing: 0.06em;
|
|
11790
|
+
text-transform: uppercase;
|
|
11791
|
+
color: #6b7280;
|
|
11792
|
+
margin-bottom: 0.4rem;
|
|
11793
|
+
}
|
|
11794
|
+
|
|
11795
|
+
.fleet-ops-radar-drawer-title {
|
|
11796
|
+
font-size: 0.9375rem;
|
|
11797
|
+
font-weight: 700;
|
|
11798
|
+
color: #111827;
|
|
11799
|
+
line-height: 1.35;
|
|
11800
|
+
}
|
|
11801
|
+
|
|
11802
|
+
.fleet-ops-radar-drawer-actions {
|
|
11803
|
+
display: flex;
|
|
11804
|
+
flex-wrap: wrap;
|
|
11805
|
+
gap: 0.4rem;
|
|
11806
|
+
}
|
|
11807
|
+
|
|
11808
|
+
.fleet-ops-radar-drawer-list {
|
|
11809
|
+
display: flex;
|
|
11810
|
+
flex-direction: column;
|
|
11811
|
+
gap: 0.35rem;
|
|
11812
|
+
font-size: 0.78rem;
|
|
11813
|
+
color: #374151;
|
|
11814
|
+
}
|
|
11815
|
+
|
|
11816
|
+
.fleet-ops-radar-drawer-list > div {
|
|
11817
|
+
display: flex;
|
|
11818
|
+
align-items: center;
|
|
11819
|
+
justify-content: space-between;
|
|
11820
|
+
gap: 0.75rem;
|
|
11821
|
+
}
|
|
11822
|
+
|
|
11823
|
+
.fleet-ops-radar-drawer-state {
|
|
11824
|
+
display: flex;
|
|
11825
|
+
flex-direction: column;
|
|
11826
|
+
gap: 0.3rem;
|
|
11827
|
+
font-size: 0.78rem;
|
|
11828
|
+
color: #374151;
|
|
11829
|
+
}
|
|
11830
|
+
|
|
11831
|
+
/* Agenda: overdue band, four lanes on a time scale, later rail, tray. */
|
|
11832
|
+
.fleet-ops-radar-agenda {
|
|
11833
|
+
display: flex;
|
|
11834
|
+
flex-direction: column;
|
|
11835
|
+
gap: 0.75rem;
|
|
11836
|
+
}
|
|
11837
|
+
|
|
11838
|
+
.fleet-ops-radar-agenda-toolbar {
|
|
11839
|
+
display: flex;
|
|
11840
|
+
flex-wrap: wrap;
|
|
11841
|
+
align-items: center;
|
|
11842
|
+
gap: 0.75rem;
|
|
11843
|
+
}
|
|
11844
|
+
|
|
11845
|
+
.fleet-ops-radar-agenda-grid {
|
|
11846
|
+
display: grid;
|
|
11847
|
+
grid-template-columns: 1fr;
|
|
11848
|
+
gap: 0.75rem;
|
|
11849
|
+
}
|
|
11850
|
+
|
|
11851
|
+
@media (width >= 1024px) {
|
|
11852
|
+
.fleet-ops-radar-agenda-grid {
|
|
11853
|
+
grid-template-columns: 11rem minmax(0, 1fr) 10rem;
|
|
11854
|
+
}
|
|
11855
|
+
}
|
|
11856
|
+
|
|
11857
|
+
.fleet-ops-radar-agenda-band,
|
|
11858
|
+
.fleet-ops-radar-agenda-scale,
|
|
11859
|
+
.fleet-ops-radar-agenda-tray {
|
|
11860
|
+
background: #fff;
|
|
11861
|
+
border: 1px solid #e5e7eb;
|
|
11862
|
+
border-radius: 0.5rem;
|
|
11863
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
11864
|
+
padding: 0.6rem 0.75rem;
|
|
11865
|
+
}
|
|
11866
|
+
|
|
11867
|
+
.fleet-ops-radar-agenda-band {
|
|
11868
|
+
display: flex;
|
|
11869
|
+
flex-direction: column;
|
|
11870
|
+
gap: 0.4rem;
|
|
11871
|
+
min-height: 12rem;
|
|
11872
|
+
}
|
|
11873
|
+
|
|
11874
|
+
.fleet-ops-radar-agenda-band-title {
|
|
11875
|
+
display: flex;
|
|
11876
|
+
align-items: center;
|
|
11877
|
+
gap: 0.35rem;
|
|
11878
|
+
font-size: 0.65rem;
|
|
11879
|
+
font-weight: 800;
|
|
11880
|
+
letter-spacing: 0.06em;
|
|
11881
|
+
text-transform: uppercase;
|
|
11882
|
+
color: #6b7280;
|
|
11883
|
+
}
|
|
11884
|
+
|
|
11885
|
+
.fleet-ops-radar-agenda-band-title.is-overdue {
|
|
11886
|
+
color: #be123c;
|
|
11887
|
+
}
|
|
11888
|
+
|
|
11889
|
+
.fleet-ops-radar-agenda-scale {
|
|
11890
|
+
display: flex;
|
|
11891
|
+
flex-direction: column;
|
|
11892
|
+
gap: 0.35rem;
|
|
11893
|
+
overflow-x: auto;
|
|
11894
|
+
}
|
|
11895
|
+
|
|
11896
|
+
.fleet-ops-radar-agenda-ruler,
|
|
11897
|
+
.fleet-ops-radar-agenda-lane {
|
|
11898
|
+
display: grid;
|
|
11899
|
+
grid-template-columns: 7rem minmax(0, 1fr);
|
|
11900
|
+
gap: 0.5rem;
|
|
11901
|
+
align-items: stretch;
|
|
11902
|
+
}
|
|
11903
|
+
|
|
11904
|
+
.fleet-ops-radar-agenda-lane-label {
|
|
11905
|
+
display: flex;
|
|
11906
|
+
align-items: center;
|
|
11907
|
+
gap: 0.4rem;
|
|
11908
|
+
font-size: 0.72rem;
|
|
11909
|
+
font-weight: 700;
|
|
11910
|
+
color: #374151;
|
|
11911
|
+
padding: 0.35rem 0;
|
|
11912
|
+
}
|
|
11913
|
+
|
|
11914
|
+
.fleet-ops-radar-agenda-track {
|
|
11915
|
+
position: relative;
|
|
11916
|
+
min-height: 2.6rem;
|
|
11917
|
+
border-radius: 0.375rem;
|
|
11918
|
+
background: repeating-linear-gradient(to right, #f3f4f6 0, #f3f4f6 1px, transparent 1px, transparent 8.333%);
|
|
11919
|
+
display: flex;
|
|
11920
|
+
flex-direction: column;
|
|
11921
|
+
gap: 0.25rem;
|
|
11922
|
+
padding: 0.3rem 0;
|
|
11923
|
+
}
|
|
11924
|
+
|
|
11925
|
+
.fleet-ops-radar-agenda-ruler .fleet-ops-radar-agenda-track {
|
|
11926
|
+
min-height: 1.4rem;
|
|
11927
|
+
background: transparent;
|
|
11928
|
+
border-bottom: 1px solid #e5e7eb;
|
|
11929
|
+
border-radius: 0;
|
|
11930
|
+
}
|
|
11931
|
+
|
|
11932
|
+
.fleet-ops-radar-agenda-tick {
|
|
11933
|
+
position: absolute;
|
|
11934
|
+
top: 0;
|
|
11935
|
+
transform: translateX(-50%);
|
|
11936
|
+
font-size: 0.65rem;
|
|
11937
|
+
color: #9ca3af;
|
|
11938
|
+
}
|
|
11939
|
+
|
|
11940
|
+
.fleet-ops-radar-agenda-now {
|
|
11941
|
+
position: absolute;
|
|
11942
|
+
top: 0;
|
|
11943
|
+
bottom: -100vh;
|
|
11944
|
+
width: 2px;
|
|
11945
|
+
background: #3485e2;
|
|
11946
|
+
z-index: 2;
|
|
11947
|
+
pointer-events: none;
|
|
11948
|
+
}
|
|
11949
|
+
|
|
11950
|
+
.fleet-ops-radar-agenda-now em {
|
|
11951
|
+
position: absolute;
|
|
11952
|
+
top: 0;
|
|
11953
|
+
left: 4px;
|
|
11954
|
+
font-style: normal;
|
|
11955
|
+
font-size: 0.6rem;
|
|
11956
|
+
font-weight: 800;
|
|
11957
|
+
color: #3485e2;
|
|
11958
|
+
background: #fff;
|
|
11959
|
+
padding: 0 3px;
|
|
11960
|
+
border-radius: 3px;
|
|
11961
|
+
}
|
|
11962
|
+
|
|
11963
|
+
.fleet-ops-radar-agenda-lane.is-drop-target .fleet-ops-radar-agenda-track {
|
|
11964
|
+
outline: 2px dashed #3485e2;
|
|
11965
|
+
outline-offset: -2px;
|
|
11966
|
+
}
|
|
11967
|
+
|
|
11968
|
+
.fleet-ops-radar-agenda-row {
|
|
11969
|
+
position: relative;
|
|
11970
|
+
height: 1.9rem;
|
|
11971
|
+
}
|
|
11972
|
+
|
|
11973
|
+
.fleet-ops-radar-agenda-empty-lane {
|
|
11974
|
+
font-size: 0.72rem;
|
|
11975
|
+
color: #9ca3af;
|
|
11976
|
+
padding: 0.5rem 0.75rem;
|
|
11977
|
+
}
|
|
11978
|
+
|
|
11979
|
+
.fleet-ops-radar-agenda-shift {
|
|
11980
|
+
position: absolute;
|
|
11981
|
+
top: 0;
|
|
11982
|
+
height: 1.8rem;
|
|
11983
|
+
display: flex;
|
|
11984
|
+
align-items: center;
|
|
11985
|
+
gap: 0.35rem;
|
|
11986
|
+
padding: 0 0.5rem 0 0.25rem;
|
|
11987
|
+
border: 1px solid #c7d2fe;
|
|
11988
|
+
background: #e0e7ff;
|
|
11989
|
+
color: #3730a3;
|
|
11990
|
+
border-radius: 0.375rem;
|
|
11991
|
+
font-size: 0.7rem;
|
|
11992
|
+
white-space: nowrap;
|
|
11993
|
+
overflow: hidden;
|
|
11994
|
+
cursor: pointer;
|
|
11995
|
+
}
|
|
11996
|
+
|
|
11997
|
+
.fleet-ops-radar-agenda-shift.is-not_online {
|
|
11998
|
+
border-color: #fecdd3;
|
|
11999
|
+
background: #fff1f2;
|
|
12000
|
+
color: #9f1239;
|
|
12001
|
+
}
|
|
12002
|
+
|
|
12003
|
+
.fleet-ops-radar-agenda-shift.has-handover {
|
|
12004
|
+
border-color: #fde68a;
|
|
12005
|
+
background: #fffbeb;
|
|
12006
|
+
color: #92400e;
|
|
12007
|
+
}
|
|
12008
|
+
|
|
12009
|
+
.fleet-ops-radar-agenda-shift.is-upcoming {
|
|
12010
|
+
opacity: 0.75;
|
|
12011
|
+
}
|
|
12012
|
+
|
|
12013
|
+
.fleet-ops-radar-agenda-shift.is-ended {
|
|
12014
|
+
opacity: 0.45;
|
|
12015
|
+
}
|
|
12016
|
+
|
|
12017
|
+
.fleet-ops-radar-agenda-shift-label {
|
|
12018
|
+
font-weight: 700;
|
|
12019
|
+
}
|
|
12020
|
+
|
|
12021
|
+
.fleet-ops-radar-agenda-shift-meta {
|
|
12022
|
+
opacity: 0.8;
|
|
12023
|
+
overflow: hidden;
|
|
12024
|
+
text-overflow: ellipsis;
|
|
12025
|
+
}
|
|
12026
|
+
|
|
12027
|
+
.fleet-ops-radar-agenda-entry {
|
|
12028
|
+
display: inline-flex;
|
|
12029
|
+
align-items: center;
|
|
12030
|
+
gap: 0.35rem;
|
|
12031
|
+
max-width: 100%;
|
|
12032
|
+
border: 1px solid #e5e7eb;
|
|
12033
|
+
background: #fff;
|
|
12034
|
+
border-radius: 0.375rem;
|
|
12035
|
+
padding: 0.25rem 0.5rem;
|
|
12036
|
+
font-size: 0.7rem;
|
|
12037
|
+
color: #374151;
|
|
12038
|
+
text-align: left;
|
|
12039
|
+
cursor: pointer;
|
|
12040
|
+
white-space: nowrap;
|
|
12041
|
+
}
|
|
12042
|
+
|
|
12043
|
+
.fleet-ops-radar-agenda-entry.is-positioned {
|
|
12044
|
+
position: absolute;
|
|
12045
|
+
top: 0;
|
|
12046
|
+
height: 1.8rem;
|
|
12047
|
+
max-width: 22rem;
|
|
12048
|
+
}
|
|
12049
|
+
|
|
12050
|
+
.fleet-ops-radar-agenda-entry.is-compact {
|
|
12051
|
+
white-space: normal;
|
|
12052
|
+
}
|
|
12053
|
+
|
|
12054
|
+
.fleet-ops-radar-agenda-entry.is-planned {
|
|
12055
|
+
border-style: dashed;
|
|
12056
|
+
}
|
|
12057
|
+
|
|
12058
|
+
.fleet-ops-radar-agenda-entry:hover {
|
|
12059
|
+
border-color: #bfdbfe;
|
|
12060
|
+
}
|
|
12061
|
+
|
|
12062
|
+
.fleet-ops-radar-agenda-entry strong {
|
|
12063
|
+
color: #111827;
|
|
12064
|
+
}
|
|
12065
|
+
|
|
12066
|
+
.fleet-ops-radar-agenda-entry-title {
|
|
12067
|
+
overflow: hidden;
|
|
12068
|
+
text-overflow: ellipsis;
|
|
12069
|
+
}
|
|
12070
|
+
|
|
12071
|
+
.fleet-ops-radar-agenda-entry-time {
|
|
12072
|
+
color: #6b7280;
|
|
12073
|
+
font-weight: 700;
|
|
12074
|
+
}
|
|
12075
|
+
|
|
12076
|
+
.fleet-ops-radar-agenda-grip {
|
|
12077
|
+
color: #9ca3af;
|
|
12078
|
+
cursor: grab;
|
|
12079
|
+
}
|
|
12080
|
+
|
|
12081
|
+
.fleet-ops-radar-agenda-tray-items {
|
|
12082
|
+
display: flex;
|
|
12083
|
+
flex-wrap: wrap;
|
|
12084
|
+
gap: 0.4rem;
|
|
12085
|
+
margin-top: 0.5rem;
|
|
12086
|
+
}
|
|
12087
|
+
|
|
12088
|
+
/* Handover card: floats above the page bottom-right. */
|
|
12089
|
+
.fleet-ops-radar-handover {
|
|
12090
|
+
position: fixed;
|
|
12091
|
+
right: 1.25rem;
|
|
12092
|
+
bottom: 1.25rem;
|
|
12093
|
+
width: min(26rem, calc(100vw - 2.5rem));
|
|
12094
|
+
z-index: 60;
|
|
12095
|
+
background: #fff;
|
|
12096
|
+
border: 1px solid #fde68a;
|
|
12097
|
+
border-radius: 0.5rem;
|
|
12098
|
+
box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
|
|
12099
|
+
padding: 0.75rem 0.9rem;
|
|
12100
|
+
display: flex;
|
|
12101
|
+
flex-direction: column;
|
|
12102
|
+
gap: 0.6rem;
|
|
12103
|
+
font-size: 0.78rem;
|
|
12104
|
+
}
|
|
12105
|
+
|
|
12106
|
+
.fleet-ops-radar-handover-head {
|
|
12107
|
+
display: flex;
|
|
12108
|
+
align-items: center;
|
|
12109
|
+
gap: 0.5rem;
|
|
12110
|
+
}
|
|
12111
|
+
|
|
12112
|
+
.fleet-ops-radar-handover-title {
|
|
12113
|
+
font-weight: 700;
|
|
12114
|
+
color: #111827;
|
|
12115
|
+
}
|
|
12116
|
+
|
|
12117
|
+
.fleet-ops-radar-handover-orders {
|
|
12118
|
+
display: flex;
|
|
12119
|
+
flex-direction: column;
|
|
12120
|
+
gap: 0.25rem;
|
|
12121
|
+
}
|
|
12122
|
+
|
|
12123
|
+
.fleet-ops-radar-handover-order {
|
|
12124
|
+
display: flex;
|
|
12125
|
+
flex-wrap: wrap;
|
|
12126
|
+
gap: 0.4rem;
|
|
12127
|
+
align-items: center;
|
|
12128
|
+
padding: 0.3rem 0.5rem;
|
|
12129
|
+
border: 1px solid #e5e7eb;
|
|
12130
|
+
border-radius: 0.375rem;
|
|
12131
|
+
color: #374151;
|
|
12132
|
+
}
|
|
12133
|
+
|
|
12134
|
+
.fleet-ops-radar-handover-order.is-late {
|
|
12135
|
+
border-color: #fde68a;
|
|
12136
|
+
background: #fffbeb;
|
|
12137
|
+
}
|
|
12138
|
+
|
|
12139
|
+
.fleet-ops-radar-handover-late {
|
|
12140
|
+
color: #b45309;
|
|
12141
|
+
font-weight: 700;
|
|
12142
|
+
font-size: 0.68rem;
|
|
12143
|
+
}
|
|
12144
|
+
|
|
12145
|
+
.fleet-ops-radar-handover-cover {
|
|
12146
|
+
display: flex;
|
|
12147
|
+
align-items: center;
|
|
12148
|
+
gap: 0.5rem;
|
|
12149
|
+
}
|
|
12150
|
+
|
|
12151
|
+
@media print {
|
|
12152
|
+
.fleet-ops-control-hub-header,
|
|
12153
|
+
.fleet-ops-radar-agenda-toolbar,
|
|
12154
|
+
.fleet-ops-radar-briefing,
|
|
12155
|
+
.fleet-ops-radar-footer,
|
|
12156
|
+
.fleet-ops-radar-handover,
|
|
12157
|
+
.next-content-overlay {
|
|
12158
|
+
display: none !important;
|
|
12159
|
+
}
|
|
12160
|
+
|
|
12161
|
+
.fleet-ops-radar-agenda-grid {
|
|
12162
|
+
grid-template-columns: 1fr;
|
|
12163
|
+
}
|
|
12164
|
+
|
|
12165
|
+
.fleet-ops-radar-agenda-scale {
|
|
12166
|
+
overflow: visible;
|
|
12167
|
+
}
|
|
12168
|
+
}
|
|
12169
|
+
|
|
12170
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-band,
|
|
12171
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-scale,
|
|
12172
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-tray,
|
|
12173
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-entry,
|
|
12174
|
+
body[data-theme='dark'] .fleet-ops-radar-handover,
|
|
12175
|
+
body[data-theme='dark'] .fleet-ops-radar-handover-order {
|
|
12176
|
+
background: #1f2937;
|
|
12177
|
+
border-color: #374151;
|
|
12178
|
+
color: #d1d5db;
|
|
12179
|
+
}
|
|
12180
|
+
|
|
12181
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-lane-label,
|
|
12182
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-entry strong,
|
|
12183
|
+
body[data-theme='dark'] .fleet-ops-radar-handover-title {
|
|
12184
|
+
color: #f9fafb;
|
|
12185
|
+
}
|
|
12186
|
+
|
|
12187
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-track {
|
|
12188
|
+
background: repeating-linear-gradient(to right, #374151 0, #374151 1px, transparent 1px, transparent 8.333%);
|
|
12189
|
+
}
|
|
12190
|
+
|
|
12191
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-ruler .fleet-ops-radar-agenda-track {
|
|
12192
|
+
background: transparent;
|
|
12193
|
+
border-bottom-color: #374151;
|
|
12194
|
+
}
|
|
12195
|
+
|
|
12196
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-now em {
|
|
12197
|
+
background: #1f2937;
|
|
12198
|
+
}
|
|
12199
|
+
|
|
12200
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-shift {
|
|
12201
|
+
background: rgba(99, 102, 241, 0.25);
|
|
12202
|
+
border-color: #4f46e5;
|
|
12203
|
+
color: #c7d2fe;
|
|
12204
|
+
}
|
|
12205
|
+
|
|
12206
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-shift.is-not_online {
|
|
12207
|
+
background: rgba(225, 29, 72, 0.18);
|
|
12208
|
+
border-color: rgba(225, 29, 72, 0.5);
|
|
12209
|
+
color: #fda4af;
|
|
12210
|
+
}
|
|
12211
|
+
|
|
12212
|
+
body[data-theme='dark'] .fleet-ops-radar-agenda-shift.has-handover,
|
|
12213
|
+
body[data-theme='dark'] .fleet-ops-radar-handover-order.is-late {
|
|
12214
|
+
background: rgba(217, 119, 6, 0.18);
|
|
12215
|
+
border-color: rgba(217, 119, 6, 0.5);
|
|
12216
|
+
color: #fcd34d;
|
|
12217
|
+
}
|
|
12218
|
+
|
|
12219
|
+
/* Modals used from Radar. */
|
|
12220
|
+
.fleet-ops-radar-modal-grid {
|
|
12221
|
+
display: grid;
|
|
12222
|
+
grid-template-columns: 1fr;
|
|
12223
|
+
gap: 0.75rem;
|
|
12224
|
+
}
|
|
12225
|
+
|
|
12226
|
+
@media (width >= 640px) {
|
|
12227
|
+
.fleet-ops-radar-modal-grid.has-two {
|
|
12228
|
+
grid-template-columns: 1fr 1fr;
|
|
12229
|
+
}
|
|
12230
|
+
}
|
|
12231
|
+
|
|
12232
|
+
/* Dark mode. */
|
|
12233
|
+
body[data-theme='dark'] .fleet-ops-radar-header-summary,
|
|
12234
|
+
body[data-theme='dark'] .fleet-ops-radar-tab,
|
|
12235
|
+
body[data-theme='dark'] .fleet-ops-radar-tab-count,
|
|
12236
|
+
body[data-theme='dark'] .fleet-ops-radar-view-bar-right,
|
|
12237
|
+
body[data-theme='dark'] .fleet-ops-radar-row-meta,
|
|
12238
|
+
body[data-theme='dark'] .fleet-ops-radar-row-state,
|
|
12239
|
+
body[data-theme='dark'] .fleet-ops-radar-footer,
|
|
12240
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-hint,
|
|
12241
|
+
body[data-theme='dark'] .fleet-ops-radar-drawer-label,
|
|
12242
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-schedule time {
|
|
12243
|
+
color: #9ca3af;
|
|
12244
|
+
}
|
|
12245
|
+
|
|
12246
|
+
body[data-theme='dark'] .fleet-ops-radar-footer,
|
|
12247
|
+
body[data-theme='dark'] .fleet-ops-radar-view-toggle,
|
|
12248
|
+
body[data-theme='dark'] .fleet-ops-radar-pill,
|
|
12249
|
+
body[data-theme='dark'] .fleet-ops-radar-saved-view,
|
|
12250
|
+
body[data-theme='dark'] .fleet-ops-radar-list,
|
|
12251
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-schedule {
|
|
12252
|
+
background: #1f2937;
|
|
12253
|
+
border-color: #374151;
|
|
12254
|
+
}
|
|
12255
|
+
|
|
12256
|
+
body[data-theme='dark'] .fleet-ops-radar-view-toggle-button,
|
|
12257
|
+
body[data-theme='dark'] .fleet-ops-radar-pill,
|
|
12258
|
+
body[data-theme='dark'] .fleet-ops-radar-saved-view,
|
|
12259
|
+
body[data-theme='dark'] .fleet-ops-radar-row-due,
|
|
12260
|
+
body[data-theme='dark'] .fleet-ops-radar-row-assignee,
|
|
12261
|
+
body[data-theme='dark'] .fleet-ops-radar-drawer-list,
|
|
12262
|
+
body[data-theme='dark'] .fleet-ops-radar-drawer-state,
|
|
12263
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-schedule > div {
|
|
12264
|
+
color: #d1d5db;
|
|
12265
|
+
}
|
|
12266
|
+
|
|
12267
|
+
body[data-theme='dark'] .fleet-ops-radar-view-toggle-button.is-active {
|
|
12268
|
+
background: #1c6cc7;
|
|
12269
|
+
color: #fff;
|
|
12270
|
+
}
|
|
12271
|
+
|
|
12272
|
+
body[data-theme='dark'] .fleet-ops-radar-pill:hover {
|
|
12273
|
+
border-color: #1c6cc7;
|
|
12274
|
+
}
|
|
12275
|
+
|
|
12276
|
+
body[data-theme='dark'] .fleet-ops-radar-pill.is-active {
|
|
12277
|
+
background: #1c6cc7;
|
|
12278
|
+
border-color: #1c6cc7;
|
|
12279
|
+
color: #fff;
|
|
12280
|
+
}
|
|
12281
|
+
|
|
12282
|
+
body[data-theme='dark'] .fleet-ops-radar-pill.is-empty:not(.is-active) {
|
|
12283
|
+
color: #6b7280;
|
|
12284
|
+
}
|
|
12285
|
+
|
|
12286
|
+
body[data-theme='dark'] .fleet-ops-radar-saved-view.is-active {
|
|
12287
|
+
background: rgba(28, 108, 199, 0.2);
|
|
12288
|
+
border-color: #1c6cc7;
|
|
12289
|
+
color: #93c5fd;
|
|
12290
|
+
}
|
|
12291
|
+
|
|
12292
|
+
body[data-theme='dark'] .fleet-ops-radar-view-bar,
|
|
12293
|
+
body[data-theme='dark'] .fleet-ops-radar-group-header,
|
|
12294
|
+
body[data-theme='dark'] .fleet-ops-radar-row,
|
|
12295
|
+
body[data-theme='dark'] .fleet-ops-radar-drawer-section,
|
|
12296
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-schedule > div {
|
|
12297
|
+
border-color: #374151;
|
|
12298
|
+
}
|
|
12299
|
+
|
|
12300
|
+
body[data-theme='dark'] .fleet-ops-radar-tab.is-active,
|
|
12301
|
+
body[data-theme='dark'] .fleet-ops-radar-row-title,
|
|
12302
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-title,
|
|
12303
|
+
body[data-theme='dark'] .fleet-ops-radar-drawer-title {
|
|
12304
|
+
color: #f9fafb;
|
|
12305
|
+
}
|
|
12306
|
+
|
|
12307
|
+
body[data-theme='dark'] .fleet-ops-radar-tab.is-active {
|
|
12308
|
+
border-bottom-color: #60a5fa;
|
|
12309
|
+
}
|
|
12310
|
+
|
|
12311
|
+
body[data-theme='dark'] .fleet-ops-radar-group-header {
|
|
12312
|
+
background: #111827;
|
|
12313
|
+
color: #9ca3af;
|
|
12314
|
+
}
|
|
12315
|
+
|
|
12316
|
+
body[data-theme='dark'] .fleet-ops-radar-group-header.is-overdue {
|
|
12317
|
+
background: rgba(225, 29, 72, 0.15);
|
|
12318
|
+
border-bottom-color: rgba(225, 29, 72, 0.35);
|
|
12319
|
+
color: #fda4af;
|
|
12320
|
+
}
|
|
12321
|
+
|
|
12322
|
+
body[data-theme='dark'] .fleet-ops-radar-group-header.is-today {
|
|
12323
|
+
background: rgba(217, 119, 6, 0.15);
|
|
12324
|
+
border-bottom-color: rgba(217, 119, 6, 0.35);
|
|
12325
|
+
color: #fcd34d;
|
|
12326
|
+
}
|
|
12327
|
+
|
|
12328
|
+
body[data-theme='dark'] .fleet-ops-radar-row:hover,
|
|
12329
|
+
body[data-theme='dark'] .fleet-ops-radar-row.is-focused {
|
|
12330
|
+
background: #111827;
|
|
12331
|
+
}
|
|
12332
|
+
|
|
12333
|
+
body[data-theme='dark'] .fleet-ops-radar-row.is-selected {
|
|
12334
|
+
background: rgba(28, 108, 199, 0.18);
|
|
12335
|
+
}
|
|
12336
|
+
|
|
12337
|
+
body[data-theme='dark'] .fleet-ops-radar-row.is-acknowledged .fleet-ops-radar-row-title {
|
|
12338
|
+
color: #9ca3af;
|
|
12339
|
+
}
|
|
12340
|
+
|
|
12341
|
+
body[data-theme='dark'] .fleet-ops-radar-row-title:hover {
|
|
12342
|
+
color: #93c5fd;
|
|
12343
|
+
}
|
|
12344
|
+
|
|
12345
|
+
body[data-theme='dark'] .fleet-ops-radar-row-due.is-overdue {
|
|
12346
|
+
color: #fb7185;
|
|
12347
|
+
}
|
|
12348
|
+
|
|
12349
|
+
body[data-theme='dark'] .fleet-ops-radar-subject {
|
|
12350
|
+
background: #374151;
|
|
12351
|
+
color: #e5e7eb;
|
|
12352
|
+
}
|
|
12353
|
+
|
|
12354
|
+
body[data-theme='dark'] .fleet-ops-radar-avatar {
|
|
12355
|
+
background: #4b5563;
|
|
12356
|
+
color: #f9fafb;
|
|
12357
|
+
}
|
|
12358
|
+
|
|
12359
|
+
body[data-theme='dark'] .fleet-ops-radar-avatar.is-user {
|
|
12360
|
+
background: rgba(29, 78, 216, 0.35);
|
|
12361
|
+
color: #bfdbfe;
|
|
12362
|
+
}
|
|
12363
|
+
|
|
12364
|
+
body[data-theme='dark'] .fleet-ops-radar kbd {
|
|
12365
|
+
background: #111827;
|
|
12366
|
+
border-color: #4b5563;
|
|
12367
|
+
color: #d1d5db;
|
|
12368
|
+
}
|
|
12369
|
+
|
|
12370
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-icon {
|
|
12371
|
+
background: rgba(5, 150, 105, 0.2);
|
|
12372
|
+
color: #6ee7b7;
|
|
12373
|
+
}
|
|
12374
|
+
|
|
12375
|
+
body[data-theme='dark'] .fleet-ops-radar-empty-icon.is-neutral {
|
|
12376
|
+
background: #374151;
|
|
12377
|
+
color: #9ca3af;
|
|
12378
|
+
}
|
|
12379
|
+
|
|
12380
|
+
body[data-theme='dark'] .fleet-ops-radar-sources-warning {
|
|
12381
|
+
background: rgba(217, 119, 6, 0.15);
|
|
12382
|
+
border-color: rgba(217, 119, 6, 0.4);
|
|
12383
|
+
color: #fcd34d;
|
|
12384
|
+
}
|
|
12385
|
+
|
|
12386
|
+
/* ── Resource list cell ──
|
|
12387
|
+
A has-many column (trailers, devices) shows one pill per record, drawn at
|
|
12388
|
+
the identity cell's size: a 1.25rem circle, the name centred beside it,
|
|
12389
|
+
and a hover box that stays inside the cell instead of touching its border. */
|
|
12390
|
+
.resource-list-pill > a[href],
|
|
12391
|
+
.resource-list-pill > .fleetbase-pill-body {
|
|
12392
|
+
display: inline-flex;
|
|
12393
|
+
align-items: center;
|
|
12394
|
+
gap: 0.375rem;
|
|
12395
|
+
padding: 0.125rem 0.375rem;
|
|
12396
|
+
margin: 0;
|
|
12397
|
+
border-radius: 0.375rem;
|
|
12398
|
+
}
|
|
12399
|
+
|
|
12400
|
+
.resource-list-pill .fleetbase-pill-body > * + * {
|
|
12401
|
+
margin-left: 0;
|
|
12402
|
+
}
|
|
12403
|
+
|
|
12404
|
+
.resource-list-pill .fleetbase-pill-body > .relative {
|
|
12405
|
+
width: 1.25rem;
|
|
12406
|
+
height: 1.25rem;
|
|
12407
|
+
}
|
|
12408
|
+
|
|
12409
|
+
.resource-list-pill .fleetbase-pill-body img.flb--img,
|
|
12410
|
+
.resource-list-pill .fleetbase-pill-body .resource-pill-icon {
|
|
12411
|
+
width: 1.25rem;
|
|
12412
|
+
height: 1.25rem;
|
|
12413
|
+
box-shadow: none;
|
|
12414
|
+
border: 1px solid #e5e7eb;
|
|
12415
|
+
}
|
|
12416
|
+
|
|
12417
|
+
body[data-theme='dark'] .resource-list-pill .fleetbase-pill-body img.flb--img,
|
|
12418
|
+
body[data-theme='dark'] .resource-list-pill .fleetbase-pill-body .resource-pill-icon {
|
|
12419
|
+
border-color: #374151;
|
|
12420
|
+
}
|
|
12421
|
+
|
|
12422
|
+
.resource-list-pill .fleetbase-pill-body .resource-pill-online-dot {
|
|
12423
|
+
width: 0.375rem;
|
|
12424
|
+
height: 0.375rem;
|
|
12425
|
+
margin: -0.125rem 0 0 -0.125rem;
|
|
12426
|
+
}
|
|
12427
|
+
|
|
12428
|
+
.resource-list-pill .fleetbase-pill-body .text-sm {
|
|
12429
|
+
font-size: 0.875rem;
|
|
12430
|
+
line-height: 1rem;
|
|
8885
12431
|
}
|