Merge remote-tracking branch 'origin/main'

This commit is contained in:
marzban-dev
2025-01-29 03:29:40 +03:30
9 changed files with 329 additions and 51 deletions
+1 -1
View File
@@ -188,7 +188,7 @@ const addNew = () => {
id="address"
placeholder="آدرس خود را بنویسید"
v-model="addressData.full_address"
class="flex items-center field-sizing-content resize-none bg-slate-50 border-slate-200 hover:border-black max-h-[10rem] text-black justify-between cursor-text transition-all border-[1.5px] gap-3 typo-label-md px-4 py-3.5 selection:bg-slate-100 rounded-100 outline-none flex-1 text-sm placeholder-slate-400"
class="flex items-center field-sizing-content resize-none bg-slate-50 border-slate-200 hover:border-black focus:border-black max-h-[10rem] text-black justify-between cursor-text transition-all border-[1.5px] gap-3 typo-label-md px-4 py-3.5 selection:bg-slate-100 rounded-100 outline-none flex-1 !text-sm placeholder-slate-400"
></textarea>
</div>
</div>
+14 -33
View File
@@ -1,52 +1,34 @@
<script setup lang="ts">
// types
type Props = {
// brands: string[];
}
};
// props
const props = defineProps<Props>();
const {} = toRefs(props);
// state
const { $gsap: gsap } = useNuxtApp();
// lifecycle
onMounted(() => {
gsap.to("#marquee-text-container", {
xPercent: -50, // Adjust based on content width
duration: 10, // Adjust for desired speed
ease: "none",
repeat: -1
});
});
</script>
<template>
<div class="relative w-full flex flex-col justify-center h-[350px]">
<div class="-rotate-z-2 z-20">
<div
class="bg-warning-500 flex pr-20 gap-20 py-2 w-max animate-marquee-reverse"
>
<span
v-for="i in 10"
class="text-[50px] text-white whitespace-nowrap font-semibold"
>
TEST {{ i }}
</span>
<span
v-for="i in 10"
class="text-[50px] text-white whitespace-nowrap font-semibold"
>
TEST {{ i }}
</span>
TEST {{ i }}
</span>
<span
v-for="i in 10"
class="text-[50px] text-white whitespace-nowrap font-semibold"
>
TEST {{ i }}
</span>
</div>
</div>
@@ -60,14 +42,13 @@ onMounted(() => {
>
TEST {{ i }}
</span>
<span
v-for="i in 10"
class="text-[50px] text-slate-300 whitespace-nowrap font-semibold"
>
<span
v-for="i in 10"
class="text-[50px] text-slate-300 whitespace-nowrap font-semibold"
>
TEST {{ i }}
</span>
</div>
</div>
</div>
</template>
</template>
+2 -2
View File
@@ -19,8 +19,8 @@
class="bg-slate-950 border-slate-800 hover:border-slate-800 w-8/12"
/>
<Button
class="invert rounded-100 size-[3.5rem] !**:stroke-black"
end-icon="ci:arrow-right"
class="invert rounded-100 size-[3rem] !**:stroke-black"
end-icon="ci:arrow-left"
/>
</div>
<span class="text-slate-400 typo-p-sm">
+27 -11
View File
@@ -19,24 +19,24 @@ const { logout } = useAuth();
const nav_links = ref<NavLink[]>([
{
title: "خانه",
path: "/"
path: "/",
},
{
title: "محصولات",
path: "/products"
path: "/products",
},
{
title: "دسته بندی ها",
path: "/category"
path: "/category",
},
{
title: "ارتباط با ما",
path: "#"
path: "/contact-us",
},
{
title: "امکانات",
path: "#"
}
path: "#",
},
]);
</script>
@@ -60,13 +60,25 @@ const nav_links = ref<NavLink[]>([
/>
</button>
<NuxtLink to="/signin" v-else class="flex-center">
<Icon name="ci:profile" size="24px" class="**:stroke-black" />
<Icon
name="ci:profile"
size="24px"
class="**:stroke-black"
/>
</NuxtLink>
<NuxtLink to="/products" class="flex-center">
<Icon name="ci:search" size="21px" class="**:stroke-black" />
<Icon
name="ci:search"
size="21px"
class="**:stroke-black"
/>
</NuxtLink>
<button class="flex-center">
<Icon name="ci:cart" size="24px" class="**:stroke-black" />
<Icon
name="ci:cart"
size="24px"
class="**:stroke-black"
/>
</button>
</div>
@@ -84,7 +96,12 @@ const nav_links = ref<NavLink[]>([
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" height="23" fill="none" viewBox="0 0 220 40">
<svg
xmlns="http://www.w3.org/2000/svg"
height="23"
fill="none"
viewBox="0 0 220 40"
>
<path
fill="#0E1534"
d="M20 40c11.046 0 20-8.954 20-20V6a6 6 0 0 0-6-6H21v8.774c0 2.002.122 4.076 1.172 5.78a9.999 9.999 0 0 0 6.904 4.627l.383.062a.8.8 0 0 1 0 1.514l-.383.062a10 10 0 0 0-8.257 8.257l-.062.383a.8.8 0 0 1-1.514 0l-.062-.383a10 10 0 0 0-4.627-6.904C12.85 21.122 10.776 21 8.774 21H.024C.547 31.581 9.29 40 20 40Z"
@@ -95,7 +112,6 @@ const nav_links = ref<NavLink[]>([
></path>
</svg>
</div>
</div>
</header>
</template>
+81
View File
@@ -0,0 +1,81 @@
<script setup lang="ts">
// types
type Props = {
modelValue: string;
options: string[];
placeholder: string;
};
type Emit = {
"update:modelValue": [value: string];
};
// props
defineProps<Props>();
// emit
const emit = defineEmits<Emit>();
// state
const selectedValue = ref();
// watch
watch(
() => selectedValue.value,
(newValue) => {
emit("update:modelValue", newValue);
}
);
</script>
<template>
<SelectRoot v-model="selectedValue" dir="rtl">
<SelectTrigger
class="w-full flex items-center justify-between resize-none bg-slate-50 border-slate-200 hover:border-black focus:border-black h-[10rem] max-h-[12rem] text-black cursor-pointer transition-all border-[1.5px] gap-3 typo-label-md px-4 py-[12.5px] selection:bg-slate-100 rounded-100 outline-none flex-1 !text-sm placeholder-slate-400"
aria-label="Customise options"
>
<SelectValue
:placeholder="placeholder"
class="text-slate-400 font-iran-yekan-x"
/>
<Icon name="bi:chevron-down" size="16" />
</SelectTrigger>
<SelectPortal>
<SelectContent
data-side="bottom"
class="min-w-[160px] w-full bg-slate-50 border-slate-200 rounded-lg border shadow-sm will-change-[opacity,transform] data-[side=top]:animate-slide-down-fade data-[side=right]:animate-slide-left-fade data-[side=bottom]:animate-slide-up-fade data-[side=left]:animate-slide-right-fade z-[100]"
:side-offset="5"
>
<SelectViewport class="p-[5px]">
<SelectGroup>
<SelectItem
v-for="(option, index) in options"
:key="index"
class="text-xs leading-none w-full rounded-sm py-5 flex items-center justify-between h-[25px] pr-[12px] relative select-none data-[disabled]:pointer-events-none data-[highlighted]:outline-none data-[highlighted]:bg-slate-300 data-[highlighted]:text-black"
:value="option"
>
<SelectItemIndicator
class="absolute left-0 w-[25px] inline-flex items-center justify-center"
>
<Icon name="bi:check" size="20" />
</SelectItemIndicator>
<SelectItemText
class="text-end font-iran-yekan-x text-sm"
>
{{ option }}
</SelectItemText>
</SelectItem>
</SelectGroup>
</SelectViewport>
</SelectContent>
</SelectPortal>
</SelectRoot>
</template>
<style scoped></style>