Files
ai-code-app/src/app/main/ResourceManagementPage.css

658 lines
15 KiB
CSS

.resource-management-page {
position: relative;
display: grid;
grid-template-columns: minmax(260px, 320px) minmax(320px, 1fr) minmax(360px, 1.08fr);
gap: 16px;
height: 100%;
min-height: 0;
overflow: hidden;
-webkit-touch-callout: none;
}
.resource-management-page__mobile-nav,
.resource-management-page__mobile-card {
display: none;
}
.resource-management-page__sidebar,
.resource-management-page__content,
.resource-management-page__preview-card {
min-height: 0;
border-radius: 22px;
overflow: clip;
box-sizing: border-box;
}
.resource-management-page__sidebar.ant-card,
.resource-management-page__content.ant-card,
.resource-management-page__preview-card.ant-card {
display: flex;
flex-direction: column;
min-height: 0;
border: 0;
box-shadow:
inset 0 0 0 1px rgba(191, 204, 229, 0.92),
0 16px 40px rgba(15, 23, 42, 0.08);
}
.resource-management-page__sidebar .ant-card-head,
.resource-management-page__content .ant-card-head,
.resource-management-page__preview-card .ant-card-head {
min-height: 58px;
}
.resource-management-page__sidebar .ant-card-body,
.resource-management-page__content .ant-card-body,
.resource-management-page__preview-card .ant-card-body {
display: flex;
flex: 1 1 auto;
flex-direction: column;
gap: 12px;
padding: 16px;
min-height: 0;
height: auto;
}
.resource-management-page__scope-copy {
display: block;
}
.resource-management-page__tree {
flex: 1;
min-height: 0;
overflow: auto;
padding-right: 4px;
}
.resource-management-page__tree .ant-tree-node-content-wrapper {
width: 100%;
border-radius: 12px;
user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}
.resource-management-page__tree-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
min-width: 0;
user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}
.resource-management-page__content {
min-height: 0;
}
.resource-management-page__preview-card {
min-height: 0;
}
.resource-management-page__workspace {
display: flex;
flex: 1;
flex-direction: column;
gap: 12px;
min-height: 0;
}
.resource-management-page__toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
}
.resource-management-page__toolbar-main,
.resource-management-page__toolbar-actions {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.resource-management-page__guide {
margin: 0;
}
.resource-management-page__list-shell {
display: flex;
flex: 1;
flex-direction: column;
min-height: 0;
border: 0;
border-radius: 18px;
background:
linear-gradient(180deg, rgba(249, 251, 255, 0.96), rgba(241, 246, 255, 0.92)),
#fff;
box-shadow: inset 0 0 0 1px #dfe6f4;
overflow: clip;
box-sizing: border-box;
-webkit-touch-callout: none;
}
.resource-management-page__list-header,
.resource-management-page__list-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 160px 88px 76px;
gap: 12px;
align-items: center;
}
.resource-management-page__list-header {
padding: 12px 16px;
border-bottom: 1px solid #e9eef8;
color: #6b7280;
font-size: 12px;
font-weight: 600;
}
.resource-management-page__list-body {
flex: 1;
min-height: 0;
overflow: auto;
}
.resource-management-page__list-row {
padding: 12px 16px;
border-bottom: 1px solid #eef2fa;
cursor: pointer;
transition: background-color 0.18s ease, transform 0.18s ease;
user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}
.resource-management-page__list-row:hover {
background: rgba(222, 234, 255, 0.42);
}
.resource-management-page__list-row--selected {
background: rgba(186, 209, 255, 0.34);
}
.resource-management-page__list-row--parent {
background: rgba(241, 245, 255, 0.92);
}
.resource-management-page__list-name,
.resource-management-page__entry-name {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.resource-management-page__list-meta {
display: contents;
}
.resource-management-page__entry-name-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.resource-management-page__preview-card .ant-card-body {
display: flex;
flex-direction: column;
gap: 12px;
min-height: 0;
overflow: hidden;
padding-bottom: 17px;
}
.resource-management-page__preview-frame {
width: 100%;
min-height: 0;
flex: 1;
border: 0;
border-radius: 16px;
background: #fff;
box-shadow: inset 0 0 0 1px #d9e1f2;
box-sizing: border-box;
}
.resource-management-page__text-preview {
flex: 1;
min-height: 0;
margin: 0;
padding: 16px;
overflow: auto;
border: 0;
border-radius: 16px;
background: #fff;
box-shadow: inset 0 0 0 1px #d9e1f2;
box-sizing: border-box;
color: #111827;
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
font-size: 13px;
line-height: 1.6;
white-space: pre-wrap;
word-break: break-word;
}
.resource-management-page__image-preview {
width: 100%;
max-height: 100%;
object-fit: contain;
border: 0;
border-radius: 16px;
background: #fff;
box-shadow: inset 0 0 0 1px #d9e1f2;
box-sizing: border-box;
}
.resource-management-page__zoom-shell,
.resource-management-page__preview-modal-body {
display: flex;
flex: 1;
min-height: 0;
}
.resource-management-page__zoom-shell {
align-items: center;
justify-content: center;
overflow: clip;
border: 0;
border-radius: 16px;
background: #0b1220;
box-shadow: inset 0 0 0 1px #d9e1f2;
box-sizing: border-box;
scrollbar-gutter: stable both-edges;
}
.resource-management-page__zoom-shell--touch-zoom {
touch-action: none;
overscroll-behavior: contain;
}
.resource-management-page__zoom-shell--image {
padding: 16px;
}
.resource-management-page__image-preview--zoomable {
width: 100%;
height: 100%;
object-fit: contain;
border: 0;
border-radius: 0;
transform-origin: center center;
will-change: transform;
}
.resource-management-page__frame-zoom-shell {
width: 100%;
min-width: 100%;
height: 100%;
min-height: 100%;
overflow: hidden;
transform-origin: center center;
will-change: transform;
}
.resource-management-page__preview-frame--zoomable {
min-width: 100%;
min-height: 100%;
border: 0;
border-radius: 0;
transform-origin: center center;
pointer-events: none;
}
.resource-management-page__preview-modal-toolbar {
display: flex;
align-items: center;
justify-content: stretch;
gap: 12px;
padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
border-top: 1px solid rgba(217, 225, 242, 0.9);
background: rgba(255, 255, 255, 0.96);
backdrop-filter: blur(14px);
flex: 0 0 auto;
min-height: 72px;
box-sizing: border-box;
}
.resource-management-page__preview-modal-toolbar-slider {
flex: 1 1 auto;
min-width: 0;
}
.resource-management-page__preview-modal-toolbar-slider .ant-slider {
margin: 0;
}
.resource-management-page__preview-modal-toolbar-button {
width: 44px;
min-width: 44px;
height: 44px;
padding-inline: 0;
flex: 0 0 44px;
}
.resource-management-page__preview-modal-toolbar-value {
flex: 0 0 56px;
width: 56px;
text-align: center;
font-variant-numeric: tabular-nums;
}
.resource-management-page__preview-modal-body {
overflow: hidden;
background: #0b1220;
}
.resource-management-page__preview-modal-shell {
display: flex;
flex-direction: column;
height: 100%;
min-height: 0;
}
.resource-management-page__preview-modal-shell .resource-management-page__preview-modal-body {
flex: 1 1 auto;
min-height: 0;
padding: 0;
}
.resource-management-page__editor {
min-height: 260px;
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
}
.resource-management-page__empty {
display: flex;
align-items: center;
justify-content: center;
min-height: 160px;
padding: 24px 16px;
}
.resource-management-page__context-menu {
position: fixed;
z-index: 1200;
display: flex;
flex-direction: column;
min-width: 208px;
padding: 8px;
border: 1px solid rgba(15, 23, 42, 0.08);
border-radius: 16px;
background: rgba(255, 255, 255, 0.98);
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.16);
backdrop-filter: blur(18px);
}
.resource-management-page__context-menu-backdrop {
position: fixed;
inset: 0;
z-index: 1199;
background: transparent;
}
.resource-management-page__context-menu button {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
padding: 11px 12px;
border: 0;
border-radius: 12px;
background: transparent;
color: #111827;
font: inherit;
text-align: left;
}
.resource-management-page__context-menu button:hover {
background: rgba(222, 234, 255, 0.42);
}
.resource-management-page__context-menu button.danger {
color: #b42318;
}
.resource-management-page__context-menu button.danger:hover {
background: rgba(254, 226, 226, 0.72);
}
.resource-management-page__file-input {
position: fixed;
width: 1px;
height: 1px;
margin: 0;
padding: 0;
border: 0;
opacity: 0;
pointer-events: none;
inset: auto auto -100vh -100vw;
}
@media (max-width: 1180px) {
.resource-management-page {
grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
}
.resource-management-page__preview-card {
grid-column: 1 / -1;
}
}
@media (max-width: 768px) {
.resource-management-page {
display: flex;
flex-direction: column;
gap: 12px;
}
.resource-management-page--mobile {
min-height: 0;
padding-inline: 1px;
padding-bottom: max(10px, calc(env(safe-area-inset-bottom, 0px) + 6px));
box-sizing: border-box;
}
.resource-management-page--mobile > .resource-management-page__sidebar,
.resource-management-page--mobile > .resource-management-page__content,
.resource-management-page--mobile > .resource-management-page__preview-card {
display: none;
}
.resource-management-page__mobile-nav {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
flex: 0 0 auto;
}
.resource-management-page__mobile-card {
display: flex;
flex: 1 1 auto;
min-height: 0;
}
.resource-management-page__mobile-card > .ant-card {
flex: 1 1 auto;
min-height: 0;
height: auto;
}
.resource-management-page__sidebar .ant-card-body,
.resource-management-page__content .ant-card-body,
.resource-management-page__preview-card .ant-card-body {
padding: 14px;
padding-bottom: 15px;
}
.resource-management-page__list-header {
display: none;
}
.resource-management-page__list-row {
grid-template-columns: minmax(0, 1fr) auto;
grid-template-areas:
'name actions'
'meta meta';
row-gap: 6px;
}
.resource-management-page__list-name {
grid-area: name;
}
.resource-management-page__list-meta {
grid-area: meta;
display: flex;
justify-content: space-between;
gap: 12px;
font-size: 12px;
color: #6b7280;
}
.resource-management-page__list-meta span {
font-size: 12px;
}
.resource-management-page__list-row > .ant-space {
grid-area: actions;
justify-self: end;
}
.resource-management-page__context-menu {
min-width: min(208px, calc(100vw - 24px));
}
.resource-management-page__toolbar {
align-items: stretch;
}
.resource-management-page__toolbar-main,
.resource-management-page__toolbar-actions {
width: 100%;
}
.resource-management-page__toolbar-actions .ant-btn {
flex: 1 1 0;
}
.resource-management-page__preview-frame,
.resource-management-page__image-preview,
.resource-management-page__text-preview {
min-height: 220px;
}
.resource-management-page__editor {
min-height: 0;
height: 100%;
}
.resource-management-page__preview-card .ant-tabs,
.resource-management-page__preview-card .ant-tabs-content-holder,
.resource-management-page__preview-card .ant-tabs-content,
.resource-management-page__preview-card .ant-tabs-tabpane {
min-height: 0;
height: 100%;
}
.resource-management-page__preview-card .ant-tabs-content-holder {
overflow: hidden;
padding-bottom: 1px;
box-sizing: border-box;
}
.resource-management-page__preview-card .ant-tabs-tabpane-active {
display: flex;
flex-direction: column;
}
.resource-management-page--panel-preview .resource-management-page__preview-card .ant-card-body {
gap: 8px;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal {
width: 100vw !important;
max-width: 100vw;
margin: 0;
padding: 0;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-content {
border-radius: 0;
min-height: 100dvh;
background: #0b1220;
padding: 0;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-header {
padding: calc(12px + env(safe-area-inset-top, 0px)) 64px 12px 16px;
margin-bottom: 0;
background: #0b1220;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-title {
color: #f8fafc;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-close {
top: calc(8px + env(safe-area-inset-top, 0px));
right: 8px;
width: 44px;
height: 44px;
color: #f8fafc;
background: rgba(15, 23, 42, 0.92);
border: 1px solid rgba(226, 232, 240, 0.22);
border-radius: 999px;
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-close:hover,
.resource-management-page__preview-modal-wrap--mobile .ant-modal-close:focus-visible {
color: #ffffff;
background: rgba(30, 41, 59, 0.98);
}
.resource-management-page__preview-modal-wrap--mobile .ant-modal-body {
height: calc(100dvh - 56px) !important;
background: #0b1220;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-shell .resource-management-page__preview-modal-body {
padding: 0;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__zoom-shell {
border: 0;
border-radius: 0;
min-height: 100%;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__zoom-shell--image {
padding: 0;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-frame,
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__image-preview {
border: 0;
border-radius: 0;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar {
gap: 10px;
padding-inline: 12px;
min-height: 76px;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar .ant-btn {
flex: 0 0 auto;
}
.resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar-value {
flex-basis: 52px;
width: 52px;
}
}