@putkoff/abstract-securefiles 0.0.0 → 0.0.19

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.
package/css.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare module '*.css';
2
+ declare module '*.module.css';
@@ -1,4 +1,4 @@
1
1
  import './styles/index.css';
2
- import React from "react";
2
+ import * as React from 'react';
3
3
  declare const SecureFiles: React.FC;
4
4
  export default SecureFiles;
package/dist/index.cjs ADDED
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var abstractFiles = require('@putkoff/abstract-files');
5
+ var abstractUtilities = require('@putkoff/abstract-utilities');
6
+
7
+ function checkTokenValid() {
8
+ const tok = abstractUtilities.getToken();
9
+ return !!tok && !abstractUtilities.isTokenExpired(tok);
10
+ }
11
+ const SecureFiles = () => {
12
+ const [loggedIn, setLoggedIn] = abstractUtilities.useState(checkTokenValid());
13
+ const filesHook = abstractFiles.useFiles(); // ← one single hook instance
14
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(abstractFiles.Upload, { onUploaded: filesHook.load }), jsxRuntime.jsx(abstractFiles.FileTable, { files: filesHook.files, loading: filesHook.loading, error: filesHook.error, onDownload: filesHook.toggleShare, onToggleShare: filesHook.toggleShare, onPatchShare: filesHook.patchShareSettings, onDelete: filesHook.deleteFile })] }));
15
+ };
16
+
17
+ exports.SecureFiles = SecureFiles;
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/App/secure_files.tsx"],"sourcesContent":["// src/App.tsx\n// src/index.tsx\nimport './styles/index.css';\nimport * as React from 'react'; // ✅ works without esModuleInterop\nimport {\n useFiles,\n FileTable,\n Upload\n} from \"@putkoff/abstract-files\";\n\nimport {\n getToken, // ⬅️ use the *non-throwing* helper\n isTokenExpired,\n useState\n} from \"@putkoff/abstract-utilities\";\nfunction checkTokenValid() {\n const tok = getToken();\n return !!tok && !isTokenExpired(tok);\n}\nconst SecureFiles: React.FC = () => {\n const [loggedIn, setLoggedIn] = useState(checkTokenValid());\n const filesHook = useFiles(); // ← one single hook instance\n return (\n <>\n {/* pass the same load & file‐list into both children */}\n <Upload onUploaded={filesHook.load} />\n <FileTable\n files={filesHook.files}\n loading={filesHook.loading}\n error={filesHook.error}\n onDownload={filesHook.toggleShare} // or downloadFile\n onToggleShare={filesHook.toggleShare}\n onPatchShare={filesHook.patchShareSettings}\n onDelete={filesHook.deleteFile}\n />\n\n </>\n )\n}\n\nexport default SecureFiles;"],"names":["getToken","isTokenExpired","useState","useFiles","_jsxs","_Fragment","_jsx","Upload","FileTable"],"mappings":";;;;;;AAeA,SAAS,eAAe,GAAA;AACtB,IAAA,MAAM,GAAG,GAAGA,0BAAQ,EAAE;IACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAACC,gCAAc,CAAC,GAAG,CAAC;AACtC;AACA,MAAM,WAAW,GAAa,MAAK;IACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,0BAAQ,CAAC,eAAe,EAAE,CAAC;AAC3D,IAAA,MAAM,SAAS,GAAGC,sBAAQ,EAAE,CAAC;IAC7B,QACEC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,cAAA,CAACC,oBAAM,EAAA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAA,CAAI,EACtCD,cAAA,CAACE,uBAAS,EAAA,EACR,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,UAAU,EAAE,SAAS,CAAC,WAAW,EACjC,aAAa,EAAE,SAAS,CAAC,WAAW,EACpC,YAAY,EAAE,SAAS,CAAC,kBAAkB,EAC1C,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAA,CAC9B,CAAA,EAAA,CAED;AAEP;;;;"}
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}@layer components{.wm-table{font-size:13px;table-layout:fixed;width:100%}.wm-thead th{background-color:#e5e7eb;border-bottom:1px solid #9ca3af;font-weight:600;padding:5px 8px;text-align:left}.wm-row{background-color:#f9fafb;border-bottom:1px solid #d1d5db}.wm-row:hover{background-color:#eff6ff}.wm-cell{overflow:hidden;padding:5px 8px;text-overflow:ellipsis;white-space:nowrap}.wm-checkbox{border:1px solid #9ca3af;border-radius:4px;color:#2563eb;cursor:pointer;height:14px;width:14px}.wm-btn-link{color:#2563eb;text-decoration:underline}.wm-btn-link:hover{color:#1e40af}.wm-btn-link:disabled{color:#9ca3af;cursor:not-allowed}.wm-btn-icon{border-radius:4px;color:#4b5563;padding:2px}.wm-btn-icon:hover{background-color:#e5e7eb;color:#111827}.wm-btn-icon:disabled{color:#9ca3af}.file-table{border:1px solid #9ca3af;border-collapse:collapse;font-size:13px;line-height:1.15rem;width:100%}.file-table thead th{background-color:#e5e7eb;border-bottom:1px solid #9ca3af;border-right:1px solid #d1d5db;color:#1f2937;font-weight:600;padding:6px 12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.file-table thead th:last-child{border-right:none}.file-table tbody tr{border-bottom:1px solid #d1d5db;transition:background-color .2s}.file-table tbody tr:hover{background-color:#f3f4f6}.file-table tbody tr:nth-child(2n){background-color:#f9fafb}.file-table td{border-right:1px solid #d1d5db;padding:6px 12px;vertical-align:middle;white-space:nowrap}.file-table td:last-child{border-right:none}.file-table .unsaved{color:#dc2626}.modal-backdrop{background-color:rgba(0,0,0,.6)}.modal-backdrop,.modal-wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.modal-wrapper{align-items:center;display:flex;justify-content:center}.modal-panel{border-radius:12px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);max-height:90vh;outline:none;overflow-y:auto}.form-container,.modal-panel{background-color:#fff;max-width:28rem;padding:24px}.form-container{border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.06);display:flex;flex-direction:column;gap:16px}.form-title{font-size:20px;font-weight:600;text-align:center}.form-input{border:1px solid #d1d5db;border-radius:4px;display:block;padding:4px 8px;width:100%}.form-input:disabled{background-color:#f3f4f6}.form-group{margin-bottom:16px}.form-label{display:block;font-size:14px;font-weight:500;margin-bottom:4px}.form-error{color:#dc2626;font-size:14px}.btn{border-radius:8px;font-size:14px;font-weight:500;padding:4px 12px;transition:background-color .15s,color .15s}.btn:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(0,0,0,.1);outline:none}.btn-primary{background-color:#2563eb;color:#fff}.btn-primary:hover{background-color:#1d4ed8}.btn-primary:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(59,130,246,.5)}.btn-secondary{background-color:#e5e7eb}.btn-secondary:hover{background-color:#d1d5db}.btn-secondary:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(156,163,175,.5)}.btn-success{background-color:#16a34a;color:#fff}.btn-success:hover{background-color:#15803d}.btn-success:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(34,197,94,.5)}.btn-danger{background-color:#dc2626;color:#fff}.btn-danger:hover{background-color:#b91c1c}.btn-danger:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(239,68,68,.5)}.btn-icon{background-color:transparent;padding:4px}.btn-icon:hover{background-color:#f3f4f6}.checkbox{align-items:center;display:flex;gap:8px;margin-bottom:16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.logo{height:6em;padding:1.5em;transition:filter .3s;will-change:filter}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin 20s linear infinite}}.card{padding:2em}.read-the-docs{color:#888}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useFiles, Upload, FileTable } from '@putkoff/abstract-files';
3
+ import { useState, getToken, isTokenExpired } from '@putkoff/abstract-utilities';
4
+
5
+ function checkTokenValid() {
6
+ const tok = getToken();
7
+ return !!tok && !isTokenExpired(tok);
8
+ }
9
+ const SecureFiles = () => {
10
+ const [loggedIn, setLoggedIn] = useState(checkTokenValid());
11
+ const filesHook = useFiles(); // ← one single hook instance
12
+ return (jsxs(Fragment, { children: [jsx(Upload, { onUploaded: filesHook.load }), jsx(FileTable, { files: filesHook.files, loading: filesHook.loading, error: filesHook.error, onDownload: filesHook.toggleShare, onToggleShare: filesHook.toggleShare, onPatchShare: filesHook.patchShareSettings, onDelete: filesHook.deleteFile })] }));
13
+ };
14
+
15
+ export { SecureFiles };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/App/secure_files.tsx"],"sourcesContent":["// src/App.tsx\n// src/index.tsx\nimport './styles/index.css';\nimport * as React from 'react'; // ✅ works without esModuleInterop\nimport {\n useFiles,\n FileTable,\n Upload\n} from \"@putkoff/abstract-files\";\n\nimport {\n getToken, // ⬅️ use the *non-throwing* helper\n isTokenExpired,\n useState\n} from \"@putkoff/abstract-utilities\";\nfunction checkTokenValid() {\n const tok = getToken();\n return !!tok && !isTokenExpired(tok);\n}\nconst SecureFiles: React.FC = () => {\n const [loggedIn, setLoggedIn] = useState(checkTokenValid());\n const filesHook = useFiles(); // ← one single hook instance\n return (\n <>\n {/* pass the same load & file‐list into both children */}\n <Upload onUploaded={filesHook.load} />\n <FileTable\n files={filesHook.files}\n loading={filesHook.loading}\n error={filesHook.error}\n onDownload={filesHook.toggleShare} // or downloadFile\n onToggleShare={filesHook.toggleShare}\n onPatchShare={filesHook.patchShareSettings}\n onDelete={filesHook.deleteFile}\n />\n\n </>\n )\n}\n\nexport default SecureFiles;"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAeA,SAAS,eAAe,GAAA;AACtB,IAAA,MAAM,GAAG,GAAG,QAAQ,EAAE;IACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtC;AACA,MAAM,WAAW,GAAa,MAAK;IACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;AAC3D,IAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC7B,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,GAAA,CAAC,MAAM,EAAA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAA,CAAI,EACtCA,GAAA,CAAC,SAAS,EAAA,EACR,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,UAAU,EAAE,SAAS,CAAC,WAAW,EACjC,aAAa,EAAE,SAAS,CAAC,WAAW,EACpC,YAAY,EAAE,SAAS,CAAC,kBAAkB,EAC1C,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAA,CAC9B,CAAA,EAAA,CAED;AAEP;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putkoff/abstract-securefiles",
3
- "version": "0.0.000",
3
+ "version": "0.0.19",
4
4
  "description": "A reusable Secure file system",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -13,15 +13,21 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "peerDependencies": {
16
- "react": "^17.0.0 || ^18.0.0",
16
+ "react": "^18.3.1",
17
17
  "react-dom": "^17.0.0 || ^18.0.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@putkoff/shared-scripts": "file:../../shared-scripts",
21
+ "@rollup/plugin-typescript": "^12.1.4",
21
22
  "@types/node": "^24.0.13",
22
23
  "@types/react": "^18.3.23",
23
24
  "@types/react-dom": "^18.3.7",
25
+ "autoprefixer": "^10.4.21",
24
26
  "csstype": "^3.1.3",
27
+ "postcss": "^8.5.6",
28
+ "postcss-import": "^16.1.1",
29
+ "rollup-plugin-postcss": "^4.0.2",
30
+ "tailwindcss": "^4.1.11",
25
31
  "tsup": "^8.5.0",
26
32
  "typescript": "^5.8.3",
27
33
  "undici-types": "^7.11.0"
@@ -29,11 +35,11 @@
29
35
  "dependencies": {
30
36
  "@heroicons/react": "^2.2.0",
31
37
  "@putkoff/abstract-apis": "^0.0.417",
32
- "@putkoff/abstract-files": "^0.0.289",
38
+ "@putkoff/abstract-files": "^0.0.295",
33
39
  "@putkoff/abstract-utilities": "^0.1.229",
34
40
  "@rollup/plugin-commonjs": "^28.0.6",
35
41
  "@rollup/plugin-node-resolve": "^16.0.1",
36
- "@rollup/plugin-typescript": "^12.1.4",
42
+ "@tailwindcss/postcss": "^4.1.11",
37
43
  "rollup-plugin-dts": "^6.2.1",
38
44
  "tslib": "^2.8.1"
39
45
  },
@@ -45,4 +51,4 @@
45
51
  "type": "module",
46
52
  "author": "putkoff",
47
53
  "license": "MIT"
48
- }
54
+ }
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ plugins: [
3
+ require('postcss-import'),
4
+ require('@tailwindcss/postcss')(), // ⬅️ v4 plugin
5
+ require('autoprefixer'),
6
+ ],
7
+ };
8
+
package/rollup.config.js CHANGED
@@ -1,7 +1,7 @@
1
- import resolve from '@rollup/plugin-node-resolve';
2
- import commonjs from '@rollup/plugin-commonjs';
1
+ import resolve from '@rollup/plugin-node-resolve';
2
+ import commonjs from '@rollup/plugin-commonjs';
3
3
  import typescript from '@rollup/plugin-typescript';
4
- import dts from 'rollup-plugin-dts';
4
+ import dts from 'rollup-plugin-dts';
5
5
  import { readFileSync } from 'fs';
6
6
  import { fileURLToPath } from 'url';
7
7
 
@@ -21,7 +21,7 @@ export default [
21
21
  external: deps,
22
22
  output: [
23
23
  { file: pkg.module, format: 'esm', sourcemap: true },
24
- { file: pkg.main, format: 'cjs', sourcemap: true, exports: 'named' }
24
+ { file: pkg.main, format: 'cjs', sourcemap: true, exports: 'named' }
25
25
  ],
26
26
  plugins: [
27
27
  resolve(),
@@ -33,6 +33,6 @@ export default [
33
33
  input: 'src/index.ts',
34
34
  external: deps,
35
35
  output: { file: pkg.types, format: 'esm' },
36
- plugins: [ dts() ]
36
+ plugins: [dts()]
37
37
  }
38
38
  ];
@@ -0,0 +1,35 @@
1
+ import { readFileSync } from 'fs';
2
+ import typescript from '@rollup/plugin-typescript';
3
+ import postcss from 'rollup-plugin-postcss';
4
+ import resolve from '@rollup/plugin-node-resolve';
5
+ import commonjs from '@rollup/plugin-commonjs';
6
+
7
+ const pkg = JSON.parse(
8
+ readFileSync(new URL('./package.json', import.meta.url), 'utf-8')
9
+ );
10
+
11
+ // Treat deps/peerDeps as externals so they are NOT bundled
12
+ const externals = [
13
+ ...Object.keys(pkg.peerDependencies || {}),
14
+ ...Object.keys(pkg.dependencies || {}),
15
+ 'react/jsx-runtime', // needed for "react-jsx" TS transform
16
+ ];
17
+
18
+ export default {
19
+ input: 'src/index.ts',
20
+ external: externals,
21
+ output: [
22
+ { file: 'dist/index.js', format: 'esm', sourcemap: true },
23
+ { file: 'dist/index.cjs', format: 'cjs', sourcemap: true, exports: 'named' }
24
+ ],
25
+ plugins: [
26
+ resolve(), // let Rollup resolve node modules where needed
27
+ commonjs(), // convert CJS to ESM for build pipeline
28
+ postcss({
29
+ extract: true, // emits dist/index.css
30
+ minimize: true,
31
+ extensions: ['.css'],
32
+ }),
33
+ typescript({ tsconfig: './tsconfig.json' }),
34
+ ],
35
+ };
@@ -0,0 +1 @@
1
+ export { default as SecureFiles } from './secure_files';
@@ -0,0 +1,4 @@
1
+ import './styles/index.css';
2
+ import * as React from 'react';
3
+ declare const SecureFiles: React.FC;
4
+ export default SecureFiles;
@@ -1,7 +1,7 @@
1
1
  // src/App.tsx
2
2
  // src/index.tsx
3
3
  import './styles/index.css';
4
- import React from "react";
4
+ import * as React from 'react'; // ✅ works without esModuleInterop
5
5
  import {
6
6
  useFiles,
7
7
  FileTable,
@@ -1,10 +1,15 @@
1
1
  /* src/styles/index.css */
2
2
 
3
- /* 1) pull in Tailwind’s directives */
4
- @import "./tailwind.css";
3
+ /* 1) Tailwind layers */
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
5
7
 
6
- /* 2) pull in your custom @layer components */
7
- @import "./window-manager.css";
8
+ /* 2) Your custom layer */
9
+ @layer components {
10
+ /* 2) pull in your custom @layer components */
11
+ @import "./window-manager.css";
8
12
 
9
- /* 3) pull in all your overrides & global resets */
10
- @import "./App.css";
13
+ /* 3) pull in all your overrides & global resets */
14
+ @import "./App.css";
15
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { SecureFiles } from './App';
File without changes
@@ -0,0 +1,10 @@
1
+ 2025-08-02 16:10:06,669 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:06] _filtered_file_list returned 10588 path(s)
2
+ 2025-08-02 16:10:06,670 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:06] Proceeding to process 10588 file(s).
3
+ 2025-08-02 16:10:06,944 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:06] Visible extensions: {'.ts', '.flow', '.js', '.markdown', '.iml', '.cts', '.md', '.mjs', '.cjs', '.node', '.html', '.wasm', '.tsx', '.lesser', '.coffee', '.css', '.txt', '.1', '.mts', '.map', '.json', '.tsbuildinfo', '.jison'}
4
+ 2025-08-02 16:10:13,401 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:13] _filtered_file_list returned 0 path(s)
5
+ 2025-08-02 16:10:13,402 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:13] No valid paths after filtering.
6
+ 2025-08-02 16:10:39,813 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:39] _filtered_file_list returned 21 path(s)
7
+ 2025-08-02 16:10:39,813 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:39] Proceeding to process 21 file(s).
8
+ 2025-08-02 16:10:39,822 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:39] Visible extensions: {'.tsx', '.ts', '.mjs', '.css', '.json', '.cjs', '.js'}
9
+ 2025-08-02 16:10:39,835 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:39] _filtered_file_list returned 0 path(s)
10
+ 2025-08-02 16:10:39,836 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_clipit/clipit/gui_frontend/drag_and_drop_component/file_drop_area/file_drop_area.py - [2025-08-02 16:10:39] No valid paths after filtering.
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ 2025-08-02 16:10:00,636 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_flask/abstract_flask.py - Python path: ['', '/home/computron/miniconda/lib/python312.zip', '/home/computron/miniconda/lib/python3.12', '/home/computron/miniconda/lib/python3.12/lib-dynload', '/home/computron/.local/lib/python3.12/site-packages', '/home/computron/miniconda/lib/python3.12/site-packages', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf']
2
+ 2025-08-02 16:10:38,808 - INFO - /home/computron/miniconda/lib/python3.12/site-packages/abstract_flask/abstract_flask.py - Python path: ['', '/home/computron/miniconda/lib/python312.zip', '/home/computron/miniconda/lib/python3.12', '/home/computron/miniconda/lib/python3.12/lib-dynload', '/home/computron/.local/lib/python3.12/site-packages', '/home/computron/miniconda/lib/python3.12/site-packages', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf', '/home/computron/miniconda/lib/python3.12/site-packages/odf']
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ content: [
3
+ './src/**/*.{ts,tsx,js,jsx}',
4
+ ],
5
+ theme: { extend: {} },
6
+ plugins: [],
7
+ };
package/tsconfig.json CHANGED
@@ -1,29 +1,27 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "es2017",
4
- "module": "esnext",
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Node",
5
6
  "lib": [
6
- "es2017",
7
- "dom"
7
+ "ES2020",
8
+ "DOM"
8
9
  ],
9
- "declaration": true,
10
- "declarationDir": "dist/types",
11
- "outDir": "dist",
12
- "importHelpers": true,
13
- "moduleResolution": "node",
10
+ "jsx": "react-jsx",
14
11
  "esModuleInterop": true,
15
12
  "allowSyntheticDefaultImports": true,
16
13
  "strict": true,
17
- "jsx": "react-jsx",
14
+ "outDir": "dist",
18
15
  "skipLibCheck": true,
19
- "sourceMap": true
16
+ "declaration": true,
17
+ "emitDeclarationOnly": true,
18
+ "noEmit": false
20
19
  },
21
20
  "include": [
22
- "src/**/*"
21
+ "src"
23
22
  ],
24
23
  "exclude": [
25
- "node_modules",
26
- "dist"
27
- ],
28
-
29
- }
24
+ "dist",
25
+ "node_modules"
26
+ ]
27
+ }
@@ -1,287 +0,0 @@
1
- /* SecureFilesStyles.module.css */
2
-
3
- /* Scope all styles under .secure-files */
4
- .secure-files {
5
- /* Pull in Tailwind utilities if needed (but skip @base to avoid global resets) */
6
- @tailwind utilities;
7
-
8
- /* window-manager.css styles (prefixed where needed) */
9
- .wm-table {
10
- width: 100%;
11
- font-size: 13px;
12
- table-layout: fixed;
13
- }
14
-
15
- .wm-thead th {
16
- background-color: #e5e7eb;
17
- border-bottom: 1px solid #9ca3af;
18
- padding: 5px 8px;
19
- text-align: left;
20
- font-weight: 600;
21
- }
22
-
23
- .wm-row {
24
- border-bottom: 1px solid #d1d5db;
25
- background-color: #f9fafb;
26
- }
27
-
28
- .wm-row:hover {
29
- background-color: #eff6ff;
30
- }
31
-
32
- .wm-cell {
33
- padding: 5px 8px;
34
- white-space: nowrap;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- }
38
-
39
- .wm-checkbox {
40
- height: 14px;
41
- width: 14px;
42
- color: #2563eb;
43
- border: 1px solid #9ca3af;
44
- border-radius: 4px;
45
- cursor: pointer;
46
- }
47
-
48
- .wm-btn-link {
49
- color: #2563eb;
50
- text-decoration: underline;
51
- }
52
-
53
- .wm-btn-link:hover {
54
- color: #1e40af;
55
- }
56
-
57
- .wm-btn-link:disabled {
58
- color: #9ca3af;
59
- cursor: not-allowed;
60
- }
61
-
62
- .wm-btn-icon {
63
- color: #4b5563;
64
- padding: 2px;
65
- border-radius: 4px;
66
- }
67
-
68
- .wm-btn-icon:hover {
69
- color: #111827;
70
- background-color: #e5e7eb;
71
- }
72
-
73
- .wm-btn-icon:disabled {
74
- color: #9ca3af;
75
- }
76
-
77
- /* file-table styles */
78
- .file-table {
79
- width: 100%;
80
- border: 1px solid #9ca3af;
81
- font-size: 13px;
82
- line-height: 1.15rem;
83
- border-collapse: collapse;
84
- }
85
-
86
- .file-table thead th {
87
- background-color: #e5e7eb;
88
- color: #1f2937;
89
- font-weight: 600;
90
- padding: 6px 12px;
91
- user-select: none;
92
- border-bottom: 1px solid #9ca3af;
93
- border-right: 1px solid #d1d5db;
94
- }
95
-
96
- .file-table thead th:last-child {
97
- border-right: none;
98
- }
99
-
100
- .file-table tbody tr {
101
- border-bottom: 1px solid #d1d5db;
102
- transition: background-color 0.2s;
103
- }
104
-
105
- .file-table tbody tr:hover {
106
- background-color: #f3f4f6;
107
- }
108
-
109
- .file-table tbody tr:nth-child(even) {
110
- background-color: #f9fafb;
111
- }
112
-
113
- .file-table td {
114
- padding: 6px 12px;
115
- vertical-align: middle;
116
- white-space: nowrap;
117
- border-right: 1px solid #d1d5db;
118
- }
119
-
120
- .file-table td:last-child {
121
- border-right: none;
122
- }
123
-
124
- .file-table .unsaved {
125
- color: #dc2626;
126
- }
127
-
128
- /* Modals */
129
- .modal-backdrop {
130
- position: fixed;
131
- top: 0;
132
- right: 0;
133
- bottom: 0;
134
- left: 0;
135
- background-color: rgba(0, 0, 0, 0.6);
136
- }
137
-
138
- .modal-wrapper {
139
- position: fixed;
140
- top: 0;
141
- right: 0;
142
- bottom: 0;
143
- left: 0;
144
- display: flex;
145
- align-items: center;
146
- justify-content: center;
147
- }
148
-
149
- .modal-panel {
150
- background-color: #ffffff;
151
- border-radius: 12px;
152
- padding: 24px;
153
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
154
- outline: none;
155
- max-width: 28rem;
156
- max-height: 90vh;
157
- overflow-y: auto;
158
- }
159
-
160
- /* Forms & Inputs */
161
- .form-container {
162
- background-color: #ffffff;
163
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
164
- border-radius: 8px;
165
- padding: 24px;
166
- display: flex;
167
- flex-direction: column;
168
- gap: 16px;
169
- max-width: 28rem;
170
- }
171
-
172
- .form-title {
173
- font-size: 20px;
174
- font-weight: 600;
175
- text-align: center;
176
- }
177
-
178
- .form-input {
179
- display: block;
180
- width: 100%;
181
- border-radius: 4px;
182
- border: 1px solid #d1d5db;
183
- padding: 4px 8px;
184
- }
185
-
186
- .form-input:disabled {
187
- background-color: #f3f4f6;
188
- }
189
-
190
- .form-group {
191
- margin-bottom: 16px;
192
- }
193
-
194
- .form-label {
195
- display: block;
196
- font-size: 14px;
197
- font-weight: 500;
198
- margin-bottom: 4px;
199
- }
200
-
201
- .form-error {
202
- font-size: 14px;
203
- color: #dc2626;
204
- }
205
-
206
- /* Buttons */
207
- .btn {
208
- border-radius: 8px;
209
- padding: 4px 12px;
210
- font-size: 14px;
211
- font-weight: 500;
212
- transition: background-color 0.15s, color 0.15s;
213
- }
214
-
215
- .btn:focus {
216
- outline: none;
217
- box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(0, 0, 0, 0.1);
218
- }
219
-
220
- .btn-primary {
221
- background-color: #2563eb;
222
- color: #ffffff;
223
- }
224
-
225
- .btn-primary:hover {
226
- background-color: #1d4ed8;
227
- }
228
-
229
- .btn-primary:focus {
230
- box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(59, 130, 246, 0.5);
231
- }
232
-
233
- .btn-secondary {
234
- background-color: #e5e7eb;
235
- }
236
-
237
- .btn-secondary:hover {
238
- background-color: #d1d5db;
239
- }
240
-
241
- .btn-secondary:focus {
242
- box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(156, 163, 175, 0.5);
243
- }
244
-
245
- .btn-success {
246
- background-color: #16a34a;
247
- color: #ffffff;
248
- }
249
-
250
- .btn-success:hover {
251
- background-color: #15803d;
252
- }
253
-
254
- .btn-success:focus {
255
- box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(34, 197, 94, 0.5);
256
- }
257
-
258
- .btn-danger {
259
- background-color: #dc2626;
260
- color: #ffffff;
261
- }
262
-
263
- .btn-danger:hover {
264
- background-color: #b91c1c;
265
- }
266
-
267
- .btn-danger:focus {
268
- box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(239, 68, 68, 0.5);
269
- }
270
-
271
- .btn-icon {
272
- padding: 4px;
273
- background-color: transparent;
274
- }
275
-
276
- .btn-icon:hover {
277
- background-color: #f3f4f6;
278
- }
279
-
280
- /* Checkbox */
281
- .checkbox {
282
- display: flex;
283
- align-items: center;
284
- gap: 8px;
285
- margin-bottom: 16px;
286
- }
287
- }
File without changes
File without changes