@usefillo/dom 0.4.0 → 0.5.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
@@ -328,6 +328,11 @@
328
328
  }
329
329
  .fillo-star:hover { transform: scale(1.15); }
330
330
  .fillo-star--active { color: var(--fillo-primary); }
331
+ .fillo-star:focus-visible {
332
+ outline: none;
333
+ border-radius: calc(var(--fillo-radius) * 0.5);
334
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fillo-primary) 30%, transparent);
335
+ }
331
336
 
332
337
  /* ---------- Linear scale ---------- */
333
338
  /* Steps share one row and shrink to fit — an 11-step NPS scale must never
@@ -348,6 +353,11 @@
348
353
  transition: border-color 120ms ease, background 120ms ease, color 120ms ease;
349
354
  }
350
355
  .fillo-scale-step:hover { border-color: var(--fillo-primary); }
356
+ .fillo-scale-step:focus-visible {
357
+ outline: none;
358
+ border-color: var(--fillo-primary);
359
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fillo-primary) 15%, transparent);
360
+ }
351
361
  .fillo-scale-step--active {
352
362
  background: var(--fillo-primary);
353
363
  border-color: var(--fillo-primary);
@@ -450,6 +460,21 @@
450
460
  }
451
461
  .fillo-signature-clear:hover { color: var(--fillo-error); border-color: var(--fillo-error); }
452
462
 
463
+ /* Type-to-sign: the keyboard/screen-reader path under the canvas. */
464
+ .fillo-signature-type {
465
+ display: flex;
466
+ flex-direction: column;
467
+ gap: 0.35rem;
468
+ margin-top: 0.55rem;
469
+ }
470
+ .fillo-signature-type-label {
471
+ color: var(--fillo-muted);
472
+ font-size: 0.8rem;
473
+ }
474
+ .fillo-signature-type-input {
475
+ margin-top: 0;
476
+ }
477
+
453
478
  /* ---------- File upload ---------- */
454
479
  .fillo-dropzone {
455
480
  display: flex;
@@ -469,6 +494,11 @@
469
494
  border-color: var(--fillo-primary);
470
495
  background: color-mix(in srgb, var(--fillo-primary) 4%, var(--fillo-control-bg));
471
496
  }
497
+ .fillo-dropzone:focus-visible {
498
+ outline: none;
499
+ border-color: var(--fillo-primary);
500
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fillo-primary) 15%, transparent);
501
+ }
472
502
  .fillo-dropzone--disabled { cursor: not-allowed; opacity: 0.6; }
473
503
  .fillo-dropzone-title { font-weight: 550; font-size: 0.95rem; }
474
504
  .fillo-dropzone-hint { color: var(--fillo-muted); font-size: 0.82rem; }
@@ -526,6 +556,10 @@
526
556
  }
527
557
  .fillo-button:active { transform: translateY(1px); }
528
558
  .fillo-button:disabled { opacity: 0.55; cursor: not-allowed; }
559
+ .fillo-button:focus-visible {
560
+ outline: none;
561
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fillo-primary) 30%, transparent);
562
+ }
529
563
  .fillo-button--primary { background: var(--fillo-primary); color: var(--fillo-primary-contrast); }
530
564
  .fillo-button--ghost { background: transparent; color: var(--fillo-text); border-color: var(--fillo-border); }
531
565
 
@@ -574,6 +608,20 @@
574
608
  pointer-events: none;
575
609
  }
576
610
 
611
+ /* Visually hidden but exposed to assistive tech — for aria-live narration. */
612
+ .fillo-sr-only {
613
+ position: absolute;
614
+ width: 1px;
615
+ height: 1px;
616
+ margin: -1px;
617
+ padding: 0;
618
+ overflow: hidden;
619
+ clip: rect(0 0 0 0);
620
+ clip-path: inset(50%);
621
+ white-space: nowrap;
622
+ border: 0;
623
+ }
624
+
577
625
  /* ---------- Loading skeleton ---------- */
578
626
  .fillo-form--loading { gap: 0.9rem; }
579
627
  .fillo-skeleton {
@@ -588,6 +636,22 @@
588
636
  to { background-position: -200% 0; }
589
637
  }
590
638
 
639
+ /* Respect a reduced-motion preference: drop transitions, the press nudge,
640
+ the rating hover scale, and the skeleton shimmer. */
641
+ @media (prefers-reduced-motion: reduce) {
642
+ .fillo-form *,
643
+ .fillo-form *::before,
644
+ .fillo-form *::after {
645
+ animation-duration: 0.001ms !important;
646
+ animation-iteration-count: 1 !important;
647
+ transition-duration: 0.001ms !important;
648
+ scroll-behavior: auto !important;
649
+ }
650
+ .fillo-button:active { transform: none; }
651
+ .fillo-star:hover { transform: none; }
652
+ .fillo-skeleton { animation: none; }
653
+ }
654
+
591
655
  /* ---------- "Powered by Fillo" badge ---------- */
592
656
  .fillo-powered {
593
657
  display: block;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usefillo/dom",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Framework-agnostic DOM renderer and web component for embedding Fillo forms.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -34,7 +34,7 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@usefillo/core": "^0.4.0"
37
+ "@usefillo/core": "^0.5.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "jsdom": "^25.0.1",