@aurodesignsystem-dev/auro-formkit 0.0.0-pr1600.2 → 0.0.0-pr1602.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 (64) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +110 -4
  7. package/components/combobox/demo/getting-started.md +49 -0
  8. package/components/combobox/demo/getting-started.min.js +129 -4
  9. package/components/combobox/demo/index.min.js +110 -4
  10. package/components/combobox/dist/auro-combobox.d.ts +22 -0
  11. package/components/combobox/dist/index.js +94 -4
  12. package/components/combobox/dist/registered.js +94 -4
  13. package/components/counter/demo/api.md +2 -0
  14. package/components/counter/demo/customize.min.js +322 -92
  15. package/components/counter/demo/getting-started.html +3 -1
  16. package/components/counter/demo/getting-started.md +49 -0
  17. package/components/counter/demo/getting-started.min.js +8766 -0
  18. package/components/counter/demo/index.min.js +322 -92
  19. package/components/counter/dist/auro-counter-group.d.ts +6 -12
  20. package/components/counter/dist/auro-counter.d.ts +6 -0
  21. package/components/counter/dist/counterGroupKeyboardStrategy.d.ts +1 -0
  22. package/components/counter/dist/index.js +322 -92
  23. package/components/counter/dist/registered.js +322 -92
  24. package/components/datepicker/demo/customize.min.js +3 -3
  25. package/components/datepicker/demo/getting-started.html +3 -1
  26. package/components/datepicker/demo/getting-started.md +39 -0
  27. package/components/datepicker/demo/getting-started.min.js +37626 -0
  28. package/components/datepicker/demo/index.min.js +3 -3
  29. package/components/datepicker/dist/index.js +3 -3
  30. package/components/datepicker/dist/registered.js +3 -3
  31. package/components/dropdown/demo/customize.min.js +1 -1
  32. package/components/dropdown/demo/getting-started.min.js +2 -2
  33. package/components/dropdown/demo/index.min.js +1 -1
  34. package/components/dropdown/dist/index.js +1 -1
  35. package/components/dropdown/dist/registered.js +1 -1
  36. package/components/form/demo/customize.min.js +446 -105
  37. package/components/form/demo/getting-started.min.js +446 -105
  38. package/components/form/demo/index.min.js +446 -105
  39. package/components/form/demo/registerDemoDeps.min.js +440 -104
  40. package/components/form/dist/index.js +6 -1
  41. package/components/form/dist/registered.js +6 -1
  42. package/components/input/demo/customize.md +0 -37
  43. package/components/input/demo/customize.min.js +1 -10
  44. package/components/input/demo/getting-started.md +33 -0
  45. package/components/input/demo/getting-started.min.js +21 -1
  46. package/components/input/demo/index.min.js +1 -1
  47. package/components/input/dist/index.js +1 -1
  48. package/components/input/dist/registered.js +1 -1
  49. package/components/menu/demo/index.min.js +16 -0
  50. package/components/menu/dist/index.js +16 -0
  51. package/components/menu/dist/registered.js +16 -0
  52. package/components/radio/demo/customize.min.js +1 -1
  53. package/components/radio/demo/getting-started.min.js +1 -1
  54. package/components/radio/demo/index.min.js +1 -1
  55. package/components/radio/dist/index.js +1 -1
  56. package/components/radio/dist/registered.js +1 -1
  57. package/components/select/demo/customize.min.js +18 -2
  58. package/components/select/demo/getting-started.md +49 -0
  59. package/components/select/demo/getting-started.min.js +40 -3
  60. package/components/select/demo/index.min.js +18 -2
  61. package/components/select/dist/index.js +2 -2
  62. package/components/select/dist/registered.js +2 -2
  63. package/custom-elements.json +41 -26
  64. package/package.json +1 -1
@@ -839,9 +839,9 @@ var plusIcon = {"role":"img","color":"currentColor","title":"","desc":"","width"
839
839
 
840
840
  var minusIcon = {"role":"img","color":"currentColor","title":"","desc":"","width":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","height":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","xmlns":"http://www.w3.org/2000/svg","xmlns_xlink":"http://www.w3.org/1999/xlink","viewBox":"0 0 24 24","path":"/icons","style":"ico_squareLarge","type":"icon","name":"minus-lg","category":"interface","deprecated":true,"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" class=\"ico_squareLarge\" data-deprecated=\"true\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><path d=\"M5.75 12.75h12.5a.75.75 0 1 0 0-1.5H5.75a.75.75 0 1 0 0 1.5\"/></svg>"};
841
841
 
842
- var colorCss$6 = css`.label{color:var(--ds-auro-counter-label-text-color)}[name=description]::slotted(*){color:var(--ds-auro-counter-description-text-color)}.controlIcon{color:var(--ds-auro-counter-icon-color)}.quantityWrapper{background-color:var(--ds-auro-counter-control-background-color);color:var(--ds-auro-counter-quantity-text-color)}:host::part(counterControl):focus-visible{outline-color:var(--ds-auro-counter-control-border-color)}[disabled],:host([disabled]){--ds-auro-counter-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-description-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}[onDark],:host([onDark]),[appearance=inverse],:host([appearance=inverse]){--ds-auro-counter-description-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-counter-control-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-counter-control-background-color: var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-counter-icon-color: var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff)}[onDark][disabled],:host([onDark][disabled]),[appearance=inverse][disabled],:host([appearance=inverse][disabled]){--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-counter-icon-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}`;
842
+ var colorCss$6 = css`.label{color:var(--ds-auro-counter-label-text-color)}[name=description]::slotted(*){color:var(--ds-auro-counter-description-text-color)}.controlIcon{color:var(--ds-auro-counter-icon-color)}.quantityWrapper{background-color:var(--ds-auro-counter-control-background-color);color:var(--ds-auro-counter-quantity-text-color)}:host::part(counterControl):focus-within{outline-color:var(--ds-auro-counter-control-border-color)}[disabled],:host([disabled]){--ds-auro-counter-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-description-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}[onDark],:host([onDark]),[appearance=inverse],:host([appearance=inverse]){--ds-auro-counter-description-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-counter-control-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-counter-control-background-color: var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-counter-icon-color: var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff)}[onDark][disabled],:host([onDark][disabled]),[appearance=inverse][disabled],:host([appearance=inverse][disabled]){--ds-auro-counter-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-counter-quantity-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-counter-icon-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}`;
843
843
 
844
- var styleCss$5 = css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}.counter{display:flex;align-items:center;justify-content:space-between;column-gap:var(--ds-size-150, 0.75rem)}.content{display:flex;flex-flow:column}[name=description]::slotted(*){display:block}.quantityWrapper{width:var(--ds-size-400, 2rem);height:calc(var(--ds-size-25, 0.125rem) + var(--ds-size-400, 2rem));align-content:center;cursor:default;text-align:center}:host{position:relative;text-align:left}:host::part(counterControl){display:flex;border-radius:var(--ds-size-500, 2.5rem);touch-action:manipulation}:host::part(counterControl):focus-visible{outline-offset:0;outline-style:solid;outline-width:var(--ds-size-25, 0.125rem)}:host::part(controlMinus){--ds-auro-counter-control-border-radius: var(--ds-size-500, 2.5rem) 0 0 var(--ds-size-500, 2.5rem);--ds-auro-counter-control-padding: var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem) var(--ds-size-100, 0.5rem)}:host::part(controlPlus){--ds-auro-counter-control-border-radius: 0 var(--ds-size-500, 2.5rem) var(--ds-size-500, 2.5rem) 0;--ds-auro-counter-control-padding: var(--ds-size-50, 0.25rem) var(--ds-size-100, 0.5rem) var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem)}auro-counter-button{display:flex}`;
844
+ var styleCss$5 = css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}.counter{display:flex;align-items:center;justify-content:space-between;column-gap:var(--ds-size-150, 0.75rem)}.content{display:flex;flex-flow:column}[name=description]::slotted(*){display:block}.quantityWrapper{width:var(--ds-size-400, 2rem);height:calc(var(--ds-size-25, 0.125rem) + var(--ds-size-400, 2rem));align-content:center;cursor:default;text-align:center}:host{position:relative;text-align:left}:host::part(counterControl){display:flex;border-radius:var(--ds-size-500, 2.5rem);touch-action:manipulation}:host::part(counterControl):focus-within{outline-offset:0;outline-style:solid;outline-width:var(--ds-size-25, 0.125rem)}:host::part(controlMinus){--ds-auro-counter-control-border-radius: var(--ds-size-500, 2.5rem) 0 0 var(--ds-size-500, 2.5rem);--ds-auro-counter-control-padding: var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem) var(--ds-size-100, 0.5rem)}:host::part(controlPlus){--ds-auro-counter-control-border-radius: 0 var(--ds-size-500, 2.5rem) var(--ds-size-500, 2.5rem) 0;--ds-auro-counter-control-padding: var(--ds-size-50, 0.25rem) var(--ds-size-100, 0.5rem) var(--ds-size-50, 0.25rem) var(--ds-size-50, 0.25rem)}auro-counter-button{display:flex}`;
845
845
 
846
846
  var colorCss$5 = css`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]),:host([appearance=inverse]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]),:host([appearance=inverse][error]){--ds-auro-helptext-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
847
847
 
@@ -1077,7 +1077,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
1077
1077
  }
1078
1078
  };
1079
1079
 
1080
- var formkitVersion$1 = '202609010052';
1080
+ var formkitVersion$1 = '202609021726';
1081
1081
 
1082
1082
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1083
1083
  // See LICENSE in the project root for license information.
@@ -1435,6 +1435,17 @@ class AuroCounter extends LitElement {
1435
1435
  this.validation.validate(this, force);
1436
1436
  }
1437
1437
 
1438
+ /**
1439
+ * Resets the counter to its default state, clearing validity/touched state and returning
1440
+ * the value to `min` — matching the clear-on-reset behavior of the other Auro form elements.
1441
+ * @returns {void}
1442
+ */
1443
+ reset() {
1444
+ // validation.reset() clears validity/touched and sets value to undefined; initValue() then restores the min floor.
1445
+ this.validation.reset(this);
1446
+ this.initValue();
1447
+ }
1448
+
1438
1449
  firstUpdated() {
1439
1450
  this.initValue();
1440
1451
  this.setTagAttribute("auro-counter");
@@ -4405,7 +4416,7 @@ class AuroFloatingUI {
4405
4416
  }
4406
4417
 
4407
4418
  // Selectors for focusable elements
4408
- const FOCUSABLE_SELECTORS = [
4419
+ const FOCUSABLE_SELECTORS$1 = [
4409
4420
  "a[href]",
4410
4421
  "button:not([disabled])",
4411
4422
  "textarea:not([disabled])",
@@ -4419,7 +4430,7 @@ const FOCUSABLE_SELECTORS = [
4419
4430
  ];
4420
4431
 
4421
4432
  // List of custom components that are known to be focusable
4422
- const FOCUSABLE_COMPONENTS = [
4433
+ const FOCUSABLE_COMPONENTS$1 = [
4423
4434
  "auro-checkbox",
4424
4435
  "auro-radio",
4425
4436
  "auro-dropdown",
@@ -4441,12 +4452,12 @@ const FOCUSABLE_COMPONENTS = [
4441
4452
  * @param {HTMLElement} element The element to check for focusability.
4442
4453
  * @returns {boolean} True if the element is a focusable custom component, false otherwise.
4443
4454
  */
4444
- function isFocusableComponent(element) {
4455
+ function isFocusableComponent$1(element) {
4445
4456
  const componentName = element.tagName.toLowerCase();
4446
4457
 
4447
4458
  // Guard Clause: Element is a focusable component
4448
4459
  if (
4449
- !FOCUSABLE_COMPONENTS.some(
4460
+ !FOCUSABLE_COMPONENTS$1.some(
4450
4461
  (name) => element.hasAttribute(name) || componentName === name,
4451
4462
  )
4452
4463
  )
@@ -4470,7 +4481,7 @@ function isFocusableComponent(element) {
4470
4481
  * @param {HTMLElement} element The element whose tabindex to read.
4471
4482
  * @returns {?number} The numeric tabindex or null if missing/invalid.
4472
4483
  */
4473
- function getNumericTabIndex(element) {
4484
+ function getNumericTabIndex$1(element) {
4474
4485
  const raw = element.getAttribute("tabindex");
4475
4486
  if (raw == null) return null;
4476
4487
 
@@ -4486,7 +4497,7 @@ function getNumericTabIndex(element) {
4486
4497
  * @param {HTMLElement} container The container to search within
4487
4498
  * @returns {Array<HTMLElement>} An array of focusable elements within the container.
4488
4499
  */
4489
- function getFocusableElements(container) {
4500
+ function getFocusableElements$1(container) {
4490
4501
  // Get elements in DOM order by walking the tree
4491
4502
  const orderedFocusableElements = [];
4492
4503
 
@@ -4495,7 +4506,7 @@ function getFocusableElements(container) {
4495
4506
  // Check if current element is focusable
4496
4507
  if (root.nodeType === Node.ELEMENT_NODE) {
4497
4508
  // Check if this is a custom component that is focusable
4498
- const isComponentFocusable = isFocusableComponent(root);
4509
+ const isComponentFocusable = isFocusableComponent$1(root);
4499
4510
 
4500
4511
  if (isComponentFocusable) {
4501
4512
  // Add the component itself as a focusable element and don't traverse its shadow DOM
@@ -4504,7 +4515,7 @@ function getFocusableElements(container) {
4504
4515
  }
4505
4516
 
4506
4517
  // Check if the element itself matches any selector
4507
- for (const selector of FOCUSABLE_SELECTORS) {
4518
+ for (const selector of FOCUSABLE_SELECTORS$1) {
4508
4519
  if (root.matches?.(selector)) {
4509
4520
  orderedFocusableElements.push(root);
4510
4521
  break; // Once we know it's focusable, no need to check other selectors
@@ -4558,20 +4569,20 @@ function getFocusableElements(container) {
4558
4569
 
4559
4570
  // First extract elements with valid positive tabindex
4560
4571
  const elementsWithTabindex = uniqueElements.filter((el) => {
4561
- const tabindex = getNumericTabIndex(el);
4572
+ const tabindex = getNumericTabIndex$1(el);
4562
4573
  return tabindex !== null && tabindex > 0;
4563
4574
  });
4564
4575
 
4565
4576
  // Sort these elements by their tabindex value
4566
4577
  elementsWithTabindex.sort((a, b) => {
4567
- const aIndex = getNumericTabIndex(a) ?? 0;
4568
- const bIndex = getNumericTabIndex(b) ?? 0;
4578
+ const aIndex = getNumericTabIndex$1(a) ?? 0;
4579
+ const bIndex = getNumericTabIndex$1(b) ?? 0;
4569
4580
  return aIndex - bIndex;
4570
4581
  });
4571
4582
 
4572
4583
  // Elements without tabindex (preserving their original order)
4573
4584
  const elementsWithoutTabindex = uniqueElements.filter((el) => {
4574
- const tabindex = getNumericTabIndex(el);
4585
+ const tabindex = getNumericTabIndex$1(el);
4575
4586
 
4576
4587
  // Elements without tabindex or with tabindex of 0 stay in DOM order
4577
4588
  return tabindex === null || tabindex === 0;
@@ -5366,7 +5377,7 @@ class AuroHelpText extends LitElement {
5366
5377
  }
5367
5378
  }
5368
5379
 
5369
- var formkitVersion = '202609010052';
5380
+ var formkitVersion = '202609021726';
5370
5381
 
5371
5382
  /**
5372
5383
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -5666,7 +5677,7 @@ class AuroDropdown extends AuroElement$1 {
5666
5677
  */
5667
5678
  focus() {
5668
5679
  if (this.isPopoverVisible && this.bibContent) {
5669
- const focusables = getFocusableElements(this.bibContent);
5680
+ const focusables = getFocusableElements$1(this.bibContent);
5670
5681
  if (focusables.length > 0) {
5671
5682
  focusables[0].focus();
5672
5683
  }
@@ -5698,7 +5709,7 @@ class AuroDropdown extends AuroElement$1 {
5698
5709
  // wrappers like <div> containing a <button>). If none found, try
5699
5710
  // focusing the element directly (works for custom elements like
5700
5711
  // auro-input that have delegatesFocus or a custom focus() method).
5701
- const descendants = getFocusableElements(el);
5712
+ const descendants = getFocusableElements$1(el);
5702
5713
  if (descendants.length > 0) {
5703
5714
  descendants[0].focus();
5704
5715
  return;
@@ -5710,7 +5721,7 @@ class AuroDropdown extends AuroElement$1 {
5710
5721
  }
5711
5722
  }
5712
5723
  // Fallback: try DOM children (non-slotted content)
5713
- const focusables = getFocusableElements(this.trigger);
5724
+ const focusables = getFocusableElements$1(this.trigger);
5714
5725
  if (focusables.length > 0) {
5715
5726
  focusables[0].focus();
5716
5727
  }
@@ -6389,7 +6400,7 @@ class AuroDropdown extends AuroElement$1 {
6389
6400
  }
6390
6401
 
6391
6402
  // Collect focusable elements from the bib content.
6392
- const focusables = getFocusableElements(this.bibContent);
6403
+ const focusables = getFocusableElements$1(this.bibContent);
6393
6404
 
6394
6405
  // Fallback: try from slotted content directly
6395
6406
  if (!focusables.length) {
@@ -6398,7 +6409,7 @@ class AuroDropdown extends AuroElement$1 {
6398
6409
 
6399
6410
  for (const node of assignedNodes) {
6400
6411
  if (node.nodeType === Node.ELEMENT_NODE) {
6401
- focusables.push(...getFocusableElements(node));
6412
+ focusables.push(...getFocusableElements$1(node));
6402
6413
  }
6403
6414
  }
6404
6415
  }
@@ -6458,7 +6469,7 @@ class AuroDropdown extends AuroElement$1 {
6458
6469
 
6459
6470
  // Move initial focus into the bib content, matching FocusTrap behavior
6460
6471
  requestAnimationFrame(() => {
6461
- const focusables = getFocusableElements(this.bibContent);
6472
+ const focusables = getFocusableElements$1(this.bibContent);
6462
6473
  if (focusables.length) {
6463
6474
  focusables[0].focus();
6464
6475
  }
@@ -6471,7 +6482,7 @@ class AuroDropdown extends AuroElement$1 {
6471
6482
  // popover asynchronously — a synchronous focus() would target
6472
6483
  // zero-dimension elements and be silently ignored.
6473
6484
  requestAnimationFrame(() => {
6474
- const focusables = getFocusableElements(this.bibContent);
6485
+ const focusables = getFocusableElements$1(this.bibContent);
6475
6486
  if (focusables.length) {
6476
6487
  focusables[0].focus();
6477
6488
  }
@@ -6689,7 +6700,7 @@ class AuroDropdown extends AuroElement$1 {
6689
6700
  if (triggerContentNodes) {
6690
6701
 
6691
6702
  // See if any of them are focusable elements
6692
- this.triggerContentFocusable = triggerContentNodes.some((node) => getFocusableElements(node).length > 0);
6703
+ this.triggerContentFocusable = triggerContentNodes.some((node) => getFocusableElements$1(node).length > 0);
6693
6704
 
6694
6705
  // If any of them are focusable elements
6695
6706
  if (this.triggerContentFocusable) {
@@ -7451,9 +7462,241 @@ class AuroElement extends LitElement {
7451
7462
  }
7452
7463
  }
7453
7464
 
7465
+ // Selectors for focusable elements
7466
+ const FOCUSABLE_SELECTORS = [
7467
+ "a[href]",
7468
+ "button:not([disabled])",
7469
+ "textarea:not([disabled])",
7470
+ "input:not([disabled])",
7471
+ "select:not([disabled])",
7472
+ '[role="tab"]:not([disabled])',
7473
+ '[role="link"]:not([disabled])',
7474
+ '[role="button"]:not([disabled])',
7475
+ '[tabindex]:not([tabindex="-1"])',
7476
+ '[contenteditable]:not([contenteditable="false"])',
7477
+ ];
7478
+
7479
+ // List of custom components that are known to be focusable
7480
+ const FOCUSABLE_COMPONENTS = [
7481
+ "auro-checkbox",
7482
+ "auro-radio",
7483
+ "auro-dropdown",
7484
+ "auro-button",
7485
+ "auro-combobox",
7486
+ "auro-input",
7487
+ "auro-counter",
7488
+ // 'auro-menu', // Auro menu is not focusable by default, it uses a different interaction model
7489
+ "auro-select",
7490
+ "auro-datepicker",
7491
+ "auro-hyperlink",
7492
+ "auro-accordion",
7493
+ ];
7494
+
7495
+ /**
7496
+ * Determines if a given element is a custom focusable component.
7497
+ * Returns true if the element matches a known focusable component and is not disabled.
7498
+ *
7499
+ * @param {HTMLElement} element The element to check for focusability.
7500
+ * @returns {boolean} True if the element is a focusable custom component, false otherwise.
7501
+ */
7502
+ function isFocusableComponent(element) {
7503
+ const componentName = element.tagName.toLowerCase();
7504
+
7505
+ // Guard Clause: Element is a focusable component
7506
+ if (
7507
+ !FOCUSABLE_COMPONENTS.some(
7508
+ (name) => element.hasAttribute(name) || componentName === name,
7509
+ )
7510
+ )
7511
+ return false;
7512
+
7513
+ // Guard Clause: Element is not disabled
7514
+ if (element.hasAttribute("disabled")) return false;
7515
+
7516
+ // Guard Clause: The element is a hyperlink and has no href attribute
7517
+ if (componentName.match("hyperlink") && !element.hasAttribute("href"))
7518
+ return false;
7519
+
7520
+ // If all guard clauses pass, the element is a focusable component
7521
+ return true;
7522
+ }
7523
+
7524
+ /**
7525
+ * Safely get a numeric tabindex for an element.
7526
+ * Returns a number if the tabindex is a valid integer, otherwise null.
7527
+ *
7528
+ * @param {HTMLElement} element The element whose tabindex to read.
7529
+ * @returns {?number} The numeric tabindex or null if missing/invalid.
7530
+ */
7531
+ function getNumericTabIndex(element) {
7532
+ const raw = element.getAttribute("tabindex");
7533
+ if (raw == null) return null;
7534
+
7535
+ const value = Number.parseInt(raw, 10);
7536
+ return Number.isNaN(value) ? null : value;
7537
+ }
7538
+
7539
+ /**
7540
+ * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
7541
+ * Returns a unique, ordered array of elements that can receive focus.
7542
+ * Also sorts elements with tabindex first, preserving their order.
7543
+ *
7544
+ * @param {HTMLElement} container The container to search within
7545
+ * @returns {Array<HTMLElement>} An array of focusable elements within the container.
7546
+ */
7547
+ function getFocusableElements(container) {
7548
+ // Get elements in DOM order by walking the tree
7549
+ const orderedFocusableElements = [];
7550
+
7551
+ // Define a recursive function to collect focusable elements in DOM order
7552
+ const collectFocusableElements = (root) => {
7553
+ // Check if current element is focusable
7554
+ if (root.nodeType === Node.ELEMENT_NODE) {
7555
+ // Check if this is a custom component that is focusable
7556
+ const isComponentFocusable = isFocusableComponent(root);
7557
+
7558
+ if (isComponentFocusable) {
7559
+ // Add the component itself as a focusable element and don't traverse its shadow DOM
7560
+ orderedFocusableElements.push(root);
7561
+ return; // Skip traversing inside this component
7562
+ }
7563
+
7564
+ // Check if the element itself matches any selector
7565
+ for (const selector of FOCUSABLE_SELECTORS) {
7566
+ if (root.matches?.(selector)) {
7567
+ orderedFocusableElements.push(root);
7568
+ break; // Once we know it's focusable, no need to check other selectors
7569
+ }
7570
+ }
7571
+
7572
+ // Process shadow DOM only for non-Auro components
7573
+ if (root.shadowRoot) {
7574
+ // Process shadow DOM children in order
7575
+ if (root.shadowRoot.children) {
7576
+ Array.from(root.shadowRoot.children).forEach((child) => {
7577
+ collectFocusableElements(child);
7578
+ });
7579
+ }
7580
+ }
7581
+
7582
+ // Process slots and their assigned nodes in order
7583
+ if (root.tagName === "SLOT") {
7584
+ const assignedNodes = root.assignedNodes({ flatten: true });
7585
+ for (const node of assignedNodes) {
7586
+ collectFocusableElements(node);
7587
+ }
7588
+ } else {
7589
+ // Process light DOM children in order
7590
+ if (root.children) {
7591
+ Array.from(root.children).forEach((child) => {
7592
+ collectFocusableElements(child);
7593
+ });
7594
+ }
7595
+ }
7596
+ }
7597
+ };
7598
+
7599
+ // Start the traversal from the container
7600
+ collectFocusableElements(container);
7601
+
7602
+ // Remove duplicates that might have been collected through different paths
7603
+ // while preserving order
7604
+ const uniqueElements = [];
7605
+ const seen = new Set();
7606
+
7607
+ for (const element of orderedFocusableElements) {
7608
+ if (!seen.has(element)) {
7609
+ seen.add(element);
7610
+ uniqueElements.push(element);
7611
+ }
7612
+ }
7613
+
7614
+ // Move tab-indexed elements to the front while preserving their order
7615
+ // This ensures that elements with tabindex are prioritized in the focus order
7616
+
7617
+ // First extract elements with valid positive tabindex
7618
+ const elementsWithTabindex = uniqueElements.filter((el) => {
7619
+ const tabindex = getNumericTabIndex(el);
7620
+ return tabindex !== null && tabindex > 0;
7621
+ });
7622
+
7623
+ // Sort these elements by their tabindex value
7624
+ elementsWithTabindex.sort((a, b) => {
7625
+ const aIndex = getNumericTabIndex(a) ?? 0;
7626
+ const bIndex = getNumericTabIndex(b) ?? 0;
7627
+ return aIndex - bIndex;
7628
+ });
7629
+
7630
+ // Elements without tabindex (preserving their original order)
7631
+ const elementsWithoutTabindex = uniqueElements.filter((el) => {
7632
+ const tabindex = getNumericTabIndex(el);
7633
+
7634
+ // Elements without tabindex or with tabindex of 0 stay in DOM order
7635
+ return tabindex === null || tabindex === 0;
7636
+ });
7637
+
7638
+ // Combine both arrays with tabindex elements first
7639
+ const tabIndexedUniqueElements = [
7640
+ ...elementsWithTabindex,
7641
+ ...elementsWithoutTabindex,
7642
+ ];
7643
+
7644
+ return tabIndexedUniqueElements;
7645
+ }
7646
+
7454
7647
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
7455
7648
  // See LICENSE in the project root for license information.
7456
7649
 
7650
+
7651
+ /**
7652
+ * Whether `el` is currently visible enough to receive focus. Prefers the
7653
+ * browser's `checkVisibility()`; otherwise combines a display/visibility check
7654
+ * with an ancestor-hidden probe that keeps position:fixed elements visible.
7655
+ * @param {Element} el - The element to test.
7656
+ * @returns {boolean}
7657
+ */
7658
+ function isVisibleForFocus(el) {
7659
+ if (typeof el.checkVisibility === 'function') {
7660
+ return el.checkVisibility();
7661
+ }
7662
+ const style = el.ownerDocument.defaultView.getComputedStyle(el);
7663
+ if (style.display === 'none' || style.visibility === 'hidden') {
7664
+ return false;
7665
+ }
7666
+ return el.offsetParent !== null || style.position === 'fixed';
7667
+ }
7668
+
7669
+ /**
7670
+ * Return the tab stop that comes before the counter-group in page tab order,
7671
+ * skipping any hidden entries the walker doesn't filter itself. The group host
7672
+ * itself is not a tab stop; its focusables (the internal dropdown and the
7673
+ * counters) are, so anchor the search on the group's earliest focusable.
7674
+ * @param {Element} component - The auro-counter-group host element.
7675
+ * @returns {Element|null}
7676
+ */
7677
+ function getPreviousTabStop(component) {
7678
+ const tabStops = getFocusableElements(component.ownerDocument.body);
7679
+ const counters = component.counters || [];
7680
+ const owned = [
7681
+ component,
7682
+ component.dropdown,
7683
+ ...counters
7684
+ ].filter(Boolean);
7685
+ let groupStart = tabStops.length;
7686
+ owned.forEach((node) => {
7687
+ const index = tabStops.indexOf(node);
7688
+ if (index >= 0 && index < groupStart) {
7689
+ groupStart = index;
7690
+ }
7691
+ });
7692
+ for (let index = groupStart - 1; index >= 0; index -= 1) {
7693
+ if (isVisibleForFocus(tabStops[index])) {
7694
+ return tabStops[index];
7695
+ }
7696
+ }
7697
+ return null;
7698
+ }
7699
+
7457
7700
  const counterGroupKeyboardStrategy = {
7458
7701
  Escape(component, evt) {
7459
7702
  if (!component.dropdown || !component.dropdown.isPopoverVisible) {
@@ -7467,6 +7710,48 @@ const counterGroupKeyboardStrategy = {
7467
7710
 
7468
7711
  component.dropdown.hide();
7469
7712
  },
7713
+
7714
+ Tab(component, evt, ctx) {
7715
+ // Forward Tab already exits past the bib content and the focusout handler
7716
+ // closes the bib. Fullscreen relies on the dialog's native focus trapping.
7717
+ if (!ctx.isExpanded || ctx.isModal || !evt.shiftKey) {
7718
+ return;
7719
+ }
7720
+
7721
+ // The trigger precedes the bib content in the flattened tab order, so a
7722
+ // native Shift+Tab off the first counter lands back on the trigger and
7723
+ // leaves the bib open. Only intercept when focus is on the first focusable
7724
+ // in the bib; otherwise let the browser move to the previous counter.
7725
+ // `composedPath()` reports the real event origin through every shadow
7726
+ // boundary, unlike `document.activeElement`, which retargets to the first
7727
+ // slotted counter and cannot tell the counters apart.
7728
+ const focusables = getFocusableElements(component.dropdown.bibContent);
7729
+ if (!focusables.length) {
7730
+ return;
7731
+ }
7732
+
7733
+ const path = evt.composedPath();
7734
+ const activeIndex = focusables.findIndex((el) => path.includes(el));
7735
+ if (activeIndex !== 0) {
7736
+ return;
7737
+ }
7738
+
7739
+ const previousTabStop = getPreviousTabStop(component);
7740
+
7741
+ // Always suppress the native Shift+Tab. Otherwise it fires against the bib
7742
+ // as it is torn down and lands focus on the trigger (which precedes the
7743
+ // first counter), re-opening the exact loop this handler prevents. When
7744
+ // nothing precedes the group, focus falls to the body instead of the
7745
+ // trigger, which reads as exiting the group backward.
7746
+ evt.preventDefault();
7747
+ component.hideBib();
7748
+
7749
+ if (!previousTabStop) {
7750
+ return;
7751
+ }
7752
+
7753
+ doubleRaf(() => previousTabStop.focus());
7754
+ },
7470
7755
  };
7471
7756
 
7472
7757
  /* eslint-disable lit/no-invalid-html, lit/binding-positions, max-lines, no-underscore-dangle, arrow-parens, no-confusing-arrow, curly, dot-location, no-inline-comments, line-comment-position,
@@ -7542,16 +7827,6 @@ class AuroCounterGroup extends AuroElement {
7542
7827
  /** @private */
7543
7828
  this.updateValidity = this.updateValidity.bind(this);
7544
7829
 
7545
- /**
7546
- * Whether the most recent pointerdown began inside this group's composed tree.
7547
- * Used to keep the dropdown open when a counter button disables itself on click.
7548
- * @private
7549
- */
7550
- this.pointerdownInsideGroup = false;
7551
-
7552
- /** @private */
7553
- this.trackPointerdown = this.trackPointerdown.bind(this);
7554
-
7555
7830
  /**
7556
7831
  * Generate unique names for dependency components.
7557
7832
  * @private
@@ -7937,35 +8212,6 @@ class AuroCounterGroup extends AuroElement {
7937
8212
  });
7938
8213
  }
7939
8214
 
7940
- /**
7941
- * Records whether a pointerdown originated inside this group's composed tree.
7942
- * @param {PointerEvent} event - The pointerdown event.
7943
- * @private
7944
- */
7945
- trackPointerdown(event) {
7946
- this.pointerdownInsideGroup = event.composedPath().includes(this);
7947
- }
7948
-
7949
- connectedCallback() {
7950
- super.connectedCallback();
7951
-
7952
- // firstUpdated performs the initial pointerdown registration, but it runs
7953
- // only once per instance and disconnectedCallback removes the listener. On a
7954
- // later reconnect (SPA route change, keyed remount) firstUpdated does not run
7955
- // again, so re-add the document-level listener here. hasUpdated is false
7956
- // during the initial connect — firstUpdated owns that case — and true on any
7957
- // reconnect. remove-before-add keeps it idempotent. (AB#1634231)
7958
- if (this.hasUpdated && this.isDropdown) {
7959
- document.removeEventListener('pointerdown', this.trackPointerdown, true);
7960
- document.addEventListener('pointerdown', this.trackPointerdown, true);
7961
- }
7962
- }
7963
-
7964
- disconnectedCallback() {
7965
- super.disconnectedCallback();
7966
- document.removeEventListener('pointerdown', this.trackPointerdown, true);
7967
- }
7968
-
7969
8215
  /**
7970
8216
  * Hides the dropdown bib if its open.
7971
8217
  * @returns {void}
@@ -8133,6 +8379,19 @@ class AuroCounterGroup extends AuroElement {
8133
8379
  this.validation.validate(this, force);
8134
8380
  }
8135
8381
 
8382
+ /**
8383
+ * Resets the counter group to its initial state by resetting each child counter and clearing validity.
8384
+ * Each child reset dispatches an `input` event, which triggers `updateValue()` to recompute `value`/`total`.
8385
+ * @returns {void}
8386
+ */
8387
+ reset() {
8388
+ if (this.counters) {
8389
+ this.counters.forEach((counter) => counter.reset());
8390
+ }
8391
+
8392
+ this.validation.reset(this);
8393
+ }
8394
+
8136
8395
  updated(changedProperties) {
8137
8396
  if (changedProperties.has("value")) {
8138
8397
  this.validate();
@@ -8163,12 +8422,6 @@ class AuroCounterGroup extends AuroElement {
8163
8422
  if (this.isDropdown) {
8164
8423
  applyKeyboardStrategy$1(this, counterGroupKeyboardStrategy);
8165
8424
 
8166
- // Track where the most recent pointer interaction began so the focusout
8167
- // handler below can tell a counter-button click apart from an outside
8168
- // click. Capture phase + composedPath so clicks inside the bib's nested
8169
- // shadow roots still resolve to this group. (AB#1634231)
8170
- document.addEventListener('pointerdown', this.trackPointerdown, true);
8171
-
8172
8425
  // noHideOnThisFocusLoss=true on the dropdown prevents handleFocusLoss from
8173
8426
  // closing the bib when focus moves out via Tab. Close explicitly via focusout:
8174
8427
  // if relatedTarget is outside the counter-group's light DOM, focus has left.
@@ -8182,29 +8435,6 @@ class AuroCounterGroup extends AuroElement {
8182
8435
  return;
8183
8436
  }
8184
8437
 
8185
- // A null relatedTarget means focus was dropped without landing on a
8186
- // specific element. This fires when a counter's +/- button becomes
8187
- // disabled at an extreme immediately after being clicked: the browser
8188
- // blurs the now-disabled button, closing the bib as an unwanted side
8189
- // effect of using the counters. If that blur was triggered by a pointer
8190
- // interaction that began inside the group, keep the bib open. A genuine
8191
- // outside click also yields a null relatedTarget, but its pointerdown
8192
- // originated outside the group, so we still close. (AB#1634231)
8193
- if (!event.relatedTarget) {
8194
- // Consume the flag: it describes the interaction that just ended, not
8195
- // a lasting state. Resetting here prevents a later non-pointer focus
8196
- // loss (a programmatic blur, an a11y focus trap) with no intervening
8197
- // pointerdown from reading a stale "inside" value and wrongly keeping
8198
- // the bib open. (#1600)
8199
- const pointerdownStartedInside = this.pointerdownInsideGroup;
8200
- this.pointerdownInsideGroup = false;
8201
- if (pointerdownStartedInside) {
8202
- return;
8203
- }
8204
- this.hideBib();
8205
- return;
8206
- }
8207
-
8208
8438
  // Focus moved to a known element outside the group (e.g. Tab to the next field).
8209
8439
  this.hideBib();
8210
8440
  });