create-nuxt-base 0.1.23 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/.eslintignore +14 -0
  2. package/.eslintrc +3 -0
  3. package/.github/workflows/release.yml +1 -1
  4. package/.prettierignore +5 -0
  5. package/.prettierrc +6 -0
  6. package/.vscode/settings.json +10 -10
  7. package/CHANGELOG.md +22 -33
  8. package/README.md +1 -0
  9. package/index.js +30 -29
  10. package/nuxt-base-template/.env.example +8 -0
  11. package/nuxt-base-template/.eslintrc +1 -1
  12. package/nuxt-base-template/.vscode/settings.json +6 -16
  13. package/nuxt-base-template/e2e/init.spec.ts +18 -0
  14. package/nuxt-base-template/nuxt.config.ts +27 -12
  15. package/nuxt-base-template/package-lock.json +6050 -4606
  16. package/nuxt-base-template/package.json +47 -29
  17. package/nuxt-base-template/playwright.config.ts +77 -0
  18. package/nuxt-base-template/src/app.vue +4 -4
  19. package/nuxt-base-template/src/assets/css/tailwind.css +42 -33
  20. package/nuxt-base-template/src/components/SocialMediaBubble.vue +1 -1
  21. package/nuxt-base-template/src/components/base/BaseAccordion.vue +16 -13
  22. package/nuxt-base-template/src/components/base/BaseButton.vue +10 -13
  23. package/nuxt-base-template/src/components/base/BaseContainer.vue +1 -1
  24. package/nuxt-base-template/src/components/base/BaseContextMenuContainer.vue +61 -0
  25. package/nuxt-base-template/src/components/base/BaseInfinityList.vue +1 -1
  26. package/nuxt-base-template/src/components/base/BaseProgressbar.vue +28 -30
  27. package/nuxt-base-template/src/components/base/BaseToggle.vue +17 -10
  28. package/nuxt-base-template/src/components/form/FormInput.vue +34 -0
  29. package/nuxt-base-template/src/components/form/FormPassword.vue +47 -0
  30. package/nuxt-base-template/src/components/form/FormSelect.vue +40 -0
  31. package/nuxt-base-template/src/components/form/FormSubmit.vue +18 -0
  32. package/nuxt-base-template/src/components/form/FormTextarea.vue +36 -0
  33. package/nuxt-base-template/src/components/form/FormToggle.vue +27 -0
  34. package/nuxt-base-template/src/components/modal/Modal.vue +48 -0
  35. package/nuxt-base-template/src/components/modal/ModalConfirm.vue +38 -0
  36. package/nuxt-base-template/src/components/{base/BaseModalContainer.vue → modal/ModalContainer.vue} +1 -1
  37. package/nuxt-base-template/src/components/modal/ModalInfo.vue +22 -0
  38. package/nuxt-base-template/src/components/{ModalShare.vue → modal/ModalShare.vue} +7 -11
  39. package/nuxt-base-template/src/components/{base/BaseNotification.vue → notification/Notification.vue} +8 -7
  40. package/nuxt-base-template/src/components/{base/BaseNotificationContainer.vue → notification/NotificationContainer.vue} +11 -5
  41. package/nuxt-base-template/src/components/pwa/pwa-install-banner.vue +224 -0
  42. package/nuxt-base-template/src/components/transition/TransitionFade.vue +10 -7
  43. package/nuxt-base-template/src/components/transition/TransitionFadeScale.vue +10 -7
  44. package/nuxt-base-template/src/composables/use-auth-fetch.ts +22 -8
  45. package/nuxt-base-template/src/composables/use-context-menu.ts +19 -0
  46. package/nuxt-base-template/src/composables/use-file.ts +1 -2
  47. package/nuxt-base-template/src/composables/use-modal.ts +1 -1
  48. package/nuxt-base-template/src/composables/use-notification.ts +2 -2
  49. package/nuxt-base-template/src/composables/use-share.ts +3 -3
  50. package/nuxt-base-template/src/error.vue +10 -14
  51. package/nuxt-base-template/src/layouts/default.vue +13 -0
  52. package/nuxt-base-template/src/middleware/auth.global.ts +2 -2
  53. package/nuxt-base-template/src/pages/index.vue +31 -6
  54. package/nuxt-base-template/src/plugins/auth.server.ts +72 -0
  55. package/nuxt-base-template/src/plugins/form.plugin.ts +21 -0
  56. package/nuxt-base-template/src/plugins/pwa.plugin.ts +110 -0
  57. package/nuxt-base-template/src/tests/init.test.ts +1 -1
  58. package/nuxt-base-template/tailwind.config.js +33 -23
  59. package/nuxt-base-template/vitest.config.js +3 -3
  60. package/package.json +3 -1
  61. package/nuxt-base-template/formkit-theme.js +0 -137
  62. package/nuxt-base-template/formkit.config.js +0 -33
  63. package/nuxt-base-template/src/components/hello-world.vue +0 -10
  64. package/nuxt-base-template/src/composables/use-form-helper.ts +0 -100
  65. package/nuxt-base-template/src/composables/use-helper.ts +0 -52
  66. package/nuxt-base-template/src/forms/inputs/InputCheckbox.vue +0 -29
  67. package/nuxt-base-template/src/forms/inputs/InputFreeTags.vue +0 -98
  68. package/nuxt-base-template/src/forms/inputs/InputImage.vue +0 -65
  69. package/nuxt-base-template/src/forms/inputs/InputTags.vue +0 -112
  70. package/nuxt-base-template/src/forms/inputs/InputToggle.vue +0 -18
  71. package/nuxt-base-template/src/forms/plugins/asterisk-plugin.ts +0 -29
  72. package/nuxt-base-template/src/forms/plugins/scroll-error-plugin.ts +0 -36
  73. package/nuxt-base-template/src/forms/plugins/value-changes-plugin.ts +0 -13
  74. package/nuxt-base-template/src/plugins/4.auth.server.ts +0 -70
@@ -1,29 +0,0 @@
1
- const isCheckboxAndRadioMultiple = (node: any) => (node.props.type === 'checkbox' || node.props.type === 'radio') && node.props.options;
2
-
3
- export function addAsteriskPlugin(node: any) {
4
- node.on('created', () => {
5
- const isRequired = node.props.parsedRules.some((rule: any) => rule.name === 'required');
6
- if (!isRequired) {
7
- return;
8
- }
9
-
10
- const isMultiOption = isCheckboxAndRadioMultiple(node);
11
-
12
- // if we're going to modify the schema then we need
13
- // to update the schemaMemoKey so we don't get an
14
- // invalid cached schema.
15
- node.props.definition.schemaMemoKey = `required_${isMultiOption ? 'multi_' : ''}${node.props.definition.schemaMemoKey}`;
16
-
17
- const schemaFn = node.props.definition.schema;
18
- node.props.definition.schema = (sectionsSchema: any = {}) => {
19
- if (isRequired) {
20
- if (!isMultiOption) {
21
- sectionsSchema.label = {
22
- children: ['$label', ' *'],
23
- };
24
- }
25
- }
26
- return schemaFn(sectionsSchema);
27
- };
28
- });
29
- }
@@ -1,36 +0,0 @@
1
- import type { FormKitNode } from '@formkit/core';
2
-
3
- export function scrollToErrors(node: any) {
4
- if (node.props.type === 'form') {
5
- function scrollTo(node: FormKitNode) {
6
- const el = document.getElementById(node.props.id);
7
- if (el) {
8
- el.scrollIntoView({ block: 'center', behavior: 'smooth' });
9
- }
10
- }
11
-
12
- function scrollToErrors() {
13
- node.walk((child: any) => {
14
- // Check if this child has errors
15
- if (child.ledger.value('blocking') || child.ledger.value('errors')) {
16
- // We found an input with validation errors
17
- scrollTo(child);
18
- // Stop searching
19
- return false;
20
- }
21
- }, true);
22
- }
23
-
24
- function defaultInvalid(node: FormKitNode) {
25
- console.error('FormKit::invalidForm', node);
26
- }
27
-
28
- const onSubmitInvalid = node.props.onSubmitInvalid ?? defaultInvalid;
29
- node.props.onSubmitInvalid = () => {
30
- onSubmitInvalid(node);
31
- scrollToErrors();
32
- };
33
- node.on('unsettled:errors', scrollToErrors);
34
- }
35
- return false;
36
- }
@@ -1,13 +0,0 @@
1
- import type { FormKitEvent, FormKitNode } from '@formkit/core';
2
-
3
- export function valueChangesPlugin(node: FormKitNode) {
4
- const { getDifferences } = useFormHelper();
5
- if (node.props.type === 'form') {
6
- setTimeout(() => {
7
- node.on('commit', (event: FormKitEvent) => {
8
- const diff = getDifferences(event.origin.props._init, event.payload);
9
- node.emit('valueChanges', { init: event.origin.props._init, current: event.payload, diff: diff });
10
- });
11
- }, 300);
12
- }
13
- }
@@ -1,70 +0,0 @@
1
- import { callWithNuxt, defineNuxtPlugin, useNuxtApp, useRuntimeConfig } from 'nuxt/app';
2
- import { ofetch } from 'ofetch';
3
-
4
- export default defineNuxtPlugin({
5
- name: 'auth-server',
6
- enforce: 'pre',
7
- async setup() {
8
- console.debug('4.auth.server.ts::init');
9
- const _nuxt = useNuxtApp();
10
- const config = await callWithNuxt(_nuxt, useRuntimeConfig);
11
- const { refreshToken, accessToken } = await callWithNuxt(_nuxt, useAuthState);
12
- const { setCurrentUser, getDecodedAccessToken, setTokens } = await callWithNuxt(_nuxt, useAuth);
13
- const payload = accessToken.value ? getDecodedAccessToken(accessToken.value) : null;
14
-
15
- if (!refreshToken.value) {
16
- return;
17
- }
18
-
19
- const refreshTokenResult = await ofetch(config.public.host, {
20
- method: 'POST',
21
- headers: {
22
- Authorization: `Bearer ${refreshToken.value}`,
23
- },
24
- body: JSON.stringify({
25
- query: 'mutation refreshToken {refreshToken {token, refreshToken}}',
26
- variables: {},
27
- }),
28
- }).catch((err) => {
29
- console.error('4.auth.server.ts::refreshToken::catch', err.data);
30
- });
31
-
32
- console.debug('4.auth.server.ts::refreshTokenResult', refreshTokenResult);
33
-
34
- if (refreshTokenResult?.data) {
35
- const data = refreshTokenResult.data.refreshToken;
36
- console.debug('4.auth.server.ts::token', data?.token);
37
- console.debug('4.auth.server.ts::refreshToken', data?.refreshToken);
38
- setTokens(data.token, data.refreshToken);
39
-
40
- if (payload?.id) {
41
- const userResult = await ofetch(config.public.host, {
42
- method: 'POST',
43
- headers: {
44
- Authorization: `Bearer ${refreshTokenResult.data.refreshToken?.token}`,
45
- },
46
- body: JSON.stringify({
47
- query: 'query getUser($id: String!){' +
48
- 'getUser(id: $id){' +
49
- 'id ' +
50
- 'avatar ' +
51
- 'firstName ' +
52
- 'lastName ' +
53
- 'email ' +
54
- 'roles ' +
55
- '}}',
56
- variables: {
57
- id: payload.id,
58
- },
59
- }),
60
- }).catch((err) => {
61
- console.error('4.auth.server.ts::getUser::catch', err.data);
62
- });
63
- console.debug('4.auth.server.ts::getUser::userResult', userResult);
64
- if (userResult?.data) {
65
- setCurrentUser(userResult?.data?.getUser);
66
- }
67
- }
68
- }
69
- },
70
- });