/** * Editor styles for the Visibility panel and condition cards. * * Aligned with the WordPress admin design language (grays, 2px/4px radii, * 40px controls, admin theme color). Loaded only in the block editor (enqueued * from the compiled `style-index.css`). */ $blocksieve-gray-900: #1e1e1e; $blocksieve-gray-700: #757575; $blocksieve-gray-600: #949494; $blocksieve-gray-300: #e0e0e0; $blocksieve-gray-100: #f0f0f0; $blocksieve-alert-red: #cc1818; $blocksieve-theme: var(--wp-admin-theme-color, #3858e9); $blocksieve-radius: 4px; .blocksieve-visibility-panel { &__relation { display: flex; flex-direction: column; gap: 8px; margin: 16px 0 12px; } &__relation-label { color: $blocksieve-gray-900; font-size: 11px; font-weight: 500; line-height: 1.4; text-transform: uppercase; } } /* Segmented All / Any switch. */ .blocksieve-match-relation { display: flex; padding: 2px; border: 1px solid $blocksieve-gray-600; border-radius: 2px; background: #fff; .components-button.blocksieve-match-relation__option { flex: 1 1 0; justify-content: center; height: 34px; border-radius: 1px; color: $blocksieve-gray-900; font-weight: 400; box-shadow: none; &:focus-visible { box-shadow: 0 0 0 var(--wp-admin-border-width-focus, 2px) $blocksieve-theme; } &:hover:not(.is-pressed) { color: $blocksieve-theme; } &.is-pressed, &.is-pressed:hover, &.is-pressed:focus:not(:disabled) { background: $blocksieve-gray-900; color: #fff; font-weight: 500; } } } .blocksieve-condition-group { display: flex; flex-direction: column; margin-top: 16px; &.is-loading { align-items: center; padding: 12px 0; } > .components-notice { margin: 0 0 12px; } &__empty { margin: 0 0 12px; padding: 12px; border: 1px dashed $blocksieve-gray-300; border-radius: $blocksieve-radius; color: $blocksieve-gray-700; font-size: 12px; line-height: 1.5; text-align: center; } > .blocksieve-type-menu { display: block; margin-top: 12px; } .components-button.blocksieve-condition-group__add { justify-content: center; width: 100%; &:focus:not(:disabled):not(:focus-visible) { box-shadow: inset 0 0 0 1px $blocksieve-theme; } } } /* AND / OR connector between condition cards. */ .blocksieve-condition-connector { position: relative; display: flex; justify-content: center; height: 28px; &::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; border-left: 1px solid $blocksieve-gray-300; } span { position: relative; align-self: center; padding: 1px 8px; border: 1px solid $blocksieve-gray-300; border-radius: 10px; background: #fff; color: $blocksieve-gray-700; font-size: 10px; font-weight: 600; letter-spacing: 0.04em; line-height: 16px; text-transform: uppercase; } } /* Condition cards. */ .blocksieve-condition-row { border: 1px solid $blocksieve-gray-300; border-radius: $blocksieve-radius; background: #fff; &__header { display: flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border-bottom: 1px solid $blocksieve-gray-300; background: #fafafa; border-radius: $blocksieve-radius $blocksieve-radius 0 0; } .blocksieve-type-menu { flex: 1 1 auto; min-width: 0; } .components-button.blocksieve-condition-row__type { gap: 6px; width: 100%; height: 32px; padding: 0 6px; border-radius: 2px; color: $blocksieve-gray-900; font-weight: 500; &:hover { color: $blocksieve-theme; } &:focus:not(:disabled) { outline: none; box-shadow: none; } &:focus-visible:not(:disabled) { box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus, 1.5px) $blocksieve-theme; } svg { flex: none; fill: currentcolor; } } &__type-label { flex: 1 1 auto; overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; } .components-button.blocksieve-condition-row__remove { flex: none; color: $blocksieve-gray-700; &:hover { color: $blocksieve-alert-red; } &:focus:not(:disabled):not(:focus-visible) { box-shadow: none; } } &.is-compact &__header { border-bottom: 0; border-radius: $blocksieve-radius; } &__body { display: flex; flex-direction: column; gap: 12px; padding: 12px; .components-base-control, .components-base-control__field { margin-bottom: 0; } } } /* Condition type menu (popover). */ .blocksieve-type-menu__content .components-popover__content { min-width: 240px; max-height: 420px; overflow-y: auto; } .blocksieve-type-menu__content .components-menu-item__button.is-selected { color: $blocksieve-theme; font-weight: 500; } /* Shared value-editor pieces. */ .blocksieve-control-hint { margin: 0; color: $blocksieve-gray-700; font-size: 12px; line-height: 1.5; &.is-warning { color: $blocksieve-alert-red; } } .blocksieve-control-input { box-sizing: border-box; width: 100%; height: 40px; min-height: 40px; margin: 0; padding: 0 8px; border: 1px solid $blocksieve-gray-600; border-radius: 2px; background: #fff; color: $blocksieve-gray-900; font-family: inherit; font-size: 13px; line-height: normal; box-shadow: none; &:focus { border-color: $blocksieve-theme; outline: 2px solid transparent; box-shadow: 0 0 0 0.5px $blocksieve-theme; } } /* Checklists (roles, post types, weekdays): two columns. */ .blocksieve-control-checkbox-group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 8px; .components-checkbox-control__label { overflow-wrap: anywhere; } } /* Date and time ranges: stacked fields (locale formats such as "09:00 AM" need the full width) with a shared hint. */ .blocksieve-control-date-range, .blocksieve-control-time-range { display: flex; flex-direction: column; gap: 12px; } /* Query parameter: name and value side by side. */ .blocksieve-control-query-parameter { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; // Keeps inputs level when one label wraps. gap: 12px 8px; > .blocksieve-control-hint { grid-column: 1 / -1; } } /* Device toggles. */ .blocksieve-control-device { display: flex; flex-direction: column; gap: 8px; &__options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; } .components-button.blocksieve-control-device__option { flex-direction: column; justify-content: center; gap: 2px; height: auto; min-height: 56px; padding: 6px 4px; border: 1px solid $blocksieve-gray-300; border-radius: $blocksieve-radius; color: $blocksieve-gray-700; font-size: 12px; box-shadow: none; svg { margin: 0; } &:hover { border-color: $blocksieve-gray-600; color: $blocksieve-gray-900; } &:not(.is-pressed):focus:not(:disabled):not(:focus-visible) { box-shadow: none; } &.is-pressed, &.is-pressed:hover, &.is-pressed:focus:not(:disabled) { border-color: $blocksieve-theme; background: rgba(56, 88, 233, 0.04); color: $blocksieve-theme; font-weight: 500; box-shadow: inset 0 0 0 1px $blocksieve-theme; } } } /* Repeatable string list rows. */ .blocksieve-control-string-list { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; &__row { display: flex; align-items: center; gap: 4px; width: 100%; .components-base-control { flex: 1 1 auto; } .components-button { flex: none; color: $blocksieve-gray-700; &:hover { color: $blocksieve-alert-red; } &:focus:not(:disabled):not(:focus-visible) { box-shadow: none; } } } }