vira 32.0.0-beta.0 → 32.1.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 +40 -0
  35. package/{src/elements/vira-button.element.ts → dist/elements/vira-button.element.js} +114 -261
  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} +243 -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
@@ -0,0 +1,376 @@
1
+ import { getObjectTypedEntries } from '@augment-vir/common';
2
+ import { css, defineElementEvent, html, listen, nothing, testId, } from 'element-vir';
3
+ import { viraFormCssVars } from '../styles/form-styles.js';
4
+ import { defineViraElement } from '../util/define-vira-element.js';
5
+ import { applyRequiredLabel, areFormFieldsValid, ViraFormFieldType, } from '../util/vira-form-fields.js';
6
+ import { ViraCheckbox } from './vira-checkbox.element.js';
7
+ import { ViraDateInput } from './vira-date-input.element.js';
8
+ import { ViraInput, ViraInputType } from './vira-input.element.js';
9
+ import { ViraSelect } from './vira-select.element.js';
10
+ import { ViraTextArea } from './vira-text-area.element.js';
11
+ /**
12
+ * A form element.
13
+ *
14
+ * @category Elements
15
+ * @see https://electrovir.github.io/vira/book/elements/vira-form
16
+ */
17
+ export const ViraForm = defineViraElement()({
18
+ tagName: 'vira-form',
19
+ state() {
20
+ return {
21
+ lastIsValid: false,
22
+ };
23
+ },
24
+ events: {
25
+ valueChange: defineElementEvent(),
26
+ validChange: defineElementEvent(),
27
+ },
28
+ styles: css `
29
+ :host {
30
+ display: flex;
31
+ }
32
+
33
+ form {
34
+ display: flex;
35
+ flex-grow: 1;
36
+ flex-direction: column;
37
+ align-items: stretch;
38
+ gap: 10px;
39
+
40
+ > * {
41
+ width: unset;
42
+ }
43
+ }
44
+
45
+ .horizontal-fields {
46
+ width: 100%;
47
+ border-collapse: separate;
48
+ border-spacing: 0 10px;
49
+
50
+ & th,
51
+ & td {
52
+ padding: 0;
53
+ }
54
+
55
+ & th {
56
+ padding: 0 8px;
57
+ vertical-align: middle;
58
+ white-space: nowrap;
59
+ font-weight: ${viraFormCssVars['vira-form-label-font-weight'].value};
60
+ text-align: right;
61
+ }
62
+
63
+ & td {
64
+ width: 100%;
65
+ vertical-align: top;
66
+
67
+ &
68
+ > ${ViraCheckbox},
69
+ &
70
+ > ${ViraDateInput},
71
+ &
72
+ > ${ViraInput},
73
+ &
74
+ > ${ViraSelect},
75
+ &
76
+ > ${ViraTextArea} {
77
+ width: 100%;
78
+ }
79
+ }
80
+ }
81
+ `,
82
+ render({ inputs, dispatch, events, state, updateState }) {
83
+ const currentIsValid = areFormFieldsValid(inputs.fields);
84
+ if (currentIsValid !== state.lastIsValid) {
85
+ updateState({
86
+ lastIsValid: currentIsValid,
87
+ });
88
+ dispatch(new events.validChange({
89
+ detail: {
90
+ allFieldsAreValid: currentIsValid,
91
+ },
92
+ }));
93
+ }
94
+ function wrapFormField({ fieldTemplate, label, }) {
95
+ if (inputs.useHorizontalLabels) {
96
+ return html `
97
+ <tr>
98
+ <th scope="row">${label}</th>
99
+ <td>${fieldTemplate}</td>
100
+ </tr>
101
+ `;
102
+ }
103
+ else {
104
+ return fieldTemplate;
105
+ }
106
+ }
107
+ const formFieldTemplates = getObjectTypedEntries(inputs.fields).map(([key, field,]) => {
108
+ const isDisabled = !!(inputs.isDisabled || field.isDisabled);
109
+ const showRequiredMarker = !!field.isRequired && !inputs.hideRequiredMarkers;
110
+ if (field.isHidden) {
111
+ return nothing;
112
+ }
113
+ else if (field.type === ViraFormFieldType.Checkbox) {
114
+ const checkboxLabel = showRequiredMarker
115
+ ? html `
116
+ ${field.label}*
117
+ `
118
+ : field.label;
119
+ return wrapFormField({
120
+ label: checkboxLabel,
121
+ fieldTemplate: html `
122
+ <${ViraCheckbox.assign({
123
+ value: field.value || false,
124
+ isDisabled: !!(isDisabled || inputs.isReadonly),
125
+ hasError: field.hasError,
126
+ useHorizontalLabel: inputs.horizontalCheckboxes,
127
+ fillWhenChecked: field.fillWhenChecked,
128
+ fillWhenUnchecked: field.fillWhenUnchecked,
129
+ })}
130
+ ${field.testId ? testId(field.testId) : nothing}
131
+ ${listen(ViraCheckbox.events.valueChange, (event) => {
132
+ dispatch(new events.valueChange({
133
+ detail: {
134
+ key,
135
+ ...field,
136
+ value: event.detail,
137
+ },
138
+ }));
139
+ })}
140
+ >
141
+ ${inputs.useHorizontalLabels
142
+ ? nothing
143
+ : html `
144
+ <span
145
+ slot=${ViraCheckbox.slotNames['vira-checkbox-label']}
146
+ >
147
+ ${checkboxLabel}
148
+ </span>
149
+ `}
150
+ </${ViraCheckbox}>
151
+ `,
152
+ });
153
+ }
154
+ const label = applyRequiredLabel(field.label, showRequiredMarker);
155
+ const childLabel = inputs.useHorizontalLabels ? undefined : label;
156
+ const horizontalLabelAttributes = inputs.useHorizontalLabels && label
157
+ ? {
158
+ 'aria-label': label,
159
+ }
160
+ : {};
161
+ if (field.type === ViraFormFieldType.Select) {
162
+ return wrapFormField({
163
+ label,
164
+ fieldTemplate: html `
165
+ <${ViraSelect.assign({
166
+ options: field.options,
167
+ value: field.value,
168
+ placeholder: field.placeholder,
169
+ disabled: isDisabled,
170
+ isReadonly: inputs.isReadonly,
171
+ label: childLabel,
172
+ hasError: field.hasError,
173
+ icon: field.icon,
174
+ ...(inputs.useHorizontalLabels && label
175
+ ? {
176
+ attributePassthrough: {
177
+ select: horizontalLabelAttributes,
178
+ },
179
+ }
180
+ : {}),
181
+ })}
182
+ ${field.testId ? testId(field.testId) : nothing}
183
+ ${listen(ViraSelect.events.valueChange, (event) => {
184
+ dispatch(new events.valueChange({
185
+ detail: {
186
+ key,
187
+ ...field,
188
+ value: event.detail,
189
+ },
190
+ }));
191
+ })}
192
+ ></${ViraSelect}>
193
+ `,
194
+ });
195
+ }
196
+ else if (field.type === ViraFormFieldType.TextArea) {
197
+ return wrapFormField({
198
+ label,
199
+ fieldTemplate: html `
200
+ <${ViraTextArea.assign({
201
+ value: field.value || '',
202
+ disabled: isDisabled,
203
+ hasError: field.hasError,
204
+ isReadonly: inputs.isReadonly,
205
+ label: childLabel,
206
+ placeholder: field.placeholder,
207
+ rows: field.rows,
208
+ preventResize: field.preventResize,
209
+ attributePassthrough: horizontalLabelAttributes,
210
+ })}
211
+ ${field.testId ? testId(field.testId) : nothing}
212
+ ${listen(ViraTextArea.events.valueChange, (event) => {
213
+ dispatch(new events.valueChange({
214
+ detail: {
215
+ key,
216
+ ...field,
217
+ value: event.detail,
218
+ },
219
+ }));
220
+ })}
221
+ ></${ViraTextArea}>
222
+ `,
223
+ });
224
+ }
225
+ else if (field.type === ViraFormFieldType.Number) {
226
+ return wrapFormField({
227
+ label,
228
+ fieldTemplate: html `
229
+ <${ViraInput.assign({
230
+ value: field.value?.toString() || '',
231
+ disabled: isDisabled,
232
+ allowedInputs: /\d/,
233
+ hasError: field.hasError,
234
+ icon: field.icon,
235
+ isReadonly: inputs.isReadonly,
236
+ label: childLabel,
237
+ placeholder: field.placeholder,
238
+ showClearButton: inputs.showClearButtons,
239
+ type: ViraInputType.Number,
240
+ attributePassthrough: {
241
+ ...horizontalLabelAttributes,
242
+ ...(field.min == undefined
243
+ ? {}
244
+ : {
245
+ min: String(field.min),
246
+ }),
247
+ ...(field.max == undefined
248
+ ? {}
249
+ : {
250
+ max: String(field.max),
251
+ }),
252
+ ...(field.step == undefined
253
+ ? {}
254
+ : {
255
+ step: String(field.step),
256
+ }),
257
+ },
258
+ })}
259
+ ${field.testId ? testId(field.testId) : nothing}
260
+ ${listen(ViraInput.events.valueChange, (event) => {
261
+ const numericValue = event.detail === '' ? undefined : Number(event.detail);
262
+ dispatch(new events.valueChange({
263
+ detail: {
264
+ key,
265
+ ...field,
266
+ value: numericValue,
267
+ },
268
+ }));
269
+ })}
270
+ ></${ViraInput}>
271
+ `,
272
+ });
273
+ }
274
+ else if (field.type === ViraFormFieldType.Date) {
275
+ return wrapFormField({
276
+ label,
277
+ fieldTemplate: html `
278
+ <${ViraDateInput.assign({
279
+ value: field.value,
280
+ min: field.min,
281
+ max: field.max,
282
+ timezone: field.timezone,
283
+ showDateOnly: field.showDateOnly,
284
+ showTimeOnly: field.showTimeOnly,
285
+ isDisabled,
286
+ hasError: field.hasError,
287
+ isReadonly: inputs.isReadonly,
288
+ label: childLabel,
289
+ })}
290
+ ${field.testId ? testId(field.testId) : nothing}
291
+ ${listen(ViraDateInput.events.valueChange, (event) => {
292
+ dispatch(new events.valueChange({
293
+ detail: {
294
+ key,
295
+ ...field,
296
+ value: event.detail,
297
+ },
298
+ }));
299
+ })}
300
+ ></${ViraDateInput}>
301
+ `,
302
+ });
303
+ }
304
+ else {
305
+ return wrapFormField({
306
+ label,
307
+ fieldTemplate: html `
308
+ <${ViraInput.assign({
309
+ value: field.value || '',
310
+ disabled: isDisabled,
311
+ hasError: field.hasError,
312
+ icon: field.icon,
313
+ isReadonly: inputs.isReadonly,
314
+ label: childLabel,
315
+ placeholder: field.placeholder,
316
+ showClearButton: inputs.showClearButtons,
317
+ attributePassthrough: {
318
+ ...horizontalLabelAttributes,
319
+ ...(field.isUsername
320
+ ? {
321
+ autocomplete: 'username',
322
+ }
323
+ : field.type === ViraFormFieldType.NewPassword
324
+ ? {
325
+ autocomplete: 'new-password',
326
+ }
327
+ : field.type === ViraFormFieldType.ExistingPassword
328
+ ? {
329
+ autocomplete: 'password',
330
+ }
331
+ : field.type === ViraFormFieldType.Email
332
+ ? {
333
+ autocomplete: 'email',
334
+ }
335
+ : {}),
336
+ },
337
+ type: [
338
+ ViraFormFieldType.NewPassword,
339
+ ViraFormFieldType.ExistingPassword,
340
+ ViraFormFieldType.PlainPassword,
341
+ ].includes(field.type)
342
+ ? ViraInputType.Password
343
+ : field.type === ViraFormFieldType.Email
344
+ ? ViraInputType.Email
345
+ : ViraInputType.Default,
346
+ })}
347
+ ${field.testId ? testId(field.testId) : nothing}
348
+ ${listen(ViraInput.events.valueChange, (event) => {
349
+ dispatch(new events.valueChange({
350
+ detail: {
351
+ key,
352
+ ...field,
353
+ value: event.detail,
354
+ },
355
+ }));
356
+ })}
357
+ ></${ViraInput}>
358
+ `,
359
+ });
360
+ }
361
+ });
362
+ const formFieldsWrapper = inputs.useHorizontalLabels
363
+ ? html `
364
+ <table class="horizontal-fields">
365
+ <tbody>${formFieldTemplates}</tbody>
366
+ </table>
367
+ `
368
+ : formFieldTemplates;
369
+ return html `
370
+ <form ${listen('submit', (event) => event.preventDefault())}>
371
+ ${formFieldsWrapper}
372
+ <slot></slot>
373
+ </form>
374
+ `;
375
+ },
376
+ });
@@ -0,0 +1,13 @@
1
+ import { type ViraIconSvg } from '../icons/icon-svg.js';
2
+ /**
3
+ * An element that renders a single {@link ViraIconSvg}.
4
+ *
5
+ * @category Icon
6
+ * @category Elements
7
+ * @see https://electrovir.github.io/vira/book/elements/vira-icon
8
+ */
9
+ export declare const ViraIcon: import("element-vir").DeclarativeElementDefinition<"vira-icon", {
10
+ icon: Pick<ViraIconSvg, "svgTemplate" | "size"> | undefined;
11
+ /** Ignores the given icon's embedded size and causes the <svg> element to fill its parent. */
12
+ fitContainer?: boolean | undefined;
13
+ }, {}, {}, "vira-icon-fit-container", "vira-icon-", readonly [], readonly []>;
@@ -1,8 +1,6 @@
1
- import {addPx} from '@augment-vir/common';
2
- import {css} from 'element-vir';
3
- import {type ViraIconSvg} from '../icons/icon-svg.js';
4
- import {defineViraElement} from '../util/define-vira-element.js';
5
-
1
+ import { addPx } from '@augment-vir/common';
2
+ import { css } from 'element-vir';
3
+ import { defineViraElement } from '../util/define-vira-element.js';
6
4
  /**
7
5
  * An element that renders a single {@link ViraIconSvg}.
8
6
  *
@@ -10,18 +8,16 @@ import {defineViraElement} from '../util/define-vira-element.js';
10
8
  * @category Elements
11
9
  * @see https://electrovir.github.io/vira/book/elements/vira-icon
12
10
  */
13
- export const ViraIcon = defineViraElement<{
14
- icon: Pick<ViraIconSvg, 'svgTemplate' | 'size'> | undefined;
15
- /** Ignores the given icon's embedded size and causes the <svg> element to fill its parent. */
16
- fitContainer?: boolean | undefined;
17
- }>()({
11
+ export const ViraIcon = defineViraElement()({
18
12
  tagName: 'vira-icon',
19
13
  hostClasses: {
20
14
  /** Ignores the given icon's embedded size and causes the <svg> element to fill its parent. */
21
- 'vira-icon-fit-container': ({inputs}) => !!inputs.fitContainer || !!inputs.icon?.size,
15
+ 'vira-icon-fit-container'({ inputs }) {
16
+ return !!inputs.fitContainer || !!inputs.icon?.size;
17
+ },
22
18
  },
23
- styles: ({hostClasses}) => {
24
- return css`
19
+ styles({ hostClasses }) {
20
+ return css `
25
21
  :host {
26
22
  display: inline-flex;
27
23
  justify-content: center;
@@ -50,14 +46,14 @@ export const ViraIcon = defineViraElement<{
50
46
  }
51
47
  `;
52
48
  },
53
- render({inputs, host}) {
49
+ render({ inputs, host }) {
54
50
  if (!inputs.icon) {
55
51
  return '';
56
- } else if (inputs.icon.size) {
52
+ }
53
+ else if (inputs.icon.size) {
57
54
  host.style.width = addPx(inputs.icon.size);
58
55
  host.style.height = addPx(inputs.icon.size);
59
56
  }
60
-
61
57
  return inputs.icon.svgTemplate;
62
58
  },
63
59
  });
@@ -0,0 +1,45 @@
1
+ import { type Dimensions } from '@augment-vir/common';
2
+ import { type Duration, type DurationUnit } from 'date-vir';
3
+ /**
4
+ * An `<img>` element wrapper that handles size constraints and includes slots for loading and error
5
+ * indicators.
6
+ *
7
+ * Use CSS properties to constrain the image. In particular, set `min-height` and `min-width` on
8
+ * this to control the size of the loader and error slots.
9
+ *
10
+ * @category Image
11
+ * @category Elements
12
+ * @see https://electrovir.github.io/vira/book/elements/vira-image
13
+ */
14
+ export declare const ViraImage: import("element-vir").DeclarativeElementDefinition<`vira-${string}`, {
15
+ /** The URL of the image to load. This is passed directly to the `<img>` element. */
16
+ imageUrl: string;
17
+ /**
18
+ * The dimension which should dominantly constrain the image size. Whichever dimension this is
19
+ * set to is the dimension that the image will grow to match. This is only relevant if you apply
20
+ * size constraints on ViraImage via CSS in its parent.
21
+ *
22
+ * @default 'width'
23
+ */
24
+ dominantDimension?: keyof Dimensions | undefined;
25
+ /** For debugging only: artificially set a delay for the image loading so you can see the loader. */
26
+ _debugLoadDelay?: Duration<DurationUnit.Milliseconds> | undefined;
27
+ }, {
28
+ /**
29
+ * To avoid race conditions between `<img>` element events and potential input changing,
30
+ * save the loaded state of an URL's image by the image's URL.
31
+ */
32
+ loadedUrls: Readonly<{
33
+ [url: string]: true;
34
+ }>;
35
+ /**
36
+ * To avoid race conditions between `<img>` element events and potential input changing,
37
+ * save the errored state of an URL's image by the image's URL.
38
+ */
39
+ erroredUrls: Readonly<{
40
+ [url: string]: true;
41
+ }>;
42
+ }, {
43
+ imageLoad: import("element-vir").DefineElementEvent<void>;
44
+ imageError: import("element-vir").DefineElementEvent<unknown>;
45
+ }, "vira-image-height-constrained", `vira-${string}-`, readonly ["vira-image-loading", "vira-image-error"], readonly []>;
@@ -1,10 +1,8 @@
1
- import {type Dimensions, wait} from '@augment-vir/common';
2
- import {type Duration, type DurationUnit} from 'date-vir';
3
- import {classMap, css, defineElementEvent, html, listen, renderIf} from 'element-vir';
4
- import {LoaderAnimated24Icon, StatusFailure24Icon} from '../icons/index.js';
5
- import {defineViraElement} from '../util/define-vira-element.js';
6
- import {ViraIcon} from './vira-icon.element.js';
7
-
1
+ import { wait } from '@augment-vir/common';
2
+ import { classMap, css, defineElementEvent, html, listen, renderIf } from 'element-vir';
3
+ import { LoaderAnimated24Icon, StatusFailure24Icon } from '../icons/index.js';
4
+ import { defineViraElement } from '../util/define-vira-element.js';
5
+ import { ViraIcon } from './vira-icon.element.js';
8
6
  /**
9
7
  * An `<img>` element wrapper that handles size constraints and includes slots for loading and error
10
8
  * indicators.
@@ -16,20 +14,7 @@ import {ViraIcon} from './vira-icon.element.js';
16
14
  * @category Elements
17
15
  * @see https://electrovir.github.io/vira/book/elements/vira-image
18
16
  */
19
- export const ViraImage = defineViraElement<{
20
- /** The URL of the image to load. This is passed directly to the `<img>` element. */
21
- imageUrl: string;
22
- /**
23
- * The dimension which should dominantly constrain the image size. Whichever dimension this is
24
- * set to is the dimension that the image will grow to match. This is only relevant if you apply
25
- * size constraints on ViraImage via CSS in its parent.
26
- *
27
- * @default 'width'
28
- */
29
- dominantDimension?: keyof Dimensions | undefined;
30
- /** For debugging only: artificially set a delay for the image loading so you can see the loader. */
31
- _debugLoadDelay?: Duration<DurationUnit.Milliseconds> | undefined;
32
- }>()({
17
+ export const ViraImage = defineViraElement()({
33
18
  tagName: 'vira-image',
34
19
  state() {
35
20
  return {
@@ -37,27 +22,29 @@ export const ViraImage = defineViraElement<{
37
22
  * To avoid race conditions between `<img>` element events and potential input changing,
38
23
  * save the loaded state of an URL's image by the image's URL.
39
24
  */
40
- loadedUrls: {} as Readonly<{[url: string]: true}>,
25
+ loadedUrls: {},
41
26
  /**
42
27
  * To avoid race conditions between `<img>` element events and potential input changing,
43
28
  * save the errored state of an URL's image by the image's URL.
44
29
  */
45
- erroredUrls: {} as Readonly<{[url: string]: true}>,
30
+ erroredUrls: {},
46
31
  };
47
32
  },
48
33
  hostClasses: {
49
- 'vira-image-height-constrained': ({inputs}) => inputs.dominantDimension === 'height',
34
+ 'vira-image-height-constrained'({ inputs }) {
35
+ return inputs.dominantDimension === 'height';
36
+ },
50
37
  },
51
38
  slotNames: [
52
39
  'vira-image-loading',
53
40
  'vira-image-error',
54
41
  ],
55
42
  events: {
56
- imageLoad: defineElementEvent<void>(),
57
- imageError: defineElementEvent<unknown>(),
43
+ imageLoad: defineElementEvent(),
44
+ imageError: defineElementEvent(),
58
45
  },
59
- styles: ({hostClasses}) => {
60
- return css`
46
+ styles({ hostClasses }) {
47
+ return css `
61
48
  :host {
62
49
  display: inline-flex;
63
50
  overflow: hidden;
@@ -105,70 +92,63 @@ export const ViraImage = defineViraElement<{
105
92
  }
106
93
  `;
107
94
  },
108
- render({inputs, state, updateState, dispatch, events, slotNames}) {
95
+ render({ inputs, state, updateState, dispatch, events, slotNames }) {
109
96
  /**
110
97
  * Saved off for use in the image listeners. This is used to eliminate race conditions
111
98
  * between image events and the input URL changing.
112
99
  */
113
100
  const imageUrl = inputs.imageUrl;
114
-
115
101
  const statusTemplate = state.erroredUrls[imageUrl]
116
- ? html`
102
+ ? html `
117
103
  <slot class="status-wrapper" name=${slotNames['vira-image-error']}>
118
104
  <${ViraIcon.assign({
119
- icon: StatusFailure24Icon,
120
- })}
105
+ icon: StatusFailure24Icon,
106
+ })}
121
107
  class="error"
122
108
  ></${ViraIcon}>
123
109
  </slot>
124
110
  `
125
111
  : state.loadedUrls[imageUrl]
126
- ? undefined
127
- : html`
112
+ ? undefined
113
+ : html `
128
114
  <slot class="status-wrapper" name=${slotNames['vira-image-loading']}>
129
115
  <${ViraIcon.assign({
130
- icon: LoaderAnimated24Icon,
131
- })}></${ViraIcon}>
116
+ icon: LoaderAnimated24Icon,
117
+ })}></${ViraIcon}>
132
118
  </slot>
133
119
  `;
134
-
135
- return html`
120
+ return html `
136
121
  ${renderIf(!!statusTemplate, statusTemplate)}
137
122
  <img
138
123
  class=${classMap({
139
- hidden: !!statusTemplate,
140
- })}
124
+ hidden: !!statusTemplate,
125
+ })}
141
126
  ${listen('load', async () => {
142
- if (inputs._debugLoadDelay) {
143
- await wait(inputs._debugLoadDelay);
144
- }
145
-
146
- updateState({
147
- loadedUrls: {
148
- ...state.loadedUrls,
149
- [imageUrl]: true,
150
- },
151
- });
152
-
153
- dispatch(
154
- new events.imageLoad({
155
- detail: undefined,
156
- }),
157
- );
158
- })}
127
+ if (inputs._debugLoadDelay) {
128
+ await wait(inputs._debugLoadDelay);
129
+ }
130
+ updateState({
131
+ loadedUrls: {
132
+ ...state.loadedUrls,
133
+ [imageUrl]: true,
134
+ },
135
+ });
136
+ dispatch(new events.imageLoad({
137
+ detail: undefined,
138
+ }));
139
+ })}
159
140
  ${listen('error', async (event) => {
160
- if (inputs._debugLoadDelay) {
161
- await wait(inputs._debugLoadDelay);
162
- }
163
- updateState({
164
- erroredUrls: {
165
- ...state.erroredUrls,
166
- [imageUrl]: true,
167
- },
168
- });
169
-
170
- dispatch(new events.imageError(event.error));
171
- })}
141
+ if (inputs._debugLoadDelay) {
142
+ await wait(inputs._debugLoadDelay);
143
+ }
144
+ updateState({
145
+ erroredUrls: {
146
+ ...state.erroredUrls,
147
+ [imageUrl]: true,
148
+ },
149
+ });
150
+ dispatch(new events.imageError(event.error));
151
+ })}
172
152
  src=${imageUrl}
173
153
  />
174
154
  `;