/* Reusable UI/UX style for BaseResponsiveDataView Prefix khusus: brdvx- (agar tidak bentrok dengan style existing) */ .brdvx-page-row { --cui-gutter-x: 0; margin-right: 0; margin-left: 0; } .brdvx-page-column { padding-right: 0; padding-left: 0; } .brdvx-page-container { margin: 0; padding-right: 0.5rem; padding-left: 0.5rem; } .brdvx-page-header { margin-bottom: 0.85rem; } .brdvx-root { --brdvx-font-size: 0.9rem; --brdvx-font-size-label: 0.78rem; --brdvx-font-size-heading: 0.84rem; --brdvx-font-weight-normal: 400; --brdvx-font-weight-medium: 500; --brdvx-font-weight-heading: 600; width: 100%; font-size: var(--brdvx-font-size); } .brdvx-loading-state { display: flex; min-height: 220px; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; color: var(--cui-secondary-color); } .brdvx-loading-text { margin: 0; font-size: 0.9rem; font-weight: 400; } .brdvx-inline-loading { display: flex; min-height: 2.5rem; align-items: center; justify-content: center; gap: 0.55rem; margin-bottom: 0.5rem; color: var(--cui-secondary-color); font-size: 0.875rem; font-weight: 400; } .brdvx-root .data-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; margin-bottom: 0.9rem; flex-wrap: wrap; } .brdvx-root .toolbar-left { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; } .brdvx-root .per-page-wrap { display: inline-flex; align-items: center; gap: 0.45rem; } .brdvx-root .toolbar-label { font-size: 0.875rem; font-weight: var(--brdvx-font-weight-normal); color: var(--cui-secondary-color); margin: 0; } .brdvx-root .per-page-select { min-width: 80px; } .brdvx-root .mode-switch { display: inline-flex; gap: 0.35rem; } .brdvx-root .toolbar-search-wrap { display: flex; align-items: center; gap: 0.45rem; min-width: 220px; width: min(420px, 100%); } .brdvx-root .toolbar-search { flex: 1; } .brdvx-root .view-toggle-btn { display: inline-flex; align-items: center; justify-content: center; } .brdvx-root .cards-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.75rem; } .brdvx-root .cards-grid.mobile { grid-template-columns: repeat(2, minmax(0, 1fr)); } .brdvx-root .mobile-card { display: flex; flex-direction: column; height: 100%; border-radius: 0.75rem; border: 1px solid var(--cui-border-color); box-shadow: 0 2px 12px rgba(33, 37, 41, 0.06); overflow: hidden; } .brdvx-root .mobile-image-header { width: 100%; max-height: 160px; aspect-ratio: 10 / 7; background: #f1f3f5; } .brdvx-root .mobile-image { width: 100%; max-height: 160px; object-fit: cover; } .brdvx-root .mobile-card-header { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; padding: 0.55rem 0.75rem; border-bottom: 1px solid var(--cui-border-color); background: var(--cui-tertiary-bg); } .brdvx-root .mobile-card-title { font-weight: var(--brdvx-font-weight-heading); font-size: 0.95rem; color: var(--cui-body-color); } .brdvx-root .mobile-card-body { display: flex; flex: 1 1 auto; flex-direction: column; padding: 0.65rem 0.75rem; } .brdvx-root .mobile-fields { display: grid; gap: 0.38rem; } .brdvx-root .mobile-field { display: grid; grid-template-columns: minmax(70px, 1fr) minmax(0, 1fr); align-items: start; gap: 0.45rem; padding-bottom: 0.3rem; border-bottom: 1px dashed var(--cui-border-color); } .brdvx-root .mobile-field:last-child { border-bottom: none; padding-bottom: 0; } .brdvx-root .field-label { font-size: var(--brdvx-font-size-label); color: var(--cui-secondary-color); text-transform: uppercase; letter-spacing: 0.25px; font-weight: var(--brdvx-font-weight-heading); } .brdvx-root .field-value { font-size: var(--brdvx-font-size); color: var(--cui-body-color); font-weight: var(--brdvx-font-weight-normal); word-break: break-word; text-align: right; } .brdvx-root .mobile-actions { margin-top: auto; padding-top: 0.55rem; display: flex; justify-content: flex-end; gap: 0.3rem; flex-wrap: wrap; } .brdvx-root .table-list-wrapper { border-radius: 0.75rem; overflow: hidden; // background: #fff; // border: 1px solid #e9ecef; display: grid; gap: 0.25rem; padding: 0.25rem; } .brdvx-root .table-list-head { display: grid; width: 100%; gap: 0.55rem 0.75rem; padding: 0 0.65rem 0.35rem; border-bottom: 1px solid var(--cui-border-color); margin-bottom: 0.2rem; align-items: end; } .brdvx-root .table-list-head-cell { font-size: var(--brdvx-font-size-heading); color: var(--cui-secondary-color); font-weight: var(--brdvx-font-weight-heading); text-transform: uppercase; } .brdvx-root .table-list-card { border: 1px solid var(--cui-border-color); border-radius: 0.65rem; } .brdvx-root .table-list-card-body { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; padding: 0.65rem; } .brdvx-root .table-list-main { display: grid; grid-template-columns: 1fr; gap: 0.55rem 0.75rem; flex: 1; min-width: 0; } .brdvx-root .table-list-main.with-image { grid-template-columns: 15% 85%; align-items: start; gap: 0.65rem; } .brdvx-root .table-list-image-col { min-width: 0; } .brdvx-root .table-list-mobile-image { width: 100%; aspect-ratio: 1 / 1; border-radius: 0.55rem; object-fit: cover; border: 1px solid var(--cui-border-color); } .brdvx-root .table-list-data-col { display: grid; width: 100%; gap: 0.55rem 0.75rem; align-items: center; } .brdvx-root .desktop-row-grid { grid-template-columns: repeat(var(--brdvx-desktop-cols, 6), minmax(120px, 1fr)); } .brdvx-root .table-list-cell { display: grid; gap: 0.2rem; min-width: 0; } .brdvx-root .table-list-value { display: block; width: 100%; min-width: 0; max-width: 100%; font-size: var(--brdvx-font-size); color: var(--cui-body-color); font-weight: var(--brdvx-font-weight-normal); text-align: left; white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .brdvx-sort-button { display: inline-flex; width: 100%; align-items: center; justify-content: flex-start; gap: 0.35rem; padding: 0; color: inherit; font: inherit; text-align: left; text-transform: uppercase; background: transparent; border: 0; } .brdvx-sort-button:hover { color: var(--cui-primary); } .brdvx-root .row-pair { display: flex; width: 100%; min-width: 0; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 0.5rem; } .brdvx-root .row-left { color: var(--cui-secondary-color); font-weight: var(--brdvx-font-weight-heading); font-size: var(--brdvx-font-size-label); text-align: left; } .brdvx-root .row-left.no-label { text-transform: none; } .brdvx-root .row-right { flex: 1 1 100%; text-align: left; min-width: 0; max-width: 100%; overflow: visible; text-overflow: clip; white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .brdvx-root .row-right.no-label { width: 100%; } .brdvx-root .table-list-right { display: inline-flex; align-items: center; justify-content: flex-end; gap: 0.35rem; margin-left: auto; width: var(--brdvx-action-col-width, 230px); min-width: var(--brdvx-action-col-width, 230px); } .brdvx-root .table-avatar { width: 55px; height: 55px; border-radius: 50%; object-fit: cover; } .brdvx-root .table-actions { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; justify-content: flex-end; width: 100%; } .brdvx-root .table-list-hidden { border-top: 1px dashed var(--cui-border-color); padding: 0.55rem 0.65rem 0.65rem; display: grid; gap: 0.35rem; } .brdvx-root .hidden-item { display: grid; grid-template-columns: minmax(80px, 1fr) minmax(0, 1fr); gap: 0.5rem; } .brdvx-root .hidden-label { font-size: var(--brdvx-font-size-label); color: var(--cui-secondary-color); font-weight: var(--brdvx-font-weight-heading); } .brdvx-root .hidden-value { font-size: var(--brdvx-font-size); color: var(--cui-body-color); font-weight: var(--brdvx-font-weight-normal); } .brdvx-root .pagination-center { margin-top: 0.9rem; display: flex; justify-content: center; } @media (max-width: 1200px) { .brdvx-root .cards-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } } @media (max-width: 992px) { .brdvx-root .cards-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } } @media (max-width: 768px) { .brdvx-root .data-toolbar { justify-content: center; } .brdvx-root .toolbar-left { width: 100%; justify-content: center; } .brdvx-root .toolbar-search { width: 100%; max-width: 360px; } .brdvx-root .table-list-card-body { flex-direction: column; } .brdvx-root .table-list-main { width: 100%; } .brdvx-root .table-list-data-col { grid-template-columns: 1fr; } .brdvx-root .table-list-data-col.mobile-split { grid-template-columns: 1fr 1fr; gap: 0.6rem; } .brdvx-root .mobile-col { display: grid; gap: 0.35rem; } .brdvx-root .row-left { text-align: left; } .brdvx-root .row-right { text-align: left; } .brdvx-root .table-list-right { width: 100%; justify-content: space-between; } .brdvx-root .table-actions { overflow-x: auto; max-width: 100%; } } @media (max-width: 420px) { .brdvx-root .cards-grid.mobile { gap: 0.5rem; } .brdvx-root .mobile-card { border-radius: 0.65rem; } .brdvx-root .mobile-card-body { padding: 0.55rem 0.6rem; } .brdvx-root .field-label { font-size: 0.74rem; } .brdvx-root .field-value { font-size: 0.85rem; } }