8 mars
This commit is contained in:
@@ -3,6 +3,7 @@ import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
|
||||
import { RouterLink, RouterView } from 'vue-router';
|
||||
import AppHeader from '@/components/AppHeader.vue';
|
||||
import AppDrawer from '@/components/AppDrawer.vue';
|
||||
import ToastNotification from '@/components/ToastNotification.vue';
|
||||
import { meteoApi } from '@/api/meteo';
|
||||
import { settingsApi } from '@/api/settings';
|
||||
import { applyUiSizesToRoot } from '@/utils/uiSizeDefaults';
|
||||
@@ -158,44 +159,48 @@ if (__VLS_ctx.debugMode) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
(__VLS_ctx.debugDiskLabel);
|
||||
}
|
||||
/** @type {[typeof ToastNotification, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_0 = __VLS_asFunctionalComponent(ToastNotification, new ToastNotification({}));
|
||||
const __VLS_1 = __VLS_0({}, ...__VLS_functionalComponentArgsRest(__VLS_0));
|
||||
/** @type {[typeof AppHeader, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_0 = __VLS_asFunctionalComponent(AppHeader, new AppHeader({
|
||||
const __VLS_3 = __VLS_asFunctionalComponent(AppHeader, new AppHeader({
|
||||
...{ 'onToggleDrawer': {} },
|
||||
...{ class: "lg:hidden" },
|
||||
}));
|
||||
const __VLS_1 = __VLS_0({
|
||||
const __VLS_4 = __VLS_3({
|
||||
...{ 'onToggleDrawer': {} },
|
||||
...{ class: "lg:hidden" },
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_0));
|
||||
let __VLS_3;
|
||||
let __VLS_4;
|
||||
let __VLS_5;
|
||||
const __VLS_6 = {
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_3));
|
||||
let __VLS_6;
|
||||
let __VLS_7;
|
||||
let __VLS_8;
|
||||
const __VLS_9 = {
|
||||
onToggleDrawer: (...[$event]) => {
|
||||
__VLS_ctx.drawerOpen = !__VLS_ctx.drawerOpen;
|
||||
}
|
||||
};
|
||||
var __VLS_2;
|
||||
var __VLS_5;
|
||||
/** @type {[typeof AppDrawer, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_7 = __VLS_asFunctionalComponent(AppDrawer, new AppDrawer({
|
||||
const __VLS_10 = __VLS_asFunctionalComponent(AppDrawer, new AppDrawer({
|
||||
...{ 'onClose': {} },
|
||||
open: (__VLS_ctx.drawerOpen),
|
||||
}));
|
||||
const __VLS_8 = __VLS_7({
|
||||
const __VLS_11 = __VLS_10({
|
||||
...{ 'onClose': {} },
|
||||
open: (__VLS_ctx.drawerOpen),
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_7));
|
||||
let __VLS_10;
|
||||
let __VLS_11;
|
||||
let __VLS_12;
|
||||
const __VLS_13 = {
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_10));
|
||||
let __VLS_13;
|
||||
let __VLS_14;
|
||||
let __VLS_15;
|
||||
const __VLS_16 = {
|
||||
onClose: (...[$event]) => {
|
||||
__VLS_ctx.drawerOpen = false;
|
||||
}
|
||||
};
|
||||
var __VLS_9;
|
||||
var __VLS_12;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "lg:flex" },
|
||||
});
|
||||
@@ -205,40 +210,40 @@ __VLS_asFunctionalElement(__VLS_intrinsicElements.aside, __VLS_intrinsicElements
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "px-5 pt-6 pb-4 border-b border-bg-soft" },
|
||||
});
|
||||
const __VLS_14 = {}.RouterLink;
|
||||
const __VLS_17 = {}.RouterLink;
|
||||
/** @type {[typeof __VLS_components.RouterLink, typeof __VLS_components.RouterLink, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_15 = __VLS_asFunctionalComponent(__VLS_14, new __VLS_14({
|
||||
const __VLS_18 = __VLS_asFunctionalComponent(__VLS_17, new __VLS_17({
|
||||
to: "/",
|
||||
...{ class: "text-green font-bold text-xl tracking-wide flex items-center gap-2" },
|
||||
}));
|
||||
const __VLS_16 = __VLS_15({
|
||||
const __VLS_19 = __VLS_18({
|
||||
to: "/",
|
||||
...{ class: "text-green font-bold text-xl tracking-wide flex items-center gap-2" },
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_15));
|
||||
__VLS_17.slots.default;
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_18));
|
||||
__VLS_20.slots.default;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
var __VLS_17;
|
||||
var __VLS_20;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.nav, __VLS_intrinsicElements.nav)({
|
||||
...{ class: "flex-1 py-4 px-3 flex flex-col gap-0.5 overflow-y-auto" },
|
||||
});
|
||||
for (const [l] of __VLS_getVForSourceType((__VLS_ctx.links))) {
|
||||
const __VLS_18 = {}.RouterLink;
|
||||
const __VLS_21 = {}.RouterLink;
|
||||
/** @type {[typeof __VLS_components.RouterLink, typeof __VLS_components.RouterLink, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_19 = __VLS_asFunctionalComponent(__VLS_18, new __VLS_18({
|
||||
const __VLS_22 = __VLS_asFunctionalComponent(__VLS_21, new __VLS_21({
|
||||
key: (l.to),
|
||||
to: (l.to),
|
||||
...{ class: "flex items-center gap-3 text-text-muted hover:text-text py-2 px-3 rounded-lg text-sm transition-colors group" },
|
||||
activeClass: "bg-bg-soft text-green font-medium",
|
||||
}));
|
||||
const __VLS_20 = __VLS_19({
|
||||
const __VLS_23 = __VLS_22({
|
||||
key: (l.to),
|
||||
to: (l.to),
|
||||
...{ class: "flex items-center gap-3 text-text-muted hover:text-text py-2 px-3 rounded-lg text-sm transition-colors group" },
|
||||
activeClass: "bg-bg-soft text-green font-medium",
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_19));
|
||||
__VLS_21.slots.default;
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_22));
|
||||
__VLS_24.slots.default;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ style: (`font-size: var(--ui-menu-icon-size, 18px); line-height: 1`) },
|
||||
});
|
||||
@@ -247,20 +252,42 @@ for (const [l] of __VLS_getVForSourceType((__VLS_ctx.links))) {
|
||||
...{ style: (`font-size: var(--ui-menu-font-size, 13px)`) },
|
||||
});
|
||||
(l.label);
|
||||
var __VLS_21;
|
||||
var __VLS_24;
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "px-4 py-4 border-t border-bg-soft text-text-muted text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.main, __VLS_intrinsicElements.main)({
|
||||
...{ class: "pt-14 lg:pt-0 lg:pl-60 min-h-screen w-full bg-bg" },
|
||||
...{ style: {} },
|
||||
});
|
||||
const __VLS_22 = {}.RouterView;
|
||||
/** @type {[typeof __VLS_components.RouterView, ]} */ ;
|
||||
const __VLS_25 = {}.RouterView;
|
||||
/** @type {[typeof __VLS_components.RouterView, typeof __VLS_components.routerView, typeof __VLS_components.RouterView, typeof __VLS_components.routerView, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_23 = __VLS_asFunctionalComponent(__VLS_22, new __VLS_22({}));
|
||||
const __VLS_24 = __VLS_23({}, ...__VLS_functionalComponentArgsRest(__VLS_23));
|
||||
const __VLS_26 = __VLS_asFunctionalComponent(__VLS_25, new __VLS_25({}));
|
||||
const __VLS_27 = __VLS_26({}, ...__VLS_functionalComponentArgsRest(__VLS_26));
|
||||
{
|
||||
const { default: __VLS_thisSlot } = __VLS_28.slots;
|
||||
const [{ Component }] = __VLS_getSlotParams(__VLS_thisSlot);
|
||||
const __VLS_29 = {}.transition;
|
||||
/** @type {[typeof __VLS_components.Transition, typeof __VLS_components.transition, typeof __VLS_components.Transition, typeof __VLS_components.transition, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_30 = __VLS_asFunctionalComponent(__VLS_29, new __VLS_29({
|
||||
name: "fade",
|
||||
mode: "out-in",
|
||||
}));
|
||||
const __VLS_31 = __VLS_30({
|
||||
name: "fade",
|
||||
mode: "out-in",
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_30));
|
||||
__VLS_32.slots.default;
|
||||
const __VLS_33 = ((Component));
|
||||
// @ts-ignore
|
||||
const __VLS_34 = __VLS_asFunctionalComponent(__VLS_33, new __VLS_33({}));
|
||||
const __VLS_35 = __VLS_34({}, ...__VLS_functionalComponentArgsRest(__VLS_34));
|
||||
var __VLS_32;
|
||||
__VLS_28.slots['' /* empty slot name completion */];
|
||||
}
|
||||
var __VLS_28;
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-2']} */ ;
|
||||
@@ -341,6 +368,7 @@ const __VLS_self = (await import('vue')).defineComponent({
|
||||
RouterView: RouterView,
|
||||
AppHeader: AppHeader,
|
||||
AppDrawer: AppDrawer,
|
||||
ToastNotification: ToastNotification,
|
||||
drawerOpen: drawerOpen,
|
||||
debugMode: debugMode,
|
||||
debugCpuLabel: debugCpuLabel,
|
||||
|
||||
@@ -1,4 +1,32 @@
|
||||
import axios from 'axios';
|
||||
export default axios.create({
|
||||
import { useToast } from '@/composables/useToast';
|
||||
const client = axios.create({
|
||||
baseURL: import.meta.env.VITE_API_URL ?? '',
|
||||
});
|
||||
client.interceptors.response.use(response => response, (error) => {
|
||||
const { error: showError } = useToast();
|
||||
if (error.response) {
|
||||
const status = error.response.status;
|
||||
const detail = error.response.data?.detail ?? error.response.data?.message;
|
||||
if (status === 422) {
|
||||
const msg = Array.isArray(detail)
|
||||
? detail.map(d => d.msg ?? d).join(', ')
|
||||
: (detail ?? 'Vérifiez les champs du formulaire');
|
||||
showError(`Données invalides : ${msg}`);
|
||||
}
|
||||
else if (status === 404) {
|
||||
showError('Ressource introuvable');
|
||||
}
|
||||
else if (status >= 500) {
|
||||
showError(`Erreur serveur (${status}) — réessayez dans un instant`);
|
||||
}
|
||||
else if (status !== 401 && status !== 403) {
|
||||
showError(String(detail ?? `Erreur ${status}`));
|
||||
}
|
||||
}
|
||||
else if (error.request) {
|
||||
showError('Serveur inaccessible — vérifiez votre connexion réseau');
|
||||
}
|
||||
return Promise.reject(error);
|
||||
});
|
||||
export default client;
|
||||
|
||||
@@ -11,6 +11,8 @@ export const gardensApi = {
|
||||
},
|
||||
delete: (id) => client.delete(`/api/gardens/${id}`),
|
||||
cells: (id) => client.get(`/api/gardens/${id}/cells`).then(r => r.data),
|
||||
createCell: (id, cell) => client.post(`/api/gardens/${id}/cells`, cell).then(r => r.data),
|
||||
updateCell: (id, cellId, cell) => client.put(`/api/gardens/${id}/cells/${cellId}`, cell).then(r => r.data),
|
||||
measurements: (id) => client.get(`/api/gardens/${id}/measurements`).then(r => r.data),
|
||||
addMeasurement: (id, m) => client.post(`/api/gardens/${id}/measurements`, m).then(r => r.data),
|
||||
};
|
||||
|
||||
10
frontend/src/api/identify.js
Normal file
10
frontend/src/api/identify.js
Normal file
@@ -0,0 +1,10 @@
|
||||
import client from './client';
|
||||
export const identifyApi = {
|
||||
identify: (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return client.post('/api/identify', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' }
|
||||
}).then(r => r.data);
|
||||
}
|
||||
};
|
||||
@@ -22,6 +22,14 @@ export interface Plant {
|
||||
astuces_culture?: string
|
||||
url_reference?: string
|
||||
notes?: string
|
||||
associations_favorables?: string[]
|
||||
associations_defavorables?: string[]
|
||||
boutique_nom?: string
|
||||
boutique_url?: string
|
||||
prix_achat?: number
|
||||
date_achat?: string
|
||||
poids?: string
|
||||
dluo?: string
|
||||
}
|
||||
|
||||
export const plantsApi = {
|
||||
|
||||
224
frontend/src/components/DiagnosticModal.vue.js
Normal file
224
frontend/src/components/DiagnosticModal.vue.js
Normal file
@@ -0,0 +1,224 @@
|
||||
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||
const __VLS_props = defineProps();
|
||||
const __VLS_emit = defineEmits(['close']);
|
||||
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||
const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
// CSS variable injection
|
||||
// CSS variable injection end
|
||||
if (__VLS_ctx.open) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.open))
|
||||
return;
|
||||
__VLS_ctx.$emit('close');
|
||||
} },
|
||||
...{ class: "fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/80 backdrop-blur-sm" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "card-jardin w-full max-w-md overflow-hidden animate-fade-in border-green/30" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-4 border-b border-bg-hard pb-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h3, __VLS_intrinsicElements.h3)({
|
||||
...{ class: "text-green font-bold flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.open))
|
||||
return;
|
||||
__VLS_ctx.$emit('close');
|
||||
} },
|
||||
...{ class: "text-text-muted hover:text-red transition-colors" },
|
||||
});
|
||||
if (__VLS_ctx.loading) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "py-12 flex flex-col items-center gap-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "w-12 h-12 border-4 border-green/20 border-t-green rounded-full animate-spin" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm animate-pulse italic" },
|
||||
});
|
||||
}
|
||||
else if (__VLS_ctx.result) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "space-y-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-4 bg-bg-hard p-3 rounded-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-3xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text font-bold text-lg" },
|
||||
});
|
||||
(__VLS_ctx.result.common_name);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] text-text-muted uppercase tracking-widest font-bold" },
|
||||
});
|
||||
((__VLS_ctx.result.confidence * 100).toFixed(1));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "space-y-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] font-bold text-green uppercase tracking-widest" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-sm text-text-muted leading-relaxed bg-green/5 p-3 rounded-lg border border-green/10" },
|
||||
});
|
||||
(__VLS_ctx.result.conseil);
|
||||
if (__VLS_ctx.result.actions?.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "space-y-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] font-bold text-orange uppercase tracking-widest" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex flex-wrap gap-2" },
|
||||
});
|
||||
for (const [action] of __VLS_getVForSourceType((__VLS_ctx.result.actions))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
key: (action),
|
||||
...{ class: "badge badge-orange py-1.5 px-3" },
|
||||
});
|
||||
(action);
|
||||
}
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.open))
|
||||
return;
|
||||
if (!!(__VLS_ctx.loading))
|
||||
return;
|
||||
if (!(__VLS_ctx.result))
|
||||
return;
|
||||
__VLS_ctx.$emit('close');
|
||||
} },
|
||||
...{ class: "btn-primary w-full mt-4" },
|
||||
});
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "py-8 text-center text-text-muted" },
|
||||
});
|
||||
}
|
||||
}
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-[100]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['backdrop-blur-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-md']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-fade-in']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-spin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['italic']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-relaxed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green/5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
emits: {},
|
||||
__typeProps: {},
|
||||
});
|
||||
export default (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
emits: {},
|
||||
__typeProps: {},
|
||||
});
|
||||
; /* PartiallyEnd: #4569/main.vue */
|
||||
127
frontend/src/components/ToastNotification.vue.js
Normal file
127
frontend/src/components/ToastNotification.vue.js
Normal file
@@ -0,0 +1,127 @@
|
||||
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||
import { useToast } from '@/composables/useToast';
|
||||
const { toasts, remove } = useToast();
|
||||
function toastClass(type) {
|
||||
const map = {
|
||||
success: 'bg-[#3c3836] border-[#b8bb26]/50 text-[#b8bb26]',
|
||||
error: 'bg-[#3c3836] border-[#fb4934]/50 text-[#fb4934]',
|
||||
warning: 'bg-[#3c3836] border-[#fabd2f]/50 text-[#fabd2f]',
|
||||
info: 'bg-[#3c3836] border-[#83a598]/50 text-[#83a598]',
|
||||
};
|
||||
return map[type] ?? 'bg-[#3c3836] border-[#a89984]/40 text-[#ebdbb2]';
|
||||
}
|
||||
function toastIcon(type) {
|
||||
const map = {
|
||||
success: '✓',
|
||||
error: '✕',
|
||||
warning: '⚠',
|
||||
info: 'ℹ',
|
||||
};
|
||||
return map[type] ?? 'ℹ';
|
||||
}
|
||||
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||
const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
// CSS variable injection
|
||||
// CSS variable injection end
|
||||
const __VLS_0 = {}.Teleport;
|
||||
/** @type {[typeof __VLS_components.Teleport, typeof __VLS_components.Teleport, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_1 = __VLS_asFunctionalComponent(__VLS_0, new __VLS_0({
|
||||
to: "body",
|
||||
}));
|
||||
const __VLS_2 = __VLS_1({
|
||||
to: "body",
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_1));
|
||||
__VLS_3.slots.default;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "fixed bottom-4 right-4 z-[200] flex flex-col gap-2 max-w-sm w-full pointer-events-none" },
|
||||
});
|
||||
const __VLS_4 = {}.TransitionGroup;
|
||||
/** @type {[typeof __VLS_components.TransitionGroup, typeof __VLS_components.TransitionGroup, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_5 = __VLS_asFunctionalComponent(__VLS_4, new __VLS_4({
|
||||
name: "toast",
|
||||
}));
|
||||
const __VLS_6 = __VLS_5({
|
||||
name: "toast",
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_5));
|
||||
__VLS_7.slots.default;
|
||||
for (const [toast] of __VLS_getVForSourceType((__VLS_ctx.toasts))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.remove(toast.id);
|
||||
} },
|
||||
key: (toast.id),
|
||||
...{ class: "pointer-events-auto flex items-start gap-3 rounded-xl px-4 py-3 shadow-2xl border text-sm font-medium cursor-pointer" },
|
||||
...{ class: (__VLS_ctx.toastClass(toast.type)) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-base leading-none mt-0.5 shrink-0" },
|
||||
});
|
||||
(__VLS_ctx.toastIcon(toast.type));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "flex-1 leading-snug" },
|
||||
});
|
||||
(toast.message);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.remove(toast.id);
|
||||
} },
|
||||
...{ class: "ml-1 opacity-50 hover:opacity-100 transition-opacity shrink-0 text-xs" },
|
||||
});
|
||||
}
|
||||
var __VLS_7;
|
||||
var __VLS_3;
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bottom-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-[200]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pointer-events-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pointer-events-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-base']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-snug']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['ml-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-opacity']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
return {
|
||||
toasts: toasts,
|
||||
remove: remove,
|
||||
toastClass: toastClass,
|
||||
toastIcon: toastIcon,
|
||||
};
|
||||
},
|
||||
});
|
||||
export default (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
});
|
||||
; /* PartiallyEnd: #4569/main.vue */
|
||||
26
frontend/src/composables/useToast.js
Normal file
26
frontend/src/composables/useToast.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import { reactive } from 'vue';
|
||||
const toasts = reactive([]);
|
||||
let nextId = 1;
|
||||
function add(message, type = 'info', duration = 4000) {
|
||||
const id = nextId++;
|
||||
toasts.push({ id, type, message, duration });
|
||||
if (duration > 0) {
|
||||
setTimeout(() => remove(id), duration);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
function remove(id) {
|
||||
const index = toasts.findIndex(t => t.id === id);
|
||||
if (index !== -1)
|
||||
toasts.splice(index, 1);
|
||||
}
|
||||
export function useToast() {
|
||||
return {
|
||||
toasts,
|
||||
success: (msg, duration) => add(msg, 'success', duration ?? 4000),
|
||||
error: (msg, duration) => add(msg, 'error', duration ?? 6000),
|
||||
warning: (msg, duration) => add(msg, 'warning', duration ?? 5000),
|
||||
info: (msg, duration) => add(msg, 'info', duration ?? 4000),
|
||||
remove,
|
||||
};
|
||||
}
|
||||
@@ -3,4 +3,6 @@ import { createPinia } from 'pinia';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import './style.css';
|
||||
import { registerSW } from 'virtual:pwa-register';
|
||||
registerSW({ immediate: true });
|
||||
createApp(App).use(createPinia()).use(router).mount('#app');
|
||||
|
||||
@@ -3,6 +3,8 @@ export const UI_SIZE_DEFAULTS = {
|
||||
ui_menu_font_size: 13,
|
||||
ui_menu_icon_size: 18,
|
||||
ui_thumb_size: 96,
|
||||
ui_weather_icon_size: 48,
|
||||
ui_dashboard_icon_size: 24,
|
||||
};
|
||||
export function applyUiSizesToRoot(data) {
|
||||
const root = document.documentElement;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -119,22 +119,27 @@ const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4 max-w-4xl mx-auto" },
|
||||
...{ class: "p-4 max-w-6xl mx-auto space-y-8" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-6" },
|
||||
...{ class: "flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-green" },
|
||||
...{ class: "text-3xl font-bold text-green tracking-tight" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.showIdentify = true;
|
||||
} },
|
||||
...{ class: "bg-green text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
...{ class: "btn-primary flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 mb-4 flex-wrap" },
|
||||
...{ class: "flex gap-2 mb-4 bg-bg-soft/30 p-1 rounded-full w-fit border border-bg-soft overflow-x-auto max-w-full no-scrollbar" },
|
||||
});
|
||||
for (const [f] of __VLS_getVForSourceType((__VLS_ctx.filters))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
@@ -142,24 +147,36 @@ for (const [f] of __VLS_getVForSourceType((__VLS_ctx.filters))) {
|
||||
__VLS_ctx.activeFilter = f.val;
|
||||
} },
|
||||
key: (f.val),
|
||||
...{ class: (['px-3 py-1 rounded-full text-xs font-medium transition-colors',
|
||||
__VLS_ctx.activeFilter === f.val ? 'bg-green text-bg' : 'bg-bg-soft text-text-muted hover:text-text']) },
|
||||
...{ class: (['px-4 py-1.5 rounded-full text-[10px] font-black uppercase tracking-widest transition-all whitespace-nowrap',
|
||||
__VLS_ctx.activeFilter === f.val ? 'bg-green text-bg shadow-lg' : 'text-text-muted hover:text-text']) },
|
||||
});
|
||||
(f.label);
|
||||
}
|
||||
if (__VLS_ctx.loading) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm" },
|
||||
...{ class: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4" },
|
||||
});
|
||||
for (const [i] of __VLS_getVForSourceType((5))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (i),
|
||||
...{ class: "aspect-square card-jardin animate-pulse opacity-20" },
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (!__VLS_ctx.filtered.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm py-4" },
|
||||
...{ class: "card-jardin text-center py-16 opacity-50 border-dashed" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-4xl mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm uppercase font-black tracking-widest" },
|
||||
});
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-3 md:grid-cols-4 gap-2" },
|
||||
...{ class: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4" },
|
||||
});
|
||||
for (const [m] of __VLS_getVForSourceType((__VLS_ctx.filtered))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
@@ -171,21 +188,27 @@ else {
|
||||
__VLS_ctx.openLightbox(m);
|
||||
} },
|
||||
key: (m.id),
|
||||
...{ class: "aspect-square rounded-lg overflow-hidden bg-bg-hard relative group cursor-pointer" },
|
||||
...{ class: "group relative aspect-square rounded-2xl overflow-hidden bg-bg-hard border border-bg-soft/50 cursor-pointer shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (m.thumbnail_url || m.url),
|
||||
alt: (m.titre || ''),
|
||||
...{ class: "w-full h-full object-cover" },
|
||||
...{ class: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute bottom-2 left-2 right-2 pointer-events-none" },
|
||||
});
|
||||
if (m.identified_common) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute bottom-0 left-0 right-0 bg-black/70 text-xs text-green px-1 py-0.5 truncate" },
|
||||
...{ class: "text-[10px] text-green font-black uppercase tracking-tighter truncate drop-shadow-md" },
|
||||
});
|
||||
(m.identified_common);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute top-1 left-1 bg-black/60 text-text-muted text-xs px-1 rounded" },
|
||||
...{ class: "text-[8px] text-text-muted font-bold uppercase tracking-widest opacity-80" },
|
||||
});
|
||||
(__VLS_ctx.labelFor(m.entity_type));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
@@ -196,7 +219,10 @@ else {
|
||||
return;
|
||||
__VLS_ctx.deleteMedia(m);
|
||||
} },
|
||||
...{ class: "hidden group-hover:flex absolute top-1 right-1 bg-red/80 text-white text-xs rounded px-1" },
|
||||
...{ class: "absolute top-2 right-2 bg-red/80 hover:bg-red text-white p-1.5 rounded-lg opacity-0 group-hover:opacity-100 transition-all scale-75 group-hover:scale-100" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs" },
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -207,24 +233,35 @@ if (__VLS_ctx.lightbox) {
|
||||
return;
|
||||
__VLS_ctx.lightbox = null;
|
||||
} },
|
||||
...{ class: "fixed inset-0 bg-black/80 z-50 flex items-center justify-center p-4" },
|
||||
...{ class: "fixed inset-0 bg-black/95 backdrop-blur-md z-[150] flex items-center justify-center p-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "max-w-lg w-full bg-bg-hard rounded-xl overflow-hidden border border-bg-soft" },
|
||||
...{ class: "max-w-2xl w-full bg-bg-hard rounded-3xl overflow-hidden border border-bg-soft shadow-2xl animate-fade-in" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "relative aspect-video sm:aspect-square bg-bg overflow-hidden" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.lightbox.url),
|
||||
...{ class: "w-full" },
|
||||
...{ class: "w-full h-full object-contain" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.lightbox))
|
||||
return;
|
||||
__VLS_ctx.lightbox = null;
|
||||
} },
|
||||
...{ class: "absolute top-4 right-4 bg-black/50 text-white w-10 h-10 rounded-full flex items-center justify-center hover:bg-red transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4" },
|
||||
...{ class: "p-6 space-y-6" },
|
||||
});
|
||||
if (__VLS_ctx.lightbox.identified_species) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-center mb-3" },
|
||||
...{ class: "text-center space-y-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-green font-semibold text-base" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-green font-black text-2xl uppercase tracking-tighter" },
|
||||
});
|
||||
(__VLS_ctx.lightbox.identified_common);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
@@ -232,24 +269,27 @@ if (__VLS_ctx.lightbox) {
|
||||
});
|
||||
(__VLS_ctx.lightbox.identified_species);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-xs text-text-muted mt-1" },
|
||||
...{ class: "badge badge-green !text-[9px] mt-2" },
|
||||
});
|
||||
(Math.round((__VLS_ctx.lightbox.identified_confidence || 0) * 100));
|
||||
(__VLS_ctx.lightbox.identified_source);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-xs text-text-muted mb-3 text-center" },
|
||||
...{ class: "flex items-center justify-center gap-2 text-xs text-text-muted font-bold uppercase tracking-widest border-y border-bg-soft py-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text" },
|
||||
});
|
||||
(__VLS_ctx.labelFor(__VLS_ctx.lightbox.entity_type));
|
||||
if (__VLS_ctx.lightbox.entity_type === 'plante' && __VLS_ctx.plantName(__VLS_ctx.lightbox.entity_id)) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-green font-medium" },
|
||||
...{ class: "text-green" },
|
||||
});
|
||||
(__VLS_ctx.plantName(__VLS_ctx.lightbox.entity_id));
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 flex-wrap" },
|
||||
...{ class: "flex gap-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
@@ -257,7 +297,7 @@ if (__VLS_ctx.lightbox) {
|
||||
return;
|
||||
__VLS_ctx.startLink(__VLS_ctx.lightbox);
|
||||
} },
|
||||
...{ class: "flex-1 bg-blue/20 text-blue hover:bg-blue/30 px-3 py-2 rounded-lg text-xs font-medium transition-colors" },
|
||||
...{ class: "btn-outline flex-1 py-3 border-blue/20 text-blue hover:bg-blue/10 text-[10px] font-black uppercase tracking-widest" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
@@ -265,12 +305,10 @@ if (__VLS_ctx.lightbox) {
|
||||
return;
|
||||
__VLS_ctx.toggleAdventice(__VLS_ctx.lightbox);
|
||||
} },
|
||||
...{ class: ([
|
||||
'px-3 py-2 rounded-lg text-xs font-medium transition-colors',
|
||||
__VLS_ctx.isAdventice(__VLS_ctx.lightbox) ? 'bg-red/20 text-red hover:bg-red/30' : 'bg-green/20 text-green hover:bg-green/30'
|
||||
]) },
|
||||
...{ class: (['btn-outline flex-1 py-3 text-[10px] font-black uppercase tracking-widest',
|
||||
__VLS_ctx.isAdventice(__VLS_ctx.lightbox) ? 'border-red/20 text-red hover:bg-red/10' : 'border-green/20 text-green hover:bg-green/10']) },
|
||||
});
|
||||
(__VLS_ctx.isAdventice(__VLS_ctx.lightbox) ? '🪓 Retirer adventice' : '🌾 Marquer adventice');
|
||||
(__VLS_ctx.isAdventice(__VLS_ctx.lightbox) ? '🪓 Pas Adventice' : '🌾 Adventice');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.lightbox))
|
||||
@@ -278,15 +316,7 @@ if (__VLS_ctx.lightbox) {
|
||||
__VLS_ctx.deleteMedia(__VLS_ctx.lightbox);
|
||||
__VLS_ctx.lightbox = null;
|
||||
} },
|
||||
...{ class: "bg-red/20 text-red hover:bg-red/30 px-3 py-2 rounded-lg text-xs font-medium transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.lightbox))
|
||||
return;
|
||||
__VLS_ctx.lightbox = null;
|
||||
} },
|
||||
...{ class: "mt-3 w-full text-text-muted hover:text-text text-sm" },
|
||||
...{ class: "btn-outline py-3 px-4 border-red/20 text-red hover:bg-red/10" },
|
||||
});
|
||||
}
|
||||
if (__VLS_ctx.linkMedia) {
|
||||
@@ -296,17 +326,17 @@ if (__VLS_ctx.linkMedia) {
|
||||
return;
|
||||
__VLS_ctx.linkMedia = null;
|
||||
} },
|
||||
...{ class: "fixed inset-0 bg-black/70 z-50 flex items-center justify-center p-4" },
|
||||
...{ class: "fixed inset-0 bg-black/80 backdrop-blur-sm z-[200] flex items-center justify-center p-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "bg-bg-hard rounded-xl p-6 w-full max-w-sm border border-bg-soft" },
|
||||
...{ class: "bg-bg-hard rounded-2xl p-6 w-full max-w-sm border border-bg-soft shadow-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h3, __VLS_intrinsicElements.h3)({
|
||||
...{ class: "text-text font-bold mb-4" },
|
||||
...{ class: "text-text font-black uppercase tracking-tighter text-lg mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.select, __VLS_intrinsicElements.select)({
|
||||
value: (__VLS_ctx.linkPlantId),
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-green mb-4" },
|
||||
...{ class: "w-full bg-bg border border-bg-soft rounded-xl px-4 py-3 text-text text-sm outline-none focus:border-green mb-6 appearance-none shadow-inner" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
||||
value: (null),
|
||||
@@ -319,7 +349,7 @@ if (__VLS_ctx.linkMedia) {
|
||||
(__VLS_ctx.formatPlantLabel(p));
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 justify-end" },
|
||||
...{ class: "flex gap-3 justify-end" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
@@ -327,12 +357,12 @@ if (__VLS_ctx.linkMedia) {
|
||||
return;
|
||||
__VLS_ctx.linkMedia = null;
|
||||
} },
|
||||
...{ class: "px-4 py-2 text-text-muted hover:text-text text-sm" },
|
||||
...{ class: "btn-outline border-transparent text-text-muted hover:text-red uppercase text-xs font-bold px-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.confirmLink) },
|
||||
disabled: (!__VLS_ctx.linkPlantId),
|
||||
...{ class: "bg-green text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90 disabled:opacity-40" },
|
||||
...{ class: "btn-primary px-6 disabled:opacity-30" },
|
||||
});
|
||||
}
|
||||
if (__VLS_ctx.showIdentify) {
|
||||
@@ -362,182 +392,261 @@ if (__VLS_ctx.showIdentify) {
|
||||
var __VLS_2;
|
||||
}
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-4xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-6xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-fit']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-x-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['no-scrollbar']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['aspect-square']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-16']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-dashed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-4xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['aspect-square']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:scale-[1.02]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-transform']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['duration-500']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:scale-110']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bottom-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['left-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/70']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-gradient-to-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['from-black/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['via-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['to-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:opacity-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-opacity']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bottom-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['left-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pointer-events-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['left-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['drop-shadow-md']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[8px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-red/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-white']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:opacity-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['scale-75']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:scale-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/95']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['backdrop-blur-md']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-[150]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-fade-in']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['aspect-video']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:aspect-square']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-contain']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-white']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-base']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['italic']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-blue/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-blue/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-red/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-red/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-y']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-blue/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-blue/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-red/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-red/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/70']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['backdrop-blur-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-[200]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['appearance-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-inner']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-end']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['disabled:opacity-40']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['disabled:opacity-30']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,14 @@
|
||||
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||
import { computed, onMounted, ref } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useRouter, RouterLink } from 'vue-router';
|
||||
import { useGardensStore } from '@/stores/gardens';
|
||||
import { useTasksStore } from '@/stores/tasks';
|
||||
import { meteoApi } from '@/api/meteo';
|
||||
import { useToast } from '@/composables/useToast';
|
||||
const router = useRouter();
|
||||
const gardensStore = useGardensStore();
|
||||
const tasksStore = useTasksStore();
|
||||
const toast = useToast();
|
||||
const pendingTasks = computed(() => tasksStore.tasks.filter(t => t.statut === 'a_faire').slice(0, 5));
|
||||
const meteo7j = ref([]);
|
||||
const stationCurrent = ref(null);
|
||||
@@ -14,7 +16,8 @@ const meteoCurrent = computed(() => meteo7j.value[0] || null);
|
||||
function formatDate(s) {
|
||||
if (!s)
|
||||
return '—';
|
||||
return new Date(s + 'T12:00:00').toLocaleDateString('fr-FR', { day: 'numeric', month: 'short' });
|
||||
const date = new Date(s + 'T12:00:00');
|
||||
return date.toLocaleDateString('fr-FR', { weekday: 'short', day: 'numeric' });
|
||||
}
|
||||
function weatherIcon(code) {
|
||||
const available = [0, 1, 2, 3, 45, 48, 51, 53, 55, 56, 57, 61, 63, 65, 66, 67, 71, 73, 75, 77, 80, 81, 82, 85, 86, 95, 96, 99];
|
||||
@@ -22,8 +25,20 @@ function weatherIcon(code) {
|
||||
return `/icons/weather/${closest}.svg`;
|
||||
}
|
||||
onMounted(async () => {
|
||||
gardensStore.fetchAll();
|
||||
tasksStore.fetchAll();
|
||||
// Chargement des données principales (silencieux si erreur)
|
||||
try {
|
||||
await gardensStore.fetchAll();
|
||||
}
|
||||
catch {
|
||||
toast.warning('Jardins non disponibles');
|
||||
}
|
||||
try {
|
||||
await tasksStore.fetchAll();
|
||||
}
|
||||
catch {
|
||||
toast.warning('Tâches non disponibles');
|
||||
}
|
||||
// Météo : fallback silencieux, pas de toast intrusif
|
||||
try {
|
||||
stationCurrent.value = await meteoApi.getStationCurrent();
|
||||
}
|
||||
@@ -43,273 +58,517 @@ const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4 max-w-6xl mx-auto" },
|
||||
...{ class: "p-4 max-w-6xl mx-auto space-y-8" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-green mb-6" },
|
||||
...{ class: "text-3xl font-bold text-green tracking-tight" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs font-medium bg-bg-hard px-3 py-1 rounded-full border border-bg-soft" },
|
||||
});
|
||||
(new Date().toLocaleDateString('fr-FR', { weekday: 'long', day: 'numeric', month: 'long' }));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-1 lg:grid-cols-3 gap-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "mb-6" },
|
||||
...{ class: "lg:col-span-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-3" },
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-yellow" },
|
||||
});
|
||||
const __VLS_0 = {}.RouterLink;
|
||||
/** @type {[typeof __VLS_components.RouterLink, typeof __VLS_components.RouterLink, ]} */ ;
|
||||
// @ts-ignore
|
||||
const __VLS_1 = __VLS_asFunctionalComponent(__VLS_0, new __VLS_0({
|
||||
to: "/taches",
|
||||
...{ class: "text-xs text-yellow hover:underline font-bold uppercase tracking-wide" },
|
||||
}));
|
||||
const __VLS_2 = __VLS_1({
|
||||
to: "/taches",
|
||||
...{ class: "text-xs text-yellow hover:underline font-bold uppercase tracking-wide" },
|
||||
}, ...__VLS_functionalComponentArgsRest(__VLS_1));
|
||||
__VLS_3.slots.default;
|
||||
var __VLS_3;
|
||||
if (!__VLS_ctx.pendingTasks.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm py-2" },
|
||||
...{ class: "card-jardin text-center py-10 opacity-50" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "space-y-3" },
|
||||
});
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.pendingTasks))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (t.id),
|
||||
...{ class: "bg-bg-soft rounded-lg p-3 mb-2 flex items-center gap-3 border border-bg-hard" },
|
||||
...{ class: "card-jardin flex items-center gap-4 group" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: ({
|
||||
'text-red': t.priorite === 'haute',
|
||||
'text-yellow': t.priorite === 'normale',
|
||||
'text-text-muted': t.priorite === 'basse'
|
||||
}) },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: ([
|
||||
'w-2 h-10 rounded-full shrink-0',
|
||||
t.priorite === 'haute' ? 'bg-red' : t.priorite === 'normale' ? 'bg-yellow' : 'bg-bg-hard'
|
||||
]) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text text-sm flex-1" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1 min-w-0" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text font-semibold text-sm truncate" },
|
||||
});
|
||||
(t.titre);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-[10px] uppercase font-bold tracking-tight" },
|
||||
});
|
||||
(t.priorite);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.tasksStore.updateStatut(t.id, 'fait');
|
||||
} },
|
||||
...{ class: "text-xs text-green hover:underline px-2" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "mb-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-3" },
|
||||
});
|
||||
if (__VLS_ctx.stationCurrent || __VLS_ctx.meteo7j.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "bg-bg-soft rounded-xl p-3 border border-bg-hard mb-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3" },
|
||||
});
|
||||
if (__VLS_ctx.meteoCurrent?.wmo != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.weatherIcon(__VLS_ctx.meteoCurrent.wmo)),
|
||||
...{ class: "w-8 h-8" },
|
||||
alt: (__VLS_ctx.meteoCurrent.label || 'Météo'),
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-sm text-text" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
(__VLS_ctx.meteoCurrent?.label || '—');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs" },
|
||||
});
|
||||
(__VLS_ctx.stationCurrent?.temp_ext != null ? `${__VLS_ctx.stationCurrent.temp_ext.toFixed(1)}°C` : 'Temp. indisponible');
|
||||
if (__VLS_ctx.stationCurrent?.date_heure) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
(__VLS_ctx.stationCurrent.date_heure.slice(11, 16));
|
||||
}
|
||||
}
|
||||
if (__VLS_ctx.meteo7j.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-7 gap-2" },
|
||||
});
|
||||
for (const [day] of __VLS_getVForSourceType((__VLS_ctx.meteo7j))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (day.date),
|
||||
...{ class: "bg-bg-soft rounded-xl p-3 border border-bg-hard flex flex-col items-center gap-1 min-w-0" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs" },
|
||||
});
|
||||
(__VLS_ctx.formatDate(day.date || ''));
|
||||
if (day.wmo != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.weatherIcon(day.wmo)),
|
||||
...{ class: "w-8 h-8" },
|
||||
alt: (day.label || 'Météo'),
|
||||
});
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[11px] text-center text-text-muted leading-tight min-h-[30px]" },
|
||||
});
|
||||
(day.label || '—');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-1 text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-orange" },
|
||||
});
|
||||
(day.t_max != null ? day.t_max.toFixed(0) : '—');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-blue" },
|
||||
});
|
||||
(day.t_min != null ? day.t_min.toFixed(0) : '—');
|
||||
}
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm py-2" },
|
||||
...{ class: "btn-outline py-1 px-3 border-green/30 text-green hover:bg-green/10" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-3" },
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest mb-4 flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-blue" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "card-jardin border-blue/20 bg-gradient-to-br from-bg-soft to-bg-hard relative overflow-hidden" },
|
||||
});
|
||||
if (__VLS_ctx.meteoCurrent) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "relative z-10 flex flex-col items-center py-4" },
|
||||
});
|
||||
if (__VLS_ctx.meteoCurrent?.wmo != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.weatherIcon(__VLS_ctx.meteoCurrent.wmo)),
|
||||
...{ class: "drop-shadow-2xl mb-2" },
|
||||
...{ style: ({ width: 'calc(var(--ui-weather-icon-size, 48px) * 2)', height: 'calc(var(--ui-weather-icon-size, 48px) * 2)' }) },
|
||||
alt: (__VLS_ctx.meteoCurrent.label || 'Météo'),
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-3xl font-bold text-text mb-1" },
|
||||
});
|
||||
(__VLS_ctx.stationCurrent?.temp_ext != null ? `${__VLS_ctx.stationCurrent.temp_ext.toFixed(1)}°C` : '—°');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-sm font-bold text-blue uppercase tracking-widest mb-4" },
|
||||
});
|
||||
(__VLS_ctx.meteoCurrent?.label || '—');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-2 gap-4 w-full pt-4 border-t border-bg-hard/50" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-center" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] text-text-muted uppercase font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-sm text-blue" },
|
||||
});
|
||||
(__VLS_ctx.stationCurrent?.humidite ?? '--');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-center" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] text-text-muted uppercase font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-sm text-text" },
|
||||
});
|
||||
(__VLS_ctx.stationCurrent?.vent_kmh ?? '--');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px]" },
|
||||
});
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-center py-10 opacity-50 text-sm" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest mb-4 flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-aqua" },
|
||||
});
|
||||
if (__VLS_ctx.meteo7j.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-7 gap-3" },
|
||||
});
|
||||
for (const [day, index] of __VLS_getVForSourceType((__VLS_ctx.meteo7j))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (day.date),
|
||||
...{ class: (['card-jardin flex flex-col items-center gap-2 text-center transition-all group hover:-translate-y-1',
|
||||
index === 0 ? 'border-yellow/30 bg-yellow/5' : '']) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] font-bold uppercase tracking-tighter" },
|
||||
...{ class: (index === 0 ? 'text-yellow' : 'text-text-muted') },
|
||||
});
|
||||
(index === 0 ? 'Aujourd\'hui' : __VLS_ctx.formatDate(day.date || ''));
|
||||
if (day.wmo != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.weatherIcon(day.wmo)),
|
||||
...{ class: "group-hover:scale-110 transition-transform" },
|
||||
...{ style: ({ width: 'var(--ui-weather-icon-size, 48px)', height: 'var(--ui-weather-icon-size, 48px)' }) },
|
||||
alt: (day.label || 'Météo'),
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] text-text-muted font-medium line-clamp-1 h-3" },
|
||||
});
|
||||
(day.label || '—');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 text-xs font-bold pt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-orange" },
|
||||
});
|
||||
(day.t_max?.toFixed(1));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-blue" },
|
||||
});
|
||||
(day.t_min?.toFixed(1));
|
||||
}
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-orange" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.router.push('/jardins');
|
||||
} },
|
||||
...{ class: "btn-primary py-1 px-4 text-xs" },
|
||||
});
|
||||
if (__VLS_ctx.gardensStore.loading) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm" },
|
||||
...{ class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" },
|
||||
});
|
||||
for (const [i] of __VLS_getVForSourceType((3))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (i),
|
||||
...{ class: "card-jardin h-24 animate-pulse opacity-20" },
|
||||
});
|
||||
}
|
||||
}
|
||||
for (const [g] of __VLS_getVForSourceType((__VLS_ctx.gardensStore.gardens))) {
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.router.push(`/jardins/${g.id}`);
|
||||
} },
|
||||
key: (g.id),
|
||||
...{ class: "bg-bg-soft rounded-lg p-4 mb-2 border border-bg-hard cursor-pointer hover:border-green transition-colors" },
|
||||
...{ class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text font-medium" },
|
||||
});
|
||||
(g.nom);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "ml-2 text-xs text-text-muted px-2 py-0.5 bg-bg rounded" },
|
||||
});
|
||||
(g.type);
|
||||
for (const [g] of __VLS_getVForSourceType((__VLS_ctx.gardensStore.gardens))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!!(__VLS_ctx.gardensStore.loading))
|
||||
return;
|
||||
__VLS_ctx.router.push(`/jardins/${g.id}`);
|
||||
} },
|
||||
key: (g.id),
|
||||
...{ class: "card-jardin flex flex-col justify-between group cursor-pointer hover:border-green/50" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-start justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
...{ style: ({ fontSize: 'var(--ui-dashboard-icon-size, 24px)' }) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h3, __VLS_intrinsicElements.h3)({
|
||||
...{ class: "text-text font-bold text-lg group-hover:text-green transition-colors" },
|
||||
});
|
||||
(g.nom);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "badge badge-yellow" },
|
||||
});
|
||||
(g.type?.replace('_', ' '));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-4 flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] text-text-muted uppercase font-bold tracking-widest" },
|
||||
});
|
||||
(g.exposition);
|
||||
(g.surface_m2);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-green text-xl opacity-0 group-hover:opacity-100 transition-all" },
|
||||
});
|
||||
}
|
||||
}
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-6xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-wide']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['min-w-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-green/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-blue/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-gradient-to-br']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['from-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['to-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['min-w-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[11px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['min-h-[30px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['drop-shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['ml-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:scale-110']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-transform']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['line-clamp-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-24']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-green/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:opacity-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
return {
|
||||
RouterLink: RouterLink,
|
||||
router: router,
|
||||
gardensStore: gardensStore,
|
||||
tasksStore: tasksStore,
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
import { computed, onMounted, ref } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { gardensApi } from '@/api/gardens';
|
||||
import { plantingsApi } from '@/api/plantings';
|
||||
import { plantsApi } from '@/api/plants';
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const garden = ref(null);
|
||||
const cells = ref([]);
|
||||
const plantings = ref([]);
|
||||
const plants = ref([]);
|
||||
const editMode = ref(false);
|
||||
const saving = ref(false);
|
||||
const displayCells = computed(() => {
|
||||
if (!garden.value)
|
||||
return [];
|
||||
@@ -22,10 +28,88 @@ const displayCells = computed(() => {
|
||||
}
|
||||
return result;
|
||||
});
|
||||
// Plantations actives (ni terminées ni échouées) pour ce jardin
|
||||
const activePlantings = computed(() => plantings.value.filter(p => p.garden_id === garden.value?.id &&
|
||||
p.statut !== 'termine' &&
|
||||
p.statut !== 'echoue'));
|
||||
// Map cellId → Planting active
|
||||
const activePlantingsByCellId = computed(() => {
|
||||
const map = new Map();
|
||||
for (const p of activePlantings.value) {
|
||||
if (p.cell_ids?.length) {
|
||||
p.cell_ids.forEach(cid => map.set(cid, p));
|
||||
}
|
||||
else if (p.cell_id) {
|
||||
map.set(p.cell_id, p);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
});
|
||||
function getCellPlanting(cell) {
|
||||
if (cell.id == null)
|
||||
return undefined;
|
||||
return activePlantingsByCellId.value.get(cell.id);
|
||||
}
|
||||
function plantName(p) {
|
||||
const plant = plants.value.find(pl => pl.id === p.variety_id);
|
||||
return plant?.nom_commun ?? `Plante #${p.variety_id}`;
|
||||
}
|
||||
function plantShortName(p) {
|
||||
return plantName(p).slice(0, 8);
|
||||
}
|
||||
function plantCellLabel(p) {
|
||||
const ids = p.cell_ids?.length ? p.cell_ids : (p.cell_id ? [p.cell_id] : []);
|
||||
if (!ids.length)
|
||||
return '—';
|
||||
return ids
|
||||
.map(cid => cells.value.find(c => c.id === cid)?.libelle ?? `#${cid}`)
|
||||
.join(', ');
|
||||
}
|
||||
function getCellTitle(cell) {
|
||||
const planting = getCellPlanting(cell);
|
||||
if (planting)
|
||||
return `Planté : ${plantName(planting)} (${planting.statut})`;
|
||||
if (cell.etat === 'non_cultivable')
|
||||
return 'Non cultivable — cliquer pour rendre cultivable';
|
||||
if (editMode.value)
|
||||
return 'Marquer comme non cultivable';
|
||||
return cell.libelle ?? '';
|
||||
}
|
||||
async function toggleNonCultivable(cell) {
|
||||
if (!garden.value?.id || saving.value)
|
||||
return;
|
||||
const newEtat = cell.etat === 'non_cultivable' ? 'libre' : 'non_cultivable';
|
||||
saving.value = true;
|
||||
try {
|
||||
if (cell.id) {
|
||||
const updated = await gardensApi.updateCell(garden.value.id, cell.id, { ...cell, etat: newEtat });
|
||||
const idx = cells.value.findIndex(c => c.id === cell.id);
|
||||
if (idx !== -1)
|
||||
cells.value[idx] = updated;
|
||||
}
|
||||
else {
|
||||
const created = await gardensApi.createCell(garden.value.id, {
|
||||
col: cell.col, row: cell.row,
|
||||
libelle: cell.libelle,
|
||||
etat: newEtat,
|
||||
garden_id: garden.value.id,
|
||||
});
|
||||
cells.value.push(created);
|
||||
}
|
||||
}
|
||||
catch { /* L'intercepteur affiche l'erreur */ }
|
||||
finally {
|
||||
saving.value = false;
|
||||
}
|
||||
}
|
||||
onMounted(async () => {
|
||||
const id = Number(route.params.id);
|
||||
garden.value = await gardensApi.get(id);
|
||||
cells.value = await gardensApi.cells(id);
|
||||
[garden.value, cells.value, plantings.value, plants.value] = await Promise.all([
|
||||
gardensApi.get(id),
|
||||
gardensApi.cells(id),
|
||||
plantingsApi.list(),
|
||||
plantsApi.list(),
|
||||
]);
|
||||
});
|
||||
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||
const __VLS_ctx = {};
|
||||
@@ -42,8 +126,11 @@ __VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElement
|
||||
});
|
||||
if (__VLS_ctx.garden) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-start justify-between mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-green mb-1" },
|
||||
...{ class: "text-2xl font-bold text-green" },
|
||||
});
|
||||
(__VLS_ctx.garden.nom);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
@@ -119,26 +206,129 @@ if (__VLS_ctx.garden) {
|
||||
...{ class: "w-full max-h-72 object-cover rounded-lg border border-bg-hard bg-bg-soft" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-3" },
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest" },
|
||||
});
|
||||
(__VLS_ctx.garden.grille_largeur);
|
||||
(__VLS_ctx.garden.grille_hauteur);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-2" },
|
||||
});
|
||||
if (__VLS_ctx.editMode) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs text-orange" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.garden))
|
||||
return;
|
||||
__VLS_ctx.editMode = !__VLS_ctx.editMode;
|
||||
} },
|
||||
...{ class: (['px-3 py-1 rounded-full text-xs font-bold border transition-all',
|
||||
__VLS_ctx.editMode ? 'bg-orange text-bg border-orange' : 'border-bg-soft text-text-muted hover:border-orange hover:text-orange']) },
|
||||
});
|
||||
(__VLS_ctx.editMode ? '✓ Terminer' : '✏️ Éditer zones');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex flex-wrap gap-4 mb-3 text-[10px] text-text-muted font-bold uppercase tracking-wider" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "flex items-center gap-1.5" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-3 h-3 rounded bg-bg border border-bg-soft inline-block" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "flex items-center gap-1.5" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-3 h-3 rounded bg-green/20 border border-green/60 inline-block" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "flex items-center gap-1.5" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-3 h-3 rounded bg-red/20 border border-red/40 inline-block" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "overflow-x-auto pb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid gap-1 w-max" },
|
||||
...{ style: (`grid-template-columns: repeat(${__VLS_ctx.garden.grille_largeur}, 52px)`) },
|
||||
...{ style: (`grid-template-columns: repeat(${__VLS_ctx.garden.grille_largeur}, 56px)`) },
|
||||
});
|
||||
for (const [cell] of __VLS_getVForSourceType((__VLS_ctx.displayCells))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
if (!(__VLS_ctx.garden))
|
||||
return;
|
||||
__VLS_ctx.editMode && !__VLS_ctx.getCellPlanting(cell) && cell.etat !== 'occupe' ? __VLS_ctx.toggleNonCultivable(cell) : undefined;
|
||||
} },
|
||||
key: (`${cell.row}-${cell.col}`),
|
||||
...{ class: "w-[52px] h-[52px] bg-bg-soft border border-bg-hard rounded-md flex items-center justify-center text-xs text-text-muted cursor-pointer hover:border-green transition-colors select-none" },
|
||||
...{ class: ({ 'border-orange/60 bg-orange/10 text-orange': cell.etat === 'occupe' }) },
|
||||
title: (cell.libelle),
|
||||
...{ class: ([
|
||||
'w-[56px] h-[56px] border rounded-md flex flex-col items-center justify-center text-[10px] select-none transition-all overflow-hidden',
|
||||
__VLS_ctx.editMode && cell.etat !== 'occupe' && !__VLS_ctx.getCellPlanting(cell) ? 'cursor-pointer' : '',
|
||||
__VLS_ctx.getCellPlanting(cell)
|
||||
? 'bg-green/10 border-green/60 text-green'
|
||||
: cell.etat === 'non_cultivable'
|
||||
? 'bg-red/10 border-red/30 text-red/50'
|
||||
: 'bg-bg-soft border-bg-hard text-text-muted',
|
||||
__VLS_ctx.editMode && !__VLS_ctx.getCellPlanting(cell) && cell.etat !== 'occupe'
|
||||
? (cell.etat === 'non_cultivable' ? 'hover:bg-red/20 hover:border-red/60' : 'hover:border-orange hover:bg-orange/10')
|
||||
: ''
|
||||
]) },
|
||||
title: (__VLS_ctx.getCellTitle(cell)),
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['font-mono leading-none', __VLS_ctx.getCellPlanting(cell) ? 'text-[9px] font-bold' : '']) },
|
||||
});
|
||||
(cell.libelle);
|
||||
if (__VLS_ctx.getCellPlanting(cell)) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[8px] text-green/80 leading-none mt-0.5 px-0.5 text-center truncate w-full" },
|
||||
});
|
||||
(__VLS_ctx.plantShortName(__VLS_ctx.getCellPlanting(cell)));
|
||||
}
|
||||
else if (cell.etat === 'non_cultivable') {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[9px] leading-none" },
|
||||
});
|
||||
}
|
||||
}
|
||||
if (__VLS_ctx.saving) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-2 text-xs text-text-muted animate-pulse" },
|
||||
});
|
||||
}
|
||||
if (__VLS_ctx.activePlantings.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h3, __VLS_intrinsicElements.h3)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-2" },
|
||||
});
|
||||
(__VLS_ctx.activePlantings.length);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex flex-wrap gap-2" },
|
||||
});
|
||||
for (const [p] of __VLS_getVForSourceType((__VLS_ctx.activePlantings))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (p.id),
|
||||
...{ class: "bg-bg-soft border border-green/30 rounded px-2 py-1 text-xs text-green flex items-center gap-1.5" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text-muted font-mono text-[10px]" },
|
||||
});
|
||||
(__VLS_ctx.plantCellLabel(p));
|
||||
(__VLS_ctx.plantName(p));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text-muted" },
|
||||
});
|
||||
(p.statut);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -153,10 +343,13 @@ else {
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
@@ -201,31 +394,101 @@ else {
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-wider']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inline-block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inline-block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-red/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-red/40']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inline-block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-x-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-max']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-[52px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-[52px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-md']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[8px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['select-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-mono']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
var __VLS_dollars;
|
||||
@@ -234,7 +497,16 @@ const __VLS_self = (await import('vue')).defineComponent({
|
||||
return {
|
||||
router: router,
|
||||
garden: garden,
|
||||
editMode: editMode,
|
||||
saving: saving,
|
||||
displayCells: displayCells,
|
||||
activePlantings: activePlantings,
|
||||
getCellPlanting: getCellPlanting,
|
||||
plantName: plantName,
|
||||
plantShortName: plantShortName,
|
||||
plantCellLabel: plantCellLabel,
|
||||
getCellTitle: getCellTitle,
|
||||
toggleNonCultivable: toggleNonCultivable,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -58,6 +58,11 @@ function onVideoSelected(event) {
|
||||
if (file)
|
||||
videoPreview.value = URL.createObjectURL(file);
|
||||
}
|
||||
function autoResize(event) {
|
||||
const el = event.target;
|
||||
el.style.height = 'auto';
|
||||
el.style.height = el.scrollHeight + 'px';
|
||||
}
|
||||
function startEdit(t) {
|
||||
editId.value = t.id;
|
||||
Object.assign(form, {
|
||||
@@ -134,159 +139,200 @@ const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4 max-w-4xl mx-auto" },
|
||||
...{ class: "p-4 max-w-[1800px] mx-auto space-y-8" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-6" },
|
||||
...{ class: "flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-yellow" },
|
||||
...{ class: "text-3xl font-bold text-yellow tracking-tight" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openCreate) },
|
||||
...{ class: "bg-yellow text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
...{ class: "btn-primary !bg-yellow !text-bg flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-lg leading-none" },
|
||||
});
|
||||
if (__VLS_ctx.toolsStore.loading) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm" },
|
||||
...{ class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 3xl:grid-cols-6 gap-4" },
|
||||
});
|
||||
for (const [i] of __VLS_getVForSourceType((6))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (i),
|
||||
...{ class: "card-jardin h-32 animate-pulse opacity-20" },
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (!__VLS_ctx.toolsStore.tools.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-sm py-4" },
|
||||
...{ class: "card-jardin text-center py-16 opacity-50 border-dashed" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-4xl mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm uppercase font-black tracking-widest" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3" },
|
||||
...{ class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 3xl:grid-cols-6 gap-4" },
|
||||
});
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.toolsStore.tools))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (t.id),
|
||||
...{ class: "bg-bg-soft rounded-lg p-4 border border-bg-hard flex flex-col gap-2" },
|
||||
...{ class: "card-jardin group flex flex-col h-full hover:border-yellow/30 transition-all !p-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between" },
|
||||
...{ class: "flex items-start justify-between mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text font-semibold" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "min-w-0 flex-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-bold text-base group-hover:text-yellow transition-colors truncate" },
|
||||
title: (t.nom),
|
||||
});
|
||||
(t.nom);
|
||||
if (t.categorie) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "badge badge-yellow !text-[8px] mt-0.5" },
|
||||
});
|
||||
(t.categorie);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2" },
|
||||
...{ class: "flex gap-2 shrink-0 ml-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.startEdit(t);
|
||||
} },
|
||||
...{ class: "text-yellow text-xs hover:underline" },
|
||||
...{ class: "text-[10px] text-text-muted hover:text-yellow font-bold uppercase tracking-tighter transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
__VLS_ctx.removeTool(t.id);
|
||||
} },
|
||||
...{ class: "text-red text-xs hover:underline" },
|
||||
...{ class: "text-[10px] text-text-muted hover:text-red font-bold uppercase tracking-tighter transition-colors" },
|
||||
});
|
||||
if (t.categorie) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs text-yellow bg-yellow/10 rounded-full px-2 py-0.5 w-fit" },
|
||||
});
|
||||
(t.categorie);
|
||||
}
|
||||
if (t.description) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs" },
|
||||
...{ class: "text-text-muted text-[11px] leading-snug line-clamp-2 mb-3 italic opacity-80" },
|
||||
});
|
||||
(t.description);
|
||||
}
|
||||
if (t.boutique_nom || t.prix_achat != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs" },
|
||||
if (t.photo_url || t.video_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mb-3 rounded-lg overflow-hidden bg-bg-hard border border-bg-soft/30 relative aspect-video shrink-0" },
|
||||
});
|
||||
if (t.boutique_nom) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
(t.boutique_nom);
|
||||
if (t.photo_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (t.photo_url),
|
||||
...{ class: "w-full h-full object-cover transition-transform group-hover:scale-105" },
|
||||
});
|
||||
}
|
||||
if (t.prix_achat != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({});
|
||||
(t.prix_achat);
|
||||
if (t.video_url && !t.photo_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "w-full h-full flex items-center justify-center text-aqua opacity-30" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
}
|
||||
if (t.video_url && t.photo_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute bottom-1 right-1 bg-black/60 rounded px-1 py-0.5 text-[8px] text-aqua font-bold uppercase" },
|
||||
});
|
||||
}
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-auto pt-2 border-t border-bg-hard/30" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 text-[9px] font-bold text-text-muted truncate" },
|
||||
});
|
||||
if (t.boutique_nom) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "truncate" },
|
||||
});
|
||||
(t.boutique_nom);
|
||||
}
|
||||
if (t.prix_achat != null) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "shrink-0 text-yellow" },
|
||||
});
|
||||
(t.prix_achat);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-1" },
|
||||
});
|
||||
if (t.boutique_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.a, __VLS_intrinsicElements.a)({
|
||||
href: (t.boutique_url),
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
...{ class: "text-blue text-xs hover:underline truncate" },
|
||||
...{ class: "p-1 hover:bg-blue/10 rounded transition-colors text-blue" },
|
||||
title: "Boutique",
|
||||
});
|
||||
}
|
||||
if (t.video_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.a, __VLS_intrinsicElements.a)({
|
||||
href: (t.video_url),
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
...{ class: "text-aqua text-xs hover:underline truncate" },
|
||||
...{ class: "p-1 hover:bg-aqua/10 rounded transition-colors text-aqua" },
|
||||
title: "Vidéo",
|
||||
});
|
||||
}
|
||||
if (t.notice_texte) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs whitespace-pre-line" },
|
||||
});
|
||||
(t.notice_texte);
|
||||
}
|
||||
else if (t.notice_fichier_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.a, __VLS_intrinsicElements.a)({
|
||||
href: (t.notice_fichier_url),
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
...{ class: "text-aqua text-xs hover:underline truncate" },
|
||||
});
|
||||
}
|
||||
if (t.photo_url || t.video_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-auto pt-2 space-y-2" },
|
||||
});
|
||||
if (t.photo_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (t.photo_url),
|
||||
alt: "photo outil",
|
||||
...{ class: "w-full h-28 object-cover rounded border border-bg-hard bg-bg" },
|
||||
});
|
||||
}
|
||||
if (t.video_url) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.video)({
|
||||
src: (t.video_url),
|
||||
controls: true,
|
||||
muted: true,
|
||||
...{ class: "w-full h-36 object-cover rounded border border-bg-hard bg-bg" },
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (__VLS_ctx.showForm) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ onClick: (__VLS_ctx.closeForm) },
|
||||
...{ class: "fixed inset-0 bg-black/60 z-50 flex items-center justify-center p-4" },
|
||||
...{ class: "fixed inset-0 bg-black/80 backdrop-blur-sm z-[100] flex items-center justify-center p-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "bg-bg-hard rounded-xl p-6 w-full max-w-md border border-bg-soft" },
|
||||
...{ class: "bg-bg-hard rounded-2xl p-6 w-full max-w-xl border border-bg-soft shadow-2xl max-h-[90vh] overflow-y-auto" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-6 border-b border-bg-soft pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-bold text-lg mb-4" },
|
||||
...{ class: "text-text font-bold text-xl" },
|
||||
});
|
||||
(__VLS_ctx.editId ? 'Modifier l\'outil' : 'Nouvel outil');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.closeForm) },
|
||||
...{ class: "text-text-muted hover:text-red transition-colors text-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.form, __VLS_intrinsicElements.form)({
|
||||
...{ onSubmit: (__VLS_ctx.submitTool) },
|
||||
...{ class: "flex flex-col gap-3" },
|
||||
...{ class: "grid grid-cols-1 md:grid-cols-2 gap-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "md:col-span-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
placeholder: "Nom de l'outil *",
|
||||
required: true,
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
placeholder: "Grelinette, Sécateur...",
|
||||
...{ class: "w-full bg-bg border border-bg-soft rounded-xl px-4 py-3 text-text text-sm focus:border-yellow outline-none transition-all shadow-inner" },
|
||||
});
|
||||
(__VLS_ctx.form.nom);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.select, __VLS_intrinsicElements.select)({
|
||||
value: (__VLS_ctx.form.categorie),
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
...{ class: "w-full bg-bg border border-bg-soft rounded-xl px-4 py-2.5 text-text text-sm outline-none focus:border-yellow" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
||||
value: "",
|
||||
@@ -309,347 +355,425 @@ if (__VLS_ctx.showForm) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
||||
value: "autre",
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-2 gap-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
placeholder: "Nom boutique",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
});
|
||||
(__VLS_ctx.form.boutique_nom);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
type: "number",
|
||||
min: "0",
|
||||
step: "0.01",
|
||||
placeholder: "Prix achat (€)",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
});
|
||||
(__VLS_ctx.form.prix_achat);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
type: "url",
|
||||
placeholder: "URL boutique (https://...)",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
});
|
||||
(__VLS_ctx.form.boutique_url);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.textarea)({
|
||||
value: (__VLS_ctx.form.description),
|
||||
placeholder: "Description...",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow resize-none h-16" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-xs block mb-1" },
|
||||
...{ class: "text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
type: "number",
|
||||
step: "0.01",
|
||||
...{ class: "w-full bg-bg border border-bg-soft rounded-xl px-4 py-2.5 text-text text-sm outline-none focus:border-yellow" },
|
||||
});
|
||||
(__VLS_ctx.form.prix_achat);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "md:col-span-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.textarea)({
|
||||
...{ onInput: (__VLS_ctx.autoResize) },
|
||||
value: (__VLS_ctx.form.description),
|
||||
rows: "1",
|
||||
...{ class: "w-full bg-bg border border-bg-soft rounded-xl px-4 py-2 text-text text-sm focus:border-yellow outline-none resize-none transition-all overflow-hidden" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "bg-bg-soft/30 p-3 rounded-xl border border-bg-soft" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-[9px] font-black uppercase tracking-widest block mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
...{ onChange: (__VLS_ctx.onPhotoSelected) },
|
||||
type: "file",
|
||||
accept: "image/*",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
...{ class: "text-[10px] text-text-muted w-full" },
|
||||
});
|
||||
if (__VLS_ctx.photoPreview) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.img)({
|
||||
src: (__VLS_ctx.photoPreview),
|
||||
alt: "Prévisualisation photo",
|
||||
...{ class: "mt-2 w-full h-28 object-cover rounded border border-bg-hard bg-bg" },
|
||||
...{ class: "mt-2 w-full h-24 object-cover rounded border border-bg-hard shadow-lg" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "bg-bg-soft/30 p-3 rounded-xl border border-bg-soft" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-text-muted text-xs block mb-1" },
|
||||
...{ class: "text-text-muted text-[9px] font-black uppercase tracking-widest block mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
...{ onChange: (__VLS_ctx.onVideoSelected) },
|
||||
type: "file",
|
||||
accept: "video/*",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow" },
|
||||
...{ class: "text-[10px] text-text-muted w-full" },
|
||||
});
|
||||
if (__VLS_ctx.videoPreview) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.video)({
|
||||
src: (__VLS_ctx.videoPreview),
|
||||
controls: true,
|
||||
muted: true,
|
||||
...{ class: "mt-2 w-full h-36 object-cover rounded border border-bg-hard bg-bg" },
|
||||
...{ class: "mt-2 w-full h-24 object-cover rounded border border-bg-hard shadow-lg" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.textarea)({
|
||||
value: (__VLS_ctx.form.notice_texte),
|
||||
placeholder: "Notice (texte libre)...",
|
||||
...{ class: "bg-bg border border-bg-soft rounded-lg px-3 py-2 text-text text-sm w-full outline-none focus:border-yellow resize-none h-24" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex gap-2 justify-end" },
|
||||
...{ class: "md:col-span-2 flex justify-between items-center pt-6 border-t border-bg-soft mt-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.closeForm) },
|
||||
type: "button",
|
||||
...{ class: "px-4 py-2 text-text-muted hover:text-text text-sm" },
|
||||
...{ class: "btn-outline border-transparent text-text-muted hover:text-red uppercase text-xs font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
type: "submit",
|
||||
...{ class: "bg-yellow text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
...{ class: "btn-primary !bg-yellow !text-bg px-8" },
|
||||
});
|
||||
(__VLS_ctx.editId ? 'Enregistrer' : 'Créer');
|
||||
(__VLS_ctx.editId ? 'Sauvegarder' : 'Enregistrer l\'outil');
|
||||
}
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-4xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-[1800px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['xl:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['2xl:grid-cols-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['3xl:grid-cols-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-32']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-16']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-dashed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-4xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['xl:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['2xl:grid-cols-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['3xl:grid-cols-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-yellow/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['min-w-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-base']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['badge-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-[8px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['ml-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[11px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-snug']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['line-clamp-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['italic']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['aspect-video']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-transform']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:scale-105']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bottom-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[8px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-fit']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-blue/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['whitespace-pre-line']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-28']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-aqua/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-36']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-black/80']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['backdrop-blur-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['z-[100]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-md']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-h-[90vh]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-y-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['resize-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-16']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-28']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-inner']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['resize-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-36']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['focus:border-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['resize-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-24']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-end']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-24']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['object-cover']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-8']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
@@ -663,6 +787,7 @@ const __VLS_self = (await import('vue')).defineComponent({
|
||||
openCreate: openCreate,
|
||||
onPhotoSelected: onPhotoSelected,
|
||||
onVideoSelected: onVideoSelected,
|
||||
autoResize: autoResize,
|
||||
startEdit: startEdit,
|
||||
closeForm: closeForm,
|
||||
submitTool: submitTool,
|
||||
|
||||
@@ -93,17 +93,20 @@ function goToday() {
|
||||
function selectDay(iso) {
|
||||
selectedIso.value = iso;
|
||||
}
|
||||
const priorityClass = (p) => ({
|
||||
haute: 'bg-red/20 text-red',
|
||||
normale: 'bg-yellow/20 text-yellow',
|
||||
basse: 'bg-bg-hard text-text-muted',
|
||||
}[p] || 'bg-bg-hard text-text-muted');
|
||||
const priorityBorderClass = (p) => ({
|
||||
haute: 'border-red/30 text-red bg-red/5',
|
||||
normale: 'border-yellow/30 text-yellow bg-yellow/5',
|
||||
basse: 'border-bg-soft text-text-muted bg-bg-hard/50',
|
||||
}[p] || 'border-bg-soft text-text-muted');
|
||||
const dotClass = (p) => ({
|
||||
haute: 'bg-red', normale: 'bg-yellow', basse: 'bg-text-muted',
|
||||
haute: 'bg-red shadow-[0_0_5px_rgba(251,73,52,0.5)]',
|
||||
normale: 'bg-yellow shadow-[0_0_5px_rgba(250,189,47,0.5)]',
|
||||
basse: 'bg-text-muted',
|
||||
}[p] || 'bg-text-muted');
|
||||
const statutClass = (s) => ({
|
||||
a_faire: 'bg-blue/20 text-blue', en_cours: 'bg-green/20 text-green',
|
||||
fait: 'bg-text-muted/20 text-text-muted',
|
||||
a_faire: 'badge-blue',
|
||||
en_cours: 'badge-green',
|
||||
fait: 'badge-text-muted',
|
||||
}[s] || '');
|
||||
onMounted(() => store.fetchAll());
|
||||
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||
@@ -111,45 +114,55 @@ const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4 max-w-3xl mx-auto" },
|
||||
...{ class: "p-4 max-w-6xl mx-auto space-y-8" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center justify-between mb-6" },
|
||||
...{ class: "flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-green" },
|
||||
...{ class: "text-3xl font-bold text-green tracking-tight" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-2" },
|
||||
...{ class: "flex items-center gap-2 bg-bg-soft/30 p-1 rounded-xl border border-bg-soft" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.prevPeriod) },
|
||||
...{ class: "text-xs text-text-muted border border-bg-hard rounded px-2 py-1 hover:text-text hover:border-text-muted" },
|
||||
...{ class: "btn-outline !py-1.5 !px-3 text-xs font-bold uppercase tracking-widest border-transparent hover:bg-bg-soft transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.goToday) },
|
||||
...{ class: "text-xs text-green border border-green/30 rounded px-2 py-1 hover:bg-green/10" },
|
||||
...{ class: "btn-primary !py-1.5 !px-4 text-xs !rounded-lg" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.nextPeriod) },
|
||||
...{ class: "text-xs text-text-muted border border-bg-hard rounded px-2 py-1 hover:text-text hover:border-text-muted" },
|
||||
...{ class: "btn-outline !py-1.5 !px-3 text-xs font-bold uppercase tracking-widest border-transparent hover:bg-bg-soft transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text text-sm font-medium mb-3" },
|
||||
...{ class: "flex items-center gap-3" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-yellow font-bold text-sm tracking-widest uppercase bg-yellow/5 px-4 py-1 rounded-full border border-yellow/10" },
|
||||
});
|
||||
(__VLS_ctx.periodLabel);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-7 gap-1 mb-2" },
|
||||
...{ class: "space-y-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-7 gap-3" },
|
||||
});
|
||||
for (const [dayName] of __VLS_getVForSourceType((__VLS_ctx.dayHeaders))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (dayName),
|
||||
...{ class: "text-center text-xs py-1 rounded text-text-muted" },
|
||||
...{ class: "text-center text-[10px] font-black uppercase tracking-[0.2em] text-text-muted/60 pb-2" },
|
||||
});
|
||||
(dayName);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-7 gap-1" },
|
||||
...{ class: "grid grid-cols-7 gap-3" },
|
||||
});
|
||||
for (const [d] of __VLS_getVForSourceType((__VLS_ctx.periodDays))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
@@ -157,236 +170,349 @@ for (const [d] of __VLS_getVForSourceType((__VLS_ctx.periodDays))) {
|
||||
__VLS_ctx.selectDay(d.iso);
|
||||
} },
|
||||
key: (d.iso),
|
||||
...{ class: (['min-h-24 rounded-lg p-1 border transition-colors cursor-pointer',
|
||||
d.isToday ? 'border-green/40 bg-green/5' : 'border-bg-hard bg-bg-soft',
|
||||
__VLS_ctx.selectedIso === d.iso ? 'ring-1 ring-yellow/60 border-yellow/40' : '']) },
|
||||
...{ class: (['min-h-32 card-jardin !p-2 flex flex-col group relative cursor-pointer border-2 transition-all',
|
||||
d.isToday ? 'border-green/40 bg-green/5' : 'border-bg-hard/50',
|
||||
__VLS_ctx.selectedIso === d.iso ? '!border-yellow bg-yellow/5 scale-[1.02] z-10 shadow-xl' : 'hover:border-bg-soft']) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[11px] text-text-muted mb-1" },
|
||||
...{ class: "flex items-center justify-between mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (d.isToday ? 'text-green font-bold' : '') },
|
||||
...{ class: (['text-xs font-bold font-mono', d.isToday ? 'text-green' : 'text-text-muted']) },
|
||||
});
|
||||
(d.dayNum);
|
||||
if (d.showMonth) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "ml-1" },
|
||||
...{ class: "text-[9px] font-black uppercase tracking-tighter text-aqua" },
|
||||
});
|
||||
(d.monthShort);
|
||||
}
|
||||
if (__VLS_ctx.todoTasksByDay[d.iso]?.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-1 flex-wrap mb-1" },
|
||||
});
|
||||
for (const [t, i] of __VLS_getVForSourceType((__VLS_ctx.todoTasksByDay[d.iso].slice(0, 10)))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
key: (`${d.iso}-${t.id ?? i}`),
|
||||
...{ class: (['w-1.5 h-1.5 rounded-full', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
});
|
||||
}
|
||||
}
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.tasksByDay[d.iso] || []))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1 space-y-1 overflow-hidden" },
|
||||
});
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.tasksByDay[d.iso]?.slice(0, 3)))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (t.id),
|
||||
...{ class: (['text-xs rounded px-1 py-0.5 mb-0.5 cursor-pointer hover:opacity-80 truncate',
|
||||
__VLS_ctx.priorityClass(t.priorite)]) },
|
||||
title: (t.titre),
|
||||
...{ class: (['text-[9px] font-bold uppercase tracking-tighter rounded px-1.5 py-0.5 truncate border', __VLS_ctx.priorityBorderClass(t.priorite)]) },
|
||||
});
|
||||
(t.titre);
|
||||
}
|
||||
if (!(__VLS_ctx.tasksByDay[d.iso]?.length)) {
|
||||
if (__VLS_ctx.tasksByDay[d.iso]?.length > 3) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs text-center pt-2 opacity-40" },
|
||||
...{ class: "text-[9px] text-text-muted font-bold text-center pt-1" },
|
||||
});
|
||||
(__VLS_ctx.tasksByDay[d.iso].length - 3);
|
||||
}
|
||||
if (__VLS_ctx.todoTasksByDay[d.iso]?.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute bottom-2 right-2 flex gap-0.5" },
|
||||
});
|
||||
for (const [t, i] of __VLS_getVForSourceType((__VLS_ctx.todoTasksByDay[d.iso].slice(0, 3)))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
key: (i),
|
||||
...{ class: (['w-1 h-1 rounded-full', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-4 bg-bg-soft rounded-lg p-3 border border-bg-hard" },
|
||||
...{ class: "grid grid-cols-1 lg:grid-cols-3 gap-8 pt-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text text-sm font-semibold" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "lg:col-span-2 space-y-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-yellow" },
|
||||
});
|
||||
(__VLS_ctx.selectedLabel);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs mt-0.5" },
|
||||
});
|
||||
(__VLS_ctx.selectedTasks.length);
|
||||
if (!__VLS_ctx.selectedTasks.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs mt-2" },
|
||||
...{ class: "card-jardin text-center py-12 opacity-40 border-dashed" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm italic" },
|
||||
});
|
||||
}
|
||||
else {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-2 space-y-1" },
|
||||
...{ class: "space-y-3" },
|
||||
});
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.selectedTasks))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (t.id),
|
||||
...{ class: "bg-bg rounded px-2 py-1 border border-bg-hard flex items-center gap-2" },
|
||||
...{ class: "card-jardin flex items-center gap-4 group" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['w-2 h-2 rounded-full shrink-0', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: (['w-1.5 h-10 rounded-full shrink-0', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text text-xs flex-1 truncate" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1 min-w-0" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text font-bold text-sm" },
|
||||
});
|
||||
(t.titre);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['text-[10px] px-1.5 py-0.5 rounded shrink-0', __VLS_ctx.statutClass(t.statut)]) },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['badge !text-[9px]', __VLS_ctx.statutClass(t.statut)]) },
|
||||
});
|
||||
(t.statut?.replace('_', ' '));
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] text-text-muted uppercase font-bold tracking-tighter opacity-60" },
|
||||
});
|
||||
(t.priorite);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-green text-xl opacity-0 group-hover:opacity-100 transition-all" },
|
||||
});
|
||||
(t.statut);
|
||||
}
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-6" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "space-y-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-2" },
|
||||
...{ class: "text-text-muted text-xs font-bold uppercase tracking-widest flex items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "w-2 h-2 rounded-full bg-orange" },
|
||||
});
|
||||
if (!__VLS_ctx.unscheduled.length) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-text-muted text-xs pl-2" },
|
||||
...{ class: "card-jardin text-center py-12 opacity-30 border-dashed" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-[10px] font-bold uppercase" },
|
||||
});
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "space-y-2" },
|
||||
});
|
||||
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.unscheduled))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (t.id),
|
||||
...{ class: "bg-bg-soft rounded-lg p-2 mb-1 border border-bg-hard flex items-center gap-2" },
|
||||
...{ class: "card-jardin !p-3 flex flex-col gap-2 hover:border-orange/30 transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-start justify-between gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['text-xs w-2 h-2 rounded-full flex-shrink-0', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text text-sm flex-1 truncate" },
|
||||
...{ class: "text-text font-bold text-xs flex-1 line-clamp-2" },
|
||||
});
|
||||
(t.titre);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: (['w-2 h-2 rounded-full shrink-0 mt-1', __VLS_ctx.dotClass(t.priorite)]) },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex justify-between items-center" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: (['text-xs px-1.5 py-0.5 rounded', __VLS_ctx.statutClass(t.statut)]) },
|
||||
...{ class: (['badge !text-[8px]', __VLS_ctx.statutClass(t.statut)]) },
|
||||
});
|
||||
(t.statut);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ class: "text-[10px] text-orange font-bold uppercase hover:underline" },
|
||||
});
|
||||
}
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-6xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-green/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[11px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['ml-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-40']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!py-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!py-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!py-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-transparent']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow/5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-yellow/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-[0.2em]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted/60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-7']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bottom-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['right-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-0.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['lg:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pl-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-40']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-dashed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['italic']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['truncate']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['min-w-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tighter']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-60']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:opacity-100']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['opacity-30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-dashed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-orange/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['line-clamp-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-orange']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
setup() {
|
||||
@@ -404,7 +530,7 @@ const __VLS_self = (await import('vue')).defineComponent({
|
||||
nextPeriod: nextPeriod,
|
||||
goToday: goToday,
|
||||
selectDay: selectDay,
|
||||
priorityClass: priorityClass,
|
||||
priorityBorderClass: priorityBorderClass,
|
||||
dotClass: dotClass,
|
||||
statutClass: statutClass,
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="relative min-w-[300px]">
|
||||
<span class="absolute left-3 top-1/2 -translate-y-1/2 opacity-40">🔍</span>
|
||||
@@ -29,28 +29,34 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Grille de 5 colonnes -->
|
||||
<!-- Grille -->
|
||||
<div v-if="plantsStore.loading" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4">
|
||||
<div v-for="i in 10" :key="i" class="card-jardin h-40 animate-pulse opacity-20"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-else class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4">
|
||||
<div v-for="p in filteredPlants" :key="p.id"
|
||||
<div v-for="p in filteredPlants" :key="(p.nom_commun||'').toLowerCase()"
|
||||
class="card-jardin !p-0 group overflow-hidden flex flex-col hover:border-yellow/40 transition-all border-l-[6px] relative min-h-[160px] cursor-pointer"
|
||||
:style="{ borderLeftColor: getCatColor(p.categorie || '') }"
|
||||
:style="{ borderLeftColor: getCatColor(groupPrimaryCategory(p.nom_commun||'')) }"
|
||||
@click="openDetails(p)">
|
||||
|
||||
<!-- Badge catégorie en haut à gauche -->
|
||||
|
||||
<!-- Badge catégorie -->
|
||||
<div class="absolute top-2 left-2">
|
||||
<span :class="['text-[7px] font-black uppercase tracking-[0.2em] px-2 py-0.5 rounded bg-bg/60 backdrop-blur-sm', catTextClass(p.categorie || '')]">
|
||||
{{ p.categorie }}
|
||||
<span :class="['text-[7px] font-black uppercase tracking-[0.2em] px-2 py-0.5 rounded bg-bg/60 backdrop-blur-sm', catTextClass(groupPrimaryCategory(p.nom_commun||''))]">
|
||||
{{ groupPrimaryCategory(p.nom_commun||'') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Badge nombre de variétés -->
|
||||
<div v-if="groupSize(p.nom_commun||'') > 1" class="absolute top-2 right-2">
|
||||
<span class="text-[9px] font-black px-2 py-0.5 rounded-full bg-yellow/20 text-yellow border border-yellow/30">
|
||||
{{ groupSize(p.nom_commun||'') }} variétés
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="p-5 flex-1 flex flex-col justify-center">
|
||||
<h2 class="text-text font-bold text-2xl leading-tight group-hover:text-yellow transition-colors">{{ p.nom_commun }}</h2>
|
||||
<p v-if="p.variete" class="text-text-muted text-[10px] font-black uppercase tracking-widest mt-1 opacity-60">{{ p.variete }}</p>
|
||||
|
||||
<h2 class="text-text font-bold text-2xl leading-tight group-hover:text-yellow transition-colors capitalize">{{ p.nom_commun }}</h2>
|
||||
|
||||
<div class="mt-4 flex flex-wrap gap-2">
|
||||
<div v-if="p.plantation_mois" class="flex items-center gap-2 bg-bg/40 px-2 py-1 rounded border border-bg-soft">
|
||||
<span class="text-[10px]">📅</span>
|
||||
@@ -65,22 +71,45 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modale de Détails (Popup) -->
|
||||
<div v-if="detailPlant" class="fixed inset-0 bg-black/80 backdrop-blur-sm z-50 flex items-center justify-center p-4" @click.self="detailPlant = null">
|
||||
<!-- Modale Détails -->
|
||||
<div v-if="detailPlant" class="fixed inset-0 bg-black/80 backdrop-blur-sm z-50 flex items-center justify-center p-4" @click.self="closeDetail">
|
||||
<div class="bg-bg-hard rounded-3xl w-full max-w-2xl border border-bg-soft shadow-2xl overflow-hidden flex flex-col max-h-[90vh]">
|
||||
<!-- Header de la modale -->
|
||||
<div class="p-6 border-b border-bg-soft flex justify-between items-start" :style="{ borderLeft: `8px solid ${getCatColor(detailPlant.categorie || '')}` }">
|
||||
<div>
|
||||
<span :class="['text-[10px] font-black uppercase tracking-widest px-2 py-1 rounded mb-2 inline-block bg-bg/50', catTextClass(detailPlant.categorie || '')]">
|
||||
{{ detailPlant.categorie }}
|
||||
</span>
|
||||
<h2 class="text-text font-black text-4xl leading-none">{{ detailPlant.nom_commun }}</h2>
|
||||
<p v-if="detailPlant.variete" class="text-yellow font-bold uppercase tracking-widest text-sm mt-1">{{ detailPlant.variete }}</p>
|
||||
<!-- Header -->
|
||||
<div class="p-6 border-b border-bg-soft" :style="{ borderLeft: `8px solid ${getCatColor(detailPlant.categorie || '')}` }">
|
||||
<div class="flex justify-between items-start">
|
||||
<div class="flex-1 min-w-0">
|
||||
<span :class="['text-[10px] font-black uppercase tracking-widest px-2 py-1 rounded mb-2 inline-block bg-bg/50', catTextClass(detailPlant.categorie || '')]">
|
||||
{{ detailPlant.categorie }}
|
||||
</span>
|
||||
<h2 class="text-text font-black text-4xl leading-none capitalize">{{ detailPlant.nom_commun }}</h2>
|
||||
|
||||
<!-- Navigation variétés -->
|
||||
<div class="flex items-center gap-3 mt-3">
|
||||
<div v-if="detailVarieties.length > 1" class="flex items-center gap-2">
|
||||
<button @click="prevVariety"
|
||||
:disabled="detailVarietyIdx === 0"
|
||||
:class="['w-7 h-7 rounded-full border flex items-center justify-center text-sm font-bold transition-all',
|
||||
detailVarietyIdx === 0 ? 'border-bg-soft text-text-muted/30 cursor-not-allowed' : 'border-yellow/50 text-yellow hover:bg-yellow/10']">
|
||||
‹
|
||||
</button>
|
||||
<span class="text-text-muted text-xs font-bold">
|
||||
Variété {{ detailVarietyIdx + 1 }} / {{ detailVarieties.length }}
|
||||
</span>
|
||||
<button @click="nextVariety"
|
||||
:disabled="detailVarietyIdx === detailVarieties.length - 1"
|
||||
:class="['w-7 h-7 rounded-full border flex items-center justify-center text-sm font-bold transition-all',
|
||||
detailVarietyIdx === detailVarieties.length - 1 ? 'border-bg-soft text-text-muted/30 cursor-not-allowed' : 'border-yellow/50 text-yellow hover:bg-yellow/10']">
|
||||
›
|
||||
</button>
|
||||
</div>
|
||||
<p v-if="detailPlant.variete" class="text-yellow font-bold uppercase tracking-widest text-sm">{{ detailPlant.variete }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<button @click="closeDetail" class="text-text-muted hover:text-red transition-colors text-2xl ml-4">✕</button>
|
||||
</div>
|
||||
<button @click="detailPlant = null" class="text-text-muted hover:text-red transition-colors text-2xl">✕</button>
|
||||
</div>
|
||||
|
||||
<!-- Corps de la modale -->
|
||||
<!-- Corps -->
|
||||
<div class="p-6 overflow-y-auto space-y-6">
|
||||
<!-- Caractéristiques -->
|
||||
<div class="grid grid-cols-3 gap-4">
|
||||
@@ -107,6 +136,40 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Boutique -->
|
||||
<div v-if="detailPlant.boutique_nom || detailPlant.prix_achat || detailPlant.poids || detailPlant.dluo" class="space-y-2">
|
||||
<h3 class="text-[10px] font-black text-text-muted uppercase tracking-widest">🛒 Approvisionnement</h3>
|
||||
<div class="grid grid-cols-2 sm:grid-cols-3 gap-3">
|
||||
<div v-if="detailPlant.boutique_nom" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">Enseigne</span>
|
||||
<span class="text-text text-sm font-bold">{{ detailPlant.boutique_nom }}</span>
|
||||
</div>
|
||||
<div v-if="detailPlant.prix_achat" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">Prix</span>
|
||||
<span class="text-yellow font-bold">{{ detailPlant.prix_achat.toFixed(2) }} €</span>
|
||||
</div>
|
||||
<div v-if="detailPlant.date_achat" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">Date d'achat</span>
|
||||
<span class="text-text text-sm">{{ detailPlant.date_achat }}</span>
|
||||
</div>
|
||||
<div v-if="detailPlant.poids" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">Poids / Qté</span>
|
||||
<span class="text-text text-sm font-bold">{{ detailPlant.poids }}</span>
|
||||
</div>
|
||||
<div v-if="detailPlant.dluo" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">DLUO</span>
|
||||
<span :class="['text-sm font-bold', isDluoExpired(detailPlant.dluo) ? 'text-red' : 'text-green']">
|
||||
{{ detailPlant.dluo }}{{ isDluoExpired(detailPlant.dluo) ? ' ⚠️' : '' }}
|
||||
</span>
|
||||
</div>
|
||||
<div v-if="detailPlant.boutique_url" class="bg-bg/30 p-3 rounded-xl border border-bg-soft">
|
||||
<span class="text-[9px] font-black text-text-muted uppercase block mb-0.5">Lien</span>
|
||||
<a :href="detailPlant.boutique_url" target="_blank" rel="noopener"
|
||||
class="text-blue text-xs hover:underline truncate block">🔗 Voir le produit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Notes -->
|
||||
<div v-if="detailPlant.notes" class="space-y-2">
|
||||
<h3 class="text-[10px] font-black text-text-muted uppercase tracking-widest">Conseils & Notes</h3>
|
||||
@@ -115,6 +178,31 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Associations (niveau nom commun) -->
|
||||
<div v-if="detailAssociations?.associations_favorables?.length || detailAssociations?.associations_defavorables?.length" class="space-y-3">
|
||||
<h3 class="text-[10px] font-black text-text-muted uppercase tracking-widest">Associations</h3>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div v-if="detailAssociations?.associations_favorables?.length">
|
||||
<div class="text-[10px] font-black text-green uppercase mb-1.5">🤝 Favorables</div>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<span v-for="n in detailAssociations.associations_favorables" :key="n"
|
||||
class="bg-green/10 border border-green/40 text-green text-[11px] px-2 py-0.5 rounded-full capitalize">
|
||||
{{ n }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="detailAssociations?.associations_defavorables?.length">
|
||||
<div class="text-[10px] font-black text-red uppercase mb-1.5">⚡ À éviter</div>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<span v-for="n in detailAssociations.associations_defavorables" :key="n"
|
||||
class="bg-red/10 border border-red/40 text-red text-[11px] px-2 py-0.5 rounded-full capitalize">
|
||||
{{ n }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Galerie Photos -->
|
||||
<div class="space-y-3">
|
||||
<div class="flex justify-between items-center">
|
||||
@@ -125,7 +213,7 @@
|
||||
<div v-for="i in 4" :key="i" class="aspect-square bg-bg-soft rounded-lg"></div>
|
||||
</div>
|
||||
<div v-else-if="plantPhotos.length" class="grid grid-cols-4 gap-2">
|
||||
<div v-for="m in plantPhotos" :key="m.id"
|
||||
<div v-for="m in plantPhotos" :key="m.id"
|
||||
class="aspect-square rounded-lg overflow-hidden bg-bg relative group cursor-pointer border border-bg-soft"
|
||||
@click="lightbox = m">
|
||||
<img :src="m.thumbnail_url || m.url" class="w-full h-full object-cover group-hover:scale-110 transition-transform" />
|
||||
@@ -138,7 +226,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer de la modale -->
|
||||
<!-- Footer -->
|
||||
<div class="p-4 bg-bg-hard border-t border-bg-soft flex gap-3">
|
||||
<button @click="startEdit(detailPlant)" class="btn-primary !bg-yellow !text-bg flex-1 py-3 font-black uppercase text-xs tracking-widest">Modifier la fiche</button>
|
||||
<button @click="removePlant(detailPlant.id!)" class="btn-outline !border-red/20 !text-red hover:bg-red/10 px-6 py-3 font-black uppercase text-xs tracking-widest">Supprimer</button>
|
||||
@@ -155,7 +243,6 @@
|
||||
</div>
|
||||
|
||||
<form @submit.prevent="submitPlant" class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<!-- Champs de formulaire identiques -->
|
||||
<div class="space-y-4">
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">Nom commun *</label>
|
||||
@@ -208,6 +295,84 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Boutique / Approvisionnement (par variété) -->
|
||||
<div class="md:col-span-2 bg-bg/40 border border-bg-soft rounded-2xl p-4">
|
||||
<div class="flex items-center gap-2 mb-4">
|
||||
<span class="text-[10px] font-black text-text-muted uppercase tracking-widest">🛒 Boutique / Approvisionnement</span>
|
||||
<span class="text-[9px] text-text-muted/50 italic">spécifique à cette variété</span>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">Enseigne</label>
|
||||
<select v-model="form.boutique_nom" class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm outline-none focus:border-yellow appearance-none">
|
||||
<option value="">— Non renseigné —</option>
|
||||
<option v-for="b in BOUTIQUES" :key="b" :value="b">{{ b }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">Prix (€)</label>
|
||||
<input v-model.number="form.prix_achat" type="number" step="0.01" min="0" placeholder="0.00"
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">Date d'achat</label>
|
||||
<input v-model="form.date_achat" type="date"
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">Poids / Quantité</label>
|
||||
<input v-model="form.poids" placeholder="ex: 5g, 50 graines, 1kg"
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">DLUO</label>
|
||||
<input v-model="form.dluo" type="date"
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-text-muted text-[10px] font-black uppercase tracking-widest block mb-1">URL produit</label>
|
||||
<input v-model="form.boutique_url" type="url" placeholder="https://..."
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Associations (niveau nom commun — s'applique à toutes les variétés) -->
|
||||
<div class="md:col-span-2 bg-bg/40 border border-bg-soft rounded-2xl p-4">
|
||||
<div class="flex items-center justify-between mb-3">
|
||||
<div>
|
||||
<span class="text-[10px] font-black text-text-muted uppercase tracking-widest">Associations</span>
|
||||
<span class="text-[9px] text-text-muted/50 ml-2 italic">s'applique à toutes les variétés</span>
|
||||
</div>
|
||||
<button type="button" @click="showAssocModal = true"
|
||||
class="px-3 py-1 rounded-full text-xs font-bold border border-bg-soft text-text-muted hover:border-yellow hover:text-yellow transition-all">
|
||||
✏️ Modifier
|
||||
</button>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<div class="text-[9px] font-black text-green uppercase tracking-widest mb-1">🤝 Favorables</div>
|
||||
<div class="flex flex-wrap gap-1.5 min-h-[22px]">
|
||||
<span v-if="!form.associations_favorables.length" class="text-[10px] text-text-muted/40 italic">aucune</span>
|
||||
<span v-for="n in form.associations_favorables" :key="n"
|
||||
class="flex items-center gap-1 bg-green/10 border border-green/40 text-green text-[11px] px-2 py-0.5 rounded-full capitalize">
|
||||
{{ n }}
|
||||
<button type="button" @click="askRemoveAssoc('fav', n)" class="hover:text-red leading-none ml-0.5">✕</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-[9px] font-black text-red uppercase tracking-widest mb-1">⚡ À éviter</div>
|
||||
<div class="flex flex-wrap gap-1.5 min-h-[22px]">
|
||||
<span v-if="!form.associations_defavorables.length" class="text-[10px] text-text-muted/40 italic">aucune</span>
|
||||
<span v-for="n in form.associations_defavorables" :key="n"
|
||||
class="flex items-center gap-1 bg-red/10 border border-red/40 text-red text-[11px] px-2 py-0.5 rounded-full capitalize">
|
||||
{{ n }}
|
||||
<button type="button" @click="askRemoveAssoc('def', n)" class="hover:text-red/60 leading-none ml-0.5">✕</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md:col-span-2 flex justify-between items-center pt-6 border-t border-bg-soft mt-4">
|
||||
<button type="button" @click="closeForm" class="btn-outline border-transparent text-text-muted hover:text-red uppercase text-xs font-bold px-6">Annuler</button>
|
||||
<button type="submit" class="btn-primary px-12 py-4 text-base shadow-xl !bg-yellow !text-bg">
|
||||
@@ -224,7 +389,78 @@
|
||||
<button class="absolute top-6 right-6 text-white text-4xl hover:text-yellow">✕</button>
|
||||
</div>
|
||||
|
||||
<!-- Upload Photo Trigger (Invisible) -->
|
||||
<!-- Popup Gestion Associations -->
|
||||
<div v-if="showAssocModal" class="fixed inset-0 bg-black/80 backdrop-blur-sm z-[60] flex items-center justify-center p-4" @click.self="showAssocModal = false">
|
||||
<div class="bg-bg-hard rounded-2xl w-full max-w-lg border border-bg-soft shadow-2xl flex flex-col max-h-[80vh]">
|
||||
<div class="flex items-center justify-between p-4 border-b border-bg-soft">
|
||||
<h3 class="text-text font-black uppercase tracking-tight">
|
||||
Associations — {{ form.nom_commun || 'plante' }}
|
||||
</h3>
|
||||
<button @click="showAssocModal = false" class="text-text-muted hover:text-red text-xl transition-colors">✕</button>
|
||||
</div>
|
||||
<div class="px-4 pt-3 pb-2">
|
||||
<input v-model="assocFilter" placeholder="🔍 Filtrer les plantes..."
|
||||
class="w-full bg-bg border border-bg-soft rounded-xl px-3 py-2 text-text text-sm focus:border-yellow outline-none" />
|
||||
</div>
|
||||
<div class="overflow-y-auto flex-1 px-4 pb-4 space-y-1">
|
||||
<div v-for="name in filteredAssocPlants" :key="name"
|
||||
class="flex items-center justify-between py-2 px-3 rounded-xl hover:bg-bg/40 transition-colors">
|
||||
<span class="text-text text-sm font-medium flex-1 capitalize">{{ name }}</span>
|
||||
<div class="flex gap-1.5">
|
||||
<button type="button"
|
||||
:class="['px-2 py-1 rounded-lg text-[10px] font-black uppercase transition-all border',
|
||||
getAssocState(name) === 'fav'
|
||||
? 'bg-green text-bg border-green'
|
||||
: 'border-green/30 text-green/60 hover:border-green hover:text-green']"
|
||||
@click="setAssocState(name, 'fav')">
|
||||
🤝 Ami
|
||||
</button>
|
||||
<button type="button"
|
||||
:class="['px-2 py-1 rounded-lg text-[10px] font-black uppercase transition-all border',
|
||||
getAssocState(name) === 'def'
|
||||
? 'bg-red text-bg border-red'
|
||||
: 'border-red/30 text-red/60 hover:border-red hover:text-red']"
|
||||
@click="setAssocState(name, 'def')">
|
||||
⚡ Ennemi
|
||||
</button>
|
||||
<button type="button"
|
||||
:class="['px-2 py-1 rounded-lg text-[10px] font-black uppercase transition-all border',
|
||||
getAssocState(name) === null
|
||||
? 'bg-bg-soft text-text-muted border-bg-soft'
|
||||
: 'border-bg-soft/40 text-text-muted/40 hover:border-bg-soft hover:text-text-muted']"
|
||||
@click="setAssocState(name, null)">
|
||||
· Neutre
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!filteredAssocPlants.length" class="text-center py-8 text-text-muted/40 text-xs italic">
|
||||
Aucune plante trouvée
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 border-t border-bg-soft text-center">
|
||||
<button @click="showAssocModal = false"
|
||||
class="px-6 py-2 rounded-xl bg-yellow text-bg font-black text-xs uppercase tracking-widest hover:opacity-90 transition-opacity">
|
||||
Valider
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Confirmation suppression tag -->
|
||||
<div v-if="confirmRemove" class="fixed inset-0 bg-black/60 z-[70] flex items-center justify-center p-4">
|
||||
<div class="bg-bg-hard rounded-2xl p-6 w-full max-w-sm border border-bg-soft shadow-2xl text-center">
|
||||
<p class="text-text mb-1 font-bold">Retirer <span class="text-yellow capitalize">{{ confirmRemove.name }}</span> ?</p>
|
||||
<p class="text-text-muted text-xs mb-5">
|
||||
{{ confirmRemove.type === 'fav' ? 'Retirer des associations favorables' : 'Retirer des associations défavorables' }}
|
||||
</p>
|
||||
<div class="flex gap-3 justify-center">
|
||||
<button @click="confirmRemove = null" class="px-4 py-2 rounded-xl border border-bg-soft text-text-muted text-xs font-bold hover:text-text transition-colors">Annuler</button>
|
||||
<button @click="confirmRemoveAssoc" class="px-4 py-2 rounded-xl bg-red text-bg text-xs font-black uppercase hover:opacity-90 transition-opacity">Retirer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Upload Photo -->
|
||||
<input type="file" ref="fileInput" accept="image/*" class="hidden" @change="handleFileUpload" />
|
||||
</div>
|
||||
</template>
|
||||
@@ -234,7 +470,6 @@ import { computed, onMounted, reactive, ref } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { usePlantsStore } from '@/stores/plants'
|
||||
import type { Plant } from '@/api/plants'
|
||||
import { formatPlantLabel } from '@/utils/plants'
|
||||
import { useToast } from '@/composables/useToast'
|
||||
|
||||
const plantsStore = usePlantsStore()
|
||||
@@ -242,7 +477,6 @@ const toast = useToast()
|
||||
const showForm = ref(false)
|
||||
const submitting = ref(false)
|
||||
const editPlant = ref<Plant | null>(null)
|
||||
const detailPlant = ref<Plant | null>(null)
|
||||
const selectedCat = ref('')
|
||||
const searchQuery = ref('')
|
||||
const plantPhotos = ref<Media[]>([])
|
||||
@@ -251,6 +485,17 @@ const lightbox = ref<Media | null>(null)
|
||||
const fileInput = ref<HTMLInputElement | null>(null)
|
||||
const uploadTarget = ref<Plant | null>(null)
|
||||
|
||||
// Navigation variétés
|
||||
const detailVarieties = ref<Plant[]>([])
|
||||
const detailVarietyIdx = ref(0)
|
||||
const detailPlant = computed(() => detailVarieties.value[detailVarietyIdx.value] ?? null)
|
||||
|
||||
// Associations au niveau nom_commun (première variété ayant des données)
|
||||
const detailAssociations = computed(() =>
|
||||
detailVarieties.value.find(v => v.associations_favorables?.length || v.associations_defavorables?.length)
|
||||
?? detailPlant.value
|
||||
)
|
||||
|
||||
interface Media {
|
||||
id: number; entity_type: string; entity_id: number
|
||||
url: string; thumbnail_url?: string; titre?: string
|
||||
@@ -265,25 +510,118 @@ const categories = [
|
||||
{ val: 'adventice', label: '🌾 ADVENTICES' },
|
||||
]
|
||||
|
||||
const BOUTIQUES = [
|
||||
'Gamm Vert', 'Lidl', 'Super U', 'Intermarché', 'Truffaut', 'Botanic',
|
||||
'Amazon', 'Graines Baumaux', 'Vilmorin', 'Germinance', 'Direct producteur',
|
||||
'Marché local', 'Autre',
|
||||
]
|
||||
|
||||
const form = reactive({
|
||||
nom_commun: '', variete: '', famille: '',
|
||||
categorie: 'potager', besoin_eau: 'moyen', besoin_soleil: 'plein soleil',
|
||||
plantation_mois: '', notes: '',
|
||||
associations_favorables: [] as string[],
|
||||
associations_defavorables: [] as string[],
|
||||
boutique_nom: '', boutique_url: '', prix_achat: null as number | null,
|
||||
date_achat: '', poids: '', dluo: '',
|
||||
})
|
||||
|
||||
const showAssocModal = ref(false)
|
||||
const assocFilter = ref('')
|
||||
const confirmRemove = ref<{ type: 'fav' | 'def'; name: string } | null>(null)
|
||||
|
||||
// Grouper toutes les plantes par nom_commun (insensible à la casse)
|
||||
const plantGroups = computed(() => {
|
||||
const groups = new Map<string, Plant[]>()
|
||||
for (const p of plantsStore.plants) {
|
||||
const key = (p.nom_commun || '').toLowerCase()
|
||||
if (!groups.has(key)) groups.set(key, [])
|
||||
groups.get(key)!.push(p)
|
||||
}
|
||||
return groups
|
||||
})
|
||||
|
||||
function groupSize(nom: string): number {
|
||||
return plantGroups.value.get(nom.toLowerCase())?.length ?? 1
|
||||
}
|
||||
|
||||
function groupPrimaryCategory(nom: string): string {
|
||||
const group = plantGroups.value.get(nom.toLowerCase()) || []
|
||||
return group[0]?.categorie || ''
|
||||
}
|
||||
|
||||
// Une carte par nom_commun unique dans la liste
|
||||
const filteredPlants = computed(() => {
|
||||
let source = plantsStore.plants
|
||||
if (selectedCat.value) source = source.filter(p => p.categorie === selectedCat.value)
|
||||
const uniqueByName = new Map<string, Plant>()
|
||||
for (const p of [...plantsStore.plants].sort((a, b) => (a.id || 0) - (b.id || 0))) {
|
||||
const key = (p.nom_commun || '').toLowerCase()
|
||||
if (!uniqueByName.has(key)) uniqueByName.set(key, p)
|
||||
}
|
||||
|
||||
let result = [...uniqueByName.values()]
|
||||
|
||||
if (selectedCat.value) {
|
||||
result = result.filter(p => {
|
||||
const group = plantGroups.value.get((p.nom_commun || '').toLowerCase()) || []
|
||||
return group.some(v => v.categorie === selectedCat.value)
|
||||
})
|
||||
}
|
||||
|
||||
if (searchQuery.value) {
|
||||
const q = searchQuery.value.toLowerCase()
|
||||
source = source.filter(p =>
|
||||
p.nom_commun?.toLowerCase().includes(q) ||
|
||||
p.variete?.toLowerCase().includes(q)
|
||||
)
|
||||
result = result.filter(p => {
|
||||
const group = plantGroups.value.get((p.nom_commun || '').toLowerCase()) || []
|
||||
return group.some(v =>
|
||||
v.nom_commun?.toLowerCase().includes(q) || v.variete?.toLowerCase().includes(q)
|
||||
)
|
||||
})
|
||||
}
|
||||
return [...source].sort((a, b) => (a.nom_commun || '').localeCompare(b.nom_commun || '', 'fr'))
|
||||
|
||||
return result.sort((a, b) => (a.nom_commun || '').localeCompare(b.nom_commun || '', 'fr'))
|
||||
})
|
||||
|
||||
// Plantes disponibles pour les associations (nom_commun uniques, hors plante courante)
|
||||
const filteredAssocPlants = computed(() => {
|
||||
const q = assocFilter.value.toLowerCase()
|
||||
const uniqueNames = [...plantGroups.value.keys()]
|
||||
return uniqueNames
|
||||
.filter(n => n !== form.nom_commun.toLowerCase() && (!q || n.includes(q)))
|
||||
.sort()
|
||||
})
|
||||
|
||||
function getAssocState(name: string): 'fav' | 'def' | null {
|
||||
const lower = name.toLowerCase()
|
||||
if (form.associations_favorables.some(n => n.toLowerCase() === lower)) return 'fav'
|
||||
if (form.associations_defavorables.some(n => n.toLowerCase() === lower)) return 'def'
|
||||
return null
|
||||
}
|
||||
|
||||
function setAssocState(name: string, state: 'fav' | 'def' | null) {
|
||||
const lower = name.toLowerCase()
|
||||
form.associations_favorables = form.associations_favorables.filter(n => n.toLowerCase() !== lower)
|
||||
form.associations_defavorables = form.associations_defavorables.filter(n => n.toLowerCase() !== lower)
|
||||
if (state === 'fav') form.associations_favorables.push(lower)
|
||||
else if (state === 'def') form.associations_defavorables.push(lower)
|
||||
}
|
||||
|
||||
function askRemoveAssoc(type: 'fav' | 'def', name: string) {
|
||||
confirmRemove.value = { type, name }
|
||||
}
|
||||
|
||||
function confirmRemoveAssoc() {
|
||||
if (!confirmRemove.value) return
|
||||
const { type, name } = confirmRemove.value
|
||||
const list = type === 'fav' ? form.associations_favorables : form.associations_defavorables
|
||||
const lower = name.toLowerCase()
|
||||
const idx = list.findIndex(n => n.toLowerCase() === lower)
|
||||
if (idx !== -1) list.splice(idx, 1)
|
||||
confirmRemove.value = null
|
||||
}
|
||||
|
||||
function isDluoExpired(dluo: string): boolean {
|
||||
return !!dluo && new Date(dluo) < new Date()
|
||||
}
|
||||
|
||||
function getCatColor(cat: string) {
|
||||
return ({
|
||||
potager: '#b8bb26', fleur: '#fabd2f', arbre: '#83a598',
|
||||
@@ -298,9 +636,32 @@ function catTextClass(cat: string) {
|
||||
} as any)[cat] || 'text-text-muted'
|
||||
}
|
||||
|
||||
function closeDetail() {
|
||||
detailVarieties.value = []
|
||||
detailVarietyIdx.value = 0
|
||||
plantPhotos.value = []
|
||||
}
|
||||
|
||||
async function openDetails(p: Plant) {
|
||||
detailPlant.value = p
|
||||
await fetchPhotos(p.id!)
|
||||
const key = (p.nom_commun || '').toLowerCase()
|
||||
const group = plantGroups.value.get(key) || [p]
|
||||
detailVarieties.value = [...group].sort((a, b) => (a.id || 0) - (b.id || 0))
|
||||
detailVarietyIdx.value = 0
|
||||
await fetchPhotos(detailVarieties.value[0].id!)
|
||||
}
|
||||
|
||||
async function prevVariety() {
|
||||
if (detailVarietyIdx.value > 0) {
|
||||
detailVarietyIdx.value--
|
||||
await fetchPhotos(detailPlant.value!.id!)
|
||||
}
|
||||
}
|
||||
|
||||
async function nextVariety() {
|
||||
if (detailVarietyIdx.value < detailVarieties.value.length - 1) {
|
||||
detailVarietyIdx.value++
|
||||
await fetchPhotos(detailPlant.value!.id!)
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchPhotos(plantId: number) {
|
||||
@@ -316,31 +677,64 @@ async function fetchPhotos(plantId: number) {
|
||||
}
|
||||
|
||||
function startEdit(p: Plant) {
|
||||
detailPlant.value = null
|
||||
// Chercher les associations dans le groupe (première variété qui en a)
|
||||
const key = (p.nom_commun || '').toLowerCase()
|
||||
const group = plantGroups.value.get(key) || [p]
|
||||
const withAssoc = group.find(v => v.associations_favorables?.length || v.associations_defavorables?.length) ?? p
|
||||
|
||||
closeDetail()
|
||||
editPlant.value = p
|
||||
Object.assign(form, {
|
||||
nom_commun: p.nom_commun || '', variete: p.variete || '', famille: p.famille || '',
|
||||
categorie: p.categorie || 'potager', besoin_eau: p.besoin_eau || 'moyen', besoin_soleil: p.besoin_soleil || 'plein soleil',
|
||||
plantation_mois: p.plantation_mois || '', notes: p.notes || '',
|
||||
associations_favorables: [...(withAssoc.associations_favorables ?? [])],
|
||||
associations_defavorables: [...(withAssoc.associations_defavorables ?? [])],
|
||||
boutique_nom: p.boutique_nom || '', boutique_url: p.boutique_url || '',
|
||||
prix_achat: p.prix_achat ?? null, date_achat: p.date_achat || '',
|
||||
poids: p.poids || '', dluo: p.dluo || '',
|
||||
})
|
||||
assocFilter.value = ''
|
||||
showAssocModal.value = false
|
||||
showForm.value = true
|
||||
}
|
||||
|
||||
function closeForm() {
|
||||
showForm.value = false
|
||||
editPlant.value = null
|
||||
showAssocModal.value = false
|
||||
assocFilter.value = ''
|
||||
confirmRemove.value = null
|
||||
Object.assign(form, {
|
||||
boutique_nom: '', boutique_url: '', prix_achat: null,
|
||||
date_achat: '', poids: '', dluo: '',
|
||||
})
|
||||
}
|
||||
|
||||
async function submitPlant() {
|
||||
if (submitting.value) return
|
||||
submitting.value = true
|
||||
try {
|
||||
const payload = { ...form, prix_achat: form.prix_achat ?? undefined }
|
||||
if (editPlant.value) {
|
||||
await axios.put(`/api/plants/${editPlant.value.id}`, { ...form })
|
||||
await axios.put(`/api/plants/${editPlant.value.id}`, payload)
|
||||
|
||||
// Synchroniser les associations à toutes les variétés du même nom commun
|
||||
const nomKey = form.nom_commun.toLowerCase()
|
||||
const siblings = plantsStore.plants.filter(
|
||||
p => p.id !== editPlant.value!.id && (p.nom_commun || '').toLowerCase() === nomKey
|
||||
)
|
||||
for (const sibling of siblings) {
|
||||
await axios.put(`/api/plants/${sibling.id}`, {
|
||||
associations_favorables: form.associations_favorables,
|
||||
associations_defavorables: form.associations_defavorables,
|
||||
})
|
||||
}
|
||||
|
||||
await plantsStore.fetchAll()
|
||||
toast.success('Plante modifiée')
|
||||
} else {
|
||||
await plantsStore.create({ ...form })
|
||||
await plantsStore.create(payload)
|
||||
toast.success('Plante créée')
|
||||
}
|
||||
closeForm()
|
||||
@@ -355,7 +749,7 @@ async function removePlant(id: number) {
|
||||
if (!confirm('Supprimer définitivement cette plante ?')) return
|
||||
try {
|
||||
await plantsStore.remove(id)
|
||||
detailPlant.value = null
|
||||
closeDetail()
|
||||
toast.success('Plante supprimée')
|
||||
} catch {
|
||||
// L'intercepteur Axios affiche le message
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -12,10 +12,12 @@ const backupMsg = ref('');
|
||||
const apiBaseUrl = detectApiBaseUrl();
|
||||
// --- UI Size settings ---
|
||||
const uiSizeSettings = [
|
||||
{ key: 'ui_font_size', label: 'Taille texte', min: 12, max: 20, step: 1, unit: 'px' },
|
||||
{ key: 'ui_menu_font_size', label: 'Texte menu latéral', min: 11, max: 18, step: 1, unit: 'px' },
|
||||
{ key: 'ui_menu_icon_size', label: 'Icônes menu', min: 14, max: 28, step: 1, unit: 'px' },
|
||||
{ key: 'ui_thumb_size', label: 'Miniatures images/vidéo', min: 60, max: 200, step: 4, unit: 'px' },
|
||||
{ key: 'ui_font_size', label: 'Corps de texte', min: 12, max: 24, step: 1, unit: 'px' },
|
||||
{ key: 'ui_menu_font_size', label: 'Texte menu latéral', min: 11, max: 20, step: 1, unit: 'px' },
|
||||
{ key: 'ui_menu_icon_size', label: 'Icônes menu', min: 14, max: 32, step: 1, unit: 'px' },
|
||||
{ key: 'ui_thumb_size', label: 'Miniatures médias', min: 60, max: 300, step: 4, unit: 'px' },
|
||||
{ key: 'ui_weather_icon_size', label: 'Icônes Météo', min: 32, max: 128, step: 4, unit: 'px' },
|
||||
{ key: 'ui_dashboard_icon_size', label: 'Icônes Dashboard', min: 16, max: 64, step: 2, unit: 'px' },
|
||||
];
|
||||
const uiSizes = ref({ ...UI_SIZE_DEFAULTS });
|
||||
const savingUi = ref(false);
|
||||
@@ -67,15 +69,9 @@ function openInNewTab(path) {
|
||||
const url = `${apiBaseUrl}${path}`;
|
||||
window.open(url, '_blank', 'noopener,noreferrer');
|
||||
}
|
||||
function openApiDocs() {
|
||||
openInNewTab('/docs');
|
||||
}
|
||||
function openApiRedoc() {
|
||||
openInNewTab('/redoc');
|
||||
}
|
||||
function openApiHealth() {
|
||||
openInNewTab('/api/health');
|
||||
}
|
||||
function openApiDocs() { openInNewTab('/docs'); }
|
||||
function openApiRedoc() { openInNewTab('/redoc'); }
|
||||
function openApiHealth() { openInNewTab('/api/health'); }
|
||||
function toBool(value) {
|
||||
if (typeof value === 'boolean')
|
||||
return value;
|
||||
@@ -99,7 +95,7 @@ async function loadSettings() {
|
||||
applyUiSizes();
|
||||
}
|
||||
catch {
|
||||
// Laisse la valeur locale si l'API n'est pas disponible.
|
||||
// Laisse la valeur locale
|
||||
}
|
||||
}
|
||||
async function saveSettings() {
|
||||
@@ -108,7 +104,7 @@ async function saveSettings() {
|
||||
try {
|
||||
await settingsApi.update({ debug_mode: debugMode.value ? '1' : '0' });
|
||||
notifyDebugChanged(debugMode.value);
|
||||
savedMsg.value = 'Enregistré';
|
||||
savedMsg.value = 'Pris en compte';
|
||||
window.setTimeout(() => { savedMsg.value = ''; }, 1800);
|
||||
}
|
||||
finally {
|
||||
@@ -137,10 +133,10 @@ async function downloadBackup() {
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
window.URL.revokeObjectURL(url);
|
||||
backupMsg.value = 'Téléchargement lancé.';
|
||||
backupMsg.value = 'ZIP prêt !';
|
||||
}
|
||||
catch {
|
||||
backupMsg.value = 'Erreur lors de la sauvegarde.';
|
||||
backupMsg.value = 'Erreur export.';
|
||||
}
|
||||
finally {
|
||||
downloadingBackup.value = false;
|
||||
@@ -155,342 +151,622 @@ const __VLS_ctx = {};
|
||||
let __VLS_components;
|
||||
let __VLS_directives;
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "p-4 max-w-3xl mx-auto" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-2xl font-bold text-green mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "bg-bg-soft border border-bg-hard rounded-xl p-4 mb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-semibold mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm mb-4" },
|
||||
...{ class: "p-4 max-w-[1800px] mx-auto space-y-8" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-1 gap-4" },
|
||||
...{ class: "flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||
...{ class: "text-3xl font-bold text-green tracking-tight" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "card-jardin flex flex-col h-full border-green/20" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mb-6 border-b border-bg-hard pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-bold uppercase tracking-widest text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-[10px] text-text-muted font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1 space-y-6" },
|
||||
});
|
||||
for (const [s] of __VLS_getVForSourceType((__VLS_ctx.uiSizeSettings))) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
key: (s.key),
|
||||
...{ class: "flex items-center gap-3" },
|
||||
...{ class: "space-y-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex justify-between items-center" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "text-sm text-text w-44 shrink-0" },
|
||||
...{ class: "text-[10px] font-black uppercase tracking-widest text-text-muted" },
|
||||
});
|
||||
(s.label);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs font-mono text-green" },
|
||||
});
|
||||
(__VLS_ctx.uiSizes[s.key]);
|
||||
(s.unit);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
...{ onInput: (__VLS_ctx.applyUiSizes) },
|
||||
type: "range",
|
||||
min: (s.min),
|
||||
max: (s.max),
|
||||
step: (s.step),
|
||||
...{ class: "flex-1 accent-green" },
|
||||
...{ class: "w-full h-1.5 bg-bg-hard rounded-lg appearance-none cursor-pointer accent-green" },
|
||||
});
|
||||
(__VLS_ctx.uiSizes[s.key]);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text-muted text-xs w-12 text-right" },
|
||||
});
|
||||
(__VLS_ctx.uiSizes[s.key]);
|
||||
(s.unit);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-4 flex items-center gap-2" },
|
||||
...{ class: "mt-8 pt-4 border-t border-bg-hard flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.saveUiSettings) },
|
||||
...{ class: "bg-green text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
disabled: (__VLS_ctx.savingUi),
|
||||
});
|
||||
(__VLS_ctx.savingUi ? 'Enregistrement...' : 'Enregistrer');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.resetUiSettings) },
|
||||
...{ class: "text-text-muted text-xs hover:text-text px-2" },
|
||||
...{ class: "text-[10px] font-black uppercase tracking-widest text-text-muted hover:text-text transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3" },
|
||||
});
|
||||
if (__VLS_ctx.uiSavedMsg) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs text-aqua" },
|
||||
...{ class: "text-[10px] font-bold text-aqua animate-pulse" },
|
||||
});
|
||||
(__VLS_ctx.uiSavedMsg);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "bg-bg-soft border border-bg-hard rounded-xl p-4 mb-4" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.saveUiSettings) },
|
||||
...{ class: "btn-primary !py-2 !px-6 text-xs" },
|
||||
disabled: (__VLS_ctx.savingUi),
|
||||
});
|
||||
(__VLS_ctx.savingUi ? '...' : 'Enregistrer');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "card-jardin flex flex-col h-full border-yellow/20" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mb-6 border-b border-bg-hard pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-semibold mb-2" },
|
||||
...{ class: "text-text font-bold uppercase tracking-widest text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm mb-3" },
|
||||
...{ class: "text-[10px] text-text-muted font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1 space-y-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
||||
...{ class: "inline-flex items-center gap-2 text-sm text-text" },
|
||||
...{ class: "flex items-start gap-4 cursor-pointer group bg-bg-hard/30 p-4 rounded-2xl border border-bg-soft/50 hover:border-yellow/30 transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "relative mt-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
||||
type: "checkbox",
|
||||
...{ class: "accent-green" },
|
||||
...{ class: "sr-only peer" },
|
||||
});
|
||||
(__VLS_ctx.debugMode);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-3 flex items-center gap-2" },
|
||||
...{ class: "w-10 h-5 bg-bg-hard rounded-full peer peer-checked:bg-yellow transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.saveSettings) },
|
||||
...{ class: "bg-green text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
disabled: (__VLS_ctx.saving),
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "absolute left-1 top-1 w-3 h-3 bg-text-muted peer-checked:bg-bg peer-checked:translate-x-5 rounded-full transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-sm font-bold text-text group-hover:text-yellow transition-colors" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-[10px] text-text-muted mt-1 leading-relaxed italic" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-8 pt-4 border-t border-bg-hard flex items-center justify-end gap-3" },
|
||||
});
|
||||
(__VLS_ctx.saving ? 'Enregistrement...' : 'Enregistrer');
|
||||
if (__VLS_ctx.savedMsg) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs text-aqua" },
|
||||
...{ class: "text-[10px] font-bold text-aqua" },
|
||||
});
|
||||
(__VLS_ctx.savedMsg);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "bg-bg-soft border border-bg-hard rounded-xl p-4 mb-4" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.saveSettings) },
|
||||
...{ class: "btn-primary !bg-yellow !text-bg !py-2 !px-6 text-xs" },
|
||||
disabled: (__VLS_ctx.saving),
|
||||
});
|
||||
(__VLS_ctx.saving ? '...' : 'Appliquer');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "card-jardin flex flex-col h-full border-blue/20" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mb-6 border-b border-bg-hard pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-semibold mb-2" },
|
||||
...{ class: "text-text font-bold uppercase tracking-widest text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm mb-3" },
|
||||
...{ class: "text-[10px] text-text-muted font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex-1" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-xs text-text-muted leading-relaxed mb-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.refreshMeteo) },
|
||||
...{ class: "bg-blue text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
...{ class: "btn-outline w-full py-4 border-blue/20 text-blue hover:bg-blue/10 flex flex-col items-center gap-2" },
|
||||
disabled: (__VLS_ctx.refreshingMeteo),
|
||||
});
|
||||
(__VLS_ctx.refreshingMeteo ? 'Rafraîchissement...' : 'Rafraîchir maintenant');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-lg" },
|
||||
});
|
||||
(__VLS_ctx.refreshingMeteo ? '🔄' : '⚡');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] font-black uppercase tracking-widest" },
|
||||
});
|
||||
(__VLS_ctx.refreshingMeteo ? 'Rafraîchissement en cours...' : 'Forcer la mise à jour');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "bg-bg-soft border border-bg-hard rounded-xl p-4 mb-4" },
|
||||
...{ class: "card-jardin flex flex-col h-full border-aqua/20" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-semibold mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm mb-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-xs mb-3" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mb-6 border-b border-bg-hard pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-text" },
|
||||
});
|
||||
(__VLS_ctx.apiBaseUrl);
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex flex-wrap items-center gap-2" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiDocs) },
|
||||
...{ class: "bg-blue text-bg px-3 py-2 rounded-lg text-xs font-semibold hover:opacity-90" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiRedoc) },
|
||||
...{ class: "bg-aqua text-bg px-3 py-2 rounded-lg text-xs font-semibold hover:opacity-90" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiHealth) },
|
||||
...{ class: "bg-bg border border-bg-hard text-text px-3 py-2 rounded-lg text-xs font-semibold hover:border-text-muted" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "bg-bg-soft border border-bg-hard rounded-xl p-4" },
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-semibold mb-2" },
|
||||
...{ class: "text-text font-bold uppercase tracking-widest text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-text-muted text-sm mb-3" },
|
||||
...{ class: "text-[10px] text-text-muted font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-2" },
|
||||
...{ class: "flex-1 space-y-6" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-xs text-text-muted leading-relaxed" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.downloadBackup) },
|
||||
...{ class: "bg-aqua text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
||||
...{ class: "btn-primary !bg-aqua !text-bg w-full py-4 flex flex-col items-center gap-2 shadow-lg hover:shadow-aqua/20" },
|
||||
disabled: (__VLS_ctx.downloadingBackup),
|
||||
});
|
||||
(__VLS_ctx.downloadingBackup ? 'Préparation du ZIP...' : 'Télécharger la sauvegarde (.zip)');
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] font-black uppercase tracking-widest" },
|
||||
});
|
||||
(__VLS_ctx.downloadingBackup ? 'Préparation...' : 'Télécharger le Pack Complet');
|
||||
if (__VLS_ctx.backupMsg) {
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs text-aqua" },
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "text-[10px] text-center font-bold text-aqua animate-bounce" },
|
||||
});
|
||||
(__VLS_ctx.backupMsg);
|
||||
}
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.section, __VLS_intrinsicElements.section)({
|
||||
...{ class: "card-jardin xl:col-span-2 flex flex-col border-bg-soft/50" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "flex items-center gap-3 mb-6 border-b border-bg-hard pb-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-2xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
||||
...{ class: "text-text font-bold uppercase tracking-widest text-xs" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.p, __VLS_intrinsicElements.p)({
|
||||
...{ class: "text-[10px] text-text-muted font-bold" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "grid grid-cols-1 sm:grid-cols-3 gap-4" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiDocs) },
|
||||
...{ class: "btn-outline flex flex-col items-center gap-2 py-6 border-bg-soft hover:bg-bg-hard transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] font-bold uppercase" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiRedoc) },
|
||||
...{ class: "btn-outline flex flex-col items-center gap-2 py-6 border-bg-soft hover:bg-bg-hard transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] font-bold uppercase" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||
...{ onClick: (__VLS_ctx.openApiHealth) },
|
||||
...{ class: "btn-outline flex flex-col items-center gap-2 py-6 border-bg-soft hover:bg-bg-hard transition-all" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xl" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[10px] font-bold uppercase" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||
...{ class: "mt-6 p-3 bg-bg-hard/50 rounded-xl border border-bg-soft/30 flex items-center justify-between" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-[9px] font-bold text-text-muted uppercase tracking-widest" },
|
||||
});
|
||||
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||
...{ class: "text-xs font-mono text-aqua" },
|
||||
});
|
||||
(__VLS_ctx.apiBaseUrl);
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['max-w-[1800px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-3xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-tight']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['md:grid-cols-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['xl:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['2xl:grid-cols-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-green/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-44']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['accent-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-12']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-right']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-mono']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-1.5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['appearance-none']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['accent-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['inline-flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['accent-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-pulse']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!px-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-yellow/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-start']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-yellow/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sr-only']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['peer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['peer']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['peer-checked:bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['left-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['top-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['peer-checked:bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['peer-checked:translate-x-5']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['group-hover:text-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-relaxed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['italic']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-8']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pt-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-t']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-end']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!bg-yellow']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!px-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-wrap']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:border-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-blue/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-relaxed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-blue/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-blue/10']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-aqua/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['space-y-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['leading-relaxed']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!bg-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['!text-bg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['shadow-lg']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:shadow-aqua/20']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-black']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['animate-bounce']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card-jardin']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['xl:col-span-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['grid-cols-1']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['sm:grid-cols-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-outline']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['py-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['hover:bg-bg-hard']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['transition-all']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[10px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['mt-6']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['bg-bg-hard/50']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['rounded-xl']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['border-bg-soft/30']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-[9px]']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['font-mono']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['text-aqua']} */ ;
|
||||
var __VLS_dollars;
|
||||
const __VLS_self = (await import('vue')).defineComponent({
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user