A React component library providing official Frontal brand assets including the company mark and wordmark.
This package contains the official Frontal brand assets as React components, ensuring consistent branding across all Frontal applications and products.
bun add @frontal/brand-kitThe Frontal company mark - a geometric logo symbol.
import { FrontalMark } from '@frontal/brand-kit';
function App() {
return (
<div>
{/* Default size (22x22) */}
<FrontalMark />
{/* Custom size */}
<FrontalMark width={44} height={44} />
{/* With custom styling */}
<FrontalMark className="text-blue-600" />
</div>
);
}Props:
- Extends
SVGProps<SVGSVGElement> - Default dimensions: 22×22 pixels
- Uses
currentColorfor fill, inheriting text color
The Frontal wordmark - the company name in logo form.
import { FrontalWordmark } from '@frontal/brand-kit';
function Header() {
return (
<header>
{/* Default size (77x16) */}
<FrontalWordmark />
{/* Custom size */}
<FrontalWordmark width={154} height={32} />
{/* With custom styling */}
<FrontalWordmark className="text-gray-800" />
</header>
);
}Props:
- Extends
SVGProps<SVGSVGElement> - Default dimensions: 77×16 pixels
- Uses
currentColorfor fill, inheriting text color
Both components include proper ARIA labels and are marked as decorative (aria-hidden="true") by default. If the logo is the primary focus or interactive, you may need to adjust the accessibility attributes.
The components use currentColor for their fill, which means they will inherit the text color of their parent element. This makes them easy to style with CSS:
.frontal-logo {
color: #1f2937; /* Dark gray */
}
.frontal-logo:hover {
color: #3b82f6; /* Blue on hover */
}The components are SVG-based and scale perfectly at any size. Use CSS to make them responsive:
.responsive-logo {
width: 100%;
height: auto;
max-width: 200px;
}bun run buildbun run type-checkbun run lint
bun run lint:fixbun run formatThis package is private and proprietary to Frontal Labs. See LICENSE.md for details.
Releases are managed by Changesets:
- Run
bunx changesetlocally for each logical change and commit the generated markdown file. - Open a PR as usual. The Release GitHub Action will open/maintain a release PR that bumps versions and changelogs once changes land on
master. - When that release PR is merged into
master, the workflow runsbunx changeset versionand thenbun run release(which runschangeset tag) and automatically creates a GitHub Release without publishing to npm.
ℹ️ All releases are tracked via git tags/GitHub Releases only. Nothing is pushed to npm.
Please read CONTRIBUTING.md for guidelines on contributing to this package.
- Fork and clone the repository
- Install dependencies:
bun install - Make changes to components in
src/ - Run tests:
bun run lint && bun run type-check && bun run build - Create a pull request with a clear description
- Run
bunx changesetfor each change that should appear in the changelog. - Merge the automated Release PR that the workflow opens (it will contain the version bumps).
- The merge triggers the Release workflow, which:
- runs
bunx changeset versionto apply the version/changelog updates, - runs
bun run releaseto tag the commit and have the action create a GitHub Release entry (no npm publish).
- runs
packages/brand-kit/
├── .github/
│ └── workflows/ # GitHub Actions workflows
├── src/
│ ├── index.ts # Main exports
│ ├── mark.tsx # FrontalMark component
│ └── wordmark.tsx # FrontalWordmark component
├── dist/ # Built package (generated)
├── package.json
├── tsconfig.json
├── biome.json
└── README.md
