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,81 +0,0 @@
1
- import {check} from '@augment-vir/assert';
2
- import {type PartialWithUndefined} from '@augment-vir/common';
3
- import {
4
- type FullDate,
5
- type Timezone,
6
- createFullDate,
7
- createFullDateInUserTimezone,
8
- toFormattedString,
9
- } from 'date-vir';
10
- import {css} from 'element-vir';
11
- import {defineViraElement} from '../util/define-vira-element.js';
12
-
13
- /**
14
- * Displays a `FullDate` as an absolute, human readable timestamp in the user's timezone (for
15
- * example `Jun 3, 2026 14:30 PDT`).
16
- *
17
- * @category Time
18
- * @category Elements
19
- * @see https://electrovir.github.io/vira/book/elements/vira-absolute-time
20
- */
21
- export const ViraAbsoluteTime = defineViraElement<
22
- {
23
- time: Readonly<FullDate>;
24
- } & PartialWithUndefined<{
25
- /** Show only the date part (`Jun 3, 2026`), omitting the time of day and timezone. */
26
- showDateOnly: boolean;
27
- /** Show only the time part (`14:30 PDT`), omitting the date. */
28
- showTimeOnly: boolean;
29
- /**
30
- * Timezone the value is displayed in. Defaults to the user's timezone. Set this for values
31
- * that are conceptually anchored to a specific timezone (e.g. a date-only value stored at
32
- * midnight UTC), where converting to the user's timezone would shift the displayed
33
- * date/time.
34
- */
35
- timezone: Timezone;
36
- }>
37
- >()({
38
- tagName: 'vira-absolute-time',
39
- styles: css`
40
- :host {
41
- white-space: nowrap;
42
- }
43
- `,
44
- render({inputs}) {
45
- return formatAbsoluteTime(inputs.time, {
46
- showDateOnly: inputs.showDateOnly,
47
- showTimeOnly: inputs.showTimeOnly,
48
- timezone: inputs.timezone,
49
- });
50
- },
51
- });
52
-
53
- /**
54
- * Formats a `FullDate` into the same absolute string rendered by {@link ViraAbsoluteTime}.
55
- *
56
- * @category Time
57
- */
58
- export function formatAbsoluteTime(
59
- time: Readonly<FullDate>,
60
- options?: Readonly<
61
- PartialWithUndefined<{
62
- showDateOnly: boolean;
63
- showTimeOnly: boolean;
64
- timezone: Timezone;
65
- }>
66
- >,
67
- ) {
68
- const dateFormat = [
69
- !options?.showTimeOnly && 'MMM d, yyyy',
70
- !options?.showDateOnly && 'HH:mm ZZZZ',
71
- ]
72
- .filter(check.isTruthy)
73
- .join(' ');
74
-
75
- return toFormattedString(
76
- options?.timezone
77
- ? createFullDate(time, options.timezone)
78
- : createFullDateInUserTimezone(time),
79
- dateFormat,
80
- );
81
- }
@@ -1,185 +0,0 @@
1
- import {type PartialWithUndefined, randomString} from '@augment-vir/common';
2
- import {extractEventTarget} from '@augment-vir/web';
3
- import {
4
- calculateRelativeDate,
5
- createUtcFullDate,
6
- type FullDate,
7
- FullDatePart,
8
- getNowInUtcTimezone,
9
- parseInputElementValue,
10
- type Timezone,
11
- toHtmlInputString,
12
- userTimezone,
13
- } from 'date-vir';
14
- import {css, defineElementEvent, html, ifDefined, listen} from 'element-vir';
15
- import {viraDisabledStyles} from '../styles/disabled.js';
16
- import {viraFormCssVars} from '../styles/form-styles.js';
17
- import {defineViraElement} from '../util/define-vira-element.js';
18
- import {ViraAbsoluteTime} from './vira-absolute-time.element.js';
19
-
20
- /**
21
- * A native date picker input that emits `FullDate` values. Fires `valueChange` whenever the user
22
- * selects (or clears) a date.
23
- *
24
- * @category Input
25
- * @category Elements
26
- * @see https://electrovir.github.io/vira/book/elements/vira-date-input
27
- */
28
- export const ViraDateInput = defineViraElement<
29
- {
30
- value: FullDate | undefined;
31
- } & PartialWithUndefined<{
32
- /** Lower bound for selectable dates. Defaults to `1800-01-01` when omitted. */
33
- min: FullDate;
34
- /** Upper bound for selectable dates. Defaults to 10 years from now when omitted. */
35
- max: FullDate;
36
- /** If true, applies error styling. */
37
- hasError: boolean;
38
- /** A label that is shown above the input, if provided. */
39
- label: string;
40
- /** If true, the input is disabled and cannot be edited. */
41
- isDisabled: boolean;
42
- /** If true, the current value is rendered as plain text instead of an editable input. */
43
- isReadonly: boolean;
44
- /** Timezone used to interpret the selected date. Defaults to the user's timezone. */
45
- timezone: Timezone;
46
- /** Only show the date part of the selected date when in readonly mode. */
47
- showDateOnly: boolean;
48
- /** Only show the time part of the selected date when in readonly mode. */
49
- showTimeOnly: boolean;
50
- }>
51
- >()({
52
- tagName: 'vira-date-input',
53
- events: {
54
- /** Fires whenever the user selects or clears a date. */
55
- valueChange: defineElementEvent<FullDate | undefined>(),
56
- },
57
- state() {
58
- return {
59
- /** Used to couple the label and input together. Not applied when no label is provided. */
60
- randomId: randomString(32),
61
- };
62
- },
63
- hostClasses: {
64
- 'vira-date-input-error': ({inputs}) => !!inputs.hasError,
65
- 'vira-date-input-disabled': ({inputs}) => !!inputs.isDisabled,
66
- },
67
- styles: ({hostClasses}) => {
68
- return css`
69
- :host {
70
- display: inline-block;
71
- width: 224px;
72
- color: ${viraFormCssVars['vira-form-foreground-color'].value};
73
- }
74
-
75
- label {
76
- display: flex;
77
- flex-direction: column;
78
- gap: 2px;
79
- width: 100%;
80
- }
81
-
82
- .input-label {
83
- font-weight: ${viraFormCssVars['vira-form-label-font-weight'].value};
84
- text-align: left;
85
- }
86
-
87
- input {
88
- box-sizing: border-box;
89
- width: 100%;
90
- padding: 4px 8px;
91
- font-size: inherit;
92
- border: 1px solid ${viraFormCssVars['vira-form-border-color'].value};
93
- border-radius: ${viraFormCssVars['vira-form-radius'].value};
94
- background-color: ${viraFormCssVars['vira-form-background-color'].value};
95
- color: ${viraFormCssVars['vira-form-foreground-color'].value};
96
- }
97
-
98
- ${hostClasses['vira-date-input-error'].selector} input {
99
- border-color: ${viraFormCssVars['vira-form-error-color'].value};
100
- }
101
-
102
- ${hostClasses['vira-date-input-disabled'].selector} {
103
- cursor: not-allowed;
104
-
105
- & input {
106
- ${viraDisabledStyles};
107
- }
108
- }
109
- `;
110
- },
111
- render({inputs, state, dispatch, events}) {
112
- if (inputs.isReadonly) {
113
- const readonlyTemplate = inputs.value
114
- ? html`
115
- <${ViraAbsoluteTime.assign({
116
- time: inputs.value,
117
- showDateOnly: inputs.showDateOnly,
118
- showTimeOnly: inputs.showTimeOnly,
119
- timezone: inputs.timezone,
120
- })}></${ViraAbsoluteTime}>
121
- `
122
- : html`
123
- <span class="readonly-value">&nbsp;</span>
124
- `;
125
-
126
- if (inputs.label) {
127
- return html`
128
- <label>
129
- <span class="input-label">${inputs.label}</span>
130
- ${readonlyTemplate}
131
- </label>
132
- `;
133
- } else {
134
- return readonlyTemplate;
135
- }
136
- }
137
-
138
- const inputValue = inputs.value ? toHtmlInputString(inputs.value, FullDatePart.Date) : '';
139
- const minDate = toHtmlInputString(
140
- inputs.min || createUtcFullDate('1800-01-01'),
141
- FullDatePart.Date,
142
- );
143
- const maxDate = toHtmlInputString(
144
- inputs.max ||
145
- calculateRelativeDate(getNowInUtcTimezone(), {
146
- years: 10,
147
- }),
148
- FullDatePart.Date,
149
- );
150
-
151
- const inputTemplate = html`
152
- <input
153
- id=${ifDefined(inputs.label ? state.randomId : undefined)}
154
- aria-label=${ifDefined(inputs.label || undefined)}
155
- type="date"
156
- min=${minDate}
157
- max=${maxDate}
158
- ?disabled=${inputs.isDisabled}
159
- .value=${inputValue}
160
- ${listen('input', (event) => {
161
- const element = extractEventTarget(event, HTMLInputElement);
162
- dispatch(
163
- new events.valueChange({
164
- detail: parseInputElementValue(
165
- element,
166
- inputs.timezone || userTimezone,
167
- ),
168
- }),
169
- );
170
- })}
171
- />
172
- `;
173
-
174
- if (inputs.label) {
175
- return html`
176
- <label for=${state.randomId}>
177
- <span class="input-label">${inputs.label}</span>
178
- ${inputTemplate}
179
- </label>
180
- `;
181
- } else {
182
- return inputTemplate;
183
- }
184
- },
185
- });
@@ -1,310 +0,0 @@
1
- import {check} from '@augment-vir/assert';
2
- import {filterMap, type PartialWithUndefined, randomString} from '@augment-vir/common';
3
- import {
4
- classMap,
5
- css,
6
- defineElementEvent,
7
- html,
8
- type HTMLTemplateResult,
9
- ifDefined,
10
- listen,
11
- nothing,
12
- testId,
13
- } from 'element-vir';
14
- import {type ViraIconSvg} from '../icons/icon-svg.js';
15
- import {ChevronUp16Icon} from '../icons/index.js';
16
- import {viraFormCssVars} from '../styles/form-styles.js';
17
- import {noUserSelect, viraAnimationDurations} from '../styles/index.js';
18
- import {defineViraElement} from '../util/define-vira-element.js';
19
- import {renderMenuItemEntries} from '../util/pop-up-helpers.js';
20
- import {type ShowPopUpResult} from '../util/pop-up-manager.js';
21
- import {type ViraSelectOption} from '../util/vira-select-option.js';
22
- import {ViraMenu, ViraMenuPopUpDirection} from './pop-up/vira-menu.element.js';
23
- import {
24
- HorizontalAnchor,
25
- type PopUpTriggerPosition,
26
- ViraPopUpTrigger,
27
- } from './pop-up/vira-pop-up-trigger.element.js';
28
- import {ViraIcon} from './vira-icon.element.js';
29
-
30
- /**
31
- * A dropdown element that uses pop-up menus.
32
- *
33
- * @category Dropdown
34
- * @category Elements
35
- * @see https://electrovir.github.io/vira/book/elements/dropdown/vira-dropdown
36
- */
37
- export const ViraDropdown = defineViraElement<
38
- {
39
- options: ReadonlyArray<Readonly<ViraSelectOption>>;
40
- /** The selected id from the given options. */
41
- selected: ReadonlyArray<PropertyKey>;
42
- } & PartialWithUndefined<
43
- {
44
- /** Text to show if nothing is selected. */
45
- placeholder: string;
46
- /**
47
- * If false, this will behave like a single select dropdown, otherwise you can select
48
- * multiple.
49
- */
50
- isMultiSelect: boolean;
51
- icon: ViraIconSvg;
52
- selectionPrefix: string;
53
- isDisabled: boolean;
54
- label: string;
55
- /** For debugging purposes only. Very bad for actual production code use. */
56
- z_debug_forceOpenState: boolean;
57
- } & PopUpTriggerPosition
58
- >
59
- >()({
60
- tagName: 'vira-dropdown',
61
- testIds: [
62
- 'leadingIcon',
63
- 'prefixText',
64
- 'trigger',
65
- ],
66
- styles: css`
67
- :host {
68
- display: inline-flex;
69
- vertical-align: middle;
70
- width: 256px;
71
- position: relative;
72
- max-width: 100%;
73
- }
74
-
75
- ${ViraPopUpTrigger} {
76
- width: 100%;
77
- }
78
-
79
- .selection-display {
80
- overflow: hidden;
81
- text-overflow: ellipsis;
82
- white-space: nowrap;
83
- }
84
-
85
- .trigger-icon {
86
- width: 24px;
87
- aspect-ratio: 1;
88
- align-self: flex-start;
89
- will-change: transform;
90
- transform: rotate(180deg);
91
- transition: transform
92
- ${viraAnimationDurations['vira-interaction-animation-duration'].value} linear;
93
- }
94
-
95
- .trigger-icon-wrapper {
96
- flex-grow: 1;
97
- display: flex;
98
- justify-content: flex-end;
99
- }
100
-
101
- .open {
102
- & .trigger-icon {
103
- transform: rotate(0);
104
- }
105
-
106
- &:not(.open-upwards).dropdown-trigger {
107
- border-bottom-left-radius: 0;
108
- }
109
-
110
- &.open-upwards.dropdown-trigger {
111
- border-top-left-radius: 0;
112
- }
113
- }
114
-
115
- .dropdown-trigger {
116
- ${noUserSelect};
117
- border: 1px solid ${viraFormCssVars['vira-form-border-color'].value};
118
- height: 100%;
119
- width: 100%;
120
- box-sizing: border-box;
121
- display: flex;
122
- gap: 8px;
123
- text-align: left;
124
- align-items: center;
125
- padding: 3px;
126
- padding-left: 10px;
127
- border-radius: ${viraFormCssVars['vira-form-radius'].value};
128
- background-color: ${viraFormCssVars['vira-form-background-color'].value};
129
- color: ${viraFormCssVars['vira-form-foreground-color'].value};
130
- }
131
-
132
- .using-placeholder {
133
- opacity: 0.4;
134
- }
135
-
136
- label {
137
- display: flex;
138
- flex-direction: column;
139
- justify-content: flex-start;
140
- gap: 2px;
141
- width: 100%;
142
- max-width: 100%;
143
-
144
- & .dropdown-label {
145
- font-weight: ${viraFormCssVars['vira-form-label-font-weight'].value};
146
- text-align: left;
147
- flex-shrink: 0;
148
- flex-wrap: wrap;
149
- }
150
- }
151
- `,
152
- events: {
153
- /** Emits all currently selected values. */
154
- selectedValuesChange: defineElementEvent<string[]>(),
155
- openChange: defineElementEvent<ShowPopUpResult | undefined>(),
156
- },
157
- state() {
158
- return {
159
- /** `undefined` means the pop up is not currently showing. */
160
- showPopUpResult: undefined as ShowPopUpResult | undefined,
161
- /**
162
- * Used to couple the label and trigger together. This is not applied if no label is
163
- * provided.
164
- */
165
- randomId: randomString(32),
166
- };
167
- },
168
- render({state, inputs, dispatch, events, updateState, testIds}) {
169
- const selectedOptions = filterMap(
170
- inputs.selected,
171
- (selectedValue) => inputs.options.find((option) => option.value === selectedValue),
172
- check.isTruthy,
173
- );
174
-
175
- const leadingIconTemplate = inputs.icon
176
- ? html`
177
- <${ViraIcon.assign({
178
- icon: inputs.icon,
179
- })}
180
- ${testId(testIds.leadingIcon)}
181
- ></${ViraIcon}>
182
- `
183
- : nothing;
184
-
185
- const shouldUsePlaceholder: boolean = !selectedOptions.length;
186
-
187
- const prefixTemplate =
188
- inputs.selectionPrefix && !shouldUsePlaceholder
189
- ? html`
190
- <span class="selected-label-prefix" ${testId(testIds.prefixText)}>
191
- ${inputs.selectionPrefix}
192
- </span>
193
- `
194
- : nothing;
195
-
196
- const selectionDisplay: string | HTMLTemplateResult = shouldUsePlaceholder
197
- ? inputs.placeholder || ''
198
- : inputs.isMultiSelect && selectedOptions.length > 1
199
- ? `${selectedOptions.length} Selected`
200
- : selectedOptions[0]?.label || '';
201
-
202
- const menuTemplate = html`
203
- <${ViraMenu.assign({
204
- direction: state.showPopUpResult?.popDown
205
- ? ViraMenuPopUpDirection.Downwards
206
- : ViraMenuPopUpDirection.Upwards,
207
- })}
208
- slot=${ViraPopUpTrigger.slotNames['vira-pop-up-trigger-pop-up']}
209
- >
210
- ${renderMenuItemEntries(
211
- inputs.options.map((option) => {
212
- return {
213
- content: option.label,
214
- onClick() {
215
- const newSelectedValues = inputs.isMultiSelect
216
- ? selectedOptions.includes(option)
217
- ? filterMap(
218
- selectedOptions,
219
- (selectedOption) => selectedOption.value,
220
- (value, selectedOption) => selectedOption !== option,
221
- )
222
- : [
223
- ...selectedOptions.map(
224
- (selectedOption) => selectedOption.value,
225
- ),
226
- option.value,
227
- ]
228
- : [option.value];
229
- dispatch(
230
- new events.selectedValuesChange({
231
- detail: newSelectedValues,
232
- }),
233
- );
234
- },
235
- disabled: option.disabled,
236
- selected: selectedOptions.includes(option),
237
- };
238
- }),
239
- )}
240
- </${ViraMenu}>
241
- `;
242
-
243
- const triggerTemplate = html`
244
- <${ViraPopUpTrigger.assign({
245
- ...inputs,
246
- keepOpenAfterInteraction: inputs.isMultiSelect,
247
- focusOnClose: true,
248
- popUpOffset: {
249
- vertical: -1,
250
- right: 24,
251
- },
252
- horizontalAnchor: inputs.horizontalAnchor || HorizontalAnchor.Both,
253
- })}
254
- ${listen(ViraPopUpTrigger.events.openChange, (event) => {
255
- if (!!state.showPopUpResult !== !!event.detail) {
256
- dispatch(
257
- new events.openChange({
258
- detail: event.detail,
259
- }),
260
- );
261
- }
262
- updateState({
263
- showPopUpResult: event.detail,
264
- });
265
- })}
266
- >
267
- <div
268
- class="dropdown-trigger ${classMap({
269
- open: !!state.showPopUpResult,
270
- 'open-upwards': !state.showPopUpResult?.popDown,
271
- })}"
272
- slot=${ViraPopUpTrigger.slotNames['vira-pop-up-trigger-trigger']}
273
- id=${ifDefined(inputs.label ? state.randomId : undefined)}
274
- aria-label=${ifDefined(inputs.label || undefined)}
275
- ${testId(testIds.trigger)}
276
- >
277
- ${leadingIconTemplate}
278
- <span
279
- class="selection-display ${classMap({
280
- 'using-placeholder': shouldUsePlaceholder,
281
- })}"
282
- title=${ifDefined(shouldUsePlaceholder ? undefined : selectionDisplay)}
283
- >
284
- ${prefixTemplate} ${selectionDisplay}
285
- </span>
286
-
287
- <span class="trigger-icon-wrapper">
288
- <${ViraIcon.assign({
289
- icon: ChevronUp16Icon,
290
- })}
291
- class="trigger-icon"
292
- ></${ViraIcon}>
293
- </span>
294
- </div>
295
- ${state.showPopUpResult ? menuTemplate : nothing}
296
- </${ViraPopUpTrigger}>
297
- `;
298
-
299
- if (inputs.label) {
300
- return html`
301
- <label for=${state.randomId}>
302
- <span class="dropdown-label">${inputs.label}</span>
303
- ${triggerTemplate}
304
- </label>
305
- `;
306
- } else {
307
- return triggerTemplate;
308
- }
309
- },
310
- });