{{- /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial */ -}} {{- /* SPDX-FileCopyrightText: 2025-2026 Christian Galo */ -}} {{/* operator_plan_ladder_tiers.html The composite's Add tier and Tiers sections, titled by sectionHeader outside their boxes. Add tier is a closed panel opened from the section header (design D20 "Create flows: a closed panel, then land on the record"), rendering the declaration operator.plan-ladder.tier.add (form-library); the dense form is already its own box (design D10), so nothing wraps it here. The tier rows drag-to-reorder (SortableJS); drops render a server-side preview and nothing is saved until the operator commits, so the pending panels render the preview declarations operator.plan-ladder.tier.reorder.commit and .remove.commit (design D10's preview idiom; finding FA-13). Product names cross-link to their products (chrome-conventions: cross-refs link identifiers). */}} {{ if .Error }}
New tiers are added at the highest rank; drag rows below to set the order.
{{ else }}No plan products are available to add. Every published product is already a tier on this ladder, or no products are published yet.
{{ end }}Drag a row by its handle (⣿) to reorder tiers; dropping shows a preview, and nothing is saved until you commit. Rank 0 is the base tier, listed first below; when a ladder is an org type's default plan, its rank-0 tier is what new organizations of that type start on.
{{ else }}Rank 0 is the base tier; when a ladder is an org type's default plan, its rank-0 tier is what new organizations of that type start on.
{{ end }} {{/* design D8 / plan-ladder-management "The tiers table reads as a record table": the tier's product name is the primary column (row header), with a styled header row (table-record, lane A). */}}| Product | Rank | Active positions | Actions |
|---|---|---|---|
| {{/* operator-topology-overview "One ladder has no handle" applies the same way to tier rows: a handle to reorder among siblings means nothing with only one tier. */}} {{ if gt (len $rows) 1 }} ⣿ {{ end }} {{ .ProductName }} {{ if eq .Rank 0 }}{{ range $.DefaultBadges }} {{ template "statusBadge" . }}{{ end }}{{ end }} | {{ if $pending }}{{ template "statusBadge" .PendingRankBadge }}{{ else }}{{ template "statusBadge" .RankBadge }}{{ end }} | {{ if .HasActiveAttachments }}{{ .ActiveAttachmentCount }}{{ else }}0{{ end }} | {{ if or $pending $removal }} {{/* A pending reorder or removal preview owns the table: no verb until it is committed or discarded, and the pending panel below the table says so, so the cell is empty rather than a marker with a hover title (chrome-conventions "A verb-less row leaves its Actions cell empty"; design D23 keeps tooltips for disabled controls only). */}} {{ else if .HasActiveAttachments }} {{ else }} {{ end }} |