Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user