chore: release v0.41.0
This commit is contained in:
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.41.0] - 2026-05-01
|
||||
|
||||
### Added
|
||||
- **Birthday badge**: the birthdays nav item now shows a badge when any family member has a birthday within the next 3 days.
|
||||
- **Recent filter chips**: the task filter bar now shows up to three recently used filters as quick-access chips, persisted in `localStorage`.
|
||||
- **Calendar icon search**: the event icon picker now includes a live search field to quickly find icons by keyword, with results grouped by category.
|
||||
- **Calendar icon categories**: event icons are now organised into labelled category groups (transport, sports, health, nature, leisure, social, work, home, food, other).
|
||||
- **Repeat indicator on calendar events**: events with a recurrence rule now display a small repeat icon in both month and week views.
|
||||
- **3-day week view on mobile**: the calendar week view automatically switches to a 3-day window on screens narrower than 640 px for better readability.
|
||||
- **Widget size presets**: the dashboard widget size selector uses named presets (Tiny, Narrow, Standard, Large, Full) instead of raw grid dimension values.
|
||||
|
||||
### Changed
|
||||
- **Required-field markers**: title fields in the task, event, and budget modals now show a required-field asterisk via the `.required-marker` CSS class.
|
||||
- **Modal drag handle touch target**: the bottom-sheet drag handle has a 44 px tall invisible hit area so it can be grabbed comfortably.
|
||||
- **Swipe affordance**: list rows with swipe actions show a subtle chevron hint to signal the gesture.
|
||||
- **Budget tab height**: budget tab buttons have a minimum height of 40 px to meet touch-target requirements.
|
||||
|
||||
## [0.40.1] - 2026-05-01
|
||||
|
||||
### Changed
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "oikos",
|
||||
"version": "0.40.1",
|
||||
"version": "0.41.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "oikos",
|
||||
"version": "0.40.1",
|
||||
"version": "0.41.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bcrypt": "^6.0.0",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "oikos",
|
||||
"version": "0.40.1",
|
||||
"version": "0.41.0",
|
||||
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
||||
"main": "server/index.js",
|
||||
"type": "module",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "اسحب الأداة",
|
||||
"customizeSize": "الحجم",
|
||||
"customizeSizeFor": "حجم {{widget}}",
|
||||
"customizeHide": "إخفاء {{widget}}"
|
||||
"customizeHide": "إخفاء {{widget}}",
|
||||
"widgetSizeTiny": "صغير (1×1)",
|
||||
"widgetSizeNarrow": "ضيق (2×1)",
|
||||
"widgetSizeStandard": "قياسي (2×2)",
|
||||
"widgetSizeLarge": "كبير (3×2)",
|
||||
"widgetSizeFull": "كامل (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "المهام",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "تم إعادة تعيين التغييرات."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "البحث عن أيقونة...",
|
||||
"iconSearchEmpty": "لم يتم العثور على أيقونة.",
|
||||
"iconCategoryGeneral": "عام",
|
||||
"iconCategoryHealth": "الصحة والرياضة",
|
||||
"iconCategoryTransport": "التنقل والسفر",
|
||||
"iconCategoryWork": "العمل والتعليم",
|
||||
"iconCategoryFood": "الطعام والشراب",
|
||||
"iconCategoryShopping": "التسوق والمالية",
|
||||
"iconCategoryLeisure": "الترفيه والتسلية",
|
||||
"iconCategoryFamily": "العائلة والحيوانات الأليفة",
|
||||
"iconCategoryHome": "المنزل والأسرة",
|
||||
"iconCategoryNature": "الطبيعة وغير ذلك",
|
||||
"iconCalendar": "التقويم",
|
||||
"iconAlarm": "المنبّه",
|
||||
"iconClock": "الساعة",
|
||||
"iconBell": "تذكير",
|
||||
"iconLocation": "الموقع",
|
||||
"iconStar": "المفضلة",
|
||||
"iconFlag": "علم",
|
||||
"iconTarget": "هدف",
|
||||
"iconFlame": "مهم",
|
||||
"iconTooth": "طبيب الأسنان",
|
||||
"iconHospital": "المستشفى",
|
||||
"iconDoctor": "طبيب",
|
||||
"iconVaccine": "تطعيم",
|
||||
"iconMedicine": "دواء",
|
||||
"iconBandage": "ضمادة",
|
||||
"iconHealth": "صحة",
|
||||
"iconActivity": "نشاط",
|
||||
"iconHaircut": "صالون الحلاقة",
|
||||
"iconSports": "رياضة",
|
||||
"iconTrophy": "مسابقة",
|
||||
"iconCar": "سيارة",
|
||||
"iconBus": "حافلة",
|
||||
"iconTrain": "قطار",
|
||||
"iconPlane": "سفر",
|
||||
"iconFlight": "رحلة جوية",
|
||||
"iconFuel": "تزوّد بالوقود",
|
||||
"iconNavigation": "ملاحة",
|
||||
"iconWork": "عمل",
|
||||
"iconLaptop": "حاسوب محمول",
|
||||
"iconPresentation": "عرض تقديمي",
|
||||
"iconSchool": "مدرسة",
|
||||
"iconEducation": "تعليم",
|
||||
"iconReading": "قراءة",
|
||||
"iconStudy": "دراسة",
|
||||
"iconCalculator": "آلة حاسبة",
|
||||
"iconMeal": "وجبة",
|
||||
"iconCooking": "طبخ",
|
||||
"iconCoffee": "قهوة",
|
||||
"iconCake": "عيد الميلاد",
|
||||
"iconPizza": "بيتزا",
|
||||
"iconWine": "نبيذ",
|
||||
"iconBeer": "بار",
|
||||
"iconShopping": "تسوق",
|
||||
"iconGroceries": "بقالة",
|
||||
"iconGift": "هدية",
|
||||
"iconCard": "بطاقة",
|
||||
"iconWallet": "محفظة",
|
||||
"iconSavings": "ادخار",
|
||||
"iconBank": "بنك",
|
||||
"iconMusic": "موسيقى",
|
||||
"iconMovie": "فيلم",
|
||||
"iconTicket": "تذكرة",
|
||||
"iconGame": "لعبة",
|
||||
"iconPhoto": "صورة",
|
||||
"iconParty": "حفلة",
|
||||
"iconFamily": "عائلة",
|
||||
"iconBaby": "طفل رضيع",
|
||||
"iconDog": "كلب",
|
||||
"iconCat": "قطة",
|
||||
"iconPet": "حيوان أليف",
|
||||
"iconHome": "منزل",
|
||||
"iconBuilding": "مبنى",
|
||||
"iconRepair": "إصلاح",
|
||||
"iconMaintenance": "صيانة",
|
||||
"iconDecoration": "ديكور",
|
||||
"iconFurniture": "أثاث",
|
||||
"iconLaundry": "غسيل",
|
||||
"iconLeaf": "طبيعة",
|
||||
"iconTree": "شجرة",
|
||||
"iconFlower": "زهرة",
|
||||
"iconSun": "نهار",
|
||||
"iconMoon": "ليل",
|
||||
"iconWeather": "طقس",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -124,7 +124,12 @@
|
||||
"customizeDrag": "Widget ziehen",
|
||||
"customizeSize": "Größe",
|
||||
"customizeSizeFor": "Größe für {{widget}}",
|
||||
"customizeHide": "{{widget}} ausblenden"
|
||||
"customizeHide": "{{widget}} ausblenden",
|
||||
"widgetSizeTiny": "Klein (1×1)",
|
||||
"widgetSizeNarrow": "Schmal (2×1)",
|
||||
"widgetSizeStandard": "Standard (2×2)",
|
||||
"widgetSizeLarge": "Groß (3×2)",
|
||||
"widgetSizeFull": "Voll (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Aufgaben",
|
||||
@@ -390,6 +395,91 @@
|
||||
"resetToast": "Änderungen zurückgesetzt."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Icon suchen...",
|
||||
"iconSearchEmpty": "Kein Icon gefunden.",
|
||||
"iconCategoryGeneral": "Allgemein",
|
||||
"iconCategoryHealth": "Gesundheit & Sport",
|
||||
"iconCategoryTransport": "Mobilität & Reise",
|
||||
"iconCategoryWork": "Arbeit & Bildung",
|
||||
"iconCategoryFood": "Essen & Trinken",
|
||||
"iconCategoryShopping": "Einkaufen & Finanzen",
|
||||
"iconCategoryLeisure": "Freizeit & Unterhaltung",
|
||||
"iconCategoryFamily": "Familie & Haustiere",
|
||||
"iconCategoryHome": "Zuhause & Haushalt",
|
||||
"iconCategoryNature": "Natur & Sonstiges",
|
||||
"iconCalendar": "Kalender",
|
||||
"iconAlarm": "Alarm",
|
||||
"iconClock": "Uhr",
|
||||
"iconBell": "Erinnerung",
|
||||
"iconLocation": "Ort",
|
||||
"iconStar": "Favorit",
|
||||
"iconFlag": "Flagge",
|
||||
"iconTarget": "Ziel",
|
||||
"iconFlame": "Wichtig",
|
||||
"iconTooth": "Zahnarzt",
|
||||
"iconHospital": "Krankenhaus",
|
||||
"iconDoctor": "Arzt",
|
||||
"iconVaccine": "Impfung",
|
||||
"iconMedicine": "Medikament",
|
||||
"iconBandage": "Verband",
|
||||
"iconHealth": "Gesundheit",
|
||||
"iconActivity": "Aktivität",
|
||||
"iconHaircut": "Friseur",
|
||||
"iconSports": "Sport",
|
||||
"iconTrophy": "Wettbewerb",
|
||||
"iconCar": "Auto",
|
||||
"iconBus": "Bus",
|
||||
"iconTrain": "Zug",
|
||||
"iconPlane": "Reise",
|
||||
"iconFlight": "Flug",
|
||||
"iconFuel": "Tanken",
|
||||
"iconNavigation": "Navigation",
|
||||
"iconWork": "Arbeit",
|
||||
"iconLaptop": "Laptop",
|
||||
"iconPresentation": "Präsentation",
|
||||
"iconSchool": "Schule",
|
||||
"iconEducation": "Bildung",
|
||||
"iconReading": "Lesen",
|
||||
"iconStudy": "Lernen",
|
||||
"iconCalculator": "Rechner",
|
||||
"iconMeal": "Mahlzeit",
|
||||
"iconCooking": "Kochen",
|
||||
"iconCoffee": "Kaffee",
|
||||
"iconCake": "Geburtstag",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Wein",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Einkaufen",
|
||||
"iconGroceries": "Lebensmittel",
|
||||
"iconGift": "Geschenk",
|
||||
"iconCard": "Karte",
|
||||
"iconWallet": "Geldbörse",
|
||||
"iconSavings": "Sparen",
|
||||
"iconBank": "Bank",
|
||||
"iconMusic": "Musik",
|
||||
"iconMovie": "Film",
|
||||
"iconTicket": "Ticket",
|
||||
"iconGame": "Spiel",
|
||||
"iconPhoto": "Foto",
|
||||
"iconParty": "Party",
|
||||
"iconFamily": "Familie",
|
||||
"iconBaby": "Baby",
|
||||
"iconDog": "Hund",
|
||||
"iconCat": "Katze",
|
||||
"iconPet": "Haustier",
|
||||
"iconHome": "Zuhause",
|
||||
"iconBuilding": "Gebäude",
|
||||
"iconRepair": "Reparatur",
|
||||
"iconMaintenance": "Wartung",
|
||||
"iconDecoration": "Dekoration",
|
||||
"iconFurniture": "Möbel",
|
||||
"iconLaundry": "Wäsche",
|
||||
"iconLeaf": "Natur",
|
||||
"iconTree": "Baum",
|
||||
"iconFlower": "Blume",
|
||||
"iconSun": "Tag",
|
||||
"iconMoon": "Nacht",
|
||||
"iconWeather": "Wetter",
|
||||
"invalidDate": "Bitte ein gültiges Datum im ausgewählten Format verwenden.",
|
||||
"attachmentLabel": "Anhang",
|
||||
"attachmentHint": "Lokales Bild, PDF oder Dokument anhängen. Bilder werden im Ereignis-Popup angezeigt.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Σύρετε widget",
|
||||
"customizeSize": "Μέγεθος",
|
||||
"customizeSizeFor": "Μέγεθος για {{widget}}",
|
||||
"customizeHide": "Απόκρυψη {{widget}}"
|
||||
"customizeHide": "Απόκρυψη {{widget}}",
|
||||
"widgetSizeTiny": "Μικρό (1×1)",
|
||||
"widgetSizeNarrow": "Στενό (2×1)",
|
||||
"widgetSizeStandard": "Τυπικό (2×2)",
|
||||
"widgetSizeLarge": "Μεγάλο (3×2)",
|
||||
"widgetSizeFull": "Πλήρες (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Εργασίες",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Οι αλλαγές επαναφέρθηκαν."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Αναζήτηση εικονιδίου...",
|
||||
"iconSearchEmpty": "Δεν βρέθηκε εικονίδιο.",
|
||||
"iconCategoryGeneral": "Γενικά",
|
||||
"iconCategoryHealth": "Υγεία & Αθλητισμός",
|
||||
"iconCategoryTransport": "Μετακίνηση & Ταξίδι",
|
||||
"iconCategoryWork": "Εργασία & Εκπαίδευση",
|
||||
"iconCategoryFood": "Φαγητό & Ποτό",
|
||||
"iconCategoryShopping": "Αγορές & Οικονομικά",
|
||||
"iconCategoryLeisure": "Αναψυχή & Ψυχαγωγία",
|
||||
"iconCategoryFamily": "Οικογένεια & Κατοικίδια",
|
||||
"iconCategoryHome": "Σπίτι & Νοικοκυριό",
|
||||
"iconCategoryNature": "Φύση & Διάφορα",
|
||||
"iconCalendar": "Ημερολόγιο",
|
||||
"iconAlarm": "Ξυπνητήρι",
|
||||
"iconClock": "Ρολόι",
|
||||
"iconBell": "Υπενθύμιση",
|
||||
"iconLocation": "Τοποθεσία",
|
||||
"iconStar": "Αγαπημένο",
|
||||
"iconFlag": "Σημαία",
|
||||
"iconTarget": "Στόχος",
|
||||
"iconFlame": "Σημαντικό",
|
||||
"iconTooth": "Οδοντίατρος",
|
||||
"iconHospital": "Νοσοκομείο",
|
||||
"iconDoctor": "Γιατρός",
|
||||
"iconVaccine": "Εμβόλιο",
|
||||
"iconMedicine": "Φάρμακο",
|
||||
"iconBandage": "Επίδεσμος",
|
||||
"iconHealth": "Υγεία",
|
||||
"iconActivity": "Δραστηριότητα",
|
||||
"iconHaircut": "Κομμωτήριο",
|
||||
"iconSports": "Αθλητισμός",
|
||||
"iconTrophy": "Διαγωνισμός",
|
||||
"iconCar": "Αυτοκίνητο",
|
||||
"iconBus": "Λεωφορείο",
|
||||
"iconTrain": "Τρένο",
|
||||
"iconPlane": "Ταξίδι",
|
||||
"iconFlight": "Πτήση",
|
||||
"iconFuel": "Ανεφοδιασμός",
|
||||
"iconNavigation": "Πλοήγηση",
|
||||
"iconWork": "Εργασία",
|
||||
"iconLaptop": "Φορητός υπολογιστής",
|
||||
"iconPresentation": "Παρουσίαση",
|
||||
"iconSchool": "Σχολείο",
|
||||
"iconEducation": "Εκπαίδευση",
|
||||
"iconReading": "Ανάγνωση",
|
||||
"iconStudy": "Μελέτη",
|
||||
"iconCalculator": "Αριθμομηχανή",
|
||||
"iconMeal": "Γεύμα",
|
||||
"iconCooking": "Μαγείρεμα",
|
||||
"iconCoffee": "Καφές",
|
||||
"iconCake": "Γενέθλια",
|
||||
"iconPizza": "Πίτσα",
|
||||
"iconWine": "Κρασί",
|
||||
"iconBeer": "Μπαρ",
|
||||
"iconShopping": "Αγορές",
|
||||
"iconGroceries": "Τρόφιμα",
|
||||
"iconGift": "Δώρο",
|
||||
"iconCard": "Κάρτα",
|
||||
"iconWallet": "Πορτοφόλι",
|
||||
"iconSavings": "Αποταμίευση",
|
||||
"iconBank": "Τράπεζα",
|
||||
"iconMusic": "Μουσική",
|
||||
"iconMovie": "Ταινία",
|
||||
"iconTicket": "Εισιτήριο",
|
||||
"iconGame": "Παιχνίδι",
|
||||
"iconPhoto": "Φωτογραφία",
|
||||
"iconParty": "Πάρτι",
|
||||
"iconFamily": "Οικογένεια",
|
||||
"iconBaby": "Μωρό",
|
||||
"iconDog": "Σκύλος",
|
||||
"iconCat": "Γάτα",
|
||||
"iconPet": "Κατοικίδιο",
|
||||
"iconHome": "Σπίτι",
|
||||
"iconBuilding": "Κτίριο",
|
||||
"iconRepair": "Επισκευή",
|
||||
"iconMaintenance": "Συντήρηση",
|
||||
"iconDecoration": "Διακόσμηση",
|
||||
"iconFurniture": "Έπιπλα",
|
||||
"iconLaundry": "Πλυντήριο",
|
||||
"iconLeaf": "Φύση",
|
||||
"iconTree": "Δέντρο",
|
||||
"iconFlower": "Λουλούδι",
|
||||
"iconSun": "Μέρα",
|
||||
"iconMoon": "Νύχτα",
|
||||
"iconWeather": "Καιρός",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Drag widget",
|
||||
"customizeSize": "Size",
|
||||
"customizeSizeFor": "Size for {{widget}}",
|
||||
"customizeHide": "Hide {{widget}}"
|
||||
"customizeHide": "Hide {{widget}}",
|
||||
"widgetSizeTiny": "Small (1×1)",
|
||||
"widgetSizeNarrow": "Narrow (2×1)",
|
||||
"widgetSizeStandard": "Standard (2×2)",
|
||||
"widgetSizeLarge": "Large (3×2)",
|
||||
"widgetSizeFull": "Full (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Tasks",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Changes reset."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Search icon...",
|
||||
"iconSearchEmpty": "No icon found.",
|
||||
"iconCategoryGeneral": "General",
|
||||
"iconCategoryHealth": "Health & Sports",
|
||||
"iconCategoryTransport": "Mobility & Travel",
|
||||
"iconCategoryWork": "Work & Education",
|
||||
"iconCategoryFood": "Food & Drinks",
|
||||
"iconCategoryShopping": "Shopping & Finance",
|
||||
"iconCategoryLeisure": "Leisure & Entertainment",
|
||||
"iconCategoryFamily": "Family & Pets",
|
||||
"iconCategoryHome": "Home & Household",
|
||||
"iconCategoryNature": "Nature & Miscellaneous",
|
||||
"iconCalendar": "Calendar",
|
||||
"iconAlarm": "Alarm",
|
||||
"iconClock": "Clock",
|
||||
"iconBell": "Reminder",
|
||||
"iconLocation": "Location",
|
||||
"iconStar": "Favorite",
|
||||
"iconFlag": "Flag",
|
||||
"iconTarget": "Goal",
|
||||
"iconFlame": "Important",
|
||||
"iconTooth": "Dentist",
|
||||
"iconHospital": "Hospital",
|
||||
"iconDoctor": "Doctor",
|
||||
"iconVaccine": "Vaccination",
|
||||
"iconMedicine": "Medicine",
|
||||
"iconBandage": "Bandage",
|
||||
"iconHealth": "Health",
|
||||
"iconActivity": "Activity",
|
||||
"iconHaircut": "Hairdresser",
|
||||
"iconSports": "Sports",
|
||||
"iconTrophy": "Competition",
|
||||
"iconCar": "Car",
|
||||
"iconBus": "Bus",
|
||||
"iconTrain": "Train",
|
||||
"iconPlane": "Travel",
|
||||
"iconFlight": "Flight",
|
||||
"iconFuel": "Refuel",
|
||||
"iconNavigation": "Navigation",
|
||||
"iconWork": "Work",
|
||||
"iconLaptop": "Laptop",
|
||||
"iconPresentation": "Presentation",
|
||||
"iconSchool": "School",
|
||||
"iconEducation": "Education",
|
||||
"iconReading": "Reading",
|
||||
"iconStudy": "Study",
|
||||
"iconCalculator": "Calculator",
|
||||
"iconMeal": "Meal",
|
||||
"iconCooking": "Cooking",
|
||||
"iconCoffee": "Coffee",
|
||||
"iconCake": "Birthday",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Wine",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Shopping",
|
||||
"iconGroceries": "Groceries",
|
||||
"iconGift": "Gift",
|
||||
"iconCard": "Card",
|
||||
"iconWallet": "Wallet",
|
||||
"iconSavings": "Savings",
|
||||
"iconBank": "Bank",
|
||||
"iconMusic": "Music",
|
||||
"iconMovie": "Movie",
|
||||
"iconTicket": "Ticket",
|
||||
"iconGame": "Game",
|
||||
"iconPhoto": "Photo",
|
||||
"iconParty": "Party",
|
||||
"iconFamily": "Family",
|
||||
"iconBaby": "Baby",
|
||||
"iconDog": "Dog",
|
||||
"iconCat": "Cat",
|
||||
"iconPet": "Pet",
|
||||
"iconHome": "Home",
|
||||
"iconBuilding": "Building",
|
||||
"iconRepair": "Repair",
|
||||
"iconMaintenance": "Maintenance",
|
||||
"iconDecoration": "Decoration",
|
||||
"iconFurniture": "Furniture",
|
||||
"iconLaundry": "Laundry",
|
||||
"iconLeaf": "Nature",
|
||||
"iconTree": "Tree",
|
||||
"iconFlower": "Flower",
|
||||
"iconSun": "Day",
|
||||
"iconMoon": "Night",
|
||||
"iconWeather": "Weather",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Arrastrar widget",
|
||||
"customizeSize": "Tamaño",
|
||||
"customizeSizeFor": "Tamaño de {{widget}}",
|
||||
"customizeHide": "Ocultar {{widget}}"
|
||||
"customizeHide": "Ocultar {{widget}}",
|
||||
"widgetSizeTiny": "Pequeño (1×1)",
|
||||
"widgetSizeNarrow": "Estrecho (2×1)",
|
||||
"widgetSizeStandard": "Estándar (2×2)",
|
||||
"widgetSizeLarge": "Grande (3×2)",
|
||||
"widgetSizeFull": "Completo (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Tareas",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Cambios restablecidos."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Buscar icono...",
|
||||
"iconSearchEmpty": "No se encontró ningún icono.",
|
||||
"iconCategoryGeneral": "General",
|
||||
"iconCategoryHealth": "Salud y Deporte",
|
||||
"iconCategoryTransport": "Movilidad y Viaje",
|
||||
"iconCategoryWork": "Trabajo y Educación",
|
||||
"iconCategoryFood": "Comida y Bebida",
|
||||
"iconCategoryShopping": "Compras y Finanzas",
|
||||
"iconCategoryLeisure": "Ocio y Entretenimiento",
|
||||
"iconCategoryFamily": "Familia y Mascotas",
|
||||
"iconCategoryHome": "Hogar y Casa",
|
||||
"iconCategoryNature": "Naturaleza y Otros",
|
||||
"iconCalendar": "Calendario",
|
||||
"iconAlarm": "Alarma",
|
||||
"iconClock": "Reloj",
|
||||
"iconBell": "Recordatorio",
|
||||
"iconLocation": "Ubicación",
|
||||
"iconStar": "Favorito",
|
||||
"iconFlag": "Bandera",
|
||||
"iconTarget": "Meta",
|
||||
"iconFlame": "Importante",
|
||||
"iconTooth": "Dentista",
|
||||
"iconHospital": "Hospital",
|
||||
"iconDoctor": "Médico",
|
||||
"iconVaccine": "Vacuna",
|
||||
"iconMedicine": "Medicamento",
|
||||
"iconBandage": "Vendaje",
|
||||
"iconHealth": "Salud",
|
||||
"iconActivity": "Actividad",
|
||||
"iconHaircut": "Peluquería",
|
||||
"iconSports": "Deporte",
|
||||
"iconTrophy": "Competición",
|
||||
"iconCar": "Coche",
|
||||
"iconBus": "Autobús",
|
||||
"iconTrain": "Tren",
|
||||
"iconPlane": "Viaje",
|
||||
"iconFlight": "Vuelo",
|
||||
"iconFuel": "Repostar",
|
||||
"iconNavigation": "Navegación",
|
||||
"iconWork": "Trabajo",
|
||||
"iconLaptop": "Portátil",
|
||||
"iconPresentation": "Presentación",
|
||||
"iconSchool": "Escuela",
|
||||
"iconEducation": "Educación",
|
||||
"iconReading": "Lectura",
|
||||
"iconStudy": "Estudio",
|
||||
"iconCalculator": "Calculadora",
|
||||
"iconMeal": "Comida",
|
||||
"iconCooking": "Cocinar",
|
||||
"iconCoffee": "Café",
|
||||
"iconCake": "Cumpleaños",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Vino",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Compras",
|
||||
"iconGroceries": "Supermercado",
|
||||
"iconGift": "Regalo",
|
||||
"iconCard": "Tarjeta",
|
||||
"iconWallet": "Cartera",
|
||||
"iconSavings": "Ahorro",
|
||||
"iconBank": "Banco",
|
||||
"iconMusic": "Música",
|
||||
"iconMovie": "Película",
|
||||
"iconTicket": "Entrada",
|
||||
"iconGame": "Juego",
|
||||
"iconPhoto": "Foto",
|
||||
"iconParty": "Fiesta",
|
||||
"iconFamily": "Familia",
|
||||
"iconBaby": "Bebé",
|
||||
"iconDog": "Perro",
|
||||
"iconCat": "Gato",
|
||||
"iconPet": "Mascota",
|
||||
"iconHome": "Hogar",
|
||||
"iconBuilding": "Edificio",
|
||||
"iconRepair": "Reparación",
|
||||
"iconMaintenance": "Mantenimiento",
|
||||
"iconDecoration": "Decoración",
|
||||
"iconFurniture": "Muebles",
|
||||
"iconLaundry": "Lavandería",
|
||||
"iconLeaf": "Naturaleza",
|
||||
"iconTree": "Árbol",
|
||||
"iconFlower": "Flor",
|
||||
"iconSun": "Día",
|
||||
"iconMoon": "Noche",
|
||||
"iconWeather": "Clima",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Faire glisser le widget",
|
||||
"customizeSize": "Taille",
|
||||
"customizeSizeFor": "Taille de {{widget}}",
|
||||
"customizeHide": "Masquer {{widget}}"
|
||||
"customizeHide": "Masquer {{widget}}",
|
||||
"widgetSizeTiny": "Petit (1×1)",
|
||||
"widgetSizeNarrow": "Étroit (2×1)",
|
||||
"widgetSizeStandard": "Standard (2×2)",
|
||||
"widgetSizeLarge": "Grand (3×2)",
|
||||
"widgetSizeFull": "Plein (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Tâches",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Modifications annulées."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Rechercher une icône...",
|
||||
"iconSearchEmpty": "Aucune icône trouvée.",
|
||||
"iconCategoryGeneral": "Général",
|
||||
"iconCategoryHealth": "Santé & Sport",
|
||||
"iconCategoryTransport": "Mobilité & Voyage",
|
||||
"iconCategoryWork": "Travail & Éducation",
|
||||
"iconCategoryFood": "Alimentation & Boissons",
|
||||
"iconCategoryShopping": "Courses & Finances",
|
||||
"iconCategoryLeisure": "Loisirs & Divertissement",
|
||||
"iconCategoryFamily": "Famille & Animaux",
|
||||
"iconCategoryHome": "Maison & Foyer",
|
||||
"iconCategoryNature": "Nature & Divers",
|
||||
"iconCalendar": "Calendrier",
|
||||
"iconAlarm": "Alarme",
|
||||
"iconClock": "Horloge",
|
||||
"iconBell": "Rappel",
|
||||
"iconLocation": "Lieu",
|
||||
"iconStar": "Favori",
|
||||
"iconFlag": "Drapeau",
|
||||
"iconTarget": "Objectif",
|
||||
"iconFlame": "Important",
|
||||
"iconTooth": "Dentiste",
|
||||
"iconHospital": "Hôpital",
|
||||
"iconDoctor": "Médecin",
|
||||
"iconVaccine": "Vaccination",
|
||||
"iconMedicine": "Médicament",
|
||||
"iconBandage": "Pansement",
|
||||
"iconHealth": "Santé",
|
||||
"iconActivity": "Activité",
|
||||
"iconHaircut": "Coiffeur",
|
||||
"iconSports": "Sport",
|
||||
"iconTrophy": "Compétition",
|
||||
"iconCar": "Voiture",
|
||||
"iconBus": "Bus",
|
||||
"iconTrain": "Train",
|
||||
"iconPlane": "Voyage",
|
||||
"iconFlight": "Vol",
|
||||
"iconFuel": "Carburant",
|
||||
"iconNavigation": "Navigation",
|
||||
"iconWork": "Travail",
|
||||
"iconLaptop": "Ordinateur portable",
|
||||
"iconPresentation": "Présentation",
|
||||
"iconSchool": "École",
|
||||
"iconEducation": "Éducation",
|
||||
"iconReading": "Lecture",
|
||||
"iconStudy": "Étude",
|
||||
"iconCalculator": "Calculatrice",
|
||||
"iconMeal": "Repas",
|
||||
"iconCooking": "Cuisine",
|
||||
"iconCoffee": "Café",
|
||||
"iconCake": "Anniversaire",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Vin",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Courses",
|
||||
"iconGroceries": "Épicerie",
|
||||
"iconGift": "Cadeau",
|
||||
"iconCard": "Carte",
|
||||
"iconWallet": "Portefeuille",
|
||||
"iconSavings": "Épargne",
|
||||
"iconBank": "Banque",
|
||||
"iconMusic": "Musique",
|
||||
"iconMovie": "Film",
|
||||
"iconTicket": "Billet",
|
||||
"iconGame": "Jeu",
|
||||
"iconPhoto": "Photo",
|
||||
"iconParty": "Fête",
|
||||
"iconFamily": "Famille",
|
||||
"iconBaby": "Bébé",
|
||||
"iconDog": "Chien",
|
||||
"iconCat": "Chat",
|
||||
"iconPet": "Animal de compagnie",
|
||||
"iconHome": "Maison",
|
||||
"iconBuilding": "Bâtiment",
|
||||
"iconRepair": "Réparation",
|
||||
"iconMaintenance": "Entretien",
|
||||
"iconDecoration": "Décoration",
|
||||
"iconFurniture": "Meubles",
|
||||
"iconLaundry": "Linge",
|
||||
"iconLeaf": "Nature",
|
||||
"iconTree": "Arbre",
|
||||
"iconFlower": "Fleur",
|
||||
"iconSun": "Jour",
|
||||
"iconMoon": "Nuit",
|
||||
"iconWeather": "Météo",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "विजेट खींचें",
|
||||
"customizeSize": "आकार",
|
||||
"customizeSizeFor": "{{widget}} का आकार",
|
||||
"customizeHide": "{{widget}} छिपाएँ"
|
||||
"customizeHide": "{{widget}} छिपाएँ",
|
||||
"widgetSizeTiny": "छोटा (1×1)",
|
||||
"widgetSizeNarrow": "संकरा (2×1)",
|
||||
"widgetSizeStandard": "मानक (2×2)",
|
||||
"widgetSizeLarge": "बड़ा (3×2)",
|
||||
"widgetSizeFull": "पूर्ण (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "कार्य",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "परिवर्तन रीसेट हो गए।"
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "आइकन खोजें...",
|
||||
"iconSearchEmpty": "कोई आइकन नहीं मिला।",
|
||||
"iconCategoryGeneral": "सामान्य",
|
||||
"iconCategoryHealth": "स्वास्थ्य और खेल",
|
||||
"iconCategoryTransport": "परिवहन और यात्रा",
|
||||
"iconCategoryWork": "काम और शिक्षा",
|
||||
"iconCategoryFood": "खाना और पेय",
|
||||
"iconCategoryShopping": "खरीदारी और वित्त",
|
||||
"iconCategoryLeisure": "मनोरंजन और फुर्सत",
|
||||
"iconCategoryFamily": "परिवार और पालतू जानवर",
|
||||
"iconCategoryHome": "घर और गृहस्थी",
|
||||
"iconCategoryNature": "प्रकृति और अन्य",
|
||||
"iconCalendar": "कैलेंडर",
|
||||
"iconAlarm": "अलार्म",
|
||||
"iconClock": "घड़ी",
|
||||
"iconBell": "अनुस्मारक",
|
||||
"iconLocation": "स्थान",
|
||||
"iconStar": "पसंदीदा",
|
||||
"iconFlag": "झंडा",
|
||||
"iconTarget": "लक्ष्य",
|
||||
"iconFlame": "महत्वपूर्ण",
|
||||
"iconTooth": "दंत चिकित्सक",
|
||||
"iconHospital": "अस्पताल",
|
||||
"iconDoctor": "डॉक्टर",
|
||||
"iconVaccine": "टीकाकरण",
|
||||
"iconMedicine": "दवा",
|
||||
"iconBandage": "पट्टी",
|
||||
"iconHealth": "स्वास्थ्य",
|
||||
"iconActivity": "गतिविधि",
|
||||
"iconHaircut": "नाई की दुकान",
|
||||
"iconSports": "खेल",
|
||||
"iconTrophy": "प्रतियोगिता",
|
||||
"iconCar": "कार",
|
||||
"iconBus": "बस",
|
||||
"iconTrain": "ट्रेन",
|
||||
"iconPlane": "यात्रा",
|
||||
"iconFlight": "उड़ान",
|
||||
"iconFuel": "ईंधन भरना",
|
||||
"iconNavigation": "नेविगेशन",
|
||||
"iconWork": "काम",
|
||||
"iconLaptop": "लैपटॉप",
|
||||
"iconPresentation": "प्रस्तुति",
|
||||
"iconSchool": "स्कूल",
|
||||
"iconEducation": "शिक्षा",
|
||||
"iconReading": "पठन",
|
||||
"iconStudy": "अध्ययन",
|
||||
"iconCalculator": "कैलकुलेटर",
|
||||
"iconMeal": "भोजन",
|
||||
"iconCooking": "खाना बनाना",
|
||||
"iconCoffee": "कॉफी",
|
||||
"iconCake": "जन्मदिन",
|
||||
"iconPizza": "पिज्जा",
|
||||
"iconWine": "वाइन",
|
||||
"iconBeer": "बार",
|
||||
"iconShopping": "खरीदारी",
|
||||
"iconGroceries": "किराना",
|
||||
"iconGift": "उपहार",
|
||||
"iconCard": "कार्ड",
|
||||
"iconWallet": "बटुआ",
|
||||
"iconSavings": "बचत",
|
||||
"iconBank": "बैंक",
|
||||
"iconMusic": "संगीत",
|
||||
"iconMovie": "फिल्म",
|
||||
"iconTicket": "टिकट",
|
||||
"iconGame": "खेल",
|
||||
"iconPhoto": "फोटो",
|
||||
"iconParty": "पार्टी",
|
||||
"iconFamily": "परिवार",
|
||||
"iconBaby": "शिशु",
|
||||
"iconDog": "कुत्ता",
|
||||
"iconCat": "बिल्ली",
|
||||
"iconPet": "पालतू जानवर",
|
||||
"iconHome": "घर",
|
||||
"iconBuilding": "इमारत",
|
||||
"iconRepair": "मरम्मत",
|
||||
"iconMaintenance": "रखरखाव",
|
||||
"iconDecoration": "सजावट",
|
||||
"iconFurniture": "फर्नीचर",
|
||||
"iconLaundry": "कपड़े धोना",
|
||||
"iconLeaf": "प्रकृति",
|
||||
"iconTree": "पेड़",
|
||||
"iconFlower": "फूल",
|
||||
"iconSun": "दिन",
|
||||
"iconMoon": "रात",
|
||||
"iconWeather": "मौसम",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Trascina widget",
|
||||
"customizeSize": "Dimensione",
|
||||
"customizeSizeFor": "Dimensione di {{widget}}",
|
||||
"customizeHide": "Nascondi {{widget}}"
|
||||
"customizeHide": "Nascondi {{widget}}",
|
||||
"widgetSizeTiny": "Piccolo (1×1)",
|
||||
"widgetSizeNarrow": "Stretto (2×1)",
|
||||
"widgetSizeStandard": "Standard (2×2)",
|
||||
"widgetSizeLarge": "Grande (3×2)",
|
||||
"widgetSizeFull": "Pieno (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Compiti",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Modifiche ripristinate."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Cerca icona...",
|
||||
"iconSearchEmpty": "Nessuna icona trovata.",
|
||||
"iconCategoryGeneral": "Generale",
|
||||
"iconCategoryHealth": "Salute & Sport",
|
||||
"iconCategoryTransport": "Mobilità & Viaggi",
|
||||
"iconCategoryWork": "Lavoro & Istruzione",
|
||||
"iconCategoryFood": "Cibo & Bevande",
|
||||
"iconCategoryShopping": "Acquisti & Finanze",
|
||||
"iconCategoryLeisure": "Tempo libero & Intrattenimento",
|
||||
"iconCategoryFamily": "Famiglia & Animali",
|
||||
"iconCategoryHome": "Casa & Abitazione",
|
||||
"iconCategoryNature": "Natura & Altro",
|
||||
"iconCalendar": "Calendario",
|
||||
"iconAlarm": "Sveglia",
|
||||
"iconClock": "Orologio",
|
||||
"iconBell": "Promemoria",
|
||||
"iconLocation": "Luogo",
|
||||
"iconStar": "Preferito",
|
||||
"iconFlag": "Bandiera",
|
||||
"iconTarget": "Obiettivo",
|
||||
"iconFlame": "Importante",
|
||||
"iconTooth": "Dentista",
|
||||
"iconHospital": "Ospedale",
|
||||
"iconDoctor": "Medico",
|
||||
"iconVaccine": "Vaccinazione",
|
||||
"iconMedicine": "Medicina",
|
||||
"iconBandage": "Benda",
|
||||
"iconHealth": "Salute",
|
||||
"iconActivity": "Attività",
|
||||
"iconHaircut": "Parrucchiere",
|
||||
"iconSports": "Sport",
|
||||
"iconTrophy": "Competizione",
|
||||
"iconCar": "Auto",
|
||||
"iconBus": "Autobus",
|
||||
"iconTrain": "Treno",
|
||||
"iconPlane": "Viaggio",
|
||||
"iconFlight": "Volo",
|
||||
"iconFuel": "Carburante",
|
||||
"iconNavigation": "Navigazione",
|
||||
"iconWork": "Lavoro",
|
||||
"iconLaptop": "Laptop",
|
||||
"iconPresentation": "Presentazione",
|
||||
"iconSchool": "Scuola",
|
||||
"iconEducation": "Istruzione",
|
||||
"iconReading": "Lettura",
|
||||
"iconStudy": "Studio",
|
||||
"iconCalculator": "Calcolatrice",
|
||||
"iconMeal": "Pasto",
|
||||
"iconCooking": "Cucinare",
|
||||
"iconCoffee": "Caffè",
|
||||
"iconCake": "Compleanno",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Vino",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Acquisti",
|
||||
"iconGroceries": "Alimentari",
|
||||
"iconGift": "Regalo",
|
||||
"iconCard": "Carta",
|
||||
"iconWallet": "Portafoglio",
|
||||
"iconSavings": "Risparmio",
|
||||
"iconBank": "Banca",
|
||||
"iconMusic": "Musica",
|
||||
"iconMovie": "Film",
|
||||
"iconTicket": "Biglietto",
|
||||
"iconGame": "Gioco",
|
||||
"iconPhoto": "Foto",
|
||||
"iconParty": "Festa",
|
||||
"iconFamily": "Famiglia",
|
||||
"iconBaby": "Neonato",
|
||||
"iconDog": "Cane",
|
||||
"iconCat": "Gatto",
|
||||
"iconPet": "Animale domestico",
|
||||
"iconHome": "Casa",
|
||||
"iconBuilding": "Edificio",
|
||||
"iconRepair": "Riparazione",
|
||||
"iconMaintenance": "Manutenzione",
|
||||
"iconDecoration": "Decorazione",
|
||||
"iconFurniture": "Mobili",
|
||||
"iconLaundry": "Bucato",
|
||||
"iconLeaf": "Natura",
|
||||
"iconTree": "Albero",
|
||||
"iconFlower": "Fiore",
|
||||
"iconSun": "Giorno",
|
||||
"iconMoon": "Notte",
|
||||
"iconWeather": "Meteo",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "ウィジェットをドラッグ",
|
||||
"customizeSize": "サイズ",
|
||||
"customizeSizeFor": "{{widget}} のサイズ",
|
||||
"customizeHide": "{{widget}} を非表示"
|
||||
"customizeHide": "{{widget}} を非表示",
|
||||
"widgetSizeTiny": "小 (1×1)",
|
||||
"widgetSizeNarrow": "縦長 (2×1)",
|
||||
"widgetSizeStandard": "標準 (2×2)",
|
||||
"widgetSizeLarge": "大 (3×2)",
|
||||
"widgetSizeFull": "全幅 (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "タスク",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "変更がリセットされました。"
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "アイコンを検索...",
|
||||
"iconSearchEmpty": "アイコンが見つかりません。",
|
||||
"iconCategoryGeneral": "一般",
|
||||
"iconCategoryHealth": "健康とスポーツ",
|
||||
"iconCategoryTransport": "移動と旅行",
|
||||
"iconCategoryWork": "仕事と教育",
|
||||
"iconCategoryFood": "食べ物と飲み物",
|
||||
"iconCategoryShopping": "ショッピングと財務",
|
||||
"iconCategoryLeisure": "レジャーとエンターテインメント",
|
||||
"iconCategoryFamily": "家族とペット",
|
||||
"iconCategoryHome": "家と家事",
|
||||
"iconCategoryNature": "自然とその他",
|
||||
"iconCalendar": "カレンダー",
|
||||
"iconAlarm": "アラーム",
|
||||
"iconClock": "時計",
|
||||
"iconBell": "リマインダー",
|
||||
"iconLocation": "場所",
|
||||
"iconStar": "お気に入り",
|
||||
"iconFlag": "フラグ",
|
||||
"iconTarget": "目標",
|
||||
"iconFlame": "重要",
|
||||
"iconTooth": "歯医者",
|
||||
"iconHospital": "病院",
|
||||
"iconDoctor": "医者",
|
||||
"iconVaccine": "ワクチン",
|
||||
"iconMedicine": "薬",
|
||||
"iconBandage": "包帯",
|
||||
"iconHealth": "健康",
|
||||
"iconActivity": "アクティビティ",
|
||||
"iconHaircut": "美容院",
|
||||
"iconSports": "スポーツ",
|
||||
"iconTrophy": "大会",
|
||||
"iconCar": "車",
|
||||
"iconBus": "バス",
|
||||
"iconTrain": "電車",
|
||||
"iconPlane": "旅行",
|
||||
"iconFlight": "フライト",
|
||||
"iconFuel": "給油",
|
||||
"iconNavigation": "ナビゲーション",
|
||||
"iconWork": "仕事",
|
||||
"iconLaptop": "ノートパソコン",
|
||||
"iconPresentation": "プレゼンテーション",
|
||||
"iconSchool": "学校",
|
||||
"iconEducation": "教育",
|
||||
"iconReading": "読書",
|
||||
"iconStudy": "勉強",
|
||||
"iconCalculator": "電卓",
|
||||
"iconMeal": "食事",
|
||||
"iconCooking": "料理",
|
||||
"iconCoffee": "コーヒー",
|
||||
"iconCake": "誕生日",
|
||||
"iconPizza": "ピザ",
|
||||
"iconWine": "ワイン",
|
||||
"iconBeer": "バー",
|
||||
"iconShopping": "ショッピング",
|
||||
"iconGroceries": "食料品",
|
||||
"iconGift": "プレゼント",
|
||||
"iconCard": "カード",
|
||||
"iconWallet": "財布",
|
||||
"iconSavings": "貯金",
|
||||
"iconBank": "銀行",
|
||||
"iconMusic": "音楽",
|
||||
"iconMovie": "映画",
|
||||
"iconTicket": "チケット",
|
||||
"iconGame": "ゲーム",
|
||||
"iconPhoto": "写真",
|
||||
"iconParty": "パーティー",
|
||||
"iconFamily": "家族",
|
||||
"iconBaby": "赤ちゃん",
|
||||
"iconDog": "犬",
|
||||
"iconCat": "猫",
|
||||
"iconPet": "ペット",
|
||||
"iconHome": "家",
|
||||
"iconBuilding": "建物",
|
||||
"iconRepair": "修理",
|
||||
"iconMaintenance": "メンテナンス",
|
||||
"iconDecoration": "装飾",
|
||||
"iconFurniture": "家具",
|
||||
"iconLaundry": "洗濯",
|
||||
"iconLeaf": "自然",
|
||||
"iconTree": "木",
|
||||
"iconFlower": "花",
|
||||
"iconSun": "昼",
|
||||
"iconMoon": "夜",
|
||||
"iconWeather": "天気",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Arrastar widget",
|
||||
"customizeSize": "Tamanho",
|
||||
"customizeSizeFor": "Tamanho de {{widget}}",
|
||||
"customizeHide": "Ocultar {{widget}}"
|
||||
"customizeHide": "Ocultar {{widget}}",
|
||||
"widgetSizeTiny": "Pequeno (1×1)",
|
||||
"widgetSizeNarrow": "Estreito (2×1)",
|
||||
"widgetSizeStandard": "Padrão (2×2)",
|
||||
"widgetSizeLarge": "Grande (3×2)",
|
||||
"widgetSizeFull": "Completo (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Tarefas",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Alterações restauradas."
|
||||
},
|
||||
"iconLabel": "Ícone",
|
||||
"iconSearchPlaceholder": "Pesquisar ícone...",
|
||||
"iconSearchEmpty": "Nenhum ícone encontrado.",
|
||||
"iconCategoryGeneral": "Geral",
|
||||
"iconCategoryHealth": "Saúde & Desporto",
|
||||
"iconCategoryTransport": "Mobilidade & Viagem",
|
||||
"iconCategoryWork": "Trabalho & Educação",
|
||||
"iconCategoryFood": "Comida & Bebida",
|
||||
"iconCategoryShopping": "Compras & Finanças",
|
||||
"iconCategoryLeisure": "Lazer & Entretenimento",
|
||||
"iconCategoryFamily": "Família & Animais",
|
||||
"iconCategoryHome": "Casa & Lar",
|
||||
"iconCategoryNature": "Natureza & Outros",
|
||||
"iconCalendar": "Calendário",
|
||||
"iconAlarm": "Alarme",
|
||||
"iconClock": "Relógio",
|
||||
"iconBell": "Lembrete",
|
||||
"iconLocation": "Local",
|
||||
"iconStar": "Favorito",
|
||||
"iconFlag": "Bandeira",
|
||||
"iconTarget": "Meta",
|
||||
"iconFlame": "Importante",
|
||||
"iconTooth": "Dentista",
|
||||
"iconHospital": "Hospital",
|
||||
"iconDoctor": "Médico",
|
||||
"iconVaccine": "Vacina",
|
||||
"iconMedicine": "Medicamento",
|
||||
"iconBandage": "Curativo",
|
||||
"iconHealth": "Saúde",
|
||||
"iconActivity": "Atividade",
|
||||
"iconHaircut": "Cabeleireiro",
|
||||
"iconSports": "Desporto",
|
||||
"iconTrophy": "Competição",
|
||||
"iconCar": "Carro",
|
||||
"iconBus": "Autocarro",
|
||||
"iconTrain": "Comboio",
|
||||
"iconPlane": "Viagem",
|
||||
"iconFlight": "Voo",
|
||||
"iconFuel": "Abastecimento",
|
||||
"iconNavigation": "Navegação",
|
||||
"iconWork": "Trabalho",
|
||||
"iconLaptop": "Portátil",
|
||||
"iconPresentation": "Apresentação",
|
||||
"iconSchool": "Escola",
|
||||
"iconEducation": "Educação",
|
||||
"iconReading": "Leitura",
|
||||
"iconStudy": "Estudo",
|
||||
"iconCalculator": "Calculadora",
|
||||
"iconMeal": "Refeição",
|
||||
"iconCooking": "Cozinhar",
|
||||
"iconCoffee": "Café",
|
||||
"iconCake": "Aniversário",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Vinho",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Compras",
|
||||
"iconGroceries": "Mercearia",
|
||||
"iconGift": "Presente",
|
||||
"iconCard": "Cartão",
|
||||
"iconWallet": "Carteira",
|
||||
"iconSavings": "Poupança",
|
||||
"iconBank": "Banco",
|
||||
"iconMusic": "Música",
|
||||
"iconMovie": "Filme",
|
||||
"iconTicket": "Bilhete",
|
||||
"iconGame": "Jogo",
|
||||
"iconPhoto": "Foto",
|
||||
"iconParty": "Festa",
|
||||
"iconFamily": "Família",
|
||||
"iconBaby": "Bebé",
|
||||
"iconDog": "Cão",
|
||||
"iconCat": "Gato",
|
||||
"iconPet": "Animal de estimação",
|
||||
"iconHome": "Casa",
|
||||
"iconBuilding": "Edifício",
|
||||
"iconRepair": "Reparação",
|
||||
"iconMaintenance": "Manutenção",
|
||||
"iconDecoration": "Decoração",
|
||||
"iconFurniture": "Mobília",
|
||||
"iconLaundry": "Roupa",
|
||||
"iconLeaf": "Natureza",
|
||||
"iconTree": "Árvore",
|
||||
"iconFlower": "Flor",
|
||||
"iconSun": "Dia",
|
||||
"iconMoon": "Noite",
|
||||
"iconWeather": "Tempo",
|
||||
"invalidDate": "Use uma data válida no formato selecionado.",
|
||||
"attachmentLabel": "Anexo",
|
||||
"attachmentHint": "Anexe uma imagem, PDF ou documento local. Imagens aparecem no pop-up do evento.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Перетащить виджет",
|
||||
"customizeSize": "Размер",
|
||||
"customizeSizeFor": "Размер для {{widget}}",
|
||||
"customizeHide": "Скрыть {{widget}}"
|
||||
"customizeHide": "Скрыть {{widget}}",
|
||||
"widgetSizeTiny": "Маленький (1×1)",
|
||||
"widgetSizeNarrow": "Узкий (2×1)",
|
||||
"widgetSizeStandard": "Стандартный (2×2)",
|
||||
"widgetSizeLarge": "Большой (3×2)",
|
||||
"widgetSizeFull": "Полный (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Задачи",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Изменения сброшены."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Поиск иконки...",
|
||||
"iconSearchEmpty": "Иконка не найдена.",
|
||||
"iconCategoryGeneral": "Общее",
|
||||
"iconCategoryHealth": "Здоровье и спорт",
|
||||
"iconCategoryTransport": "Транспорт и путешествия",
|
||||
"iconCategoryWork": "Работа и образование",
|
||||
"iconCategoryFood": "Еда и напитки",
|
||||
"iconCategoryShopping": "Покупки и финансы",
|
||||
"iconCategoryLeisure": "Досуг и развлечения",
|
||||
"iconCategoryFamily": "Семья и питомцы",
|
||||
"iconCategoryHome": "Дом и хозяйство",
|
||||
"iconCategoryNature": "Природа и прочее",
|
||||
"iconCalendar": "Календарь",
|
||||
"iconAlarm": "Будильник",
|
||||
"iconClock": "Часы",
|
||||
"iconBell": "Напоминание",
|
||||
"iconLocation": "Место",
|
||||
"iconStar": "Избранное",
|
||||
"iconFlag": "Флаг",
|
||||
"iconTarget": "Цель",
|
||||
"iconFlame": "Важно",
|
||||
"iconTooth": "Стоматолог",
|
||||
"iconHospital": "Больница",
|
||||
"iconDoctor": "Врач",
|
||||
"iconVaccine": "Прививка",
|
||||
"iconMedicine": "Лекарство",
|
||||
"iconBandage": "Перевязка",
|
||||
"iconHealth": "Здоровье",
|
||||
"iconActivity": "Активность",
|
||||
"iconHaircut": "Парикмахерская",
|
||||
"iconSports": "Спорт",
|
||||
"iconTrophy": "Соревнование",
|
||||
"iconCar": "Автомобиль",
|
||||
"iconBus": "Автобус",
|
||||
"iconTrain": "Поезд",
|
||||
"iconPlane": "Путешествие",
|
||||
"iconFlight": "Рейс",
|
||||
"iconFuel": "Заправка",
|
||||
"iconNavigation": "Навигация",
|
||||
"iconWork": "Работа",
|
||||
"iconLaptop": "Ноутбук",
|
||||
"iconPresentation": "Презентация",
|
||||
"iconSchool": "Школа",
|
||||
"iconEducation": "Образование",
|
||||
"iconReading": "Чтение",
|
||||
"iconStudy": "Учёба",
|
||||
"iconCalculator": "Калькулятор",
|
||||
"iconMeal": "Приём пищи",
|
||||
"iconCooking": "Готовка",
|
||||
"iconCoffee": "Кофе",
|
||||
"iconCake": "День рождения",
|
||||
"iconPizza": "Пицца",
|
||||
"iconWine": "Вино",
|
||||
"iconBeer": "Бар",
|
||||
"iconShopping": "Покупки",
|
||||
"iconGroceries": "Продукты",
|
||||
"iconGift": "Подарок",
|
||||
"iconCard": "Карта",
|
||||
"iconWallet": "Кошелёк",
|
||||
"iconSavings": "Сбережения",
|
||||
"iconBank": "Банк",
|
||||
"iconMusic": "Музыка",
|
||||
"iconMovie": "Фильм",
|
||||
"iconTicket": "Билет",
|
||||
"iconGame": "Игра",
|
||||
"iconPhoto": "Фото",
|
||||
"iconParty": "Вечеринка",
|
||||
"iconFamily": "Семья",
|
||||
"iconBaby": "Ребёнок",
|
||||
"iconDog": "Собака",
|
||||
"iconCat": "Кошка",
|
||||
"iconPet": "Питомец",
|
||||
"iconHome": "Дом",
|
||||
"iconBuilding": "Здание",
|
||||
"iconRepair": "Ремонт",
|
||||
"iconMaintenance": "Обслуживание",
|
||||
"iconDecoration": "Декор",
|
||||
"iconFurniture": "Мебель",
|
||||
"iconLaundry": "Стирка",
|
||||
"iconLeaf": "Природа",
|
||||
"iconTree": "Дерево",
|
||||
"iconFlower": "Цветок",
|
||||
"iconSun": "День",
|
||||
"iconMoon": "Ночь",
|
||||
"iconWeather": "Погода",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Dra widget",
|
||||
"customizeSize": "Storlek",
|
||||
"customizeSizeFor": "Storlek för {{widget}}",
|
||||
"customizeHide": "Dölj {{widget}}"
|
||||
"customizeHide": "Dölj {{widget}}",
|
||||
"widgetSizeTiny": "Liten (1×1)",
|
||||
"widgetSizeNarrow": "Smal (2×1)",
|
||||
"widgetSizeStandard": "Standard (2×2)",
|
||||
"widgetSizeLarge": "Stor (3×2)",
|
||||
"widgetSizeFull": "Hel (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Uppgifter",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Ändringar återställda."
|
||||
},
|
||||
"iconLabel": "Ikon",
|
||||
"iconSearchPlaceholder": "Sök ikon...",
|
||||
"iconSearchEmpty": "Ingen ikon hittades.",
|
||||
"iconCategoryGeneral": "Allmänt",
|
||||
"iconCategoryHealth": "Hälsa & Sport",
|
||||
"iconCategoryTransport": "Rörlighet & Resa",
|
||||
"iconCategoryWork": "Arbete & Utbildning",
|
||||
"iconCategoryFood": "Mat & Dryck",
|
||||
"iconCategoryShopping": "Shopping & Ekonomi",
|
||||
"iconCategoryLeisure": "Fritid & Underhållning",
|
||||
"iconCategoryFamily": "Familj & Husdjur",
|
||||
"iconCategoryHome": "Hem & Hushåll",
|
||||
"iconCategoryNature": "Natur & Övrigt",
|
||||
"iconCalendar": "Kalender",
|
||||
"iconAlarm": "Alarm",
|
||||
"iconClock": "Klocka",
|
||||
"iconBell": "Påminnelse",
|
||||
"iconLocation": "Plats",
|
||||
"iconStar": "Favorit",
|
||||
"iconFlag": "Flagga",
|
||||
"iconTarget": "Mål",
|
||||
"iconFlame": "Viktigt",
|
||||
"iconTooth": "Tandläkare",
|
||||
"iconHospital": "Sjukhus",
|
||||
"iconDoctor": "Läkare",
|
||||
"iconVaccine": "Vaccination",
|
||||
"iconMedicine": "Medicin",
|
||||
"iconBandage": "Förband",
|
||||
"iconHealth": "Hälsa",
|
||||
"iconActivity": "Aktivitet",
|
||||
"iconHaircut": "Frisör",
|
||||
"iconSports": "Sport",
|
||||
"iconTrophy": "Tävling",
|
||||
"iconCar": "Bil",
|
||||
"iconBus": "Buss",
|
||||
"iconTrain": "Tåg",
|
||||
"iconPlane": "Resa",
|
||||
"iconFlight": "Flyg",
|
||||
"iconFuel": "Tanka",
|
||||
"iconNavigation": "Navigation",
|
||||
"iconWork": "Arbete",
|
||||
"iconLaptop": "Laptop",
|
||||
"iconPresentation": "Presentation",
|
||||
"iconSchool": "Skola",
|
||||
"iconEducation": "Utbildning",
|
||||
"iconReading": "Läsning",
|
||||
"iconStudy": "Studera",
|
||||
"iconCalculator": "Räknare",
|
||||
"iconMeal": "Måltid",
|
||||
"iconCooking": "Matlagning",
|
||||
"iconCoffee": "Kaffe",
|
||||
"iconCake": "Födelsedag",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Vin",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Shopping",
|
||||
"iconGroceries": "Livsmedel",
|
||||
"iconGift": "Present",
|
||||
"iconCard": "Kort",
|
||||
"iconWallet": "Plånbok",
|
||||
"iconSavings": "Sparande",
|
||||
"iconBank": "Bank",
|
||||
"iconMusic": "Musik",
|
||||
"iconMovie": "Film",
|
||||
"iconTicket": "Biljett",
|
||||
"iconGame": "Spel",
|
||||
"iconPhoto": "Foto",
|
||||
"iconParty": "Fest",
|
||||
"iconFamily": "Familj",
|
||||
"iconBaby": "Baby",
|
||||
"iconDog": "Hund",
|
||||
"iconCat": "Katt",
|
||||
"iconPet": "Husdjur",
|
||||
"iconHome": "Hem",
|
||||
"iconBuilding": "Byggnad",
|
||||
"iconRepair": "Reparation",
|
||||
"iconMaintenance": "Underhåll",
|
||||
"iconDecoration": "Dekoration",
|
||||
"iconFurniture": "Möbler",
|
||||
"iconLaundry": "Tvätt",
|
||||
"iconLeaf": "Natur",
|
||||
"iconTree": "Träd",
|
||||
"iconFlower": "Blomma",
|
||||
"iconSun": "Dag",
|
||||
"iconMoon": "Natt",
|
||||
"iconWeather": "Väder",
|
||||
"invalidDate": "Använd ett giltigt datum i det valda datumformatet.",
|
||||
"attachmentLabel": "Fastsättning",
|
||||
"attachmentHint": "Bifoga en lokal bild, PDF eller dokument. Bilder kommer att visas i evenemangets popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Widgetı sürükle",
|
||||
"customizeSize": "Boyut",
|
||||
"customizeSizeFor": "{{widget}} boyutu",
|
||||
"customizeHide": "{{widget}} gizle"
|
||||
"customizeHide": "{{widget}} gizle",
|
||||
"widgetSizeTiny": "Küçük (1×1)",
|
||||
"widgetSizeNarrow": "Dar (2×1)",
|
||||
"widgetSizeStandard": "Standart (2×2)",
|
||||
"widgetSizeLarge": "Büyük (3×2)",
|
||||
"widgetSizeFull": "Tam (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Görevler",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Değişiklikler sıfırlandı."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Simge ara...",
|
||||
"iconSearchEmpty": "Simge bulunamadı.",
|
||||
"iconCategoryGeneral": "Genel",
|
||||
"iconCategoryHealth": "Sağlık & Spor",
|
||||
"iconCategoryTransport": "Ulaşım & Seyahat",
|
||||
"iconCategoryWork": "İş & Eğitim",
|
||||
"iconCategoryFood": "Yiyecek & İçecek",
|
||||
"iconCategoryShopping": "Alışveriş & Finans",
|
||||
"iconCategoryLeisure": "Boş Zaman & Eğlence",
|
||||
"iconCategoryFamily": "Aile & Evcil Hayvanlar",
|
||||
"iconCategoryHome": "Ev & Hane",
|
||||
"iconCategoryNature": "Doğa & Diğer",
|
||||
"iconCalendar": "Takvim",
|
||||
"iconAlarm": "Alarm",
|
||||
"iconClock": "Saat",
|
||||
"iconBell": "Hatırlatıcı",
|
||||
"iconLocation": "Konum",
|
||||
"iconStar": "Favori",
|
||||
"iconFlag": "Bayrak",
|
||||
"iconTarget": "Hedef",
|
||||
"iconFlame": "Önemli",
|
||||
"iconTooth": "Diş hekimi",
|
||||
"iconHospital": "Hastane",
|
||||
"iconDoctor": "Doktor",
|
||||
"iconVaccine": "Aşı",
|
||||
"iconMedicine": "İlaç",
|
||||
"iconBandage": "Sargı",
|
||||
"iconHealth": "Sağlık",
|
||||
"iconActivity": "Aktivite",
|
||||
"iconHaircut": "Kuaför",
|
||||
"iconSports": "Spor",
|
||||
"iconTrophy": "Yarışma",
|
||||
"iconCar": "Araba",
|
||||
"iconBus": "Otobüs",
|
||||
"iconTrain": "Tren",
|
||||
"iconPlane": "Seyahat",
|
||||
"iconFlight": "Uçuş",
|
||||
"iconFuel": "Yakıt",
|
||||
"iconNavigation": "Navigasyon",
|
||||
"iconWork": "İş",
|
||||
"iconLaptop": "Dizüstü bilgisayar",
|
||||
"iconPresentation": "Sunum",
|
||||
"iconSchool": "Okul",
|
||||
"iconEducation": "Eğitim",
|
||||
"iconReading": "Okuma",
|
||||
"iconStudy": "Çalışma",
|
||||
"iconCalculator": "Hesap makinesi",
|
||||
"iconMeal": "Öğün",
|
||||
"iconCooking": "Yemek pişirme",
|
||||
"iconCoffee": "Kahve",
|
||||
"iconCake": "Doğum günü",
|
||||
"iconPizza": "Pizza",
|
||||
"iconWine": "Şarap",
|
||||
"iconBeer": "Bar",
|
||||
"iconShopping": "Alışveriş",
|
||||
"iconGroceries": "Market",
|
||||
"iconGift": "Hediye",
|
||||
"iconCard": "Kart",
|
||||
"iconWallet": "Cüzdan",
|
||||
"iconSavings": "Tasarruf",
|
||||
"iconBank": "Banka",
|
||||
"iconMusic": "Müzik",
|
||||
"iconMovie": "Film",
|
||||
"iconTicket": "Bilet",
|
||||
"iconGame": "Oyun",
|
||||
"iconPhoto": "Fotoğraf",
|
||||
"iconParty": "Parti",
|
||||
"iconFamily": "Aile",
|
||||
"iconBaby": "Bebek",
|
||||
"iconDog": "Köpek",
|
||||
"iconCat": "Kedi",
|
||||
"iconPet": "Evcil hayvan",
|
||||
"iconHome": "Ev",
|
||||
"iconBuilding": "Bina",
|
||||
"iconRepair": "Tamir",
|
||||
"iconMaintenance": "Bakım",
|
||||
"iconDecoration": "Dekorasyon",
|
||||
"iconFurniture": "Mobilya",
|
||||
"iconLaundry": "Çamaşır",
|
||||
"iconLeaf": "Doğa",
|
||||
"iconTree": "Ağaç",
|
||||
"iconFlower": "Çiçek",
|
||||
"iconSun": "Gün",
|
||||
"iconMoon": "Gece",
|
||||
"iconWeather": "Hava durumu",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "Перетягнути віджет",
|
||||
"customizeSize": "Розмір",
|
||||
"customizeSizeFor": "Розмір для {{widget}}",
|
||||
"customizeHide": "Приховати {{widget}}"
|
||||
"customizeHide": "Приховати {{widget}}",
|
||||
"widgetSizeTiny": "Маленький (1×1)",
|
||||
"widgetSizeNarrow": "Вузький (2×1)",
|
||||
"widgetSizeStandard": "Стандартний (2×2)",
|
||||
"widgetSizeLarge": "Великий (3×2)",
|
||||
"widgetSizeFull": "Повний (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Завдання",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "Зміни скинуто."
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "Пошук іконки...",
|
||||
"iconSearchEmpty": "Іконку не знайдено.",
|
||||
"iconCategoryGeneral": "Загальне",
|
||||
"iconCategoryHealth": "Здоров'я та спорт",
|
||||
"iconCategoryTransport": "Транспорт та подорожі",
|
||||
"iconCategoryWork": "Робота та освіта",
|
||||
"iconCategoryFood": "Їжа та напої",
|
||||
"iconCategoryShopping": "Покупки та фінанси",
|
||||
"iconCategoryLeisure": "Дозвілля та розваги",
|
||||
"iconCategoryFamily": "Сім'я та домашні тварини",
|
||||
"iconCategoryHome": "Будинок та господарство",
|
||||
"iconCategoryNature": "Природа та інше",
|
||||
"iconCalendar": "Календар",
|
||||
"iconAlarm": "Будильник",
|
||||
"iconClock": "Годинник",
|
||||
"iconBell": "Нагадування",
|
||||
"iconLocation": "Місце",
|
||||
"iconStar": "Обране",
|
||||
"iconFlag": "Прапор",
|
||||
"iconTarget": "Ціль",
|
||||
"iconFlame": "Важливо",
|
||||
"iconTooth": "Стоматолог",
|
||||
"iconHospital": "Лікарня",
|
||||
"iconDoctor": "Лікар",
|
||||
"iconVaccine": "Щеплення",
|
||||
"iconMedicine": "Ліки",
|
||||
"iconBandage": "Перев'язка",
|
||||
"iconHealth": "Здоров'я",
|
||||
"iconActivity": "Активність",
|
||||
"iconHaircut": "Перукарня",
|
||||
"iconSports": "Спорт",
|
||||
"iconTrophy": "Змагання",
|
||||
"iconCar": "Автомобіль",
|
||||
"iconBus": "Автобус",
|
||||
"iconTrain": "Поїзд",
|
||||
"iconPlane": "Подорож",
|
||||
"iconFlight": "Рейс",
|
||||
"iconFuel": "Заправка",
|
||||
"iconNavigation": "Навігація",
|
||||
"iconWork": "Робота",
|
||||
"iconLaptop": "Ноутбук",
|
||||
"iconPresentation": "Презентація",
|
||||
"iconSchool": "Школа",
|
||||
"iconEducation": "Освіта",
|
||||
"iconReading": "Читання",
|
||||
"iconStudy": "Навчання",
|
||||
"iconCalculator": "Калькулятор",
|
||||
"iconMeal": "Прийом їжі",
|
||||
"iconCooking": "Готування",
|
||||
"iconCoffee": "Кава",
|
||||
"iconCake": "День народження",
|
||||
"iconPizza": "Піца",
|
||||
"iconWine": "Вино",
|
||||
"iconBeer": "Бар",
|
||||
"iconShopping": "Покупки",
|
||||
"iconGroceries": "Продукти",
|
||||
"iconGift": "Подарунок",
|
||||
"iconCard": "Картка",
|
||||
"iconWallet": "Гаманець",
|
||||
"iconSavings": "Заощадження",
|
||||
"iconBank": "Банк",
|
||||
"iconMusic": "Музика",
|
||||
"iconMovie": "Фільм",
|
||||
"iconTicket": "Квиток",
|
||||
"iconGame": "Гра",
|
||||
"iconPhoto": "Фото",
|
||||
"iconParty": "Вечірка",
|
||||
"iconFamily": "Сім'я",
|
||||
"iconBaby": "Немовля",
|
||||
"iconDog": "Собака",
|
||||
"iconCat": "Кіт",
|
||||
"iconPet": "Домашня тварина",
|
||||
"iconHome": "Будинок",
|
||||
"iconBuilding": "Будівля",
|
||||
"iconRepair": "Ремонт",
|
||||
"iconMaintenance": "Обслуговування",
|
||||
"iconDecoration": "Декор",
|
||||
"iconFurniture": "Меблі",
|
||||
"iconLaundry": "Прання",
|
||||
"iconLeaf": "Природа",
|
||||
"iconTree": "Дерево",
|
||||
"iconFlower": "Квітка",
|
||||
"iconSun": "День",
|
||||
"iconMoon": "Ніч",
|
||||
"iconWeather": "Погода",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
+91
-1
@@ -118,7 +118,12 @@
|
||||
"customizeDrag": "拖动小组件",
|
||||
"customizeSize": "大小",
|
||||
"customizeSizeFor": "{{widget}} 的大小",
|
||||
"customizeHide": "隐藏 {{widget}}"
|
||||
"customizeHide": "隐藏 {{widget}}",
|
||||
"widgetSizeTiny": "小 (1×1)",
|
||||
"widgetSizeNarrow": "窄 (2×1)",
|
||||
"widgetSizeStandard": "标准 (2×2)",
|
||||
"widgetSizeLarge": "大 (3×2)",
|
||||
"widgetSizeFull": "全宽 (4×2)"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "任务",
|
||||
@@ -374,6 +379,91 @@
|
||||
"resetToast": "更改已重置。"
|
||||
},
|
||||
"iconLabel": "Icon",
|
||||
"iconSearchPlaceholder": "搜索图标...",
|
||||
"iconSearchEmpty": "未找到图标。",
|
||||
"iconCategoryGeneral": "通用",
|
||||
"iconCategoryHealth": "健康与运动",
|
||||
"iconCategoryTransport": "出行与旅行",
|
||||
"iconCategoryWork": "工作与教育",
|
||||
"iconCategoryFood": "饮食",
|
||||
"iconCategoryShopping": "购物与财务",
|
||||
"iconCategoryLeisure": "休闲与娱乐",
|
||||
"iconCategoryFamily": "家庭与宠物",
|
||||
"iconCategoryHome": "家居与家务",
|
||||
"iconCategoryNature": "自然与其他",
|
||||
"iconCalendar": "日历",
|
||||
"iconAlarm": "闹钟",
|
||||
"iconClock": "时钟",
|
||||
"iconBell": "提醒",
|
||||
"iconLocation": "地点",
|
||||
"iconStar": "收藏",
|
||||
"iconFlag": "旗帜",
|
||||
"iconTarget": "目标",
|
||||
"iconFlame": "重要",
|
||||
"iconTooth": "牙医",
|
||||
"iconHospital": "医院",
|
||||
"iconDoctor": "医生",
|
||||
"iconVaccine": "疫苗",
|
||||
"iconMedicine": "药物",
|
||||
"iconBandage": "绷带",
|
||||
"iconHealth": "健康",
|
||||
"iconActivity": "活动",
|
||||
"iconHaircut": "理发店",
|
||||
"iconSports": "运动",
|
||||
"iconTrophy": "比赛",
|
||||
"iconCar": "汽车",
|
||||
"iconBus": "公交车",
|
||||
"iconTrain": "火车",
|
||||
"iconPlane": "旅行",
|
||||
"iconFlight": "航班",
|
||||
"iconFuel": "加油",
|
||||
"iconNavigation": "导航",
|
||||
"iconWork": "工作",
|
||||
"iconLaptop": "笔记本电脑",
|
||||
"iconPresentation": "演示",
|
||||
"iconSchool": "学校",
|
||||
"iconEducation": "教育",
|
||||
"iconReading": "阅读",
|
||||
"iconStudy": "学习",
|
||||
"iconCalculator": "计算器",
|
||||
"iconMeal": "餐食",
|
||||
"iconCooking": "烹饪",
|
||||
"iconCoffee": "咖啡",
|
||||
"iconCake": "生日",
|
||||
"iconPizza": "披萨",
|
||||
"iconWine": "葡萄酒",
|
||||
"iconBeer": "酒吧",
|
||||
"iconShopping": "购物",
|
||||
"iconGroceries": "杂货",
|
||||
"iconGift": "礼物",
|
||||
"iconCard": "卡片",
|
||||
"iconWallet": "钱包",
|
||||
"iconSavings": "储蓄",
|
||||
"iconBank": "银行",
|
||||
"iconMusic": "音乐",
|
||||
"iconMovie": "电影",
|
||||
"iconTicket": "票",
|
||||
"iconGame": "游戏",
|
||||
"iconPhoto": "照片",
|
||||
"iconParty": "聚会",
|
||||
"iconFamily": "家庭",
|
||||
"iconBaby": "婴儿",
|
||||
"iconDog": "狗",
|
||||
"iconCat": "猫",
|
||||
"iconPet": "宠物",
|
||||
"iconHome": "家",
|
||||
"iconBuilding": "建筑",
|
||||
"iconRepair": "维修",
|
||||
"iconMaintenance": "维护",
|
||||
"iconDecoration": "装饰",
|
||||
"iconFurniture": "家具",
|
||||
"iconLaundry": "洗衣",
|
||||
"iconLeaf": "自然",
|
||||
"iconTree": "树",
|
||||
"iconFlower": "花",
|
||||
"iconSun": "白天",
|
||||
"iconMoon": "夜晚",
|
||||
"iconWeather": "天气",
|
||||
"invalidDate": "Use a valid date in the selected date format.",
|
||||
"attachmentLabel": "Attachment",
|
||||
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
|
||||
|
||||
@@ -57,6 +57,28 @@ async function loadData() {
|
||||
]);
|
||||
state.birthdays = allRes.data ?? [];
|
||||
state.upcoming = upcomingRes.data ?? [];
|
||||
updateBirthdayBadge();
|
||||
}
|
||||
|
||||
function updateBirthdayBadge() {
|
||||
const soon = state.upcoming.filter((b) => b.days_until <= 3).length;
|
||||
document.querySelectorAll('[data-route="/birthdays"] .nav-badge').forEach((el) => el.remove());
|
||||
if (!soon) return;
|
||||
document.querySelectorAll('[data-route="/birthdays"]').forEach((navItem) => {
|
||||
let anchor = navItem.querySelector('.nav-item__icon-wrap');
|
||||
if (!anchor) {
|
||||
const icon = navItem.querySelector('.nav-item__icon');
|
||||
anchor = document.createElement('span');
|
||||
anchor.className = 'nav-item__icon-wrap';
|
||||
if (icon) { icon.replaceWith(anchor); anchor.appendChild(icon); }
|
||||
else navItem.prepend(anchor);
|
||||
}
|
||||
const badge = document.createElement('span');
|
||||
badge.className = 'nav-badge';
|
||||
badge.setAttribute('aria-hidden', 'true');
|
||||
badge.textContent = String(soon);
|
||||
anchor.appendChild(badge);
|
||||
});
|
||||
}
|
||||
|
||||
function renderSuggestions() {
|
||||
|
||||
@@ -826,13 +826,13 @@ function openBudgetModal({ mode, entry = null, initialType = '' }) {
|
||||
</div>
|
||||
|
||||
<div class="form-group js-entry-field">
|
||||
<label class="form-label" for="bm-title">${t('budget.titleLabel')}</label>
|
||||
<label class="form-label" for="bm-title">${t('budget.titleLabel')}<span class="required-marker" aria-hidden="true"> *</span></label>
|
||||
<input type="text" class="form-input" id="bm-title"
|
||||
placeholder="${t('budget.titlePlaceholder')}" value="${esc(isEdit ? entry.title : '')}">
|
||||
</div>
|
||||
|
||||
<div class="form-group js-entry-field">
|
||||
<label class="form-label" for="bm-amount">${t('budget.amountLabel')}</label>
|
||||
<label class="form-label" for="bm-amount">${t('budget.amountLabel')}<span class="required-marker" aria-hidden="true"> *</span></label>
|
||||
<input type="number" class="form-input" id="bm-amount"
|
||||
placeholder="${t('budget.amountPlaceholder')}" step="0.01" min="0"
|
||||
inputmode="decimal" value="${absAmount}">
|
||||
|
||||
+220
-124
@@ -63,111 +63,145 @@ const EVENT_ICON_ALIASES = {
|
||||
drill: 'tooth',
|
||||
};
|
||||
|
||||
const EVENT_ICONS = [
|
||||
{ value: 'calendar', label: 'Calendar' },
|
||||
{ value: 'tooth', label: 'Dentist' },
|
||||
{ value: 'alarm-clock', label: 'Alarm' },
|
||||
{ value: 'clock', label: 'Time' },
|
||||
{ value: 'bell', label: 'Reminder' },
|
||||
{ value: 'map-pin', label: 'Location' },
|
||||
{ value: 'home', label: 'Home' },
|
||||
{ value: 'house', label: 'House' },
|
||||
{ value: 'building', label: 'Building' },
|
||||
{ value: 'hospital', label: 'Hospital' },
|
||||
{ value: 'stethoscope', label: 'Doctor' },
|
||||
{ value: 'syringe', label: 'Vaccine' },
|
||||
{ value: 'pill', label: 'Medicine' },
|
||||
{ value: 'tablets', label: 'Tablets' },
|
||||
{ value: 'bandage', label: 'Bandage' },
|
||||
{ value: 'ambulance', label: 'Ambulance' },
|
||||
{ value: 'heart-pulse', label: 'Health' },
|
||||
{ value: 'activity', label: 'Activity' },
|
||||
{ value: 'cross', label: 'Care' },
|
||||
{ value: 'scissors', label: 'Haircut' },
|
||||
{ value: 'shower-head', label: 'Personal care' },
|
||||
{ value: 'dumbbell', label: 'Sports' },
|
||||
{ value: 'trophy', label: 'Competition' },
|
||||
{ value: 'car', label: 'Car' },
|
||||
{ value: 'bus', label: 'Bus' },
|
||||
{ value: 'train', label: 'Train' },
|
||||
{ value: 'tram-front', label: 'Transit' },
|
||||
{ value: 'fuel', label: 'Fuel' },
|
||||
{ value: 'parking-meter', label: 'Parking' },
|
||||
{ value: 'traffic-cone', label: 'Traffic' },
|
||||
{ value: 'navigation', label: 'Navigation' },
|
||||
{ value: 'route', label: 'Route' },
|
||||
{ value: 'briefcase', label: 'Work' },
|
||||
{ value: 'laptop', label: 'Laptop' },
|
||||
{ value: 'monitor', label: 'Computer' },
|
||||
{ value: 'presentation', label: 'Presentation' },
|
||||
{ value: 'plane', label: 'Travel' },
|
||||
{ value: 'plane-takeoff', label: 'Flight' },
|
||||
{ value: 'school', label: 'School' },
|
||||
{ value: 'graduation-cap', label: 'Education' },
|
||||
{ value: 'book-open', label: 'Reading' },
|
||||
{ value: 'library', label: 'Library' },
|
||||
{ value: 'pencil', label: 'Study' },
|
||||
{ value: 'notebook-pen', label: 'Notes' },
|
||||
{ value: 'calculator', label: 'Calculator' },
|
||||
{ value: 'utensils', label: 'Meal' },
|
||||
{ value: 'cooking-pot', label: 'Cooking' },
|
||||
{ value: 'coffee', label: 'Coffee' },
|
||||
{ value: 'cake', label: 'Birthday' },
|
||||
{ value: 'croissant', label: 'Bakery' },
|
||||
{ value: 'pizza', label: 'Pizza' },
|
||||
{ value: 'ice-cream', label: 'Dessert' },
|
||||
{ value: 'beer', label: 'Bar' },
|
||||
{ value: 'wine', label: 'Wine' },
|
||||
{ value: 'popcorn', label: 'Cinema' },
|
||||
{ value: 'sandwich', label: 'Snack' },
|
||||
{ value: 'salad', label: 'Salad' },
|
||||
{ value: 'shopping-bag', label: 'Shopping' },
|
||||
{ value: 'shopping-cart', label: 'Groceries' },
|
||||
{ value: 'gift', label: 'Gift' },
|
||||
{ value: 'package', label: 'Package' },
|
||||
{ value: 'shirt', label: 'Clothing' },
|
||||
{ value: 'tag', label: 'Tag' },
|
||||
{ value: 'credit-card', label: 'Card' },
|
||||
{ value: 'wallet', label: 'Wallet' },
|
||||
{ value: 'banknote', label: 'Cash' },
|
||||
{ value: 'coins', label: 'Coins' },
|
||||
{ value: 'piggy-bank', label: 'Savings' },
|
||||
{ value: 'receipt', label: 'Receipt' },
|
||||
{ value: 'landmark', label: 'Bank' },
|
||||
{ value: 'music', label: 'Music' },
|
||||
{ value: 'guitar', label: 'Guitar' },
|
||||
{ value: 'film', label: 'Movie' },
|
||||
{ value: 'theater', label: 'Theater' },
|
||||
{ value: 'ticket', label: 'Ticket' },
|
||||
{ value: 'gamepad-2', label: 'Game' },
|
||||
{ value: 'camera', label: 'Photo' },
|
||||
{ value: 'party-popper', label: 'Party' },
|
||||
{ value: 'users', label: 'Family' },
|
||||
{ value: 'baby', label: 'Baby' },
|
||||
{ value: 'dog', label: 'Dog' },
|
||||
{ value: 'cat', label: 'Cat' },
|
||||
{ value: 'paw-print', label: 'Pet' },
|
||||
{ value: 'wrench', label: 'Repair' },
|
||||
{ value: 'hammer', label: 'Maintenance' },
|
||||
{ value: 'paintbrush', label: 'Decoration' },
|
||||
{ value: 'lightbulb', label: 'Idea' },
|
||||
{ value: 'sofa', label: 'Furniture' },
|
||||
{ value: 'bed', label: 'Bed' },
|
||||
{ value: 'bath', label: 'Bath' },
|
||||
{ value: 'washing-machine', label: 'Laundry' },
|
||||
{ value: 'refrigerator', label: 'Fridge' },
|
||||
{ value: 'star', label: 'Favorite' },
|
||||
{ value: 'flag', label: 'Flag' },
|
||||
{ value: 'target', label: 'Goal' },
|
||||
{ value: 'flame', label: 'Important' },
|
||||
{ value: 'leaf', label: 'Nature' },
|
||||
{ value: 'tree-pine', label: 'Outdoors' },
|
||||
{ value: 'flower', label: 'Flower' },
|
||||
{ value: 'sun', label: 'Day' },
|
||||
{ value: 'moon', label: 'Night' },
|
||||
{ value: 'cloud-sun', label: 'Weather' },
|
||||
const EVENT_ICON_CATEGORIES = () => [
|
||||
{
|
||||
key: 'general',
|
||||
label: t('calendar.iconCategoryGeneral'),
|
||||
icons: [
|
||||
{ value: 'calendar', label: t('calendar.iconCalendar') },
|
||||
{ value: 'alarm-clock', label: t('calendar.iconAlarm') },
|
||||
{ value: 'clock', label: t('calendar.iconClock') },
|
||||
{ value: 'bell', label: t('calendar.iconBell') },
|
||||
{ value: 'map-pin', label: t('calendar.iconLocation') },
|
||||
{ value: 'star', label: t('calendar.iconStar') },
|
||||
{ value: 'flag', label: t('calendar.iconFlag') },
|
||||
{ value: 'target', label: t('calendar.iconTarget') },
|
||||
{ value: 'flame', label: t('calendar.iconFlame') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'health',
|
||||
label: t('calendar.iconCategoryHealth'),
|
||||
icons: [
|
||||
{ value: 'tooth', label: t('calendar.iconTooth') },
|
||||
{ value: 'hospital', label: t('calendar.iconHospital') },
|
||||
{ value: 'stethoscope', label: t('calendar.iconDoctor') },
|
||||
{ value: 'syringe', label: t('calendar.iconVaccine') },
|
||||
{ value: 'pill', label: t('calendar.iconMedicine') },
|
||||
{ value: 'bandage', label: t('calendar.iconBandage') },
|
||||
{ value: 'heart-pulse', label: t('calendar.iconHealth') },
|
||||
{ value: 'activity', label: t('calendar.iconActivity') },
|
||||
{ value: 'scissors', label: t('calendar.iconHaircut') },
|
||||
{ value: 'dumbbell', label: t('calendar.iconSports') },
|
||||
{ value: 'trophy', label: t('calendar.iconTrophy') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'transport',
|
||||
label: t('calendar.iconCategoryTransport'),
|
||||
icons: [
|
||||
{ value: 'car', label: t('calendar.iconCar') },
|
||||
{ value: 'bus', label: t('calendar.iconBus') },
|
||||
{ value: 'train', label: t('calendar.iconTrain') },
|
||||
{ value: 'plane', label: t('calendar.iconPlane') },
|
||||
{ value: 'plane-takeoff', label: t('calendar.iconFlight') },
|
||||
{ value: 'fuel', label: t('calendar.iconFuel') },
|
||||
{ value: 'navigation', label: t('calendar.iconNavigation') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'work',
|
||||
label: t('calendar.iconCategoryWork'),
|
||||
icons: [
|
||||
{ value: 'briefcase', label: t('calendar.iconWork') },
|
||||
{ value: 'laptop', label: t('calendar.iconLaptop') },
|
||||
{ value: 'presentation', label: t('calendar.iconPresentation') },
|
||||
{ value: 'school', label: t('calendar.iconSchool') },
|
||||
{ value: 'graduation-cap', label: t('calendar.iconEducation') },
|
||||
{ value: 'book-open', label: t('calendar.iconReading') },
|
||||
{ value: 'pencil', label: t('calendar.iconStudy') },
|
||||
{ value: 'calculator', label: t('calendar.iconCalculator') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'food',
|
||||
label: t('calendar.iconCategoryFood'),
|
||||
icons: [
|
||||
{ value: 'utensils', label: t('calendar.iconMeal') },
|
||||
{ value: 'cooking-pot', label: t('calendar.iconCooking') },
|
||||
{ value: 'coffee', label: t('calendar.iconCoffee') },
|
||||
{ value: 'cake', label: t('calendar.iconCake') },
|
||||
{ value: 'pizza', label: t('calendar.iconPizza') },
|
||||
{ value: 'wine', label: t('calendar.iconWine') },
|
||||
{ value: 'beer', label: t('calendar.iconBeer') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'shopping',
|
||||
label: t('calendar.iconCategoryShopping'),
|
||||
icons: [
|
||||
{ value: 'shopping-bag', label: t('calendar.iconShopping') },
|
||||
{ value: 'shopping-cart', label: t('calendar.iconGroceries') },
|
||||
{ value: 'gift', label: t('calendar.iconGift') },
|
||||
{ value: 'credit-card', label: t('calendar.iconCard') },
|
||||
{ value: 'wallet', label: t('calendar.iconWallet') },
|
||||
{ value: 'piggy-bank', label: t('calendar.iconSavings') },
|
||||
{ value: 'landmark', label: t('calendar.iconBank') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'leisure',
|
||||
label: t('calendar.iconCategoryLeisure'),
|
||||
icons: [
|
||||
{ value: 'music', label: t('calendar.iconMusic') },
|
||||
{ value: 'film', label: t('calendar.iconMovie') },
|
||||
{ value: 'ticket', label: t('calendar.iconTicket') },
|
||||
{ value: 'gamepad-2', label: t('calendar.iconGame') },
|
||||
{ value: 'camera', label: t('calendar.iconPhoto') },
|
||||
{ value: 'party-popper', label: t('calendar.iconParty') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'family',
|
||||
label: t('calendar.iconCategoryFamily'),
|
||||
icons: [
|
||||
{ value: 'users', label: t('calendar.iconFamily') },
|
||||
{ value: 'baby', label: t('calendar.iconBaby') },
|
||||
{ value: 'dog', label: t('calendar.iconDog') },
|
||||
{ value: 'cat', label: t('calendar.iconCat') },
|
||||
{ value: 'paw-print', label: t('calendar.iconPet') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'home',
|
||||
label: t('calendar.iconCategoryHome'),
|
||||
icons: [
|
||||
{ value: 'home', label: t('calendar.iconHome') },
|
||||
{ value: 'building', label: t('calendar.iconBuilding') },
|
||||
{ value: 'wrench', label: t('calendar.iconRepair') },
|
||||
{ value: 'hammer', label: t('calendar.iconMaintenance') },
|
||||
{ value: 'paintbrush', label: t('calendar.iconDecoration') },
|
||||
{ value: 'sofa', label: t('calendar.iconFurniture') },
|
||||
{ value: 'washing-machine', label: t('calendar.iconLaundry') },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'nature',
|
||||
label: t('calendar.iconCategoryNature'),
|
||||
icons: [
|
||||
{ value: 'leaf', label: t('calendar.iconLeaf') },
|
||||
{ value: 'tree-pine', label: t('calendar.iconTree') },
|
||||
{ value: 'flower', label: t('calendar.iconFlower') },
|
||||
{ value: 'sun', label: t('calendar.iconSun') },
|
||||
{ value: 'moon', label: t('calendar.iconMoon') },
|
||||
{ value: 'cloud-sun', label: t('calendar.iconWeather') },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
// Flache Liste aller Icons für Kompatibilität (z.B. eventIconName-Validierung)
|
||||
const EVENT_ICONS = EVENT_ICON_CATEGORIES().flatMap((cat) => cat.icons);
|
||||
|
||||
const CUSTOM_EVENT_ICONS = new Set(['tooth']);
|
||||
const MAX_ATTACHMENT_BYTES = 5 * 1024 * 1024;
|
||||
const ATTACHMENT_IMAGE_MIME = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
|
||||
@@ -556,7 +590,8 @@ async function navigate(dir) {
|
||||
if (state.view === 'month') {
|
||||
state.cursor = addMonths(state.cursor, dir);
|
||||
} else if (state.view === 'week') {
|
||||
state.cursor = addDays(state.cursor, dir * 7);
|
||||
const isMobile = window.matchMedia('(max-width: 639px)').matches;
|
||||
state.cursor = addDays(state.cursor, dir * (isMobile ? 3 : 7));
|
||||
} else if (state.view === 'day') {
|
||||
state.cursor = addDays(state.cursor, dir);
|
||||
} else if (state.view === 'agenda') {
|
||||
@@ -674,7 +709,7 @@ function renderMonthDay(date, inMonth) {
|
||||
data-id="${ev.id}"
|
||||
style="background-color:${esc(bg)};${fg ? `color:${fg};` : ''}"
|
||||
title="${esc(ev.title)}${ev.cal_name ? ' · ' + ev.cal_name : ''}"
|
||||
>${eventIconHtml(ev.icon, 'event-icon event-icon--compact')}<span>${esc(ev.title)}</span></div>
|
||||
>${eventIconHtml(ev.icon, 'event-icon event-icon--compact')}<span>${esc(ev.title)}</span>${(ev.recurrence_rule || ev.is_recurring_instance) ? '<i data-lucide="repeat" style="width:9px;height:9px;flex-shrink:0;opacity:0.7;margin-left:2px" aria-hidden="true"></i>' : ''}</div>
|
||||
`;
|
||||
}).join('');
|
||||
|
||||
@@ -692,8 +727,15 @@ function renderMonthDay(date, inMonth) {
|
||||
// --------------------------------------------------------
|
||||
|
||||
function renderWeekView(container) {
|
||||
const monday = getMondayOf(state.cursor);
|
||||
const days = Array.from({ length: 7 }, (_, i) => addDays(monday, i));
|
||||
const isMobile = window.matchMedia('(max-width: 639px)').matches;
|
||||
// Auf Mobile: 3-Tage-Fenster zentriert um state.cursor statt vollem Mo–So
|
||||
const days = isMobile
|
||||
? Array.from({ length: 3 }, (_, i) => addDays(state.cursor, i - 1))
|
||||
: (() => {
|
||||
const monday = getMondayOf(state.cursor);
|
||||
return Array.from({ length: 7 }, (_, i) => addDays(monday, i));
|
||||
})();
|
||||
const colCount = days.length;
|
||||
|
||||
const alldayEvs = days.map((d) =>
|
||||
eventsOnDay(d).filter((e) => e.all_day || !e.start_datetime.includes('T'))
|
||||
@@ -706,7 +748,7 @@ function renderWeekView(container) {
|
||||
container.innerHTML = `
|
||||
<div class="week-view">
|
||||
<div class="week-view__header" id="week-header"
|
||||
style="display:grid;grid-template-columns:48px repeat(7,1fr);">
|
||||
style="display:grid;grid-template-columns:48px repeat(${colCount},1fr);">
|
||||
<div class="week-view__time-gutter"></div>
|
||||
${days.map((d) => {
|
||||
const dt = new Date(d + 'T00:00:00');
|
||||
@@ -717,7 +759,7 @@ function renderWeekView(container) {
|
||||
}).join('')}
|
||||
</div>
|
||||
<!-- Ganztägige Ereignisse -->
|
||||
<div class="allday-row" style="display:grid;grid-template-columns:48px repeat(7,1fr);">
|
||||
<div class="allday-row" style="display:grid;grid-template-columns:48px repeat(${colCount},1fr);">
|
||||
<div style="width:48px;padding:2px;font-size:10px;color:var(--color-text-disabled);text-align:right;padding-right:4px;line-height:24px;">${t('calendar.allDayShort')}</div>
|
||||
${days.map((d, i) => `
|
||||
<div class="allday-cell">
|
||||
@@ -739,7 +781,7 @@ function renderWeekView(container) {
|
||||
`).join('')}
|
||||
</div>
|
||||
<div class="week-view__columns" id="week-cols"
|
||||
style="display:grid;grid-template-columns:repeat(7,1fr);">
|
||||
style="display:grid;grid-template-columns:repeat(${colCount},1fr);">
|
||||
${days.map((d, i) => `
|
||||
<div class="week-view__col" data-date="${d}">
|
||||
${Array.from({ length: 24 }, (_, h) => `
|
||||
@@ -795,7 +837,7 @@ function renderWeekEvent(ev, layout = null) {
|
||||
return `
|
||||
<div class="week-event" data-id="${ev.id}"
|
||||
style="top:${top}px;height:${height}px;left:${left};width:${width};${ev.cal_color || ev.color ? `background-color:${esc(ev.cal_color || ev.color)};` : ''}${getContrastColor(ev.cal_color || ev.color) ? `color:${getContrastColor(ev.cal_color || ev.color)};` : ''}">
|
||||
<div class="week-event__title">${eventIconHtml(ev.icon, 'event-icon event-icon--compact')}<span>${esc(ev.title)}</span></div>
|
||||
<div class="week-event__title">${eventIconHtml(ev.icon, 'event-icon event-icon--compact')}<span>${esc(ev.title)}</span>${(ev.recurrence_rule || ev.is_recurring_instance) ? '<i data-lucide="repeat" style="width:9px;height:9px;flex-shrink:0;opacity:0.7;margin-left:2px" aria-hidden="true"></i>' : ''}</div>
|
||||
<div class="week-event__time">${formatTime(ev.start_datetime)}${ev.end_datetime ? '–' + formatTime(ev.end_datetime) : ''}</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -1305,6 +1347,50 @@ function openEventModal({ mode, event = null, date = null, reminder = null }) {
|
||||
iconTrigger?.setAttribute('aria-expanded', 'false');
|
||||
iconTrigger?.focus();
|
||||
});
|
||||
|
||||
const iconSearch = iconGrid?.querySelector('#modal-icon-search');
|
||||
iconSearch?.addEventListener('input', () => {
|
||||
const q = iconSearch.value.trim().toLowerCase();
|
||||
const resultsEl = iconGrid?.querySelector('#modal-icon-results');
|
||||
if (!resultsEl) return;
|
||||
if (!q) {
|
||||
resultsEl.replaceChildren();
|
||||
resultsEl.insertAdjacentHTML('afterbegin', EVENT_ICON_CATEGORIES().map((cat) => `
|
||||
<div class="event-icon-picker__category">
|
||||
<div class="event-icon-picker__category-label">${esc(cat.label)}</div>
|
||||
<div class="event-icon-picker__category-icons">
|
||||
${cat.icons.map((icon) => `
|
||||
<button type="button" class="event-icon-picker__option ${iconInput?.value === icon.value ? 'event-icon-picker__option--active' : ''}"
|
||||
data-icon="${icon.value}" role="radio"
|
||||
aria-checked="${iconInput?.value === icon.value ? 'true' : 'false'}"
|
||||
aria-label="${esc(icon.label)}" title="${esc(icon.label)}">
|
||||
${eventIconHtml(icon.value, 'event-icon-picker__option-icon')}
|
||||
</button>`).join('')}
|
||||
</div>
|
||||
</div>`).join(''));
|
||||
if (window.lucide) lucide.createIcons({ el: resultsEl });
|
||||
return;
|
||||
}
|
||||
const allIcons = EVENT_ICON_CATEGORIES().flatMap((c) => c.icons);
|
||||
const filtered = allIcons.filter((i) => i.label.toLowerCase().includes(q) || i.value.includes(q));
|
||||
resultsEl.replaceChildren();
|
||||
if (filtered.length === 0) {
|
||||
resultsEl.insertAdjacentHTML('afterbegin', `<div class="event-icon-picker__no-results">${esc(t('calendar.iconSearchEmpty'))}</div>`);
|
||||
return;
|
||||
}
|
||||
resultsEl.insertAdjacentHTML('afterbegin', `
|
||||
<div class="event-icon-picker__category-icons">
|
||||
${filtered.map((icon) => `
|
||||
<button type="button" class="event-icon-picker__option ${iconInput?.value === icon.value ? 'event-icon-picker__option--active' : ''}"
|
||||
data-icon="${icon.value}" role="radio"
|
||||
aria-checked="${iconInput?.value === icon.value ? 'true' : 'false'}"
|
||||
aria-label="${esc(icon.label)}" title="${esc(icon.label)}">
|
||||
${eventIconHtml(icon.value, 'event-icon-picker__option-icon')}
|
||||
</button>`).join('')}
|
||||
</div>`);
|
||||
if (window.lucide) lucide.createIcons({ el: resultsEl });
|
||||
});
|
||||
|
||||
document.addEventListener('click', function closeIconPicker(e) {
|
||||
if (!panel.isConnected) {
|
||||
document.removeEventListener('click', closeIconPicker);
|
||||
@@ -1403,17 +1489,23 @@ function buildEventModalContent({ mode, event, date, reminder = null }) {
|
||||
const endTime = isEdit && event.end_datetime && event.end_datetime.length > 10
|
||||
? localTime(event.end_datetime) : '10:00';
|
||||
const selectedIcon = eventIconName(isEdit ? event.icon : 'calendar');
|
||||
const iconButtons = EVENT_ICONS.map((icon) =>
|
||||
`<button type="button"
|
||||
class="event-icon-picker__option ${selectedIcon === icon.value ? 'event-icon-picker__option--active' : ''}"
|
||||
data-icon="${icon.value}"
|
||||
role="radio"
|
||||
aria-checked="${selectedIcon === icon.value ? 'true' : 'false'}"
|
||||
aria-label="${esc(icon.label)}"
|
||||
title="${esc(icon.label)}">
|
||||
${eventIconHtml(icon.value, 'event-icon-picker__option-icon')}
|
||||
</button>`
|
||||
).join('');
|
||||
const iconCats = EVENT_ICON_CATEGORIES();
|
||||
const iconCategoryButtons = iconCats.map((cat) => `
|
||||
<div class="event-icon-picker__category">
|
||||
<div class="event-icon-picker__category-label">${esc(cat.label)}</div>
|
||||
<div class="event-icon-picker__category-icons">
|
||||
${cat.icons.map((icon) => `
|
||||
<button type="button"
|
||||
class="event-icon-picker__option ${selectedIcon === icon.value ? 'event-icon-picker__option--active' : ''}"
|
||||
data-icon="${icon.value}"
|
||||
role="radio"
|
||||
aria-checked="${selectedIcon === icon.value ? 'true' : 'false'}"
|
||||
aria-label="${esc(icon.label)}"
|
||||
title="${esc(icon.label)}">
|
||||
${eventIconHtml(icon.value, 'event-icon-picker__option-icon')}
|
||||
</button>`).join('')}
|
||||
</div>
|
||||
</div>`).join('');
|
||||
|
||||
const userOpts = [
|
||||
`<option value="">${t('calendar.assignedNobody')}</option>`,
|
||||
@@ -1438,13 +1530,17 @@ function buildEventModalContent({ mode, event, date, reminder = null }) {
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-group event-title-picker__title">
|
||||
<label class="form-label" for="modal-title">${t('calendar.titleLabel')}</label>
|
||||
<label class="form-label" for="modal-title">${t('calendar.titleLabel')}<span class="required-marker" aria-hidden="true"> *</span></label>
|
||||
<input type="text" class="form-input" id="modal-title"
|
||||
placeholder="${t('calendar.titlePlaceholder')}" value="${esc(isEdit ? event.title : '')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="event-icon-picker__grid" id="modal-icon-grid" role="radiogroup" aria-label="${t('calendar.iconLabel')}" hidden>
|
||||
${iconButtons}
|
||||
<input type="search" class="form-input event-icon-picker__search" id="modal-icon-search"
|
||||
placeholder="${t('calendar.iconSearchPlaceholder')}" autocomplete="off" aria-label="${t('calendar.iconSearchPlaceholder')}">
|
||||
<div id="modal-icon-results">
|
||||
${iconCategoryButtons}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
@@ -113,10 +113,23 @@ function showOnboarding(appContainer) {
|
||||
// NEU — primäre Inhalte (tasks, calendar) ganz oben
|
||||
const WIDGET_IDS = ['tasks', 'calendar', 'weather', 'meals', 'shopping', 'birthdays', 'budget', 'family', 'notes'];
|
||||
|
||||
const WIDGET_SIZE_OPTIONS = ['1x1', '1x2', '1x3', '1x4', '2x1', '2x2', '2x3', '2x4', '3x1', '3x2', '3x3', '3x4', '4x1', '4x2', '4x3', '4x4'];
|
||||
const WIDGET_SIZE_PRESETS = [
|
||||
{ value: '1x1', labelKey: 'dashboard.widgetSizeTiny' },
|
||||
{ value: '2x1', labelKey: 'dashboard.widgetSizeNarrow' },
|
||||
{ value: '2x2', labelKey: 'dashboard.widgetSizeStandard' },
|
||||
{ value: '3x2', labelKey: 'dashboard.widgetSizeLarge' },
|
||||
{ value: '4x2', labelKey: 'dashboard.widgetSizeFull' },
|
||||
];
|
||||
|
||||
// Alle bekannten Größen inkl. Legacy-Werte — für normalizeDashboardConfig-Validierung
|
||||
const WIDGET_SIZE_OPTIONS = [...new Set([
|
||||
...WIDGET_SIZE_PRESETS.map((p) => p.value),
|
||||
'1x2', '1x3', '1x4', '2x3', '2x4', '3x1', '3x3', '3x4', '4x1', '4x3', '4x4',
|
||||
])];
|
||||
|
||||
function widgetSizeLabel(size) {
|
||||
return size;
|
||||
const preset = WIDGET_SIZE_PRESETS.find((p) => p.value === size);
|
||||
return preset ? t(preset.labelKey) : size;
|
||||
}
|
||||
|
||||
function defaultWidgetSize(id) {
|
||||
@@ -621,7 +634,7 @@ function renderSizeMiniGridCells(size) {
|
||||
}
|
||||
|
||||
function renderWidgetCustomizeControls(w) {
|
||||
const sizeOptions = WIDGET_SIZE_OPTIONS.map((size) => `
|
||||
const sizeOptions = WIDGET_SIZE_PRESETS.map(({ value: size }) => `
|
||||
<option value="${size}" ${w.size === size ? 'selected' : ''}>${widgetSizeLabel(size)}</option>
|
||||
`).join('');
|
||||
|
||||
|
||||
+53
-3
@@ -317,7 +317,7 @@ function renderModalContent({ task = null, users = [], reminder = null } = {}) {
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<label class="label" for="task-title">${t('tasks.titleLabel')}</label>
|
||||
<label class="label" for="task-title">${t('tasks.titleLabel')}<span class="required-marker" aria-hidden="true"> *</span></label>
|
||||
<input class="input" type="text" id="task-title" name="title"
|
||||
value="${esc(task?.title)}" placeholder="${t('tasks.titlePlaceholder')}"
|
||||
required autocomplete="off">
|
||||
@@ -1128,6 +1128,27 @@ function renderFilters(container) {
|
||||
}
|
||||
|
||||
bar.appendChild(toggleBtn);
|
||||
|
||||
// ---- Zuletzt verwendete Filter als Quick-Chips ----
|
||||
const statusLabelsMap = STATUS_LABELS();
|
||||
const priorityLabelsMap = PRIORITY_LABELS();
|
||||
const recent = getRecentFilters();
|
||||
recent.forEach((f) => {
|
||||
const parts = [];
|
||||
if (f.status) parts.push(statusLabelsMap[f.status] ?? f.status);
|
||||
if (f.priority) parts.push(priorityLabelsMap[f.priority] ?? f.priority);
|
||||
if (f.assigned_to) {
|
||||
const u = state.users.find((u) => u.id === Number(f.assigned_to));
|
||||
if (u) parts.push(u.display_name);
|
||||
}
|
||||
if (!parts.length) return;
|
||||
const chip = document.createElement('span');
|
||||
chip.className = 'filter-chip filter-chip--recent';
|
||||
chip.dataset.recentFilter = JSON.stringify(f);
|
||||
chip.textContent = parts.join(' · ');
|
||||
bar.appendChild(chip);
|
||||
});
|
||||
|
||||
if (window.lucide) window.lucide.createIcons({ el: bar });
|
||||
|
||||
// ---- Filter-Panel: Gruppen mit allen Optionen ----
|
||||
@@ -1245,8 +1266,24 @@ const SWIPE_THRESHOLD = 80; // px - Mindestweg für Aktion
|
||||
const SWIPE_MAX_VERT = 12; // px - vertikaler Bewegungs-Toleranzbereich (darunter: kein Scroll-Abbruch)
|
||||
const SWIPE_LOCK_VERT = 30; // px - ab diesem Weg gilt es als Scroll (Swipe abgebrochen)
|
||||
|
||||
const SWIPE_HINT_KEY = 'oikos:swipeHintSeen';
|
||||
const SWIPE_HINT_MAX = 3;
|
||||
const SWIPE_HINT_KEY = 'oikos:swipeHintSeen';
|
||||
const SWIPE_HINT_MAX = 3;
|
||||
const RECENT_FILTERS_KEY = 'oikos:recentTaskFilters';
|
||||
const RECENT_FILTERS_MAX = 3;
|
||||
|
||||
function getRecentFilters() {
|
||||
try { return JSON.parse(localStorage.getItem(RECENT_FILTERS_KEY) ?? '[]'); } catch { return []; }
|
||||
}
|
||||
|
||||
function saveRecentFilter(filters) {
|
||||
if (!filters.status && !filters.priority && !filters.assigned_to) return;
|
||||
const key = [filters.status, filters.priority, filters.assigned_to].join('|');
|
||||
const recent = getRecentFilters().filter((f) =>
|
||||
[f.status, f.priority, f.assigned_to].join('|') !== key
|
||||
);
|
||||
recent.unshift({ ...filters });
|
||||
try { localStorage.setItem(RECENT_FILTERS_KEY, JSON.stringify(recent.slice(0, RECENT_FILTERS_MAX))); } catch {}
|
||||
}
|
||||
|
||||
function wireSwipeGestures(container) {
|
||||
const listEl = container.querySelector('#task-list');
|
||||
@@ -1435,11 +1472,24 @@ function wireFilterChips(container) {
|
||||
state.filters[filter] = '';
|
||||
} else {
|
||||
state.filters[filter] = chip.dataset.value;
|
||||
saveRecentFilter(state.filters);
|
||||
}
|
||||
renderFilters(container);
|
||||
await loadTasks(container);
|
||||
});
|
||||
});
|
||||
|
||||
// Recent-Filter-Chips anwenden
|
||||
container.querySelectorAll('[data-recent-filter]').forEach((chip) => {
|
||||
chip.addEventListener('click', async () => {
|
||||
try {
|
||||
const f = JSON.parse(chip.dataset.recentFilter);
|
||||
state.filters = { status: f.status || '', priority: f.priority || '', assigned_to: f.assigned_to || '' };
|
||||
} catch { return; }
|
||||
renderFilters(container);
|
||||
await loadTasks(container);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function wireViewToggle(container) {
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
}
|
||||
|
||||
.budget-tab {
|
||||
min-height: 30px;
|
||||
min-height: 40px;
|
||||
padding: 0 var(--space-2);
|
||||
border: 0;
|
||||
border-radius: var(--radius-xs);
|
||||
|
||||
@@ -679,14 +679,43 @@
|
||||
}
|
||||
|
||||
.event-icon-picker__grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(44px, 1fr));
|
||||
gap: var(--space-2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-3);
|
||||
margin: calc(var(--space-2) * -1) 0 var(--space-4) 0;
|
||||
padding: var(--space-3);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius-md);
|
||||
background: var(--color-surface-2);
|
||||
max-height: 320px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.event-icon-picker__search {
|
||||
margin-bottom: var(--space-1);
|
||||
background: var(--color-surface);
|
||||
}
|
||||
|
||||
.event-icon-picker__category-label {
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: var(--color-text-tertiary);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-bottom: var(--space-1);
|
||||
}
|
||||
|
||||
.event-icon-picker__category-icons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(44px, 1fr));
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.event-icon-picker__no-results {
|
||||
font-size: var(--text-sm);
|
||||
color: var(--color-text-tertiary);
|
||||
text-align: center;
|
||||
padding: var(--space-4) 0;
|
||||
}
|
||||
|
||||
.event-icon-picker__grid[hidden] {
|
||||
|
||||
@@ -1174,12 +1174,20 @@ html.fab-anim-done .page-fab {
|
||||
.modal-panel::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: var(--space-3);
|
||||
top: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
/* Visuelle Linie bleibt klein, Hit-Area ist 44px hoch */
|
||||
width: 36px;
|
||||
height: var(--space-1);
|
||||
background: var(--color-border);
|
||||
height: 44px;
|
||||
background-color: transparent;
|
||||
background-image: linear-gradient(
|
||||
to bottom,
|
||||
transparent calc(50% - 2px),
|
||||
var(--color-border) calc(50% - 2px),
|
||||
var(--color-border) calc(50% + 2px),
|
||||
transparent calc(50% + 2px)
|
||||
);
|
||||
border-radius: var(--radius-full);
|
||||
}
|
||||
|
||||
@@ -1355,6 +1363,14 @@ html.fab-anim-done .page-fab {
|
||||
margin-bottom: var(--space-1);
|
||||
}
|
||||
|
||||
.required-marker {
|
||||
color: var(--color-danger);
|
||||
margin-left: var(--space-0h);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-weight-bold);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -2089,6 +2105,33 @@ html.fab-anim-done .page-fab {
|
||||
animation: swipe-nudge 0.8s var(--ease-out) 1.2s both;
|
||||
}
|
||||
|
||||
/* Swipe-Affordanz: permanente Chevron-Hints an den Kartenrändern */
|
||||
.swipe-row::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: var(--space-2);
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 12px;
|
||||
height: 20px;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20' fill='none' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3,4 9,10 3,16'/%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
opacity: 0.3;
|
||||
pointer-events: none;
|
||||
z-index: 1;
|
||||
transition: opacity var(--transition-fast);
|
||||
}
|
||||
|
||||
.swipe-row:hover::after,
|
||||
.swipe-row:focus-within::after {
|
||||
opacity: 0.55;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.swipe-row::after { display: none; }
|
||||
}
|
||||
|
||||
/* Gemeinsam: Erledigt / Abhaken (Swipe nach links) */
|
||||
.swipe-reveal--done {
|
||||
right: 0;
|
||||
|
||||
@@ -148,6 +148,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
.filter-chip--recent {
|
||||
border-style: dashed;
|
||||
opacity: 0.8;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.filter-chip--recent:hover {
|
||||
opacity: 1;
|
||||
border-color: var(--color-accent);
|
||||
color: var(--color-accent);
|
||||
}
|
||||
|
||||
.filter-chip__remove {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
||||
Reference in New Issue
Block a user