diff --git a/src/components/HeroIcon.svelte b/src/components/HeroIcon.svelte new file mode 100644 index 0000000..7338d18 --- /dev/null +++ b/src/components/HeroIcon.svelte @@ -0,0 +1,118 @@ + + +
+ {#if name === "exclamation-triangle"} + + + + {:else if name === "folder"} + + + + {:else if name === "document"} + + + + {:else if name === "home"} + + + + {:else if name === "clock"} + + + + {:else if name === "cube"} + + + + + {:else if name === "building-storefront"} + + + + {:else if name === "user-group"} + + + + {:else if name === "truck"} + + + + {:else if name === "utensils"} + + + + {:else if name === "comments"} + + + + {/if} +
diff --git a/src/components/InventoryFormModal.svelte b/src/components/InventoryFormModal.svelte new file mode 100644 index 0000000..85e8aea --- /dev/null +++ b/src/components/InventoryFormModal.svelte @@ -0,0 +1,311 @@ + + +{#if showModal} +
+
+
+

+ {isEditing ? "Edit Item" : "Add New Item"} +

+ +
+ +
+ + + {#if formErrors.item_name} +

+ {formErrors.item_name} +

+ {/if} +
+ +
+ + + {#if formErrors.villa_id} +

+ {formErrors.villa_id} +

+ {/if} +
+ +
+ + + {#if formErrors.item_location} +

+ {formErrors.item_location} +

+ {/if} +
+ +
+ + + {#if formErrors.brand_color_material} +

+ {formErrors.brand_color_material} +

+ {/if} +
+ +
+ + + {#if formErrors.condition} +

+ {formErrors.condition} +

+ {/if} +
+ +
+ + + {#if formErrors.remarks} +

+ {formErrors.remarks} +

+ {/if} +
+ + +
+
+{/if} + + diff --git a/src/lib/utils/debounce.ts b/src/lib/utils/debounce.ts new file mode 100644 index 0000000..4b6673c --- /dev/null +++ b/src/lib/utils/debounce.ts @@ -0,0 +1,8 @@ +export function debounce void>(func: T, delay: number): (...args: Parameters) => void { + let timeout: ReturnType; + return function (this: ThisParameterType, ...args: Parameters) { + const context = this; + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(context, args), delay); + }; +} \ No newline at end of file diff --git a/src/routes/backoffice/+page.svelte b/src/routes/backoffice/+page.svelte index a13a8cf..eebb26e 100644 --- a/src/routes/backoffice/+page.svelte +++ b/src/routes/backoffice/+page.svelte @@ -1,6 +1,10 @@ - +
+

+ Dashboard Overview +

-
{#each items as item}
- - {#if item.icon === "exclamation-triangle"} - - - - {:else if item.icon === "folder"} - - - - {:else if item.icon === "document"} - - - - {:else if item.icon === "home"} - - - - {:else if item.icon === "clock"} - - - - {:else if item.icon === "cube"} - - - - - {:else if item.icon === "building-storefront"} - - - - {:else if item.icon === "user-group"} - - - - {:else if item.icon === "truck"} - - - - {:else if item.icon === "utensils"} - - - - {:else if item.icon === "comments"} - - - - {/if} +
+ +
+
- -

+

{item.label}

-

- {stats[item.key]} +

+ {#if isLoading} +

+ {:else} + {stats[item.key]} + {/if}

{/each}
+ +