mautourco-components 0.1.2 → 0.2.0
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/components/atoms/Checkbox/Checkbox.js +7 -1
- package/dist/components/atoms/Icon/Icon.d.ts +1 -1
- package/dist/components/atoms/Icon/Icon.js +22 -1
- package/dist/components/atoms/Icon/icons/BuildingIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/BuildingIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/HomeIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/HomeIcon.js +25 -0
- package/dist/components/atoms/Icon/icons/MinusIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/MinusIcon.js +25 -0
- package/dist/components/atoms/Icon/icons/PlaneIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/PlaneIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/PlusIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/PlusIcon.js +25 -0
- package/dist/components/atoms/Icon/icons/ShipIcon.d.ts +8 -0
- package/dist/components/atoms/Icon/icons/ShipIcon.js +36 -0
- package/dist/components/atoms/Illustration/Illustration.d.ts +14 -0
- package/dist/components/atoms/Illustration/Illustration.js +33 -0
- package/dist/components/atoms/Illustration/illustrations.d.ts +51 -0
- package/dist/components/atoms/Illustration/illustrations.js +97 -0
- package/dist/components/atoms/RatingStar/RatingStar.d.ts +40 -0
- package/dist/components/atoms/RatingStar/RatingStar.js +54 -0
- package/dist/components/atoms/SegmentedButton/SegmentedButton.d.ts +27 -0
- package/dist/components/atoms/SegmentedButton/SegmentedButton.js +49 -0
- package/dist/components/atoms/Slider/Slider.d.ts +52 -0
- package/dist/components/atoms/Slider/Slider.js +30 -0
- package/dist/components/molecules/Calendar/CalendarInput.d.ts +34 -0
- package/dist/components/molecules/Calendar/CalendarInput.js +49 -0
- package/dist/components/molecules/Calendar/DateTime.d.ts +25 -0
- package/dist/components/molecules/Calendar/DateTime.js +106 -0
- package/dist/components/molecules/Calendar/TimePicker.d.ts +16 -0
- package/dist/components/molecules/Calendar/TimePicker.js +91 -0
- package/dist/components/molecules/LocationDropdown/LocationDropdown.d.ts +34 -0
- package/dist/components/molecules/LocationDropdown/LocationDropdown.js +120 -0
- package/dist/components/molecules/LocationDropdown/index.d.ts +2 -0
- package/dist/components/molecules/LocationDropdown/index.js +1 -0
- package/dist/components/molecules/RatingTab/RatingTab.d.ts +39 -0
- package/dist/components/molecules/RatingTab/RatingTab.js +41 -0
- package/dist/components/molecules/TabGroup/TabGroup.d.ts +17 -0
- package/dist/components/molecules/TabGroup/TabGroup.js +30 -0
- package/dist/components/organisms/CardContainer/CardContainer.d.ts +37 -0
- package/dist/components/organisms/CardContainer/CardContainer.js +27 -0
- package/dist/components/organisms/DateTimePicker/DateTimePicker.d.ts +15 -0
- package/dist/components/organisms/DateTimePicker/DateTimePicker.js +66 -0
- package/dist/components/organisms/Dialog/Dialog.d.ts +103 -0
- package/dist/components/organisms/Dialog/Dialog.js +162 -0
- package/dist/components/organisms/PaxSelector/PaxSelector.d.ts +63 -0
- package/dist/components/organisms/PaxSelector/PaxSelector.js +402 -0
- package/dist/components/organisms/RoundTrip/RoundTrip.d.ts +54 -0
- package/dist/components/organisms/RoundTrip/RoundTrip.js +179 -0
- package/dist/components/organisms/RoundTrip/index.d.ts +2 -0
- package/dist/components/organisms/RoundTrip/index.js +1 -0
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.d.ts +35 -0
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.js +192 -0
- package/dist/components/organisms/SearchBarTransfer/index.d.ts +2 -0
- package/dist/components/organisms/SearchBarTransfer/index.js +1 -0
- package/dist/components/organisms/TransferLine/TransferLine.d.ts +53 -0
- package/dist/components/organisms/TransferLine/TransferLine.js +179 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.js +56 -0
- package/dist/components/ui/calendar.d.ts +8 -0
- package/dist/components/ui/calendar.js +87 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/popover.js +42 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +18 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.js +13 -0
- package/package.json +21 -12
- package/src/components/atoms/Button/Button.css +34 -34
- package/src/components/atoms/Checkbox/Checkbox.tsx +83 -69
- package/src/components/atoms/Icon/Icon.tsx +30 -2
- package/src/components/atoms/Icon/icons/BuildingIcon.tsx +50 -0
- package/src/components/atoms/Icon/icons/CalendarOutlineIcon.tsx +50 -0
- package/src/components/atoms/Icon/icons/HomeIcon.tsx +52 -0
- package/src/components/atoms/Icon/icons/MinusIcon.tsx +45 -0
- package/src/components/atoms/Icon/icons/PlaneIcon.tsx +50 -0
- package/src/components/atoms/Icon/icons/PlusIcon.tsx +45 -0
- package/src/components/atoms/Icon/icons/ShipIcon.tsx +50 -0
- package/src/components/atoms/Illustration/Illustration.tsx +28 -0
- package/src/components/atoms/Illustration/illustrations.ts +116 -0
- package/src/components/atoms/RatingStar/RatingStar.tsx +114 -0
- package/src/components/atoms/SegmentedButton/SegmentedButton.tsx +94 -0
- package/src/components/atoms/Slider/Slider.tsx +95 -0
- package/src/components/molecules/Calendar/CalendarInput.tsx +135 -0
- package/src/components/molecules/Calendar/DateTime.tsx +172 -0
- package/src/components/molecules/Calendar/TimePicker.tsx +174 -0
- package/src/components/molecules/LocationDropdown/LocationDropdown.tsx +234 -0
- package/src/components/molecules/LocationDropdown/index.ts +2 -0
- package/src/components/molecules/RatingTab/RatingTab.tsx +96 -0
- package/src/components/molecules/TabGroup/TabGroup.tsx +60 -0
- package/src/components/molecules/UserCard/UserCard.stories.tsx +2 -2
- package/src/components/organisms/CardContainer/CardContainer.tsx +66 -0
- package/src/components/organisms/DateTimePicker/DateTimePicker.tsx +110 -0
- package/src/components/organisms/Dialog/Dialog.tsx +352 -0
- package/src/components/organisms/PaxSelector/PaxSelector.tsx +979 -0
- package/src/components/organisms/RoundTrip/RoundTrip.tsx +335 -0
- package/src/components/organisms/RoundTrip/index.ts +2 -0
- package/src/components/organisms/SearchBarTransfer/SearchBarTransfer.tsx +388 -0
- package/src/components/organisms/SearchBarTransfer/index.ts +2 -0
- package/src/components/organisms/TransferLine/TransferLine.tsx +369 -0
- package/src/components/ui/button.tsx +60 -0
- package/src/components/ui/calendar.tsx +246 -0
- package/src/components/ui/popover.tsx +46 -0
- package/src/styles/components/calendar.css +86 -0
- package/src/styles/components/checkbox.css +130 -132
- package/src/styles/components/dropdown.css +40 -40
- package/src/styles/components/forms.css +51 -51
- package/src/styles/components/illustration.css +7 -0
- package/src/styles/components/molecule/calendarInput.css +157 -0
- package/src/styles/components/molecule/dateTime.css +14 -0
- package/src/styles/components/molecule/location-dropdown.css +204 -0
- package/src/styles/components/molecule/timePicker.css +79 -0
- package/src/styles/components/multiselect-dropdown.css +230 -231
- package/src/styles/components/organism/card-container.css +49 -0
- package/src/styles/components/organism/dialog.css +241 -0
- package/src/styles/components/organism/pax-selector.css +702 -0
- package/src/styles/components/organism/round-trip.css +55 -0
- package/src/styles/components/organism/search-bar-transfer.css +128 -0
- package/src/styles/components/organism/transfer-line.css +86 -0
- package/src/styles/components/rating-star.css +39 -0
- package/src/styles/components/rating-tab.css +83 -0
- package/src/styles/components/segmented-button.css +134 -0
- package/src/styles/components/selected-value.css +16 -16
- package/src/styles/components/slider.css +86 -0
- package/src/styles/components/typography.css +36 -36
- package/src/styles/tokens/tokens.css +1093 -1093
- package/dist/components/atoms/Typography/Heading/Heading.d.ts +0 -9
- package/dist/components/atoms/Typography/Heading/Heading.js +0 -25
- package/dist/components/atoms/Typography/Text/Text.d.ts +0 -10
- package/dist/components/atoms/Typography/Text/Text.js +0 -77
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/* Styles Input centralisés: consomment uniquement des variables CSS issues de Style Dictionary */
|
|
2
2
|
|
|
3
3
|
.input-field {
|
|
4
|
-
font-family: var(--typography-font-family-sans);
|
|
5
|
-
font-size: var(--input-font-size-default);
|
|
6
|
-
line-height: var(--input-line-height-default);
|
|
7
|
-
border-radius:
|
|
8
|
-
border-width:
|
|
4
|
+
font-family: var(--typography-font-family-sans, Inter,system-ui,sans-serif);
|
|
5
|
+
font-size: var(--input-font-size-default, 1rem);
|
|
6
|
+
line-height: var(--input-line-height-default, 1.5rem);
|
|
7
|
+
border-radius: 0.375rem;
|
|
8
|
+
border-width: 1px;
|
|
9
9
|
border-style: solid;
|
|
10
|
-
padding: var(--input-padding-vertical) var(--input-padding-horizontal);
|
|
10
|
+
padding: var(--input-padding-vertical, 0.5rem) var(--input-padding-horizontal, 0.75rem);
|
|
11
11
|
width: 100%;
|
|
12
12
|
box-sizing: border-box;
|
|
13
13
|
transition: all 0.2s ease-in-out;
|
|
@@ -24,119 +24,119 @@
|
|
|
24
24
|
position: absolute;
|
|
25
25
|
top: 50%;
|
|
26
26
|
transform: translateY(-50%);
|
|
27
|
-
color: var(--
|
|
28
|
-
width: var(--input-search-iconSize,
|
|
29
|
-
height: var(--input-search-iconSize,
|
|
27
|
+
color: var(--color-slate-400);
|
|
28
|
+
width: var(--input-search-iconSize, 1rem);
|
|
29
|
+
height: var(--input-search-iconSize, 1rem);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
.input-icon--leading { left: var(--input-padding-horizontal); }
|
|
33
|
-
.input-icon--trailing { right: var(--input-padding-horizontal); }
|
|
32
|
+
.input-icon--leading { left: var(--input-padding-horizontal, 0.75rem); }
|
|
33
|
+
.input-icon--trailing { right: var(--input-padding-horizontal, 0.75rem); }
|
|
34
34
|
|
|
35
35
|
.input-field--with-icon.input-field--icon-leading {
|
|
36
|
-
padding-left: calc(var(--input-padding-horizontal) + var(--input-search-iconSize,
|
|
36
|
+
padding-left: calc(var(--input-padding-horizontal, 0.75rem) + var(--input-search-iconSize, 1rem) + 0.5rem);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
.input-field--with-icon.input-field--icon-trailing {
|
|
40
|
-
padding-right: calc(var(--input-padding-horizontal) + var(--input-search-iconSize,
|
|
40
|
+
padding-right: calc(var(--input-padding-horizontal, 0.75rem) + var(--input-search-iconSize, 1rem) + 0.5rem);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.input-field:focus {
|
|
44
|
-
border-color: var(--
|
|
44
|
+
border-color: var(--color-atoll-green-800);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/* État par défaut */
|
|
48
48
|
.input-field--default {
|
|
49
|
-
background-color: var(--
|
|
50
|
-
border-color: var(--
|
|
51
|
-
color: var(--
|
|
49
|
+
background-color: var(--color-white);
|
|
50
|
+
border-color: var(--color-slate-300);
|
|
51
|
+
color: var(--color-slate-900);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
.input-field--default::placeholder {
|
|
55
|
-
color: var(--
|
|
55
|
+
color: var(--color-slate-400);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/* État focus */
|
|
59
59
|
.input-field--focus {
|
|
60
|
-
background-color: var(--
|
|
61
|
-
border-color: var(--
|
|
62
|
-
color: var(--
|
|
60
|
+
background-color: var(--color-white);
|
|
61
|
+
border-color: var(--color-atoll-green-800);
|
|
62
|
+
color: var(--color-slate-900);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.input-field--focus::placeholder {
|
|
66
|
-
color: var(--
|
|
66
|
+
color: var(--color-slate-400);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
/* État success */
|
|
70
70
|
.input-field--success {
|
|
71
|
-
background-color: var(--
|
|
72
|
-
border-color: var(--
|
|
73
|
-
color: var(--
|
|
71
|
+
background-color: var(--color-green-50);
|
|
72
|
+
border-color: var(--color-green-500);
|
|
73
|
+
color: var(--color-green-700);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
.input-field--success::placeholder {
|
|
77
|
-
color: var(--
|
|
77
|
+
color: var(--color-green-400);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/* État error */
|
|
81
81
|
.input-field--error {
|
|
82
|
-
background-color: var(--
|
|
83
|
-
border-color: var(--
|
|
84
|
-
color: var(--
|
|
82
|
+
background-color: var(--color-red-50);
|
|
83
|
+
border-color: var(--color-red-500);
|
|
84
|
+
color: var(--color-red-700);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.input-field--error::placeholder {
|
|
88
|
-
color: var(--
|
|
88
|
+
color: var(--color-red-400);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/* État disabled */
|
|
92
92
|
.input-field--disabled {
|
|
93
|
-
background-color: var(--
|
|
94
|
-
border-color: var(--
|
|
95
|
-
color: var(--
|
|
93
|
+
background-color: var(--color-slate-100);
|
|
94
|
+
border-color: var(--color-slate-200);
|
|
95
|
+
color: var(--color-slate-400);
|
|
96
96
|
cursor: not-allowed;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.input-field--disabled::placeholder {
|
|
100
|
-
color: var(--
|
|
100
|
+
color: var(--color-slate-300);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/* Styles pour le showcase */
|
|
104
104
|
.input-showcase {
|
|
105
|
-
background-color: var(--color-
|
|
106
|
-
padding: var(--spacing-xl);
|
|
107
|
-
border-radius: var(--spacing-sm);
|
|
108
|
-
border-left: 4px dotted var(--color-
|
|
109
|
-
margin: var(--spacing-lg) 0;
|
|
105
|
+
background-color: var(--color-slate-50);
|
|
106
|
+
padding: var(--spacing-xl, 2rem);
|
|
107
|
+
border-radius: var(--spacing-sm, 0.5rem);
|
|
108
|
+
border-left: 4px dotted var(--color-atoll-green-800);
|
|
109
|
+
margin: var(--spacing-lg, 1.5rem) 0;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
.input-showcase h1 {
|
|
113
|
-
font-family: var(--typography-font-family-sans);
|
|
114
|
-
font-size: var(--typography-font-size-2xl);
|
|
115
|
-
font-weight: var(--
|
|
116
|
-
color: var(--color-
|
|
117
|
-
margin: 0 0 var(--spacing-lg) 0;
|
|
113
|
+
font-family: var(--typography-font-family-sans, Inter,system-ui,sans-serif);
|
|
114
|
+
font-size: var(--typography-font-size-2xl, 1.5re);
|
|
115
|
+
font-weight: var(--font-weight-font-bold);
|
|
116
|
+
color: var(--color-slate-900);
|
|
117
|
+
margin: 0 0 var(--spacing-lg, 1.5rem) 0;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
.input-showcase h2 {
|
|
121
|
-
font-family: var(--typography-font-family-sans);
|
|
122
|
-
font-size: var(--typography-font-size-lg);
|
|
123
|
-
font-weight: var(--
|
|
124
|
-
color: var(--color-
|
|
121
|
+
font-family: var(--typography-font-family-sans, Inter,system-ui,sans-serif);
|
|
122
|
+
font-size: var(--typography-font-size-lg, 1.125rem);
|
|
123
|
+
font-weight: var(--font-weight-font-medium);
|
|
124
|
+
color: var(--color-slate-700);
|
|
125
125
|
text-transform: uppercase;
|
|
126
126
|
letter-spacing: 0.05em;
|
|
127
|
-
margin: 0 0 var(--spacing-md) 0;
|
|
127
|
+
margin: 0 0 var(--spacing-md, 1rem) 0;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
.input-variants {
|
|
131
131
|
display: grid;
|
|
132
132
|
grid-template-columns: 1fr 1fr 1fr;
|
|
133
|
-
gap: var(--spacing-xl);
|
|
133
|
+
gap: var(--spacing-xl, 2rem);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
.input-variant-section {
|
|
137
137
|
display: flex;
|
|
138
138
|
flex-direction: column;
|
|
139
|
-
gap: var(--spacing-md);
|
|
139
|
+
gap: var(--spacing-md, 1rem);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
.input-example {
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
.calendar-input {
|
|
2
|
+
@apply w-full h-11 overflow-hidden p-0 bg-white border border-[var(--color-tuna-500)] flex items-center gap-2 rounded-xl;
|
|
3
|
+
min-width: 0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/* Set minimum width only on larger screens where there's space */
|
|
7
|
+
@media (min-width: 768px) {
|
|
8
|
+
.calendar-input {
|
|
9
|
+
min-width: 190px;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.calendar-input__input-wrapper {
|
|
14
|
+
@apply flex items-center flex-1 h-full min-w-0 p-3;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Remove left padding when icon is on the right */
|
|
18
|
+
.calendar-input--icon-right .calendar-input__input-wrapper {
|
|
19
|
+
@apply pl-4;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Remove right padding when icon is on the left */
|
|
23
|
+
.calendar-input--icon-left .calendar-input__input-wrapper {
|
|
24
|
+
@apply pr-4 pl-0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.calendar-input__icon-button.calendar-input__icon-button--left {
|
|
28
|
+
@apply justify-end w-fit pl-4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.calendar-input__field {
|
|
32
|
+
@apply flex-1 bg-transparent border-none outline-none w-full text-[var(--color-neutral-800)] text-sm leading-5;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.calendar-input__field:disabled {
|
|
36
|
+
@apply cursor-not-allowed text-[var(--color-neutral-400)];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.calendar-input__icon-button {
|
|
40
|
+
@apply flex items-center justify-center w-10 h-full opacity-100 cursor-pointer;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.calendar-input__icon-button--right {
|
|
44
|
+
@apply rounded-r-md;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.calendar-input__icon-button--left {
|
|
48
|
+
@apply rounded-l-md;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.calendar-input__icon-button--full-bg {
|
|
52
|
+
@apply text-white bg-[var(--color-text-accent)];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.calendar-input__chevron {
|
|
56
|
+
@apply flex items-center justify-center w-5 h-5 shrink-0 text-[var(--color-neutral-800)];
|
|
57
|
+
transition: transform 0.2s ease;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.calendar-input__chevron--open {
|
|
61
|
+
transform: rotate(180deg);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Ensure label and icon remain visible when wrapper is set to active via data-state */
|
|
65
|
+
.calendar-input-wrapper[data-state="active"] .calendar-input__label,
|
|
66
|
+
.calendar-input-wrapper[data-state="active"] .calendar-input__icon-button {
|
|
67
|
+
@apply visible opacity-100;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Defensive: ensure label stays visible and above other elements */
|
|
71
|
+
.calendar-input-wrapper .calendar-input__label {
|
|
72
|
+
@apply block z-[2];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* STATE VARIANTS */
|
|
76
|
+
|
|
77
|
+
/* Default state */
|
|
78
|
+
.calendar-input--default {
|
|
79
|
+
@apply border-[var(--color-tuna-500)];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.calendar-input--default .calendar-input__icon-button--full-bg {
|
|
83
|
+
@apply bg-[var(--color-atoll-green-800)]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Active state (focused) */
|
|
87
|
+
.calendar-input--active {
|
|
88
|
+
@apply border-[var(--color-neutral-800)]
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Typing state */
|
|
92
|
+
.calendar-input--typing {
|
|
93
|
+
@apply border-[var(--color-neutral-800)]
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Success state */
|
|
97
|
+
.calendar-input--success {
|
|
98
|
+
@apply bg-[var(--color-green-50)] border-[var(--color-green-700)];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.calendar-input--success .calendar-input__field {
|
|
102
|
+
@apply text-[var(--color-green-700)]
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.calendar-input--success .calendar-input__icon-button--full-bg {
|
|
106
|
+
@apply bg-[var(--color-green-700)] !text-white;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.calendar-input--success .calendar-input__icon-button {
|
|
110
|
+
@apply bg-none text-[var(--color-green-700)];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Error state */
|
|
114
|
+
.calendar-input--error {
|
|
115
|
+
@apply border-[var(--color-coral-red-600)] bg-[var(--color-coral-red-200)];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.calendar-input--error .calendar-input__field {
|
|
119
|
+
@apply text-[var(--color-coral-red-600)];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.calendar-input--error .calendar-input__icon-button {
|
|
123
|
+
@apply !bg-none !text-[var(--color-coral-red-600)];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.calendar-input--error .calendar-input__icon-button--full-bg {
|
|
127
|
+
@apply bg-[var(--color-coral-red-600)] !text-white;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Disabled state */
|
|
131
|
+
.calendar-input--disabled {
|
|
132
|
+
@apply border-[var(--color-neutral-400)] bg-[var(--color-surface-50)]
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.calendar-input--disabled .calendar-input__field {
|
|
136
|
+
@apply cursor-not-allowed text-[var(--color-tuna-400)];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.calendar-input--disabled .calendar-input__icon-button {
|
|
140
|
+
@apply !bg-none !text-[var(--color-tuna-400)]
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.calendar-input--disabled .calendar-input__icon-button--full-bg {
|
|
144
|
+
@apply !bg-[var(--color-gray-200)] !text-[var(--color-tuna-400)]
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Responsive design */
|
|
148
|
+
@media (max-width: 640px) {
|
|
149
|
+
.calendar-input__icon-button {
|
|
150
|
+
@apply max-w-sm p-2;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.calendar-input__input-wrapper {
|
|
154
|
+
@apply px-3 py-2;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.ds-datetime {
|
|
2
|
+
display: flex;
|
|
3
|
+
gap: 16px;
|
|
4
|
+
align-items: flex-start;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ds-datetime__calendar { flex: 0 0 320px; }
|
|
8
|
+
.ds-datetime__time { width: 160px; }
|
|
9
|
+
.ds-datetime__label { display:block; font-size: 12px; margin-bottom: 8px; }
|
|
10
|
+
|
|
11
|
+
@media (max-width: 640px) {
|
|
12
|
+
.ds-datetime { flex-direction: column; }
|
|
13
|
+
.ds-datetime__calendar, .ds-datetime__time { width: 100%; }
|
|
14
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/* Location Dropdown Component Styles */
|
|
2
|
+
|
|
3
|
+
.location-dropdown {
|
|
4
|
+
@apply relative w-full flex flex-col gap-2;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Label */
|
|
8
|
+
.location-dropdown__label {
|
|
9
|
+
@apply text-[var(--color-neutral-800)] text-sm;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.location-dropdown__label p {
|
|
13
|
+
@apply leading-normal;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Input / Trigger */
|
|
17
|
+
.location-dropdown__input {
|
|
18
|
+
@apply w-full h-11 px-3 py-2.5 bg-white border border-[var(--color-tuna-500)] rounded-xl flex items-center justify-between gap-2 cursor-pointer transition-all duration-200;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.location-dropdown__input:hover {
|
|
22
|
+
@apply border-[var(--color-neutral-800)];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.location-dropdown__input-content {
|
|
26
|
+
@apply flex items-center gap-2 flex-1 min-w-0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.location-dropdown__input-icon {
|
|
30
|
+
@apply text-[var(--color-neutral-800)] flex-shrink-0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.location-dropdown__input-icon--placeholder {
|
|
34
|
+
@apply text-[var(--color-neutral-400)];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.location-dropdown__input-text {
|
|
38
|
+
@apply text-sm leading-5 text-[var(--color-neutral-800)] font-medium truncate;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.location-dropdown__input-text--placeholder {
|
|
42
|
+
@apply text-[var(--color-neutral-400)] font-normal;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.location-dropdown__input-chevron {
|
|
46
|
+
@apply text-[var(--color-neutral-800)] flex-shrink-0 transition-transform duration-200;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Input States */
|
|
50
|
+
.location-dropdown__input--default {
|
|
51
|
+
@apply border-[var(--color-tuna-500)];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.location-dropdown__input--open {
|
|
55
|
+
@apply border-[var(--color-neutral-800)] shadow-sm;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.location-dropdown__input--open .location-dropdown__input-chevron {
|
|
59
|
+
@apply !transform !rotate-180;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.location-dropdown__input--selected {
|
|
63
|
+
@apply border-[var(--color-tuna-500)];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.location-dropdown__input--error {
|
|
67
|
+
@apply border-[var(--color-coral-red-600)] bg-[var(--color-coral-red-50)];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.location-dropdown__input--error .location-dropdown__input-text {
|
|
71
|
+
@apply text-[var(--color-coral-red-600)];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.location-dropdown__input--error .location-dropdown__input-icon,
|
|
75
|
+
.location-dropdown__input--error .location-dropdown__input-chevron {
|
|
76
|
+
@apply text-[var(--color-coral-red-600)];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.location-dropdown__input--disabled {
|
|
80
|
+
@apply bg-[var(--color-surface-50)] border-[var(--color-neutral-400)] cursor-not-allowed opacity-60;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.location-dropdown__input--disabled .location-dropdown__input-text,
|
|
84
|
+
.location-dropdown__input--disabled .location-dropdown__input-icon,
|
|
85
|
+
.location-dropdown__input--disabled .location-dropdown__input-chevron {
|
|
86
|
+
@apply text-[var(--color-neutral-400)];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Dropdown Panel */
|
|
90
|
+
.location-dropdown__panel {
|
|
91
|
+
@apply absolute top-full left-0 right-0 mt-2 bg-white rounded-xl overflow-hidden z-50 w-[17.5rem] border border-[var(--color-neutral-200)];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.location-dropdown__content {
|
|
95
|
+
@apply overflow-y-auto overflow-x-hidden;
|
|
96
|
+
scrollbar-width: thin;
|
|
97
|
+
scrollbar-color: #9ca3af #f3f4f6;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.location-dropdown__content::-webkit-scrollbar {
|
|
101
|
+
@apply w-1.5;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.location-dropdown__content::-webkit-scrollbar-track {
|
|
105
|
+
@apply bg-[#f3f4f6] rounded;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.location-dropdown__content::-webkit-scrollbar-thumb {
|
|
109
|
+
@apply bg-[#9ca3af] rounded;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.location-dropdown__options-wrapper {
|
|
113
|
+
@apply flex flex-col gap-3 p-4;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Group */
|
|
117
|
+
.location-dropdown__group {
|
|
118
|
+
@apply flex flex-col;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.location-dropdown__group-header {
|
|
122
|
+
@apply px-2 py-2 text-xs font-bold text-[var(--color-neutral-800)] uppercase tracking-wide;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.location-dropdown__divider {
|
|
126
|
+
@apply w-full h-px bg-[var(--color-neutral-200)] my-2;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.location-dropdown__group-options {
|
|
130
|
+
@apply flex flex-col gap-3;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Option Item */
|
|
134
|
+
.location-dropdown__option {
|
|
135
|
+
@apply flex items-center gap-2 px-2 py-2 cursor-pointer transition-all duration-150 rounded-lg;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.location-dropdown__option:hover {
|
|
139
|
+
@apply bg-[var(--color-surface-50)];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.location-dropdown__option--selected {
|
|
143
|
+
@apply bg-[#f0fdfb] border-[0.5px] border-solid border-[#15b7b6];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.location-dropdown__option--selected:hover {
|
|
147
|
+
@apply bg-[#e6fcf9];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.location-dropdown__option--disabled {
|
|
151
|
+
@apply opacity-50 cursor-not-allowed;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.location-dropdown__option--disabled:hover {
|
|
155
|
+
@apply bg-transparent;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.location-dropdown__option-icon {
|
|
159
|
+
@apply text-[var(--color-neutral-800)] flex-shrink-0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.location-dropdown__option--selected .location-dropdown__option-icon {
|
|
163
|
+
@apply text-[var(--color-atoll-green-800)];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.location-dropdown__option-text {
|
|
167
|
+
@apply text-sm leading-5 text-[var(--color-neutral-800)] font-medium flex-1 min-w-0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.location-dropdown__option--selected .location-dropdown__option-text {
|
|
171
|
+
@apply text-[var(--color-atoll-green-800)] font-semibold;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Type-specific adjustments */
|
|
175
|
+
.location-dropdown--airport-port .location-dropdown__content {
|
|
176
|
+
@apply max-h-[auto];
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.location-dropdown--accommodation .location-dropdown__content {
|
|
180
|
+
@apply max-h-[240px];
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.location-dropdown--pickup-dropoff .location-dropdown__content {
|
|
184
|
+
@apply max-h-[240px];
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* Responsive design */
|
|
188
|
+
@media (max-width: 640px) {
|
|
189
|
+
.location-dropdown__input {
|
|
190
|
+
@apply px-2.5 py-2;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.location-dropdown__input-text {
|
|
194
|
+
@apply text-xs;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.location-dropdown__option {
|
|
198
|
+
@apply px-2 py-1.5;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.location-dropdown__option-text {
|
|
202
|
+
@apply text-xs;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
.time-picker-wrapper {
|
|
2
|
+
@apply flex flex-col gap-2 w-fit;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.time-picker__label {
|
|
6
|
+
@apply m-0 font-sans text-sm font-medium leading-5 text-[var(--input-color-label-default)];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.time-picker {
|
|
10
|
+
@apply flex items-center gap-3 p-0 h-11;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.time-picker__input {
|
|
14
|
+
@apply w-[2.8125rem] h-[2.8125rem] px-3 rounded-xl bg-white border border-[var(--color-tuna-500)]
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.time-picker__input:focus-visible,
|
|
18
|
+
.time-picker__input:active {
|
|
19
|
+
@apply shadow-none outline-none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.time-picker__colon {
|
|
23
|
+
@apply font-sans text-sm leading-5
|
|
24
|
+
text-[var(--input-color-foreground-default)];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.time-picker__am-pm {
|
|
28
|
+
@apply flex items-center overflow-hidden rounded-md h-11 shrink-0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.time-picker__seg {
|
|
32
|
+
@apply border border-[var(--segmented-button-color-border-default)]
|
|
33
|
+
bg-[var(--segmented-button-color-background-default)]
|
|
34
|
+
py-2 px-3 min-w-[3.82rem]
|
|
35
|
+
h-full flex items-center justify-center
|
|
36
|
+
cursor-pointer
|
|
37
|
+
text-[var(--color-tuna-700)] font-bold text-sm;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.time-picker__seg--left {
|
|
41
|
+
@apply border-r-0 rounded-l-md;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.time-picker__seg--right {
|
|
45
|
+
@apply border-l-0 rounded-r-md;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.time-picker__seg--selected {
|
|
49
|
+
@apply bg-[var(--segmented-button-color-background-selected)]
|
|
50
|
+
border-[var(--segmented-button-color-border-selected)]
|
|
51
|
+
text-[var(--segmented-button-color-foreground-selected)];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.time-picker--default .time-picker__unit {
|
|
55
|
+
@apply bg-[var(--input-color-background-default)]
|
|
56
|
+
border-[var(--input-color-border-default)];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.time-picker--active .time-picker__unit,
|
|
60
|
+
.time-picker--typing .time-picker__unit {
|
|
61
|
+
@apply border-2 border-[var(--input-color-border-active)];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.time-picker--success .time-picker__unit {
|
|
65
|
+
@apply bg-[var(--color-success-50)]
|
|
66
|
+
border-[var(--color-success-500)];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.time-picker--error .time-picker__unit {
|
|
70
|
+
@apply bg-[var(--color-error-50)]
|
|
71
|
+
border-[var(--color-error-500)];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.time-picker--disabled .time-picker__unit,
|
|
75
|
+
.time-picker--disabled .time-picker__seg {
|
|
76
|
+
@apply bg-[var(--input-color-background-disabled)]
|
|
77
|
+
border-[var(--input-color-border-disabled)]
|
|
78
|
+
cursor-not-allowed opacity-60;
|
|
79
|
+
}
|