@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":"storage.js","sources":["../../src/utils/storage.ts"],"sourcesContent":["import logger from '@leaflink/snitch';\n\nimport { hashCode } from './helpers';\n\nconst PREFIX = 'll';\n\n/**\n * Persist an item to localStorage, unique to each url pathname unless [options.global] is set to true\n *\n * If global is set to false (the default):\n * name: 'foo'\n * data: { a: 'a' }\n *\n * localStorage key: 'll-foo-/c/the-leaf-shop/customers/'\n * localStorage value: { a: 'a' }\n *\n * If global is set to true:\n * name: 'bar'\n * data: { b: 'b' }\n *\n * localStorage key: 'll-bar'\n * localStorage value: { b: 'b' }\n *\n * @param {string} name - the storage key name, often a component name\n * @param {object} data - the data to persist\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n */\nexport function setPersistentItem(name, data, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const storageKey = `${PREFIX}-${name}${scope}`;\n const storageValue = JSON.stringify(data);\n\n try {\n localStorage.setItem(storageKey, storageValue);\n } catch (error) {\n if ((error as Error)?.name === 'QuotaExceededError') {\n logger.log(`Your localStorage is full. Failed to save item for key: ${storageKey}`);\n } else {\n logger.log(`Failed to save value to localStorage for key: ${storageKey}`);\n }\n }\n}\n\n/**\n * Retrieve an item from localStorage, previously saved by `setPersistentItem`.\n * @param {string} name The storage key name, often a component name\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n * @returns {any | undefined}\n */\nexport function getPersistentItem(name, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const item = localStorage.getItem(`${PREFIX}-${name}${scope}`);\n\n // localStorage.getItem always returns a string or null. When it's a string,\n // it usually contains an object or a boolean. If the value is 'false', we\n // need to ensure we return false instead of null.\n if (item === null || item === 'undefined') {\n return null;\n }\n\n try {\n return JSON.parse(item);\n } catch (err) {\n logger.error((err as Error)?.message, { error: err });\n\n return null;\n }\n}\n\n/**\n * Remove an item from localStorage, previously saved by `setPersistentItem`.\n * @param {string} name The storage key name, often a component name\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n */\nexport function removePersistentItem(name, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const storageKey = `${PREFIX}-${name}${scope}`;\n const item = localStorage.getItem(storageKey);\n\n if (item === null) {\n return;\n }\n\n try {\n localStorage.removeItem(storageKey);\n } catch (err) {\n logger.error((err as Error).message, { error: err });\n }\n}\n\n/**\n ***************** DEPRECATED *****************\n */\nexport function getPersistentItem__deprecated(itemKey: string, name) {\n const item = JSON.parse(localStorage.getItem(itemKey) || '{}');\n\n try {\n return (item[name] || {})[hashCode(location.pathname)];\n } catch (err) {\n logger.error((err as Error)?.message, { error: err });\n\n return undefined;\n }\n}\n\nexport function removePersistentItem__deprecated(itemKey, name) {\n const item = JSON.parse(localStorage.getItem(itemKey) || '{}');\n const itemValue = { ...item };\n\n if (itemValue[name]) {\n delete itemValue[name][hashCode(location.pathname)];\n }\n\n try {\n localStorage.setItem(itemKey, JSON.stringify(itemValue));\n } catch (error) {\n if ((error as Error)?.name === 'QuotaExceededError') {\n logger.log(`Your localStorage is full. Failed to set item.`);\n } else {\n logger.log(`Failed to set item to localStorage.`);\n }\n }\n}\n// END DEPRECATED\n\nexport const persistentStorage = {\n setItem: setPersistentItem,\n getItem: getPersistentItem,\n removeItem: removePersistentItem,\n};\n"],"names":["PREFIX","setPersistentItem","name","data","options","scope","storageKey","storageValue","error","logger","getPersistentItem","item","err","removePersistentItem","getPersistentItem__deprecated","itemKey","hashCode","removePersistentItem__deprecated","itemValue","persistentStorage"],"mappings":";;AAIA,MAAMA,IAAS;AAwBR,SAASC,EAAkBC,GAAMC,GAAMC,IAAgC,CAAA,GAAI;AAChF,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDE,IAAa,GAAGN,CAAM,IAAIE,CAAI,GAAGG,CAAK,IACtCE,IAAe,KAAK,UAAUJ,CAAI;AAEpC,MAAA;AACW,iBAAA,QAAQG,GAAYC,CAAY;AAAA,WACtCC,GAAO;AACT,KAAAA,KAAA,gBAAAA,EAAiB,UAAS,uBACtBC,EAAA,IAAI,2DAA2DH,CAAU,EAAE,IAE3EG,EAAA,IAAI,iDAAiDH,CAAU,EAAE;AAAA,EAC1E;AAEJ;AASO,SAASI,EAAkBR,GAAME,IAAgC,IAAI;AAC1E,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDO,IAAO,aAAa,QAAQ,GAAGX,CAAM,IAAIE,CAAI,GAAGG,CAAK,EAAE;AAKzD,MAAAM,MAAS,QAAQA,MAAS;AACrB,WAAA;AAGL,MAAA;AACK,WAAA,KAAK,MAAMA,CAAI;AAAA,WACfC,GAAK;AACZ,WAAAH,EAAO,MAAOG,KAAA,gBAAAA,EAAe,SAAS,EAAE,OAAOA,GAAK,GAE7C;AAAA,EAAA;AAEX;AAQO,SAASC,EAAqBX,GAAME,IAAgC,IAAI;AAC7E,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDE,IAAa,GAAGN,CAAM,IAAIE,CAAI,GAAGG,CAAK;AAG5C,MAFa,aAAa,QAAQC,CAAU,MAE/B;AAIT,QAAA;AACF,mBAAa,WAAWA,CAAU;AAAA,aAC3BM,GAAK;AACZ,MAAAH,EAAO,MAAOG,EAAc,SAAS,EAAE,OAAOA,GAAK;AAAA,IAAA;AAEvD;AAKgB,SAAAE,EAA8BC,GAAiBb,GAAM;AACnE,QAAMS,IAAO,KAAK,MAAM,aAAa,QAAQI,CAAO,KAAK,IAAI;AAEzD,MAAA;AACM,YAAAJ,EAAKT,CAAI,KAAK,IAAIc,EAAS,SAAS,QAAQ,CAAC;AAAA,WAC9CJ,GAAK;AACZ,IAAAH,EAAO,MAAOG,KAAA,gBAAAA,EAAe,SAAS,EAAE,OAAOA,GAAK;AAE7C;AAAA,EAAA;AAEX;AAEgB,SAAAK,EAAiCF,GAASb,GAAM;AAExD,QAAAgB,IAAY,EAAE,GADP,KAAK,MAAM,aAAa,QAAQH,CAAO,KAAK,IAAI,EACjC;AAExB,EAAAG,EAAUhB,CAAI,KAChB,OAAOgB,EAAUhB,CAAI,EAAEc,EAAS,SAAS,QAAQ,CAAC;AAGhD,MAAA;AACF,iBAAa,QAAQD,GAAS,KAAK,UAAUG,CAAS,CAAC;AAAA,WAChDV,GAAO;AACT,KAAAA,KAAA,gBAAAA,EAAiB,UAAS,uBAC7BC,EAAO,IAAI,gDAAgD,IAE3DA,EAAO,IAAI,qCAAqC;AAAA,EAClD;AAEJ;AAGO,MAAMU,IAAoB;AAAA,EAC/B,SAASlB;AAAA,EACT,SAASS;AAAA,EACT,YAAYG;AACd;"}
1
+ {"version":3,"file":"storage.js","sources":["../../src/utils/storage.ts"],"sourcesContent":["import logger from '@leaflink/snitch';\n\nimport { hashCode } from './helpers';\n\nconst PREFIX = 'll';\n\n/**\n * Persist an item to localStorage, unique to each url pathname unless [options.global] is set to true\n *\n * If global is set to false (the default):\n * name: 'foo'\n * data: { a: 'a' }\n *\n * localStorage key: 'll-foo-/c/the-leaf-shop/customers/'\n * localStorage value: { a: 'a' }\n *\n * If global is set to true:\n * name: 'bar'\n * data: { b: 'b' }\n *\n * localStorage key: 'll-bar'\n * localStorage value: { b: 'b' }\n *\n * @param {string} name - the storage key name, often a component name\n * @param {object} data - the data to persist\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n */\nexport function setPersistentItem(name, data, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const storageKey = `${PREFIX}-${name}${scope}`;\n const storageValue = JSON.stringify(data);\n\n try {\n localStorage.setItem(storageKey, storageValue);\n } catch (error) {\n if ((error as Error)?.name === 'QuotaExceededError') {\n logger.log(`Your localStorage is full. Failed to save item for key: ${storageKey}`);\n } else {\n logger.log(`Failed to save value to localStorage for key: ${storageKey}`);\n }\n }\n}\n\n/**\n * Retrieve an item from localStorage, previously saved by `setPersistentItem`.\n * @param {string} name The storage key name, often a component name\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n * @returns {any | undefined}\n */\nexport function getPersistentItem(name, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const item = localStorage.getItem(`${PREFIX}-${name}${scope}`);\n\n // localStorage.getItem always returns a string or null. When it's a string,\n // it usually contains an object or a boolean. If the value is 'false', we\n // need to ensure we return false instead of null.\n if (item === null || item === 'undefined') {\n return null;\n }\n\n try {\n return JSON.parse(item);\n } catch (err) {\n logger.error((err as Error)?.message, { error: err });\n\n return null;\n }\n}\n\n/**\n * Remove an item from localStorage, previously saved by `setPersistentItem`.\n * @param {string} name The storage key name, often a component name\n * @param {object} [options] - an optional options object\n * @param {boolean} [options.global] - does not add url to the key when true\n */\nexport function removePersistentItem(name, options: { global?: boolean } = {}) {\n const scope = options.global ? '' : `-${location.pathname}`;\n const storageKey = `${PREFIX}-${name}${scope}`;\n const item = localStorage.getItem(storageKey);\n\n if (item === null) {\n return;\n }\n\n try {\n localStorage.removeItem(storageKey);\n } catch (err) {\n logger.error((err as Error).message, { error: err });\n }\n}\n\n/**\n ***************** DEPRECATED *****************\n */\nexport function getPersistentItem__deprecated(itemKey: string, name) {\n const item = JSON.parse(localStorage.getItem(itemKey) || '{}');\n\n try {\n return (item[name] || {})[hashCode(location.pathname)];\n } catch (err) {\n logger.error((err as Error)?.message, { error: err });\n\n return undefined;\n }\n}\n\nexport function removePersistentItem__deprecated(itemKey, name) {\n const item = JSON.parse(localStorage.getItem(itemKey) || '{}');\n const itemValue = { ...item };\n\n if (itemValue[name]) {\n delete itemValue[name][hashCode(location.pathname)];\n }\n\n try {\n localStorage.setItem(itemKey, JSON.stringify(itemValue));\n } catch (error) {\n if ((error as Error)?.name === 'QuotaExceededError') {\n logger.log(`Your localStorage is full. Failed to set item.`);\n } else {\n logger.log(`Failed to set item to localStorage.`);\n }\n }\n}\n// END DEPRECATED\n\nexport const persistentStorage = {\n setItem: setPersistentItem,\n getItem: getPersistentItem,\n removeItem: removePersistentItem,\n};\n"],"names":["PREFIX","setPersistentItem","name","data","options","scope","storageKey","storageValue","error","logger","getPersistentItem","item","err","removePersistentItem","getPersistentItem__deprecated","itemKey","hashCode","removePersistentItem__deprecated","itemValue","persistentStorage"],"mappings":";;AAIA,MAAMA,IAAS;AAwBR,SAASC,EAAkBC,GAAMC,GAAMC,IAAgC,CAAA,GAAI;AAChF,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDE,IAAa,GAAGN,CAAM,IAAIE,CAAI,GAAGG,CAAK,IACtCE,IAAe,KAAK,UAAUJ,CAAI;AAExC,MAAI;AACF,iBAAa,QAAQG,GAAYC,CAAY;AAAA,EAC/C,SAASC,GAAO;AACd,KAAKA,KAAA,gBAAAA,EAAiB,UAAS,uBAC7BC,EAAO,IAAI,2DAA2DH,CAAU,EAAE,IAElFG,EAAO,IAAI,iDAAiDH,CAAU,EAAE;AAAA,EAE5E;AACF;AASO,SAASI,EAAkBR,GAAME,IAAgC,IAAI;AAC1E,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDO,IAAO,aAAa,QAAQ,GAAGX,CAAM,IAAIE,CAAI,GAAGG,CAAK,EAAE;AAK7D,MAAIM,MAAS,QAAQA,MAAS;AAC5B,WAAO;AAGT,MAAI;AACF,WAAO,KAAK,MAAMA,CAAI;AAAA,EACxB,SAASC,GAAK;AACZ,WAAAH,EAAO,MAAOG,KAAA,gBAAAA,EAAe,SAAS,EAAE,OAAOA,GAAK,GAE7C;AAAA,EACT;AACF;AAQO,SAASC,EAAqBX,GAAME,IAAgC,IAAI;AAC7E,QAAMC,IAAQD,EAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,IACnDE,IAAa,GAAGN,CAAM,IAAIE,CAAI,GAAGG,CAAK;AAG5C,MAFa,aAAa,QAAQC,CAAU,MAE/B;AAIb,QAAI;AACF,mBAAa,WAAWA,CAAU;AAAA,IACpC,SAASM,GAAK;AACZ,MAAAH,EAAO,MAAOG,EAAc,SAAS,EAAE,OAAOA,GAAK;AAAA,IACrD;AACF;AAKO,SAASE,EAA8BC,GAAiBb,GAAM;AACnE,QAAMS,IAAO,KAAK,MAAM,aAAa,QAAQI,CAAO,KAAK,IAAI;AAE7D,MAAI;AACF,YAAQJ,EAAKT,CAAI,KAAK,CAAA,GAAIc,EAAS,SAAS,QAAQ,CAAC;AAAA,EACvD,SAASJ,GAAK;AACZ,IAAAH,EAAO,MAAOG,KAAA,gBAAAA,EAAe,SAAS,EAAE,OAAOA,GAAK;AAEpD;AAAA,EACF;AACF;AAEO,SAASK,EAAiCF,GAASb,GAAM;AAE9D,QAAMgB,IAAY,EAAE,GADP,KAAK,MAAM,aAAa,QAAQH,CAAO,KAAK,IAAI,EACtC;AAEvB,EAAIG,EAAUhB,CAAI,KAChB,OAAOgB,EAAUhB,CAAI,EAAEc,EAAS,SAAS,QAAQ,CAAC;AAGpD,MAAI;AACF,iBAAa,QAAQD,GAAS,KAAK,UAAUG,CAAS,CAAC;AAAA,EACzD,SAASV,GAAO;AACd,KAAKA,KAAA,gBAAAA,EAAiB,UAAS,uBAC7BC,EAAO,IAAI,gDAAgD,IAE3DA,EAAO,IAAI,qCAAqC;AAAA,EAEpD;AACF;AAGO,MAAMU,IAAoB;AAAA,EAC/B,SAASlB;AAAA,EACT,SAASS;AAAA,EACT,YAAYG;AACd;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/stash",
3
- "version": "51.11.1",
3
+ "version": "51.12.1",
4
4
  "description": "LeafLink's design system.",
5
5
  "homepage": "https://stash.leaflink.com",
6
6
  "main": "./dist/index.ts",
@@ -62,8 +62,10 @@
62
62
  "url": "https://github.com/LeafLink/stash/issues"
63
63
  },
64
64
  "engines": {
65
- "node": "^24 || ^22 || ^20 || ^18"
65
+ "node": "^24 || ^22 || ^20 || ^18",
66
+ "pnpm": ">=8.0.0"
66
67
  },
68
+ "packageManager": "pnpm@10.16.1",
67
69
  "publishConfig": {
68
70
  "access": "public"
69
71
  },
@@ -74,15 +76,15 @@
74
76
  "not ie <= 10"
75
77
  ],
76
78
  "scripts": {
77
- "build": "npm run build:spritesheet && vite build",
79
+ "preinstall": "npx only-allow pnpm",
80
+ "build": "pnpm build:spritesheet && pnpm vite build",
78
81
  "build:spritesheet": "svg-sprite --symbol --symbol-dest=assets/ --symbol-sprite=spritesheet.svg --svg-namespace-ids=false assets/icons/*.svg assets/integrations/*.svg",
79
- "build:ts": "vue-tsc --declaration --emitDeclarationOnly --declarationMap",
80
- "fix": "npm run lint:js-fix && npm run lint:css-fix",
81
- "lint": "npm run lint:js && npm run lint:css",
82
+ "fix": "pnpm lint:js-fix && pnpm lint:css-fix",
83
+ "lint": "pnpm lint:js && pnpm lint:css",
82
84
  "lint:js": "eslint .",
83
- "lint:js-fix": "npm run lint:js -- --fix",
85
+ "lint:js-fix": "pnpm lint:js --fix",
84
86
  "lint:css": "stylelint ./**/*.vue",
85
- "lint:css-fix": "npm run lint:css -- --fix",
87
+ "lint:css-fix": "pnpm lint:css --fix",
86
88
  "lint:commits": "commitlint",
87
89
  "test": "vitest --reporter verbose",
88
90
  "test:ci": "vitest run --silent --coverage",
@@ -91,8 +93,8 @@
91
93
  "docs:illustrations": "cp -r ./assets/illustrations docs/public/",
92
94
  "docs:logos": "cp -r ./assets/logos docs/public/",
93
95
  "docs:spritesheet": "svg-sprite --symbol --symbol-dest=docs/public/ --symbol-sprite=spritesheet.svg --svg-namespace-ids=false assets/icons/*.svg assets/integrations/*.svg",
94
- "docs": "npm run docs:spritesheet && npm run docs:illustrations && npm run docs:logos && vitepress dev docs",
95
- "docs:build": "npm run docs:spritesheet && npm run docs:illustrations && npm run docs:logos && vitepress build docs",
96
+ "docs": "pnpm docs:spritesheet && pnpm docs:illustrations && pnpm docs:logos && vitepress dev docs",
97
+ "docs:build": "pnpm docs:spritesheet && pnpm docs:illustrations && pnpm docs:logos && pnpm vitepress build docs",
96
98
  "docs:preview": "vitepress preview docs",
97
99
  "prepare": "husky"
98
100
  },
@@ -132,6 +134,7 @@
132
134
  "@vue/babel-plugin-jsx": "1.4.0",
133
135
  "@vue/test-utils": "^2.4.6",
134
136
  "autoprefixer": "^10.4.20",
137
+ "commitlint": "^19.8.1",
135
138
  "doctoc": "^2.2.1",
136
139
  "eslint": "^9.31.0",
137
140
  "globals": "^16.3.0",
@@ -143,6 +146,7 @@
143
146
  "postcss-html": "^1.7.0",
144
147
  "postcss-prefix-selector": "^1.16.1",
145
148
  "postcss-preset-env": "^10.0.5",
149
+ "prettier": "^3.6.2",
146
150
  "quill": "^2.0.2",
147
151
  "rollup-plugin-copy": "^3.5.0",
148
152
  "stylelint": "^16.12.0",
@@ -195,6 +199,15 @@
195
199
  "v-bind"
196
200
  ]
197
201
  }
202
+ ],
203
+ "function-no-unknown": [
204
+ true,
205
+ {
206
+ "ignoreFunctions": [
207
+ "theme",
208
+ "v-bind"
209
+ ]
210
+ }
198
211
  ]
199
212
  }
200
213
  },
@@ -1,78 +0,0 @@
1
- import { defineComponent as f, computed as a, provide as T, createElementBlock as h, openBlock as _, createVNode as n, unref as i, normalizeClass as r, withCtx as c, createElementVNode as x, createTextVNode as y, toDisplayString as g, renderSlot as C } from "vue";
2
- import { t as l } from "./locale.js";
3
- import I from "./Icon.js";
4
- import N from "./MoreActions.js";
5
- const k = Object.freeze({
6
- key: Symbol("TABS_INJECTION_KEY")
7
- });
8
- var d = /* @__PURE__ */ ((e) => (e.Line = "line", e.Enclosed = "enclosed", e))(d || {});
9
- const E = {
10
- class: "stash-tabs tw-relative",
11
- role: "tabList",
12
- "data-test": "stash-tabs"
13
- }, A = ["aria-expanded", "onClick"], z = /* @__PURE__ */ f({
14
- __name: "Tabs",
15
- props: {
16
- activeTab: {},
17
- variant: { default: d.Line }
18
- },
19
- emits: ["update:activeTab"],
20
- setup(e, { emit: m }) {
21
- const p = m, o = e, s = a({
22
- get() {
23
- return o.activeTab;
24
- },
25
- set(t) {
26
- p("update:activeTab", t);
27
- }
28
- });
29
- function u(t) {
30
- s.value = t;
31
- }
32
- const v = a(() => `tab-${s.value}`);
33
- return T(k.key, {
34
- activeTab: a(() => s.value),
35
- variant: a(() => o.variant),
36
- setActiveTab: u
37
- }), (t, S) => (_(), h("div", E, [
38
- n(N, {
39
- class: r(["stash-tabs-list tw-flex tw-items-end", {
40
- "stash-tabs-list--line": t.variant === "line",
41
- "stash-tabs-list--enclosed": t.variant === "enclosed",
42
- "tw-gap-6": t.variant === "line"
43
- }]),
44
- "more-button-text": i(l)("ll.more"),
45
- "dropdown-mode": "custom",
46
- "auto-style-dropdown-items": "",
47
- "active-item-id": v.value,
48
- "actions-container-class": {
49
- "tw-gap-0": t.variant === "enclosed",
50
- "tw-gap-6": t.variant === "line"
51
- }
52
- }, {
53
- actions: c(() => [
54
- C(t.$slots, "default")
55
- ]),
56
- toggle: c(({ toggle: b, isOpen: w }) => [
57
- x("button", {
58
- "aria-haspopup": "menu",
59
- "aria-expanded": w,
60
- class: r(["tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-border-solid tw-px-6 tw-py-1.5 tw-text-sm tw-font-medium tw-text-blue-500 hover:tw-text-blue-700", { "tw-border-t-4 tw-border-transparent": o.variant === "enclosed" }]),
61
- type: "button",
62
- onClick: b
63
- }, [
64
- y(g(i(l)("ll.more")) + " ", 1),
65
- n(I, { name: "caret-down" })
66
- ], 10, A)
67
- ]),
68
- _: 3
69
- }, 8, ["class", "more-button-text", "active-item-id", "actions-container-class"])
70
- ]));
71
- }
72
- });
73
- export {
74
- k as T,
75
- z as _,
76
- d as a
77
- };
78
- //# sourceMappingURL=Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js","sources":["../src/components/Tabs/keys.ts","../src/components/Tabs/models.ts","../src/components/Tabs/Tabs.vue"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { TabsInjection } from './models';\n\nexport const TABS_INJECTION: Injection<TabsInjection> = Object.freeze({\n key: Symbol('TABS_INJECTION_KEY'),\n});\n","import { ComputedRef } from 'vue';\n\nexport enum TabVariant {\n Line = 'line',\n Enclosed = 'enclosed',\n}\n\nexport type TabVariants = `${TabVariant}`;\n\nexport interface TabsInjection {\n activeTab: ComputedRef<string>;\n variant: ComputedRef<TabVariants>;\n setActiveTab: (newTabValue: string) => void;\n}\n","<script lang=\"ts\">\n import { TabVariant, TabVariants } from './models';\n\n export * from './keys';\n export * from './models';\n\n export interface TabsProps {\n /**\n * The currently active tab value\n */\n activeTab: string;\n\n /**\n * Tabs variant\n */\n variant?: TabVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, provide } from 'vue';\n\n import { t } from '../../locale';\n import Icon from '../Icon/Icon.vue';\n import MoreActions from '../MoreActions/MoreActions.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit = defineEmits<{\n (e: 'update:activeTab', newTabValue: TabsProps['activeTab']): void;\n }>();\n\n const props = withDefaults(defineProps<TabsProps>(), {\n variant: TabVariant.Line,\n });\n\n const currentActiveTab = computed({\n get() {\n return props.activeTab;\n },\n set(nv: TabsProps['activeTab']) {\n emit('update:activeTab', nv);\n },\n });\n\n function setActiveTab(newTabValue) {\n currentActiveTab.value = newTabValue;\n }\n\n const activeItemId = computed(() => `tab-${currentActiveTab.value}`);\n\n provide(TABS_INJECTION.key, {\n activeTab: computed(() => currentActiveTab.value),\n variant: computed(() => props.variant),\n setActiveTab,\n });\n</script>\n\n<template>\n <div class=\"stash-tabs tw-relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <MoreActions\n class=\"stash-tabs-list tw-flex tw-items-end\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'tw-gap-6': variant === 'line',\n }\"\n :more-button-text=\"t('ll.more')\"\n dropdown-mode=\"custom\"\n auto-style-dropdown-items\n :active-item-id=\"activeItemId\"\n :actions-container-class=\"{\n 'tw-gap-0': variant === 'enclosed',\n 'tw-gap-6': variant === 'line',\n }\"\n >\n <template #actions>\n <slot></slot>\n </template>\n <template #toggle=\"{ toggle, isOpen }\">\n <button\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n class=\"tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-border-solid tw-px-6 tw-py-1.5 tw-text-sm tw-font-medium tw-text-blue-500 hover:tw-text-blue-700\"\n :class=\"{ 'tw-border-t-4 tw-border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"toggle\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n </MoreActions>\n </div>\n</template>\n\n<style module>\n .menu-tab > a {\n /* prevents the global link styles to overwrite the overflowed tab styles */\n &,\n &:hover,\n &:focus {\n color: inherit;\n }\n }\n</style>\n"],"names":["TABS_INJECTION","TabVariant","emit","__emit","props","__props","currentActiveTab","computed","nv","setActiveTab","newTabValue","activeItemId","provide"],"mappings":";;;;AAGa,MAAAA,IAA2C,OAAO,OAAO;AAAA,EACpE,KAAK,OAAO,oBAAoB;AAClC,CAAC;ACHW,IAAAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,WAAW,YAFDA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;ACyBV,UAAMC,IAAOC,GAIPC,IAAQC,GAIRC,IAAmBC,EAAS;AAAA,MAChC,MAAM;AACJ,eAAOH,EAAM;AAAA,MACf;AAAA,MACA,IAAII,GAA4B;AAC9B,QAAAN,EAAK,oBAAoBM,CAAE;AAAA,MAAA;AAAA,IAC7B,CACD;AAED,aAASC,EAAaC,GAAa;AACjC,MAAAJ,EAAiB,QAAQI;AAAA,IAAA;AAG3B,UAAMC,IAAeJ,EAAS,MAAM,OAAOD,EAAiB,KAAK,EAAE;AAEnE,WAAAM,EAAQZ,EAAe,KAAK;AAAA,MAC1B,WAAWO,EAAS,MAAMD,EAAiB,KAAK;AAAA,MAChD,SAASC,EAAS,MAAMH,EAAM,OAAO;AAAA,MACrC,cAAAK;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}