import { css } from 'lit'; export const styles = css` :host { box-sizing: border-box; -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing)); -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing)); text-rendering: var(--nile-text-rendering, var(--ng-text-rendering)); } :host *, :host *::before, :host *::after { box-sizing: inherit; } [hidden] { display: none; } :host { display: block; width: 100%; } .detail { border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary)); border-radius: var(--nile-radius-md, var(--ng-radius-xl)); background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary)); box-shadow: var(--nile-box-shadow-3, var(--ng-shadow-xs)); overflow: hidden; width: 100%; line-height: var(--nile-line-height-inherit, var(--ng-line-height-text-sm)); font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body)); } .detail--disabled { opacity: var(--nile-opacity-50, var(--ng-opacity-50)); } .detail__header { display: flex; gap: var(--nile-spacing-lg, var(--ng-spacing-lg)); align-items: center; border-radius: inherit; padding: var(--nile-spacing-xl, var(--ng-spacing-xl)); background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-tertiary)); font-size: var(--nile-type-scale-4, var(--ng-spacing-xl)); font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-semibold)); color: var(--nile-colors-neutral-900, var(--ng-colors-text-primary)); user-select: none; cursor: pointer; list-style: none; } .detail__header::-webkit-details-marker { display: none; } .detail__header::marker { content: ''; } .detail__header--icon-left { flex-direction: row-reverse; } .detail__header:focus { outline: none; } .detail__header:focus-visible { outline: solid 3px var(--nile-colors-blue-500, var(--ng-colors-fg-brand-primary-600)); outline-offset: calc(1px + 1px); } .detail--disabled .detail__header { cursor: not-allowed; } .detail--disabled .detail__header:focus-visible { outline: none; box-shadow: none; } .detail__label { width: 100%; display: flex; flex-direction: column; } .detail__header-actions { flex: 0 0 auto; display: flex; align-items: center; gap: var(--nile-spacing-sm, var(--ng-spacing-sm)); } .detail__prefix { flex: 0 0 auto; display: flex; align-items: center; gap: var(--nile-spacing-sm, var(--ng-spacing-sm)); } .detail__suffix { flex: 0 0 auto; display: flex; align-items: center; gap: var(--nile-spacing-sm, var(--ng-spacing-sm)); } .detail__heading-text { font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-semibold)); font-family: var(--nile-font-family-medium, var(--ng-font-family-body)); font-size: var(--nile-type-scale-4, var(--ng-spacing-xl)); } .detail__description { font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs)); font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular)); color: var(--nile-colors-dark-500, var(--ng-colors-text-secondary)); margin-top: 2px; } .detail__summary-icon { flex: 0 0 auto; display: flex; align-items: center; transition: 250ms transform ease; color: var(--nile-colors-neutral-700, var(--ng-colors-text-secondary)); transform: rotate(90deg); } .detail--open .detail__summary-icon { transform: rotate(-90deg); } .detail__body { overflow: hidden; } .detail__body[hidden] { display: none; } .detail__content { display: block; padding: var(--nile-spacing-xl, var(--ng-spacing-xl)); } .detail__content--empty { display: none; padding: 0; } /* ── Preview state ──────────────────────────────────────────────────────── */ .detail__body--preview { position: relative; cursor: pointer; } .detail__body--preview::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: var(--nile-detail-preview-fade-height, 40px); background: linear-gradient( to bottom, transparent, var(--nile-colors-white-base, var(--ng-colors-bg-primary)) ); pointer-events: none; } .detail__body--preview:focus { outline: none; } .detail__body--preview:focus-visible { outline: solid 3px var(--nile-colors-blue-500, var(--ng-colors-fg-brand-primary-600)); outline-offset: -3px; } .detail--disabled .detail__body--preview { cursor: not-allowed; } /* ── Selection variant ──────────────────────────────────────────────────── */ .detail__selection-label { display: flex; align-items: center; gap: var(--nile-spacing-lg, var(--ng-spacing-lg)); flex: 1; min-width: 0; } .detail__select-all { flex: 0 0 auto; } .detail__selection-title { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; } .detail__selection-count { font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs)); font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular)); color: var(--nile-colors-dark-500, var(--ng-colors-text-secondary)); margin-top: 2px; } .detail__selection-content { padding: var(--nile-spacing-xl, var(--ng-spacing-xl)); } .detail__selection-toolbar { display: flex; align-items: center; gap: var(--nile-spacing-lg, var(--ng-spacing-lg)); margin-bottom: var(--nile-spacing-lg, var(--ng-spacing-lg)); } .detail__selection-search { flex: 1; min-width: 0; } .detail__selection-search-slot { display: flex; flex: 1; min-width: 0; } .detail__selection-search-slot::slotted(*) { flex: 1; min-width: 0; } .detail__selected-toggle { display: inline-flex; align-items: center; gap: 6px; } .detail__selection-actions { display: flex; align-items: center; gap: var(--nile-spacing-xl, var(--ng-spacing-xl)); flex: 0 0 auto; } .detail__selection-grid { display: grid; grid-auto-flow: column; gap: 8px 24px; overflow-x: auto; overflow-y: hidden; padding: 4px 4px 8px; scroll-snap-type: x proximity; } .detail__selection-grid--virtual { display: block; position: relative; width: 100%; contain: layout paint; } .detail__selection-grid--virtual.detail__selection-grid--vertical { overflow-x: hidden; overflow-y: auto; scroll-snap-type: y proximity; } .detail__selection-grid--virtual.detail__selection-grid--vertical::-webkit-scrollbar { width: 8px; height: 0; } .detail__selection-grid--virtual.detail__selection-grid--both { overflow: auto; scroll-snap-type: none; } .detail__selection-grid--virtual.detail__selection-grid--both::-webkit-scrollbar { width: 8px; height: 8px; } .detail__selection-grid--virtual .detail__selection-track { position: relative; } .detail__selection-tooltip--virtual { box-sizing: border-box; padding-right: 24px; } .detail__selection-grid > nile-checkbox, .detail__selection-grid > .detail__selection-tooltip { scroll-snap-align: start; min-width: 0; display: block; max-width: 100%; overflow: visible; padding-left: 4px; } .detail__selection-checkbox { display: block; width: 100%; min-width: 0; } .detail__selection-checkbox::part(base) { display: flex; width: 100%; min-width: 0; align-items: center; } .detail__selection-checkbox::part(label) { flex: 1 1 auto; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .detail__selection-checkbox--disabled { opacity: 0.5; pointer-events: none; } .detail__selection-text { display: inline-flex; flex-direction: column; min-width: 0; flex: 1 1 auto; line-height: 1.25; } .detail__selection-item-label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .detail__selection-desc { display: block; font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs)); color: var(--nile-colors-dark-500, var(--ng-colors-text-secondary)); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .detail__selection-prefix, .detail__selection-suffix { display: inline-flex; align-items: center; flex: 0 0 auto; margin: 0 6px; color: var(--nile-colors-dark-500, var(--ng-colors-text-secondary)); } .detail__selection-prefix { margin-left: 0; } .detail__selection-suffix { margin-right: 0; } .detail__selection-placeholder { display: flex; align-items: center; gap: 10px; padding: 4px 8px; box-sizing: border-box; opacity: 0.6; } .detail__selection-placeholder-bar { width: 16px; height: 16px; border-radius: 4px; background: linear-gradient( 90deg, rgba(0,0,0,0.06) 0%, rgba(0,0,0,0.12) 50%, rgba(0,0,0,0.06) 100% ); background-size: 200% 100%; animation: nile-detail-shimmer 1.4s linear infinite; flex: 0 0 auto; } .detail__selection-placeholder-label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs)); color: var(--nile-colors-dark-500, var(--ng-colors-text-secondary)); background: linear-gradient( 90deg, rgba(0,0,0,0.06) 0%, rgba(0,0,0,0.12) 50%, rgba(0,0,0,0.06) 100% ); background-size: 200% 100%; background-clip: text; -webkit-background-clip: text; color: transparent; animation: nile-detail-shimmer 1.4s linear infinite; } @keyframes nile-detail-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .detail__selection-grid::-webkit-scrollbar { height: 8px; } .detail__selection-grid::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 4px; } /* ── Light variant ──────────────────────────────────────────────────────── */ .detail--light .detail__header { background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary)); padding: var(--nile-spacing-xl, var(--ng-spacing-xl)) var(--nile-spacing-3xl, var(--ng-spacing-3xl)); } .detail--light.detail--open .detail__header, .detail--light.detail--preview .detail__header { border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary)); } .detail--light .detail__content, .detail--light .detail__selection-content { padding: var(--nile-spacing-3xl, var(--ng-spacing-3xl)); } `; export default [styles];