From 09a8dc539eb414bb8c98136ce381b91784972a8f Mon Sep 17 00:00:00 2001 From: louiscklaw Date: Fri, 6 Jun 2025 13:16:31 +0800 Subject: [PATCH] update floating action button, --- .../components/ExploreContainer.css | 24 ------ .../components/ExploreContainer.scss | 26 +++++++ .../components/ExploreContainer.tsx | 13 +++- .../src/pages/DemoFloatingTabs/index.tsx | 40 ++-------- .../src/pages/DemoFloatingTabs/pages/Tab1.tsx | 25 +++++- .../theme/floating-tab-bar.css | 25 ------ .../theme/floating-tab-bar.scss | 27 +++++++ .../DemoFloatingTabs/{ => theme}/style.scss | 0 .../DemoFloatingTabs/theme/variables.css | 77 ------------------- 9 files changed, 96 insertions(+), 161 deletions(-) delete mode 100644 03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.css create mode 100644 03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.scss delete mode 100644 03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.css create mode 100644 03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.scss rename 03_source/mobile/src/pages/DemoFloatingTabs/{ => theme}/style.scss (100%) delete mode 100644 03_source/mobile/src/pages/DemoFloatingTabs/theme/variables.css diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.css b/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.css deleted file mode 100644 index e99f514..0000000 --- a/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.css +++ /dev/null @@ -1,24 +0,0 @@ -.container { - text-align: center; - position: absolute; - left: 0; - right: 0; - top: 50%; - transform: translateY(-50%); -} - -.container strong { - font-size: 20px; - line-height: 26px; -} - -.container p { - font-size: 16px; - line-height: 22px; - color: #8c8c8c; - margin: 0; -} - -.container a { - text-decoration: none; -} \ No newline at end of file diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.scss b/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.scss new file mode 100644 index 0000000..11ea3ba --- /dev/null +++ b/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.scss @@ -0,0 +1,26 @@ +.floating-tab-bar { + .container { + text-align: center; + position: absolute; + left: 0; + right: 0; + top: 50%; + transform: translateY(-50%); + } + + .container strong { + font-size: 20px; + line-height: 26px; + } + + .container p { + font-size: 16px; + line-height: 22px; + color: #8c8c8c; + margin: 0; + } + + .container a { + text-decoration: none; + } +} diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.tsx b/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.tsx index 093861b..759cc76 100644 --- a/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.tsx +++ b/03_source/mobile/src/pages/DemoFloatingTabs/components/ExploreContainer.tsx @@ -1,10 +1,19 @@ -import './ExploreContainer.css'; +import './ExploreContainer.scss'; const ExploreContainer = ({ name }) => { return (
{name} -

Explore UI Components

+

+ Explore{' '} + + UI Components + +

); }; diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/index.tsx b/03_source/mobile/src/pages/DemoFloatingTabs/index.tsx index 4408f97..71a067d 100644 --- a/03_source/mobile/src/pages/DemoFloatingTabs/index.tsx +++ b/03_source/mobile/src/pages/DemoFloatingTabs/index.tsx @@ -1,30 +1,19 @@ -import { IonIcon, IonLabel, IonRouterOutlet, IonTabBar, IonTabButton, IonTabs } from '@ionic/react'; +import { IonIcon, IonRouterOutlet, IonTabBar, IonTabButton, IonTabs } from '@ionic/react'; -import { cloudOutline, cogOutline, homeOutline, listOutline, searchOutline } from 'ionicons/icons'; +import { cogOutline, homeOutline, listOutline } from 'ionicons/icons'; import { Route, Redirect } from 'react-router'; -// import Tab1 from './AppPages/Tab1'; -// import Tab2 from './AppPages/Tab2'; - import Tab1 from './pages/Tab1'; import Tab2 from './pages/Tab2'; import Tab3 from './pages/Tab3'; -import './style.scss'; -import './theme/floating-tab-bar.css'; +import './theme/style.scss'; +import './theme/floating-tab-bar.scss'; function DemoFloatingTabs() { return ( - + - {/* - - - - - - - */} @@ -37,31 +26,18 @@ function DemoFloatingTabs() { - {/* */} - {/* - - - Dashboard - - - - Search - - */} - {/* */} - {/* Tab 1 */} + - {/* Tab 2 */} + - {/* Tab 3 */} - {' '} + ); diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/pages/Tab1.tsx b/03_source/mobile/src/pages/DemoFloatingTabs/pages/Tab1.tsx index ef9aa18..c328244 100644 --- a/03_source/mobile/src/pages/DemoFloatingTabs/pages/Tab1.tsx +++ b/03_source/mobile/src/pages/DemoFloatingTabs/pages/Tab1.tsx @@ -1,14 +1,37 @@ -import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react'; +import { + IonButton, + IonButtons, + IonContent, + IonHeader, + IonIcon, + IonPage, + IonTitle, + IonToolbar, + useIonRouter, +} from '@ionic/react'; import ExploreContainer from '../components/ExploreContainer'; import './Tab1.css'; import React from 'react'; +import { chevronBackOutline } from 'ionicons/icons'; const Tab1 = (): React.JSX.Element => { + const router = useIonRouter(); + + function handleBackClick() { + router.goBack(); + } + return ( Floating Tab Bar + + + handleBackClick()}> + + + diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.css b/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.css deleted file mode 100644 index 2c3e05e..0000000 --- a/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.css +++ /dev/null @@ -1,25 +0,0 @@ -:root { - --ion-background-color: white; - --ion-tab-bar-color: rgb(92, 123, 207); - --ion-tab-bar-color-selected: rgb(255, 255, 255); -} - -ion-tab-bar { - --background: rgb(44, 83, 192); - box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.4); - border-radius: 16px !important; - - height: 50px; - width: 90%; - padding-top: 5px; - padding-bottom: 5px; - - bottom: 20px; - position: relative; - margin: 0 auto !important; - border-top: none; -} - -ion-tab-button { - border-radius: 16px !important; -} diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.scss b/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.scss new file mode 100644 index 0000000..9533ab9 --- /dev/null +++ b/03_source/mobile/src/pages/DemoFloatingTabs/theme/floating-tab-bar.scss @@ -0,0 +1,27 @@ +.demo-floating-tabs { + * { + --ion-background-color: white; + --ion-tab-bar-color: rgb(92, 123, 207); + --ion-tab-bar-color-selected: rgb(255, 255, 255); + } + + ion-tab-bar { + --background: rgb(44, 83, 192); + box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.4); + border-radius: 16px !important; + + height: 50px; + width: 90%; + padding-top: 5px; + padding-bottom: 5px; + + bottom: 20px; + position: relative; + margin: 0 auto !important; + border-top: none; + } + + ion-tab-button { + border-radius: 16px !important; + } +} diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/style.scss b/03_source/mobile/src/pages/DemoFloatingTabs/theme/style.scss similarity index 100% rename from 03_source/mobile/src/pages/DemoFloatingTabs/style.scss rename to 03_source/mobile/src/pages/DemoFloatingTabs/theme/style.scss diff --git a/03_source/mobile/src/pages/DemoFloatingTabs/theme/variables.css b/03_source/mobile/src/pages/DemoFloatingTabs/theme/variables.css deleted file mode 100644 index 088e83c..0000000 --- a/03_source/mobile/src/pages/DemoFloatingTabs/theme/variables.css +++ /dev/null @@ -1,77 +0,0 @@ -/* Ionic Variables and Theming. For more info, please see: -http://ionicframework.com/docs/theming/ */ - -/** Ionic CSS Variables **/ -:root { - /** primary **/ - --ion-color-primary: #3880ff; - --ion-color-primary-rgb: 56, 128, 255; - --ion-color-primary-contrast: #ffffff; - --ion-color-primary-contrast-rgb: 255, 255, 255; - --ion-color-primary-shade: #3171e0; - --ion-color-primary-tint: #4c8dff; - - /** secondary **/ - --ion-color-secondary: #3dc2ff; - --ion-color-secondary-rgb: 61, 194, 255; - --ion-color-secondary-contrast: #ffffff; - --ion-color-secondary-contrast-rgb: 255, 255, 255; - --ion-color-secondary-shade: #36abe0; - --ion-color-secondary-tint: #50c8ff; - - /** tertiary **/ - --ion-color-tertiary: #5260ff; - --ion-color-tertiary-rgb: 82, 96, 255; - --ion-color-tertiary-contrast: #ffffff; - --ion-color-tertiary-contrast-rgb: 255, 255, 255; - --ion-color-tertiary-shade: #4854e0; - --ion-color-tertiary-tint: #6370ff; - - /** success **/ - --ion-color-success: #2dd36f; - --ion-color-success-rgb: 45, 211, 111; - --ion-color-success-contrast: #ffffff; - --ion-color-success-contrast-rgb: 255, 255, 255; - --ion-color-success-shade: #28ba62; - --ion-color-success-tint: #42d77d; - - /** warning **/ - --ion-color-warning: #ffc409; - --ion-color-warning-rgb: 255, 196, 9; - --ion-color-warning-contrast: #000000; - --ion-color-warning-contrast-rgb: 0, 0, 0; - --ion-color-warning-shade: #e0ac08; - --ion-color-warning-tint: #ffca22; - - /** danger **/ - --ion-color-danger: #eb445a; - --ion-color-danger-rgb: 235, 68, 90; - --ion-color-danger-contrast: #ffffff; - --ion-color-danger-contrast-rgb: 255, 255, 255; - --ion-color-danger-shade: #cf3c4f; - --ion-color-danger-tint: #ed576b; - - /** dark **/ - --ion-color-dark: #222428; - --ion-color-dark-rgb: 34, 36, 40; - --ion-color-dark-contrast: #ffffff; - --ion-color-dark-contrast-rgb: 255, 255, 255; - --ion-color-dark-shade: #1e2023; - --ion-color-dark-tint: #383a3e; - - /** medium **/ - --ion-color-medium: #92949c; - --ion-color-medium-rgb: 146, 148, 156; - --ion-color-medium-contrast: #ffffff; - --ion-color-medium-contrast-rgb: 255, 255, 255; - --ion-color-medium-shade: #808289; - --ion-color-medium-tint: #9d9fa6; - - /** light **/ - --ion-color-light: #f4f5f8; - --ion-color-light-rgb: 244, 245, 248; - --ion-color-light-contrast: #000000; - --ion-color-light-contrast-rgb: 0, 0, 0; - --ion-color-light-shade: #d7d8da; - --ion-color-light-tint: #f5f6f9; -} \ No newline at end of file