17396466a9
CI / build-and-test (pull_request) Successful in 1m13s
Adds a /gridstack route demonstrating GridStackLayout: four default widgets (line/bar/pie chart cards plus a usage hint), buttons to add and remove widgets at runtime, a reset-layout button and a layout-change status line. Layout is persisted per browser via the existing localStorage support. The view gets its own SideNavItem in MainLayout and full de/en/es translations. Fixes an infinite recursion in GridStackLayout.add(Component): a single-argument add(item) resolves to that overload rather than the varargs one, so its delegation to add(item) called itself. It now appends through the element API and passes a GridStackItem through unwrapped. Adds the first test sources (browserless UI tests) covering the view's widget count and the add/remove buttons. Closes #7 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PYAcKoXKPN3rJ7nBroKZkc
111 lines
2.5 KiB
Properties
111 lines
2.5 KiB
Properties
# English
|
||
|
||
app.title=Chart App
|
||
action.themeToggle=Switch color scheme
|
||
action.language=Switch language
|
||
lang.de=Deutsch
|
||
lang.en=English
|
||
lang.es=Español
|
||
|
||
nav.dashboard=Dashboard
|
||
nav.form=Form
|
||
nav.table=Table
|
||
nav.gridstack=Grid
|
||
|
||
page.dashboard=Dashboard
|
||
page.form=Form
|
||
page.table=Table
|
||
page.gridstack=Grid layout
|
||
|
||
card.revenueTrend=Revenue Trend
|
||
card.revenueByMonth=Revenue by Month
|
||
card.revenueByRegion=Revenue by Region
|
||
card.registration=Registration
|
||
card.employees=Employees
|
||
card.gridstackHint=How it works
|
||
|
||
gridstack.hint=Drag cards by their header to move them, resize them from the bottom right corner. The layout is stored in your browser and restored on your next visit.
|
||
gridstack.addWidget=Add widget
|
||
gridstack.removeWidget=Remove last
|
||
gridstack.reset=Reset layout
|
||
gridstack.status=Layout changed – {0} widgets
|
||
gridstack.statusInitial=Layout unchanged
|
||
gridstack.widget=Widget {0}
|
||
gridstack.widgetText=Freely placeable card.
|
||
|
||
chart.revenueSeries=Revenue 2026
|
||
chart.pointClick=Series {0}, point {1}
|
||
chart.sliceClick=Slice {0}
|
||
|
||
month.jan=Jan
|
||
month.feb=Feb
|
||
month.mar=Mar
|
||
month.apr=Apr
|
||
month.may=May
|
||
month.jun=Jun
|
||
|
||
region.north=North
|
||
region.south=South
|
||
region.east=East
|
||
region.west=West
|
||
|
||
form.firstName=First name
|
||
form.lastName=Last name
|
||
form.email=Email
|
||
form.password=Password
|
||
form.age=Age
|
||
form.salary=Salary (€)
|
||
form.birthdate=Date of birth
|
||
form.time=Preferred time
|
||
form.country=Country
|
||
form.department=Department
|
||
form.interests=Interests
|
||
form.salutation=Salutation
|
||
form.newsletter=Subscribe to newsletter
|
||
form.remark=Remark
|
||
form.save=Save
|
||
form.reset=Reset
|
||
form.today=Today
|
||
form.cancel=Cancel
|
||
form.time.badInput=Invalid time
|
||
form.time.required=Time is required
|
||
form.time.min=Time is before the earliest allowed time
|
||
form.time.max=Time is after the latest allowed time
|
||
|
||
country.de=Germany
|
||
country.at=Austria
|
||
country.ch=Switzerland
|
||
country.fr=France
|
||
country.nl=Netherlands
|
||
|
||
dept.sales=Sales
|
||
dept.marketing=Marketing
|
||
dept.dev=Development
|
||
dept.support=Support
|
||
dept.management=Management
|
||
|
||
interest.newsletter=Newsletter topics
|
||
interest.webinars=Webinars
|
||
interest.updates=Product updates
|
||
interest.events=Events
|
||
|
||
salutation.mrs=Ms.
|
||
salutation.mr=Mr.
|
||
salutation.diverse=Diverse
|
||
salutation.none=Not specified
|
||
|
||
valid.firstNameRequired=First name is required
|
||
valid.lastNameRequired=Last name is required
|
||
valid.emailRequired=Email is required
|
||
valid.emailInvalid=Invalid email address
|
||
valid.ageRange=Age must be between 0 and 120
|
||
|
||
notify.saved=Saved: {0} {1}
|
||
notify.checkInput=Please check your entries
|
||
|
||
table.search=Search…
|
||
col.name=Name
|
||
col.department=Department
|
||
col.city=City
|
||
col.salary=Salary (€)
|