@sikka/hawa 0.1.85 → 0.1.87

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.
package/dist/styles.css CHANGED
@@ -758,6 +758,9 @@ video {
758
758
  .bottom-14 {
759
759
  bottom: 3.5rem;
760
760
  }
761
+ .bottom-2 {
762
+ bottom: 0.5rem;
763
+ }
761
764
  .bottom-4 {
762
765
  bottom: 1rem;
763
766
  }
@@ -1075,9 +1078,6 @@ video {
1075
1078
  .hidden {
1076
1079
  display: none;
1077
1080
  }
1078
- .aspect-\[2\/3\] {
1079
- aspect-ratio: 2/3;
1080
- }
1081
1081
  .aspect-square {
1082
1082
  aspect-ratio: 1 / 1;
1083
1083
  }
@@ -1096,9 +1096,6 @@ video {
1096
1096
  .h-11 {
1097
1097
  height: 2.75rem;
1098
1098
  }
1099
- .h-12 {
1100
- height: 3rem;
1101
- }
1102
1099
  .h-14 {
1103
1100
  height: 3.5rem;
1104
1101
  }
@@ -1180,6 +1177,9 @@ video {
1180
1177
  .h-\[32px\] {
1181
1178
  height: 32px;
1182
1179
  }
1180
+ .h-\[400px\] {
1181
+ height: 400px;
1182
+ }
1183
1183
  .h-\[calc\(100\%-3\.5rem\)\] {
1184
1184
  height: calc(100% - 3.5rem);
1185
1185
  }
@@ -1228,6 +1228,9 @@ video {
1228
1228
  .min-h-\[80px\] {
1229
1229
  min-height: 80px;
1230
1230
  }
1231
+ .min-h-screen {
1232
+ min-height: 100vh;
1233
+ }
1231
1234
  .w-0 {
1232
1235
  width: 0px;
1233
1236
  }
@@ -1309,6 +1312,9 @@ video {
1309
1312
  .w-\[1\.2rem\] {
1310
1313
  width: 1.2rem;
1311
1314
  }
1315
+ .w-\[1000px\] {
1316
+ width: 1000px;
1317
+ }
1312
1318
  .w-\[12px\] {
1313
1319
  width: 12px;
1314
1320
  }
@@ -1345,15 +1351,9 @@ video {
1345
1351
  .w-\[42px\] {
1346
1352
  width: 42px;
1347
1353
  }
1348
- .w-\[500px\] {
1349
- width: 500px;
1350
- }
1351
1354
  .w-\[64px\] {
1352
1355
  width: 64px;
1353
1356
  }
1354
- .w-\[90\%\] {
1355
- width: 90%;
1356
- }
1357
1357
  .w-\[calc\(1\%\)\] {
1358
1358
  width: calc(1%);
1359
1359
  }
@@ -1576,19 +1576,6 @@ video {
1576
1576
  .snap-x {
1577
1577
  scroll-snap-type: x var(--tw-scroll-snap-strictness);
1578
1578
  }
1579
- .snap-mandatory {
1580
- --tw-scroll-snap-strictness: mandatory;
1581
- }
1582
- .snap-start {
1583
- scroll-snap-align: start;
1584
- }
1585
- .snap-always {
1586
- scroll-snap-stop: always;
1587
- }
1588
- .scroll-px-10 {
1589
- scroll-padding-left: 2.5rem;
1590
- scroll-padding-right: 2.5rem;
1591
- }
1592
1579
  .appearance-none {
1593
1580
  -webkit-appearance: none;
1594
1581
  -moz-appearance: none;
@@ -1769,15 +1756,9 @@ video {
1769
1756
  .overflow-y-clip {
1770
1757
  overflow-y: clip;
1771
1758
  }
1772
- .overflow-x-scroll {
1773
- overflow-x: scroll;
1774
- }
1775
1759
  .overflow-y-scroll {
1776
1760
  overflow-y: scroll;
1777
1761
  }
1778
- .scroll-smooth {
1779
- scroll-behavior: smooth;
1780
- }
1781
1762
  .truncate {
1782
1763
  overflow: hidden;
1783
1764
  text-overflow: ellipsis;
@@ -2027,10 +2008,6 @@ video {
2027
2008
  --tw-bg-opacity: 1;
2028
2009
  background-color: rgb(219 234 254 / var(--tw-bg-opacity));
2029
2010
  }
2030
- .bg-blue-200 {
2031
- --tw-bg-opacity: 1;
2032
- background-color: rgb(191 219 254 / var(--tw-bg-opacity));
2033
- }
2034
2011
  .bg-blue-300 {
2035
2012
  --tw-bg-opacity: 1;
2036
2013
  background-color: rgb(147 197 253 / var(--tw-bg-opacity));
@@ -2117,10 +2094,6 @@ video {
2117
2094
  --tw-bg-opacity: 1;
2118
2095
  background-color: rgb(220 252 231 / var(--tw-bg-opacity));
2119
2096
  }
2120
- .bg-green-300 {
2121
- --tw-bg-opacity: 1;
2122
- background-color: rgb(134 239 172 / var(--tw-bg-opacity));
2123
- }
2124
2097
  .bg-green-500 {
2125
2098
  --tw-bg-opacity: 1;
2126
2099
  background-color: rgb(34 197 94 / var(--tw-bg-opacity));
@@ -2138,10 +2111,6 @@ video {
2138
2111
  .bg-muted {
2139
2112
  background-color: hsl(var(--muted));
2140
2113
  }
2141
- .bg-orange-100 {
2142
- --tw-bg-opacity: 1;
2143
- background-color: rgb(255 237 213 / var(--tw-bg-opacity));
2144
- }
2145
2114
  .bg-orange-400 {
2146
2115
  --tw-bg-opacity: 1;
2147
2116
  background-color: rgb(251 146 60 / var(--tw-bg-opacity));
@@ -2188,10 +2157,6 @@ video {
2188
2157
  --tw-bg-opacity: 1;
2189
2158
  background-color: rgb(127 29 29 / var(--tw-bg-opacity));
2190
2159
  }
2191
- .bg-rose-100 {
2192
- --tw-bg-opacity: 1;
2193
- background-color: rgb(255 228 230 / var(--tw-bg-opacity));
2194
- }
2195
2160
  .bg-secondary {
2196
2161
  background-color: hsl(var(--secondary));
2197
2162
  }
@@ -2236,16 +2201,14 @@ video {
2236
2201
  .bg-opacity-80 {
2237
2202
  --tw-bg-opacity: 0.8;
2238
2203
  }
2239
- .bg-gradient-to-t {
2240
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
2241
- }
2242
2204
  .bg-none {
2243
2205
  background-image: none;
2244
2206
  }
2245
- .from-black {
2246
- --tw-gradient-from: #000 var(--tw-gradient-from-position);
2247
- --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
2248
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
2207
+ .bg-cover {
2208
+ background-size: cover;
2209
+ }
2210
+ .bg-center {
2211
+ background-position: center;
2249
2212
  }
2250
2213
  .fill-current {
2251
2214
  fill: currentColor;
@@ -2716,9 +2679,6 @@ video {
2716
2679
  --tw-text-opacity: 1;
2717
2680
  color: rgb(255 255 255 / var(--tw-text-opacity));
2718
2681
  }
2719
- .text-white\/50 {
2720
- color: rgb(255 255 255 / 0.5);
2721
- }
2722
2682
  .text-yellow-700 {
2723
2683
  --tw-text-opacity: 1;
2724
2684
  color: rgb(161 98 7 / var(--tw-text-opacity));
@@ -2918,6 +2878,9 @@ video {
2918
2878
  .duration-300 {
2919
2879
  transition-duration: 300ms;
2920
2880
  }
2881
+ .duration-500 {
2882
+ transition-duration: 500ms;
2883
+ }
2921
2884
  .will-change-\[opacity\2c transform\] {
2922
2885
  will-change: opacity,transform;
2923
2886
  }
@@ -2968,6 +2931,9 @@ video {
2968
2931
  .duration-300 {
2969
2932
  animation-duration: 300ms;
2970
2933
  }
2934
+ .duration-500 {
2935
+ animation-duration: 500ms;
2936
+ }
2971
2937
  .delay-100 {
2972
2938
  animation-delay: 100ms;
2973
2939
  }
@@ -3269,6 +3235,10 @@ body {
3269
3235
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
3270
3236
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
3271
3237
  }
3238
+ .hover\:drop-shadow-2xl:hover {
3239
+ --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));
3240
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
3241
+ }
3272
3242
  .hover\:drop-shadow-lg:hover {
3273
3243
  --tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / 0.04)) drop-shadow(0 4px 3px rgb(0 0 0 / 0.1));
3274
3244
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
@@ -4049,10 +4019,6 @@ body {
4049
4019
  display: flex;
4050
4020
  }
4051
4021
 
4052
- .sm\:w-\[44\%\] {
4053
- width: 44%;
4054
- }
4055
-
4056
4022
  .sm\:columns-2 {
4057
4023
  -moz-columns: 2;
4058
4024
  columns: 2;
@@ -4164,10 +4130,6 @@ body {
4164
4130
  width: 12rem;
4165
4131
  }
4166
4132
 
4167
- .md\:w-\[30\%\] {
4168
- width: 30%;
4169
- }
4170
-
4171
4133
  .md\:w-full {
4172
4134
  width: 100%;
4173
4135
  }
@@ -4197,6 +4159,10 @@ body {
4197
4159
  grid-template-columns: repeat(2, minmax(0, 1fr));
4198
4160
  }
4199
4161
 
4162
+ .md\:grid-cols-3 {
4163
+ grid-template-columns: repeat(3, minmax(0, 1fr));
4164
+ }
4165
+
4200
4166
  .md\:flex-row {
4201
4167
  flex-direction: row;
4202
4168
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sikka/hawa",
3
- "version": "0.1.85",
3
+ "version": "0.1.87",
4
4
  "description": "Modern UI Kit made with Tailwind & Radix Primitives",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -9,11 +9,15 @@ type AppLandingTypes = {
9
9
  handleSignUp: () => void
10
10
  handleLanguage: () => void
11
11
  handleColorMode: () => void
12
- texts: {
12
+ texts?: {
13
13
  signIn: string
14
14
  signUp: string
15
15
  lang: string
16
+ newUserText?: string
17
+ createAccount?: string
16
18
  }
19
+ withoutSignUp?: boolean
20
+ handleRouteToSignUp?: () => void
17
21
  size: "small" | "normal" | "full"
18
22
  }
19
23
 
@@ -67,12 +71,18 @@ export const AppLanding: FC<AppLandingTypes> = (props) => {
67
71
  {props.handleSignUp && (
68
72
  <Button onClick={props.handleSignUp}>{props.texts.signUp}</Button>
69
73
  )} */}
70
- <a href="#" className="text-center text-sm">
71
- Don't have an account?{" "}
72
- <a href="#" className="clickable-link">
73
- Sign Up
74
- </a>
75
- </a>
74
+ {!props.withoutSignUp && (
75
+ <div className="p-3 text-center text-sm font-normal dark:text-gray-300">
76
+ {props.texts.newUserText}{" "}
77
+ <span
78
+ onClick={props.handleRouteToSignUp}
79
+ className="clickable-link"
80
+ >
81
+ {props.texts.createAccount}
82
+ </span>
83
+ </div>
84
+ )}
85
+
76
86
  </CardContent>
77
87
  </Card>
78
88
  <div className="mt-6 flex flex-row justify-between">
@@ -135,7 +135,7 @@ export const SignInForm: FC<SignInFormTypes> = (props) => {
135
135
  {props.texts.signInText}
136
136
  </Button>
137
137
  {!props.withoutSignUp && (
138
- <div className="p-3 text-center text-sm font-semibold dark:text-gray-300">
138
+ <div className="p-3 text-center text-sm font-normal dark:text-gray-300">
139
139
  {props.texts.newUserText}{" "}
140
140
  <span
141
141
  onClick={props.handleRouteToSignUp}
@@ -295,7 +295,7 @@ export const SignUpForm: FC<SignUpFormTypes> = (props) => {
295
295
  </Button>
296
296
  </form>
297
297
  </FormProvider>
298
- <div className="flex flex-row items-center justify-center gap-1 p-3 text-center text-sm font-semibold dark:text-white">
298
+ <div className="flex flex-row items-center justify-center gap-1 p-3 text-center text-sm font-normal dark:text-white">
299
299
  <span>{props.texts.existingUserText}</span>
300
300
  <span
301
301
  onClick={props.handleRouteToSignIn}
@@ -28,30 +28,30 @@ export const CreditCardForm: FC<CreditCardFormTypes> = (props) => {
28
28
  render={({ field }) => (
29
29
  <HawaTextField
30
30
  width="full"
31
- name="password"
32
- placeholder="Enter password"
33
- type="tel"
31
+ name="cardNumber"
32
+ placeholder="1234 1234 1234 1234"
33
+ type="number"
34
34
  label="Card Number"
35
35
  helpertext={errors.password?.message}
36
36
  />
37
37
  )}
38
38
  rules={{
39
- required: "Password is rquired",
39
+ required: "Card Number is rquired",
40
40
  }}
41
41
  />
42
42
  <div className="w-1/4">
43
43
  <Controller
44
44
  control={control}
45
- name="cardName"
45
+ name="cardCVC"
46
46
  render={({ field }) => (
47
47
  <HawaTextField
48
48
  width="full"
49
- name="password"
49
+ name="cardCVC"
50
50
  maxLength="3"
51
51
  autoComplete="cc-number"
52
- placeholder=""
53
- type="password"
54
- label="CCV"
52
+ placeholder="CVC"
53
+ type="number"
54
+ label="CVC"
55
55
  helpertext={errors.password?.message}
56
56
  />
57
57
  )}
@@ -61,16 +61,17 @@ export const CreditCardForm: FC<CreditCardFormTypes> = (props) => {
61
61
  />
62
62
  </div>
63
63
  </div>
64
+
64
65
  <Controller
65
66
  control={control}
66
- name="cardName"
67
+ name="cardExpiry"
67
68
  render={({ field }) => (
68
69
  <HawaTextField
69
70
  width="full"
70
- name="password"
71
- placeholder="Enter password"
72
- type="text"
73
- label="Name On Card"
71
+ name="cardExpiry"
72
+ placeholder="MM / YY"
73
+ type="password"
74
+ label="Expiry Date"
74
75
  helpertext={errors.password?.message}
75
76
  />
76
77
  )}
@@ -84,15 +85,15 @@ export const CreditCardForm: FC<CreditCardFormTypes> = (props) => {
84
85
  render={({ field }) => (
85
86
  <HawaTextField
86
87
  width="full"
87
- name="password"
88
- placeholder="Enter password"
89
- type="password"
90
- label="Expiry Date"
88
+ name="cardName"
89
+ // placeholder="Enter password"
90
+ type="text"
91
+ label="Name on card"
91
92
  helpertext={errors.password?.message}
92
93
  />
93
94
  )}
94
95
  rules={{
95
- required: "Password is rquired",
96
+ required: "Card holder name is rquired",
96
97
  }}
97
98
  />
98
99
  </CardContent>
@@ -0,0 +1,64 @@
1
+ import React, { FC, useState } from "react"
2
+ import { Button } from "./Button"
3
+
4
+ type ImageCardTypes = {
5
+ children: any
6
+ align?: any
7
+ bottomElement?: any
8
+ inCardActions?: any
9
+ cardImage?: string
10
+ title?: string
11
+ subtitle?: string
12
+ blank?: boolean
13
+ }
14
+ export const ActionCard: FC<ImageCardTypes> = (props) => {
15
+ const [hovered, setHovered] = useState(false)
16
+
17
+ return (
18
+ <div className="flex h-full w-full flex-col gap-1 ">
19
+ <div
20
+ className="group relative h-full w-full rounded border bg-background bg-cover bg-center transition-all duration-500 hover:drop-shadow-2xl"
21
+ style={{
22
+ backgroundImage: `url(${props.blank ? "" : props.cardImage})`,
23
+ }}
24
+ onMouseEnter={() => setHovered(true)}
25
+ onMouseLeave={() => setHovered(false)}
26
+ >
27
+ {props.blank ? (
28
+ <div className="flex h-full flex-col items-center justify-center ">
29
+ <svg
30
+ className="h-10 w-10 text-foreground"
31
+ stroke="currentColor"
32
+ fill="currentColor"
33
+ stroke-width="0"
34
+ viewBox="0 0 24 24"
35
+ height="1em"
36
+ width="1em"
37
+ xmlns="http://www.w3.org/2000/svg"
38
+ >
39
+ <path d="M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z"></path>
40
+ </svg>
41
+ </div>
42
+ ) : (
43
+ <div className="absolute inset-0 rounded bg-black opacity-50"></div>
44
+ )}
45
+ <div className="absolute bottom-2 right-2 z-10 opacity-0 transition-all duration-200 group-hover:opacity-100">
46
+ {props.inCardActions}
47
+ </div>
48
+ {!props.blank && (
49
+ <div className="relative p-4">
50
+ <h1 className="text-white">{props.title}</h1>
51
+ <p className="text-white">{props.subtitle}</p>
52
+ </div>
53
+ )}
54
+ </div>
55
+ <div
56
+ className={`flex flex-row justify-between text-sm transition-all duration-200 ${
57
+ hovered ? "opacity-100" : "opacity-0"
58
+ }`}
59
+ >
60
+ {props.bottomElement}
61
+ </div>
62
+ </div>
63
+ )
64
+ }
@@ -6,7 +6,7 @@ interface CarouselProps {
6
6
  }
7
7
 
8
8
  export const Carousel: React.FC<CarouselProps> = ({ images }) => {
9
- const imageWidth = 240 + 16 // Adjust according to your image width
9
+ const imageWidth = 1000 + 16 // Adjust according to your image width
10
10
  const {
11
11
  containerRef,
12
12
  handleMouseDown,
@@ -17,7 +17,7 @@ export const Carousel: React.FC<CarouselProps> = ({ images }) => {
17
17
 
18
18
  return (
19
19
  <div
20
- className="flex cursor-pointer snap-x gap-4 overflow-x-scroll"
20
+ className="flex cursor-pointer snap-x gap-4 overflow-x-hidden justify-center items-center"
21
21
  onMouseDown={handleMouseDown}
22
22
  onMouseLeave={handleMouseLeave}
23
23
  onMouseUp={handleMouseUp}
@@ -25,10 +25,12 @@ export const Carousel: React.FC<CarouselProps> = ({ images }) => {
25
25
  ref={containerRef}
26
26
  >
27
27
  {images.map((image, index) => (
28
- <div key={index} className="h-40 w-60 flex-shrink-0">
28
+ <div key={index} className="w-[1000px] h-96 flex-shrink-0">
29
+ {/* <div key={index} className="h-40 w-60 flex-shrink-0"> */}
29
30
  <img
30
31
  src={image}
31
32
  alt={`Carousel Image ${index}`}
33
+ width={imageWidth}
32
34
  className="h-full w-full rounded-lg object-cover"
33
35
  />
34
36
  </div>
@@ -37,155 +39,3 @@ export const Carousel: React.FC<CarouselProps> = ({ images }) => {
37
39
  )
38
40
  }
39
41
 
40
- // import React, { FC, useEffect, useRef } from "react"
41
- // import clsx from "clsx"
42
-
43
- // type CarouselTypes = {
44
- // /** The text inside the chip */
45
- // label: string
46
- // /** The small icon before the chip label */
47
- // icon?: JSX.Element
48
- // /** The color of the chip, must be a tailwind color */
49
- // color?: string
50
- // /** The size of the chip */
51
- // size?: "small" | "normal" | "large"
52
- // /** Enable/Disable the dot before the label of the chip */
53
- // dot?: boolean
54
- // /** Red/Green dot next to the label of the chip indicating online/offline or available/unavailable */
55
- // dotType?: "available" | "unavailable"
56
- // }
57
-
58
- // export const Carousel: FC<CarouselTypes> = (props) => {
59
- // const scrollContainer = useRef(null)
60
-
61
- // useEffect(() => {
62
- // let isDown = false
63
- // let startX
64
- // let scrollLeft
65
-
66
- // const onMouseDown = (e) => {
67
- // isDown = true
68
- // startX = e.pageX
69
- // scrollLeft = scrollContainer.current.scrollLeft
70
- // }
71
-
72
- // const onMouseLeave = () => {
73
- // isDown = false
74
- // }
75
-
76
- // const onMouseUp = () => {
77
- // isDown = false
78
- // }
79
-
80
- // const onMouseMove = (e) => {
81
- // if (!isDown) return
82
- // e.preventDefault()
83
- // const x = e.pageX
84
- // const walk = x - startX
85
- // scrollContainer.current.scrollLeft = scrollLeft - walk
86
- // }
87
-
88
- // const container = scrollContainer.current
89
- // container.addEventListener("mousedown", onMouseDown)
90
- // container.addEventListener("mouseleave", onMouseLeave)
91
- // container.addEventListener("mouseup", onMouseUp)
92
- // container.addEventListener("mousemove", onMouseMove)
93
-
94
- // return () => {
95
- // container.removeEventListener("mousedown", onMouseDown)
96
- // container.removeEventListener("mouseleave", onMouseLeave)
97
- // container.removeEventListener("mouseup", onMouseUp)
98
- // container.removeEventListener("mousemove", onMouseMove)
99
- // }
100
- // }, [])
101
- // return (
102
- // <div className="relative flex flex-col items-center justify-center overflow-hidden bg-gray-50">
103
- // <div className="w-[500px]">
104
- // <div
105
- // ref={scrollContainer}
106
- // className="scrollbar-hide mt-14 flex w-full snap-x snap-mandatory scroll-px-10 gap-10 overflow-x-scroll scroll-smooth px-10"
107
- // >
108
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-orange-100 sm:w-[44%] md:w-[30%]">
109
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
110
- // <h2 className="mt-4 text-xl font-bold text-white">Cangu</h2>
111
- // <p className="text-sm text-white/50">Indonesia</p>
112
- // </div>
113
- // <img
114
- // src="https://source.unsplash.com/9bp48ITvd00"
115
- // alt="image"
116
- // className="h-full w-full rounded-xl object-cover"
117
- // />
118
- // </div>
119
-
120
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-orange-100 sm:w-[44%] md:w-[30%]">
121
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
122
- // <h2 className="mt-4 text-xl font-bold text-white">New York</h2>
123
- // <p className="text-sm text-white/50">United States</p>
124
- // </div>
125
- // <img
126
- // src="https://source.unsplash.com/4HG5hlhmZg8"
127
- // className="h-full w-full rounded-xl object-cover"
128
- // />
129
- // </div>
130
-
131
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-blue-100 sm:w-[44%] md:w-[30%]">
132
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
133
- // <h2 className="mt-4 text-xl font-bold text-white">London</h2>
134
- // <p className="text-sm text-white/50">United Kingdom</p>
135
- // </div>
136
- // <img
137
- // src="https://source.unsplash.com/oBmlsTW2pHY"
138
- // className="h-full w-full rounded-xl object-cover"
139
- // />
140
- // </div>
141
-
142
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-green-100 sm:w-[44%] md:w-[30%]">
143
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
144
- // <h2 className="mt-4 text-xl font-bold text-white">Bali</h2>
145
- // <p className="text-sm text-white/50">Indonesia</p>
146
- // </div>
147
- // <img
148
- // src="https://source.unsplash.com/1kdIG_258bU"
149
- // className="h-full w-full rounded-xl object-cover"
150
- // />
151
- // </div>
152
-
153
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-rose-100 sm:w-[44%] md:w-[30%]">
154
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
155
- // <h2 className="mt-4 text-xl font-bold text-white">
156
- // Times Square
157
- // </h2>
158
- // <p className="text-sm text-white/50">Singapore</p>
159
- // </div>
160
- // <img
161
- // src="https://source.unsplash.com/l8vKWxhVuts"
162
- // className="h-full w-full rounded-xl object-cover"
163
- // />
164
- // </div>
165
-
166
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-yellow-100 sm:w-[44%] md:w-[30%]">
167
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
168
- // <h2 className="mt-4 text-xl font-bold text-white">Bangkok</h2>
169
- // <p className="text-sm text-white/50">Thailand</p>
170
- // </div>
171
- // <img
172
- // src="https://source.unsplash.com/0LGDmbnk0-U"
173
- // className="h-full w-full rounded-xl object-cover"
174
- // />
175
- // </div>
176
-
177
- // <div className="md:2/3 relative aspect-[2/3] w-[90%] shrink-0 snap-start snap-always rounded-xl bg-red-100 sm:w-[44%] md:w-[30%]">
178
- // <div className="absolute bottom-0 z-10 w-full rounded-xl bg-gradient-to-t from-black px-5 py-3">
179
- // <h2 className="mt-4 text-xl font-bold text-white">Latina</h2>
180
- // <p className="text-sm text-white/50">South America</p>
181
- // </div>
182
- // <img
183
- // src="https://source.unsplash.com/tVqQSfXQ_SI"
184
- // className="h-full w-full rounded-xl object-cover"
185
- // />
186
- // </div>
187
- // </div>
188
- // </div>
189
- // </div>
190
- // )
191
- // }