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,59 +1,11 @@
1
- import {type PartialWithUndefined} from '@augment-vir/common';
2
- import {extractEventTarget} from '@augment-vir/web';
3
- import {
4
- attributes,
5
- classMap,
6
- css,
7
- defineElementEvent,
8
- html,
9
- ifDefined,
10
- listen,
11
- listenToActivate,
12
- type AttributeValues,
13
- type CSSResult,
14
- } from 'element-vir';
15
- import {Check24Icon, viraIconCssVars} from '../icons/index.js';
16
- import {viraDisabledStyles} from '../styles/disabled.js';
17
- import {createFocusStyles} from '../styles/focus.js';
18
- import {viraFormCssVars} from '../styles/form-styles.js';
19
- import {defineViraElement} from '../util/define-vira-element.js';
20
- import {ViraIcon} from './vira-icon.element.js';
21
-
22
- /**
23
- * All inner elements supported by {@link ViraCheckbox}.
24
- *
25
- * @category Internals
26
- */
27
- export type ViraCheckboxInnerElements =
28
- | 'label'
29
- | 'custom-checkbox'
30
- | 'text'
31
- | typeof ViraIcon.tagName;
32
-
33
- /**
34
- * Inputs for {@link ViraCheckbox}.
35
- *
36
- * @category Internal
37
- */
38
- export type ViraCheckboxInputs = {
39
- value: boolean;
40
- } & PartialWithUndefined<{
41
- stylePassthrough: Partial<Record<ViraCheckboxInnerElements, CSSResult>>;
42
- attributePassthrough: Partial<Record<ViraCheckboxInnerElements, AttributeValues>>;
43
- isDisabled: boolean;
44
- /**
45
- * Text label for the checkbox. Used as the fallback when the `vira-checkbox-label` slot is not
46
- * filled.
47
- */
48
- label: string;
49
- hasError: boolean;
50
- useHorizontalLabel: boolean;
51
- /** The checkbox will be filled with a form selection color when it is checked. */
52
- fillWhenChecked: boolean;
53
- /** The checkbox will be filled with a form error color when it is unchecked. */
54
- fillWhenUnchecked: boolean;
55
- }>;
56
-
1
+ import { extractEventTarget } from '@augment-vir/web';
2
+ import { attributes, classMap, css, defineElementEvent, html, ifDefined, listen, listenToActivate, } from 'element-vir';
3
+ import { Check24Icon, viraIconCssVars } from '../icons/index.js';
4
+ import { viraDisabledStyles } from '../styles/disabled.js';
5
+ import { createFocusStyles } from '../styles/focus.js';
6
+ import { viraFormCssVars } from '../styles/form-styles.js';
7
+ import { defineViraElement } from '../util/define-vira-element.js';
8
+ import { ViraIcon } from './vira-icon.element.js';
57
9
  /**
58
10
  * A custom checkbox.
59
11
  *
@@ -61,7 +13,7 @@ export type ViraCheckboxInputs = {
61
13
  * @category Elements
62
14
  * @see https://electrovir.github.io/vira/book/elements/vira-checkbox
63
15
  */
64
- export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
16
+ export const ViraCheckbox = defineViraElement()({
65
17
  tagName: 'vira-checkbox',
66
18
  slotNames: [
67
19
  'vira-checkbox-label',
@@ -72,12 +24,18 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
72
24
  };
73
25
  },
74
26
  hostClasses: {
75
- 'vira-checkbox-horizontal': ({inputs}) => !!inputs.useHorizontalLabel,
76
- 'vira-checkbox-filled-checked': ({inputs}) => !!inputs.fillWhenChecked,
77
- 'vira-checkbox-filled-unchecked': ({inputs}) => !!inputs.fillWhenUnchecked,
27
+ 'vira-checkbox-horizontal'({ inputs }) {
28
+ return !!inputs.useHorizontalLabel;
29
+ },
30
+ 'vira-checkbox-filled-checked'({ inputs }) {
31
+ return !!inputs.fillWhenChecked;
32
+ },
33
+ 'vira-checkbox-filled-unchecked'({ inputs }) {
34
+ return !!inputs.fillWhenUnchecked;
35
+ },
78
36
  },
79
- styles: ({hostClasses}) => {
80
- return css`
37
+ styles({ hostClasses }) {
38
+ return css `
81
39
  :host {
82
40
  display: inline-flex;
83
41
  }
@@ -105,12 +63,12 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
105
63
  label {
106
64
  &:not(.disabled):hover .custom-checkbox.checked {
107
65
  background-color: ${viraFormCssVars['vira-form-accent-primary-hover-color']
108
- .value};
66
+ .value};
109
67
  }
110
68
 
111
69
  &:not(.disabled):active .custom-checkbox.checked {
112
70
  background-color: ${viraFormCssVars['vira-form-accent-primary-active-color']
113
- .value};
71
+ .value};
114
72
  }
115
73
  }
116
74
  }
@@ -169,8 +127,8 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
169
127
  cursor: pointer;
170
128
 
171
129
  ${createFocusStyles({
172
- elementBorderSize: '1px',
173
- })}
130
+ elementBorderSize: '1px',
131
+ })}
174
132
 
175
133
  &.checked {
176
134
  & ${ViraIcon} {
@@ -199,48 +157,43 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
199
157
  `;
200
158
  },
201
159
  events: {
202
- valueChange: defineElementEvent<boolean>(),
160
+ valueChange: defineElementEvent(),
203
161
  },
204
- render({inputs, dispatch, events, slotNames, state, updateState}) {
205
- function updateValue(this: void) {
162
+ render({ inputs, dispatch, events, slotNames, state, updateState }) {
163
+ function updateValue() {
206
164
  if (!inputs.isDisabled) {
207
- dispatch(
208
- new events.valueChange({
209
- detail: !inputs.value,
210
- }),
211
- );
165
+ dispatch(new events.valueChange({
166
+ detail: !inputs.value,
167
+ }));
212
168
  }
213
169
  }
214
-
215
170
  const hasLabel = !!inputs.label || state.hasSlottedLabel;
216
-
217
- const textLabel = html`
171
+ const textLabel = html `
218
172
  <span
219
173
  class="label-text ${classMap({
220
- empty: !hasLabel,
221
- })}"
174
+ empty: !hasLabel,
175
+ })}"
222
176
  ${attributes(inputs.attributePassthrough?.['text'])}
223
177
  style=${ifDefined(inputs.stylePassthrough?.['text'])}
224
178
  >
225
179
  <slot
226
180
  name=${slotNames['vira-checkbox-label']}
227
181
  ${listen('slotchange', (event) => {
228
- const slotElement = extractEventTarget(event, HTMLSlotElement);
229
- updateState({
230
- hasSlottedLabel: !!slotElement.assignedNodes().length,
231
- });
232
- })}
182
+ const slotElement = extractEventTarget(event, HTMLSlotElement);
183
+ updateState({
184
+ hasSlottedLabel: !!slotElement.assignedNodes().length,
185
+ });
186
+ })}
233
187
  >
234
188
  ${inputs.label}
235
189
  </slot>
236
190
  </span>
237
191
  `;
238
-
239
- return html`
192
+ return html `
240
193
  <label
241
194
  class=${classMap({
242
- disabled: !!inputs.isDisabled,
243
- })}
195
+ disabled: !!inputs.isDisabled,
196
+ })}
244
197
  ${attributes(inputs.attributePassthrough?.label)}
245
198
  style=${ifDefined(inputs.stylePassthrough?.label)}
246
199
  ${listen('mousedown', updateValue)}
@@ -248,10 +201,10 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
248
201
  ${textLabel}
249
202
  <span
250
203
  class="custom-checkbox ${classMap({
251
- checked: inputs.value,
252
- disabled: !!inputs.isDisabled,
253
- error: !!inputs.hasError,
254
- })}"
204
+ checked: inputs.value,
205
+ disabled: !!inputs.isDisabled,
206
+ error: !!inputs.hasError,
207
+ })}"
255
208
  role="checkbox"
256
209
  aria-label=${ifDefined(inputs.label || undefined)}
257
210
  aria-checked=${inputs.value ? 'true' : 'false'}
@@ -262,9 +215,9 @@ export const ViraCheckbox = defineViraElement<Readonly<ViraCheckboxInputs>>()({
262
215
  ${listenToActivate(updateValue)}
263
216
  >
264
217
  <${ViraIcon.assign({
265
- icon: Check24Icon,
266
- fitContainer: true,
267
- })}
218
+ icon: Check24Icon,
219
+ fitContainer: true,
220
+ })}
268
221
  ${attributes(inputs.attributePassthrough?.[ViraIcon.tagName])}
269
222
  style=${ifDefined(inputs.stylePassthrough?.[ViraIcon.tagName])}
270
223
  ></${ViraIcon}>
@@ -0,0 +1,36 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ /**
3
+ * A combination ViraCard and ViraCollapsibleWrapper with a collapse caret.
4
+ *
5
+ * @category Elements
6
+ * @see https://electrovir.github.io/vira/book/elements/vira-checkbox
7
+ */
8
+ export declare const ViraCollapsibleCard: import("element-vir").DeclarativeElementDefinition<`vira-${string}`, PartialWithUndefined<{
9
+ /**
10
+ * When set to `true`, the card styles are diminished so you can still use this element in
11
+ * more flexible ways.
12
+ *
13
+ * @default false
14
+ */
15
+ rawCollapsible: boolean;
16
+ startExpanded: boolean;
17
+ /**
18
+ * If set to true, the card will always be expanded, expansion cannot be toggled, and the
19
+ * expand toggle icon is hidden.
20
+ *
21
+ * @default false
22
+ */
23
+ blockExpansion: boolean;
24
+ /** When true, forces the content to expand when printing regardless of collapsed state. */
25
+ expandOnPrint: boolean;
26
+ /**
27
+ * When set to `true`, the header is hidden.
28
+ *
29
+ * @default false
30
+ */
31
+ hideHeader: boolean;
32
+ }>, {
33
+ isExpanded: boolean;
34
+ }, {
35
+ expandToggle: import("element-vir").DefineElementEvent<boolean>;
36
+ }, "vira-collapsible-card-expanded" | "vira-collapsible-card-expansion-blocked" | "vira-collapsible-card-card-styles", "vira-collapsible-card-content-gap", readonly ["vira-collapsible-card-header"], readonly ["openCaret"]>;
@@ -1,65 +1,43 @@
1
- import {type PartialWithUndefined} from '@augment-vir/common';
2
- import {css, defineElementEvent, html, listen, nothing, testId} from 'element-vir';
3
- import {ChevronUp16Icon} from '../icons/index.js';
4
- import {viraFontCssVars} from '../styles/font.js';
5
- import {viraFormCssVars} from '../styles/form-styles.js';
6
- import {defineViraElement} from '../util/define-vira-element.js';
7
- import {ViraCollapsibleWrapper} from './vira-collapsible-wrapper.element.js';
8
- import {ViraIcon} from './vira-icon.element.js';
9
-
1
+ import { css, defineElementEvent, html, listen, nothing, testId } from 'element-vir';
2
+ import { ChevronUp16Icon } from '../icons/index.js';
3
+ import { viraFontCssVars } from '../styles/font.js';
4
+ import { viraFormCssVars } from '../styles/form-styles.js';
5
+ import { defineViraElement } from '../util/define-vira-element.js';
6
+ import { ViraCollapsibleWrapper } from './vira-collapsible-wrapper.element.js';
7
+ import { ViraIcon } from './vira-icon.element.js';
10
8
  /**
11
9
  * A combination ViraCard and ViraCollapsibleWrapper with a collapse caret.
12
10
  *
13
11
  * @category Elements
14
12
  * @see https://electrovir.github.io/vira/book/elements/vira-checkbox
15
13
  */
16
- export const ViraCollapsibleCard = defineViraElement<
17
- PartialWithUndefined<{
18
- /**
19
- * When set to `true`, the card styles are diminished so you can still use this element in
20
- * more flexible ways.
21
- *
22
- * @default false
23
- */
24
- rawCollapsible: boolean;
25
- startExpanded: boolean;
26
- /**
27
- * If set to true, the card will always be expanded, expansion cannot be toggled, and the
28
- * expand toggle icon is hidden.
29
- *
30
- * @default false
31
- */
32
- blockExpansion: boolean;
33
- /** When true, forces the content to expand when printing regardless of collapsed state. */
34
- expandOnPrint: boolean;
35
- /**
36
- * When set to `true`, the header is hidden.
37
- *
38
- * @default false
39
- */
40
- hideHeader: boolean;
41
- }>
42
- >()({
14
+ export const ViraCollapsibleCard = defineViraElement()({
43
15
  tagName: 'vira-collapsible-card',
44
16
  testIds: ['openCaret'],
45
17
  events: {
46
- expandToggle: defineElementEvent<boolean>(),
18
+ expandToggle: defineElementEvent(),
47
19
  },
48
- state({inputs}) {
20
+ state({ inputs }) {
49
21
  return {
50
22
  isExpanded: !!inputs.startExpanded,
51
23
  };
52
24
  },
53
25
  hostClasses: {
54
- 'vira-collapsible-card-expanded': ({state}) => state.isExpanded,
55
- 'vira-collapsible-card-expansion-blocked': ({inputs}) => !!inputs.blockExpansion,
56
- 'vira-collapsible-card-card-styles': ({inputs}) => !inputs.rawCollapsible,
26
+ 'vira-collapsible-card-expanded'({ state }) {
27
+ return state.isExpanded;
28
+ },
29
+ 'vira-collapsible-card-expansion-blocked'({ inputs }) {
30
+ return !!inputs.blockExpansion;
31
+ },
32
+ 'vira-collapsible-card-card-styles'({ inputs }) {
33
+ return !inputs.rawCollapsible;
34
+ },
57
35
  },
58
36
  cssVars: {
59
37
  'vira-collapsible-card-content-gap': '16px',
60
38
  },
61
- styles: ({hostClasses, cssVars}) => {
62
- return css`
39
+ styles({ hostClasses, cssVars }) {
40
+ return css `
63
41
  :host {
64
42
  display: inline-flex;
65
43
  max-width: 100%;
@@ -143,60 +121,55 @@ export const ViraCollapsibleCard = defineViraElement<
143
121
  slotNames: [
144
122
  'vira-collapsible-card-header',
145
123
  ],
146
- render({inputs, slotNames, state, updateState, testIds, dispatch, events}) {
124
+ render({ inputs, slotNames, state, updateState, testIds, dispatch, events }) {
147
125
  if (inputs.blockExpansion) {
148
126
  updateState({
149
127
  isExpanded: true,
150
128
  });
151
129
  }
152
-
153
- const wrapperContentTemplate = html`
130
+ const wrapperContentTemplate = html `
154
131
  <div class="card-content">
155
132
  <slot></slot>
156
133
  </div>
157
134
  `;
158
135
  const wrapperHeaderTemplate = inputs.hideHeader
159
136
  ? nothing
160
- : html`
137
+ : html `
161
138
  <div class="card-header">
162
139
  <slot name=${slotNames['vira-collapsible-card-header']}>
163
140
  <div class="header-filler"></div>
164
141
  </slot>
165
142
 
166
143
  ${inputs.blockExpansion
167
- ? nothing
168
- : html`
144
+ ? nothing
145
+ : html `
169
146
  <${ViraIcon.assign({
170
- icon: ChevronUp16Icon,
171
- fitContainer: true,
172
- })}
147
+ icon: ChevronUp16Icon,
148
+ fitContainer: true,
149
+ })}
173
150
  ${testId(testIds.openCaret)}
174
151
  class="open-caret"
175
152
  ></${ViraIcon}>
176
153
  `}
177
154
  </div>
178
155
  `;
179
-
180
- return html`
156
+ return html `
181
157
  <${ViraCollapsibleWrapper.assign({
182
- expanded: state.isExpanded,
183
- expandOnPrint: inputs.expandOnPrint ?? false,
184
- })}
158
+ expanded: state.isExpanded,
159
+ expandOnPrint: inputs.expandOnPrint ?? false,
160
+ })}
185
161
  ${listen(ViraCollapsibleWrapper.events.expandChange, (event) => {
186
- event.stopImmediatePropagation();
187
- if (inputs.blockExpansion) {
188
- return;
189
- }
190
-
191
- updateState({
192
- isExpanded: event.detail,
193
- });
194
- dispatch(
195
- new events.expandToggle({
196
- detail: event.detail,
197
- }),
198
- );
199
- })}
162
+ event.stopImmediatePropagation();
163
+ if (inputs.blockExpansion) {
164
+ return;
165
+ }
166
+ updateState({
167
+ isExpanded: event.detail,
168
+ });
169
+ dispatch(new events.expandToggle({
170
+ detail: event.detail,
171
+ }));
172
+ })}
200
173
  >
201
174
  <div
202
175
  class="header-wrapper"
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A wrapper element that can collapse and expand to fit its content dynamically and efficiently.
3
+ *
4
+ * @category Collapsible
5
+ * @category Elements
6
+ * @see https://electrovir.github.io/vira/book/elements/vira-collapsible-wrapper
7
+ */
8
+ export declare const ViraCollapsibleWrapper: import("element-vir").DeclarativeElementDefinition<`vira-${string}`, {
9
+ expanded: boolean;
10
+ /** When true, forces the content to expand when printing regardless of collapsed state. */
11
+ expandOnPrint?: boolean;
12
+ }, {
13
+ contentHeight: number;
14
+ contentWidth: number;
15
+ /**
16
+ * Collapsed content that is merely `height: 0` is still rendered, so the browser emits
17
+ * a line break for it when serializing a selection to plain text. Copying a region that
18
+ * spans collapsed wrappers then pastes with runs of blank lines. Taking the content out
19
+ * of layout entirely is what drops those breaks; `visibility: hidden` and `user-select:
20
+ * none` both leave them behind.
21
+ *
22
+ * This starts `false` even when collapsed because the wrapper takes both its width and
23
+ * its animation target height from the content, so the content has to be laid out once
24
+ * before it can be hidden.
25
+ */
26
+ isContentHidden: boolean;
27
+ collapsingElement: HTMLDivElement | undefined;
28
+ }, {
29
+ expandChange: import("element-vir").DefineElementEvent<boolean>;
30
+ }, "vira-collapsible-wrapper-expand-on-print", `vira-${string}-`, readonly ["vira-collapsible-wrapper-header"], readonly []>;
@@ -1,8 +1,7 @@
1
- import {assertWrap} from '@augment-vir/assert';
2
- import {classMap, css, defineElementEvent, html, listen, onDomCreated, onResize} from 'element-vir';
3
- import {noNativeFormStyles, noUserSelect, viraAnimationDurations} from '../styles/index.js';
4
- import {defineViraElement} from '../util/define-vira-element.js';
5
-
1
+ import { assertWrap } from '@augment-vir/assert';
2
+ import { classMap, css, defineElementEvent, html, listen, onDomCreated, onResize } from 'element-vir';
3
+ import { noNativeFormStyles, noUserSelect, viraAnimationDurations } from '../styles/index.js';
4
+ import { defineViraElement } from '../util/define-vira-element.js';
6
5
  /**
7
6
  * A wrapper element that can collapse and expand to fit its content dynamically and efficiently.
8
7
  *
@@ -10,11 +9,7 @@ import {defineViraElement} from '../util/define-vira-element.js';
10
9
  * @category Elements
11
10
  * @see https://electrovir.github.io/vira/book/elements/vira-collapsible-wrapper
12
11
  */
13
- export const ViraCollapsibleWrapper = defineViraElement<{
14
- expanded: boolean;
15
- /** When true, forces the content to expand when printing regardless of collapsed state. */
16
- expandOnPrint?: boolean;
17
- }>()({
12
+ export const ViraCollapsibleWrapper = defineViraElement()({
18
13
  tagName: 'vira-collapsible-wrapper',
19
14
  state() {
20
15
  return {
@@ -32,15 +27,17 @@ export const ViraCollapsibleWrapper = defineViraElement<{
32
27
  * before it can be hidden.
33
28
  */
34
29
  isContentHidden: false,
35
- collapsingElement: undefined as HTMLDivElement | undefined,
30
+ collapsingElement: undefined,
36
31
  };
37
32
  },
38
33
  hostClasses: {
39
- 'vira-collapsible-wrapper-expand-on-print': ({inputs}) => !!inputs.expandOnPrint,
34
+ 'vira-collapsible-wrapper-expand-on-print'({ inputs }) {
35
+ return !!inputs.expandOnPrint;
36
+ },
40
37
  },
41
38
  slotNames: ['vira-collapsible-wrapper-header'],
42
- styles: ({hostClasses}) => {
43
- return css`
39
+ styles({ hostClasses }) {
40
+ return css `
44
41
  :host {
45
42
  display: flex;
46
43
  flex-direction: column;
@@ -88,19 +85,18 @@ export const ViraCollapsibleWrapper = defineViraElement<{
88
85
  `;
89
86
  },
90
87
  events: {
91
- expandChange: defineElementEvent<boolean>(),
88
+ expandChange: defineElementEvent(),
92
89
  },
93
- render({state, slotNames, updateState, dispatch, events, inputs}) {
90
+ render({ state, slotNames, updateState, dispatch, events, inputs }) {
94
91
  if (inputs.expanded && state.isContentHidden) {
95
92
  updateState({
96
93
  isContentHidden: false,
97
94
  });
98
- } else if (
99
- !inputs.expanded &&
95
+ }
96
+ else if (!inputs.expanded &&
100
97
  !state.isContentHidden &&
101
98
  state.contentHeight &&
102
- !state.collapsingElement?.clientHeight
103
- ) {
99
+ !state.collapsingElement?.clientHeight) {
104
100
  /**
105
101
  * Already at zero height, so no collapse animation will run and `transitionend` will
106
102
  * never fire. Covers a wrapper that mounts collapsed and one that gets collapsed before
@@ -114,90 +110,82 @@ export const ViraCollapsibleWrapper = defineViraElement<{
114
110
  isContentHidden: true,
115
111
  });
116
112
  }
117
-
118
113
  /**
119
114
  * Hidden content contributes no width, so the wrapper would shrink to its header without
120
115
  * the width measured while the content was last laid out. `max-width` keeps that from
121
116
  * blocking a later shrink to a narrower container.
122
117
  */
123
118
  const hiddenContentStyles = state.isContentHidden
124
- ? css`
119
+ ? css `
125
120
  width: ${state.contentWidth}px;
126
121
  max-width: 100%;
127
122
  `
128
- : css``;
129
-
123
+ : css ``;
130
124
  /**
131
125
  * Hidden content is rendered without the resize observer rather than with a callback that
132
126
  * ignores it. An attached observer still fires when the content is hidden, and the browser
133
127
  * reports that as a resize observer loop.
134
128
  */
135
129
  const contentWrapperTemplate = state.isContentHidden
136
- ? html`
130
+ ? html `
137
131
  <div class="content-wrapper hidden-content">
138
132
  <slot></slot>
139
133
  </div>
140
134
  `
141
- : html`
135
+ : html `
142
136
  <div
143
- ${onResize(({contentRect}) => {
144
- updateState({
145
- contentHeight: contentRect.height,
146
- contentWidth: contentRect.width,
147
- });
148
- })}
137
+ ${onResize(({ contentRect }) => {
138
+ updateState({
139
+ contentHeight: contentRect.height,
140
+ contentWidth: contentRect.width,
141
+ });
142
+ })}
149
143
  class="content-wrapper"
150
144
  >
151
145
  <slot></slot>
152
146
  </div>
153
147
  `;
154
-
155
148
  const collapsingStyles = inputs.expanded
156
- ? css`
149
+ ? css `
157
150
  height: ${state.contentHeight}px;
158
151
  ${hiddenContentStyles}
159
152
  `
160
- : css`
153
+ : css `
161
154
  height: 0;
162
155
  ${hiddenContentStyles}
163
156
  `;
164
-
165
- return html`
157
+ return html `
166
158
  <button
167
159
  class="header-wrapper"
168
160
  ${listen('click', () => {
169
- dispatch(
170
- new events.expandChange({
171
- detail: !inputs.expanded,
172
- }),
173
- );
174
- })}
161
+ dispatch(new events.expandChange({
162
+ detail: !inputs.expanded,
163
+ }));
164
+ })}
175
165
  >
176
166
  <slot name=${slotNames['vira-collapsible-wrapper-header']}>Header</slot>
177
167
  </button>
178
168
 
179
169
  <div
180
170
  class="collapsing-element ${classMap({
181
- collapsed: !inputs.expanded,
182
- })}"
171
+ collapsed: !inputs.expanded,
172
+ })}"
183
173
  style=${collapsingStyles}
184
174
  disabled="disabled"
185
175
  ${onDomCreated((element) => {
186
- updateState({
187
- collapsingElement: assertWrap.instanceOf(element, HTMLDivElement),
188
- });
189
- })}
176
+ updateState({
177
+ collapsingElement: assertWrap.instanceOf(element, HTMLDivElement),
178
+ });
179
+ })}
190
180
  ${listen('transitionend', (event) => {
191
- if (
192
- event.propertyName === 'height' &&
193
- event.target === event.currentTarget &&
194
- !inputs.expanded
195
- ) {
196
- updateState({
197
- isContentHidden: true,
198
- });
199
- }
200
- })}
181
+ if (event.propertyName === 'height' &&
182
+ event.target === event.currentTarget &&
183
+ !inputs.expanded) {
184
+ updateState({
185
+ isContentHidden: true,
186
+ });
187
+ }
188
+ })}
201
189
  >
202
190
  ${contentWrapperTemplate}
203
191
  </div>