gantt-lib 0.25.0 → 0.26.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/ui.css","../src/styles.css","../src/components/TimeScaleHeader/TimeScaleHeader.css","../src/components/TaskRow/TaskRow.css","../src/components/TodayIndicator/TodayIndicator.css","../src/components/GridBackground/GridBackground.css","../src/components/DragGuideLines/DragGuideLines.css","../src/components/DependencyLines/DependencyLines.css","../src/components/TaskList/TaskList.css","../src/components/GanttChart/GanttChart.css"],"sourcesContent":["/* =========================================================\n * UI Components CSS — gantt-lib theming\n * All classes use gantt- prefix to avoid collisions\n * ========================================================= */\n\n/* CSS Variables for UI components */\n:root {\n --gantt-input-bg: #ffffff;\n --gantt-input-border: #d1d5db;\n --gantt-input-focus-ring: rgba(59, 130, 246, 0.5);\n --gantt-input-text: #1f2937;\n --gantt-input-placeholder: #9ca3af;\n --gantt-input-radius: 6px;\n\n --gantt-popover-bg: #ffffff;\n --gantt-popover-border: #e5e7eb;\n --gantt-popover-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n --gantt-calendar-day-hover: #f3f4f6;\n --gantt-calendar-day-selected: #3b82f6;\n --gantt-calendar-day-selected-text: #ffffff;\n --gantt-calendar-day-today-bg: #eff6ff;\n --gantt-calendar-day-today-color: #1d4ed8;\n --gantt-calendar-day-outside-color: #d1d5db;\n --gantt-calendar-day-disabled-color: #d1d5db;\n\n --gantt-calendar-bg: #ffffff;\n --gantt-calendar-text: #1f2937;\n --gantt-calendar-text-weekend: #ef4444;\n --gantt-calendar-text-muted: #9ca3af;\n --gantt-calendar-day-today-border: #3b82f6;\n --gantt-calendar-day-range: #dbeafe;\n --gantt-calendar-day-disabled-text: #d1d5db;\n}\n\n/* =========================================================\n * Input\n * ========================================================= */\n\n.gantt-input {\n display: flex;\n height: 32px;\n width: 100%;\n border-radius: var(--gantt-input-radius);\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n transition: border-color 150ms, box-shadow 150ms;\n box-sizing: border-box;\n}\n\n.gantt-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-input::placeholder {\n color: var(--gantt-input-placeholder);\n}\n\n.gantt-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Button\n * ========================================================= */\n\n.gantt-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 0.875rem;\n font-family: inherit;\n font-weight: 500;\n padding: 0 12px;\n height: 32px;\n cursor: pointer;\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n color: var(--gantt-input-text);\n transition: background-color 100ms, box-shadow 100ms;\n user-select: none;\n}\n\n.gantt-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Ghost variant */\n.gantt-btn-ghost {\n background-color: transparent;\n border-color: transparent;\n}\n\n.gantt-btn-ghost:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n/* Outline variant */\n.gantt-btn-outline {\n background-color: transparent;\n}\n\n/* Icon size */\n.gantt-btn-icon {\n width: 28px;\n height: 28px;\n padding: 0;\n}\n\n/* Small size */\n.gantt-btn-sm {\n height: 26px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n/* =========================================================\n * Popover\n * ========================================================= */\n\n.gantt-popover {\n font-family: var(--gantt-font-family);\n background: var(--gantt-popover-bg);\n border: 1px solid var(--gantt-popover-border);\n border-radius: 8px;\n box-shadow: var(--gantt-popover-shadow);\n padding: 4px;\n z-index: 1000;\n outline: none;\n animation: gantt-popover-in 120ms ease-out;\n}\n\n@keyframes gantt-popover-in {\n from {\n opacity: 0;\n transform: scale(0.97) translateY(-4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* =========================================================\n * DatePicker trigger button\n * ========================================================= */\n\n.gantt-datepicker-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: center;\n user-select: none;\n}\n\n.gantt-datepicker-trigger:hover {\n background-color: transparent;\n border-radius: 0;\n}\n\n.gantt-datepicker-trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n border-radius: 2px;\n}\n\n.gantt-datepicker-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Calendar — custom scrollable (gantt-cal-* / gantt-day-btn)\n * ========================================================= */\n\n.gantt-cal-container {\n max-height: 280px;\n overflow-y: auto;\n user-select: none;\n padding: 8px;\n font-family: inherit;\n background: var(--gantt-calendar-bg);\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month {\n margin-bottom: 16px;\n}\n\n.gantt-cal-month-header {\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 600;\n padding: 4px 0 8px;\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month-days {\n display: grid;\n grid-template-columns: repeat(7, 32px);\n gap: 2px;\n}\n\n.gantt-cal-empty-day {\n width: 32px;\n height: 32px;\n}\n\n.gantt-cal-weekday {\n width: 32px;\n height: 24px;\n font-size: 0.75rem;\n font-family: inherit;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn {\n width: 32px;\n height: 32px;\n font-size: 0.875rem;\n font-family: inherit;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n color: var(--gantt-calendar-text);\n transition: background-color 100ms;\n}\n\n.gantt-day-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-day-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-day-btn.today {\n border-color: var(--gantt-calendar-day-today-border);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected {\n background-color: var(--gantt-calendar-day-selected);\n color: var(--gantt-calendar-day-selected-text);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected:hover {\n background-color: var(--gantt-calendar-day-selected);\n opacity: 0.9;\n}\n\n.gantt-day-btn.weekend:not(.selected) {\n color: var(--gantt-calendar-text-weekend);\n}\n\n.gantt-day-btn.past:not(.selected) {\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn.past.weekend:not(.selected) {\n color: #fca5a5;\n}\n\n.gantt-day-btn.disabled {\n color: var(--gantt-calendar-day-disabled-text);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.gantt-day-btn.disabled:hover {\n background: transparent;\n}\n\n/* =========================================================\n * DatePicker inline date input\n * ========================================================= */\n\n.gantt-datepicker-input-row {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 8px;\n border-bottom: 1px solid var(--gantt-input-border);\n}\n\n.gantt-datepicker-date-input {\n width: 90px;\n flex-shrink: 0;\n font-family: inherit;\n font-size: 0.875rem;\n font-variant-numeric: tabular-nums;\n background: transparent;\n border: 1px solid var(--gantt-input-border);\n border-radius: 4px;\n outline: none;\n color: var(--gantt-input-text);\n cursor: default;\n letter-spacing: 0.05em;\n text-align: center;\n height: 28px;\n padding: 0 4px;\n}\n\n.gantt-datepicker-date-input:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n\n.gantt-datepicker-date-input::selection {\n background: rgba(59, 130, 246, 0.25);\n}\n\n.gantt-datepicker-shift-btn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: inherit;\n font-size: 0.75rem;\n font-weight: 500;\n padding: 0 7px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: var(--gantt-calendar-day-hover, rgba(0,0,0,0.07));\n color: var(--gantt-calendar-text);\n cursor: pointer;\n}\n\n.gantt-datepicker-shift-btn:hover {\n background: var(--gantt-input-border, rgba(0,0,0,0.15));\n}\n\n","/* Gantt Chart CSS Variables - User customizable theming */\n@import './components/ui/ui.css';\n\n:root {\n /* Font */\n --gantt-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n /* Grid Colors */\n --gantt-grid-line-color: #e0e0e0;\n --gantt-cell-background: #ffffff;\n --gantt-row-hover-background: #f6f6f7;\n\n /* Dimensions */\n --gantt-row-height: 30px;\n --gantt-header-height: 40px;\n --gantt-day-width: 30px;\n --gantt-container-border-radius: 10px;\n\n /* Task Bar Styling */\n --gantt-task-bar-default-color: #3b82f6;\n --gantt-task-bar-text-color: #ffffff;\n --gantt-task-bar-border-radius: 4px;\n --gantt-task-bar-height: 24px;\n\n /* Today Indicator */\n --gantt-today-indicator-color: rgba(255, 0, 0, 0.6);\n --gantt-today-indicator-width: 2px;\n\n /* Calendar Grid - Weekend */\n --gantt-weekend-background: #fff9f8;\n --gantt-weekend-border: #fca5a5;\n\n /* Calendar Grid - Separators */\n --gantt-month-separator-width: 1px;\n --gantt-month-separator-color: #a1a1a1;\n --gantt-week-separator-width: 1px;\n --gantt-week-separator-color: #f3f4f6;\n --gantt-day-line-width: 1px;\n --gantt-day-line-color: #f3f4f6;\n\n /* Task List - Vertical Separators (hidden by default) */\n --gantt-tl-vertical-separators: none;\n --gantt-tl-vertical-separators-width: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n /* To enable separators, set: --gantt-tl-vertical-separators: var(--gantt-tl-vertical-separators-width); */\n\n /* Progress Bar Colors */\n --gantt-progress-color: rgba(0, 0, 0, 0.4);\n --gantt-progress-completed: #ffb800;\n --gantt-progress-accepted: #17c964;\n\n /* Dependency line colors */\n --gantt-dependency-line-color: rgba(0, 0, 55, 0.8);\n --gantt-dependency-cycle-color: #ef4444;\n\n /* Expired task color */\n --gantt-expired-color: #ef4444;\n\n /* Parent Task Styling (Phase 19) - MS Project bracket style */\n --gantt-parent-bar-color: #782fc4;\n --gantt-parent-bar-height: 20px;\n --gantt-parent-bar-radius: 8px;\n --gantt-parent-ear-depth: 6px;\n --gantt-parent-ear-width: 8px;\n --gantt-parent-row-bg: #eeedfb;\n --gantt-divider-grid-color: #d4bceb;\n /* --gantt-parent-row-bg: #f2ebf9; */\n}\n\n/* Remove browser default focus outlines for all gantt elements */\n.gantt-container *:focus,\n.gantt-container *:focus-visible {\n outline: none;\n}\n\n/* Prevent text selection by cursor inside the gantt chart */\n.gantt-container * {\n user-select: none;\n}","/**\n * TimeScaleHeader Component Styles - Two-row header layout\n */\n\n.gantt-tsh-header {\n display: flex;\n flex-direction: column;\n background-color: var(--gantt-cell-background);\n /* border-bottom: var(--gantt-week-separator-width, 1px) solid var(--gantt-week-separator-color, #374151); */\n border-bottom: none;\n box-sizing: border-box;\n}\n\n/* Month row (top row) */\n.gantt-tsh-monthRow {\n display: flex;\n border-bottom: var(--gantt-day-line-width, 1px) solid var(--gantt-day-line-color, #f3f4f6);\n align-items: center;\n}\n\n.gantt-tsh-monthCell {\n box-sizing: border-box;\n padding: 0.1rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #1f2937;\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n/* Day row (bottom row) */\n.gantt-tsh-dayRow {\n display: grid;\n box-sizing: border-box;\n}\n\n.gantt-tsh-dayCell {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n/* Separator divs — absolutely positioned, pixel-aligned with GridBackground.\n top/bottom/height set via inline style per separator (fullHeight vs row-2-only). */\n.gantt-tsh-separator {\n position: absolute;\n width: 1px;\n background-color: var(--gantt-week-separator-color, #e5e7eb);\n pointer-events: none;\n z-index: 1;\n}\n\n.gantt-tsh-separator--thick {\n background-color: var(--gantt-month-separator-color, #a1a1a1);\n}\n\n.gantt-tsh-dayLabel {\n font-size: 0.75rem;\n font-weight: 500;\n color: #374151;\n}\n\n.gantt-tsh-weekendDay {\n background-color: var(--gantt-weekend-background, #fef3f2);\n}\n\n.gantt-tsh-weekendDay .gantt-tsh-dayLabel {\n color: #ef4444;\n}\n\n.gantt-tsh-today {\n background-color: #dc2626;\n border-radius: 4px 4px 4px 0;\n}\n\n.gantt-tsh-today .gantt-tsh-dayLabel {\n color: #ffffff;\n}\n\n/* Week-view cell in day row (wider 7-day column) */\n.gantt-tsh-weekCell {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding-left: 0.5rem;\n box-sizing: border-box;\n}","/**\n * TaskRow Component Styles\n */\n\n:root {\n --gantt-task-bar-border-radius: 6px;\n}\n\n.gantt-tr-row {\n position: relative;\n width: 100%;\n border-bottom: 1px solid var(--gantt-grid-line-color);\n box-sizing: border-box;\n}\n\n.gantt-tr-row.gantt-tr-row-filter-match {\n background-color: rgba(250, 204, 21, 0.24);\n}\n\n.gantt-tr-row:hover {\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tr-row.gantt-tr-row-filter-match:hover {\n background-color: rgba(250, 204, 21, 0.3);\n}\n\n.gantt-tr-taskBar {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: var(--gantt-task-bar-border-radius);\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n transition: box-shadow 0.15s ease;\n cursor: grab;\n}\n\n/**\n * Hover state - provides smooth visual feedback\n * Transition disabled during drag (see .gantt-tr-taskBar.gantt-tr-dragging)\n */\n.gantt-tr-taskBar:hover {\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n}\n\n/**\n * Dragging state - disables all transitions for performance\n *\n * CRITICAL: transition: none !important is required to override the\n * default box-shadow transition on .gantt-tr-taskBar. Without this, CSS transitions\n * during drag cause lag/ghosting and break the 60fps performance target.\n *\n * Per research anti-pattern: \"Using CSS transitions during drag causes lag/ghosting.\"\n */\n.gantt-tr-taskBar.gantt-tr-dragging {\n cursor: grabbing;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n opacity: 1;\n transition: none !important;\n}\n\n.gantt-tr-taskDuration {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-right: 4px;\n}\n\n.gantt-tr-rightLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabelRight {\n position: static;\n margin-right: 0;\n}\n\n.gantt-tr-externalTaskName {\n font-size: 0.9rem;\n font-weight: 500;\n color: #2563eb;\n white-space: nowrap;\n user-select: none;\n}\n\n.gantt-tr-resizeHandle {\n position: absolute;\n top: 0;\n width: 20px;\n height: 100%;\n cursor: ew-resize;\n pointer-events: auto;\n z-index: 10;\n}\n\n.gantt-tr-resizeHandleLeft {\n left: 0;\n}\n\n.gantt-tr-resizeHandleRight {\n right: 0;\n}\n\n.gantt-tr-resizeZoneLeft {\n cursor: ew-resize;\n}\n\n.gantt-tr-resizeZoneRight {\n cursor: ew-resize;\n}\n\n.gantt-tr-taskContainer {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.gantt-tr-leftLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabel {\n font-size: 0.85rem;\n color: #6b7280;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n.gantt-tr-dateLabelLeft {\n position: absolute;\n right: 100%;\n margin-right: 6px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Extra margin when lock icon is present */\n.gantt-tr-leftLabels-locked .gantt-tr-dateLabelLeft {\n margin-right: 22px;\n}\n\n/* Progress bar overlay */\n.gantt-tr-progressBar {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n z-index: 1;\n pointer-events: none;\n border-radius: var(--gantt-task-bar-border-radius) 0 0 var(--gantt-task-bar-border-radius);\n transition: width 0.3s ease;\n}\n\n/* Ensure text stays above progress bar.\n NOTE: .gantt-tr-resizeHandle is intentionally excluded here because it already\n uses position: absolute with z-index: 10, which places it above the progress bar.\n Adding position: relative here would override position: absolute and break the\n absolute positioning that anchors handles to the bar edges. */\n.gantt-tr-taskDuration {\n position: relative;\n z-index: 2;\n}\n\n/* Disable transition during drag */\n.gantt-tr-taskBar.gantt-tr-dragging .gantt-tr-progressBar {\n transition: none !important;\n}\n\n/* Progress text inside task bar */\n.gantt-tr-progressText {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-left: 4px;\n position: relative;\n z-index: 2;\n}\n\n/* Progress text outside task bar (before task name) */\n.gantt-tr-externalProgress {\n font-size: 0.85rem;\n font-weight: 500;\n color: #6b7280;\n white-space: nowrap;\n}\n\n/* Duration text outside task bar (before progress and task name) */\n.gantt-tr-externalDuration {\n font-size: 0.875rem;\n font-weight: 600;\n color: #374151;\n white-space: nowrap;\n}\n\n/* Locked task bar state — consumer CSS override point */\n.gantt-tr-taskBar.gantt-tr-locked {\n cursor: not-allowed;\n}\n\n/* Divider line for visual grouping of task sets */\n.gantt-tr-divider {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-top: 1px solid var(--gantt-divider-grid-color, #d4bceb);\n pointer-events: none;\n z-index: 0;\n}\n\n.gantt-tr-divider-top {\n top: 0;\n}\n\n.gantt-tr-divider-bottom {\n bottom: 0;\n}\n\n/* ============================================================================\n Parent Task Bar Styles (Phase 19)\n ============================================================================ */\n\n/* Parent task bar - MS Project bracket style */\n.gantt-tr-parentBar {\n background-color: var(--gantt-parent-bar-color, #333333);\n height: var(--gantt-parent-bar-height, 14px) !important;\n border-radius: var(--gantt-parent-bar-radius, 8px) var(--gantt-parent-bar-radius, 8px) 0 0;\n position: relative;\n overflow: visible;\n /* Allow trapezoid ears to extend below the bar */\n /* Center the entire shape (bar + ears) vertically */\n /* Total height = 14px (bar) + 8px (ears) = 22px, midpoint at 11px from top */\n top: calc(50% - 20px);\n transform: none;\n}\n\n/* Trapezoid ears for bracket appearance */\n.gantt-tr-parentBar::before,\n.gantt-tr-parentBar::after {\n content: \"\";\n position: absolute;\n top: calc(var(--gantt-parent-bar-height, 14px) - 1px);\n height: var(--gantt-parent-ear-depth, 8px);\n width: var(--gantt-parent-ear-width, 10px);\n background-color: var(--gantt-parent-bar-color, #333333);\n}\n\n.gantt-tr-parentBar::before {\n left: 0;\n clip-path: polygon(0 0, 100% 0, 60% 100%, 0 100%);\n}\n\n.gantt-tr-parentBar::after {\n right: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 40% 100%);\n}\n","/**\n * TodayIndicator Component Styles\n */\n\n.gantt-ti-indicator {\n position: absolute;\n top: -1px;\n bottom: 0;\n z-index: 0;\n pointer-events: none;\n}",".gantt-gb-gridBackground {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n pointer-events: none;\n}\n\n.gantt-gb-weekendBlock {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-weekend-background, #fee2e2);\n}\n\n.gantt-gb-gridLine {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n\n.gantt-gb-monthSeparator {\n width: var(--gantt-month-separator-width, 2px);\n background-color: var(--gantt-month-separator-color, #374151);\n}\n\n.gantt-gb-weekSeparator {\n width: var(--gantt-week-separator-width, 1px);\n background-color: var(--gantt-week-separator-color, #d1d5db);\n}\n\n.gantt-gb-dayLine {\n width: var(--gantt-day-line-width, 1px);\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n",".gantt-dgl-guideLine {\n position: absolute;\n top: 0;\n width: 2px;\n background-color: var(--gantt-drag-guide-line-color, #3b82f6);\n z-index: 20;\n pointer-events: none;\n opacity: 0.6;\n}\n","/* SVG overlay for dependency lines */\n.gantt-dependencies-svg {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n /* Allow clicks to pass through to task bars */\n overflow: visible;\n}\n\n/* Dependency line path */\n.gantt-dependency-path {\n fill: none;\n stroke: var(--gantt-dependency-line-color, #666666);\n stroke-width: 1;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Virtual dependency lines (for hidden tasks inside collapsed parents) */\n.gantt-dependency-virtual {\n stroke-dasharray: 4 2;\n opacity: 0.6;\n}\n\n/* Circular dependency highlighting */\n.gantt-dependency-cycle {\n stroke: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Selected dependency highlighting */\n.gantt-dependency-selected {\n stroke: #ef4444;\n stroke-width: 2;\n}\n\n/* Arrow markers */\n.gantt-dependency-arrow polygon {\n fill: var(--gantt-dependency-line-color, #666666);\n}\n\n.gantt-dependency-arrow-cycle polygon {\n fill: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Lag label styling */\n.gantt-dependency-lag-label {\n font-size: 10px;\n font-weight: 500;\n pointer-events: none;\n user-select: none;\n opacity: 0.85;\n}","/**\n * TaskList Component Styles\n * Sticky positioned in flex container - stays at left edge during horizontal scroll\n * Always rendered in DOM for stable positioning, visibility controlled via prop\n */\n\n.gantt-tl-overlay {\n position: sticky;\n left: 0;\n top: 0;\n z-index: 15;\n background-color: var(--gantt-cell-background, #ffffff);\n border-right: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n pointer-events: auto;\n width: var(--tasklist-width, 640px);\n min-width: var(--tasklist-width, 640px);\n}\n\n.gantt-tl-overlay.gantt-tl-overlay-shadowed {\n box-shadow: 10px 0 18px -14px rgba(15, 23, 42, 0.45);\n}\n\n/* Hidden state - animated slide out while preserving layout */\n.gantt-tl-overlay.gantt-tl-hidden {\n opacity: 0;\n visibility: hidden;\n transform: translateX(-100%);\n pointer-events: none;\n width: 0 !important;\n min-width: 0 !important;\n overflow: hidden;\n}\n\n.gantt-tl-overlay {\n transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease, width 0.25s ease, min-width 0.25s ease;\n}\n\n.gantt-tl-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 640px;\n}\n\n/* Header row - sticky during vertical scroll */\n.gantt-tl-header {\n position: sticky;\n top: 0;\n display: flex;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n z-index: 5;\n}\n\n.gantt-tl-headerCell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n}\n\n.gantt-tl-headerCell:last-child {\n border-right: none;\n}\n\n/* Body container */\n.gantt-tl-body {\n display: flex;\n flex-direction: column;\n}\n\n/* Data rows */\n.gantt-tl-row {\n display: flex;\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n}\n\n.gantt-tl-row-filter-match {\n background-color: rgba(250, 204, 21, 0.24);\n}\n\n.gantt-tl-row:hover {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.04);\n}\n\n.gantt-tl-row-filter-match:hover {\n box-shadow: inset 0 0 0 9999px rgba(250, 204, 21, 0.3);\n}\n\n.gantt-tl-row-selected {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.08);\n}\n\n.gantt-tl-row-dependency-selected {\n box-shadow: inset 0 0 0 9999px rgba(5, 150, 105, 0.12);\n}\n\n.gantt-tl-row-dependency-selected:hover {\n box-shadow: inset 0 0 0 9999px rgba(5, 150, 105, 0.16);\n}\n\n.gantt-tl-row-dependency-owner {\n box-shadow: inset 0 0 0 9999px rgba(37, 99, 235, 0.12);\n}\n\n.gantt-tl-row-dependency-owner:hover {\n box-shadow: inset 0 0 0 9999px rgba(37, 99, 235, 0.16);\n}\n\n/* Hierarchy row styles */\n.gantt-tl-row-child {\n padding-left: 0;\n}\n\n\n.gantt-tl-row-parent {\n font-weight: 600;\n /* background-color: var(--gantt-parent-row-bg, #f2ebf9); */\n}\n\n/* Bold dates in parent rows */\n.gantt-tl-row-parent .gantt-datepicker-trigger {\n font-weight: 600;\n}\n\n.gantt-tl-collapse-btn {\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n width: 18px;\n height: 18px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-text-color, #374151);\n padding: 0;\n transition: background-color 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:hover {\n background-color: transparent;\n}\n\n.gantt-tl-collapse-btn svg {\n transition: transform 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:not(.gantt-tl-collapse-btn-collapsed) svg {\n transform: rotate(90deg);\n}\n\n/* Cells */\n.gantt-tl-cell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n font-size: 0.85rem;\n color: #374151;\n}\n\n.gantt-tl-cell:last-child {\n border-right: none;\n}\n\n.gantt-tl-cell-number {\n width: 32px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0;\n padding: 0 2px 0 6px;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n}\n\n/* Drag handle (hidden by default, reveal on row hover) */\n.gantt-tl-drag-handle {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding-left: 8px;\n cursor: grab;\n color: #9ca3af;\n visibility: hidden;\n user-select: none;\n background: transparent;\n}\n\n.gantt-tl-row:hover .gantt-tl-drag-handle,\n.gantt-tl-row-dragging .gantt-tl-drag-handle {\n visibility: visible;\n}\n\n.gantt-tl-row:hover .gantt-tl-num-label {\n visibility: hidden;\n}\n\n.gantt-tl-num-label {\n font-size: 0.75rem;\n opacity: 0.45;\n}\n\n.gantt-tl-drag-handle:active {\n cursor: grabbing;\n}\n\n/* Dragging row (semi-transparent background, blue text) */\n.gantt-tl-row-dragging {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-row-dragging .gantt-tl-cell,\n.gantt-tl-row-dragging .gantt-tl-name-trigger,\n.gantt-tl-row-dragging .gantt-tl-num-label {\n color: #3b82f6 !important;\n}\n\n/* Drop target indicator (blue top border) - uses ::before to avoid layout shift */\n.gantt-tl-row-drag-over {\n position: relative;\n}\n\n.gantt-tl-row-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n z-index: 1;\n}\n\n/* Navigate icon removed - single click on task name now selects row */\n\n/* Restore left padding for the name column header */\n.gantt-tl-headerCell.gantt-tl-cell-name {\n padding-left: 4px;\n}\n\n/* Name cell — overflow visible so overlay input can extend past boundaries */\n.gantt-tl-cell-name {\n flex: 1;\n min-width: 160px;\n position: relative;\n overflow: visible;\n align-items: center;\n padding: 0 4px;\n /* add right padding for button space */\n}\n\n/* Date cell — relative for transparent picker overlay */\n.gantt-tl-cell-date {\n width: 68px;\n justify-content: center;\n flex-shrink: 0;\n position: relative;\n padding: 0;\n}\n\n/* Duration cell */\n.gantt-tl-cell-duration {\n width: 46px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n/* Progress cell */\n.gantt-tl-cell-progress {\n width: 56px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n.gantt-tl-number-editor {\n position: absolute;\n inset: 0;\n}\n\n.gantt-tl-number-input {\n width: 100%;\n height: 100%;\n padding: 0 18px 0 6px;\n border-width: 1px;\n border-color: #93c5fd;\n border-radius: 8px;\n text-align: left;\n font-size: 0.8rem;\n line-height: 1;\n box-shadow: 0 0 0 1px rgba(147, 197, 253, 0.35);\n}\n\n.gantt-tl-number-input::-webkit-outer-spin-button,\n.gantt-tl-number-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-number-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.gantt-tl-number-steppers {\n position: absolute;\n top: 2px;\n right: 2px;\n bottom: 2px;\n width: 14px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.gantt-tl-number-stepper {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 5px;\n background: rgba(248, 250, 252, 0.95);\n color: #64748b;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.gantt-tl-number-stepper:hover {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.gantt-tl-number-stepper:active {\n background: #bfdbfe;\n}\n\n/* Full-cell button trigger for name edit */\n.gantt-tl-name-trigger {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n position: absolute;\n inset: 0;\n padding: 0 4px;\n /* match parent cell padding so text stays visually aligned */\n font-size: 0.8rem;\n line-height: 1.2;\n font-family: inherit;\n font-weight: inherit;\n color: #374151;\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: left;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n box-sizing: border-box;\n}\n\n.gantt-tl-name-trigger-parent {\n padding-left: 26px;\n}\n\n.gantt-tl-name-trigger-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-trigger:hover,\n.gantt-tl-name-trigger:active {\n background-color: transparent;\n}\n\n/* Name edit — Input component used as floating overlay */\n.gantt-tl-name-input {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n min-width: 520px;\n width: 100%;\n border-width: 2px;\n border-color: #3b82f6;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n white-space: nowrap;\n}\n\n.gantt-tl-name-input-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-input:focus {\n box-shadow: 0 2px 10px rgba(59, 130, 246, 0.3);\n}\n\n/* Locked task name — cursor indicates no editing */\n.gantt-tl-name-locked {\n cursor: default !important;\n}\n\n/* Name cell action buttons container */\n.gantt-tl-name-actions {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n/* Name cell action buttons — hover-reveal */\n.gantt-tl-name-action-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 4px;\n width: 20px;\n height: 20px;\n padding: 0;\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n/* Reveal buttons on row hover (any part of the row) */\n.gantt-tl-row:hover .gantt-tl-name-action-btn {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hierarchy action buttons (promote/demote) */\n.gantt-tl-action-buttons {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n pointer-events: none;\n}\n\n.gantt-tl-row:hover .gantt-tl-action-buttons {\n opacity: 1;\n pointer-events: auto;\n}\n\n.gantt-tl-action-btn {\n padding: 2px 8px;\n font-size: 11px;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background: white;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.gantt-tl-action-btn:hover {\n background: var(--gantt-cell-background, #f9fafb);\n border-color: var(--gantt-primary-color, #3b82f6);\n}\n\n.gantt-tl-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Dependencies column — header and data cells */\n.gantt-tl-cell-deps {\n width: 90px;\n flex-shrink: 0;\n flex-wrap: wrap;\n gap: 4px;\n padding: 2px 4px;\n align-items: center;\n overflow: visible;\n position: relative;\n}\n\n/* Insert button styling (blue) */\n.gantt-tl-action-insert {\n background-color: #3b82f6;\n color: white;\n}\n\n.gantt-tl-action-insert:hover {\n background-color: #2563eb;\n}\n\n/* Delete button styling (red) */\n.gantt-tl-action-delete {\n background-color: #ef4444;\n color: white;\n}\n\n.gantt-tl-action-delete:hover {\n background-color: #dc2626;\n}\n\n/* Delete button confirmation state */\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm {\n min-width: 60px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n}\n\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm:hover {\n background-color: #b91c1c;\n}\n\n/* Single hierarchy button with directional arrow */\n.gantt-tl-action-hierarchy {\n width: 20px;\n height: 20px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #4b5563;\n color: white;\n}\n\n.gantt-tl-action-hierarchy:hover {\n background-color: #374151;\n}\n\n/* Type switcher button in header */\n.gantt-tl-dep-type-trigger {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-type-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n}\n\n.gantt-tl-dep-type-trigger:not(:disabled):hover {\n color: #3b82f6;\n}\n\n/* Dropdown option buttons inside Popover */\n.gantt-tl-dep-type-menu {\n display: flex;\n flex-direction: column;\n padding: 4px;\n min-width: 180px;\n}\n\n.gantt-tl-dep-type-option {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 4px 8px;\n font-size: 0.8rem;\n font-family: inherit;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #374151;\n}\n\n.gantt-tl-dep-type-option:hover {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.gantt-tl-dep-type-option.active {\n background-color: rgba(59, 130, 246, 0.2);\n font-weight: 600;\n color: #1d4ed8;\n}\n\n/* Dependency chip — clickable to select and trigger predecessor-side delete */\n.gantt-tl-dep-chip {\n display: inline-flex;\n align-items: center;\n gap: 1px;\n background-color: rgba(59, 130, 246, 0.12);\n /* border: 1px solid rgba(59, 130, 246, 0.3); */\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #1d4ed8;\n white-space: nowrap;\n line-height: 14px;\n cursor: pointer;\n min-width: 42px;\n justify-content: center;\n}\n\n/* Selected chip visual highlight — inverted */\n.gantt-tl-dep-chip-selected {\n background-color: #2563eb;\n border-color: #2563eb;\n color: #fff;\n font-weight: 600;\n}\n\n/* Chip + trash button wrapper — keeps chip and delete button visually inline */\n.gantt-tl-dep-chip-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Inline trash button — hidden by default, shown only when chip is selected */\n.gantt-tl-dep-chip-trash {\n display: none;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n background: #ef4444;\n border: none;\n border-radius: 3px;\n padding: 0 4px;\n cursor: pointer;\n color: #fff;\n flex-shrink: 0;\n line-height: 0;\n}\n\n/* Show trash only when chip is selected */\n.gantt-tl-dep-chip-wrapper:has(.gantt-tl-dep-chip-selected) .gantt-tl-dep-chip-trash {\n display: inline-flex;\n}\n\n.gantt-tl-dep-chip-trash:hover {\n background-color: #dc2626;\n}\n\n/* Dep chip info popover — human-readable dependency description on click */\n.gantt-tl-dep-info-popover {\n font-size: 0.75rem;\n color: #374151;\n padding: 6px 10px !important;\n max-width: 260px;\n line-height: 1.4;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.gantt-tl-dep-info-prefix {\n color: #6b7280;\n}\n\n.gantt-tl-dep-info-name {\n font-weight: 500;\n color: #111827;\n white-space: normal;\n word-break: break-word;\n}\n\n/* Dep edit popover — interactive lag counter and delete button */\n.gantt-tl-dep-edit-popover {\n font-size: 0.85rem;\n color: #374151;\n padding: 10px 12px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 200px;\n}\n\n.gantt-tl-dep-edit-row {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.gantt-tl-dep-edit-label {\n min-width: 8em;\n}\n\n.gantt-tl-dep-edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n background: #f9fafb;\n cursor: pointer;\n color: #374151;\n padding: 0;\n line-height: 1;\n}\n\n.gantt-tl-dep-edit-btn:hover {\n background: #e5e7eb;\n}\n\n\n.gantt-tl-dep-edit-input {\n width: 56px;\n text-align: center;\n background: rgba(59, 130, 246, 0.1);\n border: 1px solid rgba(59, 130, 246, 0.3);\n border-radius: 4px;\n padding: 2px 4px;\n color: #1d4ed8;\n -moz-appearance: textfield;\n}\n\n.gantt-tl-dep-edit-input::-webkit-outer-spin-button,\n.gantt-tl-dep-edit-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-dep-edit-input:focus {\n outline: none;\n border-color: rgba(59, 130, 246, 0.6);\n background: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-dep-edit-input::placeholder {\n color: #1d4ed8;\n opacity: 0.7;\n font-style: italic;\n}\n\n.gantt-tl-dep-edit-task {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n margin-bottom: 6px;\n}\n\n.gantt-tl-dep-edit-pred {\n font-weight: 500;\n color: #111827;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n margin-top: 8px;\n margin-bottom: 10px;\n}\n\n.gantt-tl-dep-edit-divider {\n border: none;\n border-top: 1px solid #e5e7eb;\n margin: 2px 0;\n}\n\n.gantt-tl-dep-edit-delete {\n display: flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: #ef4444;\n cursor: pointer;\n padding: 4px 0;\n font-size: 0.8rem;\n font-family: inherit;\n}\n\n.gantt-tl-dep-edit-delete:hover {\n color: #dc2626;\n text-decoration: underline;\n}\n\n/* Actions container for delete + close buttons */\n.gantt-tl-dep-edit-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.gantt-tl-dep-edit-close {\n display: flex;\n align-items: center;\n background: none;\n border: none;\n padding: 4px 0;\n font-size: 0.8rem;\n font-family: inherit;\n color: #6b7280;\n cursor: pointer;\n}\n\n.gantt-tl-dep-edit-close:hover {\n color: #374151;\n text-decoration: underline;\n}\n\n/* Summary chip: \"N связей\" — shown when 2+ deps */\n.gantt-tl-dep-summary-chip {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.12);\n border: 0px solid rgba(107, 114, 128, 0.3);\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n min-width: 32px;\n justify-content: center;\n}\n\n.gantt-tl-dep-summary-chip:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n border-color: rgba(59, 130, 246, 0.3);\n}\n\n/* \"+N ещё\" overflow button */\n.gantt-tl-dep-overflow-trigger {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.1);\n border: 1px solid rgba(107, 114, 128, 0.25);\n border-radius: 4px;\n padding: 1px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-overflow-trigger:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n}\n\n/* Overflow popover content — list of all deps */\n.gantt-tl-dep-overflow-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 8px;\n min-width: 140px;\n}\n\n.gantt-tl-dep-overflow-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-size: 0.8rem;\n color: #374151;\n}\n\n/* \"+\" add dependency button */\n.gantt-tl-dep-add {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 0px solid rgba(59, 130, 246, 0.4);\n background-color: rgba(59, 130, 246, 0.12);\n border-radius: 4px;\n width: 30px;\n height: 23px;\n font-size: 0.9rem;\n color: #3b82f6;\n cursor: pointer;\n padding: 0;\n font-family: inherit;\n flex-shrink: 0;\n}\n\n/* Hover-reveal variant for dep add button */\n.gantt-tl-dep-add-hover {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.gantt-tl-row:hover .gantt-tl-dep-add-hover {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hide add button when a chip is selected (to avoid clutter with delete button) */\n.gantt-tl-dep-add-hidden {\n display: none !important;\n}\n\n.gantt-tl-dep-add:hover {\n background-color: rgba(59, 130, 246, 0.1);\n border-color: #3b82f6;\n}\n\n/* Picker mode: «Связи» cell on all rows becomes a selection target */\n.gantt-tl-row-picking .gantt-tl-cell-deps {\n cursor: crosshair;\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tl-row-picking .gantt-tl-cell-deps:hover {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n/* Picker mode: current task's own row — clickable to cancel */\n.gantt-tl-row-picking-self .gantt-tl-cell-deps {\n cursor: pointer;\n}\n\n/* Placeholder text shown in source row's deps cell while picking a predecessor */\n.gantt-tl-dep-source-hint {\n font-size: 0.75rem;\n color: #6b7280;\n font-style: italic;\n white-space: normal;\n}\n\n.gantt-tl-dep-source-picker {\n position: absolute;\n top: -80px;\n left: calc(100% + 8px);\n z-index: 20;\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 280px;\n max-width: 280px;\n padding: 12px 10px 10px;\n border: none;\n border-radius: 10px;\n background: #ffffff;\n box-shadow: 0 18px 40px rgba(15, 23, 42, 0.28);\n}\n\n.gantt-tl-dep-source-direction {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 4px;\n}\n\n.gantt-tl-dep-source-direction-btn {\n border: none;\n border-radius: 8px;\n background: transparent;\n color: #111827;\n padding: 6px 8px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n}\n\n.gantt-tl-dep-source-direction-btn:hover {\n background: rgba(59, 130, 246, 0.08);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-direction-btn-active,\n.gantt-tl-dep-source-direction-btn-active:hover {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n font-weight: 600;\n}\n\n.gantt-tl-dep-source-types {\n display: grid;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 4px;\n}\n\n.gantt-tl-dep-source-type-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n min-width: 0;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: #111827;\n padding: 6px 4px;\n cursor: pointer;\n font-size: 0.7rem;\n font-family: inherit;\n}\n\n.gantt-tl-dep-source-type-btn:hover {\n color: #1d4ed8;\n background: rgba(59, 130, 246, 0.08);\n}\n\n.gantt-tl-dep-source-type-btn-active {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n font-weight: 600;\n}\n\n.gantt-tl-dep-source-type-btn-active:hover {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-type-btn span {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.gantt-tl-dep-source-picker-head {\n display: flex;\n align-items: center;\n}\n\n.gantt-tl-dep-source-input {\n width: 100%;\n min-width: 0;\n height: 34px;\n padding: 0 10px;\n border: 1px solid rgba(59, 130, 246, 0.25);\n border-radius: 6px;\n background: #ffffff;\n font-size: 0.82rem;\n font-family: inherit;\n color: #111827;\n}\n\n.gantt-tl-dep-source-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);\n}\n\n.gantt-tl-dep-source-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-height: 164px;\n overflow-y: auto;\n}\n\n.gantt-tl-dep-source-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: #1f2937;\n text-align: left;\n padding: 6px 8px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n}\n\n.gantt-tl-dep-source-option-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.gantt-tl-dep-source-option:hover,\n.gantt-tl-dep-source-option-active {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-option-linked {\n background: rgba(16, 185, 129, 0.12);\n color: #047857;\n}\n\n.gantt-tl-dep-source-option-linked:hover,\n.gantt-tl-dep-source-option-linked.gantt-tl-dep-source-option-active {\n color: #047857;\n background: rgba(16, 185, 129, 0.14);\n}\n\n.gantt-tl-dep-source-option-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-left: 8px;\n border: none;\n border-radius: 999px;\n background: transparent;\n color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.gantt-tl-dep-source-option-linked:hover .gantt-tl-dep-source-option-remove,\n.gantt-tl-dep-source-option-linked.gantt-tl-dep-source-option-active .gantt-tl-dep-source-option-remove {\n color: #dc2626;\n}\n\n.gantt-tl-dep-source-option-remove:hover {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n/* Predecessor cell full-replacement: \"Зависит от [name]\" → hover → \"Удалить\" */\n.gantt-tl-dep-delete-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n background: #059669;\n border: none;\n border-radius: 4px;\n padding: 2px 4px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.gantt-tl-dep-delete-label:hover {\n background: #dc2626;\n}\n\n.gantt-tl-dep-delete-label-default {\n display: inline;\n pointer-events: none;\n}\n\n.gantt-tl-dep-delete-label-hover {\n display: none;\n color: #fff;\n font-weight: 600;\n pointer-events: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-default {\n display: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-hover {\n display: inline;\n}\n\n/* Cycle error banner below header */\n.gantt-tl-dep-error {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: #fef2f2;\n border: 1px solid #fca5a5;\n border-top: none;\n padding: 4px 8px;\n font-size: 0.75rem;\n color: #dc2626;\n z-index: 10;\n white-space: nowrap;\n}\n\n/* Add task button */\n.gantt-tl-add-btn {\n width: 100%;\n padding: 6px 12px;\n text-align: left;\n background: transparent;\n border: none;\n /* border-top: 1px dashed var(--gantt-grid-line-color, #e0e0e0); */\n cursor: pointer;\n font-size: 12px;\n color: var(--gantt-text-muted, #9ca3af);\n transition: background 0.15s ease, color 0.15s ease;\n font-family: inherit;\n}\n\n.gantt-tl-add-btn:hover {\n background: var(--gantt-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--gantt-text-color, #374151);\n}\n\n/* Blue top border when dragging over the add button */\n.gantt-tl-add-btn-drag-over {\n position: relative;\n background: rgba(59, 130, 246, 0.08);\n color: #3b82f6;\n}\n\n.gantt-tl-add-btn-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n}\n\n.gantt-tl-cell-new-name {\n padding: 2px 4px;\n}\n",".gantt-container {\n width: 100%;\n font-family: var(--gantt-font-family, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background-color: var(--gantt-cell-background, #ffffff);\n border-radius: var(--gantt-container-border-radius, 10px);\n overflow: hidden;\n}\n\n.gantt-scrollContainer {\n overflow: auto;\n position: relative;\n}\n\n/* Wrapper for horizontal scroll content - keeps TaskList and chart together */\n.gantt-scrollContent {\n display: flex;\n min-width: min-content;\n}\n\n.gantt-stickyHeader {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n}\n\n.gantt-taskArea {\n position: relative;\n background-color: var(--gantt-cell-background, #ffffff);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/components/ui/ui.css","../src/styles.css","../src/components/TimeScaleHeader/TimeScaleHeader.css","../src/components/TaskRow/TaskRow.css","../src/components/TodayIndicator/TodayIndicator.css","../src/components/GridBackground/GridBackground.css","../src/components/DragGuideLines/DragGuideLines.css","../src/components/DependencyLines/DependencyLines.css","../src/components/TaskList/TaskList.css","../src/components/GanttChart/GanttChart.css"],"sourcesContent":["/* =========================================================\n * UI Components CSS — gantt-lib theming\n * All classes use gantt- prefix to avoid collisions\n * ========================================================= */\n\n/* CSS Variables for UI components */\n:root {\n --gantt-input-bg: #ffffff;\n --gantt-input-border: #d1d5db;\n --gantt-input-focus-ring: rgba(59, 130, 246, 0.5);\n --gantt-input-text: #1f2937;\n --gantt-input-placeholder: #9ca3af;\n --gantt-input-radius: 6px;\n\n --gantt-popover-bg: #ffffff;\n --gantt-popover-border: #e5e7eb;\n --gantt-popover-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n --gantt-calendar-day-hover: #f3f4f6;\n --gantt-calendar-day-selected: #3b82f6;\n --gantt-calendar-day-selected-text: #ffffff;\n --gantt-calendar-day-today-bg: #eff6ff;\n --gantt-calendar-day-today-color: #1d4ed8;\n --gantt-calendar-day-outside-color: #d1d5db;\n --gantt-calendar-day-disabled-color: #d1d5db;\n\n --gantt-calendar-bg: #ffffff;\n --gantt-calendar-text: #1f2937;\n --gantt-calendar-text-weekend: #ef4444;\n --gantt-calendar-text-muted: #9ca3af;\n --gantt-calendar-day-today-border: #3b82f6;\n --gantt-calendar-day-range: #dbeafe;\n --gantt-calendar-day-disabled-text: #d1d5db;\n}\n\n/* =========================================================\n * Input\n * ========================================================= */\n\n.gantt-input {\n display: flex;\n height: 32px;\n width: 100%;\n border-radius: var(--gantt-input-radius);\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n transition: border-color 150ms, box-shadow 150ms;\n box-sizing: border-box;\n}\n\n.gantt-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-input::placeholder {\n color: var(--gantt-input-placeholder);\n}\n\n.gantt-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Button\n * ========================================================= */\n\n.gantt-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 0.875rem;\n font-family: inherit;\n font-weight: 500;\n padding: 0 12px;\n height: 32px;\n cursor: pointer;\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n color: var(--gantt-input-text);\n transition: background-color 100ms, box-shadow 100ms;\n user-select: none;\n}\n\n.gantt-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Ghost variant */\n.gantt-btn-ghost {\n background-color: transparent;\n border-color: transparent;\n}\n\n.gantt-btn-ghost:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n/* Outline variant */\n.gantt-btn-outline {\n background-color: transparent;\n}\n\n/* Icon size */\n.gantt-btn-icon {\n width: 28px;\n height: 28px;\n padding: 0;\n}\n\n/* Small size */\n.gantt-btn-sm {\n height: 26px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n/* =========================================================\n * Popover\n * ========================================================= */\n\n.gantt-popover {\n font-family: var(--gantt-font-family);\n background: var(--gantt-popover-bg);\n border: 1px solid var(--gantt-popover-border);\n border-radius: 8px;\n box-shadow: var(--gantt-popover-shadow);\n padding: 4px;\n z-index: 1000;\n outline: none;\n animation: gantt-popover-in 120ms ease-out;\n}\n\n@keyframes gantt-popover-in {\n from {\n opacity: 0;\n transform: scale(0.97) translateY(-4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* =========================================================\n * DatePicker trigger button\n * ========================================================= */\n\n.gantt-datepicker-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: center;\n user-select: none;\n}\n\n.gantt-datepicker-trigger:hover {\n background-color: transparent;\n border-radius: 0;\n}\n\n.gantt-datepicker-trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n border-radius: 2px;\n}\n\n.gantt-datepicker-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Calendar — custom scrollable (gantt-cal-* / gantt-day-btn)\n * ========================================================= */\n\n.gantt-cal-container {\n max-height: 280px;\n overflow-y: auto;\n user-select: none;\n padding: 8px;\n font-family: inherit;\n background: var(--gantt-calendar-bg);\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month {\n margin-bottom: 16px;\n}\n\n.gantt-cal-month-header {\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 600;\n padding: 4px 0 8px;\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month-days {\n display: grid;\n grid-template-columns: repeat(7, 32px);\n gap: 2px;\n}\n\n.gantt-cal-empty-day {\n width: 32px;\n height: 32px;\n}\n\n.gantt-cal-weekday {\n width: 32px;\n height: 24px;\n font-size: 0.75rem;\n font-family: inherit;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn {\n width: 32px;\n height: 32px;\n font-size: 0.875rem;\n font-family: inherit;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n color: var(--gantt-calendar-text);\n transition: background-color 100ms;\n}\n\n.gantt-day-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-day-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-day-btn.today {\n border-color: var(--gantt-calendar-day-today-border);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected {\n background-color: var(--gantt-calendar-day-selected);\n color: var(--gantt-calendar-day-selected-text);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected:hover {\n background-color: var(--gantt-calendar-day-selected);\n opacity: 0.9;\n}\n\n.gantt-day-btn.weekend:not(.selected) {\n color: var(--gantt-calendar-text-weekend);\n}\n\n.gantt-day-btn.past:not(.selected) {\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn.past.weekend:not(.selected) {\n color: #fca5a5;\n}\n\n.gantt-day-btn.disabled {\n color: var(--gantt-calendar-day-disabled-text);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.gantt-day-btn.disabled:hover {\n background: transparent;\n}\n\n/* =========================================================\n * DatePicker inline date input\n * ========================================================= */\n\n.gantt-datepicker-input-row {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 8px;\n border-bottom: 1px solid var(--gantt-input-border);\n}\n\n.gantt-datepicker-date-input {\n width: 90px;\n flex-shrink: 0;\n font-family: inherit;\n font-size: 0.875rem;\n font-variant-numeric: tabular-nums;\n background: transparent;\n border: 1px solid var(--gantt-input-border);\n border-radius: 4px;\n outline: none;\n color: var(--gantt-input-text);\n cursor: default;\n letter-spacing: 0.05em;\n text-align: center;\n height: 28px;\n padding: 0 4px;\n}\n\n.gantt-datepicker-date-input:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n\n.gantt-datepicker-date-input::selection {\n background: rgba(59, 130, 246, 0.25);\n}\n\n.gantt-datepicker-shift-btn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: inherit;\n font-size: 0.75rem;\n font-weight: 500;\n padding: 0 7px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: var(--gantt-calendar-day-hover, rgba(0,0,0,0.07));\n color: var(--gantt-calendar-text);\n cursor: pointer;\n}\n\n.gantt-datepicker-shift-btn:hover {\n background: var(--gantt-input-border, rgba(0,0,0,0.15));\n}\n\n","/* Gantt Chart CSS Variables - User customizable theming */\n@import './components/ui/ui.css';\n\n:root {\n /* Font */\n --gantt-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n /* Grid Colors */\n --gantt-grid-line-color: #e0e0e0;\n --gantt-cell-background: #ffffff;\n --gantt-row-hover-background: #f6f6f7;\n\n /* Dimensions */\n --gantt-row-height: 30px;\n --gantt-header-height: 40px;\n --gantt-day-width: 30px;\n --gantt-container-border-radius: 10px;\n\n /* Task Bar Styling */\n --gantt-task-bar-default-color: #3b82f6;\n --gantt-task-bar-text-color: #ffffff;\n --gantt-task-bar-border-radius: 4px;\n --gantt-task-bar-height: 24px;\n\n /* Today Indicator */\n --gantt-today-indicator-color: rgba(255, 0, 0, 0.6);\n --gantt-today-indicator-width: 2px;\n\n /* Calendar Grid - Weekend */\n --gantt-weekend-background: #fff9f8;\n --gantt-weekend-border: #fca5a5;\n\n /* Calendar Grid - Separators */\n --gantt-month-separator-width: 1px;\n --gantt-month-separator-color: #a1a1a1;\n --gantt-week-separator-width: 1px;\n --gantt-week-separator-color: #f3f4f6;\n --gantt-day-line-width: 1px;\n --gantt-day-line-color: #f3f4f6;\n\n /* Task List - Vertical Separators (hidden by default) */\n --gantt-tl-vertical-separators: none;\n --gantt-tl-vertical-separators-width: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n /* To enable separators, set: --gantt-tl-vertical-separators: var(--gantt-tl-vertical-separators-width); */\n\n /* Progress Bar Colors */\n --gantt-progress-color: rgba(0, 0, 0, 0.4);\n --gantt-progress-completed: #ffb800;\n --gantt-progress-accepted: #17c964;\n\n /* Dependency line colors */\n --gantt-dependency-line-color: rgba(0, 0, 55, 0.8);\n --gantt-dependency-cycle-color: #ef4444;\n\n /* Expired task color */\n --gantt-expired-color: #ef4444;\n\n /* Parent Task Styling (Phase 19) - MS Project bracket style */\n --gantt-parent-bar-color: #782fc4;\n --gantt-parent-bar-height: 20px;\n --gantt-parent-bar-radius: 8px;\n --gantt-parent-ear-depth: 6px;\n --gantt-parent-ear-width: 8px;\n --gantt-parent-row-bg: #eeedfb;\n --gantt-divider-grid-color: #d4bceb;\n --gantt-hierarchy-line-color: #bebcbf;\n /* --gantt-parent-row-bg: #f2ebf9; */\n}\n\n/* Remove browser default focus outlines for all gantt elements */\n.gantt-container *:focus,\n.gantt-container *:focus-visible {\n outline: none;\n}\n\n/* Prevent text selection by cursor inside the gantt chart */\n.gantt-container * {\n user-select: none;\n}","/**\n * TimeScaleHeader Component Styles - Two-row header layout\n */\n\n.gantt-tsh-header {\n display: flex;\n flex-direction: column;\n background-color: var(--gantt-cell-background);\n /* border-bottom: var(--gantt-week-separator-width, 1px) solid var(--gantt-week-separator-color, #374151); */\n border-bottom: none;\n box-sizing: border-box;\n}\n\n/* Month row (top row) */\n.gantt-tsh-monthRow {\n display: flex;\n border-bottom: var(--gantt-day-line-width, 1px) solid var(--gantt-day-line-color, #f3f4f6);\n align-items: center;\n}\n\n.gantt-tsh-monthCell {\n box-sizing: border-box;\n padding: 0.1rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #1f2937;\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n/* Day row (bottom row) */\n.gantt-tsh-dayRow {\n display: grid;\n box-sizing: border-box;\n}\n\n.gantt-tsh-dayCell {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n/* Separator divs — absolutely positioned, pixel-aligned with GridBackground.\n top/bottom/height set via inline style per separator (fullHeight vs row-2-only). */\n.gantt-tsh-separator {\n position: absolute;\n width: 1px;\n background-color: var(--gantt-week-separator-color, #e5e7eb);\n pointer-events: none;\n z-index: 1;\n}\n\n.gantt-tsh-separator--thick {\n background-color: var(--gantt-month-separator-color, #a1a1a1);\n}\n\n.gantt-tsh-dayLabel {\n font-size: 0.75rem;\n font-weight: 500;\n color: #374151;\n}\n\n.gantt-tsh-weekendDay {\n background-color: var(--gantt-weekend-background, #fef3f2);\n}\n\n.gantt-tsh-weekendDay .gantt-tsh-dayLabel {\n color: #ef4444;\n}\n\n.gantt-tsh-today {\n background-color: #dc2626;\n border-radius: 4px 4px 4px 0;\n}\n\n.gantt-tsh-today .gantt-tsh-dayLabel {\n color: #ffffff;\n}\n\n/* Week-view cell in day row (wider 7-day column) */\n.gantt-tsh-weekCell {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding-left: 0.5rem;\n box-sizing: border-box;\n}","/**\n * TaskRow Component Styles\n */\n\n:root {\n --gantt-task-bar-border-radius: 6px;\n}\n\n.gantt-tr-row {\n position: relative;\n width: 100%;\n border-bottom: 1px solid var(--gantt-grid-line-color);\n box-sizing: border-box;\n}\n\n.gantt-tr-row.gantt-tr-row-filter-match {\n background-color: rgba(250, 204, 21, 0.24);\n}\n\n.gantt-tr-row:hover {\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tr-row.gantt-tr-row-filter-match:hover {\n background-color: rgba(250, 204, 21, 0.3);\n}\n\n.gantt-tr-taskBar {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: var(--gantt-task-bar-border-radius);\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n transition: box-shadow 0.15s ease;\n cursor: grab;\n}\n\n/**\n * Hover state - provides smooth visual feedback\n * Transition disabled during drag (see .gantt-tr-taskBar.gantt-tr-dragging)\n */\n.gantt-tr-taskBar:hover {\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n}\n\n/**\n * Dragging state - disables all transitions for performance\n *\n * CRITICAL: transition: none !important is required to override the\n * default box-shadow transition on .gantt-tr-taskBar. Without this, CSS transitions\n * during drag cause lag/ghosting and break the 60fps performance target.\n *\n * Per research anti-pattern: \"Using CSS transitions during drag causes lag/ghosting.\"\n */\n.gantt-tr-taskBar.gantt-tr-dragging {\n cursor: grabbing;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n opacity: 1;\n transition: none !important;\n}\n\n.gantt-tr-taskDuration {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-right: 4px;\n}\n\n.gantt-tr-rightLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabelRight {\n position: static;\n margin-right: 0;\n}\n\n.gantt-tr-externalTaskName {\n font-size: 0.9rem;\n font-weight: 500;\n color: #2563eb;\n white-space: nowrap;\n user-select: none;\n}\n\n.gantt-tr-resizeHandle {\n position: absolute;\n top: 0;\n width: 20px;\n height: 100%;\n cursor: ew-resize;\n pointer-events: auto;\n z-index: 10;\n}\n\n.gantt-tr-resizeHandleLeft {\n left: 0;\n}\n\n.gantt-tr-resizeHandleRight {\n right: 0;\n}\n\n.gantt-tr-resizeZoneLeft {\n cursor: ew-resize;\n}\n\n.gantt-tr-resizeZoneRight {\n cursor: ew-resize;\n}\n\n.gantt-tr-taskContainer {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.gantt-tr-leftLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabel {\n font-size: 0.85rem;\n color: #6b7280;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n.gantt-tr-dateLabelLeft {\n position: absolute;\n right: 100%;\n margin-right: 6px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Extra margin when lock icon is present */\n.gantt-tr-leftLabels-locked .gantt-tr-dateLabelLeft {\n margin-right: 22px;\n}\n\n/* Progress bar overlay */\n.gantt-tr-progressBar {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n z-index: 1;\n pointer-events: none;\n border-radius: var(--gantt-task-bar-border-radius) 0 0 var(--gantt-task-bar-border-radius);\n transition: width 0.3s ease;\n}\n\n/* Ensure text stays above progress bar.\n NOTE: .gantt-tr-resizeHandle is intentionally excluded here because it already\n uses position: absolute with z-index: 10, which places it above the progress bar.\n Adding position: relative here would override position: absolute and break the\n absolute positioning that anchors handles to the bar edges. */\n.gantt-tr-taskDuration {\n position: relative;\n z-index: 2;\n}\n\n/* Disable transition during drag */\n.gantt-tr-taskBar.gantt-tr-dragging .gantt-tr-progressBar {\n transition: none !important;\n}\n\n/* Progress text inside task bar */\n.gantt-tr-progressText {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-left: 4px;\n position: relative;\n z-index: 2;\n}\n\n/* Progress text outside task bar (before task name) */\n.gantt-tr-externalProgress {\n font-size: 0.85rem;\n font-weight: 500;\n color: #6b7280;\n white-space: nowrap;\n}\n\n/* Duration text outside task bar (before progress and task name) */\n.gantt-tr-externalDuration {\n font-size: 0.875rem;\n font-weight: 600;\n color: #374151;\n white-space: nowrap;\n}\n\n/* Locked task bar state — consumer CSS override point */\n.gantt-tr-taskBar.gantt-tr-locked {\n cursor: not-allowed;\n}\n\n/* Divider line for visual grouping of task sets */\n.gantt-tr-divider {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-top: 1px solid var(--gantt-divider-grid-color, #d4bceb);\n pointer-events: none;\n z-index: 0;\n}\n\n.gantt-tr-divider-top {\n top: 0;\n}\n\n.gantt-tr-divider-bottom {\n bottom: 0;\n}\n\n/* ============================================================================\n Parent Task Bar Styles (Phase 19)\n ============================================================================ */\n\n/* Parent task bar - MS Project bracket style */\n.gantt-tr-parentBar {\n background-color: var(--gantt-parent-bar-color, #333333);\n height: var(--gantt-parent-bar-height, 14px) !important;\n border-radius: var(--gantt-parent-bar-radius, 8px) var(--gantt-parent-bar-radius, 8px) 0 0;\n position: relative;\n overflow: visible;\n /* Allow trapezoid ears to extend below the bar */\n /* Center the entire shape (bar + ears) vertically */\n /* Total height = 14px (bar) + 8px (ears) = 22px, midpoint at 11px from top */\n top: calc(50% - 20px);\n transform: none;\n}\n\n/* Trapezoid ears for bracket appearance */\n.gantt-tr-parentBar::before,\n.gantt-tr-parentBar::after {\n content: \"\";\n position: absolute;\n top: calc(var(--gantt-parent-bar-height, 14px) - 1px);\n height: var(--gantt-parent-ear-depth, 8px);\n width: var(--gantt-parent-ear-width, 10px);\n background-color: var(--gantt-parent-bar-color, #333333);\n}\n\n.gantt-tr-parentBar::before {\n left: 0;\n clip-path: polygon(0 0, 100% 0, 60% 100%, 0 100%);\n}\n\n.gantt-tr-parentBar::after {\n right: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 40% 100%);\n}\n","/**\n * TodayIndicator Component Styles\n */\n\n.gantt-ti-indicator {\n position: absolute;\n top: -1px;\n bottom: 0;\n z-index: 0;\n pointer-events: none;\n}",".gantt-gb-gridBackground {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n pointer-events: none;\n}\n\n.gantt-gb-weekendBlock {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-weekend-background, #fee2e2);\n}\n\n.gantt-gb-gridLine {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n\n.gantt-gb-monthSeparator {\n width: var(--gantt-month-separator-width, 2px);\n background-color: var(--gantt-month-separator-color, #374151);\n}\n\n.gantt-gb-weekSeparator {\n width: var(--gantt-week-separator-width, 1px);\n background-color: var(--gantt-week-separator-color, #d1d5db);\n}\n\n.gantt-gb-dayLine {\n width: var(--gantt-day-line-width, 1px);\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n",".gantt-dgl-guideLine {\n position: absolute;\n top: 0;\n width: 2px;\n background-color: var(--gantt-drag-guide-line-color, #3b82f6);\n z-index: 20;\n pointer-events: none;\n opacity: 0.6;\n}\n","/* SVG overlay for dependency lines */\n.gantt-dependencies-svg {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n /* Allow clicks to pass through to task bars */\n overflow: visible;\n}\n\n/* Dependency line path */\n.gantt-dependency-path {\n fill: none;\n stroke: var(--gantt-dependency-line-color, #666666);\n stroke-width: 1;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Virtual dependency lines (for hidden tasks inside collapsed parents) */\n.gantt-dependency-virtual {\n stroke-dasharray: 4 2;\n opacity: 0.6;\n}\n\n/* Circular dependency highlighting */\n.gantt-dependency-cycle {\n stroke: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Selected dependency highlighting */\n.gantt-dependency-selected {\n stroke: #ef4444;\n stroke-width: 2;\n}\n\n/* Arrow markers */\n.gantt-dependency-arrow polygon {\n fill: var(--gantt-dependency-line-color, #666666);\n}\n\n.gantt-dependency-arrow-cycle polygon {\n fill: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Lag label styling */\n.gantt-dependency-lag-label {\n font-size: 10px;\n font-weight: 500;\n pointer-events: none;\n user-select: none;\n opacity: 0.85;\n}","/**\n * TaskList Component Styles\n * Sticky positioned in flex container - stays at left edge during horizontal scroll\n * Always rendered in DOM for stable positioning, visibility controlled via prop\n */\n\n.gantt-tl-overlay {\n position: sticky;\n left: 0;\n top: 0;\n z-index: 15;\n background-color: var(--gantt-cell-background, #ffffff);\n border-right: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n pointer-events: auto;\n width: var(--tasklist-width, 640px);\n min-width: var(--tasklist-width, 640px);\n}\n\n.gantt-tl-overlay.gantt-tl-overlay-shadowed {\n box-shadow: 10px 0 18px -14px rgba(15, 23, 42, 0.45);\n}\n\n/* Hidden state - animated slide out while preserving layout */\n.gantt-tl-overlay.gantt-tl-hidden {\n opacity: 0;\n visibility: hidden;\n transform: translateX(-100%);\n pointer-events: none;\n width: 0 !important;\n min-width: 0 !important;\n overflow: hidden;\n}\n\n.gantt-tl-overlay {\n transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease, width 0.25s ease, min-width 0.25s ease;\n}\n\n.gantt-tl-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 640px;\n}\n\n/* Header row - sticky during vertical scroll */\n.gantt-tl-header {\n position: sticky;\n top: 0;\n display: flex;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n z-index: 5;\n}\n\n.gantt-tl-headerCell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n}\n\n.gantt-tl-headerCell:last-child {\n border-right: none;\n}\n\n/* Body container */\n.gantt-tl-body {\n display: flex;\n flex-direction: column;\n}\n\n/* Data rows */\n.gantt-tl-row {\n display: flex;\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n}\n\n.gantt-tl-row-filter-match {\n background-color: rgba(250, 204, 21, 0.24);\n}\n\n.gantt-tl-row:hover {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.04);\n}\n\n.gantt-tl-row-filter-match:hover {\n box-shadow: inset 0 0 0 9999px rgba(250, 204, 21, 0.3);\n}\n\n.gantt-tl-row-selected {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.08);\n}\n\n.gantt-tl-row-dependency-selected {\n box-shadow: inset 0 0 0 9999px rgba(5, 150, 105, 0.12);\n}\n\n.gantt-tl-row-dependency-selected:hover {\n box-shadow: inset 0 0 0 9999px rgba(5, 150, 105, 0.16);\n}\n\n.gantt-tl-row-dependency-owner {\n box-shadow: inset 0 0 0 9999px rgba(37, 99, 235, 0.12);\n}\n\n.gantt-tl-row-dependency-owner:hover {\n box-shadow: inset 0 0 0 9999px rgba(37, 99, 235, 0.16);\n}\n\n/* Hierarchy row styles */\n.gantt-tl-row-child {\n padding-left: 0;\n}\n\n\n.gantt-tl-row-parent {\n font-weight: 600;\n /* background-color: var(--gantt-parent-row-bg, #f2ebf9); */\n}\n\n/* Bold dates in parent rows */\n.gantt-tl-row-parent .gantt-datepicker-trigger {\n font-weight: 600;\n}\n\n.gantt-tl-collapse-btn {\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n width: 18px;\n height: 18px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-text-color, #374151);\n padding: 0;\n transition: background-color 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:hover {\n background-color: transparent;\n}\n\n.gantt-tl-collapse-btn svg {\n transition: transform 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:not(.gantt-tl-collapse-btn-collapsed) svg {\n transform: rotate(90deg);\n}\n\n/* Cells */\n.gantt-tl-cell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n font-size: 0.85rem;\n color: #374151;\n}\n\n.gantt-tl-cell:last-child {\n border-right: none;\n}\n\n.gantt-tl-cell-number {\n width: 32px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0;\n padding: 0 2px 0 6px;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n}\n\n/* Drag handle (hidden by default, reveal on row hover) */\n.gantt-tl-drag-handle {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding-left: 8px;\n cursor: grab;\n color: #9ca3af;\n visibility: hidden;\n user-select: none;\n background: transparent;\n}\n\n.gantt-tl-row:hover .gantt-tl-drag-handle,\n.gantt-tl-row-dragging .gantt-tl-drag-handle {\n visibility: visible;\n}\n\n.gantt-tl-row:hover .gantt-tl-num-label {\n visibility: hidden;\n}\n\n.gantt-tl-num-label {\n font-size: 0.75rem;\n opacity: 0.45;\n}\n\n.gantt-tl-drag-handle:active {\n cursor: grabbing;\n}\n\n/* Dragging row (semi-transparent background, blue text) */\n.gantt-tl-row-dragging {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-row-dragging .gantt-tl-cell,\n.gantt-tl-row-dragging .gantt-tl-name-trigger,\n.gantt-tl-row-dragging .gantt-tl-num-label {\n color: #3b82f6 !important;\n}\n\n/* Drop target indicator (blue top border) - uses ::before to avoid layout shift */\n.gantt-tl-row-drag-over {\n position: relative;\n}\n\n.gantt-tl-row-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n z-index: 1;\n}\n\n/* Navigate icon removed - single click on task name now selects row */\n\n/* Restore left padding for the name column header */\n.gantt-tl-headerCell.gantt-tl-cell-name {\n padding-left: 4px;\n}\n\n/* Name cell — overflow visible so overlay input can extend past boundaries */\n.gantt-tl-cell-name {\n flex: 1;\n min-width: 160px;\n position: relative;\n overflow: visible;\n align-items: center;\n padding: 0 4px;\n /* add right padding for button space */\n}\n\n/* Date cell — relative for transparent picker overlay */\n.gantt-tl-cell-date {\n width: 68px;\n justify-content: center;\n flex-shrink: 0;\n position: relative;\n padding: 0;\n}\n\n/* Duration cell */\n.gantt-tl-cell-duration {\n width: 46px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n/* Progress cell */\n.gantt-tl-cell-progress {\n width: 56px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n.gantt-tl-number-editor {\n position: absolute;\n inset: 0;\n}\n\n.gantt-tl-number-input {\n width: 100%;\n height: 100%;\n padding: 0 18px 0 6px;\n border-width: 1px;\n border-color: #93c5fd;\n border-radius: 8px;\n text-align: left;\n font-size: 0.8rem;\n line-height: 1;\n box-shadow: 0 0 0 1px rgba(147, 197, 253, 0.35);\n}\n\n.gantt-tl-number-input::-webkit-outer-spin-button,\n.gantt-tl-number-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-number-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.gantt-tl-number-steppers {\n position: absolute;\n top: 2px;\n right: 2px;\n bottom: 2px;\n width: 14px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.gantt-tl-number-stepper {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 5px;\n background: rgba(248, 250, 252, 0.95);\n color: #64748b;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.gantt-tl-number-stepper:hover {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.gantt-tl-number-stepper:active {\n background: #bfdbfe;\n}\n\n/* Full-cell button trigger for name edit */\n.gantt-tl-name-trigger {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n position: absolute;\n inset: 0;\n padding: 0 4px;\n /* match parent cell padding so text stays visually aligned */\n font-size: 0.8rem;\n line-height: 1.2;\n font-family: inherit;\n font-weight: inherit;\n color: #374151;\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: left;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n box-sizing: border-box;\n}\n\n.gantt-tl-name-trigger-parent {\n padding-left: 26px;\n}\n\n.gantt-tl-name-trigger-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-trigger:hover,\n.gantt-tl-name-trigger:active {\n background-color: transparent;\n}\n\n/* Name edit — Input component used as floating overlay */\n.gantt-tl-name-input {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n min-width: 520px;\n width: 100%;\n border-width: 2px;\n border-color: #3b82f6;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n white-space: nowrap;\n}\n\n.gantt-tl-name-input-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-input:focus {\n box-shadow: 0 2px 10px rgba(59, 130, 246, 0.3);\n}\n\n/* Locked task name — cursor indicates no editing */\n.gantt-tl-name-locked {\n cursor: default !important;\n}\n\n/* Name cell action buttons container */\n.gantt-tl-name-actions {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n/* Name cell action buttons — hover-reveal */\n.gantt-tl-name-action-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 4px;\n width: 20px;\n height: 20px;\n padding: 0;\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n/* Reveal buttons on row hover (any part of the row) */\n.gantt-tl-row:hover .gantt-tl-name-action-btn {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hierarchy action buttons (promote/demote) */\n.gantt-tl-action-buttons {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n pointer-events: none;\n}\n\n.gantt-tl-row:hover .gantt-tl-action-buttons {\n opacity: 1;\n pointer-events: auto;\n}\n\n.gantt-tl-action-btn {\n padding: 2px 8px;\n font-size: 11px;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background: white;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.gantt-tl-action-btn:hover {\n background: var(--gantt-cell-background, #f9fafb);\n border-color: var(--gantt-primary-color, #3b82f6);\n}\n\n.gantt-tl-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Dependencies column — header and data cells */\n.gantt-tl-cell-deps {\n width: 90px;\n flex-shrink: 0;\n flex-wrap: wrap;\n gap: 4px;\n padding: 2px 4px;\n align-items: center;\n overflow: visible;\n position: relative;\n}\n\n/* Insert button styling (blue) */\n.gantt-tl-action-insert {\n background-color: #3b82f6;\n color: white;\n}\n\n.gantt-tl-action-insert:hover {\n background-color: #2563eb;\n}\n\n/* Delete button styling (red) */\n.gantt-tl-action-delete {\n background-color: #ef4444;\n color: white;\n}\n\n.gantt-tl-action-delete:hover {\n background-color: #dc2626;\n}\n\n/* Delete button confirmation state */\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm {\n min-width: 60px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n}\n\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm:hover {\n background-color: #b91c1c;\n}\n\n/* Single hierarchy button with directional arrow */\n.gantt-tl-action-hierarchy {\n width: 20px;\n height: 20px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #4b5563;\n color: white;\n}\n\n.gantt-tl-action-hierarchy:hover {\n background-color: #374151;\n}\n\n/* Type switcher button in header */\n.gantt-tl-dep-type-trigger {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-type-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n}\n\n.gantt-tl-dep-type-trigger:not(:disabled):hover {\n color: #3b82f6;\n}\n\n/* Dropdown option buttons inside Popover */\n.gantt-tl-dep-type-menu {\n display: flex;\n flex-direction: column;\n padding: 4px;\n min-width: 180px;\n}\n\n.gantt-tl-dep-type-option {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 4px 8px;\n font-size: 0.8rem;\n font-family: inherit;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #374151;\n}\n\n.gantt-tl-dep-type-option:hover {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.gantt-tl-dep-type-option.active {\n background-color: rgba(59, 130, 246, 0.2);\n font-weight: 600;\n color: #1d4ed8;\n}\n\n/* Dependency chip — clickable to select and trigger predecessor-side delete */\n.gantt-tl-dep-chip {\n display: inline-flex;\n align-items: center;\n gap: 1px;\n background-color: rgba(59, 130, 246, 0.12);\n /* border: 1px solid rgba(59, 130, 246, 0.3); */\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #1d4ed8;\n white-space: nowrap;\n line-height: 14px;\n cursor: pointer;\n min-width: 42px;\n justify-content: center;\n}\n\n/* Selected chip visual highlight — inverted */\n.gantt-tl-dep-chip-selected {\n background-color: #2563eb;\n border-color: #2563eb;\n color: #fff;\n font-weight: 600;\n}\n\n/* Chip + trash button wrapper — keeps chip and delete button visually inline */\n.gantt-tl-dep-chip-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Inline trash button — hidden by default, shown only when chip is selected */\n.gantt-tl-dep-chip-trash {\n display: none;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n background: #ef4444;\n border: none;\n border-radius: 3px;\n padding: 0 4px;\n cursor: pointer;\n color: #fff;\n flex-shrink: 0;\n line-height: 0;\n}\n\n/* Show trash only when chip is selected */\n.gantt-tl-dep-chip-wrapper:has(.gantt-tl-dep-chip-selected) .gantt-tl-dep-chip-trash {\n display: inline-flex;\n}\n\n.gantt-tl-dep-chip-trash:hover {\n background-color: #dc2626;\n}\n\n/* Dep chip info popover — human-readable dependency description on click */\n.gantt-tl-dep-info-popover {\n font-size: 0.75rem;\n color: #374151;\n padding: 6px 10px !important;\n max-width: 260px;\n line-height: 1.4;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.gantt-tl-dep-info-prefix {\n color: #6b7280;\n}\n\n.gantt-tl-dep-info-name {\n font-weight: 500;\n color: #111827;\n white-space: normal;\n word-break: break-word;\n}\n\n/* Dep edit popover — interactive lag counter and delete button */\n.gantt-tl-dep-edit-popover {\n font-size: 0.85rem;\n color: #374151;\n padding: 10px 12px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 200px;\n}\n\n.gantt-tl-dep-edit-row {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.gantt-tl-dep-edit-label {\n min-width: 8em;\n}\n\n.gantt-tl-dep-edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n background: #f9fafb;\n cursor: pointer;\n color: #374151;\n padding: 0;\n line-height: 1;\n}\n\n.gantt-tl-dep-edit-btn:hover {\n background: #e5e7eb;\n}\n\n\n.gantt-tl-dep-edit-input {\n width: 56px;\n text-align: center;\n background: rgba(59, 130, 246, 0.1);\n border: 1px solid rgba(59, 130, 246, 0.3);\n border-radius: 4px;\n padding: 2px 4px;\n color: #1d4ed8;\n -moz-appearance: textfield;\n}\n\n.gantt-tl-dep-edit-input::-webkit-outer-spin-button,\n.gantt-tl-dep-edit-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-dep-edit-input:focus {\n outline: none;\n border-color: rgba(59, 130, 246, 0.6);\n background: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-dep-edit-input::placeholder {\n color: #1d4ed8;\n opacity: 0.7;\n font-style: italic;\n}\n\n.gantt-tl-dep-edit-task {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n margin-bottom: 6px;\n}\n\n.gantt-tl-dep-edit-pred {\n font-weight: 500;\n color: #111827;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n margin-top: 8px;\n margin-bottom: 10px;\n}\n\n.gantt-tl-dep-edit-divider {\n border: none;\n border-top: 1px solid #e5e7eb;\n margin: 2px 0;\n}\n\n.gantt-tl-dep-edit-delete {\n display: flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: #ef4444;\n cursor: pointer;\n padding: 4px 0;\n font-size: 0.8rem;\n font-family: inherit;\n}\n\n.gantt-tl-dep-edit-delete:hover {\n color: #dc2626;\n text-decoration: underline;\n}\n\n/* Actions container for delete + close buttons */\n.gantt-tl-dep-edit-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.gantt-tl-dep-edit-close {\n display: flex;\n align-items: center;\n background: none;\n border: none;\n padding: 4px 0;\n font-size: 0.8rem;\n font-family: inherit;\n color: #6b7280;\n cursor: pointer;\n}\n\n.gantt-tl-dep-edit-close:hover {\n color: #374151;\n text-decoration: underline;\n}\n\n/* Summary chip: \"N связей\" — shown when 2+ deps */\n.gantt-tl-dep-summary-chip {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.12);\n border: 0px solid rgba(107, 114, 128, 0.3);\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n min-width: 32px;\n justify-content: center;\n}\n\n.gantt-tl-dep-summary-chip:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n border-color: rgba(59, 130, 246, 0.3);\n}\n\n/* \"+N ещё\" overflow button */\n.gantt-tl-dep-overflow-trigger {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.1);\n border: 1px solid rgba(107, 114, 128, 0.25);\n border-radius: 4px;\n padding: 1px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-overflow-trigger:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n}\n\n/* Overflow popover content — list of all deps */\n.gantt-tl-dep-overflow-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 8px;\n min-width: 140px;\n}\n\n.gantt-tl-dep-overflow-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-size: 0.8rem;\n color: #374151;\n}\n\n/* \"+\" add dependency button */\n.gantt-tl-dep-add {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 0px solid rgba(59, 130, 246, 0.4);\n background-color: rgba(59, 130, 246, 0.12);\n border-radius: 4px;\n width: 30px;\n height: 23px;\n font-size: 0.9rem;\n color: #3b82f6;\n cursor: pointer;\n padding: 0;\n font-family: inherit;\n flex-shrink: 0;\n}\n\n/* Hover-reveal variant for dep add button */\n.gantt-tl-dep-add-hover {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.gantt-tl-row:hover .gantt-tl-dep-add-hover {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hide add button when a chip is selected (to avoid clutter with delete button) */\n.gantt-tl-dep-add-hidden {\n display: none !important;\n}\n\n.gantt-tl-dep-add:hover {\n background-color: rgba(59, 130, 246, 0.1);\n border-color: #3b82f6;\n}\n\n/* Picker mode: «Связи» cell on all rows becomes a selection target */\n.gantt-tl-row-picking .gantt-tl-cell-deps {\n cursor: crosshair;\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tl-row-picking .gantt-tl-cell-deps:hover {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n/* Picker mode: current task's own row — clickable to cancel */\n.gantt-tl-row-picking-self .gantt-tl-cell-deps {\n cursor: pointer;\n}\n\n/* Placeholder text shown in source row's deps cell while picking a predecessor */\n.gantt-tl-dep-source-hint {\n font-size: 0.75rem;\n color: #6b7280;\n font-style: italic;\n white-space: normal;\n}\n\n.gantt-tl-dep-source-picker {\n position: absolute;\n top: -80px;\n left: calc(100% + 8px);\n z-index: 20;\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 280px;\n max-width: 280px;\n padding: 12px 10px 10px;\n border: none;\n border-radius: 10px;\n background: #ffffff;\n box-shadow: 0 18px 40px rgba(15, 23, 42, 0.28);\n}\n\n.gantt-tl-dep-source-direction {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 4px;\n}\n\n.gantt-tl-dep-source-direction-btn {\n border: none;\n border-radius: 8px;\n background: transparent;\n color: #111827;\n padding: 6px 8px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n}\n\n.gantt-tl-dep-source-direction-btn:hover {\n background: rgba(59, 130, 246, 0.08);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-direction-btn-active,\n.gantt-tl-dep-source-direction-btn-active:hover {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n font-weight: 600;\n}\n\n.gantt-tl-dep-source-types {\n display: grid;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 4px;\n}\n\n.gantt-tl-dep-source-type-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n min-width: 0;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: #111827;\n padding: 6px 4px;\n cursor: pointer;\n font-size: 0.7rem;\n font-family: inherit;\n}\n\n.gantt-tl-dep-source-type-btn:hover {\n color: #1d4ed8;\n background: rgba(59, 130, 246, 0.08);\n}\n\n.gantt-tl-dep-source-type-btn-active {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n font-weight: 600;\n}\n\n.gantt-tl-dep-source-type-btn-active:hover {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-type-btn span {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.gantt-tl-dep-source-picker-head {\n display: flex;\n align-items: center;\n}\n\n.gantt-tl-dep-source-input {\n width: 100%;\n min-width: 0;\n height: 34px;\n padding: 0 10px;\n border: 1px solid rgba(59, 130, 246, 0.25);\n border-radius: 6px;\n background: #ffffff;\n font-size: 0.82rem;\n font-family: inherit;\n color: #111827;\n}\n\n.gantt-tl-dep-source-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);\n}\n\n.gantt-tl-dep-source-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-height: 164px;\n overflow-y: auto;\n}\n\n.gantt-tl-dep-source-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: #1f2937;\n text-align: left;\n padding: 6px 8px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n}\n\n.gantt-tl-dep-source-option-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.gantt-tl-dep-source-option:hover,\n.gantt-tl-dep-source-option-active {\n background: rgba(59, 130, 246, 0.16);\n color: #1d4ed8;\n}\n\n.gantt-tl-dep-source-option-linked {\n background: rgba(16, 185, 129, 0.12);\n color: #047857;\n}\n\n.gantt-tl-dep-source-option-linked:hover,\n.gantt-tl-dep-source-option-linked.gantt-tl-dep-source-option-active {\n color: #047857;\n background: rgba(16, 185, 129, 0.14);\n}\n\n.gantt-tl-dep-source-option-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-left: 8px;\n border: none;\n border-radius: 999px;\n background: transparent;\n color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.gantt-tl-dep-source-option-linked:hover .gantt-tl-dep-source-option-remove,\n.gantt-tl-dep-source-option-linked.gantt-tl-dep-source-option-active .gantt-tl-dep-source-option-remove {\n color: #dc2626;\n}\n\n.gantt-tl-dep-source-option-remove:hover {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n/* Predecessor cell full-replacement: \"Зависит от [name]\" → hover → \"Удалить\" */\n.gantt-tl-dep-delete-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n background: #059669;\n border: none;\n border-radius: 4px;\n padding: 2px 4px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.gantt-tl-dep-delete-label:hover {\n background: #dc2626;\n}\n\n.gantt-tl-dep-delete-label-default {\n display: inline;\n pointer-events: none;\n}\n\n.gantt-tl-dep-delete-label-hover {\n display: none;\n color: #fff;\n font-weight: 600;\n pointer-events: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-default {\n display: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-hover {\n display: inline;\n}\n\n/* Cycle error banner below header */\n.gantt-tl-dep-error {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: #fef2f2;\n border: 1px solid #fca5a5;\n border-top: none;\n padding: 4px 8px;\n font-size: 0.75rem;\n color: #dc2626;\n z-index: 10;\n white-space: nowrap;\n}\n\n/* Add task button */\n.gantt-tl-add-btn {\n width: 100%;\n padding: 6px 12px;\n text-align: left;\n background: transparent;\n border: none;\n /* border-top: 1px dashed var(--gantt-grid-line-color, #e0e0e0); */\n cursor: pointer;\n font-size: 12px;\n color: var(--gantt-text-muted, #9ca3af);\n transition: background 0.15s ease, color 0.15s ease;\n font-family: inherit;\n}\n\n.gantt-tl-add-btn:hover {\n background: var(--gantt-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--gantt-text-color, #374151);\n}\n\n/* Blue top border when dragging over the add button */\n.gantt-tl-add-btn-drag-over {\n position: relative;\n background: rgba(59, 130, 246, 0.08);\n color: #3b82f6;\n}\n\n.gantt-tl-add-btn-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n}\n\n.gantt-tl-cell-new-name {\n padding: 2px 4px;\n}\n",".gantt-container {\n width: 100%;\n font-family: var(--gantt-font-family, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background-color: var(--gantt-cell-background, #ffffff);\n border-radius: var(--gantt-container-border-radius, 10px);\n overflow: hidden;\n}\n\n.gantt-scrollContainer {\n overflow: auto;\n position: relative;\n}\n\n/* Wrapper for horizontal scroll content - keeps TaskList and chart together */\n.gantt-scrollContent {\n display: flex;\n min-width: min-content;\n}\n\n.gantt-stickyHeader {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n}\n\n.gantt-taskArea {\n position: relative;\n background-color: var(--gantt-cell-background, #ffffff);\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -575,6 +575,8 @@ interface GanttChartProps {
575
575
  onToggleCollapse?: (parentId: string) => void;
576
576
  /** Task IDs to highlight in the task list (for search results) */
577
577
  highlightedTaskIds?: Set<string>;
578
+ /** Disable task drag and resize on the calendar grid (default: false) */
579
+ disableTaskDrag?: boolean;
578
580
  }
579
581
  /**
580
582
  * Ref handle type for GanttChart — exposes imperative scroll methods.
@@ -665,6 +667,8 @@ interface TaskRowProps {
665
667
  }>;
666
668
  /** Custom weekend predicate (overrides default Saturday/Sunday) */
667
669
  isWeekend?: (date: Date) => boolean;
670
+ /** Disable task drag and resize (overrides task.locked) */
671
+ disableTaskDrag?: boolean;
668
672
  }
669
673
  /**
670
674
  * TaskRow component - renders a single task row with a task bar
@@ -963,6 +967,8 @@ interface UseTaskDragOptions {
963
967
  onCascade?: (tasks: Task$1[]) => void;
964
968
  /** When true, all drag and resize interactions are disabled for this task */
965
969
  locked?: boolean;
970
+ /** When true, drag is disabled globally for all tasks (shows grab cursor instead of not-allowed) */
971
+ disableTaskDrag?: boolean;
966
972
  /** If true, dependency cascade calculations skip weekends */
967
973
  businessDays?: boolean;
968
974
  /** Function that returns true for weekends (for businessDays mode) */
package/dist/index.d.ts CHANGED
@@ -575,6 +575,8 @@ interface GanttChartProps {
575
575
  onToggleCollapse?: (parentId: string) => void;
576
576
  /** Task IDs to highlight in the task list (for search results) */
577
577
  highlightedTaskIds?: Set<string>;
578
+ /** Disable task drag and resize on the calendar grid (default: false) */
579
+ disableTaskDrag?: boolean;
578
580
  }
579
581
  /**
580
582
  * Ref handle type for GanttChart — exposes imperative scroll methods.
@@ -665,6 +667,8 @@ interface TaskRowProps {
665
667
  }>;
666
668
  /** Custom weekend predicate (overrides default Saturday/Sunday) */
667
669
  isWeekend?: (date: Date) => boolean;
670
+ /** Disable task drag and resize (overrides task.locked) */
671
+ disableTaskDrag?: boolean;
668
672
  }
669
673
  /**
670
674
  * TaskRow component - renders a single task row with a task bar
@@ -963,6 +967,8 @@ interface UseTaskDragOptions {
963
967
  onCascade?: (tasks: Task$1[]) => void;
964
968
  /** When true, all drag and resize interactions are disabled for this task */
965
969
  locked?: boolean;
970
+ /** When true, drag is disabled globally for all tasks (shows grab cursor instead of not-allowed) */
971
+ disableTaskDrag?: boolean;
966
972
  /** If true, dependency cascade calculations skip weekends */
967
973
  businessDays?: boolean;
968
974
  /** Function that returns true for weekends (for businessDays mode) */
package/dist/index.js CHANGED
@@ -1992,11 +1992,13 @@ var useTaskDrag = (options) => {
1992
1992
  disableConstraints = false,
1993
1993
  onCascadeProgress,
1994
1994
  onCascade,
1995
+ locked = false,
1996
+ disableTaskDrag = false,
1995
1997
  businessDays = true,
1996
1998
  weekendPredicate
1997
1999
  } = options;
1998
2000
  const isOwnerRef = (0, import_react2.useRef)(false);
1999
- const locked = options.locked ?? false;
2001
+ const effectiveLocked = locked || disableTaskDrag;
2000
2002
  const [isDragging, setIsDragging] = (0, import_react2.useState)(false);
2001
2003
  const [dragMode, setDragMode] = (0, import_react2.useState)(null);
2002
2004
  const [currentLeft, setCurrentLeft] = (0, import_react2.useState)(0);
@@ -2161,7 +2163,7 @@ var useTaskDrag = (options) => {
2161
2163
  };
2162
2164
  }, []);
2163
2165
  const handleMouseDown = (0, import_react2.useCallback)((e) => {
2164
- if (locked) return;
2166
+ if (effectiveLocked) return;
2165
2167
  const target = e.currentTarget;
2166
2168
  const edgeZone = detectEdgeZone(e.clientX, target, edgeZoneWidth);
2167
2169
  let mode = null;
@@ -2239,14 +2241,15 @@ var useTaskDrag = (options) => {
2239
2241
  businessDays,
2240
2242
  weekendPredicate
2241
2243
  };
2242
- }, [edgeZoneWidth, currentLeft, currentWidth, dayWidth, monthStart, taskId, onDragStateChange, handleProgress, handleComplete, handleCancel, allTasks, disableConstraints, onCascadeProgress, onCascade, locked]);
2244
+ }, [edgeZoneWidth, currentLeft, currentWidth, dayWidth, monthStart, taskId, onDragStateChange, handleProgress, handleComplete, handleCancel, allTasks, disableConstraints, onCascadeProgress, onCascade, effectiveLocked]);
2243
2245
  const getCursorStyle = (0, import_react2.useCallback)(() => {
2246
+ if (disableTaskDrag) return "grab";
2244
2247
  if (locked) return "not-allowed";
2245
2248
  if (isDragging) {
2246
2249
  return "grabbing";
2247
2250
  }
2248
2251
  return "grab";
2249
- }, [locked, isDragging]);
2252
+ }, [disableTaskDrag, locked, isDragging]);
2250
2253
  return {
2251
2254
  isDragging,
2252
2255
  dragMode,
@@ -2265,10 +2268,10 @@ var useTaskDrag = (options) => {
2265
2268
  // src/components/TaskRow/TaskRow.tsx
2266
2269
  var import_jsx_runtime2 = require("react/jsx-runtime");
2267
2270
  var arePropsEqual = (prevProps, nextProps) => {
2268
- return prevProps.task.id === nextProps.task.id && prevProps.task.name === nextProps.task.name && prevProps.task.startDate === nextProps.task.startDate && prevProps.task.endDate === nextProps.task.endDate && prevProps.task.color === nextProps.task.color && prevProps.task.progress === nextProps.task.progress && prevProps.task.accepted === nextProps.task.accepted && prevProps.monthStart.getTime() === nextProps.monthStart.getTime() && prevProps.dayWidth === nextProps.dayWidth && prevProps.rowHeight === nextProps.rowHeight && prevProps.overridePosition?.left === nextProps.overridePosition?.left && prevProps.overridePosition?.width === nextProps.overridePosition?.width && prevProps.allTasks === nextProps.allTasks && prevProps.disableConstraints === nextProps.disableConstraints && prevProps.task.locked === nextProps.task.locked && prevProps.task.divider === nextProps.task.divider && prevProps.highlightExpiredTasks === nextProps.highlightExpiredTasks && prevProps.isFilterMatch === nextProps.isFilterMatch && prevProps.businessDays === nextProps.businessDays && prevProps.customDays === nextProps.customDays && prevProps.isWeekend === nextProps.isWeekend;
2271
+ return prevProps.task.id === nextProps.task.id && prevProps.task.name === nextProps.task.name && prevProps.task.startDate === nextProps.task.startDate && prevProps.task.endDate === nextProps.task.endDate && prevProps.task.color === nextProps.task.color && prevProps.task.progress === nextProps.task.progress && prevProps.task.accepted === nextProps.task.accepted && prevProps.monthStart.getTime() === nextProps.monthStart.getTime() && prevProps.dayWidth === nextProps.dayWidth && prevProps.rowHeight === nextProps.rowHeight && prevProps.overridePosition?.left === nextProps.overridePosition?.left && prevProps.overridePosition?.width === nextProps.overridePosition?.width && prevProps.allTasks === nextProps.allTasks && prevProps.disableConstraints === nextProps.disableConstraints && prevProps.task.locked === nextProps.task.locked && prevProps.task.divider === nextProps.task.divider && prevProps.highlightExpiredTasks === nextProps.highlightExpiredTasks && prevProps.isFilterMatch === nextProps.isFilterMatch && prevProps.businessDays === nextProps.businessDays && prevProps.customDays === nextProps.customDays && prevProps.isWeekend === nextProps.isWeekend && prevProps.disableTaskDrag === nextProps.disableTaskDrag;
2269
2272
  };
2270
2273
  var TaskRow = import_react3.default.memo(
2271
- ({ task, monthStart, dayWidth, rowHeight, onTasksChange, onDragStateChange, rowIndex, allTasks, enableAutoSchedule, disableConstraints, overridePosition, onCascadeProgress, onCascade, divider, highlightExpiredTasks, isFilterMatch = false, businessDays, customDays, isWeekend: isWeekend3 }) => {
2274
+ ({ task, monthStart, dayWidth, rowHeight, onTasksChange, onDragStateChange, rowIndex, allTasks, enableAutoSchedule, disableConstraints, overridePosition, onCascadeProgress, onCascade, divider, highlightExpiredTasks, isFilterMatch = false, businessDays, customDays, isWeekend: isWeekend3, disableTaskDrag = false }) => {
2272
2275
  const { divider: taskDivider } = task;
2273
2276
  const taskStartDate = (0, import_react3.useMemo)(() => parseUTCDate(task.startDate), [task.startDate]);
2274
2277
  const taskEndDate = (0, import_react3.useMemo)(() => parseUTCDate(task.endDate), [task.endDate]);
@@ -2348,6 +2351,7 @@ var TaskRow = import_react3.default.memo(
2348
2351
  enableAutoSchedule,
2349
2352
  disableConstraints,
2350
2353
  locked: task.locked,
2354
+ disableTaskDrag,
2351
2355
  onCascadeProgress,
2352
2356
  onCascade,
2353
2357
  businessDays,
@@ -4720,7 +4724,7 @@ var TaskListRow = import_react10.default.memo(
4720
4724
  top: 0,
4721
4725
  height: `${rowHeight}px`,
4722
4726
  width: "1.5px",
4723
- background: "#d4bceb",
4727
+ background: "var(--gantt-hierarchy-line-color)",
4724
4728
  borderRadius: "1px",
4725
4729
  pointerEvents: "none"
4726
4730
  }
@@ -4737,7 +4741,7 @@ var TaskListRow = import_react10.default.memo(
4737
4741
  top: 0,
4738
4742
  height: isLastChild ? `${rowHeight / 2}px` : `${rowHeight}px`,
4739
4743
  width: "1.5px",
4740
- background: "#d4bceb",
4744
+ background: "var(--gantt-hierarchy-line-color)",
4741
4745
  borderRadius: "1px",
4742
4746
  pointerEvents: "none"
4743
4747
  }
@@ -4752,7 +4756,7 @@ var TaskListRow = import_react10.default.memo(
4752
4756
  top: `${rowHeight / 2 - 0.75}px`,
4753
4757
  width: "8px",
4754
4758
  height: "1.5px",
4755
- background: "#d4bceb",
4759
+ background: "var(--gantt-hierarchy-line-color)",
4756
4760
  borderRadius: "1px",
4757
4761
  pointerEvents: "none"
4758
4762
  }
@@ -4768,23 +4772,40 @@ var TaskListRow = import_react10.default.memo(
4768
4772
  width: "4px",
4769
4773
  height: "4px",
4770
4774
  borderRadius: "50%",
4771
- background: "#d4bceb",
4775
+ background: "var(--gantt-hierarchy-line-color)",
4772
4776
  pointerEvents: "none"
4773
4777
  }
4774
4778
  }
4775
4779
  )
4776
4780
  ] }),
4777
- isParent && !editingName && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4778
- "button",
4779
- {
4780
- type: "button",
4781
- className: `gantt-tl-collapse-btn ${isCollapsed ? "gantt-tl-collapse-btn-collapsed" : ""}`,
4782
- onClick: handleToggleCollapse,
4783
- style: { left: `${nestingDepth * 20 + 4}px` },
4784
- "aria-label": isCollapsed ? "Expand children" : "Collapse children",
4785
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChevronRightIcon, {})
4786
- }
4787
- ),
4781
+ isParent && !editingName && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
4782
+ !isCollapsed && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4783
+ "span",
4784
+ {
4785
+ style: {
4786
+ position: "absolute",
4787
+ left: `${nestingDepth * 20 + 9}px`,
4788
+ top: `${rowHeight / 2 + 7}px`,
4789
+ height: `${rowHeight / 2 - 7}px`,
4790
+ width: "1.5px",
4791
+ background: "var(--gantt-hierarchy-line-color)",
4792
+ borderRadius: "1px",
4793
+ pointerEvents: "none"
4794
+ }
4795
+ }
4796
+ ),
4797
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4798
+ "button",
4799
+ {
4800
+ type: "button",
4801
+ className: `gantt-tl-collapse-btn ${isCollapsed ? "gantt-tl-collapse-btn-collapsed" : ""}`,
4802
+ onClick: handleToggleCollapse,
4803
+ style: { left: `${nestingDepth * 20 + 1}px` },
4804
+ "aria-label": isCollapsed ? "Expand children" : "Collapse children",
4805
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChevronRightIcon, {})
4806
+ }
4807
+ )
4808
+ ] }),
4788
4809
  editingName && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4789
4810
  Input,
4790
4811
  {
@@ -4813,7 +4834,7 @@ var TaskListRow = import_react10.default.memo(
4813
4834
  onClick: handleNameClick,
4814
4835
  onDoubleClick: handleNameDoubleClick,
4815
4836
  style: {
4816
- paddingLeft: nestingDepth > 0 ? `${nestingDepth * 20 + (isParent ? 26 : 8)}px` : isParent ? "26px" : void 0,
4837
+ paddingLeft: nestingDepth > 0 ? `${nestingDepth * 20 + (isParent ? 24 : 8)}px` : isParent ? "24px" : void 0,
4817
4838
  ...editingName ? { visibility: "hidden", pointerEvents: "none" } : void 0
4818
4839
  },
4819
4840
  children: task.name
@@ -5947,7 +5968,8 @@ var GanttChart = (0, import_react13.forwardRef)(({
5947
5968
  taskFilter,
5948
5969
  collapsedParentIds: externalCollapsedParentIds,
5949
5970
  onToggleCollapse: externalOnToggleCollapse,
5950
- highlightedTaskIds
5971
+ highlightedTaskIds,
5972
+ disableTaskDrag = false
5951
5973
  }, ref) => {
5952
5974
  const scrollContainerRef = (0, import_react13.useRef)(null);
5953
5975
  const [selectedTaskId, setSelectedTaskId] = (0, import_react13.useState)(null);
@@ -6495,7 +6517,8 @@ var GanttChart = (0, import_react13.forwardRef)(({
6495
6517
  isFilterMatch: matchedTaskIds.has(task.id),
6496
6518
  businessDays,
6497
6519
  customDays,
6498
- isWeekend: isWeekend3
6520
+ isWeekend: isWeekend3,
6521
+ disableTaskDrag
6499
6522
  },
6500
6523
  task.id
6501
6524
  ))