bdsa-react-components 0.1.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/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .bdsa-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:inherit;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease;position:relative}.bdsa-button:focus-visible{outline:2px solid #0066cc;outline-offset:2px}.bdsa-button:disabled{cursor:not-allowed;opacity:.6}.bdsa-button--small{padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem}.bdsa-button--medium{padding:.5rem 1rem;font-size:1rem;line-height:1.5rem}.bdsa-button--large{padding:.75rem 1.5rem;font-size:1.125rem;line-height:1.75rem}.bdsa-button--primary{background-color:#06c;color:#fff}.bdsa-button--primary:hover:not(:disabled){background-color:#0052a3}.bdsa-button--primary:active:not(:disabled){background-color:#003d7a}.bdsa-button--secondary{background-color:#6c757d;color:#fff}.bdsa-button--secondary:hover:not(:disabled){background-color:#5a6268}.bdsa-button--secondary:active:not(:disabled){background-color:#4e555b}.bdsa-button--danger{background-color:#dc3545;color:#fff}.bdsa-button--danger:hover:not(:disabled){background-color:#c82333}.bdsa-button--danger:active:not(:disabled){background-color:#bd2130}.bdsa-button--success{background-color:#28a745;color:#fff}.bdsa-button--success:hover:not(:disabled){background-color:#218838}.bdsa-button--success:active:not(:disabled){background-color:#1e7e34}.bdsa-button--full-width{width:100%}.bdsa-button--loading{position:relative}.bdsa-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:bdsa-button-spin .6s linear infinite}.bdsa-button__text{opacity:.7}@keyframes bdsa-button-spin{to{transform:rotate(360deg)}}.bdsa-card{background-color:#fff;border-radius:8px;overflow:hidden;transition:all .2s ease}.bdsa-card--bordered{border:1px solid #e0e0e0}.bdsa-card--shadow-none{box-shadow:none}.bdsa-card--shadow-small{box-shadow:0 1px 3px #0000001a}.bdsa-card--shadow-medium{box-shadow:0 4px 6px #0000001a}.bdsa-card--shadow-large{box-shadow:0 10px 15px #0000001a}.bdsa-card--hoverable{cursor:pointer}.bdsa-card--hoverable:hover{transform:translateY(-2px);box-shadow:0 8px 12px #00000026}.bdsa-card__header{padding:1rem 1.5rem;border-bottom:1px solid #e0e0e0;font-weight:600;font-size:1.125rem}.bdsa-card__content{color:#333}.bdsa-card__content--padding-none{padding:0}.bdsa-card__content--padding-small{padding:.75rem}.bdsa-card__content--padding-medium{padding:1.5rem}.bdsa-card__content--padding-large{padding:2rem}.bdsa-card__footer{padding:1rem 1.5rem;border-top:1px solid #e0e0e0;background-color:#f8f9fa;color:#666;font-size:.875rem}.bdsa-slide-viewer{width:100%;height:100%;min-height:400px;display:flex;flex-direction:row;position:relative;background-color:#000}.bdsa-slide-viewer__container{flex:1;height:100%;min-height:400px;min-width:0}.bdsa-slide-viewer__sidebar{width:300px;min-width:250px;max-width:400px;height:100%;background-color:#fff;border-left:1px solid #ddd;display:flex;flex-direction:column;overflow-y:auto}.bdsa-slide-viewer .openseadragon-container{width:100%;height:100%}.bdsa-slide-viewer__annotation-info{flex:1;padding:16px;font-size:12px;overflow-y:auto}.bdsa-slide-viewer__annotation-info-header{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #ddd;font-size:14px}.bdsa-slide-viewer__annotation-info-section{margin-bottom:12px}.bdsa-slide-viewer__annotation-info-section:last-child{margin-bottom:0}.bdsa-slide-viewer__annotation-info-title{font-weight:600;margin-bottom:4px;color:#333}.bdsa-slide-viewer__annotation-info-item{margin-left:8px;margin-bottom:6px;padding:4px;background:#f8f9fa;border-radius:2px;font-size:11px;color:#666}.bdsa-slide-viewer__annotation-info-item:last-child{margin-bottom:0}.bdsa-slide-viewer__annotation-info-item>div{margin:2px 0}.bdsa-slide-viewer__controls{padding:16px;border-bottom:1px solid #ddd;background-color:#f8f9fa}.bdsa-slide-viewer__controls-header{margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #ddd;font-size:14px;font-weight:600;color:#333}.bdsa-slide-viewer__controls-section{margin-bottom:12px}.bdsa-slide-viewer__controls-section:last-child{margin-bottom:0}.bdsa-slide-viewer__controls-label{margin-bottom:8px;font-size:12px;font-weight:500;color:#666}.bdsa-slide-viewer__opacity-slider{width:100%;height:6px;border-radius:3px;background:#ddd;outline:none;-webkit-appearance:none}.bdsa-slide-viewer__opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#007bff;cursor:pointer}.bdsa-slide-viewer__opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#007bff;cursor:pointer;border:none}.bdsa-annotation-manager{width:100%;height:100%;position:relative}.bdsa-annotation-manager__debug-panel{position:fixed;bottom:20px;right:20px;width:500px;max-height:400px;background-color:#1e1e1e;border:2px solid #007bff;border-radius:8px;box-shadow:0 4px 12px #0000004d;z-index:9999;display:flex;flex-direction:column;overflow:hidden}.bdsa-annotation-manager__debug-panel-header{padding:12px 16px;background-color:#007bff;color:#fff;font-size:14px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.1)}.bdsa-annotation-manager__debug-panel-content{flex:1;padding:16px;margin:0;overflow:auto;background-color:#252526;color:#d4d4d4;font-family:Courier New,Monaco,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.bdsa-annotation-manager__list{display:flex;flex-direction:column;gap:8px;padding:16px}.bdsa-annotation-manager__list-header{margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid #e0e0e0}.bdsa-annotation-manager__list-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.bdsa-annotation-manager__list-header p{margin:4px 0 0;font-size:14px;color:#666}.bdsa-annotation-manager__annotation-card{background-color:#fff;border:1px solid #ddd;border-radius:8px;padding:12px 16px;transition:all .2s ease;cursor:pointer}.bdsa-annotation-manager__annotation-card:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff26}.bdsa-annotation-manager__annotation-card--selected{border-color:#007bff;background-color:#f0f7ff}.bdsa-annotation-manager__annotation-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.bdsa-annotation-manager__annotation-card-title{font-size:15px;font-weight:600;color:#333;margin:0;flex:1}.bdsa-annotation-manager__annotation-card-meta{display:flex;gap:8px;align-items:center;font-size:12px;color:#999}.bdsa-annotation-manager__annotation-card-badge{padding:2px 8px;border-radius:12px;font-size:11px;font-weight:500}.bdsa-annotation-manager__annotation-card-badge--public{background-color:#e8f5e9;color:#2e7d32}.bdsa-annotation-manager__annotation-card-badge--private{background-color:#fff3e0;color:#e65100}.bdsa-annotation-manager__annotation-card-details{display:flex;gap:16px;font-size:12px;color:#666;margin-top:8px}.bdsa-annotation-manager__annotation-card-detail{display:flex;align-items:center;gap:4px}.bdsa-annotation-manager__annotation-card-controls{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid #eee}.bdsa-annotation-manager__annotation-card-control{padding:4px 8px;font-size:11px;border:1px solid #ddd;border-radius:4px;background-color:#f8f9fa;cursor:pointer;transition:all .2s ease}.bdsa-annotation-manager__annotation-card-control:hover{background-color:#e9ecef;border-color:#adb5bd}.bdsa-annotation-manager__empty-state{padding:40px 16px;text-align:center;color:#999}.bdsa-annotation-manager__empty-state p{margin:8px 0;font-size:14px}.bdsa-folder-browser{width:100%;min-height:200px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.bdsa-folder-browser__loading,.bdsa-folder-browser__error,.bdsa-folder-browser__empty{display:flex;align-items:center;justify-content:center;padding:40px;color:#666}.bdsa-folder-browser__error{flex-direction:column;gap:10px}.bdsa-folder-browser__error button{background-color:#007bff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s ease}.bdsa-folder-browser__error button:hover{background-color:#0056b3}.bdsa-folder-browser__collections{display:flex;flex-direction:column;gap:8px}.bdsa-folder-browser__collection,.bdsa-folder-browser__folder{border:1px solid #e0e0e0;border-radius:4px;background:#fff}.bdsa-folder-browser__folder-header{display:flex;align-items:center;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease,border-left .2s ease;border-bottom:1px solid #f0f0f0;border-left:3px solid transparent}.bdsa-folder-browser__folder-header:hover{background-color:#f8f9fa}.bdsa-folder-browser__folder-header.selected{background-color:#bbdefb;border-left-color:#2196f3}.bdsa-folder-browser__folder-icon{margin-right:8px;font-size:16px;transition:transform .2s ease}.bdsa-folder-browser__folder-icon.expanded{transform:rotate(0)}.bdsa-folder-browser__folder-name{flex:1;font-weight:500;color:#333}.bdsa-folder-browser__folder-type{font-size:12px;color:#666;background-color:#e9ecef;padding:2px 8px;border-radius:12px;margin-left:8px}.bdsa-folder-browser__folder-contents{padding:8px 0;background-color:#fafafa}.bdsa-folder-browser__resource-item{display:flex;align-items:center;padding:8px 16px;cursor:pointer;transition:background-color .2s ease;border-left:3px solid transparent}.bdsa-folder-browser__resource-item:hover{background-color:#e3f2fd}.bdsa-folder-browser__resource-item.selected{background-color:#bbdefb;border-left-color:#2196f3}.bdsa-folder-browser__resource-icon{margin-right:8px;font-size:14px}.bdsa-folder-browser__resource-name{flex:1;color:#333}.bdsa-folder-browser__resource-type{font-size:11px;color:#666;background-color:#e3f2fd;padding:2px 6px;border-radius:10px;margin-left:8px}.bdsa-folder-browser__load-more{padding:8px 16px;text-align:center}.bdsa-folder-browser__load-more-btn{background-color:#007bff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s ease}.bdsa-folder-browser__load-more-btn:hover:not(:disabled){background-color:#0056b3}.bdsa-folder-browser__load-more-btn:disabled{background-color:#6c757d;cursor:not-allowed;opacity:.6}@media (max-width: 768px){.bdsa-folder-browser__folder-header{padding:10px 12px}.bdsa-folder-browser__resource-item{padding:6px 12px}}
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "bdsa-react-components",
3
+ "version": "0.1.0",
4
+ "description": "Reusable React components for the Digital Slide Archive project",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./styles.css": "./dist/style.css"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "CHANGELOG.md",
21
+ "INTEGRATION.md",
22
+ "CURSOR_INTEGRATION.md"
23
+ ],
24
+ "scripts": {
25
+ "dev": "vite",
26
+ "build": "npm run generate:cursor-doc && tsc && vite build",
27
+ "prepublishOnly": "npm run build",
28
+ "preview": "vite preview",
29
+ "test": "vitest",
30
+ "test:ui": "vitest --ui",
31
+ "test:coverage": "vitest --coverage",
32
+ "storybook": "storybook dev -p 6006",
33
+ "build-storybook": "storybook build",
34
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
35
+ "generate:cursor-doc": "node scripts/generate-cursor-doc.js",
36
+ "version": "npm run build && git add dist",
37
+ "postversion": "git push && git push --tags"
38
+ },
39
+ "peerDependencies": {
40
+ "react": "^18.0.0",
41
+ "react-dom": "^18.0.0"
42
+ },
43
+ "dependencies": {
44
+ "openseadragon": "^5.0.1",
45
+ "osd-paperjs-annotation": "github:pearcetm/osd-paperjs-annotation",
46
+ "paper": "^0.12.18"
47
+ },
48
+ "devDependencies": {
49
+ "@types/geojson": "^7946.0.13",
50
+ "@storybook/addon-essentials": "^7.6.0",
51
+ "@storybook/addon-interactions": "^7.6.0",
52
+ "@storybook/addon-links": "^7.6.0",
53
+ "@storybook/blocks": "^7.6.0",
54
+ "@storybook/react": "^7.6.0",
55
+ "@storybook/react-vite": "^7.6.0",
56
+ "@storybook/testing-library": "^0.2.2",
57
+ "@testing-library/react": "^14.1.2",
58
+ "@testing-library/jest-dom": "^6.1.5",
59
+ "@testing-library/user-event": "^14.5.1",
60
+ "@types/react": "^18.2.43",
61
+ "@types/react-dom": "^18.2.17",
62
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
63
+ "@typescript-eslint/parser": "^6.14.0",
64
+ "@vitejs/plugin-react": "^4.2.1",
65
+ "@vitest/ui": "^1.0.4",
66
+ "eslint": "^8.55.0",
67
+ "eslint-plugin-react-hooks": "^4.6.0",
68
+ "eslint-plugin-react-refresh": "^0.4.5",
69
+ "eslint-plugin-storybook": "^0.6.15",
70
+ "jsdom": "^23.0.1",
71
+ "react": "^18.2.0",
72
+ "react-dom": "^18.2.0",
73
+ "storybook": "^7.6.0",
74
+ "typescript": "^5.3.3",
75
+ "vite": "^5.0.8",
76
+ "vite-plugin-dts": "^3.7.0",
77
+ "vitest": "^1.0.4"
78
+ },
79
+ "keywords": [
80
+ "react",
81
+ "components",
82
+ "digital-slide-archive",
83
+ "bdsa",
84
+ "ui-library"
85
+ ],
86
+ "author": "",
87
+ "license": "Apache-2.0",
88
+ "repository": {
89
+ "type": "git",
90
+ "url": "https://github.com/Gutman-Lab/bdsa-react-components.git"
91
+ },
92
+ "publishConfig": {
93
+ "access": "public"
94
+ }
95
+ }