@eos-ui/vue 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/THIRD_PARTY.md +1 -1
  2. package/dist/component-names.js +1 -1
  3. package/dist/component-names.js.map +1 -1
  4. package/dist/components/Actions/EActions.js.map +1 -1
  5. package/dist/components/Actions/EActions.vue.d.ts +3 -1
  6. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js +12 -3
  7. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/AppHeader/EAppHeader.js.map +1 -1
  9. package/dist/components/AppHeader/EAppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/AppShell/EAppShell.js.map +1 -1
  11. package/dist/components/AppShell/EAppShell.vue.d.ts +2 -2
  12. package/dist/components/AppShell/EAppShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/Avatar/EAvatar.js.map +1 -1
  14. package/dist/components/Avatar/EAvatar.vue.d.ts +4 -4
  15. package/dist/components/Avatar/EAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/components/Breadcrumb/EBreadcrumb.js.map +1 -1
  17. package/dist/components/Breadcrumb/EBreadcrumb.vue.d.ts +2 -2
  18. package/dist/components/Breadcrumb/EBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/Button/EButton.js.map +1 -1
  20. package/dist/components/Button/EButton.vue.d.ts +5 -3
  21. package/dist/components/Button/EButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/Calendar/ECalendar.js.map +1 -1
  23. package/dist/components/Calendar/ECalendar.vue.d.ts +12 -9
  24. package/dist/components/Calendar/ECalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/Checkbox/ECheckbox.js.map +1 -1
  26. package/dist/components/Checkbox/ECheckbox.vue.d.ts +6 -3
  27. package/dist/components/Checkbox/ECheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/CodeBlock/ECodeBlock.js.map +1 -1
  29. package/dist/components/CodeBlock/ECodeBlock.vue.d.ts +2 -2
  30. package/dist/components/CodeBlock/ECodeBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/ColorField/EColorField.js.map +1 -1
  32. package/dist/components/ColorField/EColorField.vue.d.ts +5 -3
  33. package/dist/components/ColorField/EColorField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  34. package/dist/components/Combobox/ECombobox.js.map +1 -1
  35. package/dist/components/Combobox/ECombobox.vue.d.ts +7 -5
  36. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js +3 -2
  37. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/Combobox/EComboboxBase.js.map +1 -1
  39. package/dist/components/Combobox/EComboboxBase.vue.d.ts +6 -14
  40. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js +9 -8
  41. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/Combobox/EComboboxOption.js.map +1 -1
  43. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js +1 -1
  44. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/Combobox/{EHighlight.js → matchHighlight.js} +3 -3
  46. package/dist/components/Combobox/matchHighlight.js.map +1 -0
  47. package/dist/components/Combobox/types.d.ts +13 -8
  48. package/dist/components/CurrencyField/ECurrencyField.js.map +1 -1
  49. package/dist/components/CurrencyField/ECurrencyField.vue.d.ts +8 -6
  50. package/dist/components/CurrencyField/ECurrencyField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/DataGrid/EDataGrid.js.map +1 -1
  52. package/dist/components/DataGrid/EDataGrid.vue.d.ts +20 -15
  53. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js +213 -213
  54. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/DatePicker/EDatePicker.js.map +1 -1
  56. package/dist/components/DatePicker/EDatePicker.vue.d.ts +9 -6
  57. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js +10 -10
  58. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/components/Definition/EDefinition.js +8 -0
  60. package/dist/components/Definition/EDefinition.js.map +1 -0
  61. package/dist/components/{Popover/EPopover.vue.d.ts → Definition/EDefinition.vue.d.ts} +2 -1
  62. package/dist/components/{Popover/EPopover.vue_vue_type_script_setup_true_lang.js → Definition/EDefinition.vue_vue_type_script_setup_true_lang.js} +4 -4
  63. package/dist/components/Definition/EDefinition.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/components/Definition/index.d.ts +1 -0
  65. package/dist/components/DescriptionList/EDescriptionList.js.map +1 -1
  66. package/dist/components/DescriptionList/EDescriptionList.vue.d.ts +32 -5
  67. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js +70 -8
  68. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/Dialog/DialogFrame.js.map +1 -1
  70. package/dist/components/Dialog/DialogFrame.vue.d.ts +1 -0
  71. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js +19 -18
  72. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/Dialog/EDialog.js.map +1 -1
  74. package/dist/components/Dialog/EDialog.vue.d.ts +4 -1
  75. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js +3 -0
  76. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/Disclosure/EDisclosure.js.map +1 -1
  78. package/dist/components/Disclosure/EDisclosure.vue.d.ts +6 -9
  79. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js +14 -19
  80. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/Drawer/EDrawer.js.map +1 -1
  82. package/dist/components/Drawer/EDrawer.vue.d.ts +4 -1
  83. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js +3 -0
  84. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/components/EmptyState/EEmptyState.js.map +1 -1
  86. package/dist/components/EmptyState/EEmptyState.vue.d.ts +1 -1
  87. package/dist/components/EmptyState/EEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/ExpandableRow/EExpandableRow.js +8 -0
  89. package/dist/components/ExpandableRow/EExpandableRow.js.map +1 -0
  90. package/dist/components/{ButtonGroup/EButtonGroup.vue.d.ts → ExpandableRow/EExpandableRow.vue.d.ts} +12 -4
  91. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js +40 -0
  92. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  93. package/dist/components/ExpandableRow/index.d.ts +1 -0
  94. package/dist/components/Field/EField.js.map +1 -1
  95. package/dist/components/Field/EField.vue.d.ts +1 -1
  96. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js +4 -4
  97. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/Field/labelProps.d.ts +2 -2
  99. package/dist/components/Fieldset/EFieldset.js.map +1 -1
  100. package/dist/components/Fieldset/EFieldset.vue.d.ts +5 -3
  101. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js +54 -35
  102. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -1
  103. package/dist/components/Grid/EGrid.js.map +1 -1
  104. package/dist/components/Grid/EGrid.vue.d.ts +5 -2
  105. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js +15 -11
  106. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/Heading/EHeading.js.map +1 -1
  108. package/dist/components/Heading/EHeading.vue.d.ts +1 -1
  109. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js +10 -10
  110. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/Highlight/EHighlight.js.map +1 -1
  112. package/dist/components/Highlight/EHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -1
  113. package/dist/components/IconButton/EIconButton.js.map +1 -1
  114. package/dist/components/IconButton/EIconButton.vue.d.ts +1 -0
  115. package/dist/components/IconButton/EIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/Inline/EInline.js.map +1 -1
  117. package/dist/components/Inline/EInline.vue.d.ts +3 -3
  118. package/dist/components/Inline/EInline.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/components/Kbd/EKbd.js.map +1 -1
  120. package/dist/components/Kbd/EKbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/Link/ELink.js.map +1 -1
  122. package/dist/components/Link/ELink.vue.d.ts +2 -2
  123. package/dist/components/Link/ELink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/Menu/EMenu.js.map +1 -1
  125. package/dist/components/Menu/EMenu.vue.d.ts +4 -3
  126. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/NavList/ENavList.js.map +1 -1
  129. package/dist/components/NavList/ENavList.vue.d.ts +7 -9
  130. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js +2 -3
  131. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/{Tabs → NavList}/LinkNav.js +1 -1
  133. package/dist/components/NavList/LinkNav.js.map +1 -0
  134. package/dist/components/{Tabs → NavList}/LinkNav.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/components/NavList/LinkNav.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/components/Notice/ENotice.js.map +1 -1
  137. package/dist/components/Notice/ENotice.vue.d.ts +2 -2
  138. package/dist/components/Notice/ENotice.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/NumberField/ENumberField.js.map +1 -1
  140. package/dist/components/NumberField/ENumberField.vue.d.ts +5 -3
  141. package/dist/components/NumberField/ENumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/OtpField/EOtpField.js.map +1 -1
  143. package/dist/components/OtpField/EOtpField.vue.d.ts +10 -8
  144. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js +2 -2
  145. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/PageHeader/EPageHeader.js.map +1 -1
  147. package/dist/components/PageHeader/EPageHeader.vue.d.ts +1 -1
  148. package/dist/components/PageHeader/EPageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/Pagination/EPagination.js.map +1 -1
  150. package/dist/components/Pagination/EPagination.vue.d.ts +1 -0
  151. package/dist/components/Pagination/EPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/PasswordField/EPasswordField.js.map +1 -1
  153. package/dist/components/PasswordField/EPasswordField.vue.d.ts +14 -10
  154. package/dist/components/PasswordField/EPasswordField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/PhoneField/EPhoneField.js.map +1 -1
  156. package/dist/components/PhoneField/EPhoneField.vue.d.ts +6 -4
  157. package/dist/components/PhoneField/EPhoneField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/Progress/EProgress.js.map +1 -1
  159. package/dist/components/Progress/EProgress.vue.d.ts +5 -5
  160. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js +20 -14
  161. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/RadioGroup/ERadioGroup.js.map +1 -1
  163. package/dist/components/RadioGroup/ERadioGroup.vue.d.ts +8 -4
  164. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  165. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/RangePicker/ERangePicker.js.map +1 -1
  167. package/dist/components/RangePicker/ERangePicker.vue.d.ts +12 -8
  168. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js +65 -65
  169. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/SearchBar/ESearchBar.js.map +1 -1
  171. package/dist/components/SearchBar/ESearchBar.vue.d.ts +8 -7
  172. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js +1 -1
  173. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/SearchResults/ESearchResults.js.map +1 -1
  175. package/dist/components/SearchResults/ESearchResults.vue.d.ts +3 -3
  176. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js +1 -1
  177. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js.map +1 -1
  178. package/dist/components/Segmented/ESegmented.js.map +1 -1
  179. package/dist/components/Segmented/ESegmented.vue.d.ts +10 -6
  180. package/dist/components/Segmented/ESegmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/Select/ESelect.js.map +1 -1
  182. package/dist/components/Select/ESelect.vue.d.ts +9 -6
  183. package/dist/components/Select/ESelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/components/Select/ESelectControl.js.map +1 -1
  185. package/dist/components/Select/ESelectControl.vue.d.ts +2 -2
  186. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js +6 -6
  187. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  188. package/dist/components/Select/options.d.ts +1 -1
  189. package/dist/components/Select/options.js.map +1 -1
  190. package/dist/components/SignatureField/ESignatureField.js.map +1 -1
  191. package/dist/components/SignatureField/ESignatureField.vue.d.ts +14 -10
  192. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js +4 -4
  193. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/SignaturePad/ESignaturePad.js.map +1 -1
  195. package/dist/components/SignaturePad/ESignaturePad.vue.d.ts +3 -1
  196. package/dist/components/SignaturePad/ESignaturePad.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/components/Skeleton/ESkeleton.js.map +1 -1
  198. package/dist/components/Skeleton/ESkeleton.vue.d.ts +3 -3
  199. package/dist/components/Skeleton/ESkeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  200. package/dist/components/Stack/EStack.js.map +1 -1
  201. package/dist/components/Stack/EStack.vue.d.ts +2 -2
  202. package/dist/components/Stack/EStack.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/Stamp/EStamp.js.map +1 -1
  204. package/dist/components/Stamp/EStamp.vue.d.ts +18 -12
  205. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js +27 -40
  206. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components/Stepper/EStepper.js.map +1 -1
  208. package/dist/components/Stepper/EStepper.vue.d.ts +2 -2
  209. package/dist/components/Stepper/EStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/components/Surface/ESurface.js.map +1 -1
  211. package/dist/components/Surface/ESurface.vue.d.ts +5 -5
  212. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js +5 -5
  213. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/Switch/ESwitch.js.map +1 -1
  215. package/dist/components/Switch/ESwitch.vue.d.ts +3 -1
  216. package/dist/components/Switch/ESwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/components/Tabs/ETabs.js.map +1 -1
  218. package/dist/components/Tabs/ETabs.vue.d.ts +10 -32
  219. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js +21 -50
  220. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/components/Tabs/index.d.ts +1 -1
  222. package/dist/components/Text/EText.js.map +1 -1
  223. package/dist/components/Text/EText.vue.d.ts +4 -3
  224. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js +7 -2
  225. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/TextField/ETextField.js.map +1 -1
  227. package/dist/components/TextField/ETextField.vue.d.ts +8 -6
  228. package/dist/components/TextField/ETextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/Textarea/ETextarea.js.map +1 -1
  230. package/dist/components/Textarea/ETextarea.vue.d.ts +4 -2
  231. package/dist/components/Textarea/ETextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/Toast/EToast.js.map +1 -1
  233. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js +5 -5
  234. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/ToastProvider/EToastProvider.js.map +1 -1
  236. package/dist/components/ToastProvider/EToastProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/Tooltip/ETooltip.js.map +1 -1
  238. package/dist/components/Tooltip/ETooltip.vue.d.ts +1 -0
  239. package/dist/components/Tooltip/ETooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/Upload/EUpload.js.map +1 -1
  241. package/dist/components/Upload/EUpload.vue.d.ts +5 -3
  242. package/dist/components/Upload/EUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  243. package/dist/fonts.css +1 -1
  244. package/dist/index.d.ts +2 -25
  245. package/dist/index.js +71 -94
  246. package/dist/messages.d.ts +0 -13
  247. package/dist/messages.js +0 -13
  248. package/dist/messages.js.map +1 -1
  249. package/dist/style.css +2655 -3121
  250. package/package.json +4 -2
  251. package/dist/components/Accordion/EAccordion.js +0 -8
  252. package/dist/components/Accordion/EAccordion.js.map +0 -1
  253. package/dist/components/Accordion/EAccordion.vue.d.ts +0 -32
  254. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js +0 -35
  255. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  256. package/dist/components/Accordion/index.d.ts +0 -2
  257. package/dist/components/AddressField/EAddressField.js +0 -8
  258. package/dist/components/AddressField/EAddressField.js.map +0 -1
  259. package/dist/components/AddressField/EAddressField.vue.d.ts +0 -39
  260. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js +0 -119
  261. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  262. package/dist/components/AddressField/index.d.ts +0 -2
  263. package/dist/components/AddressField/usStates.d.ts +0 -5
  264. package/dist/components/AddressField/usStates.js +0 -211
  265. package/dist/components/AddressField/usStates.js.map +0 -1
  266. package/dist/components/Amount/EAmount.js +0 -8
  267. package/dist/components/Amount/EAmount.js.map +0 -1
  268. package/dist/components/Amount/EAmount.vue.d.ts +0 -21
  269. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js +0 -38
  270. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js.map +0 -1
  271. package/dist/components/Amount/index.d.ts +0 -2
  272. package/dist/components/Autocomplete/EAutocomplete.js +0 -7
  273. package/dist/components/Autocomplete/EAutocomplete.js.map +0 -1
  274. package/dist/components/Autocomplete/EAutocomplete.vue.d.ts +0 -44
  275. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js +0 -58
  276. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  277. package/dist/components/Autocomplete/index.d.ts +0 -1
  278. package/dist/components/BackLink/EBackLink.js +0 -8
  279. package/dist/components/BackLink/EBackLink.js.map +0 -1
  280. package/dist/components/BackLink/EBackLink.vue.d.ts +0 -23
  281. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js +0 -27
  282. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js.map +0 -1
  283. package/dist/components/BackLink/index.d.ts +0 -1
  284. package/dist/components/BookingCard/EBookingCard.js +0 -8
  285. package/dist/components/BookingCard/EBookingCard.js.map +0 -1
  286. package/dist/components/BookingCard/EBookingCard.vue.d.ts +0 -46
  287. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js +0 -86
  288. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  289. package/dist/components/BookingCard/index.d.ts +0 -2
  290. package/dist/components/ButtonGroup/EButtonGroup.js +0 -8
  291. package/dist/components/ButtonGroup/EButtonGroup.js.map +0 -1
  292. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js +0 -18
  293. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  294. package/dist/components/ButtonGroup/index.d.ts +0 -1
  295. package/dist/components/CardField/ECardField.js +0 -8
  296. package/dist/components/CardField/ECardField.js.map +0 -1
  297. package/dist/components/CardField/ECardField.vue.d.ts +0 -31
  298. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js +0 -65
  299. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  300. package/dist/components/CardField/index.d.ts +0 -1
  301. package/dist/components/Chip/EChip.js +0 -8
  302. package/dist/components/Chip/EChip.js.map +0 -1
  303. package/dist/components/Chip/EChip.vue.d.ts +0 -22
  304. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js +0 -18
  305. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  306. package/dist/components/Chip/index.d.ts +0 -2
  307. package/dist/components/Combobox/EHighlight.js.map +0 -1
  308. package/dist/components/DetailRow/EDetailRow.js +0 -8
  309. package/dist/components/DetailRow/EDetailRow.js.map +0 -1
  310. package/dist/components/DetailRow/EDetailRow.vue.d.ts +0 -30
  311. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js +0 -53
  312. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  313. package/dist/components/DetailRow/index.d.ts +0 -1
  314. package/dist/components/ErrorSummary/EErrorSummary.js +0 -8
  315. package/dist/components/ErrorSummary/EErrorSummary.js.map +0 -1
  316. package/dist/components/ErrorSummary/EErrorSummary.vue.d.ts +0 -30
  317. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js +0 -52
  318. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js.map +0 -1
  319. package/dist/components/ErrorSummary/index.d.ts +0 -2
  320. package/dist/components/FormSection/EFormSection.js +0 -8
  321. package/dist/components/FormSection/EFormSection.js.map +0 -1
  322. package/dist/components/FormSection/EFormSection.vue.d.ts +0 -28
  323. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js +0 -38
  324. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  325. package/dist/components/FormSection/index.d.ts +0 -1
  326. package/dist/components/ItemList/EItemList.js +0 -8
  327. package/dist/components/ItemList/EItemList.js.map +0 -1
  328. package/dist/components/ItemList/EItemList.vue.d.ts +0 -13
  329. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js +0 -17
  330. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  331. package/dist/components/ItemList/context.d.ts +0 -3
  332. package/dist/components/ItemList/context.js +0 -6
  333. package/dist/components/ItemList/context.js.map +0 -1
  334. package/dist/components/ItemList/index.d.ts +0 -1
  335. package/dist/components/ItemRow/EItemRow.js +0 -8
  336. package/dist/components/ItemRow/EItemRow.js.map +0 -1
  337. package/dist/components/ItemRow/EItemRow.vue.d.ts +0 -29
  338. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js +0 -54
  339. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  340. package/dist/components/ItemRow/index.d.ts +0 -1
  341. package/dist/components/LinkCard/ELinkCard.js +0 -8
  342. package/dist/components/LinkCard/ELinkCard.js.map +0 -1
  343. package/dist/components/LinkCard/ELinkCard.vue.d.ts +0 -39
  344. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js +0 -61
  345. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  346. package/dist/components/LinkCard/index.d.ts +0 -1
  347. package/dist/components/LoadingBar/ELoadingBar.js +0 -8
  348. package/dist/components/LoadingBar/ELoadingBar.js.map +0 -1
  349. package/dist/components/LoadingBar/ELoadingBar.vue.d.ts +0 -7
  350. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js +0 -21
  351. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  352. package/dist/components/LoadingBar/index.d.ts +0 -1
  353. package/dist/components/MetaList/EMetaList.js +0 -8
  354. package/dist/components/MetaList/EMetaList.js.map +0 -1
  355. package/dist/components/MetaList/EMetaList.vue.d.ts +0 -15
  356. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js +0 -19
  357. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  358. package/dist/components/MetaList/index.d.ts +0 -2
  359. package/dist/components/MultiSelect/EMultiSelect.js +0 -7
  360. package/dist/components/MultiSelect/EMultiSelect.js.map +0 -1
  361. package/dist/components/MultiSelect/EMultiSelect.vue.d.ts +0 -44
  362. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js +0 -58
  363. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js.map +0 -1
  364. package/dist/components/MultiSelect/index.d.ts +0 -1
  365. package/dist/components/Panel/EPanel.js +0 -8
  366. package/dist/components/Panel/EPanel.js.map +0 -1
  367. package/dist/components/Panel/EPanel.vue.d.ts +0 -25
  368. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js +0 -38
  369. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  370. package/dist/components/Panel/index.d.ts +0 -1
  371. package/dist/components/Popover/EPopover.js +0 -8
  372. package/dist/components/Popover/EPopover.js.map +0 -1
  373. package/dist/components/Popover/EPopover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  374. package/dist/components/Popover/index.d.ts +0 -1
  375. package/dist/components/SlotPicker/ESlotPicker.js +0 -8
  376. package/dist/components/SlotPicker/ESlotPicker.js.map +0 -1
  377. package/dist/components/SlotPicker/ESlotPicker.vue.d.ts +0 -55
  378. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js +0 -82
  379. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  380. package/dist/components/SlotPicker/index.d.ts +0 -2
  381. package/dist/components/StatementCard/EStatementCard.js +0 -8
  382. package/dist/components/StatementCard/EStatementCard.js.map +0 -1
  383. package/dist/components/StatementCard/EStatementCard.vue.d.ts +0 -20
  384. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js +0 -96
  385. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  386. package/dist/components/StatementCard/index.d.ts +0 -2
  387. package/dist/components/StatementCard/types.d.ts +0 -37
  388. package/dist/components/StatementRow/EStatementRow.js +0 -8
  389. package/dist/components/StatementRow/EStatementRow.js.map +0 -1
  390. package/dist/components/StatementRow/EStatementRow.vue.d.ts +0 -14
  391. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js +0 -96
  392. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  393. package/dist/components/StatementRow/index.d.ts +0 -1
  394. package/dist/components/Tabs/LinkNav.js.map +0 -1
  395. package/dist/components/Tabs/LinkNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  396. package/dist/components/Timeline/ETimeline.js +0 -8
  397. package/dist/components/Timeline/ETimeline.js.map +0 -1
  398. package/dist/components/Timeline/ETimeline.vue.d.ts +0 -15
  399. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js +0 -43
  400. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  401. package/dist/components/Timeline/index.d.ts +0 -2
  402. package/dist/components/Toggle/EToggle.js +0 -8
  403. package/dist/components/Toggle/EToggle.js.map +0 -1
  404. package/dist/components/Toggle/EToggle.vue.d.ts +0 -27
  405. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js +0 -40
  406. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js.map +0 -1
  407. package/dist/components/Toggle/index.d.ts +0 -1
  408. /package/dist/components/Combobox/{EHighlight.d.ts → matchHighlight.d.ts} +0 -0
  409. /package/dist/components/{Tabs → NavList}/LinkNav.vue.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"EFieldset.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode","_createVNode","EFieldFlag","_Fragment","_renderSlot","EFieldMessage","EFieldFlag_default","EFieldMessage_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","EFieldset_vue_vue_type_script_setup_true_lang_default","props","__props","id","useUid","hintId","computed","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","createCommentVNode","createVNode","Fragment","renderSlot","_ctx"],"sources":["../../../src/components/Fieldset/EFieldset.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EFieldFlag from \"../Field/EFieldFlag.vue\";\nimport EFieldMessage from \"../Field/EFieldMessage.vue\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The question the controls answer. Names the group for screen readers. */\n legend?: string;\n /** No box: the legend becomes a small mono label above the controls (RadioGroup, SlotPicker). */\n bare?: boolean;\n /** Help that is announced with the group. */\n hint?: string;\n /** What to fix. Replaces the hint and is announced with the group. */\n error?: string;\n /** A word at the end of the legend. */\n required?: boolean;\n /** A word at the end of the legend. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables every control inside. */\n disabled?: boolean;\n /** Extra classes for the legend. */\n legendClass?: string;\n /** Keep the legend for screen readers and remove it from the page. */\n hideLegend?: boolean;\n /** The id the hint and error ids are built from. Generated when left out. */\n id?: string;\n}>();\n\ndefineSlots<{\n /** The controls. */\n default(): unknown;\n}>();\n\nconst id = useUid(() => props.id);\nconst hintId = computed(() => `${id.value}-hint`);\n</script>\n\n<template>\n <fieldset\n class=\"e-fieldset\"\n :class=\"{ 'e-fieldset--box': !bare }\"\n :disabled=\"disabled\"\n :aria-describedby=\"error || hint ? hintId : undefined\"\n :aria-invalid=\"error ? 'true' : undefined\"\n >\n <legend\n v-if=\"legend\"\n class=\"e-fieldset-legend\"\n :class=\"[bare && 'e-kicker', hideLegend && 'e-fieldset-legend--hidden', legendClass]\"\n >\n <span class=\"e-fieldset-title\">{{ legend }}</span>\n <span v-if=\"!bare\" class=\"e-fieldset-rule\" aria-hidden=\"true\" />\n <EFieldFlag :required=\"required\" :optional=\"optional\" />\n </legend>\n <template v-if=\"bare\">\n <slot />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n </template>\n <div v-else class=\"e-fieldset-body\">\n <slot />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n </div>\n </fieldset>\n</template>\n\n<style>\n@layer e.controls {\n .e-fieldset {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-fieldset-legend {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n width: 100%;\n padding: 0;\n }\n\n .e-fieldset-legend--hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n }\n\n .e-fieldset:not(.e-fieldset--box) > .e-fieldset-legend {\n float: inline-start;\n margin-bottom: var(--e-space-2);\n }\n\n .e-fieldset:not(.e-fieldset--box) > .e-fieldset-legend + * {\n clear: both;\n }\n\n .e-fieldset--box {\n padding: 0 var(--e-space-4) var(--e-space-4);\n border: var(--e-stroke-hair) solid var(--e-border);\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n }\n\n .e-fieldset--box > .e-fieldset-legend {\n align-items: center;\n gap: 0;\n font: 500 var(--e-text-md)/1.3 var(--e-font-sans);\n letter-spacing: 0;\n text-transform: none;\n color: var(--e-ink);\n }\n\n .e-fieldset--box .e-fieldset-title,\n .e-fieldset--box .e-field-flag {\n padding-inline: var(--e-space-3);\n }\n\n .e-fieldset-rule {\n flex: 1;\n min-width: var(--e-space-4);\n border-top: var(--e-stroke-hair) solid var(--e-border);\n }\n\n .e-fieldset-body {\n display: grid;\n gap: var(--e-space-4);\n padding-top: var(--e-space-1);\n }\n\n .e-fieldset:not(.e-slots) > .e-field-hint,\n .e-fieldset:not(.e-slots) > .e-field-error {\n margin-top: -6px;\n }\n\n .e-fieldset-body > .e-field-hint,\n .e-fieldset-body > .e-field-error {\n margin-top: calc(var(--e-space-4) * -1 + var(--e-space-2));\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,IAAMkB,IAAQC,GA4BRC,IAAKC,QAAaH,EAAM,EAAE,GAC1BI,IAASC,QAAe,GAAGH,EAAG,MAAM,MAAM;E,kBAI9CpB,EAAA,GAAAC,EAwBW,YAAA;GAvBT,OAAKC,EAAA,CAAC,cAAY,EAAA,mBAAA,CACYiB,EAAA,KAAI,CAAA,CAAA;GACjC,UAAUA,EAAA;GACV,oBAAkBA,EAAA,SAASA,EAAA,OAAOG,EAAA,QAAS,KAAA;GAC3C,gBAAcH,EAAA,QAAK,SAAY,KAAA;E,IAGxBA,EAAA,UADRnB,EAAA,GAAAC,EAQS,UAAA;;GANP,OAAKC,EAAA,CAAC,qBAAmB;IAChBiB,EAAA,QAAI;IAAgBA,EAAA,cAAU;IAAiCA,EAAA;GAAW,CAAA,CAAA;;GAEnFhB,EAAkD,QAAlDW,GAAkDV,EAAhBe,EAAA,MAAM,GAAA,CAAA;GAC3BA,EAAA,O,aAAbnB,EAAA,GAAAC,EAAgE,QAAhEc,CAAgE;GAChET,EAAwDC,GAAA;IAA3C,UAAUY,EAAA;IAAW,UAAUA,EAAA;;E,oBAE9BA,EAAA,QAAhBnB,EAAA,GAAAC,EAGWO,GAAA,EAAA,KAAA,EAAA,GAAA,CAFTC,EAAQwB,EAAA,QAAA,SAAA,GACR3B,EAA0DI,GAAA;GAA1C,IAAIY,EAAA;GAAS,OAAOH,EAAA;GAAQ,MAAMA,EAAA;;;;;E,aAEpDnB,EAAA,GAAAC,EAGM,OAHNe,GAGM,CAFJP,EAAQwB,EAAA,QAAA,SAAA,GACR3B,EAA0DI,GAAA;GAA1C,IAAIY,EAAA;GAAS,OAAOH,EAAA;GAAQ,MAAMA,EAAA"}
1
+ {"version":3,"file":"EFieldset.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode","_createVNode","EFieldFlag","_createBlock","EFieldMessage","_renderSlot","_Fragment","EFieldMessage_default","EFieldFlag_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EFieldset_vue_vue_type_script_setup_true_lang_default","props","__props","id","useUid","hintId","computed","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","createCommentVNode","createVNode","createBlock","renderSlot","_ctx","Fragment"],"sources":["../../../src/components/Fieldset/EFieldset.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EFieldFlag from \"../Field/EFieldFlag.vue\";\nimport EFieldMessage from \"../Field/EFieldMessage.vue\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The question the controls answer. Names the group for screen readers. */\n legend?: string;\n /** No box: the legend becomes a small mono label above the controls (RadioGroup). */\n bare?: boolean;\n /** Help that is announced with the group. */\n hint?: string;\n /** What to fix. Replaces the hint and is announced with the group. */\n error?: string;\n /** \"Required\" at the end of the legend. */\n required?: boolean;\n /** A word at the end of the legend. Flag whichever is rarer. */\n optional?: boolean;\n /** A titled form section: no box, a larger legend ruled off from what comes before, and the hint under the legend. Replaces `EFormSection`. */\n section?: boolean;\n /** Disables every control inside. */\n disabled?: boolean;\n /** Extra classes for the legend. */\n legendClass?: string;\n /** Keep the legend for screen readers and remove it from the page. */\n hideLegend?: boolean;\n /** The id the hint and error ids are built from. @default generated */\n id?: string;\n}>();\n\ndefineSlots<{\n /** The controls. */\n default(): unknown;\n}>();\n\nconst id = useUid(() => props.id);\nconst hintId = computed(() => `${id.value}-hint`);\n</script>\n\n<template>\n <fieldset\n class=\"e-fieldset\"\n :class=\"{ 'e-fieldset--box': !bare && !section, 'e-fieldset--section': section }\"\n :disabled=\"disabled\"\n :aria-describedby=\"error || hint ? hintId : undefined\"\n :aria-invalid=\"error ? 'true' : undefined\"\n >\n <legend\n v-if=\"legend\"\n class=\"e-fieldset-legend\"\n :class=\"[bare && 'e-kicker', hideLegend && 'e-fieldset-legend--hidden', legendClass]\"\n >\n <span class=\"e-fieldset-title\">{{ legend }}</span>\n <span v-if=\"!bare && !section\" class=\"e-fieldset-rule\" aria-hidden=\"true\" />\n <EFieldFlag :required=\"required\" :optional=\"optional\" />\n </legend>\n <div v-if=\"section\" class=\"e-fieldset-body\">\n <EFieldMessage v-if=\"!error\" :id=\"hintId\" :hint=\"hint\" />\n <slot />\n <EFieldMessage v-if=\"error\" :id=\"hintId\" :error=\"error\" />\n </div>\n <template v-else-if=\"bare\">\n <slot />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n </template>\n <div v-else class=\"e-fieldset-body\">\n <slot />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n </div>\n </fieldset>\n</template>\n\n<style>\n@layer e.controls {\n .e-fieldset {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-fieldset-legend {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n width: 100%;\n padding: 0;\n }\n\n .e-fieldset-legend--hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n }\n\n .e-fieldset:not(.e-fieldset--box, .e-fieldset--section) > .e-fieldset-legend {\n float: inline-start;\n margin-bottom: var(--e-space-2);\n }\n\n .e-fieldset:not(.e-fieldset--box, .e-fieldset--section) > .e-fieldset-legend + * {\n clear: both;\n }\n\n /* The ring is the outline alone: a native fieldset border is broken around its legend, so pairing it with the overlay painted a second, unbroken line. The legend straddles the ring and its own surface background breaks the line instead. */\n .e-fieldset--box {\n padding: 0 var(--e-space-4) var(--e-space-4);\n border: 0;\n\n --e-bc: var(--e-border);\n\n outline: var(--e-stroke-hair) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-hair));\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n }\n\n .e-fieldset--box > .e-fieldset-legend {\n position: relative;\n align-items: center;\n gap: 0;\n width: fit-content;\n max-width: 100%;\n inset-block-start: -0.65em;\n margin: 0 0 var(--e-space-3) calc(-1 * var(--e-space-2));\n background: var(--e-surface);\n font: 500 var(--e-text-md)/1.3 var(--e-font-sans);\n letter-spacing: 0;\n text-transform: none;\n color: var(--e-ink);\n }\n\n .e-fieldset--box .e-fieldset-title,\n .e-fieldset--box .e-field-flag {\n padding-inline: var(--e-space-2);\n }\n\n /* The rule is the legend's own border, never a native fieldset border (which would break around the legend). */\n .e-fieldset--section > .e-fieldset-legend {\n display: block;\n padding-top: var(--e-space-6);\n border-top: var(--e-stroke-hair) solid var(--e-border);\n font: 500 var(--e-text-xl)/1.25 var(--e-font-sans);\n color: var(--e-ink);\n }\n\n .e-fieldset--section:first-child > .e-fieldset-legend {\n padding-top: 0;\n border-top: 0;\n }\n\n .e-fieldset--section > .e-fieldset-legend .e-fieldset-title {\n padding: 0;\n }\n\n .e-fieldset--section > .e-fieldset-body {\n padding-top: var(--e-space-4);\n }\n\n .e-fieldset--section > .e-fieldset-body > .e-field-hint {\n margin-top: calc(var(--e-space-4) * -1 + var(--e-space-1));\n max-width: var(--e-measure);\n }\n\n .e-fieldset-rule {\n flex: none;\n width: var(--e-space-2);\n }\n\n .e-fieldset-body {\n display: grid;\n gap: var(--e-space-4);\n padding-top: var(--e-space-1);\n }\n\n .e-fieldset > .e-field-hint,\n .e-fieldset > .e-field-error {\n margin-top: -6px;\n }\n\n .e-fieldset-body > .e-field-hint,\n .e-fieldset-body > .e-field-error {\n margin-top: calc(var(--e-space-4) * -1 + var(--e-space-2));\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,IAAMoB,IAAQC,GA8BRC,IAAKC,QAAaH,EAAM,EAAE,GAC1BI,IAASC,QAAe,GAAGH,EAAG,MAAM,MAAM;E,kBAI9CtB,EAAA,GAAAC,EA6BW,YAAA;GA5BT,OAAKC,EAAA,CAAC,cAAY;IAAA,mBAAA,CACYmB,EAAA,QAAI,CAAKA,EAAA;IAAO,uBAAyBA,EAAA;GAAO,CAAA,CAAA;GAC7E,UAAUA,EAAA;GACV,oBAAkBA,EAAA,SAASA,EAAA,OAAOG,EAAA,QAAS,KAAA;GAC3C,gBAAcH,EAAA,QAAK,SAAY,KAAA;E,IAGxBA,EAAA,UADRrB,EAAA,GAAAC,EAQS,UAAA;;GANP,OAAKC,EAAA,CAAC,qBAAmB;IAChBmB,EAAA,QAAI;IAAgBA,EAAA,cAAU;IAAiCA,EAAA;GAAW,CAAA,CAAA;;GAEnFlB,EAAkD,QAAlDY,GAAkDX,EAAhBiB,EAAA,MAAM,GAAA,CAAA;GAC3B,CAAAA,EAAA,QAAI,CAAKA,EAAA,WAAtBrB,EAAA,GAAAC,EAA4E,QAA5Ee,CAA4E,K;GAC5EV,EAAwDC,GAAA;IAA3C,UAAUc,EAAA;IAAW,UAAUA,EAAA;;E,oBAEnCA,EAAA,WAAXrB,EAAA,GAAAC,EAIM,OAJNgB,GAIM;GAHkBI,EAAA,Q,aAAtBrB,EAAA,GAAAQ,EAAyDC,GAAA;;IAA3B,IAAIe,EAAA;IAAS,MAAMH,EAAA;;GACjDX,EAAQyB,EAAA,QAAA,SAAA;GACad,EAAA,SAArBrB,EAAA,GAAAQ,EAA0DC,GAAA;;IAA7B,IAAIe,EAAA;IAAS,OAAOH,EAAA;;E,MAE9BA,EAAA,QAArBrB,EAAA,GAAAC,EAGWU,GAAA,EAAA,KAAA,EAAA,GAAA,CAFTD,EAAQyB,EAAA,QAAA,SAAA,GACR7B,EAA0DG,GAAA;GAA1C,IAAIe,EAAA;GAAS,OAAOH,EAAA;GAAQ,MAAMA,EAAA;;;;;E,aAEpDrB,EAAA,GAAAC,EAGM,OAHNiB,GAGM,CAFJR,EAAQyB,EAAA,QAAA,SAAA,GACR7B,EAA0DG,GAAA;GAA1C,IAAIe,EAAA;GAAS,OAAOH,EAAA;GAAQ,MAAMA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"EGrid.js","names":["_sfc_main","EGrid_vue_vue_type_script_setup_true_lang_default","EGrid_default"],"sources":["../../../src/components/Grid/EGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default. */\n as?: string;\n /** The narrowest a column may be, as a CSS length. One column below that. */\n min?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n }>(),\n { as: \"div\", min: \"16rem\", gap: 4 },\n);\n\ndefineSlots<{\n /** The cards. Items stretch to the tallest in their row. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component :is=\"as\" class=\"e-grid-layout\" :style=\"{ '--e-gap': gapValue, '--e-min': min }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--e-min, 16rem)), 1fr));\n gap: var(--e-gap, var(--e-space-4));\n align-items: stretch;\n }\n\n .e-grid-layout > * {\n min-width: 0;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EGrid.js","names":["_sfc_main","EGrid_vue_vue_type_script_setup_true_lang_default","EGrid_default"],"sources":["../../../src/components/Grid/EGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default; for example `ul` with `li` children. */\n as?: string;\n /** The narrowest a column may be, as a CSS length. One column below that. */\n min?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** Pack cards of uneven height into columns with no gaps under the short ones. Items flow top to bottom within each column. */\n masonry?: boolean;\n }>(),\n { as: \"div\", min: \"16rem\", gap: 4, masonry: false },\n);\n\ndefineSlots<{\n /** The cards. Items stretch to the tallest in their row, unless `masonry` is set. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component :is=\"as\" :class=\"['e-grid-layout', { 'e-grid-layout--masonry': masonry }]\" :style=\"{ '--e-gap': gapValue, '--e-min': min }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--e-min, 16rem)), 1fr));\n gap: var(--e-gap, var(--e-space-4));\n align-items: stretch;\n }\n\n .e-grid-layout > * {\n min-width: 0;\n }\n\n .e-grid-layout--masonry {\n display: block;\n column-width: var(--e-min, 16rem);\n column-gap: var(--e-gap, var(--e-space-4));\n }\n\n /* Each item carries the row gap below it; a column drops the margin after its last item. */\n .e-grid-layout--masonry > * {\n break-inside: avoid;\n margin-block-end: var(--e-gap, var(--e-space-4));\n }\n}\n</style>\n"],"mappings":""}
@@ -1,19 +1,22 @@
1
1
  type __VLS_Props = {
2
- /** The element to render, `div` by default. */
2
+ /** The element to render, `div` by default; for example `ul` with `li` children. */
3
3
  as?: string;
4
4
  /** The narrowest a column may be, as a CSS length. One column below that. */
5
5
  min?: string;
6
6
  /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */
7
7
  gap?: number | string;
8
+ /** Pack cards of uneven height into columns with no gaps under the short ones. Items flow top to bottom within each column. */
9
+ masonry?: boolean;
8
10
  };
9
11
  type __VLS_Slots = {
10
- /** The cards. Items stretch to the tallest in their row. */
12
+ /** The cards. Items stretch to the tallest in their row, unless `masonry` is set. */
11
13
  default(): unknown;
12
14
  };
13
15
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
16
  min: string;
15
17
  as: string;
16
18
  gap: string | number;
19
+ masonry: boolean;
17
20
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
21
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
22
  declare const _default: typeof __VLS_export;
@@ -1,28 +1,32 @@
1
1
  /* empty css */
2
- import { computed as e, createBlock as t, defineComponent as n, normalizeStyle as r, openBlock as i, renderSlot as a, resolveDynamicComponent as o, withCtx as s } from "vue";
2
+ import { computed as e, createBlock as t, defineComponent as n, normalizeClass as r, normalizeStyle as i, openBlock as a, renderSlot as o, resolveDynamicComponent as s, withCtx as c } from "vue";
3
3
  //#region src/components/Grid/EGrid.vue?vue&type=script&setup=true&lang.ts
4
- var c = /*@__PURE__*/ n({
4
+ var l = /*@__PURE__*/ n({
5
5
  __name: "EGrid",
6
6
  props: {
7
7
  as: { default: "div" },
8
8
  min: { default: "16rem" },
9
- gap: { default: 4 }
9
+ gap: { default: 4 },
10
+ masonry: {
11
+ type: Boolean,
12
+ default: !1
13
+ }
10
14
  },
11
15
  setup(n) {
12
- let c = n, l = e(() => typeof c.gap == "number" ? `var(--e-space-${c.gap})` : c.gap);
13
- return (e, c) => (i(), t(o(n.as), {
14
- class: "e-grid-layout",
15
- style: r({
16
- "--e-gap": l.value,
16
+ let l = n, u = e(() => typeof l.gap == "number" ? `var(--e-space-${l.gap})` : l.gap);
17
+ return (e, l) => (a(), t(s(n.as), {
18
+ class: r(["e-grid-layout", { "e-grid-layout--masonry": n.masonry }]),
19
+ style: i({
20
+ "--e-gap": u.value,
17
21
  "--e-min": n.min
18
22
  })
19
23
  }, {
20
- default: s(() => [a(e.$slots, "default")]),
24
+ default: c(() => [o(e.$slots, "default")]),
21
25
  _: 3
22
- }, 8, ["style"]));
26
+ }, 8, ["class", "style"]));
23
27
  }
24
28
  });
25
29
  //#endregion
26
- export { c as default };
30
+ export { l as default };
27
31
 
28
32
  //# sourceMappingURL=EGrid.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EGrid.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeStyle","_withCtx","_renderSlot","EGrid_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Grid/EGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default. */\n as?: string;\n /** The narrowest a column may be, as a CSS length. One column below that. */\n min?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n }>(),\n { as: \"div\", min: \"16rem\", gap: 4 },\n);\n\ndefineSlots<{\n /** The cards. Items stretch to the tallest in their row. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component :is=\"as\" class=\"e-grid-layout\" :style=\"{ '--e-gap': gapValue, '--e-min': min }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--e-min, 16rem)), 1fr));\n gap: var(--e-gap, var(--e-space-4));\n align-items: stretch;\n }\n\n .e-grid-layout > * {\n min-width: 0;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;EAIA,IAAMO,IAAQC,GAiBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGP,EAAA,GAAAC,EAEYC,EAFIM,EAAA,EAAE,GAAA;GAAE,OAAM;GAAiB,OAAKL,EAAA;IAAA,WAAeM,EAAA;IAAQ,WAAaD,EAAA;GAAG,CAAA;;GACrF,SAAAJ,QAAQ,CAARC,EAAQY,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EGrid.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_normalizeStyle","_withCtx","_renderSlot","EGrid_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeClass","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Grid/EGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default; for example `ul` with `li` children. */\n as?: string;\n /** The narrowest a column may be, as a CSS length. One column below that. */\n min?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** Pack cards of uneven height into columns with no gaps under the short ones. Items flow top to bottom within each column. */\n masonry?: boolean;\n }>(),\n { as: \"div\", min: \"16rem\", gap: 4, masonry: false },\n);\n\ndefineSlots<{\n /** The cards. Items stretch to the tallest in their row, unless `masonry` is set. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component :is=\"as\" :class=\"['e-grid-layout', { 'e-grid-layout--masonry': masonry }]\" :style=\"{ '--e-gap': gapValue, '--e-min': min }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--e-min, 16rem)), 1fr));\n gap: var(--e-gap, var(--e-space-4));\n align-items: stretch;\n }\n\n .e-grid-layout > * {\n min-width: 0;\n }\n\n .e-grid-layout--masonry {\n display: block;\n column-width: var(--e-min, 16rem);\n column-gap: var(--e-gap, var(--e-space-4));\n }\n\n /* Each item carries the row gap below it; a column drops the margin after its last item. */\n .e-grid-layout--masonry > * {\n break-inside: avoid;\n margin-block-end: var(--e-gap, var(--e-space-4));\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;EAIA,IAAMQ,IAAQC,GAmBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGR,EAAA,GAAAC,EAEYC,EAFIO,EAAA,EAAE,GAAA;GAAG,OAAKN,EAAA,CAAA,iBAAA,EAAA,0BAAgDM,EAAA,QAAO,CAAA,CAAA;GAAM,OAAKL,EAAA;IAAA,WAAeM,EAAA;IAAQ,WAAaD,EAAA;GAAG,CAAA;;GACjI,SAAAJ,QAAQ,CAARC,EAAQa,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EHeading.js","names":["_sfc_main","EHeading_vue_vue_type_script_setup_true_lang_default","EHeading_default"],"sources":["../../../src/components/Heading/EHeading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** 1 to 6: sets both the element (`h1` to `h6`) and the size (36, 24, 20, 18, 16 and 14px). One level 1 per page; do not skip levels. */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** A small mono label above the heading. */\n kicker?: string;\n }>(),\n { level: 2 },\n);\n\ndefineSlots<{\n /** The heading text. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-heading\">\n <p v-if=\"kicker\" class=\"e-kicker\" style=\"margin: 0\">{{ kicker }}</p>\n <component :is=\"`h${level}`\" class=\"e-h\" :class=\"`e-h${level}`\"><slot /></component>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-heading {\n display: grid;\n gap: var(--e-space-1);\n }\n\n .e-h {\n margin: 0;\n font-family: var(--e-font-sans);\n font-weight: 500;\n color: var(--e-ink);\n text-wrap: balance;\n }\n\n .e-h1 {\n font-size: var(--e-text-4xl);\n line-height: 1.15;\n }\n\n .e-h2 {\n font-size: var(--e-text-2xl);\n line-height: 1.25;\n }\n\n .e-h3 {\n font-size: var(--e-text-xl);\n line-height: 1.25;\n }\n\n .e-h4 {\n font-size: var(--e-text-lg);\n line-height: 1.3;\n }\n\n .e-h5 {\n font-size: var(--e-text-md);\n line-height: 1.3;\n }\n\n .e-h6 {\n font-size: var(--e-text-sm);\n line-height: 1.3;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EHeading.js","names":["_sfc_main","EHeading_vue_vue_type_script_setup_true_lang_default","EHeading_default"],"sources":["../../../src/components/Heading/EHeading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EKicker from \"../Kicker/EKicker.vue\";\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** 1 to 6: sets both the element (`h1` to `h6`) and the size (36, 24, 20, 18, 16 and 14px). One level 1 per page; do not skip levels. */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** A small mono label above the heading; renders an `EKicker`, which is not itself a heading. */\n kicker?: string;\n }>(),\n { level: 2 },\n);\n\ndefineSlots<{\n /** The heading text. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-heading\">\n <EKicker v-if=\"kicker\">{{ kicker }}</EKicker>\n <component :is=\"`h${level}`\" class=\"e-h\" :class=\"`e-h${level}`\"><slot /></component>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-heading {\n display: grid;\n gap: var(--e-space-1);\n }\n\n .e-heading > .e-kicker {\n margin: 0;\n }\n\n .e-h {\n margin: 0;\n font-family: var(--e-font-sans);\n font-weight: 500;\n color: var(--e-ink);\n text-wrap: balance;\n }\n\n .e-h1 {\n font-size: var(--e-text-4xl);\n line-height: 1.15;\n }\n\n .e-h2 {\n font-size: var(--e-text-2xl);\n line-height: 1.25;\n }\n\n .e-h3 {\n font-size: var(--e-text-xl);\n line-height: 1.25;\n }\n\n .e-h4 {\n font-size: var(--e-text-lg);\n line-height: 1.3;\n }\n\n .e-h5 {\n font-size: var(--e-text-md);\n line-height: 1.3;\n }\n\n .e-h6 {\n font-size: var(--e-text-sm);\n line-height: 1.3;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  type __VLS_Props = {
2
2
  /** 1 to 6: sets both the element (`h1` to `h6`) and the size (36, 24, 20, 18, 16 and 14px). One level 1 per page; do not skip levels. */
3
3
  level?: 1 | 2 | 3 | 4 | 5 | 6;
4
- /** A small mono label above the heading. */
4
+ /** A small mono label above the heading; renders an `EKicker`, which is not itself a heading. */
5
5
  kicker?: string;
6
6
  };
7
7
  type __VLS_Slots = {
@@ -1,24 +1,24 @@
1
1
  /* empty css */
2
- import { createBlock as e, createCommentVNode as t, createElementBlock as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, resolveDynamicComponent as s, toDisplayString as c, withCtx as l } from "vue";
2
+ import e from "../Kicker/EKicker.js";
3
+ import { createBlock as t, createCommentVNode as n, createElementBlock as r, createTextVNode as i, defineComponent as a, normalizeClass as o, openBlock as s, renderSlot as c, resolveDynamicComponent as l, toDisplayString as u, withCtx as d } from "vue";
3
4
  //#region src/components/Heading/EHeading.vue?vue&type=script&setup=true&lang.ts
4
- var u = { class: "e-heading" }, d = {
5
- key: 0,
6
- class: "e-kicker",
7
- style: { margin: "0" }
8
- }, f = /*@__PURE__*/ r({
5
+ var f = { class: "e-heading" }, p = /*@__PURE__*/ a({
9
6
  __name: "EHeading",
10
7
  props: {
11
8
  level: { default: 2 },
12
9
  kicker: {}
13
10
  },
14
- setup(r) {
15
- return (f, p) => (a(), n("div", u, [r.kicker ? (a(), n("p", d, c(r.kicker), 1)) : t("", !0), (a(), e(s(`h${r.level}`), { class: i(["e-h", `e-h${r.level}`]) }, {
16
- default: l(() => [o(f.$slots, "default")]),
11
+ setup(a) {
12
+ return (p, m) => (s(), r("div", f, [a.kicker ? (s(), t(e, { key: 0 }, {
13
+ default: d(() => [i(u(a.kicker), 1)]),
14
+ _: 1
15
+ })) : n("", !0), (s(), t(l(`h${a.level}`), { class: o(["e-h", `e-h${a.level}`]) }, {
16
+ default: d(() => [c(p.$slots, "default")]),
17
17
  _: 3
18
18
  }, 8, ["class"]))]));
19
19
  }
20
20
  });
21
21
  //#endregion
22
- export { f as default };
22
+ export { p as default };
23
23
 
24
24
  //# sourceMappingURL=EHeading.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EHeading.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_toDisplayString","_createCommentVNode","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_renderSlot","_hoisted_1","_hoisted_2","\"margin\"","EHeading_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","__props","toDisplayString","createCommentVNode","createBlock","resolveDynamicComponent","normalizeClass","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Heading/EHeading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** 1 to 6: sets both the element (`h1` to `h6`) and the size (36, 24, 20, 18, 16 and 14px). One level 1 per page; do not skip levels. */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** A small mono label above the heading. */\n kicker?: string;\n }>(),\n { level: 2 },\n);\n\ndefineSlots<{\n /** The heading text. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-heading\">\n <p v-if=\"kicker\" class=\"e-kicker\" style=\"margin: 0\">{{ kicker }}</p>\n <component :is=\"`h${level}`\" class=\"e-h\" :class=\"`e-h${level}`\"><slot /></component>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-heading {\n display: grid;\n gap: var(--e-space-1);\n }\n\n .e-h {\n margin: 0;\n font-family: var(--e-font-sans);\n font-weight: 500;\n color: var(--e-ink);\n text-wrap: balance;\n }\n\n .e-h1 {\n font-size: var(--e-text-4xl);\n line-height: 1.15;\n }\n\n .e-h2 {\n font-size: var(--e-text-2xl);\n line-height: 1.25;\n }\n\n .e-h3 {\n font-size: var(--e-text-xl);\n line-height: 1.25;\n }\n\n .e-h4 {\n font-size: var(--e-text-lg);\n line-height: 1.3;\n }\n\n .e-h5 {\n font-size: var(--e-text-md);\n line-height: 1.3;\n }\n\n .e-h6 {\n font-size: var(--e-text-sm);\n line-height: 1.3;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;E,kBAoBEA,EAAA,GAAAC,EAGM,OAHNQ,GAGM,CAFKM,EAAA,UAATf,EAAA,GAAAC,EAAoE,KAApES,GAAoER,EAAba,EAAA,MAAM,GAAA,CAAA,K,YAC7Df,EAAA,GAAAI,EAAoFC,EAAA,IAAhEU,EAAA,OAAK,GAAA,EAAI,OAAKT,EAAA,CAAC,OAAK,MAAeS,EAAA,OAAK,CAAA,E;GAAI,SAAAR,QAAQ,CAARC,EAAQe,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EHeading.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createBlock","EKicker","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_resolveDynamicComponent","_normalizeClass","_renderSlot","EKicker_default","_hoisted_1","EHeading_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","__props","createBlock","withCtx","createTextVNode","toDisplayString","createCommentVNode","resolveDynamicComponent","normalizeClass","renderSlot","_ctx"],"sources":["../../../src/components/Heading/EHeading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EKicker from \"../Kicker/EKicker.vue\";\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** 1 to 6: sets both the element (`h1` to `h6`) and the size (36, 24, 20, 18, 16 and 14px). One level 1 per page; do not skip levels. */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** A small mono label above the heading; renders an `EKicker`, which is not itself a heading. */\n kicker?: string;\n }>(),\n { level: 2 },\n);\n\ndefineSlots<{\n /** The heading text. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-heading\">\n <EKicker v-if=\"kicker\">{{ kicker }}</EKicker>\n <component :is=\"`h${level}`\" class=\"e-h\" :class=\"`e-h${level}`\"><slot /></component>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-heading {\n display: grid;\n gap: var(--e-space-1);\n }\n\n .e-heading > .e-kicker {\n margin: 0;\n }\n\n .e-h {\n margin: 0;\n font-family: var(--e-font-sans);\n font-weight: 500;\n color: var(--e-ink);\n text-wrap: balance;\n }\n\n .e-h1 {\n font-size: var(--e-text-4xl);\n line-height: 1.15;\n }\n\n .e-h2 {\n font-size: var(--e-text-2xl);\n line-height: 1.25;\n }\n\n .e-h3 {\n font-size: var(--e-text-xl);\n line-height: 1.25;\n }\n\n .e-h4 {\n font-size: var(--e-text-lg);\n line-height: 1.3;\n }\n\n .e-h5 {\n font-size: var(--e-text-md);\n line-height: 1.3;\n }\n\n .e-h6 {\n font-size: var(--e-text-sm);\n line-height: 1.3;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;E,kBAqBEA,EAAA,GAAAC,EAGM,OAHNW,GAGM,CAFWI,EAAA,UAAfhB,EAAA,GAAAE,EAA6CC,GAAA,EAAA,KAAA,EAAA,GAAA;GAAtB,SAAAC,QAAY,CAATC,EAAAC,EAAAU,EAAA,MAAM,GAAA,CAAA,C;;E,kBAChChB,EAAA,GAAAE,EAAoFM,EAAA,IAAhEQ,EAAA,OAAK,GAAA,EAAI,OAAKP,EAAA,CAAC,OAAK,MAAeO,EAAA,OAAK,CAAA,E;GAAI,SAAAZ,QAAQ,CAARM,EAAQe,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EHighlight.js","names":["_sfc_main","EHighlight_vue_vue_type_script_setup_true_lang_default","EHighlight_default"],"sources":["../../../src/components/Highlight/EHighlight.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Renders a `code` element in the mono font, for a name, value or snippet inside a sentence. Without it the element is a `mark`, for a word worth noticing. */\n code?: boolean;\n}>();\n\ndefineSlots<{\n /** The text to mark. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <code v-if=\"code\" class=\"e-highlight e-highlight--code\"><slot /></code>\n <mark v-else class=\"e-highlight\"><slot /></mark>\n</template>\n\n<style>\n@layer e.primitives {\n .e-highlight {\n padding: 0 0.2em;\n border-radius: 0.15em;\n background: linear-gradient(\n to bottom,\n transparent 18%,\n color-mix(in srgb, var(--e-secondary) 38%, transparent) 18% 94%,\n transparent 94%\n );\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n color: var(--e-ink);\n font-weight: 500;\n }\n\n .e-highlight--code {\n font-family: var(--e-font-mono);\n font-size: 0.9em;\n }\n\n @media (forced-colors: active) {\n .e-highlight {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EHighlight.js","names":["_sfc_main","EHighlight_vue_vue_type_script_setup_true_lang_default","EHighlight_default"],"sources":["../../../src/components/Highlight/EHighlight.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Renders a `code` element in the mono font, for a name, value or snippet inside a sentence. Without it the element is a `mark`, for a word worth noticing. */\n code?: boolean;\n}>();\n\ndefineSlots<{\n /** The text to mark. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <code v-if=\"code\" class=\"e-highlight e-highlight--code\"><slot /></code>\n <mark v-else class=\"e-highlight\"><slot /></mark>\n</template>\n\n<style>\n@layer e.primitives {\n .e-highlight {\n padding: 0.1em 0.35em;\n border-radius: 0.25em;\n background: linear-gradient(\n to bottom,\n transparent 4%,\n color-mix(in srgb, var(--e-secondary) 38%, transparent) 4% 100%,\n transparent 100%\n );\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n color: var(--e-ink);\n font-weight: 500;\n }\n\n /* Inside a link the highlight gives way to the link: no wash, an underline instead. */\n a:any-link > .e-highlight {\n padding: 0;\n background: transparent;\n color: inherit;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-decoration-color: currentcolor;\n text-underline-offset: var(--e-space-1);\n }\n\n .e-highlight--code {\n font-family: var(--e-font-mono);\n font-size: var(--e-text-sm);\n }\n\n @media (forced-colors: active) {\n .e-highlight {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"EHighlight.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_renderSlot","_hoisted_1","_hoisted_2","EHighlight_vue_vue_type_script_setup_true_lang_default","__props","openBlock","createElementBlock","renderSlot","_ctx"],"sources":["../../../src/components/Highlight/EHighlight.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Renders a `code` element in the mono font, for a name, value or snippet inside a sentence. Without it the element is a `mark`, for a word worth noticing. */\n code?: boolean;\n}>();\n\ndefineSlots<{\n /** The text to mark. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <code v-if=\"code\" class=\"e-highlight e-highlight--code\"><slot /></code>\n <mark v-else class=\"e-highlight\"><slot /></mark>\n</template>\n\n<style>\n@layer e.primitives {\n .e-highlight {\n padding: 0 0.2em;\n border-radius: 0.15em;\n background: linear-gradient(\n to bottom,\n transparent 18%,\n color-mix(in srgb, var(--e-secondary) 38%, transparent) 18% 94%,\n transparent 94%\n );\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n color: var(--e-ink);\n font-weight: 500;\n }\n\n .e-highlight--code {\n font-family: var(--e-font-mono);\n font-size: 0.9em;\n }\n\n @media (forced-colors: active) {\n .e-highlight {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;E,iBAecM,EAAA,QAAZN,EAAA,GAAAC,EAAuE,QAAvEE,GAAuE,CAAfD,EAAQQ,EAAA,QAAA,SAAA,C,OAChEV,EAAA,GAAAC,EAAgD,QAAhDG,GAAgD,CAAfF,EAAQQ,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EHighlight.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_renderSlot","_hoisted_1","_hoisted_2","EHighlight_vue_vue_type_script_setup_true_lang_default","__props","openBlock","createElementBlock","renderSlot","_ctx"],"sources":["../../../src/components/Highlight/EHighlight.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Renders a `code` element in the mono font, for a name, value or snippet inside a sentence. Without it the element is a `mark`, for a word worth noticing. */\n code?: boolean;\n}>();\n\ndefineSlots<{\n /** The text to mark. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <code v-if=\"code\" class=\"e-highlight e-highlight--code\"><slot /></code>\n <mark v-else class=\"e-highlight\"><slot /></mark>\n</template>\n\n<style>\n@layer e.primitives {\n .e-highlight {\n padding: 0.1em 0.35em;\n border-radius: 0.25em;\n background: linear-gradient(\n to bottom,\n transparent 4%,\n color-mix(in srgb, var(--e-secondary) 38%, transparent) 4% 100%,\n transparent 100%\n );\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n color: var(--e-ink);\n font-weight: 500;\n }\n\n /* Inside a link the highlight gives way to the link: no wash, an underline instead. */\n a:any-link > .e-highlight {\n padding: 0;\n background: transparent;\n color: inherit;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-decoration-color: currentcolor;\n text-underline-offset: var(--e-space-1);\n }\n\n .e-highlight--code {\n font-family: var(--e-font-mono);\n font-size: var(--e-text-sm);\n }\n\n @media (forced-colors: active) {\n .e-highlight {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;E,iBAecM,EAAA,QAAZN,EAAA,GAAAC,EAAuE,QAAvEE,GAAuE,CAAfD,EAAQQ,EAAA,QAAA,SAAA,C,OAChEV,EAAA,GAAAC,EAAgD,QAAhDG,GAAgD,CAAfF,EAAQQ,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EIconButton.js","names":["_sfc_main","EIconButton_vue_vue_type_script_setup_true_lang_default","EIconButton_default"],"sources":["../../../src/components/IconButton/EIconButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The glyph. */\n icon: IconProp;\n /** The accessible name. Write it as an action, such as \"Download receipt\". */\n label: string;\n disabled?: boolean;\n}>();\n</script>\n\n<template>\n <button type=\"button\" class=\"e-icon-btn\" :aria-label=\"label\" :disabled=\"disabled\">\n <EIcon :name=\"icon\" />\n </button>\n</template>\n\n<style>\n@layer e.primitives {\n .e-icon-btn {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0;\n border: 0;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n cursor: pointer;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-icon-btn:hover {\n background: var(--e-wash-hover);\n box-shadow: inset 0 0 0 1px var(--e-wash-ring);\n }\n\n .e-icon-btn:active {\n background: var(--e-wash-press);\n box-shadow: inset 0 0 0 1.5px var(--e-ink);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-icon-btn {\n transition: none;\n }\n }\n\n @media print {\n .e-icon-btn {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EIconButton.js","names":["_sfc_main","EIconButton_vue_vue_type_script_setup_true_lang_default","EIconButton_default"],"sources":["../../../src/components/IconButton/EIconButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The glyph. */\n icon: IconProp;\n /** The accessible name. Write it as an action, such as \"Download receipt\". */\n label: string;\n /** Disables the button. */\n disabled?: boolean;\n}>();\n</script>\n\n<template>\n <button type=\"button\" class=\"e-icon-btn\" :aria-label=\"label\" :disabled=\"disabled\">\n <EIcon :name=\"icon\" />\n </button>\n</template>\n\n<style>\n@layer e.primitives {\n .e-icon-btn {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0;\n border: 0;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n cursor: pointer;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-icon-btn:not(:disabled):hover {\n background: var(--e-wash-hover);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-wash-ring);\n }\n\n .e-icon-btn:not(:disabled):active {\n background: var(--e-wash-press);\n box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ink);\n }\n\n .e-icon-btn:disabled {\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-icon-btn {\n transition: none;\n }\n }\n\n @media print {\n .e-icon-btn {\n display: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-icon-btn:not(:disabled):hover,\n .e-icon-btn:not(:disabled):active {\n outline: var(--e-stroke-edge) solid Highlight;\n outline-offset: calc(-1 * var(--e-stroke-edge));\n }\n\n .e-icon-btn:disabled {\n border-color: GrayText;\n color: GrayText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -4,6 +4,7 @@ type __VLS_Props = {
4
4
  icon: IconProp;
5
5
  /** The accessible name. Write it as an action, such as "Download receipt". */
6
6
  label: string;
7
+ /** Disables the button. */
7
8
  disabled?: boolean;
8
9
  };
9
10
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"EIconButton.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","EIcon","EIcon_default","_hoisted_1","EIconButton_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","__props","createVNode"],"sources":["../../../src/components/IconButton/EIconButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The glyph. */\n icon: IconProp;\n /** The accessible name. Write it as an action, such as \"Download receipt\". */\n label: string;\n disabled?: boolean;\n}>();\n</script>\n\n<template>\n <button type=\"button\" class=\"e-icon-btn\" :aria-label=\"label\" :disabled=\"disabled\">\n <EIcon :name=\"icon\" />\n </button>\n</template>\n\n<style>\n@layer e.primitives {\n .e-icon-btn {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0;\n border: 0;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n cursor: pointer;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-icon-btn:hover {\n background: var(--e-wash-hover);\n box-shadow: inset 0 0 0 1px var(--e-wash-ring);\n }\n\n .e-icon-btn:active {\n background: var(--e-wash-press);\n box-shadow: inset 0 0 0 1.5px var(--e-ink);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-icon-btn {\n transition: none;\n }\n }\n\n @media print {\n .e-icon-btn {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;E,kBAeEA,EAAA,GAAAC,EAES,UAAA;GAFD,MAAK;GAAS,OAAM;GAAc,cAAYQ,EAAA;GAAQ,UAAUA,EAAA;E,IACtEP,EAAsBC,GAAA,EAAd,MAAMM,EAAA,KAAI,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,C"}
1
+ {"version":3,"file":"EIconButton.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","EIcon","EIcon_default","_hoisted_1","EIconButton_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","__props","createVNode"],"sources":["../../../src/components/IconButton/EIconButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The glyph. */\n icon: IconProp;\n /** The accessible name. Write it as an action, such as \"Download receipt\". */\n label: string;\n /** Disables the button. */\n disabled?: boolean;\n}>();\n</script>\n\n<template>\n <button type=\"button\" class=\"e-icon-btn\" :aria-label=\"label\" :disabled=\"disabled\">\n <EIcon :name=\"icon\" />\n </button>\n</template>\n\n<style>\n@layer e.primitives {\n .e-icon-btn {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0;\n border: 0;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n cursor: pointer;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-icon-btn:not(:disabled):hover {\n background: var(--e-wash-hover);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-wash-ring);\n }\n\n .e-icon-btn:not(:disabled):active {\n background: var(--e-wash-press);\n box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ink);\n }\n\n .e-icon-btn:disabled {\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-icon-btn {\n transition: none;\n }\n }\n\n @media print {\n .e-icon-btn {\n display: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-icon-btn:not(:disabled):hover,\n .e-icon-btn:not(:disabled):active {\n outline: var(--e-stroke-edge) solid Highlight;\n outline-offset: calc(-1 * var(--e-stroke-edge));\n }\n\n .e-icon-btn:disabled {\n border-color: GrayText;\n color: GrayText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;E,kBAgBEA,EAAA,GAAAC,EAES,UAAA;GAFD,MAAK;GAAS,OAAM;GAAc,cAAYQ,EAAA;GAAQ,UAAUA,EAAA;E,IACtEP,EAAsBC,GAAA,EAAd,MAAMM,EAAA,KAAI,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EInline.js","names":["_sfc_main","EInline_vue_vue_type_script_setup_true_lang_default","EInline_default"],"sources":["../../../src/components/Inline/EInline.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default. */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** `between` or `end`; start by default. */\n justify?: \"between\" | \"end\";\n /** `start` or `baseline`; centred by default. */\n align?: \"start\" | \"baseline\";\n /** Keeps the children on one line instead of wrapping. */\n nowrap?: boolean;\n }>(),\n { as: \"div\", gap: 2 },\n);\n\ndefineSlots<{\n /** The children, in a row that wraps when it runs out of room. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"e-inline\"\n :class=\"[nowrap && 'e-inline--nowrap', justify && `e-inline--${justify}`, align && `e-inline--a-${align}`]\"\n :style=\"{ '--e-gap': gapValue }\"\n >\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-inline {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-gap, var(--e-space-2));\n min-width: 0;\n }\n\n .e-inline--nowrap {\n flex-wrap: nowrap;\n }\n\n .e-inline--between {\n justify-content: space-between;\n }\n\n .e-inline--end {\n justify-content: flex-end;\n }\n\n .e-inline--a-start {\n align-items: flex-start;\n }\n\n .e-inline--a-baseline {\n align-items: baseline;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EInline.js","names":["_sfc_main","EInline_vue_vue_type_script_setup_true_lang_default","EInline_default"],"sources":["../../../src/components/Inline/EInline.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default; for example `ul`. */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** Main-axis placement: `between` or `end`; start by default. */\n justify?: \"between\" | \"end\";\n /** Cross-axis alignment: `start` or `baseline`; centred by default. */\n align?: \"start\" | \"baseline\";\n /** Keeps the children on one line instead of wrapping. */\n nowrap?: boolean;\n }>(),\n { as: \"div\", gap: 2 },\n);\n\ndefineSlots<{\n /** The children, in a row that wraps when it runs out of room. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"e-inline\"\n :class=\"[nowrap && 'e-inline--nowrap', justify && `e-inline--${justify}`, align && `e-inline--a-${align}`]\"\n :style=\"{ '--e-gap': gapValue }\"\n >\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-inline {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-gap, var(--e-space-2));\n min-width: 0;\n }\n\n .e-inline--nowrap {\n flex-wrap: nowrap;\n }\n\n .e-inline--between {\n justify-content: space-between;\n }\n\n .e-inline--end {\n justify-content: flex-end;\n }\n\n .e-inline--a-start {\n align-items: flex-start;\n }\n\n .e-inline--a-baseline {\n align-items: baseline;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,11 +1,11 @@
1
1
  type __VLS_Props = {
2
- /** The element to render, `div` by default. */
2
+ /** The element to render, `div` by default; for example `ul`. */
3
3
  as?: string;
4
4
  /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */
5
5
  gap?: number | string;
6
- /** `between` or `end`; start by default. */
6
+ /** Main-axis placement: `between` or `end`; start by default. */
7
7
  justify?: "between" | "end";
8
- /** `start` or `baseline`; centred by default. */
8
+ /** Cross-axis alignment: `start` or `baseline`; centred by default. */
9
9
  align?: "start" | "baseline";
10
10
  /** Keeps the children on one line instead of wrapping. */
11
11
  nowrap?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"EInline.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_normalizeStyle","_withCtx","_renderSlot","EInline_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeClass","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Inline/EInline.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default. */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** `between` or `end`; start by default. */\n justify?: \"between\" | \"end\";\n /** `start` or `baseline`; centred by default. */\n align?: \"start\" | \"baseline\";\n /** Keeps the children on one line instead of wrapping. */\n nowrap?: boolean;\n }>(),\n { as: \"div\", gap: 2 },\n);\n\ndefineSlots<{\n /** The children, in a row that wraps when it runs out of room. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"e-inline\"\n :class=\"[nowrap && 'e-inline--nowrap', justify && `e-inline--${justify}`, align && `e-inline--a-${align}`]\"\n :style=\"{ '--e-gap': gapValue }\"\n >\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-inline {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-gap, var(--e-space-2));\n min-width: 0;\n }\n\n .e-inline--nowrap {\n flex-wrap: nowrap;\n }\n\n .e-inline--between {\n justify-content: space-between;\n }\n\n .e-inline--end {\n justify-content: flex-end;\n }\n\n .e-inline--a-start {\n align-items: flex-start;\n }\n\n .e-inline--a-baseline {\n align-items: baseline;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;EAIA,IAAMQ,IAAQC,GAqBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGR,EAAA,GAAAC,EAOYC,EANLO,EAAA,EAAE,GAAA;GACP,OAAKN,EAAA,CAAC,YAAU;IACPM,EAAA,UAAM;IAAwBA,EAAA,WAAO,aAAiBA,EAAA;IAAWA,EAAA,SAAK,eAAmBA,EAAA;GAAK,CAAA,CAAA;GACtG,OAAKL,EAAA,EAAA,WAAeM,EAAA,MAAQ,CAAA;;GAE7B,SAAAL,QAAQ,CAARC,EAAQa,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EInline.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_normalizeStyle","_withCtx","_renderSlot","EInline_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeClass","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Inline/EInline.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The element to render, `div` by default; for example `ul`. */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */\n gap?: number | string;\n /** Main-axis placement: `between` or `end`; start by default. */\n justify?: \"between\" | \"end\";\n /** Cross-axis alignment: `start` or `baseline`; centred by default. */\n align?: \"start\" | \"baseline\";\n /** Keeps the children on one line instead of wrapping. */\n nowrap?: boolean;\n }>(),\n { as: \"div\", gap: 2 },\n);\n\ndefineSlots<{\n /** The children, in a row that wraps when it runs out of room. */\n default(): unknown;\n}>();\n\nconst gapValue = computed(() => (typeof props.gap === \"number\" ? `var(--e-space-${props.gap})` : props.gap));\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"e-inline\"\n :class=\"[nowrap && 'e-inline--nowrap', justify && `e-inline--${justify}`, align && `e-inline--a-${align}`]\"\n :style=\"{ '--e-gap': gapValue }\"\n >\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-inline {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-gap, var(--e-space-2));\n min-width: 0;\n }\n\n .e-inline--nowrap {\n flex-wrap: nowrap;\n }\n\n .e-inline--between {\n justify-content: space-between;\n }\n\n .e-inline--end {\n justify-content: flex-end;\n }\n\n .e-inline--a-start {\n align-items: flex-start;\n }\n\n .e-inline--a-baseline {\n align-items: baseline;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;EAIA,IAAMQ,IAAQC,GAqBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGR,EAAA,GAAAC,EAOYC,EANLO,EAAA,EAAE,GAAA;GACP,OAAKN,EAAA,CAAC,YAAU;IACPM,EAAA,UAAM;IAAwBA,EAAA,WAAO,aAAiBA,EAAA;IAAWA,EAAA,SAAK,eAAmBA,EAAA;GAAK,CAAA,CAAA;GACtG,OAAKL,EAAA,EAAA,WAAeM,EAAA,MAAQ,CAAA;;GAE7B,SAAAL,QAAQ,CAARC,EAAQa,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EKbd.js","names":["_sfc_main","EKbd_vue_vue_type_script_setup_true_lang_default","EKbd_default"],"sources":["../../../src/components/Kbd/EKbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The smaller size, for a hint inside running small text. */\n small?: boolean;\n}>();\n\ndefineSlots<{\n /** The key, written as it is on the keycap: \"/\", \"Esc\", \"Ctrl\". */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <kbd class=\"e-kbd\" :class=\"small && 'e-kbd--s'\"><slot /></kbd>\n</template>\n\n<style>\n@layer e.primitives {\n .e-kbd {\n display: inline-block;\n min-width: 1.5em;\n padding: 0 var(--e-space-1);\n border: var(--e-stroke-hair) solid var(--e-border-strong);\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n color: var(--e-muted);\n font: 500 var(--e-text-sm) / 1.5 var(--e-font-mono);\n text-align: center;\n white-space: nowrap;\n }\n\n .e-kbd--s {\n font-size: var(--e-text-xs);\n }\n\n @media (forced-colors: active) {\n .e-kbd {\n border-color: ButtonText;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EKbd.js","names":["_sfc_main","EKbd_vue_vue_type_script_setup_true_lang_default","EKbd_default"],"sources":["../../../src/components/Kbd/EKbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The smaller size, for a hint inside running small text. */\n small?: boolean;\n}>();\n\ndefineSlots<{\n /** The key, written as it is on the keycap: \"/\", \"Esc\", \"Ctrl\". */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <kbd class=\"e-kbd\" :class=\"small && 'e-kbd--s'\"><slot /></kbd>\n</template>\n\n<style>\n@layer e.primitives {\n .e-kbd {\n display: inline-block;\n min-width: 1.5em;\n padding: 0 var(--e-space-1);\n border: var(--e-stroke-hair) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-hair) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-hair));\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n color: var(--e-muted);\n font: 500 var(--e-text-sm) / 1.5 var(--e-font-mono);\n text-align: center;\n white-space: nowrap;\n }\n\n .e-kbd--s {\n font-size: var(--e-text-xs);\n }\n\n @media (forced-colors: active) {\n .e-kbd {\n border-color: ButtonText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"EKbd.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_renderSlot","EKbd_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","normalizeClass","__props","renderSlot","_ctx"],"sources":["../../../src/components/Kbd/EKbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The smaller size, for a hint inside running small text. */\n small?: boolean;\n}>();\n\ndefineSlots<{\n /** The key, written as it is on the keycap: \"/\", \"Esc\", \"Ctrl\". */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <kbd class=\"e-kbd\" :class=\"small && 'e-kbd--s'\"><slot /></kbd>\n</template>\n\n<style>\n@layer e.primitives {\n .e-kbd {\n display: inline-block;\n min-width: 1.5em;\n padding: 0 var(--e-space-1);\n border: var(--e-stroke-hair) solid var(--e-border-strong);\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n color: var(--e-muted);\n font: 500 var(--e-text-sm) / 1.5 var(--e-font-mono);\n text-align: center;\n white-space: nowrap;\n }\n\n .e-kbd--s {\n font-size: var(--e-text-xs);\n }\n\n @media (forced-colors: active) {\n .e-kbd {\n border-color: ButtonText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;E,kBAeEA,EAAA,GAAAC,EAA8D,OAAA,EAAzD,OAAKC,EAAA,CAAC,SAAgBM,EAAA,SAAK,UAAA,CAAA,E,IAAgBL,EAAQO,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EKbd.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_renderSlot","EKbd_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","normalizeClass","__props","renderSlot","_ctx"],"sources":["../../../src/components/Kbd/EKbd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** The smaller size, for a hint inside running small text. */\n small?: boolean;\n}>();\n\ndefineSlots<{\n /** The key, written as it is on the keycap: \"/\", \"Esc\", \"Ctrl\". */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <kbd class=\"e-kbd\" :class=\"small && 'e-kbd--s'\"><slot /></kbd>\n</template>\n\n<style>\n@layer e.primitives {\n .e-kbd {\n display: inline-block;\n min-width: 1.5em;\n padding: 0 var(--e-space-1);\n border: var(--e-stroke-hair) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-hair) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-hair));\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n color: var(--e-muted);\n font: 500 var(--e-text-sm) / 1.5 var(--e-font-mono);\n text-align: center;\n white-space: nowrap;\n }\n\n .e-kbd--s {\n font-size: var(--e-text-xs);\n }\n\n @media (forced-colors: active) {\n .e-kbd {\n border-color: ButtonText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;E,kBAeEA,EAAA,GAAAC,EAA8D,OAAA,EAAzD,OAAKC,EAAA,CAAC,SAAgBM,EAAA,SAAK,UAAA,CAAA,E,IAAgBL,EAAQO,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ELink.js","names":["_sfc_main","ELink_vue_vue_type_script_setup_true_lang_default","ELink_default"],"sources":["../../../src/components/Link/ELink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Where the link goes. */\n href: string;\n /** Opens in a new tab. */\n external?: boolean;\n /** An icon before the text: a built-in name, a name from your icon set, or an icon component. */\n icon?: IconProp;\n}>();\n\ndefineSlots<{\n /** The link text: say where it goes. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <a\n class=\"e-link\"\n :class=\"icon && 'e-link--icon'\"\n :href=\"href\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noreferrer' : undefined\"\n >\n <EIcon v-if=\"icon\" :name=\"icon\" />\n <slot />\n </a>\n</template>\n\n<style>\n@layer e.primitives {\n .e-link {\n color: var(--e-primary);\n font-weight: 500;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-underline-offset: 4px;\n text-decoration-color: var(--e-primary);\n }\n\n .e-link:hover {\n color: var(--e-ink);\n text-decoration-color: var(--e-ink);\n }\n\n .e-link:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n border-radius: var(--e-radius-sm);\n }\n\n .e-link--icon {\n display: inline-flex;\n align-items: center;\n gap: var(--e-space-2);\n }\n\n .e-link--icon .e-icon {\n width: 1.25em;\n height: 1.25em;\n }\n\n @media print {\n .e-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.85em;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ELink.js","names":["_sfc_main","ELink_vue_vue_type_script_setup_true_lang_default","ELink_default"],"sources":["../../../src/components/Link/ELink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Where the link goes. */\n href: string;\n /** Opens in a new tab (`target=\"_blank\"`, `rel=\"noreferrer\"`). */\n external?: boolean;\n /** An icon before the text: a built-in name, a name from your icon set, or an icon component. It is hidden from screen readers; the text names the link. */\n icon?: IconProp;\n}>();\n\ndefineSlots<{\n /** The link text: say where it goes. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <a\n class=\"e-link\"\n :class=\"icon && 'e-link--icon'\"\n :href=\"href\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noreferrer' : undefined\"\n >\n <EIcon v-if=\"icon\" :name=\"icon\" />\n <slot />\n </a>\n</template>\n\n<style>\n@layer e.primitives {\n .e-link {\n color: var(--e-primary);\n font-weight: 500;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-underline-offset: 4px;\n text-decoration-color: var(--e-primary);\n }\n\n .e-link:hover {\n color: var(--e-ink);\n text-decoration-color: var(--e-ink);\n }\n\n .e-link:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n border-radius: var(--e-radius-sm);\n }\n\n .e-link--icon {\n display: inline-flex;\n align-items: center;\n gap: var(--e-space-2);\n }\n\n .e-link--icon .e-icon {\n width: 1.25em;\n height: 1.25em;\n }\n\n @media print {\n .e-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.85em;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -2,9 +2,9 @@ import { IconProp } from '../../icons/types.js';
2
2
  type __VLS_Props = {
3
3
  /** Where the link goes. */
4
4
  href: string;
5
- /** Opens in a new tab. */
5
+ /** Opens in a new tab (`target="_blank"`, `rel="noreferrer"`). */
6
6
  external?: boolean;
7
- /** An icon before the text: a built-in name, a name from your icon set, or an icon component. */
7
+ /** An icon before the text: a built-in name, a name from your icon set, or an icon component. It is hidden from screen readers; the text names the link. */
8
8
  icon?: IconProp;
9
9
  };
10
10
  type __VLS_Slots = {
@@ -1 +1 @@
1
- {"version":3,"file":"ELink.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createBlock","EIcon","_createCommentVNode","_renderSlot","EIcon_default","_hoisted_1","ELink_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","normalizeClass","__props","createBlock","createCommentVNode","renderSlot","_ctx"],"sources":["../../../src/components/Link/ELink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Where the link goes. */\n href: string;\n /** Opens in a new tab. */\n external?: boolean;\n /** An icon before the text: a built-in name, a name from your icon set, or an icon component. */\n icon?: IconProp;\n}>();\n\ndefineSlots<{\n /** The link text: say where it goes. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <a\n class=\"e-link\"\n :class=\"icon && 'e-link--icon'\"\n :href=\"href\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noreferrer' : undefined\"\n >\n <EIcon v-if=\"icon\" :name=\"icon\" />\n <slot />\n </a>\n</template>\n\n<style>\n@layer e.primitives {\n .e-link {\n color: var(--e-primary);\n font-weight: 500;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-underline-offset: 4px;\n text-decoration-color: var(--e-primary);\n }\n\n .e-link:hover {\n color: var(--e-ink);\n text-decoration-color: var(--e-ink);\n }\n\n .e-link:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n border-radius: var(--e-radius-sm);\n }\n\n .e-link--icon {\n display: inline-flex;\n align-items: center;\n gap: var(--e-space-2);\n }\n\n .e-link--icon .e-icon {\n width: 1.25em;\n height: 1.25em;\n }\n\n @media print {\n .e-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.85em;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;E,kBAqBEA,EAAA,GAAAC,EASI,KAAA;GARF,OAAKC,EAAA,CAAC,UACEW,EAAA,QAAI,cAAA,CAAA;GACX,MAAMA,EAAA;GACN,QAAQA,EAAA,WAAQ,WAAc,KAAA;GAC9B,KAAKA,EAAA,WAAQ,eAAkB,KAAA;E,IAEnBA,EAAA,QAAbb,EAAA,GAAAG,EAAkCC,GAAA;;GAAd,MAAMS,EAAA;E,oCAC1BP,EAAQW,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"ELink.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createBlock","EIcon","_createCommentVNode","_renderSlot","EIcon_default","_hoisted_1","ELink_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","normalizeClass","__props","createBlock","createCommentVNode","renderSlot","_ctx"],"sources":["../../../src/components/Link/ELink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\ndefineProps<{\n /** Where the link goes. */\n href: string;\n /** Opens in a new tab (`target=\"_blank\"`, `rel=\"noreferrer\"`). */\n external?: boolean;\n /** An icon before the text: a built-in name, a name from your icon set, or an icon component. It is hidden from screen readers; the text names the link. */\n icon?: IconProp;\n}>();\n\ndefineSlots<{\n /** The link text: say where it goes. */\n default(): unknown;\n}>();\n</script>\n\n<template>\n <a\n class=\"e-link\"\n :class=\"icon && 'e-link--icon'\"\n :href=\"href\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noreferrer' : undefined\"\n >\n <EIcon v-if=\"icon\" :name=\"icon\" />\n <slot />\n </a>\n</template>\n\n<style>\n@layer e.primitives {\n .e-link {\n color: var(--e-primary);\n font-weight: 500;\n text-decoration: underline;\n text-decoration-thickness: var(--e-stroke-edge);\n text-underline-offset: 4px;\n text-decoration-color: var(--e-primary);\n }\n\n .e-link:hover {\n color: var(--e-ink);\n text-decoration-color: var(--e-ink);\n }\n\n .e-link:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n border-radius: var(--e-radius-sm);\n }\n\n .e-link--icon {\n display: inline-flex;\n align-items: center;\n gap: var(--e-space-2);\n }\n\n .e-link--icon .e-icon {\n width: 1.25em;\n height: 1.25em;\n }\n\n @media print {\n .e-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.85em;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;E,kBAqBEA,EAAA,GAAAC,EASI,KAAA;GARF,OAAKC,EAAA,CAAC,UACEW,EAAA,QAAI,cAAA,CAAA;GACX,MAAMA,EAAA;GACN,QAAQA,EAAA,WAAQ,WAAc,KAAA;GAC9B,KAAKA,EAAA,WAAQ,eAAkB,KAAA;E,IAEnBA,EAAA,QAAbb,EAAA,GAAAG,EAAkCC,GAAA;;GAAd,MAAMS,EAAA;E,oCAC1BP,EAAQW,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EMenu.js","names":["_sfc_main","EMenu_vue_vue_type_script_setup_true_lang_default","EMenu_default"],"sources":["../../../src/components/Menu/EMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch } from \"vue\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"reka-ui\";\nimport EButton from \"../Button/EButton.vue\";\nimport EDivider from \"../Divider/EDivider.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { usePortalTarget } from \"../../config.js\";\nimport \"../../styles/base.css\";\nimport \"../Select/panel.css\";\n\n/** An action in the menu. */\nexport interface EMenuAction {\n /** What the row says: a verb. */\n label: string;\n /** An icon before the label. */\n icon?: IconProp;\n /** Called when the row is chosen, after the menu closes. */\n onClick?: () => void;\n /** Red text for a destructive action. Put it last, after a divider. */\n danger?: boolean;\n /** Not choosable. Stays visible, muted. */\n disabled?: boolean;\n divider?: undefined;\n}\n/** A rule between groups of actions. */\nexport interface EMenuDivider {\n divider: true;\n}\nexport type EMenuItem = EMenuAction | EMenuDivider;\n\ndefineOptions({ inheritAttrs: false });\n\nwithDefaults(\n defineProps<{\n /** The button's text. With a `trigger` slot it is not shown; name your own trigger. */\n label: string;\n /** The actions, in order. `{ divider: true }` draws a rule. */\n items: readonly EMenuItem[];\n /** The look of the button. Default `outline`. */\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"danger\" | \"quiet\";\n /** An icon before the label. */\n icon?: IconProp;\n /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. Default `start`. */\n align?: \"start\" | \"end\";\n }>(),\n { variant: \"outline\", align: \"start\" },\n);\n\nconst emit = defineEmits<{\n /** An action was chosen. Also calls that item's own `onClick`. */\n select: [item: EMenuAction];\n}>();\n\ndefineSlots<{\n /** Your own trigger, one element that takes a click, such as a `button` around an avatar. It replaces the button; give it an accessible name. */\n trigger?(): unknown;\n}>();\n\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst portal = usePortalTarget();\n\nfunction choose(item: EMenuAction) {\n item.onClick?.();\n emit(\"select\", item);\n}\n\nlet byPerson = false;\nlet hadFocus = false;\nconst intent = () => (byPerson = true);\n\nwatch(\n open,\n (isOpen) => {\n if (!isOpen) hadFocus = !!document.activeElement?.closest(\"[role=menu]\");\n },\n { flush: \"sync\" },\n);\n\nfunction focusFirst(event: Event) {\n event.preventDefault();\n const content = event.target as HTMLElement | null;\n if (!byPerson) return;\n byPerson = false;\n requestAnimationFrame(() => {\n content?.querySelector<HTMLElement>(\"[role=menuitem]:not([data-disabled])\")?.focus({ preventScroll: true });\n });\n}\n\nfunction returnFocus(event: Event) {\n byPerson = false;\n if (!hadFocus) event.preventDefault();\n}\n</script>\n\n<template>\n <DropdownMenuRoot v-model:open=\"open\" :modal=\"false\">\n <DropdownMenuTrigger as-child @click=\"intent\" @keydown=\"intent\">\n <slot name=\"trigger\">\n <EButton :variant=\"variant\" :icon=\"icon\" v-bind=\"$attrs\">\n {{ label }}\n <EIcon name=\"chevron-down\" />\n </EButton>\n </slot>\n </DropdownMenuTrigger>\n <DropdownMenuPortal :to=\"portal\">\n <DropdownMenuContent\n class=\"e-popover e-menu e-root\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n loop\n @open-auto-focus=\"focusFirst\"\n @close-auto-focus=\"returnFocus\"\n >\n <template v-for=\"(item, i) in items\" :key=\"i\">\n <DropdownMenuSeparator v-if=\"item.divider\" as-child>\n <EDivider />\n </DropdownMenuSeparator>\n <DropdownMenuItem\n v-else\n class=\"e-menu-item\"\n :class=\"{ 'e-menu-item--danger': item.danger }\"\n :disabled=\"item.disabled\"\n @select=\"choose(item)\"\n >\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n {{ item.label }}\n </DropdownMenuItem>\n </template>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n\n<style>\n@layer e.containers {\n .e-menu {\n width: max-content;\n min-width: 12rem;\n max-width: min(20rem, calc(100vw - 32px));\n padding: var(--e-space-1);\n }\n\n .e-menu-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n width: 100%;\n height: var(--e-control-height);\n padding: 0 var(--e-space-3);\n border: 0;\n border-radius: var(--e-radius-sm);\n background: transparent;\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-align: start;\n cursor: pointer;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible {\n background: var(--e-surface-tint);\n outline: none;\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n }\n\n .e-menu-item--danger {\n color: var(--e-danger);\n }\n\n .e-menu-item[disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu .e-divider {\n margin: var(--e-space-1) 0;\n }\n\n .e-menu-item[data-highlighted] {\n background: var(--e-surface-tint);\n outline: none;\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n }\n\n .e-menu-item[data-disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n @media (forced-colors: active) {\n .e-menu-item[data-highlighted] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EMenu.js","names":["_sfc_main","EMenu_vue_vue_type_script_setup_true_lang_default","EMenu_default"],"sources":["../../../src/components/Menu/EMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch } from \"vue\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"reka-ui\";\nimport EButton from \"../Button/EButton.vue\";\nimport EDivider from \"../Divider/EDivider.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { usePortalTarget } from \"../../config.js\";\nimport \"../../styles/base.css\";\nimport \"../Select/panel.css\";\n\n/** An action in the menu. */\nexport interface EMenuAction {\n /** What the row says: a verb. */\n label: string;\n /** An icon before the label. */\n icon?: IconProp;\n /** Called when the row is chosen, after the menu closes. */\n onClick?: () => void;\n /** Red text for a destructive action. Put it last, after a divider. */\n danger?: boolean;\n /** Not choosable. Stays visible, muted. */\n disabled?: boolean;\n divider?: undefined;\n}\n/** A rule between groups of actions. */\nexport interface EMenuDivider {\n divider: true;\n}\nexport type EMenuItem = EMenuAction | EMenuDivider;\n\ndefineOptions({ inheritAttrs: false });\n\nwithDefaults(\n defineProps<{\n /** The button's text. With a `trigger` slot it is not shown; name your own trigger. */\n label: string;\n /** The actions, in order. Action: `{ label, icon?, onClick?, danger?, disabled? }`; `{ divider: true }` draws a rule. Put destructive last. */\n items: readonly EMenuItem[];\n /** The look of the button. */\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"danger\" | \"quiet\";\n /** An icon before the label. */\n icon?: IconProp;\n /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. */\n align?: \"start\" | \"end\";\n }>(),\n { variant: \"outline\", align: \"start\" },\n);\n\nconst emit = defineEmits<{\n /** An action was chosen. Also calls that item's own `onClick`. */\n select: [item: EMenuAction];\n}>();\n\ndefineSlots<{\n /** Your own trigger, one element that takes a click, such as a `button` around an avatar. It replaces the button; give it an accessible name. */\n trigger?(): unknown;\n}>();\n\n/** The open state. Opening it from outside moves no focus. */\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst portal = usePortalTarget();\n\nfunction choose(item: EMenuAction) {\n item.onClick?.();\n emit(\"select\", item);\n}\n\nlet byPerson = false;\nlet hadFocus = false;\nconst intent = () => (byPerson = true);\n\nwatch(\n open,\n (isOpen) => {\n if (!isOpen) hadFocus = !!document.activeElement?.closest(\"[role=menu]\");\n },\n { flush: \"sync\" },\n);\n\nfunction focusFirst(event: Event) {\n event.preventDefault();\n const content = event.target as HTMLElement | null;\n if (!byPerson) return;\n byPerson = false;\n requestAnimationFrame(() => {\n content?.querySelector<HTMLElement>(\"[role=menuitem]:not([data-disabled])\")?.focus({ preventScroll: true });\n });\n}\n\nfunction returnFocus(event: Event) {\n byPerson = false;\n if (!hadFocus) event.preventDefault();\n}\n</script>\n\n<template>\n <DropdownMenuRoot v-model:open=\"open\" :modal=\"false\">\n <DropdownMenuTrigger as-child @click=\"intent\" @keydown=\"intent\">\n <slot name=\"trigger\">\n <EButton :variant=\"variant\" :icon=\"icon\" v-bind=\"$attrs\">\n {{ label }}\n <EIcon name=\"chevron-down\" />\n </EButton>\n </slot>\n </DropdownMenuTrigger>\n <DropdownMenuPortal :to=\"portal\">\n <DropdownMenuContent\n class=\"e-popover e-menu e-root\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n loop\n @open-auto-focus=\"focusFirst\"\n @close-auto-focus=\"returnFocus\"\n >\n <template v-for=\"(item, i) in items\" :key=\"i\">\n <DropdownMenuSeparator v-if=\"item.divider\" as-child>\n <EDivider />\n </DropdownMenuSeparator>\n <DropdownMenuItem\n v-else\n class=\"e-menu-item\"\n :class=\"{ 'e-menu-item--danger': item.danger }\"\n :disabled=\"item.disabled\"\n @select=\"choose(item)\"\n >\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n {{ item.label }}\n </DropdownMenuItem>\n </template>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n\n<style>\n@layer e.containers {\n .e-menu {\n width: max-content;\n min-width: 12rem;\n max-width: min(20rem, calc(100vw - 2 * var(--e-space-4)));\n padding: var(--e-space-1);\n }\n\n .e-menu-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n width: 100%;\n height: var(--e-control-height);\n padding: 0 var(--e-space-3);\n border: 0;\n border-radius: var(--e-radius-sm);\n background: transparent;\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-align: start;\n cursor: pointer;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible,\n .e-menu-item[data-highlighted] {\n background: var(--e-surface-hover);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-border-strong);\n outline: var(--e-stroke-card) solid var(--e-border-strong);\n outline-offset: calc(-1 * var(--e-stroke-card));\n }\n\n .e-menu-item--danger {\n color: var(--e-danger);\n }\n\n .e-menu-item[disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu .e-divider {\n margin: var(--e-space-1) 0;\n }\n\n .e-menu-item[data-disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu-item[disabled]:hover,\n .e-menu-item[data-disabled][data-highlighted] {\n background: transparent;\n box-shadow: none;\n outline: 0;\n }\n\n @media (forced-colors: active) {\n .e-menu-item[disabled],\n .e-menu-item[data-disabled] {\n color: GrayText;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible,\n .e-menu-item[data-highlighted] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -21,13 +21,13 @@ export type EMenuItem = EMenuAction | EMenuDivider;
21
21
  type __VLS_Props = {
22
22
  /** The button's text. With a `trigger` slot it is not shown; name your own trigger. */
23
23
  label: string;
24
- /** The actions, in order. `{ divider: true }` draws a rule. */
24
+ /** The actions, in order. Action: `{ label, icon?, onClick?, danger?, disabled? }`; `{ divider: true }` draws a rule. Put destructive last. */
25
25
  items: readonly EMenuItem[];
26
- /** The look of the button. Default `outline`. */
26
+ /** The look of the button. */
27
27
  variant?: "primary" | "secondary" | "outline" | "danger" | "quiet";
28
28
  /** An icon before the label. */
29
29
  icon?: IconProp;
30
- /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. Default `start`. */
30
+ /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. */
31
31
  align?: "start" | "end";
32
32
  };
33
33
  type __VLS_Slots = {
@@ -35,6 +35,7 @@ type __VLS_Slots = {
35
35
  trigger?(): unknown;
36
36
  };
37
37
  type __VLS_ModelProps = {
38
+ /** The open state. Opening it from outside moves no focus. */
38
39
  "open"?: boolean;
39
40
  };
40
41
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
@@ -1,8 +1,8 @@
1
1
  /* empty css */
2
2
  import { usePortalTarget as e } from "../../config.js";
3
3
  import t from "../Icon/EIcon.js";
4
- /* empty css */
5
4
  import n from "../Button/EButton.js";
5
+ /* empty css */
6
6
  import r from "../Divider/EDivider.js";
7
7
  import { Fragment as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createTextVNode as c, createVNode as l, defineComponent as u, mergeModels as d, mergeProps as f, normalizeClass as p, openBlock as m, renderList as h, renderSlot as g, toDisplayString as _, unref as v, useModel as y, watch as b, withCtx as x } from "vue";
8
8
  import { DropdownMenuContent as S, DropdownMenuItem as C, DropdownMenuPortal as w, DropdownMenuRoot as T, DropdownMenuSeparator as E, DropdownMenuTrigger as D } from "reka-ui";
@@ -1 +1 @@
1
- {"version":3,"file":"EMenu.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_renderSlot","EButton","_mergeProps","_createTextVNode","_toDisplayString","EIcon","_createElementBlock","_Fragment","_renderList","EDivider","_normalizeClass","_createCommentVNode","EIcon_default","EButton_default","EDivider_default","EMenu_vue_vue_type_script_setup_true_lang_default","\"open\"","\"openModifiers\"","__emit","emit","open","useModel","__props","portal","usePortalTarget","choose","item","byPerson","hadFocus","intent","isOpen","focusFirst","content","event","returnFocus","openBlock","createBlock","unref","DropdownMenuRoot","_cache","$event","withCtx","createVNode","DropdownMenuTrigger","renderSlot","_ctx","mergeProps","createTextVNode","toDisplayString","DropdownMenuPortal","DropdownMenuContent","createElementBlock","Fragment","renderList","i","DropdownMenuSeparator","DropdownMenuItem","normalizeClass","createCommentVNode"],"sources":["../../../src/components/Menu/EMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch } from \"vue\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"reka-ui\";\nimport EButton from \"../Button/EButton.vue\";\nimport EDivider from \"../Divider/EDivider.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { usePortalTarget } from \"../../config.js\";\nimport \"../../styles/base.css\";\nimport \"../Select/panel.css\";\n\n/** An action in the menu. */\nexport interface EMenuAction {\n /** What the row says: a verb. */\n label: string;\n /** An icon before the label. */\n icon?: IconProp;\n /** Called when the row is chosen, after the menu closes. */\n onClick?: () => void;\n /** Red text for a destructive action. Put it last, after a divider. */\n danger?: boolean;\n /** Not choosable. Stays visible, muted. */\n disabled?: boolean;\n divider?: undefined;\n}\n/** A rule between groups of actions. */\nexport interface EMenuDivider {\n divider: true;\n}\nexport type EMenuItem = EMenuAction | EMenuDivider;\n\ndefineOptions({ inheritAttrs: false });\n\nwithDefaults(\n defineProps<{\n /** The button's text. With a `trigger` slot it is not shown; name your own trigger. */\n label: string;\n /** The actions, in order. `{ divider: true }` draws a rule. */\n items: readonly EMenuItem[];\n /** The look of the button. Default `outline`. */\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"danger\" | \"quiet\";\n /** An icon before the label. */\n icon?: IconProp;\n /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. Default `start`. */\n align?: \"start\" | \"end\";\n }>(),\n { variant: \"outline\", align: \"start\" },\n);\n\nconst emit = defineEmits<{\n /** An action was chosen. Also calls that item's own `onClick`. */\n select: [item: EMenuAction];\n}>();\n\ndefineSlots<{\n /** Your own trigger, one element that takes a click, such as a `button` around an avatar. It replaces the button; give it an accessible name. */\n trigger?(): unknown;\n}>();\n\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst portal = usePortalTarget();\n\nfunction choose(item: EMenuAction) {\n item.onClick?.();\n emit(\"select\", item);\n}\n\nlet byPerson = false;\nlet hadFocus = false;\nconst intent = () => (byPerson = true);\n\nwatch(\n open,\n (isOpen) => {\n if (!isOpen) hadFocus = !!document.activeElement?.closest(\"[role=menu]\");\n },\n { flush: \"sync\" },\n);\n\nfunction focusFirst(event: Event) {\n event.preventDefault();\n const content = event.target as HTMLElement | null;\n if (!byPerson) return;\n byPerson = false;\n requestAnimationFrame(() => {\n content?.querySelector<HTMLElement>(\"[role=menuitem]:not([data-disabled])\")?.focus({ preventScroll: true });\n });\n}\n\nfunction returnFocus(event: Event) {\n byPerson = false;\n if (!hadFocus) event.preventDefault();\n}\n</script>\n\n<template>\n <DropdownMenuRoot v-model:open=\"open\" :modal=\"false\">\n <DropdownMenuTrigger as-child @click=\"intent\" @keydown=\"intent\">\n <slot name=\"trigger\">\n <EButton :variant=\"variant\" :icon=\"icon\" v-bind=\"$attrs\">\n {{ label }}\n <EIcon name=\"chevron-down\" />\n </EButton>\n </slot>\n </DropdownMenuTrigger>\n <DropdownMenuPortal :to=\"portal\">\n <DropdownMenuContent\n class=\"e-popover e-menu e-root\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n loop\n @open-auto-focus=\"focusFirst\"\n @close-auto-focus=\"returnFocus\"\n >\n <template v-for=\"(item, i) in items\" :key=\"i\">\n <DropdownMenuSeparator v-if=\"item.divider\" as-child>\n <EDivider />\n </DropdownMenuSeparator>\n <DropdownMenuItem\n v-else\n class=\"e-menu-item\"\n :class=\"{ 'e-menu-item--danger': item.danger }\"\n :disabled=\"item.disabled\"\n @select=\"choose(item)\"\n >\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n {{ item.label }}\n </DropdownMenuItem>\n </template>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n\n<style>\n@layer e.containers {\n .e-menu {\n width: max-content;\n min-width: 12rem;\n max-width: min(20rem, calc(100vw - 32px));\n padding: var(--e-space-1);\n }\n\n .e-menu-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n width: 100%;\n height: var(--e-control-height);\n padding: 0 var(--e-space-3);\n border: 0;\n border-radius: var(--e-radius-sm);\n background: transparent;\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-align: start;\n cursor: pointer;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible {\n background: var(--e-surface-tint);\n outline: none;\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n }\n\n .e-menu-item--danger {\n color: var(--e-danger);\n }\n\n .e-menu-item[disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu .e-divider {\n margin: var(--e-space-1) 0;\n }\n\n .e-menu-item[data-highlighted] {\n background: var(--e-surface-tint);\n outline: none;\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n }\n\n .e-menu-item[data-disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n @media (forced-colors: active) {\n .e-menu-item[data-highlighted] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDA,IAAM0B,IAAOD,GAUPE,IAAO1B,EAAoB4B,GAAC,MAA0B,GAEtDC,IAASC,EAAgB;EAE/B,SAASC,EAAO,GAAmB;GAEjC,AADAC,EAAK,UAAU,GACfP,EAAK,UAAUO,CAAI;EACrB;EAEA,IAAIC,IAAW,IACXC,IAAW,IACTC,UAAgB,IAAW;EAEjC,EACET,IACC,MAAW;GACV,AAAKU,MAAQ,IAAW,CAAC,CAAC,SAAS,eAAe,QAAQ,aAAa;EACzE,GACA,EAAE,OAAO,OAAO,CAClB;EAEA,SAASC,EAAW,GAAc;GAChC,EAAM,eAAe;GACrB,IAAMC,IAAUC,EAAM;GACtB,AAAKN,MACL,IAAW,IACX,4BAA4B;IAC1B,GAAS,cAA2B,sCAAsC,CAAC,EAAE,MAAM,EAAE,eAAe,GAAK,CAAC;GAC5G,CAAC;EACH;EAEA,SAASO,EAAY,GAAc;GAEjC,AADA,IAAW,IACNN,KAAUK,EAAM,eAAe;EACtC;E,kBAIEtC,EAAA,GAAAC,EAoCmBC,EAAAyC,CAAA,GAAA;GApCO,MAAMlB,EAAA;GAAA,iBAAA,AAAAmB,EAAA,QAAA,MAAA,EAAI,QAAAC;GAAG,OAAO;;GAC5C,SAAA1C,QAOsB,CAPtBC,EAOsBF,EAAA8C,CAAA,GAAA;IAPD,YAAA;IAAU,SAAOd;IAAS,WAASA;;IACtD,SAAA/B,QAKO,CALPE,EAKO6C,EAAA,QAAA,WAAA,CAAA,SAAA,CAJL9C,EAGUE,GAHVC,EAGU;KAHA,SAASoB,EAAA;KAAU,MAAMA,EAAA;IAAc7B,GAAAA,EAAAA,MAAM,GAAA;KACrD,SAAAK,QAAW,CAARK,EAAAC,EAAAkB,EAAA,KAAK,IAAG,KACX,CAAA,GAAAvB,EAA6BM,GAAA,EAAtB,MAAK,eAAc,CAAA,C;;;;G,IAIhCN,EA0BqBF,EAAAoD,CAAA,GAAA,EA1BA,IAAIpD,EAAA0B,CAAA,EAAM,GAAA;IAC7B,SAAAzB,QAwBsB,CAxBtBC,EAwBsBF,EAAAqD,CAAA,GAAA;KAvBpB,OAAM;KACL,OAAO5B,EAAA;KACP,eAAa;KACb,qBAAmB;KACpB,MAAA;KACC,iBAAiBS;KACjB,kBAAkBG;;KAET,SAAApC,QAA0B,EAApCH,EAAA,EAAA,GAAAW,EAcWC,GAAA,MAAAC,EAdmBc,EAAA,QAAZ,GAAM,OAAmB3B,EAAA,GAAAW,EAAAC,GAAA,EAAA,KAAA+C,EAAC,GAAA,CACb5B,EAAK,WAAlC/B,EAAA,GAAAC,EAEwBC,EAAA0D,CAAA,GAAA;;MAFmB,YAAA;;MACzC,SAAAzD,QAAY,CAAZC,EAAYU,CAAA,C;;K,OAEdd,EAAA,GAAAC,EASmBC,EAAA2D,CAAA,GAAA;;MAPjB,OAAK9C,EAAA,CAAC,eAAa,EAAA,uBACcgB,EAAK,OAAM,CAAA,CAAA;MAC3C,UAAUA,EAAK;MACf,WAAM,MAAED,EAAOC,CAAI;;MAEpB,SAAA5B,QAA4C,CAA/B4B,EAAK,QAAlB/B,EAAA,GAAAC,EAA4CS,GAAA;;OAAnB,MAAMqB,EAAK;M,oCAAQvB,EAAA,MAC5CC,EAAGsB,EAAK,KAAK,GAAA,CAAA,C"}
1
+ {"version":3,"file":"EMenu.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_renderSlot","EButton","_mergeProps","_createTextVNode","_toDisplayString","EIcon","_createElementBlock","_Fragment","_renderList","EDivider","_normalizeClass","_createCommentVNode","EIcon_default","EButton_default","EDivider_default","EMenu_vue_vue_type_script_setup_true_lang_default","\"open\"","\"openModifiers\"","__emit","emit","open","useModel","__props","portal","usePortalTarget","choose","item","byPerson","hadFocus","intent","isOpen","focusFirst","content","event","returnFocus","openBlock","createBlock","unref","DropdownMenuRoot","_cache","$event","withCtx","createVNode","DropdownMenuTrigger","renderSlot","_ctx","mergeProps","createTextVNode","toDisplayString","DropdownMenuPortal","DropdownMenuContent","createElementBlock","Fragment","renderList","i","DropdownMenuSeparator","DropdownMenuItem","normalizeClass","createCommentVNode"],"sources":["../../../src/components/Menu/EMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch } from \"vue\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"reka-ui\";\nimport EButton from \"../Button/EButton.vue\";\nimport EDivider from \"../Divider/EDivider.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { usePortalTarget } from \"../../config.js\";\nimport \"../../styles/base.css\";\nimport \"../Select/panel.css\";\n\n/** An action in the menu. */\nexport interface EMenuAction {\n /** What the row says: a verb. */\n label: string;\n /** An icon before the label. */\n icon?: IconProp;\n /** Called when the row is chosen, after the menu closes. */\n onClick?: () => void;\n /** Red text for a destructive action. Put it last, after a divider. */\n danger?: boolean;\n /** Not choosable. Stays visible, muted. */\n disabled?: boolean;\n divider?: undefined;\n}\n/** A rule between groups of actions. */\nexport interface EMenuDivider {\n divider: true;\n}\nexport type EMenuItem = EMenuAction | EMenuDivider;\n\ndefineOptions({ inheritAttrs: false });\n\nwithDefaults(\n defineProps<{\n /** The button's text. With a `trigger` slot it is not shown; name your own trigger. */\n label: string;\n /** The actions, in order. Action: `{ label, icon?, onClick?, danger?, disabled? }`; `{ divider: true }` draws a rule. Put destructive last. */\n items: readonly EMenuItem[];\n /** The look of the button. */\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"danger\" | \"quiet\";\n /** An icon before the label. */\n icon?: IconProp;\n /** Which edge of the trigger the menu lines up with. Use `end` for a trigger at the end of a bar. */\n align?: \"start\" | \"end\";\n }>(),\n { variant: \"outline\", align: \"start\" },\n);\n\nconst emit = defineEmits<{\n /** An action was chosen. Also calls that item's own `onClick`. */\n select: [item: EMenuAction];\n}>();\n\ndefineSlots<{\n /** Your own trigger, one element that takes a click, such as a `button` around an avatar. It replaces the button; give it an accessible name. */\n trigger?(): unknown;\n}>();\n\n/** The open state. Opening it from outside moves no focus. */\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst portal = usePortalTarget();\n\nfunction choose(item: EMenuAction) {\n item.onClick?.();\n emit(\"select\", item);\n}\n\nlet byPerson = false;\nlet hadFocus = false;\nconst intent = () => (byPerson = true);\n\nwatch(\n open,\n (isOpen) => {\n if (!isOpen) hadFocus = !!document.activeElement?.closest(\"[role=menu]\");\n },\n { flush: \"sync\" },\n);\n\nfunction focusFirst(event: Event) {\n event.preventDefault();\n const content = event.target as HTMLElement | null;\n if (!byPerson) return;\n byPerson = false;\n requestAnimationFrame(() => {\n content?.querySelector<HTMLElement>(\"[role=menuitem]:not([data-disabled])\")?.focus({ preventScroll: true });\n });\n}\n\nfunction returnFocus(event: Event) {\n byPerson = false;\n if (!hadFocus) event.preventDefault();\n}\n</script>\n\n<template>\n <DropdownMenuRoot v-model:open=\"open\" :modal=\"false\">\n <DropdownMenuTrigger as-child @click=\"intent\" @keydown=\"intent\">\n <slot name=\"trigger\">\n <EButton :variant=\"variant\" :icon=\"icon\" v-bind=\"$attrs\">\n {{ label }}\n <EIcon name=\"chevron-down\" />\n </EButton>\n </slot>\n </DropdownMenuTrigger>\n <DropdownMenuPortal :to=\"portal\">\n <DropdownMenuContent\n class=\"e-popover e-menu e-root\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n loop\n @open-auto-focus=\"focusFirst\"\n @close-auto-focus=\"returnFocus\"\n >\n <template v-for=\"(item, i) in items\" :key=\"i\">\n <DropdownMenuSeparator v-if=\"item.divider\" as-child>\n <EDivider />\n </DropdownMenuSeparator>\n <DropdownMenuItem\n v-else\n class=\"e-menu-item\"\n :class=\"{ 'e-menu-item--danger': item.danger }\"\n :disabled=\"item.disabled\"\n @select=\"choose(item)\"\n >\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n {{ item.label }}\n </DropdownMenuItem>\n </template>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n\n<style>\n@layer e.containers {\n .e-menu {\n width: max-content;\n min-width: 12rem;\n max-width: min(20rem, calc(100vw - 2 * var(--e-space-4)));\n padding: var(--e-space-1);\n }\n\n .e-menu-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n width: 100%;\n height: var(--e-control-height);\n padding: 0 var(--e-space-3);\n border: 0;\n border-radius: var(--e-radius-sm);\n background: transparent;\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-align: start;\n cursor: pointer;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible,\n .e-menu-item[data-highlighted] {\n background: var(--e-surface-hover);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-border-strong);\n outline: var(--e-stroke-card) solid var(--e-border-strong);\n outline-offset: calc(-1 * var(--e-stroke-card));\n }\n\n .e-menu-item--danger {\n color: var(--e-danger);\n }\n\n .e-menu-item[disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu .e-divider {\n margin: var(--e-space-1) 0;\n }\n\n .e-menu-item[data-disabled] {\n color: var(--e-muted);\n cursor: not-allowed;\n }\n\n .e-menu-item[disabled]:hover,\n .e-menu-item[data-disabled][data-highlighted] {\n background: transparent;\n box-shadow: none;\n outline: 0;\n }\n\n @media (forced-colors: active) {\n .e-menu-item[disabled],\n .e-menu-item[data-disabled] {\n color: GrayText;\n }\n\n .e-menu-item:hover,\n .e-menu-item:focus-visible,\n .e-menu-item[data-highlighted] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDA,IAAM0B,IAAOD,GAWPE,IAAO1B,EAAoB4B,GAAC,MAA0B,GAEtDC,IAASC,EAAgB;EAE/B,SAASC,EAAO,GAAmB;GAEjC,AADAC,EAAK,UAAU,GACfP,EAAK,UAAUO,CAAI;EACrB;EAEA,IAAIC,IAAW,IACXC,IAAW,IACTC,UAAgB,IAAW;EAEjC,EACET,IACC,MAAW;GACV,AAAKU,MAAQ,IAAW,CAAC,CAAC,SAAS,eAAe,QAAQ,aAAa;EACzE,GACA,EAAE,OAAO,OAAO,CAClB;EAEA,SAASC,EAAW,GAAc;GAChC,EAAM,eAAe;GACrB,IAAMC,IAAUC,EAAM;GACtB,AAAKN,MACL,IAAW,IACX,4BAA4B;IAC1B,GAAS,cAA2B,sCAAsC,CAAC,EAAE,MAAM,EAAE,eAAe,GAAK,CAAC;GAC5G,CAAC;EACH;EAEA,SAASO,EAAY,GAAc;GAEjC,AADA,IAAW,IACNN,KAAUK,EAAM,eAAe;EACtC;E,kBAIEtC,EAAA,GAAAC,EAoCmBC,EAAAyC,CAAA,GAAA;GApCO,MAAMlB,EAAA;GAAA,iBAAA,AAAAmB,EAAA,QAAA,MAAA,EAAI,QAAAC;GAAG,OAAO;;GAC5C,SAAA1C,QAOsB,CAPtBC,EAOsBF,EAAA8C,CAAA,GAAA;IAPD,YAAA;IAAU,SAAOd;IAAS,WAASA;;IACtD,SAAA/B,QAKO,CALPE,EAKO6C,EAAA,QAAA,WAAA,CAAA,SAAA,CAJL9C,EAGUE,GAHVC,EAGU;KAHA,SAASoB,EAAA;KAAU,MAAMA,EAAA;IAAc7B,GAAAA,EAAAA,MAAM,GAAA;KACrD,SAAAK,QAAW,CAARK,EAAAC,EAAAkB,EAAA,KAAK,IAAG,KACX,CAAA,GAAAvB,EAA6BM,GAAA,EAAtB,MAAK,eAAc,CAAA,C;;;;G,IAIhCN,EA0BqBF,EAAAoD,CAAA,GAAA,EA1BA,IAAIpD,EAAA0B,CAAA,EAAM,GAAA;IAC7B,SAAAzB,QAwBsB,CAxBtBC,EAwBsBF,EAAAqD,CAAA,GAAA;KAvBpB,OAAM;KACL,OAAO5B,EAAA;KACP,eAAa;KACb,qBAAmB;KACpB,MAAA;KACC,iBAAiBS;KACjB,kBAAkBG;;KAET,SAAApC,QAA0B,EAApCH,EAAA,EAAA,GAAAW,EAcWC,GAAA,MAAAC,EAdmBc,EAAA,QAAZ,GAAM,OAAmB3B,EAAA,GAAAW,EAAAC,GAAA,EAAA,KAAA+C,EAAC,GAAA,CACb5B,EAAK,WAAlC/B,EAAA,GAAAC,EAEwBC,EAAA0D,CAAA,GAAA;;MAFmB,YAAA;;MACzC,SAAAzD,QAAY,CAAZC,EAAYU,CAAA,C;;K,OAEdd,EAAA,GAAAC,EASmBC,EAAA2D,CAAA,GAAA;;MAPjB,OAAK9C,EAAA,CAAC,eAAa,EAAA,uBACcgB,EAAK,OAAM,CAAA,CAAA;MAC3C,UAAUA,EAAK;MACf,WAAM,MAAED,EAAOC,CAAI;;MAEpB,SAAA5B,QAA4C,CAA/B4B,EAAK,QAAlB/B,EAAA,GAAAC,EAA4CS,GAAA;;OAAnB,MAAMqB,EAAK;M,oCAAQvB,EAAA,MAC5CC,EAAGsB,EAAK,KAAK,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ENavList.js","names":["_sfc_main","ENavList_vue_vue_type_script_setup_true_lang_default","ENavList_default"],"sources":["../../../src/components/NavList/ENavList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, type Component } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport LinkNav, { type LinkItem, type LinkSection } from \"../Tabs/LinkNav.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\nexport interface NavItem extends LinkItem {\n /** An icon before the label. */\n icon?: IconProp;\n /** A count of things waiting on the person (bills to pay, forms to sign). */\n count?: number;\n}\n\nexport type NavSection = LinkSection<NavItem>;\n\nconst props = withDefaults(\n defineProps<{\n /** The destinations, in order. */\n items?: NavItem[];\n /** Destinations in labelled groups, instead of `items`. Give a heading only when there is more than one section. */\n sections?: NavSection[];\n /** Shorter rows and smaller words, for a long list such as the pages of a documentation site. */\n dense?: boolean;\n /** `vertical` stacks the links, for a sidebar or a menu. `horizontal` lays them in a row, for a header: muted words, a bar under each, a heavier bar under the current page. */\n orientation?: \"vertical\" | \"horizontal\";\n /** The landmark's name, so a page with two navigations tells them apart. Defaults to \"Main\". */\n label?: string;\n /** What renders each link: `\"a\"` by default, or `RouterLink` (or any component that takes `href` or `to` and a default slot). */\n linkComponent?: string | Component;\n }>(),\n { orientation: \"vertical\", linkComponent: \"a\" },\n);\n\nconst groups = computed<NavSection[]>(() => props.sections ?? [{ items: props.items ?? [] }]);\n</script>\n\n<template>\n <LinkNav\n class=\"e-nav\"\n :class=\"[dense && 'e-nav--dense', orientation === 'horizontal' && 'e-nav--horizontal']\"\n :groups=\"groups\"\n :label=\"label\"\n :link-component=\"linkComponent\"\n item-class=\"e-nav-item\"\n heading-class=\"e-nav-heading\"\n >\n <template #item=\"{ item }\">\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n <span class=\"e-nav-label\">{{ item.label }}</span>\n <span v-if=\"item.count != null\" class=\"e-nav-count\">{{ item.count }}</span>\n </template>\n </LinkNav>\n</template>\n\n<style>\n@layer e.page {\n .e-nav ul {\n display: grid;\n gap: 2px;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-nav-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-3);\n height: var(--e-control-height);\n padding: 0 var(--e-space-3);\n border-radius: var(--e-radius-md);\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-decoration: none;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-nav-item:hover {\n background: var(--e-surface-tint);\n }\n\n .e-nav-item:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-nav:not(.e-nav--dense, .e-nav--horizontal) .e-nav-item {\n box-sizing: border-box;\n border: var(--e-stroke-edge) solid transparent;\n }\n\n .e-nav-item[aria-current=\"page\"] {\n background: color-mix(in srgb, var(--e-surface-tint), var(--e-ink) 3%);\n font-weight: 600;\n }\n\n .e-nav:not(.e-nav--dense, .e-nav--horizontal) .e-nav-item[aria-current=\"page\"] {\n border-color: var(--e-border-strong);\n border-top-width: calc(var(--e-stroke-edge) + var(--e-depth));\n }\n\n .e-nav-label {\n flex: 1;\n min-width: 0;\n }\n\n .e-nav--dense .e-nav-item {\n position: relative;\n height: 2.25rem;\n gap: var(--e-space-2);\n border-radius: 0;\n box-shadow: inset 2px 0 0 transparent;\n color: var(--e-muted);\n font-size: var(--e-text-sm);\n }\n\n .e-nav--dense .e-nav-item::after {\n content: \"\";\n position: absolute;\n inset-block: -4px;\n inset-inline: 0;\n }\n\n .e-nav--dense .e-nav-item:hover {\n background: transparent;\n box-shadow: inset 2px 0 0 var(--e-border-strong);\n color: var(--e-ink);\n }\n\n .e-nav--dense .e-nav-item[aria-current=\"page\"] {\n background: var(--e-surface-tint);\n box-shadow: inset 3px 0 0 var(--e-primary);\n color: var(--e-primary);\n font-weight: 600;\n }\n\n .e-nav--dense .e-nav-heading {\n margin-top: var(--e-space-4);\n padding-top: var(--e-space-4);\n border-top: var(--e-stroke-hair) solid var(--e-border);\n }\n\n .e-nav--dense > .e-nav-heading:first-child {\n padding-top: 0;\n border-top: 0;\n }\n\n .e-nav--horizontal {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-nav--horizontal ul {\n display: flex;\n flex-wrap: wrap;\n gap: var(--e-space-2);\n }\n\n .e-nav--horizontal .e-nav-heading {\n margin: 0;\n padding-inline: 0;\n }\n\n .e-nav--horizontal .e-nav-item {\n height: 2.5rem;\n border-radius: 0;\n background: transparent;\n box-shadow: inset 0 -2px 0 transparent;\n color: var(--e-muted);\n font-size: var(--e-text-sm);\n }\n\n .e-nav--horizontal .e-nav-item:hover {\n background: transparent;\n box-shadow: inset 0 -2px 0 var(--e-border-strong);\n color: var(--e-ink);\n }\n\n .e-nav--horizontal .e-nav-item[aria-current=\"page\"] {\n background: var(--e-surface-tint);\n box-shadow: inset 0 -3px 0 var(--e-primary);\n color: var(--e-primary);\n font-weight: 600;\n }\n\n .e-nav--horizontal.e-nav--dense .e-nav-item {\n height: 2.25rem;\n }\n\n .e-nav-count {\n min-width: 22px;\n padding: 0 6px;\n border-radius: var(--e-radius-pill);\n background: var(--e-surface);\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n font: 600 var(--e-text-xs) / 20px var(--e-font-mono);\n text-align: center;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-nav-item {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-nav--horizontal .e-nav-item[aria-current=\"page\"] {\n border-block-end: 3px solid Highlight;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ENavList.js","names":["_sfc_main","ENavList_vue_vue_type_script_setup_true_lang_default","ENavList_default"],"sources":["../../../src/components/NavList/ENavList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, type Component } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport LinkNav, { type LinkItem, type LinkSection } from \"./LinkNav.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport \"../../styles/base.css\";\n\nexport interface NavItem extends LinkItem {\n /** An icon before the label. */\n icon?: IconProp;\n /** A count of things waiting on the person (bills to pay, forms to sign). */\n count?: number;\n}\n\nexport type NavSection = LinkSection<NavItem>;\n\nconst props = withDefaults(\n defineProps<{\n /** The destinations, in order: `{ label, href?, to?, icon?, count?, current? }`. With no `href` or `to` a link goes to `#`. Set `current` yourself. */\n items?: NavItem[];\n /** Destinations in labelled groups, instead of `items`: `{ label?, items }`. Give a label only when there is more than one section. */\n sections?: NavSection[];\n /** `vertical` stacks the links, for a sidebar or a menu. `horizontal` lays them in a row, for a header, with a hairline between each. Items look the same as in the vertical list: a tint on hover, and a primary outline with a heavier bottom edge on the current page. */\n orientation?: \"vertical\" | \"horizontal\";\n /** The landmark's name; give each navigation on a page its own. @default \"Main\" */\n label?: string;\n /** What renders each link: `\"a\"` by default, or `RouterLink` (or any component that takes `href` or `to` and a default slot). Give items `to`; it receives `to` or `href`, the class `e-nav-item` and `aria-current`. */\n linkComponent?: string | Component;\n }>(),\n { orientation: \"vertical\", linkComponent: \"a\" },\n);\n\nconst groups = computed<NavSection[]>(() => props.sections ?? [{ items: props.items ?? [] }]);\n</script>\n\n<template>\n <LinkNav\n class=\"e-nav\"\n :class=\"orientation === 'horizontal' && 'e-nav--horizontal'\"\n :groups=\"groups\"\n :label=\"label\"\n :link-component=\"linkComponent\"\n item-class=\"e-nav-item\"\n heading-class=\"e-nav-heading\"\n >\n <template #item=\"{ item }\">\n <EIcon v-if=\"item.icon\" :name=\"item.icon\" />\n <span class=\"e-nav-label\">{{ item.label }}</span>\n <span v-if=\"item.count != null\" class=\"e-nav-count\">{{ item.count }}</span>\n </template>\n </LinkNav>\n</template>\n\n<style>\n@layer e.page {\n .e-nav ul {\n display: grid;\n gap: calc(var(--e-space-1) / 2);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-nav:not(.e-nav--horizontal) ul {\n gap: 0;\n }\n\n .e-nav:not(.e-nav--horizontal) li + li::before {\n content: \"\";\n display: block;\n height: var(--e-stroke-hair);\n margin-block: var(--e-space-2);\n background: color-mix(in srgb, var(--e-border) 60%, transparent);\n }\n\n .e-nav-item {\n display: flex;\n align-items: center;\n gap: var(--e-space-3);\n height: var(--e-control-height);\n box-sizing: border-box;\n padding: 0 var(--e-space-3);\n border: var(--e-stroke-edge) solid transparent;\n border-radius: var(--e-radius-md);\n color: var(--e-ink);\n font: 400 var(--e-text-md) / 1 var(--e-font-sans);\n text-decoration: none;\n transition: background-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-nav-item:hover {\n background: var(--e-surface-hover);\n }\n\n .e-nav-item:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-nav-item[aria-current=\"page\"] {\n background: color-mix(in srgb, var(--e-surface-tint), var(--e-ink) 3%);\n font-weight: 600;\n border-color: var(--e-primary);\n border-bottom-width: calc(var(--e-stroke-edge) + var(--e-depth));\n }\n\n .e-nav-label {\n flex: 1;\n min-width: 0;\n }\n\n .e-nav--horizontal {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n /* The separator sits inside the next item's li, so the list has no gap of its own: the margins on the separator space both sides equally. */\n .e-nav--horizontal ul {\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n }\n\n .e-nav--horizontal li {\n display: flex;\n align-items: center;\n }\n\n .e-nav--horizontal li + li::before {\n content: \"\";\n width: var(--e-stroke-hair);\n height: 1.75rem;\n margin-inline: var(--e-space-2);\n background: color-mix(in srgb, var(--e-border) 60%, transparent);\n }\n\n .e-nav--horizontal .e-nav-heading {\n margin: 0;\n padding-inline: 0;\n }\n\n .e-nav-count {\n min-width: var(--e-space-6);\n padding: 0 var(--e-space-2);\n border-radius: var(--e-radius-pill);\n background: color-mix(in srgb, var(--e-primary) 12%, var(--e-surface));\n box-shadow: inset 0 0 0 var(--e-stroke-hair) var(--e-primary);\n outline: var(--e-stroke-hair) solid var(--e-primary);\n outline-offset: calc(-1 * var(--e-stroke-hair));\n font: 600 var(--e-text-xs) / 20px var(--e-font-mono);\n text-align: center;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-nav-item {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-nav-item[aria-current=\"page\"] {\n border-color: Highlight;\n }\n }\n}\n</style>\n"],"mappings":""}