vira 32.0.0-beta.0 → 32.0.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 (288) hide show
  1. package/dist/elements/color/vira-all-color-space-sliders.element.d.ts +11 -0
  2. package/dist/elements/color/vira-all-color-space-sliders.element.js +55 -0
  3. package/dist/elements/color/vira-all-spaces-color-picker.element.d.ts +15 -0
  4. package/dist/elements/color/vira-all-spaces-color-picker.element.js +73 -0
  5. package/dist/elements/color/vira-color-details.element.d.ts +14 -0
  6. package/{src/elements/color/vira-color-details.element.ts → dist/elements/color/vira-color-details.element.js} +43 -59
  7. package/dist/elements/color/vira-color-format-sliders.element.d.ts +14 -0
  8. package/dist/elements/color/vira-color-format-sliders.element.js +60 -0
  9. package/dist/elements/color/vira-color-pair-contrast-summary.element.d.ts +9 -0
  10. package/{src/elements/color/vira-color-pair-contrast-summary.element.ts → dist/elements/color/vira-color-pair-contrast-summary.element.js} +68 -100
  11. package/dist/elements/color/vira-color-pair.element.d.ts +17 -0
  12. package/{src/elements/color/vira-color-pair.element.ts → dist/elements/color/vira-color-pair.element.js} +50 -71
  13. package/dist/elements/color/vira-color-picker.element.d.ts +20 -0
  14. package/{src/elements/color/vira-color-picker.element.ts → dist/elements/color/vira-color-picker.element.js} +92 -117
  15. package/dist/elements/color/vira-color-slider.element.d.ts +14 -0
  16. package/dist/elements/color/vira-color-slider.element.js +124 -0
  17. package/dist/elements/color/vira-color-swatch.element.d.ts +20 -0
  18. package/{src/elements/color/vira-color-swatch.element.ts → dist/elements/color/vira-color-swatch.element.js} +6 -16
  19. package/dist/elements/color/vira-contrast-indicator.element.d.ts +10 -0
  20. package/{src/elements/color/vira-contrast-indicator.element.ts → dist/elements/color/vira-contrast-indicator.element.js} +13 -28
  21. package/dist/elements/index.js +39 -0
  22. package/dist/elements/pop-up/vira-menu-item.element.d.ts +38 -0
  23. package/{src/elements/pop-up/vira-menu-item.element.ts → dist/elements/pop-up/vira-menu-item.element.js} +80 -117
  24. package/dist/elements/pop-up/vira-menu-trigger.element.d.ts +45 -0
  25. package/dist/elements/pop-up/vira-menu-trigger.element.js +100 -0
  26. package/dist/elements/pop-up/vira-menu.element.d.ts +36 -0
  27. package/{src/elements/pop-up/vira-menu.element.ts → dist/elements/pop-up/vira-menu.element.js} +28 -31
  28. package/dist/elements/pop-up/vira-pop-up-trigger.element.d.ts +109 -0
  29. package/dist/elements/pop-up/vira-pop-up-trigger.element.js +408 -0
  30. package/dist/elements/vira-absolute-time.element.d.ts +35 -0
  31. package/dist/elements/vira-absolute-time.element.js +43 -0
  32. package/dist/elements/vira-bold-text.element.d.ts +9 -0
  33. package/{src/elements/vira-bold-text.element.ts → dist/elements/vira-bold-text.element.js} +11 -10
  34. package/dist/elements/vira-button.element.d.ts +44 -0
  35. package/{src/elements/vira-button.element.ts → dist/elements/vira-button.element.js} +107 -255
  36. package/dist/elements/vira-card.element.d.ts +18 -0
  37. package/{src/elements/vira-card.element.ts → dist/elements/vira-card.element.js} +19 -18
  38. package/dist/elements/vira-checkbox.element.d.ts +44 -0
  39. package/{src/elements/vira-checkbox.element.ts → dist/elements/vira-checkbox.element.js} +48 -95
  40. package/dist/elements/vira-collapsible-card.element.d.ts +36 -0
  41. package/{src/elements/vira-collapsible-card.element.ts → dist/elements/vira-collapsible-card.element.js} +44 -71
  42. package/dist/elements/vira-collapsible-wrapper.element.d.ts +30 -0
  43. package/{src/elements/vira-collapsible-wrapper.element.ts → dist/elements/vira-collapsible-wrapper.element.js} +47 -59
  44. package/dist/elements/vira-date-input.element.d.ts +47 -0
  45. package/dist/elements/vira-date-input.element.js +142 -0
  46. package/dist/elements/vira-drawer.element.d.ts +24 -0
  47. package/{src/elements/vira-drawer.element.ts → dist/elements/vira-drawer.element.js} +98 -125
  48. package/dist/elements/vira-dropdown.element.d.ts +43 -0
  49. package/dist/elements/vira-dropdown.element.js +247 -0
  50. package/dist/elements/vira-error.element.d.ts +7 -0
  51. package/{src/elements/vira-error.element.ts → dist/elements/vira-error.element.js} +7 -8
  52. package/dist/elements/vira-form.element.d.ts +56 -0
  53. package/dist/elements/vira-form.element.js +376 -0
  54. package/dist/elements/vira-icon.element.d.ts +13 -0
  55. package/{src/elements/vira-icon.element.ts → dist/elements/vira-icon.element.js} +12 -16
  56. package/dist/elements/vira-image.element.d.ts +45 -0
  57. package/{src/elements/vira-image.element.ts → dist/elements/vira-image.element.js} +50 -70
  58. package/dist/elements/vira-input.element.d.ts +64 -0
  59. package/{src/elements/vira-input.element.ts → dist/elements/vira-input.element.js} +112 -167
  60. package/dist/elements/vira-json-form.element.d.ts +35 -0
  61. package/{src/elements/vira-json-form.element.ts → dist/elements/vira-json-form.element.js} +356 -522
  62. package/dist/elements/vira-link.element.d.ts +78 -0
  63. package/{src/elements/vira-link.element.ts → dist/elements/vira-link.element.js} +24 -83
  64. package/dist/elements/vira-modal.element.d.ts +40 -0
  65. package/{src/elements/vira-modal.element.ts → dist/elements/vira-modal.element.js} +68 -104
  66. package/dist/elements/vira-progress.element.d.ts +18 -0
  67. package/{src/elements/vira-progress.element.ts → dist/elements/vira-progress.element.js} +12 -25
  68. package/dist/elements/vira-relative-time.element.d.ts +42 -0
  69. package/dist/elements/vira-relative-time.element.js +96 -0
  70. package/dist/elements/vira-select.element.d.ts +44 -0
  71. package/{src/elements/vira-select.element.ts → dist/elements/vira-select.element.js} +89 -138
  72. package/dist/elements/vira-tabs.element.d.ts +124 -0
  73. package/{src/elements/vira-tabs.element.ts → dist/elements/vira-tabs.element.js} +242 -446
  74. package/dist/elements/vira-tag.element.d.ts +40 -0
  75. package/{src/elements/vira-tag.element.ts → dist/elements/vira-tag.element.js} +152 -266
  76. package/dist/elements/vira-text-area.element.d.ts +48 -0
  77. package/{src/elements/vira-text-area.element.ts → dist/elements/vira-text-area.element.js} +52 -70
  78. package/dist/elements/vira-theme-switcher.element.d.ts +17 -0
  79. package/{src/elements/vira-theme-switcher.element.ts → dist/elements/vira-theme-switcher.element.js} +34 -49
  80. package/dist/icons/colored-icon.d.ts +11 -0
  81. package/{src/icons/colored-icon.ts → dist/icons/colored-icon.js} +17 -24
  82. package/dist/icons/icon-css-vars.d.ts +14 -0
  83. package/{src/icons/icon-css-vars.ts → dist/icons/icon-css-vars.js} +1 -2
  84. package/{src/icons/icon-svg.ts → dist/icons/icon-svg.d.ts} +3 -15
  85. package/dist/icons/icon-svg.js +12 -0
  86. package/dist/icons/icon-svgs/16/check-16.icon.d.ts +8 -0
  87. package/{src/icons/icon-svgs/16/check-16.icon.ts → dist/icons/icon-svgs/16/check-16.icon.js} +4 -5
  88. package/dist/icons/icon-svgs/16/chevron-down-16.icon.d.ts +8 -0
  89. package/{src/icons/icon-svgs/16/chevron-down-16.icon.ts → dist/icons/icon-svgs/16/chevron-down-16.icon.js} +4 -5
  90. package/dist/icons/icon-svgs/16/chevron-up-16.icon.d.ts +8 -0
  91. package/{src/icons/icon-svgs/16/chevron-up-16.icon.ts → dist/icons/icon-svgs/16/chevron-up-16.icon.js} +4 -5
  92. package/dist/icons/icon-svgs/16/dash-16.icon.d.ts +8 -0
  93. package/{src/icons/icon-svgs/16/dash-16.icon.ts → dist/icons/icon-svgs/16/dash-16.icon.js} +4 -5
  94. package/dist/icons/icon-svgs/16/element-16.icon.d.ts +8 -0
  95. package/{src/icons/icon-svgs/16/element-16.icon.ts → dist/icons/icon-svgs/16/element-16.icon.js} +4 -5
  96. package/dist/icons/icon-svgs/16/plus-16.icon.d.ts +8 -0
  97. package/{src/icons/icon-svgs/16/plus-16.icon.ts → dist/icons/icon-svgs/16/plus-16.icon.js} +4 -5
  98. package/dist/icons/icon-svgs/16/upload-16.icon.d.ts +8 -0
  99. package/{src/icons/icon-svgs/16/upload-16.icon.ts → dist/icons/icon-svgs/16/upload-16.icon.js} +4 -5
  100. package/dist/icons/icon-svgs/16/x-16.icon.d.ts +8 -0
  101. package/{src/icons/icon-svgs/16/x-16.icon.ts → dist/icons/icon-svgs/16/x-16.icon.js} +4 -5
  102. package/dist/icons/icon-svgs/24/arrow-down-24.icon.d.ts +8 -0
  103. package/{src/icons/icon-svgs/24/arrow-down-24.icon.ts → dist/icons/icon-svgs/24/arrow-down-24.icon.js} +4 -5
  104. package/dist/icons/icon-svgs/24/arrow-left-24.icon.d.ts +8 -0
  105. package/{src/icons/icon-svgs/24/arrow-left-24.icon.ts → dist/icons/icon-svgs/24/arrow-left-24.icon.js} +4 -5
  106. package/dist/icons/icon-svgs/24/arrow-right-24.icon.d.ts +8 -0
  107. package/{src/icons/icon-svgs/24/arrow-right-24.icon.ts → dist/icons/icon-svgs/24/arrow-right-24.icon.js} +4 -5
  108. package/dist/icons/icon-svgs/24/arrow-up-24.icon.d.ts +8 -0
  109. package/{src/icons/icon-svgs/24/arrow-up-24.icon.ts → dist/icons/icon-svgs/24/arrow-up-24.icon.js} +4 -5
  110. package/dist/icons/icon-svgs/24/auto-theme-24.icon.d.ts +8 -0
  111. package/{src/icons/icon-svgs/24/auto-theme-24.icon.ts → dist/icons/icon-svgs/24/auto-theme-24.icon.js} +4 -5
  112. package/dist/icons/icon-svgs/24/bell-24.icon.d.ts +8 -0
  113. package/{src/icons/icon-svgs/24/bell-24.icon.ts → dist/icons/icon-svgs/24/bell-24.icon.js} +4 -5
  114. package/dist/icons/icon-svgs/24/chat-24.icon.d.ts +8 -0
  115. package/{src/icons/icon-svgs/24/chat-24.icon.ts → dist/icons/icon-svgs/24/chat-24.icon.js} +4 -5
  116. package/dist/icons/icon-svgs/24/check-24.icon.d.ts +8 -0
  117. package/{src/icons/icon-svgs/24/check-24.icon.ts → dist/icons/icon-svgs/24/check-24.icon.js} +4 -5
  118. package/dist/icons/icon-svgs/24/chevron-down-24.icon.d.ts +8 -0
  119. package/{src/icons/icon-svgs/24/chevron-down-24.icon.ts → dist/icons/icon-svgs/24/chevron-down-24.icon.js} +4 -5
  120. package/dist/icons/icon-svgs/24/chevron-up-24.icon.d.ts +8 -0
  121. package/{src/icons/icon-svgs/24/chevron-up-24.icon.ts → dist/icons/icon-svgs/24/chevron-up-24.icon.js} +4 -5
  122. package/dist/icons/icon-svgs/24/close-x-24.icon.d.ts +8 -0
  123. package/{src/icons/icon-svgs/24/close-x-24.icon.ts → dist/icons/icon-svgs/24/close-x-24.icon.js} +4 -5
  124. package/dist/icons/icon-svgs/24/commit-24.icon.d.ts +8 -0
  125. package/{src/icons/icon-svgs/24/commit-24.icon.ts → dist/icons/icon-svgs/24/commit-24.icon.js} +4 -5
  126. package/dist/icons/icon-svgs/24/copy-24.icon.d.ts +8 -0
  127. package/{src/icons/icon-svgs/24/copy-24.icon.ts → dist/icons/icon-svgs/24/copy-24.icon.js} +4 -5
  128. package/dist/icons/icon-svgs/24/document-24.icon.d.ts +8 -0
  129. package/{src/icons/icon-svgs/24/document-24.icon.ts → dist/icons/icon-svgs/24/document-24.icon.js} +4 -5
  130. package/dist/icons/icon-svgs/24/document-search-24.icon.d.ts +8 -0
  131. package/{src/icons/icon-svgs/24/document-search-24.icon.ts → dist/icons/icon-svgs/24/document-search-24.icon.js} +4 -5
  132. package/dist/icons/icon-svgs/24/double-chevron-24.icon.d.ts +8 -0
  133. package/{src/icons/icon-svgs/24/double-chevron-24.icon.ts → dist/icons/icon-svgs/24/double-chevron-24.icon.js} +4 -5
  134. package/dist/icons/icon-svgs/24/element-24.icon.d.ts +8 -0
  135. package/{src/icons/icon-svgs/24/element-24.icon.ts → dist/icons/icon-svgs/24/element-24.icon.js} +4 -5
  136. package/dist/icons/icon-svgs/24/external-link-24.icon.d.ts +8 -0
  137. package/{src/icons/icon-svgs/24/external-link-24.icon.ts → dist/icons/icon-svgs/24/external-link-24.icon.js} +4 -5
  138. package/dist/icons/icon-svgs/24/eye-closed-24.icon.d.ts +8 -0
  139. package/{src/icons/icon-svgs/24/eye-closed-24.icon.ts → dist/icons/icon-svgs/24/eye-closed-24.icon.js} +4 -5
  140. package/dist/icons/icon-svgs/24/eye-open-24.icon.d.ts +8 -0
  141. package/{src/icons/icon-svgs/24/eye-open-24.icon.ts → dist/icons/icon-svgs/24/eye-open-24.icon.js} +4 -5
  142. package/dist/icons/icon-svgs/24/filter-24.icon.d.ts +8 -0
  143. package/{src/icons/icon-svgs/24/filter-24.icon.ts → dist/icons/icon-svgs/24/filter-24.icon.js} +4 -5
  144. package/dist/icons/icon-svgs/24/globe-24.icon.d.ts +8 -0
  145. package/{src/icons/icon-svgs/24/globe-24.icon.ts → dist/icons/icon-svgs/24/globe-24.icon.js} +4 -5
  146. package/dist/icons/icon-svgs/24/link-24.icon.d.ts +8 -0
  147. package/{src/icons/icon-svgs/24/link-24.icon.ts → dist/icons/icon-svgs/24/link-24.icon.js} +4 -5
  148. package/dist/icons/icon-svgs/24/loader-24.icon.d.ts +8 -0
  149. package/{src/icons/icon-svgs/24/loader-24.icon.ts → dist/icons/icon-svgs/24/loader-24.icon.js} +4 -5
  150. package/dist/icons/icon-svgs/24/loader-animated-24.icon.d.ts +8 -0
  151. package/{src/icons/icon-svgs/24/loader-animated-24.icon.ts → dist/icons/icon-svgs/24/loader-animated-24.icon.js} +6 -8
  152. package/dist/icons/icon-svgs/24/lock-24.icon.d.ts +8 -0
  153. package/{src/icons/icon-svgs/24/lock-24.icon.ts → dist/icons/icon-svgs/24/lock-24.icon.js} +4 -5
  154. package/dist/icons/icon-svgs/24/magnifying-glass-24.icon.d.ts +8 -0
  155. package/{src/icons/icon-svgs/24/magnifying-glass-24.icon.ts → dist/icons/icon-svgs/24/magnifying-glass-24.icon.js} +4 -5
  156. package/dist/icons/icon-svgs/24/moon-24.icon.d.ts +8 -0
  157. package/{src/icons/icon-svgs/24/moon-24.icon.ts → dist/icons/icon-svgs/24/moon-24.icon.js} +4 -5
  158. package/dist/icons/icon-svgs/24/options-24.icon.d.ts +8 -0
  159. package/{src/icons/icon-svgs/24/options-24.icon.ts → dist/icons/icon-svgs/24/options-24.icon.js} +4 -5
  160. package/dist/icons/icon-svgs/24/pencil-24.icon.d.ts +8 -0
  161. package/{src/icons/icon-svgs/24/pencil-24.icon.ts → dist/icons/icon-svgs/24/pencil-24.icon.js} +4 -5
  162. package/dist/icons/icon-svgs/24/plus-24.icon.d.ts +8 -0
  163. package/{src/icons/icon-svgs/24/plus-24.icon.ts → dist/icons/icon-svgs/24/plus-24.icon.js} +4 -5
  164. package/dist/icons/icon-svgs/24/printer-24.icon.d.ts +8 -0
  165. package/{src/icons/icon-svgs/24/printer-24.icon.ts → dist/icons/icon-svgs/24/printer-24.icon.js} +4 -5
  166. package/dist/icons/icon-svgs/24/shield-24.icon.d.ts +8 -0
  167. package/{src/icons/icon-svgs/24/shield-24.icon.ts → dist/icons/icon-svgs/24/shield-24.icon.js} +4 -5
  168. package/dist/icons/icon-svgs/24/sort-ascending-24.icon.d.ts +8 -0
  169. package/{src/icons/icon-svgs/24/sort-ascending-24.icon.ts → dist/icons/icon-svgs/24/sort-ascending-24.icon.js} +4 -5
  170. package/dist/icons/icon-svgs/24/sort-descending-24.icon.d.ts +8 -0
  171. package/{src/icons/icon-svgs/24/sort-descending-24.icon.ts → dist/icons/icon-svgs/24/sort-descending-24.icon.js} +4 -5
  172. package/dist/icons/icon-svgs/24/sparkle-24.icon.d.ts +8 -0
  173. package/{src/icons/icon-svgs/24/sparkle-24.icon.ts → dist/icons/icon-svgs/24/sparkle-24.icon.js} +4 -5
  174. package/dist/icons/icon-svgs/24/speaker-loud-24.icon.d.ts +8 -0
  175. package/{src/icons/icon-svgs/24/speaker-loud-24.icon.ts → dist/icons/icon-svgs/24/speaker-loud-24.icon.js} +4 -5
  176. package/dist/icons/icon-svgs/24/speaker-medium-24.icon.d.ts +8 -0
  177. package/{src/icons/icon-svgs/24/speaker-medium-24.icon.ts → dist/icons/icon-svgs/24/speaker-medium-24.icon.js} +4 -5
  178. package/dist/icons/icon-svgs/24/speaker-muted-24.icon.d.ts +8 -0
  179. package/{src/icons/icon-svgs/24/speaker-muted-24.icon.ts → dist/icons/icon-svgs/24/speaker-muted-24.icon.js} +4 -5
  180. package/dist/icons/icon-svgs/24/speaker-quiet-24.icon.d.ts +8 -0
  181. package/{src/icons/icon-svgs/24/speaker-quiet-24.icon.ts → dist/icons/icon-svgs/24/speaker-quiet-24.icon.js} +4 -5
  182. package/dist/icons/icon-svgs/24/star-24.icon.d.ts +8 -0
  183. package/{src/icons/icon-svgs/24/star-24.icon.ts → dist/icons/icon-svgs/24/star-24.icon.js} +4 -5
  184. package/dist/icons/icon-svgs/24/status-failure-24.icon.d.ts +8 -0
  185. package/{src/icons/icon-svgs/24/status-failure-24.icon.ts → dist/icons/icon-svgs/24/status-failure-24.icon.js} +4 -5
  186. package/dist/icons/icon-svgs/24/status-in-progress-24.icon.d.ts +8 -0
  187. package/{src/icons/icon-svgs/24/status-in-progress-24.icon.ts → dist/icons/icon-svgs/24/status-in-progress-24.icon.js} +4 -5
  188. package/dist/icons/icon-svgs/24/status-success-24.icon.d.ts +8 -0
  189. package/{src/icons/icon-svgs/24/status-success-24.icon.ts → dist/icons/icon-svgs/24/status-success-24.icon.js} +4 -5
  190. package/dist/icons/icon-svgs/24/status-unknown-24.icon.d.ts +8 -0
  191. package/{src/icons/icon-svgs/24/status-unknown-24.icon.ts → dist/icons/icon-svgs/24/status-unknown-24.icon.js} +4 -5
  192. package/dist/icons/icon-svgs/24/status-warning-24.icon.d.ts +8 -0
  193. package/{src/icons/icon-svgs/24/status-warning-24.icon.ts → dist/icons/icon-svgs/24/status-warning-24.icon.js} +4 -5
  194. package/dist/icons/icon-svgs/24/sun-24.icon.d.ts +8 -0
  195. package/{src/icons/icon-svgs/24/sun-24.icon.ts → dist/icons/icon-svgs/24/sun-24.icon.js} +4 -5
  196. package/dist/icons/icon-svgs/24/upload-24.icon.d.ts +8 -0
  197. package/{src/icons/icon-svgs/24/upload-24.icon.ts → dist/icons/icon-svgs/24/upload-24.icon.js} +4 -5
  198. package/dist/icons/icon-svgs/24/x-24.icon.d.ts +8 -0
  199. package/{src/icons/icon-svgs/24/x-24.icon.ts → dist/icons/icon-svgs/24/x-24.icon.js} +4 -5
  200. package/dist/icons/index.d.ts +197 -0
  201. package/{src/icons/index.ts → dist/icons/index.js} +60 -65
  202. package/dist/icons/lucide-icons.d.ts +15 -0
  203. package/dist/icons/lucide-icons.js +79 -0
  204. package/dist/icons/sized-icon.d.ts +8 -0
  205. package/{src/icons/sized-icon.ts → dist/icons/sized-icon.js} +1 -3
  206. package/dist/index.js +4 -0
  207. package/dist/styles/disabled.d.ts +6 -0
  208. package/{src/styles/disabled.ts → dist/styles/disabled.js} +2 -3
  209. package/dist/styles/durations.d.ts +22 -0
  210. package/{src/styles/durations.ts → dist/styles/durations.js} +1 -2
  211. package/dist/styles/focus.d.ts +26 -0
  212. package/{src/styles/focus.ts → dist/styles/focus.js} +12 -40
  213. package/dist/styles/font.d.ts +12 -0
  214. package/{src/styles/font.ts → dist/styles/font.js} +1 -3
  215. package/dist/styles/form-styles.d.ts +46 -0
  216. package/dist/styles/form-styles.js +53 -0
  217. package/dist/styles/form-variants.d.ts +117 -0
  218. package/{src/styles/form-variants.ts → dist/styles/form-variants.js} +34 -42
  219. package/{src/styles/index.ts → dist/styles/index.d.ts} +0 -1
  220. package/dist/styles/index.js +14 -0
  221. package/dist/styles/native-styles.d.ts +13 -0
  222. package/{src/styles/native-styles.ts → dist/styles/native-styles.js} +3 -5
  223. package/dist/styles/scrollbar.d.ts +6 -0
  224. package/{src/styles/scrollbar.ts → dist/styles/scrollbar.js} +3 -4
  225. package/dist/styles/shadows.d.ts +19 -0
  226. package/{src/styles/shadows.ts → dist/styles/shadows.js} +5 -7
  227. package/dist/styles/user-select.d.ts +6 -0
  228. package/{src/styles/user-select.ts → dist/styles/user-select.js} +2 -3
  229. package/dist/styles/vira-color-palette.d.ts +178 -0
  230. package/{src/styles/vira-color-palette.ts → dist/styles/vira-color-palette.js} +1 -3
  231. package/dist/styles/vira-color-theme-object.d.ts +65 -0
  232. package/dist/styles/vira-color-theme-object.js +65 -0
  233. package/dist/styles/vira-color-theme.d.ts +2785 -0
  234. package/{src/styles/vira-color-theme.ts → dist/styles/vira-color-theme.js} +1222 -1227
  235. package/dist/util/color-local-storage.client.d.ts +4 -0
  236. package/dist/util/color-local-storage.client.js +6 -0
  237. package/dist/util/define-table.d.ts +115 -0
  238. package/dist/util/define-table.js +115 -0
  239. package/dist/util/define-vira-element.d.ts +18 -0
  240. package/dist/util/define-vira-element.js +19 -0
  241. package/dist/util/dynamic-element.d.ts +62 -0
  242. package/dist/util/dynamic-element.js +61 -0
  243. package/dist/util/index.js +11 -0
  244. package/dist/util/overflow-observer.d.ts +25 -0
  245. package/{src/util/overflow-observer.ts → dist/util/overflow-observer.js} +1 -30
  246. package/dist/util/pop-up-helpers.d.ts +59 -0
  247. package/dist/util/pop-up-helpers.js +66 -0
  248. package/dist/util/pop-up-manager.d.ts +200 -0
  249. package/dist/util/pop-up-manager.js +258 -0
  250. package/dist/util/shared-text-input-logic.d.ts +69 -0
  251. package/dist/util/shared-text-input-logic.js +114 -0
  252. package/dist/util/vira-form-fields.d.ts +145 -0
  253. package/dist/util/vira-form-fields.js +66 -0
  254. package/dist/util/vira-json-schema.d.ts +206 -0
  255. package/{src/util/vira-json-schema.ts → dist/util/vira-json-schema.js} +155 -298
  256. package/{src/util/vira-select-option.ts → dist/util/vira-select-option.d.ts} +2 -9
  257. package/dist/util/vira-select-option.js +8 -0
  258. package/dist/util/vira-theme-client.d.ts +83 -0
  259. package/dist/util/vira-theme-client.js +93 -0
  260. package/package.json +13 -13
  261. package/src/elements/color/vira-all-color-space-sliders.element.ts +0 -66
  262. package/src/elements/color/vira-all-spaces-color-picker.element.ts +0 -85
  263. package/src/elements/color/vira-color-format-sliders.element.ts +0 -78
  264. package/src/elements/color/vira-color-slider.element.ts +0 -169
  265. package/src/elements/pop-up/vira-menu-trigger.element.ts +0 -135
  266. package/src/elements/pop-up/vira-pop-up-trigger.element.ts +0 -539
  267. package/src/elements/vira-absolute-time.element.ts +0 -81
  268. package/src/elements/vira-date-input.element.ts +0 -185
  269. package/src/elements/vira-dropdown.element.ts +0 -310
  270. package/src/elements/vira-form.element.ts +0 -466
  271. package/src/elements/vira-relative-time.element.ts +0 -135
  272. package/src/icons/icon-color.test-helper.ts +0 -9
  273. package/src/icons/lucide-icons.ts +0 -120
  274. package/src/styles/form-styles.ts +0 -86
  275. package/src/styles/vira-color-palette.json +0 -170
  276. package/src/styles/vira-color-theme-object.ts +0 -170
  277. package/src/util/color-local-storage.client.ts +0 -7
  278. package/src/util/define-table.ts +0 -286
  279. package/src/util/define-vira-element.ts +0 -29
  280. package/src/util/dynamic-element.ts +0 -128
  281. package/src/util/pop-up-helpers.ts +0 -133
  282. package/src/util/pop-up-manager.ts +0 -434
  283. package/src/util/shared-text-input-logic.ts +0 -192
  284. package/src/util/vira-form-fields.ts +0 -195
  285. package/src/util/vira-theme-client.ts +0 -140
  286. /package/{src/elements/index.ts → dist/elements/index.d.ts} +0 -0
  287. /package/{src/index.ts → dist/index.d.ts} +0 -0
  288. /package/{src/util/index.ts → dist/util/index.d.ts} +0 -0
@@ -1,9 +1,8 @@
1
- import {clamp, type PartialWithUndefined} from '@augment-vir/common';
2
- import {applyAttributes} from 'device-navigation';
3
- import {css, html} from 'element-vir';
4
- import {viraFormCssVars} from '../styles/form-styles.js';
5
- import {defineViraElement} from '../util/define-vira-element.js';
6
-
1
+ import { clamp } from '@augment-vir/common';
2
+ import { applyAttributes } from 'device-navigation';
3
+ import { css, html } from 'element-vir';
4
+ import { viraFormCssVars } from '../styles/form-styles.js';
5
+ import { defineViraElement } from '../util/define-vira-element.js';
7
6
  /**
8
7
  * A [`<progress>`](https://developer.mozilla.org/docs/Web/HTML/Reference/Elements/progress)
9
8
  * alternative that supports custom styling in _all_ browsers via CSS vars _and_ prevents background
@@ -13,16 +12,7 @@ import {defineViraElement} from '../util/define-vira-element.js';
13
12
  * @category Elements
14
13
  * @see https://electrovir.github.io/vira/book/elements/vira-progress
15
14
  */
16
- export const ViraProgress = defineViraElement<
17
- {
18
- value: number;
19
- } & PartialWithUndefined<{
20
- /** @default 0 */
21
- min: number;
22
- /** @default 100 */
23
- max: number;
24
- }>
25
- >()({
15
+ export const ViraProgress = defineViraElement()({
26
16
  tagName: 'vira-progress',
27
17
  cssVars: {
28
18
  /**
@@ -32,8 +22,8 @@ export const ViraProgress = defineViraElement<
32
22
  'vira-progress-border-radius': '99999999px',
33
23
  'vira-progress-height': '8px',
34
24
  },
35
- styles: ({cssVars}) => {
36
- return css`
25
+ styles({ cssVars }) {
26
+ return css `
37
27
  :host {
38
28
  /* Default width that can easily be overridden because it's applied on the host. */
39
29
  width: 100px;
@@ -57,32 +47,29 @@ export const ViraProgress = defineViraElement<
57
47
  }
58
48
  `;
59
49
  },
60
- render({inputs, host}) {
50
+ render({ inputs, host }) {
61
51
  const min = inputs.min || 0;
62
52
  const max = inputs.max || 100;
63
53
  const totalRange = max - min;
64
54
  const value = inputs.value - min;
65
-
66
55
  const percentFull = clamp(Math.round((value / totalRange) * 100), {
67
56
  min: 0,
68
57
  max: 100,
69
58
  });
70
-
71
59
  applyAttributes(host, {
72
60
  'aria-valuemin': inputs.min,
73
61
  'aria-valuemax': inputs.max,
74
62
  'aria-valuenow': inputs.value,
75
63
  'aria-role': 'progressbar',
76
64
  });
77
-
78
- return html`
65
+ return html `
79
66
  <div
80
67
  class="progress-bar"
81
68
  style=${percentFull
82
- ? css`
69
+ ? css `
83
70
  width: ${percentFull}%;
84
71
  `
85
- : css`
72
+ : css `
86
73
  display: none;
87
74
  `}
88
75
  ></div>
@@ -0,0 +1,42 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ import { type AtLeastOneDuration, type FullDate, type Timezone } from 'date-vir';
3
+ /**
4
+ * Displays a date/time as a live, relative timestamp (for example `5 minutes ago`). The relative
5
+ * string automatically updates over time. Optionally renders the absolute timestamp beneath the
6
+ * relative string.
7
+ *
8
+ * @category Time
9
+ * @category Elements
10
+ * @see https://electrovir.github.io/vira/book/elements/vira-relative-time
11
+ */
12
+ export declare const ViraRelativeTime: import("element-vir").DeclarativeElementDefinition<"vira-relative-time", {
13
+ time: Readonly<FullDate>;
14
+ } & PartialWithUndefined<{
15
+ /** When true, the absolute timestamp is rendered beneath the relative string. */
16
+ showAbsoluteTime: boolean;
17
+ /**
18
+ * How long before the relative time updates.
19
+ *
20
+ * @default {seconds: 5}
21
+ */
22
+ updateInterval: Readonly<AtLeastOneDuration>;
23
+ /**
24
+ * Timezone the absolute time is displayed in. Defaults to the user's timezone. Set this for
25
+ * values that are conceptually anchored to a specific timezone (e.g. a date-only value
26
+ * stored at midnight UTC), where converting to the user's timezone would shift the
27
+ * displayed date/time.
28
+ */
29
+ timezone: Timezone;
30
+ }>, {
31
+ now: {
32
+ hour: import("date-vir").Hour;
33
+ minute: import("date-vir").Minute;
34
+ millisecond: number;
35
+ year: number;
36
+ month: import("date-vir").MonthNumber;
37
+ day: import("date-vir").DayOfMonth;
38
+ second: import("date-vir").Second;
39
+ timezone: "UTC";
40
+ };
41
+ timeoutId: undefined | ReturnType<typeof globalThis.setTimeout>;
42
+ }, {}, "vira-relative-time-", "vira-relative-time-", readonly [], readonly []>;
@@ -0,0 +1,96 @@
1
+ import { convertDuration, getNowInUtcTimezone, toRelativeString, } from 'date-vir';
2
+ import { css, html, nothing } from 'element-vir';
3
+ import { viraTheme } from '../styles/vira-color-theme.js';
4
+ import { defineViraElement } from '../util/define-vira-element.js';
5
+ import { formatAbsoluteTime, ViraAbsoluteTime } from './vira-absolute-time.element.js';
6
+ /**
7
+ * Displays a date/time as a live, relative timestamp (for example `5 minutes ago`). The relative
8
+ * string automatically updates over time. Optionally renders the absolute timestamp beneath the
9
+ * relative string.
10
+ *
11
+ * @category Time
12
+ * @category Elements
13
+ * @see https://electrovir.github.io/vira/book/elements/vira-relative-time
14
+ */
15
+ export const ViraRelativeTime = defineViraElement()({
16
+ tagName: 'vira-relative-time',
17
+ styles: css `
18
+ :host {
19
+ display: inline-flex;
20
+ flex-direction: column;
21
+ white-space: nowrap;
22
+ }
23
+
24
+ ${ViraAbsoluteTime} {
25
+ font-size: 12px;
26
+ color: ${viraTheme.colors['vira-grey-foreground-non-body'].foreground.value};
27
+ }
28
+ `,
29
+ state() {
30
+ return {
31
+ now: getNowInUtcTimezone(),
32
+ timeoutId: undefined,
33
+ };
34
+ },
35
+ init({ inputs, updateState }) {
36
+ /**
37
+ * Reschedule with a fresh timeout after each update so the delay always reflects the
38
+ * current `updateInterval` input.
39
+ */
40
+ function scheduleNextUpdate() {
41
+ const updateInterval = inputs.updateInterval || {
42
+ seconds: 5,
43
+ };
44
+ updateState({
45
+ timeoutId: globalThis.setTimeout(() => {
46
+ updateState({
47
+ now: getNowInUtcTimezone(),
48
+ });
49
+ scheduleNextUpdate();
50
+ }, convertDuration(updateInterval, {
51
+ milliseconds: true,
52
+ }).milliseconds),
53
+ });
54
+ }
55
+ scheduleNextUpdate();
56
+ },
57
+ cleanup({ state, updateState }) {
58
+ globalThis.clearTimeout(state.timeoutId);
59
+ updateState({
60
+ timeoutId: undefined,
61
+ });
62
+ },
63
+ render({ state, inputs }) {
64
+ const relativeTime = toRelativeString({
65
+ start: state.now,
66
+ end: inputs.time,
67
+ }, {
68
+ years: true,
69
+ months: true,
70
+ days: true,
71
+ hours: true,
72
+ minutes: true,
73
+ seconds: true,
74
+ }, {
75
+ useOnlyLargestUnit: true,
76
+ decimalCount: 0,
77
+ });
78
+ return html `
79
+ <span
80
+ title=${formatAbsoluteTime(inputs.time, {
81
+ timezone: inputs.timezone,
82
+ })}
83
+ >
84
+ ${relativeTime}
85
+ </span>
86
+ ${inputs.showAbsoluteTime
87
+ ? html `
88
+ <${ViraAbsoluteTime.assign({
89
+ time: inputs.time,
90
+ timezone: inputs.timezone,
91
+ })}></${ViraAbsoluteTime}>
92
+ `
93
+ : nothing}
94
+ `;
95
+ },
96
+ });
@@ -0,0 +1,44 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ import { type AttributeValues } from 'element-vir';
3
+ import { type ViraIconSvg } from '../icons/index.js';
4
+ import { type ViraSelectOption, type ViraSelectOptionGroup } from '../util/vira-select-option.js';
5
+ /**
6
+ * Similar to {@link ViraDropdown} but is, instead, simply a wrapper for `<select>` and nothing more.
7
+ *
8
+ * @category Dropdown
9
+ * @category Elements
10
+ * @see https://electrovir.github.io/vira/book/elements/vira-select
11
+ */
12
+ export declare const ViraSelect: import("element-vir").DeclarativeElementDefinition<"vira-select", {
13
+ options: ReadonlyArray<Readonly<ViraSelectOption> | Readonly<ViraSelectOptionGroup>>;
14
+ /** The currently selected option value. */
15
+ value: undefined | string;
16
+ } & PartialWithUndefined<{
17
+ icon: Readonly<ViraIconSvg>;
18
+ placeholder: string;
19
+ label: string;
20
+ /** If set to `true`, only minimal styles are applied. */
21
+ rawSelect: boolean;
22
+ disabled: boolean;
23
+ /**
24
+ * When `true`, the currently selected option's label is rendered as plain text with no
25
+ * wrapper, border, or focus styles.
26
+ */
27
+ isReadonly: boolean;
28
+ attributePassthrough: Readonly<PartialWithUndefined<{
29
+ label: AttributeValues;
30
+ select: AttributeValues;
31
+ option: AttributeValues;
32
+ }>>;
33
+ hasError: boolean;
34
+ }>, {
35
+ /**
36
+ * Used to couple the label and select together. This is not applied if no label is
37
+ * provided.
38
+ */
39
+ randomId: string;
40
+ /** Removes event listeners registered during init. */
41
+ cleanupListeners: undefined | (() => void);
42
+ }, {
43
+ valueChange: import("element-vir").DefineElementEvent<string>;
44
+ }, "vira-select-disabled" | "vira-select-error" | "vira-select-has-label" | "vira-select-not-raw" | "vira-select-readonly", "vira-select-padding-horizontal" | "vira-select-padding-vertical" | "vira-select-icon-padding", readonly [], readonly []>;
@@ -1,35 +1,19 @@
1
- import {assertWrap} from '@augment-vir/assert';
2
- import {randomString, type PartialWithUndefined} from '@augment-vir/common';
3
- import {extractEventTarget} from '@augment-vir/web';
4
- import {
5
- attributes,
6
- classMap,
7
- css,
8
- defineElementEvent,
9
- html,
10
- ifDefined,
11
- listen,
12
- nothing,
13
- type AttributeValues,
14
- } from 'element-vir';
15
- import {listenTo} from 'typed-event-target';
16
- import {ChevronUp16Icon, type ViraIconSvg} from '../icons/index.js';
17
- import {viraDisabledStyles} from '../styles/disabled.js';
18
- import {createFocusStyles} from '../styles/focus.js';
19
- import {viraFormCssVars} from '../styles/form-styles.js';
20
- import {viraAnimationDurations} from '../styles/index.js';
21
- import {noNativeFormStyles} from '../styles/native-styles.js';
22
- import {defineViraElement} from '../util/define-vira-element.js';
23
- import {
24
- isViraSelectOptionGroup,
25
- type ViraSelectOption,
26
- type ViraSelectOptionGroup,
27
- } from '../util/vira-select-option.js';
28
- import {ViraDropdown} from './vira-dropdown.element.js';
29
- import {ViraIcon} from './vira-icon.element.js';
30
-
31
- function renderSelectOption(option: Readonly<ViraSelectOption>, value: string | undefined) {
32
- return html`
1
+ import { assertWrap } from '@augment-vir/assert';
2
+ import { randomString } from '@augment-vir/common';
3
+ import { extractEventTarget } from '@augment-vir/web';
4
+ import { attributes, classMap, css, defineElementEvent, html, ifDefined, listen, nothing, } from 'element-vir';
5
+ import { listenTo } from 'typed-event-target';
6
+ import { ChevronUp16Icon } from '../icons/index.js';
7
+ import { viraDisabledStyles } from '../styles/disabled.js';
8
+ import { createFocusStyles } from '../styles/focus.js';
9
+ import { viraFormCssVars } from '../styles/form-styles.js';
10
+ import { viraAnimationDurations } from '../styles/index.js';
11
+ import { noNativeFormStyles } from '../styles/native-styles.js';
12
+ import { defineViraElement } from '../util/define-vira-element.js';
13
+ import { isViraSelectOptionGroup, } from '../util/vira-select-option.js';
14
+ import { ViraIcon } from './vira-icon.element.js';
15
+ function renderSelectOption(option, value) {
16
+ return html `
33
17
  <option
34
18
  ?selected=${option.value === value}
35
19
  aria-label=${option.label}
@@ -40,7 +24,6 @@ function renderSelectOption(option: Readonly<ViraSelectOption>, value: string |
40
24
  </option>
41
25
  `;
42
26
  }
43
-
44
27
  /**
45
28
  * Similar to {@link ViraDropdown} but is, instead, simply a wrapper for `<select>` and nothing more.
46
29
  *
@@ -48,33 +31,7 @@ function renderSelectOption(option: Readonly<ViraSelectOption>, value: string |
48
31
  * @category Elements
49
32
  * @see https://electrovir.github.io/vira/book/elements/vira-select
50
33
  */
51
- export const ViraSelect = defineViraElement<
52
- {
53
- options: ReadonlyArray<Readonly<ViraSelectOption> | Readonly<ViraSelectOptionGroup>>;
54
- /** The currently selected option value. */
55
- value: undefined | string;
56
- } & PartialWithUndefined<{
57
- icon: Readonly<ViraIconSvg>;
58
- placeholder: string;
59
- label: string;
60
- /** If set to `true`, only minimal styles are applied. */
61
- rawSelect: boolean;
62
- disabled: boolean;
63
- /**
64
- * When `true`, the currently selected option's label is rendered as plain text with no
65
- * wrapper, border, or focus styles.
66
- */
67
- isReadonly: boolean;
68
- attributePassthrough: Readonly<
69
- PartialWithUndefined<{
70
- label: AttributeValues;
71
- select: AttributeValues;
72
- option: AttributeValues;
73
- }>
74
- >;
75
- hasError: boolean;
76
- }>
77
- >()({
34
+ export const ViraSelect = defineViraElement()({
78
35
  tagName: 'vira-select',
79
36
  state() {
80
37
  return {
@@ -84,11 +41,11 @@ export const ViraSelect = defineViraElement<
84
41
  */
85
42
  randomId: randomString(32),
86
43
  /** Removes event listeners registered during init. */
87
- cleanupListeners: undefined as undefined | (() => void),
44
+ cleanupListeners: undefined,
88
45
  };
89
46
  },
90
47
  events: {
91
- valueChange: defineElementEvent<string>(),
48
+ valueChange: defineElementEvent(),
92
49
  },
93
50
  cssVars: {
94
51
  'vira-select-padding-horizontal': '12px',
@@ -96,14 +53,24 @@ export const ViraSelect = defineViraElement<
96
53
  'vira-select-icon-padding': '44px',
97
54
  },
98
55
  hostClasses: {
99
- 'vira-select-disabled': ({inputs}) => !!inputs.disabled,
100
- 'vira-select-error': ({inputs}) => !!inputs.hasError,
101
- 'vira-select-has-label': ({inputs}) => !!inputs.label,
102
- 'vira-select-not-raw': ({inputs}) => !inputs.rawSelect,
103
- 'vira-select-readonly': ({inputs}) => !!inputs.isReadonly,
56
+ 'vira-select-disabled'({ inputs }) {
57
+ return !!inputs.disabled;
58
+ },
59
+ 'vira-select-error'({ inputs }) {
60
+ return !!inputs.hasError;
61
+ },
62
+ 'vira-select-has-label'({ inputs }) {
63
+ return !!inputs.label;
64
+ },
65
+ 'vira-select-not-raw'({ inputs }) {
66
+ return !inputs.rawSelect;
67
+ },
68
+ 'vira-select-readonly'({ inputs }) {
69
+ return !!inputs.isReadonly;
70
+ },
104
71
  },
105
- styles: ({hostClasses, cssVars}) => {
106
- return css`
72
+ styles({ hostClasses, cssVars }) {
73
+ return css `
107
74
  :host {
108
75
  position: relative;
109
76
  display: inline-flex;
@@ -205,9 +172,9 @@ export const ViraSelect = defineViraElement<
205
172
 
206
173
  &:focus:focus-visible:not([aria-disabled='true']) ~ .focus-border {
207
174
  ${createFocusStyles({
208
- elementBorderSize: '1px',
209
- noNesting: true,
210
- })}
175
+ elementBorderSize: '1px',
176
+ noNesting: true,
177
+ })}
211
178
  }
212
179
  }
213
180
 
@@ -273,31 +240,24 @@ export const ViraSelect = defineViraElement<
273
240
 
274
241
  :host(
275
242
  .${hostClasses['vira-select-not-raw'].name}.${hostClasses['vira-select-error']
276
- .name}
243
+ .name}
277
244
  )
278
245
  .wrapper-border {
279
246
  border-color: ${viraFormCssVars['vira-form-error-color'].value};
280
247
  }
281
248
  `;
282
249
  },
283
- init({state, updateState, host}) {
250
+ init({ state, updateState, host }) {
284
251
  state.cleanupListeners?.();
285
-
286
252
  function getSelectElement() {
287
- return assertWrap.instanceOf(
288
- host.shadowRoot.querySelector('select'),
289
- HTMLSelectElement,
290
- );
253
+ return assertWrap.instanceOf(host.shadowRoot.querySelector('select'), HTMLSelectElement);
291
254
  }
292
-
293
255
  const listenerRemovers = [
294
256
  listenTo(host, 'mousedown', (event) => {
295
257
  const selectElement = getSelectElement();
296
-
297
258
  if (event.composedPath().includes(selectElement)) {
298
259
  return;
299
260
  }
300
-
301
261
  event.preventDefault();
302
262
  event.stopPropagation();
303
263
  /** `showPicker` is not in Safari. */
@@ -305,7 +265,8 @@ export const ViraSelect = defineViraElement<
305
265
  if (selectElement.showPicker) {
306
266
  try {
307
267
  selectElement.showPicker();
308
- } catch {
268
+ }
269
+ catch {
309
270
  /**
310
271
  * Chromium throws `NotAllowedError` when `showPicker` runs without
311
272
  * transient user activation; the picker just won't open.
@@ -315,11 +276,9 @@ export const ViraSelect = defineViraElement<
315
276
  }),
316
277
  listenTo(host, 'click', (event) => {
317
278
  const selectElement = getSelectElement();
318
-
319
279
  if (event.composedPath().includes(selectElement)) {
320
280
  return;
321
281
  }
322
-
323
282
  event.preventDefault();
324
283
  event.stopPropagation();
325
284
  /** `showPicker` is not in Safari. */
@@ -327,7 +286,8 @@ export const ViraSelect = defineViraElement<
327
286
  if (selectElement.showPicker) {
328
287
  try {
329
288
  selectElement.showPicker();
330
- } catch {
289
+ }
290
+ catch {
331
291
  /**
332
292
  * Chromium throws `NotAllowedError` when `showPicker` runs without
333
293
  * transient user activation; the picker just won't open.
@@ -336,100 +296,91 @@ export const ViraSelect = defineViraElement<
336
296
  }
337
297
  }),
338
298
  ];
339
-
340
299
  updateState({
341
- cleanupListeners: () => {
300
+ cleanupListeners() {
342
301
  listenerRemovers.forEach((remover) => remover());
343
302
  },
344
303
  });
345
304
  },
346
- cleanup({state, updateState}) {
305
+ cleanup({ state, updateState }) {
347
306
  state.cleanupListeners?.();
348
307
  updateState({
349
308
  cleanupListeners: undefined,
350
309
  });
351
310
  },
352
- render({inputs, state, dispatch, events}) {
311
+ render({ inputs, state, dispatch, events }) {
353
312
  const value = inputs.value || undefined;
354
-
355
313
  if (inputs.isReadonly) {
356
314
  const selectedOption = inputs.options
357
315
  .flatMap((entry) => (isViraSelectOptionGroup(entry) ? [...entry.options] : [entry]))
358
316
  .find((option) => option.value === value);
359
- const readonlyValueTemplate = html`
317
+ const readonlyValueTemplate = html `
360
318
  <span class="readonly-value">
361
319
  ${selectedOption?.label || inputs.placeholder || ''}
362
320
  </span>
363
321
  `;
364
-
365
322
  if (inputs.label) {
366
- return html`
323
+ return html `
367
324
  <label ${attributes(inputs.attributePassthrough?.label)}>
368
325
  <span class="select-label">${inputs.label}</span>
369
326
  ${readonlyValueTemplate}
370
327
  </label>
371
328
  `;
372
- } else {
329
+ }
330
+ else {
373
331
  return readonlyValueTemplate;
374
332
  }
375
333
  }
376
-
377
- const placeholderOptionTemplate =
378
- inputs.placeholder || value == undefined
379
- ? html`
334
+ const placeholderOptionTemplate = inputs.placeholder || value == undefined
335
+ ? html `
380
336
  <option value="" disabled ?selected=${value == undefined}>
381
337
  ${inputs.placeholder}
382
338
  </option>
383
339
  `
384
- : nothing;
385
-
386
- const selectTemplate = html`
340
+ : nothing;
341
+ const selectTemplate = html `
387
342
  <span class="select-wrapper">
388
343
  <select
389
344
  .value=${ifDefined(value)}
390
345
  class=${classMap({
391
- placeholder: !value && !!inputs.placeholder,
392
- 'with-icon': !!inputs.icon,
393
- })}
346
+ placeholder: !value && !!inputs.placeholder,
347
+ 'with-icon': !!inputs.icon,
348
+ })}
394
349
  tabindex=${inputs.disabled ? -1 : 0}
395
350
  id=${ifDefined(inputs.label ? state.randomId : undefined)}
396
351
  aria-label=${ifDefined(inputs.label || undefined)}
397
352
  aria-disabled=${ifDefined(inputs.disabled ? 'true' : undefined)}
398
353
  ${listen('input', (event) => {
399
- const selectElement = extractEventTarget(event, HTMLSelectElement);
400
- const newValue = selectElement.value;
401
-
402
- if (selectElement.value !== value) {
403
- selectElement.selectedIndex = inputs.options
404
- .flatMap((entry) => {
405
- return isViraSelectOptionGroup(entry)
406
- ? [...entry.options]
407
- : [entry];
408
- })
409
- .findIndex((option) => option.value === value);
410
- }
411
-
412
- dispatch(
413
- new events.valueChange({
414
- detail: newValue,
415
- }),
416
- );
417
- })}
354
+ const selectElement = extractEventTarget(event, HTMLSelectElement);
355
+ const newValue = selectElement.value;
356
+ if (selectElement.value !== value) {
357
+ selectElement.selectedIndex = inputs.options
358
+ .flatMap((entry) => {
359
+ return isViraSelectOptionGroup(entry)
360
+ ? [...entry.options]
361
+ : [entry];
362
+ })
363
+ .findIndex((option) => option.value === value);
364
+ }
365
+ dispatch(new events.valueChange({
366
+ detail: newValue,
367
+ }));
368
+ })}
418
369
  ${attributes(inputs.attributePassthrough?.select)}
419
370
  >
420
371
  ${placeholderOptionTemplate}
421
372
  ${inputs.options.map((entry) => {
422
- if (isViraSelectOptionGroup(entry)) {
423
- return html`
373
+ if (isViraSelectOptionGroup(entry)) {
374
+ return html `
424
375
  <optgroup label=${entry.groupName}>
425
376
  ${entry.options.map((option) => {
426
- return renderSelectOption(option, value);
427
- })}
377
+ return renderSelectOption(option, value);
378
+ })}
428
379
  </optgroup>
429
380
  `;
430
- }
431
- return renderSelectOption(entry, value);
432
- })}
381
+ }
382
+ return renderSelectOption(entry, value);
383
+ })}
433
384
  </select>
434
385
  <!--
435
386
  These separate style elements are necessary so that we can select them as
@@ -441,26 +392,26 @@ export const ViraSelect = defineViraElement<
441
392
  <div class="border-style wrapper-border"></div>
442
393
 
443
394
  <${ViraIcon.assign({
444
- icon: inputs.icon,
445
- })}
395
+ icon: inputs.icon,
396
+ })}
446
397
  class="input-icon"
447
398
  ></${ViraIcon}>
448
399
  <${ViraIcon.assign({
449
- icon: ChevronUp16Icon,
450
- })}
400
+ icon: ChevronUp16Icon,
401
+ })}
451
402
  class="trigger-icon"
452
403
  ></${ViraIcon}>
453
404
  </span>
454
405
  `;
455
-
456
406
  if (inputs.label) {
457
- return html`
407
+ return html `
458
408
  <label for=${state.randomId} ${attributes(inputs.attributePassthrough?.label)}>
459
409
  <span class="select-label">${inputs.label}</span>
460
410
  ${selectTemplate}
461
411
  </label>
462
412
  `;
463
- } else {
413
+ }
414
+ else {
464
415
  return selectTemplate;
465
416
  }
466
417
  },