Browse Source

fix(app): 优化活动详情

EvilDragon 4 months ago
parent
commit
e7ba2cfa5c

+ 6 - 2
packages/app/src/components/section-heading.vue

@@ -20,7 +20,7 @@ const props = defineProps({
     required: false,
   },
   size: {
-    type: String as PropType<'sm' | 'base' | 'xl'>,
+    type: String as PropType<'sm' | 'base' | 'lg' | 'xl'>,
     default: () => 'xl',
   },
   endText: {
@@ -35,6 +35,10 @@ const props = defineProps({
     type: String,
     default: '',
   },
+  dark: {
+    type: Boolean,
+    default: false,
+  },
 })
 const handleMore = async () => {
   props.path && (await uni.navigateTo({ url: props.path }))
@@ -50,7 +54,7 @@ const handleMore = async () => {
       class="font-normal"
       :class="[
         `text-${size}`,
-        { sm: 'text-black/90', base: 'text-black/90', xl: 'text-black' }[size],
+        { sm: 'text-black/90', base: 'text-black/90', lg: 'text-white', xl: 'text-black' }[size],
       ]"
     >
       {{ title }}

+ 1 - 0
packages/app/src/core/libs/net-images.ts

@@ -5,4 +5,5 @@ export enum NetImages {
   'DesigerHomepageDefaultBg' = 'https://image.zhuchaohui.com/zhucaohui/58dcb982d2957c5578478abbf000936efe9d11c96c5af4d457177cf5d90a9d39.png',
   ConsultDefaultBg = 'https://image.zhuchaohui.com/zhucaohui/f1942e62d1b1adc23f37de705570e22d098da319e10c8a448dc49e594d4bee3a.png',
   StudyTourItemBg = 'https://image.zhuchaohui.com/zhucaohui/254b7ea7fdecaba8e318a7f50e292d036cafe49904fc7fc160a5477ce921e261.png',
+  DefaultAvatar = 'https://image.zhuchaohui.com/zhucaohui/f846a8628026aede3e8e9182fd96f6f8867ac01b611c204a3511b89b1f05e301.png',
 }

+ 6 - 2
packages/app/src/core/libs/requests.ts

@@ -356,11 +356,15 @@ export const getActivities = (query) =>
   httpGet<{
     list: Activity[]
   }>('/app-api/member/activity/page', query)
-export const getActivity = (id: string) => httpGet<Activity>('/app-api/member/activity/get', { id })
+export const getActivity = (id: string) =>
+  httpGet<Partial<Activity>>('/app-api/member/activity/get', { id })
 export const activitySignup = (data: { id: number }) =>
   httpPost('/app-api/member/activity/signup', data)
+/**
+ * 获取活动报名列表
+ */
 export const getActivitySignups = (query: { activityId: string }) =>
-  httpGet('/app-api/member/activity/signup/page', query)
+  httpGet<{ list: any[]; total: number }>('/app-api/member/activity/signup/page', query)
 /**
  * 获取Banner列表
  */

+ 4 - 0
packages/app/src/core/models/moment.ts

@@ -389,6 +389,10 @@ export enum DictType {
    * 材料商-经营-品牌
    */
   materialsManageBrand = 'member_materials_manage_brand',
+  /**
+   * 活动类型
+   */
+  MemberActivityType = 'member_activity_type',
 }
 export enum CircleType {
   moment = '1',

+ 133 - 82
packages/app/src/pages/home/activity/detail/index.vue

@@ -14,13 +14,69 @@ import dayjs from 'dayjs'
 import BottomAppBar from '@/components/bottom-app-bar.vue'
 import { useRouter } from '../../../../core/utils/router'
 import PageHelper from '@/components/page-helper.vue'
+import { ConfigProviderThemeVars } from 'wot-design-uni'
+import SectionHeading from '@/components/section-heading.vue'
+import AvatarGroupCasual from '@/components/avatar-group-casual/avatar-group-casual.vue'
+import { calendar, clock, funnel, location, user } from '@designer-hub/assets/src/icons'
+import { NetImages } from '../../../../core/libs/net-images'
 
+const themeVars = ref<ConfigProviderThemeVars>({
+  tableBorderColor: 'white',
+  tabsNavLineBgColor: 'white',
+  tabsNavColor: 'white',
+})
 const router = useRouter()
 const id = ref()
-const { data, run: setData } = useRequest(() => getActivity(id.value))
+const type = ref<'activity' | 'studyTour'>()
+const activityTypes = ref({ activity: '活动', studyTour: '游学' })
+const { data, run: setData } = useRequest(() => getActivity(id.value), { initialData: {} })
+const { data: signups, run: setSignups } = useRequest(
+  () => getActivitySignups({ activityId: id.value }),
+  { initialData: { list: [], total: 0 } },
+)
 const show = ref(false)
 const successShow = ref(false)
 const listShow = ref(false)
+const isActivity = computed(() => type.value === 'activity')
+const isStudyTour = computed(() => type.value === 'studyTour')
+const infos = computed(() => [
+  {
+    icon: clock,
+    title: '报名时间',
+    content: [
+      dayjs(data.value.applyStartTime).format('YYYY.MM.DD'),
+      dayjs(data.value.applyEndTime).format('YYYY.MM.DD'),
+    ],
+    visable: true,
+  },
+  {
+    icon: calendar,
+    title: `${activityTypes.value[type.value]}时间`,
+    content: [
+      dayjs(data.value.activityStartTime).format('YYYY.MM.DD'),
+      dayjs(data.value.activityEndTime).format('YYYY.MM.DD'),
+    ],
+    visable: true,
+  },
+  {
+    icon: location,
+    title: `${activityTypes.value[type.value]}地点`,
+    content: [data.value.activityAddr],
+    visable: true,
+  },
+  {
+    icon: user,
+    title: `${activityTypes.value[type.value]}名额`,
+    content: [data.value.activityAllowCount],
+    visable: true,
+  },
+  {
+    icon: funnel,
+    title: `等级限制`,
+    content: ['白银以上等级'],
+    visable: true,
+  },
+])
 
 const handleConfirm = async () => {
   const { data, code, msg } = await activitySignup({ id: id.value })
@@ -31,39 +87,60 @@ const handleConfirm = async () => {
     successShow.value = true
   }
 }
-onLoad(async (query: { id: string }) => {
+onLoad(async (query: { id: string; type: 'activity' }) => {
   id.value = query.id
+  type.value = query.type
   await setData()
   console.log(data.value)
+  await setSignups()
 })
 </script>
 <template>
-  <div class="flex-grow bg-[#36200f] px-3.5">
+  <div
+    class="flex-grow bg-white px-3.5 bg-[length:100%_100%]"
+    :style="{ backgroundImage: `url(${data.backgroundUrl})` }"
+  >
     <NavbarEvo transparent dark></NavbarEvo>
-    <div class="aspect-[1.26/1] relative">
-      <wd-img width="100%" height="100%" src=""></wd-img>
-      <div
-        class="absolute bottom-3 bg-white/20 rounded-[20px] backdrop-blur-[6px] px-3.5 py-1 flex gap-2.5"
-        @click="listShow = true"
-      >
-        <wd-img width="20" height="20" :src="bell"></wd-img>
-        <div class="text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal">
-          白金会员王凯峰已报名
+    <div class="aspect-[1.26/1] relative mx--3.5">
+      <wd-img width="100%" height="100%" :src="data.bannerUrl?.at(0)"></wd-img>
+      <div class="absolute left-3.5 bottom-3" @click="listShow = true">
+        <div
+          v-if="isStudyTour"
+          class="bg-white/20 rounded-[20px] backdrop-blur-[6px] px-3.5 py-1 flex gap-2.5"
+        >
+          <wd-img width="20" height="20" :src="bell"></wd-img>
+          <div class="text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal">
+            白金会员王凯峰已报名
+          </div>
+          <div class="w-6 bg-black aspect-square rounded-full flex items-center justify-center">
+            <wd-img width="18" height="18" :src="rightFill"></wd-img>
+          </div>
         </div>
-        <div class="w-6 bg-black aspect-square rounded-full flex items-center justify-center">
-          <wd-img width="18" height="18" :src="rightFill"></wd-img>
+        <div v-if="isActivity" class="flex items-center gap-1.25">
+          <AvatarGroupCasual
+            :urls="signups.list.map(() => NetImages.DefaultAvatar)"
+            :width="40"
+            :height="40"
+          ></AvatarGroupCasual>
+          <div class="text-white/60 text-sm font-normal font-['PingFang SC'] leading-[10.18px]">
+            {{ signups.total }}人已报名
+          </div>
         </div>
       </div>
     </div>
-    <div class="flex">
-      <wd-img width="18" height="18" :src="map"></wd-img>
-      <div class="text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal">
-        第一站
+    <div class="h-9">
+      <div v-if="type === 'studyTour'" class="flex">
+        <wd-img width="18" height="18" :src="map"></wd-img>
+        <div class="text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal">
+          第一站
+        </div>
       </div>
     </div>
-    <div class="w-[347px] text-white text-[26px] font-normal font-['PingFang SC'] leading-[44px]">
+    <div
+      class="w-[347px] text-white text-[26px] font-normal font-['PingFang SC'] leading-[44px] flex items-center gap-4"
+    >
       <!-- 日本研学·东京艺术大学设计游学 -->
-      {{ data?.name }}
+      <div class="inline-block">{{ data?.name }}</div>
       <div class="inline-block py-1.5 px-4 bg-white rounded-[20px] backdrop-blur-[15px]">
         <div
           class="w-[42px] h-[21px] text-[#a60707] text-sm font-normal font-['PingFang SC'] leading-relaxed"
@@ -72,70 +149,44 @@ onLoad(async (query: { id: string }) => {
         </div>
       </div>
     </div>
-    <div class="px-4 py-6 bg-[#29170b] rounded-2xl my-8">
-      <div class="flex items-center">
-        <wd-img width="16" height="16"></wd-img>
-        <div
-          class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal"
-        >
-          报名时间
-        </div>
-        <div class="w-4"></div>
-        <div
-          class="flex items-center text-white text-base font-normal font-['PingFang SC'] leading-[34px]"
-        >
-          {{ dayjs(data.applyStartTime).format('YYYY.MM.DD') }}
-          <wd-icon name="play" size="22px"></wd-icon>
-          {{ dayjs(data.applyEndTime).format('YYYY.MM.DD') }}
-        </div>
-      </div>
-      <div class="flex items-center">
-        <wd-img width="16" height="16"></wd-img>
-        <div
-          class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal"
-        >
-          游学时间
-        </div>
-        <div class="w-4"></div>
-        <div
-          class="flex items-center text-white text-base font-normal font-['PingFang SC'] leading-[34px]"
-        >
-          <!-- 2024.12.15 2025.01.15 -->
-          {{ dayjs(data.activityStartTime).format('YYYY.MM.DD') }}
-          <wd-icon name="play" size="22px"></wd-icon>
-          {{ dayjs(data.activityEndTime).format('YYYY.MM.DD') }}
-        </div>
-      </div>
-      <div class="flex items-center">
-        <wd-img width="16" height="16"></wd-img>
-        <div
-          class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal"
-        >
-          游学名额
-        </div>
-        <div class="w-4"></div>
-        <div class="text-white text-base font-normal font-['PingFang SC'] leading-[34px]">
-          40人/剩余10人
-        </div>
-      </div>
-      <div class="flex items-center">
-        <wd-img width="16" height="16"></wd-img>
-        <div
-          class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal"
-        >
-          等级限制
-        </div>
-        <div class="w-4"></div>
-        <div class="text-white text-base font-normal font-['PingFang SC'] leading-[34px]">
-          黄金以上等级
+
+    <div
+      class="px-4 py-6 bg-[#010102]/30 backdrop-blur-[20px] rounded-2xl my-8 flex flex-col gap-3"
+    >
+      <template v-for="(it, i) in infos" :key="i">
+        <div class="flex items-center gap-1.5">
+          <wd-img width="16" height="16" :src="it.icon"></wd-img>
+          <div
+            class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-normal"
+          >
+            {{ it.title }}
+          </div>
+          <div class="w-3"></div>
+
+          <div
+            class="flex items-center text-white text-base font-normal font-['PingFang SC'] leading-[34px]"
+          >
+            <template v-if="it.content.length === 2">
+              <div class="w-22 text-center">{{ it.content[0] }}</div>
+              <wd-icon name="play" size="22px"></wd-icon>
+              <div class="w-22 text-center">{{ it.content[0] }}</div>
+            </template>
+            <template v-else>{{ it.content[0] }}</template>
+          </div>
         </div>
-      </div>
+      </template>
     </div>
-    <wd-tabs class="bg-transparent!" custom-class="bg-transparent!">
-      <wd-tab title="活动介绍"></wd-tab>
-      <wd-tab title="行程安排"></wd-tab>
-    </wd-tabs>
-    <div class="mt-5">
+    <div v-if="isStudyTour" class="w-50%">
+      <wd-config-provider :themeVars="themeVars">
+        <wd-tabs class="bg-transparent!" custom-class="bg-transparent!">
+          <wd-tab title="活动介绍"></wd-tab>
+          <wd-tab title="行程安排"></wd-tab>
+        </wd-tabs>
+      </wd-config-provider>
+    </div>
+    <SectionHeading v-if="isActivity" size="lg" title="活动介绍"></SectionHeading>
+
+    <div class="mt-5 mx-3.5">
       <div
         class="text-justify text-[#c1c1c1] text-base font-normal font-['PingFang SC'] leading-relaxed"
       >

+ 1 - 1
packages/app/src/pages/home/offline-activity/index.vue

@@ -71,7 +71,7 @@ onMounted(async () => {
       :slidable-num="4"
       @change="handleTabChange"
     >
-      <block v-for="(it, item) in categories.find(({ id }) => id === 2).children" :key="item">
+      <block v-for="(it, item) in categories.find(({ id }) => id === 2)?.children" :key="item">
         <wd-tab :title="it.name"></wd-tab>
       </block>
     </wd-tabs>

+ 21 - 20
packages/app/src/pages/home/offline-activity/list/index.vue

@@ -2,7 +2,7 @@
 { "style": { "navigationBarTitleText": "线下活动", "navigationBarBackgroundColor": "#fff" } }
 </route>
 <script setup lang="ts">
-import { getAllCategories, getActivities } from '../../../../core/libs/requests'
+import { getActivities, getByDictType } from '../../../../core/libs/requests'
 import Card from '@/components/card.vue'
 import PageHelper from '@/components/page-helper.vue'
 import TiltedButton from '@/components/tilted-button.vue'
@@ -10,46 +10,47 @@ import { useRouter } from '../../../../core/utils/router'
 import dayjs from 'dayjs'
 import ActivityCountDown from '../../components/activity-count-down.vue'
 import { getActivityStatus } from '../../../../core/utils/common'
+import { DictType } from '../../../../core/models/moment'
 
 const tab = ref<number>(0)
-const contentCategory = ref()
 const router = useRouter()
-const { data: categories, run: setCategories } = useRequest(() => getAllCategories(), {
+const { data: tabs, run: setTabs } = useRequest(() => getByDictType(DictType.MemberActivityType), {
   initialData: [],
 })
-const setContentCategory = (index) => {
-  contentCategory.value = categories.value.find(({ id }) => id === 2)?.children[index].id.toString()
-}
-const handleTabChange = ({ index }) => {
-  setContentCategory(index)
-}
 onMounted(async () => {
-  await setCategories()
-  setContentCategory(tab.value)
+  await setTabs()
 })
 </script>
 <template>
   <div class="flex-grow flex flex-col gap-6 mx-3.5">
     <div class="mx--3.5">
-      <wd-tabs v-model="tab" custom-class="" :slidable-num="4" @change="handleTabChange">
-        <block v-for="(it, item) in categories.find(({ id }) => id === 2).children" :key="item">
-          <wd-tab :title="it.name"></wd-tab>
+      <wd-tabs v-model="tab" custom-class="" :slidable-num="4">
+        <block v-for="(it, item) in tabs" :key="item">
+          <wd-tab :title="it.label"></wd-tab>
         </block>
       </wd-tabs>
     </div>
-    <PageHelper :request="getActivities" :query="{}">
+    <PageHelper
+      v-if="tabs.length"
+      :request="getActivities"
+      :query="{ activityType: tabs[tab].value }"
+    >
       <template #default="{ source }">
         <div class="flex flex-col gap-6">
           <template v-for="(it, index) in source.list" :key="index">
             <!-- <offline-activity-item class="" :options="it"></offline-activity-item> -->
-            <div @click="router.push(`/pages/home/activity/detail/index?id=${it.id}`)">
+            <div
+              @click="router.push(`/pages/home/activity/detail/index?id=${it.id}&type=activity`)"
+            >
               <Card>
                 <div class="flex flex-col gap-5">
                   <div class="flex gap-4 mb-2">
-                    <img
-                      class="w-[110px] h-[88px] rounded-[10px]"
-                      src="https://via.placeholder.com/110x88"
-                    />
+                    <wd-img
+                      width="110px"
+                      height="88px"
+                      class="rounded-[10px]"
+                      :src="it.thumbnailUrl"
+                    ></wd-img>
                     <div class="flex flex-col justify-between">
                       <div
                         class="w-[168px] text-black text-base font-normal font-['PingFang SC'] leading-relaxed"

+ 11 - 0
packages/assets/src/assets/svgs/calendar.svg

@@ -0,0 +1,11 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_2016_548)">
+<path d="M2 2.82009C1.63267 2.82009 1.33333 3.11942 1.33333 3.48676V14.1534C1.33333 14.5214 1.63267 14.8201 2 14.8201H14C14.368 14.8201 14.6667 14.5214 14.6667 14.1534V3.48676C14.6667 3.11942 14.368 2.82009 14 2.82009H2ZM14 16.1534H2C0.897333 16.1534 0 15.2561 0 14.1534V3.48676C0 2.38409 0.897333 1.48676 2 1.48676H14C15.1027 1.48676 16 2.38409 16 3.48676V14.1534C16 15.2561 15.1027 16.1534 14 16.1534Z" fill="white"/>
+<path d="M4.7084 4H4.62494C4.45943 3.99951 4.30084 3.93353 4.18382 3.81649C4.0668 3.69944 4.00086 3.54084 4.00041 3.37533V0.625333C4.00041 0.281333 4.28107 0 4.62494 0H4.7084C5.0524 0 5.33294 0.281333 5.33294 0.625333V3.37533C5.33248 3.54082 5.26656 3.6994 5.14957 3.81644C5.03258 3.93348 4.87402 3.99947 4.70854 4M11.3751 4H11.2916C11.1261 3.99951 10.9675 3.93353 10.8505 3.81649C10.7335 3.69944 10.6675 3.54084 10.6671 3.37533V0.625333C10.6671 0.281333 10.9477 0 11.2916 0H11.3751C11.7191 0 11.9996 0.281333 11.9996 0.625333V3.37533C11.9991 3.54082 11.9332 3.6994 11.8162 3.81644C11.6992 3.93348 11.5407 3.99947 11.3752 4M4.66667 11.3333H3.33334C2.96667 11.3333 2.66667 11.0333 2.66667 10.6667C2.66667 10.3 2.96667 10 3.33334 10H4.66667C5.03334 10 5.33334 10.3 5.33334 10.6667C5.33334 11.0333 5.03334 11.3333 4.66667 11.3333ZM8.66667 11.3333H7.33334C6.96667 11.3333 6.66667 11.0333 6.66667 10.6667C6.66667 10.3 6.96667 10 7.33334 10H8.66667C9.03334 10 9.33334 10.3 9.33334 10.6667C9.33334 11.0333 9.03334 11.3333 8.66667 11.3333ZM4.66667 8H3.33334C2.96667 8 2.66667 7.7 2.66667 7.33333C2.66667 6.96667 2.96667 6.66667 3.33334 6.66667H4.66667C5.03334 6.66667 5.33334 6.96667 5.33334 7.33333C5.33334 7.7 5.03334 8 4.66667 8ZM12.6667 8H11.3333C10.9667 8 10.6667 7.7 10.6667 7.33333C10.6667 6.96667 10.9667 6.66667 11.3333 6.66667H12.6667C13.0333 6.66667 13.3333 6.96667 13.3333 7.33333C13.3333 7.7 13.0333 8 12.6667 8ZM8.66667 8H7.33334C6.96667 8 6.66667 7.7 6.66667 7.33333C6.66667 6.96667 6.96667 6.66667 7.33334 6.66667H8.66667C9.03334 6.66667 9.33334 6.96667 9.33334 7.33333C9.33334 7.7 9.03334 8 8.66667 8Z" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_2016_548">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 3 - 0
packages/assets/src/assets/svgs/clock.svg

@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.77778 17.7778C3.48222 17.7778 0 14.2951 0 9.99973C0 5.70433 3.48222 2.22223 7.77778 2.22223C12.0733 2.22223 15.5556 5.70433 15.5556 9.99973C15.5556 14.2951 12.0733 17.7778 7.77778 17.7778ZM7.77778 3.33386C4.09611 3.33386 1.11111 6.31875 1.11111 10.0003C1.11111 13.6818 4.09611 16.6667 7.77778 16.6667C11.4594 16.6667 14.4444 13.6818 14.4444 10.0003C14.4444 6.31875 11.4594 3.33386 7.77778 3.33386ZM10.2778 10.5558H7.5C7.34667 10.5558 7.22222 10.4314 7.22222 10.2781V9.72252V9.72196V5.27823C7.22222 5.1249 7.34667 5.00046 7.5 5.00046H8.05556C8.20889 5.00046 8.33333 5.1249 8.33333 5.27823V9.44419H10.2778C10.4311 9.44419 10.5556 9.56863 10.5556 9.72196V10.2781C10.5556 10.4314 10.4311 10.5558 10.2778 10.5558Z" fill="white"/>
+</svg>

+ 10 - 0
packages/assets/src/assets/svgs/funnel.svg

@@ -0,0 +1,10 @@
+<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_2016_524)">
+<path d="M9.72577 15.6719V8.56127C9.72577 8.43873 9.78704 8.31619 9.84831 8.19365L14.6908 1.32813H2.37009L7.21261 8.19365C7.27388 8.31619 7.33515 8.43873 7.33515 8.56127V13.8327L9.72577 15.6719ZM10.9519 15.6719C10.951 15.9967 10.8215 16.3079 10.5918 16.5376C10.3622 16.7673 10.0509 16.8967 9.72613 16.8976C9.4603 16.9013 9.20106 16.8149 8.99052 16.6526L6.29354 14.6299C6.10973 14.5074 6.04846 14.3236 6.04846 14.1394V8.74508L0.653793 1.08304C0.585695 0.991945 0.544265 0.883706 0.534132 0.77042C0.523999 0.657134 0.545563 0.543261 0.596413 0.441523C0.647264 0.339785 0.725399 0.254188 0.822091 0.194294C0.918782 0.134401 1.03022 0.102569 1.14396 0.102356H15.8553C15.9692 0.102241 16.0809 0.133864 16.1778 0.193677C16.2747 0.25349 16.353 0.339126 16.4039 0.440974C16.4549 0.542821 16.4764 0.656851 16.4662 0.770265C16.4559 0.88368 16.4142 0.991991 16.3459 1.08304L10.9519 8.74508V15.6719Z" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_2016_524">
+<rect width="17" height="17" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
packages/assets/src/assets/svgs/location.svg

@@ -0,0 +1,4 @@
+<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.49999 10.6004C7.95624 10.6004 6.69749 9.34167 6.69749 7.79792C6.69749 6.25417 7.95624 4.99542 9.49999 4.99542C11.0437 4.99542 12.3025 6.25417 12.3025 7.79792C12.3025 9.34167 11.0437 10.6004 9.49999 10.6004ZM9.49999 6.57876C9.17655 6.57886 8.86639 6.70745 8.63775 6.93624C8.40911 7.16502 8.28072 7.47527 8.28083 7.79871C8.28093 8.12216 8.40952 8.43232 8.63831 8.66096C8.8671 8.8896 9.17734 9.01799 9.50079 9.01788C9.82423 9.01778 10.1344 8.88919 10.363 8.6604C10.5917 8.43161 10.7201 8.12137 10.72 7.79792C10.7198 7.47447 10.5913 7.16432 10.3625 6.93568C10.1337 6.70704 9.82344 6.57865 9.49999 6.57876Z" fill="white"/>
+<path d="M9.5 17.9946C9.34167 17.9946 9.18333 17.9471 9.04875 17.8521C8.7875 17.67 2.55708 13.2604 2.55708 7.7979C2.55708 3.96623 5.66833 0.85498 9.5 0.85498C13.3317 0.85498 16.4429 3.96623 16.4429 7.7979C16.4429 13.2604 10.2204 17.6621 9.95125 17.8521C9.81667 17.9471 9.65833 17.9946 9.5 17.9946ZM9.5 2.43831C6.54708 2.43831 4.14042 4.84498 4.14042 7.7979C4.14042 11.6691 8.13042 15.1366 9.5 16.2133C10.8696 15.1366 14.8596 11.6612 14.8596 7.7979C14.8596 4.84498 12.4529 2.43831 9.5 2.43831Z" fill="white"/>
+</svg>

+ 3 - 0
packages/assets/src/assets/svgs/user.svg

@@ -0,0 +1,3 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.66035 9.30272C8.54219 9.06639 8.63887 8.7785 8.8752 8.66034C9.11152 8.54218 9.39941 8.63885 9.51758 8.87518C9.86348 9.56913 10.3404 9.88495 11.0021 9.88495C11.6639 9.88495 12.1408 9.56698 12.4867 8.87518C12.6049 8.63885 12.8928 8.54432 13.1291 8.66034C13.3654 8.77635 13.46 9.06639 13.3439 9.30272C12.8412 10.3082 12.042 10.841 11.0043 10.841C9.9666 10.841 9.16309 10.3082 8.66035 9.30272ZM4.62559 18.6484H17.3723C17.1531 16.2486 15.6342 14.1754 13.3762 13.2666C13.1635 13.1807 13.0195 12.9808 13.0023 12.7488C12.9873 12.5189 13.1033 12.2998 13.3031 12.1881C14.777 11.3523 15.6922 9.77323 15.6922 8.07382C15.6922 5.46991 13.5867 3.35155 10.9979 3.35155C8.40898 3.35155 6.30352 5.46991 6.30352 8.07382C6.30352 9.77538 7.21875 11.3523 8.69258 12.1881C8.89023 12.3019 9.01055 12.5189 8.99336 12.7488C8.97832 12.9787 8.83223 13.1807 8.61953 13.2666C6.36582 14.1754 4.84473 16.2508 4.62559 18.6484ZM18.049 19.9224H3.95098C3.62012 19.9224 3.35156 19.6517 3.35156 19.3187C3.35156 17.7482 3.81777 16.2379 4.69863 14.951C5.35605 13.9928 6.20898 13.2021 7.19727 12.6328C6.68594 12.201 6.24551 11.6853 5.90176 11.1053C5.35606 10.1857 5.06816 9.1287 5.06816 8.05018C5.06816 6.45604 5.68477 4.95428 6.80625 3.82636C7.92559 2.69843 9.4166 2.07538 11 2.07538C12.5834 2.07538 14.0744 2.69628 15.1938 3.82636C16.3131 4.95428 16.9318 6.45389 16.9318 8.05018C16.9318 9.12655 16.6439 10.1857 16.0982 11.1053C15.7545 11.6853 15.3141 12.2031 14.8027 12.6328C15.7932 13.2021 16.6461 13.9928 17.3014 14.951C18.1822 16.2379 18.6484 17.7504 18.6484 19.3187C18.6484 19.6539 18.3799 19.9224 18.049 19.9224Z" fill="white"/>
+</svg>

+ 6 - 1
packages/assets/src/icons.ts

@@ -1,4 +1,9 @@
+import calendar from "./icons/calendar";
+import clock from "./icons/clock";
+import funnel from "./icons/funnel";
 import likeActived from "./icons/likeActived";
 import likeBlack from "./icons/likeBlack";
+import location from "./icons/location";
+import user from "./icons/user";
 
-export { likeActived, likeBlack };
+export { likeActived, likeBlack, clock, calendar, location, user, funnel };

+ 2 - 0
packages/assets/src/icons/calendar.ts

@@ -0,0 +1,2 @@
+import calender from "../assets/svgs/calendar.svg";
+export default calender;

+ 2 - 0
packages/assets/src/icons/clock.ts

@@ -0,0 +1,2 @@
+import clock from "../assets/svgs/clock.svg";
+export default clock;

+ 2 - 0
packages/assets/src/icons/funnel.ts

@@ -0,0 +1,2 @@
+import funnel from "../assets/svgs/funnel.svg";
+export default funnel;

+ 2 - 0
packages/assets/src/icons/location.ts

@@ -0,0 +1,2 @@
+import location from "../assets/svgs/location.svg";
+export default location;

+ 2 - 0
packages/assets/src/icons/user.ts

@@ -0,0 +1,2 @@
+import user from "../assets/svgs/user.svg";
+export default user;