@roadtrip/components 3.23.0 → 3.24.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 (124) hide show
  1. package/assets/assets.svg +1 -0
  2. package/assets/index.d.ts +7 -0
  3. package/assets/index.js +1 -0
  4. package/dist/assets/assets.svg +1 -0
  5. package/dist/assets/index.d.ts +7 -0
  6. package/dist/assets/index.js +1 -0
  7. package/dist/cjs/index-12592729.js +4 -0
  8. package/dist/cjs/index.cjs.js +2 -0
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/road-accordion.cjs.entry.js +1 -1
  12. package/dist/cjs/road-accordion.cjs.entry.js.map +1 -1
  13. package/dist/cjs/road-asset.cjs.entry.js +167 -0
  14. package/dist/cjs/road-asset.cjs.entry.js.map +1 -0
  15. package/dist/cjs/road-badge_14.cjs.entry.js +43 -6
  16. package/dist/cjs/road-badge_14.cjs.entry.js.map +1 -1
  17. package/dist/cjs/road-select-filter.cjs.entry.js +1 -1
  18. package/dist/cjs/road-select-filter.cjs.entry.js.map +1 -1
  19. package/dist/cjs/road-tab-button.cjs.entry.js +1 -1
  20. package/dist/cjs/road-tab-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/road-tooltip.cjs.entry.js +14 -2
  22. package/dist/cjs/road-tooltip.cjs.entry.js.map +1 -1
  23. package/dist/cjs/roadtrip.cjs.js +1 -1
  24. package/dist/cjs/utils-5483e9fa.js +82 -0
  25. package/dist/cjs/utils-5483e9fa.js.map +1 -0
  26. package/dist/collection/collection-manifest.json +1 -0
  27. package/dist/collection/components/accordion/accordion.css +0 -1
  28. package/dist/collection/components/asset/asset.css +22 -0
  29. package/dist/collection/components/asset/asset.js +231 -0
  30. package/dist/collection/components/asset/asset.js.map +1 -0
  31. package/dist/collection/components/asset/asset.stories.js +42 -0
  32. package/dist/collection/components/asset/request.js +33 -0
  33. package/dist/collection/components/asset/request.js.map +1 -0
  34. package/dist/collection/components/asset/svg/ecomobiliste-baseline-fr.svg +9 -0
  35. package/dist/collection/components/asset/svg/ecomobiliste-es.svg +22 -0
  36. package/dist/collection/components/asset/svg/ecomobiliste-fr.svg +9 -0
  37. package/dist/collection/components/asset/svg/ecomobiliste-inverse-baseline-fr.svg +9 -0
  38. package/dist/collection/components/asset/svg/ecomobiliste-inverse-es.svg +22 -0
  39. package/dist/collection/components/asset/svg/ecomobiliste-inverse-fr.svg +9 -0
  40. package/dist/collection/components/asset/svg/ecomobiliste-inverse-it.svg +21 -0
  41. package/dist/collection/components/asset/svg/ecomobiliste-it.svg +21 -0
  42. package/dist/collection/components/asset/utils.js +73 -0
  43. package/dist/collection/components/asset/utils.js.map +1 -0
  44. package/dist/collection/components/asset/validate.js +44 -0
  45. package/dist/collection/components/asset/validate.js.map +1 -0
  46. package/dist/collection/components/button/button.css +9 -2
  47. package/dist/collection/components/counter/counter.css +0 -5
  48. package/dist/collection/components/counter/counter.js +11 -1
  49. package/dist/collection/components/counter/counter.js.map +1 -1
  50. package/dist/collection/components/drawer/drawer.js +63 -2
  51. package/dist/collection/components/drawer/drawer.js.map +1 -1
  52. package/dist/collection/components/drawer/drawer.stories.js +9 -1
  53. package/dist/collection/components/input/input.css +2 -2
  54. package/dist/collection/components/select-filter/select-filter.css +1 -2
  55. package/dist/collection/components/tab-button/tab-button.css +1 -0
  56. package/dist/collection/components/tooltip/tooltip.css +5 -0
  57. package/dist/collection/components/tooltip/tooltip.js +14 -2
  58. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  59. package/dist/collection/index.js +1 -0
  60. package/dist/collection/index.js.map +1 -1
  61. package/dist/esm/index-52302079.js +4 -0
  62. package/dist/esm/index.js +1 -0
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/loader.js +1 -1
  65. package/dist/esm/road-accordion.entry.js +1 -1
  66. package/dist/esm/road-accordion.entry.js.map +1 -1
  67. package/dist/esm/road-asset.entry.js +163 -0
  68. package/dist/esm/road-asset.entry.js.map +1 -0
  69. package/dist/esm/road-badge_14.entry.js +43 -6
  70. package/dist/esm/road-badge_14.entry.js.map +1 -1
  71. package/dist/esm/road-select-filter.entry.js +1 -1
  72. package/dist/esm/road-select-filter.entry.js.map +1 -1
  73. package/dist/esm/road-tab-button.entry.js +1 -1
  74. package/dist/esm/road-tab-button.entry.js.map +1 -1
  75. package/dist/esm/road-tooltip.entry.js +14 -2
  76. package/dist/esm/road-tooltip.entry.js.map +1 -1
  77. package/dist/esm/roadtrip.js +1 -1
  78. package/dist/esm/utils-158dc960.js +77 -0
  79. package/dist/esm/utils-158dc960.js.map +1 -0
  80. package/dist/html.html-data.json +52 -1
  81. package/dist/roadtrip/index.esm.js +1 -1
  82. package/dist/roadtrip/p-172d4877.entry.js +2 -0
  83. package/dist/roadtrip/p-172d4877.entry.js.map +1 -0
  84. package/dist/roadtrip/{p-bc217d07.entry.js → p-21b1569a.entry.js} +2 -2
  85. package/dist/roadtrip/{p-bc217d07.entry.js.map → p-21b1569a.entry.js.map} +1 -1
  86. package/dist/roadtrip/p-3c2da24f.entry.js +2 -0
  87. package/dist/roadtrip/p-3c2da24f.entry.js.map +1 -0
  88. package/dist/roadtrip/p-4111f5f2.entry.js +2 -0
  89. package/dist/roadtrip/p-4111f5f2.entry.js.map +1 -0
  90. package/dist/roadtrip/p-5829857c.entry.js +2 -0
  91. package/dist/roadtrip/p-5829857c.entry.js.map +1 -0
  92. package/dist/roadtrip/p-b65252b7.entry.js +2 -0
  93. package/dist/roadtrip/p-b65252b7.entry.js.map +1 -0
  94. package/dist/roadtrip/p-c0f80d9b.js +2 -0
  95. package/dist/roadtrip/p-c0f80d9b.js.map +1 -0
  96. package/dist/roadtrip/roadtrip.css +1 -1
  97. package/dist/roadtrip/roadtrip.esm.js +1 -1
  98. package/dist/roadtrip/roadtrip.esm.js.map +1 -1
  99. package/dist/roadtrip/svg/ecomobiliste-baseline-fr.svg +9 -0
  100. package/dist/roadtrip/svg/ecomobiliste-es.svg +22 -0
  101. package/dist/roadtrip/svg/ecomobiliste-fr.svg +9 -0
  102. package/dist/roadtrip/svg/ecomobiliste-inverse-baseline-fr.svg +9 -0
  103. package/dist/roadtrip/svg/ecomobiliste-inverse-es.svg +22 -0
  104. package/dist/roadtrip/svg/ecomobiliste-inverse-fr.svg +9 -0
  105. package/dist/roadtrip/svg/ecomobiliste-inverse-it.svg +21 -0
  106. package/dist/roadtrip/svg/ecomobiliste-it.svg +21 -0
  107. package/dist/types/components/asset/asset.d.ts +44 -0
  108. package/dist/types/components/asset/request.d.ts +2 -0
  109. package/dist/types/components/asset/utils.d.ts +11 -0
  110. package/dist/types/components/asset/validate.d.ts +2 -0
  111. package/dist/types/components/drawer/drawer.d.ts +12 -0
  112. package/dist/types/components/tooltip/tooltip.d.ts +3 -1
  113. package/dist/types/components.d.ts +87 -2
  114. package/dist/types/index.d.ts +1 -0
  115. package/hydrate/index.js +171 -11
  116. package/package.json +2 -1
  117. package/dist/roadtrip/p-b09c076d.entry.js +0 -2
  118. package/dist/roadtrip/p-b09c076d.entry.js.map +0 -1
  119. package/dist/roadtrip/p-bc671fae.entry.js +0 -2
  120. package/dist/roadtrip/p-bc671fae.entry.js.map +0 -1
  121. package/dist/roadtrip/p-c653d32d.entry.js +0 -2
  122. package/dist/roadtrip/p-c653d32d.entry.js.map +0 -1
  123. package/dist/roadtrip/p-d5f9dfea.entry.js +0 -2
  124. package/dist/roadtrip/p-d5f9dfea.entry.js.map +0 -1
@@ -2,7 +2,7 @@ import { r as registerInstance, h } from './index-52302079.js';
2
2
  import { n as navigationChevron } from './index-7a0158a4.js';
3
3
  import './polyfill-dc7c89b2.js';
4
4
 
5
- const accordionCss = ":host{--accordion-header-border:1px;--content-margin:0 var(--road-spacing-05) var(--road-spacing-04);--content-padding:var(--road-spacing-04) 0 0;--header-padding:var(--road-spacing-04) var(--road-spacing-05);--icon-color:var(--road-icon);--max-height:none;display:block;margin-bottom:1rem}:host(.focus-visible){border:1px solid var(--road-primary)}.accordion{--max-height:none;overflow:hidden;font-family:var(--road-font, sans-serif);font-size:var(--road-body-small);line-height:1.5;color:var(--road-on-surface);background:var(--road-surface);border:1px solid;border-color:var(--road-outline-weak);border-radius:0.25rem;transition:max-height 0.3s ease-in-out}.accordion.accordion-light{background:none;border:0}.accordion[open]{max-height:var(--max-height)}.accordion[open] .accordion-arrow{transform:rotate(-90deg)}.accordion[open] .accordion-content{padding:var(--content-padding);margin:var(--content-margin)}.accordion-light[open] .accordion-light-content{margin:0 0 var(--road-spacing-04)}.accordion-light[open] .accordion-light-header::after{display:none}.accordion-trigger{box-sizing:border-box;display:block;border:1px solid transparent;border-radius:0.25rem;outline:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}.accordion-light .accordion-trigger:active{background:none}.accordion-trigger::-webkit-details-marker{display:none}.accordion-trigger.focus-visible{border-color:var(--road-primary)}.accordion-trigger:active{background:var(--road-surface-inverse)}.accordion-header{box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;padding:var(--header-padding);font-size:var(--road-body-medium);font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.accordion-light-header{position:relative;padding:var(--road-spacing-04) 0;font-size:var(--road-body-large)}.accordion-light--small .accordion-light-header{font-size:var(--road-body-medium)}.accordion-light--border .accordion-light-header::after{position:absolute;bottom:1px;width:98.3%;height:1px;content:\"\";background:var(--road-outline-weak)}.accordion-arrow{margin-left:auto;color:var(--icon-color);transform:rotate(90deg)}.accordion-light--small .accordion-arrow{width:1.5rem;height:1.5rem}::slotted([slot=\"header\"]){display:flex;align-items:center}:host(.accordion-icon-left){width:1.5rem;height:1.5rem;margin-right:1rem}.accordion-content{padding:0 0.5rem;margin:0 1rem;overflow:hidden;font-size:var(--road-body-medium);border-top:var(--accordion-header-border) solid var(--road-outline-weak)}.accordion-light-content{border-top:1px solid var(--road-outline-weak)}.accordion-light--border .accordion-light-content{border-top:1px solid var(--road-outline-weak);border-bottom:1px solid var(--road-outline-weak)}";
5
+ const accordionCss = ":host{--accordion-header-border:1px;--content-margin:0 var(--road-spacing-05) var(--road-spacing-04);--content-padding:var(--road-spacing-04) 0 0;--header-padding:var(--road-spacing-04) var(--road-spacing-05);--icon-color:var(--road-icon);--max-height:none;display:block}:host(.focus-visible){border:1px solid var(--road-primary)}.accordion{--max-height:none;overflow:hidden;font-family:var(--road-font, sans-serif);font-size:var(--road-body-small);line-height:1.5;color:var(--road-on-surface);background:var(--road-surface);border:1px solid;border-color:var(--road-outline-weak);border-radius:0.25rem;transition:max-height 0.3s ease-in-out}.accordion.accordion-light{background:none;border:0}.accordion[open]{max-height:var(--max-height)}.accordion[open] .accordion-arrow{transform:rotate(-90deg)}.accordion[open] .accordion-content{padding:var(--content-padding);margin:var(--content-margin)}.accordion-light[open] .accordion-light-content{margin:0 0 var(--road-spacing-04)}.accordion-light[open] .accordion-light-header::after{display:none}.accordion-trigger{box-sizing:border-box;display:block;border:1px solid transparent;border-radius:0.25rem;outline:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}.accordion-light .accordion-trigger:active{background:none}.accordion-trigger::-webkit-details-marker{display:none}.accordion-trigger.focus-visible{border-color:var(--road-primary)}.accordion-trigger:active{background:var(--road-surface-inverse)}.accordion-header{box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;padding:var(--header-padding);font-size:var(--road-body-medium);font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.accordion-light-header{position:relative;padding:var(--road-spacing-04) 0;font-size:var(--road-body-large)}.accordion-light--small .accordion-light-header{font-size:var(--road-body-medium)}.accordion-light--border .accordion-light-header::after{position:absolute;bottom:1px;width:98.3%;height:1px;content:\"\";background:var(--road-outline-weak)}.accordion-arrow{margin-left:auto;color:var(--icon-color);transform:rotate(90deg)}.accordion-light--small .accordion-arrow{width:1.5rem;height:1.5rem}::slotted([slot=\"header\"]){display:flex;align-items:center}:host(.accordion-icon-left){width:1.5rem;height:1.5rem;margin-right:1rem}.accordion-content{padding:0 0.5rem;margin:0 1rem;overflow:hidden;font-size:var(--road-body-medium);border-top:var(--accordion-header-border) solid var(--road-outline-weak)}.accordion-light-content{border-top:1px solid var(--road-outline-weak)}.accordion-light--border .accordion-light-content{border-top:1px solid var(--road-outline-weak);border-bottom:1px solid var(--road-outline-weak)}";
6
6
 
7
7
  const Accordion = class {
8
8
  constructor(hostRef) {
@@ -1 +1 @@
1
- {"file":"road-accordion.entry.js","mappings":";;;;AAAA,MAAM,YAAY,GAAG,uqFAAuqF;;MCiB/qF,SAAS;;;;;;IAyBZ,YAAO,GAAG;MAChB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B,CAAC;kBAtB0C,KAAK;mBAKpB,KAAK;4BAKK,KAAK;mBAKd,KAAK;;EASnC,MAAM;IAEJ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,2BAA2B,GAAG,WAAW,CAAC;IAChF,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,GAAG,yCAAyC,GAAG,kBAAkB,CAAC;IAC3G,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,GAAG,2CAA2C,GAAG,mBAAmB,CAAC;IAC/G,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,GAAG,mDAAmD,GAAG,WAAW,CAAC;IAC1H,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,kDAAkD,GAAG,WAAW,CAAC;IACvG,QACE,eAAS,KAAK,EAAE,GAAG,cAAc,IAAI,cAAc,IAAI,uBAAuB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IACjG,eAAS,KAAK,EAAC,mBAAmB,mBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,IAClH,WAAK,KAAK,EAAE,oBAAoB,IAC9B,YAAM,IAAI,EAAC,WAAW,GAAE,EACxB,YAAM,IAAI,EAAC,QAAQ,GAAE,EACrB,iBAAW,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAE,iBAAiB,GAAc,CACpE,CACE,EACV,WAAK,KAAK,EAAE,qBAAqB,IAC/B,eAAO,CACH,CACE,EACV;GACH;;;;;;","names":[],"sources":["src/components/accordion/accordion.css?tag=road-accordion&encapsulation=shadow","src/components/accordion/accordion.tsx"],"sourcesContent":["/*\n * Accordion\n *\n * For accessibility, we provide a style for focus only on Tab.\n * For enable this focus, load the javascript polyfill for focus-visible\n * (https://github.com/WICG/focus-visible).\n *\n * Index\n * - Accordion\n * - Button\n * - Content\n */\n\n/**\n * @prop --accordion-header-border: height of the border of the header\n * @prop --content-margin: margin of the accordion content\n * @prop --content-padding: padding of the accordion content\n * @prop --header-padding: padding of the accordion header\n * @prop --icon-color: color of the chevron icon\n * @prop --max-height: maximum height of the collapse content\n */\n\n:host {\n --accordion-header-border: 1px;\n --content-margin: 0 var(--road-spacing-05) var(--road-spacing-04);\n --content-padding: var(--road-spacing-04) 0 0;\n --header-padding: var(--road-spacing-04) var(--road-spacing-05);\n --icon-color: var(--road-icon);\n --max-height: none;\n\n display: block;\n margin-bottom: 1rem;\n}\n\n:host(.focus-visible){\n border: 1px solid var(--road-primary);\n}\n\n/* ACCORDION\n -------------------- */\n\n.accordion {\n --max-height: none;\n overflow: hidden;\n font-family: var(--road-font, sans-serif);\n font-size: var(--road-body-small);\n line-height: 1.5;\n color: var(--road-on-surface);\n background: var(--road-surface);\n border: 1px solid;\n border-color: var(--road-outline-weak);\n border-radius: 0.25rem;\n transition: max-height 0.3s ease-in-out;\n}\n\n.accordion.accordion-light {\n background: none;\n border: 0;\n}\n\n/**\n * Open state\n */\n\n.accordion[open] {\n max-height: var(--max-height);\n}\n\n.accordion[open] .accordion-arrow {\n transform: rotate(-90deg);\n}\n\n.accordion[open] .accordion-content {\n padding: var(--content-padding);\n margin: var(--content-margin);\n}\n\n.accordion-light[open] .accordion-light-content {\n margin: 0 0 var(--road-spacing-04);\n}\n\n.accordion-light[open] .accordion-light-header::after {\n display: none;\n}\n\n/* BUTTON\n -------------------- */\n\n.accordion-trigger {\n box-sizing: border-box;\n display: block;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n outline: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.accordion-light .accordion-trigger:active{\n background: none;\n}\n\n.accordion-trigger::-webkit-details-marker { /* Remove chrome native arrow */\n display: none;\n}\n\n/**\n * Focus on Tab\n */\n\n.accordion-trigger.focus-visible {\n border-color: var(--road-primary);\n}\n\n/**\n * Active state\n */\n\n.accordion-trigger:active {\n background: var(--road-surface-inverse);\n}\n\n/**\n * .accordion-header is an additionnal div\n * because Safari doesn't support flexbox on <summary> element\n */\n\n.accordion-header {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--header-padding);\n font-size: var(--road-body-medium);\n font-weight: 700;\n cursor: pointer;\n user-select: none;\n}\n\n.accordion-light-header {\n position: relative;\n padding: var(--road-spacing-04) 0;\n font-size: var(--road-body-large);\n}\n\n.accordion-light--small .accordion-light-header {\n font-size: var(--road-body-medium);\n}\n\n.accordion-light--border .accordion-light-header::after {\n position: absolute;\n bottom: 1px;\n width: 98.3%;\n height: 1px;\n content: \"\";\n background: var(--road-outline-weak);\n}\n\n/**\n * Custom arrow\n */\n\n.accordion-arrow {\n margin-left: auto;\n color: var(--icon-color);\n transform: rotate(90deg);\n}\n\n.accordion-light--small .accordion-arrow {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n::slotted([slot=\"header\"]){\n display: flex;\n align-items: center;\n}\n\n:host(.accordion-icon-left){\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 1rem;\n}\n\n/* CONTENT\n -------------------- */\n\n.accordion-content {\n padding: 0 0.5rem;\n margin: 0 1rem;\n overflow: hidden;\n font-size: var(--road-body-medium);\n border-top: var(--accordion-header-border) solid var(--road-outline-weak);\n}\n\n.accordion-light-content {\n border-top: 1px solid var(--road-outline-weak);\n}\n\n.accordion-light--border .accordion-light-content {\n border-top: 1px solid var(--road-outline-weak);\n border-bottom: 1px solid var(--road-outline-weak);\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport { navigationChevron } from '../../../icons';\nimport './../../utils/polyfill';\n\n/**\n * @slot header - Content of the header.\n * @slot - Content hidden in the accordion.\n * @slot icon-left - Icon of the alert, it should be a road-icon element.\n * `<road-icon name=\"alert-info-outline\" class=\"mr-16\"></road-icon>`\n\n */\n\n@Component({\n tag: 'road-accordion',\n styleUrl: 'accordion.css',\n shadow: true,\n})\nexport class Accordion {\n\n /**\n * Set to `true` to open the accordion and to `false` to close it.\n */\n @Prop({ mutable: true }) isOpen : boolean = false;\n\n /**\n * Set to `true` to remove border the accordion and to `false` to add border it.\n */\n @Prop() isLight : boolean = false;\n\n /**\n * Set to `true` to add a border in the header and the content only for the light accordion.\n */\n @Prop() isLightSeparator : boolean = false;\n\n /**\n * Set to `true` to add the small version only for the light accordion.\n */\n @Prop() isSmall : boolean = false;\n\n /**\n * Toggle the display when clicking header\n */\n private onClick = () => {\n this.isOpen = !this.isOpen;\n };\n\n render() {\n\n const accordionLight = this.isLight ? 'accordion accordion-light' : 'accordion';\n const accordionLightHeader = this.isLight ? 'accordion-header accordion-light-header' : 'accordion-header';\n const accordionLightContent = this.isLight ? 'accordion-content accordion-light-content' : 'accordion-content';\n const accordionLightSeparator = this.isLightSeparator ? 'accordion accordion-light accordion-light--border' : 'accordion';\n const accordionSmall = this.isSmall ? 'accordion accordion-light accordion-light--small' : 'accordion';\n return (\n <details class={`${accordionLight} ${accordionSmall} ${accordionLightSeparator}`} open={this.isOpen}>\n <summary class=\"accordion-trigger\" aria-expanded={`${this.isOpen}`} tabindex=\"0\" role=\"button\" onClick={this.onClick}>\n <div class={accordionLightHeader}>\n <slot name=\"icon-left\"/>\n <slot name=\"header\"/>\n <road-icon class=\"accordion-arrow\" icon={navigationChevron}></road-icon>\n </div>\n </summary>\n <div class={accordionLightContent}>\n <slot/>\n </div>\n </details>\n );\n }\n}"],"version":3}
1
+ {"file":"road-accordion.entry.js","mappings":";;;;AAAA,MAAM,YAAY,GAAG,opFAAopF;;MCiB5pF,SAAS;;;;;;IAyBZ,YAAO,GAAG;MAChB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B,CAAC;kBAtB0C,KAAK;mBAKpB,KAAK;4BAKK,KAAK;mBAKd,KAAK;;EASnC,MAAM;IAEJ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,2BAA2B,GAAG,WAAW,CAAC;IAChF,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,GAAG,yCAAyC,GAAG,kBAAkB,CAAC;IAC3G,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,GAAG,2CAA2C,GAAG,mBAAmB,CAAC;IAC/G,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,GAAG,mDAAmD,GAAG,WAAW,CAAC;IAC1H,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,kDAAkD,GAAG,WAAW,CAAC;IACvG,QACE,eAAS,KAAK,EAAE,GAAG,cAAc,IAAI,cAAc,IAAI,uBAAuB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IACjG,eAAS,KAAK,EAAC,mBAAmB,mBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,IAClH,WAAK,KAAK,EAAE,oBAAoB,IAC9B,YAAM,IAAI,EAAC,WAAW,GAAE,EACxB,YAAM,IAAI,EAAC,QAAQ,GAAE,EACrB,iBAAW,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAE,iBAAiB,GAAc,CACpE,CACE,EACV,WAAK,KAAK,EAAE,qBAAqB,IAC/B,eAAO,CACH,CACE,EACV;GACH;;;;;;","names":[],"sources":["src/components/accordion/accordion.css?tag=road-accordion&encapsulation=shadow","src/components/accordion/accordion.tsx"],"sourcesContent":["/*\n * Accordion\n *\n * For accessibility, we provide a style for focus only on Tab.\n * For enable this focus, load the javascript polyfill for focus-visible\n * (https://github.com/WICG/focus-visible).\n *\n * Index\n * - Accordion\n * - Button\n * - Content\n */\n\n/**\n * @prop --accordion-header-border: height of the border of the header\n * @prop --content-margin: margin of the accordion content\n * @prop --content-padding: padding of the accordion content\n * @prop --header-padding: padding of the accordion header\n * @prop --icon-color: color of the chevron icon\n * @prop --max-height: maximum height of the collapse content\n */\n\n:host {\n --accordion-header-border: 1px;\n --content-margin: 0 var(--road-spacing-05) var(--road-spacing-04);\n --content-padding: var(--road-spacing-04) 0 0;\n --header-padding: var(--road-spacing-04) var(--road-spacing-05);\n --icon-color: var(--road-icon);\n --max-height: none;\n\n display: block;\n}\n\n:host(.focus-visible){\n border: 1px solid var(--road-primary);\n}\n\n/* ACCORDION\n -------------------- */\n\n.accordion {\n --max-height: none;\n overflow: hidden;\n font-family: var(--road-font, sans-serif);\n font-size: var(--road-body-small);\n line-height: 1.5;\n color: var(--road-on-surface);\n background: var(--road-surface);\n border: 1px solid;\n border-color: var(--road-outline-weak);\n border-radius: 0.25rem;\n transition: max-height 0.3s ease-in-out;\n}\n\n.accordion.accordion-light {\n background: none;\n border: 0;\n}\n\n/**\n * Open state\n */\n\n.accordion[open] {\n max-height: var(--max-height);\n}\n\n.accordion[open] .accordion-arrow {\n transform: rotate(-90deg);\n}\n\n.accordion[open] .accordion-content {\n padding: var(--content-padding);\n margin: var(--content-margin);\n}\n\n.accordion-light[open] .accordion-light-content {\n margin: 0 0 var(--road-spacing-04);\n}\n\n.accordion-light[open] .accordion-light-header::after {\n display: none;\n}\n\n/* BUTTON\n -------------------- */\n\n.accordion-trigger {\n box-sizing: border-box;\n display: block;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n outline: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.accordion-light .accordion-trigger:active{\n background: none;\n}\n\n.accordion-trigger::-webkit-details-marker { /* Remove chrome native arrow */\n display: none;\n}\n\n/**\n * Focus on Tab\n */\n\n.accordion-trigger.focus-visible {\n border-color: var(--road-primary);\n}\n\n/**\n * Active state\n */\n\n.accordion-trigger:active {\n background: var(--road-surface-inverse);\n}\n\n/**\n * .accordion-header is an additionnal div\n * because Safari doesn't support flexbox on <summary> element\n */\n\n.accordion-header {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--header-padding);\n font-size: var(--road-body-medium);\n font-weight: 700;\n cursor: pointer;\n user-select: none;\n}\n\n.accordion-light-header {\n position: relative;\n padding: var(--road-spacing-04) 0;\n font-size: var(--road-body-large);\n}\n\n.accordion-light--small .accordion-light-header {\n font-size: var(--road-body-medium);\n}\n\n.accordion-light--border .accordion-light-header::after {\n position: absolute;\n bottom: 1px;\n width: 98.3%;\n height: 1px;\n content: \"\";\n background: var(--road-outline-weak);\n}\n\n/**\n * Custom arrow\n */\n\n.accordion-arrow {\n margin-left: auto;\n color: var(--icon-color);\n transform: rotate(90deg);\n}\n\n.accordion-light--small .accordion-arrow {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n::slotted([slot=\"header\"]){\n display: flex;\n align-items: center;\n}\n\n:host(.accordion-icon-left){\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 1rem;\n}\n\n/* CONTENT\n -------------------- */\n\n.accordion-content {\n padding: 0 0.5rem;\n margin: 0 1rem;\n overflow: hidden;\n font-size: var(--road-body-medium);\n border-top: var(--accordion-header-border) solid var(--road-outline-weak);\n}\n\n.accordion-light-content {\n border-top: 1px solid var(--road-outline-weak);\n}\n\n.accordion-light--border .accordion-light-content {\n border-top: 1px solid var(--road-outline-weak);\n border-bottom: 1px solid var(--road-outline-weak);\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport { navigationChevron } from '../../../icons';\nimport './../../utils/polyfill';\n\n/**\n * @slot header - Content of the header.\n * @slot - Content hidden in the accordion.\n * @slot icon-left - Icon of the alert, it should be a road-icon element.\n * `<road-icon name=\"alert-info-outline\" class=\"mr-16\"></road-icon>`\n\n */\n\n@Component({\n tag: 'road-accordion',\n styleUrl: 'accordion.css',\n shadow: true,\n})\nexport class Accordion {\n\n /**\n * Set to `true` to open the accordion and to `false` to close it.\n */\n @Prop({ mutable: true }) isOpen : boolean = false;\n\n /**\n * Set to `true` to remove border the accordion and to `false` to add border it.\n */\n @Prop() isLight : boolean = false;\n\n /**\n * Set to `true` to add a border in the header and the content only for the light accordion.\n */\n @Prop() isLightSeparator : boolean = false;\n\n /**\n * Set to `true` to add the small version only for the light accordion.\n */\n @Prop() isSmall : boolean = false;\n\n /**\n * Toggle the display when clicking header\n */\n private onClick = () => {\n this.isOpen = !this.isOpen;\n };\n\n render() {\n\n const accordionLight = this.isLight ? 'accordion accordion-light' : 'accordion';\n const accordionLightHeader = this.isLight ? 'accordion-header accordion-light-header' : 'accordion-header';\n const accordionLightContent = this.isLight ? 'accordion-content accordion-light-content' : 'accordion-content';\n const accordionLightSeparator = this.isLightSeparator ? 'accordion accordion-light accordion-light--border' : 'accordion';\n const accordionSmall = this.isSmall ? 'accordion accordion-light accordion-light--small' : 'accordion';\n return (\n <details class={`${accordionLight} ${accordionSmall} ${accordionLightSeparator}`} open={this.isOpen}>\n <summary class=\"accordion-trigger\" aria-expanded={`${this.isOpen}`} tabindex=\"0\" role=\"button\" onClick={this.onClick}>\n <div class={accordionLightHeader}>\n <slot name=\"icon-left\"/>\n <slot name=\"header\"/>\n <road-icon class=\"accordion-arrow\" icon={navigationChevron}></road-icon>\n </div>\n </summary>\n <div class={accordionLightContent}>\n <slot/>\n </div>\n </details>\n );\n }\n}"],"version":3}
@@ -0,0 +1,163 @@
1
+ import { r as registerInstance, h, H as Host, a as getElement } from './index-52302079.js';
2
+ import { i as isStr, g as getUrl, b as getName } from './utils-158dc960.js';
3
+
4
+ const validateContent = (svgContent) => {
5
+ const div = document.createElement('div');
6
+ div.innerHTML = svgContent;
7
+ // setup this way to ensure it works on our buddy IE
8
+ for (let i = div.childNodes.length - 1; i >= 0; i--) {
9
+ if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {
10
+ div.removeChild(div.childNodes[i]);
11
+ }
12
+ }
13
+ // must only have 1 root element
14
+ const svgElm = div.firstElementChild;
15
+ if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {
16
+ const svgClass = svgElm.getAttribute('class') || '';
17
+ svgElm.setAttribute('class', (svgClass + ' s-ion-icon').trim());
18
+ // root element must be an svg
19
+ // lets double check we've got valid elements
20
+ // do not allow scripts
21
+ if (isValid(svgElm)) {
22
+ return div.innerHTML;
23
+ }
24
+ }
25
+ return '';
26
+ };
27
+ const isValid = (elm) => {
28
+ if (elm.nodeType === 1) {
29
+ if (elm.nodeName.toLowerCase() === 'script') {
30
+ return false;
31
+ }
32
+ for (let i = 0; i < elm.attributes.length; i++) {
33
+ const val = elm.attributes[i].value;
34
+ if (isStr(val) && val.toLowerCase().indexOf('on') === 0) {
35
+ return false;
36
+ }
37
+ }
38
+ for (let i = 0; i < elm.childNodes.length; i++) {
39
+ if (!isValid(elm.childNodes[i])) {
40
+ return false;
41
+ }
42
+ }
43
+ }
44
+ return true;
45
+ };
46
+
47
+ const roadassetContent = new Map();
48
+ const requests = new Map();
49
+ const getAssetSvgContent = (url, sanitize) => {
50
+ // see if we already have a request for this url
51
+ let req = requests.get(url);
52
+ if (!req) {
53
+ if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {
54
+ // we don't already have a request
55
+ // @ts-ignore
56
+ req = fetch(url).then((rsp) => {
57
+ if (rsp.ok) {
58
+ return rsp.text().then((svgContent) => {
59
+ if (svgContent && sanitize !== false) {
60
+ svgContent = validateContent(svgContent);
61
+ }
62
+ roadassetContent.set(url, svgContent || '');
63
+ });
64
+ }
65
+ roadassetContent.set(url, '');
66
+ });
67
+ // cache for the same requests
68
+ requests.set(url, req);
69
+ }
70
+ else {
71
+ // set to empty for ssr scenarios and resolve promise
72
+ roadassetContent.set(url, '');
73
+ return Promise.resolve();
74
+ }
75
+ }
76
+ return req;
77
+ };
78
+
79
+ const assetCss = ":host{box-sizing:content-box;contain:strict;display:table}.icon-inner{width:-moz-fit-content;width:fit-content}:host svg{display:block;width:100%;height:100%}";
80
+
81
+ const Asset = class {
82
+ constructor(hostRef) {
83
+ registerInstance(this, hostRef);
84
+ this.assetSvgContent = undefined;
85
+ this.isVisible = false;
86
+ this.ariaLabel = undefined;
87
+ this.ariaHidden = undefined;
88
+ this.name = undefined;
89
+ this.src = undefined;
90
+ this.asset = undefined;
91
+ this.lazy = false;
92
+ this.sanitize = true;
93
+ }
94
+ componentWillLoad() {
95
+ this.waitUntilVisible(this.el, '50px', () => {
96
+ this.isVisible = true;
97
+ this.loadAsset();
98
+ });
99
+ }
100
+ disconnectedCallback() {
101
+ if (this.io) {
102
+ this.io.disconnect();
103
+ this.io = undefined;
104
+ }
105
+ }
106
+ waitUntilVisible(el, rootMargin, cb) {
107
+ if (this.lazy && window.IntersectionObserver) {
108
+ const io = this.io = new window.IntersectionObserver((data) => {
109
+ if (data[0].isIntersecting) {
110
+ io.disconnect();
111
+ this.io = undefined;
112
+ cb();
113
+ }
114
+ }, { rootMargin });
115
+ io.observe(el);
116
+ }
117
+ else {
118
+ // browser doesn't support IntersectionObserver
119
+ // so just fallback to always show it
120
+ cb();
121
+ }
122
+ }
123
+ loadAsset() {
124
+ if (this.isVisible) {
125
+ const url = getUrl(this);
126
+ if (url) {
127
+ if (roadassetContent.has(url)) {
128
+ // sync if it's already loaded
129
+ this.assetSvgContent = roadassetContent.get(url);
130
+ }
131
+ else {
132
+ // async if it hasn't been loaded
133
+ getAssetSvgContent(url, this.sanitize).then(() => (this.assetSvgContent = roadassetContent.get(url)));
134
+ }
135
+ }
136
+ }
137
+ if (!this.ariaLabel && this.ariaHidden !== 'true') {
138
+ const label = getName(this.name, this.asset);
139
+ // user did not provide a label
140
+ // come up with the label based on the icon name
141
+ if (label) {
142
+ this.ariaLabel = label.replace(/-/g, ' ');
143
+ }
144
+ }
145
+ }
146
+ render() {
147
+ return (h(Host, { "aria-hidden": "true", role: "img" }, ((this.assetSvgContent !== '')
148
+ ? h("div", { class: "icon-inner", innerHTML: this.assetSvgContent })
149
+ : h("div", { class: "icon-inner" }))));
150
+ }
151
+ static get assetsDirs() { return ["svg"]; }
152
+ get el() { return getElement(this); }
153
+ static get watchers() { return {
154
+ "name": ["loadAsset"],
155
+ "src": ["loadAsset"],
156
+ "asset": ["loadAsset"]
157
+ }; }
158
+ };
159
+ Asset.style = assetCss;
160
+
161
+ export { Asset as road_asset };
162
+
163
+ //# sourceMappingURL=road-asset.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"road-asset.entry.js","mappings":"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","names":[],"sources":["src/components/asset/validate.ts","src/components/asset/request.ts","src/components/asset/asset.css?tag=road-asset&encapsulation=shadow","src/components/asset/asset.tsx"],"sourcesContent":["import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string) => {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', (svgClass + ' s-ion-icon').trim());\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as any)) {\n return div.innerHTML;\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const val = elm.attributes[i].value;\n if (isStr(val) && val.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as any)) {\n return false;\n }\n }\n }\n return true;\n};\n","import { validateContent } from './validate';\n\nexport const roadassetContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>();\n\nexport const getAssetSvgContent = (url: string, sanitize: boolean) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n\n if (!req) {\n if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {\n // we don't already have a request\n // @ts-ignore\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n roadassetContent.set(url, svgContent || '');\n });\n }\n roadassetContent.set(url, '');\n });\n\n // cache for the same requests\n requests.set(url, req);\n } else {\n // set to empty for ssr scenarios and resolve promise\n roadassetContent.set(url, '');\n return Promise.resolve();\n }\n }\n\n return req;\n};\n","/*\n * Asset\n *\n * Index\n */\n\n:host {\n box-sizing: content-box;\n contain: strict;\n display: table;\n}\n\n.icon-inner{\n width: fit-content;\n}\n\n:host svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n","import { Build, Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { getAssetSvgContent, roadassetContent } from './request';\nimport { getName, getUrl } from './utils';\n\n@Component({\n tag: 'road-asset',\n assetsDirs: ['svg'],\n styleUrl: 'asset.css',\n shadow: true,\n})\nexport class Asset {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLRoadAssetElement;\n\n @State() private assetSvgContent?: string;\n\n @State() private isVisible = false;\n\n\n\n /**\n * Specifies the label to use for accessibility. Defaults to the illustration name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel?: string;\n\n /**\n * Set the illustration to hidden, respectively `true`, to remove it from the accessibility tree.\n */\n @Prop({ reflect: true }) ariaHidden?: string;\n\n /**\n * Specifies which illustration to use from the built-in set of illustrations.\n */\n @Prop() name?: string;\n\n /**\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n /**\n * A combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() asset?: any;\n\n /**\n * If enabled, road-illustration will be loaded lazily when it's visible in the viewport.\n * Default, `false`.\n */\n @Prop() lazy: boolean = false;\n\n /**\n * When set to `false`, SVG content that is HTTP fetched will not be checked\n * if the response SVG content has any `<script>` elements, or any attributes\n * that start with `on`, such as `onclick`.\n */\n @Prop() sanitize = true;\n\n componentWillLoad() {\n\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadAsset();\n });\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n private waitUntilVisible(el: HTMLRoadAssetElement, rootMargin: string, cb: () => void) {\n if (this.lazy && (window as any).IntersectionObserver) {\n const io = this.io = new (window as any).IntersectionObserver((data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n }, { rootMargin });\n\n io.observe(el);\n\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('asset')\n loadAsset() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (roadassetContent.has(url)) {\n // sync if it's already loaded\n this.assetSvgContent = roadassetContent.get(url);\n } else {\n // async if it hasn't been loaded\n getAssetSvgContent(url, this.sanitize).then(() => (this.assetSvgContent = roadassetContent.get(url)));\n }\n }\n }\n\n if (!this.ariaLabel && this.ariaHidden !== 'true') {\n const label = getName(this.name, this.asset);\n // user did not provide a label\n // come up with the label based on the icon name\n if (label) {\n this.ariaLabel = label.replace(/-/g, ' ');\n }\n }\n }\n\n render() {\n\n return (\n <Host aria-hidden=\"true\" role=\"img\">\n {(\n (this.assetSvgContent !== '')\n ? <div class=\"icon-inner\" innerHTML={this.assetSvgContent}></div>\n : <div class=\"icon-inner\"></div>\n )}\n </Host>\n );\n }\n}"],"version":3}
@@ -20,7 +20,7 @@ const Badge = class {
20
20
  };
21
21
  Badge.style = badgeCss;
22
22
 
23
- const buttonCss = ":host{--border-radius:0.25rem;--font-size:var(--road-button-medium);--margin-bottom:1rem;--padding-start:1.5rem;--padding-end:1.5rem;box-sizing:border-box;display:inline-flex;display:-webkit-inline-flex;align-items:center;justify-content:center;height:3rem;padding:0;margin-bottom:var(--margin-bottom);font-family:var(--road-font, sans-serif);font-size:var(--font-size);font-weight:700;line-height:1.375;color:var(--road-grey-10);text-decoration:none;white-space:nowrap;vertical-align:middle;background:transparent;border:1px solid transparent;border-radius:var(--border-radius);transition:background 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}:host(:hover){text-decoration:none}:host(.focus-visible){outline:0}.button-native{position:relative;display:flex;flex-flow:row nowrap;flex-shrink:0;align-items:center;justify-content:center;width:100%;height:100%;padding:0 var(--padding-end) 0 var(--padding-start);margin:0;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;color:inherit;text-align:inherit;text-decoration:none;text-indent:inherit;text-overflow:inherit;text-transform:inherit;letter-spacing:inherit;white-space:inherit;cursor:pointer;background:transparent;border:none;outline:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}:host(.btn-default:not([disabled]).focus-visible){background:var(--road-grey-80)}:host(.btn-primary){color:var(--road-on-button-primary);background:var(--road-button-primary)}:host(.btn-primary) ::slotted(road-icon){color:var(--road-on-button-primary)}:host(.btn-primary:not([disabled]):hover),:host(.btn-primary:not([disabled]).focus-visible){background:var(--road-button-primary-variant)}:host(.btn-secondary){color:var(--road-on-button-secondary);background:var(--road-button-secondary)}:host(.btn-secondary) ::slotted(road-icon){color:var(--road-on-button-secondary)}:host(.btn-secondary:not([disabled]):hover),:host(.btn-secondary:not([disabled]).focus-visible){background:var(--road-button-secondary-variant)}:host(.btn-link){font-weight:400;color:var(--road-link-primary);text-decoration:underline;background:transparent}:host(.btn-link:not([disabled]):hover),:host(.btn-link:not([disabled]).focus-visible){color:var(--road-primary-30)}:host(.btn-outline-primary),:host(.btn-outline-secondary),:host(.btn-outline-default){background:transparent}:host(.btn-outline-default){color:var(--road-on-surface-weak);background:var(--road-surface);border-color:var(--road-outline)}:host(.btn-outline-default) ::slotted(road-icon){color:var(--road-on-surface-weak)}:host(.btn-outline-default:hover),:host(.btn-outline-default.focus-visible){background:var(--road-grey-80)}:host(.btn-ghost) ::slotted(road-icon){color:var(--road-icon)}:host(.btn-ghost:hover),:host(.btn-ghost.focus-visible){background:var(--road-button-ghost-variant)}:host(.btn-outline-primary){color:var(--road-button-primary);border-color:var(--road-button-primary)}:host(.btn-outline-primary) ::slotted(road-icon){color:var(--road-button-primary)}:host(.btn-outline-primary:hover),:host(.btn-outline-primary.focus-visible){background:var(--road-button-tertiary-variant)}:host(.btn-outline-secondary){color:var(--road-button-secondary);border-color:var(--road-button-secondary)}:host(.btn-outline-secondary) ::slotted(road-icon){color:var(--road-button-secondary)}:host(.btn-outline-secondary:hover),:host(.btn-outline-secondary.focus-visible){background:var(--road-button-tertiary-variant)}:host([aria-disabled]){color:var(--road-on-surface-disabled);pointer-events:none;cursor:not-allowed;background-color:var(--road-surface-disabled);border-color:1px solid var(--road-surface-disabled)}:host([aria-disabled]) ::slotted(road-icon){color:var(--road-on-surface-disabled)}.button-native:disabled{cursor:not-allowed}::slotted([slot=\"start\"]){margin-right:0.5rem}::slotted([slot=\"end\"]){margin-left:0.5rem}:host(.btn-xl){height:3.5rem}:host(.btn-xl) ::slotted(road-icon){width:2rem;height:2rem}:host(.btn-icon.btn-xl){width:56px}:host(.btn-lg){height:3rem}:host(.btn-lg) ::slotted(road-icon){width:2rem;height:2rem}:host(.btn-icon.btn-lg){width:48px}:host(.btn-md){--font-size:var(--road-font-size-14);height:2.5rem}:host(.btn-md) ::slotted(road-icon){width:1.5rem;height:1.5rem}:host(.btn-icon.btn-md){width:40px}:host(.btn-sm){--font-size:var(--road-font-size-14);height:2rem}:host(.btn-sm) ::slotted(road-icon){width:1.25rem;height:1.25rem}:host(.btn-icon.btn-sm){width:32px}:host(.btn-block){width:100%}:host(.btn-icon) .button-native{padding:0}::slotted(road-badge){position:absolute;top:4px;left:calc(50% + 0.375rem);box-sizing:border-box;height:auto}";
23
+ const buttonCss = ":host{--border-radius:0.25rem;--font-size:var(--road-button-medium);--margin-bottom:1rem;--padding-start:1.5rem;--padding-end:1.5rem;box-sizing:border-box;display:inline-flex;display:-webkit-inline-flex;align-items:center;justify-content:center;height:3rem;padding:0;margin-bottom:var(--margin-bottom);font-family:var(--road-font, sans-serif);font-size:var(--font-size);font-weight:700;line-height:1.375;color:var(--road-grey-10);text-decoration:none;white-space:nowrap;vertical-align:middle;background:transparent;border:1px solid transparent;border-radius:var(--border-radius);transition:background 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}:host(:hover){text-decoration:none}:host(.focus-visible){text-decoration:underline;outline:auto}.button-native{position:relative;display:flex;flex-flow:row nowrap;flex-shrink:0;align-items:center;justify-content:center;width:100%;height:100%;padding:0 var(--padding-end) 0 var(--padding-start);margin:0;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;color:inherit;text-align:inherit;text-decoration:none;text-indent:inherit;text-overflow:inherit;text-transform:inherit;letter-spacing:inherit;white-space:inherit;cursor:pointer;background:transparent;border:none;outline:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}:host(.btn-default:not([disabled]).focus-visible){background:var(--road-grey-80)}:host(.btn-primary){color:var(--road-on-button-primary);background:var(--road-button-primary)}:host(.btn-primary) ::slotted(road-icon){color:var(--road-on-button-primary)}:host(.btn-primary:not([disabled]):hover),:host(.btn-primary:not([disabled]).focus-visible){background:var(--road-button-primary-variant);outline:0}:host(.btn-secondary){color:var(--road-on-button-secondary);background:var(--road-button-secondary)}:host(.btn-secondary) ::slotted(road-icon){color:var(--road-on-button-secondary)}:host(.btn-secondary:not([disabled]):hover),:host(.btn-secondary:not([disabled]).focus-visible){background:var(--road-button-secondary-variant)}:host(.btn-link){font-weight:400;color:var(--road-link-primary);text-decoration:underline;background:transparent}:host(.btn-link:not([disabled]):hover),:host(.btn-link:not([disabled]).focus-visible){color:var(--road-primary-30)}:host(.btn-outline-primary),:host(.btn-outline-secondary),:host(.btn-outline-default){background:transparent}:host(.btn-outline-default){color:var(--road-on-surface-weak);background:var(--road-surface);border-color:var(--road-outline)}:host(.btn-outline-default) ::slotted(road-icon){color:var(--road-on-surface-weak)}:host(.btn-outline-default:hover),:host(.btn-outline-default.focus-visible){background:var(--road-grey-80)}:host(.btn-ghost) ::slotted(road-icon){color:var(--road-icon)}:host(.btn-ghost:hover),:host(.btn-ghost.focus-visible){background:var(--road-button-ghost-variant)}:host([aria-disabled].btn-outline-primary){background:none}:host(.btn-outline-primary){color:var(--road-button-primary);border-color:var(--road-button-tertiary-outline)}:host(.btn-outline-primary) ::slotted(road-icon){color:var(--road-button-primary)}:host(.btn-outline-primary:hover),:host(.btn-outline-primary.focus-visible){background:var(--road-button-tertiary-variant)}:host(.btn-outline-secondary){color:var(--road-button-secondary);border-color:var(--road-button-secondary)}:host(.btn-outline-secondary) ::slotted(road-icon){color:var(--road-button-secondary)}:host(.btn-outline-secondary:hover),:host(.btn-outline-secondary.focus-visible){background:var(--road-button-tertiary-variant)}:host([aria-disabled]){color:var(--road-on-surface-disabled);pointer-events:none;cursor:not-allowed;background-color:var(--road-surface-disabled);border-color:1px solid var(--road-surface-disabled)}:host([aria-disabled]) ::slotted(road-icon){color:var(--road-on-surface-disabled)}.button-native:disabled{cursor:not-allowed}::slotted([slot=\"start\"]){margin-right:0.5rem}::slotted([slot=\"end\"]){margin-left:0.5rem}:host(.btn-xl){height:3.5rem}:host(.btn-xl) ::slotted(road-icon){width:2rem;height:2rem}:host(.btn-icon.btn-xl){width:56px}:host(.btn-lg){height:3rem}:host(.btn-lg) ::slotted(road-icon){width:2rem;height:2rem}:host(.btn-icon.btn-lg){width:48px}:host(.btn-md){--font-size:var(--road-font-size-14);height:2.5rem}:host(.btn-md) ::slotted(road-icon){width:1.5rem;height:1.5rem}:host(.btn-icon.btn-md){width:40px}:host(.btn-sm){--font-size:var(--road-font-size-14);height:2rem}:host(.btn-sm) ::slotted(road-icon){width:1.25rem;height:1.25rem}:host(.btn-icon.btn-sm){width:32px}:host(.btn-block){width:100%}:host(.btn-icon) .button-native{padding:0}::slotted(road-badge){position:absolute;top:4px;left:calc(50% + 0.375rem);box-sizing:border-box;height:auto}";
24
24
 
25
25
  const Button = class {
26
26
  constructor(hostRef) {
@@ -99,7 +99,7 @@ const Col = class {
99
99
  };
100
100
  Col.style = colCss;
101
101
 
102
- const counterCss = ".sc-road-counter-h{position:relative;z-index:0;display:block}road-input.sc-road-counter{--input-text-align:center;--border-radius:0;--margin-bottom:0}.test.sc-road-counter{display:none}road-button.sc-road-counter{width:3rem;font-size:var(--road-font-size-24);line-height:1.4;background:var(--road-surface);border:1px solid var(--road-button-tertiary-outline)}road-button.sc-road-counter:hover,road-button.sc-road-counter:focus{background:var(--road-button-tertiary-variant)}road-button.sc-road-counter road-icon.sc-road-counter{display:flex;fill:var(--road-primary)}.disabled.sc-road-counter{margin-right:-1px;margin-left:-1px;pointer-events:none;cursor:not-allowed;background:var(--road-surface-disabled);border:1px solid var(--road-on-surface-disabled);opacity:inherit}.disabled.sc-road-counter:focus{background:var(--road-disabled)}.disabled.sc-road-counter road-icon.sc-road-counter{fill:var(--road-grey-50)}road-button.btn-md.sc-road-counter{width:2.5rem}road-button.btn-sm.sc-road-counter{width:2rem}.counter-md.sc-road-counter{height:2.5rem}.counter-sm.sc-road-counter{height:2rem}.counter-md.sc-road-counter road-input.sc-road-counter{--height:2.5rem}.counter-md.sc-road-counter road-button.sc-road-counter{min-width:2.5rem}.counter-sm.sc-road-counter road-input.sc-road-counter{--height:2rem}.counter-sm.sc-road-counter road-button.sc-road-counter{min-width:2rem}";
102
+ const counterCss = ".sc-road-counter-h{position:relative;z-index:0;display:block}road-input.sc-road-counter{--input-text-align:center;--border-radius:0;--margin-bottom:0}road-button.sc-road-counter{width:3rem;font-size:var(--road-font-size-24);line-height:1.4;background:var(--road-surface);border:1px solid var(--road-button-tertiary-outline)}road-button.sc-road-counter:hover,road-button.sc-road-counter:focus{background:var(--road-button-tertiary-variant)}road-button.sc-road-counter road-icon.sc-road-counter{display:flex;fill:var(--road-primary)}.disabled.sc-road-counter{margin-right:-1px;margin-left:-1px;pointer-events:none;cursor:not-allowed;background:var(--road-surface-disabled);border:1px solid var(--road-on-surface-disabled);opacity:inherit}.disabled.sc-road-counter:focus{background:var(--road-disabled)}.disabled.sc-road-counter road-icon.sc-road-counter{fill:var(--road-grey-50)}road-button.btn-md.sc-road-counter{width:2.5rem}road-button.btn-sm.sc-road-counter{width:2rem}.counter-md.sc-road-counter{height:2.5rem}.counter-sm.sc-road-counter{height:2rem}.counter-md.sc-road-counter road-input.sc-road-counter{--height:2.5rem}.counter-md.sc-road-counter road-button.sc-road-counter{min-width:2.5rem}.counter-sm.sc-road-counter road-input.sc-road-counter{--height:2rem}.counter-sm.sc-road-counter road-button.sc-road-counter{min-width:2rem}";
103
103
 
104
104
  const Counter = class {
105
105
  constructor(hostRef) {
@@ -198,7 +198,17 @@ const Counter = class {
198
198
  this.onValueChange(this.value);
199
199
  }
200
200
  componentDidLoad() {
201
- // Cacher le label pour accessibilité
201
+ const buttons = this.el.querySelectorAll('road-button');
202
+ // Ajouter les événements pour chaque road-button
203
+ buttons.forEach((btn) => {
204
+ btn.addEventListener('touchstart', () => {
205
+ btn.style.backgroundColor = 'var(--road-button-tertiary-variant)'; // Appliquer le style hover
206
+ });
207
+ btn.addEventListener('touchend', () => {
208
+ btn.style.backgroundColor = 'var(--road-surface)'; // Supprimer le style hover après touchend
209
+ });
210
+ });
211
+ // Accessibilité : Cacher le label
202
212
  const label = this.el.querySelector('.form-label');
203
213
  const input = this.el.querySelector('.form-control.sc-road-input');
204
214
  if (label) {
@@ -259,6 +269,8 @@ const Drawer = class {
259
269
  this.backText = undefined;
260
270
  this.drawerTitle = undefined;
261
271
  this.ariaLabel = undefined;
272
+ this.ariaLabelBack = undefined;
273
+ this.ariaLabelClose = undefined;
262
274
  this.hasCloseIcon = true;
263
275
  }
264
276
  /**
@@ -279,9 +291,22 @@ const Drawer = class {
279
291
  async back() {
280
292
  this.onBack.emit();
281
293
  }
294
+ // @Watch('isOpen')
295
+ // handleOpen(openValue: boolean) {
296
+ // if(openValue === true) {
297
+ // this.onOpen.emit();
298
+ // } else {
299
+ // this.el.addEventListener('transitionend', () => {
300
+ // this.onClose.emit();
301
+ // this.el.shadowRoot && ((this.el.shadowRoot.querySelector('.drawer-body') as HTMLElement).scrollTop = 0);
302
+ // }, { once: true});
303
+ // }
304
+ // }
282
305
  handleOpen(openValue) {
283
306
  if (openValue === true) {
284
307
  this.onOpen.emit();
308
+ // Focus the first button element after the drawer is opened
309
+ setTimeout(() => this.focusFirstButton(), 50); // Add a slight delay to ensure the element is rendered
285
310
  }
286
311
  else {
287
312
  this.el.addEventListener('transitionend', () => {
@@ -290,6 +315,16 @@ const Drawer = class {
290
315
  }, { once: true });
291
316
  }
292
317
  }
318
+ /**
319
+ * Find and focus the first button element in the drawer
320
+ */
321
+ focusFirstButton() {
322
+ var _a;
323
+ const buttonElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button');
324
+ if (buttonElement) {
325
+ buttonElement.focus(); // Focus the first button element
326
+ }
327
+ }
293
328
  /**
294
329
  * Close the dialog when press Escape key
295
330
  */
@@ -314,9 +349,11 @@ const Drawer = class {
314
349
  const drawerIsOpenClass = this.isOpen ? 'drawer-open' : '';
315
350
  const inverseHeaderClass = this.hasInverseHeader ? 'drawer-header-inverse' : '';
316
351
  const ariaLabel = this.ariaLabel !== undefined ? this.ariaLabel : 'drawer';
352
+ const ariaLabelBack = this.ariaLabelBack !== undefined ? this.ariaLabelBack : 'Back';
353
+ const ariaLabelClose = this.ariaLabelClose !== undefined ? this.ariaLabelClose : 'Close';
317
354
  const drawerDelimiterClass = this.drawerTitle !== undefined && !this.hasInverseHeader ? 'drawer-delimiter' : '';
318
- const backIconElement = this.hasBackIcon ? h("button", { type: "button", class: "drawer-action", "aria-label": "Back", onClick: this.onClickBack }, h("road-icon", { icon: navigationChevron, rotate: "180" }), this.backText) : '';
319
- const closeIconElement = this.hasCloseIcon ? h("button", { type: "button", class: "drawer-close", onClick: this.onClick, "aria-label": "Close" }, h("road-icon", { icon: navigationClose, "aria-hidden": "true" })) : '';
355
+ const backIconElement = this.hasBackIcon ? h("button", { type: "button", class: "drawer-action", "aria-label": `${ariaLabelBack}`, onClick: this.onClickBack }, h("road-icon", { icon: navigationChevron, rotate: "180" }), this.backText) : '';
356
+ const closeIconElement = this.hasCloseIcon ? h("button", { type: "button", class: "drawer-close", onClick: this.onClick, "aria-label": `${ariaLabelClose}` }, h("road-icon", { icon: navigationClose, "aria-hidden": "true" })) : '';
320
357
  const drawerWidthValue = this.position === 'bottom' ? '100%' : this.drawerWidth + 'px';
321
358
  return (h(Host, { class: `${drawerIsOpenClass} drawer-${this.position}`, tabindex: "0", role: "dialog", "aria-label": `${ariaLabel}` }, h("div", { class: "drawer-overlay", onClick: this.onClick, tabindex: "-1" }), h("div", { class: "drawer-dialog", style: { maxWidth: `${drawerWidthValue}` }, role: "document", tabindex: "0" }, h("div", { class: "drawer-content" }, h("header", { class: `drawer-header ${inverseHeaderClass} ${drawerDelimiterClass}` }, backIconElement, this.drawerTitle !== undefined ? h("h2", { class: "drawer-title" }, this.drawerTitle) : h("div", { class: "drawer-title" }, h("slot", { name: "title" })), closeIconElement), h("div", { class: "drawer-body" }, h("slot", null)), this.hasFooterContent() && (h("footer", { class: "drawer-footer" }, h("slot", { name: "footer" })))))));
322
359
  }
@@ -17692,7 +17729,7 @@ var lodash = createCommonjsModule(function (module, exports) {
17692
17729
  }.call(commonjsGlobal));
17693
17730
  });
17694
17731
 
17695
- const inputCss = ".sc-road-input-h{--height:3rem;--border-radius:0.25rem;--input-text-align:left;--margin-bottom:1rem;position:relative;display:block;margin-bottom:var(--margin-bottom);font-family:var(--road-font, sans-serif);color:var(--road-grey-10)}.form-control.sc-road-input{box-sizing:border-box;display:block;width:100%;height:var(--height);padding:0.75rem 1rem 0;margin:0;font-size:var(--road-body-medium);color:var(--road-on-surface);text-align:var(--input-text-align);background:var(--road-surface);border:1px solid var(--road-input-outline);border-radius:var(--border-radius);box-shadow:none;appearance:none}.form-control[type=\"number\"].sc-road-input{appearance:textfield}.form-control.sc-road-input::-webkit-calendar-picker-indicator{margin-top:-0.75rem}.form-control.sc-road-input::-webkit-date-and-time-value{padding-top:0.625rem}.form-control.sc-road-input::placeholder{color:var(--road-on-surface-extra-weak);opacity:1}@media (hover: hover){.form-control.sc-road-input:not(:disabled):hover{border-color:var(--road-input-outline-variant)}}.form-control.sc-road-input:focus~.form-label.sc-road-input,.form-control[required].sc-road-input:valid~.form-label.sc-road-input,.form-control.has-value.sc-road-input~.form-label.sc-road-input,.form-control[type=\"date\"].sc-road-input~.form-label.sc-road-input,.form-control[type=\"time\"].sc-road-input~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:placeholder-shown~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:-ms-input-placeholder~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:not(:disabled):focus,.form-control[autofocus].sc-road-input{border-color:var(--road-input-outline-variant);outline:0}.form-control.sc-road-input:disabled,.form-control[readonly].sc-road-input{color:var(--road-on-surface-disabled);cursor:not-allowed;background:var(--road-surface-disabled);opacity:1}.form-label.sc-road-input{position:absolute;top:0.75rem;left:1rem;display:block;font-size:var(--road-body-medium);line-height:1.5;color:var(--road-on-surface-weak);pointer-events:none;transition:transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;transform-origin:0 0}.form-control.sc-road-input:required~.form-label.sc-road-input::after{color:var(--road-danger-default);content:\" *\"}.sc-road-input-h:has([disabled]) .form-label.sc-road-input{color:var(--road-on-surface-disabled)}.less-label.sc-road-input{padding-top:0}.input-xl.sc-road-input-h{--height:3.5rem}.input-xl.sc-road-input-h .form-control.sc-road-input{padding:1rem 1rem 0}.phone-number.sc-road-input-h .form-control.sc-road-input{padding-left:2rem}.phone-number.sc-road-input-h .form-label.sc-road-input{left:2rem}.input-xl.sc-road-input-h .form-label.sc-road-input{top:1rem}.input-xl.sc-road-input-h .form-control.sc-road-input:focus~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[autofocus].sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[required].sc-road-input:valid~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control.has-value.sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[type=\"date\"].sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[type=\"time\"].sc-road-input~.form-label.sc-road-input{transform:scale(0.75) translateY(-0.625rem)}.input-xl.sc-road-input-h .form-control.sc-road-input:placeholder-shown~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.invalid-feedback.sc-road-input{display:none;width:100%;margin-top:0.5rem;font-size:var(--road-helper-medium);color:var(--road-on-danger-surface)}.invalid-feedback.sc-road-input road-icon.sc-road-input{color:var(--road-danger-icon);margin-right:var(--road-spacing-02)}.form-control.is-invalid.sc-road-input,.was-validated.sc-road-input .form-control.sc-road-input:invalid{border-color:var(--road-danger-outline)}.form-control.is-invalid.sc-road-input~.invalid-feedback.sc-road-input,.was-validated.sc-road-input .form-control.sc-road-input:invalid~.invalid-feedback.sc-road-input{display:flex}.helper.sc-road-input{margin-top:0.5rem;font-size:var(--road-body-small);color:var(--road-on-surface-weak)}.form-control[type=\"password\"].sc-road-input~.checklist-password.sc-road-input .invalid.sc-road-input{color:var(--road-on-surface-weak)}";
17732
+ const inputCss = ".sc-road-input-h{--height:3rem;--border-radius:0.25rem;--input-text-align:left;--margin-bottom:1rem;position:relative;display:block;margin-bottom:var(--margin-bottom);font-family:var(--road-font, sans-serif);color:var(--road-grey-10)}.form-control.sc-road-input{box-sizing:border-box;display:block;width:100%;height:var(--height);padding:0.75rem 1rem 0;margin:0;font-size:var(--road-body-medium);color:var(--road-on-surface);text-align:var(--input-text-align);background:var(--road-surface);border:1px solid var(--road-input-outline);border-radius:var(--border-radius);box-shadow:none;appearance:none}.form-control[type=\"number\"].sc-road-input{appearance:textfield}.form-control.sc-road-input::-webkit-calendar-picker-indicator{margin-top:-0.75rem}.form-control.sc-road-input::-webkit-date-and-time-value{padding-top:0.625rem}.form-control.sc-road-input::placeholder{color:var(--road-on-surface-extra-weak);opacity:1}@media (hover: hover){.form-control.sc-road-input:not(:disabled):hover{border-color:var(--road-input-outline-variant)}}.form-control.sc-road-input:focus~.form-label.sc-road-input,.form-control[required].sc-road-input:valid~.form-label.sc-road-input,.form-control.has-value.sc-road-input~.form-label.sc-road-input,.form-control[type=\"date\"].sc-road-input~.form-label.sc-road-input,.form-control[type=\"time\"].sc-road-input~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:placeholder-shown~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:-ms-input-placeholder~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.form-control.sc-road-input:not(:disabled):focus,.form-control[autofocus].sc-road-input,.form-control.sc-road-input:focus-visible{border-color:var(--road-input-outline-variant)}.form-control.sc-road-input:disabled,.form-control[readonly].sc-road-input{color:var(--road-on-surface-disabled);cursor:not-allowed;background:var(--road-surface-disabled);opacity:1}.form-label.sc-road-input{position:absolute;top:0.75rem;left:1rem;display:block;font-size:var(--road-body-medium);line-height:1.5;color:var(--road-on-surface-weak);pointer-events:none;transition:transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;transform-origin:0 0}.form-control.sc-road-input:required~.form-label.sc-road-input::after{color:var(--road-danger-default);content:\" *\"}.sc-road-input-h:has([disabled]) .form-label.sc-road-input{color:var(--road-on-surface-disabled)}.less-label.sc-road-input{padding-top:0}.input-xl.sc-road-input-h{--height:3.5rem}.input-xl.sc-road-input-h .form-control.sc-road-input{padding:1rem 1rem 0}.phone-number.sc-road-input-h .form-control.sc-road-input{padding-left:2rem}.phone-number.sc-road-input-h .form-label.sc-road-input{left:2rem}.input-xl.sc-road-input-h .form-label.sc-road-input{top:1rem}.input-xl.sc-road-input-h .form-control.sc-road-input:focus~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[autofocus].sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[required].sc-road-input:valid~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control.has-value.sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[type=\"date\"].sc-road-input~.form-label.sc-road-input,.input-xl.sc-road-input-h .form-control[type=\"time\"].sc-road-input~.form-label.sc-road-input{transform:scale(0.75) translateY(-0.625rem)}.input-xl.sc-road-input-h .form-control.sc-road-input:placeholder-shown~.form-label.sc-road-input{transform:scale(0.625) translateY(-0.625rem)}.invalid-feedback.sc-road-input{display:none;width:100%;margin-top:0.5rem;font-size:var(--road-helper-medium);color:var(--road-on-danger-surface)}.invalid-feedback.sc-road-input road-icon.sc-road-input{color:var(--road-danger-icon);margin-right:var(--road-spacing-02)}.form-control.is-invalid.sc-road-input,.was-validated.sc-road-input .form-control.sc-road-input:invalid{border-color:var(--road-danger-outline)}.form-control.is-invalid.sc-road-input~.invalid-feedback.sc-road-input,.was-validated.sc-road-input .form-control.sc-road-input:invalid~.invalid-feedback.sc-road-input{display:flex}.helper.sc-road-input{margin-top:0.5rem;font-size:var(--road-body-small);color:var(--road-on-surface-weak)}.form-control[type=\"password\"].sc-road-input~.checklist-password.sc-road-input .invalid.sc-road-input{color:var(--road-on-surface-weak)}";
17696
17733
 
17697
17734
  const Input = class {
17698
17735
  constructor(hostRef) {