@fishawack/lab-velocity 2.0.0-beta.4 → 2.0.0-beta.41

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 (110) hide show
  1. package/README.md +441 -37
  2. package/_Build/vue/components/basic/Button.vue +1 -1
  3. package/_Build/vue/components/form/Checkbox.vue +10 -0
  4. package/_Build/vue/components/form/Select.vue +223 -33
  5. package/_Build/vue/components/form/Spinner.vue +5 -0
  6. package/_Build/vue/components/layout/Alert.vue +5 -5
  7. package/_Build/vue/components/layout/Audit.vue +75 -0
  8. package/_Build/vue/{modules/AuthModule/components/VBreadcrumbs.vue → components/layout/Breadcrumbs.vue} +4 -4
  9. package/_Build/vue/{modules/AuthModule/components → components/layout}/Chips.vue +2 -2
  10. package/_Build/vue/components/layout/Footer.vue +11 -10
  11. package/_Build/vue/{modules/AuthModule/components/VFormFooter.vue → components/layout/FormFooter.vue} +13 -7
  12. package/_Build/vue/{modules/AuthModule/components → components/layout}/FormRole.vue +10 -8
  13. package/_Build/vue/components/layout/Layout.vue +76 -0
  14. package/_Build/vue/components/layout/Navigation.vue +77 -0
  15. package/_Build/vue/{modules/AuthModule/components/VPageHeader.vue → components/layout/PageHeader.vue} +7 -2
  16. package/_Build/vue/components/layout/SideBar.vue +26 -0
  17. package/_Build/vue/{modules/AuthModule/components/VTable.vue → components/layout/Table.vue} +32 -16
  18. package/_Build/vue/{modules/AuthModule/components/VTableSorter.vue → components/layout/TableSorter.vue} +68 -43
  19. package/_Build/vue/components/layout/pageTitle.vue +1 -1
  20. package/_Build/vue/components/navigation/MenuItem.vue +7 -2
  21. package/_Build/vue/components/navigation/MenuItemGroup.vue +7 -2
  22. package/_Build/vue/modules/AuthModule/js/axios.js +19 -0
  23. package/_Build/vue/modules/AuthModule/js/router.js +24 -89
  24. package/_Build/vue/modules/AuthModule/js/store.js +15 -6
  25. package/_Build/vue/modules/AuthModule/routes/PCompanies/columns.js +268 -0
  26. package/_Build/vue/modules/AuthModule/routes/PCompanies/resource.js +213 -0
  27. package/_Build/vue/modules/AuthModule/routes/PTeams/resource.js +334 -0
  28. package/_Build/vue/modules/AuthModule/routes/PUsers/columns.js +349 -0
  29. package/_Build/vue/modules/AuthModule/routes/PUsers/resource.js +203 -0
  30. package/_Build/vue/modules/AuthModule/routes/account-exists.vue +2 -2
  31. package/_Build/vue/modules/AuthModule/routes/change-password.vue +23 -24
  32. package/_Build/vue/modules/AuthModule/routes/container.vue +2 -11
  33. package/_Build/vue/modules/AuthModule/routes/expired-reset.vue +4 -4
  34. package/_Build/vue/modules/AuthModule/routes/expired-verification.vue +9 -8
  35. package/_Build/vue/modules/AuthModule/routes/force-reset.vue +39 -50
  36. package/_Build/vue/modules/AuthModule/routes/forgot.vue +4 -4
  37. package/_Build/vue/modules/AuthModule/routes/login.vue +7 -11
  38. package/_Build/vue/modules/AuthModule/routes/logincallback.vue +1 -3
  39. package/_Build/vue/modules/AuthModule/routes/loginsso.vue +7 -9
  40. package/_Build/vue/modules/AuthModule/routes/logout.vue +1 -3
  41. package/_Build/vue/modules/AuthModule/routes/logoutheadless.vue +1 -3
  42. package/_Build/vue/modules/AuthModule/routes/register.vue +19 -21
  43. package/_Build/vue/modules/AuthModule/routes/reset.vue +14 -13
  44. package/_Build/vue/modules/AuthModule/routes/success-forgot.vue +8 -7
  45. package/_Build/vue/modules/AuthModule/routes/success-reset.vue +2 -2
  46. package/_Build/vue/modules/AuthModule/routes/success-verify.vue +1 -3
  47. package/_Build/vue/modules/AuthModule/routes/verify.vue +11 -14
  48. package/_Build/vue/modules/resource/Children/create.vue +81 -0
  49. package/_Build/vue/modules/resource/Children/edit.vue +106 -0
  50. package/_Build/vue/modules/resource/Children/index.vue +42 -0
  51. package/_Build/vue/modules/resource/Children/partials/form.vue +61 -0
  52. package/_Build/vue/modules/resource/Children/show.vue +144 -0
  53. package/_Build/vue/modules/resource/index.js +545 -0
  54. package/_Build/vue/modules/resource/parent.vue +63 -0
  55. package/_base.scss +0 -1
  56. package/_defaults.scss +2 -13
  57. package/_variables.scss +9 -4
  58. package/components/_alert.scss +5 -0
  59. package/components/_auth.scss +163 -0
  60. package/components/_basic.scss +55 -0
  61. package/components/_breadcrumbs.scss +39 -0
  62. package/components/_button.scss +304 -0
  63. package/components/_cascader.scss +12 -0
  64. package/components/_checkbox.scss +41 -0
  65. package/components/_chip.scss +24 -0
  66. package/components/_collapse.scss +24 -0
  67. package/components/_datepicker.scss +53 -0
  68. package/components/_descriptions.scss +2 -0
  69. package/components/_footer.scss +47 -0
  70. package/components/_form.scss +24 -0
  71. package/components/_header.scss +30 -0
  72. package/components/_icon.scss +25 -0
  73. package/components/_inputNumber.scss +22 -0
  74. package/components/_layout.scss +56 -0
  75. package/components/_link.scss +44 -0
  76. package/components/_loader.scss +43 -0
  77. package/components/_menu.scss +112 -0
  78. package/components/_modal.scss +24 -0
  79. package/components/_pageTitle.scss +8 -0
  80. package/components/_permissionLegend.scss +18 -0
  81. package/components/_select.scss +29 -0
  82. package/components/_sidebar.scss +41 -0
  83. package/components/_switch.scss +14 -0
  84. package/components/_table.scss +20 -0
  85. package/components/_tooltip.scss +4 -0
  86. package/components/_typography.scss +162 -0
  87. package/components/_upload.scss +15 -0
  88. package/components/_wysiwyg.scss +7 -0
  89. package/components/_wysiwyg2.scss +142 -0
  90. package/index.js +16 -1
  91. package/package.json +5 -3
  92. package/vendor.scss +0 -1
  93. package/_Build/vue/components/layout/sideBar.vue +0 -25
  94. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/Upload/upload.vue +0 -251
  95. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/create.vue +0 -62
  96. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/edit.vue +0 -98
  97. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/index.vue +0 -90
  98. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/partials/form.vue +0 -173
  99. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/show.vue +0 -262
  100. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/parent.vue +0 -36
  101. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/create.vue +0 -112
  102. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/edit.vue +0 -103
  103. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/index.vue +0 -112
  104. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/partials/form.vue +0 -169
  105. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/show.vue +0 -120
  106. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/parent.vue +0 -36
  107. /package/_Build/vue/{modules/AuthModule/components → components/layout}/AuthModal.vue +0 -0
  108. /package/_Build/vue/{modules/AuthModule/components → components/layout}/Chip.vue +0 -0
  109. /package/_Build/vue/{modules/AuthModule/components/VPasswordValidation.vue → components/layout/PasswordValidation.vue} +0 -0
  110. /package/_Build/vue/{modules/AuthModule/components/VRoleLegend.vue → components/layout/RoleLegend.vue} +0 -0
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+
3
+ import { merge, kebabCase, snakeCase, cloneDeepWith } from "lodash";
4
+ import axios from "axios";
5
+ import { h, resolveComponent } from "vue";
6
+
7
+ import VelTableSorter from "../../components/layout/TableSorter.vue";
8
+ import {
9
+ ElDescriptions,
10
+ ElDescriptionsItem,
11
+ ElPopconfirm,
12
+ ElNotification,
13
+ } from "element-plus";
14
+ import VelButton from "../../components/basic/Button.vue";
15
+
16
+ export const defaultResource = meta();
17
+
18
+ export function meta(name = "default", properties = {}) {
19
+ const singular = properties.singular || name.slice(0, -1);
20
+ const slug = properties.slug || kebabCase(name);
21
+
22
+ return merge(
23
+ {
24
+ name,
25
+ title: properties.title || name[0].toUpperCase() + name.slice(1),
26
+ singular,
27
+ singularTitle:
28
+ properties.singularTitle ||
29
+ singular[0].toUpperCase() + singular.slice(1),
30
+ label: singular,
31
+ multiLabel: name,
32
+ slug,
33
+ path: properties.path || `/${slug}`,
34
+ routeName: properties.routeName || slug,
35
+ id: properties.id || `${snakeCase(slug)}Id`,
36
+ icon: `icon-${singular}`,
37
+ api: {
38
+ endpoint: () => `/api/${properties.slug || kebabCase(name)}`,
39
+ params: {
40
+ index: () => ({}),
41
+ show: () => ({}),
42
+ },
43
+ },
44
+ permissions: {
45
+ create: () => true,
46
+ edit: () => true,
47
+ delete: () => false,
48
+ },
49
+ searchable: {
50
+ value: "name",
51
+ label: `Search ${name}`,
52
+ },
53
+ form: {
54
+ component: null,
55
+ submit: null,
56
+ fields: () => ({}),
57
+ preparation: ({ form }) => form.data(),
58
+ structure: [],
59
+ },
60
+ table: {
61
+ actions: [
62
+ ({ model, resource }, { $router }) =>
63
+ !model.deleted_at &&
64
+ h(
65
+ VelButton,
66
+ {
67
+ tag: "a",
68
+ size: "small",
69
+ type: "primary",
70
+ onClick: () => {
71
+ $router.push({
72
+ name: `${resource.routeName}.show`,
73
+ params: {
74
+ [resource.id]: model.id,
75
+ },
76
+ });
77
+ },
78
+ },
79
+ () => "View",
80
+ ),
81
+ ({ model, resource }, props) => {
82
+ const { $router } = props;
83
+
84
+ if (resource.permissions.edit(props, { model })) {
85
+ return (
86
+ !model.deleted_at &&
87
+ h(
88
+ VelButton,
89
+ {
90
+ tag: "a",
91
+ size: "small",
92
+ onClick: () => {
93
+ $router.push({
94
+ name: `${resource.routeName}.edit`,
95
+ params: {
96
+ [resource.id]: model.id,
97
+ },
98
+ });
99
+ },
100
+ },
101
+ () => "Edit",
102
+ )
103
+ );
104
+ }
105
+ },
106
+ ({ model, resource }, props) => {
107
+ const { $emit } = props;
108
+
109
+ if (resource.permissions.delete(props, { model })) {
110
+ return (
111
+ !model.deleted_at &&
112
+ h({
113
+ data: () => ({
114
+ loading: false,
115
+ }),
116
+ render() {
117
+ return h(
118
+ ElPopconfirm,
119
+ {
120
+ title: `Are you sure you want to delete this ${resource.singular}?`,
121
+ confirmButtonText: "Delete",
122
+ cancelButtonText: "Cancel",
123
+ confirmButtonType: "danger",
124
+ onConfirm: async () => {
125
+ this.loading = true;
126
+
127
+ await axios.delete(
128
+ `${resource.api.endpoint(props)}/${model.id}`,
129
+ );
130
+
131
+ $emit("reload");
132
+
133
+ ElNotification({
134
+ title: "Success",
135
+ message: `${resource.singularTitle} with id ${model.id} deleted.`,
136
+ type: "success",
137
+ });
138
+
139
+ this.loading = false;
140
+ },
141
+ },
142
+ {
143
+ reference: () =>
144
+ h(
145
+ VelButton,
146
+ {
147
+ tag: "a",
148
+ type: "danger",
149
+ size: "small",
150
+ loading:
151
+ this.loading,
152
+ },
153
+ () => `Delete`,
154
+ ),
155
+ },
156
+ );
157
+ },
158
+ })
159
+ );
160
+ }
161
+ },
162
+ ],
163
+ structure: [
164
+ {
165
+ key: "id",
166
+ },
167
+ ],
168
+ },
169
+ description: {
170
+ structure: [
171
+ {
172
+ key: "id",
173
+ },
174
+ ],
175
+ },
176
+ index: {
177
+ structure: (props) => {
178
+ const { resource } = props;
179
+
180
+ return {
181
+ key: "PIndex",
182
+ "json-data": {
183
+ ...resource,
184
+ tableStructure: resource.table
185
+ .structure(props)
186
+ .concat(
187
+ resource.table.actions.length
188
+ ? [
189
+ {
190
+ key: "actions",
191
+ render: ({ model }, props) =>
192
+ h(
193
+ "div",
194
+ {
195
+ class: "flex gap-2",
196
+ },
197
+ resource.table.actions.map(
198
+ (d) =>
199
+ d(
200
+ {
201
+ model,
202
+ resource,
203
+ },
204
+ props,
205
+ ),
206
+ ),
207
+ ),
208
+ },
209
+ ]
210
+ : [],
211
+ ),
212
+ api: resource.api.endpoint(props),
213
+ },
214
+ apiParams: resource.api.params.index(props),
215
+ idKey: resource.id,
216
+ "fixed-height": false,
217
+ displayActions: false,
218
+ };
219
+ },
220
+ actions: [
221
+ (props) => {
222
+ const { resource, $router } = props;
223
+
224
+ if (resource.permissions.create(props)) {
225
+ return h(
226
+ VelButton,
227
+ {
228
+ tag: "a",
229
+ type: "primary",
230
+ size: "large",
231
+ onClick: () => {
232
+ $router.push({
233
+ name: `${resource.routeName}.create`,
234
+ });
235
+ },
236
+ },
237
+ () => [
238
+ h(resolveComponent("GIcon"), {
239
+ class: "fill-0 mr-0.5 icon--0.5",
240
+ name: "icon-plus",
241
+ embed: true,
242
+ artboard: true,
243
+ }),
244
+ `Create ${resource.singular}`,
245
+ ],
246
+ );
247
+ }
248
+ },
249
+ ],
250
+ layout: [
251
+ (props) => {
252
+ const { resource } = props;
253
+
254
+ return h(
255
+ VelTableSorter,
256
+ resource.index.structure(props),
257
+ );
258
+ },
259
+ ],
260
+ },
261
+ show: {
262
+ actions: [
263
+ (props) => {
264
+ const { resource, model, $router } = props;
265
+
266
+ if (resource.permissions.edit(props, { model })) {
267
+ return h(
268
+ VelButton,
269
+ {
270
+ tag: "a",
271
+ type: "primary",
272
+ onClick: () => {
273
+ $router.push({
274
+ name: `${resource.routeName}.edit`,
275
+ params: {
276
+ [resource.id]: model.id,
277
+ },
278
+ });
279
+ },
280
+ },
281
+ () => [
282
+ h(resolveComponent("GIcon"), {
283
+ class: "fill-0 mr-0.5 icon--0.5",
284
+ name: "icon-edit",
285
+ embed: true,
286
+ artboard: true,
287
+ }),
288
+ `Edit ${resource.singular}`,
289
+ ],
290
+ );
291
+ }
292
+ },
293
+ (props) => {
294
+ const { resource, model, $router } = props;
295
+
296
+ if (resource.permissions.delete(props, { model })) {
297
+ return h(
298
+ ElPopconfirm,
299
+ {
300
+ title: `Are you sure you want to delete this ${resource.singular}?`,
301
+ confirmButtonText: "Delete",
302
+ cancelButtonText: "Cancel",
303
+ confirmButtonType: "danger",
304
+ onConfirm: async () => {
305
+ await axios.delete(
306
+ `${resource.api.endpoint(props)}/${model.id}`,
307
+ );
308
+
309
+ $router.push({
310
+ name: `${resource.routeName}.index`,
311
+ });
312
+ },
313
+ },
314
+ {
315
+ reference: () =>
316
+ h(
317
+ VelButton,
318
+ {
319
+ tag: "a",
320
+ type: "danger",
321
+ },
322
+ () => [
323
+ h(resolveComponent("GIcon"), {
324
+ class: "fill-0 mr-0.5 icon--0.5",
325
+ name: "icon-trash",
326
+ embed: true,
327
+ artboard: true,
328
+ }),
329
+ `Delete ${resource.singular}`,
330
+ ],
331
+ ),
332
+ },
333
+ );
334
+ }
335
+ },
336
+ ],
337
+ tabs: [
338
+ (props) => {
339
+ const { resource } = props;
340
+
341
+ return {
342
+ label: "Details",
343
+ component: h(
344
+ "div",
345
+ resource.show.layout
346
+ .map((render) => render(props))
347
+ .filter((d) => d),
348
+ ),
349
+ };
350
+ },
351
+ ],
352
+ layout: [
353
+ (props) => {
354
+ const { resource, model } = props;
355
+
356
+ return h(
357
+ ElDescriptions,
358
+ {
359
+ border: true,
360
+ column: 1,
361
+ },
362
+ () =>
363
+ resource.description
364
+ .structure(props)
365
+ .map((item, index) =>
366
+ h(
367
+ ElDescriptionsItem,
368
+ {
369
+ key: index,
370
+ labelWidth: "20%",
371
+ },
372
+ {
373
+ label: () =>
374
+ item.label ||
375
+ item.key[0].toUpperCase() +
376
+ item.key.slice(1),
377
+ default: () =>
378
+ item.render
379
+ ? h(item.render(props))
380
+ : model?.[item.key] ||
381
+ "",
382
+ },
383
+ ),
384
+ ),
385
+ );
386
+ },
387
+ ],
388
+ },
389
+ },
390
+ properties,
391
+ );
392
+ }
393
+
394
+ export function columns(columns = []) {
395
+ return {
396
+ table: {
397
+ structure: (props) =>
398
+ columns
399
+ .filter(
400
+ (column) =>
401
+ resolveProperty(column.condition?.table, props) !==
402
+ false,
403
+ )
404
+ .map((column) => ({
405
+ ...column,
406
+ render: column.render?.read || column.render?.table,
407
+ })),
408
+ },
409
+ description: {
410
+ structure: (props) =>
411
+ columns
412
+ .filter(
413
+ (column) =>
414
+ resolveProperty(
415
+ column.condition?.description,
416
+ props,
417
+ ) !== false,
418
+ )
419
+ .map((column) => ({
420
+ ...column,
421
+ render:
422
+ column.render?.read || column.render?.description,
423
+ })),
424
+ },
425
+ form: {
426
+ fields: (props) =>
427
+ columns
428
+ .filter(
429
+ (column) =>
430
+ resolveProperty(column.condition?.form, props) !==
431
+ false,
432
+ )
433
+ .reduce((fields, column) => {
434
+ fields[column.key] = column.initial
435
+ ? column.initial(props)
436
+ : (props.model?.[column.key] ?? null);
437
+ return fields;
438
+ }, {}),
439
+ preparation: (props) =>
440
+ columns
441
+ .filter(
442
+ (column) =>
443
+ resolveProperty(column.condition?.form, props) !==
444
+ false,
445
+ )
446
+ .reduce((fields, column) => {
447
+ fields[column.key] = column.preparation
448
+ ? column.preparation(props)
449
+ : props.form[column.key];
450
+ return fields;
451
+ }, {}),
452
+ structure: (props) =>
453
+ columns
454
+ .filter(
455
+ (column) =>
456
+ resolveProperty(
457
+ column.condition?.form?.write ??
458
+ column.condition?.form,
459
+ props,
460
+ ) !== false,
461
+ )
462
+ .map((column) => ({
463
+ ...column,
464
+ render: column.render?.write || column.render?.form,
465
+ })),
466
+ },
467
+ };
468
+ }
469
+
470
+ // Export resource
471
+ export function routes(node, name, properties = {}, children = []) {
472
+ const resource = meta(name, properties);
473
+
474
+ return [
475
+ {
476
+ path: resource.path,
477
+ component: node ? "" : require("../resource/parent.vue").default,
478
+ name: `${resource.routeName}`,
479
+ meta: {
480
+ resource,
481
+ title: resource.title,
482
+ icon: resource.icon,
483
+ breadcrumb: () => resource.title,
484
+ ...properties.meta,
485
+ },
486
+ children: [
487
+ {
488
+ path: "",
489
+ component: node
490
+ ? ""
491
+ : require("../resource/Children/index.vue").default,
492
+ name: `${resource.routeName}.index`,
493
+ },
494
+ {
495
+ path: "create",
496
+ component: node
497
+ ? ""
498
+ : require("../resource/Children/create.vue").default,
499
+ name: `${resource.routeName}.create`,
500
+ },
501
+ {
502
+ path: `:${resource.id}`,
503
+ component: node
504
+ ? ""
505
+ : require("../resource/Children/show.vue").default,
506
+ name: `${resource.routeName}.show`,
507
+ // Remove leading / for nested routes or they'll resolve to the root of the site
508
+ children: cloneDeepWith(children, (value, key) => {
509
+ if (
510
+ key === "path" &&
511
+ typeof value === "string" &&
512
+ value.startsWith("/")
513
+ ) {
514
+ return value.slice(1);
515
+ }
516
+ }),
517
+ meta: {
518
+ breadcrumb: ({ $route }) => $route.params[resource.id],
519
+ },
520
+ },
521
+ {
522
+ path: `:${resource.id}/edit`,
523
+ component: node
524
+ ? ""
525
+ : require("../resource/Children/edit.vue").default,
526
+ name: `${resource.routeName}.edit`,
527
+ meta: {
528
+ breadcrumb: ({ $route }) => $route.params[resource.id],
529
+ },
530
+ },
531
+ ],
532
+ },
533
+ ];
534
+ }
535
+
536
+ export function resolveProperty(value, context) {
537
+ return typeof value === "function" ? value(context) : value;
538
+ }
539
+
540
+ export default {
541
+ routes,
542
+ meta,
543
+ columns,
544
+ defaultResource,
545
+ };
@@ -0,0 +1,63 @@
1
+ <template>
2
+ <!-- Only render title once at the shallowest route -->
3
+ <template v-if="depth === 1">
4
+ <VelPageTitle :title="resource.title" />
5
+ <VelBreadcrumbs
6
+ :items="breadcrumbs"
7
+ class="mb-8"
8
+ container-classes="m-0"
9
+ />
10
+ </template>
11
+
12
+ <router-view
13
+ :key="$route.path"
14
+ v-slot="{ Component }"
15
+ :breadcrumbs="breadcrumbs"
16
+ :resource="resource"
17
+ >
18
+ <component :is="Component" :depth="depth + 1" />
19
+ </router-view>
20
+ </template>
21
+
22
+ <script>
23
+ import VelPageTitle from "../../components/layout/pageTitle.vue";
24
+ import VelBreadcrumbs from "../../components/layout/Breadcrumbs.vue";
25
+
26
+ export default {
27
+ components: {
28
+ VelPageTitle,
29
+ VelBreadcrumbs,
30
+ },
31
+
32
+ props: {
33
+ depth: {
34
+ type: Number,
35
+ default: 1,
36
+ },
37
+ },
38
+
39
+ computed: {
40
+ resource() {
41
+ return this.$route.meta.resource;
42
+ },
43
+ breadcrumbs() {
44
+ return [
45
+ {
46
+ text: "Home",
47
+ href: { name: "index" },
48
+ },
49
+ ].concat(
50
+ this.$route.matched
51
+ .filter((route) => route.meta?.breadcrumb)
52
+ .map((route) => ({
53
+ text: route.meta.breadcrumb(this),
54
+ href: {
55
+ name: route.name,
56
+ params: this.$route.params,
57
+ },
58
+ })),
59
+ );
60
+ },
61
+ },
62
+ };
63
+ </script>
package/_base.scss CHANGED
@@ -3,4 +3,3 @@
3
3
  @import "element-plus/theme-chalk/el-message";
4
4
  @import "element-plus/theme-chalk/el-notification";
5
5
  @import "element-plus/theme-chalk/el-overlay";
6
- @import "./components/input.scss";
package/_defaults.scss CHANGED
@@ -5,16 +5,5 @@
5
5
  $colors: variables.dynamic("color", module-variables("variables"));
6
6
 
7
7
  // Override lab-ui defaults here, e.g $button: $color6;
8
- $spacing: 8px;
9
- .container {
10
- margin-left: 0;
11
- padding: 0px 5 * $spacing;
12
- }
13
-
14
- body {
15
- font-family: $primaryFont, sans-serif;
16
- font-size: get-ratio(16px);
17
- line-height: 1.5;
18
- color: $color1;
19
- background-color: $color3;
20
- }
8
+ $fontColor: $color1;
9
+ $fontFamily: $primaryFont, sans-serif;
package/_variables.scss CHANGED
@@ -1,7 +1,6 @@
1
1
  @import "@fishawack/lab-ui/_variables.scss";
2
- // Set global variables here, e.g $color6: red;
3
- @import "./modules/AuthVariables";
4
2
 
3
+ // Set global variables here, e.g $color6: red;
5
4
  $primaryFont: "Inter";
6
5
  $primaryFontThin: "Inter-Thin";
7
6
  $primaryFontExtraLight: "Inter-ExtraLight";
@@ -10,11 +9,10 @@ $primaryFontRegular: "Inter-Regular";
10
9
  $primaryFontMedium: "Inter-Medium";
11
10
  $primaryFontSemiBold: "Inter-SemiBold";
12
11
  $primaryFontBold: "Inter-Bold";
13
-
14
12
  $secondaryFont: "NotoSerif";
15
13
  $secondaryFontMedium: "NotoSerif-Medium";
16
- // Colors
17
14
 
15
+ // Colors
18
16
  $color1: #2d2d2d;
19
17
  $color2: #333333;
20
18
  $color3: #f7f7f7;
@@ -29,3 +27,10 @@ $color11: #8c8c8c; //Used
29
27
  $color12: #5c5c5c;
30
28
  $color13: #3c976e;
31
29
  $colorAlert: #d53a3a;
30
+
31
+ // Spacing
32
+ $spacing: 8px;
33
+
34
+ // Auth
35
+ $am-spacing: 8px;
36
+ $am-highlight: #3c976e;
@@ -0,0 +1,5 @@
1
+ @import "element-plus/theme-chalk/el-alert";
2
+
3
+ .vel-alert {
4
+ --el-color-error: #d53a3a;
5
+ }