@shivamjadhav28/timeline-track 0.1.1 → 0.1.2
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/timeline-track.cjs +65 -19
- package/dist/timeline-track.mjs +166 -120
- package/package.json +1 -1
package/dist/timeline-track.cjs
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(b,v){typeof exports=="object"&&typeof module<"u"?v(exports,require("react"),require("styled-components"),require("lucide-react")):typeof define=="function"&&define.amd?define(["exports","react","styled-components","lucide-react"],v):(b=typeof globalThis<"u"?globalThis:b||self,v(b.TimelineTrack={},b.React,b.styled,b.LucideReact))})(this,(function(b,v,a,T){"use strict";var M={exports:{}},C={};var re;function ae(){if(re)return C;re=1;var r=Symbol.for("react.transitional.element"),j=Symbol.for("react.fragment");function x(h,u,d){var E=null;if(d!==void 0&&(E=""+d),u.key!==void 0&&(E=""+u.key),"key"in u){d={};for(var w in u)w!=="key"&&(d[w]=u[w])}else d=u;return u=d.ref,{$$typeof:r,type:h,key:E,ref:u!==void 0?u:null,props:d}}return C.Fragment=j,C.jsx=x,C.jsxs=x,C}var N={};var te;function ie(){return te||(te=1,process.env.NODE_ENV!=="production"&&(function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===l?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case D:return"Fragment";case k:return"Profiler";case G:return"StrictMode";case q:return"Suspense";case R:return"SuspenseList";case Q:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case f:return"Portal";case L:return e.displayName||"Context";case _:return(e._context.displayName||"Context")+".Consumer";case z:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Z:return t=e.displayName||null,t!==null?t:r(e.type)||"Memo";case y:t=e._payload,e=e._init;try{return r(e(t))}catch{}}return null}function j(e){return""+e}function x(e){try{j(e);var t=!1}catch{t=!0}if(t){t=console;var o=t.error,s=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o.call(t,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",s),j(e)}}function h(e){if(e===D)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===y)return"<...>";try{var t=r(e);return t?"<"+t+">":"<...>"}catch{return"<...>"}}function u(){var e=i.A;return e===null?null:e.getOwner()}function d(){return Error("react-stack-top-frame")}function E(e){if(m.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function w(e,t){function o(){J||(J=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}function V(){var e=r(this.type);return p[e]||(p[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function H(e,t,o,s,X,K){var c=o.ref;return e={$$typeof:U,type:e,key:t,props:o,_owner:s},(c!==void 0?c:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:V}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:X}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:K}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function F(e,t,o,s,X,K){var c=t.children;if(c!==void 0)if(s)if(S(c)){for(s=0;s<c.length;s++)I(c[s]);Object.freeze&&Object.freeze(c)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else I(c);if(m.call(t,"key")){c=r(e);var A=Object.keys(t).filter(function(ke){return ke!=="key"});s=0<A.length?"{key: someKey, "+A.join(": ..., ")+": ...}":"{key: someKey}",Y[c+s]||(A=0<A.length?"{"+A.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
|
5
5
|
let props = %s;
|
|
6
|
-
<%s key={someKey} {...props} />`,
|
|
6
|
+
<%s key={someKey} {...props} />`,s,c,A,c),Y[c+s]=!0)}if(c=null,o!==void 0&&(x(o),c=""+o),E(t)&&(x(t.key),c=""+t.key),"key"in t){o={};for(var ee in t)ee!=="key"&&(o[ee]=t[ee])}else o=t;return c&&w(o,typeof e=="function"?e.displayName||e.name||"Unknown":e),H(e,c,o,u(),X,K)}function I(e){W(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===y&&(e._payload.status==="fulfilled"?W(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function W(e){return typeof e=="object"&&e!==null&&e.$$typeof===U}var $=v,U=Symbol.for("react.transitional.element"),f=Symbol.for("react.portal"),D=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),L=Symbol.for("react.context"),z=Symbol.for("react.forward_ref"),q=Symbol.for("react.suspense"),R=Symbol.for("react.suspense_list"),Z=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),Q=Symbol.for("react.activity"),l=Symbol.for("react.client.reference"),i=$.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,m=Object.prototype.hasOwnProperty,S=Array.isArray,g=console.createTask?console.createTask:function(){return null};$={react_stack_bottom_frame:function(e){return e()}};var J,p={},O=$.react_stack_bottom_frame.bind($,d)(),P=g(h(d)),Y={};N.Fragment=D,N.jsx=function(e,t,o){var s=1e4>i.recentlyCreatedOwnerStacks++;return F(e,t,o,!1,s?Error("react-stack-top-frame"):O,s?g(h(e)):P)},N.jsxs=function(e,t,o){var s=1e4>i.recentlyCreatedOwnerStacks++;return F(e,t,o,!0,s?Error("react-stack-top-frame"):O,s?g(h(e)):P)}})()),N}var ne;function se(){return ne||(ne=1,process.env.NODE_ENV==="production"?M.exports=ae():M.exports=ie()),M.exports}var n=se();const ce={primary:"#3b82f6",success:"#10b981",danger:"#ef4444",muted:"#0f172a",card:"#ffffff",grid:"#f1f5f9",border:"#e2e8f0"},le=a.div`
|
|
7
7
|
padding: 30px;
|
|
8
8
|
background: #f8fafc;
|
|
9
9
|
min-height: 100vh;
|
|
10
10
|
font-family: 'Segoe UI', Tahoma, sans-serif;
|
|
11
|
-
|
|
11
|
+
@media (max-width: 900px) {
|
|
12
|
+
padding: 20px;
|
|
13
|
+
}
|
|
14
|
+
@media (max-width: 640px) {
|
|
15
|
+
padding: 16px;
|
|
16
|
+
}
|
|
17
|
+
`,de=a.div`
|
|
12
18
|
display: flex;
|
|
13
19
|
justify-content: space-between;
|
|
14
20
|
align-items: center;
|
|
@@ -18,6 +24,12 @@ React keys must be passed directly to JSX without using spread:
|
|
|
18
24
|
color: #1e293b;
|
|
19
25
|
border-radius: 12px;
|
|
20
26
|
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
|
27
|
+
gap: 12px;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
@media (max-width: 640px) {
|
|
30
|
+
flex-direction: column;
|
|
31
|
+
align-items: flex-start;
|
|
32
|
+
}
|
|
21
33
|
`,B=a.button`
|
|
22
34
|
background: #1e293b;
|
|
23
35
|
color: white;
|
|
@@ -29,12 +41,15 @@ React keys must be passed directly to JSX without using spread:
|
|
|
29
41
|
align-items: center;
|
|
30
42
|
gap: 8px;
|
|
31
43
|
&:hover { background: #334155; }
|
|
32
|
-
`,
|
|
44
|
+
`,ue=a.div`
|
|
33
45
|
position: relative;
|
|
34
46
|
background: ${r=>r.$card};
|
|
35
47
|
border: 1px solid ${r=>r.$border};
|
|
36
48
|
border-radius: 12px;
|
|
37
49
|
overflow: hidden;
|
|
50
|
+
@media (max-width: 900px) {
|
|
51
|
+
overflow-x: auto;
|
|
52
|
+
}
|
|
38
53
|
`,fe=a.div`
|
|
39
54
|
position: absolute;
|
|
40
55
|
top: 0;
|
|
@@ -44,6 +59,13 @@ React keys must be passed directly to JSX without using spread:
|
|
|
44
59
|
display: grid;
|
|
45
60
|
grid-template-columns: repeat(${r=>r.$windowDays}, 1fr);
|
|
46
61
|
pointer-events: none;
|
|
62
|
+
min-width: 700px;
|
|
63
|
+
@media (max-width: 900px) {
|
|
64
|
+
min-width: 600px;
|
|
65
|
+
}
|
|
66
|
+
@media (max-width: 640px) {
|
|
67
|
+
min-width: 520px;
|
|
68
|
+
}
|
|
47
69
|
`,pe=a.div`
|
|
48
70
|
border-right: 1px solid ${r=>r.$grid};
|
|
49
71
|
display: flex;
|
|
@@ -58,7 +80,12 @@ React keys must be passed directly to JSX without using spread:
|
|
|
58
80
|
border-bottom: 1px solid #f1f5f9;
|
|
59
81
|
position: relative;
|
|
60
82
|
&:last-child { border-bottom: none; }
|
|
61
|
-
|
|
83
|
+
@media (max-width: 640px) {
|
|
84
|
+
height: auto;
|
|
85
|
+
min-height: 96px;
|
|
86
|
+
flex-direction: column;
|
|
87
|
+
}
|
|
88
|
+
`,xe=a.div`
|
|
62
89
|
width: ${r=>r.$sidebarWidth}px;
|
|
63
90
|
min-width: ${r=>r.$sidebarWidth}px;
|
|
64
91
|
background: #fcfcfd;
|
|
@@ -69,12 +96,31 @@ React keys must be passed directly to JSX without using spread:
|
|
|
69
96
|
color: #1e293b;
|
|
70
97
|
border-right: 2px solid #f1f5f9;
|
|
71
98
|
z-index: 10;
|
|
72
|
-
|
|
99
|
+
@media (max-width: 900px) {
|
|
100
|
+
width: 180px;
|
|
101
|
+
min-width: 180px;
|
|
102
|
+
}
|
|
103
|
+
@media (max-width: 640px) {
|
|
104
|
+
width: 100%;
|
|
105
|
+
min-width: 0;
|
|
106
|
+
border-right: none;
|
|
107
|
+
border-bottom: 1px solid #f1f5f9;
|
|
108
|
+
padding: 12px 16px;
|
|
109
|
+
}
|
|
110
|
+
`,he=a.div`
|
|
73
111
|
flex-grow: 1;
|
|
74
112
|
position: relative;
|
|
75
113
|
display: flex;
|
|
76
114
|
align-items: center;
|
|
77
|
-
|
|
115
|
+
min-width: 700px;
|
|
116
|
+
@media (max-width: 900px) {
|
|
117
|
+
min-width: 600px;
|
|
118
|
+
}
|
|
119
|
+
@media (max-width: 640px) {
|
|
120
|
+
min-width: 520px;
|
|
121
|
+
padding: 8px 0 12px;
|
|
122
|
+
}
|
|
123
|
+
`,be=a.div`
|
|
78
124
|
position: absolute;
|
|
79
125
|
left: ${r=>r.$left}%;
|
|
80
126
|
width: ${r=>r.$width}%;
|
|
@@ -88,16 +134,16 @@ React keys must be passed directly to JSX without using spread:
|
|
|
88
134
|
justify-content: space-between;
|
|
89
135
|
align-items: center;
|
|
90
136
|
padding: 0 5px;
|
|
91
|
-
`,
|
|
137
|
+
`,ge=a.keyframes`
|
|
92
138
|
from { transform: scaleX(0); opacity: 0.4; }
|
|
93
139
|
to { transform: scaleX(1); opacity: 1; }
|
|
94
|
-
`,
|
|
140
|
+
`,oe=a.keyframes`
|
|
95
141
|
0% { transform: scale(0.85); opacity: 0.6; }
|
|
96
142
|
100% { transform: scale(1); opacity: 1; }
|
|
97
|
-
`,
|
|
143
|
+
`,we=a.keyframes`
|
|
98
144
|
0%, 100% { transform: scale(1); box-shadow: 0 0 0 rgba(16, 185, 129, 0.0); }
|
|
99
145
|
50% { transform: scale(1.08); box-shadow: 0 0 12px rgba(16, 185, 129, 0.5); }
|
|
100
|
-
`,
|
|
146
|
+
`,ve=a.div`
|
|
101
147
|
position: absolute;
|
|
102
148
|
top: 50%;
|
|
103
149
|
left: 0;
|
|
@@ -106,8 +152,8 @@ React keys must be passed directly to JSX without using spread:
|
|
|
106
152
|
background: ${r=>r.$color};
|
|
107
153
|
z-index: 0;
|
|
108
154
|
transform-origin: left center;
|
|
109
|
-
animation: ${
|
|
110
|
-
`,
|
|
155
|
+
animation: ${ge} 500ms ease;
|
|
156
|
+
`,Te=a.div`
|
|
111
157
|
position: absolute;
|
|
112
158
|
left: ${r=>r.$percent}%;
|
|
113
159
|
transform: translateX(-50%);
|
|
@@ -115,7 +161,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
115
161
|
display: flex;
|
|
116
162
|
flex-direction: column;
|
|
117
163
|
align-items: center;
|
|
118
|
-
`,
|
|
164
|
+
`,Ee=a.div`
|
|
119
165
|
width: 30px;
|
|
120
166
|
height: 30px;
|
|
121
167
|
background: white;
|
|
@@ -126,9 +172,9 @@ React keys must be passed directly to JSX without using spread:
|
|
|
126
172
|
justify-content: center;
|
|
127
173
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
128
174
|
transition: transform 200ms ease, box-shadow 200ms ease;
|
|
129
|
-
animation: ${
|
|
175
|
+
animation: ${oe} 320ms ease;
|
|
130
176
|
${r=>r.$pulse&&a.css`
|
|
131
|
-
animation: ${
|
|
177
|
+
animation: ${oe} 320ms ease, ${we} 1.6s ease-in-out infinite;
|
|
132
178
|
`}
|
|
133
179
|
${r=>r.$late&&a.css`
|
|
134
180
|
box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.25);
|
|
@@ -136,14 +182,14 @@ React keys must be passed directly to JSX without using spread:
|
|
|
136
182
|
&:hover {
|
|
137
183
|
transform: scale(1.06);
|
|
138
184
|
}
|
|
139
|
-
`,
|
|
185
|
+
`,_e=a.div`
|
|
140
186
|
position: absolute;
|
|
141
187
|
top: 35px;
|
|
142
188
|
font-size: 10px;
|
|
143
189
|
font-weight: 700;
|
|
144
190
|
white-space: nowrap;
|
|
145
191
|
color: #334155;
|
|
146
|
-
|
|
192
|
+
`,je=a.div`
|
|
147
193
|
position: absolute;
|
|
148
194
|
left: calc(${r=>r.$sidebarWidth}px + ${r=>r.$percent}%);
|
|
149
195
|
top: 0; bottom: 0;
|
|
@@ -154,4 +200,4 @@ React keys must be passed directly to JSX without using spread:
|
|
|
154
200
|
`;a.keyframes`
|
|
155
201
|
0%, 100% { opacity: 0.4; }
|
|
156
202
|
50% { opacity: 1; }
|
|
157
|
-
`;function
|
|
203
|
+
`;function $e({projects:r,viewDate:j,windowDays:x=7,onViewDateChange:h,showTodayLine:u=!0,sidebarWidth:d=220,rowHeight:E=120,rangeIconSize:w=16,showHeader:V=!0,title:H="Team Roadmap",prevLabel:F="Day",nextLabel:I="Day",todayLabel:W="Today",className:$,colors:U}){const f={...ce,...U},[D,G]=v.useState(new Date),k=j??D,_=new Date,L=v.useMemo(()=>Array.from({length:x},(l,i)=>{const m=new Date(k);return m.setDate(k.getDate()-Math.floor(x/2)+i),m}),[k,x]),z=L[0].getTime(),q=L[x-1].getTime()+864e5,R=l=>{const i=(l.getTime()-z)/(q-z)*100;return Math.max(-10,Math.min(110,i))},Z=(l,i)=>{const m=R(l),S=R(i);return{left:m,width:Math.max(0,S-m)}},y=l=>{const i=new Date(k);i.setDate(i.getDate()+l),h?h(i):G(i)},Q=()=>{h?h(new Date):G(new Date)};return n.jsxs(le,{className:$,children:[V&&n.jsxs(de,{children:[n.jsx("h2",{style:{margin:0},children:H}),n.jsxs("div",{style:{display:"flex",gap:"10px"},children:[n.jsxs(B,{onClick:()=>y(-1),children:[n.jsx(T.ChevronLeft,{size:18})," ",F]}),n.jsxs(B,{onClick:Q,children:[n.jsx(T.Calendar,{size:18})," ",W]}),n.jsxs(B,{onClick:()=>y(1),children:[I," ",n.jsx(T.ChevronRight,{size:18})]})]})]}),n.jsxs(ue,{$border:f.border,$card:f.card,children:[n.jsx(fe,{$sidebarWidth:d,$windowDays:x,children:L.map((l,i)=>n.jsx(pe,{$grid:f.grid,children:l.toLocaleDateString("en-US",{weekday:"short",day:"numeric"})},i))}),u&&_.getTime()>=z&&_.getTime()<=q&&n.jsx(je,{$percent:R(_),$sidebarWidth:d,$color:f.danger}),r.map(l=>{const i=Z(l.projectStart,l.projectEnd),m=l.milestones.every(p=>p.status==="completed"||p.status==="success"),S=!m&&_>l.projectEnd,g=m?f.success:S?f.danger:f.primary,J=m?"rgba(16, 185, 129, 0.12)":S?"rgba(239, 68, 68, 0.12)":"rgba(59, 130, 246, 0.08)";return n.jsxs(me,{$rowHeight:E,children:[n.jsx(xe,{$sidebarWidth:d,children:l.projectName}),n.jsxs(he,{children:[n.jsx(ve,{$color:f.muted}),i.width>0&&n.jsxs(be,{$left:i.left,$width:i.width,$color:g,$bg:J,children:[n.jsx(T.Play,{size:w,color:g,fill:g}),n.jsx(T.Flag,{size:w,color:g,fill:g})]}),l.milestones.map(p=>{const O=R(p.endDate);if(O<0||O>100)return null;const P=p.status==="completed"||p.status==="success",Y=p.status==="in-progress"&&_>p.endDate,e=P?f.success:Y?f.danger:f.primary;return n.jsxs(Te,{$percent:O,children:[n.jsx(Ee,{$color:e,$pulse:P,$late:Y,children:P?n.jsx(T.Trophy,{size:14,color:e}):n.jsx(T.Clock,{size:14,color:e})}),n.jsx(_e,{children:p.name})]},p.id)})]})]},l.id)})]})]})}b.TimelineTrack=$e,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})}));
|
package/dist/timeline-track.mjs
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import ae, { useState as
|
|
2
|
-
import
|
|
3
|
-
import { ChevronLeft as
|
|
1
|
+
import ae, { useState as ie, useMemo as se } from "react";
|
|
2
|
+
import c, { css as K, keyframes as q } from "styled-components";
|
|
3
|
+
import { ChevronLeft as le, Calendar as ce, ChevronRight as de, Play as ue, Flag as fe, Trophy as pe, Clock as me } from "lucide-react";
|
|
4
4
|
var G = { exports: {} }, N = {};
|
|
5
5
|
var ee;
|
|
6
|
-
function
|
|
6
|
+
function xe() {
|
|
7
7
|
if (ee) return N;
|
|
8
8
|
ee = 1;
|
|
9
|
-
var r = /* @__PURE__ */ Symbol.for("react.transitional.element"),
|
|
10
|
-
function b
|
|
11
|
-
var
|
|
12
|
-
if (d !== void 0 && (
|
|
9
|
+
var r = /* @__PURE__ */ Symbol.for("react.transitional.element"), $ = /* @__PURE__ */ Symbol.for("react.fragment");
|
|
10
|
+
function x(b, u, d) {
|
|
11
|
+
var w = null;
|
|
12
|
+
if (d !== void 0 && (w = "" + d), u.key !== void 0 && (w = "" + u.key), "key" in u) {
|
|
13
13
|
d = {};
|
|
14
|
-
for (var
|
|
15
|
-
|
|
14
|
+
for (var g in u)
|
|
15
|
+
g !== "key" && (d[g] = u[g]);
|
|
16
16
|
} else d = u;
|
|
17
17
|
return u = d.ref, {
|
|
18
18
|
$$typeof: r,
|
|
19
|
-
type:
|
|
20
|
-
key:
|
|
19
|
+
type: b,
|
|
20
|
+
key: w,
|
|
21
21
|
ref: u !== void 0 ? u : null,
|
|
22
22
|
props: d
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
return N.Fragment =
|
|
25
|
+
return N.Fragment = $, N.jsx = x, N.jsxs = x, N;
|
|
26
26
|
}
|
|
27
27
|
var D = {};
|
|
28
28
|
var re;
|
|
29
|
-
function
|
|
29
|
+
function be() {
|
|
30
30
|
return re || (re = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
31
31
|
function r(e) {
|
|
32
32
|
if (e == null) return null;
|
|
33
33
|
if (typeof e == "function")
|
|
34
|
-
return e.$$typeof ===
|
|
34
|
+
return e.$$typeof === l ? null : e.displayName || e.name || null;
|
|
35
35
|
if (typeof e == "string") return e;
|
|
36
36
|
switch (e) {
|
|
37
37
|
case O:
|
|
38
38
|
return "Fragment";
|
|
39
|
-
case
|
|
39
|
+
case _:
|
|
40
40
|
return "Profiler";
|
|
41
41
|
case F:
|
|
42
42
|
return "StrictMode";
|
|
43
43
|
case I:
|
|
44
44
|
return "Suspense";
|
|
45
|
-
case
|
|
45
|
+
case y:
|
|
46
46
|
return "SuspenseList";
|
|
47
47
|
case V:
|
|
48
48
|
return "Activity";
|
|
@@ -55,14 +55,14 @@ function xe() {
|
|
|
55
55
|
return "Portal";
|
|
56
56
|
case P:
|
|
57
57
|
return e.displayName || "Context";
|
|
58
|
-
case
|
|
58
|
+
case v:
|
|
59
59
|
return (e._context.displayName || "Context") + ".Consumer";
|
|
60
60
|
case A:
|
|
61
61
|
var t = e.render;
|
|
62
62
|
return e = e.displayName, e || (e = t.displayName || t.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
|
|
63
63
|
case B:
|
|
64
64
|
return t = e.displayName || null, t !== null ? t : r(e.type) || "Memo";
|
|
65
|
-
case
|
|
65
|
+
case T:
|
|
66
66
|
t = e._payload, e = e._init;
|
|
67
67
|
try {
|
|
68
68
|
return r(e(t));
|
|
@@ -71,29 +71,29 @@ function xe() {
|
|
|
71
71
|
}
|
|
72
72
|
return null;
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function $(e) {
|
|
75
75
|
return "" + e;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function x(e) {
|
|
78
78
|
try {
|
|
79
|
-
|
|
79
|
+
$(e);
|
|
80
80
|
var t = !1;
|
|
81
81
|
} catch {
|
|
82
82
|
t = !0;
|
|
83
83
|
}
|
|
84
84
|
if (t) {
|
|
85
85
|
t = console;
|
|
86
|
-
var n = t.error,
|
|
86
|
+
var n = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
|
|
87
87
|
return n.call(
|
|
88
88
|
t,
|
|
89
89
|
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
|
90
|
-
|
|
91
|
-
),
|
|
90
|
+
i
|
|
91
|
+
), $(e);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
function
|
|
94
|
+
function b(e) {
|
|
95
95
|
if (e === O) return "<>";
|
|
96
|
-
if (typeof e == "object" && e !== null && e.$$typeof ===
|
|
96
|
+
if (typeof e == "object" && e !== null && e.$$typeof === T)
|
|
97
97
|
return "<...>";
|
|
98
98
|
try {
|
|
99
99
|
var t = r(e);
|
|
@@ -109,14 +109,14 @@ function xe() {
|
|
|
109
109
|
function d() {
|
|
110
110
|
return Error("react-stack-top-frame");
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function w(e) {
|
|
113
113
|
if (m.call(e, "key")) {
|
|
114
114
|
var t = Object.getOwnPropertyDescriptor(e, "key").get;
|
|
115
115
|
if (t && t.isReactWarning) return !1;
|
|
116
116
|
}
|
|
117
117
|
return e.key !== void 0;
|
|
118
118
|
}
|
|
119
|
-
function
|
|
119
|
+
function g(e, t) {
|
|
120
120
|
function n() {
|
|
121
121
|
W || (W = !0, console.error(
|
|
122
122
|
"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
|
|
@@ -134,15 +134,15 @@ function xe() {
|
|
|
134
134
|
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
|
|
135
135
|
)), e = this.props.ref, e !== void 0 ? e : null;
|
|
136
136
|
}
|
|
137
|
-
function X(e, t, n,
|
|
138
|
-
var
|
|
137
|
+
function X(e, t, n, i, U, H) {
|
|
138
|
+
var s = n.ref;
|
|
139
139
|
return e = {
|
|
140
140
|
$$typeof: M,
|
|
141
141
|
type: e,
|
|
142
142
|
key: t,
|
|
143
143
|
props: n,
|
|
144
|
-
_owner:
|
|
145
|
-
}, (
|
|
144
|
+
_owner: i
|
|
145
|
+
}, (s !== void 0 ? s : null) !== null ? Object.defineProperty(e, "ref", {
|
|
146
146
|
enumerable: !1,
|
|
147
147
|
get: J
|
|
148
148
|
}) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
|
|
@@ -167,48 +167,48 @@ function xe() {
|
|
|
167
167
|
value: H
|
|
168
168
|
}), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
|
|
169
169
|
}
|
|
170
|
-
function L(e, t, n,
|
|
171
|
-
var
|
|
172
|
-
if (
|
|
173
|
-
if (
|
|
174
|
-
if (R(
|
|
175
|
-
for (
|
|
176
|
-
z(i
|
|
177
|
-
Object.freeze && Object.freeze(
|
|
170
|
+
function L(e, t, n, i, U, H) {
|
|
171
|
+
var s = t.children;
|
|
172
|
+
if (s !== void 0)
|
|
173
|
+
if (i)
|
|
174
|
+
if (R(s)) {
|
|
175
|
+
for (i = 0; i < s.length; i++)
|
|
176
|
+
z(s[i]);
|
|
177
|
+
Object.freeze && Object.freeze(s);
|
|
178
178
|
} else
|
|
179
179
|
console.error(
|
|
180
180
|
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
|
|
181
181
|
);
|
|
182
|
-
else z(
|
|
182
|
+
else z(s);
|
|
183
183
|
if (m.call(t, "key")) {
|
|
184
|
-
|
|
184
|
+
s = r(e);
|
|
185
185
|
var S = Object.keys(t).filter(function(ne) {
|
|
186
186
|
return ne !== "key";
|
|
187
187
|
});
|
|
188
|
-
|
|
188
|
+
i = 0 < S.length ? "{key: someKey, " + S.join(": ..., ") + ": ...}" : "{key: someKey}", C[s + i] || (S = 0 < S.length ? "{" + S.join(": ..., ") + ": ...}" : "{}", console.error(
|
|
189
189
|
`A props object containing a "key" prop is being spread into JSX:
|
|
190
190
|
let props = %s;
|
|
191
191
|
<%s {...props} />
|
|
192
192
|
React keys must be passed directly to JSX without using spread:
|
|
193
193
|
let props = %s;
|
|
194
194
|
<%s key={someKey} {...props} />`,
|
|
195
|
-
s,
|
|
196
195
|
i,
|
|
196
|
+
s,
|
|
197
197
|
S,
|
|
198
|
-
|
|
199
|
-
), C[
|
|
198
|
+
s
|
|
199
|
+
), C[s + i] = !0);
|
|
200
200
|
}
|
|
201
|
-
if (
|
|
201
|
+
if (s = null, n !== void 0 && (x(n), s = "" + n), w(t) && (x(t.key), s = "" + t.key), "key" in t) {
|
|
202
202
|
n = {};
|
|
203
203
|
for (var Z in t)
|
|
204
204
|
Z !== "key" && (n[Z] = t[Z]);
|
|
205
205
|
} else n = t;
|
|
206
|
-
return
|
|
206
|
+
return s && g(
|
|
207
207
|
n,
|
|
208
208
|
typeof e == "function" ? e.displayName || e.name || "Unknown" : e
|
|
209
209
|
), X(
|
|
210
210
|
e,
|
|
211
|
-
|
|
211
|
+
s,
|
|
212
212
|
n,
|
|
213
213
|
u(),
|
|
214
214
|
U,
|
|
@@ -216,52 +216,52 @@ React keys must be passed directly to JSX without using spread:
|
|
|
216
216
|
);
|
|
217
217
|
}
|
|
218
218
|
function z(e) {
|
|
219
|
-
Y(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof ===
|
|
219
|
+
Y(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === T && (e._payload.status === "fulfilled" ? Y(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
|
|
220
220
|
}
|
|
221
221
|
function Y(e) {
|
|
222
222
|
return typeof e == "object" && e !== null && e.$$typeof === M;
|
|
223
223
|
}
|
|
224
|
-
var
|
|
224
|
+
var E = ae, M = /* @__PURE__ */ Symbol.for("react.transitional.element"), f = /* @__PURE__ */ Symbol.for("react.portal"), O = /* @__PURE__ */ Symbol.for("react.fragment"), F = /* @__PURE__ */ Symbol.for("react.strict_mode"), _ = /* @__PURE__ */ Symbol.for("react.profiler"), v = /* @__PURE__ */ Symbol.for("react.consumer"), P = /* @__PURE__ */ Symbol.for("react.context"), A = /* @__PURE__ */ Symbol.for("react.forward_ref"), I = /* @__PURE__ */ Symbol.for("react.suspense"), y = /* @__PURE__ */ Symbol.for("react.suspense_list"), B = /* @__PURE__ */ Symbol.for("react.memo"), T = /* @__PURE__ */ Symbol.for("react.lazy"), V = /* @__PURE__ */ Symbol.for("react.activity"), l = /* @__PURE__ */ Symbol.for("react.client.reference"), a = E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, m = Object.prototype.hasOwnProperty, R = Array.isArray, h = console.createTask ? console.createTask : function() {
|
|
225
225
|
return null;
|
|
226
226
|
};
|
|
227
|
-
|
|
227
|
+
E = {
|
|
228
228
|
react_stack_bottom_frame: function(e) {
|
|
229
229
|
return e();
|
|
230
230
|
}
|
|
231
231
|
};
|
|
232
|
-
var W, p = {}, j =
|
|
233
|
-
|
|
232
|
+
var W, p = {}, j = E.react_stack_bottom_frame.bind(
|
|
233
|
+
E,
|
|
234
234
|
d
|
|
235
|
-
)(), k =
|
|
235
|
+
)(), k = h(b(d)), C = {};
|
|
236
236
|
D.Fragment = O, D.jsx = function(e, t, n) {
|
|
237
|
-
var
|
|
237
|
+
var i = 1e4 > a.recentlyCreatedOwnerStacks++;
|
|
238
238
|
return L(
|
|
239
239
|
e,
|
|
240
240
|
t,
|
|
241
241
|
n,
|
|
242
242
|
!1,
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
i ? Error("react-stack-top-frame") : j,
|
|
244
|
+
i ? h(b(e)) : k
|
|
245
245
|
);
|
|
246
246
|
}, D.jsxs = function(e, t, n) {
|
|
247
|
-
var
|
|
247
|
+
var i = 1e4 > a.recentlyCreatedOwnerStacks++;
|
|
248
248
|
return L(
|
|
249
249
|
e,
|
|
250
250
|
t,
|
|
251
251
|
n,
|
|
252
252
|
!0,
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
i ? Error("react-stack-top-frame") : j,
|
|
254
|
+
i ? h(b(e)) : k
|
|
255
255
|
);
|
|
256
256
|
};
|
|
257
257
|
})()), D;
|
|
258
258
|
}
|
|
259
259
|
var te;
|
|
260
|
-
function
|
|
261
|
-
return te || (te = 1, process.env.NODE_ENV === "production" ? G.exports =
|
|
260
|
+
function he() {
|
|
261
|
+
return te || (te = 1, process.env.NODE_ENV === "production" ? G.exports = xe() : G.exports = be()), G.exports;
|
|
262
262
|
}
|
|
263
|
-
var o =
|
|
264
|
-
const
|
|
263
|
+
var o = he();
|
|
264
|
+
const ge = {
|
|
265
265
|
primary: "#3b82f6",
|
|
266
266
|
success: "#10b981",
|
|
267
267
|
danger: "#ef4444",
|
|
@@ -269,12 +269,18 @@ const he = {
|
|
|
269
269
|
card: "#ffffff",
|
|
270
270
|
grid: "#f1f5f9",
|
|
271
271
|
border: "#e2e8f0"
|
|
272
|
-
},
|
|
272
|
+
}, we = c.div`
|
|
273
273
|
padding: 30px;
|
|
274
274
|
background: #f8fafc;
|
|
275
275
|
min-height: 100vh;
|
|
276
276
|
font-family: 'Segoe UI', Tahoma, sans-serif;
|
|
277
|
-
|
|
277
|
+
@media (max-width: 900px) {
|
|
278
|
+
padding: 20px;
|
|
279
|
+
}
|
|
280
|
+
@media (max-width: 640px) {
|
|
281
|
+
padding: 16px;
|
|
282
|
+
}
|
|
283
|
+
`, ve = c.div`
|
|
278
284
|
display: flex;
|
|
279
285
|
justify-content: space-between;
|
|
280
286
|
align-items: center;
|
|
@@ -284,7 +290,13 @@ const he = {
|
|
|
284
290
|
color: #1e293b;
|
|
285
291
|
border-radius: 12px;
|
|
286
292
|
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
|
287
|
-
|
|
293
|
+
gap: 12px;
|
|
294
|
+
flex-wrap: wrap;
|
|
295
|
+
@media (max-width: 640px) {
|
|
296
|
+
flex-direction: column;
|
|
297
|
+
align-items: flex-start;
|
|
298
|
+
}
|
|
299
|
+
`, Q = c.button`
|
|
288
300
|
background: #1e293b;
|
|
289
301
|
color: white;
|
|
290
302
|
border: none;
|
|
@@ -295,13 +307,16 @@ const he = {
|
|
|
295
307
|
align-items: center;
|
|
296
308
|
gap: 8px;
|
|
297
309
|
&:hover { background: #334155; }
|
|
298
|
-
`,
|
|
310
|
+
`, $e = c.div`
|
|
299
311
|
position: relative;
|
|
300
312
|
background: ${(r) => r.$card};
|
|
301
313
|
border: 1px solid ${(r) => r.$border};
|
|
302
314
|
border-radius: 12px;
|
|
303
315
|
overflow: hidden;
|
|
304
|
-
|
|
316
|
+
@media (max-width: 900px) {
|
|
317
|
+
overflow-x: auto;
|
|
318
|
+
}
|
|
319
|
+
`, Ee = c.div`
|
|
305
320
|
position: absolute;
|
|
306
321
|
top: 0;
|
|
307
322
|
left: ${(r) => r.$sidebarWidth}px;
|
|
@@ -310,7 +325,14 @@ const he = {
|
|
|
310
325
|
display: grid;
|
|
311
326
|
grid-template-columns: repeat(${(r) => r.$windowDays}, 1fr);
|
|
312
327
|
pointer-events: none;
|
|
313
|
-
|
|
328
|
+
min-width: 700px;
|
|
329
|
+
@media (max-width: 900px) {
|
|
330
|
+
min-width: 600px;
|
|
331
|
+
}
|
|
332
|
+
@media (max-width: 640px) {
|
|
333
|
+
min-width: 520px;
|
|
334
|
+
}
|
|
335
|
+
`, _e = c.div`
|
|
314
336
|
border-right: 1px solid ${(r) => r.$grid};
|
|
315
337
|
display: flex;
|
|
316
338
|
justify-content: center;
|
|
@@ -318,13 +340,18 @@ const he = {
|
|
|
318
340
|
font-size: 11px;
|
|
319
341
|
color: #94a3b8;
|
|
320
342
|
font-weight: 600;
|
|
321
|
-
`,
|
|
343
|
+
`, ye = c.div`
|
|
322
344
|
display: flex;
|
|
323
345
|
height: ${(r) => r.$rowHeight}px;
|
|
324
346
|
border-bottom: 1px solid #f1f5f9;
|
|
325
347
|
position: relative;
|
|
326
348
|
&:last-child { border-bottom: none; }
|
|
327
|
-
|
|
349
|
+
@media (max-width: 640px) {
|
|
350
|
+
height: auto;
|
|
351
|
+
min-height: 96px;
|
|
352
|
+
flex-direction: column;
|
|
353
|
+
}
|
|
354
|
+
`, Te = c.div`
|
|
328
355
|
width: ${(r) => r.$sidebarWidth}px;
|
|
329
356
|
min-width: ${(r) => r.$sidebarWidth}px;
|
|
330
357
|
background: #fcfcfd;
|
|
@@ -335,12 +362,31 @@ const he = {
|
|
|
335
362
|
color: #1e293b;
|
|
336
363
|
border-right: 2px solid #f1f5f9;
|
|
337
364
|
z-index: 10;
|
|
338
|
-
|
|
365
|
+
@media (max-width: 900px) {
|
|
366
|
+
width: 180px;
|
|
367
|
+
min-width: 180px;
|
|
368
|
+
}
|
|
369
|
+
@media (max-width: 640px) {
|
|
370
|
+
width: 100%;
|
|
371
|
+
min-width: 0;
|
|
372
|
+
border-right: none;
|
|
373
|
+
border-bottom: 1px solid #f1f5f9;
|
|
374
|
+
padding: 12px 16px;
|
|
375
|
+
}
|
|
376
|
+
`, Re = c.div`
|
|
339
377
|
flex-grow: 1;
|
|
340
378
|
position: relative;
|
|
341
379
|
display: flex;
|
|
342
380
|
align-items: center;
|
|
343
|
-
|
|
381
|
+
min-width: 700px;
|
|
382
|
+
@media (max-width: 900px) {
|
|
383
|
+
min-width: 600px;
|
|
384
|
+
}
|
|
385
|
+
@media (max-width: 640px) {
|
|
386
|
+
min-width: 520px;
|
|
387
|
+
padding: 8px 0 12px;
|
|
388
|
+
}
|
|
389
|
+
`, je = c.div`
|
|
344
390
|
position: absolute;
|
|
345
391
|
left: ${(r) => r.$left}%;
|
|
346
392
|
width: ${(r) => r.$width}%;
|
|
@@ -363,7 +409,7 @@ const he = {
|
|
|
363
409
|
`, Se = q`
|
|
364
410
|
0%, 100% { transform: scale(1); box-shadow: 0 0 0 rgba(16, 185, 129, 0.0); }
|
|
365
411
|
50% { transform: scale(1.08); box-shadow: 0 0 12px rgba(16, 185, 129, 0.5); }
|
|
366
|
-
`, Oe =
|
|
412
|
+
`, Oe = c.div`
|
|
367
413
|
position: absolute;
|
|
368
414
|
top: 50%;
|
|
369
415
|
left: 0;
|
|
@@ -373,7 +419,7 @@ const he = {
|
|
|
373
419
|
z-index: 0;
|
|
374
420
|
transform-origin: left center;
|
|
375
421
|
animation: ${ke} 500ms ease;
|
|
376
|
-
`, Pe =
|
|
422
|
+
`, Pe = c.div`
|
|
377
423
|
position: absolute;
|
|
378
424
|
left: ${(r) => r.$percent}%;
|
|
379
425
|
transform: translateX(-50%);
|
|
@@ -381,7 +427,7 @@ const he = {
|
|
|
381
427
|
display: flex;
|
|
382
428
|
flex-direction: column;
|
|
383
429
|
align-items: center;
|
|
384
|
-
`, Ae =
|
|
430
|
+
`, Ae = c.div`
|
|
385
431
|
width: 30px;
|
|
386
432
|
height: 30px;
|
|
387
433
|
background: white;
|
|
@@ -402,14 +448,14 @@ const he = {
|
|
|
402
448
|
&:hover {
|
|
403
449
|
transform: scale(1.06);
|
|
404
450
|
}
|
|
405
|
-
`, Ce =
|
|
451
|
+
`, Ce = c.div`
|
|
406
452
|
position: absolute;
|
|
407
453
|
top: 35px;
|
|
408
454
|
font-size: 10px;
|
|
409
455
|
font-weight: 700;
|
|
410
456
|
white-space: nowrap;
|
|
411
457
|
color: #334155;
|
|
412
|
-
`, Ne =
|
|
458
|
+
`, Ne = c.div`
|
|
413
459
|
position: absolute;
|
|
414
460
|
left: calc(${(r) => r.$sidebarWidth}px + ${(r) => r.$percent}%);
|
|
415
461
|
top: 0; bottom: 0;
|
|
@@ -424,73 +470,73 @@ q`
|
|
|
424
470
|
`;
|
|
425
471
|
function Ye({
|
|
426
472
|
projects: r,
|
|
427
|
-
viewDate:
|
|
428
|
-
windowDays:
|
|
429
|
-
onViewDateChange:
|
|
473
|
+
viewDate: $,
|
|
474
|
+
windowDays: x = 7,
|
|
475
|
+
onViewDateChange: b,
|
|
430
476
|
showTodayLine: u = !0,
|
|
431
477
|
sidebarWidth: d = 220,
|
|
432
|
-
rowHeight:
|
|
433
|
-
rangeIconSize:
|
|
478
|
+
rowHeight: w = 120,
|
|
479
|
+
rangeIconSize: g = 16,
|
|
434
480
|
showHeader: J = !0,
|
|
435
481
|
title: X = "Team Roadmap",
|
|
436
482
|
prevLabel: L = "Day",
|
|
437
483
|
nextLabel: z = "Day",
|
|
438
484
|
todayLabel: Y = "Today",
|
|
439
|
-
className:
|
|
485
|
+
className: E,
|
|
440
486
|
colors: M
|
|
441
487
|
}) {
|
|
442
|
-
const f = { ...
|
|
443
|
-
const m = new Date(
|
|
444
|
-
return m.setDate(
|
|
445
|
-
}), [
|
|
446
|
-
const a = (
|
|
488
|
+
const f = { ...ge, ...M }, [O, F] = ie(/* @__PURE__ */ new Date()), _ = $ ?? O, v = /* @__PURE__ */ new Date(), P = se(() => Array.from({ length: x }, (l, a) => {
|
|
489
|
+
const m = new Date(_);
|
|
490
|
+
return m.setDate(_.getDate() - Math.floor(x / 2) + a), m;
|
|
491
|
+
}), [_, x]), A = P[0].getTime(), I = P[x - 1].getTime() + 864e5, y = (l) => {
|
|
492
|
+
const a = (l.getTime() - A) / (I - A) * 100;
|
|
447
493
|
return Math.max(-10, Math.min(110, a));
|
|
448
|
-
}, B = (
|
|
449
|
-
const m =
|
|
494
|
+
}, B = (l, a) => {
|
|
495
|
+
const m = y(l), R = y(a);
|
|
450
496
|
return { left: m, width: Math.max(0, R - m) };
|
|
451
|
-
},
|
|
452
|
-
const a = new Date(
|
|
453
|
-
a.setDate(a.getDate() +
|
|
497
|
+
}, T = (l) => {
|
|
498
|
+
const a = new Date(_);
|
|
499
|
+
a.setDate(a.getDate() + l), b ? b(a) : F(a);
|
|
454
500
|
}, V = () => {
|
|
455
|
-
|
|
501
|
+
b ? b(/* @__PURE__ */ new Date()) : F(/* @__PURE__ */ new Date());
|
|
456
502
|
};
|
|
457
|
-
return /* @__PURE__ */ o.jsxs(
|
|
458
|
-
J && /* @__PURE__ */ o.jsxs(
|
|
503
|
+
return /* @__PURE__ */ o.jsxs(we, { className: E, children: [
|
|
504
|
+
J && /* @__PURE__ */ o.jsxs(ve, { children: [
|
|
459
505
|
/* @__PURE__ */ o.jsx("h2", { style: { margin: 0 }, children: X }),
|
|
460
506
|
/* @__PURE__ */ o.jsxs("div", { style: { display: "flex", gap: "10px" }, children: [
|
|
461
|
-
/* @__PURE__ */ o.jsxs(Q, { onClick: () =>
|
|
462
|
-
/* @__PURE__ */ o.jsx(
|
|
507
|
+
/* @__PURE__ */ o.jsxs(Q, { onClick: () => T(-1), children: [
|
|
508
|
+
/* @__PURE__ */ o.jsx(le, { size: 18 }),
|
|
463
509
|
" ",
|
|
464
510
|
L
|
|
465
511
|
] }),
|
|
466
512
|
/* @__PURE__ */ o.jsxs(Q, { onClick: V, children: [
|
|
467
|
-
/* @__PURE__ */ o.jsx(
|
|
513
|
+
/* @__PURE__ */ o.jsx(ce, { size: 18 }),
|
|
468
514
|
" ",
|
|
469
515
|
Y
|
|
470
516
|
] }),
|
|
471
|
-
/* @__PURE__ */ o.jsxs(Q, { onClick: () =>
|
|
517
|
+
/* @__PURE__ */ o.jsxs(Q, { onClick: () => T(1), children: [
|
|
472
518
|
z,
|
|
473
519
|
" ",
|
|
474
520
|
/* @__PURE__ */ o.jsx(de, { size: 18 })
|
|
475
521
|
] })
|
|
476
522
|
] })
|
|
477
523
|
] }),
|
|
478
|
-
/* @__PURE__ */ o.jsxs(
|
|
479
|
-
/* @__PURE__ */ o.jsx(
|
|
480
|
-
u &&
|
|
524
|
+
/* @__PURE__ */ o.jsxs($e, { $border: f.border, $card: f.card, children: [
|
|
525
|
+
/* @__PURE__ */ o.jsx(Ee, { $sidebarWidth: d, $windowDays: x, children: P.map((l, a) => /* @__PURE__ */ o.jsx(_e, { $grid: f.grid, children: l.toLocaleDateString("en-US", { weekday: "short", day: "numeric" }) }, a)) }),
|
|
526
|
+
u && v.getTime() >= A && v.getTime() <= I && /* @__PURE__ */ o.jsx(
|
|
481
527
|
Ne,
|
|
482
528
|
{
|
|
483
|
-
$percent:
|
|
529
|
+
$percent: y(v),
|
|
484
530
|
$sidebarWidth: d,
|
|
485
531
|
$color: f.danger
|
|
486
532
|
}
|
|
487
533
|
),
|
|
488
|
-
r.map((
|
|
489
|
-
const a = B(
|
|
534
|
+
r.map((l) => {
|
|
535
|
+
const a = B(l.projectStart, l.projectEnd), m = l.milestones.every(
|
|
490
536
|
(p) => p.status === "completed" || p.status === "success"
|
|
491
|
-
), R = !m &&
|
|
492
|
-
return /* @__PURE__ */ o.jsxs(
|
|
493
|
-
/* @__PURE__ */ o.jsx(
|
|
537
|
+
), R = !m && v > l.projectEnd, h = m ? f.success : R ? f.danger : f.primary, W = m ? "rgba(16, 185, 129, 0.12)" : R ? "rgba(239, 68, 68, 0.12)" : "rgba(59, 130, 246, 0.08)";
|
|
538
|
+
return /* @__PURE__ */ o.jsxs(ye, { $rowHeight: w, children: [
|
|
539
|
+
/* @__PURE__ */ o.jsx(Te, { $sidebarWidth: d, children: l.projectName }),
|
|
494
540
|
/* @__PURE__ */ o.jsxs(Re, { children: [
|
|
495
541
|
/* @__PURE__ */ o.jsx(Oe, { $color: f.muted }),
|
|
496
542
|
a.width > 0 && /* @__PURE__ */ o.jsxs(
|
|
@@ -498,25 +544,25 @@ function Ye({
|
|
|
498
544
|
{
|
|
499
545
|
$left: a.left,
|
|
500
546
|
$width: a.width,
|
|
501
|
-
$color:
|
|
547
|
+
$color: h,
|
|
502
548
|
$bg: W,
|
|
503
549
|
children: [
|
|
504
|
-
/* @__PURE__ */ o.jsx(ue, { size:
|
|
505
|
-
/* @__PURE__ */ o.jsx(fe, { size:
|
|
550
|
+
/* @__PURE__ */ o.jsx(ue, { size: g, color: h, fill: h }),
|
|
551
|
+
/* @__PURE__ */ o.jsx(fe, { size: g, color: h, fill: h })
|
|
506
552
|
]
|
|
507
553
|
}
|
|
508
554
|
),
|
|
509
|
-
|
|
510
|
-
const j =
|
|
555
|
+
l.milestones.map((p) => {
|
|
556
|
+
const j = y(p.endDate);
|
|
511
557
|
if (j < 0 || j > 100) return null;
|
|
512
|
-
const k = p.status === "completed" || p.status === "success", C = p.status === "in-progress" &&
|
|
558
|
+
const k = p.status === "completed" || p.status === "success", C = p.status === "in-progress" && v > p.endDate, e = k ? f.success : C ? f.danger : f.primary;
|
|
513
559
|
return /* @__PURE__ */ o.jsxs(Pe, { $percent: j, children: [
|
|
514
560
|
/* @__PURE__ */ o.jsx(Ae, { $color: e, $pulse: k, $late: C, children: k ? /* @__PURE__ */ o.jsx(pe, { size: 14, color: e }) : /* @__PURE__ */ o.jsx(me, { size: 14, color: e }) }),
|
|
515
561
|
/* @__PURE__ */ o.jsx(Ce, { children: p.name })
|
|
516
562
|
] }, p.id);
|
|
517
563
|
})
|
|
518
564
|
] })
|
|
519
|
-
] },
|
|
565
|
+
] }, l.id);
|
|
520
566
|
})
|
|
521
567
|
] })
|
|
522
568
|
] });
|