Case study · Sprout Solutions

The side panel that became a system

How one panel learned to handle a day's worth of attendance chaos — and quietly became a reusable primitive across our products.

3 levels of disclosure3 teams adopted it1 interaction model
The dynamic side panel, open over the attendance dashboard
The panel, open over the attendance dashboard.
Role
Lead & Interaction Designer
Company
Sprout Solutions · HRIS
Timeline
1 month
Team
1 PM · 1 design · 1 eng

It started as one component for one feature. It ended as a pattern three teams reached for by default.

That arc — from component to system — is the whole story. Not because we set out to build a system, but because every time complexity showed up we asked the same question: where does this go? And the honest answer, every time, was the same panel.

By the end we'd combined progressive disclosure, deep product knowledge, and a shared design system into one interaction model that scaled across products and teams — without anyone having to redesign it. Different content, same system.

01

Time & attendance looks simple. It isn't.

On the surface, T&A is three verbs: clock in, clock out, track hours. Underneath, it's a swamp. For a single day, for a single employee, you might be juggling:

  • Shifts that change per employee
  • Holidays that vary by location
  • Attendance anomalies and flags
  • Leaves, undertime, overtime, corrections
  • Supporting documents — certificates, approvals, proof

All of it has to coexist in one experience, often on one screen, without making the user feel like they've opened a filing cabinet. We needed an approach that could absorb more complexity without producing more confusion.

The problem

Too much, all competing for attention

Our problem was never a lack of features. It was the opposite — too much information shouting at once. Three issues kept surfacing.

  1. Information overload

    Users jumped between pages just to understand a single attendance record. Answering “what happened on this day?” meant a scavenger hunt.

  2. Fragmented mental model

    Shifts lived in one place, holidays in another, requests somewhere else. Nothing felt connected, so users assembled the story in their heads.

  3. Growing sideways, not deeper

    Every new attendance feature meant another modal or page. The UI sprawled outward instead of revealing depth where it was needed.

The goal

Show everything, without showing everything at once

Keep users grounded in their current context. Reveal information progressively, based on intent. Support the simple case and the complex case in one flow. Stay extensible — new features plug in, nothing gets redesigned.

That north star had a name: progressive disclosure. The side panel became its canvas.

02

Core context

Level 01

It starts on the attendance widget: scheduled shift, actual logs. The user selects the shift block and instead of navigating away, the panel slides in. The page doesn't change — the depth of information does.

The dashboard stays visible behind the panel — that alone kills the need to navigate elsewhere.

Try it yourself. Open the live panel, step through the days, then click the shift card to drill into its details — all without leaving the page.

At its most basic, the panel answers one question: what happened on this day? Actual time in and out, the assigned shift with its schedule and rules, breaks and expected durations, attendance status and any notes tied to that shift.

03

Supporting information

Level 02

As the user digs in, more layers surface: shift rules for this specific day, holiday overlaps, exceptions and flags. The discipline: these are contextual, not decorative. They appear only because they matter to the day being viewed. Nothing loads just in case.

Scrolling deeper never leaves the day you're looking at.
04

Actions and requests

Level 03

This is where the panel earns its keep, and where complexity usually explodes. The same panel hosts a whole family of actions — apply for leave, request corrections, submit certificates of attendance — each following the same layout and interaction model.

Take the hardest one. Instead of a massive leave form (or worse, a new page), the panel breaks it into four focused steps, each a single decision. The user is never staring down the whole form, so cognitive load stays flat as the task gets heavy.

One decision per step, inside the same panel.
  1. Select leave type and dates
  2. Review leave balances
  3. Provide supporting details or documents
  4. Final review and submission
05

Design once, scale everywhere

We built this as a reusable interaction pattern, not a feature-specific UI. The same behaviour shows up in attendance dashboards, requests and approvals, and other HR workflows. Users learn the pattern once; only the content changes.

The panel in the attendance dashboard
The panel handling a request
The panel in an approval flow
The panel on an employee profile

For teams that meant faster delivery and fewer design debates. For users it meant predictability: they always knew what opening that panel would do.

06

Why the design system made this possible

The panel wasn't a one-off component — it was a pattern, and patterns need shared foundations: standardised spacing and hierarchy, reusable form patterns, clear rules for headers, sections and actions. New use cases plugged in instead of reinventing the UI.

The tell that it was working: new teams stopped asking how to design a side panel, and started asking what content belongs at which level.

Product knowledge

Design systems scale UI. Product knowledge scales decisions.

Understanding Time & Attendance deeply is what made the levels right — knowing which data mattered first, how approvals really flow, which edge cases would show up in production.

Product knowledge is what told us a graveyard shift's break rules belong in Level 1, not three taps deep.

07

An interaction model, not a funnel

No dashboard of conversion metrics here. So before touching pixels I defined the bar, and every decision got measured against it.

One stop for “what happened today”

Answer it without leaving the page or opening a second tab.

Complexity reveals, never dumps

The hardest task in the product should feel like four small decisions, not one overwhelming form.

Learn once, use everywhere

Someone who's opened the panel in attendance should feel at home opening it in requests.

New features plug in

A new use case should be a content question, not a redesign.

Most importantly, the system had to feel calm even when the data wasn't. That was the real bar.

08

What I'd do differently

Pressure-test the level model earlier, with messier data. The levels held up beautifully for a clean day — but the gnarly days (overlapping holidays and a correction and a pending leave on the same date) are where the hierarchy gets argued over. Next time I start with the worst day on the calendar, not the average one.

09

Key takeaways

  1. Complexity is inevitable. Confusion is optional.
  2. Progressive disclosure is a strategy, not a gimmick — it only works when every layer is contextual.
  3. Design systems are force multipliers, but only when paired with real product understanding.
  4. You know a component has become a system when teams stop asking how to build it and start asking what goes in it.

This panel lasted not because it was clever, but because it understood the product deeply.

And because the system let everyone else reuse that understanding without rebuilding it. That's what makes systems last.