Data is everything.
Presentation takes care of itself.Adjust it with AI, on live data.
The declarationRust · comments become the words
/// W-2 wage statement #[derive(LibertasExport, LibertasAvroDecode, LibertasAvroEncode)] pub struct W2 { /// Employer pub employer: String, /// Employer ID (EIN) pub ein: String, /// Wages, tips, other pay #[libertas_money("USD", 2)] pub wages: i64, /// Federal tax withheld #[libertas_money("USD", 2)] pub federal_withheld: i64, /// Social Security wages #[libertas_money("USD", 2)] pub ss_wages: i64, /// State pub state: TaxState, /// Retirement plan pub retirement_plan: bool, /// Overtime deduction #[libertas_inline_choices] pub overtime: WageDeductionEligibility, }
The adjustmentdisplay.json · arrangement only, no sizes
{ "select": "^<Income>", "right_pane": ["EditW2"], "refresh": "OpenIncome" },
{ "select": "^<Income.w2s>", "layout": "table",
"columns": ["employer", "wages", "federal_withheld", "retirement_plan"] },
{ "select": "^<EditW2.w2>", "layout": "form-grid", "columns": 3 },
{ "select": "^<EditW2.w2>.employer", "style": { "span": 2 } },
{ "select": "^<EditW2.w2>.overtime", "style": { "span": 3 } }
390 dp
compactmediumexpandedlargeextra-large
Phone
Phone
Tablet
Web/TV
One declarationEight commented fields say what the data is. Five rules ask for panes, a table, a form grid and wider rows for two fields, never for a size.
Every size decided for youPanes, columns, tables and labels follow the space available, by the platform's width rules.
Same everywhereAndroid, iOS and Studio make the same decisions from the same rules and the same data.
Pane count, form columns, table fit and label placement are computed here with the platform's own rules, at normal text size, measuring this page's text in this browser's font. The screens are conceptual drawings, not product screenshots, and the W-2 records are invented.