WOODFINE CAPITAL PROJECTS BIM Design System

IfcPropertySet

properties panel

Universal AEC interface component. Anchored to IfcPropertySet in the IFC 4.3 hierarchy; classified as Uniclass FI_60. Consumed by app-workplace-bim (Tauri 2.10 + xeokit) and app-console-bim (web-only read surface) under the mode-prop pattern.

IFCIfcPropertySetUniclassFI_60modeworkplace · consolecode overlays0 registered
Preview
recipe.html
<!-- bim-properties-panel — universal AEC interface component.
     Renders Pset_* property sets for the currently selected element.
     Mode prop: workplace (editable text inputs / dropdowns) | console (read-only key/value rows).
-->

<aside class="bim-properties-panel" data-mode="console" aria-label="Element properties">
  <header class="bim-properties-panel__header">
    <h3>Properties</h3>
    <p class="bim-properties-panel__subject">
      <span class="bim-properties-panel__class">IfcWall</span>
      <span class="bim-properties-panel__guid">2N1NMOV9z7$8Ww2DVqvxPB</span>
    </p>
  </header>

  <section class="bim-properties-panel__section">
    <h4>Identification</h4>
    <dl>
      <dt>Name</dt>
      <dd>WAL-EXT-001</dd>
      <dt>Tag</dt>
      <dd>EXT-A1-G-005</dd>
      <dt>Classification (Uniclass)</dt>
      <dd>EF_25_10_30 (External wall)</dd>
    </dl>
  </section>

  <section class="bim-properties-panel__section">
    <h4>Pset_WallCommon</h4>
    <dl>
      <dt>FireRating</dt>
      <dd>RW 60</dd>
      <dt>AcousticRating</dt>
      <dd>R'w 50 dB</dd>
      <dt>ThermalTransmittance (U)</dt>
      <dd>0.18 W/m²K</dd>
      <dt>IsExternal</dt>
      <dd>Yes</dd>
      <dt>LoadBearing</dt>
      <dd>No</dd>
    </dl>
  </section>

  <section class="bim-properties-panel__section">
    <h4>Qto_WallBaseQuantities</h4>
    <dl>
      <dt>Length</dt>
      <dd>4.250 m</dd>
      <dt>Height</dt>
      <dd>2.700 m</dd>
      <dt>Width</dt>
      <dd>0.300 m</dd>
      <dt>NetVolume</dt>
      <dd>3.443 m³</dd>
    </dl>
  </section>
</aside>
recipe.css
.bim-properties-panel {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 0.9rem;
  color: #1a1a1a;
  border-left: 1px solid #e5e7eb;
  background: #fff;
  width: 22rem;
  height: 100%;
  overflow-y: auto;
}

.bim-properties-panel__header {
  padding: 0.9rem 1rem;
  border-bottom: 1px solid #e5e7eb;
  background: #fafbfc;
  position: sticky;
  top: 0;
}

.bim-properties-panel__header h3 {
  margin: 0 0 0.4rem;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #6b7280;
}

.bim-properties-panel__subject {
  margin: 0;
  font-size: 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.bim-properties-panel__class {
  font-weight: 600;
}

.bim-properties-panel__guid {
  font-family: "SF Mono", Menlo, Consolas, monospace;
  color: #6b7280;
  font-size: 0.75rem;
}

.bim-properties-panel__section {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid #e5e7eb;
}

.bim-properties-panel__section h4 {
  margin: 0 0 0.5rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: #1e3a8a;
}

.bim-properties-panel dl {
  margin: 0;
  display: grid;
  grid-template-columns: 11rem 1fr;
  row-gap: 0.4rem;
  column-gap: 0.5rem;
}

.bim-properties-panel dt {
  color: #6b7280;
  font-size: 0.85rem;
}

.bim-properties-panel dd {
  margin: 0;
  font-size: 0.85rem;
}

.bim-properties-panel[data-mode="workplace"] dd {
  /* edit affordance — workplace mode renders <input> via the host
     framework instead of a static <dd>. Recipe shows the static
     console layout; the framework swaps the dd for an input when
     mode=workplace. */
  cursor: text;
}
aria.md

bim-properties-panel — accessibility

Role and structure

  • Container is <aside aria-label="Element properties">.
  • Each Pset / Qto group is a <section> with an <h4> heading.
  • Each property is a <dt> / <dd> pair within a <dl>.
  • The element subject (class + GUID) appears below the panel heading in a <p class="bim-properties-panel__subject">.

Live region

  • The selected element is announced when changed. The container has aria-live="polite" (added at host-framework integration time; not in the static recipe to avoid it triggering on every recipe render).

Mode-prop behaviour

  • data-mode="workplace"<dd> is replaced by appropriate <input> / <select> controls at the framework integration layer. The recipe carries the static console view; the framework swaps on workplace.
  • data-mode="console" — read-only <dt> / <dd> pairs.

Keyboard navigation

| Key | Action | |---|---| | Tab / Shift-Tab | Move focus between editable fields (workplace mode only) | | Enter | Commit edit (workplace) | | Escape | Cancel edit and revert (workplace) |

Don't

  • Don't author custom Pset names without registering them in the IFC PsetSet template. Custom property sets must declare a custom Pset namespace.
  • Don't display GlobalId without a copy-to-clipboard affordance — IFC GUIDs are 22 characters of base-64 and useful only when copyable.
IFC mapping
TokenIFC anchorUniclass
bim-properties-panelIfcPropertySetFI_60

Component renders the IfcPropertySet family. See the token taxonomy research for the full IFC × Uniclass cross-walk.

Code overlays applicable

This token's IFC anchor (IfcPropertySet) accepts IfcConstraint relationships from any jurisdictional code overlay registered in service-codes. Composition order: municipal → provincial → federal → accessibility.

No overlays registered for IfcPropertySet in this jurisdiction. First Woodfine BC RS-1 encoding lands at v0.0.3 (per sub-agent B's 6–8 week roadmap).

How City Code as Composable Geometry works →