Skip to content

Ship ApplicationFormIndexComponent: out-of-the-box member facing dashboard view #330

Description

@baonguyenNava

Overview

The SDK provides no member-facing dashboard component. Host apps that need a "My Applications" landing page must build their own from scratch, duplicating effort across every app that uses the SDK. This issue tracks building and shipping Strata::ApplicationFormIndexComponent as a first-class out-of-the-box solution.

Problem

The current reference documentation acknowledges this gap:

"The SDK doesn't ship a member-portal dashboard component, but the pattern used by SDK generators is template-based."

Every host app ends up writing the same index page: a heading, intro copy, a "Start new application" CTA, and a table of in-progress/submitted applications. Without a shared component, improvements (accessibility, status labeling, responsive layout) must be backported to every host app individually.

Proposed Solution

Ship Strata::ApplicationFormIndexComponent that provides a sensible default dashboard with enough configurability to cover common cases.

Proposed API

<%= render Strata::ApplicationFormIndexComponent.new(
  application_forms: @application_forms,
  new_path: new_application_form_path,
  title: t(".title"),
  intro: t(".intro"),
  new_button_text: t(".start_new")
) %>

What the component renders

Region Behavior
Page heading (h1) title argument
Intro paragraph intro argument
"Start new application" button Primary usa-button linking to new_path
In-progress applications section Heading + Strata::US::TableComponent with columns: ID/type, created date, status, actions
Empty state Friendly message when no applications exist

Columns (default)

Column Source
Reference / ID app.reference_number or app.id
Started app.created_at (:short format)
Status app.status.humanize
Action "Continue" link (in-progress) / "View" link (submitted)

Acceptance Criteria

  • Create Strata::ApplicationFormIndexComponent
  • Renders heading, intro, CTA button, and application table from constructor args
  • Delegates table rendering to Strata::US::TableComponent
  • Empty state when application_forms is empty
  • Status column renders accessible status badge (reuses or introduces Strata::StatusTagComponent)
  • Responsive: table stacks on mobile via USWDS stacked option
  • i18n: all default labels defined in gem locale file; host apps can override via constructor args
  • Unit tests for: empty state, in-progress list, mixed in-progress + submitted
  • Request spec in dummy app demonstrating end-to-end usage
  • Document component in ui-kit-components.md

Why this is valuable

Providing an out-of-the-box dashboard view:

  • Reduces SDK onboarding time — host apps get a working member dashboard on day one
  • Centralizes accessibility and UX improvements in one place
  • Creates a natural extension point (slots for custom columns, custom empty state) without requiring host apps to fork the entire template

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfrontendFrontend changes

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions