A transaction row showing label/value pairs in a structured table layout.
Fold into Table as a recipe, not a separate primitive
Table - Transaction is a feature-specific composition of existing DS primitives — a header row (which Table already ships) and a content row that is effectively an Inline Text with a peso-prefixed amount. Publishing it as its own component duplicates the Table variant matrix and introduces a raster peso asset to DS surface. On mobile, "transaction details" render as vertical label / amount stacks — exactly what Generic Transaction Card and Inline Text already cover. Recommend removing from core DS and documenting the pattern as a recipe on Table's page: "For transaction totals, compose an EBInlineText stack; use Table only for multi-column tabular history on wider surfaces."
In Context
Per-variant descriptions cite account limits — e.g. daily / monthly send caps showing used vs. remaining peso amounts in aligned columns. Other GCash surfaces like transaction history and receipts use the Generic Transaction Card vertical stack, not this tabular layout.
Live Preview
Column Label
Column Label
Column Label
Properties
type
no. of columns
icon (header only)
DS Health
Reusable
Warn
Locked to the peso-prefixed amount shape. Any transaction surface that needs a date column, a badge, a status chip, or a non-peso currency has to detach or reach for a different component.
Self-contained
Fail
Content row ships a raster Peso Sign - Proxima image fill, not a DS icon instance or text glyph. Handoff code references a remote figma.com/api/mcp/asset/* URL — not deliverable to native.
Consistent
Fail
Reuses Table's no. of columns string-with-period naming, but drops the 4-column option and the content icon variant — schema diverges from parent for no apparent reason. Label token main/table/color/label-preamble appears only here.
Composable
Warn
Not built from Table, Inline Text, or Generic Transaction Card — re-implements the label and amount stack directly. A true composition would reuse those primitives as nested instances.
Open Issues
Duplicate of Table's variant matrix with narrower coverage. Table already ships header / content rows with 2–4 columns and the same icon=yes/no axis. Table - Transaction re-creates that axis but only for 2 and 3 columns, then specializes the content row to peso amounts. The overlap is a maintenance drag and the layer tree is a separate sibling instead of a reuse. C1 · Layer Structure & Naming
no. of columns inherits Table's period-in-name string enum. Should be an integer columnCount — or, better, removed altogether in favor of a data-driven columns array on the parent Table. The Transaction fork inherits the anti-pattern without fixing it. C2 · Variant & Property Naming
No native mobile primitive matches this layout. Same mobile problem as Table: iOS SwiftUI Table is macOS/iPad only, Material Compose has no Table primitive. Phone-width transaction totals render as stacked EBInlineText rows (label + peso amount) — not a 360px fixed three-column table. C4 · Native Mappability
No interaction or semantic-amount states. Content row has no pressed / disabled states and amount cells don't distinguish positive, negative, or zero amounts despite being a transaction surface. C5 · Interaction State Coverage
Peso sign ships as a raster image asset. The content row's currency prefix is an <img> pointing at a Figma-hosted bitmap (figma.com/api/mcp/asset/...), not an inline glyph, SF Symbol, or vector icon. Header icon placeholder is still a hardcoded #C2C6CF circle as in Table. C6 · Asset & Icon Quality
Code Connect mappings not registered. Blocked until the family consolidation decision lands — Code Connect for Table - Transaction would just duplicate Table's mapping. C7 · Code Connect Linkability
Design Recommendations
Remove Table - Transaction from core DS; publish as a Table recipe and a Generic Transaction Card / Inline Text pattern. The component is a feature-specific composition, not a primitive. Document two ready-made paths in the Table page: (a) "For aligned multi-column amount totals on wider surfaces, use Table with amount-formatted column content"; (b) "For phone-width transaction details (receipt, limits, fees), compose EBInlineText rows inside Generic Transaction Card." Eliminates 6 duplicate variants and the raster peso asset from DS surface. Family
If Transaction stays, consolidate with Table's row primitive and add an amountFormat column flag. Merge into Table's data-driven row with a per-column format: .text | .amount. Amount formatting would auto-prefix the currency glyph. Collapses Table + Table - Transaction from 3 records / 15 variants into 1 record / 2 variants × data. Composition
Replace the raster peso sign with a text glyph or vector icon. Currency prefix should be the native Unicode glyph ₱ (U+20B1) rendered in the row's type style, or — if visual weight needs to match Proxima's peso — a vector SVG shipped as a DS icon (icon/currency/peso-sm). Drop the Figma-hosted bitmap reference. Asset
Rename or drop no. of columns. Same fix as Table. If the component is kept, rename to an integer columnCount. If merged into Table's data-driven row, drop it entirely — column count is inferred from the columns array. Rename
Align amount label token with Inline Text. The content-row label uses main/table/color/label-preamble (#6780A9) while the amount value uses main/table/color/label (#0A2757). Inline Text covers the same semantic pair with label / value tokens. Merge into a shared token set (main/inline-text/color/label, main/inline-text/color/value) to prevent drift. Token
Document amount-sign semantics. If Table - Transaction is kept for account limits, add explicit guidance that amounts are always positive totals (used / remaining / cap). For signed transaction flows (income / expense), direct consumers to Generic Transaction Card. Prevents the component from being mis-used on flows it wasn't designed for. Docs
Types
Header row
DESDEV
Subtle-bg row with bottom border. 10px Proxima Soft Semibold column labels across equal-width flex columns. Optional 24px icon above each label.
No native mobile Table primitive; transaction totals render as Inline Text stacks.
C5
Interaction State Coverage
Requires Rework
No pressed / disabled states; no semantic handling of positive / negative amounts.
C6
Asset & Icon Quality
Requires Rework
Peso sign ships as a raster <img>; header icon is a hardcoded placeholder circle.
C7
Code Connect Linkability
Not Mapped
Blocked until the family consolidation decision lands.
Variants Inventory (6 total)
A 2 type × 2 no. of columns × 2 icon matrix, pruned: icon only applies to header rows, so content × icon=yes doesn't exist. Total 6 variants.
type
no. of columns
icon
Height
Node ID
header
2
no
36px
47:324707
header
3
no
36px
47:324703
header
2
yes
62px
47:324705
header
3
yes
62px
47:324706
content
2
no
72.5px
47:324704
content
3
no
72.5px
47:324708
1.0.0 — April 2026Major
Initial Assessment · node 47:324709
Family assessed — 6 variants (2 type × 2 columns × 2 icon, pruned). Only used for account-limit surfaces in the sticker sheet. Documented
Initial
Duplicate of Table — Reuses Table's variant schema with narrower column coverage and a peso-specialised content row. Recommend folding into Table as a recipe. Open
C1 Open
no. of columns inherited naming — String enum with a period in the property name, carried over from Table. Open
C2 Open
No native mobile primitive — Same mobile problem as Table; transaction totals should be Inline Text stacks. Open
C4 Open
No interaction or amount-sign states — No pressed / disabled, no positive / negative amount differentiation. Open
C5 Open
Peso sign is a raster asset — Content row currency prefix is an image fill, not a text glyph or vector. Header icon placeholder is still hardcoded #C2C6CF. Open