@usefillo/react 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -5,6 +5,9 @@
5
5
  * style from scratch.
6
6
  */
7
7
 
8
+ /* Specificity contract: every rule stays at single-class specificity —
9
+ * qualifiers are wrapped in :where() so one consumer class always wins.
10
+ * A lint test (packages/react/test) fails the build on regressions. */
8
11
  /* Cascade layers: these defaults live in the `components` layer so that, in
9
12
  * apps using Tailwind (or any utility CSS in the `utilities` layer), YOUR
10
13
  * classes always win over ours — className="bg-red-50" on an option just
@@ -100,7 +103,7 @@
100
103
  border-color: var(--fillo-primary);
101
104
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fillo-primary) 15%, transparent);
102
105
  }
103
- .fillo-field--error .fillo-input { border-color: var(--fillo-error); }
106
+ :where(.fillo-field--error) .fillo-input { border-color: var(--fillo-error); }
104
107
  .fillo-textarea { resize: vertical; min-height: 6rem; }
105
108
 
106
109
  /* Phone field: country picker + national input */
@@ -123,7 +126,7 @@
123
126
  .fillo-phone-dial { font-variant-numeric: tabular-nums; color: var(--fillo-muted); }
124
127
  .fillo-phone-caret { font-size: 0.65em; color: var(--fillo-muted); }
125
128
  .fillo-phone-input { flex: 1 1 auto; min-width: 0; }
126
- .fillo-field--error .fillo-phone-flag { border-color: var(--fillo-error); }
129
+ :where(.fillo-field--error) .fillo-phone-flag { border-color: var(--fillo-error); }
127
130
  .fillo-phone-popover {
128
131
  position: absolute; z-index: 30; top: calc(100% + 0.3rem); left: 0;
129
132
  width: min(18rem, calc(100vw - 1rem));
@@ -179,7 +182,7 @@
179
182
  transform: translateY(-65%) rotate(45deg);
180
183
  transition: color 120ms ease;
181
184
  }
182
- .fillo-select-wrap:focus-within .fillo-select-icon { color: var(--fillo-primary); }
185
+ :where(.fillo-select-wrap:focus-within) .fillo-select-icon { color: var(--fillo-primary); }
183
186
 
184
187
  /* ---------- Choices ---------- */
185
188
  .fillo-options { display: flex; flex-direction: column; gap: 0.5rem; }
@@ -212,7 +215,7 @@
212
215
  margin: 0;
213
216
  }
214
217
  .fillo-option-input:focus-visible { outline: none; }
215
- .fillo-option--has-icon .fillo-option-input {
218
+ :where(.fillo-option--has-icon) .fillo-option-input {
216
219
  position: absolute;
217
220
  width: 1px;
218
221
  height: 1px;
@@ -227,7 +230,7 @@
227
230
  color: var(--fillo-muted);
228
231
  transition: color 120ms ease;
229
232
  }
230
- .fillo-option--selected .fillo-option-icon { color: var(--fillo-primary); }
233
+ :where(.fillo-option--selected) .fillo-option-icon { color: var(--fillo-primary); }
231
234
  .fillo-option-label { font-size: 0.95rem; }
232
235
 
233
236
  .fillo-option-main {
@@ -241,7 +244,7 @@
241
244
  flex-direction: column;
242
245
  gap: 0.55rem;
243
246
  }
244
- .fillo-option--with-other .fillo-option-label {
247
+ :where(.fillo-option--with-other) .fillo-option-label {
245
248
  font-weight: 550;
246
249
  }
247
250
 
@@ -291,20 +294,20 @@
291
294
  box-shadow: 0 1px 2px color-mix(in srgb, var(--fillo-text) 18%, transparent);
292
295
  transition: transform 160ms ease, background 160ms ease;
293
296
  }
294
- .fillo-toggle-input:checked + .fillo-toggle-track {
297
+ :where(.fillo-toggle-input:checked) + .fillo-toggle-track {
295
298
  background: var(--fillo-primary);
296
299
  box-shadow: inset 0 0 0 1px var(--fillo-primary);
297
300
  }
298
- .fillo-toggle-input:checked + .fillo-toggle-track .fillo-toggle-thumb {
301
+ :where(.fillo-toggle-input:checked) + :where(.fillo-toggle-track) .fillo-toggle-thumb {
299
302
  transform: translateX(1rem);
300
303
  background: var(--fillo-primary-contrast);
301
304
  }
302
- .fillo-toggle-input:focus-visible + .fillo-toggle-track {
305
+ :where(.fillo-toggle-input:focus-visible) + .fillo-toggle-track {
303
306
  box-shadow:
304
307
  inset 0 0 0 1px var(--fillo-primary),
305
308
  0 0 0 3px color-mix(in srgb, var(--fillo-primary) 15%, transparent);
306
309
  }
307
- .fillo-toggle:has(.fillo-toggle-input:checked) {
310
+ .fillo-toggle:where(:has(.fillo-toggle-input:checked)) {
308
311
  border-color: var(--fillo-primary);
309
312
  background: color-mix(in srgb, var(--fillo-primary) 5%, var(--fillo-control-bg));
310
313
  }
@@ -421,7 +424,7 @@
421
424
  /* ---------- Matrix ---------- */
422
425
  .fillo-matrix-wrap { overflow-x: auto; }
423
426
  .fillo-matrix { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
424
- .fillo-matrix th, .fillo-matrix td {
427
+ :where(.fillo-matrix) th, :where(.fillo-matrix) td {
425
428
  padding: 0.55rem 0.7rem;
426
429
  text-align: center;
427
430
  border-bottom: 1px solid var(--fillo-border);
@@ -580,6 +583,7 @@
580
583
  overflow: hidden;
581
584
  }
582
585
  .fillo-progress-fill {
586
+ width: var(--fillo-progress-value, 0%);
583
587
  height: 100%;
584
588
  background: var(--fillo-primary);
585
589
  border-radius: inherit;