Waseel: driver app, dispatch, POI suggestions, map fixes

This commit is contained in:
Krikorios
2026-08-25 02:57:49 +03:00
parent 899ca93cd5
commit 1d84003e0a
50 changed files with 3625 additions and 625 deletions
+16 -20
View File
@@ -1,13 +1,9 @@
// The services offered on the home screen.
//
// English-only for now. When the app gets a real language layer these are the
// intended Arabic names, chosen Levantine rather than formal MSA — "موتور" is
// what a motorcycle taxi is actually called in Lebanon, where "دراجة نارية"
// reads like a textbook translation:
// car → سيارة
// moto → موتور
// courier → توصيل طرود
// chauffeur → سائق خاص
// Labels and taglines are translation keys (resolved via `t()` at the call
// site) so each language carries its own names. The Arabic names are Levantine
// rather than formal MSA — "موتور" is what a motorcycle taxi is actually called
// in Lebanon, where "دراجة نارية" reads like a textbook translation.
export type ServiceId = "car" | "moto" | "courier" | "chauffeur";
@@ -15,10 +11,10 @@ export type Service = {
id: ServiceId;
/** MaterialCommunityIcons glyph name. */
icon: "car" | "motorbike" | "package-variant-closed" | "steering";
/** Kept to one short word so four tiles fit a phone width without scrolling. */
label: string;
/** Shown under the row once the service is selected. */
tagline: string;
/** i18n key for the short label (kept short so four tiles fit a phone width). */
labelKey: string;
/** i18n key for the tagline shown under the row once the service is selected. */
taglineKey: string;
/** Multiplier applied to the base fare for this service (car = 1.0). */
fareMultiplier: number;
};
@@ -27,29 +23,29 @@ export const SERVICES: Service[] = [
{
id: "car",
icon: "car",
label: "Car",
tagline: "An everyday ride, up to 4 seats.",
labelKey: "services.car.label",
taglineKey: "services.car.tagline",
fareMultiplier: 1.0,
},
{
id: "moto",
icon: "motorbike",
label: "Moto",
tagline: "Beat the traffic — one passenger, no luggage.",
labelKey: "services.moto.label",
taglineKey: "services.moto.tagline",
fareMultiplier: 0.7,
},
{
id: "courier",
icon: "package-variant-closed",
label: "Courier",
tagline: "Send a parcel across town without riding along.",
labelKey: "services.courier.label",
taglineKey: "services.courier.tagline",
fareMultiplier: 0.85,
},
{
id: "chauffeur",
icon: "steering",
label: "My Car",
tagline: "A driver comes to you and drives your own car.",
labelKey: "services.chauffeur.label",
taglineKey: "services.chauffeur.tagline",
fareMultiplier: 1.5,
},
];