mautourco-components 0.2.7 → 0.2.9

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 (34) hide show
  1. package/dist/components/atoms/Icon/Icon.d.ts +1 -0
  2. package/dist/components/atoms/Icon/Icon.js +3 -4
  3. package/dist/components/atoms/Icon/icons/Chevron.d.ts +2 -0
  4. package/dist/components/atoms/Icon/icons/Chevron.js +10 -10
  5. package/dist/components/atoms/Typography/Typography.d.ts +2 -0
  6. package/dist/components/atoms/Typography/Typography.js +13 -4
  7. package/dist/components/molecules/RatingTab/RatingTab.js +1 -1
  8. package/dist/components/molecules/ServiceSelector/ServiceSelector.d.ts +22 -0
  9. package/dist/components/molecules/ServiceSelector/ServiceSelector.js +85 -0
  10. package/dist/components/molecules/ServiceSelector/index.d.ts +2 -0
  11. package/dist/components/molecules/ServiceSelector/index.js +1 -0
  12. package/dist/components/organisms/PaxSelector/PaxSelector.js +3 -3
  13. package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.js +2 -2
  14. package/dist/components/ui/button.d.ts +1 -1
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.js +1 -0
  17. package/dist/styles/components/molecule/service-selector.css +2310 -0
  18. package/dist/styles/components/organism/pax-selector.css +3 -15
  19. package/dist/styles/components/organism/search-bar-transfer.css +4 -10
  20. package/dist/styles/components/rating-tab.css +1 -3
  21. package/package.json +1 -1
  22. package/src/components/atoms/Icon/Icon.tsx +4 -3
  23. package/src/components/atoms/Icon/icons/Chevron.tsx +30 -11
  24. package/src/components/atoms/Typography/Typography.tsx +29 -2
  25. package/src/components/molecules/RatingTab/RatingTab.tsx +1 -1
  26. package/src/components/molecules/ServiceSelector/ServiceSelector.tsx +179 -0
  27. package/src/components/molecules/ServiceSelector/index.ts +3 -0
  28. package/src/components/organisms/PaxSelector/PaxSelector.tsx +4 -4
  29. package/src/components/organisms/SearchBarTransfer/SearchBarTransfer.tsx +3 -3
  30. package/src/styles/components/molecule/service-selector.css +228 -0
  31. package/src/styles/components/organism/pax-selector.css +3 -15
  32. package/src/styles/components/organism/search-bar-transfer.css +4 -10
  33. package/src/styles/components/rating-tab.css +1 -3
  34. package/src/components/atoms/Icon/icons/ChevronDownIcon.tsx +0 -46
@@ -0,0 +1,228 @@
1
+ /* Service Selector Component Styles */
2
+
3
+ .service-selector {
4
+ position: relative;
5
+ width: 100%;
6
+ }
7
+
8
+ /* Trigger Button */
9
+ .service-selector__trigger {
10
+ width: 100%;
11
+ padding: var(--service-selector-spacing-service-selector-padding-y, 12px) var(--service-selector-spacing-service-selector-padding-x, 24px);
12
+ background-color: var(--service-selector-color-service-selector-background-default, #ffffff);
13
+ border: var(--service-selector-border-width-default, 1px) solid var(--service-selector-color-service-selector-border-default, #a3a3a3);
14
+ border-radius: var(--border-radius-rounded-xl, 12px);
15
+ opacity: var(--opacity-opacity-100, 1);
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: space-between;
19
+ gap: var(--service-selector-spacing-service-selector-gap, 40px);
20
+ cursor: pointer;
21
+ transition: all 0.2s ease-in-out;
22
+ /* Website/Light/Level 1 */
23
+ box-shadow: var(--spacing-base-0, 0px) var(--spacing-base-0, 0px) var(--backdrop-blur-backdrop-blur-sm, 4px) var(--spacing-base-0, 0px) rgba(48, 54, 66, 0.11), var(--spacing-base-0, 0px) var(--spacing-base-0-5, 2px) var(--backdrop-blur-backdrop-blur-xs, 2px) var(--spacing-base-0, 0px) rgba(48, 54, 66, 0.10);
24
+ }
25
+
26
+ .service-selector__trigger:hover:not(:disabled):not(.service-selector__trigger--selected) {
27
+ background-color: var(--service-selector-color-service-selector-background-hover, #ccfbf6);
28
+ border-color: var(--service-selector-color-service-selector-border-hover, #0f7173);
29
+ }
30
+
31
+ .service-selector__trigger-content {
32
+ display: flex;
33
+ align-items: center;
34
+ gap: var(--service-selector-spacing-dropdown-item-gap, 12px);
35
+ flex: 1;
36
+ min-width: 0;
37
+ }
38
+
39
+ .service-selector__trigger-icon {
40
+ flex-shrink: 0;
41
+ color: var(--service-selector-color-service-selector-foreground-default, #0f7173);
42
+ }
43
+
44
+ .service-selector__trigger-text {
45
+ flex-shrink: 0;
46
+ color: var(--service-selector-color-service-selector-foreground-default, #0f7173);
47
+ }
48
+
49
+ .service-selector__trigger-chevron {
50
+ flex-shrink: 0;
51
+ display: inline-flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ color: var(--service-selector-color-service-selector-foreground-default, #0f7173);
55
+ }
56
+
57
+ .service-selector__trigger-chevron svg {
58
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
59
+ transform-origin: center;
60
+ }
61
+
62
+ /* Trigger States */
63
+ .service-selector__trigger--default {
64
+ background-color: var(--service-selector-color-service-selector-background-default, #ffffff);
65
+ border-color: var(--service-selector-color-service-selector-border-default, #a3a3a3);
66
+ }
67
+
68
+ .service-selector__trigger--default .service-selector__trigger-icon,
69
+ .service-selector__trigger--default .service-selector__trigger-text,
70
+ .service-selector__trigger--default .service-selector__trigger-chevron {
71
+ color: var(--service-selector-color-service-selector-foreground-default, #0f7173);
72
+ }
73
+
74
+ .service-selector__trigger--open {
75
+ border-color: var(--service-selector-color-service-selector-border-hover, #0f7173);
76
+ }
77
+
78
+ /* Selected state - same style as default */
79
+ .service-selector__trigger.service-selector__trigger--selected {
80
+ background-color: var(--service-selector-color-service-selector-background-default, #ffffff);
81
+ border-color: var(--service-selector-color-service-selector-border-default, #a3a3a3);
82
+ }
83
+
84
+ .service-selector__trigger.service-selector__trigger--selected .service-selector__trigger-icon,
85
+ .service-selector__trigger.service-selector__trigger--selected .service-selector__trigger-text,
86
+ .service-selector__trigger.service-selector__trigger--selected .service-selector__trigger-chevron {
87
+ color: var(--service-selector-color-service-selector-foreground-default, #0f7173);
88
+ }
89
+
90
+ /* When dropdown is open AND a service is selected, keep default style */
91
+ .service-selector__trigger.service-selector__trigger--selected:hover {
92
+ background-color: var(--service-selector-color-service-selector-background-hover, #ccfbf6);
93
+ border-color: var(--service-selector-color-service-selector-border-hover, #0f7173);
94
+ }
95
+
96
+ .service-selector__trigger--disabled {
97
+ opacity: 0.6;
98
+ cursor: not-allowed;
99
+ }
100
+
101
+ .service-selector__trigger--disabled .service-selector__trigger-icon,
102
+ .service-selector__trigger--disabled .service-selector__trigger-chevron {
103
+ color: var(--color-neutral-400, #a3a3a3);
104
+ }
105
+
106
+ /* Dropdown Panel */
107
+ .service-selector__panel {
108
+ position: absolute;
109
+ top: 100%;
110
+ left: 0;
111
+ right: 0;
112
+ margin-top: 8px;
113
+ background-color: var(--color-elevation-level-1, #ffffff);
114
+ border-radius: var(--service-selector-boder-radius-dropdown-item-default, 12px);
115
+ overflow: hidden;
116
+ z-index: 50;
117
+ border: var(--service-selector-border-width-default, 1px) solid var(--service-selector-color-service-selector-border-default, #a3a3a3);
118
+ box-shadow: 0px 0px 4px 0px rgba(48, 54, 66, 0.11), 0px 0px 2px 0px rgba(48, 54, 66, 0.1);
119
+ }
120
+
121
+ .service-selector__content {
122
+ overflow-y: auto;
123
+ overflow-x: hidden;
124
+ scrollbar-width: thin;
125
+ scrollbar-color: #9ca3af #f3f4f6;
126
+ }
127
+
128
+ .service-selector__content::-webkit-scrollbar {
129
+ width: 6px;
130
+ }
131
+
132
+ .service-selector__content::-webkit-scrollbar-track {
133
+ background: #f3f4f6;
134
+ border-radius: 3px;
135
+ }
136
+
137
+ .service-selector__content::-webkit-scrollbar-thumb {
138
+ background: #9ca3af;
139
+ border-radius: 3px;
140
+ }
141
+
142
+ .service-selector__options-wrapper {
143
+ display: flex;
144
+ flex-direction: column;
145
+ padding: 4px;
146
+ }
147
+
148
+ /* Option */
149
+ .service-selector__option {
150
+ width: 100%;
151
+ padding: var(--service-selector-spacing-dropdown-item-padding-y, 12px) var(--service-selector-spacing-dropdown-item-padding-x, 24px);
152
+ display: flex;
153
+ align-items: center;
154
+ gap: var(--service-selector-spacing-dropdown-item-gap, 12px);
155
+ cursor: pointer;
156
+ transition: all 0.2s ease-in-out;
157
+ border: 0;
158
+ background-color: var(--service-selector-color-dropdown-item-background-default, transparent);
159
+ text-align: left;
160
+ border-radius: var(--service-selector-boder-radius-dropdown-item-default, 12px);
161
+ }
162
+
163
+ .service-selector__option:hover:not(:disabled):not(.service-selector__option--selected) {
164
+ background-color: var(--service-selector-color-dropdown-item-background-hover, #f5f5f5);
165
+ }
166
+
167
+ .service-selector__option:hover:not(:disabled):not(.service-selector__option--selected) .service-selector__option-icon,
168
+ .service-selector__option:hover:not(:disabled):not(.service-selector__option--selected) .service-selector__option-text {
169
+ color: var(--service-selector-color-dropdown-item-foreground-hover, #404040);
170
+ }
171
+
172
+ .service-selector__option--selected {
173
+ background-color: var(--service-selector-color-dropdown-item-background-active, #042c2f);
174
+ }
175
+
176
+ .service-selector__option--selected:hover {
177
+ background-color: var(--service-selector-color-dropdown-item-background-active, #042c2f);
178
+ }
179
+
180
+ .service-selector__option--selected .service-selector__option-icon,
181
+ .service-selector__option--selected .service-selector__option-text {
182
+ color: var(--service-selector-color-dropdown-item-foreground-active, #ffffff);
183
+ }
184
+
185
+ .service-selector__option--disabled {
186
+ opacity: 0.6;
187
+ cursor: not-allowed;
188
+ }
189
+
190
+ .service-selector__option--disabled:hover {
191
+ background-color: transparent;
192
+ }
193
+
194
+ .service-selector__option-icon {
195
+ flex-shrink: 0;
196
+ color: var(--service-selector-color-dropdown-item-foreground-default, #737373);
197
+ }
198
+
199
+ .service-selector__option-icon--selected {
200
+ color: var(--service-selector-color-dropdown-item-foreground-active, #ffffff);
201
+ }
202
+
203
+ .service-selector__option-text {
204
+ flex: 1;
205
+ color: var(--service-selector-color-dropdown-item-foreground-default, #737373);
206
+ }
207
+
208
+ .service-selector__option-badge {
209
+ padding: 2px 8px;
210
+ border-radius: var(--service-selector-boder-radius-dropdown-item-pill, 9999px);
211
+ font-size: 12px;
212
+ font-weight: 700;
213
+ margin-left: auto;
214
+ background-color: var(--color-brand-primary, #fe8839);
215
+ color: var(--color-text-inverted, #ffffff);
216
+ }
217
+
218
+ /* Responsive design */
219
+ @media (max-width: 640px) {
220
+ .service-selector__trigger {
221
+ padding: 10px 16px;
222
+ }
223
+
224
+ .service-selector__option {
225
+ padding: 10px 16px;
226
+ }
227
+ }
228
+
@@ -147,11 +147,7 @@
147
147
  }
148
148
 
149
149
  .pax-selector__stepper-label {
150
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
151
- font-weight: 700;
152
- font-size: 16px;
153
- line-height: 24px;
154
- color: var(--color-text-default, #262626);
150
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
155
151
  }
156
152
 
157
153
  .pax-selector__stepper-controls {
@@ -573,11 +569,7 @@
573
569
  }
574
570
 
575
571
  .pax-selector__age-section-title {
576
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
577
- font-weight: var(--font-weight-font-bold, 700);
578
- font-size: 16px;
579
- line-height: 24px;
580
- color: var(--color-text-default, #262626);
572
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
581
573
  margin: 0;
582
574
  }
583
575
 
@@ -625,11 +617,7 @@
625
617
  }
626
618
 
627
619
  .pax-selector__room-name {
628
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
629
- font-weight: var(--font-weight-font-bold, 700);
630
- font-size: 18px;
631
- line-height: 24px;
632
- color: var(--color-text-accent, #0f7173);
620
+ /* La couleur est maintenant gérée par la prop color="accent" du composant Text */
633
621
  margin: 0;
634
622
  }
635
623
 
@@ -10,10 +10,6 @@
10
10
  @apply flex items-center justify-between w-full;
11
11
  }
12
12
 
13
- .search-bar-transfer__title {
14
- color: var(--color-text-accent, #0f7173);
15
- }
16
-
17
13
  /* Mode Selector (Segmented Button) */
18
14
  .search-bar-transfer__mode-selector {
19
15
  @apply flex items-center;
@@ -24,9 +20,7 @@
24
20
  @apply flex items-center justify-between w-full;
25
21
  }
26
22
 
27
- .search-bar-transfer__transfer-type-label {
28
- color: var(--color-text-subtle);
29
- }
23
+ /* La couleur est maintenant gérée par la prop color="subtle" du composant Text */
30
24
 
31
25
  .search-bar-transfer__add-buttons {
32
26
  @apply flex gap-2;
@@ -40,7 +34,7 @@
40
34
  /* Category Header */
41
35
  .search-bar-transfer__category-header {
42
36
  @apply flex items-center gap-2;
43
- color: var(--color-text-default);
37
+ /* La couleur du texte est maintenant gérée par la prop color="default" du composant Text */
44
38
  }
45
39
 
46
40
  /* Divider between categories */
@@ -95,8 +89,8 @@
95
89
  @apply flex-col items-start gap-4;
96
90
  }
97
91
 
98
- .search-bar-transfer__title {
99
- /* Responsive: Utiliser les tokens heading-sm (24px) sur mobile */
92
+ /* Responsive: Réduire la taille du titre sur mobile */
93
+ .search-bar-transfer__header .heading-md {
100
94
  font-size: var(--font-size-text-2xl, 24px);
101
95
  line-height: var(--font-leading-leading-2xl, 36px);
102
96
  }
@@ -38,9 +38,7 @@
38
38
  color: var(--checkbox-color-checkbox-checked-default, #0f7173);
39
39
  }
40
40
 
41
- .rating-tab__label {
42
- color: var(--color-text-default, #262626);
43
- }
41
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
44
42
 
45
43
  /* States */
46
44
 
@@ -1,46 +0,0 @@
1
- import React from 'react';
2
-
3
- interface ChevronDownIconProps {
4
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
- className?: string;
6
- color?: string;
7
- }
8
-
9
- const ChevronDownIcon: React.FC<ChevronDownIconProps> = ({
10
- size = 'md',
11
- className = '',
12
- color
13
- }) => {
14
- const getSizeClasses = () => {
15
- switch (size) {
16
- case 'xs': return 'w-3 h-3';
17
- case 'sm': return 'w-4 h-4';
18
- case 'md': return 'w-5 h-5';
19
- case 'lg': return 'w-6 h-6';
20
- case 'xl': return 'w-8 h-8';
21
- default: return 'w-5 h-5';
22
- }
23
- };
24
-
25
- const sizeClasses = getSizeClasses();
26
- const colorClass = color ? `text-${color}` : 'text-current';
27
- const classes = `${sizeClasses} ${colorClass} ${className}`;
28
-
29
- return (
30
- <svg
31
- className={classes}
32
- viewBox="0 0 15 12"
33
- fill="none"
34
- xmlns="http://www.w3.org/2000/svg"
35
- >
36
- <path
37
- d="M12.4707 0.571533H2.07621C0.87817 0.571533 0.163582 1.90675 0.828137 2.90358L6.02536 10.6994C6.6191 11.59 7.92778 11.59 8.52151 10.6994L13.7187 2.90358C14.3833 1.90675 13.6687 0.571533 12.4707 0.571533Z"
38
- fill="currentColor"
39
- stroke="currentColor"
40
- strokeWidth="1.14286"
41
- />
42
- </svg>
43
- );
44
- };
45
-
46
- export default ChevronDownIcon;