@eos-ui/vue 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/THIRD_PARTY.md +1 -1
  2. package/dist/component-names.js +1 -1
  3. package/dist/component-names.js.map +1 -1
  4. package/dist/components/Actions/EActions.js.map +1 -1
  5. package/dist/components/Actions/EActions.vue.d.ts +3 -1
  6. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js +12 -3
  7. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/AppHeader/EAppHeader.js.map +1 -1
  9. package/dist/components/AppHeader/EAppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/AppShell/EAppShell.js.map +1 -1
  11. package/dist/components/AppShell/EAppShell.vue.d.ts +2 -2
  12. package/dist/components/AppShell/EAppShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/Avatar/EAvatar.js.map +1 -1
  14. package/dist/components/Avatar/EAvatar.vue.d.ts +4 -4
  15. package/dist/components/Avatar/EAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/components/Breadcrumb/EBreadcrumb.js.map +1 -1
  17. package/dist/components/Breadcrumb/EBreadcrumb.vue.d.ts +2 -2
  18. package/dist/components/Breadcrumb/EBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/Button/EButton.js.map +1 -1
  20. package/dist/components/Button/EButton.vue.d.ts +5 -3
  21. package/dist/components/Button/EButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/Calendar/ECalendar.js.map +1 -1
  23. package/dist/components/Calendar/ECalendar.vue.d.ts +12 -9
  24. package/dist/components/Calendar/ECalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/Checkbox/ECheckbox.js.map +1 -1
  26. package/dist/components/Checkbox/ECheckbox.vue.d.ts +6 -3
  27. package/dist/components/Checkbox/ECheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/CodeBlock/ECodeBlock.js.map +1 -1
  29. package/dist/components/CodeBlock/ECodeBlock.vue.d.ts +2 -2
  30. package/dist/components/CodeBlock/ECodeBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/ColorField/EColorField.js.map +1 -1
  32. package/dist/components/ColorField/EColorField.vue.d.ts +5 -3
  33. package/dist/components/ColorField/EColorField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  34. package/dist/components/Combobox/ECombobox.js.map +1 -1
  35. package/dist/components/Combobox/ECombobox.vue.d.ts +7 -5
  36. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js +3 -2
  37. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/Combobox/EComboboxBase.js.map +1 -1
  39. package/dist/components/Combobox/EComboboxBase.vue.d.ts +6 -14
  40. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js +9 -8
  41. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/Combobox/EComboboxOption.js.map +1 -1
  43. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js +1 -1
  44. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/Combobox/{EHighlight.js → matchHighlight.js} +3 -3
  46. package/dist/components/Combobox/matchHighlight.js.map +1 -0
  47. package/dist/components/Combobox/types.d.ts +13 -8
  48. package/dist/components/CurrencyField/ECurrencyField.js.map +1 -1
  49. package/dist/components/CurrencyField/ECurrencyField.vue.d.ts +8 -6
  50. package/dist/components/CurrencyField/ECurrencyField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/DataGrid/EDataGrid.js.map +1 -1
  52. package/dist/components/DataGrid/EDataGrid.vue.d.ts +20 -15
  53. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js +213 -213
  54. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/DatePicker/EDatePicker.js.map +1 -1
  56. package/dist/components/DatePicker/EDatePicker.vue.d.ts +9 -6
  57. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js +10 -10
  58. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/components/Definition/EDefinition.js +8 -0
  60. package/dist/components/Definition/EDefinition.js.map +1 -0
  61. package/dist/components/{Popover/EPopover.vue.d.ts → Definition/EDefinition.vue.d.ts} +2 -1
  62. package/dist/components/{Popover/EPopover.vue_vue_type_script_setup_true_lang.js → Definition/EDefinition.vue_vue_type_script_setup_true_lang.js} +4 -4
  63. package/dist/components/Definition/EDefinition.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/components/Definition/index.d.ts +1 -0
  65. package/dist/components/DescriptionList/EDescriptionList.js.map +1 -1
  66. package/dist/components/DescriptionList/EDescriptionList.vue.d.ts +32 -5
  67. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js +70 -8
  68. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/Dialog/DialogFrame.js.map +1 -1
  70. package/dist/components/Dialog/DialogFrame.vue.d.ts +1 -0
  71. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js +19 -18
  72. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/Dialog/EDialog.js.map +1 -1
  74. package/dist/components/Dialog/EDialog.vue.d.ts +4 -1
  75. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js +3 -0
  76. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/Disclosure/EDisclosure.js.map +1 -1
  78. package/dist/components/Disclosure/EDisclosure.vue.d.ts +6 -9
  79. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js +14 -19
  80. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/Drawer/EDrawer.js.map +1 -1
  82. package/dist/components/Drawer/EDrawer.vue.d.ts +4 -1
  83. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js +3 -0
  84. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/components/EmptyState/EEmptyState.js.map +1 -1
  86. package/dist/components/EmptyState/EEmptyState.vue.d.ts +1 -1
  87. package/dist/components/EmptyState/EEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/ExpandableRow/EExpandableRow.js +8 -0
  89. package/dist/components/ExpandableRow/EExpandableRow.js.map +1 -0
  90. package/dist/components/{ButtonGroup/EButtonGroup.vue.d.ts → ExpandableRow/EExpandableRow.vue.d.ts} +12 -4
  91. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js +40 -0
  92. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  93. package/dist/components/ExpandableRow/index.d.ts +1 -0
  94. package/dist/components/Field/EField.js.map +1 -1
  95. package/dist/components/Field/EField.vue.d.ts +1 -1
  96. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js +4 -4
  97. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/Field/labelProps.d.ts +2 -2
  99. package/dist/components/Fieldset/EFieldset.js.map +1 -1
  100. package/dist/components/Fieldset/EFieldset.vue.d.ts +5 -3
  101. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js +54 -35
  102. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -1
  103. package/dist/components/Grid/EGrid.js.map +1 -1
  104. package/dist/components/Grid/EGrid.vue.d.ts +5 -2
  105. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js +15 -11
  106. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/Heading/EHeading.js.map +1 -1
  108. package/dist/components/Heading/EHeading.vue.d.ts +1 -1
  109. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js +10 -10
  110. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/Highlight/EHighlight.js.map +1 -1
  112. package/dist/components/Highlight/EHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -1
  113. package/dist/components/IconButton/EIconButton.js.map +1 -1
  114. package/dist/components/IconButton/EIconButton.vue.d.ts +1 -0
  115. package/dist/components/IconButton/EIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/Inline/EInline.js.map +1 -1
  117. package/dist/components/Inline/EInline.vue.d.ts +3 -3
  118. package/dist/components/Inline/EInline.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/components/Kbd/EKbd.js.map +1 -1
  120. package/dist/components/Kbd/EKbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/Link/ELink.js.map +1 -1
  122. package/dist/components/Link/ELink.vue.d.ts +2 -2
  123. package/dist/components/Link/ELink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/Menu/EMenu.js.map +1 -1
  125. package/dist/components/Menu/EMenu.vue.d.ts +4 -3
  126. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/NavList/ENavList.js.map +1 -1
  129. package/dist/components/NavList/ENavList.vue.d.ts +7 -9
  130. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js +2 -3
  131. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/{Tabs → NavList}/LinkNav.js +1 -1
  133. package/dist/components/NavList/LinkNav.js.map +1 -0
  134. package/dist/components/{Tabs → NavList}/LinkNav.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/components/NavList/LinkNav.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/components/Notice/ENotice.js.map +1 -1
  137. package/dist/components/Notice/ENotice.vue.d.ts +2 -2
  138. package/dist/components/Notice/ENotice.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/NumberField/ENumberField.js.map +1 -1
  140. package/dist/components/NumberField/ENumberField.vue.d.ts +5 -3
  141. package/dist/components/NumberField/ENumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/OtpField/EOtpField.js.map +1 -1
  143. package/dist/components/OtpField/EOtpField.vue.d.ts +10 -8
  144. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js +2 -2
  145. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/PageHeader/EPageHeader.js.map +1 -1
  147. package/dist/components/PageHeader/EPageHeader.vue.d.ts +1 -1
  148. package/dist/components/PageHeader/EPageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/Pagination/EPagination.js.map +1 -1
  150. package/dist/components/Pagination/EPagination.vue.d.ts +1 -0
  151. package/dist/components/Pagination/EPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/PasswordField/EPasswordField.js.map +1 -1
  153. package/dist/components/PasswordField/EPasswordField.vue.d.ts +14 -10
  154. package/dist/components/PasswordField/EPasswordField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/PhoneField/EPhoneField.js.map +1 -1
  156. package/dist/components/PhoneField/EPhoneField.vue.d.ts +6 -4
  157. package/dist/components/PhoneField/EPhoneField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/Progress/EProgress.js.map +1 -1
  159. package/dist/components/Progress/EProgress.vue.d.ts +5 -5
  160. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js +20 -14
  161. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/RadioGroup/ERadioGroup.js.map +1 -1
  163. package/dist/components/RadioGroup/ERadioGroup.vue.d.ts +8 -4
  164. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  165. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/RangePicker/ERangePicker.js.map +1 -1
  167. package/dist/components/RangePicker/ERangePicker.vue.d.ts +12 -8
  168. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js +65 -65
  169. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/SearchBar/ESearchBar.js.map +1 -1
  171. package/dist/components/SearchBar/ESearchBar.vue.d.ts +8 -7
  172. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js +1 -1
  173. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/SearchResults/ESearchResults.js.map +1 -1
  175. package/dist/components/SearchResults/ESearchResults.vue.d.ts +3 -3
  176. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js +1 -1
  177. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js.map +1 -1
  178. package/dist/components/Segmented/ESegmented.js.map +1 -1
  179. package/dist/components/Segmented/ESegmented.vue.d.ts +10 -6
  180. package/dist/components/Segmented/ESegmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/Select/ESelect.js.map +1 -1
  182. package/dist/components/Select/ESelect.vue.d.ts +9 -6
  183. package/dist/components/Select/ESelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/components/Select/ESelectControl.js.map +1 -1
  185. package/dist/components/Select/ESelectControl.vue.d.ts +2 -2
  186. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js +6 -6
  187. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  188. package/dist/components/Select/options.d.ts +1 -1
  189. package/dist/components/Select/options.js.map +1 -1
  190. package/dist/components/SignatureField/ESignatureField.js.map +1 -1
  191. package/dist/components/SignatureField/ESignatureField.vue.d.ts +14 -10
  192. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js +4 -4
  193. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/SignaturePad/ESignaturePad.js.map +1 -1
  195. package/dist/components/SignaturePad/ESignaturePad.vue.d.ts +3 -1
  196. package/dist/components/SignaturePad/ESignaturePad.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/components/Skeleton/ESkeleton.js.map +1 -1
  198. package/dist/components/Skeleton/ESkeleton.vue.d.ts +3 -3
  199. package/dist/components/Skeleton/ESkeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  200. package/dist/components/Stack/EStack.js.map +1 -1
  201. package/dist/components/Stack/EStack.vue.d.ts +2 -2
  202. package/dist/components/Stack/EStack.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/Stamp/EStamp.js.map +1 -1
  204. package/dist/components/Stamp/EStamp.vue.d.ts +18 -12
  205. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js +27 -40
  206. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components/Stepper/EStepper.js.map +1 -1
  208. package/dist/components/Stepper/EStepper.vue.d.ts +2 -2
  209. package/dist/components/Stepper/EStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/components/Surface/ESurface.js.map +1 -1
  211. package/dist/components/Surface/ESurface.vue.d.ts +5 -5
  212. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js +5 -5
  213. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/Switch/ESwitch.js.map +1 -1
  215. package/dist/components/Switch/ESwitch.vue.d.ts +3 -1
  216. package/dist/components/Switch/ESwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/components/Tabs/ETabs.js.map +1 -1
  218. package/dist/components/Tabs/ETabs.vue.d.ts +10 -32
  219. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js +21 -50
  220. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/components/Tabs/index.d.ts +1 -1
  222. package/dist/components/Text/EText.js.map +1 -1
  223. package/dist/components/Text/EText.vue.d.ts +4 -3
  224. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js +7 -2
  225. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/TextField/ETextField.js.map +1 -1
  227. package/dist/components/TextField/ETextField.vue.d.ts +8 -6
  228. package/dist/components/TextField/ETextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/Textarea/ETextarea.js.map +1 -1
  230. package/dist/components/Textarea/ETextarea.vue.d.ts +4 -2
  231. package/dist/components/Textarea/ETextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/Toast/EToast.js.map +1 -1
  233. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js +5 -5
  234. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/ToastProvider/EToastProvider.js.map +1 -1
  236. package/dist/components/ToastProvider/EToastProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/Tooltip/ETooltip.js.map +1 -1
  238. package/dist/components/Tooltip/ETooltip.vue.d.ts +1 -0
  239. package/dist/components/Tooltip/ETooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/Upload/EUpload.js.map +1 -1
  241. package/dist/components/Upload/EUpload.vue.d.ts +5 -3
  242. package/dist/components/Upload/EUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  243. package/dist/fonts.css +1 -1
  244. package/dist/index.d.ts +2 -25
  245. package/dist/index.js +71 -94
  246. package/dist/messages.d.ts +0 -13
  247. package/dist/messages.js +0 -13
  248. package/dist/messages.js.map +1 -1
  249. package/dist/style.css +2655 -3121
  250. package/package.json +4 -2
  251. package/dist/components/Accordion/EAccordion.js +0 -8
  252. package/dist/components/Accordion/EAccordion.js.map +0 -1
  253. package/dist/components/Accordion/EAccordion.vue.d.ts +0 -32
  254. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js +0 -35
  255. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  256. package/dist/components/Accordion/index.d.ts +0 -2
  257. package/dist/components/AddressField/EAddressField.js +0 -8
  258. package/dist/components/AddressField/EAddressField.js.map +0 -1
  259. package/dist/components/AddressField/EAddressField.vue.d.ts +0 -39
  260. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js +0 -119
  261. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  262. package/dist/components/AddressField/index.d.ts +0 -2
  263. package/dist/components/AddressField/usStates.d.ts +0 -5
  264. package/dist/components/AddressField/usStates.js +0 -211
  265. package/dist/components/AddressField/usStates.js.map +0 -1
  266. package/dist/components/Amount/EAmount.js +0 -8
  267. package/dist/components/Amount/EAmount.js.map +0 -1
  268. package/dist/components/Amount/EAmount.vue.d.ts +0 -21
  269. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js +0 -38
  270. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js.map +0 -1
  271. package/dist/components/Amount/index.d.ts +0 -2
  272. package/dist/components/Autocomplete/EAutocomplete.js +0 -7
  273. package/dist/components/Autocomplete/EAutocomplete.js.map +0 -1
  274. package/dist/components/Autocomplete/EAutocomplete.vue.d.ts +0 -44
  275. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js +0 -58
  276. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  277. package/dist/components/Autocomplete/index.d.ts +0 -1
  278. package/dist/components/BackLink/EBackLink.js +0 -8
  279. package/dist/components/BackLink/EBackLink.js.map +0 -1
  280. package/dist/components/BackLink/EBackLink.vue.d.ts +0 -23
  281. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js +0 -27
  282. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js.map +0 -1
  283. package/dist/components/BackLink/index.d.ts +0 -1
  284. package/dist/components/BookingCard/EBookingCard.js +0 -8
  285. package/dist/components/BookingCard/EBookingCard.js.map +0 -1
  286. package/dist/components/BookingCard/EBookingCard.vue.d.ts +0 -46
  287. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js +0 -86
  288. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  289. package/dist/components/BookingCard/index.d.ts +0 -2
  290. package/dist/components/ButtonGroup/EButtonGroup.js +0 -8
  291. package/dist/components/ButtonGroup/EButtonGroup.js.map +0 -1
  292. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js +0 -18
  293. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  294. package/dist/components/ButtonGroup/index.d.ts +0 -1
  295. package/dist/components/CardField/ECardField.js +0 -8
  296. package/dist/components/CardField/ECardField.js.map +0 -1
  297. package/dist/components/CardField/ECardField.vue.d.ts +0 -31
  298. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js +0 -65
  299. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  300. package/dist/components/CardField/index.d.ts +0 -1
  301. package/dist/components/Chip/EChip.js +0 -8
  302. package/dist/components/Chip/EChip.js.map +0 -1
  303. package/dist/components/Chip/EChip.vue.d.ts +0 -22
  304. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js +0 -18
  305. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  306. package/dist/components/Chip/index.d.ts +0 -2
  307. package/dist/components/Combobox/EHighlight.js.map +0 -1
  308. package/dist/components/DetailRow/EDetailRow.js +0 -8
  309. package/dist/components/DetailRow/EDetailRow.js.map +0 -1
  310. package/dist/components/DetailRow/EDetailRow.vue.d.ts +0 -30
  311. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js +0 -53
  312. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  313. package/dist/components/DetailRow/index.d.ts +0 -1
  314. package/dist/components/ErrorSummary/EErrorSummary.js +0 -8
  315. package/dist/components/ErrorSummary/EErrorSummary.js.map +0 -1
  316. package/dist/components/ErrorSummary/EErrorSummary.vue.d.ts +0 -30
  317. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js +0 -52
  318. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js.map +0 -1
  319. package/dist/components/ErrorSummary/index.d.ts +0 -2
  320. package/dist/components/FormSection/EFormSection.js +0 -8
  321. package/dist/components/FormSection/EFormSection.js.map +0 -1
  322. package/dist/components/FormSection/EFormSection.vue.d.ts +0 -28
  323. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js +0 -38
  324. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  325. package/dist/components/FormSection/index.d.ts +0 -1
  326. package/dist/components/ItemList/EItemList.js +0 -8
  327. package/dist/components/ItemList/EItemList.js.map +0 -1
  328. package/dist/components/ItemList/EItemList.vue.d.ts +0 -13
  329. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js +0 -17
  330. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  331. package/dist/components/ItemList/context.d.ts +0 -3
  332. package/dist/components/ItemList/context.js +0 -6
  333. package/dist/components/ItemList/context.js.map +0 -1
  334. package/dist/components/ItemList/index.d.ts +0 -1
  335. package/dist/components/ItemRow/EItemRow.js +0 -8
  336. package/dist/components/ItemRow/EItemRow.js.map +0 -1
  337. package/dist/components/ItemRow/EItemRow.vue.d.ts +0 -29
  338. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js +0 -54
  339. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  340. package/dist/components/ItemRow/index.d.ts +0 -1
  341. package/dist/components/LinkCard/ELinkCard.js +0 -8
  342. package/dist/components/LinkCard/ELinkCard.js.map +0 -1
  343. package/dist/components/LinkCard/ELinkCard.vue.d.ts +0 -39
  344. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js +0 -61
  345. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  346. package/dist/components/LinkCard/index.d.ts +0 -1
  347. package/dist/components/LoadingBar/ELoadingBar.js +0 -8
  348. package/dist/components/LoadingBar/ELoadingBar.js.map +0 -1
  349. package/dist/components/LoadingBar/ELoadingBar.vue.d.ts +0 -7
  350. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js +0 -21
  351. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  352. package/dist/components/LoadingBar/index.d.ts +0 -1
  353. package/dist/components/MetaList/EMetaList.js +0 -8
  354. package/dist/components/MetaList/EMetaList.js.map +0 -1
  355. package/dist/components/MetaList/EMetaList.vue.d.ts +0 -15
  356. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js +0 -19
  357. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  358. package/dist/components/MetaList/index.d.ts +0 -2
  359. package/dist/components/MultiSelect/EMultiSelect.js +0 -7
  360. package/dist/components/MultiSelect/EMultiSelect.js.map +0 -1
  361. package/dist/components/MultiSelect/EMultiSelect.vue.d.ts +0 -44
  362. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js +0 -58
  363. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js.map +0 -1
  364. package/dist/components/MultiSelect/index.d.ts +0 -1
  365. package/dist/components/Panel/EPanel.js +0 -8
  366. package/dist/components/Panel/EPanel.js.map +0 -1
  367. package/dist/components/Panel/EPanel.vue.d.ts +0 -25
  368. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js +0 -38
  369. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  370. package/dist/components/Panel/index.d.ts +0 -1
  371. package/dist/components/Popover/EPopover.js +0 -8
  372. package/dist/components/Popover/EPopover.js.map +0 -1
  373. package/dist/components/Popover/EPopover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  374. package/dist/components/Popover/index.d.ts +0 -1
  375. package/dist/components/SlotPicker/ESlotPicker.js +0 -8
  376. package/dist/components/SlotPicker/ESlotPicker.js.map +0 -1
  377. package/dist/components/SlotPicker/ESlotPicker.vue.d.ts +0 -55
  378. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js +0 -82
  379. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  380. package/dist/components/SlotPicker/index.d.ts +0 -2
  381. package/dist/components/StatementCard/EStatementCard.js +0 -8
  382. package/dist/components/StatementCard/EStatementCard.js.map +0 -1
  383. package/dist/components/StatementCard/EStatementCard.vue.d.ts +0 -20
  384. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js +0 -96
  385. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  386. package/dist/components/StatementCard/index.d.ts +0 -2
  387. package/dist/components/StatementCard/types.d.ts +0 -37
  388. package/dist/components/StatementRow/EStatementRow.js +0 -8
  389. package/dist/components/StatementRow/EStatementRow.js.map +0 -1
  390. package/dist/components/StatementRow/EStatementRow.vue.d.ts +0 -14
  391. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js +0 -96
  392. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  393. package/dist/components/StatementRow/index.d.ts +0 -1
  394. package/dist/components/Tabs/LinkNav.js.map +0 -1
  395. package/dist/components/Tabs/LinkNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  396. package/dist/components/Timeline/ETimeline.js +0 -8
  397. package/dist/components/Timeline/ETimeline.js.map +0 -1
  398. package/dist/components/Timeline/ETimeline.vue.d.ts +0 -15
  399. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js +0 -43
  400. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  401. package/dist/components/Timeline/index.d.ts +0 -2
  402. package/dist/components/Toggle/EToggle.js +0 -8
  403. package/dist/components/Toggle/EToggle.js.map +0 -1
  404. package/dist/components/Toggle/EToggle.vue.d.ts +0 -27
  405. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js +0 -40
  406. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js.map +0 -1
  407. package/dist/components/Toggle/index.d.ts +0 -1
  408. /package/dist/components/Combobox/{EHighlight.d.ts → matchHighlight.d.ts} +0 -0
  409. /package/dist/components/{Tabs → NavList}/LinkNav.vue.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ESignatureField.js","names":["_sfc_main","ESignatureField_vue_vue_type_script_setup_true_lang_default","ESignatureField_default"],"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":""}
1
+ {"version":3,"file":"ESignatureField.js","names":["_sfc_main","ESignatureField_vue_vue_type_script_setup_true_lang_default","ESignatureField_default"],"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":""}
@@ -11,46 +11,50 @@ export interface SignatureValue {
11
11
  declare const _default: typeof __VLS_export;
12
12
  export default _default;
13
13
  declare const __VLS_export: import('vue').DefineComponent<{
14
- /** Names the group and heads it. Say what the form is. Default "Signature". */
14
+ /** Names the group and heads it. Say what the form is. @default "Signature" */
15
15
  label?: string;
16
16
  /** `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. */
17
17
  mode?: "type" | "draw" | "both";
18
- /** The sentence the person agrees to. Default "I agree and want to sign this form." */
18
+ /** The sentence the person agrees to. @default "I agree and want to sign this form." */
19
19
  agreement?: string;
20
- /** The date shown with the signature. Today when left out. */
20
+ /** The date shown with the signature, in the configured locale. @default today */
21
21
  date?: Date;
22
22
  /** Help that is announced with the group. */
23
23
  hint?: string;
24
- /** What to fix. Replaces the hint and is announced with the group. */
24
+ /** What to fix. Replaces the hint, marks the group invalid and is announced with the group. */
25
25
  error?: string;
26
+ /** Disables the fields and the agreement. */
26
27
  disabled?: boolean;
27
28
  /** The name submitted with a form: the typed name, or the drawn image as a data URL. */
28
29
  name?: string;
29
- /** The id of the typed-name input. Generated when left out. */
30
+ /** The id of the typed-name input. @default generated */
30
31
  id?: string;
31
32
  } & {
33
+ /** `image` is a PNG data URL, empty unless `method` is `draw`. */
32
34
  modelValue?: SignatureValue;
33
35
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
34
36
  "update:modelValue": (value: SignatureValue) => any;
35
37
  }, string, import('vue').PublicProps, Readonly<{
36
- /** Names the group and heads it. Say what the form is. Default "Signature". */
38
+ /** Names the group and heads it. Say what the form is. @default "Signature" */
37
39
  label?: string;
38
40
  /** `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. */
39
41
  mode?: "type" | "draw" | "both";
40
- /** The sentence the person agrees to. Default "I agree and want to sign this form." */
42
+ /** The sentence the person agrees to. @default "I agree and want to sign this form." */
41
43
  agreement?: string;
42
- /** The date shown with the signature. Today when left out. */
44
+ /** The date shown with the signature, in the configured locale. @default today */
43
45
  date?: Date;
44
46
  /** Help that is announced with the group. */
45
47
  hint?: string;
46
- /** What to fix. Replaces the hint and is announced with the group. */
48
+ /** What to fix. Replaces the hint, marks the group invalid and is announced with the group. */
47
49
  error?: string;
50
+ /** Disables the fields and the agreement. */
48
51
  disabled?: boolean;
49
52
  /** The name submitted with a form: the typed name, or the drawn image as a data URL. */
50
53
  name?: string;
51
- /** The id of the typed-name input. Generated when left out. */
54
+ /** The id of the typed-name input. @default generated */
52
55
  id?: string;
53
56
  } & {
57
+ /** `image` is a PNG data URL, empty unless `method` is `draw`. */
54
58
  modelValue?: SignatureValue;
55
59
  }> & Readonly<{
56
60
  "onUpdate:modelValue"?: ((value: SignatureValue) => any) | undefined;
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBA,IAAM+B,IAAQC,GAuBRC,IAAQjC,EAA2BgC,GAAA,YAExC,GAEKG,IAAIC,EAAY,GAChBC,IAASC,EAAU,GACnBC,IAAKC,QAAaT,EAAM,EAAE,GAC1BU,IAASC,QAAe,GAAGH,EAAG,MAAM,WAAW,GAE/CI,IAASD,QAAiCX,EAAM,SAAS,SAASE,EAAM,MAAM,SAASF,EAAM,IAAK,GAClGa,IAAWF,QACf,IAAI,KAAK,eAAeL,EAAO,QAAQ;GAAE,MAAM;GAAW,OAAO;GAAQ,KAAK;EAAU,CAAC,CAAC,CAAC,OACzFN,EAAM,wBAAQ,IAAI,KAAK,CACzB,CACF;EAEA,SAASc,EAAO,GAAgC;GAC9C,IAAMC,IAAO;IAAE,GAAGb,EAAM;IAAO,QAAQU,EAAO;IAAO,GAAGI;GAAM;GAC9D,EAAM,QAAQ;IAAE,GAAGD;IAAM,OAAOA,EAAK,WAAW,SAASA,EAAK,QAAQ;GAAG;EAC3E;E,kBAIE7C,EAAA,GAAAC,EA8CW,YAAA;GA7CT,OAAM;GACL,UAAU8B,EAAA;GACV,oBAAkBA,EAAA,SAASA,EAAA,OAAOS,EAAA,QAAS,KAAA;GAC3C,gBAAcT,EAAA,QAAK,SAAY,KAAA;;GAEhC7B,EAA6E,UAA7EkB,GAA6EjB,EAAnC4B,EAAA,SAAS3B,EAAA8B,CAAA,CAAC,CAAA,WAAA,CAAA,GAAA,CAAA;GAE5CH,EAAA,SAAI,UADZ/B,EAAA,GAAAK,EASEC,GAAA;;IAPC,OAAOF,EAAA8B,CAAA,CAAC,CAAA,WAAA;IACR,eAAaQ,EAAA;IACb,SAAO,CAAoC;KAAA,OAAA;KAAA,OAAAtC,EAAA8B,CAAA,CAAC,CAAA,UAAA;KAAA,MAAA;IAAA,GAA8D;KAAA,OAAA;KAAA,OAAA9B,EAAA8B,CAAA,CAAC,CAAA,UAAA;KAAA,MAAA;IAAA,C;IAI3G,uBAAkB,AAAAmB,EAAA,QAAA,MAAET,EAAM;KAAA,QAAWU;KAAM,OAAA;IAAA,CAAA;;;;;;GAE9BZ,EAAA,UAAM,UAAtB1C,EAAA,GAAAC,EAgBWO,GAAA,EAAA,KAAA,EAAA,GAAA,CAfTC,EASEC,GAAA;IARC,IAAIN,EAAAkC,CAAA;IACJ,eAAaN,EAAA,MAAM;IACnB,OAAO5B,EAAA8B,CAAA,CAAC,CAAA,UAAA;IACR,aAAa9B,EAAA8B,CAAA,CAAC,CAAA,UAAA;IACf,cAAa;IACb,UAAA;IACC,MAAM9B,EAAA8B,CAAA,CAAC,CAAA,UAAA;IACP,uBAAkB,AAAAmB,EAAA,QAAA,MAAET,EAAM,EAAA,MAASU,EAAM,CAAA;;;;;;;G,IAE5CpD,EAIM,OAJNmB,GAIM,CAHQW,EAAA,MAAM,QAAlBhC,EAAA,GAAAC,EAAmE,QAAnEqB,GAAmEnB,EAApB6B,EAAA,MAAM,IAAI,GAAA,CAAA,MACzDhC,EAAA,GAAAC,EAA+D,QAA/DsB,GAA+DpB,EAA1BC,EAAA8B,CAAA,CAAC,CAAA,aAAA,CAAA,GAAA,CAAA,IACtChC,EAA+C,QAA/CsB,GAA+CrB,EAAlBwC,EAAA,KAAQ,GAAA,CAAA,C,aAGzC3C,EAAA,GAAAC,EAGWO,GAAA,EAAA,KAAA,EAAA,GAAA,CAFTC,EAAiHE,GAAA;IAAjG,eAAaqB,EAAA,MAAM;IAAQ,UAAUD,EAAA;IAAW,uBAAkB,AAAAsB,EAAA,QAAA,MAAET,EAAM,EAAA,OAAUU,EAAM,CAAA;G,0CAC1GpD,EAA2D,KAA3DuB,GAA2DtB,EAAfwC,EAAA,KAAQ,GAAA,CAAA,C;GAEtDlC,EAKEG,GAAA;IAJC,eAAaoB,EAAA,MAAM;IACnB,OAAOD,EAAA,aAAa3B,EAAA8B,CAAA,CAAC,CAAA,WAAA;IACrB,UAAUH,EAAA;IACV,uBAAkB,AAAAsB,EAAA,QAAA,MAAET,EAAM,EAAA,QAAWU,EAAM,CAAA;;;;;;GAE9C7C,EAA0DI,GAAA;IAA1C,IAAI2B,EAAA;IAAS,OAAOT,EAAA;IAAQ,MAAMA,EAAA;;;;;;GACrCA,EAAA,QAAb/B,EAAA,GAAAC,EAAsG,SAAA;;IAAnF,MAAK;IAAU,MAAM8B,EAAA;IAAO,OAAOW,EAAA,UAAM,SAAcV,EAAA,MAAM,QAAQA,EAAA,MAAM"}
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