canonrs-server 0.1.0

CanonRS server-side rendering support
/* ═══════════════════════════════════════════════════════════════
   SELECT - Family C Forms tokens compliant
   State via data-rs-state — zero pseudo-class state selectors
   ═══════════════════════════════════════════════════════════════ */

[data-rs-select-trigger] {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--select-gap);
  width: 100%;
  height: var(--select-height);
  padding: 0 var(--select-padding-x);
  background: var(--select-bg);
  color: var(--select-fg);
  border: var(--select-border-width) solid var(--select-border-color);
  border-radius: var(--select-radius);
  cursor: pointer;
  transition: border-color var(--motion-duration-fast) var(--motion-ease-standard);
}

/* ── FOCUS ──────────────────────────────────────────────────── */
[data-rs-select-trigger]:hover:not([data-rs-state~="disabled"]) {
  border-color: var(--select-border-color-hover);
  background: var(--select-hover-bg);
}

[data-rs-select-trigger]:focus-visible {
  outline: var(--select-focus-ring-width) solid var(--select-focus-ring-color);
  outline-offset: var(--select-focus-ring-offset);
}

[data-rs-select-trigger][data-rs-state~="focus"] {
  outline: var(--select-focus-ring-width) solid var(--select-focus-ring-color);
  outline-offset: var(--select-focus-ring-offset);
}

/* ── ITEM FOCUS (keyboard nav) ──────────────────────────────── */
[data-rs-select-item][data-rs-state~="focus"] {
  background: var(--select-item-hover-bg);
  outline: none;
}

/* ── DISABLED ───────────────────────────────────────────────── */
[data-rs-select][data-rs-state~="disabled"] [data-rs-select-trigger],
[data-rs-select-trigger][data-rs-state~="disabled"] {
  opacity: var(--select-disabled-opacity);
  cursor: not-allowed;
  pointer-events: none;
}

[data-rs-select] {
  position: relative;
}

[data-rs-select-content] {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 100%;
  z-index: 200;
  background: var(--select-content-bg);
  border: var(--select-content-border-width) solid var(--select-content-border-color);
  border-radius: var(--select-content-radius);
  box-shadow: var(--select-content-shadow);
  padding-block: var(--select-content-padding-y);
}

/* ── OPEN / CLOSED ──────────────────────────────────────────── */
[data-rs-select][data-rs-state~="closed"] [data-rs-select-content],
[data-rs-select][data-rs-state=""] [data-rs-select-content],
[data-rs-select]:not([data-rs-state]) [data-rs-select-content] {
  display: none;
}

[data-rs-select][data-rs-state~="open"] [data-rs-select-content] {
  display: block;
}

[data-rs-select-item] {
  display: flex;
  align-items: center;
  height: var(--select-item-height);
  padding: var(--select-item-padding);
  cursor: pointer;
  transition: background var(--motion-duration-fast) var(--motion-ease-standard);
}

/* ── ITEM HOVER ─────────────────────────────────────────────── */
[data-rs-select-item]:hover:not([data-rs-state~="disabled"]):not([data-rs-state~="selected"]) {
  background: var(--select-item-hover-bg);
}

/* ── ITEM SELECTED ──────────────────────────────────────────── */
[data-rs-select-item][data-rs-state~="selected"] {
  background: var(--select-item-selected-bg);
  color: var(--select-item-selected-fg);
}

[data-rs-select-separator] {
  height: var(--select-separator-height);
  background: var(--select-separator-color);
  margin-block: var(--select-separator-margin-y);
}

[data-rs-select-chevron] {
  flex-shrink: 0;
  margin-left: auto;
  transition: transform var(--motion-duration-fast) var(--motion-ease-standard);
}

[data-rs-select][data-rs-state~="open"] [data-rs-select-chevron] {
  transform: rotate(180deg);
}