feat(frontend): layout header + drawer + router (9 routes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+11
-1
@@ -1,6 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<RouterView />
|
<AppHeader @toggle-drawer="drawerOpen = !drawerOpen" />
|
||||||
|
<AppDrawer :open="drawerOpen" @close="drawerOpen = false" />
|
||||||
|
<main class="pt-14 min-h-screen">
|
||||||
|
<RouterView />
|
||||||
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { ref } from 'vue'
|
||||||
import { RouterView } from 'vue-router'
|
import { RouterView } from 'vue-router'
|
||||||
|
import AppHeader from '@/components/AppHeader.vue'
|
||||||
|
import AppDrawer from '@/components/AppDrawer.vue'
|
||||||
|
|
||||||
|
const drawerOpen = ref(false)
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
/// <reference types="../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { RouterView } from 'vue-router';
|
||||||
|
import AppHeader from '@/components/AppHeader.vue';
|
||||||
|
import AppDrawer from '@/components/AppDrawer.vue';
|
||||||
|
const drawerOpen = ref(false);
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
/** @type {[typeof AppHeader, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_0 = __VLS_asFunctionalComponent(AppHeader, new AppHeader({
|
||||||
|
...{ 'onToggleDrawer': {} },
|
||||||
|
}));
|
||||||
|
const __VLS_1 = __VLS_0({
|
||||||
|
...{ 'onToggleDrawer': {} },
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_0));
|
||||||
|
let __VLS_3;
|
||||||
|
let __VLS_4;
|
||||||
|
let __VLS_5;
|
||||||
|
const __VLS_6 = {
|
||||||
|
onToggleDrawer: (...[$event]) => {
|
||||||
|
__VLS_ctx.drawerOpen = !__VLS_ctx.drawerOpen;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var __VLS_2;
|
||||||
|
/** @type {[typeof AppDrawer, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_7 = __VLS_asFunctionalComponent(AppDrawer, new AppDrawer({
|
||||||
|
...{ 'onClose': {} },
|
||||||
|
open: (__VLS_ctx.drawerOpen),
|
||||||
|
}));
|
||||||
|
const __VLS_8 = __VLS_7({
|
||||||
|
...{ 'onClose': {} },
|
||||||
|
open: (__VLS_ctx.drawerOpen),
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_7));
|
||||||
|
let __VLS_10;
|
||||||
|
let __VLS_11;
|
||||||
|
let __VLS_12;
|
||||||
|
const __VLS_13 = {
|
||||||
|
onClose: (...[$event]) => {
|
||||||
|
__VLS_ctx.drawerOpen = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var __VLS_9;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.main, __VLS_intrinsicElements.main)({
|
||||||
|
...{ class: "pt-14 min-h-screen" },
|
||||||
|
});
|
||||||
|
const __VLS_14 = {}.RouterView;
|
||||||
|
/** @type {[typeof __VLS_components.RouterView, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_15 = __VLS_asFunctionalComponent(__VLS_14, new __VLS_14({}));
|
||||||
|
const __VLS_16 = __VLS_15({}, ...__VLS_functionalComponentArgsRest(__VLS_15));
|
||||||
|
/** @type {__VLS_StyleScopedClasses['pt-14']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['min-h-screen']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
RouterView: RouterView,
|
||||||
|
AppHeader: AppHeader,
|
||||||
|
AppDrawer: AppDrawer,
|
||||||
|
drawerOpen: drawerOpen,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import axios from 'axios';
|
||||||
|
export default axios.create({
|
||||||
|
baseURL: import.meta.env.VITE_API_URL ?? '',
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import client from './client';
|
||||||
|
export const gardensApi = {
|
||||||
|
list: () => client.get('/api/gardens').then(r => r.data),
|
||||||
|
get: (id) => client.get(`/api/gardens/${id}`).then(r => r.data),
|
||||||
|
create: (g) => client.post('/api/gardens', g).then(r => r.data),
|
||||||
|
update: (id, g) => client.put(`/api/gardens/${id}`, g).then(r => r.data),
|
||||||
|
delete: (id) => client.delete(`/api/gardens/${id}`),
|
||||||
|
cells: (id) => client.get(`/api/gardens/${id}/cells`).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),
|
||||||
|
};
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import client from './client';
|
||||||
|
export const plantingsApi = {
|
||||||
|
list: () => client.get('/api/plantings').then(r => r.data),
|
||||||
|
get: (id) => client.get(`/api/plantings/${id}`).then(r => r.data),
|
||||||
|
create: (p) => client.post('/api/plantings', p).then(r => r.data),
|
||||||
|
update: (id, p) => client.put(`/api/plantings/${id}`, p).then(r => r.data),
|
||||||
|
delete: (id) => client.delete(`/api/plantings/${id}`),
|
||||||
|
events: (id) => client.get(`/api/plantings/${id}/events`).then(r => r.data),
|
||||||
|
addEvent: (id, e) => client.post(`/api/plantings/${id}/events`, e).then(r => r.data),
|
||||||
|
};
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import client from './client';
|
||||||
|
export const tasksApi = {
|
||||||
|
list: (params) => client.get('/api/tasks', { params }).then(r => r.data),
|
||||||
|
get: (id) => client.get(`/api/tasks/${id}`).then(r => r.data),
|
||||||
|
create: (t) => client.post('/api/tasks', t).then(r => r.data),
|
||||||
|
update: (id, t) => client.put(`/api/tasks/${id}`, t).then(r => r.data),
|
||||||
|
delete: (id) => client.delete(`/api/tasks/${id}`),
|
||||||
|
};
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import client from './client';
|
||||||
|
export const varietiesApi = {
|
||||||
|
list: () => client.get('/api/varieties').then(r => r.data),
|
||||||
|
get: (id) => client.get(`/api/varieties/${id}`).then(r => r.data),
|
||||||
|
create: (v) => client.post('/api/varieties', v).then(r => r.data),
|
||||||
|
update: (id, v) => client.put(`/api/varieties/${id}`, v).then(r => r.data),
|
||||||
|
delete: (id) => client.delete(`/api/varieties/${id}`),
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<template>
|
||||||
|
<Transition name="slide">
|
||||||
|
<div v-if="open" class="fixed inset-0 z-40 flex md:hidden" @click.self="$emit('close')">
|
||||||
|
<nav class="bg-bg-hard w-64 h-full p-6 flex flex-col gap-1 border-r border-bg-soft shadow-2xl">
|
||||||
|
<span class="text-green font-bold text-xl mb-6">🌿 Jardin</span>
|
||||||
|
<RouterLink
|
||||||
|
v-for="l in links" :key="l.to" :to="l.to"
|
||||||
|
class="text-text-muted hover:text-text py-2 px-3 rounded-lg text-sm transition-colors"
|
||||||
|
active-class="bg-bg-soft text-green"
|
||||||
|
@click="$emit('close')"
|
||||||
|
>{{ l.label }}</RouterLink>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</Transition>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { RouterLink } from 'vue-router'
|
||||||
|
defineProps<{ open: boolean }>()
|
||||||
|
defineEmits(['close'])
|
||||||
|
const links = [
|
||||||
|
{ to: '/', label: 'Dashboard' },
|
||||||
|
{ to: '/jardins', label: 'Jardins' },
|
||||||
|
{ to: '/varietes', label: 'Variétés' },
|
||||||
|
{ to: '/plantations', label: 'Plantations' },
|
||||||
|
{ to: '/taches', label: 'Tâches' },
|
||||||
|
{ to: '/planning', label: 'Planning' },
|
||||||
|
{ to: '/lunaire', label: 'Calendrier lunaire' },
|
||||||
|
{ to: '/reglages', label: 'Réglages' },
|
||||||
|
]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.slide-enter-active, .slide-leave-active { transition: opacity 0.2s; }
|
||||||
|
.slide-enter-from, .slide-leave-to { opacity: 0; }
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
import { RouterLink } from 'vue-router';
|
||||||
|
const __VLS_props = defineProps();
|
||||||
|
const __VLS_emit = defineEmits(['close']);
|
||||||
|
const links = [
|
||||||
|
{ to: '/', label: 'Dashboard' },
|
||||||
|
{ to: '/jardins', label: 'Jardins' },
|
||||||
|
{ to: '/varietes', label: 'Variétés' },
|
||||||
|
{ to: '/plantations', label: 'Plantations' },
|
||||||
|
{ to: '/taches', label: 'Tâches' },
|
||||||
|
{ to: '/planning', label: 'Planning' },
|
||||||
|
{ to: '/lunaire', label: 'Calendrier lunaire' },
|
||||||
|
{ to: '/reglages', label: 'Réglages' },
|
||||||
|
];
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
// CSS variable injection
|
||||||
|
// CSS variable injection end
|
||||||
|
const __VLS_0 = {}.Transition;
|
||||||
|
/** @type {[typeof __VLS_components.Transition, typeof __VLS_components.Transition, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_1 = __VLS_asFunctionalComponent(__VLS_0, new __VLS_0({
|
||||||
|
name: "slide",
|
||||||
|
}));
|
||||||
|
const __VLS_2 = __VLS_1({
|
||||||
|
name: "slide",
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_1));
|
||||||
|
__VLS_3.slots.default;
|
||||||
|
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-40 flex md:hidden" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.nav, __VLS_intrinsicElements.nav)({
|
||||||
|
...{ class: "bg-bg-hard w-64 h-full p-6 flex flex-col gap-1 border-r border-bg-soft shadow-2xl" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
||||||
|
...{ class: "text-green font-bold text-xl mb-6" },
|
||||||
|
});
|
||||||
|
for (const [l] of __VLS_getVForSourceType((__VLS_ctx.links))) {
|
||||||
|
const __VLS_4 = {}.RouterLink;
|
||||||
|
/** @type {[typeof __VLS_components.RouterLink, typeof __VLS_components.RouterLink, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_5 = __VLS_asFunctionalComponent(__VLS_4, new __VLS_4({
|
||||||
|
...{ 'onClick': {} },
|
||||||
|
key: (l.to),
|
||||||
|
to: (l.to),
|
||||||
|
...{ class: "text-text-muted hover:text-text py-2 px-3 rounded-lg text-sm transition-colors" },
|
||||||
|
activeClass: "bg-bg-soft text-green",
|
||||||
|
}));
|
||||||
|
const __VLS_6 = __VLS_5({
|
||||||
|
...{ 'onClick': {} },
|
||||||
|
key: (l.to),
|
||||||
|
to: (l.to),
|
||||||
|
...{ class: "text-text-muted hover:text-text py-2 px-3 rounded-lg text-sm transition-colors" },
|
||||||
|
activeClass: "bg-bg-soft text-green",
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_5));
|
||||||
|
let __VLS_8;
|
||||||
|
let __VLS_9;
|
||||||
|
let __VLS_10;
|
||||||
|
const __VLS_11 = {
|
||||||
|
onClick: (...[$event]) => {
|
||||||
|
if (!(__VLS_ctx.open))
|
||||||
|
return;
|
||||||
|
__VLS_ctx.$emit('close');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
__VLS_7.slots.default;
|
||||||
|
(l.label);
|
||||||
|
var __VLS_7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var __VLS_3;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['inset-0']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['z-40']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['md:hidden']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['w-64']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-6']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['border-r']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['shadow-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
RouterLink: RouterLink,
|
||||||
|
links: links,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
emits: {},
|
||||||
|
__typeProps: {},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
emits: {},
|
||||||
|
__typeProps: {},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<header class="fixed top-0 left-0 right-0 z-50 bg-bg-hard border-b border-bg-soft h-14 flex items-center px-4 gap-4">
|
||||||
|
<button class="md:hidden text-text-muted hover:text-text text-xl leading-none" @click="$emit('toggle-drawer')">☰</button>
|
||||||
|
<RouterLink to="/" class="text-green font-bold text-lg tracking-wide">🌿 Jardin</RouterLink>
|
||||||
|
<nav class="hidden md:flex gap-5 ml-4">
|
||||||
|
<RouterLink
|
||||||
|
v-for="l in links" :key="l.to" :to="l.to"
|
||||||
|
class="text-text-muted hover:text-text transition-colors text-sm"
|
||||||
|
active-class="text-green font-semibold"
|
||||||
|
>{{ l.label }}</RouterLink>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { RouterLink } from 'vue-router'
|
||||||
|
defineEmits(['toggle-drawer'])
|
||||||
|
const links = [
|
||||||
|
{ to: '/', label: 'Dashboard' },
|
||||||
|
{ to: '/jardins', label: 'Jardins' },
|
||||||
|
{ to: '/varietes', label: 'Variétés' },
|
||||||
|
{ to: '/plantations', label: 'Plantations' },
|
||||||
|
{ to: '/taches', label: 'Tâches' },
|
||||||
|
{ to: '/planning', label: 'Planning' },
|
||||||
|
{ to: '/lunaire', label: 'Lunaire' },
|
||||||
|
{ to: '/reglages', label: 'Réglages' },
|
||||||
|
]
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
import { RouterLink } from 'vue-router';
|
||||||
|
const __VLS_emit = defineEmits(['toggle-drawer']);
|
||||||
|
const links = [
|
||||||
|
{ to: '/', label: 'Dashboard' },
|
||||||
|
{ to: '/jardins', label: 'Jardins' },
|
||||||
|
{ to: '/varietes', label: 'Variétés' },
|
||||||
|
{ to: '/plantations', label: 'Plantations' },
|
||||||
|
{ to: '/taches', label: 'Tâches' },
|
||||||
|
{ to: '/planning', label: 'Planning' },
|
||||||
|
{ to: '/lunaire', label: 'Lunaire' },
|
||||||
|
{ to: '/reglages', label: 'Réglages' },
|
||||||
|
];
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.header, __VLS_intrinsicElements.header)({
|
||||||
|
...{ class: "fixed top-0 left-0 right-0 z-50 bg-bg-hard border-b border-bg-soft h-14 flex items-center px-4 gap-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
||||||
|
...{ onClick: (...[$event]) => {
|
||||||
|
__VLS_ctx.$emit('toggle-drawer');
|
||||||
|
} },
|
||||||
|
...{ class: "md:hidden text-text-muted hover:text-text text-xl leading-none" },
|
||||||
|
});
|
||||||
|
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: "/",
|
||||||
|
...{ class: "text-green font-bold text-lg tracking-wide" },
|
||||||
|
}));
|
||||||
|
const __VLS_2 = __VLS_1({
|
||||||
|
to: "/",
|
||||||
|
...{ class: "text-green font-bold text-lg tracking-wide" },
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_1));
|
||||||
|
__VLS_3.slots.default;
|
||||||
|
var __VLS_3;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.nav, __VLS_intrinsicElements.nav)({
|
||||||
|
...{ class: "hidden md:flex gap-5 ml-4" },
|
||||||
|
});
|
||||||
|
for (const [l] of __VLS_getVForSourceType((__VLS_ctx.links))) {
|
||||||
|
const __VLS_4 = {}.RouterLink;
|
||||||
|
/** @type {[typeof __VLS_components.RouterLink, typeof __VLS_components.RouterLink, ]} */ ;
|
||||||
|
// @ts-ignore
|
||||||
|
const __VLS_5 = __VLS_asFunctionalComponent(__VLS_4, new __VLS_4({
|
||||||
|
key: (l.to),
|
||||||
|
to: (l.to),
|
||||||
|
...{ class: "text-text-muted hover:text-text transition-colors text-sm" },
|
||||||
|
activeClass: "text-green font-semibold",
|
||||||
|
}));
|
||||||
|
const __VLS_6 = __VLS_5({
|
||||||
|
key: (l.to),
|
||||||
|
to: (l.to),
|
||||||
|
...{ class: "text-text-muted hover:text-text transition-colors text-sm" },
|
||||||
|
activeClass: "text-green font-semibold",
|
||||||
|
}, ...__VLS_functionalComponentArgsRest(__VLS_5));
|
||||||
|
__VLS_7.slots.default;
|
||||||
|
(l.label);
|
||||||
|
var __VLS_7;
|
||||||
|
}
|
||||||
|
/** @type {__VLS_StyleScopedClasses['fixed']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['top-0']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['left-0']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['right-0']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['z-50']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['bg-bg-hard']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['border-b']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['border-bg-soft']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['h-14']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['gap-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['md:hidden']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['leading-none']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-lg']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['tracking-wide']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['hidden']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['md:flex']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['gap-5']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['ml-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['transition-colors']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
RouterLink: RouterLink,
|
||||||
|
links: links,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
emits: {},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
emits: {},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { createApp } from 'vue';
|
||||||
|
import { createPinia } from 'pinia';
|
||||||
|
import App from './App.vue';
|
||||||
|
import router from './router';
|
||||||
|
import './style.css';
|
||||||
|
createApp(App).use(createPinia()).use(router).mount('#app');
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { createRouter, createWebHistory } from 'vue-router';
|
||||||
|
export default createRouter({
|
||||||
|
history: createWebHistory(),
|
||||||
|
routes: [
|
||||||
|
{ path: '/', component: () => import('@/views/DashboardView.vue') },
|
||||||
|
{ path: '/jardins', component: () => import('@/views/JardinsView.vue') },
|
||||||
|
{ path: '/jardins/:id', component: () => import('@/views/JardinDetailView.vue') },
|
||||||
|
{ path: '/varietes', component: () => import('@/views/VarietesView.vue') },
|
||||||
|
{ path: '/plantations', component: () => import('@/views/PlantationsView.vue') },
|
||||||
|
{ path: '/planning', component: () => import('@/views/PlanningView.vue') },
|
||||||
|
{ path: '/taches', component: () => import('@/views/TachesView.vue') },
|
||||||
|
{ path: '/lunaire', component: () => import('@/views/LunaireView.vue') },
|
||||||
|
{ path: '/reglages', component: () => import('@/views/ReglagesView.vue') },
|
||||||
|
],
|
||||||
|
});
|
||||||
@@ -2,5 +2,15 @@ import { createRouter, createWebHistory } from 'vue-router'
|
|||||||
|
|
||||||
export default createRouter({
|
export default createRouter({
|
||||||
history: createWebHistory(),
|
history: createWebHistory(),
|
||||||
routes: [],
|
routes: [
|
||||||
|
{ path: '/', component: () => import('@/views/DashboardView.vue') },
|
||||||
|
{ path: '/jardins', component: () => import('@/views/JardinsView.vue') },
|
||||||
|
{ path: '/jardins/:id', component: () => import('@/views/JardinDetailView.vue') },
|
||||||
|
{ path: '/varietes', component: () => import('@/views/VarietesView.vue') },
|
||||||
|
{ path: '/plantations', component: () => import('@/views/PlantationsView.vue') },
|
||||||
|
{ path: '/planning', component: () => import('@/views/PlanningView.vue') },
|
||||||
|
{ path: '/taches', component: () => import('@/views/TachesView.vue') },
|
||||||
|
{ path: '/lunaire', component: () => import('@/views/LunaireView.vue') },
|
||||||
|
{ path: '/reglages', component: () => import('@/views/ReglagesView.vue') },
|
||||||
|
],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { gardensApi } from '@/api/gardens';
|
||||||
|
export const useGardensStore = defineStore('gardens', () => {
|
||||||
|
const gardens = ref([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
async function fetchAll() {
|
||||||
|
loading.value = true;
|
||||||
|
gardens.value = await gardensApi.list();
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
async function create(g) {
|
||||||
|
const created = await gardensApi.create(g);
|
||||||
|
gardens.value.push(created);
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
async function remove(id) {
|
||||||
|
await gardensApi.delete(id);
|
||||||
|
gardens.value = gardens.value.filter(g => g.id !== id);
|
||||||
|
}
|
||||||
|
return { gardens, loading, fetchAll, create, remove };
|
||||||
|
});
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { plantingsApi } from '@/api/plantings';
|
||||||
|
export const usePlantingsStore = defineStore('plantings', () => {
|
||||||
|
const plantings = ref([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
async function fetchAll() {
|
||||||
|
loading.value = true;
|
||||||
|
plantings.value = await plantingsApi.list();
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
async function create(p) {
|
||||||
|
const created = await plantingsApi.create(p);
|
||||||
|
plantings.value.push(created);
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
async function remove(id) {
|
||||||
|
await plantingsApi.delete(id);
|
||||||
|
plantings.value = plantings.value.filter(p => p.id !== id);
|
||||||
|
}
|
||||||
|
return { plantings, loading, fetchAll, create, remove };
|
||||||
|
});
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { tasksApi } from '@/api/tasks';
|
||||||
|
export const useTasksStore = defineStore('tasks', () => {
|
||||||
|
const tasks = ref([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
async function fetchAll(params) {
|
||||||
|
loading.value = true;
|
||||||
|
tasks.value = await tasksApi.list(params);
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
async function create(t) {
|
||||||
|
const created = await tasksApi.create(t);
|
||||||
|
tasks.value.push(created);
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
async function updateStatut(id, statut) {
|
||||||
|
const t = tasks.value.find(t => t.id === id);
|
||||||
|
if (!t)
|
||||||
|
return;
|
||||||
|
const updated = await tasksApi.update(id, { ...t, statut });
|
||||||
|
Object.assign(t, updated);
|
||||||
|
}
|
||||||
|
async function remove(id) {
|
||||||
|
await tasksApi.delete(id);
|
||||||
|
tasks.value = tasks.value.filter(t => t.id !== id);
|
||||||
|
}
|
||||||
|
return { tasks, loading, fetchAll, create, updateStatut, remove };
|
||||||
|
});
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { varietiesApi } from '@/api/varieties';
|
||||||
|
export const useVarietiesStore = defineStore('varieties', () => {
|
||||||
|
const varieties = ref([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
async function fetchAll() {
|
||||||
|
loading.value = true;
|
||||||
|
varieties.value = await varietiesApi.list();
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
async function create(v) {
|
||||||
|
const created = await varietiesApi.create(v);
|
||||||
|
varieties.value.push(created);
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
async function remove(id) {
|
||||||
|
await varietiesApi.delete(id);
|
||||||
|
varieties.value = varieties.value.filter(v => v.id !== id);
|
||||||
|
}
|
||||||
|
return { varieties, loading, fetchAll, create, remove };
|
||||||
|
});
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Dashboard</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Détail jardin</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Jardins</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Calendrier lunaire</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Planning</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Plantations</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Réglages</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Tâches</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4">
|
||||||
|
<h1 class="text-2xl font-bold text-green">Variétés</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
||||||
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
||||||
|
const __VLS_ctx = {};
|
||||||
|
let __VLS_components;
|
||||||
|
let __VLS_directives;
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
||||||
|
...{ class: "p-4" },
|
||||||
|
});
|
||||||
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
||||||
|
...{ class: "text-2xl font-bold text-green" },
|
||||||
|
});
|
||||||
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
||||||
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
||||||
|
var __VLS_dollars;
|
||||||
|
const __VLS_self = (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
export default (await import('vue')).defineComponent({
|
||||||
|
setup() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
; /* PartiallyEnd: #4569/main.vue */
|
||||||
Reference in New Issue
Block a user