react-smart-scheduler 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.
@@ -0,0 +1 @@
1
+ .rss-root{--rss-primary: #3b82f6;--rss-primary-light: #eff6ff;--rss-border: #e5e7eb;--rss-border-light: #f3f4f6;--rss-text: #111827;--rss-text-sm: #374151;--rss-text-muted: #9ca3af;--rss-bg: #ffffff;--rss-bg-alt: #f9fafb;--rss-today-bg: #eff6ff;--rss-time-gutter-w: 52px;--rss-header-h: 56px;--rss-radius: 6px;--rss-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--rss-event-radius: 4px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.4;color:var(--rss-text);background:var(--rss-bg);border:1px solid var(--rss-border);border-radius:var(--rss-radius);display:flex;flex-direction:column;overflow:hidden;min-height:500px;user-select:none;-webkit-user-select:none;box-sizing:border-box}.rss-root *,.rss-root *:before,.rss-root *:after{box-sizing:border-box}.rss-header{display:flex;align-items:center;gap:8px;padding:0 16px;height:var(--rss-header-h);border-bottom:1px solid var(--rss-border);background:var(--rss-bg);flex-shrink:0}.rss-header-nav{display:flex;align-items:center;gap:4px}.rss-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:5px 12px;border:1px solid var(--rss-border);border-radius:var(--rss-radius);background:var(--rss-bg);color:var(--rss-text-sm);font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.rss-btn:hover{background:var(--rss-bg-alt);border-color:#d1d5db}.rss-btn:active{background:#f3f4f6}.rss-btn--icon{padding:5px 8px;font-size:16px}.rss-btn--primary{background:var(--rss-primary);border-color:var(--rss-primary);color:#fff}.rss-btn--primary:hover{background:#2563eb;border-color:#2563eb}.rss-btn--danger{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.rss-btn--danger:hover{background:#fecaca}.rss-header-title{flex:1;font-size:15px;font-weight:600;color:var(--rss-text);text-align:center}.rss-view-switcher{display:flex;border:1px solid var(--rss-border);border-radius:var(--rss-radius);overflow:hidden}.rss-view-btn{padding:5px 12px;border:none;border-right:1px solid var(--rss-border);background:var(--rss-bg);color:var(--rss-text-sm);font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.rss-view-btn:last-child{border-right:none}.rss-view-btn:hover{background:var(--rss-bg-alt)}.rss-view-btn--active{background:var(--rss-primary);color:#fff}.rss-view-btn--active:hover{background:#2563eb}.rss-timegrid{display:flex;flex-direction:column;flex:1;overflow:hidden}.rss-timegrid-allday{display:flex;border-bottom:1px solid var(--rss-border);flex-shrink:0}.rss-timegrid-allday-gutter{width:var(--rss-time-gutter-w);flex-shrink:0;border-right:1px solid var(--rss-border)}.rss-day-headers{display:flex;flex:1}.rss-day-header{flex:1;padding:6px 4px;text-align:center;border-right:1px solid var(--rss-border-light);display:flex;flex-direction:column;align-items:center;gap:2px}.rss-day-header:last-child{border-right:none}.rss-day-header-weekday{font-size:11px;font-weight:500;text-transform:uppercase;color:var(--rss-text-muted);letter-spacing:.05em}.rss-day-header-num{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px;font-weight:500;color:var(--rss-text)}.rss-day-header-num--today{background:var(--rss-primary);color:#fff}.rss-timegrid-scroll{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}.rss-timegrid-body{display:flex;position:relative}.rss-time-gutter{width:var(--rss-time-gutter-w);flex-shrink:0;border-right:1px solid var(--rss-border);position:relative}.rss-time-label{display:flex;align-items:flex-start;justify-content:flex-end;padding-right:8px;padding-top:0;font-size:11px;color:var(--rss-text-muted);font-weight:500;transform:translateY(-50%)}.rss-columns{flex:1;display:flex;position:relative}.rss-column{flex:1;position:relative;border-right:1px solid var(--rss-border-light)}.rss-column:last-child{border-right:none}.rss-column--today{background:var(--rss-today-bg)}.rss-hour-cell{border-top:1px solid var(--rss-border-light);cursor:pointer;position:relative}.rss-hour-cell:first-child{border-top:none}.rss-hour-cell:after{content:"";position:absolute;top:50%;left:0;right:0;border-top:1px dashed var(--rss-border-light);pointer-events:none}.rss-hour-cell:hover{background:#3b82f60a}.rss-now-line{position:absolute;left:0;right:0;display:flex;align-items:center;pointer-events:none;z-index:10}.rss-now-line:before{content:"";width:8px;height:8px;border-radius:50%;background:#ef4444;flex-shrink:0}.rss-now-line:after{content:"";flex:1;height:2px;background:#ef4444}.rss-event{position:absolute;border-radius:var(--rss-event-radius);padding:3px 6px;overflow:hidden;cursor:grab;box-shadow:var(--rss-shadow);transition:box-shadow .15s,opacity .15s;-webkit-user-select:none;user-select:none;z-index:1}.rss-event:hover{box-shadow:0 4px 6px -1px #00000026,0 2px 4px -2px #0000001a;z-index:2}.rss-event:active{cursor:grabbing}.rss-event--dragging{opacity:.35;cursor:grabbing;box-shadow:none}.rss-event--resizing{cursor:ns-resize}.rss-event-title{font-size:12px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rss-event-time{font-size:11px;color:#ffffffd9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rss-event-resize-handle{position:absolute;bottom:0;left:0;right:0;height:8px;cursor:ns-resize;background:#00000026;border-radius:0 0 var(--rss-event-radius) var(--rss-event-radius);opacity:0;transition:opacity .15s}.rss-event:hover .rss-event-resize-handle{opacity:1}.rss-drag-overlay .rss-event{opacity:1;cursor:grabbing;box-shadow:0 8px 16px #0003;pointer-events:none}.rss-month{display:flex;flex-direction:column;flex:1;overflow:hidden}.rss-month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--rss-border);flex-shrink:0}.rss-month-weekday{padding:6px 4px;text-align:center;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rss-text-muted);border-right:1px solid var(--rss-border-light)}.rss-month-weekday:last-child{border-right:none}.rss-month-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;overflow-y:auto;scrollbar-width:thin}.rss-month-cell{border-right:1px solid var(--rss-border-light);border-bottom:1px solid var(--rss-border-light);padding:4px;min-height:100px;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:background .1s}.rss-month-cell:hover{background:var(--rss-bg-alt)}.rss-month-cell:nth-child(7n){border-right:none}.rss-month-cell--other-month{background:var(--rss-bg-alt)}.rss-month-cell--today{background:var(--rss-today-bg)}.rss-month-day-num{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:12px;font-weight:500;color:var(--rss-text);flex-shrink:0}.rss-month-day-num--today{background:var(--rss-primary);color:#fff}.rss-month-day-num--other{color:var(--rss-text-muted)}.rss-month-event{display:flex;align-items:center;gap:4px;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:500;color:#fff;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:filter .1s}.rss-month-event:hover{filter:brightness(.9)}.rss-month-more{font-size:11px;color:var(--rss-text-muted);padding:1px 4px;cursor:pointer}.rss-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.rss-modal{background:var(--rss-bg);border-radius:8px;box-shadow:0 20px 40px #00000026;padding:24px;width:100%;max-width:400px;display:flex;flex-direction:column;gap:16px}.rss-modal-title{font-size:16px;font-weight:600;color:var(--rss-text);margin:0}.rss-form-group{display:flex;flex-direction:column;gap:4px}.rss-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.rss-label{font-size:12px;font-weight:500;color:var(--rss-text-sm)}.rss-input{padding:7px 10px;border:1px solid var(--rss-border);border-radius:var(--rss-radius);font-size:13px;color:var(--rss-text);background:var(--rss-bg);width:100%;transition:border-color .15s,box-shadow .15s;outline:none}.rss-input:focus{border-color:var(--rss-primary);box-shadow:0 0 0 3px #3b82f626}.rss-color-row{display:flex;gap:8px;flex-wrap:wrap}.rss-color-swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.rss-color-swatch:hover{transform:scale(1.15)}.rss-color-swatch--selected{border-color:var(--rss-text);transform:scale(1.15)}.rss-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.rss-modal-actions-left{flex:1}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "react-smart-scheduler",
3
+ "version": "0.1.0",
4
+ "description": "A production-ready, open-source React scheduler/calendar component with Day, Week, and Month views — drag-and-drop, resize, and a clean controlled-component API.",
5
+ "author": {
6
+ "name": "react-smart-scheduler contributors",
7
+ "url": "https://github.com/yourname/react-smart-scheduler"
8
+ },
9
+ "license": "MIT",
10
+ "homepage": "https://github.com/yourname/react-smart-scheduler#readme",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/yourname/react-smart-scheduler.git"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/yourname/react-smart-scheduler/issues"
17
+ },
18
+ "keywords": [
19
+ "react",
20
+ "scheduler",
21
+ "calendar",
22
+ "drag-and-drop",
23
+ "dnd",
24
+ "week-view",
25
+ "month-view",
26
+ "day-view",
27
+ "events",
28
+ "time-grid",
29
+ "typescript",
30
+ "react-component",
31
+ "open-source"
32
+ ],
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ },
36
+ "main": "dist/index.umd.js",
37
+ "module": "dist/index.es.js",
38
+ "types": "dist/index.d.ts",
39
+ "exports": {
40
+ ".": {
41
+ "import": "./dist/index.es.js",
42
+ "require": "./dist/index.umd.js",
43
+ "types": "./dist/index.d.ts"
44
+ },
45
+ "./dist/scheduler.css": "./dist/scheduler.css"
46
+ },
47
+ "files": [
48
+ "dist",
49
+ "README.md",
50
+ "LICENSE"
51
+ ],
52
+ "sideEffects": [
53
+ "*.css"
54
+ ],
55
+ "scripts": {
56
+ "dev": "vite serve --config vite.demo.config.ts",
57
+ "build": "tsc -p tsconfig.lib.json && vite build",
58
+ "build:demo": "vite build --config vite.demo.config.ts",
59
+ "preview": "vite preview --config vite.demo.config.ts",
60
+ "type-check": "tsc --noEmit",
61
+ "prepublishOnly": "npm run type-check && npm run build"
62
+ },
63
+ "peerDependencies": {
64
+ "react": ">=18.0.0",
65
+ "react-dom": ">=18.0.0"
66
+ },
67
+ "dependencies": {
68
+ "@dnd-kit/core": "^6.1.0",
69
+ "@dnd-kit/modifiers": "^7.0.0",
70
+ "date-fns": "^3.6.0"
71
+ },
72
+ "devDependencies": {
73
+ "@types/react": "^18.3.3",
74
+ "@types/react-dom": "^18.3.0",
75
+ "@vitejs/plugin-react": "^4.3.1",
76
+ "react": "^18.3.1",
77
+ "react-dom": "^18.3.1",
78
+ "typescript": "^5.5.3",
79
+ "vite": "^5.3.4",
80
+ "vite-plugin-dts": "^4.0.2"
81
+ },
82
+ "publishConfig": {
83
+ "access": "public"
84
+ }
85
+ }