@arquimedes.co/eureka-forms 3.0.71-test → 3.0.72

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 (167) hide show
  1. package/README +33 -1
  2. package/dist/@Types/AvailabilityFormStep.d.ts +48 -0
  3. package/dist/@Types/AvailabilityFormStep.js +24 -0
  4. package/dist/@Types/BankAccountFormStep.d.ts +67 -0
  5. package/dist/@Types/BankAccountFormStep.js +14 -0
  6. package/dist/@Types/BookingFormStep.d.ts +249 -0
  7. package/dist/@Types/BookingFormStep.js +65 -0
  8. package/dist/@Types/CalendarFormStep.d.ts +209 -0
  9. package/dist/@Types/CalendarFormStep.js +55 -0
  10. package/dist/@Types/CommunicationChannelFormStep.d.ts +51 -0
  11. package/dist/@Types/CommunicationChannelFormStep.js +15 -0
  12. package/dist/@Types/ConsentFormStep.d.ts +36 -0
  13. package/dist/@Types/ConsentFormStep.js +8 -0
  14. package/dist/@Types/EntityFormFormStep.d.ts +66 -0
  15. package/dist/@Types/EntityFormFormStep.js +20 -0
  16. package/dist/@Types/EventFormStep.d.ts +52 -0
  17. package/dist/@Types/EventFormStep.js +13 -0
  18. package/dist/@Types/ExternalReferenceFormStep.d.ts +74 -0
  19. package/dist/@Types/ExternalReferenceFormStep.js +20 -0
  20. package/dist/@Types/FormStep.d.ts +7 -2
  21. package/dist/@Types/FormStep.js +2 -1
  22. package/dist/@Types/LocationFormStep.d.ts +159 -0
  23. package/dist/@Types/LocationFormStep.js +46 -0
  24. package/dist/@Types/NumericFormSteps.d.ts +108 -0
  25. package/dist/@Types/NumericFormSteps.js +20 -0
  26. package/dist/@Types/PredefinedSelectorFormStep.d.ts +51 -0
  27. package/dist/@Types/PredefinedSelectorFormStep.js +39 -0
  28. package/dist/@Types/StepRef.d.ts +135 -0
  29. package/dist/@Types/StepRef.js +49 -0
  30. package/dist/App/App.stories.d.ts +10 -0
  31. package/dist/App/App.stories.js +189 -0
  32. package/dist/App/App.submitError.test.d.ts +1 -0
  33. package/dist/App/App.submitError.test.js +53 -0
  34. package/dist/App/AppHooks.js +8 -0
  35. package/dist/App/AppHooks.test.js +8 -0
  36. package/dist/BookingManage/AppointmentText.d.ts +5 -0
  37. package/dist/BookingManage/AppointmentText.js +20 -0
  38. package/dist/BookingManage/BookingManagePage.d.ts +17 -0
  39. package/dist/BookingManage/BookingManagePage.js +177 -0
  40. package/dist/BookingManage/BookingManagePage.module.css +115 -0
  41. package/dist/BookingManage/BookingManagePage.test.d.ts +1 -0
  42. package/dist/BookingManage/BookingManagePage.test.js +149 -0
  43. package/dist/Form/ConfirmationDialog/ConfirmationDialog.d.ts +14 -5
  44. package/dist/Form/ConfirmationDialog/ConfirmationDialog.js +8 -1
  45. package/dist/Form/ConfirmationDialog/ConfirmationDialog.module.css +12 -0
  46. package/dist/Form/ConfirmationDialog/ConfirmationDialog.test.d.ts +1 -0
  47. package/dist/Form/ConfirmationDialog/ConfirmationDialog.test.js +21 -0
  48. package/dist/Form/Form.d.ts +3 -0
  49. package/dist/Form/Form.js +16 -8
  50. package/dist/Form/FormFunctions.d.ts +17 -0
  51. package/dist/Form/FormFunctions.js +22 -0
  52. package/dist/Form/FormFunctions.test.js +28 -1
  53. package/dist/Form/FormTypes/ColumnForm/ColumnForm.d.ts +1 -1
  54. package/dist/Form/FormTypes/ColumnForm/ColumnForm.js +3 -2
  55. package/dist/Form/FormTypes/StepperForm/StepperForm.d.ts +1 -1
  56. package/dist/Form/FormTypes/StepperForm/StepperForm.js +3 -2
  57. package/dist/Form/SubmitError/SubmitError.d.ts +11 -0
  58. package/dist/Form/SubmitError/SubmitError.js +9 -0
  59. package/dist/Form/SubmitError/SubmitError.module.css +25 -0
  60. package/dist/Form/SubmitError/SubmitError.test.d.ts +1 -0
  61. package/dist/Form/SubmitError/SubmitError.test.js +34 -0
  62. package/dist/Form/SubmitError/SubmitErrorReason.d.ts +13 -0
  63. package/dist/Form/SubmitError/SubmitErrorReason.js +20 -0
  64. package/dist/FormSteps/AvailabilityStep/AvailabilityStep.d.ts +7 -0
  65. package/dist/FormSteps/AvailabilityStep/AvailabilityStep.js +14 -0
  66. package/dist/FormSteps/AvailabilityStep/MaterialAvailabilityStep/MaterialAvailabilityStep.d.ts +8 -0
  67. package/dist/FormSteps/AvailabilityStep/MaterialAvailabilityStep/MaterialAvailabilityStep.js +32 -0
  68. package/dist/FormSteps/BookingStep/BookingStep.d.ts +17 -0
  69. package/dist/FormSteps/BookingStep/BookingStep.js +14 -0
  70. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.d.ts +21 -0
  71. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.js +289 -0
  72. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.test.d.ts +1 -0
  73. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.test.js +275 -0
  74. package/dist/FormSteps/CheckBoxStep/CheckBoxStep.mobileLabel.test.js +20 -12
  75. package/dist/FormSteps/CheckBoxStep/MaterialCheckBoxStep/MaterialCheckBoxStep.js +6 -13
  76. package/dist/FormSteps/CheckBoxStep/MaterialCheckBoxStep/MaterialCheckBoxStep.module.css +2 -13
  77. package/dist/FormSteps/ClassifierSelectorStep/ClassifierSelectorStep.lateClassifiers.test.d.ts +1 -0
  78. package/dist/FormSteps/ClassifierSelectorStep/ClassifierSelectorStep.lateClassifiers.test.js +70 -0
  79. package/dist/FormSteps/ClassifierSelectorStep/MaterialClassifierSelectorStep/MaterialClassifierSelectorStep.js +3 -1
  80. package/dist/FormSteps/EntityValueStep/MaterialEntityValuePickerStep/MaterialEntityValuePickerStep.js +26 -26
  81. package/dist/FormSteps/EntityValueStep/entityValueDependencyValue.d.ts +12 -0
  82. package/dist/FormSteps/EntityValueStep/entityValueDependencyValue.js +35 -0
  83. package/dist/FormSteps/EntityValueStep/entityValueDependencyValue.test.d.ts +1 -0
  84. package/dist/FormSteps/EntityValueStep/entityValueDependencyValue.test.js +31 -0
  85. package/dist/FormSteps/EntityValueStep/entityValuePickerWatchedSteps.d.ts +27 -0
  86. package/dist/FormSteps/EntityValueStep/entityValuePickerWatchedSteps.js +64 -0
  87. package/dist/FormSteps/EntityValueStep/entityValuePickerWatchedSteps.test.d.ts +1 -0
  88. package/dist/FormSteps/EntityValueStep/entityValuePickerWatchedSteps.test.js +95 -0
  89. package/dist/FormSteps/LocationStep/LocationStep.d.ts +10 -0
  90. package/dist/FormSteps/LocationStep/LocationStep.js +14 -0
  91. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.d.ts +3 -0
  92. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.js +54 -0
  93. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.module.css +18 -0
  94. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.d.ts +3 -0
  95. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.js +170 -0
  96. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.module.css +96 -0
  97. package/dist/FormSteps/NumberStep/NumberStep.d.ts +10 -0
  98. package/dist/FormSteps/NumberStep/NumberStep.js +14 -0
  99. package/dist/FormSteps/Step.js +16 -0
  100. package/dist/FormSteps/StepFunctions.js +14 -0
  101. package/dist/FormSteps/StepFunctions.test.js +54 -0
  102. package/dist/FormSteps/StepHooks.d.ts +21 -0
  103. package/dist/FormSteps/StepHooks.js +55 -8
  104. package/dist/FormSteps/StepHooks.test.d.ts +1 -0
  105. package/dist/FormSteps/StepHooks.test.js +92 -0
  106. package/dist/FormSteps/isStepHiddenByCondition.test.d.ts +1 -0
  107. package/dist/FormSteps/isStepHiddenByCondition.test.js +42 -0
  108. package/dist/Icons/AddIcon.d.ts +3 -0
  109. package/dist/Icons/AddIcon.js +7 -0
  110. package/dist/Icons/EditIcon.d.ts +3 -0
  111. package/dist/Icons/EditIcon.js +7 -0
  112. package/dist/Icons/RemoveIcon.d.ts +3 -0
  113. package/dist/Icons/RemoveIcon.js +7 -0
  114. package/dist/Icons/ViewDayIcon.d.ts +3 -0
  115. package/dist/Icons/ViewDayIcon.js +7 -0
  116. package/dist/Icons/ViewWeekIcon.d.ts +3 -0
  117. package/dist/Icons/ViewWeekIcon.js +7 -0
  118. package/dist/Services/BookingService.d.ts +226 -0
  119. package/dist/Services/BookingService.js +264 -0
  120. package/dist/Services/BookingService.test.d.ts +1 -0
  121. package/dist/Services/BookingService.test.js +178 -0
  122. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.d.ts +19 -0
  123. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.js +80 -0
  124. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.module.css +88 -0
  125. package/dist/Shared/ErkAddressAutocomplete/googlePlaces.d.ts +29 -0
  126. package/dist/Shared/ErkAddressAutocomplete/googlePlaces.js +139 -0
  127. package/dist/Shared/ErkAvailabilityPicker/ErkAvailabilityPicker.d.ts +25 -0
  128. package/dist/Shared/ErkAvailabilityPicker/ErkAvailabilityPicker.js +112 -0
  129. package/dist/Shared/ErkAvailabilityPicker/ErkAvailabilityPicker.module.css +88 -0
  130. package/dist/Shared/ErkAvailabilityPicker/ErkAvailabilityPicker.test.d.ts +1 -0
  131. package/dist/Shared/ErkAvailabilityPicker/ErkAvailabilityPicker.test.js +73 -0
  132. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.d.ts +105 -0
  133. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.js +399 -0
  134. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.module.css +646 -0
  135. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.stories.d.ts +36 -0
  136. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.stories.js +177 -0
  137. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.stories.test.d.ts +1 -0
  138. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.stories.test.js +47 -0
  139. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.test.d.ts +1 -0
  140. package/dist/Shared/ErkBookingPicker/ErkBookingPicker.test.js +440 -0
  141. package/dist/Shared/ErkDatePicker/ErkDatePicker.js +1 -3
  142. package/dist/Shared/ErkDateRangePicker/ErkDateRangePicker.d.ts +2 -3
  143. package/dist/Shared/ErkDateRangePicker/ErkDateRangePicker.js +1 -2
  144. package/dist/Shared/ErkIconButton/ErkIconButton.d.ts +17 -0
  145. package/dist/Shared/ErkIconButton/ErkIconButton.js +11 -0
  146. package/dist/Shared/ErkIconButton/ErkIconButton.module.css +41 -0
  147. package/dist/Shared/ErkLocationField/ErkLocationField.d.ts +24 -0
  148. package/dist/Shared/ErkLocationField/ErkLocationField.js +128 -0
  149. package/dist/Shared/ErkLocationField/ErkLocationField.module.css +164 -0
  150. package/dist/Shared/ErkLocationField/ErkLocationField.test.d.ts +1 -0
  151. package/dist/Shared/ErkLocationField/ErkLocationField.test.js +82 -0
  152. package/dist/Shared/ErkLocationField/addressFields.d.ts +12 -0
  153. package/dist/Shared/ErkLocationField/addressFields.js +34 -0
  154. package/dist/Shared/ErkLocationField/locationRestrictions.d.ts +6 -0
  155. package/dist/Shared/ErkLocationField/locationRestrictions.js +51 -0
  156. package/dist/Shared/ErkLocationInput/ErkLocationInput.d.ts +15 -0
  157. package/dist/Shared/ErkLocationInput/ErkLocationInput.js +502 -0
  158. package/dist/Shared/ErkLocationInput/ErkLocationInput.module.css +128 -0
  159. package/dist/Shared/ErkNumberField/ErkNumberField.d.ts +42 -0
  160. package/dist/Shared/ErkNumberField/ErkNumberField.js +169 -0
  161. package/dist/Utils/AxiosWidget.js +9 -1
  162. package/dist/constants/FormStepTypes.d.ts +5 -1
  163. package/dist/constants/FormStepTypes.js +4 -0
  164. package/dist/index.lib.d.ts +4 -2
  165. package/dist/index.lib.js +3 -1
  166. package/dist/main.js +4 -1
  167. package/package.json +2 -1
@@ -0,0 +1,646 @@
1
+ .container {
2
+ max-width: 100%;
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ .card {
7
+ border: 1px solid var(--eureka-outline, #d9dee6);
8
+ border-radius: 16px;
9
+ overflow: hidden;
10
+ background: var(--eureka-bg, #fff);
11
+ box-shadow: 0 12px 34px rgba(43, 65, 93, 0.08);
12
+ transition: opacity 0.15s ease;
13
+ /* La columna derecha queda a la medida de su contenido (calendario ~360px, personas ~420px) */
14
+ max-width: 700px;
15
+ margin: 0 auto;
16
+ }
17
+ /* En el paso final el contenido es una sola columna: la tarjeta se angosta aún más */
18
+ .cardFinal {
19
+ max-width: 560px;
20
+ }
21
+ .xfade {
22
+ opacity: 0;
23
+ }
24
+ .book {
25
+ display: grid;
26
+ grid-template-columns: 280px 1fr;
27
+ min-height: 400px;
28
+ }
29
+
30
+ /* ---------- Left: who + details + progress ---------- */
31
+ .who {
32
+ padding: 22px 20px;
33
+ border-right: 1px solid var(--eureka-outline, #eceff3);
34
+ display: flex;
35
+ flex-direction: column;
36
+ gap: 16px;
37
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 4%, #fff);
38
+ }
39
+ .brand {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: 11px;
43
+ }
44
+ .avatar {
45
+ width: 46px;
46
+ height: 46px;
47
+ border-radius: 50%;
48
+ background: var(--eureka-primary, #3d5a7f);
49
+ color: #fff;
50
+ display: grid;
51
+ place-items: center;
52
+ font-weight: 800;
53
+ font-size: 17px;
54
+ flex: none;
55
+ }
56
+ .brandName {
57
+ margin: 0;
58
+ font-size: 16px;
59
+ font-weight: 800;
60
+ color: var(--eureka-text, #293241);
61
+ }
62
+ .brandRole {
63
+ margin: 2px 0 0;
64
+ font-size: 12.5px;
65
+ color: #787878;
66
+ }
67
+ .meta {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: 11px;
71
+ }
72
+ .row {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 10px;
76
+ font-size: 13px;
77
+ color: var(--eureka-text, #293241);
78
+ }
79
+ .ic {
80
+ color: var(--eureka-primary, #3d5a7f);
81
+ width: 16px;
82
+ text-align: center;
83
+ flex: none;
84
+ }
85
+ .pill {
86
+ display: inline-flex;
87
+ align-items: center;
88
+ gap: 6px;
89
+ font-size: 12px;
90
+ font-weight: 700;
91
+ padding: 3px 10px;
92
+ border-radius: 20px;
93
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 10%, #fff);
94
+ color: var(--eureka-primary, #3d5a7f);
95
+ }
96
+
97
+ .sum {
98
+ display: flex;
99
+ flex-direction: column;
100
+ gap: 8px;
101
+ border-top: 1px solid var(--eureka-outline, #eceff3);
102
+ padding-top: 14px;
103
+ }
104
+ .srow {
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 9px;
108
+ font-size: 13px;
109
+ color: #787878;
110
+ }
111
+ .dot {
112
+ width: 18px;
113
+ height: 18px;
114
+ border-radius: 50%;
115
+ border: 1.5px dashed var(--eureka-outline, #d9dee6);
116
+ flex: none;
117
+ display: grid;
118
+ place-items: center;
119
+ font-size: 10px;
120
+ color: transparent;
121
+ }
122
+ .srowOn {
123
+ color: var(--eureka-text, #293241);
124
+ font-weight: 600;
125
+ }
126
+ .srowOn .dot {
127
+ border: none;
128
+ background: #2e9367;
129
+ color: #fff;
130
+ }
131
+
132
+ .lock {
133
+ margin-top: auto;
134
+ font-size: 12px;
135
+ color: #787878;
136
+ background: #fff7ed;
137
+ border: 1px solid #f4d9b0;
138
+ border-radius: 9px;
139
+ padding: 8px 10px;
140
+ }
141
+ .lock b {
142
+ color: #b7791f;
143
+ }
144
+
145
+ /* ---------- Right: breadcrumb + one pane at a time ---------- */
146
+ .right {
147
+ padding: 18px 22px 22px;
148
+ min-width: 0;
149
+ display: flex;
150
+ flex-direction: column;
151
+ }
152
+
153
+ .stepper {
154
+ display: flex;
155
+ align-items: center;
156
+ gap: 8px;
157
+ font-size: 12.5px;
158
+ color: #787878;
159
+ margin-bottom: 20px;
160
+ flex-wrap: wrap;
161
+ }
162
+ .stepGroup {
163
+ display: inline-flex;
164
+ align-items: center;
165
+ gap: 8px;
166
+ }
167
+ .stepItem {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ gap: 7px;
171
+ border: none;
172
+ background: none;
173
+ padding: 0;
174
+ font: inherit;
175
+ color: inherit;
176
+ cursor: default;
177
+ }
178
+ .stepNum {
179
+ width: 20px;
180
+ height: 20px;
181
+ border-radius: 50%;
182
+ display: grid;
183
+ place-items: center;
184
+ font-size: 11px;
185
+ font-weight: 800;
186
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 8%, #fff);
187
+ color: #9aa3b0;
188
+ flex: none;
189
+ }
190
+ .stepDone {
191
+ color: var(--eureka-text, #293241);
192
+ cursor: pointer;
193
+ }
194
+ .stepDone .stepNum {
195
+ background: #2e9367;
196
+ color: #fff;
197
+ }
198
+ .stepOn {
199
+ color: var(--eureka-text, #293241);
200
+ font-weight: 700;
201
+ }
202
+ .stepOn .stepNum {
203
+ background: var(--eureka-primary, #3d5a7f);
204
+ color: #fff;
205
+ }
206
+ .stepSep {
207
+ width: 22px;
208
+ height: 1px;
209
+ background: var(--eureka-outline, #d9dee6);
210
+ }
211
+
212
+ .pane {
213
+ flex: 1;
214
+ animation: erk-booking-fadein 0.22s ease;
215
+ }
216
+ @keyframes erk-booking-fadein {
217
+ from {
218
+ opacity: 0;
219
+ transform: translateY(4px);
220
+ }
221
+ to {
222
+ opacity: 1;
223
+ transform: none;
224
+ }
225
+ }
226
+
227
+ .q {
228
+ margin: 0 0 4px;
229
+ font-size: 17px;
230
+ font-weight: 800;
231
+ color: var(--eureka-text, #293241);
232
+ text-wrap: balance;
233
+ }
234
+ .qsub {
235
+ margin: 0 0 18px;
236
+ font-size: 13px;
237
+ color: #787878;
238
+ }
239
+
240
+ /* step: person */
241
+ .persons {
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: 10px;
245
+ max-width: 420px;
246
+ }
247
+ .pcard {
248
+ display: flex;
249
+ align-items: center;
250
+ gap: 12px;
251
+ border: 1px solid var(--eureka-outline, #d9dee6);
252
+ border-radius: 12px;
253
+ padding: 11px 14px 11px 11px;
254
+ background: #fff;
255
+ cursor: pointer;
256
+ text-align: left;
257
+ width: 100%;
258
+ font: inherit;
259
+ }
260
+ .pcard:hover {
261
+ border-color: var(--eureka-primary, #3d5a7f);
262
+ }
263
+ .pcardOn {
264
+ border-color: var(--eureka-primary, #3d5a7f);
265
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 8%, #fff);
266
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--eureka-primary, #3d5a7f) 12%, transparent);
267
+ }
268
+ .pav {
269
+ width: 38px;
270
+ height: 38px;
271
+ border-radius: 50%;
272
+ background: #c9d4e2;
273
+ color: #2b415d;
274
+ display: grid;
275
+ place-items: center;
276
+ font-weight: 800;
277
+ font-size: 13px;
278
+ flex: none;
279
+ }
280
+ .pcardAny .pav {
281
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 8%, #fff);
282
+ color: var(--eureka-primary, #3d5a7f);
283
+ }
284
+ .pinfo {
285
+ display: flex;
286
+ flex-direction: column;
287
+ }
288
+ .pn {
289
+ font-size: 14px;
290
+ font-weight: 700;
291
+ color: var(--eureka-text, #293241);
292
+ }
293
+ .pr {
294
+ font-size: 12px;
295
+ color: #787878;
296
+ }
297
+ .chk {
298
+ margin-left: auto;
299
+ color: #2e9367;
300
+ font-weight: 800;
301
+ visibility: hidden;
302
+ }
303
+ .pcardOn .chk {
304
+ visibility: visible;
305
+ }
306
+ .tdur {
307
+ margin-left: auto;
308
+ flex: none;
309
+ font-size: 12px;
310
+ font-weight: 700;
311
+ color: var(--eureka-primary, #3d5a7f);
312
+ white-space: nowrap;
313
+ }
314
+ .tdur + .chk {
315
+ margin-left: 0;
316
+ }
317
+
318
+ /* step: day (month grid) */
319
+ .monthWrap {
320
+ max-width: 360px;
321
+ }
322
+ .monthHead {
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: space-between;
326
+ margin-bottom: 8px;
327
+ }
328
+ .monthTitle {
329
+ font-size: 13.5px;
330
+ font-weight: 700;
331
+ color: var(--eureka-text, #293241);
332
+ }
333
+ .monthNav button {
334
+ border: none;
335
+ background: none;
336
+ color: #787878;
337
+ cursor: pointer;
338
+ font-size: 15px;
339
+ padding: 2px 8px;
340
+ border-radius: 6px;
341
+ }
342
+ .monthNav button:hover {
343
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 8%, #fff);
344
+ }
345
+ .mgrid {
346
+ display: grid;
347
+ grid-template-columns: repeat(7, 1fr);
348
+ gap: 4px;
349
+ font-variant-numeric: tabular-nums;
350
+ }
351
+ .mdow {
352
+ text-align: center;
353
+ font-size: 10px;
354
+ font-weight: 700;
355
+ color: #9aa3b0;
356
+ padding-bottom: 2px;
357
+ }
358
+ .mday {
359
+ position: relative;
360
+ aspect-ratio: 1;
361
+ display: grid;
362
+ place-items: center;
363
+ font-size: 13px;
364
+ border: none;
365
+ background: none;
366
+ border-radius: 9px;
367
+ cursor: pointer;
368
+ font: inherit;
369
+ }
370
+ .mdayFree {
371
+ color: var(--eureka-text, #293241);
372
+ font-weight: 600;
373
+ }
374
+ .mdayFree::after {
375
+ content: '';
376
+ position: absolute;
377
+ bottom: 5px;
378
+ width: 4px;
379
+ height: 4px;
380
+ border-radius: 50%;
381
+ background: #2e9367;
382
+ }
383
+ .mdayFree:hover {
384
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 8%, #fff);
385
+ }
386
+ .mdayNone {
387
+ color: #c8ced7;
388
+ cursor: default;
389
+ }
390
+ .mdaySel {
391
+ background: var(--eureka-primary, #3d5a7f);
392
+ color: #fff;
393
+ font-weight: 700;
394
+ }
395
+ .mdaySel::after {
396
+ content: '';
397
+ position: absolute;
398
+ bottom: 5px;
399
+ width: 4px;
400
+ height: 4px;
401
+ border-radius: 50%;
402
+ background: #fff;
403
+ }
404
+
405
+ /* step: hour */
406
+ .slots {
407
+ display: grid;
408
+ grid-template-columns: repeat(3, 1fr);
409
+ gap: 9px;
410
+ max-width: 380px;
411
+ }
412
+ .slot {
413
+ border: 1px solid var(--eureka-outline, #d9dee6);
414
+ background: #fff;
415
+ border-radius: 10px;
416
+ padding: 11px 0;
417
+ font-size: 13.5px;
418
+ font-weight: 600;
419
+ color: var(--eureka-primary, #3d5a7f);
420
+ cursor: pointer;
421
+ font-variant-numeric: tabular-nums;
422
+ font-family: inherit;
423
+ }
424
+ .slot:hover {
425
+ border-color: var(--eureka-primary, #3d5a7f);
426
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 7%, #fff);
427
+ }
428
+ .slotSel {
429
+ background: var(--eureka-primary, #3d5a7f);
430
+ color: #fff;
431
+ border-color: var(--eureka-primary, #3d5a7f);
432
+ }
433
+ .slotTaken {
434
+ color: #c3c9d2;
435
+ border-style: dashed;
436
+ cursor: not-allowed;
437
+ text-decoration: line-through;
438
+ }
439
+ .slotGroup + .slotGroup {
440
+ margin-top: 12px;
441
+ }
442
+ .slotGroupTitle {
443
+ margin: 0 0 6px;
444
+ font-size: 12px;
445
+ font-weight: 600;
446
+ color: #787878;
447
+ text-transform: uppercase;
448
+ letter-spacing: 0.04em;
449
+ }
450
+ .firstTag {
451
+ display: block;
452
+ margin-top: 2px;
453
+ font-size: 10px;
454
+ font-weight: 500;
455
+ opacity: 0.8;
456
+ }
457
+ .tz {
458
+ margin: 0 0 10px;
459
+ font-size: 12px;
460
+ color: #787878;
461
+ }
462
+ .retry {
463
+ display: flex;
464
+ align-items: center;
465
+ flex-wrap: wrap;
466
+ gap: 10px;
467
+ font-size: 13px;
468
+ color: #d0473f;
469
+ padding: 12px 0;
470
+ }
471
+ .empty {
472
+ font-size: 13px;
473
+ color: #787878;
474
+ padding: 12px 0;
475
+ }
476
+
477
+ /* step: confirm — the left summary expands into a centered stacked column */
478
+ .bookFinal {
479
+ display: flex;
480
+ flex-direction: column;
481
+ }
482
+ .bookFinal .right {
483
+ order: 1;
484
+ flex: none;
485
+ }
486
+ .bookFinal .who {
487
+ order: 2;
488
+ flex: 1;
489
+ border-right: none;
490
+ border-top: 1px solid var(--eureka-outline, #eceff3);
491
+ padding: 24px 20px;
492
+ gap: 18px;
493
+ align-items: center;
494
+ }
495
+ .bookFinal .who > * {
496
+ width: 100%;
497
+ max-width: 440px;
498
+ }
499
+ .bookFinal .lock {
500
+ margin-top: 4px;
501
+ }
502
+ .bookFinal .right {
503
+ padding-bottom: 10px;
504
+ }
505
+ .paneFinal {
506
+ flex: none;
507
+ }
508
+ .paneFinal .qsub {
509
+ margin-bottom: 0;
510
+ }
511
+
512
+ /* ---------- Bottom bar: navigation ---------- */
513
+ .navbar {
514
+ display: flex;
515
+ align-items: center;
516
+ gap: 14px;
517
+ padding: 14px 22px;
518
+ border-top: 1px solid var(--eureka-outline, #eceff3);
519
+ background: color-mix(in srgb, var(--eureka-primary, #3d5a7f) 3%, #fff);
520
+ }
521
+ .navSummary {
522
+ flex: 1;
523
+ min-width: 0;
524
+ font-size: 13px;
525
+ color: #787878;
526
+ overflow: hidden;
527
+ text-overflow: ellipsis;
528
+ white-space: nowrap;
529
+ }
530
+ .navSummary b {
531
+ color: var(--eureka-text, #293241);
532
+ }
533
+ .navHl {
534
+ color: var(--booking-accent, #ee6c4d);
535
+ font-weight: 800;
536
+ }
537
+ /* Contacto: vive en la columna del paso final, apilado como el resto del resumen */
538
+ .cfields {
539
+ display: flex;
540
+ flex-direction: column;
541
+ gap: 10px;
542
+ }
543
+ .err {
544
+ font-size: 12px;
545
+ color: #d0473f;
546
+ margin-top: 6px;
547
+ }
548
+
549
+ /* entry card — trigger and booked summary share the wizard card aesthetic */
550
+ .entry {
551
+ display: flex;
552
+ align-items: center;
553
+ gap: 13px;
554
+ border: 1px solid var(--eureka-outline, #d9dee6);
555
+ border-radius: 16px;
556
+ padding: 14px 18px;
557
+ background: var(--eureka-bg, #fff);
558
+ box-shadow: 0 12px 34px rgba(43, 65, 93, 0.08);
559
+ max-width: 560px;
560
+ }
561
+ .entryInfo {
562
+ flex: 1;
563
+ display: flex;
564
+ flex-direction: column;
565
+ gap: 2px;
566
+ min-width: 0;
567
+ }
568
+ .entryLabel {
569
+ font-size: 14.5px;
570
+ font-weight: 700;
571
+ color: var(--eureka-text, #293241);
572
+ }
573
+ .entrySub {
574
+ font-size: 12.5px;
575
+ color: #787878;
576
+ }
577
+ .bookedIcon {
578
+ width: 46px;
579
+ height: 46px;
580
+ border-radius: 50%;
581
+ background: #2e9367;
582
+ color: #fff;
583
+ display: grid;
584
+ place-items: center;
585
+ font-weight: 800;
586
+ font-size: 17px;
587
+ flex: none;
588
+ }
589
+ .bookedMain {
590
+ font-size: 13.5px;
591
+ font-weight: 600;
592
+ color: var(--eureka-text, #293241);
593
+ }
594
+
595
+ @media (prefers-reduced-motion: reduce) {
596
+ .pane {
597
+ animation: none;
598
+ }
599
+ .card {
600
+ transition: none;
601
+ }
602
+ }
603
+
604
+ /* responsive */
605
+ @media (max-width: 760px) {
606
+ .book {
607
+ grid-template-columns: 1fr;
608
+ min-height: 0;
609
+ }
610
+ .who {
611
+ border-right: none;
612
+ border-bottom: 1px solid var(--eureka-outline, #eceff3);
613
+ }
614
+ .lock {
615
+ margin-top: 4px;
616
+ }
617
+ .right {
618
+ padding: 16px 16px 20px;
619
+ }
620
+ .persons,
621
+ .monthWrap {
622
+ max-width: none;
623
+ }
624
+ .slots {
625
+ max-width: none;
626
+ }
627
+ .navbar {
628
+ flex-wrap: wrap;
629
+ }
630
+ .navSummary {
631
+ flex-basis: 100%;
632
+ white-space: normal;
633
+ }
634
+ }
635
+ @media (max-width: 400px) {
636
+ .slots {
637
+ grid-template-columns: repeat(2, 1fr);
638
+ }
639
+ .stepper {
640
+ font-size: 11.5px;
641
+ gap: 5px;
642
+ }
643
+ .stepSep {
644
+ width: 12px;
645
+ }
646
+ }
@@ -0,0 +1,36 @@
1
+ import type { StoryObj } from '@storybook/react-vite';
2
+ import ErkBookingPicker, { ErkBookingPickerProps } from './ErkBookingPicker';
3
+ import { withFormStepProviders } from '../../FormSteps/@StoryDecorators/FormStepDecorator';
4
+ /** Controlled wrapper so the picker's value is interactive in Storybook. */
5
+ declare function Interactive(args: ErkBookingPickerProps): JSX.Element;
6
+ declare const meta: {
7
+ component: typeof ErkBookingPicker;
8
+ tags: string[];
9
+ decorators: (typeof withFormStepProviders)[];
10
+ render: typeof Interactive;
11
+ args: {
12
+ onChange: () => void;
13
+ };
14
+ };
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+ /** Full flow: person → date → time. */
18
+ export declare const WithPersonSelection: Story;
19
+ /** Optional person — adds a "Cualquiera" option. */
20
+ export declare const PersonOptional: Story;
21
+ /** No person selection → straight to date + time. */
22
+ export declare const NoPerson: Story;
23
+ /** The email comes from an earlier step of the form: the picker only asks for the name. */
24
+ export declare const EmailFromStep: Story;
25
+ /** Full config: name and email asked in the picker, lock notice, in-person mode and the organization clock. */
26
+ export declare const Complete: Story;
27
+ /** A hold that lapsed after it was made: the requester is sent back to the hours with the reason. */
28
+ export declare const Lapsed: Story;
29
+ /** Already booked / read-only summary. */
30
+ export declare const ReadOnly: Story;
31
+ /** Several event templates: the requester picks what they need first, and its duration rules the hours. */
32
+ export declare const PickEventTemplate: Story;
33
+ /** Booked with an event template: the summary names it with its duration. */
34
+ export declare const BookedWithEventTemplate: Story;
35
+ /** The offer did not load: the entry card stays disabled and offers "Reintentar". */
36
+ export declare const OfferFailed: Story;