@gongfu/prompt-editor
Version:
A powerful prompt engineering editor SDK for AI applications
486 lines • 10 kB
CSS
/* src/styles/prompt-editor.css */
.prompt-editor {
display: flex;
flex-direction: column;
height: 100%;
background-color: var(--pe-bg-primary);
color: var(--pe-text-primary);
border: 1px solid var(--pe-border);
border-radius: 8px;
overflow: hidden;
font-family:
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
"Helvetica Neue",
Arial,
sans-serif;
}
.prompt-editor--light {
--pe-bg-primary: #ffffff;
--pe-bg-secondary: #f5f5f5;
--pe-bg-hover: #e8e8e8;
--pe-text-primary: #333333;
--pe-text-secondary: #666666;
--pe-border: #e0e0e0;
--pe-primary: #2563eb;
--pe-primary-hover: #1d4ed8;
--pe-danger: #dc2626;
--pe-success: #16a34a;
}
.prompt-editor--dark {
--pe-bg-primary: #1a1a1a;
--pe-bg-secondary: #2a2a2a;
--pe-bg-hover: #3a3a3a;
--pe-text-primary: #e0e0e0;
--pe-text-secondary: #a0a0a0;
--pe-border: #404040;
--pe-primary: #3b82f6;
--pe-primary-hover: #2563eb;
--pe-danger: #ef4444;
--pe-success: #22c55e;
}
.prompt-editor__toolbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 16px;
background-color: var(--pe-bg-secondary);
border-bottom: 1px solid var(--pe-border);
gap: 16px;
}
.toolbar__group {
display: flex;
align-items: center;
gap: 8px;
}
.toolbar__btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 12px;
font-size: 14px;
font-weight: 500;
color: var(--pe-text-primary);
background-color: transparent;
border: 1px solid var(--pe-border);
border-radius: 6px;
cursor: pointer;
transition: all 0.2s;
}
.toolbar__btn:hover:not(:disabled) {
background-color: var(--pe-bg-hover);
}
.toolbar__btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.toolbar__btn--primary {
color: white;
background-color: var(--pe-primary);
border-color: var(--pe-primary);
}
.toolbar__btn--primary:hover:not(:disabled) {
background-color: var(--pe-primary-hover);
}
.toolbar__dropdown {
position: relative;
}
.toolbar__dropdown-menu {
position: absolute;
top: 100%;
right: 0;
margin-top: 4px;
min-width: 120px;
background-color: var(--pe-bg-primary);
border: 1px solid var(--pe-border);
border-radius: 6px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
display: none;
z-index: 10;
}
.toolbar__dropdown:hover .toolbar__dropdown-menu {
display: block;
}
.toolbar__dropdown-menu button {
display: block;
width: 100%;
padding: 8px 16px;
text-align: left;
font-size: 14px;
color: var(--pe-text-primary);
background: none;
border: none;
cursor: pointer;
}
.toolbar__dropdown-menu button:hover {
background-color: var(--pe-bg-hover);
}
.prompt-editor__main {
flex: 1;
display: flex;
overflow: hidden;
}
.prompt-editor__content {
flex: 1;
min-width: 0;
}
.prompt-editor__variables {
width: 300px;
background-color: var(--pe-bg-secondary);
border-right: 1px solid var(--pe-border);
overflow: hidden;
display: flex;
flex-direction: column;
}
.variable-panel {
display: flex;
flex-direction: column;
height: 100%;
}
.variable-panel__header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px;
border-bottom: 1px solid var(--pe-border);
}
.variable-panel__header h3 {
margin: 0;
font-size: 16px;
font-weight: 600;
}
.variable-panel__add-btn {
padding: 4px 12px;
font-size: 14px;
color: var(--pe-primary);
background: none;
border: 1px solid var(--pe-primary);
border-radius: 4px;
cursor: pointer;
transition: all 0.2s;
}
.variable-panel__add-btn:hover:not(:disabled) {
color: white;
background-color: var(--pe-primary);
}
.variable-panel__content {
flex: 1;
overflow-y: auto;
padding: 16px;
}
.variable-panel__empty {
text-align: center;
padding: 32px 16px;
color: var(--pe-text-secondary);
}
.variable-panel__empty p {
margin: 0 0 8px;
}
.variable-panel__empty small {
font-size: 12px;
}
.variable-item {
margin-bottom: 12px;
padding: 12px;
background-color: var(--pe-bg-primary);
border: 1px solid var(--pe-border);
border-radius: 6px;
}
.variable-item__header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
}
.variable-item__info {
display: flex;
align-items: center;
gap: 8px;
}
.variable-item__name code {
font-family:
Consolas,
"Courier New",
monospace;
font-size: 13px;
color: var(--pe-primary);
background-color: var(--pe-bg-secondary);
padding: 2px 6px;
border-radius: 3px;
}
.variable-item__type {
font-size: 12px;
color: var(--pe-text-secondary);
background-color: var(--pe-bg-secondary);
padding: 2px 8px;
border-radius: 3px;
}
.variable-item__required {
color: var(--pe-danger);
font-weight: bold;
}
.variable-item__actions {
display: flex;
gap: 4px;
}
.variable-item__action {
padding: 4px;
background: none;
border: none;
color: var(--pe-text-secondary);
cursor: pointer;
border-radius: 3px;
transition: all 0.2s;
}
.variable-item__action:hover {
background-color: var(--pe-bg-hover);
color: var(--pe-text-primary);
}
.variable-item__action--danger:hover {
color: var(--pe-danger);
}
.variable-item__description {
margin: 0 0 8px;
font-size: 13px;
color: var(--pe-text-secondary);
}
.variable-item__default,
.variable-item__options,
.variable-item__validation {
font-size: 12px;
color: var(--pe-text-secondary);
margin-top: 4px;
}
.variable-item__option {
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
background-color: var(--pe-bg-secondary);
border-radius: 3px;
}
.variable-form {
padding: 12px;
}
.form-group {
margin-bottom: 16px;
}
.form-group label {
display: block;
margin-bottom: 4px;
font-size: 13px;
font-weight: 500;
color: var(--pe-text-primary);
}
.form-group input[type=text],
.form-group input[type=number],
.form-group select,
.form-group textarea {
width: 100%;
padding: 6px 10px;
font-size: 14px;
color: var(--pe-text-primary);
background-color: var(--pe-bg-primary);
border: 1px solid var(--pe-border);
border-radius: 4px;
transition: border-color 0.2s;
}
.form-group input[type=text]:focus,
.form-group input[type=number]:focus,
.form-group select:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--pe-primary);
}
.form-group input[type=checkbox] {
margin-right: 6px;
}
.form-group input.error,
.form-group select.error,
.form-group textarea.error {
border-color: var(--pe-danger);
}
.error-message {
display: block;
margin-top: 4px;
font-size: 12px;
color: var(--pe-danger);
}
.option-row {
display: flex;
gap: 8px;
margin-bottom: 8px;
}
.option-row input {
flex: 1;
}
.option-row button {
padding: 4px 8px;
background: none;
border: 1px solid var(--pe-border);
color: var(--pe-danger);
cursor: pointer;
border-radius: 3px;
}
.option-row button:hover {
background-color: var(--pe-danger);
color: white;
}
.add-option-btn {
padding: 4px 12px;
font-size: 13px;
color: var(--pe-primary);
background: none;
border: 1px dashed var(--pe-primary);
border-radius: 4px;
cursor: pointer;
}
.add-option-btn:hover {
background-color: var(--pe-bg-hover);
}
.form-actions {
display: flex;
gap: 8px;
justify-content: flex-end;
margin-top: 16px;
}
.btn-primary,
.btn-secondary {
padding: 6px 16px;
font-size: 14px;
font-weight: 500;
border: none;
border-radius: 4px;
cursor: pointer;
transition: all 0.2s;
}
.btn-primary {
color: white;
background-color: var(--pe-primary);
}
.btn-primary:hover {
background-color: var(--pe-primary-hover);
}
.btn-secondary {
color: var(--pe-text-primary);
background-color: var(--pe-bg-secondary);
border: 1px solid var(--pe-border);
}
.btn-secondary:hover {
background-color: var(--pe-bg-hover);
}
.prompt-editor__preview {
width: 400px;
background-color: var(--pe-bg-secondary);
border-left: 1px solid var(--pe-border);
overflow: hidden;
display: flex;
flex-direction: column;
}
.preview-panel {
display: flex;
flex-direction: column;
height: 100%;
}
.preview-panel__header {
padding: 16px;
border-bottom: 1px solid var(--pe-border);
}
.preview-panel__header h3 {
margin: 0;
font-size: 16px;
font-weight: 600;
}
.preview-panel__content {
flex: 1;
overflow-y: auto;
padding: 16px;
}
.preview-panel__variables {
margin-bottom: 24px;
}
.preview-panel__variables h4 {
margin: 0 0 12px;
font-size: 14px;
font-weight: 600;
}
.preview-panel__variable {
margin-bottom: 12px;
}
.preview-panel__variable label {
display: block;
margin-bottom: 4px;
font-size: 13px;
font-weight: 500;
}
.preview-panel__variable input,
.preview-panel__variable select,
.preview-panel__variable textarea {
width: 100%;
padding: 6px 10px;
font-size: 14px;
background-color: var(--pe-bg-primary);
border: 1px solid var(--pe-border);
border-radius: 4px;
}
.preview-panel__variable small {
display: block;
margin-top: 4px;
font-size: 12px;
color: var(--pe-text-secondary);
}
.preview-panel__output h4 {
margin: 0 0 12px;
font-size: 14px;
font-weight: 600;
}
.preview-panel__output-content {
padding: 16px;
background-color: var(--pe-bg-primary);
border: 1px solid var(--pe-border);
border-radius: 6px;
}
.preview-panel__output-content pre {
margin: 0;
font-family:
Consolas,
"Courier New",
monospace;
font-size: 13px;
white-space: pre-wrap;
word-wrap: break-word;
color: var(--pe-text-primary);
}
.preview-panel__empty {
text-align: center;
color: var(--pe-text-secondary);
font-size: 14px;
}
.required {
color: var(--pe-danger);
margin-left: 2px;
}
details {
margin-top: 12px;
}
summary {
cursor: pointer;
font-size: 13px;
font-weight: 500;
color: var(--pe-text-secondary);
padding: 4px 0;
}
summary:hover {
color: var(--pe-text-primary);
}
details[open] summary {
margin-bottom: 8px;
}
.form-row {
margin-bottom: 8px;
}
.form-row label {
font-size: 12px;
}
/*# sourceMappingURL=index.css.map */