Selected Works
PaymentMate Portal
PNC Virtual Card
Events University
Festival Apps
Tempus UI Library
📐 UIUX
⚙️ Design systems
🚧 Work in progress
A UI component library designed for financial professionals and built for flexibility.
Product Designer
Tempus Technologies (PNC Bank)
2022–Present
a collection of UI components. pictured are buttons, text input fields, dropdowns, dialogs, selection components, prompt patterns, accordion patterns, and text styles.
Why create a component library?
Tempus Technologies is a financial software development company that was acquired by PNC Bank in 2021. Tempus offers secure payment processing solutions to businesses through web and POS device experiences. Rich configurability is a cornerstone to the web offerings, while uptime and precision are cornerstones to the POS device offerings.

There are three factors that led to the need for the UI component library.
  • Many standard and legacy products saw large drift in visual design and behavior before staffing designers at Tempus.
  • One team of three designers means that any designer could be expected to pick up work for any given product or solution in a sprint.
  • Standing up a new local library for every client's custom stylesheet can be time consuming.
Discovery and planning
An early consideration was to leverage an existing library, but we eventually decided to give it a shot internally. Many of the design files to date contained small sets of reused components that could reasonably be collected, aligned, and organized to form the bones of our library.

The starting point of our library was compiled as described above, as well as through research of similar products in the financial tech world. The visual design of the components is meant to illicit a sense of security and clear interactivity. If something is blue, you can interact with it; and the more blue it is, the more significant it should be to a user's experience.

With the basics accounted for, we zoomed back out to understand who at Tempus would consume this, and how. What are their needs? What solutions would be the most impactful if they happened tomorrow? After agreeing on a general scope, we needed to make sure any decisions made from that point on were grounded in solid design principles.
image depicting the planning and strategy phase of creating a design library. the top left has a matrix of 'how might we' questions compared against design aspects like accessibility, mobile experiences, and more. The right shows the answers to those questions in a loose cloud grouping, tightly grouped by different affinities like tactical clarity and more. The bottom depicts the design principles that were eventually determined, reading: Clarity, Assurance, Consistency, Momentum, Rewarding, and Empathy.
How principles, matrices, and variables kept me on track
The design principles were formed from the answers to 'how might we' questions. Those questions were formed from the needs uncovered in our discovery phase. Each principle represents a category of those answers and contains positive/negative scenarios to create a foundation for evaluating designs against.

While there were ambitions for this to be a thorough design system, our immediate needs were most effectively met by a UI component library. Each component in the library would be arranged in a typical matrix that represents each of its variants and interaction states. Personally, this structure has since become my favorite way to sort and make sense of braindumps.
Image of a component set for text input fields. Going from top to bottom, the different interactive states are shown and from left to right, the different variants are shown.Image of a component set for text input fields. Going from top to bottom, the different interactive states are shown and from left to right, the different variants are shown.Image of a component set for text input fields. Going from top to bottom, the different interactive states are shown and from left to right, the different variants are shown.
To solve for rich configurability, we needed solid baseline components (check) and the means to control their style and layout properties all from one place. With Figma's variable feature, every component property set with intent could instead use a variable. The most challenging part of this work was managing the parallel hierarchies between the component and variable collections. After a while, the mantra of "never do the same thing twice" simplified my problem considerably; if a specific property held the same set value across many/all components, that was a great candidate for a variable.

Today, the variable side of the library continues to evolve and has been the most exciting and educational aspect of this effort. Understandably, this has created numerous opportunities to work closer with developers and understand their perspective of consuming our designs.
Image of a component set for text input fields. Going from top to bottom, the different interactive states are shown and from left to right, the different variants are shown.
Thoughts so far
  • I held much of the early ambition for a design system, but eventually agreed it was way too massive of a ground zero. A medium-sized library has been a perfect fit and folding complexity into it over time has taught me important lessons in planning.
  • There are very fascinating problems that come from designing and maintaining a growing collection of content. "Do more with less" cannot be your only razor.
  • Building a stronger working relationship with developers has made handoffs easier and grew the technical understanding of our products for myself and other designers.