mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 07:20:43 +00:00
Two hundred marks, drawn white on the dark surface so they read as one set rather than two hundred competing brand colours, grouped by the bands the catalogue already carries: index decides both the order and the category, so the two cannot drift apart. The wall is its own section rather than a ProductLanding prop, because the kit already composes that way — BotLanding renders ProductLanding then the footer — and a prop would have made the kit import a component that imports the kit. Marks come from Simple Icons and belong to their owners. The section says so in place rather than in a footnote elsewhere: they state what Hanzo connects to, and claim no partnership or endorsement. Co-authored-by: Hanzo Dev <[email protected]>
45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
/**
|
|
* The tools Hanzo connects to, and the marks that name them.
|
|
*
|
|
* `index` carries the ordering AND the grouping, so the two cannot disagree: a
|
|
* band of ten is one category, the first hundred are business tools and the
|
|
* second hundred developer tools.
|
|
*
|
|
* connectors.json is derived from the logo set's manifest and is the record —
|
|
* a name, its mark under /public/connectors, and where the mark came from.
|
|
*
|
|
* The marks belong to their owners. They are drawn here to say what Hanzo
|
|
* connects to; they do not claim a relationship with, or endorsement by, any of
|
|
* them.
|
|
*/
|
|
import connectors from './connectors.json'
|
|
|
|
export type ConnectorGroup = 'Business' | 'Developer'
|
|
|
|
export interface Connector {
|
|
/** 1-200. Position in the catalogue, and the band that decides its category. */
|
|
index: number
|
|
name: string
|
|
slug: string
|
|
group: ConnectorGroup
|
|
category: string
|
|
/** Path under /public — a white mark, drawn for a dark surface. */
|
|
file: string
|
|
source: string
|
|
sourceUrl: string
|
|
}
|
|
|
|
export const CONNECTORS = connectors as Connector[]
|
|
|
|
/** The catalogue's categories in order, each with the tools that fall in it. */
|
|
export function categories(group?: ConnectorGroup): { category: string; items: Connector[] }[] {
|
|
const out = new Map<string, Connector[]>()
|
|
for (const c of CONNECTORS) {
|
|
if (group && c.group !== group) continue
|
|
const items = out.get(c.category) ?? []
|
|
items.push(c)
|
|
out.set(c.category, items)
|
|
}
|
|
return [...out].map(([category, items]) => ({ category, items }))
|
|
}
|