/* Global styles */ body, html { margin: 0; padding: 0; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f0f2f5; color: #333; } * { box-sizing: border-box; margin: 0; padding: 0; } #app { display: flex; height: 100vh; } /* Components panel */ #components-panel { flex: 1; padding: 10px; background-color: #fff; overflow-y: auto; display: flex; flex-direction: row; flex-wrap: wrap; align-content: flex-start; gap: 10px; border-right: 1px solid #e0e0e0; } .component-item { width: calc(50% - 5px); height: 80px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; } .component-item .grid-stack-item-content { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; } #canvas-panel .grid-stack-item-content { height: auto; } #components-panel .grid-stack-item { background-color: #fff; border: 1px solid #e0e0e0; } .component-item i { font-size: 18px; margin-bottom: 5px; color: #007bff; } .component-item span { font-size: 14px; } /* Canvas panel */ #canvas-panel { flex: 4; height: 100%; background-color: #f9f9f9; position: relative; overflow-y: auto; padding: 10px; } .grid-stack-item-content { cursor: pointer; background: #fff; } .global-save-button-container { position: absolute; top: 20px; right: 20px; z-index: 99; } .global-save-button { padding: 10px 20px; background-color: #28a745; color: #fff; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; transition: background-color 0.3s; } .global-save-button:hover { background-color: #218838; } /* Props panel */ #props-panel { flex: 1; padding: 10px; background-color: #fff; overflow-y: auto; border-left: 1px solid #e0e0e0; } .form-item { margin-bottom: 20px; } .form-item label { display: block; margin-bottom: 8px; font-weight: 600; color: #555; } .form-item input, .form-item textarea { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; transition: border-color 0.3s; } .form-item input:focus, .form-item textarea:focus { outline: none; border-color: #007bff; } .form-actions { display: flex; justify-content: space-between; margin-top: 30px; } .form-actions button { padding: 10px 15px; border: none; border-radius: 5px; cursor: pointer; font-size: 14px; transition: background-color 0.3s; flex: 1; margin: 0 5px; } .save-button { background-color: #007bff; color: #fff; } .save-button:hover { background-color: #0056b3; } .delete-button { background-color: #dc3545; color: #fff; } .delete-button:hover { background-color: #c82333; } /* Scrollbar styles */ ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #ccc; border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: #aaa; } /* Responsive layout */ @media (max-width: 1200px) { #components-panel { grid-template-columns: 1fr; } }