secure-redact 1.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.
- package/LICENSE +21 -0
- package/README.md +178 -0
- package/dist/assets/advanced.worker-DSVrF0gl.js +890 -0
- package/dist/assets/advanced.worker-DSVrF0gl.js.map +1 -0
- package/dist/assets/index-C62fEJ4q.js +888 -0
- package/dist/assets/index-C62fEJ4q.js.map +1 -0
- package/dist/assets/nlp.worker-u7Lr_A3c.js +521 -0
- package/dist/assets/nlp.worker-u7Lr_A3c.js.map +1 -0
- package/dist/assets/ocr.worker-D5s6dY7M.js +139 -0
- package/dist/assets/ocr.worker-D5s6dY7M.js.map +1 -0
- package/dist/lib.d.ts +158 -0
- package/dist/secure-redact.es.js +30138 -0
- package/dist/secure-redact.es.js.map +1 -0
- package/dist/secure-redact.umd.js +108 -0
- package/dist/secure-redact.umd.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +79 -0
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--su-bg-primary: #ffffff;--su-bg-secondary: #f8f9fb;--su-bg-tertiary: #f0f1f4;--su-border: #e2e4e9;--su-border-hover: #c5c8d0;--su-text-primary: #111318;--su-text-secondary: #5c5f6a;--su-text-tertiary: #8b8f9a;--su-accent: #2563eb;--su-accent-hover: #1d4ed8;--su-accent-light: #eff4ff;--su-success: #059669;--su-success-light: #ecfdf5;--su-error: #dc2626;--su-error-light: #fef2f2;--su-warning: #d97706;--su-warning-light: #fffbeb;--su-shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--su-shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--su-shadow-lg: 0 12px 40px rgba(0, 0, 0, .1);--su-radius-sm: 6px;--su-radius-md: 10px;--su-radius-lg: 14px;--su-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--su-transition: .2s cubic-bezier(.4, 0, .2, 1)}.su-root *,.su-root *:before,.su-root *:after{box-sizing:border-box}.su-root{font-family:var(--su-font);color:var(--su-text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.su-dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:220px;padding:32px;border:2px dashed var(--su-border);border-radius:var(--su-radius-lg);background:var(--su-bg-secondary);cursor:pointer;transition:all var(--su-transition);outline:none}.su-dropzone:hover{border-color:var(--su-border-hover);background:var(--su-bg-tertiary)}.su-dropzone:focus-visible{border-color:var(--su-accent);box-shadow:0 0 0 3px var(--su-accent-light)}.su-dropzone--active{border-color:var(--su-accent);border-style:solid;background:var(--su-accent-light)}.su-dropzone--processing{cursor:default;border-style:solid;border-color:var(--su-border)}.su-dropzone--complete{border-color:var(--su-success);border-style:solid;background:var(--su-success-light)}.su-dropzone--error{border-color:var(--su-error);border-style:solid;background:var(--su-error-light)}.su-file-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.su-dropzone-content{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.su-dropzone-icon{color:var(--su-text-tertiary);margin-bottom:4px;transition:color var(--su-transition)}.su-dropzone:hover .su-dropzone-icon{color:var(--su-accent)}.su-dropzone-icon--success{color:var(--su-success)}.su-dropzone-icon--error{color:var(--su-error)}.su-dropzone-title{font-size:15px;font-weight:600;color:var(--su-text-primary);margin:0}.su-dropzone-hint{font-size:13px;color:var(--su-text-secondary);margin:0}.su-dropzone-formats{font-size:12px;color:var(--su-text-tertiary);margin:8px 0 0}.su-dropzone-processing{width:100%;max-width:400px}.su-dropzone-content--complete .su-dropzone-title{color:var(--su-success)}.su-dropzone-content--error .su-dropzone-title{color:var(--su-error)}.su-file-badge{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:4px 12px;background:var(--su-bg-primary);border:1px solid var(--su-border);border-radius:100px;font-size:12px;box-shadow:var(--su-shadow-sm)}.su-file-badge-name{color:var(--su-text-primary);font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.su-file-badge-size{color:var(--su-text-tertiary)}.su-progress-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:8px 0}.su-progress-steps{display:flex;align-items:center;gap:0}.su-progress-step-wrapper{display:flex;align-items:center}.su-progress-step{display:flex;flex-direction:column;align-items:center;gap:6px}.su-progress-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--su-border);background:var(--su-bg-primary);transition:all var(--su-transition)}.su-progress-step--done .su-progress-dot{background:var(--su-accent);border-color:var(--su-accent);color:#fff}.su-progress-step--active .su-progress-dot{border-color:var(--su-accent);background:var(--su-accent-light)}.su-progress-pulse{width:8px;height:8px;border-radius:50%;background:var(--su-accent);animation:su-pulse 1.5s ease-in-out infinite}@keyframes su-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.su-progress-label{font-size:11px;font-weight:500;color:var(--su-text-tertiary);white-space:nowrap}.su-progress-step--done .su-progress-label,.su-progress-step--active .su-progress-label{color:var(--su-text-primary)}.su-progress-line{width:32px;height:2px;background:var(--su-border);margin:0 6px 22px;transition:background var(--su-transition)}.su-progress-line--done{background:var(--su-accent)}.su-progress-bar-wrapper{display:flex;align-items:center;gap:10px;width:100%;max-width:280px}.su-progress-bar{flex:1;height:4px;background:var(--su-border);border-radius:100px;overflow:hidden}.su-progress-bar-fill{height:100%;background:var(--su-accent);border-radius:100px;transition:width .3s ease}.su-progress-percent{font-size:12px;font-weight:600;color:var(--su-text-secondary);min-width:36px;text-align:right}.su-progress-message{font-size:13px;color:var(--su-text-secondary);margin:0}.su-modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;padding:24px;animation:su-fade-in .2s ease}@keyframes su-fade-in{0%{opacity:0}to{opacity:1}}.su-modal{background:var(--su-bg-primary);border-radius:var(--su-radius-lg);box-shadow:var(--su-shadow-lg);display:flex;flex-direction:column;width:100%;max-width:960px;max-height:90vh;overflow:hidden;animation:su-slide-up .3s cubic-bezier(.16,1,.3,1)}@keyframes su-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.su-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--su-border)}.su-modal-title{font-size:17px;font-weight:600;margin:0;color:var(--su-text-primary)}.su-modal-subtitle{font-size:13px;color:var(--su-text-tertiary);margin:2px 0 0}.su-modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--su-radius-sm);border:none;background:transparent;color:var(--su-text-tertiary);cursor:pointer;transition:all var(--su-transition)}.su-modal-close:hover{background:var(--su-bg-tertiary);color:var(--su-text-primary)}.su-modal-body{display:flex;flex:1;overflow:hidden;min-height:0}.su-modal-preview{flex:1;overflow:auto;padding:16px;background:var(--su-bg-secondary);display:flex;align-items:flex-start;justify-content:center}.su-modal-canvas{max-width:100%;height:auto;border-radius:var(--su-radius-sm);box-shadow:var(--su-shadow-md)}.su-modal-sidebar{width:320px;border-left:1px solid var(--su-border);display:flex;flex-direction:column;overflow:hidden}.su-modal-stats{display:flex;gap:1px;background:var(--su-border);border-bottom:1px solid var(--su-border)}.su-modal-stat{flex:1;display:flex;flex-direction:column;align-items:center;padding:12px;background:var(--su-bg-primary)}.su-modal-stat-value{font-size:22px;font-weight:700;color:var(--su-text-primary);line-height:1}.su-modal-stat-label{font-size:11px;font-weight:500;color:var(--su-text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.su-modal-entities{flex:1;overflow-y:auto;padding:16px}.su-modal-section-title{font-size:12px;font-weight:600;color:var(--su-text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin:0 0 12px}.su-modal-empty{font-size:13px;color:var(--su-text-tertiary);text-align:center;padding:24px 0}.su-entity-card{padding:12px;border:1px solid var(--su-border);border-radius:var(--su-radius-md);margin-bottom:8px;background:var(--su-bg-primary);transition:border-color var(--su-transition)}.su-entity-card:hover{border-color:var(--su-border-hover)}.su-entity-card--warning{border-color:var(--su-warning);background:var(--su-warning-light)}.su-entity-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.su-entity-type{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.su-entity-confidence{font-size:12px;font-weight:500;color:var(--su-text-tertiary)}.su-entity-value{font-size:13px;font-family:SF Mono,Cascadia Code,Fira Code,monospace;color:var(--su-text-secondary);word-break:break-all;padding:6px 8px;background:var(--su-bg-secondary);border-radius:var(--su-radius-sm);margin-bottom:8px}.su-entity-required-badge{display:inline-block;font-size:11px;font-weight:600;color:var(--su-accent);background:var(--su-accent-light);padding:2px 8px;border-radius:100px;margin-bottom:8px}.su-entity-warning{font-size:12px;color:var(--su-warning);margin-bottom:8px;line-height:1.4}.su-entity-liability{font-size:11px;color:var(--su-text-tertiary);font-style:italic;margin-top:6px;padding-top:6px;border-top:1px solid var(--su-border)}.su-entity-actions{display:flex;align-items:center}.su-toggle{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;padding:0;font-family:inherit}.su-toggle:disabled{opacity:.5;cursor:not-allowed}.su-toggle-track{position:relative;width:36px;height:20px;border-radius:100px;background:var(--su-border);transition:background var(--su-transition)}.su-toggle--masked .su-toggle-track{background:var(--su-accent)}.su-toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000026;transition:transform var(--su-transition)}.su-toggle--masked .su-toggle-thumb{transform:translate(16px)}.su-toggle-label{font-size:12px;font-weight:500;color:var(--su-text-secondary)}.su-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--su-border)}.su-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 18px;font-size:13px;font-weight:600;font-family:inherit;border-radius:var(--su-radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--su-transition);line-height:1.4;text-decoration:none}.su-btn--primary{background:var(--su-accent);color:#fff;border-color:var(--su-accent)}.su-btn--primary:hover{background:var(--su-accent-hover);border-color:var(--su-accent-hover)}.su-btn--secondary{background:var(--su-bg-primary);color:var(--su-text-secondary);border-color:var(--su-border)}.su-btn--secondary:hover{background:var(--su-bg-secondary);border-color:var(--su-border-hover);color:var(--su-text-primary)}.su-btn--sm{padding:6px 14px;font-size:12px;margin-top:12px}.doc-selector{width:100%;max-width:700px;margin-bottom:32px}.doc-selector__section{background:#fff;border:1px solid #e2e4e9;border-radius:12px;padding:24px;margin-bottom:20px;box-shadow:0 2px 8px #0000000a}.doc-selector__heading{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:#111318;margin:0 0 16px}.doc-selector__step{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border-radius:50%;font-size:14px;font-weight:700;flex-shrink:0}.doc-selector__radio-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.doc-selector__radio-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 12px;border:2px solid #e2e4e9;border-radius:10px;background:#f8f9fb;cursor:pointer;transition:all .2s ease}.doc-selector__radio-card:hover{border-color:#c5c8d0;background:#f0f1f4}.doc-selector__radio-card--active{border-color:#2563eb;background:#eff4ff;box-shadow:0 0 0 3px #2563eb1a}.doc-selector__radio-input{position:absolute;opacity:0;width:0;height:0}.doc-selector__radio-icon{font-size:32px}.doc-selector__radio-label{font-size:13px;font-weight:600;color:#111318;text-align:center}.doc-selector__hint{font-size:13px;color:#5c5f6a;margin:0 0 16px;line-height:1.5}.doc-selector__actions{display:flex;gap:10px;margin-bottom:16px}.doc-selector__action-btn{padding:6px 12px;font-size:12px;font-weight:600;color:#2563eb;background:#eff4ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;transition:all .2s ease}.doc-selector__action-btn:hover{background:#dbeafe;border-color:#93c5fd}.doc-selector__checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.doc-selector__checkbox-card{position:relative;display:flex;align-items:flex-start;gap:10px;padding:12px;border:2px solid #e2e4e9;border-radius:8px;background:#fff;cursor:pointer;transition:all .2s ease}.doc-selector__checkbox-card:hover{border-color:#c5c8d0;background:#f8f9fb}.doc-selector__checkbox-card--checked{border-color:#059669;background:#ecfdf5}.doc-selector__checkbox-input{margin-top:2px;flex-shrink:0;width:18px;height:18px;cursor:pointer;accent-color:#059669}.doc-selector__checkbox-content{display:flex;flex-direction:column;gap:2px}.doc-selector__checkbox-label{font-size:13px;font-weight:600;color:#111318}.doc-selector__checkbox-desc{font-size:11px;color:#8b8f9a;line-height:1.4}.doc-selector__warning{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;font-size:13px;color:#92400e;margin-top:16px}.su-result-panel{margin-top:20px;border:1px solid var(--su-border);border-radius:var(--su-radius-lg);background:var(--su-bg-primary);box-shadow:var(--su-shadow-md);overflow:hidden}.su-result-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:16px 20px;border-bottom:1px solid var(--su-border);background:var(--su-success-light)}.su-result-title-row{display:flex;align-items:center;gap:8px}.su-result-check{color:var(--su-success);flex-shrink:0}.su-result-title{font-size:15px;font-weight:600;color:var(--su-success)}.su-result-filename{font-size:12px;color:var(--su-text-secondary);font-family:ui-monospace,Cascadia Code,monospace;background:var(--su-bg-tertiary);padding:2px 8px;border-radius:var(--su-radius-sm);border:1px solid var(--su-border)}.su-result-preview{background:var(--su-bg-tertiary);padding:20px;display:flex;justify-content:center;align-items:flex-start;max-height:520px;overflow-y:auto}.su-result-img{max-width:100%;height:auto;border-radius:var(--su-radius-md);box-shadow:var(--su-shadow-lg);display:block}.su-result-actions{display:flex;align-items:center;gap:12px;padding:16px 20px;border-top:1px solid var(--su-border);flex-wrap:wrap}@media(max-width:768px){.su-modal-body{flex-direction:column}.su-modal-sidebar{width:100%;border-left:none;border-top:1px solid var(--su-border);max-height:300px}.su-modal-preview{max-height:300px}}
|
package/dist/vite.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "secure-redact",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Client-side PII detection and redaction React component. Upload documents, automatically detect sensitive information using OCR + AI, review detections, and download redacted copies — all without sending originals to any server.",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/secure-redact.umd.js",
|
|
8
|
+
"module": "./dist/secure-redact.es.js",
|
|
9
|
+
"types": "./dist/lib.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/lib.d.ts",
|
|
13
|
+
"import": "./dist/secure-redact.es.js",
|
|
14
|
+
"require": "./dist/secure-redact.umd.js"
|
|
15
|
+
},
|
|
16
|
+
"./style.css": "./dist/style.css"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"dev": "vite",
|
|
25
|
+
"build": "tsc -b && vite build",
|
|
26
|
+
"build:lib": "vite build --config vite.config.lib.ts",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"preview": "vite preview",
|
|
29
|
+
"prepublishOnly": "npm run build:lib"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"pii",
|
|
33
|
+
"redaction",
|
|
34
|
+
"privacy",
|
|
35
|
+
"ocr",
|
|
36
|
+
"tesseract",
|
|
37
|
+
"gemini",
|
|
38
|
+
"document-processing",
|
|
39
|
+
"sensitive-data",
|
|
40
|
+
"aadhaar",
|
|
41
|
+
"pan",
|
|
42
|
+
"react",
|
|
43
|
+
"react-component"
|
|
44
|
+
],
|
|
45
|
+
"author": "johhhnnnnyyyyy",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/johhhnnnnyyyyy/Hack-Bell.git"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"react": ">=18.0.0",
|
|
53
|
+
"react-dom": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"pdf-lib": "^1.17.1",
|
|
57
|
+
"pdfjs-dist": "^5.4.624",
|
|
58
|
+
"tesseract.js": "^7.0.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@eslint/js": "^9.39.1",
|
|
62
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
63
|
+
"@types/node": "^24.10.1",
|
|
64
|
+
"@types/react": "^19.2.7",
|
|
65
|
+
"@types/react-dom": "^19.2.3",
|
|
66
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
67
|
+
"eslint": "^9.39.1",
|
|
68
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
69
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
70
|
+
"globals": "^16.5.0",
|
|
71
|
+
"react": "^19.2.0",
|
|
72
|
+
"react-dom": "^19.2.0",
|
|
73
|
+
"tailwindcss": "^4.2.1",
|
|
74
|
+
"typescript": "~5.9.3",
|
|
75
|
+
"typescript-eslint": "^8.48.0",
|
|
76
|
+
"vite": "^7.3.1",
|
|
77
|
+
"vite-plugin-dts": "^4.5.4"
|
|
78
|
+
}
|
|
79
|
+
}
|