vectis-ui 0.10.0 → 0.10.2

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 (334) hide show
  1. package/dist/components/VAccordion/VAccordion.js.map +1 -1
  2. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/components/VAccordion/VAccordionItem.d.ts +6 -21
  4. package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
  5. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/VAccordion/context.js.map +1 -1
  7. package/dist/components/VAvatar/VAvatar.d.ts +2 -12
  8. package/dist/components/VAvatar/VAvatar.js.map +1 -1
  9. package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/VAvatar/VAvatarGroup.d.ts +2 -2
  11. package/dist/components/VAvatar/VAvatarGroup.js.map +1 -1
  12. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +6 -6
  13. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/VAvatar/context.d.ts +1 -5
  15. package/dist/components/VAvatar/context.js.map +1 -1
  16. package/dist/components/VBadge/VBadge.d.ts +13 -27
  17. package/dist/components/VBadge/VBadge.js.map +1 -1
  18. package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/VBreadcrumb/VBreadcrumb.d.ts +3 -9
  20. package/dist/components/VBreadcrumb/VBreadcrumb.js.map +1 -1
  21. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/VButton/VButton.d.ts +10 -17
  23. package/dist/components/VButton/VButton.js.map +1 -1
  24. package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/VButton/VButtonGroup.d.ts +6 -15
  26. package/dist/components/VButton/VButtonGroup.js.map +1 -1
  27. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/VButton/context.d.ts +1 -9
  29. package/dist/components/VButton/context.js.map +1 -1
  30. package/dist/components/VCalendar/VCalendar.d.ts +9 -24
  31. package/dist/components/VCalendar/VCalendar.js.map +1 -1
  32. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/VCalendar/VCalendarEvent.d.ts +4 -13
  34. package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
  35. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
  37. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +1 -5
  39. package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
  40. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
  42. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/VCalendar/color.d.ts +1 -7
  44. package/dist/components/VCalendar/color.js.map +1 -1
  45. package/dist/components/VCalendar/edgeStep.d.ts +5 -15
  46. package/dist/components/VCalendar/edgeStep.js.map +1 -1
  47. package/dist/components/VCalendar/gesture.d.ts +12 -36
  48. package/dist/components/VCalendar/gesture.js.map +1 -1
  49. package/dist/components/VCalendar/keyboard.d.ts +5 -42
  50. package/dist/components/VCalendar/keyboard.js.map +1 -1
  51. package/dist/components/VCalendar/layout.d.ts +38 -199
  52. package/dist/components/VCalendar/layout.js.map +1 -1
  53. package/dist/components/VCalendar/timeGrid.d.ts +3 -25
  54. package/dist/components/VCalendar/timeGrid.js.map +1 -1
  55. package/dist/components/VCalendar/types.d.ts +6 -23
  56. package/dist/components/VCarousel/VCarousel.d.ts +25 -96
  57. package/dist/components/VCarousel/VCarousel.js.map +1 -1
  58. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +6 -6
  59. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/VCarousel/VCarouselItem.d.ts +1 -6
  61. package/dist/components/VCarousel/VCarouselItem.js.map +1 -1
  62. package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/VCarousel/context.js.map +1 -1
  64. package/dist/components/VCheckbox/VCheckbox.d.ts +1 -5
  65. package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
  66. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/VChip/VChip.d.ts +2 -8
  68. package/dist/components/VChip/VChip.js.map +1 -1
  69. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  70. package/dist/components/VCombobox/VCombobox.d.ts +21 -59
  71. package/dist/components/VCombobox/VCombobox.js.map +1 -1
  72. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +117 -119
  73. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  74. package/dist/components/VCombobox/VComboboxGroup.js.map +1 -1
  75. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  76. package/dist/components/VCombobox/VComboboxOption.js.map +1 -1
  77. package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  78. package/dist/components/VCombobox/VComboboxSeparator.js.map +1 -1
  79. package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  80. package/dist/components/VCombobox/infiniteScroll.d.ts +4 -10
  81. package/dist/components/VCombobox/infiniteScroll.js.map +1 -1
  82. package/dist/components/VDataTable/VDataTable.d.ts +11 -36
  83. package/dist/components/VDataTable/VDataTable.js.map +1 -1
  84. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +23 -20
  85. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/VDateInput/VDateInput.d.ts +12 -21
  87. package/dist/components/VDateInput/VDateInput.js.map +1 -1
  88. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  89. package/dist/components/VDateInput/mask.d.ts +14 -59
  90. package/dist/components/VDateInput/mask.js.map +1 -1
  91. package/dist/components/VDatePicker/VDatePicker.d.ts +6 -12
  92. package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
  93. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/components/VDatePicker/keyboard.d.ts +10 -42
  95. package/dist/components/VDatePicker/keyboard.js.map +1 -1
  96. package/dist/components/VDatePicker/names.d.ts +8 -22
  97. package/dist/components/VDatePicker/names.js.map +1 -1
  98. package/dist/components/VDialog/VDialog.d.ts +5 -10
  99. package/dist/components/VDialog/VDialog.js.map +1 -1
  100. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +51 -53
  101. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/VDialog/VDialogAlert.d.ts +2 -3
  103. package/dist/components/VDialog/VDialogAlert.js.map +1 -1
  104. package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/components/VFileInput/VFileInput.d.ts +11 -37
  106. package/dist/components/VFileInput/VFileInput.js.map +1 -1
  107. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/VFileInput/truncate.d.ts +3 -23
  109. package/dist/components/VFileInput/truncate.js.map +1 -1
  110. package/dist/components/VFilePicker/VFilePicker.d.ts +15 -65
  111. package/dist/components/VFilePicker/VFilePicker.js.map +1 -1
  112. package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  113. package/dist/components/VFilePicker/fileKind.js.map +1 -1
  114. package/dist/components/VHotkeys/VHotkeys.d.ts +6 -15
  115. package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
  116. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/components/VHotkeys/platform.d.ts +10 -49
  118. package/dist/components/VHotkeys/platform.js.map +1 -1
  119. package/dist/components/VIcon/VIcon.d.ts +7 -19
  120. package/dist/components/VIcon/VIcon.js.map +1 -1
  121. package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/VIcon/iconProps.d.ts +5 -19
  123. package/dist/components/VIcon/iconProps.js.map +1 -1
  124. package/dist/components/VIcon/resolver.d.ts +15 -43
  125. package/dist/components/VIcon/resolver.js.map +1 -1
  126. package/dist/components/VIcon/types.d.ts +7 -34
  127. package/dist/components/VIconButton/VIconButton.d.ts +2 -3
  128. package/dist/components/VIconButton/VIconButton.js.map +1 -1
  129. package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/VInput/VInput.d.ts +14 -29
  131. package/dist/components/VInput/VInput.js.map +1 -1
  132. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  133. package/dist/components/VInput/VInputGroup.js.map +1 -1
  134. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +34 -50
  135. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/VInput/context.js.map +1 -1
  137. package/dist/components/VInputOTP/VInputOTP.d.ts +8 -16
  138. package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
  139. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +55 -63
  140. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/VMenu/VMenu.js.map +1 -1
  142. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  143. package/dist/components/VMenu/VMenuGroup.d.ts +1 -6
  144. package/dist/components/VMenu/VMenuGroup.js.map +1 -1
  145. package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/VMenu/VMenuItem.d.ts +0 -5
  147. package/dist/components/VMenu/VMenuItem.js.map +1 -1
  148. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/VMenu/VMenuPanel.d.ts +1 -6
  150. package/dist/components/VMenu/VMenuPanel.js.map +1 -1
  151. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +2 -2
  152. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/VMenu/VMenuSeparator.js.map +1 -1
  154. package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/VMenu/context.d.ts +3 -11
  156. package/dist/components/VMenu/context.js.map +1 -1
  157. package/dist/components/VPagination/VPagination.d.ts +9 -20
  158. package/dist/components/VPagination/VPagination.js.map +1 -1
  159. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/components/VPopover/VPopover.d.ts +7 -18
  161. package/dist/components/VPopover/VPopover.js.map +1 -1
  162. package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js +23 -27
  163. package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/components/VProgressCircular/VProgressCircular.d.ts +2 -6
  165. package/dist/components/VProgressCircular/VProgressCircular.js.map +1 -1
  166. package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/components/VProgressLinear/VProgressLinear.d.ts +4 -15
  168. package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
  169. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/VRadio/VRadio.d.ts +1 -5
  171. package/dist/components/VRadio/VRadio.js.map +1 -1
  172. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  173. package/dist/components/VSeparator/VSeparator.d.ts +2 -15
  174. package/dist/components/VSeparator/VSeparator.js.map +1 -1
  175. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  176. package/dist/components/VSideNavigation/VSideNavigation.d.ts +1 -1
  177. package/dist/components/VSideNavigation/VSideNavigation.js.map +1 -1
  178. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js.map +1 -1
  179. package/dist/components/VSideNavigation/VSideNavigationGroup.d.ts +1 -5
  180. package/dist/components/VSideNavigation/VSideNavigationGroup.js.map +1 -1
  181. package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  182. package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +1 -5
  183. package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
  184. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +80 -75
  185. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  186. package/dist/components/VSideNavigation/VSideNavigationSeparator.js.map +1 -1
  187. package/dist/components/VSideNavigation/context.js.map +1 -1
  188. package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +6 -19
  189. package/dist/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  190. package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  191. package/dist/components/VSlider/VSlider.d.ts +5 -13
  192. package/dist/components/VSlider/VSlider.js.map +1 -1
  193. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/VSnackbar/VSnackbar.js.map +1 -1
  195. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  196. package/dist/components/VSnackbar/state.d.ts +4 -17
  197. package/dist/components/VSnackbar/state.js.map +1 -1
  198. package/dist/components/VSpinner/VSpinner.d.ts +3 -5
  199. package/dist/components/VSpinner/VSpinner.js.map +1 -1
  200. package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/VSwitch/VSwitch.js.map +1 -1
  202. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/VTabs/VTab.d.ts +1 -5
  204. package/dist/components/VTabs/VTab.js.map +1 -1
  205. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  206. package/dist/components/VTabs/VTabPanel.js.map +1 -1
  207. package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  208. package/dist/components/VTabs/VTabs.d.ts +5 -17
  209. package/dist/components/VTabs/VTabs.js.map +1 -1
  210. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/components/VTabs/context.js.map +1 -1
  212. package/dist/components/VTextarea/VTextarea.d.ts +13 -20
  213. package/dist/components/VTextarea/VTextarea.js.map +1 -1
  214. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/components/VTimeInput/VTimeInput.d.ts +8 -21
  216. package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
  217. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  218. package/dist/components/VTimeInput/search.d.ts +3 -34
  219. package/dist/components/VTimeInput/search.js.map +1 -1
  220. package/dist/components/VTimePicker/VTimePicker.d.ts +9 -31
  221. package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
  222. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/components/VTimePicker/limits.d.ts +18 -45
  224. package/dist/components/VTimePicker/limits.js.map +1 -1
  225. package/dist/components/VToast/VToast.js.map +1 -1
  226. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  227. package/dist/components/VToast/VToaster.js.map +1 -1
  228. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/VToast/state.d.ts +2 -7
  230. package/dist/components/VToast/state.js.map +1 -1
  231. package/dist/components/VToggle/VToggle.d.ts +5 -9
  232. package/dist/components/VToggle/VToggle.js.map +1 -1
  233. package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  234. package/dist/components/VToggle/VToggleItem.d.ts +1 -9
  235. package/dist/components/VToggle/VToggleItem.js.map +1 -1
  236. package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/VToggle/context.js.map +1 -1
  238. package/dist/components/VTooltip/VTooltip.d.ts +3 -16
  239. package/dist/components/VTooltip/VTooltip.js.map +1 -1
  240. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +2 -2
  241. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  242. package/dist/components/VTypography/VTypography.d.ts +4 -8
  243. package/dist/components/VTypography/VTypography.js.map +1 -1
  244. package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js.map +1 -1
  245. package/dist/composables/useAriaLabel.js.map +1 -1
  246. package/dist/composables/useClearable.d.ts +2 -8
  247. package/dist/composables/useClearable.js.map +1 -1
  248. package/dist/composables/useControlShape.js.map +1 -1
  249. package/dist/composables/useDetailsOpen.d.ts +2 -10
  250. package/dist/composables/useDetailsOpen.js.map +1 -1
  251. package/dist/composables/useFieldIds.js.map +1 -1
  252. package/dist/composables/useFieldPanel.d.ts +4 -17
  253. package/dist/composables/useFieldPanel.js.map +1 -1
  254. package/dist/composables/useFileDrop.js.map +1 -1
  255. package/dist/composables/useFileField.d.ts +1 -5
  256. package/dist/composables/useFileField.js.map +1 -1
  257. package/dist/composables/useFocusoutDismiss.js.map +1 -1
  258. package/dist/composables/useIconClickHandlers.d.ts +4 -19
  259. package/dist/composables/useIconClickHandlers.js.map +1 -1
  260. package/dist/composables/useInertLink.d.ts +1 -1
  261. package/dist/composables/useInertLink.js.map +1 -1
  262. package/dist/composables/useLiveAnnouncer.js.map +1 -1
  263. package/dist/composables/useMaskedField.d.ts +12 -27
  264. package/dist/composables/useMaskedField.js.map +1 -1
  265. package/dist/composables/usePopover.d.ts +3 -11
  266. package/dist/composables/usePopover.js.map +1 -1
  267. package/dist/composables/useProgressValue.js.map +1 -1
  268. package/dist/composables/useRootAttrs.d.ts +0 -9
  269. package/dist/composables/useRootAttrs.js +11 -4
  270. package/dist/composables/useRootAttrs.js.map +1 -1
  271. package/dist/composables/useSlotNodes.d.ts +3 -14
  272. package/dist/composables/useSlotNodes.js.map +1 -1
  273. package/dist/composables/useTextLimit.d.ts +4 -16
  274. package/dist/composables/useTextLimit.js.map +1 -1
  275. package/dist/composables/useTimer.d.ts +2 -15
  276. package/dist/composables/useTimer.js.map +1 -1
  277. package/dist/i18n/en.js.map +1 -1
  278. package/dist/i18n/fr.js.map +1 -1
  279. package/dist/i18n/state.d.ts +9 -38
  280. package/dist/i18n/state.js.map +1 -1
  281. package/dist/i18n/types.d.ts +19 -81
  282. package/dist/icons.d.ts +2 -12
  283. package/dist/styles.css +1 -1
  284. package/dist/tokens/css.d.ts +3 -16
  285. package/dist/tokens/css.js.map +1 -1
  286. package/dist/tokens/index.d.ts +5 -0
  287. package/dist/tokens/index.js.map +1 -1
  288. package/dist/tokens/primitives.js.map +1 -1
  289. package/dist/tokens/semantic.d.ts +6 -23
  290. package/dist/tokens/semantic.js +5 -0
  291. package/dist/tokens/semantic.js.map +1 -1
  292. package/dist/tokens/themes/dark.js.map +1 -1
  293. package/dist/tokens/types.d.ts +2 -12
  294. package/dist/tokens/types.js.map +1 -1
  295. package/dist/tokens.json +14 -0
  296. package/dist/types.d.ts +3 -21
  297. package/dist/utils/array.d.ts +2 -4
  298. package/dist/utils/array.js.map +1 -1
  299. package/dist/utils/arrowNav.d.ts +2 -26
  300. package/dist/utils/arrowNav.js.map +1 -1
  301. package/dist/utils/chip.d.ts +1 -8
  302. package/dist/utils/chip.js.map +1 -1
  303. package/dist/utils/clock.d.ts +16 -39
  304. package/dist/utils/clock.js.map +1 -1
  305. package/dist/utils/css.d.ts +5 -16
  306. package/dist/utils/css.js.map +1 -1
  307. package/dist/utils/date.d.ts +17 -60
  308. package/dist/utils/date.js.map +1 -1
  309. package/dist/utils/direction.d.ts +2 -9
  310. package/dist/utils/direction.js.map +1 -1
  311. package/dist/utils/env.d.ts +2 -15
  312. package/dist/utils/env.js.map +1 -1
  313. package/dist/utils/file.d.ts +8 -46
  314. package/dist/utils/file.js.map +1 -1
  315. package/dist/utils/focus.d.ts +1 -14
  316. package/dist/utils/focus.js +1 -6
  317. package/dist/utils/focus.js.map +1 -1
  318. package/dist/utils/hostWarns.d.ts +3 -8
  319. package/dist/utils/hostWarns.js.map +1 -1
  320. package/dist/utils/ids.d.ts +2 -7
  321. package/dist/utils/ids.js.map +1 -1
  322. package/dist/utils/matcher.d.ts +1 -8
  323. package/dist/utils/matcher.js.map +1 -1
  324. package/dist/utils/memo.d.ts +1 -11
  325. package/dist/utils/memo.js.map +1 -1
  326. package/dist/utils/number.d.ts +1 -7
  327. package/dist/utils/number.js.map +1 -1
  328. package/dist/utils/text.d.ts +4 -23
  329. package/dist/utils/text.js.map +1 -1
  330. package/dist/utils/time.d.ts +4 -12
  331. package/dist/utils/time.js.map +1 -1
  332. package/dist/utils/vnode.d.ts +0 -10
  333. package/dist/utils/vnode.js.map +1 -1
  334. package/package.json +1 -1
@@ -1,21 +1,6 @@
1
1
  /**
2
- * Every user-facing word the library can say, in one place: what a translator works from and
3
- * what a consumer overrides.
4
- *
5
- * Depth EXACTLY 2: namespace, then leaf. A leaf is finished text, or a TS function when
6
- * something has to be slotted in. There is deliberately no template language and no plural
7
- * engine: a parameterized message IS a hand-written function whose signature is the
8
- * contract, so a translation that forgets an argument does not compile, and a plural is a
9
- * ternary inside it.
10
- *
11
- * The two levels are structural, not aesthetic: they are what lets a partial override be
12
- * merged NON-RECURSIVELY, and therefore what makes it impossible to descend into one of
13
- * those functions and turn it into `{}`.
14
- *
15
- * Three kinds of text are deliberately absent. Whatever `Intl` derives from the tag (month
16
- * and day names, field order, hour cycle); whatever is made only of digits and universal
17
- * punctuation (`99+`, `+N`, an `N/M` counter, a time's colon); and the `[Component] …`
18
- * warnings, which address the integrator and are never translated.
2
+ * Two-level message namespaces permit nonrecursive partial merging. Parameterized messages are
3
+ * typed functions so translations preserve their argument contracts.
19
4
  */
20
5
  export interface Messages {
21
6
  /** Words several components share, so that they are translated once rather than five times. */
@@ -53,11 +38,7 @@ export interface Messages {
53
38
  ellipsis: string;
54
39
  };
55
40
  sideNavigation: {
56
- /**
57
- * What the navigation area is called. It is the component's only piece of text: the
58
- * labels are written by the consumer, and whether a branch is open or closed is
59
- * something the browser announces on its own.
60
- */
41
+ /** What the navigation area is called. */
61
42
  label: string;
62
43
  };
63
44
  combobox: {
@@ -81,11 +62,7 @@ export interface Messages {
81
62
  end: number;
82
63
  total: number;
83
64
  }) => string;
84
- /**
85
- * What the pagination under a table is called. It is deliberately not the same as the
86
- * name a standalone pagination takes: a page holding both would otherwise offer a
87
- * screen reader two navigation areas under one name, with no way to tell them apart.
88
- */
65
+ /** What the pagination under a table is called. */
89
66
  pagination: string;
90
67
  };
91
68
  toaster: {
@@ -93,16 +70,11 @@ export interface Messages {
93
70
  };
94
71
  snackbar: {
95
72
  /**
96
- * What screen readers announce for the confirmation area itself, which is a landmark
97
- * of the page. It is deliberately not the notifications' name: a page holding both
98
- * would otherwise offer two areas under one word, with no way to tell them apart.
73
+ * What screen readers announce for the confirmation area itself, which is a landmark of the
74
+ * page.
99
75
  */
100
76
  label: string;
101
- /**
102
- * The single action a snackbar offers, when the caller does not name it. It means
103
- * taking back what was just done: not cancelling a form, which is `common.cancel`
104
- * and is a different word in several languages.
105
- */
77
+ /** The single action a snackbar offers, when the caller does not name it. */
106
78
  action: string;
107
79
  };
108
80
  inputOTP: {
@@ -136,12 +108,8 @@ export interface Messages {
136
108
  label: string;
137
109
  };
138
110
  /**
139
- * The keys of a keyboard shortcut, in WORDS. The symbols (⌘ ⌃ ⌥ ⇧ ↵ ⌫ ⌦ ⇥
140
- * ↑ ↓ ← →) are not here: they are engraved on the hardware and the same in every
141
- * language, so they live with the component.
142
- *
143
- * Every entry below is the SPOKEN form. Where a symbol exists it wins on screen, and
144
- * the word wins in what a screen reader says.
111
+ * The keys of a keyboard shortcut, in words. Where a symbol exists it wins on screen, and the
112
+ * word wins in what a screen reader says.
145
113
  */
146
114
  hotkeys: {
147
115
  /** How ⌘, the Command key on a Mac, is spoken. */
@@ -210,23 +178,13 @@ export interface Messages {
210
178
  /** What the panel holding the clock is called. */
211
179
  pickerLabel: string;
212
180
  /**
213
- * What the AM/PM button inside the field is called, the half of the day it currently
214
- * shows included. The value is what the button reads on screen, so the name repeats
215
- * it rather than replacing it: a reader arriving on the button is told which half is
216
- * chosen, and hears the new one as soon as it changes.
181
+ * What the AM/PM button inside the field is called, the half of the day it currently shows
182
+ * included.
217
183
  */
218
184
  meridiemValue: (value: string) => string;
219
- /**
220
- * The grey template shown in an empty field, "hh:mm". It is translatable because those
221
- * letters are the initials of WORDS, unlike the colon between them, which is the same
222
- * everywhere and lives with the time helpers.
223
- */
185
+ /** The grey template shown in an empty field, "hh:mm". */
224
186
  maskPlaceholder: string;
225
- /**
226
- * What the field says of a time the restrictions do not allow. It is carried by the
227
- * control's own validity rather than displayed, so a browser is what shows it, and in
228
- * the language the browser is being told to speak here.
229
- */
187
+ /** What the field says of a time the restrictions do not allow. */
230
188
  unavailable: string;
231
189
  };
232
190
  fileInput: {
@@ -254,11 +212,8 @@ export interface Messages {
254
212
  list: string;
255
213
  };
256
214
  /**
257
- * The carousel. Two of these entries are what a screen reader SAYS instead of the bare
258
- * words "region" and "group", so they are text a reader hears and therefore text that
259
- * belongs here. It is worth being deliberate about them: a role description left in
260
- * English is the one accessibility string that goes wrong with no visible symptom
261
- * whatsoever.
215
+ * The carousel. Two of these entries are what a screen reader SAYS instead of the bare words
216
+ * "region" and "group", so they are text a reader hears and therefore text that belongs here.
262
217
  */
263
218
  carousel: {
264
219
  /** What the carousel is called when the consumer gives it no name of its own. */
@@ -269,27 +224,14 @@ export interface Messages {
269
224
  slideRoleDescription: string;
270
225
  /** What the scrolling area itself is called: it can be reached with the Tab key. */
271
226
  slides: string;
272
- /**
273
- * What a slide is called, and its dot with it. The number is the one a reader counts,
274
- * starting at one: the caller adds it. It carries the WORD "of", which is why it is
275
- * here where the table's bare "3/8" counter is not.
276
- */
227
+ /** What a slide is called, and its dot with it. */
277
228
  slide: (index: number, total: number) => string;
278
229
  previous: string;
279
230
  next: string;
280
231
  /** What the row of dots is called. */
281
232
  indicators: string;
282
233
  };
283
- /**
284
- * The calendar. Two groups of words that read very differently: the toolbar, which a
285
- * reader SEES, and everything from `eventRoleDescription` down, which only a screen
286
- * reader ever says: the same caution as the carousel's role description applies, since
287
- * an untranslated one goes wrong with no visible symptom at all.
288
- *
289
- * The navigation labels are per view rather than one word plus a unit: "Previous" needs
290
- * to say what it steps over, and building "Previous " + "week" out of two fragments is
291
- * the kind of sentence assembly that survives English and nothing else.
292
- */
234
+ /** The calendar. */
293
235
  calendar: {
294
236
  /** What the calendar is called when the consumer gives it no name of its own. */
295
237
  label: string;
@@ -342,12 +284,8 @@ export interface Messages {
342
284
  };
343
285
  }
344
286
  /**
345
- * A dictionary given in PART: every section and every entry is optional. Anything left
346
- * out falls back to the dictionary already in place, and never to an empty string.
347
- *
348
- * The optionality stops at the entries and does not descend into them, so a message that
349
- * takes a value stays a whole function. Making it recursive would allow one of those
350
- * functions to be described as a partial object, which is to say as nothing at all.
287
+ * A dictionary given in PART: every section and every entry is optional. Anything left out
288
+ * falls back to the dictionary already in place, and never to an empty string.
351
289
  */
352
290
  export type MessagesInput = {
353
291
  [K in keyof Messages]?: Partial<Messages[K]>;
package/dist/icons.d.ts CHANGED
@@ -1,16 +1,6 @@
1
1
  /**
2
- * The icons the design system draws by itself, as importable values: the public
3
- * face of `vectis-ui/icons`.
4
- *
5
- * Reach for it when you want to render one of the library's own icons somewhere it
6
- * does not already appear: `import { search } from 'vectis-ui/icons'`, then
7
- * `<VIcon :name="search" />`. A bare `<VIcon name="search" />` is a NAME and does
8
- * not reach it, which is the point: an icon is shipped to a consumer's bundle because
9
- * a module imported it, never because a string might one day ask for it.
10
- *
11
- * Each value carries its NAME as well as its drawing, so it still passes through a
12
- * resolver installed with `setIconResolver`: wiring your own icon library keeps
13
- * working on these exactly as it does on the icons the components draw.
2
+ * Import built-in icon values explicitly from vectis-ui/icons; string names alone do not pull
3
+ * icon modules into consumer bundles.
14
4
  */
15
5
  export * from './components/VIcon/icons/index.js';
16
6
  export type { BuiltinIcon } from './components/VIcon/types.js';
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @layer vectis.reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;tab-size:4}body{-webkit-font-smoothing:antialiased;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}}@layer vectis.tokens{:root{--vectis-color-white:oklch(100% 0 0);--vectis-color-black:oklch(0% 0 0);--vectis-color-red-50:oklch(97.1% .013 17.38);--vectis-color-red-100:oklch(93.6% .032 17.717);--vectis-color-red-200:oklch(88.5% .062 18.334);--vectis-color-red-300:oklch(80.8% .114 19.571);--vectis-color-red-400:oklch(70.4% .191 22.216);--vectis-color-red-500:oklch(63.7% .237 25.331);--vectis-color-red-600:oklch(57.7% .245 27.325);--vectis-color-red-700:oklch(50.5% .213 27.518);--vectis-color-red-800:oklch(44.4% .177 26.899);--vectis-color-red-900:oklch(39.6% .141 25.723);--vectis-color-red-950:oklch(25.8% .092 26.042);--vectis-color-amber-50:oklch(98.7% .022 95.277);--vectis-color-amber-100:oklch(96.2% .059 95.617);--vectis-color-amber-200:oklch(92.4% .12 95.746);--vectis-color-amber-300:oklch(87.9% .169 91.605);--vectis-color-amber-400:oklch(82.8% .189 84.429);--vectis-color-amber-500:oklch(76.9% .188 70.08);--vectis-color-amber-600:oklch(66.6% .179 58.318);--vectis-color-amber-700:oklch(55.5% .163 48.998);--vectis-color-amber-800:oklch(47.3% .137 46.201);--vectis-color-amber-900:oklch(41.4% .112 45.904);--vectis-color-amber-950:oklch(27.9% .077 45.635);--vectis-color-green-50:oklch(98.2% .018 155.826);--vectis-color-green-100:oklch(96.2% .044 156.743);--vectis-color-green-200:oklch(92.5% .084 155.995);--vectis-color-green-300:oklch(87.1% .15 154.449);--vectis-color-green-400:oklch(79.2% .209 151.711);--vectis-color-green-500:oklch(72.3% .219 149.579);--vectis-color-green-600:oklch(62.7% .194 149.214);--vectis-color-green-700:oklch(52.7% .154 150.069);--vectis-color-green-800:oklch(44.8% .119 151.328);--vectis-color-green-900:oklch(39.3% .095 152.535);--vectis-color-green-950:oklch(26.6% .065 152.934);--vectis-color-indigo-50:oklch(96.2% .018 272.314);--vectis-color-indigo-100:oklch(93% .034 272.788);--vectis-color-indigo-200:oklch(87% .065 274.039);--vectis-color-indigo-300:oklch(78.5% .115 274.713);--vectis-color-indigo-400:oklch(67.3% .182 276.935);--vectis-color-indigo-500:oklch(58.5% .233 277.117);--vectis-color-indigo-600:oklch(51.1% .262 276.966);--vectis-color-indigo-700:oklch(45.7% .24 277.023);--vectis-color-indigo-800:oklch(39.8% .195 277.366);--vectis-color-indigo-900:oklch(35.9% .144 278.697);--vectis-color-indigo-950:oklch(25.7% .09 281.288);--vectis-color-gray-50:oklch(98.5% .002 247.839);--vectis-color-gray-100:oklch(96.7% .003 264.542);--vectis-color-gray-200:oklch(92.8% .006 264.531);--vectis-color-gray-300:oklch(87.2% .01 258.338);--vectis-color-gray-400:oklch(70.7% .022 261.325);--vectis-color-gray-500:oklch(55.1% .027 264.364);--vectis-color-gray-600:oklch(44.6% .03 256.802);--vectis-color-gray-700:oklch(37.3% .034 259.733);--vectis-color-gray-800:oklch(27.8% .033 256.848);--vectis-color-gray-900:oklch(21% .034 264.665);--vectis-color-gray-950:oklch(13% .028 261.692);--vectis-space-1:.25rem;--vectis-space-2:.5rem;--vectis-space-3:.75rem;--vectis-space-4:1rem;--vectis-space-5:1.25rem;--vectis-space-6:1.5rem;--vectis-space-7:2rem;--vectis-space-8:2.5rem;--vectis-space-9:3rem;--vectis-space-10:4rem;--vectis-space-11:5rem;--vectis-space-12:6rem;--vectis-font-family-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vectis-font-family-display:var(--vectis-font-family-sans);--vectis-font-family-mono:ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--vectis-font-family-icon:"Material Symbols Rounded";--vectis-font-weight-regular:400;--vectis-font-weight-medium:500;--vectis-font-weight-semibold:600;--vectis-font-weight-bold:700;--vectis-font-size-xs:.75rem;--vectis-font-size-sm:.875rem;--vectis-font-size-md:1rem;--vectis-font-size-lg:1.125rem;--vectis-font-size-xl:1.25rem;--vectis-font-size-2xl:1.5rem;--vectis-font-size-3xl:1.875rem;--vectis-font-size-4xl:2.25rem;--vectis-font-size-5xl:3rem;--vectis-font-leading-none:1;--vectis-font-leading-tight:1.25;--vectis-font-leading-snug:1.4;--vectis-font-leading-normal:1.5;--vectis-font-leading-relaxed:1.65;--vectis-font-tracking-tight:-.015em;--vectis-font-tracking-wide:.05em;--vectis-radius-none:0px;--vectis-radius-xs:.125rem;--vectis-radius-sm:.25rem;--vectis-radius-md:.375rem;--vectis-radius-lg:.5rem;--vectis-radius-xl:.75rem;--vectis-radius-2xl:1rem;--vectis-radius-full:9999px;--vectis-shadow-xs:0 1px 2px 0 oklch(0% 0 0/.05);--vectis-shadow-sm:0 1px 3px 0 oklch(0% 0 0/.1), 0 1px 2px -1px oklch(0% 0 0/.1);--vectis-shadow-md:0 4px 6px -1px oklch(0% 0 0/.1), 0 2px 4px -2px oklch(0% 0 0/.1);--vectis-shadow-lg:0 10px 15px -3px oklch(0% 0 0/.1), 0 4px 6px -4px oklch(0% 0 0/.1);--vectis-shadow-xl:0 20px 25px -5px oklch(0% 0 0/.1), 0 8px 10px -6px oklch(0% 0 0/.1);--vectis-duration-0:0s;--vectis-duration-50:50ms;--vectis-duration-100:.1s;--vectis-duration-150:.15s;--vectis-duration-200:.2s;--vectis-duration-300:.3s;--vectis-duration-400:.4s;--vectis-duration-500:.5s;--vectis-duration-700:.7s;--vectis-duration-1000:1s;--vectis-duration-1500:1.5s;--vectis-duration-2000:2s;--vectis-duration-3000:3s;--vectis-duration-5000:5s;--vectis-ease-default:cubic-bezier(.2, 0, 0, 1);--vectis-ease-in:cubic-bezier(.5, 0, 1, 1);--vectis-ease-out:cubic-bezier(0, 0, .2, 1);--vectis-ease-in-out:cubic-bezier(.4, 0, .2, 1)}:root,[data-theme=light]{color-scheme:light;--vectis-color-surface:var(--vectis-color-white);--vectis-color-surface-muted:var(--vectis-color-gray-100);--vectis-color-surface-raised:var(--vectis-color-white);--vectis-color-surface-overlay:var(--vectis-color-white);--vectis-color-surface-sunken:var(--vectis-color-gray-50);--vectis-color-surface-inverse:var(--vectis-color-gray-900);--vectis-color-surface-skeleton:var(--vectis-color-gray-200);--vectis-color-text-on-inverse:var(--vectis-color-white);--vectis-color-text:var(--vectis-color-gray-900);--vectis-color-text-muted:var(--vectis-color-gray-600);--vectis-color-text-subtle:var(--vectis-color-gray-500);--vectis-color-text-on-accent:var(--vectis-color-white);--vectis-color-text-on-warning:var(--vectis-color-gray-950);--vectis-color-border:var(--vectis-color-gray-200);--vectis-color-border-strong:var(--vectis-color-gray-300);--vectis-color-accent:var(--vectis-color-indigo-600);--vectis-color-accent-hover:var(--vectis-color-indigo-700);--vectis-color-accent-active:var(--vectis-color-indigo-800);--vectis-color-accent-surface:var(--vectis-color-indigo-50);--vectis-color-accent-border:var(--vectis-color-indigo-200);--vectis-color-accent-text:var(--vectis-color-indigo-700);--vectis-color-danger:var(--vectis-color-red-600);--vectis-color-danger-hover:var(--vectis-color-red-700);--vectis-color-danger-active:var(--vectis-color-red-800);--vectis-color-danger-surface:var(--vectis-color-red-50);--vectis-color-danger-border:var(--vectis-color-red-200);--vectis-color-danger-text:var(--vectis-color-red-700);--vectis-color-success:var(--vectis-color-green-700);--vectis-color-success-hover:var(--vectis-color-green-800);--vectis-color-success-active:var(--vectis-color-green-900);--vectis-color-success-surface:var(--vectis-color-green-50);--vectis-color-success-border:var(--vectis-color-green-200);--vectis-color-success-text:var(--vectis-color-green-800);--vectis-color-warning:var(--vectis-color-amber-600);--vectis-color-warning-hover:var(--vectis-color-amber-700);--vectis-color-warning-active:var(--vectis-color-amber-800);--vectis-color-warning-surface:var(--vectis-color-amber-50);--vectis-color-warning-border:var(--vectis-color-amber-200);--vectis-color-warning-text:var(--vectis-color-amber-900);--vectis-color-backdrop:oklch(0% 0 0/.45);--vectis-color-event-surface:oklch(95% .045 265);--vectis-color-event-border:oklch(85% .08 265);--vectis-color-event-text:oklch(40% .11 265);--vectis-text-family:var(--vectis-font-family-sans);--vectis-text-family-heading:var(--vectis-font-family-display);--vectis-text-family-code:var(--vectis-font-family-mono);--vectis-text-display-size:var(--vectis-font-size-5xl);--vectis-text-display-weight:var(--vectis-font-weight-bold);--vectis-text-display-leading:var(--vectis-font-leading-none);--vectis-text-display-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-1-size:var(--vectis-font-size-4xl);--vectis-text-heading-1-weight:var(--vectis-font-weight-bold);--vectis-text-heading-1-leading:var(--vectis-font-leading-tight);--vectis-text-heading-1-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-2-size:var(--vectis-font-size-2xl);--vectis-text-heading-2-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-2-leading:var(--vectis-font-leading-tight);--vectis-text-heading-2-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-3-size:var(--vectis-font-size-lg);--vectis-text-heading-3-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-3-leading:var(--vectis-font-leading-snug);--vectis-text-heading-4-size:var(--vectis-font-size-md);--vectis-text-heading-4-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-4-leading:var(--vectis-font-leading-snug);--vectis-text-subtitle-size:var(--vectis-font-size-sm);--vectis-text-subtitle-weight:var(--vectis-font-weight-regular);--vectis-text-subtitle-leading:var(--vectis-font-leading-normal);--vectis-text-body-xl-size:var(--vectis-font-size-lg);--vectis-text-body-xl-weight:var(--vectis-font-weight-regular);--vectis-text-body-xl-leading:var(--vectis-font-leading-relaxed);--vectis-text-body-lg-size:var(--vectis-font-size-md);--vectis-text-body-lg-weight:var(--vectis-font-weight-regular);--vectis-text-body-lg-leading:var(--vectis-font-leading-relaxed);--vectis-text-body-md-size:var(--vectis-font-size-sm);--vectis-text-body-md-weight:var(--vectis-font-weight-regular);--vectis-text-body-md-leading:var(--vectis-font-leading-normal);--vectis-text-body-sm-size:var(--vectis-font-size-xs);--vectis-text-body-sm-weight:var(--vectis-font-weight-regular);--vectis-text-body-sm-leading:var(--vectis-font-leading-normal);--vectis-text-label-size:var(--vectis-font-size-sm);--vectis-text-label-weight:var(--vectis-font-weight-medium);--vectis-text-label-leading:var(--vectis-font-leading-snug);--vectis-text-caption-size:var(--vectis-font-size-xs);--vectis-text-caption-weight:var(--vectis-font-weight-regular);--vectis-text-caption-leading:var(--vectis-font-leading-snug);--vectis-text-overline-size:var(--vectis-font-size-xs);--vectis-text-overline-weight:var(--vectis-font-weight-medium);--vectis-text-overline-leading:var(--vectis-font-leading-snug);--vectis-text-overline-tracking:var(--vectis-font-tracking-wide);--vectis-text-code-size:var(--vectis-font-size-sm);--vectis-text-code-weight:var(--vectis-font-weight-regular);--vectis-text-code-leading:var(--vectis-font-leading-normal);--vectis-text-control-weight:var(--vectis-font-weight-medium);--vectis-text-control-leading:var(--vectis-font-leading-none);--vectis-radius-interactive:var(--vectis-radius-md);--vectis-radius-surface:var(--vectis-radius-lg);--vectis-radius-overlay:var(--vectis-radius-xl);--vectis-radius-pill:var(--vectis-radius-full);--vectis-radius-chip:var(--vectis-radius-interactive);--vectis-duration-fast:var(--vectis-duration-150);--vectis-duration-base:var(--vectis-duration-200);--vectis-duration-slow:var(--vectis-duration-300);--vectis-focus-ring-color:var(--vectis-color-indigo-500);--vectis-focus-ring-width:2px;--vectis-focus-ring-offset:2px;--vectis-control-height-xs:1.5rem;--vectis-control-height-sm:2rem;--vectis-control-height-md:2.5rem;--vectis-control-height-lg:3rem;--vectis-control-height-xl:3.5rem;--vectis-control-border-width:2px;--vectis-control-size-check:1.25rem;--vectis-control-size-check-mark:.875rem;--vectis-control-size-check-dot:.5rem;--vectis-control-size-switch-w:2.5rem;--vectis-control-size-switch-h:1.25rem;--vectis-control-size-switch-pad:.125rem;--vectis-control-action-size-sm:1.25rem;--vectis-control-action-size-md:1.5rem;--vectis-control-action-size-lg:1.75rem;--vectis-control-size-slider-track:.375rem;--vectis-control-size-slider-thumb:1.25rem;--vectis-control-size-slider-length:10rem;--vectis-control-size-slider-field:5rem;--vectis-control-size-carousel-block:24rem;--vectis-control-size-carousel-indicator:.625rem;--vectis-control-size-carousel-indicator-active:1.25rem;--vectis-control-size-combobox-list-max-block:18rem;--vectis-control-size-menu-min:11rem;--vectis-control-size-menu-max:20rem;--vectis-control-size-progress-linear-thickness:.25rem;--vectis-control-size-progress-linear-length:10rem;--vectis-control-size-progress-circular-diameter:3rem;--vectis-control-size-progress-circular-thickness:.25rem;--vectis-control-size-skeleton-surface:6rem;--vectis-control-size-toast-width:22rem;--vectis-control-size-tooltip-max:18rem;--vectis-control-size-dialog-width:25rem;--vectis-control-size-snackbar-min:18rem;--vectis-control-size-snackbar-max:36rem;--vectis-control-size-badge-h:1.25rem;--vectis-control-size-badge-dot:.625rem;--vectis-control-size-badge-ring:2px;--vectis-control-size-avatar-ring:2px;--vectis-control-size-date-picker-cell:2.5rem;--vectis-control-size-date-picker-day:var(--vectis-control-height-md);--vectis-control-size-date-picker-dot:.25rem;--vectis-control-size-date-picker-nav-min:5.375rem;--vectis-control-size-tab-indicator:2px;--vectis-control-size-table-search:16rem;--vectis-control-size-time-picker-dial:16rem;--vectis-control-size-time-picker-number:3rem;--vectis-control-size-time-picker-center:.5rem;--vectis-control-size-time-picker-hand:2px;--vectis-control-size-time-picker-hand-minor:1rem;--vectis-control-size-file-picker-min-block:10rem;--vectis-control-size-file-picker-icon:2.5rem;--vectis-control-size-file-picker-thumb:2.5rem;--vectis-control-size-calendar-hour:4rem;--vectis-control-size-calendar-gutter:4.5rem;--vectis-control-size-calendar-tick:.375rem;--vectis-control-size-calendar-edge:3rem;--vectis-control-size-calendar-day-min:5rem;--vectis-control-size-calendar-handle:.5rem;--vectis-control-size-calendar-allday-lane:1.5rem;--vectis-control-size-calendar-allday-max:7rem;--vectis-control-size-calendar-now-dot:.625rem;--vectis-control-size-calendar-event-edge:3px;--vectis-control-size-calendar-gap:.125rem;--vectis-control-size-calendar-grip:1rem;--vectis-control-size-calendar-grip-thickness:2px;--vectis-control-size-calendar-year-month:13rem;--vectis-control-size-calendar-month-cell:8.5rem;--vectis-control-size-calendar-year-cell:1.5rem;--vectis-icon-size-sm:1rem;--vectis-icon-size-md:1.25rem;--vectis-icon-size-lg:1.5rem}[data-theme=dark]{color-scheme:dark;--vectis-color-surface:var(--vectis-color-gray-950);--vectis-color-surface-muted:var(--vectis-color-gray-800);--vectis-color-surface-raised:var(--vectis-color-gray-900);--vectis-color-surface-overlay:var(--vectis-color-gray-900);--vectis-color-surface-sunken:oklch(11% .006 260);--vectis-color-surface-inverse:var(--vectis-color-gray-800);--vectis-color-surface-skeleton:var(--vectis-color-gray-800);--vectis-color-text-on-inverse:var(--vectis-color-gray-50);--vectis-color-text:var(--vectis-color-gray-50);--vectis-color-text-muted:var(--vectis-color-gray-300);--vectis-color-text-subtle:var(--vectis-color-gray-400);--vectis-color-text-on-accent:var(--vectis-color-white);--vectis-color-border:var(--vectis-color-gray-800);--vectis-color-border-strong:var(--vectis-color-gray-700);--vectis-color-accent:var(--vectis-color-indigo-500);--vectis-color-accent-hover:var(--vectis-color-indigo-400);--vectis-color-accent-active:var(--vectis-color-indigo-300);--vectis-color-accent-surface:var(--vectis-color-indigo-950);--vectis-color-accent-border:var(--vectis-color-indigo-900);--vectis-color-accent-text:var(--vectis-color-indigo-300);--vectis-color-danger:var(--vectis-color-red-600);--vectis-color-danger-hover:var(--vectis-color-red-700);--vectis-color-danger-active:var(--vectis-color-red-800);--vectis-color-danger-surface:var(--vectis-color-red-950);--vectis-color-danger-border:var(--vectis-color-red-900);--vectis-color-danger-text:var(--vectis-color-red-300);--vectis-color-success:var(--vectis-color-green-700);--vectis-color-success-hover:var(--vectis-color-green-800);--vectis-color-success-active:var(--vectis-color-green-900);--vectis-color-success-surface:var(--vectis-color-green-950);--vectis-color-success-border:var(--vectis-color-green-900);--vectis-color-success-text:var(--vectis-color-green-300);--vectis-color-warning:var(--vectis-color-amber-500);--vectis-color-warning-hover:var(--vectis-color-amber-400);--vectis-color-warning-active:var(--vectis-color-amber-300);--vectis-color-warning-surface:var(--vectis-color-amber-950);--vectis-color-warning-border:var(--vectis-color-amber-900);--vectis-color-warning-text:var(--vectis-color-amber-300);--vectis-color-backdrop:oklch(0% 0 0/.6);--vectis-color-event-surface:oklch(30% .05 265);--vectis-color-event-border:oklch(42% .08 265);--vectis-color-event-text:oklch(90% .06 265);--vectis-focus-ring-color:var(--vectis-color-indigo-400)}.v-tone[data-tone=accent]{--tone-bg-solid:var(--vectis-color-accent);--tone-bg-solid-hover:var(--vectis-color-accent-hover);--tone-bg-solid-active:var(--vectis-color-accent-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-accent-text);--tone-bg-soft:var(--vectis-color-accent-surface);--tone-border-soft:var(--vectis-color-accent-border)}.v-tone[data-tone=danger]{--tone-bg-solid:var(--vectis-color-danger);--tone-bg-solid-hover:var(--vectis-color-danger-hover);--tone-bg-solid-active:var(--vectis-color-danger-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-danger-text);--tone-bg-soft:var(--vectis-color-danger-surface);--tone-border-soft:var(--vectis-color-danger-border)}.v-tone[data-tone=success]{--tone-bg-solid:var(--vectis-color-success);--tone-bg-solid-hover:var(--vectis-color-success-hover);--tone-bg-solid-active:var(--vectis-color-success-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-success-text);--tone-bg-soft:var(--vectis-color-success-surface);--tone-border-soft:var(--vectis-color-success-border)}.v-tone[data-tone=warning]{--tone-bg-solid:var(--vectis-color-warning);--tone-bg-solid-hover:var(--vectis-color-warning-hover);--tone-bg-solid-active:var(--vectis-color-warning-active);--tone-text-solid:var(--vectis-color-text-on-warning);--tone-text-tinted:var(--vectis-color-warning-text);--tone-bg-soft:var(--vectis-color-warning-surface);--tone-border-soft:var(--vectis-color-warning-border)}.v-tone[data-tone=neutral]{--tone-bg-solid:var(--vectis-color-text);--tone-bg-solid-hover:color-mix(in oklab, var(--vectis-color-text), var(--vectis-color-surface) 8%);--tone-bg-solid-active:color-mix(in oklab, var(--vectis-color-text), var(--vectis-color-surface) 14%);--tone-text-solid:var(--vectis-color-surface);--tone-text-tinted:var(--vectis-color-text);--tone-bg-soft:var(--vectis-color-surface-muted);--tone-border-soft:var(--vectis-color-border-strong)}.v-tone[data-custom]{--tone-bg-solid:var(--custom-color);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:color-mix(in oklab, var(--custom-color), var(--vectis-color-text) 30%);--tone-bg-soft:color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%)}}@layer vectis.components{.v-variant[data-variant=solid]{background:var(--tone-bg-solid);color:var(--tone-text-solid)}.v-variant[data-variant=soft]{background:var(--tone-bg-soft);color:var(--tone-text-tinted)}.v-variant[data-variant=outline]{color:var(--tone-text-tinted);border-color:var(--tone-border-soft);background:0 0}.v-variant[data-variant=ghost]{color:var(--tone-text-tinted);background:0 0}.v-overlay{position:fixed;inset:auto}.v-overlay.v-overlay:not(:popover-open){display:none}.v-floating{margin:var(--vectis-space-2);position-try-fallbacks:flip-block, flip-inline}.v-floating[data-placement$=-start]{margin-inline-start:0}.v-floating[data-placement$=-end]{margin-inline-end:0}.v-floating[data-placement=bottom]{position-area:block-end;justify-self:anchor-center}.v-floating[data-placement=bottom-start]{position-area:block-end span-inline-end}.v-floating[data-placement=bottom-end]{position-area:block-end span-inline-start}.v-floating[data-placement=top]{position-area:block-start;justify-self:anchor-center}.v-floating[data-placement=top-start]{position-area:block-start span-inline-end}.v-floating[data-placement=top-end]{position-area:block-start span-inline-start}.v-floating[data-placement=left]{position-area:inline-start;align-self:anchor-center}.v-floating[data-placement=right]{position-area:inline-end;align-self:anchor-center}.v-floating[data-placement=right-start]{position-area:inline-end span-block-end}.v-floating[data-placement=right-end]{position-area:inline-end span-block-start}.v-floating[data-placement=left-start]{position-area:inline-start span-block-end}.v-floating[data-placement=left-end]{position-area:inline-start span-block-start}.v-floating[data-placement^=right-],.v-floating[data-placement^=left-]{margin-inline:var(--vectis-space-2)}.v-floating:is([data-placement=right-start],[data-placement=left-start]){margin-block-start:0}.v-floating:is([data-placement=right-end],[data-placement=left-end]){margin-block-end:0}.v-floating{opacity:0;transition:opacity var(--vectis-duration-fast) var(--vectis-ease-default), transform var(--vectis-duration-fast) var(--vectis-ease-default), overlay var(--vectis-duration-fast) allow-discrete, display var(--vectis-duration-fast) allow-discrete;transform:scale(.97)}.v-floating:popover-open{opacity:1;transform:none}@starting-style{.v-floating:popover-open{opacity:0;transform:scale(.97)}}@media (prefers-reduced-motion:reduce){.v-floating{transition:none}}.v-panel{gap:var(--vectis-space-1);padding:var(--vectis-space-1);background:var(--vectis-color-surface-overlay);color:var(--vectis-color-text);border:1px solid var(--vectis-color-border);border-radius:var(--vectis-radius-surface);box-shadow:var(--vectis-shadow-lg);font-family:var(--vectis-text-family);flex-direction:column;display:flex}.v-banner{--banner-line:calc(var(--vectis-text-body-md-size) * var(--vectis-text-body-md-leading));gap:var(--vectis-space-3);border-radius:var(--vectis-radius-overlay);box-shadow:var(--vectis-shadow-lg);font-family:var(--vectis-text-family);font-size:var(--vectis-text-body-md-size);line-height:var(--vectis-text-body-md-leading);transition:opacity var(--vectis-duration-base) var(--vectis-ease-default), translate var(--vectis-duration-base) var(--vectis-ease-default);display:flex}@starting-style{.v-banner{opacity:0;translate:0 var(--banner-enter-y,0)}}.v-banner-text{overflow-wrap:anywhere;flex:1;min-inline-size:0}.v-banner-control{--banner-control-height:var(--vectis-control-height-sm);margin-block:calc((var(--banner-line) - var(--banner-control-height)) / 2);margin-inline-end:calc(-1 * var(--vectis-space-2))}.v-banner .v-banner-control[data-tone]{--tone-text-tinted:currentcolor;--tone-bg-soft:color-mix(in oklab, currentcolor, transparent 85%)}@media (prefers-reduced-motion:reduce){.v-banner{transition:none}}.v-control{--control-height:var(--control-height-base)}.v-control[data-compact]{--control-height:calc(var(--control-height-base) - var(--vectis-space-1))}.v-control[data-size=xs]{--control-height-base:var(--vectis-control-height-xs);--control-font-size:var(--vectis-font-size-xs);--control-padding-inline:var(--vectis-space-2);--control-gap:var(--vectis-space-1);--control-action-size:var(--vectis-control-action-size-sm);--vectis-icon-size:var(--vectis-icon-size-sm);--vectis-icon-opsz:20}.v-control[data-size=sm]{--control-height-base:var(--vectis-control-height-sm);--control-font-size:var(--vectis-font-size-sm);--control-padding-inline:var(--vectis-space-3);--control-padding-inline-field:var(--vectis-space-2);--control-gap:var(--vectis-space-2);--control-action-size:var(--vectis-control-action-size-md);--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20}.v-control[data-size=md]{--control-height-base:var(--vectis-control-height-md);--control-font-size:var(--vectis-font-size-sm);--control-padding-inline:var(--vectis-space-4);--control-padding-inline-field:var(--vectis-space-3);--control-gap:var(--vectis-space-2);--control-action-size:var(--vectis-control-action-size-md);--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20}.v-control[data-size=lg]{--control-height-base:var(--vectis-control-height-lg);--control-font-size:var(--vectis-font-size-md);--control-padding-inline:var(--vectis-space-5);--control-padding-inline-field:var(--vectis-space-4);--control-gap:var(--vectis-space-3);--control-action-size:var(--vectis-control-action-size-lg);--vectis-icon-size:var(--vectis-icon-size-lg);--vectis-icon-opsz:24}.v-control[data-size=xl]{--control-height-base:var(--vectis-control-height-xl);--control-font-size:var(--vectis-font-size-md);--control-padding-inline:var(--vectis-space-6);--control-gap:var(--vectis-space-3);--vectis-icon-size:var(--vectis-icon-size-lg);--vectis-icon-opsz:24}.v-field-action{inline-size:var(--control-action-size);block-size:var(--control-action-size);margin-inline:calc((var(--vectis-icon-size) - var(--control-action-size)) / 2);border-radius:var(--vectis-radius-interactive);color:var(--vectis-color-text-muted);cursor:pointer;transition:color var(--vectis-duration-fast) var(--vectis-ease-default);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.v-field-action:hover:not(:disabled){color:var(--vectis-color-text)}.v-field-action:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(-1 * var(--vectis-focus-ring-width))}.v-field-meta{align-items:baseline;gap:var(--vectis-space-2);display:flex}.v-field-counter{font-size:var(--vectis-text-caption-size);color:var(--vectis-color-text-muted);font-variant-numeric:tabular-nums}.v-field-meta>.v-field-counter{margin-inline-start:auto}.v-field-counter[data-over]{color:var(--vectis-color-danger-text)}@media (prefers-reduced-motion:reduce){.v-field-action{transition:none}}.v-choice{font-family:var(--vectis-text-family);font-size:var(--vectis-text-label-size);font-weight:var(--vectis-text-label-weight);line-height:var(--vectis-text-label-leading);color:var(--vectis-color-text);grid-template-columns:auto auto;align-items:center;display:inline-grid}.v-choice-row{grid-column:1/-1;grid-template-columns:subgrid;cursor:pointer;align-items:center;display:grid}.v-choice-label,.v-choice-hint{margin-inline-start:var(--vectis-space-2)}.v-choice-hint{font-size:var(--vectis-text-caption-size);font-weight:var(--vectis-text-caption-weight);line-height:var(--vectis-text-caption-leading);color:var(--vectis-color-text-muted);grid-column:2}.v-choice[data-label-position=start] .v-choice-label{order:-1}.v-choice[data-label-position=start] :is(.v-choice-label,.v-choice-hint){margin-inline:0 var(--vectis-space-2)}.v-choice[data-label-position=start] .v-choice-hint{grid-column:1}.v-choice[data-spread]{justify-content:space-between;display:grid}.v-choice-row .v-hidden-input:focus-visible+*{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-choice[data-readonly] .v-choice-row{cursor:default}.v-choice:has(.v-hidden-input:disabled){color:var(--vectis-color-text-subtle)}.v-choice:has(.v-hidden-input:disabled) .v-choice-row{cursor:not-allowed}.v-choice:has(.v-hidden-input:disabled) .v-choice-hint{color:var(--vectis-color-text-subtle)}.v-disclosure{interpolate-size:allow-keywords}.v-disclosure::details-content{block-size:0;transition:block-size var(--vectis-duration-base) var(--vectis-ease-default), content-visibility var(--vectis-duration-base) allow-discrete;overflow:clip}.v-disclosure[open]::details-content{block-size:auto}.v-disclosure>summary::-webkit-details-marker{display:none}.v-disclosure-chevron{color:var(--vectis-color-text-muted);transition:rotate var(--vectis-duration-base) var(--vectis-ease-default);flex:none}.v-disclosure[open]:not([data-swap])>summary>.v-disclosure-chevron{rotate:180deg}.v-disclosure[data-swap][open]>summary>.v-disclosure-chevron:not(.v-disclosure-chevron-open),.v-disclosure[data-swap]:not([open])>summary>.v-disclosure-chevron-open{display:none}.v-disclosure>summary[data-disabled]>.v-disclosure-chevron{color:inherit}@media (prefers-reduced-motion:reduce){.v-disclosure::details-content,.v-disclosure-chevron{transition:none}}}@layer vectis.utilities{.v-hidden-input{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;margin:0;position:absolute}.v-visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}
1
+ @layer vectis.reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;tab-size:4}body{-webkit-font-smoothing:antialiased;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}}@layer vectis.tokens{:root{--vectis-color-white:oklch(100% 0 0);--vectis-color-black:oklch(0% 0 0);--vectis-color-red-50:oklch(97.1% .013 17.38);--vectis-color-red-100:oklch(93.6% .032 17.717);--vectis-color-red-200:oklch(88.5% .062 18.334);--vectis-color-red-300:oklch(80.8% .114 19.571);--vectis-color-red-400:oklch(70.4% .191 22.216);--vectis-color-red-500:oklch(63.7% .237 25.331);--vectis-color-red-600:oklch(57.7% .245 27.325);--vectis-color-red-700:oklch(50.5% .213 27.518);--vectis-color-red-800:oklch(44.4% .177 26.899);--vectis-color-red-900:oklch(39.6% .141 25.723);--vectis-color-red-950:oklch(25.8% .092 26.042);--vectis-color-amber-50:oklch(98.7% .022 95.277);--vectis-color-amber-100:oklch(96.2% .059 95.617);--vectis-color-amber-200:oklch(92.4% .12 95.746);--vectis-color-amber-300:oklch(87.9% .169 91.605);--vectis-color-amber-400:oklch(82.8% .189 84.429);--vectis-color-amber-500:oklch(76.9% .188 70.08);--vectis-color-amber-600:oklch(66.6% .179 58.318);--vectis-color-amber-700:oklch(55.5% .163 48.998);--vectis-color-amber-800:oklch(47.3% .137 46.201);--vectis-color-amber-900:oklch(41.4% .112 45.904);--vectis-color-amber-950:oklch(27.9% .077 45.635);--vectis-color-green-50:oklch(98.2% .018 155.826);--vectis-color-green-100:oklch(96.2% .044 156.743);--vectis-color-green-200:oklch(92.5% .084 155.995);--vectis-color-green-300:oklch(87.1% .15 154.449);--vectis-color-green-400:oklch(79.2% .209 151.711);--vectis-color-green-500:oklch(72.3% .219 149.579);--vectis-color-green-600:oklch(62.7% .194 149.214);--vectis-color-green-700:oklch(52.7% .154 150.069);--vectis-color-green-800:oklch(44.8% .119 151.328);--vectis-color-green-900:oklch(39.3% .095 152.535);--vectis-color-green-950:oklch(26.6% .065 152.934);--vectis-color-indigo-50:oklch(96.2% .018 272.314);--vectis-color-indigo-100:oklch(93% .034 272.788);--vectis-color-indigo-200:oklch(87% .065 274.039);--vectis-color-indigo-300:oklch(78.5% .115 274.713);--vectis-color-indigo-400:oklch(67.3% .182 276.935);--vectis-color-indigo-500:oklch(58.5% .233 277.117);--vectis-color-indigo-600:oklch(51.1% .262 276.966);--vectis-color-indigo-700:oklch(45.7% .24 277.023);--vectis-color-indigo-800:oklch(39.8% .195 277.366);--vectis-color-indigo-900:oklch(35.9% .144 278.697);--vectis-color-indigo-950:oklch(25.7% .09 281.288);--vectis-color-gray-50:oklch(98.5% .002 247.839);--vectis-color-gray-100:oklch(96.7% .003 264.542);--vectis-color-gray-200:oklch(92.8% .006 264.531);--vectis-color-gray-300:oklch(87.2% .01 258.338);--vectis-color-gray-400:oklch(70.7% .022 261.325);--vectis-color-gray-500:oklch(55.1% .027 264.364);--vectis-color-gray-600:oklch(44.6% .03 256.802);--vectis-color-gray-700:oklch(37.3% .034 259.733);--vectis-color-gray-800:oklch(27.8% .033 256.848);--vectis-color-gray-900:oklch(21% .034 264.665);--vectis-color-gray-950:oklch(13% .028 261.692);--vectis-space-1:.25rem;--vectis-space-2:.5rem;--vectis-space-3:.75rem;--vectis-space-4:1rem;--vectis-space-5:1.25rem;--vectis-space-6:1.5rem;--vectis-space-7:2rem;--vectis-space-8:2.5rem;--vectis-space-9:3rem;--vectis-space-10:4rem;--vectis-space-11:5rem;--vectis-space-12:6rem;--vectis-font-family-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vectis-font-family-display:var(--vectis-font-family-sans);--vectis-font-family-mono:ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--vectis-font-family-icon:"Material Symbols Rounded";--vectis-font-weight-regular:400;--vectis-font-weight-medium:500;--vectis-font-weight-semibold:600;--vectis-font-weight-bold:700;--vectis-font-size-xs:.75rem;--vectis-font-size-sm:.875rem;--vectis-font-size-md:1rem;--vectis-font-size-lg:1.125rem;--vectis-font-size-xl:1.25rem;--vectis-font-size-2xl:1.5rem;--vectis-font-size-3xl:1.875rem;--vectis-font-size-4xl:2.25rem;--vectis-font-size-5xl:3rem;--vectis-font-leading-none:1;--vectis-font-leading-tight:1.25;--vectis-font-leading-snug:1.4;--vectis-font-leading-normal:1.5;--vectis-font-leading-relaxed:1.65;--vectis-font-tracking-tight:-.015em;--vectis-font-tracking-wide:.05em;--vectis-radius-none:0px;--vectis-radius-xs:.125rem;--vectis-radius-sm:.25rem;--vectis-radius-md:.375rem;--vectis-radius-lg:.5rem;--vectis-radius-xl:.75rem;--vectis-radius-2xl:1rem;--vectis-radius-full:9999px;--vectis-shadow-xs:0 1px 2px 0 oklch(0% 0 0/.05);--vectis-shadow-sm:0 1px 3px 0 oklch(0% 0 0/.1), 0 1px 2px -1px oklch(0% 0 0/.1);--vectis-shadow-md:0 4px 6px -1px oklch(0% 0 0/.1), 0 2px 4px -2px oklch(0% 0 0/.1);--vectis-shadow-lg:0 10px 15px -3px oklch(0% 0 0/.1), 0 4px 6px -4px oklch(0% 0 0/.1);--vectis-shadow-xl:0 20px 25px -5px oklch(0% 0 0/.1), 0 8px 10px -6px oklch(0% 0 0/.1);--vectis-duration-0:0s;--vectis-duration-50:50ms;--vectis-duration-100:.1s;--vectis-duration-150:.15s;--vectis-duration-200:.2s;--vectis-duration-300:.3s;--vectis-duration-400:.4s;--vectis-duration-500:.5s;--vectis-duration-700:.7s;--vectis-duration-1000:1s;--vectis-duration-1500:1.5s;--vectis-duration-2000:2s;--vectis-duration-3000:3s;--vectis-duration-5000:5s;--vectis-ease-default:cubic-bezier(.2, 0, 0, 1);--vectis-ease-in:cubic-bezier(.5, 0, 1, 1);--vectis-ease-out:cubic-bezier(0, 0, .2, 1);--vectis-ease-in-out:cubic-bezier(.4, 0, .2, 1)}:root,[data-theme=light]{color-scheme:light;--vectis-color-surface:var(--vectis-color-white);--vectis-color-surface-muted:var(--vectis-color-gray-100);--vectis-color-surface-raised:var(--vectis-color-white);--vectis-color-surface-overlay:var(--vectis-color-white);--vectis-color-surface-sunken:var(--vectis-color-gray-50);--vectis-color-surface-inverse:var(--vectis-color-gray-900);--vectis-color-surface-skeleton:var(--vectis-color-gray-200);--vectis-color-text-on-inverse:var(--vectis-color-white);--vectis-color-text:var(--vectis-color-gray-900);--vectis-color-text-muted:var(--vectis-color-gray-600);--vectis-color-text-subtle:var(--vectis-color-gray-500);--vectis-color-text-on-accent:var(--vectis-color-white);--vectis-color-text-on-warning:var(--vectis-color-gray-950);--vectis-color-border:var(--vectis-color-gray-200);--vectis-color-border-strong:var(--vectis-color-gray-300);--vectis-color-accent:var(--vectis-color-indigo-600);--vectis-color-accent-hover:var(--vectis-color-indigo-700);--vectis-color-accent-active:var(--vectis-color-indigo-800);--vectis-color-accent-surface:var(--vectis-color-indigo-50);--vectis-color-accent-border:var(--vectis-color-indigo-200);--vectis-color-accent-text:var(--vectis-color-indigo-700);--vectis-color-danger:var(--vectis-color-red-600);--vectis-color-danger-hover:var(--vectis-color-red-700);--vectis-color-danger-active:var(--vectis-color-red-800);--vectis-color-danger-surface:var(--vectis-color-red-50);--vectis-color-danger-border:var(--vectis-color-red-200);--vectis-color-danger-text:var(--vectis-color-red-700);--vectis-color-success:var(--vectis-color-green-700);--vectis-color-success-hover:var(--vectis-color-green-800);--vectis-color-success-active:var(--vectis-color-green-900);--vectis-color-success-surface:var(--vectis-color-green-50);--vectis-color-success-border:var(--vectis-color-green-200);--vectis-color-success-text:var(--vectis-color-green-800);--vectis-color-warning:var(--vectis-color-amber-600);--vectis-color-warning-hover:var(--vectis-color-amber-700);--vectis-color-warning-active:var(--vectis-color-amber-800);--vectis-color-warning-surface:var(--vectis-color-amber-50);--vectis-color-warning-border:var(--vectis-color-amber-200);--vectis-color-warning-text:var(--vectis-color-amber-900);--vectis-color-backdrop:oklch(0% 0 0/.45);--vectis-color-event-surface:oklch(95% .045 265);--vectis-color-event-border:oklch(85% .08 265);--vectis-color-event-text:oklch(40% .11 265);--vectis-text-family:var(--vectis-font-family-sans);--vectis-text-family-heading:var(--vectis-font-family-display);--vectis-text-family-code:var(--vectis-font-family-mono);--vectis-text-display-size:var(--vectis-font-size-5xl);--vectis-text-display-weight:var(--vectis-font-weight-bold);--vectis-text-display-leading:var(--vectis-font-leading-none);--vectis-text-display-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-1-size:var(--vectis-font-size-4xl);--vectis-text-heading-1-weight:var(--vectis-font-weight-bold);--vectis-text-heading-1-leading:var(--vectis-font-leading-tight);--vectis-text-heading-1-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-2-size:var(--vectis-font-size-2xl);--vectis-text-heading-2-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-2-leading:var(--vectis-font-leading-tight);--vectis-text-heading-2-tracking:var(--vectis-font-tracking-tight);--vectis-text-heading-3-size:var(--vectis-font-size-lg);--vectis-text-heading-3-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-3-leading:var(--vectis-font-leading-snug);--vectis-text-heading-4-size:var(--vectis-font-size-md);--vectis-text-heading-4-weight:var(--vectis-font-weight-semibold);--vectis-text-heading-4-leading:var(--vectis-font-leading-snug);--vectis-text-subtitle-size:var(--vectis-font-size-sm);--vectis-text-subtitle-weight:var(--vectis-font-weight-regular);--vectis-text-subtitle-leading:var(--vectis-font-leading-normal);--vectis-text-body-xl-size:var(--vectis-font-size-lg);--vectis-text-body-xl-weight:var(--vectis-font-weight-regular);--vectis-text-body-xl-leading:var(--vectis-font-leading-relaxed);--vectis-text-body-lg-size:var(--vectis-font-size-md);--vectis-text-body-lg-weight:var(--vectis-font-weight-regular);--vectis-text-body-lg-leading:var(--vectis-font-leading-relaxed);--vectis-text-body-md-size:var(--vectis-font-size-sm);--vectis-text-body-md-weight:var(--vectis-font-weight-regular);--vectis-text-body-md-leading:var(--vectis-font-leading-normal);--vectis-text-body-sm-size:var(--vectis-font-size-xs);--vectis-text-body-sm-weight:var(--vectis-font-weight-regular);--vectis-text-body-sm-leading:var(--vectis-font-leading-normal);--vectis-text-label-size:var(--vectis-font-size-sm);--vectis-text-label-weight:var(--vectis-font-weight-medium);--vectis-text-label-leading:var(--vectis-font-leading-snug);--vectis-text-choice-size:var(--vectis-font-size-sm);--vectis-text-choice-weight:var(--vectis-font-weight-regular);--vectis-text-choice-leading:var(--vectis-font-leading-snug);--vectis-text-caption-size:var(--vectis-font-size-xs);--vectis-text-caption-weight:var(--vectis-font-weight-regular);--vectis-text-caption-leading:var(--vectis-font-leading-snug);--vectis-text-overline-size:var(--vectis-font-size-xs);--vectis-text-overline-weight:var(--vectis-font-weight-medium);--vectis-text-overline-leading:var(--vectis-font-leading-snug);--vectis-text-overline-tracking:var(--vectis-font-tracking-wide);--vectis-text-code-size:var(--vectis-font-size-sm);--vectis-text-code-weight:var(--vectis-font-weight-regular);--vectis-text-code-leading:var(--vectis-font-leading-normal);--vectis-text-control-weight:var(--vectis-font-weight-medium);--vectis-text-control-leading:var(--vectis-font-leading-none);--vectis-radius-interactive:var(--vectis-radius-md);--vectis-radius-surface:var(--vectis-radius-lg);--vectis-radius-overlay:var(--vectis-radius-xl);--vectis-radius-pill:var(--vectis-radius-full);--vectis-radius-chip:var(--vectis-radius-interactive);--vectis-duration-fast:var(--vectis-duration-150);--vectis-duration-base:var(--vectis-duration-200);--vectis-duration-slow:var(--vectis-duration-300);--vectis-focus-ring-color:var(--vectis-color-indigo-500);--vectis-focus-ring-width:2px;--vectis-focus-ring-offset:2px;--vectis-control-height-xs:1.5rem;--vectis-control-height-sm:2rem;--vectis-control-height-md:2.5rem;--vectis-control-height-lg:3rem;--vectis-control-height-xl:3.5rem;--vectis-control-border-width:2px;--vectis-control-size-check:1.25rem;--vectis-control-size-check-mark:.875rem;--vectis-control-size-check-dot:.5rem;--vectis-control-size-switch-w:2.5rem;--vectis-control-size-switch-h:1.25rem;--vectis-control-size-switch-pad:.125rem;--vectis-control-action-size-sm:1.25rem;--vectis-control-action-size-md:1.5rem;--vectis-control-action-size-lg:1.75rem;--vectis-control-size-slider-track:.375rem;--vectis-control-size-slider-thumb:1.25rem;--vectis-control-size-slider-length:10rem;--vectis-control-size-slider-field:5rem;--vectis-control-size-carousel-block:24rem;--vectis-control-size-carousel-indicator:.625rem;--vectis-control-size-carousel-indicator-active:1.25rem;--vectis-control-size-combobox-list-max-block:18rem;--vectis-control-size-menu-min:11rem;--vectis-control-size-menu-max:20rem;--vectis-control-size-progress-linear-thickness:.25rem;--vectis-control-size-progress-linear-length:10rem;--vectis-control-size-progress-circular-diameter:3rem;--vectis-control-size-progress-circular-thickness:.25rem;--vectis-control-size-skeleton-surface:6rem;--vectis-control-size-toast-width:22rem;--vectis-control-size-tooltip-max:18rem;--vectis-control-size-dialog-width:25rem;--vectis-control-size-snackbar-min:18rem;--vectis-control-size-snackbar-max:36rem;--vectis-control-size-badge-h:1.25rem;--vectis-control-size-badge-dot:.625rem;--vectis-control-size-badge-ring:2px;--vectis-control-size-avatar-ring:2px;--vectis-control-size-date-picker-cell:2.5rem;--vectis-control-size-date-picker-day:var(--vectis-control-height-md);--vectis-control-size-date-picker-dot:.25rem;--vectis-control-size-date-picker-nav-min:5.375rem;--vectis-control-size-tab-indicator:2px;--vectis-control-size-table-search:16rem;--vectis-control-size-time-picker-dial:16rem;--vectis-control-size-time-picker-number:3rem;--vectis-control-size-time-picker-center:.5rem;--vectis-control-size-time-picker-hand:2px;--vectis-control-size-time-picker-hand-minor:1rem;--vectis-control-size-file-picker-min-block:10rem;--vectis-control-size-file-picker-icon:2.5rem;--vectis-control-size-file-picker-thumb:2.5rem;--vectis-control-size-calendar-hour:4rem;--vectis-control-size-calendar-gutter:4.5rem;--vectis-control-size-calendar-tick:.375rem;--vectis-control-size-calendar-edge:3rem;--vectis-control-size-calendar-day-min:5rem;--vectis-control-size-calendar-handle:.5rem;--vectis-control-size-calendar-allday-lane:1.5rem;--vectis-control-size-calendar-allday-max:7rem;--vectis-control-size-calendar-now-dot:.625rem;--vectis-control-size-calendar-event-edge:3px;--vectis-control-size-calendar-gap:.125rem;--vectis-control-size-calendar-grip:1rem;--vectis-control-size-calendar-grip-thickness:2px;--vectis-control-size-calendar-year-month:13rem;--vectis-control-size-calendar-month-cell:8.5rem;--vectis-control-size-calendar-year-cell:1.5rem;--vectis-icon-size-sm:1rem;--vectis-icon-size-md:1.25rem;--vectis-icon-size-lg:1.5rem}[data-theme=dark]{color-scheme:dark;--vectis-color-surface:var(--vectis-color-gray-950);--vectis-color-surface-muted:var(--vectis-color-gray-800);--vectis-color-surface-raised:var(--vectis-color-gray-900);--vectis-color-surface-overlay:var(--vectis-color-gray-900);--vectis-color-surface-sunken:oklch(11% .006 260);--vectis-color-surface-inverse:var(--vectis-color-gray-800);--vectis-color-surface-skeleton:var(--vectis-color-gray-800);--vectis-color-text-on-inverse:var(--vectis-color-gray-50);--vectis-color-text:var(--vectis-color-gray-50);--vectis-color-text-muted:var(--vectis-color-gray-300);--vectis-color-text-subtle:var(--vectis-color-gray-400);--vectis-color-text-on-accent:var(--vectis-color-white);--vectis-color-border:var(--vectis-color-gray-800);--vectis-color-border-strong:var(--vectis-color-gray-700);--vectis-color-accent:var(--vectis-color-indigo-500);--vectis-color-accent-hover:var(--vectis-color-indigo-400);--vectis-color-accent-active:var(--vectis-color-indigo-300);--vectis-color-accent-surface:var(--vectis-color-indigo-950);--vectis-color-accent-border:var(--vectis-color-indigo-900);--vectis-color-accent-text:var(--vectis-color-indigo-300);--vectis-color-danger:var(--vectis-color-red-600);--vectis-color-danger-hover:var(--vectis-color-red-700);--vectis-color-danger-active:var(--vectis-color-red-800);--vectis-color-danger-surface:var(--vectis-color-red-950);--vectis-color-danger-border:var(--vectis-color-red-900);--vectis-color-danger-text:var(--vectis-color-red-300);--vectis-color-success:var(--vectis-color-green-700);--vectis-color-success-hover:var(--vectis-color-green-800);--vectis-color-success-active:var(--vectis-color-green-900);--vectis-color-success-surface:var(--vectis-color-green-950);--vectis-color-success-border:var(--vectis-color-green-900);--vectis-color-success-text:var(--vectis-color-green-300);--vectis-color-warning:var(--vectis-color-amber-500);--vectis-color-warning-hover:var(--vectis-color-amber-400);--vectis-color-warning-active:var(--vectis-color-amber-300);--vectis-color-warning-surface:var(--vectis-color-amber-950);--vectis-color-warning-border:var(--vectis-color-amber-900);--vectis-color-warning-text:var(--vectis-color-amber-300);--vectis-color-backdrop:oklch(0% 0 0/.6);--vectis-color-event-surface:oklch(30% .05 265);--vectis-color-event-border:oklch(42% .08 265);--vectis-color-event-text:oklch(90% .06 265);--vectis-focus-ring-color:var(--vectis-color-indigo-400)}.v-tone[data-tone=accent]{--tone-bg-solid:var(--vectis-color-accent);--tone-bg-solid-hover:var(--vectis-color-accent-hover);--tone-bg-solid-active:var(--vectis-color-accent-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-accent-text);--tone-bg-soft:var(--vectis-color-accent-surface);--tone-border-soft:var(--vectis-color-accent-border)}.v-tone[data-tone=danger]{--tone-bg-solid:var(--vectis-color-danger);--tone-bg-solid-hover:var(--vectis-color-danger-hover);--tone-bg-solid-active:var(--vectis-color-danger-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-danger-text);--tone-bg-soft:var(--vectis-color-danger-surface);--tone-border-soft:var(--vectis-color-danger-border)}.v-tone[data-tone=success]{--tone-bg-solid:var(--vectis-color-success);--tone-bg-solid-hover:var(--vectis-color-success-hover);--tone-bg-solid-active:var(--vectis-color-success-active);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:var(--vectis-color-success-text);--tone-bg-soft:var(--vectis-color-success-surface);--tone-border-soft:var(--vectis-color-success-border)}.v-tone[data-tone=warning]{--tone-bg-solid:var(--vectis-color-warning);--tone-bg-solid-hover:var(--vectis-color-warning-hover);--tone-bg-solid-active:var(--vectis-color-warning-active);--tone-text-solid:var(--vectis-color-text-on-warning);--tone-text-tinted:var(--vectis-color-warning-text);--tone-bg-soft:var(--vectis-color-warning-surface);--tone-border-soft:var(--vectis-color-warning-border)}.v-tone[data-tone=neutral]{--tone-bg-solid:var(--vectis-color-text);--tone-bg-solid-hover:color-mix(in oklab, var(--vectis-color-text), var(--vectis-color-surface) 8%);--tone-bg-solid-active:color-mix(in oklab, var(--vectis-color-text), var(--vectis-color-surface) 14%);--tone-text-solid:var(--vectis-color-surface);--tone-text-tinted:var(--vectis-color-text);--tone-bg-soft:var(--vectis-color-surface-muted);--tone-border-soft:var(--vectis-color-border-strong)}.v-tone[data-custom]{--tone-bg-solid:var(--custom-color);--tone-text-solid:var(--vectis-color-text-on-accent);--tone-text-tinted:color-mix(in oklab, var(--custom-color), var(--vectis-color-text) 30%);--tone-bg-soft:color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%)}}@layer vectis.components{.v-variant[data-variant=solid]{background:var(--tone-bg-solid);color:var(--tone-text-solid)}.v-variant[data-variant=soft]{background:var(--tone-bg-soft);color:var(--tone-text-tinted)}.v-variant[data-variant=outline]{color:var(--tone-text-tinted);border-color:var(--tone-border-soft);background:0 0}.v-variant[data-variant=ghost]{color:var(--tone-text-tinted);background:0 0}.v-overlay{position:fixed;inset:auto}.v-overlay.v-overlay:not(:popover-open){display:none}.v-floating{margin:var(--vectis-space-2);position-try-fallbacks:flip-block, flip-inline}.v-floating[data-placement$=-start]{margin-inline-start:0}.v-floating[data-placement$=-end]{margin-inline-end:0}.v-floating[data-placement=bottom]{position-area:block-end;justify-self:anchor-center}.v-floating[data-placement=bottom-start]{position-area:block-end span-inline-end}.v-floating[data-placement=bottom-end]{position-area:block-end span-inline-start}.v-floating[data-placement=top]{position-area:block-start;justify-self:anchor-center}.v-floating[data-placement=top-start]{position-area:block-start span-inline-end}.v-floating[data-placement=top-end]{position-area:block-start span-inline-start}.v-floating[data-placement=left]{position-area:inline-start;align-self:anchor-center}.v-floating[data-placement=right]{position-area:inline-end;align-self:anchor-center}.v-floating[data-placement=right-start]{position-area:inline-end span-block-end}.v-floating[data-placement=right-end]{position-area:inline-end span-block-start}.v-floating[data-placement=left-start]{position-area:inline-start span-block-end}.v-floating[data-placement=left-end]{position-area:inline-start span-block-start}.v-floating[data-placement^=right-],.v-floating[data-placement^=left-]{margin-inline:var(--vectis-space-2)}.v-floating:is([data-placement=right-start],[data-placement=left-start]){margin-block-start:0}.v-floating:is([data-placement=right-end],[data-placement=left-end]){margin-block-end:0}.v-floating{opacity:0;transition:opacity var(--vectis-duration-fast) var(--vectis-ease-default), transform var(--vectis-duration-fast) var(--vectis-ease-default), overlay var(--vectis-duration-fast) allow-discrete, display var(--vectis-duration-fast) allow-discrete;transform:scale(.97)}.v-floating:popover-open{opacity:1;transform:none}@starting-style{.v-floating:popover-open{opacity:0;transform:scale(.97)}}@media (prefers-reduced-motion:reduce){.v-floating{transition:none}}.v-panel{gap:var(--vectis-space-1);padding:var(--vectis-space-1);background:var(--vectis-color-surface-overlay);color:var(--vectis-color-text);border:1px solid var(--vectis-color-border);border-radius:var(--vectis-radius-surface);box-shadow:var(--vectis-shadow-lg);font-family:var(--vectis-text-family);flex-direction:column;display:flex}.v-banner{--banner-line:calc(var(--vectis-text-body-md-size) * var(--vectis-text-body-md-leading));gap:var(--vectis-space-3);border-radius:var(--vectis-radius-overlay);box-shadow:var(--vectis-shadow-lg);font-family:var(--vectis-text-family);font-size:var(--vectis-text-body-md-size);line-height:var(--vectis-text-body-md-leading);transition:opacity var(--vectis-duration-base) var(--vectis-ease-default), translate var(--vectis-duration-base) var(--vectis-ease-default);display:flex}@starting-style{.v-banner{opacity:0;translate:0 var(--banner-enter-y,0)}}.v-banner-text{overflow-wrap:anywhere;flex:1;min-inline-size:0}.v-banner-control{--banner-control-height:var(--vectis-control-height-sm);margin-block:calc((var(--banner-line) - var(--banner-control-height)) / 2);margin-inline-end:calc(-1 * var(--vectis-space-2))}.v-banner .v-banner-control[data-tone]{--tone-text-tinted:currentcolor;--tone-bg-soft:color-mix(in oklab, currentcolor, transparent 85%)}@media (prefers-reduced-motion:reduce){.v-banner{transition:none}}.v-control{--control-height:var(--control-height-base)}.v-control[data-compact]{--control-height:calc(var(--control-height-base) - var(--vectis-space-1))}.v-control[data-size=xs]{--control-height-base:var(--vectis-control-height-xs);--control-font-size:var(--vectis-font-size-xs);--control-padding-inline:var(--vectis-space-2);--control-gap:var(--vectis-space-1);--control-action-size:var(--vectis-control-action-size-sm);--vectis-icon-size:var(--vectis-icon-size-sm);--vectis-icon-opsz:20}.v-control[data-size=sm]{--control-height-base:var(--vectis-control-height-sm);--control-font-size:var(--vectis-font-size-sm);--control-padding-inline:var(--vectis-space-3);--control-padding-inline-field:var(--vectis-space-2);--control-gap:var(--vectis-space-2);--control-action-size:var(--vectis-control-action-size-md);--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20}.v-control[data-size=md]{--control-height-base:var(--vectis-control-height-md);--control-font-size:var(--vectis-font-size-sm);--control-padding-inline:var(--vectis-space-4);--control-padding-inline-field:var(--vectis-space-3);--control-gap:var(--vectis-space-2);--control-action-size:var(--vectis-control-action-size-md);--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20}.v-control[data-size=lg]{--control-height-base:var(--vectis-control-height-lg);--control-font-size:var(--vectis-font-size-md);--control-padding-inline:var(--vectis-space-5);--control-padding-inline-field:var(--vectis-space-4);--control-gap:var(--vectis-space-3);--control-action-size:var(--vectis-control-action-size-lg);--vectis-icon-size:var(--vectis-icon-size-lg);--vectis-icon-opsz:24}.v-control[data-size=xl]{--control-height-base:var(--vectis-control-height-xl);--control-font-size:var(--vectis-font-size-md);--control-padding-inline:var(--vectis-space-6);--control-gap:var(--vectis-space-3);--vectis-icon-size:var(--vectis-icon-size-lg);--vectis-icon-opsz:24}.v-field-action{inline-size:var(--control-action-size);block-size:var(--control-action-size);margin-inline:calc((var(--vectis-icon-size) - var(--control-action-size)) / 2);border-radius:var(--vectis-radius-interactive);color:var(--vectis-color-text-muted);cursor:pointer;transition:color var(--vectis-duration-fast) var(--vectis-ease-default);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.v-field-action:hover:not(:disabled){color:var(--vectis-color-text)}.v-field-action:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(-1 * var(--vectis-focus-ring-width))}.v-field-meta{align-items:baseline;gap:var(--vectis-space-2);display:flex}.v-field-counter{font-size:var(--vectis-text-caption-size);color:var(--vectis-color-text-muted);font-variant-numeric:tabular-nums}.v-field-meta>.v-field-counter{margin-inline-start:auto}.v-field-counter[data-over]{color:var(--vectis-color-danger-text)}@media (prefers-reduced-motion:reduce){.v-field-action{transition:none}}.v-choice{font-family:var(--vectis-text-family);font-size:var(--vectis-text-choice-size);font-weight:var(--vectis-text-choice-weight);line-height:var(--vectis-text-choice-leading);color:var(--vectis-color-text);grid-template-columns:auto auto;align-items:center;display:inline-grid}.v-choice-row{grid-column:1/-1;grid-template-columns:subgrid;cursor:pointer;align-items:center;display:grid}.v-choice-label,.v-choice-hint{margin-inline-start:var(--vectis-space-2)}.v-choice-hint{font-size:var(--vectis-text-caption-size);font-weight:var(--vectis-text-caption-weight);line-height:var(--vectis-text-caption-leading);color:var(--vectis-color-text-muted);grid-column:2}.v-choice[data-label-position=start] .v-choice-label{order:-1}.v-choice[data-label-position=start] :is(.v-choice-label,.v-choice-hint){margin-inline:0 var(--vectis-space-2)}.v-choice[data-label-position=start] .v-choice-hint{grid-column:1}.v-choice[data-spread]{justify-content:space-between;display:grid}.v-choice-row .v-hidden-input:focus-visible+*{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-choice[data-readonly] .v-choice-row{cursor:default}.v-choice:has(.v-hidden-input:disabled){color:var(--vectis-color-text-subtle)}.v-choice:has(.v-hidden-input:disabled) .v-choice-row{cursor:not-allowed}.v-choice:has(.v-hidden-input:disabled) .v-choice-hint{color:var(--vectis-color-text-subtle)}.v-disclosure{interpolate-size:allow-keywords}.v-disclosure::details-content{block-size:0;transition:block-size var(--vectis-duration-base) var(--vectis-ease-default), content-visibility var(--vectis-duration-base) allow-discrete;overflow:clip}.v-disclosure[open]::details-content{block-size:auto}.v-disclosure>summary::-webkit-details-marker{display:none}.v-disclosure-chevron{color:var(--vectis-color-text-muted);transition:rotate var(--vectis-duration-base) var(--vectis-ease-default);flex:none}.v-disclosure[open]:not([data-swap])>summary>.v-disclosure-chevron{rotate:180deg}.v-disclosure[data-swap][open]>summary>.v-disclosure-chevron:not(.v-disclosure-chevron-open),.v-disclosure[data-swap]:not([open])>summary>.v-disclosure-chevron-open{display:none}.v-disclosure>summary[data-disabled]>.v-disclosure-chevron{color:inherit}@media (prefers-reduced-motion:reduce){.v-disclosure::details-content,.v-disclosure-chevron{transition:none}}}@layer vectis.utilities{.v-hidden-input{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;margin:0;position:absolute}.v-visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}
@@ -4,22 +4,9 @@ export interface FlatToken {
4
4
  cssName: string;
5
5
  token: DesignToken;
6
6
  }
7
- /**
8
- * Walks the nested groups and returns one entry per token, each carrying the name of the
9
- * custom property it will become: the path through the groups, joined with dashes and
10
- * prefixed so that nothing collides with an application's own variables.
11
- */
7
+ /** Flatten nested groups into token entries with qualified CSS custom-property names. */
12
8
  export declare function flattenTokens(group: TokenGroup, prefix?: string[]): FlatToken[];
13
- /**
14
- * A token's value may point at another token by name, in braces, instead of stating a
15
- * colour or a length of its own. Each of those references becomes a reading of the
16
- * corresponding custom property, so the link survives into the CSS and remains
17
- * overridable at runtime.
18
- *
19
- * A reference to a token that does not exist STOPS the build rather than being left as
20
- * it is. A dangling reference in CSS resolves to nothing at all, and the component using
21
- * it loses its colour with nothing in the console to say why.
22
- */
9
+ /** Resolve DTCG references into CSS var aliases while preserving literal values. */
23
10
  export declare function resolveTokenValue(value: string, known: ReadonlySet<string>): string;
24
- /** The final step: a list of tokens written out as the lines of a CSS rule. */
11
+ /** Serialize flat token entries into CSS declarations. */
25
12
  export declare function toCssDeclarations(flat: FlatToken[], known: ReadonlySet<string>, indent?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","names":[],"sources":["../../src/tokens/css.ts"],"sourcesContent":["/**\n * The tokens' nested typed groups flattened into the list of custom properties a browser\n * needs. `pnpm tokens` uses it to generate the shipped stylesheet, and it is exported\n * through `vectis-ui/tokens` so an application can do the same at runtime — a theming tool\n * regenerating the variables as a slider moves, or exporting a configuration.\n */\nimport { isToken, type DesignToken, type TokenGroup } from './types'\n\nexport interface FlatToken {\n path: string[]\n cssName: string\n token: DesignToken\n}\n\n/**\n * Walks the nested groups and returns one entry per token, each carrying the name of the\n * custom property it will become: the path through the groups, joined with dashes and\n * prefixed so that nothing collides with an application's own variables.\n */\nexport function flattenTokens(group: TokenGroup, prefix: string[] = []): FlatToken[] {\n const out: FlatToken[] = []\n for (const [key, node] of Object.entries(group)) {\n const path = [...prefix, key]\n if (isToken(node)) {\n out.push({ path, cssName: `--vectis-${path.join('-')}`, token: node })\n } else {\n out.push(...flattenTokens(node, path))\n }\n }\n return out\n}\n\nconst ALIAS_RE = /\\{([^}]+)\\}/g\n\n/**\n * A token's value may point at another token by name, in braces, instead of stating a\n * colour or a length of its own. Each of those references becomes a reading of the\n * corresponding custom property, so the link survives into the CSS and remains\n * overridable at runtime.\n *\n * A reference to a token that does not exist STOPS the build rather than being left as\n * it is. A dangling reference in CSS resolves to nothing at all, and the component using\n * it loses its colour with nothing in the console to say why.\n */\nexport function resolveTokenValue(value: string, known: ReadonlySet<string>): string {\n return value.replace(ALIAS_RE, (_match, ref: string) => {\n const cssName = `--vectis-${ref.trim().split('.').join('-')}`\n if (!known.has(cssName)) {\n throw new Error(`Unknown token alias: {${ref}}`)\n }\n return `var(${cssName})`\n })\n}\n\n/** The final step: a list of tokens written out as the lines of a CSS rule. */\nexport function toCssDeclarations(\n flat: FlatToken[],\n known: ReadonlySet<string>,\n indent = ' ',\n): string {\n return flat\n .map((f) => `${indent}${f.cssName}: ${resolveTokenValue(f.token.$value, known)};`)\n .join('\\n')\n}\n"],"mappings":";;AAmBA,SAAgB,EAAc,GAAmB,IAAmB,CAAC,GAAgB;CACnF,IAAM,IAAmB,CAAC;CAC1B,KAAK,IAAM,CAAC,GAAK,MAAS,OAAO,QAAQ,CAAK,GAAG;EAC/C,IAAM,IAAO,CAAC,GAAG,GAAQ,CAAG;EAC5B,AAAI,EAAQ,CAAI,IACd,EAAI,KAAK;GAAE;GAAM,SAAS,YAAY,EAAK,KAAK,GAAG;GAAK,OAAO;EAAK,CAAC,IAErE,EAAI,KAAK,GAAG,EAAc,GAAM,CAAI,CAAC;CAEzC;CACA,OAAO;AACT;AAEA,IAAM,IAAW;AAYjB,SAAgB,EAAkB,GAAe,GAAoC;CACnF,OAAO,EAAM,QAAQ,IAAW,GAAQ,MAAgB;EACtD,IAAM,IAAU,YAAY,EAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;EAC1D,IAAI,CAAC,EAAM,IAAI,CAAO,GACpB,MAAU,MAAM,yBAAyB,EAAI,EAAE;EAEjD,OAAO,OAAO,EAAQ;CACxB,CAAC;AACH;AAGA,SAAgB,EACd,GACA,GACA,IAAS,MACD;CACR,OAAO,EACJ,KAAK,MAAM,GAAG,IAAS,EAAE,QAAQ,IAAI,EAAkB,EAAE,MAAM,QAAQ,CAAK,EAAE,EAAE,CAAC,CACjF,KAAK,IAAI;AACd"}
1
+ {"version":3,"file":"css.js","names":[],"sources":["../../src/tokens/css.ts"],"sourcesContent":["/**\n * Flatten typed DTCG groups and aliases into CSS declarations for token generation and consumer\n * theming tools.\n */\nimport { isToken, type DesignToken, type TokenGroup } from './types'\n\nexport interface FlatToken {\n path: string[]\n cssName: string\n token: DesignToken\n}\n\n/** Flatten nested groups into token entries with qualified CSS custom-property names. */\nexport function flattenTokens(group: TokenGroup, prefix: string[] = []): FlatToken[] {\n const out: FlatToken[] = []\n for (const [key, node] of Object.entries(group)) {\n const path = [...prefix, key]\n if (isToken(node)) {\n out.push({ path, cssName: `--vectis-${path.join('-')}`, token: node })\n } else {\n out.push(...flattenTokens(node, path))\n }\n }\n return out\n}\n\nconst ALIAS_RE = /\\{([^}]+)\\}/g\n\n/** Resolve DTCG references into CSS var aliases while preserving literal values. */\nexport function resolveTokenValue(value: string, known: ReadonlySet<string>): string {\n return value.replace(ALIAS_RE, (_match, ref: string) => {\n const cssName = `--vectis-${ref.trim().split('.').join('-')}`\n if (!known.has(cssName)) {\n throw new Error(`Unknown token alias: {${ref}}`)\n }\n return `var(${cssName})`\n })\n}\n\n/** Serialize flat token entries into CSS declarations. */\nexport function toCssDeclarations(\n flat: FlatToken[],\n known: ReadonlySet<string>,\n indent = ' ',\n): string {\n return flat\n .map((f) => `${indent}${f.cssName}: ${resolveTokenValue(f.token.$value, known)};`)\n .join('\\n')\n}\n"],"mappings":";;AAaA,SAAgB,EAAc,GAAmB,IAAmB,CAAC,GAAgB;CACnF,IAAM,IAAmB,CAAC;CAC1B,KAAK,IAAM,CAAC,GAAK,MAAS,OAAO,QAAQ,CAAK,GAAG;EAC/C,IAAM,IAAO,CAAC,GAAG,GAAQ,CAAG;EAC5B,AAAI,EAAQ,CAAI,IACd,EAAI,KAAK;GAAE;GAAM,SAAS,YAAY,EAAK,KAAK,GAAG;GAAK,OAAO;EAAK,CAAC,IAErE,EAAI,KAAK,GAAG,EAAc,GAAM,CAAI,CAAC;CAEzC;CACA,OAAO;AACT;AAEA,IAAM,IAAW;AAGjB,SAAgB,EAAkB,GAAe,GAAoC;CACnF,OAAO,EAAM,QAAQ,IAAW,GAAQ,MAAgB;EACtD,IAAM,IAAU,YAAY,EAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;EAC1D,IAAI,CAAC,EAAM,IAAI,CAAO,GACpB,MAAU,MAAM,yBAAyB,EAAI,EAAE;EAEjD,OAAO,OAAO,EAAQ;CACxB,CAAC;AACH;AAGA,SAAgB,EACd,GACA,GACA,IAAS,MACD;CACR,OAAO,EACJ,KAAK,MAAM,GAAG,IAAS,EAAE,QAAQ,IAAI,EAAkB,EAAE,MAAM,QAAQ,CAAK,EAAE,EAAE,CAAC,CACjF,KAAK,IAAI;AACd"}
@@ -210,6 +210,11 @@ export declare const tokens: {
210
210
  weight: import('./types.js').DesignToken;
211
211
  leading: import('./types.js').DesignToken;
212
212
  };
213
+ choice: {
214
+ size: import('./types.js').DesignToken;
215
+ weight: import('./types.js').DesignToken;
216
+ leading: import('./types.js').DesignToken;
217
+ };
213
218
  caption: {
214
219
  size: import('./types.js').DesignToken;
215
220
  weight: import('./types.js').DesignToken;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/tokens/index.ts"],"sourcesContent":["/**\n * What an application gets when it imports the design system's tokens: the tokens\n * themselves, exactly as the library defines them, and the means to turn them into CSS —\n * flattening the groups, following the references between tokens, writing the\n * declarations out.\n */\nimport { primitives } from './primitives'\nimport { semantic } from './semantic'\nimport { dark } from './themes/dark'\n\nexport type { DesignToken, TokenGroup, TokenType } from './types'\nexport { isToken } from './types'\nexport { flattenTokens, resolveTokenValue, toCssDeclarations, type FlatToken } from './css'\n\nexport const tokens = {\n primitives,\n semantic,\n themes: { dark },\n}\n\nexport type Tokens = typeof tokens\n"],"mappings":";;;;;;AAcA,IAAa,IAAS;CACpB;CACA;CACA,QAAQ,EAAE,QAAK;AACjB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/tokens/index.ts"],"sourcesContent":["import { primitives } from './primitives'\nimport { semantic } from './semantic'\nimport { dark } from './themes/dark'\n\nexport type { DesignToken, TokenGroup, TokenType } from './types'\nexport { isToken } from './types'\nexport { flattenTokens, resolveTokenValue, toCssDeclarations, type FlatToken } from './css'\n\nexport const tokens = {\n primitives,\n semantic,\n themes: { dark },\n}\n\nexport type Tokens = typeof tokens\n"],"mappings":";;;;;;AAQA,IAAa,IAAS;CACpB;CACA;CACA,QAAQ,EAAE,QAAK;AACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","names":[],"sources":["../../src/tokens/primitives.ts"],"sourcesContent":["/**\n * The raw material: the colour palettes and the numeric scales everything else is built from.\n *\n * No component reads these. A component asks for a ROLE — the accent, the page background —\n * and `semantic.ts` is what points that role at a step. Keeping the two apart is what makes\n * theming possible at all: a theme moves the roles, never the palette.\n *\n * OKLCH, so a step of one palette is as light as the same step of any other and a\n * `color-mix()` between two passes through the shades one expects rather than through grey.\n * The palettes are Tailwind CSS 4's, family for family and step for step.\n *\n * Exactly FIVE families, and they are exactly the five a role points at: gray for surfaces,\n * text and borders, indigo for the accent, red/green/amber for danger/success/warning. The\n * library ships no palette it does not paint with — a deliberate limit, since a family costs\n * eleven custom properties in every page that loads the sheet whether or not anything reads\n * them, and `tokens.test.ts` locks it. An application wanting a sixth declares its own eleven\n * steps in its own unlayered sheet and repoints the role; the docs site does exactly that\n * for its violet.\n */\nimport {\n color,\n cubicBezier,\n dimension,\n duration,\n fontFamily,\n fontWeight,\n shadow,\n type TokenGroup,\n} from './types'\n\nconst palette = (values: Record<string, string>): TokenGroup =>\n Object.fromEntries(Object.entries(values).map(([step, value]) => [step, color(value)]))\n\nexport const primitives = {\n color: {\n white: color('oklch(100% 0 0)'),\n black: color('oklch(0% 0 0)'),\n red: palette({\n '50': 'oklch(97.1% 0.013 17.38)',\n '100': 'oklch(93.6% 0.032 17.717)',\n '200': 'oklch(88.5% 0.062 18.334)',\n '300': 'oklch(80.8% 0.114 19.571)',\n '400': 'oklch(70.4% 0.191 22.216)',\n '500': 'oklch(63.7% 0.237 25.331)',\n '600': 'oklch(57.7% 0.245 27.325)',\n '700': 'oklch(50.5% 0.213 27.518)',\n '800': 'oklch(44.4% 0.177 26.899)',\n '900': 'oklch(39.6% 0.141 25.723)',\n '950': 'oklch(25.8% 0.092 26.042)',\n }),\n amber: palette({\n '50': 'oklch(98.7% 0.022 95.277)',\n '100': 'oklch(96.2% 0.059 95.617)',\n '200': 'oklch(92.4% 0.12 95.746)',\n '300': 'oklch(87.9% 0.169 91.605)',\n '400': 'oklch(82.8% 0.189 84.429)',\n '500': 'oklch(76.9% 0.188 70.08)',\n '600': 'oklch(66.6% 0.179 58.318)',\n '700': 'oklch(55.5% 0.163 48.998)',\n '800': 'oklch(47.3% 0.137 46.201)',\n '900': 'oklch(41.4% 0.112 45.904)',\n '950': 'oklch(27.9% 0.077 45.635)',\n }),\n green: palette({\n '50': 'oklch(98.2% 0.018 155.826)',\n '100': 'oklch(96.2% 0.044 156.743)',\n '200': 'oklch(92.5% 0.084 155.995)',\n '300': 'oklch(87.1% 0.15 154.449)',\n '400': 'oklch(79.2% 0.209 151.711)',\n '500': 'oklch(72.3% 0.219 149.579)',\n '600': 'oklch(62.7% 0.194 149.214)',\n '700': 'oklch(52.7% 0.154 150.069)',\n '800': 'oklch(44.8% 0.119 151.328)',\n '900': 'oklch(39.3% 0.095 152.535)',\n '950': 'oklch(26.6% 0.065 152.934)',\n }),\n indigo: palette({\n '50': 'oklch(96.2% 0.018 272.314)',\n '100': 'oklch(93% 0.034 272.788)',\n '200': 'oklch(87% 0.065 274.039)',\n '300': 'oklch(78.5% 0.115 274.713)',\n '400': 'oklch(67.3% 0.182 276.935)',\n '500': 'oklch(58.5% 0.233 277.117)',\n '600': 'oklch(51.1% 0.262 276.966)',\n '700': 'oklch(45.7% 0.24 277.023)',\n '800': 'oklch(39.8% 0.195 277.366)',\n '900': 'oklch(35.9% 0.144 278.697)',\n '950': 'oklch(25.7% 0.09 281.288)',\n }),\n gray: palette({\n '50': 'oklch(98.5% 0.002 247.839)',\n '100': 'oklch(96.7% 0.003 264.542)',\n '200': 'oklch(92.8% 0.006 264.531)',\n '300': 'oklch(87.2% 0.01 258.338)',\n '400': 'oklch(70.7% 0.022 261.325)',\n '500': 'oklch(55.1% 0.027 264.364)',\n '600': 'oklch(44.6% 0.03 256.802)',\n '700': 'oklch(37.3% 0.034 259.733)',\n '800': 'oklch(27.8% 0.033 256.848)',\n '900': 'oklch(21% 0.034 264.665)',\n '950': 'oklch(13% 0.028 261.692)',\n }),\n },\n space: {\n '1': dimension('0.25rem'),\n '2': dimension('0.5rem'),\n '3': dimension('0.75rem'),\n '4': dimension('1rem'),\n '5': dimension('1.25rem'),\n '6': dimension('1.5rem'),\n '7': dimension('2rem'),\n '8': dimension('2.5rem'),\n '9': dimension('3rem'),\n '10': dimension('4rem'),\n '11': dimension('5rem'),\n '12': dimension('6rem'),\n },\n font: {\n family: {\n sans: fontFamily(\n \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n ),\n // The heading typeface. It points at the running one, so out of the box the two are\n // the same and nothing looks different; giving headings a face of their own is a\n // matter of overriding this single token. The indirection is what makes the two\n // decisions independent: replacing `sans` still carries the headings along, whereas\n // replacing `display` moves the headings alone.\n display: fontFamily('{font.family.sans}'),\n mono: fontFamily(\n \"ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace\",\n ),\n // The icon font, which the library never bundles: an application that wants icons\n // drawn from a font loads it itself, as the README explains. Overriding this one\n // token is what switches the whole system to another cut of Material Symbols.\n icon: fontFamily(\"'Material Symbols Rounded'\"),\n },\n weight: {\n regular: fontWeight('400'),\n medium: fontWeight('500'),\n semibold: fontWeight('600'),\n bold: fontWeight('700'),\n },\n size: {\n xs: dimension('0.75rem'),\n sm: dimension('0.875rem'),\n md: dimension('1rem'),\n lg: dimension('1.125rem'),\n xl: dimension('1.25rem'),\n '2xl': dimension('1.5rem'),\n '3xl': dimension('1.875rem'),\n '4xl': dimension('2.25rem'),\n '5xl': dimension('3rem'),\n },\n leading: {\n none: dimension('1'),\n tight: dimension('1.25'),\n snug: dimension('1.4'),\n normal: dimension('1.5'),\n relaxed: dimension('1.65'),\n },\n tracking: {\n tight: dimension('-0.015em', 'Tightening for large sizes (display, the top headings)'),\n wide: dimension('0.05em', 'Letter spacing for all-caps micro labels (overline)'),\n },\n },\n radius: {\n // Carries a unit although it is zero: these tokens are subtracted from one another to\n // derive a nested corner (`calc(var(--vectis-radius-surface) - 1px)`), and `calc(0 - 1px)`\n // is invalid where `calc(0px - 1px)` is not.\n none: dimension('0px'),\n xs: dimension('0.125rem'),\n sm: dimension('0.25rem'),\n md: dimension('0.375rem'),\n lg: dimension('0.5rem'),\n xl: dimension('0.75rem'),\n '2xl': dimension('1rem'),\n full: dimension('9999px'),\n },\n shadow: {\n xs: shadow('0 1px 2px 0 oklch(0% 0 0 / 0.05)'),\n sm: shadow('0 1px 3px 0 oklch(0% 0 0 / 0.1), 0 1px 2px -1px oklch(0% 0 0 / 0.1)'),\n md: shadow('0 4px 6px -1px oklch(0% 0 0 / 0.1), 0 2px 4px -2px oklch(0% 0 0 / 0.1)'),\n lg: shadow('0 10px 15px -3px oklch(0% 0 0 / 0.1), 0 4px 6px -4px oklch(0% 0 0 / 0.1)'),\n xl: shadow('0 20px 25px -5px oklch(0% 0 0 / 0.1), 0 8px 10px -6px oklch(0% 0 0 / 0.1)'),\n },\n /*\n * The durations are named after the milliseconds they hold, and that is what lets a\n * component state the time it actually wants. The roles a transition reaches for (fast,\n * base, slow) are defined alongside the other roles; the values here are what those roles\n * point at, and what the long looping animations — a spinner, a skeleton's wave — name\n * directly, since \"one second\" is the whole point of such a loop and no role could say it\n * better.\n *\n * The steps above a second exist for those loops and for their slowed-down counterparts\n * under `prefers-reduced-motion`. Without them the same durations come back as arbitrary\n * multipliers on a shorter token, which is what this scale replaces.\n */\n duration: {\n '0': duration('0ms'),\n '50': duration('50ms'),\n '100': duration('100ms'),\n '150': duration('150ms'),\n '200': duration('200ms'),\n '300': duration('300ms'),\n '400': duration('400ms'),\n '500': duration('500ms'),\n '700': duration('700ms'),\n '1000': duration('1000ms'),\n '1500': duration('1500ms'),\n '2000': duration('2000ms'),\n '3000': duration('3000ms'),\n '5000': duration('5000ms'),\n },\n ease: {\n default: cubicBezier('cubic-bezier(0.2, 0, 0, 1)'),\n in: cubicBezier('cubic-bezier(0.5, 0, 1, 1)'),\n out: cubicBezier('cubic-bezier(0, 0, 0.2, 1)'),\n 'in-out': cubicBezier(\n 'cubic-bezier(0.4, 0, 0.2, 1)',\n 'Symmetric: both the start and the end are eased. Looping animations that cross the track (an indeterminate VProgressLinear).',\n ),\n },\n} satisfies TokenGroup\n"],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","names":[],"sources":["../../src/tokens/primitives.ts"],"sourcesContent":["/**\n * OKLCH primitive palettes and scales; components consume semantic roles so themes can repoint\n * them independently.\n */\nimport {\n color,\n cubicBezier,\n dimension,\n duration,\n fontFamily,\n fontWeight,\n shadow,\n type TokenGroup,\n} from './types'\n\nconst palette = (values: Record<string, string>): TokenGroup =>\n Object.fromEntries(Object.entries(values).map(([step, value]) => [step, color(value)]))\n\nexport const primitives = {\n color: {\n white: color('oklch(100% 0 0)'),\n black: color('oklch(0% 0 0)'),\n red: palette({\n '50': 'oklch(97.1% 0.013 17.38)',\n '100': 'oklch(93.6% 0.032 17.717)',\n '200': 'oklch(88.5% 0.062 18.334)',\n '300': 'oklch(80.8% 0.114 19.571)',\n '400': 'oklch(70.4% 0.191 22.216)',\n '500': 'oklch(63.7% 0.237 25.331)',\n '600': 'oklch(57.7% 0.245 27.325)',\n '700': 'oklch(50.5% 0.213 27.518)',\n '800': 'oklch(44.4% 0.177 26.899)',\n '900': 'oklch(39.6% 0.141 25.723)',\n '950': 'oklch(25.8% 0.092 26.042)',\n }),\n amber: palette({\n '50': 'oklch(98.7% 0.022 95.277)',\n '100': 'oklch(96.2% 0.059 95.617)',\n '200': 'oklch(92.4% 0.12 95.746)',\n '300': 'oklch(87.9% 0.169 91.605)',\n '400': 'oklch(82.8% 0.189 84.429)',\n '500': 'oklch(76.9% 0.188 70.08)',\n '600': 'oklch(66.6% 0.179 58.318)',\n '700': 'oklch(55.5% 0.163 48.998)',\n '800': 'oklch(47.3% 0.137 46.201)',\n '900': 'oklch(41.4% 0.112 45.904)',\n '950': 'oklch(27.9% 0.077 45.635)',\n }),\n green: palette({\n '50': 'oklch(98.2% 0.018 155.826)',\n '100': 'oklch(96.2% 0.044 156.743)',\n '200': 'oklch(92.5% 0.084 155.995)',\n '300': 'oklch(87.1% 0.15 154.449)',\n '400': 'oklch(79.2% 0.209 151.711)',\n '500': 'oklch(72.3% 0.219 149.579)',\n '600': 'oklch(62.7% 0.194 149.214)',\n '700': 'oklch(52.7% 0.154 150.069)',\n '800': 'oklch(44.8% 0.119 151.328)',\n '900': 'oklch(39.3% 0.095 152.535)',\n '950': 'oklch(26.6% 0.065 152.934)',\n }),\n indigo: palette({\n '50': 'oklch(96.2% 0.018 272.314)',\n '100': 'oklch(93% 0.034 272.788)',\n '200': 'oklch(87% 0.065 274.039)',\n '300': 'oklch(78.5% 0.115 274.713)',\n '400': 'oklch(67.3% 0.182 276.935)',\n '500': 'oklch(58.5% 0.233 277.117)',\n '600': 'oklch(51.1% 0.262 276.966)',\n '700': 'oklch(45.7% 0.24 277.023)',\n '800': 'oklch(39.8% 0.195 277.366)',\n '900': 'oklch(35.9% 0.144 278.697)',\n '950': 'oklch(25.7% 0.09 281.288)',\n }),\n gray: palette({\n '50': 'oklch(98.5% 0.002 247.839)',\n '100': 'oklch(96.7% 0.003 264.542)',\n '200': 'oklch(92.8% 0.006 264.531)',\n '300': 'oklch(87.2% 0.01 258.338)',\n '400': 'oklch(70.7% 0.022 261.325)',\n '500': 'oklch(55.1% 0.027 264.364)',\n '600': 'oklch(44.6% 0.03 256.802)',\n '700': 'oklch(37.3% 0.034 259.733)',\n '800': 'oklch(27.8% 0.033 256.848)',\n '900': 'oklch(21% 0.034 264.665)',\n '950': 'oklch(13% 0.028 261.692)',\n }),\n },\n space: {\n '1': dimension('0.25rem'),\n '2': dimension('0.5rem'),\n '3': dimension('0.75rem'),\n '4': dimension('1rem'),\n '5': dimension('1.25rem'),\n '6': dimension('1.5rem'),\n '7': dimension('2rem'),\n '8': dimension('2.5rem'),\n '9': dimension('3rem'),\n '10': dimension('4rem'),\n '11': dimension('5rem'),\n '12': dimension('6rem'),\n },\n font: {\n family: {\n sans: fontFamily(\n \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n ),\n // Display aliases sans so consumers can change headings through a single family token.\n display: fontFamily('{font.family.sans}'),\n mono: fontFamily(\n \"ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace\",\n ),\n // The consumer loads any icon font; the library supplies only its configurable family\n // token.\n icon: fontFamily(\"'Material Symbols Rounded'\"),\n },\n weight: {\n regular: fontWeight('400'),\n medium: fontWeight('500'),\n semibold: fontWeight('600'),\n bold: fontWeight('700'),\n },\n size: {\n xs: dimension('0.75rem'),\n sm: dimension('0.875rem'),\n md: dimension('1rem'),\n lg: dimension('1.125rem'),\n xl: dimension('1.25rem'),\n '2xl': dimension('1.5rem'),\n '3xl': dimension('1.875rem'),\n '4xl': dimension('2.25rem'),\n '5xl': dimension('3rem'),\n },\n leading: {\n none: dimension('1'),\n tight: dimension('1.25'),\n snug: dimension('1.4'),\n normal: dimension('1.5'),\n relaxed: dimension('1.65'),\n },\n tracking: {\n tight: dimension('-0.015em', 'Tightening for large sizes (display, the top headings)'),\n wide: dimension('0.05em', 'Letter spacing for all-caps micro labels (overline)'),\n },\n },\n radius: {\n // Zero radii need units because calc(0 - 1px) is invalid while calc(0px - 1px) is valid.\n none: dimension('0px'),\n xs: dimension('0.125rem'),\n sm: dimension('0.25rem'),\n md: dimension('0.375rem'),\n lg: dimension('0.5rem'),\n xl: dimension('0.75rem'),\n '2xl': dimension('1rem'),\n full: dimension('9999px'),\n },\n shadow: {\n xs: shadow('0 1px 2px 0 oklch(0% 0 0 / 0.05)'),\n sm: shadow('0 1px 3px 0 oklch(0% 0 0 / 0.1), 0 1px 2px -1px oklch(0% 0 0 / 0.1)'),\n md: shadow('0 4px 6px -1px oklch(0% 0 0 / 0.1), 0 2px 4px -2px oklch(0% 0 0 / 0.1)'),\n lg: shadow('0 10px 15px -3px oklch(0% 0 0 / 0.1), 0 4px 6px -4px oklch(0% 0 0 / 0.1)'),\n xl: shadow('0 20px 25px -5px oklch(0% 0 0 / 0.1), 0 8px 10px -6px oklch(0% 0 0 / 0.1)'),\n },\n /* Use explicit duration steps for long loops instead of multiplying shorter transition roles. */\n duration: {\n '0': duration('0ms'),\n '50': duration('50ms'),\n '100': duration('100ms'),\n '150': duration('150ms'),\n '200': duration('200ms'),\n '300': duration('300ms'),\n '400': duration('400ms'),\n '500': duration('500ms'),\n '700': duration('700ms'),\n '1000': duration('1000ms'),\n '1500': duration('1500ms'),\n '2000': duration('2000ms'),\n '3000': duration('3000ms'),\n '5000': duration('5000ms'),\n },\n ease: {\n default: cubicBezier('cubic-bezier(0.2, 0, 0, 1)'),\n in: cubicBezier('cubic-bezier(0.5, 0, 1, 1)'),\n out: cubicBezier('cubic-bezier(0, 0, 0.2, 1)'),\n 'in-out': cubicBezier(\n 'cubic-bezier(0.4, 0, 0.2, 1)',\n 'Symmetric: both the start and the end are eased. Looping animations that cross the track (an indeterminate VProgressLinear).',\n ),\n },\n} satisfies TokenGroup\n"],"mappings":";;AAeA,IAAM,KAAW,MACf,OAAO,YAAY,OAAO,QAAQ,CAAM,CAAC,CAAC,KAAK,CAAC,GAAM,OAAW,CAAC,GAAM,EAAM,CAAK,CAAC,CAAC,CAAC,GAE3E,IAAa;CACxB,OAAO;EACL,OAAO,EAAM,iBAAiB;EAC9B,OAAO,EAAM,eAAe;EAC5B,KAAK,EAAQ;GACX,IAAM;GACN,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;EACT,CAAC;EACD,OAAO,EAAQ;GACb,IAAM;GACN,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;EACT,CAAC;EACD,OAAO,EAAQ;GACb,IAAM;GACN,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;EACT,CAAC;EACD,QAAQ,EAAQ;GACd,IAAM;GACN,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;EACT,CAAC;EACD,MAAM,EAAQ;GACZ,IAAM;GACN,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;GACP,KAAO;EACT,CAAC;CACH;CACA,OAAO;EACL,GAAK,EAAU,SAAS;EACxB,GAAK,EAAU,QAAQ;EACvB,GAAK,EAAU,SAAS;EACxB,GAAK,EAAU,MAAM;EACrB,GAAK,EAAU,SAAS;EACxB,GAAK,EAAU,QAAQ;EACvB,GAAK,EAAU,MAAM;EACrB,GAAK,EAAU,QAAQ;EACvB,GAAK,EAAU,MAAM;EACrB,IAAM,EAAU,MAAM;EACtB,IAAM,EAAU,MAAM;EACtB,IAAM,EAAU,MAAM;CACxB;CACA,MAAM;EACJ,QAAQ;GACN,MAAM,EACJ,mFACF;GAEA,SAAS,EAAW,oBAAoB;GACxC,MAAM,EACJ,8EACF;GAGA,MAAM,EAAW,4BAA4B;EAC/C;EACA,QAAQ;GACN,SAAS,EAAW,KAAK;GACzB,QAAQ,EAAW,KAAK;GACxB,UAAU,EAAW,KAAK;GAC1B,MAAM,EAAW,KAAK;EACxB;EACA,MAAM;GACJ,IAAI,EAAU,SAAS;GACvB,IAAI,EAAU,UAAU;GACxB,IAAI,EAAU,MAAM;GACpB,IAAI,EAAU,UAAU;GACxB,IAAI,EAAU,SAAS;GACvB,OAAO,EAAU,QAAQ;GACzB,OAAO,EAAU,UAAU;GAC3B,OAAO,EAAU,SAAS;GAC1B,OAAO,EAAU,MAAM;EACzB;EACA,SAAS;GACP,MAAM,EAAU,GAAG;GACnB,OAAO,EAAU,MAAM;GACvB,MAAM,EAAU,KAAK;GACrB,QAAQ,EAAU,KAAK;GACvB,SAAS,EAAU,MAAM;EAC3B;EACA,UAAU;GACR,OAAO,EAAU,YAAY,wDAAwD;GACrF,MAAM,EAAU,UAAU,qDAAqD;EACjF;CACF;CACA,QAAQ;EAEN,MAAM,EAAU,KAAK;EACrB,IAAI,EAAU,UAAU;EACxB,IAAI,EAAU,SAAS;EACvB,IAAI,EAAU,UAAU;EACxB,IAAI,EAAU,QAAQ;EACtB,IAAI,EAAU,SAAS;EACvB,OAAO,EAAU,MAAM;EACvB,MAAM,EAAU,QAAQ;CAC1B;CACA,QAAQ;EACN,IAAI,EAAO,kCAAkC;EAC7C,IAAI,EAAO,qEAAqE;EAChF,IAAI,EAAO,wEAAwE;EACnF,IAAI,EAAO,0EAA0E;EACrF,IAAI,EAAO,2EAA2E;CACxF;CAEA,UAAU;EACR,GAAK,EAAS,KAAK;EACnB,IAAM,EAAS,MAAM;EACrB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAO,EAAS,OAAO;EACvB,KAAQ,EAAS,QAAQ;EACzB,MAAQ,EAAS,QAAQ;EACzB,KAAQ,EAAS,QAAQ;EACzB,KAAQ,EAAS,QAAQ;EACzB,KAAQ,EAAS,QAAQ;CAC3B;CACA,MAAM;EACJ,SAAS,EAAY,4BAA4B;EACjD,IAAI,EAAY,4BAA4B;EAC5C,KAAK,EAAY,4BAA4B;EAC7C,UAAU,EACR,gCACA,8HACF;CACF;AACF"}
@@ -44,15 +44,6 @@ export declare const semantic: {
44
44
  'event-border': import('./types.js').DesignToken;
45
45
  'event-text': import('./types.js').DesignToken;
46
46
  };
47
- /**
48
- * The typography, described by role rather than by measurement: a heading, a subtitle,
49
- * a caption, a piece of code.
50
- *
51
- * Each role is a COMPLETE recipe — a size, a weight, the space between lines, and where
52
- * it matters the space between letters. Asking for a role therefore settles every one of
53
- * those at once, and two pieces of text in the same role cannot drift apart. It is what
54
- * the typography component renders, and what the components' own stylesheets ask for.
55
- */
56
47
  text: {
57
48
  family: import('./types.js').DesignToken;
58
49
  'family-heading': import('./types.js').DesignToken;
@@ -90,13 +81,6 @@ export declare const semantic: {
90
81
  weight: import('./types.js').DesignToken;
91
82
  leading: import('./types.js').DesignToken;
92
83
  };
93
- /**
94
- * The introduction that opens a page or a section, one step above the running text.
95
- *
96
- * It shares `body-lg`'s generous leading rather than taking a tighter one: a lead is read
97
- * as prose, not as a heading, and the two therefore sit in the same column without the
98
- * rhythm changing under the reader between the first paragraph and the second.
99
- */
100
84
  'body-xl': {
101
85
  size: import('./types.js').DesignToken;
102
86
  weight: import('./types.js').DesignToken;
@@ -122,6 +106,11 @@ export declare const semantic: {
122
106
  weight: import('./types.js').DesignToken;
123
107
  leading: import('./types.js').DesignToken;
124
108
  };
109
+ choice: {
110
+ size: import('./types.js').DesignToken;
111
+ weight: import('./types.js').DesignToken;
112
+ leading: import('./types.js').DesignToken;
113
+ };
125
114
  caption: {
126
115
  size: import('./types.js').DesignToken;
127
116
  weight: import('./types.js').DesignToken;
@@ -150,13 +139,7 @@ export declare const semantic: {
150
139
  pill: import('./types.js').DesignToken;
151
140
  chip: import('./types.js').DesignToken;
152
141
  };
153
- /**
154
- * How long a change takes, described by what it is: the immediate feedback of a control
155
- * under the pointer, the ordinary pace of the design system, a deliberately slower move.
156
- *
157
- * These three are what a `transition` reaches for. Motion does not vary from one theme to
158
- * the next, so unlike the colours they are stated once and never restated.
159
- */
142
+ /** Semantic transition durations are theme-independent. */
160
143
  duration: {
161
144
  fast: import('./types.js').DesignToken;
162
145
  base: import('./types.js').DesignToken;
@@ -108,6 +108,11 @@ var a = {
108
108
  weight: i("{font.weight.medium}"),
109
109
  leading: t("{font.leading.snug}")
110
110
  },
111
+ choice: {
112
+ size: t("{font.size.sm}"),
113
+ weight: i("{font.weight.regular}"),
114
+ leading: t("{font.leading.snug}")
115
+ },
111
116
  caption: {
112
117
  size: t("{font.size.xs}"),
113
118
  weight: i("{font.weight.regular}"),