@bexis2/bexis2-core-ui 0.0.3 → 0.0.5

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 (55) hide show
  1. package/.eslintignore +13 -0
  2. package/.eslintrc.cjs +20 -0
  3. package/.prettierignore +13 -0
  4. package/.prettierrc +9 -0
  5. package/package.json +36 -168
  6. package/playwright.config.ts +11 -0
  7. package/postcss.config.cjs +6 -0
  8. package/src/app.d.ts +11 -0
  9. package/src/app.html +15 -0
  10. package/src/app.postcss +2 -0
  11. package/src/index.test.ts +7 -0
  12. package/src/lib/components/File/FileUploader.svelte +217 -0
  13. package/src/lib/components/ListView.svelte +13 -0
  14. package/src/lib/components/Spinner/Spinner.svelte +8 -0
  15. package/src/lib/css/themes/theme-bexis2.css +98 -0
  16. package/src/lib/index.ts +19 -0
  17. package/src/lib/models/Models.ts +39 -0
  18. package/{services/Api.js → src/lib/services/Api.ts} +25 -11
  19. package/src/lib/stores/apistore.ts +32 -0
  20. package/src/routes/+layout.svelte +10 -0
  21. package/src/routes/+page.svelte +0 -0
  22. package/static/favicon.png +0 -0
  23. package/svelte.config.js +18 -0
  24. package/tailwind.config.cjs +9 -0
  25. package/tests/test.ts +6 -0
  26. package/tsconfig.json +19 -0
  27. package/vite.config.ts +9 -0
  28. package/TableView.svelte.d.ts +0 -23
  29. package/components/File/FileIcon.svelte.d.ts +0 -23
  30. package/components/File/FileInfo.svelte.d.ts +0 -27
  31. package/components/File/FileUploader.svelte +0 -135
  32. package/components/File/FileUploader.svelte.d.ts +0 -27
  33. package/components/ListView.svelte +0 -6
  34. package/components/ListView.svelte.d.ts +0 -14
  35. package/index.d.ts +0 -9
  36. package/index.js +0 -9
  37. package/models/Models.d.ts +0 -31
  38. package/models/Models.js +0 -1
  39. package/services/Api.d.ts +0 -7
  40. package/stores/apistore.d.ts +0 -4
  41. package/stores/apistore.js +0 -22
  42. /package/{TableView.svelte → src/lib/TableView.svelte} +0 -0
  43. /package/{components → src/lib/components}/File/FileIcon.svelte +0 -0
  44. /package/{components → src/lib/components}/File/FileInfo.svelte +0 -0
  45. /package/{css → src/lib/css}/core.ui.postcss +0 -0
  46. /package/{css → src/lib/css}/themes/theme-crimson.css +0 -0
  47. /package/{css → src/lib/css}/themes/theme-gold-nouveau.css +0 -0
  48. /package/{css → src/lib/css}/themes/theme-hamlindigo.css +0 -0
  49. /package/{css → src/lib/css}/themes/theme-modern.css +0 -0
  50. /package/{css → src/lib/css}/themes/theme-rocket.css +0 -0
  51. /package/{css → src/lib/css}/themes/theme-sahara.css +0 -0
  52. /package/{css → src/lib/css}/themes/theme-seafoam.css +0 -0
  53. /package/{css → src/lib/css}/themes/theme-seasonal.css +0 -0
  54. /package/{css → src/lib/css}/themes/theme-skeleton.css +0 -0
  55. /package/{css → src/lib/css}/themes/theme-vintage.css +0 -0
package/.eslintignore ADDED
@@ -0,0 +1,13 @@
1
+ .DS_Store
2
+ node_modules
3
+ /build
4
+ /.svelte-kit
5
+ /package
6
+ .env
7
+ .env.*
8
+ !.env.example
9
+
10
+ # Ignore files for PNPM, NPM and YARN
11
+ pnpm-lock.yaml
12
+ package-lock.json
13
+ yarn.lock
package/.eslintrc.cjs ADDED
@@ -0,0 +1,20 @@
1
+ module.exports = {
2
+ root: true,
3
+ parser: '@typescript-eslint/parser',
4
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
5
+ plugins: ['svelte3', '@typescript-eslint'],
6
+ ignorePatterns: ['*.cjs'],
7
+ overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
8
+ settings: {
9
+ 'svelte3/typescript': () => require('typescript')
10
+ },
11
+ parserOptions: {
12
+ sourceType: 'module',
13
+ ecmaVersion: 2020
14
+ },
15
+ env: {
16
+ browser: true,
17
+ es2017: true,
18
+ node: true
19
+ }
20
+ };
@@ -0,0 +1,13 @@
1
+ .DS_Store
2
+ node_modules
3
+ /build
4
+ /.svelte-kit
5
+ /package
6
+ .env
7
+ .env.*
8
+ !.env.example
9
+
10
+ # Ignore files for PNPM, NPM and YARN
11
+ pnpm-lock.yaml
12
+ package-lock.json
13
+ yarn.lock
package/.prettierrc ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "useTabs": true,
3
+ "singleQuote": true,
4
+ "trailingComma": "none",
5
+ "printWidth": 100,
6
+ "plugins": ["prettier-plugin-svelte"],
7
+ "pluginSearchDirs": ["."],
8
+ "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
9
+ }
package/package.json CHANGED
@@ -1,24 +1,43 @@
1
1
  {
2
2
  "name": "@bexis2/bexis2-core-ui",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "private": false,
5
+ "scripts": {
6
+ "dev": "vite dev",
7
+ "package": "svelte-package `./package/`",
8
+ "build": "vite build sync --watch",
9
+ "preview": "vite preview",
10
+ "test": "playwright test",
11
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
12
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13
+ "test:unit": "vitest",
14
+ "lint": "prettier --plugin-search-dir . --check . && eslint .",
15
+ "format": "prettier --plugin-search-dir . --write .",
16
+ "init": "npm init --scope bexis2",
17
+ "link": "npm link",
18
+ "publish": "npm publish --access public"
19
+ },
5
20
  "devDependencies": {
6
21
  "@playwright/test": "^1.28.1",
7
- "@sveltejs/adapter-auto": "^1.0.0-next.90",
8
- "@sveltejs/kit": "^1.0.0-next.587",
9
- "@sveltejs/package": "^1.0.0-next.6",
22
+ "@skeletonlabs/skeleton": "^1.2.5",
23
+ "@sveltejs/adapter-auto": "^2.0.0",
24
+ "@sveltejs/kit": "^1.5.0",
10
25
  "@typescript-eslint/eslint-plugin": "^5.45.0",
11
26
  "@typescript-eslint/parser": "^5.45.0",
27
+ "autoprefixer": "^10.4.14",
12
28
  "eslint": "^8.28.0",
13
29
  "eslint-config-prettier": "^8.5.0",
14
30
  "eslint-plugin-svelte3": "^4.0.0",
31
+ "postcss": "^8.4.23",
15
32
  "prettier": "^2.8.0",
16
33
  "prettier-plugin-svelte": "^2.8.1",
17
- "svelte": "^3.55.0",
18
- "svelte-check": "^2.9.2",
34
+ "svelte": "^3.54.0",
35
+ "svelte-check": "^3.0.1",
36
+ "tailwindcss": "^3.3.2",
19
37
  "tslib": "^2.4.1",
20
- "typescript": "^4.9.3",
21
- "vite": "^4.0.0"
38
+ "typescript": "^5.0.0",
39
+ "vite": "^4.3.0",
40
+ "vitest": "^0.25.3"
22
41
  },
23
42
  "type": "module",
24
43
  "module": "./src/lib/index.ts",
@@ -33,144 +52,11 @@
33
52
  "@fortawesome/fontawesome-svg-core": "^6.2.1",
34
53
  "@fortawesome/free-regular-svg-icons": "^6.2.1",
35
54
  "@fortawesome/free-solid-svg-icons": "^6.2.1",
55
+ "@sveltejs/package": "^2.0.2",
36
56
  "axios": "^1.2.1",
37
- "es6-promise": "^3.3.1",
38
- "esbuild": "^0.16.6",
39
- "escape-string-regexp": "^4.0.0",
40
- "eslint-scope": "^5.1.1",
41
- "eslint-utils": "^3.0.0",
42
- "eslint-visitor-keys": "^3.3.0",
43
- "esm-env": "^1.0.0",
44
- "espree": "^9.4.1",
45
- "esquery": "^1.4.0",
46
- "esrecurse": "^4.3.0",
47
- "estraverse": "^4.3.0",
48
- "esutils": "^2.0.3",
49
- "fast-deep-equal": "^3.1.3",
50
- "fast-glob": "^3.2.12",
51
- "fast-json-stable-stringify": "^2.1.0",
52
- "fast-levenshtein": "^2.0.6",
53
- "fastq": "^1.14.0",
54
- "file-entry-cache": "^6.0.1",
55
- "fill-range": "^7.0.1",
56
- "find-up": "^5.0.0",
57
- "flat-cache": "^3.0.4",
58
- "flatted": "^3.2.7",
59
- "fs.realpath": "^1.0.0",
60
- "function-bind": "^1.1.1",
61
- "glob": "^7.2.3",
62
- "glob-parent": "^5.1.2",
63
- "globals": "^13.19.0",
64
- "globalyzer": "^0.1.0",
65
- "globby": "^11.1.0",
66
- "globrex": "^0.1.2",
67
- "graceful-fs": "^4.2.10",
68
- "grapheme-splitter": "^1.0.4",
69
- "has": "^1.0.3",
70
- "has-flag": "^4.0.0",
71
- "ignore": "^5.2.1",
72
- "import-fresh": "^3.3.0",
73
- "import-meta-resolve": "^2.2.0",
74
- "imurmurhash": "^0.1.4",
75
- "inflight": "^1.0.6",
76
- "inherits": "^2.0.4",
77
- "is-binary-path": "^2.1.0",
78
- "is-core-module": "^2.11.0",
79
- "is-extglob": "^2.1.1",
80
- "is-glob": "^4.0.3",
81
- "is-number": "^7.0.0",
82
- "is-path-inside": "^3.0.3",
83
- "isexe": "^2.0.0",
84
- "js-sdsl": "^4.2.0",
85
- "js-yaml": "^4.1.0",
86
- "json-schema-traverse": "^0.4.1",
87
- "json-stable-stringify-without-jsonify": "^1.0.1",
88
- "kleur": "^4.1.5",
89
- "levn": "^0.4.1",
90
- "locate-path": "^6.0.0",
91
- "lodash.merge": "^4.6.2",
92
- "lower-case": "^2.0.2",
93
- "lru-cache": "^6.0.0",
94
- "magic-string": "^0.27.0",
95
- "merge2": "^1.4.1",
96
- "micromatch": "^4.0.5",
97
- "mime": "^3.0.0",
98
- "min-indent": "^1.0.1",
99
- "minimatch": "^3.1.2",
100
- "minimist": "^1.2.7",
101
- "mkdirp": "^0.5.6",
102
- "mri": "^1.2.0",
103
- "mrmime": "^1.0.1",
104
- "ms": "^2.1.2",
105
- "nanoid": "^3.3.4",
106
- "natural-compare": "^1.4.0",
107
- "natural-compare-lite": "^1.4.0",
108
- "no-case": "^3.0.4",
109
- "normalize-path": "^3.0.0",
110
- "once": "^1.4.0",
111
- "optionator": "^0.9.1",
112
- "p-limit": "^3.1.0",
113
- "p-locate": "^5.0.0",
114
- "parent-module": "^1.0.1",
115
- "pascal-case": "^3.1.2",
116
- "path-exists": "^4.0.0",
117
- "path-is-absolute": "^1.0.1",
118
- "path-key": "^3.1.1",
119
- "path-parse": "^1.0.7",
120
- "path-type": "^4.0.0",
121
- "picocolors": "^1.0.0",
122
- "picomatch": "^2.3.1",
123
- "playwright-core": "^1.28.1",
124
- "postcss": "^8.4.20",
125
- "prelude-ls": "^1.2.1",
126
- "punycode": "^2.1.1",
127
- "queue-microtask": "^1.2.3",
128
- "readdirp": "^3.6.0",
129
- "regexpp": "^3.2.0",
130
- "resolve": "^1.22.1",
131
- "resolve-from": "^4.0.0",
132
- "reusify": "^1.0.4",
133
- "rimraf": "^3.0.2",
134
- "rollup": "^3.7.4",
135
- "run-parallel": "^1.2.0",
136
- "sade": "^1.8.1",
137
- "sander": "^0.5.1",
138
- "semver": "^7.3.8",
139
- "set-cookie-parser": "^2.5.1",
140
- "shebang-command": "^2.0.0",
141
- "shebang-regex": "^3.0.0",
142
- "sirv": "^2.0.2",
143
- "slash": "^3.0.0",
144
- "sorcery": "^0.10.0",
145
- "source-map-js": "^1.0.2",
146
- "sourcemap-codec": "^1.4.8",
147
- "streamsearch": "^1.1.0",
148
- "strip-ansi": "^6.0.1",
149
- "strip-indent": "^3.0.0",
150
- "strip-json-comments": "^3.1.1",
151
- "supports-color": "^7.2.0",
152
- "supports-preserve-symlinks-flag": "^1.0.0",
57
+ "svelte": "^3.54.0",
153
58
  "svelte-fa": "^3.0.3",
154
- "svelte-file-dropzone": "^1.0.0",
155
- "svelte-hmr": "^0.15.1",
156
- "svelte-preprocess": "^4.10.7",
157
- "svelte2tsx": "^0.5.22",
158
- "sveltestrap": "^5.10.0",
159
- "text-table": "^0.2.0",
160
- "tiny-glob": "^0.2.9",
161
- "to-regex-range": "^5.0.1",
162
- "totalist": "^3.0.0",
163
- "tsutils": "^3.21.0",
164
- "type-check": "^0.4.0",
165
- "type-fest": "^0.20.2",
166
- "undici": "^5.14.0",
167
- "uri-js": "^4.4.1",
168
- "vitefu": "^0.2.3",
169
- "which": "^2.0.2",
170
- "word-wrap": "^1.2.3",
171
- "wrappy": "^1.0.2",
172
- "yallist": "^4.0.0",
173
- "yocto-queue": "^0.1.0"
59
+ "svelte-file-dropzone": "^2.0.1"
174
60
  },
175
61
  "author": "David Schöne",
176
62
  "license": "ISC",
@@ -187,27 +73,9 @@
187
73
  "libary"
188
74
  ],
189
75
  "exports": {
190
- "./package.json": "./package.json",
191
- "./components/File/FileIcon.svelte": "./components/File/FileIcon.svelte",
192
- "./components/File/FileInfo.svelte": "./components/File/FileInfo.svelte",
193
- "./components/File/FileUploader.svelte": "./components/File/FileUploader.svelte",
194
- "./components/ListView.svelte": "./components/ListView.svelte",
195
- "./css/core.ui.postcss": "./css/core.ui.postcss",
196
- "./css/themes/theme-crimson.css": "./css/themes/theme-crimson.css",
197
- "./css/themes/theme-gold-nouveau.css": "./css/themes/theme-gold-nouveau.css",
198
- "./css/themes/theme-hamlindigo.css": "./css/themes/theme-hamlindigo.css",
199
- "./css/themes/theme-modern.css": "./css/themes/theme-modern.css",
200
- "./css/themes/theme-rocket.css": "./css/themes/theme-rocket.css",
201
- "./css/themes/theme-sahara.css": "./css/themes/theme-sahara.css",
202
- "./css/themes/theme-seafoam.css": "./css/themes/theme-seafoam.css",
203
- "./css/themes/theme-seasonal.css": "./css/themes/theme-seasonal.css",
204
- "./css/themes/theme-skeleton.css": "./css/themes/theme-skeleton.css",
205
- "./css/themes/theme-vintage.css": "./css/themes/theme-vintage.css",
206
- ".": "./index.js",
207
- "./models/Models": "./models/Models.js",
208
- "./services/Api": "./services/Api.js",
209
- "./stores/apistore": "./stores/apistore.js",
210
- "./TableView.svelte": "./TableView.svelte"
211
- },
212
- "svelte": "./index.js"
213
- }
76
+ ".": {
77
+ "types": "./dist/index.d.ts",
78
+ "svelte": "./dist/index.js"
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,11 @@
1
+ import type { PlaywrightTestConfig } from '@playwright/test';
2
+
3
+ const config: PlaywrightTestConfig = {
4
+ webServer: {
5
+ command: 'npm run build && npm run preview',
6
+ port: 4173
7
+ },
8
+ testDir: 'tests'
9
+ };
10
+
11
+ export default config;
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
package/src/app.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /// <reference types="@sveltejs/kit" />
2
+
3
+ // See https://kit.svelte.dev/docs/types#app
4
+ // for information about these interfaces
5
+ // and what to do when importing types
6
+ declare namespace App {
7
+ // interface Error {}
8
+ // interface Locals {}
9
+ // interface PageData {}
10
+ // interface Platform {}
11
+ }
package/src/app.html ADDED
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
+
7
+
8
+
9
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
10
+ %sveltekit.head%
11
+ </head>
12
+ <body>
13
+ <div>%sveltekit.body%</div>
14
+ </body>
15
+ </html>
@@ -0,0 +1,2 @@
1
+ /*place global styles here */
2
+ html, body { @apply h-full; }
@@ -0,0 +1,7 @@
1
+ import { describe, it, expect } from 'vitest';
2
+
3
+ describe('sum test', () => {
4
+ it('adds 1 + 2 to equal 3', () => {
5
+ expect(1 + 2).toBe(3);
6
+ });
7
+ });
@@ -0,0 +1,217 @@
1
+ <script type="ts">
2
+
3
+ import type { FileUploaderModel, FileInfo, Files} from '../../models/Models.js'
4
+
5
+
6
+ import DropZone from "svelte-file-dropzone/Dropzone.svelte";
7
+ import {Fa} from 'svelte-fa'
8
+
9
+ import Spinner from '../Spinner/Spinner.svelte';
10
+ import { createEventDispatcher } from 'svelte';
11
+ import { faTrash } from '@fortawesome/free-solid-svg-icons'
12
+ import { faSave } from '@fortawesome/free-regular-svg-icons'
13
+ import { faFileUpload } from '@fortawesome/free-solid-svg-icons'
14
+
15
+ import { Api } from '../../services/Api.js'
16
+
17
+ export let id=0;
18
+ export let version=1;
19
+
20
+ import { onMount } from 'svelte'
21
+
22
+ // export let description="";
23
+ // export let status=0;
24
+
25
+
26
+ //action to load fileupload model
27
+ export let start="";
28
+ //action to save selected file
29
+ export let submit="";
30
+
31
+ export let context="";
32
+
33
+ export let data:FileUploaderModel | undefined;
34
+
35
+ $:model= data;
36
+ $:submitBt ="submit";
37
+
38
+ let maxSize=0;
39
+
40
+ const dispatch = createEventDispatcher();
41
+
42
+ let fx:FileInfo[]
43
+
44
+ let files:Files = {accepted:[], rejected:[]};
45
+ $:files;
46
+
47
+ onMount(async () => {
48
+
49
+ console.log("fileupload - OnMount", data);
50
+
51
+
52
+ if(!data)
53
+ {
54
+ load();
55
+ }
56
+ else
57
+ {
58
+ model = data;
59
+ }
60
+
61
+ if(model)
62
+ {
63
+ submitBt += context;
64
+ maxSize = (model.maxSize*1024)*1024
65
+ }
66
+
67
+ })
68
+
69
+ // load modal from server
70
+ async function load()
71
+ {
72
+ let url = start+"?id="+id+"&version="+version;
73
+
74
+ // load menu froms server
75
+ const res = await Api.get(url);
76
+ model = await res.json();
77
+
78
+ console.log("fileupload",model);
79
+
80
+
81
+ }
82
+
83
+ function handleFilesSelect(e:any) {
84
+
85
+ console.log("handleFilesSelect", e);
86
+ console.log("files", files);
87
+
88
+
89
+ const { acceptedFiles, fileRejections } = e.detail;
90
+
91
+
92
+ files.accepted = [...files.accepted, ...acceptedFiles];
93
+ files.rejected = [...files.rejected, ...fileRejections];
94
+
95
+
96
+ console.log("acceptedFiles", acceptedFiles);
97
+ console.log("files.accepted", files.accepted);
98
+
99
+
100
+ if(fileRejections.length>0)
101
+ {
102
+ //alert("the dropped file is not supported");
103
+ console.log("the dropped file is not supported.");
104
+ console.log(files.rejected);
105
+
106
+ let messages = [""];
107
+
108
+ for (let index = 0; index < fileRejections.length; index++) {
109
+ const element = fileRejections[index];
110
+ messages.push(getErrorMessage(element))
111
+ }
112
+
113
+ console.log(messages);
114
+
115
+ dispatch("error", {messages})
116
+ //list up the errors somewhere
117
+ files.rejected = []
118
+ }
119
+
120
+ if(acceptedFiles.length>0)
121
+ {
122
+ document.getElementById(submitBt)?.click();
123
+ }
124
+
125
+ }
126
+
127
+ function getErrorMessage(rejected)
128
+ {
129
+ let message = "";
130
+ message = rejected.file.path+" : ";
131
+ let errors = rejected.errors;
132
+ for (let index = 0; index < errors.length; index++) {
133
+ const error = errors[index];
134
+ message+=error.message
135
+ }
136
+
137
+ return message;
138
+ }
139
+
140
+ async function handleSubmit() {
141
+
142
+ console.log("SUBMIT");
143
+
144
+ dispatch('submit')
145
+
146
+ let url = submit+"?id="+id;
147
+
148
+ // console.log(model);
149
+ // console.log(url);
150
+ console.log("SUBMIT");
151
+
152
+ if (files.accepted.length > 0) {
153
+
154
+ console.log(files);
155
+
156
+ const formData = new FormData();
157
+ formData.append("files","123");
158
+ // Looping over all files and add it to FormData object
159
+ for (var i = 0; i < files.accepted.length; i++) {
160
+
161
+
162
+ formData.append(files.accepted[i].name, files.accepted[i]);
163
+ }
164
+
165
+
166
+ const response = await Api.post(url, formData);
167
+
168
+ if(response.status==200)
169
+ {
170
+ dispatch('submited');
171
+
172
+ let message = files.accepted.length +" is/are uploaded";
173
+ dispatch('success', {text:message})
174
+
175
+ files.accepted = [];
176
+
177
+ }
178
+ }
179
+ }
180
+
181
+ </script>
182
+
183
+ <form on:submit|preventDefault={handleSubmit}>
184
+ {#if model}
185
+ <!--if model exist -->
186
+ <div>
187
+
188
+ <DropZone
189
+ on:drop={handleFilesSelect}
190
+ accept={model.accept}
191
+ multiple={model.multiple}
192
+ {maxSize}>
193
+
194
+ <b style="font-size:xx-large"><Fa icon={faFileUpload}/></b>
195
+ <span><b>Drag 'n' drop some files here, or click to select files</b>
196
+ <b>max file : {model.maxSize} mb</b></span>
197
+ <p>
198
+ {#if model.accept}
199
+ {#each model.accept as ext}
200
+ {ext} ,
201
+ {/each}
202
+ {/if}
203
+ </p>
204
+ </DropZone>
205
+
206
+ </div>
207
+
208
+ <button id="{submitBt}" color="primary" style="display:none" ><Fa icon={faSave}/></button>
209
+
210
+ {:else} <!-- while data is not loaded show a loading information -->
211
+
212
+ <Spinner/>
213
+ {/if}
214
+
215
+ </form>
216
+
217
+
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+
3
+ type x={
4
+ name:string
5
+ }
6
+
7
+ let result:x = {name:"david"}
8
+
9
+ </script>
10
+
11
+ <h1>MyList</h1>
12
+ {result.name}
13
+ <b>from bexis-lib</b>
@@ -0,0 +1,8 @@
1
+ <div
2
+ class="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]"
3
+ role="status">
4
+ <span
5
+ class="!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]"
6
+ >Loading...</span
7
+ >
8
+ </div>