@aurodesignsystem-dev/auro-formkit 0.0.0-pr1475.6 → 0.0.0-pr1477.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 (103) hide show
  1. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +0 -7
  2. package/components/bibtemplate/dist/index.js +1 -9
  3. package/components/bibtemplate/dist/registered.js +1 -9
  4. package/components/checkbox/demo/customize.min.js +1 -1
  5. package/components/checkbox/demo/getting-started.min.js +1 -1
  6. package/components/checkbox/demo/index.min.js +1 -1
  7. package/components/checkbox/demo/pages.json +1 -1
  8. package/components/checkbox/dist/index.js +1 -1
  9. package/components/checkbox/dist/registered.js +1 -1
  10. package/components/combobox/demo/customize.min.js +18 -236
  11. package/components/combobox/demo/getting-started.min.js +18 -236
  12. package/components/combobox/demo/index.min.js +18 -236
  13. package/components/combobox/demo/keyboard-behavior.md +68 -8
  14. package/components/combobox/demo/pages.json +1 -1
  15. package/components/combobox/dist/index.js +18 -236
  16. package/components/combobox/dist/registered.js +18 -236
  17. package/components/counter/demo/customize.min.js +15 -233
  18. package/components/counter/demo/index.min.js +15 -233
  19. package/components/counter/demo/keyboard-behavior.md +0 -1
  20. package/components/counter/demo/pages.json +1 -1
  21. package/components/counter/dist/index.js +2 -10
  22. package/components/counter/dist/registered.js +2 -10
  23. package/components/datepicker/demo/accessibility.md +3 -51
  24. package/components/datepicker/demo/api.md +2 -11
  25. package/components/datepicker/demo/customize.html +0 -2
  26. package/components/datepicker/demo/customize.md +8 -72
  27. package/components/datepicker/demo/design.md +1 -3
  28. package/components/datepicker/demo/index.js +1 -5
  29. package/components/datepicker/demo/index.md +2 -83
  30. package/components/datepicker/demo/index.min.js +100 -1567
  31. package/components/datepicker/demo/keyboard-behavior.md +2 -201
  32. package/components/datepicker/demo/pages.json +1 -1
  33. package/components/datepicker/demo/voiceover.md +12 -19
  34. package/components/datepicker/dist/index.js +98 -1489
  35. package/components/datepicker/dist/registered.js +98 -1489
  36. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +1 -66
  37. package/components/datepicker/dist/src/auro-calendar-month.d.ts +0 -28
  38. package/components/datepicker/dist/src/auro-calendar.d.ts +0 -100
  39. package/components/datepicker/dist/src/auro-datepicker.d.ts +0 -88
  40. package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +3 -5
  41. package/components/dropdown/demo/accessibility.md +0 -11
  42. package/components/dropdown/demo/api.md +0 -1
  43. package/components/dropdown/demo/customize.md +0 -3
  44. package/components/dropdown/demo/customize.min.js +13 -223
  45. package/components/dropdown/demo/getting-started.min.js +13 -223
  46. package/components/dropdown/demo/index.min.js +13 -223
  47. package/components/dropdown/demo/keyboard-behavior.md +0 -1
  48. package/components/dropdown/demo/pages.json +1 -1
  49. package/components/dropdown/dist/auro-dropdown.d.ts +1 -33
  50. package/components/dropdown/dist/index.js +13 -223
  51. package/components/dropdown/dist/registered.js +13 -223
  52. package/components/form/demo/customize.min.js +165 -2208
  53. package/components/form/demo/getting-started.min.js +165 -2208
  54. package/components/form/demo/index.min.js +165 -2208
  55. package/components/form/demo/pages.json +1 -1
  56. package/components/form/demo/registerDemoDeps.min.js +165 -2208
  57. package/components/input/demo/customize.min.js +1 -1
  58. package/components/input/demo/getting-started.min.js +1 -1
  59. package/components/input/demo/index.min.js +1 -1
  60. package/components/input/demo/pages.json +1 -1
  61. package/components/input/dist/index.js +1 -1
  62. package/components/input/dist/registered.js +1 -1
  63. package/components/menu/demo/pages.json +1 -1
  64. package/components/radio/demo/getting-started.js +1 -1
  65. package/components/radio/demo/getting-started.md +1 -1
  66. package/components/radio/demo/index.min.js +1 -1
  67. package/components/radio/demo/pages.json +1 -1
  68. package/components/radio/dist/index.js +1 -1
  69. package/components/radio/dist/registered.js +1 -1
  70. package/components/select/demo/customize.min.js +33 -249
  71. package/components/select/demo/getting-started.min.js +33 -249
  72. package/components/select/demo/index.min.js +33 -249
  73. package/components/select/demo/keyboard-behavior.md +54 -9
  74. package/components/select/demo/pages.json +1 -1
  75. package/components/select/dist/index.js +33 -249
  76. package/components/select/dist/registered.js +33 -249
  77. package/custom-elements.json +21 -738
  78. package/package.json +2 -2
  79. package/components/checkbox/demo/why-checkbox.html +0 -57
  80. package/components/checkbox/demo/why-checkbox.md +0 -86
  81. package/components/combobox/demo/why-combobox.html +0 -57
  82. package/components/combobox/demo/why-combobox.md +0 -113
  83. package/components/counter/demo/why-counter.html +0 -57
  84. package/components/counter/demo/why-counter.md +0 -108
  85. package/components/datepicker/demo/customize.js +0 -19
  86. package/components/datepicker/demo/customize.min.js +0 -26028
  87. package/components/datepicker/demo/why-datepicker.html +0 -57
  88. package/components/datepicker/demo/why-datepicker.md +0 -133
  89. package/components/dropdown/demo/why-dropdown.html +0 -57
  90. package/components/dropdown/demo/why-dropdown.md +0 -97
  91. package/components/form/demo/why-form.html +0 -57
  92. package/components/form/demo/why-form.md +0 -101
  93. package/components/input/demo/why-input.html +0 -57
  94. package/components/input/demo/why-input.md +0 -121
  95. package/components/menu/demo/why-menu.html +0 -57
  96. package/components/menu/demo/why-menu.md +0 -104
  97. package/components/radio/demo/customize.min.js +0 -2186
  98. package/components/radio/demo/demo-support.min.js +0 -55807
  99. package/components/radio/demo/getting-started.min.js +0 -2205
  100. package/components/radio/demo/why-radio.html +0 -57
  101. package/components/radio/demo/why-radio.md +0 -92
  102. package/components/select/demo/why-select.html +0 -57
  103. package/components/select/demo/why-select.md +0 -128
@@ -1,57 +0,0 @@
1
- <!--
2
- Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3
- See LICENSE in the project root for license information.
4
-
5
- HTML in this document is standardized and NOT to be edited.
6
- All demo code should be added/edited in ./demo/why-radio.md
7
-
8
- With the exception of adding custom elements if needed for the demo.
9
-
10
- ----------------------- DO NOT EDIT -----------------------------
11
-
12
- -->
13
-
14
- <!DOCTYPE html>
15
- <html lang="en">
16
- <head>
17
- <meta charset="UTF-8" />
18
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19
- <title>Auro Web Component Demo | auro-radio | Why auro-radio</title>
20
-
21
- <!-- highlight.js Stylesheet -->
22
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css"/>
23
-
24
- <!-- Legacy reference is still needed to support auro-radio's use of legacy token values at this time -->
25
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/legacy/auro-classic/CSSCustomProperties.css"/>
26
-
27
- <!-- Design Token Alaska Theme -->
28
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/themes/alaska/CSSCustomProperties--alaska.min.css"/>
29
-
30
- <!-- Webcore Stylesheet Alaska Theme -->
31
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/bundled/themes/alaska.global.min.css" />
32
-
33
- <!-- Demo Specific Styles -->
34
- <link rel="stylesheet" type="text/css" href="./styles.min.css" />
35
- <style>
36
- table {
37
- --ds-color-container-secondary-default: transparent;
38
- }
39
-
40
- tr:not(:last-of-type) {
41
- border-bottom: 1px solid var(--ds-color-border-tertiary-default);
42
- }
43
- </style>
44
- </head>
45
- <body class="auro-markdown">
46
- <main></main>
47
-
48
- <script type="module">
49
- import { renderPage } from './demo-support.min.js';
50
- await renderPage('./why-radio.md');
51
- </script>
52
-
53
- <!-- If additional elements are needed for the demo, add them here. -->
54
- <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-header@latest/+esm" type="module"></script>
55
- <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-hyperlink@latest/+esm" type="module"></script>
56
- </body>
57
- </html>
@@ -1,92 +0,0 @@
1
- <auro-header level="1" id="overview">Why auro-radio?</auro-header>
2
- <p>The native <code>&lt;input type="radio"&gt;</code> provides basic mutual exclusion within a named group, but it cannot be styled consistently, has no built-in group validation or error messaging, and requires manual <code>&lt;fieldset&gt;</code>/<code>&lt;legend&gt;</code> wiring. <code>auro-radio</code> and <code>auro-radio-group</code> address these gaps.</p>
3
- <auro-header level="2" id="accessibility">Accessibility</auro-header>
4
- <p>Native radio buttons have basic accessibility, but managing a group with a legend, validation errors, and consistent keyboard behavior requires careful manual implementation.</p>
5
- <p><code>auro-radio</code> provides:</p>
6
- <ul>
7
- <li><strong>Proper ARIA semantics</strong> — Each radio carries <code>role="radio"</code>, <code>aria-checked</code>, <code>aria-required</code>, and <code>aria-disabled</code>.</li>
8
- <li><strong>Roving tabindex</strong> — Only the selected radio (or the first radio if none is selected) has <code>tabindex="0"</code>. Arrow keys move between radios within the group, matching the expected WAI-ARIA radio group pattern.</li>
9
- <li><strong>Group labeling</strong> — <code>auro-radio-group</code> provides a <code>legend</code> slot that is automatically associated as the group's accessible label.</li>
10
- <li><strong>Keyboard interaction</strong> — Arrow keys navigate between options, Space selects the focused radio.</li>
11
- </ul>
12
- <auro-header level="2" id="groupManagement">Group management</auro-header>
13
- <p>Building a radio group with coordinated validation, error display, and state management from native inputs requires custom JavaScript and DOM structure.</p>
14
- <p><code>auro-radio-group</code> provides:</p>
15
- <ul>
16
- <li>A single <code>value</code> property reflecting the selected radio's value</li>
17
- <li><code>optionSelected</code> reference to the selected element</li>
18
- <li>Propagation of <code>disabled</code> state to all child radios</li>
19
- <li>Horizontal layout option via the <code>horizontal</code> attribute</li>
20
- <li><code>reset()</code> to clear selection and validation state across all children</li>
21
- </ul>
22
- <auro-header level="2" id="validation">Validation</auro-header>
23
- <p>Native radio groups support <code>required</code> via the HTML attribute, but the error message is browser-controlled and there is no standard way to display custom error text below the group.</p>
24
- <p><code>auro-radio-group</code> integrates with the Auro form validation system:</p>
25
- <ul>
26
- <li>Group-level <code>required</code> validation (at least one must be selected)</li>
27
- <li>Custom error messages via <code>setCustomValidityCustomError</code> and <code>setCustomValidityValueMissing</code></li>
28
- <li><code>noValidate</code> to disable auto-validation on blur</li>
29
- <li><code>touched</code> tracking so errors appear only after user interaction</li>
30
- <li>Dispatches <code>auroFormElement-validated</code> events for parent form coordination</li>
31
- <li>Error display via the <code>helpText</code> slot</li>
32
- </ul>
33
- <auro-header level="2" id="themingAndVisualConsistency">Theming and visual consistency</auro-header>
34
- <p>Native radio buttons render differently across browsers and operating systems. Their appearance — the circle, the fill, the label spacing — cannot be reliably controlled with CSS alone.</p>
35
- <p><code>auro-radio</code> is built with the Auro Design System:</p>
36
- <ul>
37
- <li>Consistent visual language across all browsers and platforms</li>
38
- <li>Light and dark theme support (<code>appearance="default"</code> or <code>appearance="inverse"</code>)</li>
39
- <li>CSS <code>::part()</code> selectors for targeted styling (<code>radio</code>, <code>radio-input</code>, <code>radio-label</code>)</li>
40
- </ul>
41
- <auro-header level="2" id="summary">Summary</auro-header>
42
- <table>
43
- <thead>
44
- <tr>
45
- <th>Capability</th>
46
- <th><code>&lt;input type="radio"&gt;</code></th>
47
- <th><code>auro-radio</code></th>
48
- </tr>
49
- </thead>
50
- <tbody>
51
- <tr>
52
- <td>Consistent cross-browser styling</td>
53
- <td>No</td>
54
- <td>Yes</td>
55
- </tr>
56
- <tr>
57
- <td>Group validation</td>
58
- <td>Manual <code>&lt;fieldset&gt;</code></td>
59
- <td>Built-in with <code>auro-radio-group</code></td>
60
- </tr>
61
- <tr>
62
- <td>Custom error messages</td>
63
- <td>Browser-controlled</td>
64
- <td>Per-constraint custom messages</td>
65
- </tr>
66
- <tr>
67
- <td>Roving tabindex</td>
68
- <td>Manual implementation</td>
69
- <td>Built-in</td>
70
- </tr>
71
- <tr>
72
- <td>Group legend</td>
73
- <td>Manual <code>&lt;legend&gt;</code></td>
74
- <td><code>legend</code> slot</td>
75
- </tr>
76
- <tr>
77
- <td>Horizontal layout</td>
78
- <td>Manual CSS</td>
79
- <td><code>horizontal</code> attribute</td>
80
- </tr>
81
- <tr>
82
- <td>Theming</td>
83
- <td>Browser-dependent</td>
84
- <td>Full design system integration</td>
85
- </tr>
86
- <tr>
87
- <td>Reset group</td>
88
- <td>Manual per-element</td>
89
- <td>Single <code>reset()</code> call</td>
90
- </tr>
91
- </tbody>
92
- </table>
@@ -1,57 +0,0 @@
1
- <!--
2
- Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3
- See LICENSE in the project root for license information.
4
-
5
- HTML in this document is standardized and NOT to be edited.
6
- All demo code should be added/edited in ./demo/why-select.md
7
-
8
- With the exception of adding custom elements if needed for the demo.
9
-
10
- ----------------------- DO NOT EDIT -----------------------------
11
-
12
- -->
13
-
14
- <!DOCTYPE html>
15
- <html lang="en">
16
- <head>
17
- <meta charset="UTF-8" />
18
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19
- <title>Auro Web Component Demo | auro-select | Why auro-select</title>
20
-
21
- <!-- highlight.js Stylesheet -->
22
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css"/>
23
-
24
- <!-- Legacy reference is still needed to support auro-select's use of legacy token values at this time -->
25
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/legacy/auro-classic/CSSCustomProperties.css"/>
26
-
27
- <!-- Design Token Alaska Theme -->
28
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/themes/alaska/CSSCustomProperties--alaska.min.css"/>
29
-
30
- <!-- Webcore Stylesheet Alaska Theme -->
31
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/bundled/themes/alaska.global.min.css" />
32
-
33
- <!-- Demo Specific Styles -->
34
- <link rel="stylesheet" type="text/css" href="./styles.min.css" />
35
- <style>
36
- table {
37
- --ds-color-container-secondary-default: transparent;
38
- }
39
-
40
- tr:not(:last-of-type) {
41
- border-bottom: 1px solid var(--ds-color-border-tertiary-default);
42
- }
43
- </style>
44
- </head>
45
- <body class="auro-markdown">
46
- <main></main>
47
-
48
- <script type="module">
49
- import { renderPage } from './demo-support.min.js';
50
- await renderPage('./why-select.md');
51
- </script>
52
-
53
- <!-- If additional elements are needed for the demo, add them here. -->
54
- <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-header@latest/+esm" type="module"></script>
55
- <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-hyperlink@latest/+esm" type="module"></script>
56
- </body>
57
- </html>
@@ -1,128 +0,0 @@
1
- <auro-header level="1" id="overview">Why auro-select?</auro-header>
2
- <p>The native <code>&lt;select&gt;</code> element is one of the most difficult HTML elements to style, has no support for rich option content, and behaves inconsistently across browsers. <code>auro-select</code> provides a fully styled, accessible, and feature-rich replacement.</p>
3
- <auro-header level="2" id="accessibility">Accessibility</auro-header>
4
- <p>Native <code>&lt;select&gt;</code> has basic accessibility, but the dropdown behavior, keyboard navigation, and screen reader announcements vary between browsers and platforms.</p>
5
- <p><code>auro-select</code> provides:</p>
6
- <ul>
7
- <li><strong>ARIA combobox pattern</strong> — The trigger uses <code>role="combobox"</code> with <code>aria-expanded</code>, <code>aria-controls</code>, and <code>aria-activedescendant</code> for proper screen reader semantics.</li>
8
- <li><strong>Full keyboard navigation</strong> — Arrow Up/Down navigate options (with Alt modifier for jumping to first/last), Enter selects, Escape closes, Home/End jump to boundaries, Tab closes and advances focus.</li>
9
- <li><strong>Screen reader announcements</strong> — <code>aria-live="polite"</code> announces selections, <code>aria-live="assertive"</code> announces validation errors. Each option carries <code>aria-setsize</code> and <code>aria-posinset</code> for position context.</li>
10
- <li><strong>Active descendant</strong> — Focus stays on the trigger while arrow keys highlight options, so screen readers announce the highlighted option without disrupting focus.</li>
11
- </ul>
12
- <auro-header level="2" id="richOptionContent">Rich option content</auro-header>
13
- <p><code>&lt;option&gt;</code> elements accept only plain text. There is no native way to add icons, secondary text, or nested groups.</p>
14
- <p><code>auro-select</code> uses <code>auro-menu</code> internally, enabling:</p>
15
- <ul>
16
- <li>Full HTML content in each option (icons, descriptions, badges)</li>
17
- <li>Nested option groups for hierarchical organization</li>
18
- <li>Checkmark indicators for the selected option</li>
19
- <li>Option sizing (sm, md) for different information density</li>
20
- </ul>
21
- <auro-header level="2" id="multiselect">Multi-select</auro-header>
22
- <p>Native <code>&lt;select multiple&gt;</code> renders a scrollable list box — a UI pattern widely regarded as confusing. Users must Ctrl+click to select multiple items, and there is no checkmark or visual feedback.</p>
23
- <p><code>auro-select</code> with <code>multiSelect</code> provides:</p>
24
- <ul>
25
- <li>A dropdown trigger that stays closed between selections</li>
26
- <li>Checkmarks on each selected option</li>
27
- <li>A JSON-stringified array value for easy consumption</li>
28
- <li><code>clearSelection()</code> to reset all selections</li>
29
- </ul>
30
- <auro-header level="2" id="responsiveLayout">Responsive layout</auro-header>
31
- <p>Native <code>&lt;select&gt;</code> renders a browser-controlled popup that cannot be repositioned, resized, or presented differently on mobile.</p>
32
- <p><code>auro-select</code> adapts to the viewport:</p>
33
- <ul>
34
- <li><strong>Desktop</strong> — Options appear in a positioned dropdown using Floating UI, with configurable placement, offset, flip, shift, and auto-placement</li>
35
- <li><strong>Mobile</strong> — Options open in a fullscreen dialog below a configurable breakpoint (<code>fullscreenBreakpoint</code>)</li>
36
- <li><strong>Width control</strong> — <code>matchWidth</code> sizes the dropdown to the trigger, <code>flexMenuWidth</code> lets it size independently</li>
37
- </ul>
38
- <auro-header level="2" id="validation">Validation</auro-header>
39
- <p>Native <code>&lt;select&gt;</code> validation is limited to <code>required</code>. Error messages are browser-controlled.</p>
40
- <p><code>auro-select</code> integrates with the Auro form validation system:</p>
41
- <ul>
42
- <li>Required field validation with custom messaging</li>
43
- <li>Custom error messages per validity state (<code>setCustomValidityCustomError</code>, <code>setCustomValidityValueMissing</code>)</li>
44
- <li><code>noValidate</code> to disable auto-validation on blur</li>
45
- <li>Error display via the <code>helpText</code> slot</li>
46
- <li>Dispatches <code>auroFormElement-validated</code> events for parent form coordination</li>
47
- </ul>
48
- <auro-header level="2" id="displayValueCustomization">Display value customization</auro-header>
49
- <p>Native <code>&lt;select&gt;</code> always shows the selected option's text. There is no way to display a formatted or alternative representation.</p>
50
- <p><code>auro-select</code> provides:</p>
51
- <ul>
52
- <li>A <code>displayValue</code> slot for custom HTML rendering of the selected value</li>
53
- <li>A <code>valueText</code> slot for formatted text display</li>
54
- <li>A <code>placeholder</code> slot (or attribute) for empty-state messaging</li>
55
- <li><code>forceDisplayValue</code> to always show the custom display slot</li>
56
- </ul>
57
- <auro-header level="2" id="designSystemIntegration">Design system integration</auro-header>
58
- <p>Native <code>&lt;select&gt;</code> styling is notoriously difficult. The dropdown arrow, option list, and selected value display are all browser-controlled and resist CSS customization.</p>
59
- <p><code>auro-select</code> is built with the Auro Design System:</p>
60
- <ul>
61
- <li>Three layout options: classic, emphasized, snowflake</li>
62
- <li>Shape variants: box, pill, pill-left, pill-right</li>
63
- <li>Size options (lg, xl for emphasized layout)</li>
64
- <li>Light and dark theme support (<code>appearance</code>)</li>
65
- <li>CSS <code>::part()</code> selectors (<code>dropdownTrigger</code>, <code>dropdownChevron</code>, <code>dropdownSize</code>, <code>helpText</code>)</li>
66
- </ul>
67
- <auro-header level="2" id="summary">Summary</auro-header>
68
- <table>
69
- <thead>
70
- <tr>
71
- <th>Capability</th>
72
- <th><code>&lt;select&gt;</code></th>
73
- <th><code>auro-select</code></th>
74
- </tr>
75
- </thead>
76
- <tbody>
77
- <tr>
78
- <td>Styleable dropdown</td>
79
- <td>No (browser-controlled)</td>
80
- <td>Fully styled</td>
81
- </tr>
82
- <tr>
83
- <td>Rich HTML in options</td>
84
- <td>Plain text only</td>
85
- <td>Full HTML (icons, groups, descriptions)</td>
86
- </tr>
87
- <tr>
88
- <td>Multi-select UX</td>
89
- <td>Ctrl+click list box</td>
90
- <td>Checkmark dropdown</td>
91
- </tr>
92
- <tr>
93
- <td>Keyboard navigation</td>
94
- <td>Basic</td>
95
- <td>Full (arrows, Alt+arrows, Home/End)</td>
96
- </tr>
97
- <tr>
98
- <td>Screen reader announcements</td>
99
- <td>Varies by browser</td>
100
- <td>Consistent ARIA live regions</td>
101
- </tr>
102
- <tr>
103
- <td>Mobile fullscreen</td>
104
- <td>No</td>
105
- <td>Automatic at breakpoint</td>
106
- </tr>
107
- <tr>
108
- <td>Viewport-aware positioning</td>
109
- <td>No</td>
110
- <td>Floating UI with flip/shift/auto</td>
111
- </tr>
112
- <tr>
113
- <td>Custom validation messages</td>
114
- <td>Browser-controlled</td>
115
- <td>Per-constraint custom messages</td>
116
- </tr>
117
- <tr>
118
- <td>Display value customization</td>
119
- <td>No</td>
120
- <td><code>displayValue</code> and <code>valueText</code> slots</td>
121
- </tr>
122
- <tr>
123
- <td>Theming</td>
124
- <td>No</td>
125
- <td>Three layouts + appearance modes</td>
126
- </tr>
127
- </tbody>
128
- </table>