devskill 2.0.2

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 (654) hide show
  1. package/README.md +123 -0
  2. package/README.vn.md +104 -0
  3. package/SKILL_GUIDE.vn.md +252 -0
  4. package/bin/devskill.js +11 -0
  5. package/meta.ts +123 -0
  6. package/package.json +21 -0
  7. package/publish.sh +50 -0
  8. package/scripts/cli.ts +556 -0
  9. package/skills/builderx_api-contexts/SKILL.md +63 -0
  10. package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
  11. package/skills/builderx_api-controllers/SKILL.md +49 -0
  12. package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
  13. package/skills/builderx_api-schemas/SKILL.md +76 -0
  14. package/skills/builderx_api-schemas/references/core-schema.md +78 -0
  15. package/skills/builderx_spa-api/SKILL.md +67 -0
  16. package/skills/builderx_spa-api/references/base-api.md +97 -0
  17. package/skills/builderx_spa-api/references/fetch.md +70 -0
  18. package/skills/builderx_spa-design/SKILL.md +82 -0
  19. package/skills/builderx_spa-design/references/core-text-design.md +64 -0
  20. package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
  21. package/skills/builderx_spa-design/references/features-forms.md +91 -0
  22. package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
  23. package/skills/builderx_spa-permission/SKILL.md +38 -0
  24. package/skills/builderx_spa-permission/references/has-permission.md +34 -0
  25. package/skills/composition-patterns/AGENTS.md +946 -0
  26. package/skills/composition-patterns/README.md +60 -0
  27. package/skills/composition-patterns/SKILL.md +89 -0
  28. package/skills/composition-patterns/SYNC.md +5 -0
  29. package/skills/composition-patterns/metadata.json +11 -0
  30. package/skills/composition-patterns/rules/_sections.md +29 -0
  31. package/skills/composition-patterns/rules/_template.md +24 -0
  32. package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  33. package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
  34. package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  35. package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  36. package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
  37. package/skills/composition-patterns/rules/state-context-interface.md +191 -0
  38. package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
  39. package/skills/composition-patterns/rules/state-lift-state.md +125 -0
  40. package/skills/deploy-to-vercel/Archive.zip +0 -0
  41. package/skills/deploy-to-vercel/SKILL.md +296 -0
  42. package/skills/deploy-to-vercel/SYNC.md +5 -0
  43. package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  44. package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
  45. package/skills/pinia/SKILL.md +105 -0
  46. package/skills/pinia/references/api-in-composables.md +139 -0
  47. package/skills/pinia/references/setup-stores.md +105 -0
  48. package/skills/pinia/references/using-in-components.md +91 -0
  49. package/skills/pinia-options/SKILL.md +72 -0
  50. package/skills/pinia-options/references/core-option-stores.md +149 -0
  51. package/skills/pinia-options/references/using-in-options-api.md +105 -0
  52. package/skills/react-best-practices/AGENTS.md +3373 -0
  53. package/skills/react-best-practices/README.md +123 -0
  54. package/skills/react-best-practices/SKILL.md +143 -0
  55. package/skills/react-best-practices/SYNC.md +5 -0
  56. package/skills/react-best-practices/metadata.json +15 -0
  57. package/skills/react-best-practices/rules/_sections.md +46 -0
  58. package/skills/react-best-practices/rules/_template.md +28 -0
  59. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  60. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  61. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  62. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  63. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  64. package/skills/react-best-practices/rules/async-dependencies.md +51 -0
  65. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  66. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  67. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  68. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  69. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  70. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  71. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  72. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  73. package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  74. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  75. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  76. package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  77. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  78. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  79. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  80. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  81. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  82. package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
  83. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  84. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  85. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  86. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  87. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  88. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  89. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  90. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  91. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  92. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  93. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  94. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  95. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  96. package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
  97. package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  98. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  99. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  100. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  101. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  102. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  103. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  104. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  105. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  106. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  107. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  108. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  109. package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  110. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  111. package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  112. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  113. package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  114. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  115. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  116. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  117. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  118. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  119. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  120. package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
  121. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  122. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  123. package/skills/react-native-skills/AGENTS.md +2897 -0
  124. package/skills/react-native-skills/README.md +165 -0
  125. package/skills/react-native-skills/SKILL.md +121 -0
  126. package/skills/react-native-skills/SYNC.md +5 -0
  127. package/skills/react-native-skills/metadata.json +16 -0
  128. package/skills/react-native-skills/rules/_sections.md +86 -0
  129. package/skills/react-native-skills/rules/_template.md +28 -0
  130. package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
  131. package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  132. package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
  133. package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
  134. package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
  135. package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
  136. package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
  137. package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
  138. package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
  139. package/skills/react-native-skills/rules/list-performance-images.md +53 -0
  140. package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  141. package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  142. package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
  143. package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
  144. package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
  145. package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  146. package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  147. package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
  148. package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  149. package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  150. package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
  151. package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
  152. package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
  153. package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  154. package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  155. package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
  156. package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
  157. package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
  158. package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
  159. package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
  160. package/skills/react-native-skills/rules/ui-menus.md +174 -0
  161. package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
  162. package/skills/react-native-skills/rules/ui-pressable.md +61 -0
  163. package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  164. package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  165. package/skills/react-native-skills/rules/ui-styling.md +87 -0
  166. package/skills/slidev/LICENSE.md +21 -0
  167. package/skills/slidev/README.md +61 -0
  168. package/skills/slidev/SKILL.md +189 -0
  169. package/skills/slidev/SYNC.md +5 -0
  170. package/skills/slidev/references/animation-click-marker.md +37 -0
  171. package/skills/slidev/references/animation-drawing.md +68 -0
  172. package/skills/slidev/references/animation-rough-marker.md +53 -0
  173. package/skills/slidev/references/api-slide-hooks.md +37 -0
  174. package/skills/slidev/references/build-og-image.md +36 -0
  175. package/skills/slidev/references/build-pdf.md +40 -0
  176. package/skills/slidev/references/build-remote-assets.md +34 -0
  177. package/skills/slidev/references/build-seo-meta.md +43 -0
  178. package/skills/slidev/references/code-groups.md +64 -0
  179. package/skills/slidev/references/code-import-snippet.md +55 -0
  180. package/skills/slidev/references/code-line-highlighting.md +50 -0
  181. package/skills/slidev/references/code-line-numbers.md +46 -0
  182. package/skills/slidev/references/code-magic-move.md +57 -0
  183. package/skills/slidev/references/code-max-height.md +37 -0
  184. package/skills/slidev/references/code-twoslash.md +42 -0
  185. package/skills/slidev/references/core-animations.md +196 -0
  186. package/skills/slidev/references/core-cli.md +140 -0
  187. package/skills/slidev/references/core-components.md +197 -0
  188. package/skills/slidev/references/core-exporting.md +148 -0
  189. package/skills/slidev/references/core-frontmatter.md +195 -0
  190. package/skills/slidev/references/core-global-context.md +155 -0
  191. package/skills/slidev/references/core-headmatter.md +188 -0
  192. package/skills/slidev/references/core-hosting.md +152 -0
  193. package/skills/slidev/references/core-layouts.md +286 -0
  194. package/skills/slidev/references/core-syntax.md +155 -0
  195. package/skills/slidev/references/diagram-latex.md +55 -0
  196. package/skills/slidev/references/diagram-mermaid.md +44 -0
  197. package/skills/slidev/references/diagram-plantuml.md +45 -0
  198. package/skills/slidev/references/editor-monaco-run.md +44 -0
  199. package/skills/slidev/references/editor-monaco-write.md +24 -0
  200. package/skills/slidev/references/editor-monaco.md +50 -0
  201. package/skills/slidev/references/editor-prettier.md +40 -0
  202. package/skills/slidev/references/editor-side.md +23 -0
  203. package/skills/slidev/references/editor-vscode.md +55 -0
  204. package/skills/slidev/references/layout-canvas-size.md +25 -0
  205. package/skills/slidev/references/layout-draggable.md +57 -0
  206. package/skills/slidev/references/layout-global-layers.md +50 -0
  207. package/skills/slidev/references/layout-slots.md +75 -0
  208. package/skills/slidev/references/layout-transform.md +33 -0
  209. package/skills/slidev/references/layout-zoom.md +39 -0
  210. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  211. package/skills/slidev/references/presenter-recording.md +30 -0
  212. package/skills/slidev/references/presenter-remote.md +40 -0
  213. package/skills/slidev/references/presenter-timer.md +34 -0
  214. package/skills/slidev/references/style-direction.md +34 -0
  215. package/skills/slidev/references/style-icons.md +46 -0
  216. package/skills/slidev/references/style-scoped.md +50 -0
  217. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  218. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  219. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  220. package/skills/slidev/references/syntax-mdc.md +51 -0
  221. package/skills/slidev/references/tool-eject-theme.md +27 -0
  222. package/skills/tsdown/LICENSE.md +22 -0
  223. package/skills/tsdown/README.md +77 -0
  224. package/skills/tsdown/SKILL.md +407 -0
  225. package/skills/tsdown/SYNC.md +5 -0
  226. package/skills/tsdown/references/README.md +139 -0
  227. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  228. package/skills/tsdown/references/advanced-ci.md +89 -0
  229. package/skills/tsdown/references/advanced-hooks.md +363 -0
  230. package/skills/tsdown/references/advanced-plugins.md +381 -0
  231. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  232. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  233. package/skills/tsdown/references/guide-getting-started.md +178 -0
  234. package/skills/tsdown/references/guide-introduction.md +42 -0
  235. package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
  236. package/skills/tsdown/references/option-cjs-default.md +98 -0
  237. package/skills/tsdown/references/option-cleaning.md +275 -0
  238. package/skills/tsdown/references/option-config-file.md +281 -0
  239. package/skills/tsdown/references/option-css.md +301 -0
  240. package/skills/tsdown/references/option-dependencies.md +385 -0
  241. package/skills/tsdown/references/option-dts.md +251 -0
  242. package/skills/tsdown/references/option-entry.md +211 -0
  243. package/skills/tsdown/references/option-exe.md +120 -0
  244. package/skills/tsdown/references/option-lint.md +127 -0
  245. package/skills/tsdown/references/option-log-level.md +91 -0
  246. package/skills/tsdown/references/option-minification.md +177 -0
  247. package/skills/tsdown/references/option-output-directory.md +270 -0
  248. package/skills/tsdown/references/option-output-format.md +181 -0
  249. package/skills/tsdown/references/option-package-exports.md +320 -0
  250. package/skills/tsdown/references/option-platform.md +256 -0
  251. package/skills/tsdown/references/option-root.md +88 -0
  252. package/skills/tsdown/references/option-shims.md +299 -0
  253. package/skills/tsdown/references/option-sourcemap.md +301 -0
  254. package/skills/tsdown/references/option-target.md +222 -0
  255. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  256. package/skills/tsdown/references/option-unbundle.md +310 -0
  257. package/skills/tsdown/references/option-watch-mode.md +261 -0
  258. package/skills/tsdown/references/recipe-react.md +338 -0
  259. package/skills/tsdown/references/recipe-solid.md +46 -0
  260. package/skills/tsdown/references/recipe-svelte.md +54 -0
  261. package/skills/tsdown/references/recipe-vue.md +387 -0
  262. package/skills/tsdown/references/recipe-wasm.md +125 -0
  263. package/skills/tsdown/references/reference-cli.md +472 -0
  264. package/skills/turborepo/LICENSE.md +7 -0
  265. package/skills/turborepo/SKILL.md +951 -0
  266. package/skills/turborepo/SYNC.md +5 -0
  267. package/skills/turborepo/command/turborepo.md +70 -0
  268. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  269. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  270. package/skills/turborepo/references/best-practices/packages.md +335 -0
  271. package/skills/turborepo/references/best-practices/structure.md +297 -0
  272. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  273. package/skills/turborepo/references/caching/RULE.md +153 -0
  274. package/skills/turborepo/references/caching/gotchas.md +190 -0
  275. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  276. package/skills/turborepo/references/ci/RULE.md +79 -0
  277. package/skills/turborepo/references/ci/github-actions.md +162 -0
  278. package/skills/turborepo/references/ci/patterns.md +145 -0
  279. package/skills/turborepo/references/ci/vercel.md +103 -0
  280. package/skills/turborepo/references/cli/RULE.md +100 -0
  281. package/skills/turborepo/references/cli/commands.md +297 -0
  282. package/skills/turborepo/references/configuration/RULE.md +235 -0
  283. package/skills/turborepo/references/configuration/global-options.md +239 -0
  284. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  285. package/skills/turborepo/references/configuration/tasks.md +325 -0
  286. package/skills/turborepo/references/environment/RULE.md +123 -0
  287. package/skills/turborepo/references/environment/gotchas.md +175 -0
  288. package/skills/turborepo/references/environment/modes.md +101 -0
  289. package/skills/turborepo/references/filtering/RULE.md +148 -0
  290. package/skills/turborepo/references/filtering/patterns.md +152 -0
  291. package/skills/turborepo/references/watch/RULE.md +99 -0
  292. package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
  293. package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
  294. package/skills/vue/SKILL.md +90 -0
  295. package/skills/vue/references/composables.md +54 -0
  296. package/skills/vue/references/lifecycle.md +31 -0
  297. package/skills/vue/references/props-emits.md +62 -0
  298. package/skills/vue/references/provide-inject.md +47 -0
  299. package/skills/vue/references/state.md +65 -0
  300. package/skills/vue-antdv-tailwind/SKILL.md +33 -0
  301. package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
  302. package/skills/vue-best-practices/LICENSE.md +21 -0
  303. package/skills/vue-best-practices/SKILL.md +154 -0
  304. package/skills/vue-best-practices/SYNC.md +5 -0
  305. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  306. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  307. package/skills/vue-best-practices/references/component-async.md +97 -0
  308. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  309. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  310. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  311. package/skills/vue-best-practices/references/component-slots.md +216 -0
  312. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  313. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  314. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  315. package/skills/vue-best-practices/references/component-transition.md +125 -0
  316. package/skills/vue-best-practices/references/composables.md +290 -0
  317. package/skills/vue-best-practices/references/directives.md +162 -0
  318. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  319. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  320. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  321. package/skills/vue-best-practices/references/plugins.md +166 -0
  322. package/skills/vue-best-practices/references/reactivity.md +344 -0
  323. package/skills/vue-best-practices/references/render-functions.md +201 -0
  324. package/skills/vue-best-practices/references/sfc.md +310 -0
  325. package/skills/vue-best-practices/references/state-management.md +135 -0
  326. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  327. package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
  328. package/skills/vue-jsx-best-practices/SKILL.md +12 -0
  329. package/skills/vue-jsx-best-practices/SYNC.md +5 -0
  330. package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
  331. package/skills/vue-options/SKILL.md +98 -0
  332. package/skills/vue-options/references/lifecycle.md +107 -0
  333. package/skills/vue-options/references/mixins.md +96 -0
  334. package/skills/vue-options/references/props-emits.md +106 -0
  335. package/skills/vue-options/references/provide-inject.md +92 -0
  336. package/skills/vue-options/references/state.md +115 -0
  337. package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
  338. package/skills/vue-options-api-best-practices/SKILL.md +23 -0
  339. package/skills/vue-options-api-best-practices/SYNC.md +5 -0
  340. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
  341. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
  342. package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
  343. package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
  344. package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
  345. package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
  346. package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
  347. package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
  348. package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
  349. package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
  350. package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
  351. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  352. package/skills/vue-pinia-best-practices/SYNC.md +5 -0
  353. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  354. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  355. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  356. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  357. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  358. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  359. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  360. package/skills/vue-router-best-practices/SKILL.md +23 -0
  361. package/skills/vue-router-best-practices/SYNC.md +5 -0
  362. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  363. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  364. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  365. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  366. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  367. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  368. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  369. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  370. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  371. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  372. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  373. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  374. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  375. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  376. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  377. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  378. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  379. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  380. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  381. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  382. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  383. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  384. package/skills/vueuse-functions/LICENSE.md +21 -0
  385. package/skills/vueuse-functions/SKILL.md +419 -0
  386. package/skills/vueuse-functions/SYNC.md +5 -0
  387. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  388. package/skills/vueuse-functions/references/computedEager.md +62 -0
  389. package/skills/vueuse-functions/references/computedInject.md +137 -0
  390. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  391. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  392. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  393. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  394. package/skills/vueuse-functions/references/createInjectionState.md +215 -0
  395. package/skills/vueuse-functions/references/createProjection.md +31 -0
  396. package/skills/vueuse-functions/references/createRef.md +54 -0
  397. package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  398. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  399. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  400. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  401. package/skills/vueuse-functions/references/extendRef.md +76 -0
  402. package/skills/vueuse-functions/references/from.md +80 -0
  403. package/skills/vueuse-functions/references/get.md +30 -0
  404. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  405. package/skills/vueuse-functions/references/isDefined.md +31 -0
  406. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  407. package/skills/vueuse-functions/references/logicNot.md +36 -0
  408. package/skills/vueuse-functions/references/logicOr.md +40 -0
  409. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  410. package/skills/vueuse-functions/references/onClickOutside.md +221 -0
  411. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  412. package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
  413. package/skills/vueuse-functions/references/onLongPress.md +227 -0
  414. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  415. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  416. package/skills/vueuse-functions/references/reactify.md +144 -0
  417. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  418. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  419. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  420. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  421. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  422. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  423. package/skills/vueuse-functions/references/refDefault.md +36 -0
  424. package/skills/vueuse-functions/references/refManualReset.md +44 -0
  425. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  426. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  427. package/skills/vueuse-functions/references/set.md +30 -0
  428. package/skills/vueuse-functions/references/syncRef.md +195 -0
  429. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  430. package/skills/vueuse-functions/references/templateRef.md +86 -0
  431. package/skills/vueuse-functions/references/toObserver.md +38 -0
  432. package/skills/vueuse-functions/references/toReactive.md +41 -0
  433. package/skills/vueuse-functions/references/toRef.md +75 -0
  434. package/skills/vueuse-functions/references/toRefs.md +81 -0
  435. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  436. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  437. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  438. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  439. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  440. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  441. package/skills/vueuse-functions/references/until.md +161 -0
  442. package/skills/vueuse-functions/references/useAbs.md +31 -0
  443. package/skills/vueuse-functions/references/useActiveElement.md +85 -0
  444. package/skills/vueuse-functions/references/useAnimate.md +181 -0
  445. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  446. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  447. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  448. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  449. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  450. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  451. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  452. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  453. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  454. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  455. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  456. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  457. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  458. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  459. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  460. package/skills/vueuse-functions/references/useAuth.md +123 -0
  461. package/skills/vueuse-functions/references/useAverage.md +36 -0
  462. package/skills/vueuse-functions/references/useAxios.md +325 -0
  463. package/skills/vueuse-functions/references/useBase64.md +136 -0
  464. package/skills/vueuse-functions/references/useBattery.md +78 -0
  465. package/skills/vueuse-functions/references/useBluetooth.md +175 -0
  466. package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
  467. package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  468. package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  469. package/skills/vueuse-functions/references/useCached.md +52 -0
  470. package/skills/vueuse-functions/references/useCeil.md +31 -0
  471. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  472. package/skills/vueuse-functions/references/useClamp.md +85 -0
  473. package/skills/vueuse-functions/references/useClipboard.md +123 -0
  474. package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
  475. package/skills/vueuse-functions/references/useCloned.md +91 -0
  476. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  477. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  478. package/skills/vueuse-functions/references/useCookies.md +162 -0
  479. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  480. package/skills/vueuse-functions/references/useCounter.md +86 -0
  481. package/skills/vueuse-functions/references/useCssSupports.md +35 -0
  482. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  483. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  484. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  485. package/skills/vueuse-functions/references/useDark.md +144 -0
  486. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  487. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  488. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  489. package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
  490. package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  491. package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  492. package/skills/vueuse-functions/references/useDevicesList.md +90 -0
  493. package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  494. package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  495. package/skills/vueuse-functions/references/useDraggable.md +317 -0
  496. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  497. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  498. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  499. package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
  500. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  501. package/skills/vueuse-functions/references/useElementSize.md +78 -0
  502. package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
  503. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  504. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  505. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  506. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  507. package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  508. package/skills/vueuse-functions/references/useFavicon.md +67 -0
  509. package/skills/vueuse-functions/references/useFetch.md +546 -0
  510. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  511. package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  512. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  513. package/skills/vueuse-functions/references/useFloor.md +31 -0
  514. package/skills/vueuse-functions/references/useFocus.md +99 -0
  515. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  516. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  517. package/skills/vueuse-functions/references/useFps.md +28 -0
  518. package/skills/vueuse-functions/references/useFullscreen.md +75 -0
  519. package/skills/vueuse-functions/references/useFuse.md +107 -0
  520. package/skills/vueuse-functions/references/useGamepad.md +222 -0
  521. package/skills/vueuse-functions/references/useGeolocation.md +85 -0
  522. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  523. package/skills/vueuse-functions/references/useIdle.md +88 -0
  524. package/skills/vueuse-functions/references/useImage.md +86 -0
  525. package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  526. package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  527. package/skills/vueuse-functions/references/useInterval.md +112 -0
  528. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  529. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  530. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  531. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  532. package/skills/vueuse-functions/references/useJwt.md +57 -0
  533. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  534. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  535. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  536. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  537. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  538. package/skills/vueuse-functions/references/useMath.md +47 -0
  539. package/skills/vueuse-functions/references/useMax.md +36 -0
  540. package/skills/vueuse-functions/references/useMediaControls.md +571 -0
  541. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  542. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  543. package/skills/vueuse-functions/references/useMemory.md +71 -0
  544. package/skills/vueuse-functions/references/useMin.md +36 -0
  545. package/skills/vueuse-functions/references/useMounted.md +38 -0
  546. package/skills/vueuse-functions/references/useMouse.md +113 -0
  547. package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  548. package/skills/vueuse-functions/references/useMousePressed.md +112 -0
  549. package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
  550. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  551. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  552. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  553. package/skills/vueuse-functions/references/useNow.md +79 -0
  554. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  555. package/skills/vueuse-functions/references/useObservable.md +91 -0
  556. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  557. package/skills/vueuse-functions/references/useOnline.md +41 -0
  558. package/skills/vueuse-functions/references/usePageLeave.md +42 -0
  559. package/skills/vueuse-functions/references/useParallax.md +58 -0
  560. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  561. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  562. package/skills/vueuse-functions/references/usePermission.md +79 -0
  563. package/skills/vueuse-functions/references/usePointer.md +89 -0
  564. package/skills/vueuse-functions/references/usePointerLock.md +60 -0
  565. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  566. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  567. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  568. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  569. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  570. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  571. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  572. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  573. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  574. package/skills/vueuse-functions/references/useProjection.md +38 -0
  575. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  576. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  577. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  578. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  579. package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
  580. package/skills/vueuse-functions/references/useRound.md +31 -0
  581. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  582. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  583. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  584. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  585. package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  586. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  587. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  588. package/skills/vueuse-functions/references/useScroll.md +238 -0
  589. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  590. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  591. package/skills/vueuse-functions/references/useShare.md +68 -0
  592. package/skills/vueuse-functions/references/useSortable.md +235 -0
  593. package/skills/vueuse-functions/references/useSorted.md +90 -0
  594. package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  595. package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  596. package/skills/vueuse-functions/references/useStepper.md +137 -0
  597. package/skills/vueuse-functions/references/useStorage.md +278 -0
  598. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  599. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  600. package/skills/vueuse-functions/references/useSubject.md +77 -0
  601. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  602. package/skills/vueuse-functions/references/useSum.md +36 -0
  603. package/skills/vueuse-functions/references/useSupported.md +29 -0
  604. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  605. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  606. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  607. package/skills/vueuse-functions/references/useTextSelection.md +40 -0
  608. package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  609. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  610. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  611. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  612. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  613. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  614. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  615. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  616. package/skills/vueuse-functions/references/useTimestamp.md +89 -0
  617. package/skills/vueuse-functions/references/useTitle.md +113 -0
  618. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  619. package/skills/vueuse-functions/references/useToString.md +34 -0
  620. package/skills/vueuse-functions/references/useToggle.md +103 -0
  621. package/skills/vueuse-functions/references/useTransition.md +265 -0
  622. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  623. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  624. package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  625. package/skills/vueuse-functions/references/useVModel.md +182 -0
  626. package/skills/vueuse-functions/references/useVModels.md +67 -0
  627. package/skills/vueuse-functions/references/useVibrate.md +87 -0
  628. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  629. package/skills/vueuse-functions/references/useWakeLock.md +50 -0
  630. package/skills/vueuse-functions/references/useWebNotification.md +176 -0
  631. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  632. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  633. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  634. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  635. package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
  636. package/skills/vueuse-functions/references/useWindowSize.md +76 -0
  637. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  638. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  639. package/skills/vueuse-functions/references/watchArray.md +53 -0
  640. package/skills/vueuse-functions/references/watchAtMost.md +55 -0
  641. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  642. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  643. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  644. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  645. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  646. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  647. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  648. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  649. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  650. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  651. package/skills/vueuse-functions/references/whenever.md +100 -0
  652. package/skills/web-design-guidelines/SKILL.md +39 -0
  653. package/skills/web-design-guidelines/SYNC.md +5 -0
  654. package/tsconfig.json +17 -0
@@ -0,0 +1,172 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useBreakpoints
6
+
7
+ Reactive viewport breakpoints.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'
13
+
14
+ const breakpoints = useBreakpoints(breakpointsTailwind)
15
+
16
+ const smAndLarger = breakpoints.greaterOrEqual('sm') // sm and larger
17
+ const largerThanSm = breakpoints.greater('sm') // only larger than sm
18
+ const lgAndSmaller = breakpoints.smallerOrEqual('lg') // lg and smaller
19
+ const smallerThanLg = breakpoints.smaller('lg') // only smaller than lg
20
+ ```
21
+
22
+ ```vue
23
+ <script setup lang="ts">
24
+ import { useBreakpoints } from '@vueuse/core'
25
+
26
+ const breakpoints = useBreakpoints({
27
+ mobile: 0, // optional
28
+ tablet: 640,
29
+ laptop: 1024,
30
+ desktop: 1280,
31
+ })
32
+
33
+ // Can be 'mobile' or 'tablet' or 'laptop' or 'desktop'
34
+ const activeBreakpoint = breakpoints.active()
35
+
36
+ // true or false
37
+ const laptop = breakpoints.between('laptop', 'desktop')
38
+ </script>
39
+
40
+ <template>
41
+ <div :class="activeBreakpoint">
42
+ ...
43
+ </div>
44
+ </template>
45
+ ```
46
+
47
+ ### Shortcut Methods
48
+
49
+ You can access breakpoints directly as properties on the returned object. These return reactive refs.
50
+
51
+ ```ts
52
+ const breakpoints = useBreakpoints({
53
+ tablet: 640,
54
+ laptop: 1024,
55
+ })
56
+
57
+ // Equivalent to breakpoints.greaterOrEqual('tablet') with min-width strategy
58
+ const isTablet = breakpoints.tablet
59
+ ```
60
+
61
+ ### Strategy
62
+
63
+ The `strategy` option controls how the shortcut properties behave:
64
+
65
+ - `min-width` (default, mobile-first): `breakpoints.lg` is `true` when viewport is `>= lg`
66
+ - `max-width` (desktop-first): `breakpoints.lg` is `true` when viewport is `< xl`
67
+
68
+ ```ts
69
+ const breakpoints = useBreakpoints(breakpointsTailwind, {
70
+ strategy: 'max-width', // desktop-first
71
+ })
72
+ ```
73
+
74
+ ### Available Methods
75
+
76
+ | Method | Description |
77
+ | --------------------- | -------------------------------------------------------- |
78
+ | `greaterOrEqual(k)` | Reactive: viewport width >= breakpoint |
79
+ | `greater(k)` | Reactive: viewport width > breakpoint |
80
+ | `smallerOrEqual(k)` | Reactive: viewport width <= breakpoint |
81
+ | `smaller(k)` | Reactive: viewport width < breakpoint |
82
+ | `between(a, b)` | Reactive: viewport width between a and b |
83
+ | `isGreaterOrEqual(k)` | Non-reactive: returns boolean immediately |
84
+ | `isGreater(k)` | Non-reactive: returns boolean immediately |
85
+ | `isSmallerOrEqual(k)` | Non-reactive: returns boolean immediately |
86
+ | `isSmaller(k)` | Non-reactive: returns boolean immediately |
87
+ | `isInBetween(a, b)` | Non-reactive: returns boolean immediately |
88
+ | `current()` | Returns computed array of all matching breakpoints |
89
+ | `active()` | Returns computed string of the current active breakpoint |
90
+
91
+ #### Server Side Rendering and Nuxt
92
+
93
+ If you are using `useBreakpoints` with SSR enabled, then you need to specify which screen size you would like to render on the server and before hydration to avoid an hydration mismatch
94
+
95
+ ```ts
96
+ import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'
97
+
98
+ const breakpoints = useBreakpoints(breakpointsTailwind, {
99
+ ssrWidth: 768 // Will enable SSR mode and render like if the screen was 768px wide
100
+ })
101
+ ```
102
+
103
+ Alternatively you can set this up globally for your app using [`provideSSRWidth`](../useSSRWidth/index.md)
104
+
105
+ ## Presets
106
+
107
+ - Tailwind: `breakpointsTailwind`
108
+ - Bootstrap v5: `breakpointsBootstrapV5`
109
+ - Vuetify v2: `breakpointsVuetifyV2` (deprecated: `breakpointsVuetify`)
110
+ - Vuetify v3: `breakpointsVuetifyV3`
111
+ - Ant Design: `breakpointsAntDesign`
112
+ - Quasar v2: `breakpointsQuasar`
113
+ - Sematic: `breakpointsSematic`
114
+ - Master CSS: `breakpointsMasterCss`
115
+ - Prime Flex: `breakpointsPrimeFlex`
116
+ - ElementUI / ElementPlus: `breakpointsElement`
117
+
118
+ _Breakpoint presets are deliberately not auto-imported, as they do not start with `use` to have the scope of VueUse. They have to be explicitly imported:_
119
+
120
+ ```js
121
+ import { breakpointsTailwind } from '@vueuse/core'
122
+ // and so on
123
+ ```
124
+
125
+ ## Type Declarations
126
+
127
+ ```ts
128
+ export * from "./breakpoints"
129
+ export type Breakpoints<K extends string = string> = Record<
130
+ K,
131
+ MaybeRefOrGetter<number | string>
132
+ >
133
+ export interface UseBreakpointsOptions extends ConfigurableWindow {
134
+ /**
135
+ * The query strategy to use for the generated shortcut methods like `.lg`
136
+ *
137
+ * 'min-width' - .lg will be true when the viewport is greater than or equal to the lg breakpoint (mobile-first)
138
+ * 'max-width' - .lg will be true when the viewport is smaller than the xl breakpoint (desktop-first)
139
+ *
140
+ * @default "min-width"
141
+ */
142
+ strategy?: "min-width" | "max-width"
143
+ ssrWidth?: number
144
+ }
145
+ /**
146
+ * Reactively viewport breakpoints
147
+ *
148
+ * @see https://vueuse.org/useBreakpoints
149
+ *
150
+ * @__NO_SIDE_EFFECTS__
151
+ */
152
+ export declare function useBreakpoints<K extends string>(
153
+ breakpoints: Breakpoints<K>,
154
+ options?: UseBreakpointsOptions,
155
+ ): Record<K, ComputedRef<boolean>> & {
156
+ greaterOrEqual: (k: MaybeRefOrGetter<K>) => ComputedRef<boolean>
157
+ smallerOrEqual: (k: MaybeRefOrGetter<K>) => ComputedRef<boolean>
158
+ greater(k: MaybeRefOrGetter<K>): ComputedRef<boolean>
159
+ smaller(k: MaybeRefOrGetter<K>): ComputedRef<boolean>
160
+ between(a: MaybeRefOrGetter<K>, b: MaybeRefOrGetter<K>): ComputedRef<boolean>
161
+ isGreater(k: MaybeRefOrGetter<K>): boolean
162
+ isGreaterOrEqual(k: MaybeRefOrGetter<K>): boolean
163
+ isSmaller(k: MaybeRefOrGetter<K>): boolean
164
+ isSmallerOrEqual(k: MaybeRefOrGetter<K>): boolean
165
+ isInBetween(a: MaybeRefOrGetter<K>, b: MaybeRefOrGetter<K>): boolean
166
+ current: () => ComputedRef<K[]>
167
+ active(): ComputedRef<"" | K>
168
+ }
169
+ export type UseBreakpointsReturn<K extends string = string> = ReturnType<
170
+ typeof useBreakpoints<K>
171
+ >
172
+ ```
@@ -0,0 +1,74 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useBroadcastChannel
6
+
7
+ Reactive [BroadcastChannel API](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel).
8
+
9
+ Closes a broadcast channel automatically component unmounted.
10
+
11
+ ## Usage
12
+
13
+ The BroadcastChannel interface represents a named channel that any browsing
14
+ context of a given origin can subscribe to. It allows communication between
15
+ different documents (in different windows, tabs, frames, or iframes) of the
16
+ same origin.
17
+
18
+ Messages are broadcasted via a message event fired at all BroadcastChannel
19
+ objects listening to the channel.
20
+
21
+ ```ts
22
+ import { useBroadcastChannel } from '@vueuse/core'
23
+ import { shallowRef } from 'vue'
24
+
25
+ const {
26
+ isSupported,
27
+ channel,
28
+ post,
29
+ close,
30
+ error,
31
+ isClosed,
32
+ } = useBroadcastChannel({ name: 'vueuse-demo-channel' })
33
+
34
+ const message = shallowRef('')
35
+
36
+ message.value = 'Hello, VueUse World!'
37
+
38
+ // Post the message to the broadcast channel:
39
+ post(message.value)
40
+
41
+ // Option to close the channel if you wish:
42
+ close()
43
+ ```
44
+
45
+ ## Type Declarations
46
+
47
+ ```ts
48
+ export interface UseBroadcastChannelOptions extends ConfigurableWindow {
49
+ /**
50
+ * The name of the channel.
51
+ */
52
+ name: string
53
+ }
54
+ /**
55
+ * Reactive BroadcastChannel
56
+ *
57
+ * @see https://vueuse.org/useBroadcastChannel
58
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel
59
+ * @param options
60
+ *
61
+ */
62
+ export declare function useBroadcastChannel<D, P>(
63
+ options: UseBroadcastChannelOptions,
64
+ ): UseBroadcastChannelReturn<D, P>
65
+ export interface UseBroadcastChannelReturn<D, P> {
66
+ isSupported: ComputedRef<boolean>
67
+ channel: Ref<BroadcastChannel | undefined>
68
+ data: Ref<D>
69
+ post: (data: P) => void
70
+ close: () => void
71
+ error: ShallowRef<Event | null>
72
+ isClosed: ShallowRef<boolean>
73
+ }
74
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useBrowserLocation
6
+
7
+ Reactive browser location
8
+
9
+ > NOTE: If you're using Vue Router, use [`useRoute`](https://router.vuejs.org/guide/advanced/composition-api.html) provided by Vue Router instead.
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import { useBrowserLocation } from '@vueuse/core'
15
+
16
+ const location = useBrowserLocation()
17
+ ```
18
+
19
+ ## Component Usage
20
+
21
+ ```vue
22
+ <UseBrowserLocation v-slot="location">
23
+ Browser Location: {{ location }}
24
+ </UseBrowserLocation>
25
+ ```
26
+
27
+ ## Type Declarations
28
+
29
+ ```ts
30
+ export interface BrowserLocationState {
31
+ readonly trigger: string
32
+ readonly state?: any
33
+ readonly length?: number
34
+ readonly origin?: string
35
+ hash?: string
36
+ host?: string
37
+ hostname?: string
38
+ href?: string
39
+ pathname?: string
40
+ port?: string
41
+ protocol?: string
42
+ search?: string
43
+ }
44
+ /**
45
+ * Reactive browser location.
46
+ *
47
+ * @see https://vueuse.org/useBrowserLocation
48
+ *
49
+ * @__NO_SIDE_EFFECTS__
50
+ */
51
+ export declare function useBrowserLocation(options?: ConfigurableWindow): Ref<
52
+ {
53
+ readonly trigger: string
54
+ readonly state?: any
55
+ readonly length?: number | undefined
56
+ readonly origin?: string | undefined
57
+ hash?: string | undefined
58
+ host?: string | undefined
59
+ hostname?: string | undefined
60
+ href?: string | undefined
61
+ pathname?: string | undefined
62
+ port?: string | undefined
63
+ protocol?: string | undefined
64
+ search?: string | undefined
65
+ },
66
+ | BrowserLocationState
67
+ | {
68
+ readonly trigger: string
69
+ readonly state?: any
70
+ readonly length?: number | undefined
71
+ readonly origin?: string | undefined
72
+ hash?: string | undefined
73
+ host?: string | undefined
74
+ hostname?: string | undefined
75
+ href?: string | undefined
76
+ pathname?: string | undefined
77
+ port?: string | undefined
78
+ protocol?: string | undefined
79
+ search?: string | undefined
80
+ }
81
+ >
82
+ export type UseBrowserLocationReturn = ReturnType<typeof useBrowserLocation>
83
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ category: Utilities
3
+ ---
4
+
5
+ # useCached
6
+
7
+ Cache a ref with a custom comparator.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useCached } from '@vueuse/core'
13
+ import { shallowRef } from 'vue'
14
+
15
+ interface Data {
16
+ value: number
17
+ extra: number
18
+ }
19
+
20
+ const source = shallowRef<Data>({ value: 42, extra: 0 })
21
+ const cached = useCached(source, (a, b) => a.value === b.value)
22
+
23
+ source.value = {
24
+ value: 42,
25
+ extra: 1,
26
+ }
27
+
28
+ console.log(cached.value) // { value: 42, extra: 0 }
29
+
30
+ source.value = {
31
+ value: 43,
32
+ extra: 1,
33
+ }
34
+
35
+ console.log(cached.value) // { value: 43, extra: 1 }
36
+ ```
37
+
38
+ ## Type Declarations
39
+
40
+ ```ts
41
+ export interface UseCachedOptions<D extends boolean = true>
42
+ extends ConfigurableDeepRefs<D>, WatchOptions {}
43
+ export declare function useCached<T, D extends boolean = true>(
44
+ refValue: Ref<T>,
45
+ comparator?: (a: T, b: T) => boolean,
46
+ options?: UseCachedOptions<D>,
47
+ ): UseCachedReturn<T, D>
48
+ export type UseCachedReturn<
49
+ T = any,
50
+ D extends boolean = true,
51
+ > = ShallowOrDeepRef<T, D>
52
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ category: '@Math'
3
+ ---
4
+
5
+ # useCeil
6
+
7
+ Reactive `Math.ceil`
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useCeil } from '@vueuse/math'
13
+
14
+ const value = ref(0.95)
15
+ const result = useCeil(value) // 1
16
+ ```
17
+
18
+ ## Type Declarations
19
+
20
+ ```ts
21
+ /**
22
+ * Reactive `Math.ceil`.
23
+ *
24
+ * @see https://vueuse.org/useCeil
25
+ *
26
+ * @__NO_SIDE_EFFECTS__
27
+ */
28
+ export declare function useCeil(
29
+ value: MaybeRefOrGetter<number>,
30
+ ): ComputedRef<number>
31
+ ```
@@ -0,0 +1,79 @@
1
+ ---
2
+ category: '@Integrations'
3
+ ---
4
+
5
+ # useChangeCase
6
+
7
+ Reactive wrapper for [`change-case`](https://github.com/blakeembrey/change-case).
8
+
9
+ Subsitutes `useCamelCase`, `usePascalCase`, `useSnakeCase`, `useSentenceCase`, `useCapitalize`, etc.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm i change-case@^5
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```ts
20
+ import { useChangeCase } from '@vueuse/integrations/useChangeCase'
21
+
22
+ // `changeCase` will be a computed
23
+ const changeCase = useChangeCase('hello world', 'camelCase')
24
+ changeCase.value // helloWorld
25
+ changeCase.value = 'vue use'
26
+ changeCase.value // vueUse
27
+ // Supported methods
28
+ // export {
29
+ // camelCase,
30
+ // capitalCase,
31
+ // constantCase,
32
+ // dotCase,
33
+ // headerCase,
34
+ // noCase,
35
+ // paramCase,
36
+ // pascalCase,
37
+ // pathCase,
38
+ // sentenceCase,
39
+ // snakeCase,
40
+ // } from 'change-case'
41
+ ```
42
+
43
+ or passing a `ref` to it, the returned `computed` will change along with the source ref's changes.
44
+
45
+ Can be passed into `options` for customization
46
+
47
+ ```ts
48
+ import { useChangeCase } from '@vueuse/integrations/useChangeCase'
49
+ import { shallowRef } from 'vue'
50
+
51
+ const input = shallowRef('helloWorld')
52
+ const changeCase = useChangeCase(input, 'camelCase', {
53
+ delimiter: '-',
54
+ })
55
+ changeCase.value // hello-World
56
+ input.value = 'vue use'
57
+ changeCase.value // vue-Use
58
+ ```
59
+
60
+ ## Type Declarations
61
+
62
+ ```ts
63
+ type EndsWithCase<T> = T extends `${infer _}Case` ? T : never
64
+ type FilterKeys<T> = {
65
+ [K in keyof T as K extends string ? K : never]: EndsWithCase<K>
66
+ }
67
+ type ChangeCaseKeys = FilterKeys<typeof changeCase>
68
+ export type ChangeCaseType = ChangeCaseKeys[keyof ChangeCaseKeys]
69
+ export declare function useChangeCase(
70
+ input: MaybeRef<string>,
71
+ type: MaybeRefOrGetter<ChangeCaseType>,
72
+ options?: MaybeRefOrGetter<Options> | undefined,
73
+ ): WritableComputedRef<string>
74
+ export declare function useChangeCase(
75
+ input: MaybeRefOrGetter<string>,
76
+ type: MaybeRefOrGetter<ChangeCaseType>,
77
+ options?: MaybeRefOrGetter<Options> | undefined,
78
+ ): ComputedRef<string>
79
+ ```
@@ -0,0 +1,85 @@
1
+ ---
2
+ category: '@Math'
3
+ ---
4
+
5
+ # useClamp
6
+
7
+ Reactively clamp a value between two other values.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useClamp } from '@vueuse/math'
13
+
14
+ const min = shallowRef(0)
15
+ const max = shallowRef(10)
16
+ const value = useClamp(0, min, max)
17
+ ```
18
+
19
+ ### Writable Ref
20
+
21
+ When you pass a mutable `ref`, the returned value is a **writable computed** that clamps values when setting:
22
+
23
+ ```ts
24
+ import { useClamp } from '@vueuse/math'
25
+
26
+ const number = shallowRef(0)
27
+ const clamped = useClamp(number, 0, 10)
28
+
29
+ clamped.value = 15 // clamped.value will be 10
30
+ clamped.value = -5 // clamped.value will be 0
31
+ ```
32
+
33
+ ### Read-only Mode
34
+
35
+ When you pass a getter function or readonly ref, the returned value is a read-only computed:
36
+
37
+ ```ts
38
+ import { useClamp } from '@vueuse/math'
39
+
40
+ const value = ref(5)
41
+ const clamped = useClamp(() => value.value * 2, 0, 10)
42
+
43
+ // clamped.value is computed from the getter
44
+ ```
45
+
46
+ ### Reactive Bounds
47
+
48
+ All arguments (value, min, max) can be reactive:
49
+
50
+ ```ts
51
+ import { useClamp } from '@vueuse/math'
52
+
53
+ const value = shallowRef(5)
54
+ const min = shallowRef(0)
55
+ const max = shallowRef(10)
56
+
57
+ const clamped = useClamp(value, min, max)
58
+
59
+ max.value = 3 // clamped.value automatically becomes 3
60
+ ```
61
+
62
+ ## Type Declarations
63
+
64
+ ```ts
65
+ /**
66
+ * Reactively clamp a value between two other values.
67
+ *
68
+ * @see https://vueuse.org/useClamp
69
+ * @param value number
70
+ * @param min
71
+ * @param max
72
+ *
73
+ * @__NO_SIDE_EFFECTS__
74
+ */
75
+ export declare function useClamp(
76
+ value: ReadonlyRefOrGetter<number>,
77
+ min: MaybeRefOrGetter<number>,
78
+ max: MaybeRefOrGetter<number>,
79
+ ): ComputedRef<number>
80
+ export declare function useClamp(
81
+ value: MaybeRefOrGetter<number>,
82
+ min: MaybeRefOrGetter<number>,
83
+ max: MaybeRefOrGetter<number>,
84
+ ): Ref<number>
85
+ ```
@@ -0,0 +1,123 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useClipboard
6
+
7
+ Reactive [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API). Provides the ability to respond to clipboard commands (cut, copy, and paste) as well as to asynchronously read from and write to the system clipboard. Access to the contents of the clipboard is gated behind the [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API). Without user permission, reading or altering the clipboard contents is not permitted.
8
+
9
+ <CourseLink href="https://vueschool.io/lessons/reactive-browser-wrappers-in-vueuse-useclipboard?friend=vueuse">Learn how to reactively save text to the clipboard with this FREE video lesson from Vue School!</CourseLink>
10
+
11
+ ## Usage
12
+
13
+ ```vue
14
+ <script setup lang="ts">
15
+ import { useClipboard } from '@vueuse/core'
16
+
17
+ const source = ref('Hello')
18
+ const { text, copy, copied, isSupported } = useClipboard({ source })
19
+ </script>
20
+
21
+ <template>
22
+ <div v-if="isSupported">
23
+ <button @click="copy(source)">
24
+ <!-- by default, `copied` will be reset in 1.5s -->
25
+ <span v-if="!copied">Copy</span>
26
+ <span v-else>Copied!</span>
27
+ </button>
28
+ <p>Current copied: <code>{{ text || 'none' }}</code></p>
29
+ </div>
30
+ <p v-else>
31
+ Your browser does not support Clipboard API
32
+ </p>
33
+ </template>
34
+ ```
35
+
36
+ ### Options
37
+
38
+ | Option | Type | Default | Description |
39
+ | -------------- | -------------------------- | ------- | ----------------------------------------------------------------- |
40
+ | `source` | `MaybeRefOrGetter<string>` | — | Default content to copy when `copy()` is called without arguments |
41
+ | `read` | `boolean` | `false` | Enable reading clipboard content on copy/cut events |
42
+ | `copiedDuring` | `number` | `1500` | Milliseconds before `copied` resets to `false` |
43
+ | `legacy` | `boolean` | `false` | Fallback to `document.execCommand` if Clipboard API unavailable |
44
+
45
+ ### Return Values
46
+
47
+ | Property | Type | Description |
48
+ | ------------- | ---------------------------------- | ------------------------------------------------- |
49
+ | `isSupported` | `ComputedRef<boolean>` | Whether clipboard is supported (native or legacy) |
50
+ | `text` | `Ref<string>` | Current clipboard content (when `read: true`) |
51
+ | `copied` | `Ref<boolean>` | `true` after successful copy, auto-resets |
52
+ | `copy` | `(text?: string) => Promise<void>` | Copy text to clipboard |
53
+
54
+ ### Legacy Mode
55
+
56
+ Set `legacy: true` to keep the ability to copy if [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API) is not available. It will handle copy with [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) as fallback.
57
+
58
+ ```ts
59
+ const { copy, isSupported } = useClipboard({ legacy: true })
60
+ ```
61
+
62
+ ## Component Usage
63
+
64
+ ```vue
65
+ <template>
66
+ <UseClipboard v-slot="{ copy, copied }" source="copy me">
67
+ <button @click="copy()">
68
+ {{ copied ? 'Copied' : 'Copy' }}
69
+ </button>
70
+ </UseClipboard>
71
+ </template>
72
+ ```
73
+
74
+ ## Type Declarations
75
+
76
+ ```ts
77
+ export interface UseClipboardOptions<Source> extends ConfigurableNavigator {
78
+ /**
79
+ * Enabled reading for clipboard
80
+ *
81
+ * @default false
82
+ */
83
+ read?: boolean
84
+ /**
85
+ * Copy source
86
+ */
87
+ source?: Source
88
+ /**
89
+ * Milliseconds to reset state of `copied` ref
90
+ *
91
+ * @default 1500
92
+ */
93
+ copiedDuring?: number
94
+ /**
95
+ * Whether fallback to document.execCommand('copy') if clipboard is undefined.
96
+ *
97
+ * @default false
98
+ */
99
+ legacy?: boolean
100
+ }
101
+ export interface UseClipboardReturn<Optional> {
102
+ isSupported: ComputedRef<boolean>
103
+ text: Readonly<ShallowRef<string>>
104
+ copied: Readonly<ShallowRef<boolean>>
105
+ copy: Optional extends true
106
+ ? (text?: string) => Promise<void>
107
+ : (text: string) => Promise<void>
108
+ }
109
+ /**
110
+ * Reactive Clipboard API.
111
+ *
112
+ * @see https://vueuse.org/useClipboard
113
+ * @param options
114
+ *
115
+ * @__NO_SIDE_EFFECTS__
116
+ */
117
+ export declare function useClipboard(
118
+ options?: UseClipboardOptions<undefined>,
119
+ ): UseClipboardReturn<false>
120
+ export declare function useClipboard(
121
+ options: UseClipboardOptions<MaybeRefOrGetter<string>>,
122
+ ): UseClipboardReturn<true>
123
+ ```