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,47 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ import { type FullDate, type Timezone } from 'date-vir';
3
+ /**
4
+ * A native date picker input that emits `FullDate` values. Fires `valueChange` whenever the user
5
+ * selects (or clears) a date.
6
+ *
7
+ * @category Input
8
+ * @category Elements
9
+ * @see https://electrovir.github.io/vira/book/elements/vira-date-input
10
+ */
11
+ export declare const ViraDateInput: import("element-vir").DeclarativeElementDefinition<"vira-date-input", {
12
+ value: FullDate | undefined;
13
+ } & PartialWithUndefined<{
14
+ /** Lower bound for selectable dates. Defaults to `1800-01-01` when omitted. */
15
+ min: FullDate;
16
+ /** Upper bound for selectable dates. Defaults to 10 years from now when omitted. */
17
+ max: FullDate;
18
+ /** If true, applies error styling. */
19
+ hasError: boolean;
20
+ /** A label that is shown above the input, if provided. */
21
+ label: string;
22
+ /** If true, the input is disabled and cannot be edited. */
23
+ isDisabled: boolean;
24
+ /** If true, the current value is rendered as plain text instead of an editable input. */
25
+ isReadonly: boolean;
26
+ /** Timezone used to interpret the selected date. Defaults to the user's timezone. */
27
+ timezone: Timezone;
28
+ /** Only show the date part of the selected date when in readonly mode. */
29
+ showDateOnly: boolean;
30
+ /** Only show the time part of the selected date when in readonly mode. */
31
+ showTimeOnly: boolean;
32
+ }>, {
33
+ /** Used to couple the label and input together. Not applied when no label is provided. */
34
+ randomId: string;
35
+ }, {
36
+ /** Fires whenever the user selects or clears a date. */
37
+ valueChange: import("element-vir").DefineElementEvent<{
38
+ hour: import("date-vir").Hour;
39
+ minute: import("date-vir").Minute;
40
+ millisecond: number;
41
+ year: number;
42
+ month: import("date-vir").MonthNumber;
43
+ day: import("date-vir").DayOfMonth;
44
+ second: import("date-vir").Second;
45
+ timezone: Timezone;
46
+ } | undefined>;
47
+ }, "vira-date-input-error" | "vira-date-input-disabled", "vira-date-input-", readonly [], readonly []>;
@@ -0,0 +1,142 @@
1
+ import { randomString } from '@augment-vir/common';
2
+ import { extractEventTarget } from '@augment-vir/web';
3
+ import { calculateRelativeDate, createUtcFullDate, FullDatePart, getNowInUtcTimezone, parseInputElementValue, toHtmlInputString, userTimezone, } from 'date-vir';
4
+ import { css, defineElementEvent, html, ifDefined, listen } from 'element-vir';
5
+ import { viraDisabledStyles } from '../styles/disabled.js';
6
+ import { viraFormCssVars } from '../styles/form-styles.js';
7
+ import { defineViraElement } from '../util/define-vira-element.js';
8
+ import { ViraAbsoluteTime } from './vira-absolute-time.element.js';
9
+ /**
10
+ * A native date picker input that emits `FullDate` values. Fires `valueChange` whenever the user
11
+ * selects (or clears) a date.
12
+ *
13
+ * @category Input
14
+ * @category Elements
15
+ * @see https://electrovir.github.io/vira/book/elements/vira-date-input
16
+ */
17
+ export const ViraDateInput = defineViraElement()({
18
+ tagName: 'vira-date-input',
19
+ events: {
20
+ /** Fires whenever the user selects or clears a date. */
21
+ valueChange: defineElementEvent(),
22
+ },
23
+ state() {
24
+ return {
25
+ /** Used to couple the label and input together. Not applied when no label is provided. */
26
+ randomId: randomString(32),
27
+ };
28
+ },
29
+ hostClasses: {
30
+ 'vira-date-input-error'({ inputs }) {
31
+ return !!inputs.hasError;
32
+ },
33
+ 'vira-date-input-disabled'({ inputs }) {
34
+ return !!inputs.isDisabled;
35
+ },
36
+ },
37
+ styles({ hostClasses }) {
38
+ return css `
39
+ :host {
40
+ display: inline-block;
41
+ width: 224px;
42
+ color: ${viraFormCssVars['vira-form-foreground-color'].value};
43
+ }
44
+
45
+ label {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 2px;
49
+ width: 100%;
50
+ }
51
+
52
+ .input-label {
53
+ font-weight: ${viraFormCssVars['vira-form-label-font-weight'].value};
54
+ text-align: left;
55
+ }
56
+
57
+ input {
58
+ box-sizing: border-box;
59
+ width: 100%;
60
+ padding: 4px 8px;
61
+ font-size: inherit;
62
+ border: 1px solid ${viraFormCssVars['vira-form-border-color'].value};
63
+ border-radius: ${viraFormCssVars['vira-form-radius'].value};
64
+ background-color: ${viraFormCssVars['vira-form-background-color'].value};
65
+ color: ${viraFormCssVars['vira-form-foreground-color'].value};
66
+ }
67
+
68
+ ${hostClasses['vira-date-input-error'].selector} input {
69
+ border-color: ${viraFormCssVars['vira-form-error-color'].value};
70
+ }
71
+
72
+ ${hostClasses['vira-date-input-disabled'].selector} {
73
+ cursor: not-allowed;
74
+
75
+ & input {
76
+ ${viraDisabledStyles};
77
+ }
78
+ }
79
+ `;
80
+ },
81
+ render({ inputs, state, dispatch, events }) {
82
+ if (inputs.isReadonly) {
83
+ const readonlyTemplate = inputs.value
84
+ ? html `
85
+ <${ViraAbsoluteTime.assign({
86
+ time: inputs.value,
87
+ showDateOnly: inputs.showDateOnly,
88
+ showTimeOnly: inputs.showTimeOnly,
89
+ timezone: inputs.timezone,
90
+ })}></${ViraAbsoluteTime}>
91
+ `
92
+ : html `
93
+ <span class="readonly-value">&nbsp;</span>
94
+ `;
95
+ if (inputs.label) {
96
+ return html `
97
+ <label>
98
+ <span class="input-label">${inputs.label}</span>
99
+ ${readonlyTemplate}
100
+ </label>
101
+ `;
102
+ }
103
+ else {
104
+ return readonlyTemplate;
105
+ }
106
+ }
107
+ const inputValue = inputs.value ? toHtmlInputString(inputs.value, FullDatePart.Date) : '';
108
+ const minDate = toHtmlInputString(inputs.min || createUtcFullDate('1800-01-01'), FullDatePart.Date);
109
+ const maxDate = toHtmlInputString(inputs.max ||
110
+ calculateRelativeDate(getNowInUtcTimezone(), {
111
+ years: 10,
112
+ }), FullDatePart.Date);
113
+ const inputTemplate = html `
114
+ <input
115
+ id=${ifDefined(inputs.label ? state.randomId : undefined)}
116
+ aria-label=${ifDefined(inputs.label || undefined)}
117
+ type="date"
118
+ min=${minDate}
119
+ max=${maxDate}
120
+ ?disabled=${inputs.isDisabled}
121
+ .value=${inputValue}
122
+ ${listen('input', (event) => {
123
+ const element = extractEventTarget(event, HTMLInputElement);
124
+ dispatch(new events.valueChange({
125
+ detail: parseInputElementValue(element, inputs.timezone || userTimezone),
126
+ }));
127
+ })}
128
+ />
129
+ `;
130
+ if (inputs.label) {
131
+ return html `
132
+ <label for=${state.randomId}>
133
+ <span class="input-label">${inputs.label}</span>
134
+ ${inputTemplate}
135
+ </label>
136
+ `;
137
+ }
138
+ else {
139
+ return inputTemplate;
140
+ }
141
+ },
142
+ });
@@ -0,0 +1,24 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ /**
3
+ * A drawer element that slides up from the bottom of the page using the built-in `dialog` element.
4
+ *
5
+ * @category Elements
6
+ */
7
+ export declare const ViraDrawer: import("element-vir").DeclarativeElementDefinition<`vira-${string}`, {
8
+ open: boolean;
9
+ } & PartialWithUndefined<{
10
+ /** If this isn't set, make sure to use the drawer title slot to fill it in. */
11
+ drawerTitle: string;
12
+ noContentPadding: boolean;
13
+ }>, {
14
+ dialogElement: HTMLDialogElement | undefined;
15
+ contentElement: HTMLDivElement | undefined;
16
+ previousOpenValue: undefined | boolean;
17
+ /** Cleans up all listeners that have been attached. */
18
+ cleanupListeners: undefined | (() => void);
19
+ isDragging: boolean;
20
+ dragStartY: number;
21
+ dragCurrentY: number;
22
+ }, {
23
+ drawerClose: import("element-vir").DefineElementEvent<void>;
24
+ }, "vira-drawer-dragging" | "vira-drawer-no-content-padding", "vira-drawer-backdrop-filter" | "vira-drawer-max-height", readonly ["vira-drawer-drawer-title"], readonly []>;
@@ -1,73 +1,65 @@
1
- import {assertWrap} from '@augment-vir/assert';
2
- import {type PartialWithUndefined} from '@augment-vir/common';
3
- import {colorCss} from '@electrovir/color';
4
- import {css, defineElementEvent, html, listen, nothing, onDomCreated} from 'element-vir';
5
- import {themeDefaultKey} from 'theme-vir/dist/color-theme/color-theme.js';
6
- import {listenToGlobal} from 'typed-event-target';
7
- import {X24Icon} from '../icons/icon-svgs/24/x-24.icon.js';
8
- import {viraAnimationDurations} from '../styles/durations.js';
9
- import {viraFormCssVars} from '../styles/form-styles.js';
10
- import {noNativeFormStyles, noNativeSpacing} from '../styles/native-styles.js';
11
- import {viraShadows} from '../styles/shadows.js';
12
- import {noUserSelect} from '../styles/user-select.js';
13
- import {viraTheme} from '../styles/vira-color-theme.js';
14
- import {defineViraElement} from '../util/define-vira-element.js';
15
- import {isMouseEventOnScrollbar} from '../util/pop-up-manager.js';
16
- import {ViraIcon} from './vira-icon.element.js';
17
-
1
+ import { assertWrap } from '@augment-vir/assert';
2
+ import { colorCss } from '@electrovir/color';
3
+ import { css, defineElementEvent, html, listen, nothing, onDomCreated } from 'element-vir';
4
+ import { themeDefaultKey } from 'theme-vir/dist/color-theme/color-theme.js';
5
+ import { listenToGlobal } from 'typed-event-target';
6
+ import { X24Icon } from '../icons/icon-svgs/24/x-24.icon.js';
7
+ import { viraAnimationDurations } from '../styles/durations.js';
8
+ import { viraFormCssVars } from '../styles/form-styles.js';
9
+ import { noNativeFormStyles, noNativeSpacing } from '../styles/native-styles.js';
10
+ import { viraShadows } from '../styles/shadows.js';
11
+ import { noUserSelect } from '../styles/user-select.js';
12
+ import { viraTheme } from '../styles/vira-color-theme.js';
13
+ import { defineViraElement } from '../util/define-vira-element.js';
14
+ import { isMouseEventOnScrollbar } from '../util/pop-up-manager.js';
15
+ import { ViraIcon } from './vira-icon.element.js';
18
16
  const globalEventsToCloseDrawerOn = [
19
17
  'pagehide',
20
18
  'pageshow',
21
19
  'popstate',
22
- ] as const satisfies (keyof WindowEventMap)[];
23
-
20
+ ];
24
21
  /** Minimum downward drag distance (in pixels) required to close the drawer. */
25
22
  const dragCloseThreshold = 30;
26
-
27
23
  /**
28
24
  * A drawer element that slides up from the bottom of the page using the built-in `dialog` element.
29
25
  *
30
26
  * @category Elements
31
27
  */
32
- export const ViraDrawer = defineViraElement<
33
- {
34
- open: boolean;
35
- } & PartialWithUndefined<{
36
- /** If this isn't set, make sure to use the drawer title slot to fill it in. */
37
- drawerTitle: string;
38
- noContentPadding: boolean;
39
- }>
40
- >()({
28
+ export const ViraDrawer = defineViraElement()({
41
29
  tagName: 'vira-drawer',
42
30
  events: {
43
- drawerClose: defineElementEvent<void>(),
31
+ drawerClose: defineElementEvent(),
44
32
  },
45
33
  state() {
46
34
  return {
47
- dialogElement: undefined as HTMLDialogElement | undefined,
48
- contentElement: undefined as HTMLDivElement | undefined,
49
- previousOpenValue: undefined as undefined | boolean,
35
+ dialogElement: undefined,
36
+ contentElement: undefined,
37
+ previousOpenValue: undefined,
50
38
  /** Cleans up all listeners that have been attached. */
51
- cleanupListeners: undefined as undefined | (() => void),
39
+ cleanupListeners: undefined,
52
40
  isDragging: false,
53
41
  dragStartY: 0,
54
42
  dragCurrentY: 0,
55
43
  };
56
44
  },
57
- cleanup({state}) {
45
+ cleanup({ state }) {
58
46
  state.cleanupListeners?.();
59
47
  },
60
48
  hostClasses: {
61
- 'vira-drawer-dragging': ({state}) => state.isDragging,
62
- 'vira-drawer-no-content-padding': ({inputs}) => !!inputs.noContentPadding,
49
+ 'vira-drawer-dragging'({ state }) {
50
+ return state.isDragging;
51
+ },
52
+ 'vira-drawer-no-content-padding'({ inputs }) {
53
+ return !!inputs.noContentPadding;
54
+ },
63
55
  },
64
56
  slotNames: ['vira-drawer-drawer-title'],
65
57
  cssVars: {
66
58
  'vira-drawer-backdrop-filter': 'blur(3px)',
67
59
  'vira-drawer-max-height': '80dvh',
68
60
  },
69
- styles: ({cssVars, hostClasses}) => {
70
- return css`
61
+ styles({ cssVars, hostClasses }) {
62
+ return css `
71
63
  :host {
72
64
  display: contents;
73
65
  }
@@ -94,7 +86,7 @@ export const ViraDrawer = defineViraElement<
94
86
  border-radius: 16px 16px 0 0;
95
87
  ${viraShadows.modal}
96
88
  transition: transform ${viraAnimationDurations['vira-pretty-animation-duration']
97
- .value} ease;
89
+ .value} ease;
98
90
 
99
91
  &[open] {
100
92
  display: flex;
@@ -126,9 +118,7 @@ export const ViraDrawer = defineViraElement<
126
118
  width: 36px;
127
119
  height: 4px;
128
120
  border-radius: 2px;
129
- background-color: ${viraFormCssVars[
130
- 'vira-form-secondary-body-foreground'
131
- ].value};
121
+ background-color: ${viraFormCssVars['vira-form-secondary-body-foreground'].value};
132
122
  opacity: 0.5;
133
123
  }
134
124
  }
@@ -160,9 +150,7 @@ export const ViraDrawer = defineViraElement<
160
150
  border-radius: ${viraFormCssVars['vira-form-radius'].value};
161
151
 
162
152
  &:hover {
163
- background-color: ${viraFormCssVars[
164
- 'vira-form-selection-hover-color'
165
- ].value};
153
+ background-color: ${viraFormCssVars['vira-form-selection-hover-color'].value};
166
154
  }
167
155
 
168
156
  & ${ViraIcon} {
@@ -186,15 +174,15 @@ export const ViraDrawer = defineViraElement<
186
174
  }
187
175
  `;
188
176
  },
189
- render({inputs, state, updateState, events, dispatch, slotNames}) {
177
+ render({ inputs, state, updateState, events, dispatch, slotNames }) {
190
178
  if (state.dialogElement && inputs.open !== state.dialogElement.open) {
191
179
  if (inputs.open) {
192
180
  state.dialogElement.showModal();
193
- } else {
181
+ }
182
+ else {
194
183
  state.dialogElement.close();
195
184
  }
196
185
  }
197
-
198
186
  if (state.previousOpenValue !== inputs.open) {
199
187
  state.cleanupListeners?.();
200
188
  updateState({
@@ -203,111 +191,96 @@ export const ViraDrawer = defineViraElement<
203
191
  if (inputs.open) {
204
192
  const removers = globalEventsToCloseDrawerOn.map((eventName) => {
205
193
  return listenToGlobal(eventName, () => {
206
- dispatch(
207
- new events.drawerClose({
208
- detail: undefined,
209
- }),
210
- );
194
+ dispatch(new events.drawerClose({
195
+ detail: undefined,
196
+ }));
211
197
  });
212
198
  });
213
-
214
199
  updateState({
215
- cleanupListeners: () => {
200
+ cleanupListeners() {
216
201
  removers.forEach((remover) => remover());
217
202
  },
218
203
  });
219
204
  }
220
205
  }
221
-
222
206
  function close() {
223
207
  if (inputs.open) {
224
208
  state.cleanupListeners?.();
225
- dispatch(
226
- new events.drawerClose({
227
- detail: undefined,
228
- }),
229
- );
209
+ dispatch(new events.drawerClose({
210
+ detail: undefined,
211
+ }));
230
212
  }
231
213
  }
232
-
233
214
  if (state.dialogElement) {
234
215
  if (state.isDragging) {
235
216
  const dragOffset = Math.max(0, state.dragCurrentY - state.dragStartY);
236
217
  state.dialogElement.style.transform = `translateY(${String(dragOffset)}px)`;
237
218
  state.dialogElement.style.transition = 'none';
238
- } else {
219
+ }
220
+ else {
239
221
  state.dialogElement.style.transform = '';
240
222
  state.dialogElement.style.transition = '';
241
223
  }
242
224
  }
243
-
244
- return html`
225
+ return html `
245
226
  <dialog
246
227
  ${onDomCreated((element) => {
247
- updateState({
248
- dialogElement: assertWrap.instanceOf(element, HTMLDialogElement),
249
- });
250
- })}
228
+ updateState({
229
+ dialogElement: assertWrap.instanceOf(element, HTMLDialogElement),
230
+ });
231
+ })}
251
232
  ${listen('close', () => {
252
- close();
253
- })}
233
+ close();
234
+ })}
254
235
  ${listen('mousedown', (event) => {
255
- if (
256
- state.contentElement &&
257
- !event.composedPath().includes(state.contentElement) &&
258
- !isMouseEventOnScrollbar(event)
259
- ) {
260
- close();
261
- }
262
- })}
236
+ if (state.contentElement &&
237
+ !event.composedPath().includes(state.contentElement) &&
238
+ !isMouseEventOnScrollbar(event)) {
239
+ close();
240
+ }
241
+ })}
263
242
  >
264
243
  <div
265
244
  class="drawer-content-wrapper"
266
245
  ${onDomCreated((element) => {
267
- updateState({
268
- contentElement: assertWrap.instanceOf(element, HTMLDivElement),
269
- });
270
- })}
246
+ updateState({
247
+ contentElement: assertWrap.instanceOf(element, HTMLDivElement),
248
+ });
249
+ })}
271
250
  >
272
251
  <div
273
252
  class="drag-handle-wrapper"
274
253
  ${listen('dblclick', () => {
275
- close();
276
- })}
254
+ close();
255
+ })}
277
256
  ${listen('pointerdown', (event) => {
278
- updateState({
279
- isDragging: true,
280
- dragStartY: event.clientY,
281
- dragCurrentY: event.clientY,
282
- });
283
-
284
- function handlePointerMove(moveEvent: PointerEvent) {
285
- updateState({
286
- dragCurrentY: moveEvent.clientY,
287
- });
288
- }
289
-
290
- function handlePointerUp(upEvent: PointerEvent) {
291
- const dragDistance = upEvent.clientY - state.dragStartY;
292
-
293
- updateState({
294
- isDragging: false,
295
- dragStartY: 0,
296
- dragCurrentY: 0,
297
- });
298
-
299
- if (dragDistance > dragCloseThreshold) {
300
- close();
301
- }
302
-
303
- listenerRemovers.forEach((remover) => remover());
304
- }
305
-
306
- const listenerRemovers = [
307
- listenToGlobal('pointermove', handlePointerMove),
308
- listenToGlobal('pointerup', handlePointerUp),
309
- ];
310
- })}
257
+ updateState({
258
+ isDragging: true,
259
+ dragStartY: event.clientY,
260
+ dragCurrentY: event.clientY,
261
+ });
262
+ function handlePointerMove(moveEvent) {
263
+ updateState({
264
+ dragCurrentY: moveEvent.clientY,
265
+ });
266
+ }
267
+ function handlePointerUp(upEvent) {
268
+ const dragDistance = upEvent.clientY - state.dragStartY;
269
+ updateState({
270
+ isDragging: false,
271
+ dragStartY: 0,
272
+ dragCurrentY: 0,
273
+ });
274
+ if (dragDistance > dragCloseThreshold) {
275
+ close();
276
+ }
277
+ listenerRemovers.forEach((remover) => remover());
278
+ }
279
+ const listenerRemovers = [
280
+ listenToGlobal('pointermove', handlePointerMove),
281
+ listenToGlobal('pointerup', handlePointerUp),
282
+ ];
283
+ })}
311
284
  >
312
285
  <div class="drag-handle"></div>
313
286
  </div>
@@ -323,21 +296,21 @@ export const ViraDrawer = defineViraElement<
323
296
  class="close"
324
297
  aria-label="Close"
325
298
  ${listen('click', () => {
326
- state.dialogElement?.close();
327
- })}
299
+ state.dialogElement?.close();
300
+ })}
328
301
  >
329
302
  <${ViraIcon.assign({
330
- icon: X24Icon,
331
- })}></${ViraIcon}>
303
+ icon: X24Icon,
304
+ })}></${ViraIcon}>
332
305
  </button>
333
306
  </div>
334
307
  ${inputs.open
335
- ? html`
308
+ ? html `
336
309
  <div class="body">
337
310
  <slot></slot>
338
311
  </div>
339
312
  `
340
- : nothing}
313
+ : nothing}
341
314
  </div>
342
315
  </dialog>
343
316
  `;
@@ -0,0 +1,43 @@
1
+ import { type PartialWithUndefined } from '@augment-vir/common';
2
+ import { type ViraIconSvg } from '../icons/icon-svg.js';
3
+ import { type ShowPopUpResult } from '../util/pop-up-manager.js';
4
+ import { type ViraSelectOption } from '../util/vira-select-option.js';
5
+ import { type PopUpTriggerPosition } from './pop-up/vira-pop-up-trigger.element.js';
6
+ /**
7
+ * A dropdown element that uses pop-up menus.
8
+ *
9
+ * @category Dropdown
10
+ * @category Elements
11
+ * @see https://electrovir.github.io/vira/book/elements/dropdown/vira-dropdown
12
+ */
13
+ export declare const ViraDropdown: import("element-vir").DeclarativeElementDefinition<"vira-dropdown", {
14
+ options: ReadonlyArray<Readonly<ViraSelectOption>>;
15
+ /** The selected id from the given options. */
16
+ selected: ReadonlyArray<PropertyKey>;
17
+ } & PartialWithUndefined<{
18
+ /** Text to show if nothing is selected. */
19
+ placeholder: string;
20
+ /**
21
+ * If false, this will behave like a single select dropdown, otherwise you can select
22
+ * multiple.
23
+ */
24
+ isMultiSelect: boolean;
25
+ icon: ViraIconSvg;
26
+ selectionPrefix: string;
27
+ isDisabled: boolean;
28
+ label: string;
29
+ /** For debugging purposes only. Very bad for actual production code use. */
30
+ z_debug_forceOpenState: boolean;
31
+ } & PopUpTriggerPosition>, {
32
+ /** `undefined` means the pop up is not currently showing. */
33
+ showPopUpResult: ShowPopUpResult | undefined;
34
+ /**
35
+ * Used to couple the label and trigger together. This is not applied if no label is
36
+ * provided.
37
+ */
38
+ randomId: string;
39
+ }, {
40
+ /** Emits all currently selected values. */
41
+ selectedValuesChange: import("element-vir").DefineElementEvent<string[]>;
42
+ openChange: import("element-vir").DefineElementEvent<ShowPopUpResult | undefined>;
43
+ }, "vira-dropdown-", "vira-dropdown-", readonly [], readonly ["leadingIcon", "prefixText", "trigger"]>;