mautourco-components 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 (163) hide show
  1. package/README.md +187 -0
  2. package/dist/components/atoms/Avatar/Avatar.d.ts +14 -0
  3. package/dist/components/atoms/Avatar/Avatar.js +31 -0
  4. package/dist/components/atoms/Button/Button.d.ts +27 -0
  5. package/dist/components/atoms/Button/Button.js +35 -0
  6. package/dist/components/atoms/Checkbox/Checkbox.d.ts +13 -0
  7. package/dist/components/atoms/Checkbox/Checkbox.js +33 -0
  8. package/dist/components/atoms/Icon/Icon.d.ts +10 -0
  9. package/dist/components/atoms/Icon/Icon.js +102 -0
  10. package/dist/components/atoms/Icon/icons/ArrivalIcon.d.ts +8 -0
  11. package/dist/components/atoms/Icon/icons/ArrivalIcon.js +31 -0
  12. package/dist/components/atoms/Icon/icons/CalendarIcon.d.ts +12 -0
  13. package/dist/components/atoms/Icon/icons/CalendarIcon.js +41 -0
  14. package/dist/components/atoms/Icon/icons/CarIcon.d.ts +8 -0
  15. package/dist/components/atoms/Icon/icons/CarIcon.js +30 -0
  16. package/dist/components/atoms/Icon/icons/Check.d.ts +8 -0
  17. package/dist/components/atoms/Icon/icons/Check.js +30 -0
  18. package/dist/components/atoms/Icon/icons/CheckCircleIcon.d.ts +8 -0
  19. package/dist/components/atoms/Icon/icons/CheckCircleIcon.js +30 -0
  20. package/dist/components/atoms/Icon/icons/Chevron.d.ts +9 -0
  21. package/dist/components/atoms/Icon/icons/Chevron.js +54 -0
  22. package/dist/components/atoms/Icon/icons/ChevronDownIcon.d.ts +8 -0
  23. package/dist/components/atoms/Icon/icons/ChevronDownIcon.js +30 -0
  24. package/dist/components/atoms/Icon/icons/Close.d.ts +8 -0
  25. package/dist/components/atoms/Icon/icons/Close.js +30 -0
  26. package/dist/components/atoms/Icon/icons/DeleteIcon.d.ts +8 -0
  27. package/dist/components/atoms/Icon/icons/DeleteIcon.js +30 -0
  28. package/dist/components/atoms/Icon/icons/DepartureIcon.d.ts +8 -0
  29. package/dist/components/atoms/Icon/icons/DepartureIcon.js +30 -0
  30. package/dist/components/atoms/Icon/icons/EyeIcon.d.ts +8 -0
  31. package/dist/components/atoms/Icon/icons/EyeIcon.js +30 -0
  32. package/dist/components/atoms/Icon/icons/FacebookIcon.d.ts +8 -0
  33. package/dist/components/atoms/Icon/icons/FacebookIcon.js +36 -0
  34. package/dist/components/atoms/Icon/icons/InfoIcon.d.ts +8 -0
  35. package/dist/components/atoms/Icon/icons/InfoIcon.js +30 -0
  36. package/dist/components/atoms/Icon/icons/LinkedInIcon.d.ts +8 -0
  37. package/dist/components/atoms/Icon/icons/LinkedInIcon.js +36 -0
  38. package/dist/components/atoms/Icon/icons/MapPinIcon.d.ts +8 -0
  39. package/dist/components/atoms/Icon/icons/MapPinIcon.js +30 -0
  40. package/dist/components/atoms/Icon/icons/MautoucoLogo.d.ts +8 -0
  41. package/dist/components/atoms/Icon/icons/MautoucoLogo.js +37 -0
  42. package/dist/components/atoms/Icon/icons/MenuIcon.d.ts +8 -0
  43. package/dist/components/atoms/Icon/icons/MenuIcon.js +37 -0
  44. package/dist/components/atoms/Icon/icons/MoreIcon.d.ts +8 -0
  45. package/dist/components/atoms/Icon/icons/MoreIcon.js +30 -0
  46. package/dist/components/atoms/Icon/icons/Search.d.ts +8 -0
  47. package/dist/components/atoms/Icon/icons/Search.js +30 -0
  48. package/dist/components/atoms/Icon/icons/Settings.d.ts +8 -0
  49. package/dist/components/atoms/Icon/icons/Settings.js +30 -0
  50. package/dist/components/atoms/Icon/icons/StrollerIcon.d.ts +8 -0
  51. package/dist/components/atoms/Icon/icons/StrollerIcon.js +30 -0
  52. package/dist/components/atoms/Icon/icons/TwitterIcon.d.ts +8 -0
  53. package/dist/components/atoms/Icon/icons/TwitterIcon.js +36 -0
  54. package/dist/components/atoms/Icon/icons/User.d.ts +8 -0
  55. package/dist/components/atoms/Icon/icons/User.js +30 -0
  56. package/dist/components/atoms/Icon/icons/UserIcon.d.ts +12 -0
  57. package/dist/components/atoms/Icon/icons/UserIcon.js +41 -0
  58. package/dist/components/atoms/Icon/icons/Youtube.d.ts +8 -0
  59. package/dist/components/atoms/Icon/icons/Youtube.js +36 -0
  60. package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.d.ts +12 -0
  61. package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.js +53 -0
  62. package/dist/components/atoms/Inputs/Input/Input.d.ts +15 -0
  63. package/dist/components/atoms/Inputs/Input/Input.js +27 -0
  64. package/dist/components/atoms/Inputs/Textarea/Textarea.d.ts +14 -0
  65. package/dist/components/atoms/Inputs/Textarea/Textarea.js +15 -0
  66. package/dist/components/atoms/Link/Link.d.ts +44 -0
  67. package/dist/components/atoms/Link/Link.js +76 -0
  68. package/dist/components/atoms/SelectedValue/SelectedValue.d.ts +11 -0
  69. package/dist/components/atoms/SelectedValue/SelectedValue.js +29 -0
  70. package/dist/components/atoms/Spinner/Spinner.d.ts +9 -0
  71. package/dist/components/atoms/Spinner/Spinner.js +38 -0
  72. package/dist/components/atoms/Spinner/variants/ButtonSpinner.d.ts +8 -0
  73. package/dist/components/atoms/Spinner/variants/ButtonSpinner.js +19 -0
  74. package/dist/components/atoms/Spinner/variants/LoadingSpinner.d.ts +7 -0
  75. package/dist/components/atoms/Spinner/variants/LoadingSpinner.js +7 -0
  76. package/dist/components/atoms/Tab/Tab.d.ts +22 -0
  77. package/dist/components/atoms/Tab/Tab.js +54 -0
  78. package/dist/components/atoms/Typography/Heading/Heading.d.ts +9 -0
  79. package/dist/components/atoms/Typography/Heading/Heading.js +25 -0
  80. package/dist/components/atoms/Typography/Text/Text.d.ts +10 -0
  81. package/dist/components/atoms/Typography/Text/Text.js +77 -0
  82. package/dist/components/atoms/Typography/Typography.d.ts +24 -0
  83. package/dist/components/atoms/Typography/Typography.js +100 -0
  84. package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.d.ts +29 -0
  85. package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.js +106 -0
  86. package/dist/components/molecules/UserCard/UserCard.d.ts +20 -0
  87. package/dist/components/molecules/UserCard/UserCard.js +57 -0
  88. package/dist/components/organisms/Footer/Footer.d.ts +38 -0
  89. package/dist/components/organisms/Footer/Footer.js +74 -0
  90. package/dist/components/organisms/TopNavigation/DesktopNav.d.ts +33 -0
  91. package/dist/components/organisms/TopNavigation/DesktopNav.js +26 -0
  92. package/dist/components/organisms/TopNavigation/MobileNav.d.ts +32 -0
  93. package/dist/components/organisms/TopNavigation/MobileNav.js +45 -0
  94. package/dist/components/organisms/TopNavigation/TopNavigation.d.ts +33 -0
  95. package/dist/components/organisms/TopNavigation/TopNavigation.js +20 -0
  96. package/dist/hooks/useMobile.d.ts +5 -0
  97. package/dist/hooks/useMobile.js +26 -0
  98. package/dist/index.d.ts +23 -0
  99. package/dist/index.js +28 -0
  100. package/dist/styles/tokens/tokens.d.ts +3108 -0
  101. package/dist/styles/tokens/tokens.js +2652 -0
  102. package/package.json +90 -0
  103. package/src/components/atoms/Avatar/Avatar.tsx +60 -0
  104. package/src/components/atoms/Button/Button.css +200 -0
  105. package/src/components/atoms/Button/Button.tsx +82 -0
  106. package/src/components/atoms/Checkbox/Checkbox.tsx +69 -0
  107. package/src/components/atoms/Icon/Icon.tsx +135 -0
  108. package/src/components/atoms/Icon/icons/ArrivalIcon.tsx +52 -0
  109. package/src/components/atoms/Icon/icons/CalendarIcon.tsx +63 -0
  110. package/src/components/atoms/Icon/icons/CarIcon.tsx +44 -0
  111. package/src/components/atoms/Icon/icons/Check.tsx +36 -0
  112. package/src/components/atoms/Icon/icons/CheckCircleIcon.tsx +48 -0
  113. package/src/components/atoms/Icon/icons/Chevron.tsx +73 -0
  114. package/src/components/atoms/Icon/icons/ChevronDownIcon.tsx +46 -0
  115. package/src/components/atoms/Icon/icons/Close.tsx +40 -0
  116. package/src/components/atoms/Icon/icons/DeleteIcon.tsx +44 -0
  117. package/src/components/atoms/Icon/icons/DepartureIcon.tsx +50 -0
  118. package/src/components/atoms/Icon/icons/EyeIcon.tsx +44 -0
  119. package/src/components/atoms/Icon/icons/FacebookIcon.tsx +50 -0
  120. package/src/components/atoms/Icon/icons/InfoIcon.tsx +44 -0
  121. package/src/components/atoms/Icon/icons/LinkedInIcon.tsx +50 -0
  122. package/src/components/atoms/Icon/icons/MapPinIcon.tsx +44 -0
  123. package/src/components/atoms/Icon/icons/MautoucoLogo.tsx +93 -0
  124. package/src/components/atoms/Icon/icons/MenuIcon.tsx +49 -0
  125. package/src/components/atoms/Icon/icons/MoreIcon.tsx +44 -0
  126. package/src/components/atoms/Icon/icons/Search.tsx +37 -0
  127. package/src/components/atoms/Icon/icons/Settings.tsx +38 -0
  128. package/src/components/atoms/Icon/icons/StrollerIcon.tsx +44 -0
  129. package/src/components/atoms/Icon/icons/TwitterIcon.tsx +50 -0
  130. package/src/components/atoms/Icon/icons/User.tsx +37 -0
  131. package/src/components/atoms/Icon/icons/UserIcon.tsx +63 -0
  132. package/src/components/atoms/Icon/icons/Youtube.tsx +50 -0
  133. package/src/components/atoms/Inputs/DropdownInput/DropdownInput.tsx +96 -0
  134. package/src/components/atoms/Inputs/Input/Input.tsx +66 -0
  135. package/src/components/atoms/Inputs/Textarea/Textarea.tsx +51 -0
  136. package/src/components/atoms/Link/Link.tsx +168 -0
  137. package/src/components/atoms/SelectedValue/SelectedValue.tsx +59 -0
  138. package/src/components/atoms/Spinner/Spinner.tsx +56 -0
  139. package/src/components/atoms/Spinner/variants/ButtonSpinner.tsx +37 -0
  140. package/src/components/atoms/Spinner/variants/LoadingSpinner.tsx +22 -0
  141. package/src/components/atoms/Tab/Tab.css +147 -0
  142. package/src/components/atoms/Tab/Tab.tsx +96 -0
  143. package/src/components/atoms/Typography/Typography.tsx +153 -0
  144. package/src/components/molecules/MultiSelectDropdown/MultiSelectDropdown.tsx +245 -0
  145. package/src/components/molecules/UserCard/UserCard.stories.tsx +36 -0
  146. package/src/components/molecules/UserCard/UserCard.tsx +173 -0
  147. package/src/components/organisms/Footer/Footer.tsx +290 -0
  148. package/src/components/organisms/TopNavigation/DesktopNav.tsx +122 -0
  149. package/src/components/organisms/TopNavigation/MobileNav.tsx +212 -0
  150. package/src/components/organisms/TopNavigation/TopNavigation.tsx +45 -0
  151. package/src/styles/components/avatar.css +58 -0
  152. package/src/styles/components/checkbox.css +132 -0
  153. package/src/styles/components/dropdown.css +214 -0
  154. package/src/styles/components/forms.css +147 -0
  155. package/src/styles/components/multiselect-dropdown.css +231 -0
  156. package/src/styles/components/organism/footer.css +113 -0
  157. package/src/styles/components/organism/topnavigation.css +162 -0
  158. package/src/styles/components/scrollbar.css +63 -0
  159. package/src/styles/components/selected-value.css +80 -0
  160. package/src/styles/components/typography.css +251 -0
  161. package/src/styles/tokens/_tokens.scss +2072 -0
  162. package/src/styles/tokens/tokens.css +2075 -0
  163. package/src/styles/tokens/tokens.js +2653 -0
@@ -0,0 +1,147 @@
1
+ /* Styles Input centralisés: consomment uniquement des variables CSS issues de Style Dictionary */
2
+
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: var(--input-border-radius-default);
8
+ border-width: var(--input-border-width-default);
9
+ border-style: solid;
10
+ padding: var(--input-padding-vertical) var(--input-padding-horizontal);
11
+ width: 100%;
12
+ box-sizing: border-box;
13
+ transition: all 0.2s ease-in-out;
14
+ outline: none;
15
+ }
16
+
17
+ /* Wrapper and icon positioning for input with icon */
18
+ .input-wrapper {
19
+ position: relative;
20
+ width: 100%;
21
+ }
22
+
23
+ .input-icon {
24
+ position: absolute;
25
+ top: 50%;
26
+ transform: translateY(-50%);
27
+ color: var(--input-state-default-placeholder-color);
28
+ width: var(--input-search-iconSize, 16px);
29
+ height: var(--input-search-iconSize, 16px);
30
+ }
31
+
32
+ .input-icon--leading { left: var(--input-padding-horizontal); }
33
+ .input-icon--trailing { right: var(--input-padding-horizontal); }
34
+
35
+ .input-field--with-icon.input-field--icon-leading {
36
+ padding-left: calc(var(--input-padding-horizontal) + var(--input-search-iconSize, 16px) + 8px);
37
+ }
38
+
39
+ .input-field--with-icon.input-field--icon-trailing {
40
+ padding-right: calc(var(--input-padding-horizontal) + var(--input-search-iconSize, 16px) + 8px);
41
+ }
42
+
43
+ .input-field:focus {
44
+ border-color: var(--input-state-focus-border-color);
45
+ }
46
+
47
+ /* État par défaut */
48
+ .input-field--default {
49
+ background-color: var(--input-state-default-background-color);
50
+ border-color: var(--input-state-default-border-color);
51
+ color: var(--input-state-default-text-color);
52
+ }
53
+
54
+ .input-field--default::placeholder {
55
+ color: var(--input-state-default-placeholder-color);
56
+ }
57
+
58
+ /* État focus */
59
+ .input-field--focus {
60
+ background-color: var(--input-state-focus-background-color);
61
+ border-color: var(--input-state-focus-border-color);
62
+ color: var(--input-state-focus-text-color);
63
+ }
64
+
65
+ .input-field--focus::placeholder {
66
+ color: var(--input-state-focus-placeholder-color);
67
+ }
68
+
69
+ /* État success */
70
+ .input-field--success {
71
+ background-color: var(--input-state-success-background-color);
72
+ border-color: var(--input-state-success-border-color);
73
+ color: var(--input-state-success-text-color);
74
+ }
75
+
76
+ .input-field--success::placeholder {
77
+ color: var(--input-state-success-placeholder-color);
78
+ }
79
+
80
+ /* État error */
81
+ .input-field--error {
82
+ background-color: var(--input-state-error-background-color);
83
+ border-color: var(--input-state-error-border-color);
84
+ color: var(--input-state-error-text-color);
85
+ }
86
+
87
+ .input-field--error::placeholder {
88
+ color: var(--input-state-error-placeholder-color);
89
+ }
90
+
91
+ /* État disabled */
92
+ .input-field--disabled {
93
+ background-color: var(--input-state-disabled-background-color);
94
+ border-color: var(--input-state-disabled-border-color);
95
+ color: var(--input-state-disabled-text-color);
96
+ cursor: not-allowed;
97
+ }
98
+
99
+ .input-field--disabled::placeholder {
100
+ color: var(--input-state-disabled-placeholder-color);
101
+ }
102
+
103
+ /* Styles pour le showcase */
104
+ .input-showcase {
105
+ background-color: var(--color-neutral-50);
106
+ padding: var(--spacing-xl);
107
+ border-radius: var(--spacing-sm);
108
+ border-left: 4px dotted var(--color-primary-500);
109
+ margin: var(--spacing-lg) 0;
110
+ }
111
+
112
+ .input-showcase h1 {
113
+ font-family: var(--typography-font-family-sans);
114
+ font-size: var(--typography-font-size-2xl);
115
+ font-weight: var(--typography-font-weight-bold);
116
+ color: var(--color-neutral-900);
117
+ margin: 0 0 var(--spacing-lg) 0;
118
+ }
119
+
120
+ .input-showcase h2 {
121
+ font-family: var(--typography-font-family-sans);
122
+ font-size: var(--typography-font-size-lg);
123
+ font-weight: var(--typography-font-weight-medium);
124
+ color: var(--color-neutral-700);
125
+ text-transform: uppercase;
126
+ letter-spacing: 0.05em;
127
+ margin: 0 0 var(--spacing-md) 0;
128
+ }
129
+
130
+ .input-variants {
131
+ display: grid;
132
+ grid-template-columns: 1fr 1fr 1fr;
133
+ gap: var(--spacing-xl);
134
+ }
135
+
136
+ .input-variant-section {
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: var(--spacing-md);
140
+ }
141
+
142
+ .input-example {
143
+ width: 100%;
144
+ max-width: 300px;
145
+ }
146
+
147
+
@@ -0,0 +1,231 @@
1
+ /* MultiSelectDropdown Component Styles */
2
+ .multiselect-dropdown {
3
+ position: relative;
4
+ display: block;
5
+ width: 100%;
6
+ }
7
+
8
+ .multiselect-dropdown__input-container {
9
+ position: relative;
10
+ width: 100%;
11
+ }
12
+
13
+ .multiselect-dropdown__input {
14
+ width: 100%;
15
+ }
16
+
17
+ /* Hide placeholder text when chips are displayed */
18
+ .multiselect-dropdown__input-container:has(.multiselect-dropdown__chips) .dropdown-input__text {
19
+ opacity: 0;
20
+ }
21
+
22
+ .multiselect-dropdown__chips {
23
+ position: absolute;
24
+ top: 50%;
25
+ left: var(--multiselect-spacing-chips-left);
26
+ transform: translateY(-50%);
27
+ display: flex;
28
+ align-items: center;
29
+ gap: var(--multiselect-spacing-chips-gap);
30
+ max-width: calc(100% - var(--multiselect-size-icon-chevron-width));
31
+ overflow: hidden;
32
+ pointer-events: none;
33
+ z-index: 10;
34
+ padding: var(--multiselect-spacing-chips-padding);
35
+ }
36
+
37
+ .multiselect-dropdown__chip {
38
+ flex-shrink: 0;
39
+ pointer-events: auto;
40
+ }
41
+
42
+ .multiselect-dropdown__hidden-count {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ min-width: var(--multiselect-spacing-hidden-count-min-width);
47
+ height: var(--multiselect-size-hidden-count-height);
48
+ padding: var(--multiselect-spacing-hidden-count-padding);
49
+ background-color: var(--multiselect-color-hidden-count-background);
50
+ border-radius: var(--multiselect-border-radius);
51
+ font-family: var(--typography-font-family-sans, 'Inter', sans-serif);
52
+ font-size: var(--multiselect-size-typography-hidden-count-font-size);
53
+ font-weight: var(--multiselect-size-typography-hidden-count-font-weight);
54
+ color: var(--multiselect-color-hidden-count-text);
55
+ pointer-events: auto;
56
+ }
57
+
58
+ .multiselect-dropdown__panel {
59
+ position: absolute;
60
+ top: calc(100% + var(--multiselect-spacing-menu-gap));
61
+ left: 0;
62
+ right: 0;
63
+ z-index: 1000;
64
+ width: 100%;
65
+ background-color: var(--multiselect-color-menu-background);
66
+ border: var(--multiselect-border-width) solid var(--multiselect-color-dropdownbasic-border);
67
+ border-top: var(--multiselect-color-menu-border-top);
68
+ border-radius: var(--multiselect-border-radius);
69
+ box-shadow: var(--multiselect-shadow-menu);
70
+ overflow: hidden;
71
+ opacity: 1;
72
+ transform: translateY(0);
73
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
74
+ animation: dropdownFadeIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);
75
+ }
76
+
77
+ .multiselect-dropdown__menu {
78
+ position: relative;
79
+ opacity: 1;
80
+ transform: translateY(0);
81
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
82
+ display: flex;
83
+ flex-direction: column;
84
+ }
85
+
86
+ .multiselect-dropdown__search {
87
+ padding: var(--multiselect-spacing-options-padding-y) var(--multiselect-spacing-options-padding-x);
88
+ padding-bottom: var(--multiselect-spacing-search-padding-bottom, var(--multiselect-spacing-options-padding-y));
89
+ padding-right: var(--multiselect-spacing-search-padding-right, var(--multiselect-spacing-options-padding-x));
90
+ }
91
+
92
+ .multiselect-dropdown__search-input {
93
+ width: 100%;
94
+ height: 32px;
95
+ padding: 0 var(--spacing-sm, 8px);
96
+ border-radius: var(--multiselect-border-radius);
97
+ border: var(--multiselect-border-width) solid var(--multiselect-color-dropdownbasic-border);
98
+ outline: none;
99
+ }
100
+
101
+ .multiselect-dropdown__options {
102
+ max-height: var(--multiselect-size-menu-max-height);
103
+ overflow-y: auto;
104
+ padding: var(--multiselect-spacing-options-padding-y) var(--multiselect-spacing-options-padding-x);
105
+ display: flex;
106
+ flex-direction: column;
107
+ row-gap: var(--multiselect-spacing-options-gap-y, var(--multiselect-spacing-option-gap));
108
+ }
109
+
110
+ .multiselect-dropdown__group {
111
+ display: flex;
112
+ flex-direction: column;
113
+ row-gap: var(--multiselect-spacing-group-gap-y);
114
+ }
115
+
116
+ .multiselect-dropdown__group + .multiselect-dropdown__group {
117
+ border-top: var(--multiselect-border-width) solid var(--multiselect-color-divider-default);
118
+ padding-top: var(--multiselect-spacing-group-gap-y);
119
+ }
120
+
121
+ .multiselect-dropdown__group-header {
122
+ padding: var(--multiselect-spacing-group-header-padding-y) var(--multiselect-spacing-group-header-padding-x);
123
+ display: flex;
124
+ align-items: center;
125
+ column-gap: var(--multiselect-spacing-group-header-gap);
126
+ }
127
+ .multiselect-dropdown__group-icon {
128
+ width: var(--multiselect-size-group-icon);
129
+ height: var(--multiselect-size-group-icon);
130
+ border-radius: 9999px;
131
+ overflow: hidden;
132
+ flex-shrink: 0;
133
+ }
134
+
135
+ .multiselect-dropdown__group-icon img {
136
+ width: 100%;
137
+ height: 100%;
138
+ object-fit: cover;
139
+ display: block;
140
+ }
141
+
142
+ .multiselect-dropdown__group-options {
143
+ display: flex;
144
+ flex-direction: column;
145
+ row-gap: var(--multiselect-spacing-option-gap);
146
+ }
147
+
148
+ .multiselect-dropdown__option {
149
+ cursor: pointer;
150
+ transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
151
+ border-radius: var(--multiselect-border-radius);
152
+ border: var(--multiselect-border-selected-width) solid var(--multiselect-color-option-border-default);
153
+ /* Reserve the same space in both states to avoid layout shift */
154
+ min-width: var(--multiselect-size-optionitem-min-width);
155
+ min-height: var(--multiselect-size-optionitem-min-height);
156
+ padding: var(--multiselect-spacing-optionitem-padding-y) var(--multiselect-spacing-optionitem-padding-x);
157
+ display: flex;
158
+ align-items: center;
159
+ gap: var(--multiselect-spacing-optionitem-gap);
160
+ }
161
+
162
+ .multiselect-dropdown__option:hover {
163
+ background-color: var(--multiselect-color-option-background-hover);
164
+ border-radius: var(--multiselect-border-selected-radius, var(--multiselect-border-radius));
165
+ }
166
+
167
+ .multiselect-dropdown__option:active {
168
+ background-color: var(--multiselect-color-option-background-hover);
169
+ border-radius: var(--multiselect-border-selected-radius, var(--multiselect-border-radius));
170
+ }
171
+
172
+ /* Selected state applied to the option container when its Checkbox is checked */
173
+ .multiselect-dropdown__option:has(.checkbox--checked) {
174
+ opacity: 1;
175
+ border-radius: var(--multiselect-border-selected-radius, var(--multiselect-border-radius));
176
+ border-color: var(--multiselect-color-option-item-border-positive);
177
+ border-top: var(--multiselect-border-selected-width) solid var(--multiselect-color-option-item-border-positive);
178
+ background-color: var(--multiselect-color-option-item-selected);
179
+ }
180
+
181
+ /* Ensure wrapper controls spacing */
182
+ .multiselect-dropdown__option .checkbox-label { padding: 0; width: 100%; }
183
+
184
+ .multiselect-dropdown__option-icon {
185
+ width: var(--multiselect-size-option-icon);
186
+ height: var(--multiselect-size-option-icon);
187
+ border-radius: 9999px;
188
+ overflow: hidden;
189
+ flex-shrink: 0;
190
+ }
191
+
192
+ .multiselect-dropdown__option-icon img {
193
+ width: 100%;
194
+ height: 100%;
195
+ object-fit: cover;
196
+ display: block;
197
+ }
198
+
199
+ .multiselect-dropdown__footer {
200
+ padding: var(--multiselect-spacing-footer-padding);
201
+ font-family: var(--typography-font-family-sans, 'Inter', sans-serif);
202
+ font-size: var(--multiselect-size-typography-footer-font-size);
203
+ line-height: var(--multiselect-size-typography-footer-line-height);
204
+ color: var(--multiselect-color-footer-text);
205
+ background-color: var(--multiselect-color-footer-background);
206
+ border-top: var(--multiselect-color-menu-border-top);
207
+ margin-top: 0;
208
+ }
209
+
210
+ .multiselect-dropdown__footer-text {
211
+ margin: 0;
212
+ }
213
+
214
+ /* States */
215
+ .multiselect-dropdown--disabled .multiselect-dropdown__chips {
216
+ opacity: 0.6;
217
+ }
218
+
219
+
220
+ /* Responsive adjustments */
221
+ @media (max-width: var(--multiselect-responsive-mobile-breakpoint)) {
222
+ .multiselect-dropdown__chips {
223
+ max-width: calc(100% - var(--multiselect-responsive-mobile-icon-width));
224
+ }
225
+
226
+ .multiselect-dropdown__hidden-count {
227
+ min-width: var(--multiselect-responsive-mobile-hidden-count-min-width);
228
+ height: var(--multiselect-responsive-mobile-hidden-count-height);
229
+ font-size: var(--multiselect-responsive-mobile-hidden-count-font-size);
230
+ }
231
+ }
@@ -0,0 +1,113 @@
1
+ /* ===== Footer Container ===== */
2
+ .footer {
3
+ @apply w-full bg-[var(--footer-color-background-default)] text-white font-sans;
4
+ }
5
+
6
+ .footer__wrapper {
7
+ @apply mx-auto w-full max-w-[1440px] px-6 py-10 md:px-10 lg:px-16;
8
+ }
9
+
10
+ .footer__desktop {
11
+ @apply flex-col hidden gap-10 md:flex;
12
+ }
13
+
14
+ .footer__top-row {
15
+ @apply flex flex-col gap-8 md:flex-row md:items-start md:justify-between lg:gap-0;
16
+ }
17
+
18
+ .footer__content-left {
19
+ @apply flex flex-wrap flex-1 gap-10 md:flex-nowrap lg:gap-16;
20
+ }
21
+
22
+ .footer__column {
23
+ @apply min-w-0 lg:min-w-[120px] space-y-3;
24
+ }
25
+
26
+ .footer__column-title {
27
+ @apply text-sm font-semibold tracking-wide text-white uppercase;
28
+ }
29
+
30
+ .footer__column-links {
31
+ @apply flex flex-col gap-1.5;
32
+ }
33
+
34
+ .footer__contact {
35
+ @apply min-w-0 lg:min-w-[180px] space-y-3;
36
+ }
37
+
38
+ .footer__contact-info {
39
+ @apply space-y-1 text-xs text-white/80;
40
+ }
41
+
42
+ .footer__socials {
43
+ @apply min-w-0 lg:min-w-[120px] space-y-3;
44
+ }
45
+
46
+ .footer__socials-icons {
47
+ @apply flex flex-wrap items-center gap-3;
48
+ }
49
+
50
+ .footer__social-link {
51
+ @apply text-white transition hover:opacity-80;
52
+ }
53
+
54
+ .footer__logo-section {
55
+ @apply flex items-start justify-end shrink-0;
56
+ }
57
+
58
+ .footer__logo-container {
59
+ @apply flex flex-col items-end gap-2;
60
+ }
61
+
62
+ .footer__copyright {
63
+ @apply text-[10px] text-white/70 text-right;
64
+ }
65
+
66
+ .footer__copyright-standalone {
67
+ @apply text-[10px] text-white/70;
68
+ }
69
+
70
+ /* ===== Mobile Layout ===== */
71
+ .footer__mobile {
72
+ @apply flex flex-col gap-6 md:hidden;
73
+ }
74
+
75
+ .footer__mobile-section {
76
+ @apply pb-3 border-b border-white/10;
77
+ }
78
+
79
+ .footer__mobile-section-button {
80
+ @apply flex items-center justify-between w-full gap-2 text-sm font-semibold text-white;
81
+ }
82
+
83
+ .footer__mobile-section-icon {
84
+ @apply transition-transform;
85
+ }
86
+
87
+ .footer__mobile-section-icon--rotated {
88
+ @apply rotate-180;
89
+ }
90
+
91
+ .footer__mobile-section-content {
92
+ @apply mt-2 flex flex-col gap-1.5;
93
+ }
94
+
95
+ .footer__mobile-contact {
96
+ @apply space-y-2;
97
+ }
98
+
99
+ .footer__mobile-contact-title {
100
+ @apply text-sm font-semibold tracking-wide text-white uppercase;
101
+ }
102
+
103
+ .footer__mobile-contact-info {
104
+ @apply space-y-1 text-xs text-white/80;
105
+ }
106
+
107
+ .footer__mobile-footer {
108
+ @apply flex flex-col items-center gap-2 mt-4;
109
+ }
110
+
111
+ .footer__mobile-copyright {
112
+ @apply text-[10px] text-white/70 text-center;
113
+ }
@@ -0,0 +1,162 @@
1
+ .header {
2
+ @apply flex md:justify-between w-full h-[4.5rem] px-4 lg:px-24 shadow-[0_3px_8px_#00000040] sm:justify-start gap-[1.375rem];
3
+ }
4
+
5
+ .header-logo {
6
+ @apply flex flex-col justify-center h-full;
7
+ }
8
+
9
+ .header-nav {
10
+ @apply flex items-center justify-end w-auto;
11
+ }
12
+
13
+ .header-nav__items {
14
+ @apply flex items-stretch h-full;
15
+ }
16
+
17
+ .header__item {
18
+ @apply min-w-[8.1875rem] flex justify-center h-full items-center;
19
+ font-weight: var(--typography-font-weight-regular);
20
+ font-style: Regular;
21
+ font-size: var(--typography-font-size-base);
22
+
23
+ &:hover:not(:has(button)) {
24
+ @apply bg-[var(--color-elevation-state-hover-subtle)];
25
+ }
26
+
27
+ &:active {
28
+ @apply bg-[var(--color-elevation-state-pressed-subtle)]
29
+ }
30
+
31
+ }
32
+
33
+ .header__item--active {
34
+ @apply lg:border-b-4 lg:border-l-0 border-l-4 border-[var(--color-sandy-brown-500)] text-[var(--color-text-brand)];
35
+ font-weight: var(--typography-body-lg-6-font-weight-bold);
36
+
37
+ * {
38
+ @apply text-[var(--color-text-brand)];
39
+ }
40
+ }
41
+
42
+ .header-logo__link {
43
+ @apply inline-flex items-center gap-2;
44
+ }
45
+
46
+ .header-logo__image {
47
+ @apply w-auto h-6 md:h-7;
48
+ }
49
+
50
+ .header__item__link {
51
+ @apply block px-1 py-1 transition-colors;
52
+ }
53
+
54
+ .header-nav__user-section {
55
+ @apply flex items-center h-full gap-3 pl-8;
56
+ }
57
+
58
+ .header-nav__user-connected-section {
59
+ @apply border-l border-l-[var(--color-surface-300)]
60
+ }
61
+
62
+ .header-nav__user-container {
63
+ @apply flex items-center h-full;
64
+ }
65
+
66
+ /* ===== Mobile Nav Classes ===== */
67
+
68
+ .header-logo__link {
69
+ @apply inline-flex items-center gap-2;
70
+ }
71
+
72
+ .header-logo__image-mobile {
73
+ @apply w-auto h-6;
74
+ }
75
+
76
+ .header-login-button {
77
+ @apply hidden rounded-full bg-teal-600 px-4 py-1.5 text-sm font-medium text-white shadow-sm transition hover:bg-teal-700 focus:outline-none focus:ring-2 focus:ring-teal-500 md:inline-block;
78
+ }
79
+
80
+ .header-user-actions {
81
+ @apply flex items-center gap-3;
82
+ }
83
+
84
+ .mobile-nav__backdrop {
85
+ @apply fixed inset-0 z-40 transition-opacity bg-black/40;
86
+ }
87
+
88
+ .mobile-nav__backdrop--open {
89
+ @apply opacity-100 pointer-events-auto;
90
+ }
91
+
92
+ .mobile-nav__backdrop--closed {
93
+ @apply opacity-0 pointer-events-none;
94
+ }
95
+
96
+ .mobile-nav__sheet {
97
+ @apply fixed left-0 top-0 z-50 h-dvh w-[84vw] max-w-[360px] bg-white shadow-xl border-r border-black/10 transition-transform duration-300 flex flex-col;
98
+ }
99
+
100
+ .mobile-nav__sheet--open {
101
+ @apply translate-x-0;
102
+ }
103
+
104
+ .mobile-nav__sheet--closed {
105
+ @apply -translate-x-full;
106
+ }
107
+
108
+ .mobile-nav__header {
109
+ @apply flex flex-col items-start justify-between px-4 pb-4 border-b border-black/10;
110
+
111
+ & >:first-child {
112
+ @apply flex justify-end w-full;
113
+ }
114
+
115
+ & >:last-child {
116
+ @apply flex justify-start w-full;
117
+ }
118
+ }
119
+
120
+ .mobile-nav__close-button {
121
+ @apply inline-flex items-center justify-center rounded-full size-9 hover:bg-black/5 focus:outline-none focus:ring-2 focus:ring-black/20;
122
+ }
123
+
124
+ .mobile-nav__content {
125
+ @apply flex-1 overflow-y-auto;
126
+ }
127
+
128
+ .mobile-nav__list {
129
+ @apply py-2;
130
+ }
131
+
132
+ .mobile-nav__item-button {
133
+ @apply w-full px-4 py-3 text-sm text-left;
134
+ }
135
+
136
+ .mobile-nav__footer {
137
+ @apply p-4 border-t border-black/10;
138
+ }
139
+
140
+ .mobile-nav__user-info {
141
+ @apply flex items-center justify-between;
142
+ }
143
+
144
+ .mobile-nav__user-text {
145
+ @apply text-sm;
146
+ }
147
+
148
+ .mobile-nav__user-name {
149
+ @apply font-medium text-black;
150
+ }
151
+
152
+ .mobile-nav__user-agency {
153
+ @apply text-black/60;
154
+ }
155
+
156
+ .mobile-nav__logout-button {
157
+ @apply rounded-full px-4 py-1.5 text-sm font-medium border border-black/10 hover:bg-black/5;
158
+ }
159
+
160
+ .mobile-nav__login-button {
161
+ @apply w-full px-4 py-2 text-sm font-medium text-white transition bg-teal-600 rounded-full shadow-sm hover:bg-teal-700 focus:outline-none focus:ring-2 focus:ring-teal-500;
162
+ }
@@ -0,0 +1,63 @@
1
+ /* Scrollbar Styles */
2
+ /* Webkit browsers (Chrome, Safari, Edge) */
3
+ ::-webkit-scrollbar {
4
+ width: var(--scrollbar-size-width);
5
+ height: var(--scrollbar-size-width);
6
+ }
7
+
8
+ ::-webkit-scrollbar-track {
9
+ background: var(--scrollbar-color-track);
10
+ border-radius: var(--scrollbar-border-radius);
11
+ }
12
+
13
+ ::-webkit-scrollbar-thumb {
14
+ background: var(--scrollbar-color-thumb);
15
+ border-radius: var(--scrollbar-border-radius);
16
+ margin: var(--scrollbar-spacing-margin);
17
+ min-height: 20px;
18
+ }
19
+
20
+ ::-webkit-scrollbar-thumb:hover {
21
+ background: var(--scrollbar-color-thumb-hover);
22
+ }
23
+
24
+ ::-webkit-scrollbar-corner {
25
+ background: var(--scrollbar-color-track);
26
+ }
27
+
28
+ /* Firefox */
29
+ * {
30
+ scrollbar-width: thin;
31
+ scrollbar-color: var(--scrollbar-color-thumb) var(--scrollbar-color-track);
32
+ }
33
+
34
+ /* Custom scrollbar for specific elements */
35
+ .custom-scrollbar {
36
+ scrollbar-width: thin;
37
+ scrollbar-color: var(--scrollbar-color-thumb) var(--scrollbar-color-track);
38
+ }
39
+
40
+ .custom-scrollbar::-webkit-scrollbar {
41
+ width: var(--scrollbar-size-width);
42
+ height: var(--scrollbar-size-width);
43
+ }
44
+
45
+ .custom-scrollbar::-webkit-scrollbar-track {
46
+ background: var(--scrollbar-color-track);
47
+ border-radius: var(--scrollbar-border-radius);
48
+ }
49
+
50
+ .custom-scrollbar::-webkit-scrollbar-thumb {
51
+ background: var(--scrollbar-color-thumb);
52
+ border-radius: var(--scrollbar-border-radius);
53
+ margin: var(--scrollbar-spacing-margin);
54
+ min-height: 20px;
55
+ }
56
+
57
+ .custom-scrollbar::-webkit-scrollbar-thumb:hover {
58
+ background: var(--scrollbar-color-thumb-hover);
59
+ }
60
+
61
+ .custom-scrollbar::-webkit-scrollbar-corner {
62
+ background: var(--scrollbar-color-track);
63
+ }