@eos-ui/vue 0.1.1 → 0.2.1

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 (407) 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.vue.d.ts +2 -2
  185. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js +6 -6
  186. package/dist/components/Select/options.d.ts +1 -1
  187. package/dist/components/Select/options.js.map +1 -1
  188. package/dist/components/SignatureField/ESignatureField.js.map +1 -1
  189. package/dist/components/SignatureField/ESignatureField.vue.d.ts +14 -10
  190. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js +4 -4
  191. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/components/SignaturePad/ESignaturePad.js.map +1 -1
  193. package/dist/components/SignaturePad/ESignaturePad.vue.d.ts +3 -1
  194. package/dist/components/SignaturePad/ESignaturePad.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/components/Skeleton/ESkeleton.js.map +1 -1
  196. package/dist/components/Skeleton/ESkeleton.vue.d.ts +3 -3
  197. package/dist/components/Skeleton/ESkeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/components/Stack/EStack.js.map +1 -1
  199. package/dist/components/Stack/EStack.vue.d.ts +2 -2
  200. package/dist/components/Stack/EStack.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/Stamp/EStamp.js.map +1 -1
  202. package/dist/components/Stamp/EStamp.vue.d.ts +18 -12
  203. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js +27 -40
  204. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/components/Stepper/EStepper.js.map +1 -1
  206. package/dist/components/Stepper/EStepper.vue.d.ts +2 -2
  207. package/dist/components/Stepper/EStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  208. package/dist/components/Surface/ESurface.js.map +1 -1
  209. package/dist/components/Surface/ESurface.vue.d.ts +5 -5
  210. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js +5 -5
  211. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js.map +1 -1
  212. package/dist/components/Switch/ESwitch.js.map +1 -1
  213. package/dist/components/Switch/ESwitch.vue.d.ts +3 -1
  214. package/dist/components/Switch/ESwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/components/Tabs/ETabs.js.map +1 -1
  216. package/dist/components/Tabs/ETabs.vue.d.ts +10 -32
  217. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js +21 -50
  218. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/components/Tabs/index.d.ts +1 -1
  220. package/dist/components/Text/EText.js.map +1 -1
  221. package/dist/components/Text/EText.vue.d.ts +4 -3
  222. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js +7 -2
  223. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  224. package/dist/components/TextField/ETextField.js.map +1 -1
  225. package/dist/components/TextField/ETextField.vue.d.ts +8 -6
  226. package/dist/components/TextField/ETextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  227. package/dist/components/Textarea/ETextarea.js.map +1 -1
  228. package/dist/components/Textarea/ETextarea.vue.d.ts +4 -2
  229. package/dist/components/Textarea/ETextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  230. package/dist/components/Toast/EToast.js.map +1 -1
  231. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js +5 -5
  232. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  233. package/dist/components/ToastProvider/EToastProvider.js.map +1 -1
  234. package/dist/components/ToastProvider/EToastProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/Tooltip/ETooltip.js.map +1 -1
  236. package/dist/components/Tooltip/ETooltip.vue.d.ts +1 -0
  237. package/dist/components/Tooltip/ETooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  238. package/dist/components/Upload/EUpload.js.map +1 -1
  239. package/dist/components/Upload/EUpload.vue.d.ts +5 -3
  240. package/dist/components/Upload/EUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/fonts.css +1 -1
  242. package/dist/index.d.ts +2 -25
  243. package/dist/index.js +71 -94
  244. package/dist/messages.d.ts +0 -13
  245. package/dist/messages.js +0 -13
  246. package/dist/messages.js.map +1 -1
  247. package/dist/style.css +2668 -3128
  248. package/package.json +4 -2
  249. package/dist/components/Accordion/EAccordion.js +0 -8
  250. package/dist/components/Accordion/EAccordion.js.map +0 -1
  251. package/dist/components/Accordion/EAccordion.vue.d.ts +0 -32
  252. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js +0 -35
  253. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  254. package/dist/components/Accordion/index.d.ts +0 -2
  255. package/dist/components/AddressField/EAddressField.js +0 -8
  256. package/dist/components/AddressField/EAddressField.js.map +0 -1
  257. package/dist/components/AddressField/EAddressField.vue.d.ts +0 -39
  258. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js +0 -119
  259. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  260. package/dist/components/AddressField/index.d.ts +0 -2
  261. package/dist/components/AddressField/usStates.d.ts +0 -5
  262. package/dist/components/AddressField/usStates.js +0 -211
  263. package/dist/components/AddressField/usStates.js.map +0 -1
  264. package/dist/components/Amount/EAmount.js +0 -8
  265. package/dist/components/Amount/EAmount.js.map +0 -1
  266. package/dist/components/Amount/EAmount.vue.d.ts +0 -21
  267. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js +0 -38
  268. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js.map +0 -1
  269. package/dist/components/Amount/index.d.ts +0 -2
  270. package/dist/components/Autocomplete/EAutocomplete.js +0 -7
  271. package/dist/components/Autocomplete/EAutocomplete.js.map +0 -1
  272. package/dist/components/Autocomplete/EAutocomplete.vue.d.ts +0 -44
  273. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js +0 -58
  274. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  275. package/dist/components/Autocomplete/index.d.ts +0 -1
  276. package/dist/components/BackLink/EBackLink.js +0 -8
  277. package/dist/components/BackLink/EBackLink.js.map +0 -1
  278. package/dist/components/BackLink/EBackLink.vue.d.ts +0 -23
  279. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js +0 -27
  280. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js.map +0 -1
  281. package/dist/components/BackLink/index.d.ts +0 -1
  282. package/dist/components/BookingCard/EBookingCard.js +0 -8
  283. package/dist/components/BookingCard/EBookingCard.js.map +0 -1
  284. package/dist/components/BookingCard/EBookingCard.vue.d.ts +0 -46
  285. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js +0 -86
  286. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  287. package/dist/components/BookingCard/index.d.ts +0 -2
  288. package/dist/components/ButtonGroup/EButtonGroup.js +0 -8
  289. package/dist/components/ButtonGroup/EButtonGroup.js.map +0 -1
  290. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js +0 -18
  291. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  292. package/dist/components/ButtonGroup/index.d.ts +0 -1
  293. package/dist/components/CardField/ECardField.js +0 -8
  294. package/dist/components/CardField/ECardField.js.map +0 -1
  295. package/dist/components/CardField/ECardField.vue.d.ts +0 -31
  296. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js +0 -65
  297. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  298. package/dist/components/CardField/index.d.ts +0 -1
  299. package/dist/components/Chip/EChip.js +0 -8
  300. package/dist/components/Chip/EChip.js.map +0 -1
  301. package/dist/components/Chip/EChip.vue.d.ts +0 -22
  302. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js +0 -18
  303. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  304. package/dist/components/Chip/index.d.ts +0 -2
  305. package/dist/components/Combobox/EHighlight.js.map +0 -1
  306. package/dist/components/DetailRow/EDetailRow.js +0 -8
  307. package/dist/components/DetailRow/EDetailRow.js.map +0 -1
  308. package/dist/components/DetailRow/EDetailRow.vue.d.ts +0 -30
  309. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js +0 -53
  310. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  311. package/dist/components/DetailRow/index.d.ts +0 -1
  312. package/dist/components/ErrorSummary/EErrorSummary.js +0 -8
  313. package/dist/components/ErrorSummary/EErrorSummary.js.map +0 -1
  314. package/dist/components/ErrorSummary/EErrorSummary.vue.d.ts +0 -30
  315. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js +0 -52
  316. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js.map +0 -1
  317. package/dist/components/ErrorSummary/index.d.ts +0 -2
  318. package/dist/components/FormSection/EFormSection.js +0 -8
  319. package/dist/components/FormSection/EFormSection.js.map +0 -1
  320. package/dist/components/FormSection/EFormSection.vue.d.ts +0 -28
  321. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js +0 -38
  322. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  323. package/dist/components/FormSection/index.d.ts +0 -1
  324. package/dist/components/ItemList/EItemList.js +0 -8
  325. package/dist/components/ItemList/EItemList.js.map +0 -1
  326. package/dist/components/ItemList/EItemList.vue.d.ts +0 -13
  327. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js +0 -17
  328. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  329. package/dist/components/ItemList/context.d.ts +0 -3
  330. package/dist/components/ItemList/context.js +0 -6
  331. package/dist/components/ItemList/context.js.map +0 -1
  332. package/dist/components/ItemList/index.d.ts +0 -1
  333. package/dist/components/ItemRow/EItemRow.js +0 -8
  334. package/dist/components/ItemRow/EItemRow.js.map +0 -1
  335. package/dist/components/ItemRow/EItemRow.vue.d.ts +0 -29
  336. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js +0 -54
  337. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  338. package/dist/components/ItemRow/index.d.ts +0 -1
  339. package/dist/components/LinkCard/ELinkCard.js +0 -8
  340. package/dist/components/LinkCard/ELinkCard.js.map +0 -1
  341. package/dist/components/LinkCard/ELinkCard.vue.d.ts +0 -39
  342. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js +0 -61
  343. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  344. package/dist/components/LinkCard/index.d.ts +0 -1
  345. package/dist/components/LoadingBar/ELoadingBar.js +0 -8
  346. package/dist/components/LoadingBar/ELoadingBar.js.map +0 -1
  347. package/dist/components/LoadingBar/ELoadingBar.vue.d.ts +0 -7
  348. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js +0 -21
  349. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  350. package/dist/components/LoadingBar/index.d.ts +0 -1
  351. package/dist/components/MetaList/EMetaList.js +0 -8
  352. package/dist/components/MetaList/EMetaList.js.map +0 -1
  353. package/dist/components/MetaList/EMetaList.vue.d.ts +0 -15
  354. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js +0 -19
  355. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  356. package/dist/components/MetaList/index.d.ts +0 -2
  357. package/dist/components/MultiSelect/EMultiSelect.js +0 -7
  358. package/dist/components/MultiSelect/EMultiSelect.js.map +0 -1
  359. package/dist/components/MultiSelect/EMultiSelect.vue.d.ts +0 -44
  360. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js +0 -58
  361. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js.map +0 -1
  362. package/dist/components/MultiSelect/index.d.ts +0 -1
  363. package/dist/components/Panel/EPanel.js +0 -8
  364. package/dist/components/Panel/EPanel.js.map +0 -1
  365. package/dist/components/Panel/EPanel.vue.d.ts +0 -25
  366. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js +0 -38
  367. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  368. package/dist/components/Panel/index.d.ts +0 -1
  369. package/dist/components/Popover/EPopover.js +0 -8
  370. package/dist/components/Popover/EPopover.js.map +0 -1
  371. package/dist/components/Popover/EPopover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  372. package/dist/components/Popover/index.d.ts +0 -1
  373. package/dist/components/SlotPicker/ESlotPicker.js +0 -8
  374. package/dist/components/SlotPicker/ESlotPicker.js.map +0 -1
  375. package/dist/components/SlotPicker/ESlotPicker.vue.d.ts +0 -55
  376. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js +0 -82
  377. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  378. package/dist/components/SlotPicker/index.d.ts +0 -2
  379. package/dist/components/StatementCard/EStatementCard.js +0 -8
  380. package/dist/components/StatementCard/EStatementCard.js.map +0 -1
  381. package/dist/components/StatementCard/EStatementCard.vue.d.ts +0 -20
  382. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js +0 -96
  383. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  384. package/dist/components/StatementCard/index.d.ts +0 -2
  385. package/dist/components/StatementCard/types.d.ts +0 -37
  386. package/dist/components/StatementRow/EStatementRow.js +0 -8
  387. package/dist/components/StatementRow/EStatementRow.js.map +0 -1
  388. package/dist/components/StatementRow/EStatementRow.vue.d.ts +0 -14
  389. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js +0 -96
  390. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  391. package/dist/components/StatementRow/index.d.ts +0 -1
  392. package/dist/components/Tabs/LinkNav.js.map +0 -1
  393. package/dist/components/Tabs/LinkNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  394. package/dist/components/Timeline/ETimeline.js +0 -8
  395. package/dist/components/Timeline/ETimeline.js.map +0 -1
  396. package/dist/components/Timeline/ETimeline.vue.d.ts +0 -15
  397. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js +0 -43
  398. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  399. package/dist/components/Timeline/index.d.ts +0 -2
  400. package/dist/components/Toggle/EToggle.js +0 -8
  401. package/dist/components/Toggle/EToggle.js.map +0 -1
  402. package/dist/components/Toggle/EToggle.vue.d.ts +0 -27
  403. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js +0 -40
  404. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js.map +0 -1
  405. package/dist/components/Toggle/index.d.ts +0 -1
  406. /package/dist/components/Combobox/{EHighlight.d.ts → matchHighlight.d.ts} +0 -0
  407. /package/dist/components/{Tabs → NavList}/LinkNav.vue.d.ts +0 -0
@@ -2,8 +2,8 @@
2
2
  import { useConfig as e, useMessages as t } from "../../config.js";
3
3
  import { useUid as n } from "../../composables/useUid.js";
4
4
  import r from "../Field/EFieldMessage.js";
5
- import i from "../TextField/ETextField.js";
6
- import a from "../Checkbox/ECheckbox.js";
5
+ import i from "../Checkbox/ECheckbox.js";
6
+ import a from "../TextField/ETextField.js";
7
7
  import o from "../Segmented/ESegmented.js";
8
8
  import s from "../SignaturePad/ESignaturePad.js";
9
9
  import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createVNode as m, defineComponent as h, mergeModels as g, openBlock as _, toDisplayString as v, unref as y, useModel as b } from "vue";
@@ -89,7 +89,7 @@ var x = [
89
89
  "model-value",
90
90
  "options"
91
91
  ])) : d("", !0),
92
- P.value === "type" ? (_(), f(c, { key: 1 }, [m(i, {
92
+ P.value === "type" ? (_(), f(c, { key: 1 }, [m(a, {
93
93
  id: y(M),
94
94
  "model-value": k.value.name,
95
95
  label: y(A)("typeName"),
@@ -109,7 +109,7 @@ var x = [
109
109
  disabled: h.disabled,
110
110
  "onUpdate:modelValue": t[2] ||= (e) => I({ image: e })
111
111
  }, null, 8, ["model-value", "disabled"]), p("p", D, v(F.value), 1)], 64)),
112
- m(a, {
112
+ m(i, {
113
113
  "model-value": k.value.agreed,
114
114
  label: h.agreement || y(A)("agreeSign"),
115
115
  disabled: h.disabled,
@@ -1 +1 @@
1
- {"version":3,"file":"ESignatureField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","ESegmented","_createCommentVNode","_Fragment","_createVNode","ETextField","ESignaturePad","ECheckbox","EFieldMessage","EFieldMessage_default","ETextField_default","ECheckbox_default","ESegmented_default","ESignaturePad_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","ESignatureField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","model","useModel","t","useMessages","config","useConfig","id","useUid","hintId","computed","method","dateText","update","next","patch","openBlock","createElementBlock","createElementVNode","toDisplayString","unref","createBlock","_cache","$event","createCommentVNode","Fragment","createVNode"],"sources":["../../../src/components/SignatureField/ESignatureField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface SignatureValue {\n /** How the person signed. */\n method: \"type\" | \"draw\";\n /** The typed name. Kept when switching to Draw. */\n name: string;\n /** The drawn signature as a PNG data URL. Empty unless the method is `draw`. */\n image: string;\n /** Whether the person ticked the agreement. */\n agreed: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EFieldMessage from \"../Field/EFieldMessage.vue\";\nimport ESegmented from \"../Segmented/ESegmented.vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport ECheckbox from \"../Checkbox/ECheckbox.vue\";\nimport ESignaturePad from \"../SignaturePad/ESignaturePad.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** Names the group and heads it. Say what the form is. Default \"Signature\". */\n label?: string;\n /** `type` the default, `draw`, or `both` which adds a Type and Draw switch. A drawn signature cannot be made from a keyboard, so `both` is the usual choice. */\n mode?: \"type\" | \"draw\" | \"both\";\n /** The sentence the person agrees to. Default \"I agree and want to sign this form.\" */\n agreement?: string;\n /** The date shown with the signature. Today when left out. */\n date?: Date;\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 disabled?: boolean;\n /** The name submitted with a form: the typed name, or the drawn image as a data URL. */\n name?: string;\n /** The id of the typed-name input. Generated when left out. */\n id?: string;\n }>(),\n { mode: \"type\" },\n);\n\nconst model = defineModel<SignatureValue>({\n default: () => ({ method: \"type\", name: \"\", image: \"\", agreed: false }),\n});\n\nconst t = useMessages();\nconst config = useConfig();\nconst id = useUid(() => props.id);\nconst hintId = computed(() => `${id.value}-sign-hint`);\n\nconst method = computed<\"type\" | \"draw\">(() => (props.mode === \"both\" ? model.value.method : props.mode));\nconst dateText = computed(() =>\n new Intl.DateTimeFormat(config.locale, { year: \"numeric\", month: \"long\", day: \"numeric\" }).format(\n props.date ?? new Date(),\n ),\n);\n\nfunction update(patch: Partial<SignatureValue>) {\n const next = { ...model.value, method: method.value, ...patch };\n model.value = { ...next, image: next.method === \"draw\" ? next.image : \"\" };\n}\n</script>\n\n<template>\n <fieldset\n class=\"e-sign\"\n :disabled=\"disabled\"\n :aria-describedby=\"error || hint ? hintId : undefined\"\n :aria-invalid=\"error ? 'true' : undefined\"\n >\n <legend class=\"e-kicker e-sign-legend\">{{ label || t(\"signature\") }}</legend>\n <ESegmented\n v-if=\"mode === 'both'\"\n :label=\"t('signature')\"\n :model-value=\"method\"\n :options=\"[\n { value: 'type', label: t('signType'), icon: 'edit' },\n { value: 'draw', label: t('signDraw'), icon: 'signature' },\n ]\"\n @update:model-value=\"update({ method: $event as 'type' | 'draw', image: '' })\"\n />\n <template v-if=\"method === 'type'\">\n <ETextField\n :id=\"id\"\n :model-value=\"model.name\"\n :label=\"t('typeName')\"\n :placeholder=\"t('fullName')\"\n autocomplete=\"name\"\n required\n :hint=\"t('signHint')\"\n @update:model-value=\"update({ name: $event })\"\n />\n <div class=\"e-sign-line\" aria-live=\"polite\">\n <span v-if=\"model.name\" class=\"e-sign-name\">{{ model.name }}</span>\n <span v-else class=\"e-sign-empty\">{{ t(\"signAppears\") }}</span>\n <span class=\"e-sign-date\">{{ dateText }}</span>\n </div>\n </template>\n <template v-else>\n <ESignaturePad :model-value=\"model.image\" :disabled=\"disabled\" @update:model-value=\"update({ image: $event })\" />\n <p class=\"e-sign-date e-sign-date--solo\">{{ dateText }}</p>\n </template>\n <ECheckbox\n :model-value=\"model.agreed\"\n :label=\"agreement || t('agreeSign')\"\n :disabled=\"disabled\"\n @update:model-value=\"update({ agreed: $event })\"\n />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"method === 'draw' ? model.image : model.name\" />\n </fieldset>\n</template>\n\n<style>\n@layer e.composites {\n .e-sign {\n display: grid;\n gap: var(--e-space-3);\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-sign-legend {\n padding: 0;\n margin-bottom: var(--e-space-2);\n }\n\n .e-sign-line {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n gap: var(--e-space-3);\n min-height: 52px;\n padding: var(--e-space-2) var(--e-space-4);\n border-bottom: 2px solid var(--e-ink);\n background: var(--e-surface-tint);\n border-radius: var(--e-radius-md) var(--e-radius-md) 0 0;\n }\n\n .e-sign-name {\n font:\n italic 500 28px/1.1 \"Segoe Script\",\n \"Snell Roundhand\",\n \"Brush Script MT\",\n cursive;\n min-width: 0;\n overflow-wrap: anywhere;\n }\n\n .e-sign-empty {\n font: 400 var(--e-text-md)/1.4 var(--e-font-sans);\n color: var(--e-muted);\n }\n\n .e-sign-date {\n flex: none;\n font: 500 var(--e-text-xs)/1.2 var(--e-font-mono);\n color: var(--e-muted);\n }\n\n .e-sign-date--solo {\n margin: 0;\n }\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"ESignatureField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","ESegmented","_createCommentVNode","_Fragment","_createVNode","ETextField","ESignaturePad","ECheckbox","EFieldMessage","EFieldMessage_default","ECheckbox_default","ETextField_default","ESegmented_default","ESignaturePad_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","ESignatureField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","model","useModel","t","useMessages","config","useConfig","id","useUid","hintId","computed","method","dateText","update","next","patch","openBlock","createElementBlock","createElementVNode","toDisplayString","unref","createBlock","_cache","$event","createCommentVNode","Fragment","createVNode"],"sources":["../../../src/components/SignatureField/ESignatureField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface SignatureValue {\n /** How the person signed. */\n method: \"type\" | \"draw\";\n /** The typed name. Kept when switching to Draw. */\n name: string;\n /** The drawn signature as a PNG data URL. Empty unless the method is `draw`. */\n image: string;\n /** Whether the person ticked the agreement. */\n agreed: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EFieldMessage from \"../Field/EFieldMessage.vue\";\nimport ESegmented from \"../Segmented/ESegmented.vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport ECheckbox from \"../Checkbox/ECheckbox.vue\";\nimport ESignaturePad from \"../SignaturePad/ESignaturePad.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** Names the group and heads it. Say what the form is. @default \"Signature\" */\n label?: string;\n /** `type` the default, `draw`, or `both` which adds a Type and Draw switch. A drawn signature cannot be made from a keyboard, so `both` is the usual choice. */\n mode?: \"type\" | \"draw\" | \"both\";\n /** The sentence the person agrees to. @default \"I agree and want to sign this form.\" */\n agreement?: string;\n /** The date shown with the signature, in the configured locale. @default today */\n date?: Date;\n /** Help that is announced with the group. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the group invalid and is announced with the group. */\n error?: string;\n /** Disables the fields and the agreement. */\n disabled?: boolean;\n /** The name submitted with a form: the typed name, or the drawn image as a data URL. */\n name?: string;\n /** The id of the typed-name input. @default generated */\n id?: string;\n }>(),\n { mode: \"type\" },\n);\n\n/** `image` is a PNG data URL, empty unless `method` is `draw`. */\nconst model = defineModel<SignatureValue>({\n default: () => ({ method: \"type\", name: \"\", image: \"\", agreed: false }),\n});\n\nconst t = useMessages();\nconst config = useConfig();\nconst id = useUid(() => props.id);\nconst hintId = computed(() => `${id.value}-sign-hint`);\n\nconst method = computed<\"type\" | \"draw\">(() => (props.mode === \"both\" ? model.value.method : props.mode));\nconst dateText = computed(() =>\n new Intl.DateTimeFormat(config.locale, { year: \"numeric\", month: \"long\", day: \"numeric\" }).format(\n props.date ?? new Date(),\n ),\n);\n\nfunction update(patch: Partial<SignatureValue>) {\n const next = { ...model.value, method: method.value, ...patch };\n model.value = { ...next, image: next.method === \"draw\" ? next.image : \"\" };\n}\n</script>\n\n<template>\n <fieldset\n class=\"e-sign\"\n :disabled=\"disabled\"\n :aria-describedby=\"error || hint ? hintId : undefined\"\n :aria-invalid=\"error ? 'true' : undefined\"\n >\n <legend class=\"e-kicker e-sign-legend\">{{ label || t(\"signature\") }}</legend>\n <ESegmented\n v-if=\"mode === 'both'\"\n :label=\"t('signature')\"\n :model-value=\"method\"\n :options=\"[\n { value: 'type', label: t('signType'), icon: 'edit' },\n { value: 'draw', label: t('signDraw'), icon: 'signature' },\n ]\"\n @update:model-value=\"update({ method: $event as 'type' | 'draw', image: '' })\"\n />\n <template v-if=\"method === 'type'\">\n <ETextField\n :id=\"id\"\n :model-value=\"model.name\"\n :label=\"t('typeName')\"\n :placeholder=\"t('fullName')\"\n autocomplete=\"name\"\n required\n :hint=\"t('signHint')\"\n @update:model-value=\"update({ name: $event })\"\n />\n <div class=\"e-sign-line\" aria-live=\"polite\">\n <span v-if=\"model.name\" class=\"e-sign-name\">{{ model.name }}</span>\n <span v-else class=\"e-sign-empty\">{{ t(\"signAppears\") }}</span>\n <span class=\"e-sign-date\">{{ dateText }}</span>\n </div>\n </template>\n <template v-else>\n <ESignaturePad :model-value=\"model.image\" :disabled=\"disabled\" @update:model-value=\"update({ image: $event })\" />\n <p class=\"e-sign-date e-sign-date--solo\">{{ dateText }}</p>\n </template>\n <ECheckbox\n :model-value=\"model.agreed\"\n :label=\"agreement || t('agreeSign')\"\n :disabled=\"disabled\"\n @update:model-value=\"update({ agreed: $event })\"\n />\n <EFieldMessage :id=\"hintId\" :error=\"error\" :hint=\"hint\" />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"method === 'draw' ? model.image : model.name\" />\n </fieldset>\n</template>\n\n<style>\n@layer e.composites {\n .e-sign {\n display: grid;\n gap: var(--e-space-3);\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-sign-legend {\n padding: 0;\n margin-bottom: var(--e-space-2);\n }\n\n .e-sign-line {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n gap: var(--e-space-3);\n min-height: calc(var(--e-control-height) + var(--e-space-1));\n padding: var(--e-space-2) var(--e-space-4);\n border-bottom: var(--e-stroke-edge) solid var(--e-secondary);\n background: var(--e-secondary-soft);\n border-radius: var(--e-radius-md) var(--e-radius-md) 0 0;\n }\n\n .e-sign-name {\n font:\n italic 500 28px/1.1 \"Segoe Script\",\n \"Snell Roundhand\",\n \"Brush Script MT\",\n cursive;\n min-width: 0;\n overflow-wrap: anywhere;\n }\n\n .e-sign-empty {\n font: 400 var(--e-text-md)/1.4 var(--e-font-sans);\n color: var(--e-muted);\n }\n\n .e-sign-date {\n flex: none;\n font: 500 var(--e-text-xs)/1.2 var(--e-font-mono);\n color: var(--e-muted);\n }\n\n .e-sign-date--solo {\n margin: 0;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ESignaturePad.js","names":["_sfc_main","ESignaturePad_vue_vue_type_script_setup_true_lang_default","ESignaturePad_default"],"sources":["../../../src/components/SignaturePad/ESignaturePad.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The height of the drawing area in pixels. */\n height?: number;\n disabled?: boolean;\n /** The id of the canvas. Generated when left out. */\n id?: string;\n }>(),\n { height: 160 },\n);\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst id = useUid(() => props.id);\nconst canvas = ref<HTMLCanvasElement | null>(null);\nconst empty = ref(!model.value);\n\ninterface Point {\n x: number;\n y: number;\n}\nconst strokes: Point[][] = [];\nlet current: Point[] | null = null;\n\nfunction paint(ctx: CanvasRenderingContext2D, color: string) {\n ctx.lineWidth = 2.5;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n for (const stroke of strokes) {\n const [first, ...rest] = stroke;\n if (!first) continue;\n ctx.beginPath();\n ctx.arc(first.x, first.y, 1.2, 0, 6.3);\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const p of rest) ctx.lineTo(p.x, p.y);\n ctx.stroke();\n }\n}\n\nfunction setup() {\n const cv = canvas.value;\n if (!cv) return;\n const dpr = window.devicePixelRatio || 1;\n cv.width = Math.round((cv.clientWidth || 320) * dpr);\n cv.height = Math.round(props.height * dpr);\n const ctx = cv.getContext(\"2d\");\n if (!ctx) return;\n ctx.scale(dpr, dpr);\n paint(ctx, getComputedStyle(cv).color);\n}\nonMounted(setup);\nuseResizeObserver(canvas, setup);\n\nfunction point(e: PointerEvent): Point {\n const r = canvas.value!.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n}\n\nfunction down(e: PointerEvent) {\n if (props.disabled) return;\n e.preventDefault();\n try {\n canvas.value!.setPointerCapture(e.pointerId);\n } catch {}\n const p = point(e);\n current = [p];\n strokes.push(current);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.fillStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, 1.2, 0, 6.3);\n ctx.fill();\n}\n\nfunction move(e: PointerEvent) {\n if (!current) return;\n const from = current[current.length - 1]!;\n const p = point(e);\n current.push(p);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.strokeStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(p.x, p.y);\n ctx.stroke();\n}\n\nfunction exportImage(): string {\n const cv = canvas.value!;\n const out = document.createElement(\"canvas\");\n out.width = cv.width;\n out.height = cv.height;\n const ctx = out.getContext(\"2d\")!;\n ctx.scale(cv.width / (cv.clientWidth || 320), cv.height / props.height);\n paint(ctx, \"black\");\n return out.toDataURL(\"image/png\");\n}\n\nfunction up() {\n if (!current) return;\n current = null;\n empty.value = false;\n model.value = exportImage();\n}\n\nfunction wipe() {\n strokes.length = 0;\n current = null;\n empty.value = true;\n const cv = canvas.value;\n const ctx = cv?.getContext(\"2d\");\n if (cv && ctx) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, cv.width, cv.height);\n ctx.restore();\n }\n}\n\nfunction clear() {\n wipe();\n model.value = \"\";\n}\n\nwatch(model, (v) => {\n if (!v && !empty.value) wipe();\n});\n\ndefineExpose({\n clear,\n canvas,\n});\n</script>\n\n<template>\n <div class=\"e-pad\">\n <div class=\"e-pad-surface\" :data-empty=\"empty ? '' : undefined\">\n <canvas\n :id=\"id\"\n ref=\"canvas\"\n class=\"e-pad-canvas\"\n role=\"img\"\n :style=\"{ height: `${height}px`, color: 'var(--e-ink)' }\"\n :aria-label=\"t('drawSignature')\"\n :aria-describedby=\"`${id}-hint`\"\n @pointerdown=\"down\"\n @pointermove=\"move\"\n @pointerup=\"up\"\n @pointercancel=\"up\"\n />\n <span v-if=\"empty\" class=\"e-pad-placeholder\" aria-hidden=\"true\">\n <EIcon name=\"signature\" />\n {{ t(\"signEmpty\") }}\n </span>\n </div>\n <div class=\"e-pad-foot\">\n <p :id=\"`${id}-hint`\" class=\"e-field-hint\">{{ t(\"signDrawHint\") }}</p>\n <EButton variant=\"quiet\" icon=\"eraser\" :disabled=\"empty || disabled\" @click=\"clear\">\n {{ t(\"signClear\") }}\n </EButton>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.composites {\n .e-pad {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-pad-surface {\n position: relative;\n overflow: hidden;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n box-shadow: var(--e-well);\n }\n\n .e-pad-surface::after {\n content: \"\";\n position: absolute;\n inset-inline: var(--e-space-4);\n bottom: 36px;\n border-bottom: 2px solid var(--e-ink);\n pointer-events: none;\n }\n\n .e-pad-canvas {\n display: block;\n width: 100%;\n touch-action: none;\n cursor: crosshair;\n }\n\n .e-pad-placeholder {\n position: absolute;\n inset: 0;\n display: grid;\n place-content: center;\n justify-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n pointer-events: none;\n }\n\n .e-pad-foot {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pad-foot .e-field-hint {\n margin: 0;\n flex: 1 1 14rem;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ESignaturePad.js","names":["_sfc_main","ESignaturePad_vue_vue_type_script_setup_true_lang_default","ESignaturePad_default"],"sources":["../../../src/components/SignaturePad/ESignaturePad.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The height of the drawing area in pixels. */\n height?: number;\n /** Ignores drawing and disables Clear. */\n disabled?: boolean;\n /** The id of the canvas. @default generated */\n id?: string;\n }>(),\n { height: 160 },\n);\n\n/** A PNG data URL (black on transparent); empty while clear. Set `\"\"` to clear. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst id = useUid(() => props.id);\nconst canvas = ref<HTMLCanvasElement | null>(null);\nconst empty = ref(!model.value);\n\ninterface Point {\n x: number;\n y: number;\n}\nconst strokes: Point[][] = [];\nlet current: Point[] | null = null;\n\nfunction paint(ctx: CanvasRenderingContext2D, color: string) {\n ctx.lineWidth = 2.5;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n for (const stroke of strokes) {\n const [first, ...rest] = stroke;\n if (!first) continue;\n ctx.beginPath();\n ctx.arc(first.x, first.y, 1.2, 0, 6.3);\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const p of rest) ctx.lineTo(p.x, p.y);\n ctx.stroke();\n }\n}\n\nfunction setup() {\n const cv = canvas.value;\n if (!cv) return;\n const dpr = window.devicePixelRatio || 1;\n cv.width = Math.round((cv.clientWidth || 320) * dpr);\n cv.height = Math.round(props.height * dpr);\n const ctx = cv.getContext(\"2d\");\n if (!ctx) return;\n ctx.scale(dpr, dpr);\n paint(ctx, getComputedStyle(cv).color);\n}\nonMounted(setup);\nuseResizeObserver(canvas, setup);\n\nfunction point(e: PointerEvent): Point {\n const r = canvas.value!.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n}\n\nfunction down(e: PointerEvent) {\n if (props.disabled) return;\n e.preventDefault();\n try {\n canvas.value!.setPointerCapture(e.pointerId);\n } catch {}\n const p = point(e);\n current = [p];\n strokes.push(current);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.fillStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, 1.2, 0, 6.3);\n ctx.fill();\n}\n\nfunction move(e: PointerEvent) {\n if (!current) return;\n const from = current[current.length - 1]!;\n const p = point(e);\n current.push(p);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.strokeStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(p.x, p.y);\n ctx.stroke();\n}\n\nfunction exportImage(): string {\n const cv = canvas.value!;\n const out = document.createElement(\"canvas\");\n out.width = cv.width;\n out.height = cv.height;\n const ctx = out.getContext(\"2d\")!;\n ctx.scale(cv.width / (cv.clientWidth || 320), cv.height / props.height);\n paint(ctx, \"black\");\n return out.toDataURL(\"image/png\");\n}\n\nfunction up() {\n if (!current) return;\n current = null;\n empty.value = false;\n model.value = exportImage();\n}\n\nfunction wipe() {\n strokes.length = 0;\n current = null;\n empty.value = true;\n const cv = canvas.value;\n const ctx = cv?.getContext(\"2d\");\n if (cv && ctx) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, cv.width, cv.height);\n ctx.restore();\n }\n}\n\nfunction clear() {\n wipe();\n model.value = \"\";\n}\n\nwatch(model, (v) => {\n if (!v && !empty.value) wipe();\n});\n\ndefineExpose({\n clear,\n canvas,\n});\n</script>\n\n<template>\n <div class=\"e-pad\">\n <div class=\"e-pad-surface\" :data-empty=\"empty ? '' : undefined\">\n <canvas\n :id=\"id\"\n ref=\"canvas\"\n class=\"e-pad-canvas\"\n role=\"img\"\n :style=\"{ height: `${height}px`, color: 'var(--e-ink)' }\"\n :aria-label=\"t('drawSignature')\"\n :aria-describedby=\"`${id}-hint`\"\n @pointerdown=\"down\"\n @pointermove=\"move\"\n @pointerup=\"up\"\n @pointercancel=\"up\"\n />\n <span v-if=\"empty\" class=\"e-pad-placeholder\" aria-hidden=\"true\">\n <EIcon name=\"signature\" />\n {{ t(\"signEmpty\") }}\n </span>\n </div>\n <div class=\"e-pad-foot\">\n <p :id=\"`${id}-hint`\" class=\"e-field-hint\">{{ t(\"signDrawHint\") }}</p>\n <EButton variant=\"quiet\" icon=\"eraser\" :disabled=\"empty || disabled\" @click=\"clear\">\n {{ t(\"signClear\") }}\n </EButton>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.composites {\n .e-pad {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-pad-surface {\n position: relative;\n overflow: hidden;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n box-shadow: var(--e-well);\n }\n\n .e-pad-surface::after {\n content: \"\";\n position: absolute;\n inset-inline: var(--e-space-4);\n bottom: 36px;\n border-bottom: var(--e-stroke-edge) solid var(--e-ink);\n pointer-events: none;\n }\n\n .e-pad-canvas {\n display: block;\n width: 100%;\n touch-action: none;\n cursor: crosshair;\n }\n\n .e-pad-placeholder {\n position: absolute;\n inset: 0;\n display: grid;\n place-content: center;\n justify-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n pointer-events: none;\n }\n\n .e-pad-foot {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pad-foot .e-field-hint {\n margin: 0;\n flex: 1 1 14rem;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,12 +1,14 @@
1
1
  type __VLS_Props = {
2
2
  /** The height of the drawing area in pixels. */
3
3
  height?: number;
4
+ /** Ignores drawing and disables Clear. */
4
5
  disabled?: boolean;
5
- /** The id of the canvas. Generated when left out. */
6
+ /** The id of the canvas. @default generated */
6
7
  id?: string;
7
8
  };
8
9
  declare function clear(): void;
9
10
  type __VLS_ModelProps = {
11
+ /** A PNG data URL (black on transparent); empty while clear. Set `""` to clear. */
10
12
  modelValue?: string;
11
13
  };
12
14
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
@@ -1 +1 @@
1
- {"version":3,"file":"ESignaturePad.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_unref","_normalizeStyle","_createVNode","EIcon","_createTextVNode","_toDisplayString","_createCommentVNode","EButton","_withCtx","EIcon_default","EButton_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ESignaturePad_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","id","useUid","canvas","ref","empty","strokes","current","paint","color","stroke","first","rest","ctx","p","setup","cv","dpr","onMounted","useResizeObserver","point","r","down","move","from","exportImage","out","up","wipe","clear","watch","v","openBlock","createElementBlock","createElementVNode","unref","normalizeStyle","createVNode","createTextVNode","toDisplayString","createCommentVNode","withCtx"],"sources":["../../../src/components/SignaturePad/ESignaturePad.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The height of the drawing area in pixels. */\n height?: number;\n disabled?: boolean;\n /** The id of the canvas. Generated when left out. */\n id?: string;\n }>(),\n { height: 160 },\n);\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst id = useUid(() => props.id);\nconst canvas = ref<HTMLCanvasElement | null>(null);\nconst empty = ref(!model.value);\n\ninterface Point {\n x: number;\n y: number;\n}\nconst strokes: Point[][] = [];\nlet current: Point[] | null = null;\n\nfunction paint(ctx: CanvasRenderingContext2D, color: string) {\n ctx.lineWidth = 2.5;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n for (const stroke of strokes) {\n const [first, ...rest] = stroke;\n if (!first) continue;\n ctx.beginPath();\n ctx.arc(first.x, first.y, 1.2, 0, 6.3);\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const p of rest) ctx.lineTo(p.x, p.y);\n ctx.stroke();\n }\n}\n\nfunction setup() {\n const cv = canvas.value;\n if (!cv) return;\n const dpr = window.devicePixelRatio || 1;\n cv.width = Math.round((cv.clientWidth || 320) * dpr);\n cv.height = Math.round(props.height * dpr);\n const ctx = cv.getContext(\"2d\");\n if (!ctx) return;\n ctx.scale(dpr, dpr);\n paint(ctx, getComputedStyle(cv).color);\n}\nonMounted(setup);\nuseResizeObserver(canvas, setup);\n\nfunction point(e: PointerEvent): Point {\n const r = canvas.value!.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n}\n\nfunction down(e: PointerEvent) {\n if (props.disabled) return;\n e.preventDefault();\n try {\n canvas.value!.setPointerCapture(e.pointerId);\n } catch {}\n const p = point(e);\n current = [p];\n strokes.push(current);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.fillStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, 1.2, 0, 6.3);\n ctx.fill();\n}\n\nfunction move(e: PointerEvent) {\n if (!current) return;\n const from = current[current.length - 1]!;\n const p = point(e);\n current.push(p);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.strokeStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(p.x, p.y);\n ctx.stroke();\n}\n\nfunction exportImage(): string {\n const cv = canvas.value!;\n const out = document.createElement(\"canvas\");\n out.width = cv.width;\n out.height = cv.height;\n const ctx = out.getContext(\"2d\")!;\n ctx.scale(cv.width / (cv.clientWidth || 320), cv.height / props.height);\n paint(ctx, \"black\");\n return out.toDataURL(\"image/png\");\n}\n\nfunction up() {\n if (!current) return;\n current = null;\n empty.value = false;\n model.value = exportImage();\n}\n\nfunction wipe() {\n strokes.length = 0;\n current = null;\n empty.value = true;\n const cv = canvas.value;\n const ctx = cv?.getContext(\"2d\");\n if (cv && ctx) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, cv.width, cv.height);\n ctx.restore();\n }\n}\n\nfunction clear() {\n wipe();\n model.value = \"\";\n}\n\nwatch(model, (v) => {\n if (!v && !empty.value) wipe();\n});\n\ndefineExpose({\n clear,\n canvas,\n});\n</script>\n\n<template>\n <div class=\"e-pad\">\n <div class=\"e-pad-surface\" :data-empty=\"empty ? '' : undefined\">\n <canvas\n :id=\"id\"\n ref=\"canvas\"\n class=\"e-pad-canvas\"\n role=\"img\"\n :style=\"{ height: `${height}px`, color: 'var(--e-ink)' }\"\n :aria-label=\"t('drawSignature')\"\n :aria-describedby=\"`${id}-hint`\"\n @pointerdown=\"down\"\n @pointermove=\"move\"\n @pointerup=\"up\"\n @pointercancel=\"up\"\n />\n <span v-if=\"empty\" class=\"e-pad-placeholder\" aria-hidden=\"true\">\n <EIcon name=\"signature\" />\n {{ t(\"signEmpty\") }}\n </span>\n </div>\n <div class=\"e-pad-foot\">\n <p :id=\"`${id}-hint`\" class=\"e-field-hint\">{{ t(\"signDrawHint\") }}</p>\n <EButton variant=\"quiet\" icon=\"eraser\" :disabled=\"empty || disabled\" @click=\"clear\">\n {{ t(\"signClear\") }}\n </EButton>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.composites {\n .e-pad {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-pad-surface {\n position: relative;\n overflow: hidden;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n box-shadow: var(--e-well);\n }\n\n .e-pad-surface::after {\n content: \"\";\n position: absolute;\n inset-inline: var(--e-space-4);\n bottom: 36px;\n border-bottom: 2px solid var(--e-ink);\n pointer-events: none;\n }\n\n .e-pad-canvas {\n display: block;\n width: 100%;\n touch-action: none;\n cursor: crosshair;\n }\n\n .e-pad-placeholder {\n position: absolute;\n inset: 0;\n display: grid;\n place-content: center;\n justify-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n pointer-events: none;\n }\n\n .e-pad-foot {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pad-foot .e-field-hint {\n margin: 0;\n flex: 1 1 14rem;\n }\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"ESignaturePad.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_unref","_normalizeStyle","_createVNode","EIcon","_createTextVNode","_toDisplayString","_createCommentVNode","EButton","_withCtx","EIcon_default","EButton_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ESignaturePad_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","id","useUid","canvas","ref","empty","strokes","current","paint","color","stroke","first","rest","ctx","p","setup","cv","dpr","onMounted","useResizeObserver","point","r","down","move","from","exportImage","out","up","wipe","clear","watch","v","openBlock","createElementBlock","createElementVNode","unref","normalizeStyle","createVNode","createTextVNode","toDisplayString","createCommentVNode","withCtx"],"sources":["../../../src/components/SignaturePad/ESignaturePad.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** The height of the drawing area in pixels. */\n height?: number;\n /** Ignores drawing and disables Clear. */\n disabled?: boolean;\n /** The id of the canvas. @default generated */\n id?: string;\n }>(),\n { height: 160 },\n);\n\n/** A PNG data URL (black on transparent); empty while clear. Set `\"\"` to clear. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst id = useUid(() => props.id);\nconst canvas = ref<HTMLCanvasElement | null>(null);\nconst empty = ref(!model.value);\n\ninterface Point {\n x: number;\n y: number;\n}\nconst strokes: Point[][] = [];\nlet current: Point[] | null = null;\n\nfunction paint(ctx: CanvasRenderingContext2D, color: string) {\n ctx.lineWidth = 2.5;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n for (const stroke of strokes) {\n const [first, ...rest] = stroke;\n if (!first) continue;\n ctx.beginPath();\n ctx.arc(first.x, first.y, 1.2, 0, 6.3);\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const p of rest) ctx.lineTo(p.x, p.y);\n ctx.stroke();\n }\n}\n\nfunction setup() {\n const cv = canvas.value;\n if (!cv) return;\n const dpr = window.devicePixelRatio || 1;\n cv.width = Math.round((cv.clientWidth || 320) * dpr);\n cv.height = Math.round(props.height * dpr);\n const ctx = cv.getContext(\"2d\");\n if (!ctx) return;\n ctx.scale(dpr, dpr);\n paint(ctx, getComputedStyle(cv).color);\n}\nonMounted(setup);\nuseResizeObserver(canvas, setup);\n\nfunction point(e: PointerEvent): Point {\n const r = canvas.value!.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n}\n\nfunction down(e: PointerEvent) {\n if (props.disabled) return;\n e.preventDefault();\n try {\n canvas.value!.setPointerCapture(e.pointerId);\n } catch {}\n const p = point(e);\n current = [p];\n strokes.push(current);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.fillStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, 1.2, 0, 6.3);\n ctx.fill();\n}\n\nfunction move(e: PointerEvent) {\n if (!current) return;\n const from = current[current.length - 1]!;\n const p = point(e);\n current.push(p);\n const ctx = canvas.value!.getContext(\"2d\")!;\n ctx.strokeStyle = getComputedStyle(canvas.value!).color;\n ctx.beginPath();\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(p.x, p.y);\n ctx.stroke();\n}\n\nfunction exportImage(): string {\n const cv = canvas.value!;\n const out = document.createElement(\"canvas\");\n out.width = cv.width;\n out.height = cv.height;\n const ctx = out.getContext(\"2d\")!;\n ctx.scale(cv.width / (cv.clientWidth || 320), cv.height / props.height);\n paint(ctx, \"black\");\n return out.toDataURL(\"image/png\");\n}\n\nfunction up() {\n if (!current) return;\n current = null;\n empty.value = false;\n model.value = exportImage();\n}\n\nfunction wipe() {\n strokes.length = 0;\n current = null;\n empty.value = true;\n const cv = canvas.value;\n const ctx = cv?.getContext(\"2d\");\n if (cv && ctx) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, cv.width, cv.height);\n ctx.restore();\n }\n}\n\nfunction clear() {\n wipe();\n model.value = \"\";\n}\n\nwatch(model, (v) => {\n if (!v && !empty.value) wipe();\n});\n\ndefineExpose({\n clear,\n canvas,\n});\n</script>\n\n<template>\n <div class=\"e-pad\">\n <div class=\"e-pad-surface\" :data-empty=\"empty ? '' : undefined\">\n <canvas\n :id=\"id\"\n ref=\"canvas\"\n class=\"e-pad-canvas\"\n role=\"img\"\n :style=\"{ height: `${height}px`, color: 'var(--e-ink)' }\"\n :aria-label=\"t('drawSignature')\"\n :aria-describedby=\"`${id}-hint`\"\n @pointerdown=\"down\"\n @pointermove=\"move\"\n @pointerup=\"up\"\n @pointercancel=\"up\"\n />\n <span v-if=\"empty\" class=\"e-pad-placeholder\" aria-hidden=\"true\">\n <EIcon name=\"signature\" />\n {{ t(\"signEmpty\") }}\n </span>\n </div>\n <div class=\"e-pad-foot\">\n <p :id=\"`${id}-hint`\" class=\"e-field-hint\">{{ t(\"signDrawHint\") }}</p>\n <EButton variant=\"quiet\" icon=\"eraser\" :disabled=\"empty || disabled\" @click=\"clear\">\n {{ t(\"signClear\") }}\n </EButton>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.composites {\n .e-pad {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-pad-surface {\n position: relative;\n overflow: hidden;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: var(--e-radius-md);\n background: var(--e-surface);\n box-shadow: var(--e-well);\n }\n\n .e-pad-surface::after {\n content: \"\";\n position: absolute;\n inset-inline: var(--e-space-4);\n bottom: 36px;\n border-bottom: var(--e-stroke-edge) solid var(--e-ink);\n pointer-events: none;\n }\n\n .e-pad-canvas {\n display: block;\n width: 100%;\n touch-action: none;\n cursor: crosshair;\n }\n\n .e-pad-placeholder {\n position: absolute;\n inset: 0;\n display: grid;\n place-content: center;\n justify-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n pointer-events: none;\n }\n\n .e-pad-foot {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pad-foot .e-field-hint {\n margin: 0;\n flex: 1 1 14rem;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ESkeleton.js","names":["_sfc_main","ESkeleton_vue_vue_type_script_setup_true_lang_default","ESkeleton_default"],"sources":["../../../src/components/Skeleton/ESkeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** Height in px, or any CSS length. Defaults to 96. Make it the size of what is coming. */\n height?: number | string;\n /** Width in px, or any CSS length. Defaults to the full width. */\n width?: number | string;\n /** A round block, for a photo. */\n circle?: boolean;\n}>();\n\nconst t = useMessages();\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst size = computed(() => ({\n height: px(props.height ?? 96),\n ...(props.width != null ? { width: px(props.width) } : {}),\n}));\n</script>\n\n<template>\n <div class=\"e-skeleton\" :class=\"{ 'e-skeleton--circle': circle }\" :style=\"size\" role=\"status\" aria-busy=\"true\">\n <span class=\"e-sr\">{{ t(\"loading\") }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-skeleton {\n display: block;\n width: 100%;\n border-radius: var(--e-radius-md);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border);\n animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skel {\n display: block;\n height: 14px;\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border);\n animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skeleton--circle {\n width: auto;\n aspect-ratio: 1;\n border-radius: 50%;\n }\n\n @keyframes e-pulse {\n 50% {\n opacity: 0.5;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-skel,\n .e-skeleton {\n animation: none;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ESkeleton.js","names":["_sfc_main","ESkeleton_vue_vue_type_script_setup_true_lang_default","ESkeleton_default"],"sources":["../../../src/components/Skeleton/ESkeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** A number is px; a string is any CSS length. @default 96 */\n height?: number | string;\n /** Same units as `height`. @default full width */\n width?: number | string;\n /** A round block, for a photo; set `height` and the width follows. */\n circle?: boolean;\n}>();\n\nconst t = useMessages();\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst size = computed(() => ({\n height: px(props.height ?? 96),\n ...(props.width != null ? { width: px(props.width) } : {}),\n}));\n</script>\n\n<template>\n <div class=\"e-skeleton\" :class=\"{ 'e-skeleton--circle': circle }\" :style=\"size\" role=\"status\" aria-busy=\"true\">\n <span class=\"e-sr\">{{ t(\"loading\") }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-skeleton {\n display: block;\n width: 100%;\n border-radius: var(--e-radius-md);\n background: var(--e-surface-tint);\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 animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skel {\n display: block;\n height: 14px;\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\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 animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skeleton--circle {\n width: auto;\n aspect-ratio: 1;\n border-radius: 50%;\n }\n\n @keyframes e-pulse {\n 50% {\n opacity: 0.5;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-skel,\n .e-skeleton {\n animation: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-skel,\n .e-skeleton {\n outline-color: GrayText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1,9 +1,9 @@
1
1
  type __VLS_Props = {
2
- /** Height in px, or any CSS length. Defaults to 96. Make it the size of what is coming. */
2
+ /** A number is px; a string is any CSS length. @default 96 */
3
3
  height?: number | string;
4
- /** Width in px, or any CSS length. Defaults to the full width. */
4
+ /** Same units as `height`. @default full width */
5
5
  width?: number | string;
6
- /** A round block, for a photo. */
6
+ /** A round block, for a photo; set `height` and the width follows. */
7
7
  circle?: boolean;
8
8
  };
9
9
  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":"ESkeleton.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_toDisplayString","_unref","_hoisted_1","ESkeleton_vue_vue_type_script_setup_true_lang_default","props","__props","t","useMessages","px","v","size","computed","openBlock","createElementBlock","normalizeClass","normalizeStyle","createElementVNode","toDisplayString","unref"],"sources":["../../../src/components/Skeleton/ESkeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** Height in px, or any CSS length. Defaults to 96. Make it the size of what is coming. */\n height?: number | string;\n /** Width in px, or any CSS length. Defaults to the full width. */\n width?: number | string;\n /** A round block, for a photo. */\n circle?: boolean;\n}>();\n\nconst t = useMessages();\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst size = computed(() => ({\n height: px(props.height ?? 96),\n ...(props.width != null ? { width: px(props.width) } : {}),\n}));\n</script>\n\n<template>\n <div class=\"e-skeleton\" :class=\"{ 'e-skeleton--circle': circle }\" :style=\"size\" role=\"status\" aria-busy=\"true\">\n <span class=\"e-sr\">{{ t(\"loading\") }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-skeleton {\n display: block;\n width: 100%;\n border-radius: var(--e-radius-md);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border);\n animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skel {\n display: block;\n height: 14px;\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border);\n animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skeleton--circle {\n width: auto;\n aspect-ratio: 1;\n border-radius: 50%;\n }\n\n @keyframes e-pulse {\n 50% {\n opacity: 0.5;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-skel,\n .e-skeleton {\n animation: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAKA,IAAMS,IAAQC,GASRC,IAAIC,EAAY,GAChBC,KAAM,MAAwB,OAAOC,KAAM,WAAW,GAAGA,EAAE,MAAMA,GACjEC,IAAOC,SAAgB;GAC3B,QAAQH,EAAGJ,EAAM,UAAU,EAAE;GAC7B,GAAIA,EAAM,SAAS,OAAoC,CAAC,IAA9B,EAAE,OAAOI,EAAGJ,EAAM,KAAK,EAAE;EACrD,EAAE;E,kBAIAT,EAAA,GAAAC,EAEM,OAAA;GAFD,OAAKC,EAAA,CAAC,cAAY,EAAA,sBAAiCQ,EAAA,OAAM,CAAA,CAAA;GAAK,OAAKP,EAAEY,EAAA,KAAI;GAAE,MAAK;GAAS,aAAU;E,IACtGX,EAA4C,QAA5CG,GAA4CF,EAAtBC,EAAAK,CAAA,CAAC,CAAA,SAAA,CAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"ESkeleton.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_toDisplayString","_unref","_hoisted_1","ESkeleton_vue_vue_type_script_setup_true_lang_default","props","__props","t","useMessages","px","v","size","computed","openBlock","createElementBlock","normalizeClass","normalizeStyle","createElementVNode","toDisplayString","unref"],"sources":["../../../src/components/Skeleton/ESkeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** A number is px; a string is any CSS length. @default 96 */\n height?: number | string;\n /** Same units as `height`. @default full width */\n width?: number | string;\n /** A round block, for a photo; set `height` and the width follows. */\n circle?: boolean;\n}>();\n\nconst t = useMessages();\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst size = computed(() => ({\n height: px(props.height ?? 96),\n ...(props.width != null ? { width: px(props.width) } : {}),\n}));\n</script>\n\n<template>\n <div class=\"e-skeleton\" :class=\"{ 'e-skeleton--circle': circle }\" :style=\"size\" role=\"status\" aria-busy=\"true\">\n <span class=\"e-sr\">{{ t(\"loading\") }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-skeleton {\n display: block;\n width: 100%;\n border-radius: var(--e-radius-md);\n background: var(--e-surface-tint);\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 animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skel {\n display: block;\n height: 14px;\n border-radius: var(--e-radius-sm);\n background: var(--e-surface-tint);\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 animation: e-pulse 1.4s ease-in-out infinite;\n }\n\n .e-skeleton--circle {\n width: auto;\n aspect-ratio: 1;\n border-radius: 50%;\n }\n\n @keyframes e-pulse {\n 50% {\n opacity: 0.5;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-skel,\n .e-skeleton {\n animation: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-skel,\n .e-skeleton {\n outline-color: GrayText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAKA,IAAMS,IAAQC,GASRC,IAAIC,EAAY,GAChBC,KAAM,MAAwB,OAAOC,KAAM,WAAW,GAAGA,EAAE,MAAMA,GACjEC,IAAOC,SAAgB;GAC3B,QAAQH,EAAGJ,EAAM,UAAU,EAAE;GAC7B,GAAIA,EAAM,SAAS,OAAoC,CAAC,IAA9B,EAAE,OAAOI,EAAGJ,EAAM,KAAK,EAAE;EACrD,EAAE;E,kBAIAT,EAAA,GAAAC,EAEM,OAAA;GAFD,OAAKC,EAAA,CAAC,cAAY,EAAA,sBAAiCQ,EAAA,OAAM,CAAA,CAAA;GAAK,OAAKP,EAAEY,EAAA,KAAI;GAAE,MAAK;GAAS,aAAU;E,IACtGX,EAA4C,QAA5CG,GAA4CF,EAAtBC,EAAAK,CAAA,CAAC,CAAA,SAAA,CAAA,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EStack.js","names":["_sfc_main","EStack_vue_vue_type_script_setup_true_lang_default","EStack_default"],"sources":["../../../src/components/Stack/EStack.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 /** Aligns the children across the column: `center` or `end`. Stretched by default. */\n align?: \"center\" | \"end\";\n }>(),\n { as: \"div\", gap: 4 },\n);\n\ndefineSlots<{\n /** The children, one under another. */\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-stack\" :class=\"align && `e-stack--${align}`\" :style=\"{ '--e-gap': gapValue }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-stack {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-content: start;\n gap: var(--e-gap, var(--e-space-3));\n min-width: 0;\n }\n\n .e-stack--center {\n justify-items: center;\n }\n\n .e-stack--end {\n justify-items: end;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EStack.js","names":["_sfc_main","EStack_vue_vue_type_script_setup_true_lang_default","EStack_default"],"sources":["../../../src/components/Stack/EStack.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; such as `ul` (with `li` children). */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8) becomes `var(--e-space-N)`; a string is used as given, so any CSS length works. */\n gap?: number | string;\n /** Aligns the children across the column: `center` or `end`. Stretched by default. */\n align?: \"center\" | \"end\";\n }>(),\n { as: \"div\", gap: 4 },\n);\n\ndefineSlots<{\n /** The children, one under another. */\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-stack\" :class=\"align && `e-stack--${align}`\" :style=\"{ '--e-gap': gapValue }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-stack {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-content: start;\n gap: var(--e-gap, var(--e-space-3));\n min-width: 0;\n }\n\n .e-stack--center {\n justify-items: center;\n }\n\n .e-stack--end {\n justify-items: end;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  type __VLS_Props = {
2
- /** The element to render, `div` by default. */
2
+ /** The element to render, `div` by default; such as `ul` (with `li` children). */
3
3
  as?: string;
4
- /** A space token number (1, 2, 3, 4, 6, 8), or any CSS length as a string. */
4
+ /** A space token number (1, 2, 3, 4, 6, 8) becomes `var(--e-space-N)`; a string is used as given, so any CSS length works. */
5
5
  gap?: number | string;
6
6
  /** Aligns the children across the column: `center` or `end`. Stretched by default. */
7
7
  align?: "center" | "end";
@@ -1 +1 @@
1
- {"version":3,"file":"EStack.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_normalizeStyle","_withCtx","_renderSlot","EStack_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeClass","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Stack/EStack.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 /** Aligns the children across the column: `center` or `end`. Stretched by default. */\n align?: \"center\" | \"end\";\n }>(),\n { as: \"div\", gap: 4 },\n);\n\ndefineSlots<{\n /** The children, one under another. */\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-stack\" :class=\"align && `e-stack--${align}`\" :style=\"{ '--e-gap': gapValue }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-stack {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-content: start;\n gap: var(--e-gap, var(--e-space-3));\n min-width: 0;\n }\n\n .e-stack--center {\n justify-items: center;\n }\n\n .e-stack--end {\n justify-items: end;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;EAIA,IAAMQ,IAAQC,GAiBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGR,EAAA,GAAAC,EAEYC,EAFIO,EAAA,EAAE,GAAA;GAAE,OAAKN,EAAA,CAAC,WAAkBM,EAAA,SAAK,YAAgBA,EAAA,OAAK,CAAA;GAAK,OAAKL,EAAA,EAAA,WAAeM,EAAA,MAAQ,CAAA;;GACrG,SAAAL,QAAQ,CAARC,EAAQa,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EStack.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_normalizeStyle","_withCtx","_renderSlot","EStack_vue_vue_type_script_setup_true_lang_default","props","__props","gapValue","computed","openBlock","createBlock","resolveDynamicComponent","normalizeClass","normalizeStyle","withCtx","renderSlot","_ctx"],"sources":["../../../src/components/Stack/EStack.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; such as `ul` (with `li` children). */\n as?: string;\n /** A space token number (1, 2, 3, 4, 6, 8) becomes `var(--e-space-N)`; a string is used as given, so any CSS length works. */\n gap?: number | string;\n /** Aligns the children across the column: `center` or `end`. Stretched by default. */\n align?: \"center\" | \"end\";\n }>(),\n { as: \"div\", gap: 4 },\n);\n\ndefineSlots<{\n /** The children, one under another. */\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-stack\" :class=\"align && `e-stack--${align}`\" :style=\"{ '--e-gap': gapValue }\">\n <slot />\n </component>\n</template>\n\n<style>\n@layer e.blocks {\n .e-stack {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-content: start;\n gap: var(--e-gap, var(--e-space-3));\n min-width: 0;\n }\n\n .e-stack--center {\n justify-items: center;\n }\n\n .e-stack--end {\n justify-items: end;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;EAIA,IAAMQ,IAAQC,GAiBRC,IAAWC,QAAgB,OAAOH,EAAM,OAAQ,WAAW,iBAAiBA,EAAM,IAAI,KAAKA,EAAM,GAAI;E,kBAIzGR,EAAA,GAAAC,EAEYC,EAFIO,EAAA,EAAE,GAAA;GAAE,OAAKN,EAAA,CAAC,WAAkBM,EAAA,SAAK,YAAgBA,EAAA,OAAK,CAAA;GAAK,OAAKL,EAAA,EAAA,WAAeM,EAAA,MAAQ,CAAA;;GACrG,SAAAL,QAAQ,CAARC,EAAQa,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EStamp.js","names":["_sfc_main","EStamp_vue_vue_type_script_setup_true_lang_default","EStamp_default"],"sources":["../../../src/components/Stamp/EStamp.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconName } from \"../../icons/phosphor.js\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport type StampTone = \"success\" | \"info\" | \"warning\" | \"danger\";\nexport type StampStatus =\n \"paid\" | \"due\" | \"overdue\" | \"action\" | \"scheduled\" | \"confirmed\" | \"cancelled\" | \"signed\" | \"pending\" | \"complete\";\n\nconst props = withDefaults(\n defineProps<{\n /** A preset: sets the tone, the word and the glyph. */\n status?: StampStatus;\n /** Overrides the preset's tone. Without a status, defaults to `info`. */\n tone?: StampTone;\n /** The word. Overrides the preset's. */\n label?: string;\n /** Overrides the preset's glyph. */\n icon?: IconProp;\n /** A date or day count, set after the word. */\n detail?: string;\n /** Smaller, for rows. */\n small?: boolean;\n /** `solid` is a filled badge with light text (the default); `subtle` is a soft tint with a tone-coloured outline and text. */\n variant?: \"solid\" | \"subtle\";\n}>(),\n { variant: \"solid\" },\n);\n\nconst PRESETS: Record<StampStatus, [StampTone, IconName]> = {\n paid: [\"success\", \"check\"],\n due: [\"info\", \"clock\"],\n overdue: [\"danger\", \"alert\"],\n action: [\"warning\", \"alert\"],\n scheduled: [\"info\", \"calendar\"],\n confirmed: [\"success\", \"check\"],\n cancelled: [\"danger\", \"x\"],\n signed: [\"success\", \"check\"],\n pending: [\"info\", \"clock\"],\n complete: [\"success\", \"check\"],\n};\nconst TONE_ICON: Record<StampTone, IconName> = { info: \"info\", success: \"check\", warning: \"alert\", danger: \"alert\" };\n\nconst t = useMessages();\nconst preset = computed(() => (props.status ? PRESETS[props.status] : undefined));\nconst tone = computed<StampTone>(() => props.tone || preset.value?.[0] || \"info\");\nconst text = computed(() => props.label || (preset.value ? t(`status.${props.status}`) : t(\"status\")));\nconst glyph = computed(() => props.icon || preset.value?.[1] || TONE_ICON[tone.value]);\n</script>\n\n<template>\n <div\n class=\"e-stamp\"\n :class=\"[`e-stamp--${tone}`, small && 'e-stamp--s', variant === 'subtle' && 'e-stamp--subtle']\"\n role=\"img\"\n :aria-label=\"text + (detail ? ', ' + detail : '')\"\n >\n <EIcon :name=\"glyph\" bold />\n <span class=\"e-stamp-word\">{{ text }}</span>\n <span v-if=\"detail\" class=\"e-stamp-detail\">{{ detail }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-stamp {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-ink);\n --e-on: var(--e-surface);\n\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n align-items: center;\n gap: var(--e-space-2);\n min-height: 28px;\n padding: 0 var(--e-space-3);\n border-radius: var(--e-radius-sm);\n background: var(--e-strong);\n color: var(--e-on);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-strong);\n cursor: default;\n justify-self: start;\n }\n\n .e-stamp--success {\n --e-soft: var(--e-secondary-soft);\n --e-strong: var(--e-secondary);\n --e-on: var(--e-on-secondary);\n }\n\n .e-stamp--info {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-primary);\n --e-on: var(--e-on-primary);\n }\n\n .e-stamp--danger {\n --e-soft: var(--e-danger-soft);\n --e-strong: var(--e-danger);\n --e-on: var(--e-on-danger);\n }\n\n .e-stamp--warning {\n --e-soft: var(--e-warning-soft);\n --e-strong: var(--e-warning-strong);\n --e-on: var(--e-surface);\n }\n\n .e-stamp--subtle {\n background: var(--e-soft);\n color: var(--e-strong);\n }\n\n .e-stamp:not(.e-stamp--subtle) .e-stamp-detail {\n border-inline-start-color: color-mix(in srgb, var(--e-on) 55%, transparent);\n }\n\n .e-stamp-word {\n font: 600 var(--e-text-xs) / 16px var(--e-font-mono);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n\n .e-stamp-detail {\n font: 500 var(--e-text-xs) / 1 var(--e-font-mono);\n letter-spacing: 0.04em;\n padding-inline-start: var(--e-space-2);\n border-inline-start: 1px solid currentColor;\n }\n\n .e-stamp .e-icon {\n width: 14px;\n height: 14px;\n }\n\n .e-stamp--s {\n min-height: 24px;\n gap: 6px;\n padding: 0 10px;\n align-self: flex-start;\n }\n\n .e-stamp--s .e-icon {\n width: 13px;\n height: 13px;\n }\n\n .e-stamp--s .e-stamp-word {\n font-size: var(--e-text-xs);\n line-height: 14px;\n letter-spacing: 0.06em;\n }\n\n @media (forced-colors: active) {\n .e-stamp {\n border: 1px solid CanvasText;\n }\n }\n\n @media print {\n .e-stamp {\n border: 1px solid #000;\n background: none;\n color: #000;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EStamp.js","names":["_sfc_main","EStamp_vue_vue_type_script_setup_true_lang_default","EStamp_default"],"sources":["../../../src/components/Stamp/EStamp.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport type StampTone = \"neutral\" | \"ink\" | \"success\" | \"info\" | \"warning\" | \"danger\";\nexport type StampStatus =\n \"paid\" | \"due\" | \"overdue\" | \"action\" | \"scheduled\" | \"confirmed\" | \"cancelled\" | \"signed\" | \"pending\" | \"complete\";\n\nconst props = defineProps<{\n /** A preset: sets the tone and the word (message `status.<name>`). */\n status?: StampStatus;\n /** Overrides the preset's tone. Without a status it is `neutral` (ink; `ink` is the same). `success`: paid, confirmed. `info`: due, scheduled. `warning`: needs attention. `danger`: overdue, failed. @default \"ink\" */\n tone?: StampTone;\n /** The word. Overrides the preset's; the default slot overrides both. @default preset's word, else Status */\n label?: string;\n /** A glyph before the word. None by default. */\n icon?: IconProp;\n /** A date or day count, set after the word. */\n detail?: string;\n /** `sm` is shorter, for rows and tables. @default \"md\" */\n size?: \"sm\" | \"md\";\n}>();\n\ndefineSlots<{\n /** The word, instead of `label` or the preset's. Write sentence case; the stamp sets it in capitals. */\n default?(): unknown;\n}>();\n\nconst PRESETS: Record<StampStatus, StampTone> = {\n paid: \"success\",\n due: \"info\",\n overdue: \"danger\",\n action: \"warning\",\n scheduled: \"info\",\n confirmed: \"success\",\n cancelled: \"danger\",\n signed: \"success\",\n pending: \"info\",\n complete: \"success\",\n};\n\nconst t = useMessages();\nconst preset = computed(() => (props.status ? PRESETS[props.status] : undefined));\nconst tone = computed<StampTone>(() => props.tone || preset.value || \"neutral\");\nconst toneClass = computed(() => (tone.value === \"neutral\" || tone.value === \"ink\" ? null : `e-stamp--${tone.value}`));\nconst text = computed(() => props.label || (preset.value ? t(`status.${props.status}`) : t(\"status\")));\n</script>\n\n<template>\n <span class=\"e-stamp\" :class=\"[toneClass, size === 'sm' && 'e-stamp--sm']\">\n <EIcon v-if=\"icon\" :name=\"icon\" bold />\n <span class=\"e-stamp-word\"><slot>{{ text }}</slot></span>\n <span v-if=\"detail\" class=\"e-stamp-detail\">{{ detail }}</span>\n </span>\n</template>\n\n<style>\n@layer e.primitives {\n .e-stamp {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-ink);\n --e-on: var(--e-surface);\n\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n align-items: center;\n gap: var(--e-space-2);\n\n --e-bc: var(--e-strong);\n\n min-height: calc(var(--e-chip-height) + var(--e-space-1));\n padding: 0 var(--e-space-3);\n border-radius: var(--e-radius-sm);\n background: var(--e-strong);\n color: var(--e-on);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-bc);\n outline: var(--e-stroke-card) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-card));\n cursor: default;\n justify-self: start;\n }\n\n .e-stamp--success {\n --e-soft: var(--e-secondary-soft);\n --e-strong: var(--e-secondary);\n --e-on: var(--e-on-secondary);\n }\n\n .e-stamp--info {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-primary);\n --e-on: var(--e-on-primary);\n }\n\n .e-stamp--danger {\n --e-soft: var(--e-danger-soft);\n --e-strong: var(--e-danger);\n --e-on: var(--e-on-danger);\n }\n\n .e-stamp--warning {\n --e-soft: var(--e-warning-soft);\n --e-strong: var(--e-warning-strong);\n --e-on: var(--e-surface);\n }\n\n .e-stamp .e-stamp-detail {\n border-inline-start-color: color-mix(in srgb, var(--e-on) 55%, transparent);\n }\n\n .e-stamp-word {\n font: 600 var(--e-text-xs) / 16px var(--e-font-mono);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n\n .e-stamp-detail {\n font: 500 var(--e-text-xs) / 1 var(--e-font-mono);\n letter-spacing: 0.04em;\n padding-inline-start: var(--e-space-2);\n border-inline-start: var(--e-stroke-hair) solid currentColor;\n }\n\n .e-stamp .e-icon {\n width: 14px;\n height: 14px;\n }\n\n .e-stamp--sm {\n min-height: var(--e-chip-height);\n gap: var(--e-space-1);\n align-self: flex-start;\n }\n\n .e-stamp--sm .e-icon {\n width: 13px;\n height: 13px;\n }\n\n .e-stamp--sm .e-stamp-word {\n font-size: var(--e-text-xs);\n line-height: 14px;\n letter-spacing: 0.06em;\n }\n\n @media (forced-colors: active) {\n .e-stamp {\n border: var(--e-stroke-card) solid CanvasText;\n }\n }\n\n @media print {\n .e-stamp {\n border: var(--e-stroke-card) solid var(--e-print-ink);\n outline: 0;\n background: none;\n box-shadow: none;\n color: var(--e-print-ink);\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1,24 +1,30 @@
1
1
  import { IconProp } from '../../icons/types.js';
2
- export type StampTone = "success" | "info" | "warning" | "danger";
2
+ export type StampTone = "neutral" | "ink" | "success" | "info" | "warning" | "danger";
3
3
  export type StampStatus = "paid" | "due" | "overdue" | "action" | "scheduled" | "confirmed" | "cancelled" | "signed" | "pending" | "complete";
4
4
  type __VLS_Props = {
5
- /** A preset: sets the tone, the word and the glyph. */
5
+ /** A preset: sets the tone and the word (message `status.<name>`). */
6
6
  status?: StampStatus;
7
- /** Overrides the preset's tone. Without a status, defaults to `info`. */
7
+ /** Overrides the preset's tone. Without a status it is `neutral` (ink; `ink` is the same). `success`: paid, confirmed. `info`: due, scheduled. `warning`: needs attention. `danger`: overdue, failed. @default "ink" */
8
8
  tone?: StampTone;
9
- /** The word. Overrides the preset's. */
9
+ /** The word. Overrides the preset's; the default slot overrides both. @default preset's word, else Status */
10
10
  label?: string;
11
- /** Overrides the preset's glyph. */
11
+ /** A glyph before the word. None by default. */
12
12
  icon?: IconProp;
13
13
  /** A date or day count, set after the word. */
14
14
  detail?: string;
15
- /** Smaller, for rows. */
16
- small?: boolean;
17
- /** `solid` is a filled badge with light text (the default); `subtle` is a soft tint with a tone-coloured outline and text. */
18
- variant?: "solid" | "subtle";
15
+ /** `sm` is shorter, for rows and tables. @default "md" */
16
+ size?: "sm" | "md";
19
17
  };
20
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
- variant: "solid" | "subtle";
22
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
+ type __VLS_Slots = {
19
+ /** The word, instead of `label` or the preset's. Write sentence case; the stamp sets it in capitals. */
20
+ default?(): unknown;
21
+ };
22
+ declare const __VLS_base: 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>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
24
  declare const _default: typeof __VLS_export;
24
25
  export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -1,12 +1,12 @@
1
1
  /* empty css */
2
2
  import { useMessages as e } from "../../config.js";
3
3
  import t from "../Icon/EIcon.js";
4
- import { computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, toDisplayString as u } from "vue";
4
+ import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, defineComponent as c, normalizeClass as l, openBlock as u, renderSlot as d, toDisplayString as f } from "vue";
5
5
  //#region src/components/Stamp/EStamp.vue?vue&type=script&setup=true&lang.ts
6
- var d = ["aria-label"], f = { class: "e-stamp-word" }, p = {
7
- key: 0,
6
+ var p = { class: "e-stamp-word" }, m = {
7
+ key: 1,
8
8
  class: "e-stamp-detail"
9
- }, m = /*@__PURE__*/ s({
9
+ }, h = /*@__PURE__*/ c({
10
10
  __name: "EStamp",
11
11
  props: {
12
12
  status: {},
@@ -14,46 +14,33 @@ var d = ["aria-label"], f = { class: "e-stamp-word" }, p = {
14
14
  label: {},
15
15
  icon: {},
16
16
  detail: {},
17
- small: { type: Boolean },
18
- variant: { default: "solid" }
17
+ size: {}
19
18
  },
20
- setup(s) {
21
- let m = s, h = {
22
- paid: ["success", "check"],
23
- due: ["info", "clock"],
24
- overdue: ["danger", "alert"],
25
- action: ["warning", "alert"],
26
- scheduled: ["info", "calendar"],
27
- confirmed: ["success", "check"],
28
- cancelled: ["danger", "x"],
29
- signed: ["success", "check"],
30
- pending: ["info", "clock"],
31
- complete: ["success", "check"]
32
- }, g = {
33
- info: "info",
34
- success: "check",
35
- warning: "alert",
36
- danger: "alert"
37
- }, _ = e(), v = n(() => m.status ? h[m.status] : void 0), y = n(() => m.tone || v.value?.[0] || "info"), b = n(() => m.label || (v.value ? _(`status.${m.status}`) : _("status"))), x = n(() => m.icon || v.value?.[1] || g[y.value]);
38
- return (e, n) => (l(), i("div", {
39
- class: c(["e-stamp", [
40
- `e-stamp--${y.value}`,
41
- s.small && "e-stamp--s",
42
- s.variant === "subtle" && "e-stamp--subtle"
43
- ]]),
44
- role: "img",
45
- "aria-label": b.value + (s.detail ? ", " + s.detail : "")
46
- }, [
47
- o(t, {
48
- name: x.value,
19
+ setup(c) {
20
+ let h = c, g = {
21
+ paid: "success",
22
+ due: "info",
23
+ overdue: "danger",
24
+ action: "warning",
25
+ scheduled: "info",
26
+ confirmed: "success",
27
+ cancelled: "danger",
28
+ signed: "success",
29
+ pending: "info",
30
+ complete: "success"
31
+ }, _ = e(), v = n(() => h.status ? g[h.status] : void 0), y = n(() => h.tone || v.value || "neutral"), b = n(() => y.value === "neutral" || y.value === "ink" ? null : `e-stamp--${y.value}`), x = n(() => h.label || (v.value ? _(`status.${h.status}`) : _("status")));
32
+ return (e, n) => (u(), a("span", { class: l(["e-stamp", [b.value, c.size === "sm" && "e-stamp--sm"]]) }, [
33
+ c.icon ? (u(), r(t, {
34
+ key: 0,
35
+ name: c.icon,
49
36
  bold: ""
50
- }, null, 8, ["name"]),
51
- a("span", f, u(b.value), 1),
52
- s.detail ? (l(), i("span", p, u(s.detail), 1)) : r("", !0)
53
- ], 10, d));
37
+ }, null, 8, ["name"])) : i("", !0),
38
+ o("span", p, [d(e.$slots, "default", {}, () => [s(f(x.value), 1)])]),
39
+ c.detail ? (u(), a("span", m, f(c.detail), 1)) : i("", !0)
40
+ ], 2));
54
41
  }
55
42
  });
56
43
  //#endregion
57
- export { m as default };
44
+ export { h as default };
58
45
 
59
46
  //# sourceMappingURL=EStamp.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EStamp.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createVNode","EIcon","_createElementVNode","_toDisplayString","_createCommentVNode","EIcon_default","_hoisted_1","_hoisted_2","_hoisted_3","EStamp_vue_vue_type_script_setup_true_lang_default","props","__props","PRESETS","TONE_ICON","t","useMessages","preset","computed","tone","text","glyph","openBlock","createElementBlock","normalizeClass","createVNode","createElementVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/Stamp/EStamp.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconName } from \"../../icons/phosphor.js\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport type StampTone = \"success\" | \"info\" | \"warning\" | \"danger\";\nexport type StampStatus =\n \"paid\" | \"due\" | \"overdue\" | \"action\" | \"scheduled\" | \"confirmed\" | \"cancelled\" | \"signed\" | \"pending\" | \"complete\";\n\nconst props = withDefaults(\n defineProps<{\n /** A preset: sets the tone, the word and the glyph. */\n status?: StampStatus;\n /** Overrides the preset's tone. Without a status, defaults to `info`. */\n tone?: StampTone;\n /** The word. Overrides the preset's. */\n label?: string;\n /** Overrides the preset's glyph. */\n icon?: IconProp;\n /** A date or day count, set after the word. */\n detail?: string;\n /** Smaller, for rows. */\n small?: boolean;\n /** `solid` is a filled badge with light text (the default); `subtle` is a soft tint with a tone-coloured outline and text. */\n variant?: \"solid\" | \"subtle\";\n}>(),\n { variant: \"solid\" },\n);\n\nconst PRESETS: Record<StampStatus, [StampTone, IconName]> = {\n paid: [\"success\", \"check\"],\n due: [\"info\", \"clock\"],\n overdue: [\"danger\", \"alert\"],\n action: [\"warning\", \"alert\"],\n scheduled: [\"info\", \"calendar\"],\n confirmed: [\"success\", \"check\"],\n cancelled: [\"danger\", \"x\"],\n signed: [\"success\", \"check\"],\n pending: [\"info\", \"clock\"],\n complete: [\"success\", \"check\"],\n};\nconst TONE_ICON: Record<StampTone, IconName> = { info: \"info\", success: \"check\", warning: \"alert\", danger: \"alert\" };\n\nconst t = useMessages();\nconst preset = computed(() => (props.status ? PRESETS[props.status] : undefined));\nconst tone = computed<StampTone>(() => props.tone || preset.value?.[0] || \"info\");\nconst text = computed(() => props.label || (preset.value ? t(`status.${props.status}`) : t(\"status\")));\nconst glyph = computed(() => props.icon || preset.value?.[1] || TONE_ICON[tone.value]);\n</script>\n\n<template>\n <div\n class=\"e-stamp\"\n :class=\"[`e-stamp--${tone}`, small && 'e-stamp--s', variant === 'subtle' && 'e-stamp--subtle']\"\n role=\"img\"\n :aria-label=\"text + (detail ? ', ' + detail : '')\"\n >\n <EIcon :name=\"glyph\" bold />\n <span class=\"e-stamp-word\">{{ text }}</span>\n <span v-if=\"detail\" class=\"e-stamp-detail\">{{ detail }}</span>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-stamp {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-ink);\n --e-on: var(--e-surface);\n\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n align-items: center;\n gap: var(--e-space-2);\n min-height: 28px;\n padding: 0 var(--e-space-3);\n border-radius: var(--e-radius-sm);\n background: var(--e-strong);\n color: var(--e-on);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-strong);\n cursor: default;\n justify-self: start;\n }\n\n .e-stamp--success {\n --e-soft: var(--e-secondary-soft);\n --e-strong: var(--e-secondary);\n --e-on: var(--e-on-secondary);\n }\n\n .e-stamp--info {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-primary);\n --e-on: var(--e-on-primary);\n }\n\n .e-stamp--danger {\n --e-soft: var(--e-danger-soft);\n --e-strong: var(--e-danger);\n --e-on: var(--e-on-danger);\n }\n\n .e-stamp--warning {\n --e-soft: var(--e-warning-soft);\n --e-strong: var(--e-warning-strong);\n --e-on: var(--e-surface);\n }\n\n .e-stamp--subtle {\n background: var(--e-soft);\n color: var(--e-strong);\n }\n\n .e-stamp:not(.e-stamp--subtle) .e-stamp-detail {\n border-inline-start-color: color-mix(in srgb, var(--e-on) 55%, transparent);\n }\n\n .e-stamp-word {\n font: 600 var(--e-text-xs) / 16px var(--e-font-mono);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n\n .e-stamp-detail {\n font: 500 var(--e-text-xs) / 1 var(--e-font-mono);\n letter-spacing: 0.04em;\n padding-inline-start: var(--e-space-2);\n border-inline-start: 1px solid currentColor;\n }\n\n .e-stamp .e-icon {\n width: 14px;\n height: 14px;\n }\n\n .e-stamp--s {\n min-height: 24px;\n gap: 6px;\n padding: 0 10px;\n align-self: flex-start;\n }\n\n .e-stamp--s .e-icon {\n width: 13px;\n height: 13px;\n }\n\n .e-stamp--s .e-stamp-word {\n font-size: var(--e-text-xs);\n line-height: 14px;\n letter-spacing: 0.06em;\n }\n\n @media (forced-colors: active) {\n .e-stamp {\n border: 1px solid CanvasText;\n }\n }\n\n @media print {\n .e-stamp {\n border: 1px solid #000;\n background: none;\n color: #000;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAYA,IAAMa,IAAQC,GAoBRC,IAAsD;GAC1D,MAAM,CAAC,WAAW,OAAO;GACzB,KAAK,CAAC,QAAQ,OAAO;GACrB,SAAS,CAAC,UAAU,OAAO;GAC3B,QAAQ,CAAC,WAAW,OAAO;GAC3B,WAAW,CAAC,QAAQ,UAAU;GAC9B,WAAW,CAAC,WAAW,OAAO;GAC9B,WAAW,CAAC,UAAU,GAAG;GACzB,QAAQ,CAAC,WAAW,OAAO;GAC3B,SAAS,CAAC,QAAQ,OAAO;GACzB,UAAU,CAAC,WAAW,OAAO;EAC/B,GACMC,IAAyC;GAAE,MAAM;GAAQ,SAAS;GAAS,SAAS;GAAS,QAAQ;EAAQ,GAE7GC,IAAIC,EAAY,GAChBC,IAASC,QAAgBP,EAAM,SAASE,EAAQF,EAAM,UAAU,KAAA,CAAU,GAC1EQ,IAAOD,QAA0BP,EAAM,QAAQM,EAAO,QAAQ,MAAM,MAAM,GAC1EG,IAAOF,QAAeP,EAAM,UAAUM,EAAO,QAAQF,EAAE,UAAUJ,EAAM,QAAQ,IAAII,EAAE,QAAQ,EAAE,GAC/FM,IAAQH,QAAeP,EAAM,QAAQM,EAAO,QAAQ,MAAMH,EAAUK,EAAK,MAAM;E,kBAInFrB,EAAA,GAAAC,EASM,OAAA;GARJ,OAAKC,EAAA,CAAC,WAAS;IAAA,YACMmB,EAAA;IAAQP,EAAA,SAAK;IAAkBA,EAAA,YAAO,YAAA;GAAA,CAAA,CAAA;GAC3D,MAAK;GACJ,cAAYQ,EAAA,SAAQR,EAAA,SAAM,OAAUA,EAAA,SAAM;;GAE3CX,EAA4BC,GAAA;IAApB,MAAMmB,EAAA;IAAO,MAAA;;GACrBlB,EAA4C,QAA5CK,GAA4CJ,EAAdgB,EAAA,KAAI,GAAA,CAAA;GACtBR,EAAA,UAAZd,EAAA,GAAAC,EAA8D,QAA9DU,GAA8DL,EAAhBQ,EAAA,MAAM,GAAA,CAAA,K"}
1
+ {"version":3,"file":"EStamp.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createBlock","EIcon","_createCommentVNode","_createElementVNode","_renderSlot","_createTextVNode","_toDisplayString","EIcon_default","_hoisted_1","_hoisted_2","EStamp_vue_vue_type_script_setup_true_lang_default","props","__props","PRESETS","t","useMessages","preset","computed","tone","toneClass","text","openBlock","createElementBlock","normalizeClass","createBlock","createCommentVNode","createElementVNode","renderSlot","_ctx","createTextVNode","toDisplayString"],"sources":["../../../src/components/Stamp/EStamp.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport type { IconProp } from \"../../icons/types.js\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport type StampTone = \"neutral\" | \"ink\" | \"success\" | \"info\" | \"warning\" | \"danger\";\nexport type StampStatus =\n \"paid\" | \"due\" | \"overdue\" | \"action\" | \"scheduled\" | \"confirmed\" | \"cancelled\" | \"signed\" | \"pending\" | \"complete\";\n\nconst props = defineProps<{\n /** A preset: sets the tone and the word (message `status.<name>`). */\n status?: StampStatus;\n /** Overrides the preset's tone. Without a status it is `neutral` (ink; `ink` is the same). `success`: paid, confirmed. `info`: due, scheduled. `warning`: needs attention. `danger`: overdue, failed. @default \"ink\" */\n tone?: StampTone;\n /** The word. Overrides the preset's; the default slot overrides both. @default preset's word, else Status */\n label?: string;\n /** A glyph before the word. None by default. */\n icon?: IconProp;\n /** A date or day count, set after the word. */\n detail?: string;\n /** `sm` is shorter, for rows and tables. @default \"md\" */\n size?: \"sm\" | \"md\";\n}>();\n\ndefineSlots<{\n /** The word, instead of `label` or the preset's. Write sentence case; the stamp sets it in capitals. */\n default?(): unknown;\n}>();\n\nconst PRESETS: Record<StampStatus, StampTone> = {\n paid: \"success\",\n due: \"info\",\n overdue: \"danger\",\n action: \"warning\",\n scheduled: \"info\",\n confirmed: \"success\",\n cancelled: \"danger\",\n signed: \"success\",\n pending: \"info\",\n complete: \"success\",\n};\n\nconst t = useMessages();\nconst preset = computed(() => (props.status ? PRESETS[props.status] : undefined));\nconst tone = computed<StampTone>(() => props.tone || preset.value || \"neutral\");\nconst toneClass = computed(() => (tone.value === \"neutral\" || tone.value === \"ink\" ? null : `e-stamp--${tone.value}`));\nconst text = computed(() => props.label || (preset.value ? t(`status.${props.status}`) : t(\"status\")));\n</script>\n\n<template>\n <span class=\"e-stamp\" :class=\"[toneClass, size === 'sm' && 'e-stamp--sm']\">\n <EIcon v-if=\"icon\" :name=\"icon\" bold />\n <span class=\"e-stamp-word\"><slot>{{ text }}</slot></span>\n <span v-if=\"detail\" class=\"e-stamp-detail\">{{ detail }}</span>\n </span>\n</template>\n\n<style>\n@layer e.primitives {\n .e-stamp {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-ink);\n --e-on: var(--e-surface);\n\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n align-items: center;\n gap: var(--e-space-2);\n\n --e-bc: var(--e-strong);\n\n min-height: calc(var(--e-chip-height) + var(--e-space-1));\n padding: 0 var(--e-space-3);\n border-radius: var(--e-radius-sm);\n background: var(--e-strong);\n color: var(--e-on);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-bc);\n outline: var(--e-stroke-card) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-card));\n cursor: default;\n justify-self: start;\n }\n\n .e-stamp--success {\n --e-soft: var(--e-secondary-soft);\n --e-strong: var(--e-secondary);\n --e-on: var(--e-on-secondary);\n }\n\n .e-stamp--info {\n --e-soft: var(--e-surface-tint);\n --e-strong: var(--e-primary);\n --e-on: var(--e-on-primary);\n }\n\n .e-stamp--danger {\n --e-soft: var(--e-danger-soft);\n --e-strong: var(--e-danger);\n --e-on: var(--e-on-danger);\n }\n\n .e-stamp--warning {\n --e-soft: var(--e-warning-soft);\n --e-strong: var(--e-warning-strong);\n --e-on: var(--e-surface);\n }\n\n .e-stamp .e-stamp-detail {\n border-inline-start-color: color-mix(in srgb, var(--e-on) 55%, transparent);\n }\n\n .e-stamp-word {\n font: 600 var(--e-text-xs) / 16px var(--e-font-mono);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n\n .e-stamp-detail {\n font: 500 var(--e-text-xs) / 1 var(--e-font-mono);\n letter-spacing: 0.04em;\n padding-inline-start: var(--e-space-2);\n border-inline-start: var(--e-stroke-hair) solid currentColor;\n }\n\n .e-stamp .e-icon {\n width: 14px;\n height: 14px;\n }\n\n .e-stamp--sm {\n min-height: var(--e-chip-height);\n gap: var(--e-space-1);\n align-self: flex-start;\n }\n\n .e-stamp--sm .e-icon {\n width: 13px;\n height: 13px;\n }\n\n .e-stamp--sm .e-stamp-word {\n font-size: var(--e-text-xs);\n line-height: 14px;\n letter-spacing: 0.06em;\n }\n\n @media (forced-colors: active) {\n .e-stamp {\n border: var(--e-stroke-card) solid CanvasText;\n }\n }\n\n @media print {\n .e-stamp {\n border: var(--e-stroke-card) solid var(--e-print-ink);\n outline: 0;\n background: none;\n box-shadow: none;\n color: var(--e-print-ink);\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAWA,IAAMc,IAAQC,GAoBRC,IAA0C;GAC9C,MAAM;GACN,KAAK;GACL,SAAS;GACT,QAAQ;GACR,WAAW;GACX,WAAW;GACX,WAAW;GACX,QAAQ;GACR,SAAS;GACT,UAAU;EACZ,GAEMC,IAAIC,EAAY,GAChBC,IAASC,QAAgBN,EAAM,SAASE,EAAQF,EAAM,UAAU,KAAA,CAAU,GAC1EO,IAAOD,QAA0BN,EAAM,QAAQK,EAAO,SAAS,SAAS,GACxEG,IAAYF,QAAgBC,EAAK,UAAU,aAAaA,EAAK,UAAU,QAAQ,OAAO,YAAYA,EAAK,OAAQ,GAC/GE,IAAOH,QAAeN,EAAM,UAAUK,EAAO,QAAQF,EAAE,UAAUH,EAAM,QAAQ,IAAIG,EAAE,QAAQ,EAAE;E,kBAInGjB,EAAA,GAAAC,EAIO,QAAA,EAJD,OAAKC,EAAA,CAAC,WAAS,CAAUoB,EAAA,OAAWP,EAAA,SAAI,QAAA,aAAA,CAAA,CAAA,E;GAC/BA,EAAA,QAAbf,EAAA,GAAAG,EAAuCC,GAAA;;IAAnB,MAAMW,EAAA;IAAM,MAAA;;GAChCT,EAAyD,QAAzDK,GAAyD,CAA9BJ,EAAuBwB,EAAA,QAAA,WAAA,CAAA,SAAA,CAAdvB,EAAAC,EAAAc,EAAA,KAAI,GAAA,CAAA,C;GAC5BR,EAAA,UAAZf,EAAA,GAAAC,EAA8D,QAA9DW,GAA8DH,EAAhBM,EAAA,MAAM,GAAA,CAAA,K"}
@@ -1 +1 @@
1
- {"version":3,"file":"EStepper.js","names":["_sfc_main","EStepper_vue_vue_type_script_setup_true_lang_default","EStepper_default"],"sources":["../../../src/components/Stepper/EStepper.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport interface Step {\n /** The name of the step. */\n label: string;\n /** `done` is finished, `current` is where the person is, `upcoming` is still ahead (`todo` is accepted as the same thing). */\n state: \"done\" | \"current\" | \"upcoming\" | \"todo\";\n}\n\ndefineProps<{\n /** The steps in order. Exactly one is normally `current`. */\n steps: Step[];\n /** The list's name for assistive technology, such as \"Registration\". Defaults to \"Progress\". */\n label?: string;\n}>();\n\nconst t = useMessages();\n</script>\n\n<template>\n <ol class=\"e-steps\" :aria-label=\"label || t('progress')\">\n <li\n v-for=\"(step, i) in steps\"\n :key=\"i\"\n class=\"e-step\"\n :data-state=\"step.state === 'todo' ? 'upcoming' : step.state\"\n :aria-current=\"step.state === 'current' ? 'step' : undefined\"\n >\n <span class=\"e-step-dot\">\n <EIcon v-if=\"step.state === 'done'\" name=\"check\" small />\n <template v-else>{{ i + 1 }}</template>\n </span>\n <span class=\"e-step-label\">\n {{ step.label }}\n <span v-if=\"step.state === 'done'\" class=\"e-sr\"> ({{ t(\"done\") }})</span>\n </span>\n </li>\n </ol>\n</template>\n\n<style>\n@layer e.page {\n .e-steps {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--e-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n counter-reset: s;\n }\n\n .e-step {\n display: grid;\n justify-items: center;\n align-content: start;\n gap: var(--e-space-2);\n position: relative;\n text-align: center;\n min-width: 0;\n }\n\n .e-step::before {\n content: \"\";\n position: absolute;\n top: 13px;\n inset-inline-end: 50%;\n width: 100%;\n border-top: 2px solid var(--e-border-strong);\n z-index: 0;\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before,\n .e-step[data-state=\"current\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step-dot {\n position: relative;\n z-index: var(--e-z-raised);\n display: grid;\n place-items: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n background: var(--e-surface);\n color: var(--e-muted);\n font: 600 var(--e-text-xs) / 1 var(--e-font-mono);\n }\n\n .e-step[data-state=\"done\"] .e-step-dot {\n border: var(--e-stroke-edge) solid var(--e-primary);\n background: var(--e-primary);\n color: var(--e-on-primary);\n }\n\n .e-step[data-state=\"current\"] .e-step-dot {\n border: 2px solid var(--e-ink);\n color: var(--e-ink);\n background: var(--e-surface);\n }\n\n .e-step-label {\n font: 400 var(--e-text-sm) / 1.3 var(--e-font-sans);\n color: var(--e-muted);\n overflow-wrap: anywhere;\n }\n\n .e-step[data-state=\"current\"] .e-step-label {\n color: var(--e-ink);\n font-weight: 600;\n }\n\n .e-step[data-state=\"done\"] .e-step-label {\n color: var(--e-ink);\n }\n\n /* stylelint-disable declaration-block-no-redundant-longhand-properties -- the longhands stay separate */\n @media (max-width: 32rem) {\n .e-steps {\n grid-auto-flow: row;\n gap: var(--e-space-3);\n }\n\n .e-step {\n grid-template-columns: auto 1fr;\n justify-items: start;\n align-items: center;\n text-align: start;\n }\n\n .e-step::before {\n display: block;\n top: calc(-1 * var(--e-space-3));\n inset-inline-end: auto;\n inset-inline-start: 13px;\n width: 0;\n height: var(--e-space-3);\n border-top: 0;\n border-inline-start: 2px solid var(--e-border-strong);\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before,\n .e-step[data-state=\"current\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n }\n\n /* stylelint-enable declaration-block-no-redundant-longhand-properties */\n\n @media (forced-colors: active) {\n .e-step[data-state=\"done\"] .e-step-dot {\n forced-color-adjust: none;\n background: Highlight;\n border-color: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EStepper.js","names":["_sfc_main","EStepper_vue_vue_type_script_setup_true_lang_default","EStepper_default"],"sources":["../../../src/components/Stepper/EStepper.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport interface Step {\n /** The name of the step. */\n label: string;\n /** `done` is finished, `current` is where the person is, `upcoming` is still ahead (`todo` is accepted as the same thing). */\n state: \"done\" | \"current\" | \"upcoming\" | \"todo\";\n}\n\ndefineProps<{\n /** The steps in order: `{ label, state }`; `state` is `done`, `current` or `upcoming` (`todo` is an alias). Exactly one is normally `current`. Keep labels to one or two words. */\n steps: Step[];\n /** The list's accessible name. @default \"Progress\" */\n label?: string;\n}>();\n\nconst t = useMessages();\n</script>\n\n<template>\n <ol class=\"e-steps\" :aria-label=\"label || t('progress')\">\n <li\n v-for=\"(step, i) in steps\"\n :key=\"i\"\n class=\"e-step\"\n :data-state=\"step.state === 'todo' ? 'upcoming' : step.state\"\n :aria-current=\"step.state === 'current' ? 'step' : undefined\"\n >\n <span class=\"e-step-dot\">\n <EIcon v-if=\"step.state === 'done'\" name=\"check\" small />\n <template v-else>{{ i + 1 }}</template>\n </span>\n <span class=\"e-step-label\">\n {{ step.label }}\n <span v-if=\"step.state === 'done'\" class=\"e-sr\"> ({{ t(\"done\") }})</span>\n </span>\n </li>\n </ol>\n</template>\n\n<style>\n@layer e.page {\n .e-steps {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--e-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n counter-reset: s;\n }\n\n .e-step {\n --e-dot: 28px;\n\n display: grid;\n justify-items: center;\n align-content: start;\n gap: var(--e-space-2);\n position: relative;\n text-align: center;\n min-width: 0;\n }\n\n .e-step::before {\n content: \"\";\n position: absolute;\n top: calc((var(--e-dot) - var(--e-stroke-focus)) / 2);\n inset-inline-end: 50%;\n width: 100%;\n border-top: var(--e-stroke-focus) solid var(--e-border-strong);\n z-index: 0;\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step[data-state=\"current\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step-dot {\n position: relative;\n z-index: var(--e-z-raised);\n display: grid;\n place-items: center;\n width: var(--e-dot);\n height: var(--e-dot);\n border-radius: 50%;\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n background: var(--e-surface);\n color: var(--e-muted);\n font: 600 var(--e-text-xs) / 1 var(--e-font-mono);\n }\n\n .e-step[data-state=\"done\"] .e-step-dot {\n border: var(--e-stroke-edge) solid var(--e-primary);\n background: var(--e-primary);\n color: var(--e-on-primary);\n }\n\n .e-step[data-state=\"current\"] .e-step-dot {\n border: var(--e-stroke-focus) solid var(--e-primary);\n color: var(--e-primary);\n background: var(--e-surface);\n }\n\n .e-step-label {\n font: 400 var(--e-text-sm) / 1.3 var(--e-font-sans);\n color: var(--e-muted);\n overflow-wrap: anywhere;\n }\n\n .e-step[data-state=\"current\"] .e-step-label {\n color: var(--e-ink);\n font-weight: 600;\n }\n\n .e-step[data-state=\"done\"] .e-step-label {\n color: var(--e-ink);\n }\n\n /* stylelint-disable declaration-block-no-redundant-longhand-properties -- the longhands stay separate */\n @media (max-width: 32rem) {\n .e-steps {\n grid-auto-flow: row;\n gap: var(--e-space-3);\n }\n\n .e-step {\n grid-template-columns: auto 1fr;\n justify-items: start;\n align-items: center;\n text-align: start;\n }\n\n .e-step::before {\n display: block;\n top: calc(-1 * var(--e-space-3));\n inset-inline-end: auto;\n inset-inline-start: calc((var(--e-dot) - var(--e-stroke-focus)) / 2);\n width: 0;\n height: var(--e-space-3);\n border-top: 0;\n border-inline-start: var(--e-stroke-focus) solid var(--e-border-strong);\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n\n .e-step[data-state=\"current\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n }\n\n /* stylelint-enable declaration-block-no-redundant-longhand-properties */\n\n @media (forced-colors: active) {\n .e-step[data-state=\"done\"] .e-step-dot {\n forced-color-adjust: none;\n background: Highlight;\n border-color: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -5,9 +5,9 @@ export interface Step {
5
5
  state: "done" | "current" | "upcoming" | "todo";
6
6
  }
7
7
  type __VLS_Props = {
8
- /** The steps in order. Exactly one is normally `current`. */
8
+ /** The steps in order: `{ label, state }`; `state` is `done`, `current` or `upcoming` (`todo` is an alias). Exactly one is normally `current`. Keep labels to one or two words. */
9
9
  steps: Step[];
10
- /** The list's name for assistive technology, such as "Registration". Defaults to "Progress". */
10
+ /** The list's accessible name. @default "Progress" */
11
11
  label?: string;
12
12
  };
13
13
  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":"EStepper.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_unref","_Fragment","_renderList","_createElementVNode","_createBlock","EIcon","_createTextVNode","_toDisplayString","_createCommentVNode","EIcon_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EStepper_vue_vue_type_script_setup_true_lang_default","t","useMessages","openBlock","createElementBlock","__props","unref","Fragment","renderList","i","step","createElementVNode","createBlock","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/Stepper/EStepper.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport interface Step {\n /** The name of the step. */\n label: string;\n /** `done` is finished, `current` is where the person is, `upcoming` is still ahead (`todo` is accepted as the same thing). */\n state: \"done\" | \"current\" | \"upcoming\" | \"todo\";\n}\n\ndefineProps<{\n /** The steps in order. Exactly one is normally `current`. */\n steps: Step[];\n /** The list's name for assistive technology, such as \"Registration\". Defaults to \"Progress\". */\n label?: string;\n}>();\n\nconst t = useMessages();\n</script>\n\n<template>\n <ol class=\"e-steps\" :aria-label=\"label || t('progress')\">\n <li\n v-for=\"(step, i) in steps\"\n :key=\"i\"\n class=\"e-step\"\n :data-state=\"step.state === 'todo' ? 'upcoming' : step.state\"\n :aria-current=\"step.state === 'current' ? 'step' : undefined\"\n >\n <span class=\"e-step-dot\">\n <EIcon v-if=\"step.state === 'done'\" name=\"check\" small />\n <template v-else>{{ i + 1 }}</template>\n </span>\n <span class=\"e-step-label\">\n {{ step.label }}\n <span v-if=\"step.state === 'done'\" class=\"e-sr\"> ({{ t(\"done\") }})</span>\n </span>\n </li>\n </ol>\n</template>\n\n<style>\n@layer e.page {\n .e-steps {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--e-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n counter-reset: s;\n }\n\n .e-step {\n display: grid;\n justify-items: center;\n align-content: start;\n gap: var(--e-space-2);\n position: relative;\n text-align: center;\n min-width: 0;\n }\n\n .e-step::before {\n content: \"\";\n position: absolute;\n top: 13px;\n inset-inline-end: 50%;\n width: 100%;\n border-top: 2px solid var(--e-border-strong);\n z-index: 0;\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before,\n .e-step[data-state=\"current\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step-dot {\n position: relative;\n z-index: var(--e-z-raised);\n display: grid;\n place-items: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n background: var(--e-surface);\n color: var(--e-muted);\n font: 600 var(--e-text-xs) / 1 var(--e-font-mono);\n }\n\n .e-step[data-state=\"done\"] .e-step-dot {\n border: var(--e-stroke-edge) solid var(--e-primary);\n background: var(--e-primary);\n color: var(--e-on-primary);\n }\n\n .e-step[data-state=\"current\"] .e-step-dot {\n border: 2px solid var(--e-ink);\n color: var(--e-ink);\n background: var(--e-surface);\n }\n\n .e-step-label {\n font: 400 var(--e-text-sm) / 1.3 var(--e-font-sans);\n color: var(--e-muted);\n overflow-wrap: anywhere;\n }\n\n .e-step[data-state=\"current\"] .e-step-label {\n color: var(--e-ink);\n font-weight: 600;\n }\n\n .e-step[data-state=\"done\"] .e-step-label {\n color: var(--e-ink);\n }\n\n /* stylelint-disable declaration-block-no-redundant-longhand-properties -- the longhands stay separate */\n @media (max-width: 32rem) {\n .e-steps {\n grid-auto-flow: row;\n gap: var(--e-space-3);\n }\n\n .e-step {\n grid-template-columns: auto 1fr;\n justify-items: start;\n align-items: center;\n text-align: start;\n }\n\n .e-step::before {\n display: block;\n top: calc(-1 * var(--e-space-3));\n inset-inline-end: auto;\n inset-inline-start: 13px;\n width: 0;\n height: var(--e-space-3);\n border-top: 0;\n border-inline-start: 2px solid var(--e-border-strong);\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before,\n .e-step[data-state=\"current\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n }\n\n /* stylelint-enable declaration-block-no-redundant-longhand-properties */\n\n @media (forced-colors: active) {\n .e-step[data-state=\"done\"] .e-step-dot {\n forced-color-adjust: none;\n background: Highlight;\n border-color: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;EAmBA,IAAMkB,IAAIC,EAAY;E,kBAIpBnB,EAAA,GAAAC,EAiBK,MAAA;GAjBD,OAAM;GAAW,cAAYqB,EAAA,SAASpB,EAAAgB,CAAA,CAAC,CAAA,UAAA;E,KACzClB,EAAA,EAAA,GAAAC,EAeKE,GAAA,MAAAC,EAdiBkB,EAAA,QAAZ,GAAM,OADhBtB,EAAA,GAAAC,EAeK,MAAA;GAbF,KAAKyB;GACN,OAAM;GACL,cAAYC,EAAK,UAAK,SAAA,aAA2BA,EAAK;GACtD,gBAAcA,EAAK,UAAK,YAAA,SAA0B,KAAA;E,IAEnDtB,EAGO,QAHPS,GAGO,CAFQa,EAAK,UAAK,UAAvB3B,EAAA,GAAAM,EAAyDC,GAAA;;GAArB,MAAK;GAAQ,OAAA;E,OACjDP,EAAA,GAAAC,EAAuCE,GAAA,EAAA,KAAA,EAAA,GAAA,CAAnBK,EAAAC,EAAAiB,IAAC,CAAA,GAAA,CAAA,C,WAEvBrB,EAGO,QAHPU,GAGO,CAFFP,EAAAC,EAAAkB,EAAK,KAAK,IAAG,KAChB,CAAA,GAAYA,EAAK,UAAK,UAAtB3B,EAAA,GAAAC,EAAyE,QAAzEe,GAAgD,OAAEP,EAAGP,EAAAgB,CAAA,CAAC,CAAA,MAAA,CAAA,IAAW,KAAC,CAAA,K"}
1
+ {"version":3,"file":"EStepper.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_unref","_Fragment","_renderList","_createElementVNode","_createBlock","EIcon","_createTextVNode","_toDisplayString","_createCommentVNode","EIcon_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EStepper_vue_vue_type_script_setup_true_lang_default","t","useMessages","openBlock","createElementBlock","__props","unref","Fragment","renderList","i","step","createElementVNode","createBlock","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/Stepper/EStepper.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nexport interface Step {\n /** The name of the step. */\n label: string;\n /** `done` is finished, `current` is where the person is, `upcoming` is still ahead (`todo` is accepted as the same thing). */\n state: \"done\" | \"current\" | \"upcoming\" | \"todo\";\n}\n\ndefineProps<{\n /** The steps in order: `{ label, state }`; `state` is `done`, `current` or `upcoming` (`todo` is an alias). Exactly one is normally `current`. Keep labels to one or two words. */\n steps: Step[];\n /** The list's accessible name. @default \"Progress\" */\n label?: string;\n}>();\n\nconst t = useMessages();\n</script>\n\n<template>\n <ol class=\"e-steps\" :aria-label=\"label || t('progress')\">\n <li\n v-for=\"(step, i) in steps\"\n :key=\"i\"\n class=\"e-step\"\n :data-state=\"step.state === 'todo' ? 'upcoming' : step.state\"\n :aria-current=\"step.state === 'current' ? 'step' : undefined\"\n >\n <span class=\"e-step-dot\">\n <EIcon v-if=\"step.state === 'done'\" name=\"check\" small />\n <template v-else>{{ i + 1 }}</template>\n </span>\n <span class=\"e-step-label\">\n {{ step.label }}\n <span v-if=\"step.state === 'done'\" class=\"e-sr\"> ({{ t(\"done\") }})</span>\n </span>\n </li>\n </ol>\n</template>\n\n<style>\n@layer e.page {\n .e-steps {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--e-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n counter-reset: s;\n }\n\n .e-step {\n --e-dot: 28px;\n\n display: grid;\n justify-items: center;\n align-content: start;\n gap: var(--e-space-2);\n position: relative;\n text-align: center;\n min-width: 0;\n }\n\n .e-step::before {\n content: \"\";\n position: absolute;\n top: calc((var(--e-dot) - var(--e-stroke-focus)) / 2);\n inset-inline-end: 50%;\n width: 100%;\n border-top: var(--e-stroke-focus) solid var(--e-border-strong);\n z-index: 0;\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step[data-state=\"current\"]::before {\n border-top-color: var(--e-primary);\n }\n\n .e-step-dot {\n position: relative;\n z-index: var(--e-z-raised);\n display: grid;\n place-items: center;\n width: var(--e-dot);\n height: var(--e-dot);\n border-radius: 50%;\n border: var(--e-stroke-edge) dashed var(--e-border-strong);\n background: var(--e-surface);\n color: var(--e-muted);\n font: 600 var(--e-text-xs) / 1 var(--e-font-mono);\n }\n\n .e-step[data-state=\"done\"] .e-step-dot {\n border: var(--e-stroke-edge) solid var(--e-primary);\n background: var(--e-primary);\n color: var(--e-on-primary);\n }\n\n .e-step[data-state=\"current\"] .e-step-dot {\n border: var(--e-stroke-focus) solid var(--e-primary);\n color: var(--e-primary);\n background: var(--e-surface);\n }\n\n .e-step-label {\n font: 400 var(--e-text-sm) / 1.3 var(--e-font-sans);\n color: var(--e-muted);\n overflow-wrap: anywhere;\n }\n\n .e-step[data-state=\"current\"] .e-step-label {\n color: var(--e-ink);\n font-weight: 600;\n }\n\n .e-step[data-state=\"done\"] .e-step-label {\n color: var(--e-ink);\n }\n\n /* stylelint-disable declaration-block-no-redundant-longhand-properties -- the longhands stay separate */\n @media (max-width: 32rem) {\n .e-steps {\n grid-auto-flow: row;\n gap: var(--e-space-3);\n }\n\n .e-step {\n grid-template-columns: auto 1fr;\n justify-items: start;\n align-items: center;\n text-align: start;\n }\n\n .e-step::before {\n display: block;\n top: calc(-1 * var(--e-space-3));\n inset-inline-end: auto;\n inset-inline-start: calc((var(--e-dot) - var(--e-stroke-focus)) / 2);\n width: 0;\n height: var(--e-space-3);\n border-top: 0;\n border-inline-start: var(--e-stroke-focus) solid var(--e-border-strong);\n }\n\n .e-step:first-child::before {\n display: none;\n }\n\n .e-step[data-state=\"done\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n\n .e-step[data-state=\"current\"]::before {\n border-inline-start-color: var(--e-primary);\n }\n }\n\n /* stylelint-enable declaration-block-no-redundant-longhand-properties */\n\n @media (forced-colors: active) {\n .e-step[data-state=\"done\"] .e-step-dot {\n forced-color-adjust: none;\n background: Highlight;\n border-color: Highlight;\n color: HighlightText;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;EAmBA,IAAMkB,IAAIC,EAAY;E,kBAIpBnB,EAAA,GAAAC,EAiBK,MAAA;GAjBD,OAAM;GAAW,cAAYqB,EAAA,SAASpB,EAAAgB,CAAA,CAAC,CAAA,UAAA;E,KACzClB,EAAA,EAAA,GAAAC,EAeKE,GAAA,MAAAC,EAdiBkB,EAAA,QAAZ,GAAM,OADhBtB,EAAA,GAAAC,EAeK,MAAA;GAbF,KAAKyB;GACN,OAAM;GACL,cAAYC,EAAK,UAAK,SAAA,aAA2BA,EAAK;GACtD,gBAAcA,EAAK,UAAK,YAAA,SAA0B,KAAA;E,IAEnDtB,EAGO,QAHPS,GAGO,CAFQa,EAAK,UAAK,UAAvB3B,EAAA,GAAAM,EAAyDC,GAAA;;GAArB,MAAK;GAAQ,OAAA;E,OACjDP,EAAA,GAAAC,EAAuCE,GAAA,EAAA,KAAA,EAAA,GAAA,CAAnBK,EAAAC,EAAAiB,IAAC,CAAA,GAAA,CAAA,C,WAEvBrB,EAGO,QAHPU,GAGO,CAFFP,EAAAC,EAAAkB,EAAK,KAAK,IAAG,KAChB,CAAA,GAAYA,EAAK,UAAK,UAAtB3B,EAAA,GAAAC,EAAyE,QAAzEe,GAAgD,OAAEP,EAAGP,EAAAgB,CAAA,CAAC,CAAA,MAAA,CAAA,IAAW,KAAC,CAAA,K"}