Introduction to JustiFi Web Component Library
Welcome to the JustiFi Web Component Library. These web components are framework-agnostic and can be used in modern frameworks like React, Vue, Angular, or plain HTML.
Usage
HTML Web Components
The simplest way to use the Web Components is to include the following script within your HTML. This loads all the components into the browser's custom component registry.
<head>
<script
type="module"
src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@6.7.3/dist/webcomponents/webcomponents.esm.js"
></script>
</head>
Then, you can use the custom elements as normal HTML tags.
<justifi-checkout auth-token="token" checkout-id="chk_123"></justifi-checkout>
It can also be installed as a package with npm or pnpm:
npm install --save @justifi/webcomponents
# or
pnpm add @justifi/webcomponents
and import the component module using ES modules.
import '@justifi/webcomponents/dist/module/justifi-checkout.js';
Styling
How Parts Stack for Efficient Global Styling
Parts are designed hierarchically to let you apply global styles like color or font-family universally, while components inherit these settings without repetitive targeting.
Core Parts and Inheritance
-
Base Parts:
color,font-family, andbackground-colordefine foundational styles.- These propagate into higher-level parts like
text,button, andinput.
- These propagate into higher-level parts like
-
Higher-Level Parts:
text: Combinescolorandfont-familyfor typography.input,button,label: Inherittext, ensuring consistent styles across components.
Global Styling in Action
Universal Font
Set the font for all components using font-family:
::part(font-family) {
font-family: 'Inter', system-ui, sans-serif;
}
Universal Text Color
Set the text color once via color:
::part(color) {
color: #1d1b2f;
}
These apply to all components that rely on text, including buttons, inputs, and headings.
Component-Specific Overrides
After defining global styles, customize specific components using their higher-level parts:
Buttons
::part(button-primary) {
background-color: #0d3b66;
color: #fff; /* Overrides `color` */
}
Input States
::part(input-focused) {
border-color: #0d3b66;
background-color: #f0f8ff;
}
To view the full list of available parts for styling, consult the source file here.
Best Practices
- Style Base Parts First: Focus on
colorandfont-familyfor global consistency. - Override as Needed: Use component-specific parts (e.g.,
button-primary) sparingly for deviations. - Inspect and Leverage Stacking: Ensure you understand how parts like
textlayer to avoid redundant styles.
This hierarchy ensures maintainable, reusable styles across all components with minimal effort.
Report Issues
For bugs and issues, please:
- Go to our GitHub Issues.
- Click "New Issue" and describe the problem.