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.
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
| Token | IFC anchor | Uniclass |
|---|---|---|
bim-properties-panel | IfcPropertySet | FI_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).