@vectoriox/iox-ui 5.82.2 → 5.83.1

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 (32) hide show
  1. package/design-core/index.d.ts +200 -0
  2. package/fesm2022/vectoriox-iox-ui-design-core.mjs +215 -1
  3. package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
  4. package/fesm2022/vectoriox-iox-ui-forms-core.mjs +733 -56
  5. package/fesm2022/vectoriox-iox-ui-forms-core.mjs.map +1 -1
  6. package/fesm2022/vectoriox-iox-ui-generation-core.mjs +40 -4
  7. package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
  8. package/fesm2022/vectoriox-iox-ui.mjs +1559 -135
  9. package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
  10. package/forms-core/index.d.ts +366 -18
  11. package/generation-core/index.d.ts +3 -0
  12. package/index.d.ts +307 -25
  13. package/package.json +1 -1
  14. package/src/design-core/contrast-audit.ts +4 -0
  15. package/src/design-core/flavor-spec.generated.ts +209 -1
  16. package/src/forms-core/channel.ts +85 -0
  17. package/src/forms-core/collect.ts +63 -30
  18. package/src/forms-core/dates.ts +299 -0
  19. package/src/forms-core/field-markup.ts +159 -0
  20. package/src/forms-core/form-presets.ts +51 -2
  21. package/src/forms-core/form.model.ts +34 -2
  22. package/src/forms-core/messages.ts +31 -0
  23. package/src/forms-core/public-api.ts +3 -0
  24. package/src/forms-core/rule-catalog.ts +3 -2
  25. package/src/forms-core/submit-lifecycle.ts +42 -12
  26. package/src/forms-core/validate.ts +90 -4
  27. package/src/generation-core/audit-site.ts +9 -1
  28. package/src/generation-core/compose-site.ts +22 -3
  29. package/src/generation-core/node-baselines.generated.ts +10 -0
  30. package/src/generation-core/plan-wire.ts +2 -2
  31. package/styles/iox-design.css +10 -0
  32. package/styles/iox-forms.css +358 -10
@@ -2705,6 +2705,22 @@ declare const SPEC_ELEMENT_STYLES: readonly [{
2705
2705
  readonly fontFamily: "var(--iox-font-label)";
2706
2706
  readonly fontSize: "var(--iox-badge-size)";
2707
2707
  readonly fontWeight: "var(--iox-weight-label)";
2708
+ readonly transitionDuration: "var(--iox-dur-fast)";
2709
+ readonly transitionTimingFunction: "var(--iox-ease-standard)";
2710
+ };
2711
+ readonly hover: {
2712
+ readonly borderColor: "var(--iox-text)";
2713
+ };
2714
+ readonly selected: {
2715
+ readonly backgroundColor: "var(--iox-accent-text)";
2716
+ readonly color: "var(--iox-bg)";
2717
+ readonly borderColor: "var(--iox-accent-text)";
2718
+ };
2719
+ readonly focus: {
2720
+ readonly boxShadow: "var(--iox-focus-ring)";
2721
+ };
2722
+ readonly disabled: {
2723
+ readonly opacity: "0.55";
2708
2724
  };
2709
2725
  }, {
2710
2726
  readonly id: "badge-label";
@@ -2729,6 +2745,54 @@ declare const SPEC_ELEMENT_STYLES: readonly [{
2729
2745
  readonly backgroundColor: "linear-gradient(180deg, transparent 0%, var(--iox-media-scrim) 45%)";
2730
2746
  readonly color: "var(--iox-media-scrim-ink)";
2731
2747
  };
2748
+ }, {
2749
+ readonly id: "calendar";
2750
+ readonly label: "Calendar";
2751
+ readonly group: "Forms";
2752
+ readonly appliesTo: readonly [];
2753
+ readonly base: {
2754
+ readonly backgroundColor: "var(--iox-surface)";
2755
+ readonly color: "var(--iox-text)";
2756
+ readonly borderRadius: "var(--iox-dialog-radius)";
2757
+ readonly boxShadow: "var(--iox-dialog-shadow)";
2758
+ readonly fontFamily: "var(--iox-font-body)";
2759
+ };
2760
+ }, {
2761
+ readonly id: "calendar-day";
2762
+ readonly label: "Calendar day";
2763
+ readonly group: "Forms";
2764
+ readonly appliesTo: readonly [];
2765
+ readonly base: {
2766
+ readonly backgroundColor: "transparent";
2767
+ readonly color: "var(--iox-text)";
2768
+ readonly borderStyle: "solid";
2769
+ readonly borderWidth: "var(--iox-border-width)";
2770
+ readonly borderColor: "transparent";
2771
+ readonly borderRadius: "var(--iox-radius-pill)";
2772
+ readonly fontFamily: "var(--iox-font-body)";
2773
+ readonly fontSize: "var(--iox-size-body)";
2774
+ readonly fontVariantNumeric: "tabular-nums";
2775
+ readonly transitionDuration: "var(--iox-dur-fast)";
2776
+ readonly transitionTimingFunction: "var(--iox-ease-standard)";
2777
+ };
2778
+ readonly hover: {
2779
+ readonly backgroundColor: "var(--iox-surface-2)";
2780
+ };
2781
+ readonly current: {
2782
+ readonly borderColor: "var(--iox-line-strong)";
2783
+ };
2784
+ readonly selected: {
2785
+ readonly backgroundColor: "var(--iox-accent-text)";
2786
+ readonly color: "var(--iox-bg)";
2787
+ readonly borderColor: "var(--iox-accent-text)";
2788
+ };
2789
+ readonly focus: {
2790
+ readonly boxShadow: "var(--iox-focus-ring)";
2791
+ };
2792
+ readonly disabled: {
2793
+ readonly color: "var(--iox-text-muted)";
2794
+ readonly opacity: "0.4";
2795
+ };
2732
2796
  }, {
2733
2797
  readonly id: "notice-success";
2734
2798
  readonly label: "Success message";
@@ -2980,6 +3044,112 @@ declare const SPEC_FIELD_CLASS_BASELINE: {
2980
3044
  readonly ".iox-es-field .iox-field__control--switch:checked": {
2981
3045
  readonly background: "var(--iox-accent-text)";
2982
3046
  };
3047
+ readonly ".iox-es-field .iox-field__chip": {
3048
+ readonly "background-color": "transparent";
3049
+ readonly color: "var(--iox-text)";
3050
+ readonly "border-style": "solid";
3051
+ readonly "border-width": "var(--iox-border-width)";
3052
+ readonly "border-color": "var(--iox-chip-border)";
3053
+ readonly "border-radius": "var(--iox-badge-radius)";
3054
+ readonly padding: "var(--iox-badge-pad)";
3055
+ readonly "font-family": "var(--iox-font-label)";
3056
+ readonly "font-size": "var(--iox-badge-size)";
3057
+ readonly "font-weight": "var(--iox-weight-label)";
3058
+ readonly 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)";
3059
+ };
3060
+ readonly ".iox-es-field .iox-field__chip:active:not(:has(:disabled))": {
3061
+ readonly transform: "scale(var(--iox-press-scale))";
3062
+ };
3063
+ readonly ".iox-es-field .iox-field__chip:hover:not(:has(:disabled))": {
3064
+ readonly "border-color": "var(--iox-text)";
3065
+ };
3066
+ readonly ".iox-es-field .iox-field__chip:has(:checked)": {
3067
+ readonly "background-color": "var(--iox-accent-text)";
3068
+ readonly color: "var(--iox-bg)";
3069
+ readonly "border-color": "var(--iox-accent-text)";
3070
+ };
3071
+ readonly ".iox-es-field .iox-field__chip:has(:focus-visible)": {
3072
+ readonly "box-shadow": "var(--iox-focus-ring)";
3073
+ readonly outline: "2px solid transparent";
3074
+ readonly "outline-offset": "2px";
3075
+ };
3076
+ readonly ".iox-es-field .iox-field__chip:has(:disabled)": {
3077
+ readonly opacity: "0.55";
3078
+ };
3079
+ readonly ".iox-es-field .iox-field__date-value[data-iox-empty]": {
3080
+ readonly color: "var(--iox-text-muted)";
3081
+ };
3082
+ readonly ".iox-es-field .iox-field__date-icon": {
3083
+ readonly color: "var(--iox-text-muted)";
3084
+ };
3085
+ readonly ".iox-es-field .iox-field__control--date[aria-expanded='true']": {
3086
+ readonly "border-color": "var(--iox-accent-text)";
3087
+ readonly "box-shadow": "var(--iox-field-focus)";
3088
+ };
3089
+ readonly ".iox-es-field .iox-cal": {
3090
+ readonly "background-color": "var(--iox-surface)";
3091
+ readonly color: "var(--iox-text)";
3092
+ readonly "border-radius": "var(--iox-dialog-radius)";
3093
+ readonly "box-shadow": "var(--iox-dialog-shadow), 0 0 0 var(--iox-border-width) var(--iox-line)";
3094
+ readonly "font-family": "var(--iox-font-body)";
3095
+ };
3096
+ readonly ".iox-es-field .iox-cal .iox-cal__title": {
3097
+ readonly "font-family": "var(--iox-font-display)";
3098
+ readonly "font-weight": "var(--iox-weight-heading)";
3099
+ readonly color: "var(--iox-text)";
3100
+ };
3101
+ readonly ".iox-es-field .iox-cal .iox-cal__weekday": {
3102
+ readonly "font-family": "var(--iox-font-label)";
3103
+ readonly "font-size": "var(--iox-size-label)";
3104
+ readonly "font-weight": "var(--iox-weight-label)";
3105
+ readonly color: "var(--iox-text-muted)";
3106
+ };
3107
+ readonly ".iox-es-field .iox-cal .iox-cal__grab": {
3108
+ readonly background: "var(--iox-line-strong)";
3109
+ };
3110
+ readonly ".iox-es-field .iox-cal .iox-cal__nav button:hover:not(:disabled)": {
3111
+ readonly "background-color": "var(--iox-surface-2)";
3112
+ };
3113
+ readonly ".iox-es-field .iox-cal .iox-cal__nav button:focus-visible": {
3114
+ readonly "box-shadow": "var(--iox-focus-ring)";
3115
+ readonly outline: "2px solid transparent";
3116
+ readonly "outline-offset": "2px";
3117
+ };
3118
+ readonly ".iox-es-field .iox-cal .iox-cal__day": {
3119
+ readonly "background-color": "transparent";
3120
+ readonly color: "var(--iox-text)";
3121
+ readonly "border-style": "solid";
3122
+ readonly "border-width": "var(--iox-border-width)";
3123
+ readonly "border-color": "transparent";
3124
+ readonly "border-radius": "var(--iox-radius-pill)";
3125
+ readonly "font-family": "var(--iox-font-body)";
3126
+ readonly "font-size": "var(--iox-size-body)";
3127
+ readonly "font-variant-numeric": "tabular-nums";
3128
+ readonly transition: "background-color var(--iox-dur-fast) var(--iox-ease-standard), color var(--iox-dur-fast) var(--iox-ease-standard), border-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)";
3129
+ };
3130
+ readonly ".iox-es-field .iox-cal .iox-cal__day:active:not([aria-disabled='true'])": {
3131
+ readonly transform: "scale(var(--iox-press-scale))";
3132
+ };
3133
+ readonly ".iox-es-field .iox-cal .iox-cal__day:hover:not([aria-disabled='true'])": {
3134
+ readonly "background-color": "var(--iox-surface-2)";
3135
+ };
3136
+ readonly ".iox-es-field .iox-cal .iox-cal__day[aria-current='date']": {
3137
+ readonly "border-color": "var(--iox-line-strong)";
3138
+ };
3139
+ readonly ".iox-es-field .iox-cal .iox-cal__cell[aria-selected='true'] > .iox-cal__day": {
3140
+ readonly "background-color": "var(--iox-accent-text)";
3141
+ readonly color: "var(--iox-bg)";
3142
+ readonly "border-color": "var(--iox-accent-text)";
3143
+ };
3144
+ readonly ".iox-es-field .iox-cal .iox-cal__day[aria-disabled='true']": {
3145
+ readonly color: "var(--iox-text-muted)";
3146
+ readonly opacity: "0.4";
3147
+ };
3148
+ readonly ".iox-es-field .iox-cal .iox-cal__day:focus-visible": {
3149
+ readonly "box-shadow": "var(--iox-focus-ring)";
3150
+ readonly outline: "2px solid transparent";
3151
+ readonly "outline-offset": "2px";
3152
+ };
2983
3153
  };
2984
3154
  declare const SPEC_INK_SCOPES: readonly [{
2985
3155
  readonly styles: readonly ["button-primary", "button-secondary", "button-ghost"];
@@ -3164,6 +3334,36 @@ declare const SPEC_CONTRAST_AUDIT: {
3164
3334
  readonly fg: "var(--iox-line-strong)";
3165
3335
  readonly on: "var(--iox-surface)";
3166
3336
  readonly min: 3;
3337
+ }, {
3338
+ readonly part: "calendar text";
3339
+ readonly fg: "var(--iox-text)";
3340
+ readonly on: "var(--iox-surface)";
3341
+ readonly min: 4.5;
3342
+ }, {
3343
+ readonly part: "calendar weekday";
3344
+ readonly fg: "var(--iox-text-muted)";
3345
+ readonly on: "var(--iox-surface)";
3346
+ readonly min: 4.5;
3347
+ }, {
3348
+ readonly part: "calendar today ring";
3349
+ readonly fg: "var(--iox-line-strong)";
3350
+ readonly on: "var(--iox-surface)";
3351
+ readonly min: 3;
3352
+ }, {
3353
+ readonly part: "calendar chosen day";
3354
+ readonly fg: "var(--iox-accent-text)";
3355
+ readonly on: "var(--iox-surface)";
3356
+ readonly min: 3;
3357
+ }, {
3358
+ readonly part: "calendar chosen day number";
3359
+ readonly fg: "var(--iox-bg)";
3360
+ readonly on: "var(--iox-accent-text)";
3361
+ readonly min: 4.5;
3362
+ }, {
3363
+ readonly part: "calendar day hover";
3364
+ readonly fg: "var(--iox-text)";
3365
+ readonly on: "var(--iox-surface-2)";
3366
+ readonly min: 4.5;
3167
3367
  }, {
3168
3368
  readonly part: "checkbox · radio checked";
3169
3369
  readonly fg: readonly ["var(--iox-accent-text)", "var(--iox-accent)"];
@@ -3389,7 +3389,23 @@ const SPEC_ELEMENT_STYLES = [
3389
3389
  "padding": "var(--iox-badge-pad)",
3390
3390
  "fontFamily": "var(--iox-font-label)",
3391
3391
  "fontSize": "var(--iox-badge-size)",
3392
- "fontWeight": "var(--iox-weight-label)"
3392
+ "fontWeight": "var(--iox-weight-label)",
3393
+ "transitionDuration": "var(--iox-dur-fast)",
3394
+ "transitionTimingFunction": "var(--iox-ease-standard)"
3395
+ },
3396
+ "hover": {
3397
+ "borderColor": "var(--iox-text)"
3398
+ },
3399
+ "selected": {
3400
+ "backgroundColor": "var(--iox-accent-text)",
3401
+ "color": "var(--iox-bg)",
3402
+ "borderColor": "var(--iox-accent-text)"
3403
+ },
3404
+ "focus": {
3405
+ "boxShadow": "var(--iox-focus-ring)"
3406
+ },
3407
+ "disabled": {
3408
+ "opacity": "0.55"
3393
3409
  }
3394
3410
  },
3395
3411
  {
@@ -3421,6 +3437,56 @@ const SPEC_ELEMENT_STYLES = [
3421
3437
  "color": "var(--iox-media-scrim-ink)"
3422
3438
  }
3423
3439
  },
3440
+ {
3441
+ "id": "calendar",
3442
+ "label": "Calendar",
3443
+ "group": "Forms",
3444
+ "appliesTo": [],
3445
+ "base": {
3446
+ "backgroundColor": "var(--iox-surface)",
3447
+ "color": "var(--iox-text)",
3448
+ "borderRadius": "var(--iox-dialog-radius)",
3449
+ "boxShadow": "var(--iox-dialog-shadow)",
3450
+ "fontFamily": "var(--iox-font-body)"
3451
+ }
3452
+ },
3453
+ {
3454
+ "id": "calendar-day",
3455
+ "label": "Calendar day",
3456
+ "group": "Forms",
3457
+ "appliesTo": [],
3458
+ "base": {
3459
+ "backgroundColor": "transparent",
3460
+ "color": "var(--iox-text)",
3461
+ "borderStyle": "solid",
3462
+ "borderWidth": "var(--iox-border-width)",
3463
+ "borderColor": "transparent",
3464
+ "borderRadius": "var(--iox-radius-pill)",
3465
+ "fontFamily": "var(--iox-font-body)",
3466
+ "fontSize": "var(--iox-size-body)",
3467
+ "fontVariantNumeric": "tabular-nums",
3468
+ "transitionDuration": "var(--iox-dur-fast)",
3469
+ "transitionTimingFunction": "var(--iox-ease-standard)"
3470
+ },
3471
+ "hover": {
3472
+ "backgroundColor": "var(--iox-surface-2)"
3473
+ },
3474
+ "current": {
3475
+ "borderColor": "var(--iox-line-strong)"
3476
+ },
3477
+ "selected": {
3478
+ "backgroundColor": "var(--iox-accent-text)",
3479
+ "color": "var(--iox-bg)",
3480
+ "borderColor": "var(--iox-accent-text)"
3481
+ },
3482
+ "focus": {
3483
+ "boxShadow": "var(--iox-focus-ring)"
3484
+ },
3485
+ "disabled": {
3486
+ "color": "var(--iox-text-muted)",
3487
+ "opacity": "0.4"
3488
+ }
3489
+ },
3424
3490
  {
3425
3491
  "id": "notice-success",
3426
3492
  "label": "Success message",
@@ -3680,6 +3746,112 @@ const SPEC_FIELD_CLASS_BASELINE = {
3680
3746
  },
3681
3747
  ".iox-es-field .iox-field__control--switch:checked": {
3682
3748
  "background": "var(--iox-accent-text)"
3749
+ },
3750
+ ".iox-es-field .iox-field__chip": {
3751
+ "background-color": "transparent",
3752
+ "color": "var(--iox-text)",
3753
+ "border-style": "solid",
3754
+ "border-width": "var(--iox-border-width)",
3755
+ "border-color": "var(--iox-chip-border)",
3756
+ "border-radius": "var(--iox-badge-radius)",
3757
+ "padding": "var(--iox-badge-pad)",
3758
+ "font-family": "var(--iox-font-label)",
3759
+ "font-size": "var(--iox-badge-size)",
3760
+ "font-weight": "var(--iox-weight-label)",
3761
+ "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)"
3762
+ },
3763
+ ".iox-es-field .iox-field__chip:active:not(:has(:disabled))": {
3764
+ "transform": "scale(var(--iox-press-scale))"
3765
+ },
3766
+ ".iox-es-field .iox-field__chip:hover:not(:has(:disabled))": {
3767
+ "border-color": "var(--iox-text)"
3768
+ },
3769
+ ".iox-es-field .iox-field__chip:has(:checked)": {
3770
+ "background-color": "var(--iox-accent-text)",
3771
+ "color": "var(--iox-bg)",
3772
+ "border-color": "var(--iox-accent-text)"
3773
+ },
3774
+ ".iox-es-field .iox-field__chip:has(:focus-visible)": {
3775
+ "box-shadow": "var(--iox-focus-ring)",
3776
+ "outline": "2px solid transparent",
3777
+ "outline-offset": "2px"
3778
+ },
3779
+ ".iox-es-field .iox-field__chip:has(:disabled)": {
3780
+ "opacity": "0.55"
3781
+ },
3782
+ ".iox-es-field .iox-field__date-value[data-iox-empty]": {
3783
+ "color": "var(--iox-text-muted)"
3784
+ },
3785
+ ".iox-es-field .iox-field__date-icon": {
3786
+ "color": "var(--iox-text-muted)"
3787
+ },
3788
+ ".iox-es-field .iox-field__control--date[aria-expanded='true']": {
3789
+ "border-color": "var(--iox-accent-text)",
3790
+ "box-shadow": "var(--iox-field-focus)"
3791
+ },
3792
+ ".iox-es-field .iox-cal": {
3793
+ "background-color": "var(--iox-surface)",
3794
+ "color": "var(--iox-text)",
3795
+ "border-radius": "var(--iox-dialog-radius)",
3796
+ "box-shadow": "var(--iox-dialog-shadow), 0 0 0 var(--iox-border-width) var(--iox-line)",
3797
+ "font-family": "var(--iox-font-body)"
3798
+ },
3799
+ ".iox-es-field .iox-cal .iox-cal__title": {
3800
+ "font-family": "var(--iox-font-display)",
3801
+ "font-weight": "var(--iox-weight-heading)",
3802
+ "color": "var(--iox-text)"
3803
+ },
3804
+ ".iox-es-field .iox-cal .iox-cal__weekday": {
3805
+ "font-family": "var(--iox-font-label)",
3806
+ "font-size": "var(--iox-size-label)",
3807
+ "font-weight": "var(--iox-weight-label)",
3808
+ "color": "var(--iox-text-muted)"
3809
+ },
3810
+ ".iox-es-field .iox-cal .iox-cal__grab": {
3811
+ "background": "var(--iox-line-strong)"
3812
+ },
3813
+ ".iox-es-field .iox-cal .iox-cal__nav button:hover:not(:disabled)": {
3814
+ "background-color": "var(--iox-surface-2)"
3815
+ },
3816
+ ".iox-es-field .iox-cal .iox-cal__nav button:focus-visible": {
3817
+ "box-shadow": "var(--iox-focus-ring)",
3818
+ "outline": "2px solid transparent",
3819
+ "outline-offset": "2px"
3820
+ },
3821
+ ".iox-es-field .iox-cal .iox-cal__day": {
3822
+ "background-color": "transparent",
3823
+ "color": "var(--iox-text)",
3824
+ "border-style": "solid",
3825
+ "border-width": "var(--iox-border-width)",
3826
+ "border-color": "transparent",
3827
+ "border-radius": "var(--iox-radius-pill)",
3828
+ "font-family": "var(--iox-font-body)",
3829
+ "font-size": "var(--iox-size-body)",
3830
+ "font-variant-numeric": "tabular-nums",
3831
+ "transition": "background-color var(--iox-dur-fast) var(--iox-ease-standard), color var(--iox-dur-fast) var(--iox-ease-standard), border-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)"
3832
+ },
3833
+ ".iox-es-field .iox-cal .iox-cal__day:active:not([aria-disabled='true'])": {
3834
+ "transform": "scale(var(--iox-press-scale))"
3835
+ },
3836
+ ".iox-es-field .iox-cal .iox-cal__day:hover:not([aria-disabled='true'])": {
3837
+ "background-color": "var(--iox-surface-2)"
3838
+ },
3839
+ ".iox-es-field .iox-cal .iox-cal__day[aria-current='date']": {
3840
+ "border-color": "var(--iox-line-strong)"
3841
+ },
3842
+ ".iox-es-field .iox-cal .iox-cal__cell[aria-selected='true'] > .iox-cal__day": {
3843
+ "background-color": "var(--iox-accent-text)",
3844
+ "color": "var(--iox-bg)",
3845
+ "border-color": "var(--iox-accent-text)"
3846
+ },
3847
+ ".iox-es-field .iox-cal .iox-cal__day[aria-disabled='true']": {
3848
+ "color": "var(--iox-text-muted)",
3849
+ "opacity": "0.4"
3850
+ },
3851
+ ".iox-es-field .iox-cal .iox-cal__day:focus-visible": {
3852
+ "box-shadow": "var(--iox-focus-ring)",
3853
+ "outline": "2px solid transparent",
3854
+ "outline-offset": "2px"
3683
3855
  }
3684
3856
  };
3685
3857
  const SPEC_INK_SCOPES = [
@@ -3924,6 +4096,42 @@ const SPEC_CONTRAST_AUDIT = {
3924
4096
  "on": "var(--iox-surface)",
3925
4097
  "min": 3
3926
4098
  },
4099
+ {
4100
+ "part": "calendar text",
4101
+ "fg": "var(--iox-text)",
4102
+ "on": "var(--iox-surface)",
4103
+ "min": 4.5
4104
+ },
4105
+ {
4106
+ "part": "calendar weekday",
4107
+ "fg": "var(--iox-text-muted)",
4108
+ "on": "var(--iox-surface)",
4109
+ "min": 4.5
4110
+ },
4111
+ {
4112
+ "part": "calendar today ring",
4113
+ "fg": "var(--iox-line-strong)",
4114
+ "on": "var(--iox-surface)",
4115
+ "min": 3
4116
+ },
4117
+ {
4118
+ "part": "calendar chosen day",
4119
+ "fg": "var(--iox-accent-text)",
4120
+ "on": "var(--iox-surface)",
4121
+ "min": 3
4122
+ },
4123
+ {
4124
+ "part": "calendar chosen day number",
4125
+ "fg": "var(--iox-bg)",
4126
+ "on": "var(--iox-accent-text)",
4127
+ "min": 4.5
4128
+ },
4129
+ {
4130
+ "part": "calendar day hover",
4131
+ "fg": "var(--iox-text)",
4132
+ "on": "var(--iox-surface-2)",
4133
+ "min": 4.5
4134
+ },
3927
4135
  {
3928
4136
  "part": "checkbox · radio checked",
3929
4137
  "fg": [
@@ -17007,6 +17215,8 @@ function auditDesignContrast(rows, mode) {
17007
17215
  ...(e.current ? [['current', { ...ownStyle(e), ...e.current }]] : []),
17008
17216
  // `on` (CC4a): the active tab, on every ground it can sit on.
17009
17217
  ...(e.on ? [['on', { ...ownStyle(e), ...e.on }]] : []),
17218
+ // `selected` (premium N1): a chosen chip — its ink on its fill, its fill as its mark.
17219
+ ...(e.selected ? [['selected', { ...ownStyle(e), ...e.selected }]] : []),
17010
17220
  ];
17011
17221
  const glyph = e.group === GLYPH_GROUP;
17012
17222
  for (const [state, s] of states) {
@@ -17023,6 +17233,10 @@ function auditDesignContrast(rows, mode) {
17023
17233
  else if (on?.['backgroundColor'])
17024
17234
  for (const f of fill)
17025
17235
  check(e.id, 'on mark', f, bgs, WCAG_AA_UI);
17236
+ // A chosen chip's mark is its fill (its border is the same colour) — the contract's audit, 1:1.
17237
+ if (state === 'selected' && e.selected?.['backgroundColor'])
17238
+ for (const f of fill)
17239
+ check(e.id, 'selected mark', f, bgs, WCAG_AA_UI);
17026
17240
  // What a filled element HOLDS (inkScopes): a button's or a badge's icon reads its ink.
17027
17241
  if (state === 'base' && INK_SCOPES.some(sc => sc.styles.includes(e.id))) {
17028
17242
  check(e.id, 'icon', parseCssColour(resolveIn(inkScoped(values, e.id), iconColour), ink), under, WCAG_AA_UI);