Compare commits

...

19 commits

Author SHA1 Message Date
Alexandre Aubin
bf96e01f2d Update changelog for 12.0.2 2024-08-31 20:02:38 +02:00
Alexandre Aubin
ef314d5e3b Add make_changelog script 2024-08-31 20:01:08 +02:00
Alexandre Aubin
3b4bbe7299
Merge pull request #11 from yunohost-bot/weblate-yunohost-portal
Translations update from Weblate
2024-08-31 19:57:07 +02:00
Ivan Davydov
04d1eae217 Translated using Weblate (Russian)
Currently translated at 43.8% (25 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/ru/
2024-08-20 09:44:04 +02:00
cjdw
cd2c953d45 Translated using Weblate (Indonesian)
Currently translated at 100.0% (57 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/id/
2024-08-20 09:44:04 +02:00
cjdw
d8ffbf29d4 Translated using Weblate (Indonesian)
Currently translated at 100.0% (57 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/id/
2024-08-20 09:44:04 +02:00
cjdw
1080933b72 Translated using Weblate (Indonesian)
Currently translated at 100.0% (57 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/id/
2024-08-20 09:44:04 +02:00
cjdw
b11ca44463 Translated using Weblate (Indonesian)
Currently translated at 100.0% (57 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/id/
2024-08-20 09:44:04 +02:00
Satuk Bug
fb581767a2 Translated using Weblate (Turkish)
Currently translated at 42.1% (24 of 57 strings)

Translation: YunoHost/portal
Translate-URL: https://translate.yunohost.org/projects/yunohost/portal/tr/
2024-08-20 09:44:04 +02:00
Alexandre Aubin
eb8a2e4ec2
Merge pull request #12 from YunoHost/enh-theming
Enh: misc styling improvements
2024-08-20 09:44:01 +02:00
axolotle
02706ac8a2 refactor: keep only selected themes and consider "admin" theme as the default dark theme 2024-08-20 00:24:46 +02:00
axolotle
40b1a4ac29 feat: add 'omg' custom theme 2024-08-20 00:24:07 +02:00
axolotle
478b09c4e2 themes: add webadmin like theme 2024-08-20 00:24:07 +02:00
axolotle
fc4a65e4d1 theme: add 'legacy' color theme from previous portal 2024-08-20 00:24:07 +02:00
axolotle
4e86b4154e misc cosmetics 2024-08-20 00:24:07 +02:00
axolotle
63e1274e9b profile: update card style 2024-08-20 00:24:07 +02:00
axolotle
8a96008ea9 fix: add bg-color classes in tailwind safelist 2024-08-20 00:22:34 +02:00
axolotle
ff3674aea9 theming: add link to possible custom css stylesheet 2024-08-19 00:11:54 +02:00
Alexandre Aubin
41f9198f6a cosmetic: Add some top margin to the 'intro' block 2024-08-05 22:06:31 +02:00
12 changed files with 245 additions and 47 deletions

View file

@ -34,7 +34,8 @@ body {
/* GLOBAL */ /* GLOBAL */
.btn, .btn,
.select, .select,
.input { .input.input,
.join-item.btn {
min-height: 2.5rem; min-height: 2.5rem;
height: 2.5rem; height: 2.5rem;
} }

View file

@ -9,6 +9,10 @@ defineProps<{
</template> </template>
<style> <style>
.intro {
@apply mt-4;
}
.intro p { .intro p {
@apply mb-4; @apply mb-4;
} }

11
debian/changelog vendored
View file

@ -1,3 +1,14 @@
yunohost-portal (12.0.2) testing; urgency=low
- cosmetics: misc margin and style tweaks (41f9198)
- theming: add link to possible custom css stylesheet (ff3674a)
- themes: reduce the number of available themes because there was too many, add new 'omg', 'legacy', 'admin' themes ([#12](http://github.com/YunoHost/yunohost-portal/pull/12))
- i18n: Translations updated for Indonesian, Russian, Turkish
Thanks to all contributors <3 ! (axolotle, cjdw, Ivan Davydov, Satuk Bug)
-- Alexandre Aubin <alex.aubin@mailoo.org> Sat, 31 Aug 2024 19:56:46 +0200
yunohost-portal (12.0.1) testing; urgency=low yunohost-portal (12.0.1) testing; urgency=low
Initial testing release Initial testing release

View file

@ -37,7 +37,7 @@ async function logout() {
</script> </script>
<template> <template>
<div class="container mx-auto p-10 min-h-screen flex flex-col"> <div class="container mx-auto p-6 md:p-10 min-h-screen flex flex-col">
<BaseAlert <BaseAlert
v-if="queryMsg" v-if="queryMsg"
variant="warning" variant="warning"

View file

@ -2,7 +2,8 @@
"_language": { "_language": {
"code": "id", "code": "id",
"dir": "ltr", "dir": "ltr",
"name": "Bahasa Indonesia" "name": "Bahasa Indonesia",
"fallback": "id"
}, },
"add_forward": "Buat alamat surel terusan", "add_forward": "Buat alamat surel terusan",
"add_mail": "Buat surel alias", "add_mail": "Buat surel alias",
@ -14,7 +15,7 @@
"footerlink_edit": "Sunting profil saya", "footerlink_edit": "Sunting profil saya",
"footerlink_support": "Dukungan", "footerlink_support": "Dukungan",
"fullname": "Nama Lengkap", "fullname": "Nama Lengkap",
"good_practices_about_user_password": "Pilih kata sandi sekurang-kurangnya 8 karakter - meskipun memang adalah hal yang baik jika menggunakan yang lebih panjang (cth. parafrasa) dan/atau menggunakan berbagai macam karakter (kapital, huruf kecil, angka, dan karakter lainnya).", "good_practices_about_user_password": "Pilih kata sandi pengguna yang terdiri dari minimal 8 karakter - meskipun sebaiknya menggunakan kata sandi yang lebih panjang (misalnya parafrasa) dan/atau menggunakan beragam karakter (huruf besar, huruf kecil, angka, dan karakter khusus).",
"logged_out": "Berhasil keluar", "logged_out": "Berhasil keluar",
"login": "Masuk", "login": "Masuk",
"logout": "Keluar", "logout": "Keluar",
@ -24,5 +25,45 @@
"new_mail": "surelbaru{'@'}domainku.org", "new_mail": "surelbaru{'@'}domainku.org",
"new_password": "Kata sandi baru", "new_password": "Kata sandi baru",
"password": "Kata sandi", "password": "Kata sandi",
"username": "Nama Pengguna" "username": "Nama Pengguna",
"v": {
"email": "Surel invalid: harus alfanumerik dan karakter '_.' (cth. someone{'@'}example.com, s0me-1{'@'}example.com)",
"field_invalid": "Nilai bidang tidak valid",
"field_required": "Nilai bidang wajib diisi",
"password_not_match": "Sandi tidak sesuai.",
"string_too_short": "Nilai invalid: setidaknya harus {min} karakter"
},
"api": {
"processing": "Memproses…"
},
"app_list": "Daftar aplikasi",
"automatic": "Otomatis ({name})",
"back_to_apps": "Kembali ke daftar aplikasi",
"confirm_new_password": "Konfirmasi sandi baru",
"edit_browser_settings": "Edit pengaturan khusus peramban",
"edit_personal_settings": "Edit informasi personal",
"mail_address": "Alamat surel",
"form_has_errors": "Form berisi beberapa kesalahan",
"language": "Bahasa",
"mail_forwards": "Alamat penerusan surel",
"no_apps": "Tidak ada aplikasi untuk dicantumkan di sini, karena belum ada aplikasi web yang dipasang di server, atau karena Anda tidak memiliki akses ke aplikasi apa pun. Silakan hubungi admin server untuk info lebih lanjut!",
"password_changed_reconnect": "Sandi Anda telah berubah, silakan menyambung kembali.",
"possibly_invalid_password": "Kemungkinan sandi tidak valid",
"save": "Simpan",
"possibly_invalid_username": "Kemungkinan nama tidak valid",
"primary_mail_adress": "Alamat surat primer",
"remove": "Singkirkan",
"search": "Cari",
"search_engine_placeholder": "Cari dengan {engine}",
"skip_link": {
"footer": "Lewati ke catatan kaki",
"main_content": "Lewati ke konten utama"
},
"ssowat": {
"access_denied": "Anda tidak diperbolehkan mengakses url ini.",
"protected": "Silakan masuk untuk mengakses url ini."
},
"theme": "Tema",
"user_profile_updated": "Informasi pribadi pengguna berhasil diperbarui!",
"visitor": "Pengunjung"
} }

View file

@ -24,5 +24,6 @@
"new_mail": "newmail{'@'}mydomain.org", "new_mail": "newmail{'@'}mydomain.org",
"new_password": "Новый пароль", "new_password": "Новый пароль",
"password": "Пароль", "password": "Пароль",
"username": "Имя пользователя" "username": "Имя пользователя",
"save": "Сохранить"
} }

View file

@ -2,7 +2,8 @@
"_language": { "_language": {
"code": "tr", "code": "tr",
"dir": "ltr", "dir": "ltr",
"name": "Türkçe" "name": "Türkçe",
"fallback": "tr"
}, },
"add_forward": "Bir e-posta yönlendirme adresi ekleyin", "add_forward": "Bir e-posta yönlendirme adresi ekleyin",
"add_mail": "Bir e-posta takma adı ekleyin", "add_mail": "Bir e-posta takma adı ekleyin",

View file

@ -0,0 +1,37 @@
VERSION="?"
RELEASE="stable"
REPO=$(basename $(git rev-parse --show-toplevel))
REPO_URL=$(git remote get-url origin)
ME=$(git config --get user.name)
EMAIL=$(git config --get user.email)
LAST_RELEASE=$(git tag --list 'debian/12.*' --sort="v:refname" | tail -n 1)
echo "$REPO ($VERSION) $RELEASE; urgency=low"
echo ""
git log $LAST_RELEASE.. -n 10000 --first-parent --pretty=tformat:' - %b%s (%h)' \
| sed -E "s&Merge .*#([0-9]+).*\$& \([#\1]\(http://github.com/YunoHost/$REPO/pull/\1\)\)&g" \
| sed -E "/Co-authored-by: .* <.*>/d" \
| grep -v "Translations update from Weblate" \
| tac
TRANSLATIONS=$(git log $LAST_RELEASE... -n 10000 --pretty=format:"%s" \
| grep "Translated using Weblate" \
| sed -E "s/Translated using Weblate \((.*)\)/\1/g" \
| sort | uniq | tr '\n' ', ' | sed -e 's/,$//g' -e 's/,/, /g')
[[ -z "$TRANSLATIONS" ]] || echo " - [i18n] Translations updated for $TRANSLATIONS"
echo ""
CONTRIBUTORS=$(git log -n10 --pretty=format:'%Cred%h%Creset %C(bold blue)(%an) %Creset%Cgreen(%cr)%Creset - %s %C(yellow)%d%Creset' --abbrev-commit $LAST_RELEASE... -n 10000 --pretty=format:"%an" \
| sort | uniq | grep -v "$ME" | grep -v 'yunohost-bot' | grep -vi 'weblate' \
| tr '\n' ', ' | sed -e 's/,$//g' -e 's/,/, /g')
[[ -z "$CONTRIBUTORS" ]] || echo " Thanks to all contributors <3 ! ($CONTRIBUTORS)"
echo ""
echo " -- $ME <$EMAIL> $(date -R)"
echo ""
# PR links can be converted to regular texts using : sed -E 's@\[(#[0-9]*)\]\([^ )]*\)@\1@g'
# Or readded with sed -E 's@#([0-9]*)@[YunoHost#\1](https://github.com/yunohost/yunohost/pull/\1)@g' | sed -E 's@\((\w+)\)@([YunoHost/\1](https://github.com/yunohost/yunohost/commit/\1))@g'

View file

@ -8,6 +8,11 @@ export default defineNuxtConfig({
app: { app: {
baseURL: '/yunohost/sso', baseURL: '/yunohost/sso',
buildAssetsDir: '/assets/', buildAssetsDir: '/assets/',
head: {
link: [
{ rel: 'stylesheet', href: '/yunohost/sso/customassets/custom.css' },
],
},
}, },
modules: [ modules: [
'@nuxtjs/color-mode', '@nuxtjs/color-mode',

View file

@ -29,38 +29,22 @@ const localesAsOptions = computed(() => {
const themesAsOptions = [ const themesAsOptions = [
'auto', 'auto',
'system', 'system',
// Daisyui default themes
'light', 'light',
// Custom dark
'dark', 'dark',
'cupcake', 'omg',
'bumblebee', 'legacy',
'emerald', // Daisyui dark
'corporate', 'black',
'synthwave', 'synthwave',
'retro', 'halloween',
'coffee',
// Daisyui light
'cupcake',
'cyberpunk', 'cyberpunk',
'valentine', 'valentine',
'halloween',
'garden',
'forest',
'aqua',
'lofi',
'pastel',
'fantasy',
'wireframe',
'black',
'luxury',
'dracula',
'cmyk',
'autumn',
'business',
'acid',
'lemonade',
'night',
'coffee',
'winter',
'dim',
'nord', 'nord',
'sunset',
].map((theme) => ({ ].map((theme) => ({
text: text:
theme !== 'auto' theme !== 'auto'
@ -76,25 +60,31 @@ const themesAsOptions = [
<div class="lg:flex lg:justify-between"> <div class="lg:flex lg:justify-between">
<section <section
class="lg:w-1/2 lg:me-20 h-full card card-body border border-neutral my-10" class="lg:w-1/2 lg:me-20 h-full card card-bordered border-base-300 my-10"
> >
<h2 class="text-3xl mb-3">{{ t('edit_personal_settings') }}</h2> <div class="card-header bg-base-300 py-4 px-8">
<h2 class="text-3xl">{{ t('edit_personal_settings') }}</h2>
</div>
<UserInfoForm /> <UserInfoForm class="p-8" />
</section> </section>
<section class="lg:w-1/2 card card-body border border-neutral my-10"> <section class="lg:w-1/2 card card-bordered border-base-300 my-10">
<h2 class="text-3xl mb-3">{{ $t('change_password') }}</h2> <div class="card-header bg-base-300 py-4 px-8">
<h2 class="text-3xl">{{ $t('change_password') }}</h2>
</div>
<UserPasswordForm /> <UserPasswordForm class="p-8" />
</section> </section>
</div> </div>
<section class="card card-body border border-neutral my-10"> <section class="card card-bordered border-base-300 my-10">
<h2 class="text-3xl mb-3">{{ t('edit_browser_settings') }}</h2> <div class="card-header bg-base-300 py-4 px-8">
<h2 class="text-3xl">{{ t('edit_browser_settings') }}</h2>
</div>
<form novalidate @submit.prevent> <form class="p-8" novalidate @submit.prevent>
<div role="group" class="flex align mb-3"> <div role="group" class="flex flex-wrap align mb-3">
<!-- eslint-disable-next-line vuejs-accessibility/label-has-for --> <!-- eslint-disable-next-line vuejs-accessibility/label-has-for -->
<label for="language" class="label me-3">{{ t('language') }}</label> <label for="language" class="label me-3">{{ t('language') }}</label>
<select <select
@ -113,7 +103,7 @@ const themesAsOptions = [
</select> </select>
</div> </div>
<div role="group" class="flex align"> <div role="group" class="flex flex-wrap align">
<!-- eslint-disable-next-line vuejs-accessibility/label-has-for --> <!-- eslint-disable-next-line vuejs-accessibility/label-has-for -->
<label for="theme" class="label me-3">{{ t('theme') }}</label> <label for="theme" class="label me-3">{{ t('theme') }}</label>
<select <select
@ -135,3 +125,10 @@ const themesAsOptions = [
</section> </section>
</div> </div>
</template> </template>
<style scoped>
.card .card-header {
border-top-left-radius: var(--rounded-box);
border-top-right-radius: var(--rounded-box);
}
</style>

View file

@ -87,7 +87,7 @@ async function onSearchSubmit() {
<li <li
v-for="app in apps" v-for="app in apps"
:key="app.label" :key="app.label"
class="flex flex-auto border border-neutral rounded p-4 relative hover:bg-neutral hover:text-neutral-content" class="flex text-align flex-auto btn btn-outline btn-neutral !h-auto p-5 relative flex-nowrap items-start justify-normal text-left font-normal"
> >
<img <img
v-if="app.logo" v-if="app.logo"

View file

@ -1,8 +1,108 @@
module.exports = { module.exports = {
// Safelisting some classes to avoid content purge // Safelisting some classes to avoid content purge
plugins: [require('daisyui')], plugins: [require('daisyui')],
safelist: ['safelisted'], safelist: [
'safelisted',
'bg-primary',
'bg-secondary',
'bg-accent',
'bg-neutral',
'bg-base-100',
'bg-base-200',
'bg-base-300',
'bg-base-content',
'bg-info',
'bg-success',
'bg-warning',
'bg-error',
],
daisyui: { daisyui: {
themes: true, themes: [
{
legacy: {
primary: '#2980b9',
secondary: '#30333b',
accent: '#7028b8',
neutral: '#999',
info: '#2980b9',
success: '#27ae60',
warning: '#e67e22',
error: '#c0392b',
'base-100': '#41444f',
'base-200': '#999',
'base-300': '#30333b',
'base-content': '#fff',
'primary-content': '#fff',
'secondary-content': '#fff',
'accent-content': '#fff',
'neutral-content': '#fff',
'info-content': '#fff',
'success-content': '#fff',
'warning-content': '#fff',
'error-content': '#fff',
'--rounded-box': '0rem',
'--rounded-btn': '0rem',
},
dark: {
primary: '#53a5fb',
secondary: '#20cb98',
accent: '#b957ea',
neutral: '#EDEDED',
info: '#79e7f9',
success: '#70ea8d',
warning: '#ffd452',
error: '#ff5a5a',
'base-100': '#202020',
'base-200': '#3C3C3C',
'base-300': '#303030',
'base-content': '#fafafa',
'primary-content': '#000',
'secondary-content': '#000',
'accent-content': '#000',
'neutral-content': '#000',
'info-content': '#000',
'success-content': '#000',
'warning-content': '#000',
'error-content': '#000',
'--rounded-box': '0.1875rem',
'--rounded-btn': '0.1875rem',
'--border-btn': '1px',
},
omg: {
primary: '#ffe066',
secondary: '#eebefa',
accent: '#bac8ff',
neutral: '#e7ebf3',
info: '#a5d8ff',
success: '#63e6be',
warning: '#ff922b',
error: '#fcc2d7',
'base-100': '#343a40',
'base-200': '#6f7479',
'base-300': '#212529',
'base-content': '#f1f3f5',
'--rounded-box': '.13rem',
'--rounded-btn': '.3rem',
'--rounded-badge': '1.9rem',
'--animation-btn': '0.25s',
'--animation-input': '0.2s',
'--btn-focus-scale': '0.95',
'--border-btn': '1px',
'--tab-border': '1px',
'--tab-radius': '0.5rem',
},
},
'light',
// dark
'black', // to rework contrasts
'synthwave',
'halloween',
'coffee',
// light
'cupcake',
'cyberpunk',
'valentine',
'nord',
],
}, },
} }