@nexxtmove/ui 0.1.52 → 0.1.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,39 @@
1
+ <script lang="ts" setup>
2
+ import NexxtCard from '../Card/Card.vue'
3
+ import NexxtPropertyListing from '../PropertyListing/PropertyListing.vue'
4
+ import NexxtIcon from '../Icon/Icon.vue'
5
+ import PropertyPlaceholder from '../../assets/images/property_placeholder.jpg'
6
+
7
+ export interface NexxtPropertyCardProps {
8
+ image?: string
9
+ imageAlt?: string
10
+ price?: number
11
+ city: string
12
+ text?: string
13
+ }
14
+
15
+ defineOptions({ name: 'NexxtPropertyCard' })
16
+
17
+ defineProps<NexxtPropertyCardProps>()
18
+ </script>
19
+
20
+ <template>
21
+ <NexxtCard :image="image" :image-alt="imageAlt">
22
+ <template v-if="!image" #image>
23
+ <div class="relative isolate h-40 w-full overflow-hidden rounded-tl-lg rounded-tr-lg">
24
+ <img
25
+ :src="PropertyPlaceholder"
26
+ alt="Woning placeholder"
27
+ loading="lazy"
28
+ class="h-full w-full object-cover"
29
+ />
30
+ <div
31
+ class="absolute inset-0 flex items-center justify-center rounded-tl-lg rounded-tr-lg bg-white/20 backdrop-blur-sm"
32
+ >
33
+ <NexxtIcon name="house" class="text-6xl text-white drop-shadow" />
34
+ </div>
35
+ </div>
36
+ </template>
37
+ <NexxtPropertyListing :price="price" :city="city" :text="text" />
38
+ </NexxtCard>
39
+ </template>
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ price?: number
4
+ city: string
5
+ text?: string
6
+ }
7
+
8
+ defineProps<Props>()
9
+ </script>
10
+
11
+ <template>
12
+ <div class="flex flex-col items-start justify-start gap-2 self-stretch overflow-hidden">
13
+ <div class="inline-flex w-full items-center gap-2 overflow-hidden">
14
+ <div v-if="price" class="text-color-gray-950 shrink-0 body-semibold">
15
+ € {{ price.toLocaleString('nl-NL') }}
16
+ </div>
17
+ <div v-if="price" class="text-color-gray-950 shrink-0 body-normal">|</div>
18
+ <div
19
+ class="text-color-gray-950 min-w-0 truncate"
20
+ :class="price ? 'body-normal' : 'body-semibold'"
21
+ >
22
+ {{ city }}
23
+ </div>
24
+ </div>
25
+
26
+ <div v-if="text" class="text-color-gray-950 wrap-break-words w-full body-normal">
27
+ {{ text }}
28
+ </div>
29
+ </div>
30
+ </template>
@@ -70,7 +70,7 @@ const getPhaseDirection = () => {
70
70
  <template>
71
71
  <div class="relative z-10 flex flex-col gap-16" :data-phase="phase.phase.value">
72
72
  <template v-if="index === 0 && isSplitView">
73
- <div class="relative z-10 bg-white">
73
+ <div class="relative z-10">
74
74
  <div class="flex items-center justify-between px-4 py-2">
75
75
  <span class="flex gap-1">
76
76
  Outbound
@@ -91,15 +91,15 @@ const getPhaseDirection = () => {
91
91
  </template>
92
92
  <!-- Left timeline line (always shown) -->
93
93
  <div
94
- class="absolute top-0 bottom-0 left-5 w-0 border-l"
95
- :class="PHASE_MAP[phase.phase.value].color"
94
+ class="absolute bottom-0 left-5 w-0 border-l"
95
+ :class="[PHASE_MAP[phase.phase.value].color, index === 0 && isSplitView ? 'top-10' : 'top-0']"
96
96
  ></div>
97
97
 
98
98
  <!-- Right timeline line (split view only) -->
99
99
  <div
100
100
  v-if="isSplitView"
101
- class="absolute top-0 right-5 bottom-0 w-0 border-l"
102
- :class="PHASE_MAP[phase.phase.value].color"
101
+ class="absolute right-5 bottom-0 w-0 border-l"
102
+ :class="[PHASE_MAP[phase.phase.value].color, index === 0 ? 'top-10' : 'top-0']"
103
103
  ></div>
104
104
 
105
105
  <!-- Events -->
@@ -113,7 +113,7 @@ const getPhaseDirection = () => {
113
113
  <!-- Phase separator badge (not shown for the very first phase) -->
114
114
  <div
115
115
  v-if="index !== phases.length - 1"
116
- class="relative flex flex-col items-center bg-white pt-8 pb-24 text-center"
116
+ class="relative flex flex-col items-center pt-8 pb-24 text-center"
117
117
  :class="{ 'pl-16': !isSplitView }"
118
118
  >
119
119
  <div
@@ -144,13 +144,13 @@ const getPhaseDirection = () => {
144
144
  <div v-if="!isLast" class="h-1"></div>
145
145
 
146
146
  <div
147
- class="absolute top-0 bottom-0 left-5 w-[1px] bg-linear-to-b"
147
+ class="absolute top-0 bottom-0 left-5 w-px bg-linear-to-b"
148
148
  :class="gradientClasses"
149
149
  ></div>
150
150
 
151
151
  <div
152
152
  v-if="isSplitView"
153
- class="absolute top-0 right-5 bottom-0 w-[1px] bg-linear-to-b"
153
+ class="absolute top-0 right-5 bottom-0 w-px bg-linear-to-b"
154
154
  :class="gradientClasses"
155
155
  ></div>
156
156
  </div>
@@ -3,9 +3,11 @@
3
3
  "NexxtAvatar": "components/Avatar/Avatar.vue",
4
4
  "NexxtButton": "components/Button/Button.vue",
5
5
  "NexxtCalendar": "components/Calendar/Calendar.vue",
6
+ "NexxtCard": "components/Card/Card.vue",
6
7
  "NexxtCheckbox": "components/Checkbox/Checkbox.vue",
7
8
  "NexxtChip": "components/Chip/Chip.vue",
8
9
  "NexxtCombobox": "components/Combobox/Combobox.vue",
10
+ "NexxtComboboxPanel": "components/ComboboxPanel/ComboboxPanel.vue",
9
11
  "NexxtContactInfoCard": "components/ContactInfoCard/ContactInfoCard.vue",
10
12
  "NexxtCustomerJourneyTile": "components/CustomerJourneyTile/CustomerJourneyTile.vue",
11
13
  "NexxtDatePicker": "components/DatePicker/DatePicker.vue",
@@ -19,6 +21,8 @@
19
21
  "NexxtPagination": "components/Pagination/Pagination.vue",
20
22
  "NexxtPresenceIndicator": "components/PresenceIndicator/PresenceIndicator.vue",
21
23
  "NexxtProgressBar": "components/ProgressBar/ProgressBar.vue",
24
+ "NexxtPropertyCard": "components/PropertyCard/PropertyCard.vue",
25
+ "NexxtPropertyListing": "components/PropertyListing/PropertyListing.vue",
22
26
  "NexxtSocialIcons": "components/SocialIcons/SocialIcons.vue",
23
27
  "NexxtSocialMediaCustomTemplate": "components/SocialMediaCustomTemplate/SocialMediaCustomTemplate.vue",
24
28
  "NexxtSocialMediaTemplate": "components/SocialMediaTemplate/SocialMediaTemplate.vue",
package/src/index.ts CHANGED
@@ -3,9 +3,11 @@ export { default as NexxtAnimatedNumber } from './components/AnimatedNumber/Anim
3
3
  export { default as NexxtAvatar } from './components/Avatar/Avatar.vue'
4
4
  export { default as NexxtButton } from './components/Button/Button.vue'
5
5
  export { default as NexxtCalendar } from './components/Calendar/Calendar.vue'
6
+ export { default as NexxtCard } from './components/Card/Card.vue'
6
7
  export { default as NexxtCheckbox } from './components/Checkbox/Checkbox.vue'
7
8
  export { default as NexxtChip } from './components/Chip/Chip.vue'
8
9
  export { default as NexxtCombobox } from './components/Combobox/Combobox.vue'
10
+ export { default as NexxtComboboxPanel } from './components/ComboboxPanel/ComboboxPanel.vue'
9
11
  export { default as NexxtContactInfoCard } from './components/ContactInfoCard/ContactInfoCard.vue'
10
12
  export { default as NexxtCustomerJourneyTile } from './components/CustomerJourneyTile/CustomerJourneyTile.vue'
11
13
  export { default as NexxtDatePicker } from './components/DatePicker/DatePicker.vue'
@@ -19,6 +21,8 @@ export { default as NexxtModal } from './components/Modal/Modal.vue'
19
21
  export { default as NexxtPagination } from './components/Pagination/Pagination.vue'
20
22
  export { default as NexxtPresenceIndicator } from './components/PresenceIndicator/PresenceIndicator.vue'
21
23
  export { default as NexxtProgressBar } from './components/ProgressBar/ProgressBar.vue'
24
+ export { default as NexxtPropertyCard } from './components/PropertyCard/PropertyCard.vue'
25
+ export { default as NexxtPropertyListing } from './components/PropertyListing/PropertyListing.vue'
22
26
  export { default as NexxtSocialIcons } from './components/SocialIcons/SocialIcons.vue'
23
27
  export { default as NexxtSocialMediaCustomTemplate } from './components/SocialMediaCustomTemplate/SocialMediaCustomTemplate.vue'
24
28
  export { default as NexxtSocialMediaTemplate } from './components/SocialMediaTemplate/SocialMediaTemplate.vue'