stay_commerce-frontend 0.1.0 → 0.1.1

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/bundle.css +8665 -6069
  3. data/app/assets/builds/bundle.css.map +3 -3
  4. data/app/assets/builds/bundle.js +37877 -27557
  5. data/app/assets/builds/bundle.js.map +4 -4
  6. data/app/assets/builds/styles.css +6328 -5031
  7. data/app/assets/builds/styles.css.map +3 -3
  8. data/app/javascript/react/components/Accountpage/AccountInfo.jsx +2 -1
  9. data/app/javascript/react/components/AddNewProperty/CommonLayout.jsx +0 -2
  10. data/app/javascript/react/components/AddNewProperty/Description.jsx +51 -52
  11. data/app/javascript/react/components/AddNewProperty/Details.jsx +212 -129
  12. data/app/javascript/react/components/AddNewProperty/Images.jsx +122 -45
  13. data/app/javascript/react/components/AddNewProperty/Location.jsx +21 -14
  14. data/app/javascript/react/components/AddNewProperty/Room.jsx +639 -548
  15. data/app/javascript/react/components/AvatarDropdown/AvatarDropDown.jsx +9 -1
  16. data/app/javascript/react/components/FacilitiesSection/Facilities.jsx +18 -0
  17. data/app/javascript/react/components/FixedNavbar/FixedNav.jsx +20 -14
  18. data/app/javascript/react/components/HeroSectionDesign/BookingForm.jsx +136 -88
  19. data/app/javascript/react/components/HeroSectionDesign/MyPropertiesListing.jsx +79 -69
  20. data/app/javascript/react/components/Layout/Layout.js +8 -1
  21. data/app/javascript/react/components/Listing-stay-Detail/ApartmentCard.jsx +3 -3
  22. data/app/javascript/react/components/Listing-stay-Detail/BookingModal.jsx +167 -122
  23. data/app/javascript/react/components/Listing-stay-Detail/CardManager.jsx +285 -0
  24. data/app/javascript/react/components/Listing-stay-Detail/CheckoutForm.jsx +147 -84
  25. data/app/javascript/react/components/Listing-stay-Detail/ListingStayDetailPage.jsx +1 -7
  26. data/app/javascript/react/components/Listing-stay-Detail/PropertiesPage.jsx +464 -0
  27. data/app/javascript/react/components/MobileNav/MobileMenu.jsx +1 -4
  28. data/app/javascript/react/components/PropertyListing/MyProperties.jsx +45 -44
  29. data/app/javascript/react/components/PropertyListing/StayBooking/BookingDetails.jsx +4 -4
  30. data/app/javascript/react/components/PropertyListing/StayBooking/MyBooking.jsx +41 -29
  31. data/app/javascript/react/components/StayCard/StayCard.jsx +5 -3
  32. data/app/javascript/react/packs/index.jsx +1 -0
  33. data/app/javascript/react/packs/routes/Route.jsx +18 -1
  34. data/app/javascript/react/pages/Home.jsx +6 -4
  35. data/app/javascript/react/redux/slices/PropertySlice/PropertySlice.jsx +21 -21
  36. data/app/javascript/react/redux/slices/PropertySlice/Searchslice.jsx +53 -6
  37. data/app/javascript/react/redux/slices/UserSlice/UserSlice.jsx +1 -0
  38. data/app/javascript/react/shared/Avatar/Avatar.jsx +5 -8
  39. data/app/javascript/react/shared/Button/SecondryButton.jsx +9 -0
  40. data/app/javascript/react/shared/Loader.jsx +13 -0
  41. data/app/javascript/react/shared/Pagination.jsx +53 -0
  42. data/app/javascript/react/shared/Schema/FormSchema +143 -0
  43. data/app/javascript/react/styles/BookingDetails.scss +1 -0
  44. data/app/javascript/react/styles/CardManager.scss +608 -0
  45. data/app/javascript/react/styles/Loader.scss +30 -0
  46. data/app/javascript/react/styles/Pagination.scss +33 -0
  47. data/app/javascript/react/styles/PropertiesPage.scss +0 -4
  48. data/app/javascript/react/styles/RenderSection.scss +1 -0
  49. data/app/javascript/react/styles/accountpage.scss +3 -0
  50. data/app/javascript/react/styles/application.scss +13 -1
  51. data/app/javascript/react/styles/bookingform.scss +56 -28
  52. data/app/javascript/react/styles/buttonSecondry.scss +24 -0
  53. data/app/javascript/react/styles/checkbox.scss +34 -35
  54. data/app/javascript/react/styles/commonlayout.scss +7 -2
  55. data/app/javascript/react/styles/commonpage.scss +5 -1
  56. data/app/javascript/react/styles/description.scss +3 -0
  57. data/app/javascript/react/styles/facilities.scss +2 -1
  58. data/app/javascript/react/styles/fixednavbar.scss +8 -0
  59. data/app/javascript/react/styles/listingstaydetailpage.scss +5 -0
  60. data/app/javascript/react/styles/mobilemenu.scss +0 -1
  61. data/app/javascript/react/styles/mybooking.scss +20 -0
  62. data/app/javascript/react/styles/myproperty.scss +26 -0
  63. data/app/javascript/react/styles/propertydetailscard.scss +265 -267
  64. data/app/javascript/react/styles/react-datepicker/react-datepicker.css +869 -0
  65. data/app/javascript/react/styles/room.scss +13 -8
  66. data/app/javascript/react/utils/helpers/ToastErros.js +12 -0
  67. data/db/migrate/20250627101451_add_role_to_stay_users.rb +5 -0
  68. data/lib/stay_commerce/frontend/version.rb +1 -1
  69. metadata +15 -5
  70. data/app/javascript/react/components/HeroSectionDesign/PropertiesPage.jsx +0 -122
  71. data/app/javascript/react/shared/DateField/CustomDatePicker.jsx +0 -69
  72. data/app/javascript/react/styles/customdatepicker.scss +0 -120
@@ -31,47 +31,46 @@
31
31
  }
32
32
  }
33
33
 
34
- .booking-title {
35
- color: #fff;
36
- font-size: 24px;
37
- font-weight: bold;
38
- text-transform: uppercase;
39
- line-height: 1.2;
40
- text-align: center;
41
- margin-bottom: 10px;
42
-
43
- @media (max-width: 768px) {
44
- width: 100%;
45
- text-align: center;
46
- margin-bottom: 15px;
47
- }
48
- }
49
-
50
34
  .form-fields {
51
35
  width: 100%;
52
36
 
53
37
  .form-row {
54
38
  display: flex;
55
39
  flex-direction: row;
56
- align-items: center;
40
+ align-items: flex-start; // Changed from center to flex-start for better error alignment
57
41
  gap: 15px;
58
42
  flex-wrap: wrap;
59
43
 
60
44
  @media (max-width: 768px) {
61
45
  flex-direction: column;
46
+ gap: 25px;
62
47
  }
63
48
  }
64
49
  }
65
50
 
51
+ .input-wrapper {
52
+ flex: 1;
53
+ min-width: 150px;
54
+ position: relative;
55
+
56
+ @media (max-width: 768px) {
57
+ width: 100%;
58
+ }
59
+ }
60
+
66
61
  .input-group {
67
62
  position: relative;
68
63
  display: flex;
69
- flex: 1;
70
64
  align-items: center;
71
- border: 1px solid #555;
65
+ border: 1px solid #e1dddd;
72
66
  padding: 3px;
73
- min-width: 150px;
74
67
  border-radius: 5px;
68
+ transition: all 0.3s ease;
69
+
70
+ &.has-error {
71
+ border-color: #ff3860;
72
+ box-shadow: 0 0 0 2px rgba(255, 56, 96, 0.2);
73
+ }
75
74
  }
76
75
 
77
76
  .form-control {
@@ -81,11 +80,11 @@
81
80
  color: #777;
82
81
  font-size: 14px;
83
82
  padding: 8px;
84
- }
85
83
 
86
- .form-control:focus {
87
- outline: none;
88
- border-color: #081976;
84
+ &:focus {
85
+ outline: none;
86
+ border-color: #081976;
87
+ }
89
88
  }
90
89
 
91
90
  select.form-control {
@@ -97,18 +96,23 @@
97
96
  align-items: center;
98
97
  justify-content: center;
99
98
  flex-shrink: 0;
100
- min-width: 150px;
101
99
  margin-top: 12px;
100
+ align-self: flex-end;
102
101
 
103
102
  @media (min-width: 769px) {
104
103
  margin-top: 0;
105
104
  }
105
+
106
+ @media (max-width: 768px) {
107
+ width: 100%;
108
+ margin-top: 15px;
109
+ }
106
110
  }
107
111
 
108
112
  .book-now-btn {
109
113
  background-color: #db7c0b;
110
114
  width: 100%;
111
- padding: 10px 20px;
115
+ padding: 12px 20px;
112
116
  font-weight: bold;
113
117
  font-size: 16px;
114
118
  border-radius: 0;
@@ -116,9 +120,33 @@
116
120
  cursor: pointer;
117
121
  text-align: center;
118
122
  transition: background-color 0.3s;
123
+
124
+ &:hover {
125
+ background: #e6a600;
126
+ }
127
+ }
128
+
129
+ .error-message {
130
+ color: #ff3860;
131
+ font-size: 12px;
132
+ margin-top: 5px;
133
+ position: absolute;
134
+ left: 0;
135
+ bottom: -18px;
136
+ width: 100%;
137
+ text-align: left;
138
+ padding-left: 5px;
139
+ animation: fadeIn 0.3s ease;
119
140
  }
120
141
 
121
- .book-now-btn:hover {
122
- background: #e6a600;
142
+ @keyframes fadeIn {
143
+ from {
144
+ opacity: 0;
145
+ transform: translateY(-5px);
146
+ }
147
+ to {
148
+ opacity: 1;
149
+ transform: translateY(0);
150
+ }
123
151
  }
124
152
  }
@@ -0,0 +1,24 @@
1
+ .sec-primary {
2
+ background-color: white;
3
+ color: var(--primary-color);
4
+ padding: 12px 24px;
5
+ font-size: 16px;
6
+ font-weight: 600;
7
+ border-radius: 6px;
8
+ transition: background-color 0.3s ease-in-out;
9
+ border: 1px solid var(--primary-color);
10
+ cursor: pointer;
11
+ display: flex;
12
+ align-items: center;
13
+ text-align: center;
14
+
15
+ &:hover {
16
+ background-color: var(--primary-color);
17
+ color: white;
18
+ }
19
+
20
+ &:disabled {
21
+ background-color: var(--disabled-color);
22
+ cursor: not-allowed;
23
+ }
24
+ }
@@ -1,37 +1,36 @@
1
1
  .checkbox-wrapper {
2
- display: flex;
3
- font-size: 0.875rem;
4
- @media (min-width: 640px) {
5
- font-size: 1rem;
6
- }
2
+ display: flex;
3
+ font-size: 0.875rem;
4
+ @media (min-width: 640px) {
5
+ font-size: 1rem;
7
6
  }
8
-
9
- .checkbox-input {
10
- height: 1.5rem;
11
- width: 1.5rem;
12
- background-color: white;
13
- border: 1px solid #737373;
14
- border-radius: 0.25rem;
15
- color: #3b82f6;
16
- accent-color: #3b82f6;
17
- }
18
-
19
- .checkbox-label {
20
- margin-left: 0.875rem;
21
- display: flex;
22
- flex-direction: column;
23
- flex: 1;
24
- justify-content: center;
25
- }
26
-
27
- .checkbox-text {
28
- color: #111827;
29
- }
30
-
31
- .checkbox-subtext {
32
- margin-top: 0.25rem;
33
- font-size: 0.875rem;
34
- font-weight: 300;
35
- color: #6b7280;
36
- }
37
-
7
+ }
8
+
9
+ .checkbox-input {
10
+ height: 1.5rem;
11
+ width: 1.5rem;
12
+ background-color: white;
13
+ border: 1px solid #737373;
14
+ border-radius: 0.25rem;
15
+ color: var(--primary-color);
16
+ accent-color: var(--primary-color);
17
+ }
18
+
19
+ .checkbox-label {
20
+ margin-left: 0.875rem;
21
+ display: flex;
22
+ flex-direction: column;
23
+ flex: 1;
24
+ justify-content: center;
25
+ }
26
+
27
+ .checkbox-text {
28
+ color: #111827;
29
+ }
30
+
31
+ .checkbox-subtext {
32
+ margin-top: 0.25rem;
33
+ font-size: 0.875rem;
34
+ font-weight: 300;
35
+ color: #6b7280;
36
+ }
@@ -2,7 +2,7 @@
2
2
  max-width: 842px;
3
3
  margin: auto;
4
4
  padding: 2rem 1rem;
5
- margin-top: 10rem;
5
+ margin-top: 5rem;
6
6
  margin-bottom: 5rem;
7
7
 
8
8
  .steps-container {
@@ -55,6 +55,11 @@
55
55
  background-color: #081976;
56
56
  }
57
57
  }
58
+ @media screen and (max-width: 768px) {
59
+ .step-line {
60
+ width: 40px;
61
+ }
62
+ }
58
63
  }
59
64
  .step:not(:last-child) .step-line {
60
65
  display: block;
@@ -78,6 +83,6 @@
78
83
  }
79
84
 
80
85
  .content {
81
- margin-top: 3rem;
86
+ margin-top: 2rem;
82
87
  }
83
88
  }
@@ -9,7 +9,11 @@ $primary-color: #db7c0b;
9
9
  .navbarWrapper {
10
10
  border-bottom: 1px solid #d1d5db;
11
11
  background-color: #ffffff;
12
- padding-top: 62px;
12
+ padding-top: 35px;
13
+ @media screen and (max-width: 768px) {
14
+ padding-left: 20px;
15
+ padding-right: 20px;
16
+ }
13
17
  }
14
18
 
15
19
  .container {
@@ -18,4 +18,7 @@
18
18
  flex-direction: column;
19
19
  padding: 20px;
20
20
  gap: 1.5rem;
21
+ @media screen and (max-width: 768px) {
22
+ padding: 0;
23
+ }
21
24
  }
@@ -1,10 +1,11 @@
1
1
  .modern-facilities-section {
2
2
  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
3
3
  padding: 1rem 2rem;
4
- min-height: 100vh;
5
4
  display: flex;
6
5
  align-items: center;
7
6
  justify-content: center;
7
+ padding-top: 40px;
8
+ padding-bottom: 40px;
8
9
  }
9
10
 
10
11
  .facilities-container {
@@ -21,6 +21,14 @@ $primary-color: #081976;
21
21
  justify-content: space-between;
22
22
  align-items: center;
23
23
  height: 79px;
24
+ @media screen and (max-width: 1280px) {
25
+ padding-left: 20px;
26
+ padding-right: 20px;
27
+ }
28
+ @media screen and (max-width: 768px) {
29
+ padding-left: 30px;
30
+ padding-right: 30px;
31
+ }
24
32
  }
25
33
 
26
34
  .logo {
@@ -3,17 +3,22 @@
3
3
  margin-top: 4.5rem;
4
4
  padding: 1rem;
5
5
  margin: 4.5rem auto 0;
6
+ padding-top: 10px;
6
7
  }
7
8
 
8
9
  @media (min-width: 640px) {
9
10
  .listing-detail-page {
10
11
  padding: 4rem;
12
+ padding-top: 10px;
13
+ padding-bottom: 0;
11
14
  }
12
15
  }
13
16
 
14
17
  @media (min-width: 1024px) {
15
18
  .listing-detail-page {
16
19
  padding: 3rem;
20
+ padding-top: 10px;
21
+ padding-bottom: 0;
17
22
  }
18
23
  }
19
24
 
@@ -42,7 +42,6 @@
42
42
  @media (max-width: 990px) {
43
43
  .mobileMenu .hamburger {
44
44
  display: block;
45
- margin-top:11px;
46
45
  }
47
46
 
48
47
  .desktopMenu , .smallMenu{
@@ -102,3 +102,23 @@
102
102
  padding: 30px 0;
103
103
  color: #666;
104
104
  }
105
+
106
+ .loader-spinner {
107
+ width: 40px;
108
+ height: 40px;
109
+ margin: 40px auto;
110
+ border: 4px solid #007bff;
111
+ border-top: 4px solid transparent;
112
+ border-radius: 50%;
113
+ animation: spin 0.7s linear infinite;
114
+ }
115
+
116
+ @keyframes spin {
117
+ 100% {
118
+ transform: rotate(360deg);
119
+ }
120
+ }
121
+
122
+ .pagination_header {
123
+ margin-top: 20px;
124
+ }
@@ -49,3 +49,29 @@
49
49
  font-weight: bold;
50
50
  cursor: pointer;
51
51
  }
52
+
53
+ .no-property-message {
54
+ min-height: 70vh;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ text-align: center;
59
+ font-weight: bold;
60
+ font-size: 24px;
61
+ }
62
+
63
+ .view-secondary-btn {
64
+ background-color: #f0f0f0;
65
+ color: #333;
66
+ padding: 10px 20px;
67
+ border-radius: 24px;
68
+ text-decoration: none;
69
+ transition: all 0.3s ease;
70
+ cursor: pointer;
71
+ border: 1px solid #ccc;
72
+
73
+ &:hover {
74
+ background-color: #e0e0e0;
75
+ color: white;
76
+ }
77
+ }