178 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
| /* Bootstrap-styled File Tree */
 | |
| .file-tree {
 | |
|     font-size: 13px;
 | |
|     user-select: none;
 | |
|     padding: 8px 0;
 | |
| }
 | |
| 
 | |
| .tree-node-wrapper {
 | |
|     margin: 0;
 | |
| }
 | |
| 
 | |
| .tree-node {
 | |
|     padding: 6px 8px;
 | |
|     cursor: pointer;
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     gap: 6px;
 | |
|     border-radius: 4px;
 | |
|     margin: 1px 4px;
 | |
|     color: var(--text-primary);
 | |
|     transition: all 0.15s ease;
 | |
|     white-space: nowrap;
 | |
|     overflow: hidden;
 | |
|     text-overflow: ellipsis;
 | |
| }
 | |
| 
 | |
| .tree-node:hover {
 | |
|     background-color: var(--bg-tertiary);
 | |
| }
 | |
| 
 | |
| .tree-node.active {
 | |
|     background-color: var(--link-color);
 | |
|     color: white;
 | |
|     font-weight: 500;
 | |
| }
 | |
| 
 | |
| .tree-node.active:hover {
 | |
|     background-color: var(--link-color);
 | |
|     filter: brightness(1.1);
 | |
| }
 | |
| 
 | |
| /* Toggle arrow */
 | |
| .tree-node-toggle {
 | |
|     display: inline-flex;
 | |
|     align-items: center;
 | |
|     justify-content: center;
 | |
|     width: 16px;
 | |
|     height: 16px;
 | |
|     font-size: 10px;
 | |
|     color: var(--text-secondary);
 | |
|     flex-shrink: 0;
 | |
|     transition: transform 0.2s ease;
 | |
| }
 | |
| 
 | |
| .tree-node-toggle.expanded {
 | |
|     transform: rotate(90deg);
 | |
| }
 | |
| 
 | |
| /* Icon styling */
 | |
| .tree-node-icon {
 | |
|     width: 16px;
 | |
|     height: 16px;
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     justify-content: center;
 | |
|     flex-shrink: 0;
 | |
|     color: var(--text-secondary);
 | |
| }
 | |
| 
 | |
| .tree-node.active .tree-node-icon {
 | |
|     color: white;
 | |
| }
 | |
| 
 | |
| /* Content wrapper */
 | |
| .tree-node-content {
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     gap: 6px;
 | |
|     flex: 1;
 | |
|     min-width: 0;
 | |
| }
 | |
| 
 | |
| .tree-node-name {
 | |
|     flex: 1;
 | |
|     overflow: hidden;
 | |
|     text-overflow: ellipsis;
 | |
|     white-space: nowrap;
 | |
|     font-size: 13px;
 | |
| }
 | |
| 
 | |
| .file-size-badge {
 | |
|     font-size: 10px;
 | |
|     color: var(--text-secondary);
 | |
|     margin-left: auto;
 | |
|     flex-shrink: 0;
 | |
|     padding: 2px 6px;
 | |
|     background-color: var(--bg-tertiary);
 | |
|     border-radius: 3px;
 | |
| }
 | |
| 
 | |
| /* Children container */
 | |
| .tree-children {
 | |
|     margin-left: 8px;
 | |
|     border-left: 1px solid var(--border-light);
 | |
|     padding-left: 4px;
 | |
|     max-height: 100%;
 | |
|     overflow: visible;
 | |
| }
 | |
| 
 | |
| .tree-children.collapsed {
 | |
|     display: none;
 | |
| }
 | |
| 
 | |
| .tree-node {
 | |
|     cursor: move;
 | |
| }
 | |
| 
 | |
| .tree-node.dragging {
 | |
|     opacity: 0.5;
 | |
|     background-color: rgba(13, 110, 253, 0.1);
 | |
| }
 | |
| 
 | |
| .tree-node.drag-over {
 | |
|     background-color: rgba(13, 110, 253, 0.2) !important;
 | |
|     border: 1px dashed var(--link-color);
 | |
|     border-radius: 4px;
 | |
| }
 | |
| 
 | |
| /* Collection selector - Bootstrap styled */
 | |
| .collection-selector {
 | |
|     margin: 12px 8px;
 | |
|     padding: 8px 12px;
 | |
|     background-color: var(--bg-tertiary);
 | |
|     border-radius: 6px;
 | |
|     border: 1px solid var(--border-color);
 | |
| }
 | |
| 
 | |
| .collection-selector .form-label {
 | |
|     margin-bottom: 6px;
 | |
|     font-weight: 500;
 | |
|     font-size: 12px;
 | |
|     color: var(--text-secondary);
 | |
| }
 | |
| 
 | |
| .collection-selector .form-select-sm {
 | |
|     padding: 4px 8px;
 | |
|     font-size: 13px;
 | |
|     background-color: var(--bg-primary);
 | |
|     color: var(--text-primary);
 | |
|     border: 1px solid var(--border-color);
 | |
| }
 | |
| 
 | |
| .collection-selector .form-select-sm:focus {
 | |
|     border-color: var(--link-color);
 | |
|     box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);
 | |
| }
 | |
| 
 | |
| /* Dark mode adjustments */
 | |
| body.dark-mode .tree-node:hover {
 | |
|     background-color: var(--bg-tertiary);
 | |
| }
 | |
| 
 | |
| body.dark-mode .tree-node.active {
 | |
|     background-color: var(--link-color);
 | |
| }
 | |
| 
 | |
| body.dark-mode .tree-children {
 | |
|     border-left-color: var(--border-color);
 | |
| }
 | |
| 
 | |
| /* Scrollbar in sidebar */
 | |
| .sidebar::-webkit-scrollbar-thumb {
 | |
|     background-color: var(--border-color);
 | |
| }
 | |
| 
 | |
| .sidebar::-webkit-scrollbar-thumb:hover {
 | |
|     background-color: var(--text-secondary);
 | |
| } |