@dejwcake/craftable 0.1.10 → 2.0.0

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 (126) hide show
  1. package/README.md +117 -3
  2. package/dist/buildMatchPatternFn-BV4I8r8j.js +63 -0
  3. package/dist/buildMatchPatternFn-T5KjFTBQ.cjs +1 -0
  4. package/dist/craftable.css +2 -0
  5. package/dist/cs-B5QMxFrl.js +682 -0
  6. package/dist/cs-MAoetkhe.cjs +1 -0
  7. package/dist/de-BlQ2ZKmc.js +526 -0
  8. package/dist/de-BoVLAn6U.cjs +1 -0
  9. package/dist/en-US-BLvEnhs4.js +443 -0
  10. package/dist/en-US-Dz8vkDZ_.cjs +1 -0
  11. package/dist/en-US-X9gX759i.cjs +1 -0
  12. package/dist/es-DBHDeXHI.cjs +1 -0
  13. package/dist/es-YEqfkBY2.js +437 -0
  14. package/dist/fr-B7MHC2AN.js +407 -0
  15. package/dist/fr-DLs3QoNB.cjs +1 -0
  16. package/dist/hu-BKZPI9jH.cjs +1 -0
  17. package/dist/hu-reoJgNxD.js +425 -0
  18. package/dist/index.cjs +1 -0
  19. package/dist/index.mjs +3866 -0
  20. package/dist/isSameWeek-CC6GX_zp.js +40 -0
  21. package/dist/isSameWeek-Mctj6Tdj.cjs +1 -0
  22. package/dist/pl-B5A0Rjp7.js +628 -0
  23. package/dist/pl-BMyrOO-Q.cjs +1 -0
  24. package/dist/sk-B7JF2MoV.cjs +1 -0
  25. package/dist/sk-Btro3W4S.js +602 -0
  26. package/package.json +68 -40
  27. package/scripts/publish-components.js +118 -0
  28. package/scss/_images.scss +1 -1
  29. package/scss/_variables.scss +13 -6
  30. package/scss/app.scss +4 -4
  31. package/scss/overrides/_alerts.scss +0 -2
  32. package/scss/overrides/_badges.scss +1 -17
  33. package/scss/overrides/_buttons.scss +64 -7
  34. package/scss/overrides/_cards.scss +4 -51
  35. package/scss/overrides/_checkboxes.scss +54 -59
  36. package/scss/overrides/_forms.scss +270 -176
  37. package/scss/overrides/_index.scss +18 -18
  38. package/scss/overrides/_keyframes.scss +6 -4
  39. package/scss/overrides/_layout.scss +24 -30
  40. package/scss/overrides/_media-wysiwyg.scss +9 -111
  41. package/scss/overrides/_modal.scss +0 -18
  42. package/scss/overrides/_multiselect.scss +63 -7
  43. package/scss/overrides/_nav.scss +55 -33
  44. package/scss/overrides/_notifications.scss +6 -1
  45. package/scss/overrides/_pagination.scss +3 -3
  46. package/scss/overrides/_sidebar.scss +84 -0
  47. package/scss/overrides/_tables.scss +52 -37
  48. package/scss/overrides/_text.scss +1 -3
  49. package/scss/overrides/_wysiwyg.scss +151 -48
  50. package/scss/styles/_auth.scss +32 -37
  51. package/scss/styles/_custom.scss +44 -1
  52. package/scss/styles/_index.scss +4 -4
  53. package/scss/styles/_legacy.scss +5 -81
  54. package/scss/styles/_others.scss +232 -337
  55. package/scss/vendor/_index.scss +5 -4
  56. package/src/auth/ActivationError.vue +23 -0
  57. package/src/auth/ActivationForm.vue +69 -0
  58. package/src/auth/ForgotPasswordForm.vue +74 -0
  59. package/src/auth/LoginForm.vue +107 -0
  60. package/src/auth/ResetPasswordForm.vue +122 -0
  61. package/src/components/ConfirmModal.vue +65 -0
  62. package/src/components/UserDetailTooltip.vue +88 -0
  63. package/src/components/form/CkeditorEditor.vue +205 -0
  64. package/src/components/form/FormCheckbox.vue +29 -0
  65. package/src/components/form/FormDatePicker.vue +52 -0
  66. package/src/components/form/FormEmail.vue +17 -0
  67. package/src/components/form/FormInput.vue +31 -0
  68. package/src/components/form/FormLocalizedInput.vue +47 -0
  69. package/src/components/form/FormLocalizedWysiwyg.vue +55 -0
  70. package/src/components/form/FormLocalizedWysiwygSimple.vue +55 -0
  71. package/src/components/form/FormMultiSelect.vue +36 -0
  72. package/src/components/form/FormPasswordConfirm.vue +49 -0
  73. package/src/components/form/FormSelect.vue +35 -0
  74. package/src/components/form/FormSubmit.vue +13 -0
  75. package/src/components/form/FormTextarea.vue +31 -0
  76. package/src/components/form/FormWysiwyg.vue +31 -0
  77. package/src/components/form/FormWysiwygSimple.vue +31 -0
  78. package/src/components/form/LocalizationBar.vue +90 -0
  79. package/src/components/form/MediaUpload.vue +317 -0
  80. package/src/components/form/TiptapEditor.vue +238 -0
  81. package/src/components/listing/BulkCheckboxHeader.vue +18 -0
  82. package/src/components/listing/BulkCheckboxRow.vue +21 -0
  83. package/src/components/listing/BulkOperationsBar.vue +41 -0
  84. package/src/components/listing/DeleteButton.vue +46 -0
  85. package/src/components/listing/EditButton.vue +17 -0
  86. package/src/components/listing/EmptyState.vue +25 -0
  87. package/src/components/listing/ListingHeader.vue +24 -0
  88. package/src/components/listing/Pagination.vue +158 -0
  89. package/src/components/listing/PerPage.vue +15 -0
  90. package/src/components/listing/PublishedAtColumn.vue +226 -0
  91. package/src/components/listing/Search.vue +81 -0
  92. package/src/components/listing/Sortable.vue +28 -0
  93. package/src/components/listing/ToggleSwitch.vue +47 -0
  94. package/src/composables/useAdmin.js +39 -0
  95. package/src/composables/useBaseAuth.js +81 -0
  96. package/src/composables/useBaseForm.js +265 -0
  97. package/src/composables/useBaseListing.js +316 -0
  98. package/src/composables/useResponsiveColumns.js +62 -0
  99. package/src/index.js +62 -0
  100. package/src/translation/TranslationListing.vue +230 -0
  101. package/src/translation/modals/TranslationEditModal.vue +86 -0
  102. package/src/translation/modals/TranslationExportModal.vue +74 -0
  103. package/src/translation/modals/TranslationImportModal.vue +255 -0
  104. package/src/ui/index.js +99 -0
  105. package/src/utils/ckeditorHelpers.js +36 -0
  106. package/src/utils/dateFnsLocale.js +24 -0
  107. package/src/utils/dateFormatters.js +30 -0
  108. package/src/utils/mediaProps.js +14 -0
  109. package/src/utils/notify.js +22 -0
  110. package/dist/admin/Admin.js +0 -42
  111. package/dist/auth/Form.js +0 -15
  112. package/dist/base-components/Form/BaseForm.js +0 -395
  113. package/dist/base-components/Form/BaseUpload.js +0 -188
  114. package/dist/base-components/Form/bootstrap.js +0 -21
  115. package/dist/base-components/Listing/BaseListing.js +0 -454
  116. package/dist/base-components/Listing/components/Pagination.js +0 -105
  117. package/dist/base-components/Listing/components/Sortable.js +0 -48
  118. package/dist/base-components/Listing/components/UserDetailTooltip.js +0 -55
  119. package/dist/index.js +0 -70
  120. package/dist/overrides/trumbowyg.edit-embed-template.js +0 -72
  121. package/dist/overrides/trumbowyg.reupload.js +0 -146
  122. package/dist/overrides/trumbowyg.template.js +0 -67
  123. package/dist/translation/Form.js +0 -15
  124. package/dist/translation/Listing.js +0 -283
  125. package/dist/ui/index.js +0 -33
  126. package/scss/overrides/_switches.scss +0 -25
package/package.json CHANGED
@@ -1,64 +1,92 @@
1
1
  {
2
2
  "name": "@dejwcake/craftable",
3
- "version": "0.1.10",
3
+ "version": "2.0.0",
4
4
  "description": "This is a frontend dependency for Craftable. Craftable is a Laravel-based open-source toolkit for building administration interfaces.",
5
- "main": "./dist/index.js",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.mjs",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.cjs"
12
+ },
13
+ "./scss/*": "./scss/*"
14
+ },
6
15
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1",
8
- "js": "babel src --presets babel-preset-es2015 --out-dir dist",
9
- "build": "npm run js",
10
- "prepublish": "npm run build"
16
+ "build": "vite build",
17
+ "dev": "vite build --watch",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
20
+ "test:coverage": "vitest run --coverage",
21
+ "lint": "eslint src/",
22
+ "lint:fix": "eslint src/ --fix",
23
+ "lint:style": "stylelint \"scss/**/*.scss\"",
24
+ "lint:style:fix": "stylelint \"scss/**/*.scss\" --fix",
25
+ "format": "prettier --write \"src/**/*.{js,vue}\" \"scss/**/*.scss\"",
26
+ "format:check": "prettier --check \"src/**/*.{js,vue}\" \"scss/**/*.scss\""
11
27
  },
12
28
  "repository": {
13
29
  "type": "git",
14
30
  "url": "git+https://github.com/dejwCake/craftable-frontend.git"
15
31
  },
16
32
  "author": "Brackets",
33
+ "contributors": [
34
+ "David Behal <david.behal@dejw.sk>"
35
+ ],
17
36
  "license": "MIT",
18
37
  "bugs": {
19
38
  "url": "https://github.com/dejwCake/craftable-frontend/issues"
20
39
  },
21
40
  "homepage": "https://github.com/dejwCake/craftable-frontend#readme",
22
41
  "dependencies": {
23
- "@coreui/coreui": "^2.1.1",
24
- "@coreui/icons": "^0.3.0",
25
- "axios": "^0.21.0",
26
- "bootstrap": "^4.1.3",
27
- "font-awesome": "^4.7.0",
28
- "jquery": "^3.5.1",
29
- "moment": "^2.18.1",
30
- "moment-timezone": "^0.5.26",
31
- "perfect-scrollbar": "^1.4.0",
32
- "popper.js": "^1.14.5",
33
- "simple-line-icons": "^2.4.1",
34
- "trumbowyg": "^2.10.0",
35
- "v-tooltip": "^2.0.0-rc.33",
36
- "vee-validate": "^2.0.0-rc.13",
37
- "vue": "^2.3.4",
38
- "vue-cookie": "^1.1.4",
39
- "vue-flatpickr-component": "^2.4.1",
40
- "vue-js-modal": "^1.2.8",
41
- "vue-multiselect": "^2.0.2",
42
- "vue-notification": "^1.3.2",
43
- "vue-quill-editor": "^3.0.6",
44
- "vue-template-compiler": "^2.5.21",
45
- "vue-trumbowyg": "^3.3.0",
46
- "vue2-dropzone": "^2.3.5"
42
+ "@ckeditor/ckeditor5-vue": "^7.3.1",
43
+ "@coreui/coreui": "^5.3",
44
+ "@fortawesome/fontawesome-free": "^7.2",
45
+ "@kyvg/vue3-notification": "^3.4",
46
+ "@tiptap/extension-image": "^3.22.5",
47
+ "@tiptap/extension-table": "^3.22.5",
48
+ "@tiptap/starter-kit": "^3.22.5",
49
+ "@tiptap/vue-3": "^3.22.5",
50
+ "@vee-validate/i18n": "^4.15",
51
+ "@vee-validate/rules": "^4.15",
52
+ "@vuepic/vue-datepicker": "^12.1",
53
+ "axios": "^1.9",
54
+ "bootstrap": "^5.3",
55
+ "ckeditor5": "^48.0.1",
56
+ "date-fns": "^4.1",
57
+ "dayjs": "^1.11",
58
+ "vee-validate": "^4.15",
59
+ "vue": "^3.5",
60
+ "vue-multiselect": "^3.2",
61
+ "vue3-cookies": "^1.0",
62
+ "vue3-dropzone": "^2.2",
63
+ "vue3-popper": "^1.5.0"
47
64
  },
48
65
  "devDependencies": {
49
- "autoprefixer": "^9.3.1",
50
- "babel-cli": "^6.26.0",
51
- "babel-preset-es2015": "^6.24.1",
52
- "cpx": "^1.5.0",
53
- "sass": "^1.49.9",
54
- "sass-loader": "^8.0.2",
55
- "postcss-cli": "^8.3.1",
56
- "vue-loader": "^15.9.6",
57
- "resolve-url-loader": "^3.1.0"
66
+ "@vitejs/plugin-vue": "^6.0.0",
67
+ "@vitest/coverage-v8": "^4.1.0",
68
+ "@vue/test-utils": "^2.4.6",
69
+ "autoprefixer": "^10.4",
70
+ "eslint": "^9.39.4",
71
+ "eslint-config-prettier": "^10.1.8",
72
+ "eslint-plugin-vue": "^10.8.0",
73
+ "globals": "^17.5.0",
74
+ "happy-dom": "^20.8.9",
75
+ "prettier": "^3.8.1",
76
+ "sass": "^1.85",
77
+ "stylelint": "^16.26.1",
78
+ "stylelint-config-standard-scss": "^14.0.0",
79
+ "vite": "^8.0.0",
80
+ "vitest": "^4.1.0"
81
+ },
82
+ "bin": {
83
+ "craftable-publish-components": "scripts/publish-components.js"
58
84
  },
59
85
  "files": [
60
86
  "/dist",
61
87
  "/img",
62
- "/scss"
88
+ "/scss",
89
+ "/scripts",
90
+ "/src"
63
91
  ]
64
92
  }
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { cpSync, existsSync, mkdirSync, readdirSync, statSync } from 'fs';
4
+ import { resolve, dirname, join } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const srcDir = resolve(__dirname, '../src');
9
+ const componentsDir = resolve(srcDir, 'components');
10
+
11
+ const groups = {
12
+ auth: {
13
+ src: resolve(srcDir, 'auth'),
14
+ dest: 'resources/js/admin/auth',
15
+ ext: '.vue',
16
+ },
17
+ form: {
18
+ src: resolve(componentsDir, 'form'),
19
+ dest: 'resources/js/admin/components/form',
20
+ ext: '.vue',
21
+ },
22
+ listing: {
23
+ src: resolve(componentsDir, 'listing'),
24
+ dest: 'resources/js/admin/components/listing',
25
+ ext: '.vue',
26
+ },
27
+ components: {
28
+ src: componentsDir,
29
+ dest: 'resources/js/admin/components',
30
+ ext: '.vue',
31
+ topLevelOnly: true,
32
+ },
33
+ translation: {
34
+ src: resolve(srcDir, 'translation'),
35
+ dest: 'resources/js/admin/translation',
36
+ ext: '.vue',
37
+ recursive: true,
38
+ },
39
+ composables: {
40
+ src: resolve(srcDir, 'composables'),
41
+ dest: 'resources/js/admin/composables',
42
+ ext: '.js',
43
+ },
44
+ utils: {
45
+ src: resolve(srcDir, 'utils'),
46
+ dest: 'resources/js/admin/utils',
47
+ ext: '.js',
48
+ },
49
+ ui: {
50
+ src: resolve(srcDir, 'ui'),
51
+ dest: 'resources/js/admin/ui',
52
+ ext: '.js',
53
+ },
54
+ };
55
+
56
+ function collectFiles(dir, ext, recursive = false, basePath = '') {
57
+ const entries = readdirSync(dir);
58
+ let files = [];
59
+
60
+ for (const entry of entries) {
61
+ const fullPath = join(dir, entry);
62
+ const relativePath = basePath ? join(basePath, entry) : entry;
63
+
64
+ if (recursive && statSync(fullPath).isDirectory()) {
65
+ files = files.concat(collectFiles(fullPath, ext, true, relativePath));
66
+ } else if (entry.endsWith(ext)) {
67
+ files.push(relativePath);
68
+ }
69
+ }
70
+
71
+ return files;
72
+ }
73
+
74
+ const arg = process.argv[2];
75
+
76
+ if (arg && arg !== 'all' && !groups[arg]) {
77
+ console.error(`Unknown group: ${arg}`);
78
+ console.error(`Usage: craftable-publish-components [${Object.keys(groups).join('|')}|all]`);
79
+ process.exit(1);
80
+ }
81
+
82
+ const selectedGroups = (!arg || arg === 'all')
83
+ ? Object.keys(groups)
84
+ : [arg];
85
+
86
+ let totalPublished = 0;
87
+ let totalSkipped = 0;
88
+
89
+ for (const groupName of selectedGroups) {
90
+ const group = groups[groupName];
91
+
92
+ if (!existsSync(group.src)) continue;
93
+
94
+ const files = collectFiles(group.src, group.ext, group.recursive || false);
95
+
96
+ if (files.length === 0) continue;
97
+
98
+ console.log(`\n[${groupName}]`);
99
+ const destDir = resolve(process.cwd(), group.dest);
100
+ mkdirSync(destDir, { recursive: true });
101
+
102
+ for (const file of files) {
103
+ const dest = resolve(destDir, file);
104
+ if (existsSync(dest)) {
105
+ console.log(` SKIP ${file} (already exists)`);
106
+ totalSkipped++;
107
+ } else {
108
+ mkdirSync(dirname(dest), { recursive: true });
109
+ cpSync(resolve(group.src, file), dest);
110
+ console.log(` COPY ${file}`);
111
+ totalPublished++;
112
+ }
113
+ }
114
+
115
+ console.log(` -> ${group.dest}/`);
116
+ }
117
+
118
+ console.log(`\nDone: ${totalPublished} published, ${totalSkipped} skipped.`);
package/scss/_images.scss CHANGED
@@ -15,4 +15,4 @@ $icon-correct: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAMAAA
15
15
  $icon-envelope: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAMAAABYzB2OAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAkFBMVEXH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/D////Ps5OFAAAALnRSTlM7y/lE6Eje8VPN2Tm2/Oc/usM21PJLo6FD6l2J/Xlf+P52blWHljRBsOBJ4uRKiL4jtQAAAAFiS0dELyPUIBEAAAAHdElNRQfkAhMWOhEu33lsAAAAbUlEQVQI12NgYNRDAUzMDCysbMgi7BycDHpc3JwIETZuHl4GPT0+fgGYiKCQsJ4eUEhPRFQMIiIuIakHEdJjkpIGkjKycvJ6MCE9BUUleRFlFYhaBqgpqmrqGnqoQkgAm5Amuggfg5Y2qoiOLgAMDiGzm6/OhgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wMi0yMFQwNTo1ODoxNy0wNzowMJE4StUAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDItMjBUMDU6NTg6MTctMDc6MDDgZfJpAAAAAElFTkSuQmCC') !default;
16
16
  $icon-error-triangle: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAPCAMAAAAxmgQeAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAgVBMVEX/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH///9KGehDAAAAKXRSTlMAcPEr+fgDyXT9xXMl9q8Bw6XCayHzILljBhrv/O6y7YVas1nj/svorCRsKSIAAAABYktHRCpTvtSeAAAAB3RJTUUH5AITFjoRLt95bAAAAINJREFUGNNdy+0WgUAUheGdKNGHJimhiKF9/zdIzZkh+89517PWAWTewsPf/CVX/pyCkGQYzGzNaBNx+0txwhQpk/hL2Y7MkZMqc1ZQjIWlfemsPMhnRWeszHc9NtVRTbceqTlNzbM5l+Zjrenu2plogZsp9uil7nhI6aeWemGwaaeHN4ExFxoRNvc5AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTAyLTIwVDA1OjU4OjE3LTA3OjAwkThK1QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wMi0yMFQwNTo1ODoxNy0wNzowMOBl8mkAAAAASUVORK5CYII=') !default;
17
17
  $icon-error: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAMAAABxCz6aAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABC1BMVEX/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH/PmH///+e6AaHAAAAV3RSTlMAEi0+KgZ71/WwR1LrtRN5/twkW9QPHvOblciM/IX6A1FY2RbOgjnaG1ccbMRjB2JpHfn0Ve3fM/I1RtMavwLloMV6mBXujdAKQdicDgRgt/jhkgEXIhTroahTAAAAAWJLR0RY7bXEjgAAAAd0SU1FB+QCExY6ErfWKNYAAADqSURBVBjTXZF7WwFBFMZfVmwIqVBGQliSXLqIhFy7uFQy3/+bNHN2ll3vH+e85/fMOfPMGUDJ5dY8B7DL5fVxIf3Qv2OBILd0FFIsHOE7HUeJndgZ56dngsXi3KmEgOfSXCSZiL7UpYgsijRdcoUM49kcrmWRR4FaigZKxTJuqKjg1hyUNVDFnXllEDU1vgLUG6Zt4t40D26kUWLkH/FEufWMdudF0S5eezL3oely7kAWb0CSTg5bsi8hTzbqwGi896IJ7cj59umMNlJjNtYx1O7ePyzEPr+2W54vliuBvn88jg/B7/pvY/l/h4BU9R0ZGd0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMjBUMDU6NTg6MTgtMDc6MDBncDo8AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTIwVDA1OjU4OjE4LTA3OjAwFi2CgAAAAABJRU5ErkJggg==') !default;
18
- $icon-lock: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAARCAMAAADaFm2tAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAaVBMVEXH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/D///+DRpGzAAAAIXRSTlMAIKfwph/n9fnorqQJCw366/wOK7ItpVzu713Ws0JLV/QsgbohAAAAAWJLR0QiXWVcrAAAAAd0SU1FB+QCExY6ErfWKNYAAABvSURBVAjXVc1ZDoAgDEXRKuKM4ow4vv1vUlGicD9oTkJaorsgZCwKyMZjJCkybpmjKEWB/FVVS0EkZNM+7NCb0aN7OGA0Y8Rwv5PC16xphhMjeL1cOF8crmbxT2yb+xn77vE4PJ6npXLvKNLyl9QXBpMVRBNLZCUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMjBUMDU6NTg6MTgtMDc6MDBncDo8AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTIwVDA1OjU4OjE4LTA3OjAwFi2CgAAAAABJRU5ErkJggg==') !default;
18
+ $icon-lock: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAARCAMAAADaFm2tAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAaVBMVEXH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/DH0/D///+DRpGzAAAAIXRSTlMAIKfwph/n9fnorqQJCw366/wOK7ItpVzu713Ws0JLV/QsgbohAAAAAWJLR0QiXWVcrAAAAAd0SU1FB+QCExY6ErfWKNYAAABvSURBVAjXVc1ZDoAgDEXRKuKM4ow4vv1vUlGicD9oTkJaorsgZCwKyMZjJCkybpmjKEWB/FVVS0EkZNM+7NCb0aN7OGA0Y8Rwv5PC16xphhMjeL1cOF8crmbxT2yb+xn77vE4PJ6npXLvKNLyl9QXBpMVRBNLZCUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMjBUMDU6NTg6MTgtMDc6MDBncDo8AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTIwVDA1OjU4OjE4LTA3OjAwFi2CgAAAAABJRU5ErkJggg==') !default;
@@ -1,17 +1,24 @@
1
1
  // Loaders and icons
2
- @use "images" as *;
2
+ @import 'images';
3
3
 
4
4
  // Colors
5
- $primary: #4273FA !default;
6
- $danger: #FE3F61 !default;
7
- $success: #60CF7D !default;
8
- $warning: #F5BE30 !default;
5
+ $primary: #4273fa !default;
6
+ $danger: #fe3f61 !default;
7
+ $success: #60cf7d !default;
8
+ $warning: #f5be30 !default;
9
9
  $mutedText: #b9c8de !default;
10
10
 
11
+ // CoreUI 5 sidebar variables
11
12
  $sidebar-bg: #485779 !default;
12
13
  $sidebar-nav-link-active-bg: $primary !default;
14
+ $sidebar-nav-link-active-color: white !default;
13
15
  $sidebar-nav-link-active-icon-color: white !default;
14
16
  $pagination-hover-bg: #f3f8ff !default;
15
17
 
18
+ // Border radius
19
+ $border-radius: 0.25rem !default;
20
+ $border-radius-sm: 0.2rem !default;
21
+ $border-radius-lg: 0.3rem !default;
22
+
16
23
  // Active loader
17
- $loader: $threeDots !default;
24
+ $loader: $threeDots !default;
package/scss/app.scss CHANGED
@@ -1,9 +1,9 @@
1
1
  // Variables
2
- @use 'variables' as *;
2
+ @import 'variables';
3
3
 
4
4
  // Vendor
5
- @use 'vendor/index' as *;
5
+ @import 'vendor/index';
6
6
 
7
7
  // Own styles and overrides
8
- @use 'overrides/index' as *;
9
- @use 'styles/index' as *;
8
+ @import 'overrides/index';
9
+ @import 'styles/index';
@@ -1,5 +1,3 @@
1
- @use "../variables" as *;
2
-
3
1
  .alert-success {
4
2
  color: $success;
5
3
  }
@@ -1,17 +1 @@
1
- @use "../variables" as *;
2
-
3
- .badge-info {
4
- background-color: $primary;
5
- }
6
-
7
- .badge-success {
8
- background-color: $success;
9
- }
10
-
11
- .badge-danger {
12
- background-color: $danger;
13
- }
14
-
15
- .badge-warning {
16
- background-color: $warning;
17
- }
1
+ // Badge overrides removed — BS5 uses .bg-* utilities instead of .badge-*
@@ -1,36 +1,73 @@
1
- @use "../variables" as *;
2
-
3
1
  .btn {
4
2
  cursor: pointer;
3
+
5
4
  &-primary,
6
5
  &-info {
7
6
  background-color: $primary;
8
7
  border-color: $primary;
8
+ color: white;
9
+
9
10
  &:hover {
10
11
  background-color: darken($primary, 10);
11
12
  border-color: darken($primary, 10);
13
+ color: white;
14
+ }
15
+
16
+ &:active,
17
+ &:focus {
18
+ color: white;
12
19
  }
13
20
  }
21
+
14
22
  &-danger {
15
23
  background-color: $danger;
16
24
  border-color: $danger;
25
+ color: white;
26
+
17
27
  &:hover {
18
28
  background-color: darken($danger, 10);
19
29
  border-color: darken($danger, 10);
30
+ color: white;
31
+ }
32
+
33
+ &:active,
34
+ &:focus {
35
+ color: white;
20
36
  }
21
37
  }
38
+
22
39
  &-success {
23
40
  background-color: $success;
24
41
  border-color: $success;
42
+ color: white;
43
+
25
44
  &:hover {
26
45
  background-color: darken($success, 10);
27
46
  border-color: darken($success, 10);
47
+ color: white;
48
+ }
49
+
50
+ &:active,
51
+ &:focus {
52
+ color: white;
28
53
  }
29
54
  }
55
+
56
+ &-warning {
57
+ color: white;
58
+
59
+ &:hover,
60
+ &:active,
61
+ &:focus {
62
+ color: white;
63
+ }
64
+ }
65
+
30
66
  &-secondary {
31
67
  color: #263238;
32
68
  background-color: #fff;
33
69
  border-color: #ccc;
70
+
34
71
  &:hover,
35
72
  &:active,
36
73
  &:focus {
@@ -39,26 +76,46 @@
39
76
  border-color: #ccc !important;
40
77
  }
41
78
  }
79
+
42
80
  &-dialog {
43
81
  display: flex;
44
82
  height: 100%;
45
83
  justify-content: center;
46
84
  align-items: center;
47
85
  }
86
+
87
+ &:not([class*='btn-outline-']) {
88
+ &:hover,
89
+ &:active,
90
+ &:focus,
91
+ &:visited {
92
+ color: white;
93
+ }
94
+ }
95
+
96
+ &:disabled {
97
+ color: white;
98
+ }
99
+
48
100
  &:hover,
49
101
  &:active,
50
102
  &:focus,
51
103
  &:visited {
52
- color: white;
53
104
  box-shadow: none;
54
105
  }
106
+
55
107
  &:hover {
56
- .fa-trash-o {
108
+ .fa-trash-can {
57
109
  animation: swing 1s;
58
110
  transform-origin: top center;
59
111
  }
60
112
  }
61
- i.fa {
62
- color: white;
113
+
114
+ &:not(.btn-outline-secondary) {
115
+ i.fa,
116
+ i.fa-solid,
117
+ i.fa-regular {
118
+ color: white;
119
+ }
63
120
  }
64
- }
121
+ }
@@ -1,14 +1,13 @@
1
- @use "../variables" as *;
2
-
3
1
  .card {
4
2
  border: 1px solid #d6dee3;
5
3
  }
6
4
 
7
5
  .card-header {
8
6
  background-color: white;
9
- border-bottom: 1px solid rgba(207, 216, 220, 0.35);
7
+ border-bottom: 1px solid rgb(207 216 220 / 35%);
10
8
  color: $primary;
11
9
  font-weight: 600;
10
+ font-size: 0.875rem;
12
11
  padding: 1.25rem;
13
12
  }
14
13
 
@@ -21,54 +20,8 @@
21
20
 
22
21
  .card small {
23
22
  color: $mutedText;
24
- a {
25
- color: $primary
26
- }
27
- }
28
-
29
- .card-block {
30
- padding-bottom: 0;
31
- .card-header {
32
- border-bottom: 0;
33
- }
34
- }
35
-
36
- .loading .card-block {
37
- position: relative;
38
- pointer-events: none;
39
- }
40
23
 
41
- .loading .card-block:before {
42
- content: $loader;
43
- position: absolute;
44
- left: 0;
45
- right: 0;
46
- top: 0;
47
- bottom: 0;
48
- display: flex;
49
- justify-content: center;
50
- align-items: center;
51
- background-color: rgba(255, 255, 255, 0.75);
52
- z-index: 3;
53
- }
54
-
55
- .form-edit,
56
- .form-create {
57
- .card-block:before {
58
- display: none !important;
59
- }
60
- }
61
-
62
- @media (max-width: 767px) {
63
- .card-block .card-header {
64
- padding-left: 0;
24
+ a {
25
+ color: $primary;
65
26
  }
66
27
  }
67
-
68
- @media (max-width: 450px) {
69
- .card-header>.btn.pull-right {
70
- display: block;
71
- float: none;
72
- margin-top: 15px;
73
- }
74
- }