@leaflink/stash 51.11.1 → 51.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +41 -12
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/ActionsDropdown.js.map +1 -1
  4. package/dist/AddressSelect.js.map +1 -1
  5. package/dist/Alert.js.map +1 -1
  6. package/dist/AppNavigationItem.js.map +1 -1
  7. package/dist/AppSidebar.js.map +1 -1
  8. package/dist/Avatar.js.map +1 -1
  9. package/dist/Backdrop.js.map +1 -1
  10. package/dist/Badge.js.map +1 -1
  11. package/dist/Button.js.map +1 -1
  12. package/dist/ButtonGroup.js.map +1 -1
  13. package/dist/Card.js.map +1 -1
  14. package/dist/CardContent.js.map +1 -1
  15. package/dist/CardFooter.js.map +1 -1
  16. package/dist/CardMedia.js.map +1 -1
  17. package/dist/Carousel.js.map +1 -1
  18. package/dist/Checkbox.js.map +1 -1
  19. package/dist/Chip.js.map +1 -1
  20. package/dist/ConfirmationCodeInput.js.map +1 -1
  21. package/dist/ContextSwitcher.js.map +1 -1
  22. package/dist/Copy.js.map +1 -1
  23. package/dist/CurrencyInput.js.map +1 -1
  24. package/dist/CustomRender.js.map +1 -1
  25. package/dist/DataView.js.map +1 -1
  26. package/dist/DataView.keys-aSOnA4AD.js.map +1 -1
  27. package/dist/DataViewFilters.js.map +1 -1
  28. package/dist/DataViewFilters.keys-BLu07FiP.js.map +1 -1
  29. package/dist/DataViewSortButton.js.map +1 -1
  30. package/dist/DataViewToolbar.js +83 -151
  31. package/dist/DataViewToolbar.js.map +1 -1
  32. package/dist/DatePicker.js +10 -10
  33. package/dist/DatePicker.js.map +1 -1
  34. package/dist/DescriptionList.js.map +1 -1
  35. package/dist/DescriptionListDetail.js.map +1 -1
  36. package/dist/DescriptionListGroup.js.map +1 -1
  37. package/dist/DescriptionListTerm.js.map +1 -1
  38. package/dist/Dialog.js.map +1 -1
  39. package/dist/Divider.js.map +1 -1
  40. package/dist/Dropdown.js.map +1 -1
  41. package/dist/EmptyState.js.map +1 -1
  42. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
  43. package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
  44. package/dist/FileUpload.js.map +1 -1
  45. package/dist/FilterChip.js.map +1 -1
  46. package/dist/FilterDrawerItem.js.map +1 -1
  47. package/dist/FilterDropdown.js.map +1 -1
  48. package/dist/FilterSelect.js.map +1 -1
  49. package/dist/Filters.js.map +1 -1
  50. package/dist/Filters.vue.d.ts +1 -1
  51. package/dist/HttpError.js.map +1 -1
  52. package/dist/Icon.js.map +1 -1
  53. package/dist/IconLabel.js.map +1 -1
  54. package/dist/Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js.map +1 -1
  55. package/dist/Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js.map +1 -1
  56. package/dist/InlineEdit.js.map +1 -1
  57. package/dist/Input.js.map +1 -1
  58. package/dist/InputOptions.js.map +1 -1
  59. package/dist/IntegrationIcon.js.map +1 -1
  60. package/dist/LicenseChip.js.map +1 -1
  61. package/dist/ListItem.js.map +1 -1
  62. package/dist/ListItemCell.js.map +1 -1
  63. package/dist/ListView.js.map +1 -1
  64. package/dist/ListView.vue.d.ts +1 -1
  65. package/dist/Loading.js.map +1 -1
  66. package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +1 -1
  67. package/dist/Menu.js.map +1 -1
  68. package/dist/MenuItem.js.map +1 -1
  69. package/dist/MenusPlugin-Bk6UW6o9.js.map +1 -1
  70. package/dist/Metric.js.map +1 -1
  71. package/dist/Modal.js.map +1 -1
  72. package/dist/Modals.js.map +1 -1
  73. package/dist/ModalsPlugin.js.map +1 -1
  74. package/dist/Module.js.map +1 -1
  75. package/dist/Module.keys-CEsrW2f0.js.map +1 -1
  76. package/dist/Module.types-B1FfGGac.js.map +1 -1
  77. package/dist/ModuleContent.js.map +1 -1
  78. package/dist/ModuleFooter.js.map +1 -1
  79. package/dist/ModuleHeader.js.map +1 -1
  80. package/dist/MoreActions.js +1 -1
  81. package/dist/MoreActions.js.map +1 -1
  82. package/dist/ObfuscateText.js.map +1 -1
  83. package/dist/PageContent.js.map +1 -1
  84. package/dist/PageHeader.js.map +1 -1
  85. package/dist/PageNavigation.js.map +1 -1
  86. package/dist/Paginate.js.map +1 -1
  87. package/dist/PlaidLink.js.map +1 -1
  88. package/dist/QuickAction.js.map +1 -1
  89. package/dist/Radio.js.map +1 -1
  90. package/dist/RadioGroup.js.map +1 -1
  91. package/dist/RadioNew.js.map +1 -1
  92. package/dist/RangeInput.js.map +1 -1
  93. package/dist/SearchBar.js.map +1 -1
  94. package/dist/SectionHeader.js.map +1 -1
  95. package/dist/Select.js +1 -1
  96. package/dist/Select.js.map +1 -1
  97. package/dist/SelectStatus.js.map +1 -1
  98. package/dist/Skeleton.js.map +1 -1
  99. package/dist/Step.js.map +1 -1
  100. package/dist/Stepper.js.map +1 -1
  101. package/dist/Switch.js.map +1 -1
  102. package/dist/Tab.js +9 -9
  103. package/dist/Tab.js.map +1 -1
  104. package/dist/Table.js.map +1 -1
  105. package/dist/Table.keys-LHQf6FEH.js.map +1 -1
  106. package/dist/TableCell.js.map +1 -1
  107. package/dist/TableHeaderCell.js.map +1 -1
  108. package/dist/TableHeaderRow.js.map +1 -1
  109. package/dist/TableRow.js.map +1 -1
  110. package/dist/Tabs.js +2 -2
  111. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js +159 -0
  112. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js.map +1 -0
  113. package/dist/TextEditor.js +20 -20
  114. package/dist/TextEditor.js.map +1 -1
  115. package/dist/Textarea.js.map +1 -1
  116. package/dist/Thumbnail.js.map +1 -1
  117. package/dist/ThumbnailEmpty.js.map +1 -1
  118. package/dist/ThumbnailGroup.js.map +1 -1
  119. package/dist/ThumbnailGroup.keys-EJ4qFNhx.js.map +1 -1
  120. package/dist/TimelineItem.js.map +1 -1
  121. package/dist/Toast.js.map +1 -1
  122. package/dist/Toasts.js.map +1 -1
  123. package/dist/ToastsPlugin.js.map +1 -1
  124. package/dist/Tooltip.js +2 -2
  125. package/dist/Tooltip.js.map +1 -1
  126. package/dist/colors-DDDVvqfQ.js.map +1 -1
  127. package/dist/components.css +1 -1
  128. package/dist/constants.js.map +1 -1
  129. package/dist/directives/autofocus.js.map +1 -1
  130. package/dist/directives/clickoutside.js.map +1 -1
  131. package/dist/directives/observe.js +8 -8
  132. package/dist/directives/observe.js.map +1 -1
  133. package/dist/directives/sticky.js.map +1 -1
  134. package/dist/directives/tooltip.js.map +1 -1
  135. package/dist/directives/viewable.js.map +1 -1
  136. package/dist/floating-ui.vue-DLFiymOf.js +1093 -0
  137. package/dist/floating-ui.vue-DLFiymOf.js.map +1 -0
  138. package/dist/formatDateTime-Dz8bXV0R.js.map +1 -1
  139. package/dist/index-D6bxWkZ1.js.map +1 -1
  140. package/dist/{index-C14LhAwV.js → index-DA_ft08e.js} +6 -6
  141. package/dist/index-DA_ft08e.js.map +1 -0
  142. package/dist/index.js +2 -2
  143. package/dist/index.js.map +1 -1
  144. package/dist/isDefined-DzVx0B6k.js.map +1 -1
  145. package/dist/isValid-DN-HkCoi.js.map +1 -1
  146. package/dist/keys-BEdEsanp.js.map +1 -1
  147. package/dist/keys-C8Zfr_By.js.map +1 -1
  148. package/dist/locale.js.map +1 -1
  149. package/dist/misc-CHQs-G03.js.map +1 -1
  150. package/dist/parseISO-wlfIB_QJ.js.map +1 -1
  151. package/dist/{searchFuzzy-DRasJ33G.js → searchFuzzy-B3TsUO-V.js} +8 -8
  152. package/dist/searchFuzzy-B3TsUO-V.js.map +1 -0
  153. package/dist/statusLevels-D8EgtE_L.js.map +1 -1
  154. package/dist/storage.js.map +1 -1
  155. package/dist/tailwind-base.js.map +1 -1
  156. package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
  157. package/dist/useConfirmBeforeClosing.js.map +1 -1
  158. package/dist/useDialog.js.map +1 -1
  159. package/dist/useGoogleMaps.js.map +1 -1
  160. package/dist/useMediaQuery.js.map +1 -1
  161. package/dist/useModals.js.map +1 -1
  162. package/dist/usePaginationStats-d_q39naC.js.map +1 -1
  163. package/dist/usePlaidLink.js.map +1 -1
  164. package/dist/useScriptTag.js.map +1 -1
  165. package/dist/useSearch.js +1 -1
  166. package/dist/useSearch.js.map +1 -1
  167. package/dist/useSelection.js.map +1 -1
  168. package/dist/useSortable.js +1 -1
  169. package/dist/useSortable.js.map +1 -1
  170. package/dist/useStepper.js.map +1 -1
  171. package/dist/useToasts.js.map +1 -1
  172. package/dist/useValidation.js.map +1 -1
  173. package/dist/utils/calculateElementOverflow.js.map +1 -1
  174. package/dist/utils/colorScheme.js.map +1 -1
  175. package/dist/utils/createQueryString.js.map +1 -1
  176. package/dist/utils/createValidDate.js.map +1 -1
  177. package/dist/utils/getContrastingTextColor.js.map +1 -1
  178. package/dist/utils/helpers.js.map +1 -1
  179. package/dist/utils/i18n.js.map +1 -1
  180. package/dist/utils/normalizeDate.js.map +1 -1
  181. package/dist/utils/obfuscateText.js.map +1 -1
  182. package/dist/utils/searchFuzzy.js +1 -1
  183. package/dist/utils/storage.js.map +1 -1
  184. package/package.json +23 -10
  185. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +0 -78
  186. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +0 -1
  187. package/dist/floating-ui.vue-pzUuloyX.js +0 -1075
  188. package/dist/floating-ui.vue-pzUuloyX.js.map +0 -1
  189. package/dist/index-C14LhAwV.js.map +0 -1
  190. package/dist/searchFuzzy-DRasJ33G.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js","sources":["../assets/logos/direct-pay-lockup.svg","../assets/logos/flex-pay-lockup.svg","../assets/logos/leaflink-brandmark.svg","../assets/logos/leaflink-lockup.svg","../assets/logos/marketplace-brandmark.svg","../assets/logos/payments-brandmark.svg","../assets/logos/payments-lockup.svg","../assets/logos/post-lockup.svg","../src/components/Logo/Logo.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 107 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6.746 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4h-12Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.263-.646-.601-.75-.973-.302-1.658-.964-1.933-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.92 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.473 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M28.746 16.832h3.803c2.782 0 4.39-2.076 4.39-4.811 0-2.749-1.608-4.853-4.39-4.853h-3.803v9.664Zm2.195-1.922V9.09h1.608c1.44 0 2.18 1.416 2.18 2.931 0 1.5-.74 2.89-2.18 2.89H30.94ZM38.63 16.832h2.195V7.168H38.63v9.664ZM47.905 16.832h2.558l-2.488-3.52c1.551-.393 2.264-1.585 2.264-2.946 0-1.599-1.006-3.198-3.243-3.198h-3.942v9.664h2.195v-3.394h.433l2.223 3.394ZM45.249 9.09h1.453c.895 0 1.329.687 1.329 1.332s-.42 1.276-1.384 1.276h-1.398V9.09ZM54.218 14.91V13.06h3.495V11.08h-3.495V9.09h3.984V7.168h-6.179v9.664h6.305V14.91h-4.11ZM64.262 17a4.898 4.898 0 0 0 4.054-2.146l-1.706-1.192c-.503.785-1.244 1.262-2.264 1.262-1.65 0-2.768-1.346-2.768-2.945 0-1.599 1.16-2.903 2.782-2.903 1.006 0 1.747.477 2.25 1.262l1.706-1.192A4.899 4.899 0 0 0 64.262 7c-2.712 0-4.893 2.258-4.893 4.979 0 2.749 2.18 5.021 4.893 5.021ZM76.216 7.168h-7.283V9.09h2.544v7.742h2.195V9.09h2.544V7.168ZM85.39 7.168h-3.97v9.664h2.195V13.55h1.776c2.236 0 3.243-1.571 3.243-3.184 0-1.599-1.007-3.198-3.243-3.198Zm-.097 4.46h-1.678V9.09h1.692c.81 0 1.118.659 1.118 1.276s-.308 1.262-1.132 1.262ZM95.526 16.832h2.335L94.31 7.168h-2.39l-3.566 9.664h2.349l.713-2.244h3.383l.727 2.244Zm-3.509-4.152 1.077-3.38 1.09 3.38h-2.167ZM103.758 7.168l-2.265 3.563-2.222-3.563h-2.615l3.747 5.302v4.362h2.209v-4.32l3.76-5.344h-2.614Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 89 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M34.08 9.09V7.168H28v9.664h2.19V13.03h3.08v-1.908h-3.08V9.09h3.89ZM35.639 16.832h5.716V14.91h-3.527V7.168h-2.19v9.664ZM44.922 14.91V13.06h3.486V11.08h-3.486V9.09h3.974V7.168h-6.163v9.664h6.288V14.91h-4.1ZM58.978 16.832l-3.333-5.148 3.04-4.516h-2.621l-1.715 2.763-1.687-2.763h-2.65l3.026 4.516-3.304 5.148h2.565l2.05-3.394 2.05 3.394h2.579ZM67.82 7.168h-3.96v9.664h2.19V13.55h1.77c2.23 0 3.235-1.571 3.235-3.184 0-1.599-1.004-3.198-3.235-3.198Zm-.098 4.46H66.05V9.09h1.687c.809 0 1.116.659 1.116 1.276s-.307 1.262-1.13 1.262ZM77.929 16.832h2.328l-3.541-9.664H74.33l-3.555 9.664h2.342l.711-2.244h3.375l.725 2.244Zm-3.5-4.152 1.074-3.38 1.087 3.38H74.43ZM86.139 7.168l-2.259 3.563-2.217-3.563h-2.607l3.737 5.302v4.362h2.203v-4.32l3.75-5.344H86.14Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n viewBox: \"0 0 29 24\",\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", { d: \"M7.219 18.834v-4.518L0 23.633h4.195l3.092-3.99a4.956 4.956 0 0 1-.068-.81ZM14.74 22.248a3.8 3.8 0 0 1-2.657-1.094 3.68 3.68 0 0 1-1.097-2.621c0-.03.01-11.764.01-13.665.003-1.747 1.502-3.334 3.442-3.334.87 0 1.706.324 2.343.906A4.876 4.876 0 0 0 14.408.41a4.971 4.971 0 0 0-3.139-.193 4.902 4.902 0 0 0-2.61 1.726 4.771 4.771 0 0 0-1.007 2.932v13.942c0 2.522 2.11 4.803 4.9 4.803a4.904 4.904 0 0 0 2.834-.887c.345-.238.658-.517.932-.831a3.753 3.753 0 0 1-1.578.347Z\" }, null, -1),\n _createElementVNode(\"path\", { d: \"M18.023 18.823v-4.518l-4.23 5.429c-.219.282-.53.48-.883.562-.351.081-.72.04-1.044-.117.265.46.641.848 1.094 1.132a3.338 3.338 0 0 0 3.073.248c.494-.207.929-.53 1.267-.941l.788-1.008a4.672 4.672 0 0 1-.065-.787ZM25.55 22.248a3.799 3.799 0 0 1-2.657-1.094 3.679 3.679 0 0 1-1.096-2.621l.01-13.665c0-1.746 1.5-3.33 3.441-3.33.868 0 1.703.325 2.338.907A4.875 4.875 0 0 0 25.216.414 4.971 4.971 0 0 0 22.077.22a4.902 4.902 0 0 0-2.61 1.723 4.77 4.77 0 0 0-1.01 2.931v13.942c0 2.522 2.111 4.803 4.9 4.803a4.904 4.904 0 0 0 2.835-.887c.345-.238.658-.517.932-.831a3.756 3.756 0 0 1-1.574.347Z\" }, null, -1),\n _createElementVNode(\"path\", { d: \"m26.12 17.75-1.523 1.983c-.219.282-.53.48-.881.562-.352.081-.72.04-1.044-.116.266.46.642.848 1.095 1.132a3.339 3.339 0 0 0 3.073.248c.494-.207.929-.53 1.268-.941l.67-.865-2.657-2.003ZM25.243 1.989c-.547 0-1.084.147-1.553.425a2.99 2.99 0 0 0-1.11 1.15 1.58 1.58 0 0 1 1.973.31 1.52 1.52 0 0 1 .044 1.966L22.23 8.897v5.399l5.02-6.459a4.711 4.711 0 0 0 1.01-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.119-.854ZM14.438 1.989a3.055 3.055 0 0 0-1.551.426 2.99 2.99 0 0 0-1.108 1.15 1.58 1.58 0 0 1 1.97.312 1.52 1.52 0 0 1 .044 1.963l-2.368 3.057v5.399l5.019-6.459a4.713 4.713 0 0 0 1.008-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.117-.854Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 139 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#logo_leaflink_lockup)\\\"><path d=\\\"M35.265.068h3.883V23.64h-3.883V.068ZM57.586 16.946H45.493c.433 2.143 2.11 3.232 4.422 3.232 1.708 0 3.316-.66 4.254-1.912l2.58 1.945c-1.44 2.242-4.188 3.429-7.036 3.429-4.689 0-8.24-3.231-8.24-8.045 0-4.912 3.752-8.013 8.207-8.013 4.49 0 8.007 3.069 8.007 7.88-.005.496-.038.992-.1 1.484Zm-3.786-2.67c-.234-2.11-1.876-3.33-4.053-3.33-2.11 0-3.785.989-4.254 3.33H53.8ZM76.628 7.913V23.64H72.74v-2.407c-1.071 1.648-3.282 2.407-5.196 2.407-4.12 0-7.709-3.132-7.709-8.045 0-4.944 3.552-8.013 7.672-8.013 1.977 0 4.158.759 5.226 2.374V7.91l3.894.003Zm-3.953 7.649c0-2.704-2.278-4.418-4.522-4.418-2.412 0-4.389 1.846-4.389 4.418s1.977 4.484 4.389 4.484c2.378 0 4.522-1.78 4.522-4.484ZM83.997 6.891v1.352h3.484v3.069h-3.484V23.64h-3.882V7.089C80.115 2.67 82.255 0 86.61 0h1.843l-1.072 3.56c-2.647 0-3.418 1.451-3.384 3.331ZM91.182.07h3.886v23.57h-3.886V.07ZM97.993 2.803c0-1.352 1.172-2.341 2.546-2.341 1.407 0 2.512.989 2.512 2.34 0 1.32-1.105 2.342-2.512 2.342-1.37 0-2.546-1.023-2.546-2.341Zm.606 5.44h3.886v15.396h-3.886V8.243ZM120.934 15.003v8.637h-3.885v-8.276c0-2.44-1.508-3.693-3.25-3.693-1.776 0-3.984.957-3.984 3.922v8.044h-3.891V8.243h3.886v2.44c.803-1.913 3.249-2.77 4.857-2.77 4.023 0 6.267 2.604 6.267 7.09ZM134.073 23.64l-6.098-6.99v6.99h-3.885V.068h3.885v13.087l4.489-4.912h5.059l-6.365 6.726 7.838 8.67h-4.923ZM7.219 18.834v-4.518L0 23.633h4.195l3.092-3.99a4.956 4.956 0 0 1-.068-.81ZM14.74 22.248a3.8 3.8 0 0 1-2.657-1.094 3.68 3.68 0 0 1-1.097-2.621c0-.03.01-11.764.01-13.665.003-1.747 1.502-3.334 3.442-3.334.87 0 1.706.324 2.343.906A4.876 4.876 0 0 0 14.408.41a4.971 4.971 0 0 0-3.139-.193 4.902 4.902 0 0 0-2.61 1.726 4.771 4.771 0 0 0-1.007 2.932v13.942c0 2.522 2.11 4.803 4.9 4.803a4.903 4.903 0 0 0 2.834-.887c.345-.238.658-.517.932-.831a3.753 3.753 0 0 1-1.578.347Z\\\"></path><path d=\\\"M18.023 18.823v-4.518l-4.23 5.429c-.219.282-.53.48-.883.562-.351.081-.72.04-1.044-.117.265.46.641.848 1.094 1.132a3.338 3.338 0 0 0 3.073.248c.494-.207.929-.53 1.267-.941l.788-1.008a4.672 4.672 0 0 1-.065-.787ZM25.55 22.248a3.799 3.799 0 0 1-2.657-1.094 3.679 3.679 0 0 1-1.096-2.621l.01-13.665c0-1.746 1.5-3.33 3.441-3.33.868 0 1.703.325 2.338.907A4.875 4.875 0 0 0 25.216.414 4.971 4.971 0 0 0 22.077.22a4.902 4.902 0 0 0-2.61 1.723 4.77 4.77 0 0 0-1.01 2.931v13.942c0 2.522 2.111 4.803 4.9 4.803a4.904 4.904 0 0 0 2.835-.887c.345-.238.658-.517.932-.831a3.756 3.756 0 0 1-1.574.347Z\\\"></path><path d=\\\"m26.12 17.75-1.523 1.983c-.219.282-.53.48-.881.562-.352.081-.72.04-1.044-.116.266.46.642.848 1.095 1.132a3.339 3.339 0 0 0 3.073.248c.494-.207.929-.53 1.268-.941l.67-.865-2.657-2.003ZM25.243 1.989c-.547 0-1.084.147-1.553.425a2.99 2.99 0 0 0-1.11 1.15 1.58 1.58 0 0 1 1.973.31 1.52 1.52 0 0 1 .044 1.966L22.23 8.897v5.399l5.02-6.459a4.711 4.711 0 0 0 1.01-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.119-.854ZM14.438 1.989a3.055 3.055 0 0 0-1.551.426 2.99 2.99 0 0 0-1.108 1.15 1.58 1.58 0 0 1 1.97.312 1.52 1.52 0 0 1 .044 1.963l-2.368 3.057v5.399l5.019-6.459a4.713 4.713 0 0 0 1.008-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.117-.854Z\\\"></path></g><defs><clipPath id=\\\"logo_leaflink_lockup\\\"><path fill=\\\"#fff\\\" d=\\\"M0 0h139v23.64H0z\\\"></path></clipPath></defs>\", 2)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm9.308 13.322V8.655a1.486 1.486 0 0 1 .027-.31 1.687 1.687 0 0 1 1.245-1.29 1.703 1.703 0 0 1 1.622.44l.035.037c.018.018.036.037.052.056a2.39 2.39 0 0 0-1.44-1.304 2.386 2.386 0 0 0-.749-.117 2.385 2.385 0 0 0-2.41 2.357v6.903a2.389 2.389 0 0 0 1.676 2.294 2.416 2.416 0 0 0 2.591-.773 1.85 1.85 0 0 1-2.108-.353 1.805 1.805 0 0 1-.517-1.01 2.54 2.54 0 0 1-.024-.263ZM12.6 10.164l-2.108 2.748-.227.296v-2.669l1.08-1.415c.047-.061.09-.126.126-.195.213-.415.131-.827-.21-1.048a.771.771 0 0 0-.694-.074l.015-.02.038-.047.021-.025a.669.669 0 0 1 .045-.05l.02-.019a1.485 1.485 0 0 1 2.438.543c.064.178.093.366.086.554a2.364 2.364 0 0 1-.61 1.398l-.02.023Zm-5.857 7.67 1.51-1.986a2.514 2.514 0 0 1-.031-.424v-2.203l-3.513 4.612h2.034Zm6.51-1.63.256-.35a4.485 4.485 0 0 1-.012-.077l-.011-.073v-.07l-.004-.034c-.003-.014-.003-.029-.003-.043v-2.319l-.131.179-.385.522c-.593.803-1.348 1.807-1.574 2.033a.778.778 0 0 1-.897.144.798.798 0 0 0 .055.087.953.953 0 0 0 .092.126c.01.014.02.026.032.039l.004.004.034.037.037.038a1.588 1.588 0 0 0 .454.317 1.642 1.642 0 0 0 2.003-.492l.04-.053.01-.014Zm5.236-7.458v-.004a1.465 1.465 0 0 0-.437-1.094 1.49 1.49 0 0 0-1.867-.185l-.059.043a1.473 1.473 0 0 0-.167.143l-.006.006c-.02.02-.04.04-.057.06l-.021.026-.038.047-.014.019a.774.774 0 0 1 .698.074c.34.221.422.633.209 1.048a1.308 1.308 0 0 1-.128.195l-1.077 1.415v2.669l.225-.296 2.115-2.755a2.367 2.367 0 0 0 .624-1.411Zm.22 7.181-.203.278-.012.016a1.367 1.367 0 0 1-.03.042l-.007.009a.101.101 0 0 1-.01.016l-.02.023-.04.05-.01.012a1.04 1.04 0 0 1-.068.076 1.646 1.646 0 0 1-2.274.035l-.006-.004-.006-.006a1.696 1.696 0 0 1-.292-.364l.003.003c.002 0 .003 0 .004.002l.003.001a.786.786 0 0 0 .898-.144c.114-.114.372-.436.77-.958l1.3.913Zm-8.656-7.273v6.666c0 .086.007.172.022.258v.006a1.805 1.805 0 0 0 .565 1.055 1.86 1.86 0 0 0 2.063.308 2.42 2.42 0 0 1-3.566.187 2.355 2.355 0 0 1-.702-1.706V8.522a2.388 2.388 0 0 1 2.412-2.355c.256-.001.51.04.752.12.443.147.834.42 1.125.782.127.16.233.335.314.52a1.703 1.703 0 0 0-1.707-.53c-.58.149-1.038.59-1.204 1.162a.684.684 0 0 0-.04.126c-.023.1-.034.204-.034.307Z\"\n }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 164 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M28 16.832h5.772V14.91H30.21V7.168H28v9.664ZM37.372 14.91V13.06h3.52V11.08h-3.52V9.09h4.012V7.168h-6.222v9.664h6.349V14.91h-4.139ZM49.31 16.832h2.351l-3.575-9.664h-2.407l-3.59 9.664h2.365l.718-2.244h3.407l.732 2.244Zm-3.533-4.152 1.084-3.38 1.098 3.38h-2.182ZM58.785 9.09V7.168h-6.137v9.664h2.21V13.03h3.111v-1.908h-3.11V9.09h3.926ZM60.36 16.832h5.771V14.91H62.57V7.168h-2.21v9.664ZM67.522 16.832h2.21V7.168h-2.21v9.664ZM77.1 7.168v5.484l-3.097-5.484h-2.027v9.664h2.21v-5.554l3.181 5.554h1.943V7.168H77.1ZM89.427 16.832 85.67 11.95l3.223-4.783H86.26l-2.52 3.9v-3.9h-2.21v9.664h2.21v-3.787l2.858 3.787h2.83ZM97.185 7.168h-3.998v9.664h2.21V13.55h1.788c2.252 0 3.266-1.571 3.266-3.184 0-1.599-1.014-3.198-3.266-3.198Zm-.098 4.46h-1.69V9.09h1.704c.816 0 1.126.659 1.126 1.276s-.31 1.262-1.14 1.262ZM107.391 16.832h2.351l-3.576-9.664h-2.407l-3.589 9.664h2.364l.718-2.244h3.407l.732 2.244Zm-3.533-4.152 1.084-3.38 1.098 3.38h-2.182ZM115.68 7.168l-2.281 3.563-2.238-3.563h-2.632l3.772 5.302v4.362h2.225v-4.32l3.786-5.344h-2.632ZM130.237 16.832l-1.182-9.664h-1.887l-2.787 6.045-2.829-6.045h-1.844l-1.197 9.664h2.267l.647-5.484 2.112 4.376h1.689l2.111-4.39.634 5.498h2.266ZM134.163 14.91V13.06h3.52V11.08h-3.52V9.09h4.012V7.168h-6.222v9.664h6.349V14.91h-4.139ZM145.229 7.168v5.484l-3.097-5.484h-2.027v9.664h2.21v-5.554l3.182 5.554h1.942V7.168h-2.21ZM156.163 7.168h-7.334V9.09h2.562v7.742h2.21V9.09h2.562V7.168ZM160.425 17c1.773 0 3.575-.926 3.575-3.001 0-1.754-1.408-2.469-2.787-2.89l-1.014-.308c-.901-.253-.957-.687-.957-.884 0-.533.451-.996 1.14-.996.76 0 1.112.491 1.112 1.066h2.21c0-1.879-1.421-2.987-3.279-2.987-1.929 0-3.421 1.22-3.421 2.96 0 .911.408 2.215 2.548 2.79l1.154.351c.859.28 1.07.631 1.07 1.01 0 .63-.549.996-1.267.996-.76 0-1.38-.477-1.38-1.094h-2.21c0 1.78 1.436 2.987 3.506 2.987Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 60 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6.373 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4h-12Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.937 2.313-2.244 2.63-.342.083-.615.368-.615.72v.18a.496.496 0 0 1-.991 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.933-1.782-.154-.457.254-.855.736-.855.486 0 .856.437 1.162.815.265.328.708.54 1.293.54.919 0 1.429-.539 1.429-1.195 0-.51-.365-.933-1.225-1.167l-1.137-.32c-1.984-.51-2.334-1.707-2.334-2.48 0-1.234.86-2.154 2.035-2.512.323-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .991 0v.174c0 .34.26.62.588.714.941.269 1.618.91 1.87 1.779.134.457-.272.847-.749.847-.474 0-.828-.424-1.134-.793l-.03-.036c-.23-.275-.592-.44-1.04-.44-.774 0-1.328.482-1.328 1.124 0 .262.073.772 1.05 1.035l1.065.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M59.12 7.177v1.722h-2.66v7.924h-1.947V8.899h-2.66V7.177h7.267ZM47.718 16.991c-2.058 0-3.472-1.274-3.472-2.968h1.946c.014.686.686 1.26 1.582 1.26.868 0 1.442-.476 1.442-1.162 0-.532-.392-.91-1.218-1.162l-1.176-.336c-2.114-.56-2.492-1.834-2.492-2.702 0-1.722 1.484-2.912 3.332-2.912 1.82 0 3.22 1.106 3.22 2.94h-1.946c0-.686-.476-1.218-1.316-1.218-.756 0-1.33.504-1.33 1.148 0 .238.07.742 1.078 1.022l1.078.308c1.456.406 2.73 1.176 2.73 2.814 0 1.918-1.638 2.968-3.458 2.968ZM39.582 16.991c-1.862 0-3.514-1.372-3.514-3.43 0-2.072 1.652-3.444 3.514-3.444 1.862 0 3.514 1.372 3.514 3.444 0 2.058-1.652 3.43-3.514 3.43Zm0-1.708c.91 0 1.652-.714 1.652-1.722 0-1.022-.742-1.736-1.652-1.736-.91 0-1.652.714-1.652 1.736 0 1.008.742 1.722 1.652 1.722ZM32.307 7.177c2.184 0 3.15 1.568 3.15 3.15 0 1.582-.966 3.122-3.15 3.122h-1.988v3.374h-1.946V7.177h3.934Zm-.098 4.564c.938 0 1.288-.728 1.288-1.414 0-.7-.35-1.428-1.26-1.428h-1.918v2.842h1.89Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","<script lang=\"ts\" setup>\n import logger from '@leaflink/snitch';\n import { computed } from 'vue';\n\n import DirectPayLockup from './../../../assets/logos/direct-pay-lockup.svg';\n import FlexPayLockup from './../../../assets/logos/flex-pay-lockup.svg';\n import LeafLinkBrandmark from './../../../assets/logos/leaflink-brandmark.svg';\n import LeafLinkLockup from './../../../assets/logos/leaflink-lockup.svg';\n import MarketplaceBrandmark from './../../../assets/logos/marketplace-brandmark.svg';\n import PaymentsBrandmark from './../../../assets/logos/payments-brandmark.svg';\n import PaymentsLockup from './../../../assets/logos/payments-lockup.svg';\n import PostLockup from './../../../assets/logos/post-lockup.svg';\n\n export interface LogoProps {\n /**\n * brand to use for the logo. This, along with variant, will determine which logo to display.\n */\n brand?: 'leaflink' | 'payments' | 'marketplace' | 'flex-pay' | 'direct-pay' | 'post';\n\n /**\n * What color the logo should be.\n */\n color?: 'purple' | 'white';\n\n /**\n * Which variant of the logo to display.\n */\n variant?: 'lockup' | 'brandmark';\n\n /**\n * Width of the logo.\n */\n width?: string | number;\n\n /**\n * Height of the logo.\n */\n height?: string | number;\n }\n\n const props = withDefaults(defineProps<LogoProps>(), {\n brand: 'leaflink',\n color: 'purple',\n variant: 'lockup',\n width: undefined,\n height: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Fires when an invalid brand and variant combination is provided.\n */\n (e: 'error', msg: string): void;\n }>();\n\n const DEFAULT_LOGO_ATTRS = {\n LeafLinkLockup: {\n is: LeafLinkLockup,\n width: 139,\n height: 24,\n },\n PaymentsLockup: {\n is: PaymentsLockup,\n width: 164,\n height: 24,\n },\n LeafLinkBrandmark: {\n is: LeafLinkBrandmark,\n width: 29,\n height: 24,\n },\n MarketplaceBrandmark: {\n is: MarketplaceBrandmark,\n width: 24,\n height: 24,\n },\n PaymentsBrandmark: {\n is: PaymentsBrandmark,\n width: 24,\n height: 24,\n },\n DirectPayLockup: {\n is: DirectPayLockup,\n width: 107,\n height: 24,\n },\n FlexPayLockup: {\n is: FlexPayLockup,\n width: 89,\n height: 24,\n },\n PostLockup: {\n is: PostLockup,\n width: 60,\n height: 24,\n },\n };\n\n // Determine which logo to display based on brand and variant & set default sizes for convenience unless explicitly set.\n // Note: Setting default width or height on the SVG element itself will not allow the SVG to scale up above those values.\n const computedLogoAttrs = computed<{ is: string; width: number; height: number }>(() => {\n let attrs;\n\n if (props.brand === 'leaflink' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['LeafLinkLockup'];\n }\n\n if (props.brand === 'leaflink' && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['LeafLinkBrandmark'];\n }\n\n if (props.brand === 'marketplace' && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['MarketplaceBrandmark'];\n }\n\n if (props.brand === 'payments' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['PaymentsLockup'];\n }\n\n if (props.brand === 'direct-pay' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['DirectPayLockup'];\n }\n\n if (props.brand === 'flex-pay' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['FlexPayLockup'];\n }\n\n if (props.brand === 'post' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['PostLockup'];\n }\n\n if (['payments', 'direct-pay', 'flex-pay', 'post'].includes(props.brand) && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['PaymentsBrandmark'];\n }\n\n if (!attrs) {\n const msg = `Invalid brand and variant combination. There's no ${props.brand.replace(\n '-',\n ' ',\n )} ${props.variant.replace('-', ' ')} logo.`;\n logger.error(msg);\n emit('error', msg);\n\n return;\n }\n\n // If width or height is explicitly set, override the default values but do it individually.\n // SVG's will always maintain their aspect ratio, so setting one will scale the other accordingly, so if a user\n // sends in even ONE of these props, we want to make sure we delete both defaults so the SVG can scale in the\n // expected way.\n if (props.width || props.height) {\n delete attrs.width;\n delete attrs.height;\n if (props.width) {\n attrs.width = props.width;\n }\n if (props.height) {\n attrs.height = props.height;\n }\n }\n\n return attrs;\n });\n</script>\n\n<template>\n <component\n :is=\"computedLogoAttrs.is\"\n v-if=\"computedLogoAttrs\"\n class=\"stash-logo\"\n :class=\"[\n `stash-logo--${props.brand}`,\n `stash-logo--${props.variant}`,\n `stash-logo--${props.color}`,\n {\n 'tw-text-purple-500': props.color === 'purple',\n 'tw-text-white': props.color === 'white',\n },\n ]\"\n data-test=\"stash-logo\"\n fill=\"currentColor\"\n v-bind=\"computedLogoAttrs\"\n />\n</template>\n"],"names":["_hoisted_1","render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","DirectPayLockup","FlexPayLockup","LeafLinkBrandmark","_createStaticVNode","LeafLinkLockup","MarketplaceBrandmark","PaymentsBrandmark","PaymentsLockup","PostLockup","props","__props","emit","__emit","DEFAULT_LOGO_ATTRS","computedLogoAttrs","computed","attrs","msg","logger"],"mappings":"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"}
1
+ {"version":3,"file":"Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js","sources":["../assets/logos/direct-pay-lockup.svg","../assets/logos/flex-pay-lockup.svg","../assets/logos/leaflink-brandmark.svg","../assets/logos/leaflink-lockup.svg","../assets/logos/marketplace-brandmark.svg","../assets/logos/payments-brandmark.svg","../assets/logos/payments-lockup.svg","../assets/logos/post-lockup.svg","../src/components/Logo/Logo.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 107 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6.746 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4h-12Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.263-.646-.601-.75-.973-.302-1.658-.964-1.933-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.92 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.473 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M28.746 16.832h3.803c2.782 0 4.39-2.076 4.39-4.811 0-2.749-1.608-4.853-4.39-4.853h-3.803v9.664Zm2.195-1.922V9.09h1.608c1.44 0 2.18 1.416 2.18 2.931 0 1.5-.74 2.89-2.18 2.89H30.94ZM38.63 16.832h2.195V7.168H38.63v9.664ZM47.905 16.832h2.558l-2.488-3.52c1.551-.393 2.264-1.585 2.264-2.946 0-1.599-1.006-3.198-3.243-3.198h-3.942v9.664h2.195v-3.394h.433l2.223 3.394ZM45.249 9.09h1.453c.895 0 1.329.687 1.329 1.332s-.42 1.276-1.384 1.276h-1.398V9.09ZM54.218 14.91V13.06h3.495V11.08h-3.495V9.09h3.984V7.168h-6.179v9.664h6.305V14.91h-4.11ZM64.262 17a4.898 4.898 0 0 0 4.054-2.146l-1.706-1.192c-.503.785-1.244 1.262-2.264 1.262-1.65 0-2.768-1.346-2.768-2.945 0-1.599 1.16-2.903 2.782-2.903 1.006 0 1.747.477 2.25 1.262l1.706-1.192A4.899 4.899 0 0 0 64.262 7c-2.712 0-4.893 2.258-4.893 4.979 0 2.749 2.18 5.021 4.893 5.021ZM76.216 7.168h-7.283V9.09h2.544v7.742h2.195V9.09h2.544V7.168ZM85.39 7.168h-3.97v9.664h2.195V13.55h1.776c2.236 0 3.243-1.571 3.243-3.184 0-1.599-1.007-3.198-3.243-3.198Zm-.097 4.46h-1.678V9.09h1.692c.81 0 1.118.659 1.118 1.276s-.308 1.262-1.132 1.262ZM95.526 16.832h2.335L94.31 7.168h-2.39l-3.566 9.664h2.349l.713-2.244h3.383l.727 2.244Zm-3.509-4.152 1.077-3.38 1.09 3.38h-2.167ZM103.758 7.168l-2.265 3.563-2.222-3.563h-2.615l3.747 5.302v4.362h2.209v-4.32l3.76-5.344h-2.614Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 89 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M34.08 9.09V7.168H28v9.664h2.19V13.03h3.08v-1.908h-3.08V9.09h3.89ZM35.639 16.832h5.716V14.91h-3.527V7.168h-2.19v9.664ZM44.922 14.91V13.06h3.486V11.08h-3.486V9.09h3.974V7.168h-6.163v9.664h6.288V14.91h-4.1ZM58.978 16.832l-3.333-5.148 3.04-4.516h-2.621l-1.715 2.763-1.687-2.763h-2.65l3.026 4.516-3.304 5.148h2.565l2.05-3.394 2.05 3.394h2.579ZM67.82 7.168h-3.96v9.664h2.19V13.55h1.77c2.23 0 3.235-1.571 3.235-3.184 0-1.599-1.004-3.198-3.235-3.198Zm-.098 4.46H66.05V9.09h1.687c.809 0 1.116.659 1.116 1.276s-.307 1.262-1.13 1.262ZM77.929 16.832h2.328l-3.541-9.664H74.33l-3.555 9.664h2.342l.711-2.244h3.375l.725 2.244Zm-3.5-4.152 1.074-3.38 1.087 3.38H74.43ZM86.139 7.168l-2.259 3.563-2.217-3.563h-2.607l3.737 5.302v4.362h2.203v-4.32l3.75-5.344H86.14Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n viewBox: \"0 0 29 24\",\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", { d: \"M7.219 18.834v-4.518L0 23.633h4.195l3.092-3.99a4.956 4.956 0 0 1-.068-.81ZM14.74 22.248a3.8 3.8 0 0 1-2.657-1.094 3.68 3.68 0 0 1-1.097-2.621c0-.03.01-11.764.01-13.665.003-1.747 1.502-3.334 3.442-3.334.87 0 1.706.324 2.343.906A4.876 4.876 0 0 0 14.408.41a4.971 4.971 0 0 0-3.139-.193 4.902 4.902 0 0 0-2.61 1.726 4.771 4.771 0 0 0-1.007 2.932v13.942c0 2.522 2.11 4.803 4.9 4.803a4.904 4.904 0 0 0 2.834-.887c.345-.238.658-.517.932-.831a3.753 3.753 0 0 1-1.578.347Z\" }, null, -1),\n _createElementVNode(\"path\", { d: \"M18.023 18.823v-4.518l-4.23 5.429c-.219.282-.53.48-.883.562-.351.081-.72.04-1.044-.117.265.46.641.848 1.094 1.132a3.338 3.338 0 0 0 3.073.248c.494-.207.929-.53 1.267-.941l.788-1.008a4.672 4.672 0 0 1-.065-.787ZM25.55 22.248a3.799 3.799 0 0 1-2.657-1.094 3.679 3.679 0 0 1-1.096-2.621l.01-13.665c0-1.746 1.5-3.33 3.441-3.33.868 0 1.703.325 2.338.907A4.875 4.875 0 0 0 25.216.414 4.971 4.971 0 0 0 22.077.22a4.902 4.902 0 0 0-2.61 1.723 4.77 4.77 0 0 0-1.01 2.931v13.942c0 2.522 2.111 4.803 4.9 4.803a4.904 4.904 0 0 0 2.835-.887c.345-.238.658-.517.932-.831a3.756 3.756 0 0 1-1.574.347Z\" }, null, -1),\n _createElementVNode(\"path\", { d: \"m26.12 17.75-1.523 1.983c-.219.282-.53.48-.881.562-.352.081-.72.04-1.044-.116.266.46.642.848 1.095 1.132a3.339 3.339 0 0 0 3.073.248c.494-.207.929-.53 1.268-.941l.67-.865-2.657-2.003ZM25.243 1.989c-.547 0-1.084.147-1.553.425a2.99 2.99 0 0 0-1.11 1.15 1.58 1.58 0 0 1 1.973.31 1.52 1.52 0 0 1 .044 1.966L22.23 8.897v5.399l5.02-6.459a4.711 4.711 0 0 0 1.01-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.119-.854ZM14.438 1.989a3.055 3.055 0 0 0-1.551.426 2.99 2.99 0 0 0-1.108 1.15 1.58 1.58 0 0 1 1.97.312 1.52 1.52 0 0 1 .044 1.963l-2.368 3.057v5.399l5.019-6.459a4.713 4.713 0 0 0 1.008-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.117-.854Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 139 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#logo_leaflink_lockup)\\\"><path d=\\\"M35.265.068h3.883V23.64h-3.883V.068ZM57.586 16.946H45.493c.433 2.143 2.11 3.232 4.422 3.232 1.708 0 3.316-.66 4.254-1.912l2.58 1.945c-1.44 2.242-4.188 3.429-7.036 3.429-4.689 0-8.24-3.231-8.24-8.045 0-4.912 3.752-8.013 8.207-8.013 4.49 0 8.007 3.069 8.007 7.88-.005.496-.038.992-.1 1.484Zm-3.786-2.67c-.234-2.11-1.876-3.33-4.053-3.33-2.11 0-3.785.989-4.254 3.33H53.8ZM76.628 7.913V23.64H72.74v-2.407c-1.071 1.648-3.282 2.407-5.196 2.407-4.12 0-7.709-3.132-7.709-8.045 0-4.944 3.552-8.013 7.672-8.013 1.977 0 4.158.759 5.226 2.374V7.91l3.894.003Zm-3.953 7.649c0-2.704-2.278-4.418-4.522-4.418-2.412 0-4.389 1.846-4.389 4.418s1.977 4.484 4.389 4.484c2.378 0 4.522-1.78 4.522-4.484ZM83.997 6.891v1.352h3.484v3.069h-3.484V23.64h-3.882V7.089C80.115 2.67 82.255 0 86.61 0h1.843l-1.072 3.56c-2.647 0-3.418 1.451-3.384 3.331ZM91.182.07h3.886v23.57h-3.886V.07ZM97.993 2.803c0-1.352 1.172-2.341 2.546-2.341 1.407 0 2.512.989 2.512 2.34 0 1.32-1.105 2.342-2.512 2.342-1.37 0-2.546-1.023-2.546-2.341Zm.606 5.44h3.886v15.396h-3.886V8.243ZM120.934 15.003v8.637h-3.885v-8.276c0-2.44-1.508-3.693-3.25-3.693-1.776 0-3.984.957-3.984 3.922v8.044h-3.891V8.243h3.886v2.44c.803-1.913 3.249-2.77 4.857-2.77 4.023 0 6.267 2.604 6.267 7.09ZM134.073 23.64l-6.098-6.99v6.99h-3.885V.068h3.885v13.087l4.489-4.912h5.059l-6.365 6.726 7.838 8.67h-4.923ZM7.219 18.834v-4.518L0 23.633h4.195l3.092-3.99a4.956 4.956 0 0 1-.068-.81ZM14.74 22.248a3.8 3.8 0 0 1-2.657-1.094 3.68 3.68 0 0 1-1.097-2.621c0-.03.01-11.764.01-13.665.003-1.747 1.502-3.334 3.442-3.334.87 0 1.706.324 2.343.906A4.876 4.876 0 0 0 14.408.41a4.971 4.971 0 0 0-3.139-.193 4.902 4.902 0 0 0-2.61 1.726 4.771 4.771 0 0 0-1.007 2.932v13.942c0 2.522 2.11 4.803 4.9 4.803a4.903 4.903 0 0 0 2.834-.887c.345-.238.658-.517.932-.831a3.753 3.753 0 0 1-1.578.347Z\\\"></path><path d=\\\"M18.023 18.823v-4.518l-4.23 5.429c-.219.282-.53.48-.883.562-.351.081-.72.04-1.044-.117.265.46.641.848 1.094 1.132a3.338 3.338 0 0 0 3.073.248c.494-.207.929-.53 1.267-.941l.788-1.008a4.672 4.672 0 0 1-.065-.787ZM25.55 22.248a3.799 3.799 0 0 1-2.657-1.094 3.679 3.679 0 0 1-1.096-2.621l.01-13.665c0-1.746 1.5-3.33 3.441-3.33.868 0 1.703.325 2.338.907A4.875 4.875 0 0 0 25.216.414 4.971 4.971 0 0 0 22.077.22a4.902 4.902 0 0 0-2.61 1.723 4.77 4.77 0 0 0-1.01 2.931v13.942c0 2.522 2.111 4.803 4.9 4.803a4.904 4.904 0 0 0 2.835-.887c.345-.238.658-.517.932-.831a3.756 3.756 0 0 1-1.574.347Z\\\"></path><path d=\\\"m26.12 17.75-1.523 1.983c-.219.282-.53.48-.881.562-.352.081-.72.04-1.044-.116.266.46.642.848 1.095 1.132a3.339 3.339 0 0 0 3.073.248c.494-.207.929-.53 1.268-.941l.67-.865-2.657-2.003ZM25.243 1.989c-.547 0-1.084.147-1.553.425a2.99 2.99 0 0 0-1.11 1.15 1.58 1.58 0 0 1 1.973.31 1.52 1.52 0 0 1 .044 1.966L22.23 8.897v5.399l5.02-6.459a4.711 4.711 0 0 0 1.01-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.119-.854ZM14.438 1.989a3.055 3.055 0 0 0-1.551.426 2.99 2.99 0 0 0-1.108 1.15 1.58 1.58 0 0 1 1.97.312 1.52 1.52 0 0 1 .044 1.963l-2.368 3.057v5.399l5.019-6.459a4.713 4.713 0 0 0 1.008-2.921 2.943 2.943 0 0 0-.897-2.073 3.038 3.038 0 0 0-2.117-.854Z\\\"></path></g><defs><clipPath id=\\\"logo_leaflink_lockup\\\"><path fill=\\\"#fff\\\" d=\\\"M0 0h139v23.64H0z\\\"></path></clipPath></defs>\", 2)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm9.308 13.322V8.655a1.486 1.486 0 0 1 .027-.31 1.687 1.687 0 0 1 1.245-1.29 1.703 1.703 0 0 1 1.622.44l.035.037c.018.018.036.037.052.056a2.39 2.39 0 0 0-1.44-1.304 2.386 2.386 0 0 0-.749-.117 2.385 2.385 0 0 0-2.41 2.357v6.903a2.389 2.389 0 0 0 1.676 2.294 2.416 2.416 0 0 0 2.591-.773 1.85 1.85 0 0 1-2.108-.353 1.805 1.805 0 0 1-.517-1.01 2.54 2.54 0 0 1-.024-.263ZM12.6 10.164l-2.108 2.748-.227.296v-2.669l1.08-1.415c.047-.061.09-.126.126-.195.213-.415.131-.827-.21-1.048a.771.771 0 0 0-.694-.074l.015-.02.038-.047.021-.025a.669.669 0 0 1 .045-.05l.02-.019a1.485 1.485 0 0 1 2.438.543c.064.178.093.366.086.554a2.364 2.364 0 0 1-.61 1.398l-.02.023Zm-5.857 7.67 1.51-1.986a2.514 2.514 0 0 1-.031-.424v-2.203l-3.513 4.612h2.034Zm6.51-1.63.256-.35a4.485 4.485 0 0 1-.012-.077l-.011-.073v-.07l-.004-.034c-.003-.014-.003-.029-.003-.043v-2.319l-.131.179-.385.522c-.593.803-1.348 1.807-1.574 2.033a.778.778 0 0 1-.897.144.798.798 0 0 0 .055.087.953.953 0 0 0 .092.126c.01.014.02.026.032.039l.004.004.034.037.037.038a1.588 1.588 0 0 0 .454.317 1.642 1.642 0 0 0 2.003-.492l.04-.053.01-.014Zm5.236-7.458v-.004a1.465 1.465 0 0 0-.437-1.094 1.49 1.49 0 0 0-1.867-.185l-.059.043a1.473 1.473 0 0 0-.167.143l-.006.006c-.02.02-.04.04-.057.06l-.021.026-.038.047-.014.019a.774.774 0 0 1 .698.074c.34.221.422.633.209 1.048a1.308 1.308 0 0 1-.128.195l-1.077 1.415v2.669l.225-.296 2.115-2.755a2.367 2.367 0 0 0 .624-1.411Zm.22 7.181-.203.278-.012.016a1.367 1.367 0 0 1-.03.042l-.007.009a.101.101 0 0 1-.01.016l-.02.023-.04.05-.01.012a1.04 1.04 0 0 1-.068.076 1.646 1.646 0 0 1-2.274.035l-.006-.004-.006-.006a1.696 1.696 0 0 1-.292-.364l.003.003c.002 0 .003 0 .004.002l.003.001a.786.786 0 0 0 .898-.144c.114-.114.372-.436.77-.958l1.3.913Zm-8.656-7.273v6.666c0 .086.007.172.022.258v.006a1.805 1.805 0 0 0 .565 1.055 1.86 1.86 0 0 0 2.063.308 2.42 2.42 0 0 1-3.566.187 2.355 2.355 0 0 1-.702-1.706V8.522a2.388 2.388 0 0 1 2.412-2.355c.256-.001.51.04.752.12.443.147.834.42 1.125.782.127.16.233.335.314.52a1.703 1.703 0 0 0-1.707-.53c-.58.149-1.038.59-1.204 1.162a.684.684 0 0 0-.04.126c-.023.1-.034.204-.034.307Z\"\n }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 164 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4H6Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.936 2.313-2.244 2.63-.342.083-.614.368-.614.72v.18a.496.496 0 0 1-.992 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.932-1.782-.154-.457.253-.855.736-.855.485 0 .856.437 1.161.815.265.328.708.54 1.293.54.919 0 1.43-.539 1.43-1.195 0-.51-.365-.933-1.226-1.167l-1.137-.32c-1.983-.51-2.333-1.707-2.333-2.48 0-1.234.86-2.154 2.034-2.512.324-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .992 0v.174c0 .34.26.62.587.714.941.269 1.618.91 1.871 1.779.133.457-.273.847-.75.847-.474 0-.827-.424-1.134-.793l-.03-.036c-.23-.275-.591-.44-1.04-.44-.773 0-1.327.482-1.327 1.124 0 .262.073.772 1.05 1.035l1.064.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M28 16.832h5.772V14.91H30.21V7.168H28v9.664ZM37.372 14.91V13.06h3.52V11.08h-3.52V9.09h4.012V7.168h-6.222v9.664h6.349V14.91h-4.139ZM49.31 16.832h2.351l-3.575-9.664h-2.407l-3.59 9.664h2.365l.718-2.244h3.407l.732 2.244Zm-3.533-4.152 1.084-3.38 1.098 3.38h-2.182ZM58.785 9.09V7.168h-6.137v9.664h2.21V13.03h3.111v-1.908h-3.11V9.09h3.926ZM60.36 16.832h5.771V14.91H62.57V7.168h-2.21v9.664ZM67.522 16.832h2.21V7.168h-2.21v9.664ZM77.1 7.168v5.484l-3.097-5.484h-2.027v9.664h2.21v-5.554l3.181 5.554h1.943V7.168H77.1ZM89.427 16.832 85.67 11.95l3.223-4.783H86.26l-2.52 3.9v-3.9h-2.21v9.664h2.21v-3.787l2.858 3.787h2.83ZM97.185 7.168h-3.998v9.664h2.21V13.55h1.788c2.252 0 3.266-1.571 3.266-3.184 0-1.599-1.014-3.198-3.266-3.198Zm-.098 4.46h-1.69V9.09h1.704c.816 0 1.126.659 1.126 1.276s-.31 1.262-1.14 1.262ZM107.391 16.832h2.351l-3.576-9.664h-2.407l-3.589 9.664h2.364l.718-2.244h3.407l.732 2.244Zm-3.533-4.152 1.084-3.38 1.098 3.38h-2.182ZM115.68 7.168l-2.281 3.563-2.238-3.563h-2.632l3.772 5.302v4.362h2.225v-4.32l3.786-5.344h-2.632ZM130.237 16.832l-1.182-9.664h-1.887l-2.787 6.045-2.829-6.045h-1.844l-1.197 9.664h2.267l.647-5.484 2.112 4.376h1.689l2.111-4.39.634 5.498h2.266ZM134.163 14.91V13.06h3.52V11.08h-3.52V9.09h4.012V7.168h-6.222v9.664h6.349V14.91h-4.139ZM145.229 7.168v5.484l-3.097-5.484h-2.027v9.664h2.21v-5.554l3.182 5.554h1.942V7.168h-2.21ZM156.163 7.168h-7.334V9.09h2.562v7.742h2.21V9.09h2.562V7.168ZM160.425 17c1.773 0 3.575-.926 3.575-3.001 0-1.754-1.408-2.469-2.787-2.89l-1.014-.308c-.901-.253-.957-.687-.957-.884 0-.533.451-.996 1.14-.996.76 0 1.112.491 1.112 1.066h2.21c0-1.879-1.421-2.987-3.279-2.987-1.929 0-3.421 1.22-3.421 2.96 0 .911.408 2.215 2.548 2.79l1.154.351c.859.28 1.07.631 1.07 1.01 0 .63-.549.996-1.267.996-.76 0-1.38-.477-1.38-1.094h-2.21c0 1.78 1.436 2.987 3.506 2.987Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n fill: \"#1E164B\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 60 24\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n d: \"M6.373 2a4 4 0 0 0-4 4v12a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4V6a4 4 0 0 0-4-4h-12Zm6.827 8.927c1.473.394 2.567 1.196 2.567 2.61 0 1.344-.937 2.313-2.244 2.63-.342.083-.615.368-.615.72v.18a.496.496 0 0 1-.991 0v-.215c0-.354-.264-.646-.602-.75-.972-.302-1.657-.964-1.933-1.782-.154-.457.254-.855.736-.855.486 0 .856.437 1.162.815.265.328.708.54 1.293.54.919 0 1.429-.539 1.429-1.195 0-.51-.365-.933-1.225-1.167l-1.137-.32c-1.984-.51-2.334-1.707-2.334-2.48 0-1.234.86-2.154 2.035-2.512.323-.1.576-.379.576-.717v-.183a.496.496 0 1 1 .991 0v.174c0 .34.26.62.588.714.941.269 1.618.91 1.87 1.779.134.457-.272.847-.749.847-.474 0-.828-.424-1.134-.793l-.03-.036c-.23-.275-.592-.44-1.04-.44-.774 0-1.328.482-1.328 1.124 0 .262.073.772 1.05 1.035l1.065.277Z\"\n }, null, -1),\n _createElementVNode(\"path\", { d: \"M59.12 7.177v1.722h-2.66v7.924h-1.947V8.899h-2.66V7.177h7.267ZM47.718 16.991c-2.058 0-3.472-1.274-3.472-2.968h1.946c.014.686.686 1.26 1.582 1.26.868 0 1.442-.476 1.442-1.162 0-.532-.392-.91-1.218-1.162l-1.176-.336c-2.114-.56-2.492-1.834-2.492-2.702 0-1.722 1.484-2.912 3.332-2.912 1.82 0 3.22 1.106 3.22 2.94h-1.946c0-.686-.476-1.218-1.316-1.218-.756 0-1.33.504-1.33 1.148 0 .238.07.742 1.078 1.022l1.078.308c1.456.406 2.73 1.176 2.73 2.814 0 1.918-1.638 2.968-3.458 2.968ZM39.582 16.991c-1.862 0-3.514-1.372-3.514-3.43 0-2.072 1.652-3.444 3.514-3.444 1.862 0 3.514 1.372 3.514 3.444 0 2.058-1.652 3.43-3.514 3.43Zm0-1.708c.91 0 1.652-.714 1.652-1.722 0-1.022-.742-1.736-1.652-1.736-.91 0-1.652.714-1.652 1.736 0 1.008.742 1.722 1.652 1.722ZM32.307 7.177c2.184 0 3.15 1.568 3.15 3.15 0 1.582-.966 3.122-3.15 3.122h-1.988v3.374h-1.946V7.177h3.934Zm-.098 4.564c.938 0 1.288-.728 1.288-1.414 0-.7-.35-1.428-1.26-1.428h-1.918v2.842h1.89Z\" }, null, -1)\n ])))\n}\nexport default { render: render }","<script lang=\"ts\" setup>\n import logger from '@leaflink/snitch';\n import { computed } from 'vue';\n\n import DirectPayLockup from './../../../assets/logos/direct-pay-lockup.svg';\n import FlexPayLockup from './../../../assets/logos/flex-pay-lockup.svg';\n import LeafLinkBrandmark from './../../../assets/logos/leaflink-brandmark.svg';\n import LeafLinkLockup from './../../../assets/logos/leaflink-lockup.svg';\n import MarketplaceBrandmark from './../../../assets/logos/marketplace-brandmark.svg';\n import PaymentsBrandmark from './../../../assets/logos/payments-brandmark.svg';\n import PaymentsLockup from './../../../assets/logos/payments-lockup.svg';\n import PostLockup from './../../../assets/logos/post-lockup.svg';\n\n export interface LogoProps {\n /**\n * brand to use for the logo. This, along with variant, will determine which logo to display.\n */\n brand?: 'leaflink' | 'payments' | 'marketplace' | 'flex-pay' | 'direct-pay' | 'post';\n\n /**\n * What color the logo should be.\n */\n color?: 'purple' | 'white';\n\n /**\n * Which variant of the logo to display.\n */\n variant?: 'lockup' | 'brandmark';\n\n /**\n * Width of the logo.\n */\n width?: string | number;\n\n /**\n * Height of the logo.\n */\n height?: string | number;\n }\n\n const props = withDefaults(defineProps<LogoProps>(), {\n brand: 'leaflink',\n color: 'purple',\n variant: 'lockup',\n width: undefined,\n height: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Fires when an invalid brand and variant combination is provided.\n */\n (e: 'error', msg: string): void;\n }>();\n\n const DEFAULT_LOGO_ATTRS = {\n LeafLinkLockup: {\n is: LeafLinkLockup,\n width: 139,\n height: 24,\n },\n PaymentsLockup: {\n is: PaymentsLockup,\n width: 164,\n height: 24,\n },\n LeafLinkBrandmark: {\n is: LeafLinkBrandmark,\n width: 29,\n height: 24,\n },\n MarketplaceBrandmark: {\n is: MarketplaceBrandmark,\n width: 24,\n height: 24,\n },\n PaymentsBrandmark: {\n is: PaymentsBrandmark,\n width: 24,\n height: 24,\n },\n DirectPayLockup: {\n is: DirectPayLockup,\n width: 107,\n height: 24,\n },\n FlexPayLockup: {\n is: FlexPayLockup,\n width: 89,\n height: 24,\n },\n PostLockup: {\n is: PostLockup,\n width: 60,\n height: 24,\n },\n };\n\n // Determine which logo to display based on brand and variant & set default sizes for convenience unless explicitly set.\n // Note: Setting default width or height on the SVG element itself will not allow the SVG to scale up above those values.\n const computedLogoAttrs = computed<{ is: string; width: number; height: number }>(() => {\n let attrs;\n\n if (props.brand === 'leaflink' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['LeafLinkLockup'];\n }\n\n if (props.brand === 'leaflink' && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['LeafLinkBrandmark'];\n }\n\n if (props.brand === 'marketplace' && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['MarketplaceBrandmark'];\n }\n\n if (props.brand === 'payments' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['PaymentsLockup'];\n }\n\n if (props.brand === 'direct-pay' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['DirectPayLockup'];\n }\n\n if (props.brand === 'flex-pay' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['FlexPayLockup'];\n }\n\n if (props.brand === 'post' && props.variant === 'lockup') {\n attrs = DEFAULT_LOGO_ATTRS['PostLockup'];\n }\n\n if (['payments', 'direct-pay', 'flex-pay', 'post'].includes(props.brand) && props.variant === 'brandmark') {\n attrs = DEFAULT_LOGO_ATTRS['PaymentsBrandmark'];\n }\n\n if (!attrs) {\n const msg = `Invalid brand and variant combination. There's no ${props.brand.replace(\n '-',\n ' ',\n )} ${props.variant.replace('-', ' ')} logo.`;\n logger.error(msg);\n emit('error', msg);\n\n return;\n }\n\n // If width or height is explicitly set, override the default values but do it individually.\n // SVG's will always maintain their aspect ratio, so setting one will scale the other accordingly, so if a user\n // sends in even ONE of these props, we want to make sure we delete both defaults so the SVG can scale in the\n // expected way.\n if (props.width || props.height) {\n delete attrs.width;\n delete attrs.height;\n if (props.width) {\n attrs.width = props.width;\n }\n if (props.height) {\n attrs.height = props.height;\n }\n }\n\n return attrs;\n });\n</script>\n\n<template>\n <component\n :is=\"computedLogoAttrs.is\"\n v-if=\"computedLogoAttrs\"\n class=\"stash-logo\"\n :class=\"[\n `stash-logo--${props.brand}`,\n `stash-logo--${props.variant}`,\n `stash-logo--${props.color}`,\n {\n 'tw-text-purple-500': props.color === 'purple',\n 'tw-text-white': props.color === 'white',\n },\n ]\"\n data-test=\"stash-logo\"\n fill=\"currentColor\"\n v-bind=\"computedLogoAttrs\"\n />\n</template>\n"],"names":["_hoisted_1","render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","DirectPayLockup","FlexPayLockup","LeafLinkBrandmark","_createStaticVNode","LeafLinkLockup","MarketplaceBrandmark","PaymentsBrandmark","PaymentsLockup","PostLockup","props","__props","emit","__emit","DEFAULT_LOGO_ATTRS","computedLogoAttrs","computed","attrs","msg","logger"],"mappings":"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"}
package/dist/Menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../src/components/Menu/Menu.vue"],"sourcesContent":["<script setup lang=\"ts\"></script>\n\n<template>\n <ul data-test=\"stash-menu\" class=\"stash-menu tw-m-0 tw-list-none tw-rounded tw-bg-white tw-p-1.5\" role=\"menu\">\n <slot></slot>\n </ul>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock"],"mappings":";;cAGMA,IAAsB;AAAA,EAAC,aAAsE;AAAA,EAAC,OAAW;AAAA;;AAA7G,SAAAC,EAAAC,GAAAC,GAAA;SACeC,EAAA,GAAAC,EAAA,MAAAL,GAAA;AAAA;;;;"}
1
+ {"version":3,"file":"Menu.js","sources":["../src/components/Menu/Menu.vue"],"sourcesContent":["<script setup lang=\"ts\"></script>\n\n<template>\n <ul data-test=\"stash-menu\" class=\"stash-menu tw-m-0 tw-list-none tw-rounded tw-bg-white tw-p-1.5\" role=\"menu\">\n <slot></slot>\n </ul>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock"],"mappings":";;cAGMA,IAAU;AAAA,EAAa,aAAM;AAAA,EAAiE,OAAK;AAAA;;AAAvG,SAAAC,EAAAC,GAAAC,GAAA;SACEC,EAAa,GAAAC,EAAA,MAAAL,GAAA;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../src/components/MenuItem/MenuItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n const classes = useCssModule();\n</script>\n\n<template>\n <li\n data-test=\"stash-menu-item\"\n role=\"menuitem\"\n class=\"stash-menu-item tw-mb-1.5 first:tw-mt-0 last:tw-mb-0\"\n :class=\"classes.menuitem\"\n >\n <slot></slot>\n </li>\n</template>\n\n<style module>\n /* apply styling that allows the li or a child <a> or <button> tag to be displayed the same */\n .menuitem:not(:has(> a, > button)),\n .menuitem > :where(a, button) {\n @apply tw-w-full\n tw-rounded\n tw-text-ice-700\n hover:tw-bg-ice-200\n hover:tw-text-ice-700\n tw-no-underline\n hover:tw-no-underline\n disabled:tw-text-ice-500\n disabled:tw-cursor-default\n tw-transition-all\n tw-duration-fast\n tw-ease-swing\n tw-cursor-pointer\n tw-text-left\n tw-py-[10px]\n tw-px-1.5;\n }\n\n .menuitem > :where(a, button) {\n display: block;\n border: 0;\n }\n</style>\n"],"names":["classes","useCssModule"],"mappings":";;;;;AAGE,UAAMA,IAAUC,EAAa;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../src/components/MenuItem/MenuItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n const classes = useCssModule();\n</script>\n\n<template>\n <li\n data-test=\"stash-menu-item\"\n role=\"menuitem\"\n class=\"stash-menu-item tw-mb-1.5 first:tw-mt-0 last:tw-mb-0\"\n :class=\"classes.menuitem\"\n >\n <slot></slot>\n </li>\n</template>\n\n<style module>\n /* apply styling that allows the li or a child <a> or <button> tag to be displayed the same */\n .menuitem:not(:has(> a, > button)),\n .menuitem > :where(a, button) {\n @apply tw-w-full\n tw-rounded\n tw-text-ice-700\n hover:tw-bg-ice-200\n hover:tw-text-ice-700\n tw-no-underline\n hover:tw-no-underline\n disabled:tw-text-ice-500\n disabled:tw-cursor-default\n tw-transition-all\n tw-duration-fast\n tw-ease-swing\n tw-cursor-pointer\n tw-text-left\n tw-py-[10px]\n tw-px-1.5;\n }\n\n .menuitem > :where(a, button) {\n display: block;\n border: 0;\n }\n</style>\n"],"names":["classes","useCssModule"],"mappings":";;;;;AAGE,UAAMA,IAAUC,EAAA;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenusPlugin-Bk6UW6o9.js","sources":["../src/plugins/MenusPlugin.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\nexport interface MenusPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MENUS_PLUGIN_NODE_ID = 'stash-menus-mount-node';\n\nexport default <Plugin>{\n install(_app: App, options?: MenusPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MENUS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n // If the mount node already exists, do nothing\n if (mountNode) {\n return;\n }\n\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_MENUS_PLUGIN_NODE_ID;\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n document.body.appendChild(mountNode);\n },\n};\n"],"names":["DEFAULT_MENUS_PLUGIN_NODE_ID","MenusPlugin","_app","options","mountNodeId","mountNode"],"mappings":"AAOO,MAAMA,IAA+B,0BAErBC,IAAA;AAAA,EACrB,QAAQC,GAAWC,GAA8B;AACzC,UAAAC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AACxC,QAAAK,IAAY,SAAS,eAAeD,CAAW;AAGnD,IAAIC,MAIQA,IAAA,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GAErBG,KAAA,QAAAA,EAAS,kBACDE,EAAA,UAAU,IAAIF,EAAQ,cAAc,GAGvC,SAAA,KAAK,YAAYE,CAAS;AAAA,EAAA;AAEvC;"}
1
+ {"version":3,"file":"MenusPlugin-Bk6UW6o9.js","sources":["../src/plugins/MenusPlugin.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\nexport interface MenusPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MENUS_PLUGIN_NODE_ID = 'stash-menus-mount-node';\n\nexport default <Plugin>{\n install(_app: App, options?: MenusPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MENUS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n // If the mount node already exists, do nothing\n if (mountNode) {\n return;\n }\n\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_MENUS_PLUGIN_NODE_ID;\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n document.body.appendChild(mountNode);\n },\n};\n"],"names":["DEFAULT_MENUS_PLUGIN_NODE_ID","MenusPlugin","_app","options","mountNodeId","mountNode"],"mappings":"AAOO,MAAMA,IAA+B,0BAE5CC,IAAuB;AAAA,EACrB,QAAQC,GAAWC,GAA8B;AAC/C,UAAMC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AAC5C,QAAIK,IAAY,SAAS,eAAeD,CAAW;AAGnD,IAAIC,MAIJA,IAAY,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GAErBG,KAAA,QAAAA,EAAS,kBACXE,EAAU,UAAU,IAAIF,EAAQ,cAAc,GAGhD,SAAS,KAAK,YAAYE,CAAS;AAAA,EACrC;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Metric.js","sources":["../src/components/Metric/Metric.types.ts","../src/components/Metric/Metric.vue"],"sourcesContent":["export enum MetricSizes {\n Small = 'small',\n Standard = 'standard',\n}\n\nexport type MetricSize = `${MetricSizes}`;\n\nexport enum MetricVariants {\n Accent = 'accent',\n Naked = 'naked',\n}\n\nexport type MetricVariant = `${MetricVariants}`;\n","<script lang=\"ts\">\n export * from './Metric.types';\n</script>\n\n<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ComputedRef, useSlots } from 'vue';\n\n import { StashCommonColor } from '../../../types/colors';\n import { MetricSize, MetricSizes, MetricVariant, MetricVariants } from './Metric.types';\n\n export interface MetricProps {\n /**\n * The primary text that will show in the metric.\n */\n value: number | string;\n\n /**\n * The label for the metric. Appears above the value.\n */\n label: string;\n\n /**\n * The variant of the metric. Defaults to `naked`.\n */\n variant?: MetricVariant;\n\n /**\n * The accent color for the metric. Defaults to `teal`. Currently only used when the variant = `accent`.\n */\n accentColor?: StashCommonColor;\n\n /**\n * Controls the size of the metric via text size adjustments.\n */\n size?: MetricSize;\n }\n\n const props = withDefaults(defineProps<MetricProps>(), {\n size: 'standard',\n variant: 'naked',\n accentColor: 'teal-500',\n });\n\n const slots = useSlots();\n\n const fieldId = computed(() => uniqueId('metric-'));\n\n const computedValue: ComputedRef<string> = computed(() => String(props.value));\n</script>\n\n<template>\n <div\n class=\"stash-metric\"\n data-test=\"stash-metric\"\n :class=\"[\n `stash-metric--${props.size}`,\n {\n 'stash-metric--naked': props.variant === MetricVariants.Naked,\n [`stash-metric--accent tw-border-${accentColor} tw-rounded tw-border-l-12 tw-bg-white tw-p-3 tw-shadow`]:\n props.variant === MetricVariants.Accent,\n },\n ]\"\n >\n <div\n :id=\"fieldId\"\n class=\"stash-metric__label tw-mb-1 tw-text-ice-700\"\n data-test=\"stash-metric|label\"\n :class=\"[\n {\n 'tw-text-xs': props.size === MetricSizes.Small,\n 'tw-text-sm': props.size === MetricSizes.Standard,\n },\n ]\"\n >\n {{ props.label }}\n </div>\n\n <div\n :aria-labelledby=\"fieldId\"\n class=\"stash-metric__value tw-font-medium tw-text-ice-900\"\n data-test=\"stash-metric|value\"\n :class=\"{\n 'tw-text-base': props.size === MetricSizes.Small,\n 'tw-text-2xl': props.size === MetricSizes.Standard,\n }\"\n >\n {{ computedValue }}\n </div>\n\n <div\n v-if=\"slots.secondary\"\n class=\"stash-metric__secondary tw-mt-1 tw-text-xs tw-text-ice-700\"\n data-test=\"stash-metric|secondary\"\n >\n <!-- @slot Supplementary information like a date, status, hint text, or secondary label. -->\n <slot name=\"secondary\"></slot>\n </div>\n </div>\n</template>\n"],"names":["MetricSizes","MetricVariants","props","__props","slots","useSlots","fieldId","computed","uniqueId","computedValue"],"mappings":";;AAAY,IAAAA,sBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,WAAW,YAFDA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,QAAQ,SAFEA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;AC+BV,UAAMC,IAAQC,GAMRC,IAAQC,EAAS,GAEjBC,IAAUC,EAAS,MAAMC,EAAS,SAAS,CAAC,GAE5CC,IAAqCF,EAAS,MAAM,OAAOL,EAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Metric.js","sources":["../src/components/Metric/Metric.types.ts","../src/components/Metric/Metric.vue"],"sourcesContent":["export enum MetricSizes {\n Small = 'small',\n Standard = 'standard',\n}\n\nexport type MetricSize = `${MetricSizes}`;\n\nexport enum MetricVariants {\n Accent = 'accent',\n Naked = 'naked',\n}\n\nexport type MetricVariant = `${MetricVariants}`;\n","<script lang=\"ts\">\n export * from './Metric.types';\n</script>\n\n<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ComputedRef, useSlots } from 'vue';\n\n import { StashCommonColor } from '../../../types/colors';\n import { MetricSize, MetricSizes, MetricVariant, MetricVariants } from './Metric.types';\n\n export interface MetricProps {\n /**\n * The primary text that will show in the metric.\n */\n value: number | string;\n\n /**\n * The label for the metric. Appears above the value.\n */\n label: string;\n\n /**\n * The variant of the metric. Defaults to `naked`.\n */\n variant?: MetricVariant;\n\n /**\n * The accent color for the metric. Defaults to `teal`. Currently only used when the variant = `accent`.\n */\n accentColor?: StashCommonColor;\n\n /**\n * Controls the size of the metric via text size adjustments.\n */\n size?: MetricSize;\n }\n\n const props = withDefaults(defineProps<MetricProps>(), {\n size: 'standard',\n variant: 'naked',\n accentColor: 'teal-500',\n });\n\n const slots = useSlots();\n\n const fieldId = computed(() => uniqueId('metric-'));\n\n const computedValue: ComputedRef<string> = computed(() => String(props.value));\n</script>\n\n<template>\n <div\n class=\"stash-metric\"\n data-test=\"stash-metric\"\n :class=\"[\n `stash-metric--${props.size}`,\n {\n 'stash-metric--naked': props.variant === MetricVariants.Naked,\n [`stash-metric--accent tw-border-${accentColor} tw-rounded tw-border-l-12 tw-bg-white tw-p-3 tw-shadow`]:\n props.variant === MetricVariants.Accent,\n },\n ]\"\n >\n <div\n :id=\"fieldId\"\n class=\"stash-metric__label tw-mb-1 tw-text-ice-700\"\n data-test=\"stash-metric|label\"\n :class=\"[\n {\n 'tw-text-xs': props.size === MetricSizes.Small,\n 'tw-text-sm': props.size === MetricSizes.Standard,\n },\n ]\"\n >\n {{ props.label }}\n </div>\n\n <div\n :aria-labelledby=\"fieldId\"\n class=\"stash-metric__value tw-font-medium tw-text-ice-900\"\n data-test=\"stash-metric|value\"\n :class=\"{\n 'tw-text-base': props.size === MetricSizes.Small,\n 'tw-text-2xl': props.size === MetricSizes.Standard,\n }\"\n >\n {{ computedValue }}\n </div>\n\n <div\n v-if=\"slots.secondary\"\n class=\"stash-metric__secondary tw-mt-1 tw-text-xs tw-text-ice-700\"\n data-test=\"stash-metric|secondary\"\n >\n <!-- @slot Supplementary information like a date, status, hint text, or secondary label. -->\n <slot name=\"secondary\"></slot>\n </div>\n </div>\n</template>\n"],"names":["MetricSizes","MetricVariants","props","__props","slots","useSlots","fieldId","computed","uniqueId","computedValue"],"mappings":";;AAAO,IAAKA,sBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,WAAW,YAFDA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,QAAQ,SAFEA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;AC+BV,UAAMC,IAAQC,GAMRC,IAAQC,EAAA,GAERC,IAAUC,EAAS,MAAMC,EAAS,SAAS,CAAC,GAE5CC,IAAqCF,EAAS,MAAM,OAAOL,EAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/Modal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../src/components/Modal/Modal.types.ts","../src/components/Modal/Modal.vue"],"sourcesContent":["export enum ModalSize {\n Narrow = 'narrow',\n Medium = 'medium',\n Wide = 'wide',\n}\n\nexport type ModalSizes = `${ModalSize}`;\n\nexport enum ModalPosition {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\n\nexport type ModalPositions = `${ModalPosition}`;\n","<script lang=\"ts\">\n import { ModalPositions, ModalSizes } from './Modal.types';\n\n export * from './Modal.types';\n\n export interface ModalProps {\n /**\n * Hides the \"close\" button\n */\n hideClose?: boolean;\n\n /**\n * Opens the modal when truthy; hides the modal when falsy.\n * @deprecated Use `isOpen` instead\n */\n open?: boolean;\n\n /**\n * Opens the modal when truthy; hides the modal when falsy.\n */\n isOpen?: boolean;\n\n /**\n * Use v-model:is-open or :is-open instead of :model-value and v-model.\n * @deprecated\n */\n modelValue?: boolean;\n\n /**\n * Sets a preset max-width on the modal.\n * Options: default (648px), narrow (360px), wide (960px)\n */\n size?: ModalSizes;\n\n /**\n * Should the modal be scrollable within the content area. This prop is treated as `true` when the `position` prop is set to \"left\" or \"right\".\n */\n scrollable?: boolean;\n\n /**\n * Gives the modal body have a light gray background\n */\n contrast?: boolean;\n\n /**\n * Text to display in the modal header\n */\n title?: string;\n\n /**\n * Disables the default padding in the modal body.\n */\n disableBodyPadding?: boolean;\n\n /**\n * The position on the screen to display the modal.\n */\n position?: ModalPositions;\n\n /**\n * Hide the header. Typically used with the featuredContent slot to display a graphic and create a \"promo\" modal.\n */\n hideHeader?: boolean;\n\n /**\n * Add classes to the close button. This can be used with the hideHeader prop and featuredContent slot to\n * accommodate images with different color backgrounds.\n */\n closeButtonColorClass?: string;\n\n /**\n * Prevents the modal from being dismissed by clicking the backdrop or pressing the escape key.\n * Example: There are in-flight api requests and you do not want the modal to close until they are done.\n */\n preventDismiss?: boolean;\n }\n</script>\n\n<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onBeforeUnmount, ref, useSlots, watch } from 'vue';\n\n import { FOCUS_ELEMENTS_SELECTOR } from '../../constants';\n import { t } from '../../locale';\n import Backdrop from '../Backdrop/Backdrop.vue';\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({ name: 'll-modal' });\n\n const props = withDefaults(defineProps<ModalProps>(), {\n hideClose: false,\n open: false,\n isOpen: false,\n modelValue: false,\n size: 'medium',\n scrollable: false,\n contrast: false,\n title: '',\n position: 'center',\n hideHeader: false,\n closeButtonColorClass: 'tw-text-white/50',\n preventDismiss: false,\n });\n\n const emit = defineEmits<{\n /**\n * @deprecated Use the `update:is-open` event instead\n */\n (e: 'update:open', isOpen?: boolean): void;\n (e: 'update:is-open', isOpen?: boolean): void;\n (e: 'dismiss'): void;\n }>();\n\n const slots = useSlots();\n\n const rootRef = ref<HTMLElement>();\n const lastExternalFocusedElement = ref<HTMLElement>();\n const focusElements = ref<HTMLElement[]>([]);\n const firstFocusElement = ref<HTMLElement>();\n const lastFocusElement = ref<HTMLElement>();\n const initialPageScrollingElementStyle = ref({ height: '', overflow: '' });\n const headerId = uniqueId('modal-header-');\n const hasFooterContent = computed(() => !!slots.actions || !!slots.footer);\n const isModalOpen = computed(() => props.open || props.isOpen);\n const isDrawer = computed(() => props.position === 'left' || props.position === 'right');\n\n function getPageScrollingElement() {\n return (document.scrollingElement || document.body) as HTMLElement;\n }\n\n watch(\n isModalOpen,\n () => {\n toggleHelpWidgetLauncher(isModalOpen.value ? 'hide' : 'show');\n\n if (isModalOpen.value) {\n Object.assign(initialPageScrollingElementStyle.value, {\n height: getPageScrollingElement().style.height,\n overflow: getPageScrollingElement().style.overflow,\n });\n }\n\n Object.assign(getPageScrollingElement().style, {\n overflow: isModalOpen.value ? 'hidden' : initialPageScrollingElementStyle.value.overflow, // Prevents page from scrolling when modal is open\n height: isModalOpen.value ? '100%' : initialPageScrollingElementStyle.value.height, // Ensures the backdrop covers the entire page when modal is open; see https://github.com/LeafLink/stash/pull/713#issuecomment-1184602535\n });\n },\n { immediate: true },\n );\n\n onBeforeUnmount(() => {\n toggleHelpWidgetLauncher('show');\n\n // In cases where the watchEffect for isModalOpen isn't triggered while closing/nagivating away from modal, this ensures scrolling returns to normal\n Object.assign(getPageScrollingElement().style, {\n overflow: initialPageScrollingElementStyle.value.overflow,\n height: initialPageScrollingElementStyle.value.height,\n });\n\n // Clear focus trap tab listener\n document.removeEventListener('keydown', handleTab);\n lastExternalFocusedElement.value?.focus();\n });\n\n function dismiss() {\n if (props.preventDismiss) {\n return;\n }\n emit('update:open', false);\n emit('update:is-open', false);\n emit('dismiss');\n }\n\n // This watcher ensures the Tab key cycles through focusable elements within the modal.\n watch(rootRef, () => {\n if (!rootRef.value) {\n return;\n }\n\n lastExternalFocusedElement.value = document.activeElement as HTMLElement;\n rootRef.value.focus();\n\n focusElements.value = Array.from(rootRef.value.querySelectorAll<HTMLElement>(FOCUS_ELEMENTS_SELECTOR));\n firstFocusElement.value = focusElements.value[0];\n lastFocusElement.value = focusElements.value[focusElements.value.length - 1];\n document.addEventListener('keydown', handleTab);\n });\n\n function handleTab(e) {\n if (e.key === 'Tab') {\n if (e.shiftKey && document.activeElement === firstFocusElement.value) {\n lastFocusElement.value?.focus();\n e.preventDefault();\n } else if (document.activeElement === lastFocusElement.value) {\n firstFocusElement.value?.focus();\n e.preventDefault();\n }\n }\n }\n\n /**\n * The customer support \"help widget launcher\" covers the action buttons in the Modal when the Modal uses a position value of \"right\" (for drawers).\n */\n function toggleHelpWidgetLauncher(nextState: 'show' | 'hide') {\n const launcherElement = document.getElementById('launcher');\n\n if (!launcherElement || !launcherElement.parentElement) {\n return;\n }\n\n launcherElement.parentElement.style.display = nextState === 'show' ? 'block' : 'none';\n }\n</script>\n\n<template>\n <div\n v-if=\"isModalOpen\"\n ref=\"rootRef\"\n class=\"stash-modal tw-fixed tw-inset-0\"\n :class=\"{\n 'tw-invisible tw-z-behind': !isModalOpen,\n 'tw-visible tw-z-modal': isModalOpen,\n 'lg:tw-flex lg:tw-flex-col lg:tw-items-center lg:tw-justify-center': props.position === 'center',\n 'tw-overflow-y-auto': !props.scrollable && !isDrawer,\n 'tw-overflow-y-hidden': isDrawer,\n }\"\n data-test=\"ll-modal\"\n tabindex=\"0\"\n @keydown.esc=\"dismiss\"\n >\n <Backdrop class=\"stash-modal__backdrop\" @click.stop=\"dismiss\" />\n <div\n aria-modal=\"true\"\n role=\"dialog\"\n :aria-labelledby=\"headerId\"\n class=\"stash-modal__dialog tw-relative tw-flex tw-h-screen tw-w-full tw-flex-col lg:tw-shadow-3xl\"\n :class=\"[\n `stash-modal__dialog--size-${props.size}`,\n `stash-modal__dialog--position-${props.position}`,\n {\n 'stash-modal__dialog--is-open': isModalOpen,\n 'stash-modal__dialog--is-drawer': isDrawer,\n 'stash-modal__dialog--is-contrast': props.contrast,\n 'stash-modal__dialog--is-scrollable': props.scrollable,\n 'lg:tw-w-[360px]': props.size === 'narrow',\n 'lg:tw-w-[648px]': props.size === 'medium',\n 'lg:tw-w-[960px]': props.size === 'wide',\n 'lg:tw-my-0 lg:tw-h-auto lg:tw-max-h-[90vh]': props.position === 'center',\n // tw-absolute causing this to break when items in bottom of container get focus\n 'lg:tw-fixed lg:tw-h-screen': isDrawer,\n 'lg:tw-left-0': props.position === 'left',\n 'lg:tw-right-0': props.position === 'right',\n },\n ]\"\n @click.stop\n >\n <header\n v-if=\"!props.hideHeader\"\n data-test=\"stash-modal__header\"\n class=\"stash-modal__header tw-grid tw-h-12 tw-place-items-center tw-bg-purple-500\"\n :class=\"{ 'lg:tw-rounded-t': !isDrawer }\"\n >\n <div class=\"tw-flex tw-place-items-center\">\n <!-- @slot Adds an action to the left side of the header bar. An example usage is a modal with multiple pages and a back button can be inserted here -->\n <slot name=\"headerAction\"></slot>\n </div>\n\n <h3 v-if=\"props.title\" :id=\"headerId\" class=\"tw-m-0 tw-flex-1 tw-leading-6 tw-text-white\">\n {{ props.title }}\n </h3>\n\n <Button\n v-if=\"!props.hideClose\"\n icon\n data-test=\"ll-modal-close\"\n :title=\"t('ll.closeModal')\"\n type=\"button\"\n @click=\"dismiss\"\n >\n <Icon class=\"tw-text-white\" name=\"close\" />\n </Button>\n </header>\n\n <Button\n v-if=\"!props.hideClose && props.hideHeader\"\n class=\"tw-absolute tw-right-0 tw-top-0 tw-z-10\"\n icon\n data-test=\"ll-modal-close\"\n type=\"button\"\n :title=\"t('ll.closeModal')\"\n @click=\"dismiss\"\n >\n <Icon class=\"tw-drop-shadow-md\" name=\"close\" :class=\"[props.closeButtonColorClass]\" />\n </Button>\n\n <div\n v-if=\"!!slots['featured-content']\"\n class=\"stash-modal__featured-content tw-relative\"\n :class=\"{\n 'tw-rounded-t': props.hideHeader,\n }\"\n >\n <slot name=\"featured-content\"></slot>\n </div>\n\n <div\n class=\"stash-modal__body tw-flex-1 tw-overflow-y-auto\"\n :class=\"[\n {\n 'tw-p-3 lg:tw-p-6': !props.disableBodyPadding,\n 'lg:tw-overflow-y-visible': !props.scrollable && !isDrawer,\n 'lg:tw-rounded-b': !hasFooterContent && !isDrawer,\n 'tw-bg-white': !props.contrast,\n 'tw-bg-ice-200': props.contrast,\n },\n ]\"\n data-test=\"stash-modal__body\"\n >\n <slot></slot>\n </div>\n\n <footer\n v-if=\"hasFooterContent\"\n class=\"stash-modal__footer tw-border-t tw-border-ice-500 tw-bg-ice-100 tw-p-3 lg:tw-p-6\"\n :class=\"{ 'lg:tw-rounded-b': !isDrawer }\"\n >\n <!-- @slot Overrides the whole footer section. Used for rendering custom footers with more than 2 actions. If defined, \"actions\" slot will get ignored. -->\n <slot name=\"footer\">\n <div class=\"stash-modal__footer__actions tw-flex tw-flex-col tw-justify-end lg:tw-flex-row\">\n <!-- @slot Modal footer actions, supports rendering up to 2 `<Button>` children -->\n <slot name=\"actions\"></slot>\n </div>\n </slot>\n </footer>\n </div>\n </div>\n</template>\n\n<style scoped>\n .stash-modal__header {\n grid-template-columns: 48px 1fr 48px;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(1) {\n order: 2;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(2) {\n margin-bottom: theme('spacing.3');\n order: 1;\n }\n\n @media screen('lg') {\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(1) {\n order: 1;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(2) {\n margin-bottom: 0;\n order: 2;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button + .stash-button) {\n margin-left: var(--grid-gutter);\n }\n }\n\n .stash-modal__featured-content > :deep(*) {\n border-radius: inherit;\n }\n</style>\n"],"names":["ModalSize","ModalPosition","props","__props","emit","__emit","slots","useSlots","rootRef","ref","lastExternalFocusedElement","focusElements","firstFocusElement","lastFocusElement","initialPageScrollingElementStyle","headerId","uniqueId","hasFooterContent","computed","isModalOpen","isDrawer","getPageScrollingElement","watch","toggleHelpWidgetLauncher","onBeforeUnmount","handleTab","_a","dismiss","FOCUS_ELEMENTS_SELECTOR","e","_b","nextState","launcherElement"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../src/components/Modal/Modal.types.ts","../src/components/Modal/Modal.vue"],"sourcesContent":["export enum ModalSize {\n Narrow = 'narrow',\n Medium = 'medium',\n Wide = 'wide',\n}\n\nexport type ModalSizes = `${ModalSize}`;\n\nexport enum ModalPosition {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\n\nexport type ModalPositions = `${ModalPosition}`;\n","<script lang=\"ts\">\n import { ModalPositions, ModalSizes } from './Modal.types';\n\n export * from './Modal.types';\n\n export interface ModalProps {\n /**\n * Hides the \"close\" button\n */\n hideClose?: boolean;\n\n /**\n * Opens the modal when truthy; hides the modal when falsy.\n * @deprecated Use `isOpen` instead\n */\n open?: boolean;\n\n /**\n * Opens the modal when truthy; hides the modal when falsy.\n */\n isOpen?: boolean;\n\n /**\n * Use v-model:is-open or :is-open instead of :model-value and v-model.\n * @deprecated\n */\n modelValue?: boolean;\n\n /**\n * Sets a preset max-width on the modal.\n * Options: default (648px), narrow (360px), wide (960px)\n */\n size?: ModalSizes;\n\n /**\n * Should the modal be scrollable within the content area. This prop is treated as `true` when the `position` prop is set to \"left\" or \"right\".\n */\n scrollable?: boolean;\n\n /**\n * Gives the modal body have a light gray background\n */\n contrast?: boolean;\n\n /**\n * Text to display in the modal header\n */\n title?: string;\n\n /**\n * Disables the default padding in the modal body.\n */\n disableBodyPadding?: boolean;\n\n /**\n * The position on the screen to display the modal.\n */\n position?: ModalPositions;\n\n /**\n * Hide the header. Typically used with the featuredContent slot to display a graphic and create a \"promo\" modal.\n */\n hideHeader?: boolean;\n\n /**\n * Add classes to the close button. This can be used with the hideHeader prop and featuredContent slot to\n * accommodate images with different color backgrounds.\n */\n closeButtonColorClass?: string;\n\n /**\n * Prevents the modal from being dismissed by clicking the backdrop or pressing the escape key.\n * Example: There are in-flight api requests and you do not want the modal to close until they are done.\n */\n preventDismiss?: boolean;\n }\n</script>\n\n<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onBeforeUnmount, ref, useSlots, watch } from 'vue';\n\n import { FOCUS_ELEMENTS_SELECTOR } from '../../constants';\n import { t } from '../../locale';\n import Backdrop from '../Backdrop/Backdrop.vue';\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({ name: 'll-modal' });\n\n const props = withDefaults(defineProps<ModalProps>(), {\n hideClose: false,\n open: false,\n isOpen: false,\n modelValue: false,\n size: 'medium',\n scrollable: false,\n contrast: false,\n title: '',\n position: 'center',\n hideHeader: false,\n closeButtonColorClass: 'tw-text-white/50',\n preventDismiss: false,\n });\n\n const emit = defineEmits<{\n /**\n * @deprecated Use the `update:is-open` event instead\n */\n (e: 'update:open', isOpen?: boolean): void;\n (e: 'update:is-open', isOpen?: boolean): void;\n (e: 'dismiss'): void;\n }>();\n\n const slots = useSlots();\n\n const rootRef = ref<HTMLElement>();\n const lastExternalFocusedElement = ref<HTMLElement>();\n const focusElements = ref<HTMLElement[]>([]);\n const firstFocusElement = ref<HTMLElement>();\n const lastFocusElement = ref<HTMLElement>();\n const initialPageScrollingElementStyle = ref({ height: '', overflow: '' });\n const headerId = uniqueId('modal-header-');\n const hasFooterContent = computed(() => !!slots.actions || !!slots.footer);\n const isModalOpen = computed(() => props.open || props.isOpen);\n const isDrawer = computed(() => props.position === 'left' || props.position === 'right');\n\n function getPageScrollingElement() {\n return (document.scrollingElement || document.body) as HTMLElement;\n }\n\n watch(\n isModalOpen,\n () => {\n toggleHelpWidgetLauncher(isModalOpen.value ? 'hide' : 'show');\n\n if (isModalOpen.value) {\n Object.assign(initialPageScrollingElementStyle.value, {\n height: getPageScrollingElement().style.height,\n overflow: getPageScrollingElement().style.overflow,\n });\n }\n\n Object.assign(getPageScrollingElement().style, {\n overflow: isModalOpen.value ? 'hidden' : initialPageScrollingElementStyle.value.overflow, // Prevents page from scrolling when modal is open\n height: isModalOpen.value ? '100%' : initialPageScrollingElementStyle.value.height, // Ensures the backdrop covers the entire page when modal is open; see https://github.com/LeafLink/stash/pull/713#issuecomment-1184602535\n });\n },\n { immediate: true },\n );\n\n onBeforeUnmount(() => {\n toggleHelpWidgetLauncher('show');\n\n // In cases where the watchEffect for isModalOpen isn't triggered while closing/nagivating away from modal, this ensures scrolling returns to normal\n Object.assign(getPageScrollingElement().style, {\n overflow: initialPageScrollingElementStyle.value.overflow,\n height: initialPageScrollingElementStyle.value.height,\n });\n\n // Clear focus trap tab listener\n document.removeEventListener('keydown', handleTab);\n lastExternalFocusedElement.value?.focus();\n });\n\n function dismiss() {\n if (props.preventDismiss) {\n return;\n }\n emit('update:open', false);\n emit('update:is-open', false);\n emit('dismiss');\n }\n\n // This watcher ensures the Tab key cycles through focusable elements within the modal.\n watch(rootRef, () => {\n if (!rootRef.value) {\n return;\n }\n\n lastExternalFocusedElement.value = document.activeElement as HTMLElement;\n rootRef.value.focus();\n\n focusElements.value = Array.from(rootRef.value.querySelectorAll<HTMLElement>(FOCUS_ELEMENTS_SELECTOR));\n firstFocusElement.value = focusElements.value[0];\n lastFocusElement.value = focusElements.value[focusElements.value.length - 1];\n document.addEventListener('keydown', handleTab);\n });\n\n function handleTab(e) {\n if (e.key === 'Tab') {\n if (e.shiftKey && document.activeElement === firstFocusElement.value) {\n lastFocusElement.value?.focus();\n e.preventDefault();\n } else if (document.activeElement === lastFocusElement.value) {\n firstFocusElement.value?.focus();\n e.preventDefault();\n }\n }\n }\n\n /**\n * The customer support \"help widget launcher\" covers the action buttons in the Modal when the Modal uses a position value of \"right\" (for drawers).\n */\n function toggleHelpWidgetLauncher(nextState: 'show' | 'hide') {\n const launcherElement = document.getElementById('launcher');\n\n if (!launcherElement || !launcherElement.parentElement) {\n return;\n }\n\n launcherElement.parentElement.style.display = nextState === 'show' ? 'block' : 'none';\n }\n</script>\n\n<template>\n <div\n v-if=\"isModalOpen\"\n ref=\"rootRef\"\n class=\"stash-modal tw-fixed tw-inset-0\"\n :class=\"{\n 'tw-invisible tw-z-behind': !isModalOpen,\n 'tw-visible tw-z-modal': isModalOpen,\n 'lg:tw-flex lg:tw-flex-col lg:tw-items-center lg:tw-justify-center': props.position === 'center',\n 'tw-overflow-y-auto': !props.scrollable && !isDrawer,\n 'tw-overflow-y-hidden': isDrawer,\n }\"\n data-test=\"ll-modal\"\n tabindex=\"0\"\n @keydown.esc=\"dismiss\"\n >\n <Backdrop class=\"stash-modal__backdrop\" @click.stop=\"dismiss\" />\n <div\n aria-modal=\"true\"\n role=\"dialog\"\n :aria-labelledby=\"headerId\"\n class=\"stash-modal__dialog tw-relative tw-flex tw-h-screen tw-w-full tw-flex-col lg:tw-shadow-3xl\"\n :class=\"[\n `stash-modal__dialog--size-${props.size}`,\n `stash-modal__dialog--position-${props.position}`,\n {\n 'stash-modal__dialog--is-open': isModalOpen,\n 'stash-modal__dialog--is-drawer': isDrawer,\n 'stash-modal__dialog--is-contrast': props.contrast,\n 'stash-modal__dialog--is-scrollable': props.scrollable,\n 'lg:tw-w-[360px]': props.size === 'narrow',\n 'lg:tw-w-[648px]': props.size === 'medium',\n 'lg:tw-w-[960px]': props.size === 'wide',\n 'lg:tw-my-0 lg:tw-h-auto lg:tw-max-h-[90vh]': props.position === 'center',\n // tw-absolute causing this to break when items in bottom of container get focus\n 'lg:tw-fixed lg:tw-h-screen': isDrawer,\n 'lg:tw-left-0': props.position === 'left',\n 'lg:tw-right-0': props.position === 'right',\n },\n ]\"\n @click.stop\n >\n <header\n v-if=\"!props.hideHeader\"\n data-test=\"stash-modal__header\"\n class=\"stash-modal__header tw-grid tw-h-12 tw-place-items-center tw-bg-purple-500\"\n :class=\"{ 'lg:tw-rounded-t': !isDrawer }\"\n >\n <div class=\"tw-flex tw-place-items-center\">\n <!-- @slot Adds an action to the left side of the header bar. An example usage is a modal with multiple pages and a back button can be inserted here -->\n <slot name=\"headerAction\"></slot>\n </div>\n\n <h3 v-if=\"props.title\" :id=\"headerId\" class=\"tw-m-0 tw-flex-1 tw-leading-6 tw-text-white\">\n {{ props.title }}\n </h3>\n\n <Button\n v-if=\"!props.hideClose\"\n icon\n data-test=\"ll-modal-close\"\n :title=\"t('ll.closeModal')\"\n type=\"button\"\n @click=\"dismiss\"\n >\n <Icon class=\"tw-text-white\" name=\"close\" />\n </Button>\n </header>\n\n <Button\n v-if=\"!props.hideClose && props.hideHeader\"\n class=\"tw-absolute tw-right-0 tw-top-0 tw-z-10\"\n icon\n data-test=\"ll-modal-close\"\n type=\"button\"\n :title=\"t('ll.closeModal')\"\n @click=\"dismiss\"\n >\n <Icon class=\"tw-drop-shadow-md\" name=\"close\" :class=\"[props.closeButtonColorClass]\" />\n </Button>\n\n <div\n v-if=\"!!slots['featured-content']\"\n class=\"stash-modal__featured-content tw-relative\"\n :class=\"{\n 'tw-rounded-t': props.hideHeader,\n }\"\n >\n <slot name=\"featured-content\"></slot>\n </div>\n\n <div\n class=\"stash-modal__body tw-flex-1 tw-overflow-y-auto\"\n :class=\"[\n {\n 'tw-p-3 lg:tw-p-6': !props.disableBodyPadding,\n 'lg:tw-overflow-y-visible': !props.scrollable && !isDrawer,\n 'lg:tw-rounded-b': !hasFooterContent && !isDrawer,\n 'tw-bg-white': !props.contrast,\n 'tw-bg-ice-200': props.contrast,\n },\n ]\"\n data-test=\"stash-modal__body\"\n >\n <slot></slot>\n </div>\n\n <footer\n v-if=\"hasFooterContent\"\n class=\"stash-modal__footer tw-border-t tw-border-ice-500 tw-bg-ice-100 tw-p-3 lg:tw-p-6\"\n :class=\"{ 'lg:tw-rounded-b': !isDrawer }\"\n >\n <!-- @slot Overrides the whole footer section. Used for rendering custom footers with more than 2 actions. If defined, \"actions\" slot will get ignored. -->\n <slot name=\"footer\">\n <div class=\"stash-modal__footer__actions tw-flex tw-flex-col tw-justify-end lg:tw-flex-row\">\n <!-- @slot Modal footer actions, supports rendering up to 2 `<Button>` children -->\n <slot name=\"actions\"></slot>\n </div>\n </slot>\n </footer>\n </div>\n </div>\n</template>\n\n<style scoped>\n .stash-modal__header {\n grid-template-columns: 48px 1fr 48px;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(1) {\n order: 2;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(2) {\n margin-bottom: theme('spacing.3');\n order: 1;\n }\n\n @media screen('lg') {\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(1) {\n order: 1;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button):nth-of-type(2) {\n margin-bottom: 0;\n order: 2;\n }\n\n .stash-modal__footer__actions > :deep(.stash-button + .stash-button) {\n margin-left: var(--grid-gutter);\n }\n }\n\n .stash-modal__featured-content > :deep(*) {\n border-radius: inherit;\n }\n</style>\n"],"names":["ModalSize","ModalPosition","props","__props","emit","__emit","slots","useSlots","rootRef","ref","lastExternalFocusedElement","focusElements","firstFocusElement","lastFocusElement","initialPageScrollingElementStyle","headerId","uniqueId","hasFooterContent","computed","isModalOpen","isDrawer","getPageScrollingElement","watch","toggleHelpWidgetLauncher","onBeforeUnmount","handleTab","_a","dismiss","FOCUS_ELEMENTS_SELECTOR","e","_b","nextState","launcherElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modals.js","sources":["../src/components/Modals/Modals.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, DeepReadonly } from 'vue';\n\n import useModals, { type Modal } from '../../composables/useModals/useModals';\n\n const modals = useModals();\n\n const currentModal = computed(() => modals.current);\n\n // Stupid TS version issues. Todo: remove ` | any` when TS/vite/vue deps are updated.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getListeners(modal: DeepReadonly<Modal> | any) {\n if (modal.options?.disableDefaultListeners) {\n return {};\n }\n\n return {\n dismiss: () => modals.close({ index: 0 }),\n close: () => modals.close({ index: 0 }),\n cancel: () => modals.close({ index: 0 }),\n };\n }\n</script>\n\n<template>\n <Transition name=\"modals\" mode=\"out-in\">\n <component\n :is=\"currentModal.component\"\n v-if=\"currentModal\"\n v-bind=\"currentModal.attributes\"\n :is-open=\"true\"\n v-on=\"getListeners(currentModal)\"\n >\n <template v-for=\"(value, name) in currentModal.slots\" :key=\"name\" #[name]>\n <!-- eslint-disable-next-line vue/no-v-html -->\n <div v-html=\"value\" />\n </template>\n </component>\n </Transition>\n</template>\n\n<style scoped>\n .modals-enter-active,\n .modals-leave-active {\n --swing-timing-function: cubic-bezier(0.25, 0.8, 0.5, 1); /* \"swing\" from the $transition sass map */\n transition: opacity 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from,\n .modals-leave-to {\n opacity: 0;\n }\n\n .modals-enter-active :deep(.stash-modal__dialog--position-center),\n .modals-leave-active :deep(.stash-modal__dialog--position-center) {\n transition: transform 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-center),\n .modals-leave-to :deep(.stash-modal__dialog--position-center) {\n transform: translateY(20px);\n }\n\n .modals-enter-active :deep(.stash-modal__dialog--is-drawer),\n .modals-leave-active :deep(.stash-modal__dialog--is-drawer) {\n transition: transform 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-left),\n .modals-leave-to :deep(.stash-modal__dialog--position-left) {\n transform: translateX(-50px);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-right),\n .modals-leave-to :deep(.stash-modal__dialog--position-right) {\n transform: translateX(50px);\n }\n</style>\n"],"names":["modals","useModals","currentModal","computed","getListeners","modal","_a"],"mappings":";;;;;;AAKE,UAAMA,IAASC,EAAU,GAEnBC,IAAeC,EAAS,MAAMH,EAAO,OAAO;AAIlD,aAASI,EAAaC,GAAkC;;AAClD,cAAAC,IAAAD,EAAM,YAAN,QAAAC,EAAe,0BACV,CAAC,IAGH;AAAA,QACL,SAAS,MAAMN,EAAO,MAAM,EAAE,OAAO,GAAG;AAAA,QACxC,OAAO,MAAMA,EAAO,MAAM,EAAE,OAAO,GAAG;AAAA,QACtC,QAAQ,MAAMA,EAAO,MAAM,EAAE,OAAO,EAAG,CAAA;AAAA,MACzC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Modals.js","sources":["../src/components/Modals/Modals.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, DeepReadonly } from 'vue';\n\n import useModals, { type Modal } from '../../composables/useModals/useModals';\n\n const modals = useModals();\n\n const currentModal = computed(() => modals.current);\n\n // Stupid TS version issues. Todo: remove ` | any` when TS/vite/vue deps are updated.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getListeners(modal: DeepReadonly<Modal> | any) {\n if (modal.options?.disableDefaultListeners) {\n return {};\n }\n\n return {\n dismiss: () => modals.close({ index: 0 }),\n close: () => modals.close({ index: 0 }),\n cancel: () => modals.close({ index: 0 }),\n };\n }\n</script>\n\n<template>\n <Transition name=\"modals\" mode=\"out-in\">\n <component\n :is=\"currentModal.component\"\n v-if=\"currentModal\"\n v-bind=\"currentModal.attributes\"\n :is-open=\"true\"\n v-on=\"getListeners(currentModal)\"\n >\n <template v-for=\"(value, name) in currentModal.slots\" :key=\"name\" #[name]>\n <!-- eslint-disable-next-line vue/no-v-html -->\n <div v-html=\"value\" />\n </template>\n </component>\n </Transition>\n</template>\n\n<style scoped>\n .modals-enter-active,\n .modals-leave-active {\n --swing-timing-function: cubic-bezier(0.25, 0.8, 0.5, 1); /* \"swing\" from the $transition sass map */\n transition: opacity 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from,\n .modals-leave-to {\n opacity: 0;\n }\n\n .modals-enter-active :deep(.stash-modal__dialog--position-center),\n .modals-leave-active :deep(.stash-modal__dialog--position-center) {\n transition: transform 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-center),\n .modals-leave-to :deep(.stash-modal__dialog--position-center) {\n transform: translateY(20px);\n }\n\n .modals-enter-active :deep(.stash-modal__dialog--is-drawer),\n .modals-leave-active :deep(.stash-modal__dialog--is-drawer) {\n transition: transform 165ms var(--swing-timing-function);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-left),\n .modals-leave-to :deep(.stash-modal__dialog--position-left) {\n transform: translateX(-50px);\n }\n\n .modals-enter-from :deep(.stash-modal__dialog--position-right),\n .modals-leave-to :deep(.stash-modal__dialog--position-right) {\n transform: translateX(50px);\n }\n</style>\n"],"names":["modals","useModals","currentModal","computed","getListeners","modal","_a"],"mappings":";;;;;;AAKE,UAAMA,IAASC,EAAA,GAETC,IAAeC,EAAS,MAAMH,EAAO,OAAO;AAIlD,aAASI,EAAaC,GAAkC;;AACtD,cAAIC,IAAAD,EAAM,YAAN,QAAAC,EAAe,0BACV,CAAA,IAGF;AAAA,QACL,SAAS,MAAMN,EAAO,MAAM,EAAE,OAAO,GAAG;AAAA,QACxC,OAAO,MAAMA,EAAO,MAAM,EAAE,OAAO,GAAG;AAAA,QACtC,QAAQ,MAAMA,EAAO,MAAM,EAAE,OAAO,GAAG;AAAA,MAAA;AAAA,IAE3C;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalsPlugin.js","sources":["../src/plugins/ModalsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Modals from '../components/Modals/Modals.vue';\n\nexport interface ModalsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MODALS_PLUGIN_NODE_ID = 'stash-modals-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ModalsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MODALS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_MODALS_PLUGIN_NODE_ID;\n document.body.appendChild(mountNode);\n }\n\n if (options?.mountNodeClass && !mountNode.classList.contains(options.mountNodeClass)) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Modals));\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["DEFAULT_MODALS_PLUGIN_NODE_ID","ModalsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Modals","render"],"mappings":";;AASO,MAAMA,IAAgC,2BAEtBC,IAAA;AAAA,EACrB,QAAQC,GAAUC,GAA+B;AACzC,UAAAC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AACxC,QAAAK,IAAY,SAAS,eAAeD,CAAW;AAEnD,IAAKC,MACSA,IAAA,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GAChB,SAAA,KAAK,YAAYK,CAAS,IAGjCF,KAAA,QAAAA,EAAS,kBAAkB,CAACE,EAAU,UAAU,SAASF,EAAQ,cAAc,KACvEE,EAAA,UAAU,IAAIF,EAAQ,cAAc;AAGhD,UAAMG,IAAQC,EAAYC,EAAEC,CAAM,CAAC;AACnC,IAAAH,EAAM,aAAaJ,EAAI,UAEvBQ,EAAOJ,GAAOD,CAAS;AAAA,EAAA;AAE3B;"}
1
+ {"version":3,"file":"ModalsPlugin.js","sources":["../src/plugins/ModalsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Modals from '../components/Modals/Modals.vue';\n\nexport interface ModalsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MODALS_PLUGIN_NODE_ID = 'stash-modals-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ModalsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MODALS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_MODALS_PLUGIN_NODE_ID;\n document.body.appendChild(mountNode);\n }\n\n if (options?.mountNodeClass && !mountNode.classList.contains(options.mountNodeClass)) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Modals));\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["DEFAULT_MODALS_PLUGIN_NODE_ID","ModalsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Modals","render"],"mappings":";;AASO,MAAMA,IAAgC,2BAE7CC,IAAuB;AAAA,EACrB,QAAQC,GAAUC,GAA+B;AAC/C,UAAMC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AAC5C,QAAIK,IAAY,SAAS,eAAeD,CAAW;AAEnD,IAAKC,MACHA,IAAY,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GACzB,SAAS,KAAK,YAAYK,CAAS,IAGjCF,KAAA,QAAAA,EAAS,kBAAkB,CAACE,EAAU,UAAU,SAASF,EAAQ,cAAc,KACjFE,EAAU,UAAU,IAAIF,EAAQ,cAAc;AAGhD,UAAMG,IAAQC,EAAYC,EAAEC,CAAM,CAAC;AACnC,IAAAH,EAAM,aAAaJ,EAAI,UAEvBQ,EAAOJ,GAAOD,CAAS;AAAA,EACzB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Module.js","sources":["../src/components/Module/Module.vue"],"sourcesContent":["<script lang=\"ts\">\n import Box, { type BoxProps } from '../Box/Box.vue';\n import { ModuleVariant, type ModuleVariants } from './Module.types';\n\n export * from './Module.keys';\n export * from './Module.types';\n\n export interface ModuleProps extends BoxProps {\n /**\n * Variant applied.\n *\n * Options: `box`, `card`, `list`.\n */\n variant?: ModuleVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import { computed, onMounted, provide } from 'vue';\n\n import { MODULE_INJECTION } from './Module.keys';\n\n defineOptions({\n name: 'll-module',\n });\n\n const props = withDefaults(defineProps<ModuleProps>(), {\n variant: 'box',\n });\n\n onMounted(() => {\n if (props.variant === 'card') {\n logger.warn('Card Modules are no longer a thing. You\\'re probably looking for `<RadioGroup variant=\"card\">`.');\n }\n\n if (props.variant === 'list') {\n logger.warn('Only used with deprecated ListView component. Use `table` variant with `Table` component instead.');\n }\n });\n\n provide(MODULE_INJECTION.key, { variant: computed(() => props.variant) });\n</script>\n\n<template>\n <Box\n class=\"stash-module tw-flex tw-flex-col\"\n data-test=\"stash-module\"\n :class=\"{\n 'tw-bg-transparent tw-shadow': props.variant === ModuleVariant.Table,\n 'tw-border tw-border-ice-500': props.variant === ModuleVariant.Card,\n 'tw-mb-6 tw-bg-transparent tw-shadow-none lg:tw-shadow': props.variant === ModuleVariant.List,\n }\"\n :disable-gutters=\"props.disableGutters\"\n :disable-padding=\"props.disablePadding || ['card', 'list', 'table'].includes(props.variant)\"\n :disable-elevation=\"\n props.disableElevation ||\n props.variant === ModuleVariant.Table ||\n props.variant === ModuleVariant.Card ||\n props.variant === ModuleVariant.List\n \"\n >\n <slot></slot>\n </Box>\n</template>\n"],"names":["props","__props","onMounted","logger","provide","MODULE_INJECTION","computed"],"mappings":";;;;;;;;;;;;;;;;AA2BE,UAAMA,IAAQC;AAId,WAAAC,EAAU,MAAM;AACV,MAAAF,EAAM,YAAY,UACpBG,EAAO,KAAK,iGAAiG,GAG3GH,EAAM,YAAY,UACpBG,EAAO,KAAK,mGAAmG;AAAA,IACjH,CACD,GAEOC,EAAAC,EAAiB,KAAK,EAAE,SAASC,EAAS,MAAMN,EAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Module.js","sources":["../src/components/Module/Module.vue"],"sourcesContent":["<script lang=\"ts\">\n import Box, { type BoxProps } from '../Box/Box.vue';\n import { ModuleVariant, type ModuleVariants } from './Module.types';\n\n export * from './Module.keys';\n export * from './Module.types';\n\n export interface ModuleProps extends BoxProps {\n /**\n * Variant applied.\n *\n * Options: `box`, `card`, `list`.\n */\n variant?: ModuleVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import { computed, onMounted, provide } from 'vue';\n\n import { MODULE_INJECTION } from './Module.keys';\n\n defineOptions({\n name: 'll-module',\n });\n\n const props = withDefaults(defineProps<ModuleProps>(), {\n variant: 'box',\n });\n\n onMounted(() => {\n if (props.variant === 'card') {\n logger.warn('Card Modules are no longer a thing. You\\'re probably looking for `<RadioGroup variant=\"card\">`.');\n }\n\n if (props.variant === 'list') {\n logger.warn('Only used with deprecated ListView component. Use `table` variant with `Table` component instead.');\n }\n });\n\n provide(MODULE_INJECTION.key, { variant: computed(() => props.variant) });\n</script>\n\n<template>\n <Box\n class=\"stash-module tw-flex tw-flex-col\"\n data-test=\"stash-module\"\n :class=\"{\n 'tw-bg-transparent tw-shadow': props.variant === ModuleVariant.Table,\n 'tw-border tw-border-ice-500': props.variant === ModuleVariant.Card,\n 'tw-mb-6 tw-bg-transparent tw-shadow-none lg:tw-shadow': props.variant === ModuleVariant.List,\n }\"\n :disable-gutters=\"props.disableGutters\"\n :disable-padding=\"props.disablePadding || ['card', 'list', 'table'].includes(props.variant)\"\n :disable-elevation=\"\n props.disableElevation ||\n props.variant === ModuleVariant.Table ||\n props.variant === ModuleVariant.Card ||\n props.variant === ModuleVariant.List\n \"\n >\n <slot></slot>\n </Box>\n</template>\n"],"names":["props","__props","onMounted","logger","provide","MODULE_INJECTION","computed"],"mappings":";;;;;;;;;;;;;;;;AA2BE,UAAMA,IAAQC;AAId,WAAAC,EAAU,MAAM;AACd,MAAIF,EAAM,YAAY,UACpBG,EAAO,KAAK,iGAAiG,GAG3GH,EAAM,YAAY,UACpBG,EAAO,KAAK,mGAAmG;AAAA,IAEnH,CAAC,GAEDC,EAAQC,EAAiB,KAAK,EAAE,SAASC,EAAS,MAAMN,EAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Module.keys-CEsrW2f0.js","sources":["../src/components/Module/Module.keys.ts"],"sourcesContent":["import { InjectionWithDefaults } from '../../../types/utils';\nimport { ModuleInjection } from './Module.types';\n\nexport const MODULE_INJECTION: InjectionWithDefaults<ModuleInjection> = Object.freeze({\n key: Symbol('MODULE_INJECTION_KEY'),\n defaults: {\n variant: undefined,\n },\n});\n"],"names":["MODULE_INJECTION"],"mappings":"AAGa,MAAAA,IAA2D,OAAO,OAAO;AAAA,EACpF,KAAK,OAAO,sBAAsB;AAAA,EAClC,UAAU;AAAA,IACR,SAAS;AAAA,EAAA;AAEb,CAAC;"}
1
+ {"version":3,"file":"Module.keys-CEsrW2f0.js","sources":["../src/components/Module/Module.keys.ts"],"sourcesContent":["import { InjectionWithDefaults } from '../../../types/utils';\nimport { ModuleInjection } from './Module.types';\n\nexport const MODULE_INJECTION: InjectionWithDefaults<ModuleInjection> = Object.freeze({\n key: Symbol('MODULE_INJECTION_KEY'),\n defaults: {\n variant: undefined,\n },\n});\n"],"names":["MODULE_INJECTION"],"mappings":"AAGO,MAAMA,IAA2D,OAAO,OAAO;AAAA,EACpF,KAAK,OAAO,sBAAsB;AAAA,EAClC,UAAU;AAAA,IACR,SAAS;AAAA,EAAA;AAEb,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Module.types-B1FfGGac.js","sources":["../src/components/Module/Module.types.ts"],"sourcesContent":["import { ComputedRef } from 'vue';\n\nexport enum ModuleVariant {\n Box = 'box',\n Table = 'table',\n /**\n * @deprecated Card Modules are no longer a thing. You're probably looking for `<RadioGroup variant=\"card\">`.\n */\n Card = 'card',\n /**\n * @deprecated Only used with deprecated ListView component. Use `table` variant with `Table` component instead.\n */\n List = 'list',\n}\n\nexport type ModuleVariants = `${ModuleVariant}`;\n\nexport interface ModuleInjection {\n /**\n * Module variant applied.\n */\n variant?: ComputedRef<ModuleVariants>;\n}\n"],"names":["ModuleVariant"],"mappings":"AAEY,IAAAA,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,QAAQ,SAIRA,EAAA,OAAO,QAIPA,EAAA,OAAO,QAVGA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"Module.types-B1FfGGac.js","sources":["../src/components/Module/Module.types.ts"],"sourcesContent":["import { ComputedRef } from 'vue';\n\nexport enum ModuleVariant {\n Box = 'box',\n Table = 'table',\n /**\n * @deprecated Card Modules are no longer a thing. You're probably looking for `<RadioGroup variant=\"card\">`.\n */\n Card = 'card',\n /**\n * @deprecated Only used with deprecated ListView component. Use `table` variant with `Table` component instead.\n */\n List = 'list',\n}\n\nexport type ModuleVariants = `${ModuleVariant}`;\n\nexport interface ModuleInjection {\n /**\n * Module variant applied.\n */\n variant?: ComputedRef<ModuleVariants>;\n}\n"],"names":["ModuleVariant"],"mappings":"AAEO,IAAKA,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,QAAQ,SAIRA,EAAA,OAAO,QAIPA,EAAA,OAAO,QAVGA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleContent.js","sources":["../src/components/ModuleContent/ModuleContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, onBeforeMount, ref, useSlots } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n defineOptions({\n name: 'll-module-content',\n });\n\n const slots = useSlots();\n const moduleVariant = ref();\n\n onBeforeMount(() => {\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('ModuleContent must be used within a Module component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n });\n</script>\n\n<template>\n <div\n class=\"stash-module-content tw-flex-1\"\n data-test=\"stash-module-content\"\n :class=\"{\n 'tw-px-3 tw-py-6 lg:tw-px-6': moduleVariant === ModuleVariant.Card,\n 'tw-border-t tw-border-ice-200': moduleVariant === ModuleVariant.Table || moduleVariant === ModuleVariant.List,\n }\"\n >\n <div\n v-if=\"slots['top-left'] || slots['top-right']\"\n class=\"stash-module-content__top-slots tw-flex tw-flex-wrap tw-items-center tw-justify-between\"\n data-test=\"stash-module-content|top-slots\"\n >\n <!--\n For styling purposes, we always render both slots. In the scenario where only a top-right is\n provided, the div wrappers ensure space-between works and puts top-right on the right side.\n -->\n <div class=\"tw-mb-6 tw-mr-6\" data-test=\"stash-module-content|top-left-slot\"><slot name=\"top-left\"></slot></div>\n <div class=\"tw-mb-6\" data-test=\"stash-module-content|top-right-slot\"><slot name=\"top-right\"></slot></div>\n </div>\n\n <slot></slot>\n </div>\n</template>\n"],"names":["slots","useSlots","moduleVariant","ref","onBeforeMount","moduleInjectedValues","inject","MODULE_INJECTION"],"mappings":";;;;;;;;;;;;;;;;;AAUE,UAAMA,IAAQC,EAAS,GACjBC,IAAgBC,EAAI;AAE1B,WAAAC,EAAc,MAAM;AAClB,YAAMC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AAC/E,UAAA,CAACF,EAAqB;AAClB,cAAA,IAAI,MAAM,uDAAuD;AAE3D,MAAAH,EAAA,QAAQG,EAAqB,QAAQ;AAAA,IAAA,CACpD;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ModuleContent.js","sources":["../src/components/ModuleContent/ModuleContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, onBeforeMount, ref, useSlots } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n defineOptions({\n name: 'll-module-content',\n });\n\n const slots = useSlots();\n const moduleVariant = ref();\n\n onBeforeMount(() => {\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('ModuleContent must be used within a Module component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n });\n</script>\n\n<template>\n <div\n class=\"stash-module-content tw-flex-1\"\n data-test=\"stash-module-content\"\n :class=\"{\n 'tw-px-3 tw-py-6 lg:tw-px-6': moduleVariant === ModuleVariant.Card,\n 'tw-border-t tw-border-ice-200': moduleVariant === ModuleVariant.Table || moduleVariant === ModuleVariant.List,\n }\"\n >\n <div\n v-if=\"slots['top-left'] || slots['top-right']\"\n class=\"stash-module-content__top-slots tw-flex tw-flex-wrap tw-items-center tw-justify-between\"\n data-test=\"stash-module-content|top-slots\"\n >\n <!--\n For styling purposes, we always render both slots. In the scenario where only a top-right is\n provided, the div wrappers ensure space-between works and puts top-right on the right side.\n -->\n <div class=\"tw-mb-6 tw-mr-6\" data-test=\"stash-module-content|top-left-slot\"><slot name=\"top-left\"></slot></div>\n <div class=\"tw-mb-6\" data-test=\"stash-module-content|top-right-slot\"><slot name=\"top-right\"></slot></div>\n </div>\n\n <slot></slot>\n </div>\n</template>\n"],"names":["slots","useSlots","moduleVariant","ref","onBeforeMount","moduleInjectedValues","inject","MODULE_INJECTION"],"mappings":";;;;;;;;;;;;;;;;;AAUE,UAAMA,IAAQC,EAAA,GACRC,IAAgBC,EAAA;AAEtB,WAAAC,EAAc,MAAM;AAClB,YAAMC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AACnF,UAAI,CAACF,EAAqB;AACxB,cAAM,IAAI,MAAM,uDAAuD;AAEzE,MAAAH,EAAc,QAAQG,EAAqB,QAAQ;AAAA,IACrD,CAAC;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleFooter.js","sources":["../src/components/ModuleFooter/ModuleFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, onBeforeMount, ref } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n const moduleVariant = ref();\n\n onBeforeMount(() => {\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('ModuleContent must be used within a Module component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n });\n</script>\n\n<template>\n <div\n class=\"stash-module-footer tw-flex tw-flex-wrap tw-justify-between\"\n :class=\"{\n 'tw-rounded-b tw-border-b tw-border-ice-500 tw-px-3 tw-pb-6 tw-pt-0 lg:tw-px-6':\n moduleVariant === ModuleVariant.Card,\n 'tw-rounded tw-bg-white tw-p-3 tw-shadow lg:tw-rounded-t-none lg:tw-px-6 lg:tw-shadow-none':\n moduleVariant === ModuleVariant.Table || moduleVariant === ModuleVariant.List,\n 'tw-mb-0 tw-pt-3 lg:tw-pt-6': moduleVariant === ModuleVariant.Box,\n }\"\n data-test=\"stash-module-footer\"\n >\n <slot></slot>\n </div>\n</template>\n"],"names":["moduleVariant","ref","onBeforeMount","moduleInjectedValues","inject","MODULE_INJECTION"],"mappings":";;;;;;AAME,UAAMA,IAAgBC,EAAI;AAE1B,WAAAC,EAAc,MAAM;AAClB,YAAMC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AAC/E,UAAA,CAACF,EAAqB;AAClB,cAAA,IAAI,MAAM,uDAAuD;AAE3D,MAAAH,EAAA,QAAQG,EAAqB,QAAQ;AAAA,IAAA,CACpD;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ModuleFooter.js","sources":["../src/components/ModuleFooter/ModuleFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, onBeforeMount, ref } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n const moduleVariant = ref();\n\n onBeforeMount(() => {\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('ModuleContent must be used within a Module component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n });\n</script>\n\n<template>\n <div\n class=\"stash-module-footer tw-flex tw-flex-wrap tw-justify-between\"\n :class=\"{\n 'tw-rounded-b tw-border-b tw-border-ice-500 tw-px-3 tw-pb-6 tw-pt-0 lg:tw-px-6':\n moduleVariant === ModuleVariant.Card,\n 'tw-rounded tw-bg-white tw-p-3 tw-shadow lg:tw-rounded-t-none lg:tw-px-6 lg:tw-shadow-none':\n moduleVariant === ModuleVariant.Table || moduleVariant === ModuleVariant.List,\n 'tw-mb-0 tw-pt-3 lg:tw-pt-6': moduleVariant === ModuleVariant.Box,\n }\"\n data-test=\"stash-module-footer\"\n >\n <slot></slot>\n </div>\n</template>\n"],"names":["moduleVariant","ref","onBeforeMount","moduleInjectedValues","inject","MODULE_INJECTION"],"mappings":";;;;;;AAME,UAAMA,IAAgBC,EAAA;AAEtB,WAAAC,EAAc,MAAM;AAClB,YAAMC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AACnF,UAAI,CAACF,EAAqB;AACxB,cAAM,IAAI,MAAM,uDAAuD;AAEzE,MAAAH,EAAc,QAAQG,EAAqB,QAAQ;AAAA,IACrD,CAAC;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleHeader.js","sources":["../src/components/ModuleHeader/ModuleHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, inject, ref, useCssModule, useSlots } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n defineOptions({\n name: 'll-module-header',\n });\n\n export interface ModuleHeaderProps {\n /**\n * Header title. Will get overridden by the `title` slot if provided.\n */\n title?: string;\n\n /**\n * Size of the header.\n *\n * - `small` = `h4`\n * - `medium` = `h3`\n * - `large` = `h2`\n */\n size?: 'small' | 'medium' | 'large';\n\n /**\n * Header description, aka subtitle. Will get overridden by the `description` slot if provided.\n */\n description?: string;\n\n /**\n * Stop the actions slot from force-wrapping on medium and smalls screens.\n */\n preventActionsWrap?: boolean;\n\n /**\n * Displays a border at the bottom\n */\n underline?: boolean;\n }\n\n const props = withDefaults(defineProps<ModuleHeaderProps>(), {\n title: '',\n size: 'medium',\n description: '',\n preventActionsWrap: false,\n underline: false,\n });\n const classes = useCssModule();\n const slots = useSlots();\n\n // get the module variant from the parent module\n const moduleVariant = ref();\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('<ModuleHeader> must be used within a <Module> component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n\n const is = computed(() => {\n let component: string;\n\n switch (props.size) {\n case 'small':\n component = 'h4';\n break;\n\n case 'medium':\n component = 'h3';\n break;\n\n case 'large':\n component = 'h2';\n break;\n\n default:\n component = 'h3';\n break;\n }\n\n return component;\n });\n\n const isDefaultSlotSimpleString = computed(() => {\n if (!slots.default) {\n return false;\n }\n\n const defaultSlot = slots.default({});\n return (\n defaultSlot.length === 1 &&\n typeof slots.default({})[0].children === 'string' &&\n typeof slots.default({})[0].type === 'symbol'\n );\n });\n\n const marginBottomClasses = computed(() => {\n const isBoxOrTableOrList = ['box', 'table', 'list'].includes(moduleVariant.value);\n\n if (isBoxOrTableOrList && !props.underline) {\n return 'tw-mb-3 lg:tw-mb-6';\n } else if (isBoxOrTableOrList && props.underline) {\n return 'tw-mb-3';\n } else {\n return '';\n }\n });\n</script>\n\n<template>\n <header\n class=\"stash-module-header tw-flex tw-flex-wrap tw-justify-between\"\n :class=\"{\n 'tw-rounded-t tw-border-b tw-border-ice-500 tw-bg-ice-100 tw-p-3 lg:tw-px-6':\n moduleVariant === ModuleVariant.Card,\n 'tw-mb-6 tw-rounded tw-bg-white tw-px-3 tw-pt-3 tw-shadow lg:tw-mb-0 lg:tw-rounded-b-none lg:tw-px-6 lg:tw-pt-6 lg:tw-shadow-none':\n moduleVariant === ModuleVariant.List,\n 'tw-mb-3 tw-border-b tw-border-ice-200 lg:tw-mb-6': props.underline,\n 'tw-mb-6 tw-rounded-t tw-bg-white tw-px-3 tw-pt-3 lg:tw-mb-0 lg:tw-px-6 lg:tw-pt-6':\n moduleVariant === ModuleVariant.Table,\n }\"\n data-test=\"stash-module-header\"\n >\n <div\n class=\"stash-module-header__content tw-mr-6\"\n :class=\"marginBottomClasses\"\n data-test=\"stash-module-header|content\"\n >\n <div class=\"tw-flex tw-items-center\">\n <div\n v-if=\"slots.media && props.size === 'large'\"\n class=\"stash-module-header__content__media tw-mr-3\"\n :class=\"classes.media\"\n data-test=\"stash-module-header|content-media\"\n >\n <!-- @slot Place an illustration that sits next to the header title & description. -->\n <slot name=\"media\"></slot>\n </div>\n\n <div class=\"stash-module-header__content__text\" data-test=\"stash-module-header|content-text\">\n <!--\n @slot Header title. **Deprecated**: Use the default slot or the `title` prop instead.\n -->\n <slot v-if=\"slots.title\" name=\"title\"></slot>\n\n <template v-else-if=\"isDefaultSlotSimpleString\">\n <component\n :is=\"is\"\n class=\"stash-module-header__default_slot_string tw-my-0\"\n data-test=\"stash-module-header|default-slot-text\"\n >\n <!-- @slot Header title. -->\n <slot></slot>\n </component>\n </template>\n <!-- @slot Header title. Falls back to the `title` prop. -->\n <slot v-else>\n <component :is=\"is\" class=\"tw-my-0\">{{ props.title }}</component>\n </slot>\n\n <!--\n @slot Header description, aka subtitle. Falls back to the `description` prop.\n -->\n <slot name=\"description\">\n <p v-if=\"props.description\" class=\"tw-mb-0 tw-mt-3\">{{ props.description }}</p>\n </slot>\n </div>\n </div>\n </div>\n\n <!-- todo: how can we pass a prop/class to actions in order to top align vs middle align? -->\n <div\n v-if=\"slots.actions\"\n class=\"stash-module-header__actions tw-self-center\"\n :class=\"[\n marginBottomClasses,\n {\n 'tw-w-full lg:tw-w-auto': !props.preventActionsWrap,\n },\n ]\"\n data-test=\"stash-module-header|actions\"\n >\n <!-- @slot Add action buttons or other CTAs. -->\n <slot name=\"actions\"></slot>\n </div>\n </header>\n</template>\n\n<style module>\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media {\n max-height: 58px;\n max-width: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","moduleVariant","ref","moduleInjectedValues","inject","MODULE_INJECTION","is","computed","component","isDefaultSlotSimpleString","marginBottomClasses","isBoxOrTableOrList"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyCE,UAAMA,IAAQC,GAORC,IAAUC,EAAa,GACvBC,IAAQC,EAAS,GAGjBC,IAAgBC,EAAI,GACpBC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AAC/E,QAAA,CAACF,EAAqB;AAClB,YAAA,IAAI,MAAM,0DAA0D;AAE9D,IAAAF,EAAA,QAAQE,EAAqB,QAAQ;AAE7C,UAAAG,IAAKC,EAAS,MAAM;AACpB,UAAAC;AAEJ,cAAQb,EAAM,MAAM;AAAA,QAClB,KAAK;AACS,UAAAa,IAAA;AACZ;AAAA,QAEF,KAAK;AACS,UAAAA,IAAA;AACZ;AAAA,QAEF,KAAK;AACS,UAAAA,IAAA;AACZ;AAAA,QAEF;AACc,UAAAA,IAAA;AACZ;AAAA,MAAA;AAGG,aAAAA;AAAA,IAAA,CACR,GAEKC,IAA4BF,EAAS,MACpCR,EAAM,UAISA,EAAM,QAAQ,EAAE,EAEtB,WAAW,KACvB,OAAOA,EAAM,QAAQ,CAAE,CAAA,EAAE,CAAC,EAAE,YAAa,YACzC,OAAOA,EAAM,QAAQ,CAAE,CAAA,EAAE,CAAC,EAAE,QAAS,WAP9B,EASV,GAEKW,IAAsBH,EAAS,MAAM;AACnC,YAAAI,IAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,SAASV,EAAc,KAAK;AAE5E,aAAAU,KAAsB,CAAChB,EAAM,YACxB,uBACEgB,KAAsBhB,EAAM,YAC9B,YAEA;AAAA,IACT,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ModuleHeader.js","sources":["../src/components/ModuleHeader/ModuleHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, inject, ref, useCssModule, useSlots } from 'vue';\n\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { ModuleVariant } from '../Module/Module.types';\n\n defineOptions({\n name: 'll-module-header',\n });\n\n export interface ModuleHeaderProps {\n /**\n * Header title. Will get overridden by the `title` slot if provided.\n */\n title?: string;\n\n /**\n * Size of the header.\n *\n * - `small` = `h4`\n * - `medium` = `h3`\n * - `large` = `h2`\n */\n size?: 'small' | 'medium' | 'large';\n\n /**\n * Header description, aka subtitle. Will get overridden by the `description` slot if provided.\n */\n description?: string;\n\n /**\n * Stop the actions slot from force-wrapping on medium and smalls screens.\n */\n preventActionsWrap?: boolean;\n\n /**\n * Displays a border at the bottom\n */\n underline?: boolean;\n }\n\n const props = withDefaults(defineProps<ModuleHeaderProps>(), {\n title: '',\n size: 'medium',\n description: '',\n preventActionsWrap: false,\n underline: false,\n });\n const classes = useCssModule();\n const slots = useSlots();\n\n // get the module variant from the parent module\n const moduleVariant = ref();\n const moduleInjectedValues = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n if (!moduleInjectedValues.variant) {\n throw new Error('<ModuleHeader> must be used within a <Module> component.');\n }\n moduleVariant.value = moduleInjectedValues.variant.value;\n\n const is = computed(() => {\n let component: string;\n\n switch (props.size) {\n case 'small':\n component = 'h4';\n break;\n\n case 'medium':\n component = 'h3';\n break;\n\n case 'large':\n component = 'h2';\n break;\n\n default:\n component = 'h3';\n break;\n }\n\n return component;\n });\n\n const isDefaultSlotSimpleString = computed(() => {\n if (!slots.default) {\n return false;\n }\n\n const defaultSlot = slots.default({});\n return (\n defaultSlot.length === 1 &&\n typeof slots.default({})[0].children === 'string' &&\n typeof slots.default({})[0].type === 'symbol'\n );\n });\n\n const marginBottomClasses = computed(() => {\n const isBoxOrTableOrList = ['box', 'table', 'list'].includes(moduleVariant.value);\n\n if (isBoxOrTableOrList && !props.underline) {\n return 'tw-mb-3 lg:tw-mb-6';\n } else if (isBoxOrTableOrList && props.underline) {\n return 'tw-mb-3';\n } else {\n return '';\n }\n });\n</script>\n\n<template>\n <header\n class=\"stash-module-header tw-flex tw-flex-wrap tw-justify-between\"\n :class=\"{\n 'tw-rounded-t tw-border-b tw-border-ice-500 tw-bg-ice-100 tw-p-3 lg:tw-px-6':\n moduleVariant === ModuleVariant.Card,\n 'tw-mb-6 tw-rounded tw-bg-white tw-px-3 tw-pt-3 tw-shadow lg:tw-mb-0 lg:tw-rounded-b-none lg:tw-px-6 lg:tw-pt-6 lg:tw-shadow-none':\n moduleVariant === ModuleVariant.List,\n 'tw-mb-3 tw-border-b tw-border-ice-200 lg:tw-mb-6': props.underline,\n 'tw-mb-6 tw-rounded-t tw-bg-white tw-px-3 tw-pt-3 lg:tw-mb-0 lg:tw-px-6 lg:tw-pt-6':\n moduleVariant === ModuleVariant.Table,\n }\"\n data-test=\"stash-module-header\"\n >\n <div\n class=\"stash-module-header__content tw-mr-6\"\n :class=\"marginBottomClasses\"\n data-test=\"stash-module-header|content\"\n >\n <div class=\"tw-flex tw-items-center\">\n <div\n v-if=\"slots.media && props.size === 'large'\"\n class=\"stash-module-header__content__media tw-mr-3\"\n :class=\"classes.media\"\n data-test=\"stash-module-header|content-media\"\n >\n <!-- @slot Place an illustration that sits next to the header title & description. -->\n <slot name=\"media\"></slot>\n </div>\n\n <div class=\"stash-module-header__content__text\" data-test=\"stash-module-header|content-text\">\n <!--\n @slot Header title. **Deprecated**: Use the default slot or the `title` prop instead.\n -->\n <slot v-if=\"slots.title\" name=\"title\"></slot>\n\n <template v-else-if=\"isDefaultSlotSimpleString\">\n <component\n :is=\"is\"\n class=\"stash-module-header__default_slot_string tw-my-0\"\n data-test=\"stash-module-header|default-slot-text\"\n >\n <!-- @slot Header title. -->\n <slot></slot>\n </component>\n </template>\n <!-- @slot Header title. Falls back to the `title` prop. -->\n <slot v-else>\n <component :is=\"is\" class=\"tw-my-0\">{{ props.title }}</component>\n </slot>\n\n <!--\n @slot Header description, aka subtitle. Falls back to the `description` prop.\n -->\n <slot name=\"description\">\n <p v-if=\"props.description\" class=\"tw-mb-0 tw-mt-3\">{{ props.description }}</p>\n </slot>\n </div>\n </div>\n </div>\n\n <!-- todo: how can we pass a prop/class to actions in order to top align vs middle align? -->\n <div\n v-if=\"slots.actions\"\n class=\"stash-module-header__actions tw-self-center\"\n :class=\"[\n marginBottomClasses,\n {\n 'tw-w-full lg:tw-w-auto': !props.preventActionsWrap,\n },\n ]\"\n data-test=\"stash-module-header|actions\"\n >\n <!-- @slot Add action buttons or other CTAs. -->\n <slot name=\"actions\"></slot>\n </div>\n </header>\n</template>\n\n<style module>\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media {\n max-height: 58px;\n max-width: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","moduleVariant","ref","moduleInjectedValues","inject","MODULE_INJECTION","is","computed","component","isDefaultSlotSimpleString","marginBottomClasses","isBoxOrTableOrList"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyCE,UAAMA,IAAQC,GAORC,IAAUC,EAAA,GACVC,IAAQC,EAAA,GAGRC,IAAgBC,EAAA,GAChBC,IAAuBC,EAAOC,EAAiB,KAAKA,EAAiB,QAAQ;AACnF,QAAI,CAACF,EAAqB;AACxB,YAAM,IAAI,MAAM,0DAA0D;AAE5E,IAAAF,EAAc,QAAQE,EAAqB,QAAQ;AAEnD,UAAMG,IAAKC,EAAS,MAAM;AACxB,UAAIC;AAEJ,cAAQb,EAAM,MAAA;AAAA,QACZ,KAAK;AACH,UAAAa,IAAY;AACZ;AAAA,QAEF,KAAK;AACH,UAAAA,IAAY;AACZ;AAAA,QAEF,KAAK;AACH,UAAAA,IAAY;AACZ;AAAA,QAEF;AACE,UAAAA,IAAY;AACZ;AAAA,MAAA;AAGJ,aAAOA;AAAA,IACT,CAAC,GAEKC,IAA4BF,EAAS,MACpCR,EAAM,UAISA,EAAM,QAAQ,EAAE,EAEtB,WAAW,KACvB,OAAOA,EAAM,QAAQ,CAAA,CAAE,EAAE,CAAC,EAAE,YAAa,YACzC,OAAOA,EAAM,QAAQ,CAAA,CAAE,EAAE,CAAC,EAAE,QAAS,WAP9B,EASV,GAEKW,IAAsBH,EAAS,MAAM;AACzC,YAAMI,IAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,SAASV,EAAc,KAAK;AAEhF,aAAIU,KAAsB,CAAChB,EAAM,YACxB,uBACEgB,KAAsBhB,EAAM,YAC9B,YAEA;AAAA,IAEX,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref as O, onUnmounted as K, onMounted as Z, onUpdated as J, onDeactivated as Q, onBeforeUnmount as Y, watch as R, nextTick as W, defineComponent as tt, useTemplateRef as M, computed as C, createElementBlock as et, openBlock as ot, normalizeStyle as N, createElementVNode as V, withDirectives as it, normalizeClass as H, renderSlot as L, unref as x, createVNode as $, withCtx as k, createTextVNode as lt, toDisplayString as nt, vShow as at } from "vue";
2
2
  import st from "lodash-es/uniqueId";
3
- import { b as U, c as rt, d as ut, e as ct } from "./index-C14LhAwV.js";
3
+ import { b as U, c as rt, d as ut, e as ct } from "./index-DA_ft08e.js";
4
4
  import { t as dt } from "./locale.js";
5
5
  import ft from "./Button.js";
6
6
  import vt from "./Dropdown.js";