From 73ff269edc9e05ca4850fb9f47e27a3b013945fb Mon Sep 17 00:00:00 2001 From: Meysam Azad Date: Mon, 12 Jan 2026 16:15:06 +0700 Subject: [PATCH 1/2] feat(UI): add reload button --- frontend/fontello/config.json | 2 +- frontend/src/assets/icons/fontello.css | 1 + frontend/src/assets/icons/fontello.woff2 | Bin 8140 -> 8208 bytes frontend/src/assets/style.scss | 30 +++++++++++++++++++++++ frontend/src/components/ReloadButton.vue | 19 ++++++++++++++ frontend/src/views/Bounces.vue | 3 +++ frontend/src/views/Campaigns.vue | 5 ++++ frontend/src/views/Dashboard.vue | 19 ++++++++++++++ frontend/src/views/Lists.vue | 5 ++++ frontend/src/views/Media.vue | 5 ++++ frontend/src/views/Subscribers.vue | 3 +++ frontend/src/views/Templates.vue | 6 +++++ frontend/src/views/Users.vue | 5 ++++ i18n/bg.json | 1 + i18n/ca.json | 1 + i18n/cs-cz.json | 1 + i18n/cy.json | 1 + i18n/da.json | 1 + i18n/de.json | 1 + i18n/el.json | 1 + i18n/en.json | 1 + i18n/eo.json | 1 + i18n/es.json | 1 + i18n/fi.json | 1 + i18n/fr-CA.json | 1 + i18n/fr.json | 1 + i18n/he.json | 1 + i18n/hu.json | 1 + i18n/it.json | 1 + i18n/jp.json | 1 + i18n/ko.json | 1 + i18n/ml.json | 1 + i18n/nl.json | 1 + i18n/no.json | 1 + i18n/pl.json | 1 + i18n/pt-BR.json | 1 + i18n/pt.json | 1 + i18n/ro.json | 1 + i18n/ru.json | 1 + i18n/se.json | 1 + i18n/sk.json | 1 + i18n/sl.json | 1 + i18n/tr.json | 1 + i18n/uk.json | 1 + i18n/vi.json | 1 + i18n/zh-CN.json | 1 + i18n/zh-TW.json | 1 + 47 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/ReloadButton.vue diff --git a/frontend/fontello/config.json b/frontend/fontello/config.json index 9cb2d79c2..b8c8b2626 100755 --- a/frontend/fontello/config.json +++ b/frontend/fontello/config.json @@ -15893,7 +15893,7 @@ "css": "refresh", "code": 984144, "src": "custom_icons", - "selected": false, + "selected": true, "svg": { "path": "M736.3 263.7Q689.5 218.8 628.9 192.4T500 166Q410.2 166 333 210.9T210.9 333 166 500 210.9 667 333 789.1 500 834Q615.2 834 704.1 763.7T822.3 584H736.3Q709 656.3 644.5 703.1T500 750Q431.6 750 374 716.8T283.2 626 250 500 283.2 374 374 283.2 500 250Q550.8 250 595.7 269.5T675.8 324.2L541 459H834V166Z", "width": 1000 diff --git a/frontend/src/assets/icons/fontello.css b/frontend/src/assets/icons/fontello.css index ee4874e2e..667065d23 100644 --- a/frontend/src/assets/icons/fontello.css +++ b/frontend/src/assets/icons/fontello.css @@ -118,5 +118,6 @@ .mdi-warning-empty:before { content: '\e827'; } /* '' */ .mdi-account-outline:before { content: '󰀓'; } /* '\f0013' */ .mdi-code:before { content: '󰅩'; } /* '\f0169' */ +.mdi-refresh:before { content: '󰑐'; } /* '\f0450' */ .mdi-logout-variant:before { content: '󰗽'; } /* '\f05fd' */ .mdi-wrench-outline:before { content: '󰯠'; } /* '\f0be0' */ diff --git a/frontend/src/assets/icons/fontello.woff2 b/frontend/src/assets/icons/fontello.woff2 index 5f729eea5fa7920ff75f4e52b114d6c29eaa0c51..049af414a8cc7f8d787ef075926c469b3656a5f6 100755 GIT binary patch literal 8208 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 CjJaR{ literal 8140 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 diff --git a/frontend/src/assets/style.scss b/frontend/src/assets/style.scss index cff5e279e..75ed77454 100644 --- a/frontend/src/assets/style.scss +++ b/frontend/src/assets/style.scss @@ -1372,3 +1372,33 @@ th.role-toggle-select a { width: auto; } } + +/* Reload button spin animation */ +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.spin { + animation: spin 1s linear infinite; +} + +.btn-reload { + margin-left: 0.5rem; + + .icon { + transition: transform 0.2s ease; + } + + &:hover .icon { + transform: rotate(30deg); + } + + &.is-loading .icon { + animation: spin 1s linear infinite; + } +} diff --git a/frontend/src/components/ReloadButton.vue b/frontend/src/components/ReloadButton.vue new file mode 100644 index 000000000..2c476165a --- /dev/null +++ b/frontend/src/components/ReloadButton.vue @@ -0,0 +1,19 @@ + + + diff --git a/frontend/src/views/Bounces.vue b/frontend/src/views/Bounces.vue index 5a490f105..a8a0d3a21 100644 --- a/frontend/src/views/Bounces.vue +++ b/frontend/src/views/Bounces.vue @@ -16,6 +16,7 @@ @sort="onSort">