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.
- package/LICENSE +21 -0
- package/README.md +393 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.es.js +4943 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +11 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/scheduler.css +1 -0
- package/package.json +85 -0
|
@@ -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
|
+
}
|