@md-plugins/quasar-app-extension-q-press 0.1.0-alpha.10

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 (200) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +230 -0
  3. package/old/prompts.js +44 -0
  4. package/old/uninstall.js +9 -0
  5. package/package.json +60 -0
  6. package/scripts/build.js +33 -0
  7. package/src/index.js +63 -0
  8. package/src/install.js +49 -0
  9. package/src/templates/.gitkeep +0 -0
  10. package/src/templates/init/src/_q-press/.gitkeep +0 -0
  11. package/src/templates/init/src/_q-press/api/components/DarkModeToggle.json +37 -0
  12. package/src/templates/init/src/_q-press/api/components/MarkdownApi.json +67 -0
  13. package/src/templates/init/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  14. package/src/templates/init/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  15. package/src/templates/init/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  16. package/src/templates/init/src/_q-press/api/components/MarkdownCode.json +37 -0
  17. package/src/templates/init/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  18. package/src/templates/init/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  19. package/src/templates/init/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  20. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  21. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  22. package/src/templates/init/src/_q-press/api/components/MarkdownExample.json +22 -0
  23. package/src/templates/init/src/_q-press/api/components/MarkdownHeader.json +28 -0
  24. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  25. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  26. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  27. package/src/templates/init/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  28. package/src/templates/init/src/_q-press/api/components/MarkdownLayout.json +52 -0
  29. package/src/templates/init/src/_q-press/api/components/MarkdownLink.json +23 -0
  30. package/src/templates/init/src/_q-press/api/components/MarkdownPage.json +71 -0
  31. package/src/templates/init/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  32. package/src/templates/init/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  33. package/src/templates/init/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  34. package/src/templates/init/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  35. package/src/templates/init/src/_q-press/api/components/MarkdownTree.json +27 -0
  36. package/src/templates/init/src/_q-press/api/composables/dark.json +29 -0
  37. package/src/templates/init/src/_q-press/api/composables/scroll.json +34 -0
  38. package/src/templates/init/src/_q-press/assets/get-meta.ts +29 -0
  39. package/src/templates/init/src/_q-press/components/DarkModeToggle.vue +105 -0
  40. package/src/templates/init/src/_q-press/components/MarkdownApi.vue +588 -0
  41. package/src/templates/init/src/_q-press/components/MarkdownApiEntry.ts +594 -0
  42. package/src/templates/init/src/_q-press/components/MarkdownCardLink.vue +25 -0
  43. package/src/templates/init/src/_q-press/components/MarkdownCardTitle.vue +21 -0
  44. package/src/templates/init/src/_q-press/components/MarkdownCode.vue +25 -0
  45. package/src/templates/init/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  46. package/src/templates/init/src/_q-press/components/MarkdownCodepen.vue +183 -0
  47. package/src/templates/init/src/_q-press/components/MarkdownCopyButton.vue +104 -0
  48. package/src/templates/init/src/_q-press/components/MarkdownExample.vue +221 -0
  49. package/src/templates/init/src/_q-press/components/MarkdownInstallation.vue +166 -0
  50. package/src/templates/init/src/_q-press/components/MarkdownLink.vue +38 -0
  51. package/src/templates/init/src/_q-press/components/MarkdownPrerender.ts +82 -0
  52. package/src/templates/init/src/_q-press/components/MarkdownTree.vue +105 -0
  53. package/src/templates/init/src/_q-press/components/markdown-utils.ts +105 -0
  54. package/src/templates/init/src/_q-press/composables/dark.ts +39 -0
  55. package/src/templates/init/src/_q-press/composables/scroll.ts +115 -0
  56. package/src/templates/init/src/_q-press/css/app.scss +662 -0
  57. package/src/templates/init/src/_q-press/css/fonts.scss +100 -0
  58. package/src/templates/init/src/_q-press/css/prism-theme.scss +298 -0
  59. package/src/templates/init/src/_q-press/css/themes/default.scss +68 -0
  60. package/src/templates/init/src/_q-press/css/themes/newspaper.scss +69 -0
  61. package/src/templates/init/src/_q-press/css/themes/sunrise.scss +67 -0
  62. package/src/templates/init/src/_q-press/css/themes/tawny.scss +69 -0
  63. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  64. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  65. package/src/templates/init/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  66. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +31 -0
  67. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderMenu.ts +93 -0
  68. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +37 -0
  69. package/src/templates/init/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  70. package/src/templates/init/src/_q-press/layouts/MarkdownPage.vue +307 -0
  71. package/src/templates/init/src/_q-press/layouts/MarkdownPageFooter.vue +187 -0
  72. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  73. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  74. package/src/templates/init/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  75. package/src/templates/init/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  76. package/src/templates/init/src/_q-press/stores/markdown.ts +101 -0
  77. package/src/templates/init/src/components/LandingPage/LandingPage.vue +341 -0
  78. package/src/templates/init/src/components/Releases/PackageReleases.vue +164 -0
  79. package/src/templates/init/src/components/Releases/PublicReleases.vue +149 -0
  80. package/src/templates/init/src/components/Releases/ReleasesAvailable.vue +74 -0
  81. package/src/templates/init/src/examples/QAvatar/BasicExample.vue +11 -0
  82. package/src/templates/init/src/markdown/__elements.md +548 -0
  83. package/src/templates/init/src/markdown/__elements2.md +347 -0
  84. package/src/templates/init/src/markdown/faq/best-practices.md +0 -0
  85. package/src/templates/init/src/markdown/faq/general.md +0 -0
  86. package/src/templates/init/src/markdown/faq/troubleshooting.md +0 -0
  87. package/src/templates/init/src/markdown/getting-started/introduction.md +67 -0
  88. package/src/templates/init/src/markdown/guides/contributing.md +101 -0
  89. package/src/templates/init/src/markdown/guides/faq.md +115 -0
  90. package/src/templates/init/src/markdown/guides/release-notes.md +0 -0
  91. package/src/templates/init/src/markdown/guides/style-guide.md +0 -0
  92. package/src/templates/init/src/markdown/landing-page.md +11 -0
  93. package/src/templates/init/src/markdown/listing.ts +3 -0
  94. package/src/templates/init/src/markdown/md-plugins/blockquote/advanced.md +83 -0
  95. package/src/templates/init/src/markdown/md-plugins/blockquote/overview.md +183 -0
  96. package/src/templates/init/src/markdown/md-plugins/codeblocks/advanced.md +210 -0
  97. package/src/templates/init/src/markdown/md-plugins/codeblocks/overview.md +616 -0
  98. package/src/templates/init/src/markdown/md-plugins/containers/advanced.md +301 -0
  99. package/src/templates/init/src/markdown/md-plugins/containers/overview.md +206 -0
  100. package/src/templates/init/src/markdown/md-plugins/frontmatter/advanced.md +164 -0
  101. package/src/templates/init/src/markdown/md-plugins/frontmatter/overview.md +131 -0
  102. package/src/templates/init/src/markdown/md-plugins/headers/advanced.md +236 -0
  103. package/src/templates/init/src/markdown/md-plugins/headers/overview.md +134 -0
  104. package/src/templates/init/src/markdown/md-plugins/image/advanced.md +114 -0
  105. package/src/templates/init/src/markdown/md-plugins/image/overview.md +124 -0
  106. package/src/templates/init/src/markdown/md-plugins/imports/advanced.md +105 -0
  107. package/src/templates/init/src/markdown/md-plugins/imports/overview.md +80 -0
  108. package/src/templates/init/src/markdown/md-plugins/inline-code/advanced.md +133 -0
  109. package/src/templates/init/src/markdown/md-plugins/inline-code/overview.md +101 -0
  110. package/src/templates/init/src/markdown/md-plugins/link/advanced.md +157 -0
  111. package/src/templates/init/src/markdown/md-plugins/link/overview.md +126 -0
  112. package/src/templates/init/src/markdown/md-plugins/shared/overview.md +175 -0
  113. package/src/templates/init/src/markdown/md-plugins/table/advanced.md +190 -0
  114. package/src/templates/init/src/markdown/md-plugins/table/overview.md +186 -0
  115. package/src/templates/init/src/markdown/md-plugins/title/advanced.md +88 -0
  116. package/src/templates/init/src/markdown/md-plugins/title/overview.md +99 -0
  117. package/src/templates/init/src/markdown/other/release-notes.md +12 -0
  118. package/src/templates/init/src/markdown/privacy-policy.md +12 -0
  119. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/advanced.md +101 -0
  120. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/components.md +69 -0
  121. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/overview.md +254 -0
  122. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/themes.md +4 -0
  123. package/src/templates/init/src/markdown/quasar-app-extensions/vitemdpluginappext/advanced.md +4 -0
  124. package/src/templates/init/src/markdown/quasar-app-extensions/vitemdpluginappext/overview.md +103 -0
  125. package/src/templates/init/src/markdown/vite-plugins/index.md +6 -0
  126. package/src/templates/init/src/markdown/vite-plugins/viteexamplesplugin/advanced.md +138 -0
  127. package/src/templates/init/src/markdown/vite-plugins/viteexamplesplugin/overview.md +88 -0
  128. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/advanced.md +226 -0
  129. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/index.md +6 -0
  130. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/overview.md +166 -0
  131. package/src/templates/init/src/q-press.globals.d.ts +36 -0
  132. package/src/templates/init/src/siteConfig/index.ts +440 -0
  133. package/src/templates/update/src/_q-press/.gitkeep +0 -0
  134. package/src/templates/update/src/_q-press/api/components/DarkModeToggle.json +37 -0
  135. package/src/templates/update/src/_q-press/api/components/MarkdownApi.json +67 -0
  136. package/src/templates/update/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  137. package/src/templates/update/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  138. package/src/templates/update/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  139. package/src/templates/update/src/_q-press/api/components/MarkdownCode.json +37 -0
  140. package/src/templates/update/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  141. package/src/templates/update/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  142. package/src/templates/update/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  143. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  144. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  145. package/src/templates/update/src/_q-press/api/components/MarkdownExample.json +22 -0
  146. package/src/templates/update/src/_q-press/api/components/MarkdownHeader.json +28 -0
  147. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  148. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  149. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  150. package/src/templates/update/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  151. package/src/templates/update/src/_q-press/api/components/MarkdownLayout.json +52 -0
  152. package/src/templates/update/src/_q-press/api/components/MarkdownLink.json +23 -0
  153. package/src/templates/update/src/_q-press/api/components/MarkdownPage.json +71 -0
  154. package/src/templates/update/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  155. package/src/templates/update/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  156. package/src/templates/update/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  157. package/src/templates/update/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  158. package/src/templates/update/src/_q-press/api/components/MarkdownTree.json +27 -0
  159. package/src/templates/update/src/_q-press/api/composables/dark.json +29 -0
  160. package/src/templates/update/src/_q-press/api/composables/scroll.json +34 -0
  161. package/src/templates/update/src/_q-press/assets/get-meta.ts +29 -0
  162. package/src/templates/update/src/_q-press/components/DarkModeToggle.vue +105 -0
  163. package/src/templates/update/src/_q-press/components/MarkdownApi.vue +588 -0
  164. package/src/templates/update/src/_q-press/components/MarkdownApiEntry.ts +594 -0
  165. package/src/templates/update/src/_q-press/components/MarkdownCardLink.vue +25 -0
  166. package/src/templates/update/src/_q-press/components/MarkdownCardTitle.vue +21 -0
  167. package/src/templates/update/src/_q-press/components/MarkdownCode.vue +25 -0
  168. package/src/templates/update/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  169. package/src/templates/update/src/_q-press/components/MarkdownCodepen.vue +183 -0
  170. package/src/templates/update/src/_q-press/components/MarkdownCopyButton.vue +104 -0
  171. package/src/templates/update/src/_q-press/components/MarkdownExample.vue +221 -0
  172. package/src/templates/update/src/_q-press/components/MarkdownInstallation.vue +166 -0
  173. package/src/templates/update/src/_q-press/components/MarkdownLink.vue +38 -0
  174. package/src/templates/update/src/_q-press/components/MarkdownPrerender.ts +82 -0
  175. package/src/templates/update/src/_q-press/components/MarkdownTree.vue +105 -0
  176. package/src/templates/update/src/_q-press/components/markdown-utils.ts +105 -0
  177. package/src/templates/update/src/_q-press/composables/dark.ts +39 -0
  178. package/src/templates/update/src/_q-press/composables/scroll.ts +115 -0
  179. package/src/templates/update/src/_q-press/css/app.scss +662 -0
  180. package/src/templates/update/src/_q-press/css/fonts.scss +100 -0
  181. package/src/templates/update/src/_q-press/css/prism-theme.scss +298 -0
  182. package/src/templates/update/src/_q-press/css/themes/default.scss +68 -0
  183. package/src/templates/update/src/_q-press/css/themes/newspaper.scss +69 -0
  184. package/src/templates/update/src/_q-press/css/themes/sunrise.scss +67 -0
  185. package/src/templates/update/src/_q-press/css/themes/tawny.scss +69 -0
  186. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  187. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  188. package/src/templates/update/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  189. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +31 -0
  190. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderMenu.ts +93 -0
  191. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +37 -0
  192. package/src/templates/update/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  193. package/src/templates/update/src/_q-press/layouts/MarkdownPage.vue +307 -0
  194. package/src/templates/update/src/_q-press/layouts/MarkdownPageFooter.vue +187 -0
  195. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  196. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  197. package/src/templates/update/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  198. package/src/templates/update/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  199. package/src/templates/update/src/_q-press/stores/markdown.ts +101 -0
  200. package/src/templates/update/src/q-press.globals.d.ts +36 -0
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <q-card flat bordered>
3
+ <q-card-section class="row no-wrap items-center" v-if="error">
4
+ <q-icon class="q-mr-md" name="warning" size="24px" color="negative" />
5
+ <div>Cannot fetch the release notes. Please use the links above instead.</div>
6
+ </q-card-section>
7
+
8
+ <q-card-section class="row no-wrap items-center" v-else-if="loading">
9
+ <q-spinner class="q-mr-md" size="24px" color="brand-primary" />
10
+ <div>Loading release notes...</div>
11
+ </q-card-section>
12
+
13
+ <template v-else>
14
+ <q-tabs class="header-tabs" v-model="currentPackage" no-caps align="left" active-color="brand-primary" indicator-color="brand-primary">
15
+ <q-tab v-for="packageName in packageList" class="header-btn" :name="packageName" :key="packageName">
16
+ {{ packageName }}
17
+ </q-tab>
18
+ </q-tabs>
19
+
20
+ <q-separator />
21
+
22
+ <q-tab-panels class="packages-container" v-model="currentPackage" animated>
23
+ <q-tab-panel class="q-pa-none" v-for="(packageReleases, packageName) in packages" :key="packageName" :name="packageName">
24
+ <PackageReleases :releases="packageReleases" />
25
+ </q-tab-panel>
26
+ </q-tab-panels>
27
+ </template>
28
+ </q-card>
29
+ </template>
30
+
31
+ <script setup>
32
+ import { ref, onMounted } from 'vue'
33
+ import { date } from 'quasar'
34
+
35
+ import PackageReleases from './PackageReleases.vue'
36
+
37
+ const { extractDate } = date
38
+
39
+ const loading = ref(true)
40
+ const error = ref(false)
41
+
42
+ const currentPackage = ref('quasar')
43
+ const packages = ref({})
44
+ const packageList = ref([])
45
+
46
+ function queryReleases () {
47
+ fetch('https://cdn.quasar.dev/release-notes/v2.json')
48
+ .then(response => response.json())
49
+ .then(data => {
50
+ const list = Object.keys(data)
51
+
52
+ for (const packageName of list) {
53
+ const target = data[ packageName ]
54
+ target.forEach(entry => {
55
+ entry.date = extractDate(entry.date, 'YYYY-MM-DD').toLocaleDateString()
56
+ })
57
+ }
58
+
59
+ packages.value = data
60
+ packageList.value = list
61
+
62
+ loading.value = false
63
+ })
64
+ .catch(err => {
65
+ console.error(err)
66
+ error.value = true
67
+ })
68
+ }
69
+
70
+ onMounted(() => { queryReleases() })
71
+ </script>
72
+
73
+ <style lang="sass">
74
+ </style>
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <div class="q-pa-md q-gutter-sm">
3
+ <q-avatar color="red" text-color="white" icon="directions" />
4
+ <q-avatar color="primary" text-color="white">J</q-avatar>
5
+ <q-avatar size="100px" font-size="52px" color="teal" text-color="white" icon="directions" />
6
+ <q-avatar size="24px" color="orange">J</q-avatar>
7
+ <q-avatar>
8
+ <img src="https://cdn.quasar.dev/img/avatar.png" />
9
+ </q-avatar>
10
+ </div>
11
+ </template>
@@ -0,0 +1,548 @@
1
+ ---
2
+ title: Design Elements
3
+ desc: The elements for doc design.
4
+ overline: Title overline
5
+ badge: title badge
6
+ examples: QAvatar
7
+ # related:
8
+ # - /style/spacing
9
+ # - /style/visibility
10
+ # - /layout/grid/column
11
+ # - /layout/grid/gutter
12
+ # - /layout/grid/flex-playground
13
+ scope:
14
+ tree:
15
+ l: '.'
16
+ c:
17
+ - l: public
18
+ e: Pure static assets (directly copied)
19
+ url: '/quasar-cli-vite/handling-assets#static-assets-public'
20
+ - l: src
21
+ c:
22
+ - l: assets/
23
+ e: Dynamic assets (processed by Vite)
24
+ url: '/quasar-cli-vite/handling-assets#regular-assets-src-assets'
25
+ - l: components/
26
+ e: '.vue components used in pages & layouts'
27
+ url: '/start/how-to-use-vue#vue-single-file-components-sfc-'
28
+ - l: css
29
+ e: CSS/Sass/... files for your app
30
+ c:
31
+ - l: app.sass
32
+ - l: quasar.variables.sass
33
+ e: Quasar Sass variables for you to tweak
34
+ url: '/style/sass-scss-variables'
35
+ - l: layouts/
36
+ e: Layout .vue files
37
+ url: '/layout/layout'
38
+ - l: pages/
39
+ e: Page .vue files
40
+ - l: boot/
41
+ e: Boot files (app initialization code)
42
+ url: '/quasar-cli-vite/boot-files'
43
+ - l: router
44
+ e: Vue Router
45
+ url: '/quasar-cli-vite/routing'
46
+ c:
47
+ - l: index.js
48
+ e: Vue Router definition
49
+ - l: routes.js
50
+ e: App Routes definitions
51
+ - l: stores
52
+ e: Pinia Stores
53
+ url: '/quasar-cli-vite/state-management-with-pinia'
54
+ c:
55
+ - l: index.js
56
+ e: Pinia initialization
57
+ - l: '<store>'
58
+ e: Pinia stores...
59
+ - l: '<store>...'
60
+ - l: App.vue
61
+ e: Root Vue component of your App
62
+ - l: index.html
63
+ e: Template for index.html
64
+ - l: src-ssr/
65
+ e: SSR specific code (like production Node webserver)
66
+ url: '/quasar-cli-vite/developing-ssr/introduction'
67
+ - l: src-electron/
68
+ e: Electron specific code (like "main" thread)
69
+ url: '/quasar-cli-vite/developing-electron-apps/introduction'
70
+ - l: src-bex/
71
+ e: BEX (browser extension) specific code (like "main" thread)
72
+ url: '/quasar-cli-vite/developing-browser-extensions/introduction'
73
+ ---
74
+
75
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
76
+
77
+ ## Heading H2
78
+
79
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
80
+
81
+ ### Heading H3
82
+
83
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
84
+
85
+ #### Heading H4
86
+
87
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
88
+
89
+ ##### Heading H5
90
+
91
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
92
+
93
+ ###### Heading H6
94
+
95
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `fugiat nulla` pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa [qui officia](/vue-components/badge) deserunt mollit anim id est laborum.
96
+
97
+ ### Heading with badge <q-badge label="badge" />
98
+
99
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua.
100
+
101
+ ## Containers
102
+
103
+ > For a full list of our `wonderful` people who make Quasar happen, visit the [Backers](https://github.com/quasarframework/quasar/blob/dev/backers.md) page.
104
+ > <br><br>
105
+ >
106
+ > - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
107
+ > - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will > also be forced upon QDrawer due to platform limitations that cannot be overcome.
108
+
109
+ ::: tip Tip container title
110
+ For a full list of our `wonderful` people who make Quasar happen, visit the [Backers](https://github.com/quasarframework/quasar/blob/dev/backers.md) page.
111
+ <br><br>
112
+
113
+ - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
114
+ - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will also be forced upon QDrawer due to platform limitations that cannot be overcome.
115
+ :::
116
+
117
+ ::: warning Warning container title
118
+ For a full list of our `wonderful` people who make Quasar happen, visit the [Backers](https://github.com/quasarframework/quasar/blob/dev/backers.md) page.
119
+ <br><br>
120
+
121
+ - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
122
+ - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will also be forced upon QDrawer due to platform limitations that cannot be overcome.
123
+ :::
124
+
125
+ ::: danger Danger container title
126
+ For a full list of our `wonderful` people who make Quasar happen, visit the [Backers](https://github.com/quasarframework/quasar/blob/dev/backers.md) page.
127
+ <br><br>
128
+
129
+ - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
130
+ - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will also be forced upon QDrawer due to platform limitations that cannot be overcome.
131
+ :::
132
+
133
+ ::: details Details container title
134
+ For a full list of our `wonderful` people who make Quasar happen, visit the [Backers](https://github.com/quasarframework/quasar/blob/dev/backers.md) page.
135
+ <br><br>
136
+
137
+ - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
138
+ - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will also be forced upon QDrawer due to platform limitations that cannot be overcome...
139
+ :::
140
+
141
+ ## Call to action button
142
+
143
+ <q-btn icon-right="launch" label="Layout Builder" href="/layout-builder" target="_blank" />
144
+
145
+ ## Keyboard tokens
146
+
147
+ - macOS: <kbd>Cmd</kbd> <kbd>Alt</kbd> <kbd>I</kbd> or <kbd>F12</kbd>
148
+ - Linux: <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>I</kbd> or <kbd>F12</kbd>
149
+ - Windows: <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>I</kbd> or <kbd>F12</kbd>
150
+
151
+ ## Code containers
152
+
153
+ ### markup
154
+
155
+ ````markup
156
+ ```js
157
+ export default function (ctx) { // can be async too
158
+ console.log(ctx)
159
+
160
+ // Example output on console:
161
+ {
162
+ dev: true,
163
+ prod: false [[! highlight]]
164
+ }
165
+
166
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
167
+ process.env.FOO // ✅ It can only replace direct usage like this
168
+
169
+ // context gets generated based on the parameters
170
+ // with which you run "quasar dev" or "quasar build"
171
+ }
172
+ ```
173
+ ````
174
+
175
+ ### Plain (internal highlight on `prod:`)
176
+
177
+ ```js
178
+ export default function (ctx) { // can be async too
179
+ console.log(ctx)
180
+
181
+ // Example output on console:
182
+ {
183
+ dev: true,
184
+ prod: false [[! highlight]]
185
+ }
186
+
187
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
188
+ process.env.FOO // ✅ It can only replace direct usage like this
189
+
190
+ // context gets generated based on the parameters
191
+ // with which you run "quasar dev" or "quasar build"
192
+ }
193
+ ```
194
+
195
+ ### Highlight [2,5]
196
+
197
+ ```js [highlight=2,5]
198
+ export default function (ctx) { // can be async too
199
+ console.log(ctx)
200
+
201
+ // Example output on console:
202
+ {
203
+ dev: true,
204
+ prod: false
205
+ }
206
+
207
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
208
+ process.env.FOO // ✅ It can only replace direct usage like this
209
+
210
+ // context gets generated based on the parameters
211
+ // with which you run "quasar dev" or "quasar build"
212
+ }
213
+ ```
214
+
215
+ ### Highlight [2,5,9,10] add [3,6-7] rem [15] with numbered lines
216
+
217
+ ```js [highlight=2,5,9,10 numbered add=3,6-7]
218
+ export default function (ctx) { // can be async too
219
+ console.log(ctx)
220
+
221
+ // Example output on console:
222
+ {
223
+ dev: true,
224
+ prod: false
225
+ }
226
+
227
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
228
+ process.env.FOO // ✅ It can only replace direct usage like this
229
+
230
+ // context gets generated based on the parameters
231
+ // with which you run "quasar dev" or "quasar build"
232
+ }
233
+ ```
234
+
235
+ ### Titled code
236
+
237
+ ```js Titled code
238
+ export default function (ctx) { // can be async too
239
+ console.log(ctx)
240
+
241
+ // Example output on console:
242
+ {
243
+ dev: true,
244
+ prod: false
245
+ }
246
+
247
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
248
+ process.env.FOO // ✅ It can only replace direct usage like this
249
+
250
+ // context gets generated based on the parameters
251
+ // with which you run "quasar dev" or "quasar build"
252
+ }
253
+ ```
254
+
255
+ ### bash
256
+
257
+ ```bash
258
+ sudo apt update
259
+ sudo apt upgrade
260
+ sudo apt autoremove
261
+ ```
262
+
263
+ ### bash numbered
264
+
265
+ ```bash [numbered]
266
+ sudo apt update
267
+ sudo apt upgrade
268
+ sudo apt autoremove
269
+ ```
270
+
271
+ ### CSS
272
+
273
+ ```css
274
+ .my-class {
275
+ color: red;
276
+ background-color: blue;
277
+ }
278
+ ```
279
+
280
+ ### CSS numbered
281
+
282
+ ```css [numbered]
283
+ .my-class {
284
+ color: red;
285
+ background-color: blue;
286
+ }
287
+ ```
288
+
289
+ ### CSS numbered with highlight
290
+
291
+ ```css [numbered]
292
+ .my-class {
293
+ color: red; [[! highlight]]
294
+ background-color: blue;
295
+ }
296
+ ```
297
+
298
+ ### JSON
299
+
300
+ ```json
301
+ {
302
+ "min": 0,
303
+ "super": false,
304
+ "max": 100
305
+ }
306
+ ```
307
+
308
+ ### JSON (internal rem/add)
309
+
310
+ ```json [rem=1]
311
+ {
312
+ "min": 0,
313
+ "super": false, [[! rem]]
314
+ "super": true, [[! add]]
315
+ "max": 100
316
+ }
317
+ ```
318
+
319
+ ### JSON (internal rem/add and numbered)
320
+
321
+ ```json [numbered]
322
+ {
323
+ "min": 0,
324
+ "super": false, [[! rem]]
325
+ "super": true, [[! add]]
326
+ "max": 100
327
+ }
328
+ ```
329
+
330
+ ### JSON (numbered/highlight)
331
+
332
+ ```json [numbered]
333
+ {
334
+ "min": 0,
335
+ "super": false, [[! highlight]]
336
+ "max": 100
337
+ }
338
+ ```
339
+
340
+ ### diff
341
+
342
+ ```diff
343
+ @@ -13,6 +13,8 @@ const langList = [
344
+ { name: 'xml' },
345
+ { name: 'nginx' },
346
+ { name: 'html' },
347
+ +
348
+ + // special grammars:
349
+ { name: 'diff' }
350
+ ]
351
+
352
+ @@ -20,6 +22,12 @@ loadLanguages(langList.map(l => l.name))
353
+
354
+ const langMatch = langList.map(l => l.aliases || l.name).join('|')
355
+
356
+ +/**
357
+ + * lang -> one of the supported languages (langList)
358
+ + * attrs -> optional attributes:
359
+ + * * numbered - lines are numbered
360
+ + * title -> optional card title
361
+ + */
362
+ const definitionLineRE = new RegExp(
363
+ '^' +
364
+ `(?<lang>(tabs|${ langMatch }))` + // then a language name
365
+ @@ -28,6 +36,10 @@ const definitionLineRE = new RegExp(
366
+ '$'
367
+ )
368
+
369
+ +/**
370
+ + * <<| lang [attrs] [title] |>>
371
+ + * ...content...
372
+ + */
373
+ const tabsLineRE = new RegExp(
374
+ '^<<\\|\\s+' + // starts with "<<|" + at least one space char
375
+ `(?<lang>${ langMatch })` + // then a language name
376
+ @@ -72,29 +84,65 @@ function extractTabs (content) {
377
+ const props = tabMap[ tabName ]
378
+ return (
379
+ `<q-tab-panel class="q-pa-none" name="${ tabName }">` +
380
+ - `<pre v-pre class="markdown-code">${ highlight(props.content.join('\n'), props.attrs) }</pre>` +
381
+ - '<markdown-copy-button />' +
382
+ + highlight(props.content.join('\n'), props.attrs) +
383
+ '</q-tab-panel>'
384
+ )
385
+ }).join('\n')
386
+ }
387
+ }
388
+
389
+ -function highlight (content, attrs) {
390
+ - const { lang, numbered } = attrs
391
+ - const highlightedText = prism.highlight(content, prism.languages[ lang ], lang)
392
+ +const magicCommentRE = / *\/\/\[! (?<klass>[\w-]+)\] */
393
+ +const magicCommentGlobalRE = new RegExp(magicCommentRE, 'g')
394
+
395
+ - if (numbered === true) {
396
+ - const lines = highlightedText.split('\n')
397
+ - const lineCount = ('' + highlightedText.length).length
398
+ +function getLineClasses (content, highlightedLines) {
399
+ + const lines = content.split('\n')
400
+ ```
401
+
402
+ ### Tabs
403
+
404
+ ```tabs
405
+ <<| js [numbered] Config file |>>
406
+ export default function (ctx) { // can be async too
407
+ console.log(ctx)
408
+
409
+ // Example output on console:
410
+ {
411
+ dev: true,
412
+ prod: false
413
+ }
414
+
415
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
416
+ process.env.FOO // ✅ It can only replace direct usage like this
417
+
418
+ // context gets generated based on the parameters
419
+ // with which you run "quasar dev" or "quasar build"
420
+ }
421
+ <<| js Other file |>>
422
+ const x = {
423
+ dev: true,
424
+ prod: false
425
+ }
426
+ ```
427
+
428
+ ### Tabs (3)
429
+
430
+ ```tabs quasar.config file
431
+ <<| js One |>>
432
+ export default function (ctx) { // can be async too
433
+ console.log(ctx)
434
+
435
+ // Example output on console:
436
+ {
437
+ dev: true,
438
+ prod: false [[! highlight]]
439
+ }
440
+
441
+ const { FOO } = process.env // ❌ It doesn't allow destructuring or similar
442
+ process.env.FOO // ✅ It can only replace direct usage like this
443
+
444
+ // context gets generated based on the parameters
445
+ // with which you run "quasar dev" or "quasar build"
446
+ }
447
+ <<| js [numbered] Two (numbered) |>>
448
+ const x = {
449
+ dev: true,
450
+ prod: false
451
+ }
452
+ <<| diff Three (with diff) |>>
453
+ {
454
+ min: 0
455
+ - super: false
456
+ + super: true
457
+ max: 100
458
+ }
459
+ ```
460
+
461
+ <!-- ## Tree -->
462
+
463
+ <!-- <DocTree :def="scope.tree" /> -->
464
+
465
+ ## Table
466
+
467
+ ### Table Left-aligned Columns (default)
468
+
469
+ | Prop name | Description |
470
+ | ------------ | ----------------------------------------------------------------------------------------------------------------- |
471
+ | `app` | Vue app instance |
472
+ | `router` | Instance of Vue Router from 'src/router/index.js' |
473
+ | `store` | Instance of Pinia - **store only will be passed if your project uses Pinia (you have src/stores)** |
474
+ | `ssrContext` | Available only on server-side, if building for SSR. [More info](/quasar-cli-vite/developing-ssr/ssr-context) |
475
+ | `urlPath` | The pathname (path + search) part of the URL. It also contains the hash on client-side. |
476
+ | `publicPath` | The configured public path. |
477
+ | `redirect` | Function to call to redirect to another URL. Accepts String (full URL) or a Vue Router location String or Object. |
478
+
479
+ ### Table Left-aligned Columns (explicit)
480
+
481
+ | Prop name | Description |
482
+ | :----------- | :---------------------------------------------------------------------------------------------------------------- |
483
+ | `app` | Vue app instance |
484
+ | `router` | Instance of Vue Router from 'src/router/index.js' |
485
+ | `store` | Instance of Pinia - **store only will be passed if your project uses Pinia (you have src/stores)** |
486
+ | `ssrContext` | Available only on server-side, if building for SSR. [More info](/quasar-cli-vite/developing-ssr/ssr-context) |
487
+ | `urlPath` | The pathname (path + search) part of the URL. It also contains the hash on client-side. |
488
+ | `publicPath` | The configured public path. |
489
+ | `redirect` | Function to call to redirect to another URL. Accepts String (full URL) or a Vue Router location String or Object. |
490
+
491
+ ### Table Right-aligned Columns
492
+
493
+ | Prop name | Description |
494
+ | -----------: | ----------------------------------------------------------------------------------------------------------------: |
495
+ | `app` | Vue app instance |
496
+ | `router` | Instance of Vue Router from 'src/router/index.js' |
497
+ | `store` | Instance of Pinia - **store only will be passed if your project uses Pinia (you have src/stores)** |
498
+ | `ssrContext` | Available only on server-side, if building for SSR. [More info](/quasar-cli-vite/developing-ssr/ssr-context) |
499
+ | `urlPath` | The pathname (path + search) part of the URL. It also contains the hash on client-side. |
500
+ | `publicPath` | The configured public path. |
501
+ | `redirect` | Function to call to redirect to another URL. Accepts String (full URL) or a Vue Router location String or Object. |
502
+
503
+ ### Table Centered-aligned Columns
504
+
505
+ | Prop name | Description |
506
+ | :----------: | :---------------------------------------------------------------------------------------------------------------: |
507
+ | `app` | Vue app instance |
508
+ | `router` | Instance of Vue Router from 'src/router/index.js' |
509
+ | `store` | Instance of Pinia - **store only will be passed if your project uses Pinia (you have src/stores)** |
510
+ | `ssrContext` | Available only on server-side, if building for SSR. [More info](/quasar-cli-vite/developing-ssr/ssr-context) |
511
+ | `urlPath` | The pathname (path + search) part of the URL. It also contains the hash on client-side. |
512
+ | `publicPath` | The configured public path. |
513
+ | `redirect` | Function to call to redirect to another URL. Accepts String (full URL) or a Vue Router location String or Object. |
514
+
515
+ ## List
516
+
517
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua.
518
+
519
+ 1. Quasar is initialized (components, directives, plugins, Quasar i18n, Quasar icon sets)
520
+ 2. Quasar Extras get imported (Roboto font -- if used, icons, animations, ...)
521
+ 3. Quasar CSS & your app's global CSS are imported
522
+ 4. App.vue is loaded (not yet being used)
523
+ 5. Store is imported (if using Pinia in src/stores)
524
+ 6. Pinia (if using) is injected into the Vue app instance
525
+ 7. Router is imported (in src/router)
526
+
527
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua.
528
+
529
+ - It is important that you specify all sections of a QLayout, even if you don't use them. For example, even if you don't use footer or right side drawer, still specify them within your QLayout's `view` prop.
530
+ - When QDrawer is set into overlay mode, **it will force it to go into fixed position**, regardless if QLayout's "view" prop is configured with "l/r" or "L/R". Also, **if on iOS platform and QLayout is containerized**, the fixed position will also be forced upon QDrawer due to platform limitations that cannot be overcome.
531
+
532
+ Lorem ipsum dolor sit amet, **consectetur adipiscing** elit, sed do _eiusmod_ tempor incididunt ut labore et dolore magna aliqua.
533
+
534
+ <!-- <DocInstallation plugins="AppFullscreen" /> -->
535
+
536
+ <script import>
537
+ import AvatarApi from 'quasar/dist/api/QAvatar.json'
538
+ </script>
539
+
540
+ <MarkdownApi :api="AvatarApi" name="QAvatar"/>
541
+
542
+ <!-- <DocApi file="QSelect" /> -->
543
+
544
+ <!-- <DocApi file="TouchSwipe" /> -->
545
+
546
+ <!-- <DocApi file="Loading" /> -->
547
+
548
+ <MarkdownExample title="Title for example card" file="BasicExample" />