mautourco-components 0.2.9 → 0.2.10

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 (193) hide show
  1. package/dist/components/atoms/Button/Button.css +28 -0
  2. package/dist/components/atoms/Button/Button.d.ts +1 -1
  3. package/dist/components/atoms/Button/Button.js +2 -1
  4. package/dist/components/atoms/Chip/Chip.css +2238 -0
  5. package/dist/components/atoms/Chip/Chip.d.ts +27 -0
  6. package/dist/components/atoms/Chip/Chip.js +37 -0
  7. package/dist/components/atoms/Divider/Divider.css +2135 -0
  8. package/dist/components/atoms/Divider/Divider.d.ts +14 -0
  9. package/dist/components/atoms/Divider/Divider.js +16 -0
  10. package/dist/components/atoms/Icon/Icon.d.ts +4 -3
  11. package/dist/components/atoms/Icon/Icon.js +4 -118
  12. package/dist/components/atoms/Icon/icons/AccomIcon.d.ts +12 -0
  13. package/dist/components/atoms/Icon/icons/AccomIcon.js +36 -0
  14. package/dist/components/atoms/Icon/icons/ArrowDownOutlineIcon.d.ts +8 -0
  15. package/dist/components/atoms/Icon/icons/ArrowDownOutlineIcon.js +36 -0
  16. package/dist/components/atoms/Icon/icons/ArrowRightOutlineIcon.d.ts +8 -0
  17. package/dist/components/atoms/Icon/icons/ArrowRightOutlineIcon.js +36 -0
  18. package/dist/components/atoms/Icon/icons/Building2OutlineIcon.d.ts +8 -0
  19. package/dist/components/atoms/Icon/icons/Building2OutlineIcon.js +36 -0
  20. package/dist/components/atoms/Icon/icons/BusIcon.d.ts +12 -0
  21. package/dist/components/atoms/Icon/icons/BusIcon.js +36 -0
  22. package/dist/components/atoms/Icon/icons/Calendar2Icon.d.ts +12 -0
  23. package/dist/components/atoms/Icon/icons/Calendar2Icon.js +36 -0
  24. package/dist/components/atoms/Icon/icons/CalendarRangeOutlineIcon.d.ts +8 -0
  25. package/dist/components/atoms/Icon/icons/CalendarRangeOutlineIcon.js +36 -0
  26. package/dist/components/atoms/Icon/icons/MapIcon.d.ts +8 -0
  27. package/dist/components/atoms/Icon/icons/MapIcon.js +36 -0
  28. package/dist/components/atoms/Icon/icons/MicroIcon.d.ts +12 -0
  29. package/dist/components/atoms/Icon/icons/MicroIcon.js +36 -0
  30. package/dist/components/atoms/Icon/icons/MoreVerticalIcon.d.ts +12 -0
  31. package/dist/components/atoms/Icon/icons/MoreVerticalIcon.js +36 -0
  32. package/dist/components/atoms/Icon/icons/NightIcon.d.ts +12 -0
  33. package/dist/components/atoms/Icon/icons/NightIcon.js +36 -0
  34. package/dist/components/atoms/Icon/icons/PlaneLandingOutlineIcon.d.ts +8 -0
  35. package/dist/components/atoms/Icon/icons/PlaneLandingOutlineIcon.js +36 -0
  36. package/dist/components/atoms/Icon/icons/PlaneTakeoffOutlineIcon.d.ts +8 -0
  37. package/dist/components/atoms/Icon/icons/PlaneTakeoffOutlineIcon.js +36 -0
  38. package/dist/components/atoms/Icon/icons/RowExcursion.d.ts +16 -0
  39. package/dist/components/atoms/Icon/icons/RowExcursion.js +28 -0
  40. package/dist/components/atoms/Icon/icons/StopWatchIcon.d.ts +12 -0
  41. package/dist/components/atoms/Icon/icons/StopWatchIcon.js +36 -0
  42. package/dist/components/atoms/Icon/icons/Utensils.d.ts +12 -0
  43. package/dist/components/atoms/Icon/icons/Utensils.js +36 -0
  44. package/dist/components/atoms/Icon/icons/WalletIcon.d.ts +12 -0
  45. package/dist/components/atoms/Icon/icons/WalletIcon.js +36 -0
  46. package/dist/components/atoms/Icon/icons/registry.d.ts +66 -0
  47. package/dist/components/atoms/Icon/icons/registry.js +121 -0
  48. package/dist/components/atoms/Typography/Typography.d.ts +3 -1
  49. package/dist/components/atoms/Typography/Typography.js +3 -15
  50. package/dist/components/molecules/ActionDropdown/ActionDropdown.css +2119 -0
  51. package/dist/components/molecules/ActionDropdown/ActionDropdown.d.ts +21 -0
  52. package/dist/components/molecules/ActionDropdown/ActionDropdown.js +34 -0
  53. package/dist/components/molecules/DateDisplay/DateDisplay.d.ts +14 -0
  54. package/dist/components/molecules/DateDisplay/DateDisplay.js +39 -0
  55. package/dist/components/molecules/FeatureRow/FeatureRow.css +2130 -0
  56. package/dist/components/molecules/FeatureRow/FeatureRow.d.ts +17 -0
  57. package/dist/components/molecules/FeatureRow/FeatureRow.js +22 -0
  58. package/dist/components/molecules/FromTo/FromTo.d.ts +8 -0
  59. package/dist/components/molecules/FromTo/FromTo.js +24 -0
  60. package/dist/components/molecules/LocationDropdown/LocationDropdown.d.ts +1 -0
  61. package/dist/components/molecules/LocationDropdown/LocationDropdown.js +17 -4
  62. package/dist/components/molecules/Pagination/Pagination.css +2168 -0
  63. package/dist/components/molecules/Pagination/Pagination.d.ts +16 -0
  64. package/dist/components/molecules/Pagination/Pagination.js +90 -0
  65. package/dist/components/molecules/SectionTitle/SectionTitle.css +2112 -0
  66. package/dist/components/molecules/SectionTitle/SectionTitle.d.ts +16 -0
  67. package/dist/components/molecules/SectionTitle/SectionTitle.js +21 -0
  68. package/dist/components/molecules/Stepper/Stepper.css +2144 -0
  69. package/dist/components/molecules/Stepper/Stepper.d.ts +18 -0
  70. package/dist/components/molecules/Stepper/Stepper.js +33 -0
  71. package/dist/components/molecules/TableServiceItem/DetailsCol.d.ts +12 -0
  72. package/dist/components/molecules/TableServiceItem/DetailsCol.js +17 -0
  73. package/dist/components/molecules/TableServiceItem/ItemCol.d.ts +13 -0
  74. package/dist/components/molecules/TableServiceItem/ItemCol.js +24 -0
  75. package/dist/components/molecules/TableServiceItem/RowAccommodation.d.ts +16 -0
  76. package/dist/components/molecules/TableServiceItem/RowAccommodation.js +37 -0
  77. package/dist/components/molecules/TableServiceItem/RowExcursion.d.ts +16 -0
  78. package/dist/components/molecules/TableServiceItem/RowExcursion.js +22 -0
  79. package/dist/components/molecules/TableServiceItem/RowOtherServices.d.ts +9 -0
  80. package/dist/components/molecules/TableServiceItem/RowOtherServices.js +34 -0
  81. package/dist/components/molecules/TableServiceItem/RowTransfer.d.ts +15 -0
  82. package/dist/components/molecules/TableServiceItem/RowTransfer.js +37 -0
  83. package/dist/components/molecules/TableServiceItem/index.d.ts +17 -0
  84. package/dist/components/molecules/TableServiceItem/index.js +15 -0
  85. package/dist/components/molecules/TextWithIcon/TextWithIcon.d.ts +30 -0
  86. package/dist/components/molecules/TextWithIcon/TextWithIcon.js +31 -0
  87. package/dist/components/molecules/TooltipDisplay/TooltipDisplay.d.ts +13 -0
  88. package/dist/components/molecules/TooltipDisplay/TooltipDisplay.js +18 -0
  89. package/dist/components/organisms/CarBookingCard/CarBookingCard.css +2313 -0
  90. package/dist/components/organisms/CarBookingCard/CarBookingCard.d.ts +51 -0
  91. package/dist/components/organisms/CarBookingCard/CarBookingCard.js +39 -0
  92. package/dist/components/organisms/CarBookingCard/index.d.ts +2 -0
  93. package/dist/components/organisms/CarBookingCard/index.js +1 -0
  94. package/dist/components/organisms/Table/Table.css +2280 -0
  95. package/dist/components/organisms/Table/Table.d.ts +50 -0
  96. package/dist/components/organisms/Table/Table.js +95 -0
  97. package/dist/components/organisms/Table/TableCell.d.ts +15 -0
  98. package/dist/components/organisms/Table/TableCell.js +16 -0
  99. package/dist/components/organisms/Table/columns/booking-columns.d.ts +7 -0
  100. package/dist/components/organisms/Table/columns/booking-columns.js +83 -0
  101. package/dist/components/organisms/Table/columns/detail-resume-columns.d.ts +3 -0
  102. package/dist/components/organisms/Table/columns/detail-resume-columns.js +178 -0
  103. package/dist/components/organisms/Table/columns/index.d.ts +12 -0
  104. package/dist/components/organisms/Table/columns/index.js +9 -0
  105. package/dist/components/organisms/Table/columns/quotation-columns.d.ts +7 -0
  106. package/dist/components/organisms/Table/columns/quotation-columns.js +91 -0
  107. package/dist/components/organisms/Table/constant.d.ts +6 -0
  108. package/dist/components/organisms/Table/constant.js +24 -0
  109. package/dist/components/organisms/Table/index.d.ts +2 -0
  110. package/dist/components/organisms/Table/index.js +2 -0
  111. package/dist/components/ui/popover.d.ts +3 -3
  112. package/dist/components/ui/popover.js +5 -5
  113. package/dist/components/ui/tooltip.d.ts +7 -0
  114. package/dist/components/ui/tooltip.js +42 -0
  115. package/dist/index.d.ts +46 -26
  116. package/dist/index.js +29 -16
  117. package/dist/styles/components/molecule/location-dropdown.css +38 -0
  118. package/dist/styles/components/typography.css +1 -0
  119. package/dist/types/table/action-dropdown-type.types.d.ts +5 -0
  120. package/dist/types/table/action-dropdown-type.types.js +6 -0
  121. package/dist/types/table/booking.types.d.ts +16 -0
  122. package/dist/types/table/booking.types.js +1 -0
  123. package/dist/types/table/detail-resume.types.d.ts +155 -0
  124. package/dist/types/table/detail-resume.types.js +7 -0
  125. package/dist/types/table/index.d.ts +3 -0
  126. package/dist/types/table/index.js +3 -0
  127. package/dist/types/table/quotation.types.d.ts +23 -0
  128. package/dist/types/table/quotation.types.js +1 -0
  129. package/package.json +6 -1
  130. package/src/components/atoms/Button/Button.css +28 -0
  131. package/src/components/atoms/Button/Button.tsx +3 -2
  132. package/src/components/atoms/Chip/Chip.css +161 -0
  133. package/src/components/atoms/Chip/Chip.tsx +79 -0
  134. package/src/components/atoms/Divider/Divider.css +58 -0
  135. package/src/components/atoms/Divider/Divider.tsx +36 -0
  136. package/src/components/atoms/Icon/Icon.tsx +7 -153
  137. package/src/components/atoms/Icon/icons/AccomIcon.tsx +45 -0
  138. package/src/components/atoms/Icon/icons/ArrowDownOutlineIcon.tsx +41 -0
  139. package/src/components/atoms/Icon/icons/ArrowRightOutlineIcon.tsx +50 -0
  140. package/src/components/atoms/Icon/icons/Building2OutlineIcon.tsx +52 -0
  141. package/src/components/atoms/Icon/icons/BusIcon.tsx +52 -0
  142. package/src/components/atoms/Icon/icons/Calendar2Icon.tsx +54 -0
  143. package/src/components/atoms/Icon/icons/CalendarRangeOutlineIcon.tsx +55 -0
  144. package/src/components/atoms/Icon/icons/MapIcon.tsx +48 -0
  145. package/src/components/atoms/Icon/icons/MicroIcon.tsx +45 -0
  146. package/src/components/atoms/Icon/icons/MoreVerticalIcon.tsx +53 -0
  147. package/src/components/atoms/Icon/icons/NightIcon.tsx +45 -0
  148. package/src/components/atoms/Icon/icons/PlaneLandingOutlineIcon.tsx +56 -0
  149. package/src/components/atoms/Icon/icons/PlaneTakeoffOutlineIcon.tsx +52 -0
  150. package/src/components/atoms/Icon/icons/RowExcursion.tsx +54 -0
  151. package/src/components/atoms/Icon/icons/StopWatchIcon.tsx +45 -0
  152. package/src/components/atoms/Icon/icons/Utensils.tsx +45 -0
  153. package/src/components/atoms/Icon/icons/WalletIcon.tsx +45 -0
  154. package/src/components/atoms/Icon/icons/registry.tsx +127 -0
  155. package/src/components/atoms/Typography/Typography.tsx +22 -30
  156. package/src/components/molecules/ActionDropdown/ActionDropdown.css +23 -0
  157. package/src/components/molecules/ActionDropdown/ActionDropdown.tsx +53 -0
  158. package/src/components/molecules/DateDisplay/DateDisplay.tsx +47 -0
  159. package/src/components/molecules/FeatureRow/FeatureRow.css +53 -0
  160. package/src/components/molecules/FeatureRow/FeatureRow.tsx +46 -0
  161. package/src/components/molecules/FromTo/FromTo.tsx +31 -0
  162. package/src/components/molecules/LocationDropdown/LocationDropdown.tsx +67 -38
  163. package/src/components/molecules/Pagination/Pagination.css +90 -0
  164. package/src/components/molecules/Pagination/Pagination.tsx +149 -0
  165. package/src/components/molecules/SectionTitle/SectionTitle.css +35 -0
  166. package/src/components/molecules/SectionTitle/SectionTitle.tsx +43 -0
  167. package/src/components/molecules/Stepper/Stepper.css +67 -0
  168. package/src/components/molecules/Stepper/Stepper.tsx +74 -0
  169. package/src/components/molecules/TableServiceItem/DetailsCol.tsx +25 -0
  170. package/src/components/molecules/TableServiceItem/ItemCol.tsx +68 -0
  171. package/src/components/molecules/TableServiceItem/RowAccommodation.tsx +56 -0
  172. package/src/components/molecules/TableServiceItem/RowExcursion.tsx +40 -0
  173. package/src/components/molecules/TableServiceItem/RowOtherServices.tsx +50 -0
  174. package/src/components/molecules/TableServiceItem/RowTransfer.tsx +60 -0
  175. package/src/components/molecules/TableServiceItem/index.ts +24 -0
  176. package/src/components/molecules/TextWithIcon/TextWithIcon.tsx +62 -0
  177. package/src/components/molecules/TooltipDisplay/TooltipDisplay.tsx +32 -0
  178. package/src/components/organisms/CarBookingCard/CarBookingCard.css +236 -0
  179. package/src/components/organisms/CarBookingCard/CarBookingCard.tsx +238 -0
  180. package/src/components/organisms/CarBookingCard/index.ts +12 -0
  181. package/src/components/organisms/Table/Table.css +185 -0
  182. package/src/components/organisms/Table/Table.tsx +273 -0
  183. package/src/components/organisms/Table/TableCell.tsx +40 -0
  184. package/src/components/organisms/Table/columns/booking-columns.tsx +118 -0
  185. package/src/components/organisms/Table/columns/detail-resume-columns.tsx +226 -0
  186. package/src/components/organisms/Table/columns/index.ts +11 -0
  187. package/src/components/organisms/Table/columns/quotation-columns.tsx +150 -0
  188. package/src/components/organisms/Table/constant.ts +31 -0
  189. package/src/components/organisms/Table/index.ts +2 -0
  190. package/src/components/ui/popover.tsx +10 -10
  191. package/src/components/ui/tooltip.tsx +45 -0
  192. package/src/styles/components/molecule/location-dropdown.css +29 -0
  193. package/src/styles/components/typography.css +4 -0
@@ -4,7 +4,7 @@ import './Button.css';
4
4
 
5
5
  export interface ButtonProps {
6
6
  /** Variant du bouton */
7
- variant?: 'primary' | 'secondary' | 'outline' | 'outline-primary' | 'outline-secondary';
7
+ variant?: 'primary' | 'secondary' | 'outline' | 'outline-primary' | 'outline-secondary' | 'destructive';
8
8
  /** Taille du bouton */
9
9
  size?: 'sm' | 'md' | 'lg' | 'xl';
10
10
  /** Contenu du bouton */
@@ -56,11 +56,12 @@ const Button: React.FC<ButtonProps> = ({
56
56
 
57
57
  const hasLeadingIcon = Boolean(leadingIcon);
58
58
  const hasTrailingIcon = Boolean(trailingIcon);
59
+ const withIconClass = hasLeadingIcon || hasTrailingIcon ? 'button--with-icon' : '';
59
60
 
60
61
  return (
61
62
  <button
62
63
  type={type}
63
- className={buttonClasses}
64
+ className={[buttonClasses, withIconClass].filter(Boolean).join(' ')}
64
65
  disabled={disabled}
65
66
  onClick={onClick}
66
67
  >
@@ -0,0 +1,161 @@
1
+ .chip {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ gap: var(--chip-spacing-sm-gap, 4px);
6
+ border-radius: var(--chip-border-radius-pill, 9999px);
7
+ font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
8
+ font-weight: var(--font-weight-font-medium, 500);
9
+ line-height: calc(var(--font-leading-leading-base, 16) * 1px);
10
+ white-space: nowrap;
11
+ border: var(--chip-border-width-default, 1px) solid transparent;
12
+ }
13
+
14
+ /* Sizes */
15
+ .chip--sm {
16
+ padding: var(--chip-spacing-sm-padding-y, 4px) var(--chip-spacing-sm-padding-x, 8px);
17
+ font-size: var(--font-size-text-xs, 12px);
18
+ line-height: calc(var(--font-leading-leading-sm, 20) * 1px);
19
+ gap: var(--chip-spacing-sm-gap, 4px);
20
+ }
21
+
22
+ .chip--md {
23
+ padding: var(--chip-spacing-md-padding-y, 4px) var(--chip-spacing-md-padding-x, 12px);
24
+ font-size: var(--font-size-text-sm, 14px);
25
+ line-height: calc(var(--font-leading-leading-sm, 20) * 1px);
26
+ gap: var(--chip-spacing-md-gap, 4px);
27
+ }
28
+
29
+ .chip--lg {
30
+ padding: var(--chip-spacing-lg-padding-y, 4px) var(--chip-spacing-lg-padding-x, 16px);
31
+ font-size: var(--font-size-text-base, 16px);
32
+ line-height: calc(var(--font-leading-leading-base, 16) * 1px);
33
+ gap: var(--chip-spacing-lg-gap, 4px);
34
+ }
35
+
36
+ /* Types - Filled */
37
+ .chip--filled.chip--brand {
38
+ background-color: var(--chip-color-brand-filled-background, #ed4c09);
39
+ color: var(--chip-color-brand-filled-foreground, #ffffff);
40
+ border-color: transparent;
41
+ }
42
+
43
+ .chip--filled.chip--accent {
44
+ background-color: var(--chip-color-accent-filled-background, #0f7173);
45
+ color: var(--chip-color-accent-filled-foreground, #ffffff);
46
+ border-color: transparent;
47
+ }
48
+
49
+ .chip--filled.chip--blue {
50
+ background-color: var(--chip-color-blue-filled-background, #2e4780);
51
+ color: var(--chip-color-blue-filled-foreground, #ffffff);
52
+ border-color: transparent;
53
+ }
54
+
55
+ .chip--filled.chip--green {
56
+ background-color: var(--chip-color-green-filled-background, #dde8db);
57
+ color: var(--chip-color-green-filled-foreground, #384733);
58
+ border-color: transparent;
59
+ }
60
+
61
+ .chip--filled.chip--yellow {
62
+ background-color: var(--chip-color-yellow-filled-background, #eab308);
63
+ color: var(--chip-color-yellow-filled-foreground, #ffffff);
64
+ border-color: transparent;
65
+ }
66
+
67
+ .chip--filled.chip--red {
68
+ background-color: var(--chip-color-red-filled-background, #991b1b);
69
+ color: var(--chip-color-red-filled-foreground, #ffffff);
70
+ border-color: transparent;
71
+ }
72
+
73
+ .chip--filled.chip--neutral {
74
+ background-color: var(--chip-color-neutral-filled-background, #e5e7eb);
75
+ color: var(--chip-color-neutral-filled-foreground, #262626);
76
+ border-color: transparent;
77
+ }
78
+
79
+ /* Types - Outline */
80
+ .chip--outline.chip--brand {
81
+ background-color: var(--chip-color-brand-outline-background, rgba(255, 255, 255, 0));
82
+ color: var(--chip-color-brand-outline-foreground, #ed4c09);
83
+ border-color: var(--chip-color-brand-outline-foreground, #ed4c09);
84
+ }
85
+
86
+ .chip--outline.chip--accent {
87
+ background-color: var(--chip-color-accent-outline-background, rgba(255, 255, 255, 0));
88
+ color: var(--chip-color-accent-outline-foreground, #0f7173);
89
+ border-color: var(--chip-color-accent-outline-foreground, #0f7173);
90
+ }
91
+
92
+ .chip--outline.chip--blue {
93
+ background-color: var(--chip-color-blue-outline-background, rgba(255, 255, 255, 0));
94
+ color: var(--chip-color-blue-outline-foreground, #2e4780);
95
+ border-color: var(--chip-color-blue-outline-foreground, #2e4780);
96
+ }
97
+
98
+ .chip--outline.chip--green {
99
+ background-color: var(--chip-color-green-outline-background, rgba(255, 255, 255, 0));
100
+ color: var(--chip-color-green-outline-foreground, #4a6045);
101
+ border-color: var(--chip-color-green-outline-foreground, #4a6045);
102
+ }
103
+
104
+ .chip--outline.chip--yellow {
105
+ background-color: var(--chip-color-yellow-outline-background, rgba(255, 255, 255, 0));
106
+ color: var(--chip-color-yellow-outline-foreground, #eab308);
107
+ border-color: var(--chip-color-yellow-outline-foreground, #eab308);
108
+ }
109
+
110
+ .chip--outline.chip--red {
111
+ background-color: var(--chip-color-red-outline-background, rgba(255, 255, 255, 0));
112
+ color: var(--chip-color-red-outline-foreground, #991b1b);
113
+ border-color: var(--chip-color-red-outline-foreground, #991b1b);
114
+ }
115
+
116
+ .chip--outline.chip--neutral {
117
+ background-color: var(--chip-color-neutral-outline-background, rgba(255, 255, 255, 0));
118
+ color: var(--chip-color-neutral-outline-text, #262626);
119
+ border-color: var(--chip-color-neutral-outline-foreground, #9ca3af);
120
+ }
121
+
122
+ /* Icon styles */
123
+ .chip__icon {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ flex-shrink: 0;
128
+ }
129
+
130
+ .chip__icon--leading {
131
+ margin-right: 0;
132
+ }
133
+
134
+ .chip__icon--trailing {
135
+ margin-left: 0;
136
+ }
137
+
138
+ /* Label */
139
+ .chip__label {
140
+ display: inline-block;
141
+ }
142
+
143
+ /* Clickable state */
144
+ .chip--clickable {
145
+ cursor: pointer;
146
+ transition: opacity 0.2s ease;
147
+ }
148
+
149
+ .chip--clickable:hover {
150
+ opacity: 0.8;
151
+ }
152
+
153
+ .chip--clickable:active {
154
+ opacity: 0.6;
155
+ }
156
+
157
+ .chip--clickable:focus {
158
+ outline: 2px solid var(--chip-color-brand-outline-foreground, #ed4c09);
159
+ outline-offset: 2px;
160
+ }
161
+
@@ -0,0 +1,79 @@
1
+ import React from 'react';
2
+ import Icon, { IconName } from '../Icon/Icon';
3
+ import './Chip.css';
4
+
5
+ export interface ChipProps {
6
+ /** Label du chip */
7
+ label?: string;
8
+ /** Contenu du chip (alternative à label) */
9
+ children?: React.ReactNode;
10
+ /** Taille du chip */
11
+ size?: 'sm' | 'md' | 'lg';
12
+ /** Type de chip */
13
+ type?: 'filled' | 'outline';
14
+ /** Couleur du chip */
15
+ color?: 'brand' | 'accent' | 'blue' | 'green' | 'yellow' | 'red' | 'neutral';
16
+ /** Icône affichée avant le label */
17
+ leadingIcon?: IconName;
18
+ /** Icône affichée après le label */
19
+ trailingIcon?: IconName;
20
+ /** Taille des icônes */
21
+ iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
22
+ /** Classes CSS supplémentaires */
23
+ className?: string;
24
+ /** Handler de clic (optionnel, rend le chip cliquable) */
25
+ onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
26
+ }
27
+
28
+ const Chip: React.FC<ChipProps> = ({
29
+ label,
30
+ children,
31
+ size = 'sm',
32
+ type = 'filled',
33
+ color = 'brand',
34
+ leadingIcon,
35
+ trailingIcon,
36
+ iconSize = 'sm',
37
+ className = '',
38
+ onClick,
39
+ }) => {
40
+ const baseClasses = 'chip';
41
+ const sizeClass = `chip--${size}`;
42
+ const typeClass = `chip--${type}`;
43
+ const colorClass = `chip--${color}`;
44
+ const clickableClass = onClick ? 'chip--clickable' : '';
45
+
46
+ const chipClasses = [
47
+ baseClasses,
48
+ sizeClass,
49
+ typeClass,
50
+ colorClass,
51
+ clickableClass,
52
+ className,
53
+ ]
54
+ .filter(Boolean)
55
+ .join(' ');
56
+
57
+ const hasLeadingIcon = Boolean(leadingIcon);
58
+ const hasTrailingIcon = Boolean(trailingIcon);
59
+ const content = label || children;
60
+
61
+ return (
62
+ <div className={chipClasses} onClick={onClick} role={onClick ? 'button' : undefined} tabIndex={onClick ? 0 : undefined}>
63
+ {hasLeadingIcon && (
64
+ <span className="chip__icon chip__icon--leading">
65
+ <Icon name={leadingIcon!} size={iconSize} />
66
+ </span>
67
+ )}
68
+ <span className="chip__label">{content}</span>
69
+ {hasTrailingIcon && (
70
+ <span className="chip__icon chip__icon--trailing">
71
+ <Icon name={trailingIcon!} size={iconSize} />
72
+ </span>
73
+ )}
74
+ </div>
75
+ );
76
+ };
77
+
78
+ export default Chip;
79
+
@@ -0,0 +1,58 @@
1
+ .divider {
2
+ flex-shrink: 0;
3
+ background-color: var(--divider-color-default, #d9d9d9);
4
+ border: none;
5
+ }
6
+
7
+ /* Horizontal divider */
8
+ .divider--horizontal {
9
+ width: 100%;
10
+ height: var(--divider-border-width-default, 1px);
11
+ }
12
+
13
+ /* Vertical divider */
14
+ .divider--vertical {
15
+ width: var(--divider-border-width-default, 1px);
16
+ height: 100%;
17
+ }
18
+
19
+ /* Dashed variant (Figma divider) */
20
+ .divider--dashed {
21
+ background-color: transparent;
22
+ }
23
+
24
+ .divider--dashed.divider--horizontal {
25
+ height: var(--divider-dash-thickness, var(--divider-border-width-default, 1px));
26
+ border: none;
27
+ background-image: repeating-linear-gradient(
28
+ to right,
29
+ var(--divider-dash-color, var(--card-color-border-default, #a3a3a3)) 0,
30
+ var(--divider-dash-color, var(--card-color-border-default, #a3a3a3)) var(--divider-dash-length, 10px),
31
+ transparent var(--divider-dash-length, 10px),
32
+ transparent calc(var(--divider-dash-length, 10px) + var(--divider-dash-gap, 6px))
33
+ );
34
+ }
35
+
36
+ .divider--dashed.divider--vertical {
37
+ width: var(--divider-dash-thickness, var(--divider-border-width-default, 1px));
38
+ border: none;
39
+ background-image: repeating-linear-gradient(
40
+ to bottom,
41
+ var(--divider-dash-color, var(--card-color-border-default, #a3a3a3)) 0,
42
+ var(--divider-dash-color, var(--card-color-border-default, #a3a3a3)) var(--divider-dash-length, 10px),
43
+ transparent var(--divider-dash-length, 10px),
44
+ transparent calc(var(--divider-dash-length, 10px) + var(--divider-dash-gap, 6px))
45
+ );
46
+ }
47
+
48
+ /* Color bar variant (used in Car Booking Card) */
49
+ .divider--color-bar {
50
+ height: var(--dimension-height-h-1, 4px);
51
+ background-color: var(--color-border-active-default, #0f7173);
52
+ }
53
+
54
+ .divider--color-bar.divider--vertical {
55
+ width: var(--dimension-width-w-1, 4px);
56
+ height: 100%;
57
+ }
58
+
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import './Divider.css';
3
+
4
+ export interface DividerProps {
5
+ /** Orientation of the divider */
6
+ orientation?: 'horizontal' | 'vertical';
7
+ /** Variant of the divider */
8
+ variant?: 'default' | 'color-bar' | 'dashed';
9
+ /** Custom color (overrides default color) */
10
+ color?: string;
11
+ /** Additional CSS classes */
12
+ className?: string;
13
+ }
14
+
15
+ const Divider: React.FC<DividerProps> = ({
16
+ orientation = 'horizontal',
17
+ variant = 'default',
18
+ color,
19
+ className = '',
20
+ }) => {
21
+ const baseClass = 'divider';
22
+ const orientationClass = `divider--${orientation}`;
23
+ const variantClass = variant !== 'default' ? `divider--${variant}` : '';
24
+ const classes = [baseClass, orientationClass, variantClass, className]
25
+ .filter(Boolean)
26
+ .join(' ');
27
+
28
+ const style: React.CSSProperties = color
29
+ ? { backgroundColor: color, borderColor: color }
30
+ : {};
31
+
32
+ return <div className={classes} style={style} role="separator" aria-orientation={orientation} />;
33
+ };
34
+
35
+ export default Divider;
36
+
@@ -1,164 +1,18 @@
1
- import React from "react";
2
- import Chevron from "./icons/Chevron";
3
- import Check from "./icons/Check";
4
- import Close from "./icons/Close";
5
- import Search from "./icons/Search";
6
- import User from "./icons/User";
7
- import UserIcon from "./icons/UserIcon";
8
- import CalendarIcon from "./icons/CalendarIcon";
9
- import ArrivalIcon from "./icons/ArrivalIcon";
10
- import DepartureIcon from "./icons/DepartureIcon";
11
- import MapPinIcon from "./icons/MapPinIcon";
12
- import DeleteIcon from "./icons/DeleteIcon";
13
- import EyeIcon from "./icons/EyeIcon";
14
- import InfoIcon from "./icons/InfoIcon";
15
- import CheckCircleIcon from "./icons/CheckCircleIcon";
16
- import StrollerIcon from "./icons/StrollerIcon";
17
- import CarIcon from "./icons/CarIcon";
18
- import MoreIcon from "./icons/MoreIcon";
19
- import Settings from "./icons/Settings";
20
- import MenuIcon from "./icons/MenuIcon";
21
- import MautourcoLogo from "./icons/MautoucoLogo";
22
- import YouTubeIcon from "./icons/Youtube";
23
- import FacebookIcon from "./icons/FacebookIcon";
24
- import TwitterIcon from "./icons/TwitterIcon";
25
- import LinkedInIcon from "./icons/LinkedInIcon";
26
- import CalendarOutlineIcon from "./icons/CalendarOutlineIcon";
27
- import PlusIcon from "./icons/PlusIcon";
28
- import MinusIcon from "./icons/MinusIcon";
29
- import HomeIcon from "./icons/HomeIcon";
30
- import PlaneIcon from "./icons/PlaneIcon";
31
- import ShipIcon from "./icons/ShipIcon";
32
- import BuildingIcon from "./icons/BuildingIcon";
33
-
34
- export type IconName =
35
- | "chevron-down"
36
- | "chevron-up"
37
- | "chevron-left"
38
- | "chevron-right"
39
- | "check"
40
- | "close"
41
- | "search"
42
- | "user"
43
- | "user-icon"
44
- | "calendar"
45
- | 'calendar-outline'
46
- | "arrival"
47
- | "departure"
48
- | "map-pin"
49
- | "delete"
50
- | "eye"
51
- | "info"
52
- | "check-circle"
53
- | "stroller"
54
- | "chevron-down-new"
55
- | "car"
56
- | "more"
57
- | "settings"
58
- | "menu"
59
- | "mautourcoLogo"
60
- | "youtube"
61
- | "facebook"
62
- | "linkedin"
63
- | "twitter"
64
- | "plus"
65
- | "minus"
66
- | "home"
67
- | "plane"
68
- | "ship"
69
- | "building";
1
+ import React from 'react';
2
+ import { ICONS, type IconName } from './icons/registry';
70
3
 
71
4
  interface IconProps {
72
5
  name: IconName;
73
- size?: "xs" | "sm" | "md" | "lg" | "xl";
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
74
7
  className?: string;
75
8
  color?: string;
76
9
  style?: React.CSSProperties;
77
10
  }
78
11
 
79
- const Icon: React.FC<IconProps> = ({
80
- name,
81
- size = "md",
82
- className = "",
83
- color,
84
- style,
85
- }) => {
86
- const iconProps = { size, className, color, style };
87
-
88
- switch (name) {
89
- case "chevron-down":
90
- return <Chevron direction="down" {...iconProps} />;
91
- case "chevron-up":
92
- return <Chevron direction="up" {...iconProps} />;
93
- case "chevron-left":
94
- return <Chevron direction="left" {...iconProps} />;
95
- case "chevron-right":
96
- return <Chevron direction="right" {...iconProps} />;
97
- case "check":
98
- return <Check {...iconProps} />;
99
- case "close":
100
- return <Close {...iconProps} />;
101
- case "search":
102
- return <Search {...iconProps} />;
103
- case "user":
104
- return <User {...iconProps} />;
105
- case "user-icon":
106
- return <UserIcon {...iconProps} />;
107
- case "calendar":
108
- return <CalendarIcon {...iconProps} />;
109
- case 'calendar-outline':
110
- return <CalendarOutlineIcon {...iconProps} />;
111
- case 'arrival':
112
- return <ArrivalIcon {...iconProps} />;
113
- case "departure":
114
- return <DepartureIcon {...iconProps} />;
115
- case "map-pin":
116
- return <MapPinIcon {...iconProps} />;
117
- case "delete":
118
- return <DeleteIcon {...iconProps} />;
119
- case "eye":
120
- return <EyeIcon {...iconProps} />;
121
- case "info":
122
- return <InfoIcon {...iconProps} />;
123
- case "check-circle":
124
- return <CheckCircleIcon {...iconProps} />;
125
- case "stroller":
126
- return <StrollerIcon {...iconProps} />;
127
- case "chevron-down-new":
128
- return <Chevron direction="down" variant="filled" {...iconProps} />;
129
- case "car":
130
- return <CarIcon {...iconProps} />;
131
- case "more":
132
- return <MoreIcon {...iconProps} />;
133
- case "settings":
134
- return <Settings {...iconProps} />;
135
- case "menu":
136
- return <MenuIcon {...iconProps} />;
137
- case "mautourcoLogo":
138
- return <MautourcoLogo {...iconProps} />;
139
- case "youtube":
140
- return <YouTubeIcon {...iconProps} />;
141
- case "facebook":
142
- return <FacebookIcon {...iconProps} />;
143
- case "twitter":
144
- return <TwitterIcon {...iconProps} />;
145
- case "linkedin":
146
- return <LinkedInIcon {...iconProps} />;
147
- case "plus":
148
- return <PlusIcon {...iconProps} />;
149
- case "minus":
150
- return <MinusIcon {...iconProps} />;
151
- case "home":
152
- return <HomeIcon {...iconProps} />;
153
- case "plane":
154
- return <PlaneIcon {...iconProps} />;
155
- case "ship":
156
- return <ShipIcon {...iconProps} />;
157
- case "building":
158
- return <BuildingIcon {...iconProps} />;
159
- default:
160
- return null;
161
- }
12
+ const Icon: React.FC<IconProps> = ({ name, size = 'md', className = '', color, style }) => {
13
+ const IconComponent = ICONS[name];
14
+ return <IconComponent size={size} className={className} color={color} style={style} />;
162
15
  };
163
16
 
164
17
  export default Icon;
18
+ export type { IconName };
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+
3
+ interface AccomIconProps {
4
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ className?: string;
6
+ color?: string;
7
+ /**
8
+ * Couleur par défaut si aucune couleur n'est spécifiée
9
+ */
10
+ defaultColor?: string;
11
+ }
12
+
13
+ const AccomIcon: React.FC<AccomIconProps> = ({ size = 'md', className = '', color }) => {
14
+ const getSizeClasses = () => {
15
+ switch (size) {
16
+ case 'xs':
17
+ return 'w-3 h-3';
18
+ case 'sm':
19
+ return 'w-4 h-4';
20
+ case 'md':
21
+ return 'w-5 h-5';
22
+ case 'lg':
23
+ return 'w-6 h-6';
24
+ case 'xl':
25
+ return 'w-8 h-8';
26
+ default:
27
+ return 'w-5 h-5';
28
+ }
29
+ };
30
+
31
+ const sizeClasses = getSizeClasses();
32
+ const colorClass = color ? `text-${color}` : 'text-current';
33
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
34
+
35
+ return (
36
+ <svg className={classes} viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
37
+ <path
38
+ d="M13.915 7.99902C13.915 7.84443 13.8535 7.69623 13.7441 7.58691C13.6348 7.47762 13.4867 7.41602 13.332 7.41602H2.66504C2.51045 7.4161 2.36225 7.47759 2.25293 7.58691C2.14361 7.69623 2.08212 7.84443 2.08203 7.99902V11.249H13.915V7.99902ZM12.582 3.99902C12.5819 3.84443 12.5205 3.69623 12.4111 3.58691C12.3018 3.47759 12.1536 3.4161 11.999 3.41602H8.74902V5.91602H12.582V3.99902ZM3.41504 5.91602H7.24902V3.41602H3.99902C3.84431 3.41602 3.69533 3.47752 3.58594 3.58691C3.47672 3.69622 3.41513 3.84451 3.41504 3.99902V5.91602ZM14.082 6.05664C14.3505 6.1603 14.5972 6.31895 14.8047 6.52637C15.1953 6.91699 15.415 7.44661 15.415 7.99902V13.333C15.4149 13.7471 15.0791 14.083 14.665 14.083C14.2511 14.0828 13.9152 13.747 13.915 13.333V12.749H2.08203V13.333C2.08186 13.7471 1.74614 14.083 1.33203 14.083C0.917926 14.083 0.582207 13.7471 0.582031 13.333V7.99902C0.582117 7.44661 0.801759 6.91699 1.19238 6.52637C1.39981 6.31894 1.64659 6.16033 1.91504 6.05664V3.99902C1.91513 3.44668 2.13487 2.91698 2.52539 2.52637C2.91609 2.13567 3.44649 1.91602 3.99902 1.91602H11.999C12.5514 1.9161 13.0811 2.13574 13.4717 2.52637C13.8623 2.91699 14.0819 3.44661 14.082 3.99902V6.05664Z"
39
+ fill="currentColor"
40
+ />
41
+ </svg>
42
+ );
43
+ };
44
+
45
+ export default AccomIcon;
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+
3
+ interface ArrowDownOutlineIconProps {
4
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ className?: string;
6
+ color?: string;
7
+ }
8
+
9
+ const ArrowDownOutlineIcon: React.FC<ArrowDownOutlineIconProps> = ({ size = 'md', className = '', color }) => {
10
+ const getSizeClasses = () => {
11
+ switch (size) {
12
+ case 'xs':
13
+ return 'w-3 h-3';
14
+ case 'sm':
15
+ return 'w-4 h-4';
16
+ case 'md':
17
+ return 'w-5 h-5';
18
+ case 'lg':
19
+ return 'w-6 h-6';
20
+ case 'xl':
21
+ return 'w-8 h-8';
22
+ default:
23
+ return 'w-5 h-5';
24
+ }
25
+ };
26
+
27
+ const sizeClasses = getSizeClasses();
28
+ const colorClass = color ? `text-${color}` : 'text-current';
29
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
30
+
31
+ return (
32
+ <svg className={classes} viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
33
+ <path
34
+ d="M7.24889 3.33398C7.24889 2.91977 7.58468 2.58398 7.99889 2.58398C8.41296 2.58416 8.74889 2.91988 8.74889 3.33398V10.8564L12.1346 7.4707C12.4275 7.17781 12.9023 7.17781 13.1952 7.4707C13.4881 7.7636 13.4881 8.23836 13.1952 8.53125L8.52917 13.1973C8.23627 13.4902 7.76151 13.4902 7.46862 13.1973L2.80163 8.53125L2.74987 8.47363C2.50994 8.17912 2.5273 7.74519 2.80163 7.4707C3.07628 7.19605 3.51095 7.1785 3.80553 7.41895L3.86217 7.4707L7.24889 10.8564V3.33398Z"
35
+ fill="black"
36
+ />
37
+ </svg>
38
+ );
39
+ };
40
+
41
+ export default ArrowDownOutlineIcon;
@@ -0,0 +1,50 @@
1
+ import React from "react";
2
+
3
+ interface ArrowRightOutlineIconProps {
4
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
5
+ className?: string;
6
+ color?: string;
7
+ }
8
+
9
+ const ArrowRightOutlineIcon: React.FC<ArrowRightOutlineIconProps> = ({
10
+ size = "md",
11
+ className = "",
12
+ color,
13
+ }) => {
14
+ const getSizeClasses = () => {
15
+ switch (size) {
16
+ case "xs":
17
+ return "w-3 h-3";
18
+ case "sm":
19
+ return "w-4 h-4";
20
+ case "md":
21
+ return "w-5 h-5";
22
+ case "lg":
23
+ return "w-6 h-6";
24
+ case "xl":
25
+ return "w-8 h-8";
26
+ default:
27
+ return "w-5 h-5";
28
+ }
29
+ };
30
+
31
+ const sizeClasses = getSizeClasses();
32
+ const colorClass = color ? `text-${color}` : "text-current";
33
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
34
+
35
+ return (
36
+ <svg
37
+ className={classes}
38
+ viewBox="0 0 16 16"
39
+ fill="none"
40
+ xmlns="http://www.w3.org/2000/svg"
41
+ >
42
+ <path
43
+ d="M7.46875 2.80358C7.74324 2.52925 8.17716 2.51189 8.47168 2.75182L8.5293 2.80358L13.1953 7.47057C13.4882 7.76346 13.4882 8.23822 13.1953 8.53112L8.5293 13.1971C8.2364 13.49 7.76164 13.49 7.46875 13.1971C7.17586 12.9042 7.17586 12.4295 7.46875 12.1366L10.8545 8.75084H3.33203C2.91793 8.75084 2.58221 8.41491 2.58203 8.00084C2.58203 7.58663 2.91782 7.25084 3.33203 7.25084H10.8545L7.46875 3.86413L7.41699 3.80749C7.17655 3.5129 7.1941 3.07823 7.46875 2.80358Z"
44
+ fill="currentColor"
45
+ />
46
+ </svg>
47
+ );
48
+ };
49
+
50
+ export default ArrowRightOutlineIcon;