@sia-ui/cli 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +6 -0
  3. package/dist/registry/package/components/AccountMenu/index.tsx +107 -0
  4. package/dist/registry/package/components/AccountMenu/styles.css +30 -0
  5. package/dist/registry/package/components/ActivityLog/index.tsx +96 -25
  6. package/dist/registry/package/components/AmountDisplay/index.tsx +5 -2
  7. package/dist/registry/package/components/AppShell/index.tsx +44 -8
  8. package/dist/registry/package/components/AppShell/tab-bar.tsx +6 -3
  9. package/dist/registry/package/components/AsyncState/index.tsx +29 -7
  10. package/dist/registry/package/components/AuditMeta/index.tsx +12 -2
  11. package/dist/registry/package/components/Avatar/index.tsx +4 -9
  12. package/dist/registry/package/components/Badge/index.tsx +3 -2
  13. package/dist/registry/package/components/Badge/styles.css +4 -4
  14. package/dist/registry/package/components/BrandIcon/index.tsx +100 -0
  15. package/dist/registry/package/components/BrandIcon/styles.css +31 -0
  16. package/dist/registry/package/components/Breadcrumb/index.tsx +14 -2
  17. package/dist/registry/package/components/Button/index.tsx +3 -2
  18. package/dist/registry/package/components/Button/styles.css +4 -4
  19. package/dist/registry/package/components/Calendar/index.tsx +7 -3
  20. package/dist/registry/package/components/Card/index.tsx +14 -4
  21. package/dist/registry/package/components/ColorModeToggle/index.tsx +44 -0
  22. package/dist/registry/package/components/CommandPalette/index.tsx +3 -2
  23. package/dist/registry/package/components/ConfirmDialog/index.tsx +24 -4
  24. package/dist/registry/package/components/CrudPage/dialogs.tsx +53 -8
  25. package/dist/registry/package/components/CrudPage/index.tsx +99 -25
  26. package/dist/registry/package/components/CurrencyInput/index.tsx +5 -2
  27. package/dist/registry/package/components/DataTable/index.tsx +53 -18
  28. package/dist/registry/package/components/DataTable/row-actions.tsx +20 -8
  29. package/dist/registry/package/components/DataTable/types.ts +100 -0
  30. package/dist/registry/package/components/DatePicker/index.tsx +14 -6
  31. package/dist/registry/package/components/DateRangeFilter/index.tsx +12 -3
  32. package/dist/registry/package/components/DateRangePicker/index.tsx +13 -4
  33. package/dist/registry/package/components/DateTimePicker/index.tsx +3 -1
  34. package/dist/registry/package/components/Drawer/index.tsx +16 -6
  35. package/dist/registry/package/components/DropdownMenu/index.tsx +37 -4
  36. package/dist/registry/package/components/DropdownMenu/styles.css +10 -0
  37. package/dist/registry/package/components/DurationDisplay/index.tsx +20 -2
  38. package/dist/registry/package/components/EntityMeta/index.tsx +14 -9
  39. package/dist/registry/package/components/ErrorState/index.tsx +9 -3
  40. package/dist/registry/package/components/ErrorState/styles.css +1 -1
  41. package/dist/registry/package/components/EventCalendar/index.tsx +657 -9
  42. package/dist/registry/package/components/EventCalendar/styles.css +360 -8
  43. package/dist/registry/package/components/EventManager/index.tsx +456 -0
  44. package/dist/registry/package/components/EventManager/styles.css +12 -0
  45. package/dist/registry/package/components/Field/index.tsx +74 -27
  46. package/dist/registry/package/components/FileUpload/index.tsx +13 -3
  47. package/dist/registry/package/components/FiltersBar/index.tsx +8 -3
  48. package/dist/registry/package/components/FiltersBar/styles.css +7 -0
  49. package/dist/registry/package/components/Form/index.tsx +118 -14
  50. package/dist/registry/package/components/Form/styles.css +3 -0
  51. package/dist/registry/package/components/HoverCard/index.tsx +8 -4
  52. package/dist/registry/package/components/Icons/index.tsx +18 -0
  53. package/dist/registry/package/components/ImageUpload/index.tsx +17 -2
  54. package/dist/registry/package/components/Input/index.tsx +3 -2
  55. package/dist/registry/package/components/JobProgress/index.tsx +289 -0
  56. package/dist/registry/package/components/JobProgress/styles.css +58 -0
  57. package/dist/registry/package/components/JsonEditor/index.tsx +18 -3
  58. package/dist/registry/package/components/JsonView/index.tsx +282 -0
  59. package/dist/registry/package/components/JsonView/styles.css +99 -0
  60. package/dist/registry/package/components/LiveIndicator/index.tsx +43 -0
  61. package/dist/registry/package/components/LiveIndicator/styles.css +41 -0
  62. package/dist/registry/package/components/LogStream/index.tsx +545 -0
  63. package/dist/registry/package/components/LogStream/styles.css +152 -0
  64. package/dist/registry/package/components/MarkdownEditor/index.tsx +14 -3
  65. package/dist/registry/package/components/Modal/index.tsx +7 -1
  66. package/dist/registry/package/components/MultiSelect/index.tsx +14 -3
  67. package/dist/registry/package/components/OtpInput/index.tsx +2 -1
  68. package/dist/registry/package/components/Pagination/index.tsx +13 -2
  69. package/dist/registry/package/components/PasswordInput/index.tsx +23 -9
  70. package/dist/registry/package/components/PhoneInput/index.tsx +66 -30
  71. package/dist/registry/package/components/Popover/index.tsx +19 -4
  72. package/dist/registry/package/components/QrCode/index.tsx +3 -2
  73. package/dist/registry/package/components/RadioGroup/styles.css +3 -0
  74. package/dist/registry/package/components/Rating/index.tsx +6 -2
  75. package/dist/registry/package/components/ReferenceSelect/index.tsx +8 -1
  76. package/dist/registry/package/components/RelativeTime/index.tsx +5 -1
  77. package/dist/registry/package/components/RequireSession/index.tsx +10 -4
  78. package/dist/registry/package/components/Resource/index.tsx +70 -17
  79. package/dist/registry/package/components/RichTextEditor/index.tsx +2 -1
  80. package/dist/registry/package/components/SearchInput/index.tsx +4 -1
  81. package/dist/registry/package/components/SecretFields/index.tsx +70 -17
  82. package/dist/registry/package/components/Select/index.tsx +34 -12
  83. package/dist/registry/package/components/Sidebar/index.tsx +22 -6
  84. package/dist/registry/package/components/Slider/index.tsx +26 -5
  85. package/dist/registry/package/components/Spinner/index.tsx +3 -2
  86. package/dist/registry/package/components/StatCard/index.tsx +11 -3
  87. package/dist/registry/package/components/Statistic/index.tsx +5 -1
  88. package/dist/registry/package/components/Steps/styles.css +2 -2
  89. package/dist/registry/package/components/TagsInput/index.tsx +2 -1
  90. package/dist/registry/package/components/TimePicker/index.tsx +10 -4
  91. package/dist/registry/package/components/Toast/index.tsx +20 -5
  92. package/dist/registry/package/components/Tour/index.tsx +2 -1
  93. package/dist/registry/package/components/Transfer/index.tsx +2 -1
  94. package/dist/registry/package/components/Tree/index.tsx +3 -2
  95. package/dist/registry/package/components/TreeSelect/index.tsx +17 -4
  96. package/dist/registry/package/components/UnsavedChangesGuard/index.tsx +34 -3
  97. package/dist/registry/registry.json +257 -75
  98. package/dist/registry/styles/sia-ui.css +23 -4
  99. package/package.json +5 -5
@@ -1,8 +1,360 @@
1
- .sia-event-calendar { width:100%; max-width:none; }
2
- .sia-event-calendar__events { display:grid; gap:.2rem; }
3
- .sia-event-calendar__event { width:100%; overflow:hidden; padding:.2rem .3rem; border:0; border-radius:.25rem; color:var(--sia-primary); background:color-mix(in srgb,currentColor 10%,transparent); font-size:.68rem; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
4
- .sia-event-calendar__event--neutral { color:var(--sia-muted); }
5
- .sia-event-calendar__event--info { color:var(--sia-info); }
6
- .sia-event-calendar__event--success { color:var(--sia-success); }
7
- .sia-event-calendar__event--warning { color:var(--sia-warning); }
8
- .sia-event-calendar__event--danger { color:var(--sia-danger); }
1
+ /* ── Le calendrier ────────────────────────────────────────────────────────
2
+ Chaque ton pose deux variables — sa couleur, et le texte lisible dessus —
3
+ que les trois habillages d'événement combinent. Aucune couleur n'est écrite
4
+ deux fois. */
5
+ .sia-ec {
6
+ --ec-cell: 7.25rem;
7
+ --ec-hour: 3rem;
8
+ --ec-gutter: 3.5rem;
9
+ --ec-line: var(--sia-border);
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: .75rem;
13
+ width: 100%;
14
+ min-width: 0;
15
+ color: var(--sia-foreground);
16
+ font-size: .875rem;
17
+ }
18
+ .sia-ec--dense { --ec-cell: 5.5rem; --ec-hour: 2.25rem; font-size: .8125rem; }
19
+
20
+ /* La part du ton dans un fond doux. Sur fond sombre, 14 % donnait un ruban
21
+ presque noir : il en faut davantage pour qu'il se lise comme une couleur. */
22
+ .sia-ec { --ec-soft: 14%; --ec-soft-text: 75%; }
23
+ [data-sia-color-mode="dark"] .sia-ec { --ec-soft: 26%; --ec-soft-text: 55%; }
24
+ @media (prefers-color-scheme: dark) {
25
+ :root:not([data-sia-color-mode="light"]) .sia-ec { --ec-soft: 26%; --ec-soft-text: 55%; }
26
+ }
27
+ .sia-ec--loading { opacity: .6; transition: opacity var(--sia-duration-base) var(--sia-easing-standard); }
28
+
29
+ /* ── Barre ────────────────────────────────────────────────────────────── */
30
+ .sia-ec__toolbar {
31
+ display: flex;
32
+ flex-wrap: wrap;
33
+ align-items: center;
34
+ justify-content: space-between;
35
+ gap: .75rem 1rem;
36
+ }
37
+ .sia-ec__nav, .sia-ec__tools { display: flex; align-items: center; gap: .35rem; }
38
+ .sia-ec__tools { flex-wrap: wrap; gap: .5rem; }
39
+ .sia-ec__period {
40
+ margin: 0 0 0 .5rem;
41
+ font-size: 1.125rem;
42
+ font-weight: 650;
43
+ letter-spacing: -.01em;
44
+ white-space: nowrap;
45
+ }
46
+ /* Le sélecteur de vue est un `RadioGroup` en boutons : il apporte son
47
+ dessin ; seul le cadre natif du fieldset est retiré. */
48
+ .sia-ec__views { margin: 0; padding: 0; border: 0; min-width: 0; }
49
+ .sia-ec__views .sia-radio-button { min-height: 2rem; font-size: .8125rem; }
50
+
51
+ /* ── Tons ─────────────────────────────────────────────────────────────── */
52
+ .sia-ec__event--primary, .sia-ec__dot--primary { --ec-tone: var(--sia-primary); --ec-on: var(--sia-primary-foreground); }
53
+ .sia-ec__event--neutral, .sia-ec__dot--neutral { --ec-tone: var(--sia-muted); --ec-on: var(--sia-background); }
54
+ .sia-ec__event--info, .sia-ec__dot--info { --ec-tone: var(--sia-info); --ec-on: var(--sia-info-foreground); }
55
+ .sia-ec__event--success, .sia-ec__dot--success { --ec-tone: var(--sia-success); --ec-on: var(--sia-success-foreground); }
56
+ .sia-ec__event--warning, .sia-ec__dot--warning { --ec-tone: var(--sia-warning); --ec-on: var(--sia-warning-foreground); }
57
+ .sia-ec__event--danger, .sia-ec__dot--danger { --ec-tone: var(--sia-danger); --ec-on: var(--sia-danger-foreground); }
58
+ .sia-ec__event--secondary, .sia-ec__dot--secondary { --ec-tone: var(--sia-secondary); --ec-on: var(--sia-secondary-foreground); }
59
+
60
+ /* ── Un événement ─────────────────────────────────────────────────────── */
61
+ .sia-ec__event, .sia-ec__slot {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: .35rem;
65
+ width: 100%;
66
+ min-width: 0;
67
+ padding: .15rem .4rem;
68
+ border: 1px solid transparent;
69
+ border-radius: calc(var(--sia-radius) * .75);
70
+ color: var(--sia-foreground);
71
+ background: transparent;
72
+ font: inherit;
73
+ font-size: .75rem;
74
+ line-height: 1.35;
75
+ text-align: left;
76
+ cursor: pointer;
77
+ transition:
78
+ background-color var(--sia-duration-fast) var(--sia-easing-standard),
79
+ filter var(--sia-duration-fast) var(--sia-easing-standard);
80
+ }
81
+ .sia-ec__event:focus-visible, .sia-ec__slot:focus-visible, .sia-ec__more:focus-visible {
82
+ outline: 2px solid var(--sia-primary);
83
+ outline-offset: 1px;
84
+ }
85
+ .sia-ec__time { flex: none; color: var(--sia-muted); font-variant-numeric: tabular-nums; }
86
+ .sia-ec__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 550; }
87
+ .sia-ec__dot { flex: none; width: .45rem; height: .45rem; border-radius: 9999px; background: var(--ec-tone); }
88
+
89
+ /* Un rendez-vous : un point de couleur, l'heure, le titre — sur fond neutre. */
90
+ .sia-ec__event--timed:hover { background: color-mix(in srgb, var(--ec-tone) 10%, transparent); }
91
+
92
+ /* Une journée entière, ou plusieurs : une barre du ton. */
93
+ .sia-ec--events-soft .sia-ec__event--bar,
94
+ .sia-ec--events-soft .sia-ec__slot {
95
+ color: color-mix(in srgb, var(--ec-tone) var(--ec-soft-text), var(--sia-foreground));
96
+ background: color-mix(in srgb, var(--ec-tone) var(--ec-soft), var(--sia-background));
97
+ border-left: 3px solid var(--ec-tone);
98
+ }
99
+ .sia-ec--events-solid .sia-ec__event--bar,
100
+ .sia-ec--events-solid .sia-ec__slot {
101
+ color: var(--ec-on);
102
+ background: var(--ec-tone);
103
+ }
104
+ .sia-ec--events-solid .sia-ec__event--bar .sia-ec__time,
105
+ .sia-ec--events-solid .sia-ec__slot .sia-ec__slot-time { color: inherit; opacity: .85; }
106
+ .sia-ec--events-outline .sia-ec__event--bar,
107
+ .sia-ec--events-outline .sia-ec__slot {
108
+ color: color-mix(in srgb, var(--ec-tone) 80%, var(--sia-foreground));
109
+ background: var(--sia-background);
110
+ border-color: color-mix(in srgb, var(--ec-tone) 55%, transparent);
111
+ }
112
+ .sia-ec__event--bar:hover, .sia-ec__slot:hover { filter: brightness(.96); }
113
+
114
+ /* Une barre qui déborde sur la veille ou le lendemain touche le bord de la
115
+ case : elle se lit comme un seul ruban d'un jour à l'autre. */
116
+ .sia-ec__event--continues-before { margin-left: -.35rem; width: calc(100% + .35rem); border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-width: 0; }
117
+ .sia-ec__event--continues-after { margin-right: -.35rem; width: calc(100% + .35rem); border-top-right-radius: 0; border-bottom-right-radius: 0; }
118
+ .sia-ec__event--continues-before.sia-ec__event--continues-after { width: calc(100% + .7rem); }
119
+
120
+ /* ── Mois ─────────────────────────────────────────────────────────────── */
121
+ .sia-ec__month {
122
+ display: grid;
123
+ overflow: hidden;
124
+ border: 1px solid var(--ec-line);
125
+ border-radius: calc(var(--sia-radius) + 4px);
126
+ background: var(--sia-background);
127
+ }
128
+ .sia-ec__weekdays, .sia-ec__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
129
+ .sia-ec__weekday {
130
+ padding: .5rem .6rem;
131
+ border-bottom: 1px solid var(--ec-line);
132
+ color: var(--sia-muted);
133
+ font-size: .72rem;
134
+ font-weight: 650;
135
+ letter-spacing: .03em;
136
+ text-transform: uppercase;
137
+ }
138
+ .sia-ec__day {
139
+ display: flex;
140
+ flex-direction: column;
141
+ gap: .2rem;
142
+ min-width: 0;
143
+ min-height: var(--ec-cell);
144
+ padding: .35rem .35rem .45rem;
145
+ border-right: 1px solid var(--ec-line);
146
+ border-bottom: 1px solid var(--ec-line);
147
+ cursor: pointer;
148
+ transition: background-color var(--sia-duration-fast) var(--sia-easing-standard);
149
+ }
150
+ .sia-ec__week > .sia-ec__day:last-child { border-right: 0; }
151
+ .sia-ec__week:last-child > .sia-ec__day { border-bottom: 0; }
152
+ .sia-ec__day:hover { background: color-mix(in srgb, var(--sia-primary) 4%, transparent); }
153
+ .sia-ec__day:focus-visible { outline: 2px solid var(--sia-primary); outline-offset: -2px; }
154
+ .sia-ec__day--weekend { background: color-mix(in srgb, var(--sia-surface) 55%, transparent); }
155
+ .sia-ec__day--outside .sia-ec__day-number { color: color-mix(in srgb, var(--sia-muted) 60%, transparent); }
156
+ /* Estompés, pas effacés : un événement du mois voisin reste un événement. */
157
+ .sia-ec__day--outside .sia-ec__events { opacity: .72; }
158
+ .sia-ec__day-number {
159
+ display: inline-grid;
160
+ place-items: center;
161
+ align-self: flex-start;
162
+ min-width: 1.6rem;
163
+ height: 1.6rem;
164
+ padding: 0 .3rem;
165
+ border-radius: 9999px;
166
+ font-size: .8rem;
167
+ font-weight: 600;
168
+ font-variant-numeric: tabular-nums;
169
+ }
170
+ .sia-ec__day--today .sia-ec__day-number { color: var(--sia-primary-foreground); background: var(--sia-primary); }
171
+ .sia-ec__events { display: grid; gap: 2px; min-width: 0; }
172
+ /* « +N autres » : un `Button` fantôme, ramené à la hauteur d'une ligne
173
+ d'événement pour ne pas agrandir la case qui déborde déjà. */
174
+ .sia-ec__more.sia-button {
175
+ justify-self: start;
176
+ min-height: 1.35rem;
177
+ padding: 0 .4rem;
178
+ color: var(--sia-muted);
179
+ font-size: .72rem;
180
+ font-weight: 600;
181
+ }
182
+ .sia-ec__more.sia-button:hover { color: var(--sia-foreground); }
183
+
184
+ /* Variante minimale : aucune ligne intérieure, les jours se lisent à leur
185
+ numéro ; la case survolée se dessine seule. */
186
+ .sia-ec--minimal .sia-ec__month { border-color: transparent; }
187
+ .sia-ec--minimal .sia-ec__day { border-color: transparent; border-radius: calc(var(--sia-radius) + 2px); }
188
+ .sia-ec--minimal .sia-ec__day--weekend { background: transparent; }
189
+ .sia-ec--minimal .sia-ec__weekday { border-bottom-color: transparent; }
190
+
191
+ /* Variante douce : des cases teintées, séparées par des blancs. */
192
+ .sia-ec--soft .sia-ec__month { gap: 4px; border: 0; background: transparent; }
193
+ .sia-ec--soft .sia-ec__week { gap: 4px; }
194
+ .sia-ec--soft .sia-ec__weekday { border: 0; }
195
+ .sia-ec--soft .sia-ec__day { border: 0; border-radius: calc(var(--sia-radius) + 2px); background: var(--sia-surface); }
196
+ .sia-ec--soft .sia-ec__day:hover { background: color-mix(in srgb, var(--sia-primary) 7%, var(--sia-surface)); }
197
+ .sia-ec--soft .sia-ec__day--outside { background: color-mix(in srgb, var(--sia-surface) 45%, transparent); }
198
+
199
+ /* ── Grille horaire : semaine et jour ─────────────────────────────────── */
200
+ .sia-ec__timegrid {
201
+ display: grid;
202
+ overflow: hidden;
203
+ border: 1px solid var(--ec-line);
204
+ border-radius: calc(var(--sia-radius) + 4px);
205
+ background: var(--sia-background);
206
+ }
207
+ .sia-ec__tg-head, .sia-ec__tg-allday, .sia-ec__tg-body {
208
+ display: grid;
209
+ grid-template-columns: var(--ec-gutter) repeat(var(--sia-ec-days, 7), minmax(0, 1fr));
210
+ }
211
+ .sia-ec__tg-head { border-bottom: 1px solid var(--ec-line); }
212
+ .sia-ec__tg-gutter {
213
+ display: flex;
214
+ align-items: center;
215
+ justify-content: flex-end;
216
+ padding: 0 .5rem;
217
+ color: var(--sia-muted);
218
+ font-size: .68rem;
219
+ }
220
+ .sia-ec__tg-dayhead {
221
+ display: flex;
222
+ flex-direction: column;
223
+ align-items: center;
224
+ gap: .1rem;
225
+ padding: .45rem 0;
226
+ border: 0;
227
+ border-left: 1px solid var(--ec-line);
228
+ color: var(--sia-muted);
229
+ background: transparent;
230
+ font: inherit;
231
+ cursor: pointer;
232
+ }
233
+ .sia-ec__tg-dayhead:hover { background: var(--sia-surface); }
234
+ .sia-ec__tg-weekday { font-size: .72rem; font-weight: 650; text-transform: uppercase; letter-spacing: .03em; }
235
+ .sia-ec__tg-daynum {
236
+ display: inline-grid;
237
+ place-items: center;
238
+ min-width: 1.9rem;
239
+ height: 1.9rem;
240
+ border-radius: 9999px;
241
+ color: var(--sia-foreground);
242
+ font-size: 1rem;
243
+ font-weight: 650;
244
+ }
245
+ .sia-ec__tg-dayhead--today .sia-ec__tg-weekday { color: var(--sia-primary); }
246
+ .sia-ec__tg-dayhead--today .sia-ec__tg-daynum { color: var(--sia-primary-foreground); background: var(--sia-primary); }
247
+
248
+ .sia-ec__tg-allday { border-bottom: 1px solid var(--ec-line); }
249
+ .sia-ec__tg-allday-cell {
250
+ display: grid;
251
+ align-content: start;
252
+ gap: 2px;
253
+ min-height: 1.9rem;
254
+ padding: 3px;
255
+ border-left: 1px solid var(--ec-line);
256
+ }
257
+
258
+ .sia-ec__tg-body {
259
+ position: relative;
260
+ max-height: calc(var(--ec-hour) * 11);
261
+ overflow-y: auto;
262
+ overscroll-behavior: contain;
263
+ }
264
+ .sia-ec__tg-hours { display: grid; grid-auto-rows: var(--ec-hour); }
265
+ .sia-ec__hour {
266
+ position: relative;
267
+ top: -.5em;
268
+ padding-right: .5rem;
269
+ color: var(--sia-muted);
270
+ font-size: .68rem;
271
+ font-variant-numeric: tabular-nums;
272
+ text-align: right;
273
+ }
274
+ /* Une colonne, ses lignes d'heure et de demi-heure dessinées par le fond :
275
+ quarante-huit bordures de moins par jour. */
276
+ .sia-ec__tg-col {
277
+ position: relative;
278
+ height: calc(var(--ec-hour) * 24);
279
+ border-left: 1px solid var(--ec-line);
280
+ background-image:
281
+ linear-gradient(to bottom, var(--ec-line) 1px, transparent 1px),
282
+ linear-gradient(to bottom, color-mix(in srgb, var(--ec-line) 45%, transparent) 1px, transparent 1px);
283
+ background-size: 100% var(--ec-hour), 100% var(--ec-hour);
284
+ background-position: 0 0, 0 calc(var(--ec-hour) / 2);
285
+ cursor: cell;
286
+ }
287
+ .sia-ec__tg-col--today { background-color: color-mix(in srgb, var(--sia-primary) 3%, transparent); }
288
+
289
+ .sia-ec__slot {
290
+ position: absolute;
291
+ z-index: 1;
292
+ flex-direction: column;
293
+ align-items: stretch;
294
+ justify-content: flex-start;
295
+ gap: 0;
296
+ overflow: hidden;
297
+ padding: .2rem .4rem;
298
+ box-shadow: 0 0 0 1px var(--sia-background);
299
+ }
300
+ .sia-ec__slot-title { overflow: hidden; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
301
+ .sia-ec__slot-time { overflow: hidden; font-size: .68rem; opacity: .8; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
302
+
303
+ /* L'heure qui passe. */
304
+ .sia-ec__now {
305
+ position: absolute;
306
+ z-index: 2;
307
+ left: -4px;
308
+ right: 0;
309
+ height: 2px;
310
+ background: var(--sia-danger);
311
+ pointer-events: none;
312
+ }
313
+ .sia-ec__now::before {
314
+ content: "";
315
+ position: absolute;
316
+ left: 0;
317
+ top: -4px;
318
+ width: 10px;
319
+ height: 10px;
320
+ border-radius: 9999px;
321
+ background: var(--sia-danger);
322
+ }
323
+
324
+ .sia-ec--minimal .sia-ec__timegrid { border-color: transparent; }
325
+ .sia-ec--soft .sia-ec__timegrid { background: var(--sia-surface); border-color: transparent; }
326
+
327
+ /* ── Agenda ───────────────────────────────────────────────────────────── */
328
+ .sia-ec__agenda { display: grid; gap: 1rem; }
329
+ .sia-ec__agenda-day { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: .5rem 1rem; }
330
+ .sia-ec__agenda-date { margin: .2rem 0 0; color: var(--sia-muted); font-size: .8rem; font-weight: 650; }
331
+ .sia-ec__agenda-date--today { color: var(--sia-primary); }
332
+ .sia-ec__agenda-row { display: flex; align-items: center; gap: .75rem; min-width: 0; }
333
+ .sia-ec__agenda-row .sia-ec__event { flex: 1 1 auto; padding: .45rem .6rem; font-size: .85rem; }
334
+ .sia-ec__location { flex: none; max-width: 40%; overflow: hidden; color: var(--sia-muted); font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
335
+ .sia-ec__list { display: grid; gap: 3px; min-width: 0; }
336
+ .sia-ec__empty, .sia-ec__empty-day { margin: 0; padding: 1.5rem; color: var(--sia-muted); text-align: center; }
337
+ .sia-ec__empty-day { padding: .75rem 0; text-align: left; }
338
+
339
+ /* ── Étroit : des points, et la liste du jour choisi ──────────────────── */
340
+ .sia-ec--compact { --ec-cell: 3.25rem; --ec-gutter: 2.75rem; }
341
+ .sia-ec--compact .sia-ec__period { margin-left: .25rem; font-size: 1rem; }
342
+ .sia-ec--compact .sia-ec__day { align-items: center; padding: .3rem .1rem; }
343
+ .sia-ec--compact .sia-ec__day-number { align-self: center; }
344
+ .sia-ec__dots { display: flex; gap: 3px; min-height: .45rem; }
345
+ .sia-ec__dots .sia-ec__dot { width: .35rem; height: .35rem; }
346
+ .sia-ec__day--selected .sia-ec__day-number { box-shadow: inset 0 0 0 2px var(--sia-primary); }
347
+ .sia-ec__day--today.sia-ec__day--selected .sia-ec__day-number { box-shadow: 0 0 0 2px var(--sia-background), 0 0 0 4px var(--sia-primary); }
348
+ .sia-ec--compact .sia-ec__weekday { padding: .4rem 0; text-align: center; }
349
+ .sia-ec--compact .sia-ec__tg-col, .sia-ec--compact .sia-ec__tg-dayhead { min-width: 0; }
350
+ .sia-ec--compact .sia-ec__slot-time { display: none; }
351
+ .sia-ec--compact .sia-ec__agenda-day { grid-template-columns: minmax(0, 1fr); gap: .35rem; }
352
+
353
+ .sia-ec__selected { display: grid; gap: .5rem; }
354
+ .sia-ec__selected-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
355
+ .sia-ec__selected-head h3 { margin: 0; font-size: .95rem; font-weight: 650; }
356
+ .sia-ec__selected .sia-ec__event { padding: .5rem .6rem; font-size: .85rem; }
357
+
358
+ @media (prefers-reduced-motion: reduce) {
359
+ .sia-ec__event, .sia-ec__slot, .sia-ec__day { transition: none; }
360
+ }