@selvajs/ui 0.9.0 → 0.9.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.
@@ -220,7 +220,7 @@
220
220
  {@render treeNodes(fileTree, '')}
221
221
  {:else}
222
222
  <div class="gap-1 flex flex-col">
223
- {#each filesArray as file (file.fileName)}
223
+ {#each filesArray as file (file.fileName + file.fileType)}
224
224
  <div
225
225
  class="gap-2 text-xs flex items-center justify-between text-muted-foreground"
226
226
  >
package/package.json CHANGED
@@ -1,100 +1,102 @@
1
1
  {
2
- "name": "@selvajs/ui",
3
- "version": "0.9.0",
4
- "description": "Shared UI components and utilities for Selva applications",
5
- "license": "MIT",
6
- "publishConfig": {
7
- "access": "public"
8
- },
9
- "type": "module",
10
- "svelte": "./dist/index.js",
11
- "types": "./dist/index.d.ts",
12
- "exports": {
13
- ".": {
14
- "types": "./dist/index.d.ts",
15
- "svelte": "./dist/index.js"
16
- },
17
- "./primitives": {
18
- "types": "./dist/components/primitives/index.d.ts",
19
- "svelte": "./dist/components/primitives/index.js"
20
- },
21
- "./layout": {
22
- "types": "./dist/components/layout/index.d.ts",
23
- "svelte": "./dist/components/layout/index.js"
24
- },
25
- "./compute": {
26
- "types": "./dist/components/compute/index.d.ts",
27
- "svelte": "./dist/components/compute/index.js"
28
- },
29
- "./viewer": {
30
- "types": "./dist/components/viewer/index.d.ts",
31
- "svelte": "./dist/components/viewer/index.js"
32
- },
33
- "./footer": {
34
- "types": "./dist/contexts/footerContext.svelte.d.ts",
35
- "svelte": "./dist/contexts/footerContext.svelte.js"
36
- },
37
- "./utils": {
38
- "types": "./dist/utils.d.ts",
39
- "import": "./dist/utils.js"
40
- },
41
- "./styles/base.css": "./src/lib/styles/base.css",
42
- "./styles/themes/*": "./src/lib/styles/themes/*"
43
- },
44
- "files": [
45
- "dist",
46
- "src/lib",
47
- "!dist/**/*.test.*",
48
- "!dist/**/*.spec.*",
49
- "!src/lib/**/*.test.*",
50
- "!src/lib/**/*.spec.*"
51
- ],
52
- "sideEffects": [
53
- "**/*.css"
54
- ],
55
- "peerDependencies": {
56
- "@selvajs/compute": "1.5.2-beta.7",
57
- "@sveltejs/kit": "^2",
58
- "bits-ui": "^2.15.4",
59
- "svelte": "^5",
60
- "tailwind-variants": "^3.2.2",
61
- "three": "^0.184.0"
62
- },
63
- "peerDependenciesMeta": {
64
- "three": {
65
- "optional": true
66
- }
67
- },
68
- "dependencies": {
69
- "@floating-ui/dom": "^1.7.6",
70
- "@iconify/svelte": "^5.2.1",
71
- "@lucide/svelte": "^1.11.0",
72
- "clsx": "^2.1.1",
73
- "mode-watcher": "^1.1.0",
74
- "paneforge": "^1.0.2",
75
- "svelte-sonner": "^1.1.1",
76
- "tailwind-merge": "^3.5.0",
77
- "tw-animate-css": "^1.4.0",
78
- "@selvajs/schemas": "1.1.1"
79
- },
80
- "devDependencies": {
81
- "@internationalized/date": "^3.12.1",
82
- "@sveltejs/kit": "2.58.0",
83
- "@types/three": "^0.184.0",
84
- "bits-ui": "^2.18.0",
85
- "svelte": "5.55.5",
86
- "tailwind-variants": "^3.2.2",
87
- "@selvajs/config": "0.0.0"
88
- },
89
- "scripts": {
90
- "dev": "vite dev",
91
- "build": "rm -rf dist && vite build && pnpm prepack",
92
- "build:fast": "svelte-kit sync && svelte-package",
93
- "build:watch": "svelte-kit sync && svelte-package --watch",
94
- "preview": "vite preview",
95
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
96
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
97
- "format": "prettier --write .",
98
- "lint": "prettier --check . && eslint ."
99
- }
100
- }
2
+ "name": "@selvajs/ui",
3
+ "version": "0.9.1",
4
+ "description": "Shared UI components and utilities for Selva applications",
5
+ "license": "MIT",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "type": "module",
10
+ "svelte": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "svelte": "./dist/index.js"
16
+ },
17
+ "./primitives": {
18
+ "types": "./dist/components/primitives/index.d.ts",
19
+ "svelte": "./dist/components/primitives/index.js"
20
+ },
21
+ "./layout": {
22
+ "types": "./dist/components/layout/index.d.ts",
23
+ "svelte": "./dist/components/layout/index.js"
24
+ },
25
+ "./compute": {
26
+ "types": "./dist/components/compute/index.d.ts",
27
+ "svelte": "./dist/components/compute/index.js"
28
+ },
29
+ "./viewer": {
30
+ "types": "./dist/components/viewer/index.d.ts",
31
+ "svelte": "./dist/components/viewer/index.js"
32
+ },
33
+ "./footer": {
34
+ "types": "./dist/contexts/footerContext.svelte.d.ts",
35
+ "svelte": "./dist/contexts/footerContext.svelte.js"
36
+ },
37
+ "./utils": {
38
+ "types": "./dist/utils.d.ts",
39
+ "import": "./dist/utils.js"
40
+ },
41
+ "./styles/base.css": "./src/lib/styles/base.css",
42
+ "./styles/themes/*": "./src/lib/styles/themes/*"
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "src/lib",
47
+ "!dist/**/*.test.*",
48
+ "!dist/**/*.spec.*",
49
+ "!src/lib/**/*.test.*",
50
+ "!src/lib/**/*.spec.*"
51
+ ],
52
+ "sideEffects": [
53
+ "**/*.css"
54
+ ],
55
+ "scripts": {
56
+ "dev": "vite dev",
57
+ "build": "rm -rf dist && vite build && pnpm prepack",
58
+ "build:fast": "svelte-kit sync && svelte-package",
59
+ "build:watch": "svelte-kit sync && svelte-package --watch",
60
+ "preview": "vite preview",
61
+ "prepack": "svelte-kit sync && svelte-package && publint",
62
+ "prepare": "svelte-kit sync || echo ''",
63
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
64
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
65
+ "format": "prettier --write .",
66
+ "lint": "prettier --check . && eslint ."
67
+ },
68
+ "peerDependencies": {
69
+ "@selvajs/compute": "catalog:",
70
+ "@sveltejs/kit": "^2",
71
+ "bits-ui": "^2.15.4",
72
+ "svelte": "^5",
73
+ "tailwind-variants": "^3.2.2",
74
+ "three": "catalog:"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "three": {
78
+ "optional": true
79
+ }
80
+ },
81
+ "dependencies": {
82
+ "@floating-ui/dom": "catalog:",
83
+ "@iconify/svelte": "catalog:",
84
+ "@lucide/svelte": "catalog:",
85
+ "@selvajs/schemas": "workspace:*",
86
+ "clsx": "catalog:",
87
+ "mode-watcher": "catalog:",
88
+ "paneforge": "^1.0.2",
89
+ "svelte-sonner": "catalog:",
90
+ "tailwind-merge": "catalog:",
91
+ "tw-animate-css": "catalog:"
92
+ },
93
+ "devDependencies": {
94
+ "@internationalized/date": "^3.12.1",
95
+ "@selvajs/config": "workspace:*",
96
+ "@sveltejs/kit": "catalog:",
97
+ "@types/three": "catalog:",
98
+ "bits-ui": "^2.18.0",
99
+ "svelte": "catalog:",
100
+ "tailwind-variants": "^3.2.2"
101
+ }
102
+ }
@@ -93,6 +93,24 @@
93
93
  const hasSubFolders = $derived(filesArray.some((f) => f.subFolder && f.subFolder.length > 0));
94
94
  const fileTree = $derived(hasSubFolders ? buildTree(filesArray) : null);
95
95
 
96
+ function fullPath(f: FileData): string {
97
+ const folder = (f.subFolder || '').replace(/^\/+|\/+$/g, '');
98
+ const name = `${f.fileName}${f.fileType ?? ''}`;
99
+ return folder ? `${folder}/${name}` : name;
100
+ }
101
+
102
+ const duplicatePaths = $derived.by(() => {
103
+ const seen = new Map<string, number>();
104
+ for (const f of filesArray) {
105
+ const key = fullPath(f);
106
+ seen.set(key, (seen.get(key) ?? 0) + 1);
107
+ }
108
+ return Array.from(seen.entries())
109
+ .filter(([, n]) => n > 1)
110
+ .map(([path]) => path);
111
+ });
112
+ const hasDuplicates = $derived(duplicatePaths.length > 0);
113
+
96
114
  // All folders expanded by default
97
115
  let expandedFolders = new SvelteSet<string>();
98
116
 
@@ -220,7 +238,7 @@
220
238
  {@render treeNodes(fileTree, '')}
221
239
  {:else}
222
240
  <div class="gap-1 flex flex-col">
223
- {#each filesArray as file (file.fileName)}
241
+ {#each filesArray as file (file.fileName + file.fileType)}
224
242
  <div
225
243
  class="gap-2 text-xs flex items-center justify-between text-muted-foreground"
226
244
  >