diff --git a/app/src/components/PrivateRoute/Offline.tsx b/app/src/components/PrivateRoute/Offline.tsx index 32dd9d8a6..9e35797ad 100644 --- a/app/src/components/PrivateRoute/Offline.tsx +++ b/app/src/components/PrivateRoute/Offline.tsx @@ -2,11 +2,13 @@ import { IonButton, IonContent, IonHeader, + IonIcon, IonPage, IonTitle, IonToolbar, } from "@ionic/react"; import { t } from "i18next"; +import { cloudOfflineOutline } from "ionicons/icons"; export default function Offline() { const handleClickRefresh = () => window.location.reload(); @@ -21,7 +23,7 @@ export default function Offline() {
- +

Offline

Refresh diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 99d09004e..40e72ec78 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -26,6 +26,7 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.5.0", "js-cookie": "^3.0.5", + "lucide-static": "^0.376.0", "mapbox-gl": "^2.11.0", "minisearch": "^6.3.0", "nanostores": "^0.10.0", @@ -6558,6 +6559,11 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-static": { + "version": "0.376.0", + "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.376.0.tgz", + "integrity": "sha512-FididZNu2MA0L8lUpA7CI25wEKUUh6ulOQhMnxKDI8dhy2KZMBK939Jb822fK9woIlLJvJuSxFN8tDceY7z3pA==" + }, "node_modules/magic-string": { "version": "0.30.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", diff --git a/frontend/package.json b/frontend/package.json index 201d3c224..74590dc43 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -33,6 +33,7 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.5.0", "js-cookie": "^3.0.5", + "lucide-static": "^0.376.0", "mapbox-gl": "^2.11.0", "minisearch": "^6.3.0", "nanostores": "^0.10.0", diff --git a/frontend/src/components/react/components/AddressForm.tsx b/frontend/src/components/react/components/AddressForm.tsx index 406b60fa9..1b8d197d9 100644 --- a/frontend/src/components/react/components/AddressForm.tsx +++ b/frontend/src/components/react/components/AddressForm.tsx @@ -331,7 +331,7 @@ export default function AddressForm(props: { {openCheckAddress ? ( loading ? (
-
+
) : (
diff --git a/frontend/src/components/react/components/CategoriesDropdown.tsx b/frontend/src/components/react/components/CategoriesDropdown.tsx index 4f88b3ecd..dd75a28fd 100644 --- a/frontend/src/components/react/components/CategoriesDropdown.tsx +++ b/frontend/src/components/react/components/CategoriesDropdown.tsx @@ -48,8 +48,8 @@ export default function CategoriesDropdown({ > {btnLabel} diff --git a/frontend/src/components/react/components/ChainDetailsForm.tsx b/frontend/src/components/react/components/ChainDetailsForm.tsx index 93658adf8..1daa6fa46 100644 --- a/frontend/src/components/react/components/ChainDetailsForm.tsx +++ b/frontend/src/components/react/components/ChainDetailsForm.tsx @@ -377,8 +377,8 @@ export default function ChainDetailsForm({ )}
diff --git a/frontend/src/components/react/components/ChainsList.tsx b/frontend/src/components/react/components/ChainsList.tsx index 00147ac34..7a82e6342 100644 --- a/frontend/src/components/react/components/ChainsList.tsx +++ b/frontend/src/components/react/components/ChainsList.tsx @@ -216,11 +216,11 @@ export default function ChainsList({ chains, setChains }: Props) { (!userChain && authUser?.is_root_admin) ? ( chain.published ? (
- +
) : (
- +
) ) : ( @@ -228,7 +228,7 @@ export default function ChainsList({ chains, setChains }: Props) { className="tooltip" data-tip={t("pendingApproval")} > - +
)} @@ -245,8 +245,8 @@ export default function ChainsList({ chains, setChains }: Props) { )} > {t("view")} - - + + {hasNotification ? (
) : null} @@ -259,7 +259,7 @@ export default function ChainsList({ chains, setChains }: Props) { chains?.length > 5 ? "btn-sm" : "" } ${userChain ? "" : "btn-disabled"}`} > - + {userChain ? (
    {t("remindHost")} - + - - + +
diff --git a/frontend/src/components/react/components/DataExport.tsx b/frontend/src/components/react/components/DataExport.tsx index 04fe8c52b..d1eb8d18b 100644 --- a/frontend/src/components/react/components/DataExport.tsx +++ b/frontend/src/components/react/components/DataExport.tsx @@ -66,7 +66,7 @@ export function UserDataExport(props: { data-tip={t("exportToSpreadsheet")} > {t("exportData")} - + ); } diff --git a/frontend/src/components/react/components/EventChangeForm.tsx b/frontend/src/components/react/components/EventChangeForm.tsx index 6c301c092..5e4901b95 100644 --- a/frontend/src/components/react/components/EventChangeForm.tsx +++ b/frontend/src/components/react/components/EventChangeForm.tsx @@ -414,7 +414,7 @@ export default function EventChangeForm(props: { className="btn btn-error" onClick={onImageDelete} > - + ) : null}
{values.image_url ? ( @@ -439,7 +439,7 @@ export default function EventChangeForm(props: {
diff --git a/frontend/src/components/react/components/FindChain/ChainDescription.tsx b/frontend/src/components/react/components/FindChain/ChainDescription.tsx index 6ab426384..ed9cc221b 100644 --- a/frontend/src/components/react/components/FindChain/ChainDescription.tsx +++ b/frontend/src/components/react/components/FindChain/ChainDescription.tsx @@ -46,8 +46,8 @@ export default function ChainDescription(props: Props) { diff --git a/frontend/src/components/react/components/FindChain/SearchBar.tsx b/frontend/src/components/react/components/FindChain/SearchBar.tsx index 561f8a9ab..cb422f55a 100644 --- a/frontend/src/components/react/components/FindChain/SearchBar.tsx +++ b/frontend/src/components/react/components/FindChain/SearchBar.tsx @@ -195,7 +195,7 @@ export default function SearchBar(props: Props) {
diff --git a/frontend/src/components/react/components/FindChain/Sidebar.tsx b/frontend/src/components/react/components/FindChain/Sidebar.tsx index d7561f248..d0ca302bd 100644 --- a/frontend/src/components/react/components/FindChain/Sidebar.tsx +++ b/frontend/src/components/react/components/FindChain/Sidebar.tsx @@ -141,9 +141,9 @@ export default function SideBar({ onClick={handleClose} className="absolute top-0 sm:top-2 right-2 rtl:right-auto rtl:left-2 btn btn-md sm:btn-sm text-2xl btn-circle btn-accent tooltip tooltip-left flex justify-center" > - - - + + + @@ -241,7 +241,7 @@ function SideBarChainItem(props: { onClick={handleClickViewChain} > {t("viewLoop")} - + ) : null} @@ -252,12 +252,12 @@ function SideBarChainItem(props: { userChain.is_approved ? (

{t("joined")} - +

) : (

{t("pendingApproval")} - +

) ) : props.chain.open_to_new_members ? ( @@ -268,8 +268,8 @@ function SideBarChainItem(props: { className="btn btn-sm btn-primary" > {t("join")} - - + + ) : (

@@ -279,7 +279,7 @@ function SideBarChainItem(props: { ) : (

{t("closed")} - +

)} diff --git a/frontend/src/components/react/components/Footer.tsx b/frontend/src/components/react/components/Footer.tsx index 9a7d0ed8d..2b07b38cc 100644 --- a/frontend/src/components/react/components/Footer.tsx +++ b/frontend/src/components/react/components/Footer.tsx @@ -120,7 +120,7 @@ export default function Footer(props: { pathname: string }) { - + Facebook @@ -164,7 +164,7 @@ export default function Footer(props: { pathname: string }) { aria-label="Our LinkedIn page" className="flex flex-row items-center group" > - + LinkedIn diff --git a/frontend/src/components/react/components/Navbar.tsx b/frontend/src/components/react/components/Navbar.tsx index b64733b64..213bc9df4 100644 --- a/frontend/src/components/react/components/Navbar.tsx +++ b/frontend/src/components/react/components/Navbar.tsx @@ -37,8 +37,8 @@ function Navbar(props: { pathname: string }) { className="mr-3 btn-lg btn-circle btn-ghost hover:bg-base-200 peer-checked:text-secondary peer-checked:animate-[spin-quarter_150ms_linear] flex justify-center items-center lg:hidden relative z-[60] checked:ring-2 checked:ring-offset-2 ring-teal peer-[:checked_>:nth-of-type(1)]:hidden peer-[:checked_>:nth-of-type(2)]:block cursor-pointer" aria-label="Menu" > - - + +
@@ -56,7 +56,7 @@ function Navbar(props: { pathname: string }) { href={localizePath("/loops/new/users/signup")} className="mb-3 btn btn-primary btn-outline" > - + {t("startNewLoop")} {t("findLoops")} - - + + {t("findLoops")} - - + + )} diff --git a/frontend/src/components/react/components/Newsletter.tsx b/frontend/src/components/react/components/Newsletter.tsx index b16e1071f..2942f8dd1 100644 --- a/frontend/src/components/react/components/Newsletter.tsx +++ b/frontend/src/components/react/components/Newsletter.tsx @@ -99,8 +99,8 @@ export const Newsletter = () => { type="submit" > {t("submit")} - - + +
diff --git a/frontend/src/components/react/components/Popover.tsx b/frontend/src/components/react/components/Popover.tsx index 40100903b..feac37975 100644 --- a/frontend/src/components/react/components/Popover.tsx +++ b/frontend/src/components/react/components/Popover.tsx @@ -13,7 +13,7 @@ export default function PopoverOnHover({ message, className }: IProps) { aria-label={message} data-tip={message} > - + ); } diff --git a/frontend/src/components/react/components/PopupLegal.tsx b/frontend/src/components/react/components/PopupLegal.tsx index f5b04817b..5c8ef5b8d 100644 --- a/frontend/src/components/react/components/PopupLegal.tsx +++ b/frontend/src/components/react/components/PopupLegal.tsx @@ -87,7 +87,7 @@ export default function PopupLegal({ className="absolute bottom-2 ltr:right-2 rtl:left-2 btn btn-circle btn-sm btn-secondary text-white opacity-50 hover:opacity-90 tooltip ltr:tooltip-left rtl:tooltip-right before:font-normal before:text-sm" data-tip="Scroll to the bottom." > - + @@ -112,7 +112,7 @@ export default function PopupLegal({ className="absolute bottom-2 ltr:right-2 rtl:left-2 btn btn-circle btn-sm btn-secondary text-white opacity-50 hover:opacity-90 tooltip ltr:tooltip-left rtl:tooltip-right before:font-normal before:text-sm" data-tip="Scroll to the bottom." > - + diff --git a/frontend/src/components/react/components/RouteMap/RouteMap.tsx b/frontend/src/components/react/components/RouteMap/RouteMap.tsx index 58d7de6cf..2fa334bb8 100644 --- a/frontend/src/components/react/components/RouteMap/RouteMap.tsx +++ b/frontend/src/components/react/components/RouteMap/RouteMap.tsx @@ -174,13 +174,13 @@ export default function RouteMap(props: { chain: Chain; route: UID[] }) { ); } - let lineTypeIcon = "feather-git-commit"; + let lineTypeIcon = "icon-git-commit"; let lineTypeHoverText = t("showRouteOrder"); if (lineType === "line") { - lineTypeIcon = "feather-minus"; + lineTypeIcon = "icon-minus"; lineTypeHoverText = t("showRoute"); } else if (lineType === "dot") { - lineTypeIcon = "feather-circle"; + lineTypeIcon = "icon-circle"; lineTypeHoverText = t("showAddress"); } return ( @@ -195,9 +195,7 @@ export default function RouteMap(props: { chain: Chain; route: UID[] }) { onClick={() => handleNextLineType()} data-tip={lineTypeHoverText} > - +
@@ -210,7 +208,7 @@ export default function RouteMap(props: { chain: Chain; route: UID[] }) { }`} onClick={() => handleMapZoom("+")} > - +
diff --git a/frontend/src/components/react/components/RouteMap/RouteMapPopup.tsx b/frontend/src/components/react/components/RouteMap/RouteMapPopup.tsx index b3ad5cb5e..7eb448713 100644 --- a/frontend/src/components/react/components/RouteMap/RouteMapPopup.tsx +++ b/frontend/src/components/react/components/RouteMap/RouteMapPopup.tsx @@ -66,7 +66,7 @@ export default function RouteMapPopup(props: { onClick={returnToPreviousRoute} > {t("routeUndoOptimize")} - + ) : ( )}
diff --git a/frontend/src/components/react/components/SizesDropdown.tsx b/frontend/src/components/react/components/SizesDropdown.tsx index 72b46ff65..e03157759 100644 --- a/frontend/src/components/react/components/SizesDropdown.tsx +++ b/frontend/src/components/react/components/SizesDropdown.tsx @@ -43,8 +43,8 @@ export default function SizesDropdown(props: { > {btnLabel} diff --git a/frontend/src/components/react/components/Testimonials.tsx b/frontend/src/components/react/components/Testimonials.tsx index e227b9259..6e79acf2a 100644 --- a/frontend/src/components/react/components/Testimonials.tsx +++ b/frontend/src/components/react/components/Testimonials.tsx @@ -75,28 +75,28 @@ export default function Testimonials() { onClick={() => click(CarouselOperation.MINUS)} aria-label="previous testimonial" > - +
diff --git a/frontend/src/components/react/layout/ToastManager.tsx b/frontend/src/components/react/layout/ToastManager.tsx index fdb172840..70280046f 100644 --- a/frontend/src/components/react/layout/ToastManager.tsx +++ b/frontend/src/components/react/layout/ToastManager.tsx @@ -45,23 +45,23 @@ function ToastComponent(props: { closeFunc: (id: number) => void; }) { let classes = "p-4 shadow-lg border"; - let icon = "mr-3 feather"; + let icon = "mr-3 icon"; switch (props.toast.type) { case "info": - icon += " feather-info"; + icon += " icon-info"; classes += " bg-base-100 border-teal"; break; case "success": classes += " bg-success border-success"; - icon += " feather-check-circle"; + icon += " icon-check-circle"; break; case "warning": classes += " bg-yellow border-yellow"; - icon += " feather-alert-triangle"; + icon += " icon-alert-triangle"; break; case "error": classes += " bg-error border-error"; - icon += " feather-alert-octagon"; + icon += " icon-alert-octagon"; break; } diff --git a/frontend/src/components/react/pages/About.tsx b/frontend/src/components/react/pages/About.tsx index 06f265ff5..5c1104a29 100644 --- a/frontend/src/components/react/pages/About.tsx +++ b/frontend/src/components/react/pages/About.tsx @@ -56,8 +56,8 @@ export default function About() { href={localizePath("/faq")} > {t("faq", { ns: "translation" })} - - + + diff --git a/frontend/src/components/react/pages/AdminDashboard.tsx b/frontend/src/components/react/pages/AdminDashboard.tsx index 4a42da357..91f5f5b1e 100644 --- a/frontend/src/components/react/pages/AdminDashboard.tsx +++ b/frontend/src/components/react/pages/AdminDashboard.tsx @@ -129,7 +129,7 @@ export default function AdminDashboard() { href="https://drive.google.com/drive/folders/1iMJzIcBxgApKx89hcaHhhuP5YAs_Yb27" > {t("toolkitFolder")} - + ) : null} @@ -139,14 +139,14 @@ export default function AdminDashboard() { href={localizePath("/users/edit/?user=me")} > {t("editAccount")} - + @@ -179,7 +179,7 @@ export default function AdminDashboard() { aria-label="close" htmlFor="modal-circle-loop" > -
+
- + {t("shareLink")} @@ -558,7 +558,7 @@ export default function ChainMemberList() { > {t("editLoop")} @@ -570,7 +570,7 @@ export default function ChainMemberList() { > {t("deleteLoop")} @@ -693,8 +693,8 @@ export default function ChainMemberList() { > {t("map")} @@ -1108,7 +1108,7 @@ function ParticipantsTable(props: { message: t("addCoHost"), content: () => (

- + {user.name}

), @@ -1143,11 +1143,11 @@ function ParticipantsTable(props: { className="absolute top-5 ltr:right-4 rtl:left-4 tooltip-left" />

- + {user.name}

{props.chain.name}

- +