stacks 0.47.4 โ†’ 0.48.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 (116) hide show
  1. package/buddy/art/social.png +0 -0
  2. package/buddy/package.json +1 -1
  3. package/buddy/src/commands/make.ts +27 -12
  4. package/buddy/src/commands/test.ts +40 -2
  5. package/core/actions/package.json +2 -2
  6. package/core/actions/src/helpers/utils.ts +29 -3
  7. package/core/actions/src/make.ts +37 -6
  8. package/core/actions/src/test-coverage.ts +1 -1
  9. package/core/actions/src/test-feature.ts +5 -0
  10. package/core/actions/src/test-unit.ts +5 -0
  11. package/core/ai/package.json +1 -1
  12. package/core/alias/package.json +1 -1
  13. package/core/arrays/package.json +1 -1
  14. package/core/auth/package.json +1 -1
  15. package/core/build/package.json +3 -3
  16. package/core/cache/package.json +3 -3
  17. package/core/chat/README.md +33 -40
  18. package/core/chat/package.json +1 -1
  19. package/core/cli/package.json +1 -1
  20. package/core/cloud/package.json +1 -1
  21. package/core/collections/package.json +1 -1
  22. package/core/config/package.json +1 -1
  23. package/core/dashboard/package.json +1 -1
  24. package/core/database/package.json +1 -1
  25. package/core/datetime/package.json +1 -1
  26. package/core/desktop/package.json +1 -1
  27. package/core/docs/node_modules/.bin/vitepress +2 -2
  28. package/core/docs/package.json +2 -2
  29. package/core/domains/package.json +1 -1
  30. package/core/drivers/package.json +1 -1
  31. package/core/email/README.md +101 -35
  32. package/core/email/package.json +1 -1
  33. package/core/error-handling/package.json +2 -2
  34. package/core/events/package.json +1 -1
  35. package/core/git/package.json +1 -1
  36. package/core/health/package.json +1 -1
  37. package/core/lint/node_modules/.bin/eslint +2 -2
  38. package/core/lint/package.json +3 -3
  39. package/core/logging/package.json +1 -1
  40. package/core/modules/package.json +1 -1
  41. package/core/notifications/README.md +7 -2
  42. package/core/notifications/package.json +1 -1
  43. package/core/notifications/src/index.ts +37 -9
  44. package/core/notifications/tests/chat/Slack.test.ts +5 -4
  45. package/core/notifications/tests/email/Mailgun.test.ts +4 -3
  46. package/core/notifications/tests/email/Sendgrid.test.ts +3 -3
  47. package/core/notifications/tests/sms/Twilio.test.ts +3 -3
  48. package/core/objects/package.json +1 -1
  49. package/core/path/package.json +1 -1
  50. package/core/path/src/index.ts +5 -0
  51. package/core/payments/package.json +1 -1
  52. package/core/push/README.md +24 -42
  53. package/core/push/package.json +1 -1
  54. package/core/realtime/package.json +1 -1
  55. package/core/router/package.json +1 -1
  56. package/core/search-engine/package.json +1 -1
  57. package/core/security/package.json +1 -1
  58. package/core/server/package.json +1 -1
  59. package/core/sms/README.md +82 -35
  60. package/core/sms/package.json +1 -1
  61. package/core/storage/package.json +1 -1
  62. package/core/storage/src/index.ts +13 -0
  63. package/core/strings/README.md +10 -2
  64. package/core/strings/package.json +4 -2
  65. package/core/strings/src/case.ts +14 -0
  66. package/core/strings/src/index.ts +4 -97
  67. package/core/strings/src/pluralize.ts +1 -0
  68. package/core/strings/src/utils.ts +80 -0
  69. package/core/strings/src/validation.ts +182 -0
  70. package/core/tables/README.md +109 -0
  71. package/core/tables/examples/vue/App.vue +12 -0
  72. package/core/tables/examples/vue/favicon.png +0 -0
  73. package/core/tables/examples/vue/index.html +20 -0
  74. package/core/tables/examples/web/favicon.png +0 -0
  75. package/core/tables/examples/web/index.html +13 -0
  76. package/core/tables/node_modules/.bin/mkdist +17 -0
  77. package/core/tables/node_modules/.bin/tsc +17 -0
  78. package/core/tables/node_modules/.bin/tsserver +17 -0
  79. package/core/tables/node_modules/.bin/unbuild +17 -0
  80. package/core/tables/package.json +97 -0
  81. package/core/tables/src/cli/index.ts +1 -0
  82. package/core/tables/src/components/Demo.vue +89 -0
  83. package/core/tables/src/components/README.md +111 -0
  84. package/core/tables/src/components/Table.vue +342 -0
  85. package/core/tables/src/components/TableBody.vue +33 -0
  86. package/core/tables/src/components/TableCellActionItems.vue +9 -0
  87. package/core/tables/src/components/TableFilters.vue +703 -0
  88. package/core/tables/src/components/TableHead.vue +87 -0
  89. package/core/tables/src/components/TablePagination.vue +146 -0
  90. package/core/tables/src/components/TableRow.vue +78 -0
  91. package/core/tables/src/components/TableSearch.vue +38 -0
  92. package/core/tables/src/components/Tooltip.vue +10 -0
  93. package/core/tables/src/config/tables.ts +1 -0
  94. package/core/tables/src/docs/index.md +0 -0
  95. package/core/tables/src/functions/README.md +8 -0
  96. package/core/tables/src/functions/dark.ts +3 -0
  97. package/core/tables/src/functions/index.ts +2 -0
  98. package/core/tables/src/functions/table.ts +180 -0
  99. package/core/tables/tests/example.test.ts +7 -0
  100. package/core/testing/node_modules/.bin/vitest +2 -2
  101. package/core/testing/package.json +9 -6
  102. package/core/types/node_modules/.bin/vitepress +2 -2
  103. package/core/types/package.json +4 -3
  104. package/core/types/src/cli.ts +10 -2
  105. package/core/types/src/hashing.ts +15 -0
  106. package/core/types/src/index.ts +2 -0
  107. package/core/types/src/notifications.ts +1 -0
  108. package/core/types/src/reactivity.ts +3 -0
  109. package/core/types/src/tables.ts +48 -0
  110. package/core/ui/node_modules/.bin/vue-tsc +2 -2
  111. package/core/ui/package.json +2 -2
  112. package/core/utils/package.json +1 -1
  113. package/core/x-ray/package.json +1 -1
  114. package/package.json +3 -2
  115. package/tsconfig.json +8 -0
  116. package/vitest.config.ts +2 -0
@@ -0,0 +1,109 @@
1
+ # Table Stack
2
+
3
+ The easy & modern way to work with tables of any size. Blazing-fast searching, filtering, sorting, and paginating. Powered by your search engine of choice. Kick-start the development of a feature-rich & configurable table UI, including a beautiful default UX.
4
+
5
+ ## ๐Ÿ™ Features
6
+
7
+ This Vue component library comes with the following features, improvements to the `table` element:
8
+
9
+ - `<table-v2 />`
10
+ - quickly spin up a highly-configurable table UI without worrying about the backend
11
+ - "facet-filtering" & "table head sorting" natively built-in
12
+ - Meilisearch & Laravel Scout API compatible
13
+ - Enterprise-ready
14
+ - _Soon: Algolia & Typesense integration_
15
+
16
+ Get granular control over the table appearance & behavior, with the following (optional) components:
17
+
18
+ - `<table-search />`
19
+ - configure your search input for blazing fast search results
20
+
21
+ - `<table-filters />`
22
+ - overwrite the default display of your table's filters
23
+
24
+ - `<table-pagination />`
25
+ - easily configure the pagination of your table
26
+
27
+ - `<table-configure />`
28
+ - simple way to configure the table in HTML semantic fashion
29
+
30
+ Read more about these features in their respective [docs](https://ow3.org/docs).
31
+
32
+ ## ๐Ÿ’ก Get Started
33
+
34
+ To get started, you simply need to install the `@ow3/table-vue` npm package.
35
+
36
+ ```bash
37
+ npm install @ow3/table-vue
38
+ ```
39
+
40
+ Next up, we need to make use of the components.
41
+
42
+ ```vue
43
+ <script setup>
44
+ import { Table as TableV2 } from 'table-vue'
45
+ </script>
46
+
47
+ <template>
48
+ <!-- the `type`-property indicates to to the search engine the "index" you want to target -->
49
+ <TableV2 type="movies" />
50
+
51
+ <!-- these are the default properties (all of them are optional) -->
52
+ <TableV2
53
+ source="127.0.0.1:7700"
54
+ columns="*"
55
+ :searchable="true"
56
+ :filterable="true"
57
+ :sortable="true"
58
+ :actionable="true"
59
+ :selectable="false"
60
+ :per-page="20"
61
+ />
62
+
63
+ <!-- another "data table" example -->
64
+ <TableV2
65
+ source="127.0.0.1:7700"
66
+ password="NtUvZv5Q87e355b807622149c350ac38679645b4e2603a1d3eb48cda080f977e76329aeb"
67
+ type="orders"
68
+ columns="id: Order, customer_name: Customer, customer_po: PO#, part_name: Part, created_at: Ordered, due_at: Due, stage_name: Status"
69
+ sort="id:desc"
70
+ sorts="id, customer_name, customer_po, part_name, stage_name, due_at, created_at"
71
+ filters="customer_name, vendor_name, part_name, document_types"
72
+ actions="Edit"
73
+ per-page="10"
74
+ selectable="true"
75
+ />
76
+ </template>
77
+ ```
78
+
79
+ To learn more about what's possible & how to best build modern data tables, check out our documentation.
80
+
81
+ ## ๐Ÿงช Testing
82
+
83
+ ```bash
84
+ yarn test
85
+ ```
86
+
87
+ ## ๐Ÿ“ˆ Changelog
88
+
89
+ Please see our [releases](https://github.com/stacksjs/table/releases) page for more information on what has changed recently.
90
+
91
+ ## ๐Ÿ’ช๐Ÿผ Contributing
92
+
93
+ Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.
94
+
95
+ ## ๐Ÿ Community
96
+
97
+ For help, discussion about best practices, or any other conversation that would benefit from being searchable:
98
+
99
+ [Table Elements on GitHub](https://github.com/stacksjs/table/discussions)
100
+
101
+ For casual chit-chat with others using this package:
102
+
103
+ [Join the Open Web Discord Server](https://discord.ow3.org)
104
+
105
+ ## ๐Ÿ“„ License
106
+
107
+ The MIT License (MIT). Please see [LICENSE](LICENSE.md) for more information.
108
+
109
+ Made with โค๏ธ by Open Web Labs.
@@ -0,0 +1,12 @@
1
+ <!--
2
+ This is how you would implement your generated
3
+ library into your own frontend. You may import
4
+ any of the components developed.
5
+ -->
6
+ <script setup lang="ts">
7
+ import { Demo } from './dist/index.mjs'
8
+ </script>
9
+
10
+ <template>
11
+ <Demo />
12
+ </template>
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" href="./favicon.png" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Stacks Vue Example</title>
8
+ <link rel="stylesheet" href="./dist/style.css">
9
+ </head>
10
+ <body>
11
+ <div id="app"></div>
12
+
13
+ <script type="module">
14
+ import { createApp } from 'vue'
15
+ import App from './App.vue'
16
+
17
+ createApp(App).mount('#app')
18
+ </script>
19
+ </body>
20
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" href="./favicon.png" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Stacks Web Component Example</title>
8
+ </head>
9
+ <body>
10
+ <script type="module" src="./dist/index.mjs"></script>
11
+ <hello-world></hello-world>
12
+ </body>
13
+ </html>
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/mkdist@1.0.0_typescript@4.9.4/node_modules/mkdist/dist/cli.cjs" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/mkdist@1.0.0_typescript@4.9.4/node_modules/mkdist/dist/cli.cjs" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsserver" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsserver" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/unbuild@1.0.2/node_modules/unbuild/dist/cli.mjs" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/unbuild@1.0.2/node_modules/unbuild/dist/cli.mjs" "$@"
17
+ fi
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "@stacksjs/tables",
3
+ "version": "0.48.2",
4
+ "description": "The easy & modern way to work with tables. Facet filtering, searching, pagination, ...",
5
+ "author": "Open Web Labs",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/stacksjs/tables.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/stacksjs/tables/issues"
13
+ },
14
+ "keywords": [
15
+ "tables",
16
+ "filters",
17
+ "pagination",
18
+ "sorting",
19
+ "search",
20
+ "component",
21
+ "library",
22
+ "vue",
23
+ "typescript",
24
+ "javascript"
25
+ ],
26
+ "contributors": [
27
+ "Chris Breuer <chris@ow3.org>"
28
+ ],
29
+ "engines": {
30
+ "node": ">=v18.12.1",
31
+ "pnpm": ">=7.21.0"
32
+ },
33
+ "scripts": {
34
+ "dev": "pnpm buddy dev",
35
+ "dev:components": "pnpm buddy dev:components",
36
+ "dev:docs": "pnpm buddy dev:docs",
37
+ "dev:functions": "pnpm buddy dev:functions // todo: opens the auto-generated web server of functions",
38
+ "development": "pnpm buddy dev",
39
+ "build": "pnpm buddy build",
40
+ "build:components": "pnpm buddy build:components",
41
+ "build:vue-components": "pnpm buddy build:web-components",
42
+ "build:web-components": "pnpm buddy build:web-components",
43
+ "build:functions": "pnpm buddy build:functions // needs to have option to ",
44
+ "build:docs": "pnpm buddy build:docs",
45
+ "prod": "pnpm buddy build",
46
+ "prod:components": "pnpm buddy build:components",
47
+ "prod:vue-components": "pnpm buddy build:web-components",
48
+ "prod:web-components": "pnpm buddy build:web-components",
49
+ "prod:functions": "pnpm buddy build:functions // needs to have option to ",
50
+ "prod:docs": "pnpm buddy build:docs",
51
+ "production": "pnpm buddy build",
52
+ "deploy": "pnpm buddy deploy",
53
+ "deploy:functions": "pnpm buddy deploy:functions",
54
+ "deploy:pages": "pnpm buddy deploy:functions",
55
+ "deploy:docs": "pnpm buddy deploy:docs",
56
+ "deploy:all": "pnpm buddy deploy:all",
57
+ "lint": "pnpm buddy lint",
58
+ "lint:fix": "pnpm buddy lint:fix",
59
+ "serve": "pnpm buddy dev",
60
+ "serve:pages": "pnpm buddy dev:pages",
61
+ "serve:functions": "pnpm buddy dev:functions",
62
+ "make": "pnpm buddy make",
63
+ "make:table": "pnpm buddy make:table",
64
+ "commit": "pnpm buddy commit",
65
+ "release": "pnpm buddy release",
66
+ "changelog": "pnpm buddy changelog",
67
+ "generate": "pnpm buddy generate",
68
+ "generate:entries": "pnpm buddy generate:entries",
69
+ "generate:vue-compat": "pnpm buddy generate:vue-compat",
70
+ "generate:vscode-custom-data": "pnpm buddy generate:vscode-custom-data",
71
+ "generate:web-types": "pnpm buddy generate:web-types",
72
+ "generate:component-meta": "pnpm buddy generate:component-meta",
73
+ "test": "pnpm buddy test",
74
+ "test:coverage": "pnpm buddy test:coverage",
75
+ "test:types": "pnpm buddy test:types"
76
+ },
77
+ "peerDependencies": {
78
+ "@stacksjs/types": "workspace:*",
79
+ "@stacksjs/utils": "workspace:*",
80
+ "@vueform/multiselect": "^2.5.8",
81
+ "meilisearch": "^0.30.0"
82
+ },
83
+ "devDependencies": {
84
+ "@stacksjs/testing": "workspace:*",
85
+ "mkdist": "^1.0.0",
86
+ "typescript": "^4.9.4",
87
+ "unbuild": "^1.0.2"
88
+ },
89
+ "lint-staged": {
90
+ "*.{js,jsx,ts,tsx,vue}": "eslint --fix"
91
+ },
92
+ "config": {
93
+ "commitizen": {
94
+ "path": ".stacks/node_modules/cz-git"
95
+ }
96
+ }
97
+ }
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,89 @@
1
+ <script setup lang="ts">
2
+ import { Table as TableV2 } from './main'
3
+
4
+ const filterValues = {
5
+ website_access: [{
6
+ label: 'Yes',
7
+ value: 1,
8
+ }, {
9
+ label: 'No',
10
+ value: 0,
11
+ }],
12
+ disposition: [{
13
+ label: 'Active',
14
+ value: 'Active',
15
+ }, {
16
+ label: 'Released',
17
+ value: 'Released',
18
+ },
19
+ {
20
+ label: 'Terminated',
21
+ value: 'Terminated',
22
+ }],
23
+ }
24
+ </script>
25
+
26
+ <template>
27
+ <div class="font-sans">
28
+ <Suspense>
29
+ <TableSearch />
30
+ </Suspense>
31
+
32
+ <Suspense>
33
+ <TableFilters :filter-values="filterValues" />
34
+ </Suspense>
35
+ <Suspense>
36
+ <TableV2
37
+ source="http://127.0.0.1:7700/"
38
+ password=""
39
+ type="users"
40
+ columns="
41
+ id: ID,
42
+ first_name: First Name,
43
+ last_name: Last Name,
44
+ npn: NPN,
45
+ email: Email,
46
+ website_access: Website Access,
47
+ disposition: Disposition"
48
+ sort="id:desc"
49
+ sorts="id, email, npn"
50
+ filters=""
51
+ actions="Info"
52
+ per-page="50"
53
+ selectable="true"
54
+ >
55
+ <template #id="id">
56
+ <a
57
+ href="#"
58
+ class="flex font-medium text-yellow-600"
59
+ >
60
+ {{ id.value }}
61
+ </a>
62
+ </template>
63
+
64
+ <template #customer_name="customerName">
65
+ <a
66
+ href="#"
67
+ class="flex font-medium text-yellow-600"
68
+ >
69
+ {{ customerName.value }}
70
+ </a>
71
+ </template>
72
+ <template #part_name="parts">
73
+ <a
74
+ v-for="(part, index) in parts.value"
75
+ :key="index"
76
+ href="#"
77
+ class="flex font-medium text-yellow-600"
78
+ >
79
+ {{ part }}
80
+ </a>
81
+ </template>
82
+ </TableV2>
83
+ </Suspense>
84
+
85
+ <Suspense>
86
+ <TablePagination />
87
+ </Suspense>
88
+ </div>
89
+ </template>
@@ -0,0 +1,111 @@
1
+ # Your Component Library
2
+
3
+ This is where you create your components.
4
+
5
+ > **Note**
6
+ > If your project does not require any UI components, you can remove this folder. If your library does include components, you may use this readme as the boilerplate of your component library.
7
+
8
+ ## ๐Ÿ’ก Get Started
9
+
10
+ It's easy to get started. The only prerequisite is a basic understanding HTML, sprinkled with *minimal* JavaScript. In other words, there is virtually no learning curve.
11
+
12
+ ```bash
13
+ # you may use this GitHub template or the following command:
14
+ npx stacks new hello-world
15
+ cd hello-world
16
+
17
+ pnpm i # install deps for all packages
18
+ pnpm dev # stubs the packages for local use
19
+ pnpm dev:vite-vue # starts the dev server
20
+ pnpm build # builds the packages for production-ready use
21
+ ```
22
+
23
+ Additionally, the `package.json` contains some useful snippets you likely want to be aware of.
24
+
25
+ ## ๐Ÿค– Usage
26
+
27
+ Because this project is optimized toward the development of easily reusable & composable component libraries, it's very easy to use (and distribute):
28
+
29
+ ```vue
30
+ <script setup lang="ts">
31
+ import HelloWorld from 'hello-world-stack'
32
+ </script>
33
+
34
+ <template>
35
+ <HelloWorld name="J Doe" />
36
+ </template>
37
+ ```
38
+
39
+ ### Tips
40
+
41
+ This project also includes a simple way to handle your versioning. Through semantic commit names, it will also generate the two changelogs: one as part of the GitHub releases & the one markdown file that's stored within the root of the project.
42
+
43
+ ```bash
44
+ # how to create a git commit?
45
+ git add . # select the changes you want to commit
46
+ pnpm run commit # then simply follow the prompts
47
+
48
+ # after you successfully committed, you may create a "release"
49
+ pnpm run release # automates git commits, versioning, and CHANGELOG generation
50
+ ```
51
+
52
+ Read more about these tips in the docs.
53
+
54
+ ### Dev Tools
55
+
56
+ - [TypeScript 4.9](https://www.typescriptlang.org/)
57
+ - [Vite 3.1](https://vitejs.dev/) - "Next Generation Frontend Tooling"
58
+ - [Vue 3.2](https://vuejs.org/) - make easy use of Vue's powerful SFCs
59
+ - [UnoCSS](https://github.com/unocss/unocss) - create your own style guide with ease (e.g. Tailwind CSS)
60
+ - [Commitizen & git-cz](https://www.npmjs.com/package/git-cz) - Automate git commits, versioning, and CHANGELOG generation
61
+ - [Vitest](https://github.com/vitest-dev/vitest) - Unit & E2E testing powered by Vite
62
+ - [Renovate](https://renovatebot.com/) - automatic PR dependency updates
63
+ - [GitHub Actions](https://github.com/features/actions) - automatically fixes code style issues, tags releases, and runs the test suite
64
+ - [VS Code Extensions](./.vscode/extensions.json)
65
+ - [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) - Vue 3 `<script setup>` IDE support
66
+ - [cspell](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) - spell checking
67
+ - [Intellisense](https://marketplace.visualstudio.com/items?itemName=voorjaar.windicss-intellisense) - Tailwind CSS (or Windi CSS) class name sorter
68
+
69
+ ### Plugins
70
+
71
+ - [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - components auto import
72
+ - [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - Directly use Vue Composition API and others without importing
73
+ - [VueUse](https://github.com/antfu/vueuse) - Collection of useful composition APIs
74
+ - [Collect.js](https://github.com/ecrmnn/collect.js) - Easily work with object via Laravel-like collections
75
+
76
+ ### Coding Style
77
+
78
+ - Composition API with [`<script setup>` SFC syntax](https://github.com/vuejs/rfcs/pull/227)
79
+ - [ESLint](https://eslint.org/) - statically analyzes, fixes and formats your code without the need for Prettier
80
+
81
+ When using this template, feel free to adjust it to your needs. It is a framework to help you quickly & efficiently bootstrap & design component libraries using industry best practices.
82
+
83
+ ## ๐Ÿงช Testing
84
+
85
+ ```bash
86
+ pnpm test
87
+ ```
88
+
89
+ ## ๐Ÿ“ˆ Changelog
90
+
91
+ Please see our [releases](https://github.com/stacksjs/vue-components-library-starter/releases) page for more information on what has changed recently.
92
+
93
+ ## ๐Ÿ’ช๐Ÿผ Contributing
94
+
95
+ Please review the [Contributing Guide](https://github.com/stacksjs/contributing) for details.
96
+
97
+ ## ๐Ÿ Community
98
+
99
+ For help, discussion about best practices, or any other conversation that would benefit from being searchable:
100
+
101
+ [Discussions on GitHub](https://github.com/stacksjs/stacks/discussions)
102
+
103
+ For casual chit-chat with others using this package:
104
+
105
+ [Join the Stacks Discord Server](https://discord.ow3.org)
106
+
107
+ ## ๐Ÿ“„ License
108
+
109
+ The MIT License (MIT). Please see [LICENSE](https://github.com/stacksjs/stacks/tree/main/LICENSE.md) for more information.
110
+
111
+ Made with โค๏ธ