@htmlbricks/hb-bundle
Version:
Single IIFE loader for all HTML Bricks hb-* web components from the jsDelivr CDN, with optional Subresource Integrity; includes agent/LLM docs and theme CSS variables.
86 lines (78 loc) • 2.12 kB
TypeScript
export type PhoneNumber = {
number: string;
type: "home" | "work" | "mobile" | "fax" | "other";
label?: string;
};
export type EmailAddress = {
address: string;
type: "home" | "work" | "personal" | "other";
label?: string;
};
export type Address = {
street?: string;
city?: string;
state?: string;
postalCode?: string;
country?: string;
type: "home" | "work" | "billing" | "shipping" | "other";
label?: string;
};
export type SocialMedia = {
platform: "linkedin" | "twitter" | "facebook" | "instagram" | "github" | "youtube" | "tiktok" | "signal" | "whatsapp" | "telegram" | "other";
url: string;
username?: string;
};
export type ContactData = {
// Personal Information
firstName?: string;
lastName?: string;
fullName?: string;
title?: string;
// Contact Information
emails?: EmailAddress[];
phones?: PhoneNumber[];
website?: string;
// Address Information
addresses?: Address[];
// Company Information
company?: string;
department?: string;
jobTitle?: string;
// Additional Information
notes?: string;
avatar?: string;
// Location
latitude?: number;
longitude?: number;
// Social Media
socialMedia?: SocialMedia[];
// Actions
clickable?: boolean;
};
interface IDropDownMenuListItem {
key: string;
label: string;
badge?: number;
group?: string;
linkHref?: string;
}
export type Component = {
id?: string;
style?: string;
data: ContactData;
actions_list?: IDropDownMenuListItem[];
i18nlang?: string;
show_header_collapse_button?: "yes" | "no"; // show/hide header collapse button; default "yes"
start_collapsed?: "yes" | "no"; // start with body collapsed; default "no"
};
export type Events = {
contactClick: { id: string; contact: ContactData };
contactEdit: { id: string; contact: ContactData };
contactDelete: { id: string; contact: ContactData };
phoneClick: { id: string; phone: PhoneNumber };
emailClick: { id: string; email: EmailAddress };
websiteClick: { id: string; website: string };
socialClick: { id: string; social: SocialMedia };
addressClick: { id: string; address: Address };
collapseChange: { id: string; collapsed: boolean };
};