@vectoriox/iox-ui 5.84.0 → 5.86.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 (47) hide show
  1. package/actions-core/index.d.ts +47 -3
  2. package/composite-core/index.d.ts +93 -15
  3. package/design-core/index.d.ts +2013 -187
  4. package/fesm2022/vectoriox-iox-ui-actions-core.mjs +153 -70
  5. package/fesm2022/vectoriox-iox-ui-actions-core.mjs.map +1 -1
  6. package/fesm2022/vectoriox-iox-ui-composite-core.mjs +307 -39
  7. package/fesm2022/vectoriox-iox-ui-composite-core.mjs.map +1 -1
  8. package/fesm2022/vectoriox-iox-ui-design-core.mjs +2222 -85
  9. package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
  10. package/fesm2022/vectoriox-iox-ui-forms-core.mjs +27 -4
  11. package/fesm2022/vectoriox-iox-ui-forms-core.mjs.map +1 -1
  12. package/fesm2022/vectoriox-iox-ui-generation-core.mjs +250 -12
  13. package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
  14. package/fesm2022/vectoriox-iox-ui-scene-core.mjs +101 -5
  15. package/fesm2022/vectoriox-iox-ui-scene-core.mjs.map +1 -1
  16. package/fesm2022/vectoriox-iox-ui.mjs +1545 -78
  17. package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
  18. package/forms-core/index.d.ts +23 -4
  19. package/generation-core/index.d.ts +13 -0
  20. package/index.d.ts +563 -62
  21. package/package.json +1 -1
  22. package/scene-core/index.d.ts +32 -4
  23. package/src/actions-core/action.model.ts +1 -1
  24. package/src/actions-core/dialog-motion.ts +25 -0
  25. package/src/actions-core/dialog-opener.ts +9 -3
  26. package/src/actions-core/element-actions.ts +25 -1
  27. package/src/actions-core/popover-opener.ts +50 -0
  28. package/src/actions-core/public-api.ts +1 -0
  29. package/src/composite-core/header.ts +25 -0
  30. package/src/composite-core/public-api.ts +1 -0
  31. package/src/composite-core/slider-runtime.ts +82 -0
  32. package/src/composite-core/slider.ts +194 -27
  33. package/src/composite-core/structure.ts +14 -9
  34. package/src/design-core/flavor-spec.generated.ts +2145 -85
  35. package/src/design-core/header-behaviour.ts +76 -0
  36. package/src/design-core/public-api.ts +1 -0
  37. package/src/design-core/theme-color.ts +21 -5
  38. package/src/forms-core/submit-lifecycle.ts +30 -3
  39. package/src/generation-core/baseline-roles.ts +1 -0
  40. package/src/generation-core/compose-site.ts +8 -0
  41. package/src/generation-core/node-baselines.generated.ts +231 -11
  42. package/src/generation-core/patterns.ts +2 -0
  43. package/src/generation-core/site-spec.generated.ts +8 -0
  44. package/src/scene-core/scene.ts +18 -0
  45. package/src/scene-core/scroll-driver.ts +83 -6
  46. package/styles/iox-design.css +431 -1
  47. package/styles/iox-forms.css +29 -4
@@ -36,8 +36,11 @@
36
36
  has to be able to fix and retry. The submit button STAYS (premium N2: it reads "Sent" with its check,
37
37
  disabled — the success in place), and so does the row holding it or the second channel (the WhatsApp
38
38
  button beside Send is how a visitor reaches you AFTER sending too). */
39
- .iox-form[data-iox-state="success"] .iox-field,
40
- .iox-form[data-iox-state="success"] .iox-field-group:not(:has(.iox-submit, .iox-role-form-channel)) { display: none !important; }
39
+ .iox-form[data-iox-state="success"]:not([data-iox-after-send="toast"]) .iox-field,
40
+ .iox-form[data-iox-state="success"]:not([data-iox-after-send="toast"]) .iox-field-group:not(:has(.iox-submit, .iox-role-form-channel)) { display: none !important; }
41
+ /* A form that KEEPS its fields after sending (premium M5 — After sending ▸ "Keep the fields and show a toast") never
42
+ shows its Success block: a toast says the Sent words and the fields stay, cleared for the next answer. */
43
+ .iox-form[data-iox-after-send="toast"] .iox-form-success { display: none !important; }
41
44
 
42
45
  /* The Success and Error blocks ENTER (premium N2 — Emil 139/30): opacity and a 4px rise over 200ms, out in 120ms,
43
46
  transitions (a fast retry interrupts from the live value, never a restart). `display` is discrete, so the exit
@@ -240,6 +243,25 @@ dialog.iox-cal::backdrop { background: transparent; }
240
243
  @starting-style { dialog.iox-cal[open] { opacity: 0; transform: none; } }
241
244
  dialog.iox-cal[data-iox-closing] { opacity: 0; transition-duration: 120ms; }
242
245
  }
246
+ /* A Date field that wears the design system is timed by the LOOK (premium M5 — the calendar is a popover, and a sheet on
247
+ a phone): the popover tokens on a laptop, the sheet's on a phone, so a look whose motion is Off opens it with no motion
248
+ at all (vectoriox/iox-ui#44). Reduced motion keeps the fade (the tokens survive it) and drops the movement. */
249
+ .iox-es-field dialog.iox-cal {
250
+ transition: opacity var(--iox-popover-dur-in) var(--iox-popover-ease), transform var(--iox-popover-dur-in) var(--iox-popover-ease);
251
+ }
252
+ @starting-style { .iox-es-field dialog.iox-cal[open] { transform: scale(var(--iox-popover-scale)); } }
253
+ .iox-es-field dialog.iox-cal[data-iox-closing] { transform: scale(var(--iox-popover-scale)); transition-duration: var(--iox-popover-dur-out); }
254
+ @media (max-width: 767px) {
255
+ .iox-es-field dialog.iox-cal { transform: none; transition: transform var(--iox-sheet-dur-in) var(--iox-sheet-ease); }
256
+ @starting-style { .iox-es-field dialog.iox-cal[open] { transform: translateY(100%); } }
257
+ .iox-es-field dialog.iox-cal[data-iox-closing] { transform: translateY(100%); transition-duration: var(--iox-sheet-dur-out); transition-timing-function: var(--iox-sheet-ease); }
258
+ .iox-es-field dialog.iox-cal::backdrop { transition: opacity var(--iox-sheet-dur-in) var(--iox-sheet-ease); }
259
+ .iox-es-field dialog.iox-cal[data-iox-closing]::backdrop { transition-duration: var(--iox-sheet-dur-out); }
260
+ }
261
+ @media (prefers-reduced-motion: reduce) {
262
+ .iox-es-field dialog.iox-cal, .iox-es-field dialog.iox-cal[data-iox-closing] { transform: none !important; transition: opacity var(--iox-popover-dur-in) var(--iox-popover-ease); }
263
+ .iox-es-field dialog.iox-cal[data-iox-closing] { transition-duration: var(--iox-popover-dur-out); }
264
+ }
243
265
  /* Opened from the KEYBOARD (Enter / Space on the date button): it simply appears, and Esc or Enter on a day closes it
244
266
  at once — keyboard-initiated actions never animate (Emil 2). The pointer gets the motion above. */
245
267
  dialog.iox-cal[data-iox-instant],
@@ -549,7 +571,8 @@ dialog.iox-cal[data-iox-instant]::backdrop { transition: none !important; }
549
571
  /* ── Premium M3, under the field marker: a Choices field's chips wear the `chip` element style (N1); a Date's words,
550
572
  glyph and open box, its calendar the `calendar` style and every day `calendar-day` (N8). These rules ARE the
551
573
  contract's fieldClassBaseline entries, verbatim (generated from the element styles by build-spec.mjs; pinned by
552
- token-names.spec). Hover is gated to hover devices (G1). ── */
574
+ token-names.spec). Hover is gated to hover devices (G1). M4: a chip's colour moves on the hover timing (dur-hover,
575
+ ≤150ms on `ease` — Emil 92); a chip and a day press on dur-press and release on the slower dur-fast (Emil 55/85). ── */
553
576
  .iox-es-field .iox-field__chip {
554
577
  background-color: transparent;
555
578
  color: var(--iox-text);
@@ -561,10 +584,11 @@ dialog.iox-cal[data-iox-instant]::backdrop { transition: none !important; }
561
584
  font-family: var(--iox-font-label);
562
585
  font-size: var(--iox-badge-size);
563
586
  font-weight: var(--iox-weight-label);
564
- transition: border-color var(--iox-dur-fast) var(--iox-ease-standard), background-color var(--iox-dur-fast) var(--iox-ease-standard), color var(--iox-dur-fast) var(--iox-ease-standard), box-shadow var(--iox-dur-fast) var(--iox-ease-standard), opacity var(--iox-dur-fast) var(--iox-ease-standard), transform var(--iox-dur-fast) var(--iox-ease-standard);
587
+ transition: border-color var(--iox-dur-hover) var(--iox-ease-hover), background-color var(--iox-dur-hover) var(--iox-ease-hover), color var(--iox-dur-hover) var(--iox-ease-hover), box-shadow var(--iox-dur-hover) var(--iox-ease-hover), opacity var(--iox-dur-hover) var(--iox-ease-hover), transform var(--iox-dur-fast) var(--iox-ease-standard);
565
588
  }
566
589
  .iox-es-field .iox-field__chip:active:not(:has(:disabled)) {
567
590
  transform: scale(var(--iox-press-scale));
591
+ transition-duration: var(--iox-dur-press);
568
592
  }
569
593
  @media (hover: hover) and (pointer: fine) {
570
594
  .iox-es-field .iox-field__chip:hover:not(:has(:disabled)) {
@@ -639,6 +663,7 @@ dialog.iox-cal[data-iox-instant]::backdrop { transition: none !important; }
639
663
  }
640
664
  .iox-es-field .iox-cal .iox-cal__day:active:not([aria-disabled='true']) {
641
665
  transform: scale(var(--iox-press-scale));
666
+ transition-duration: var(--iox-dur-press);
642
667
  }
643
668
  @media (hover: hover) and (pointer: fine) {
644
669
  .iox-es-field .iox-cal .iox-cal__day:hover:not([aria-disabled='true']) {