🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@taylorvance/tv-shared-web

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@taylorvance/tv-shared-web - npm Package Compare versions

Comparing version
0.7.2
to
0.8.0
+21
dist/LinkBadgeBase.d.ts
import type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';
export type LinkBadgeClassNames = {
readonly root: string;
readonly icon: string;
readonly label: string;
};
export type LinkBadgeDefaultIconProps = {
className: string;
style: CSSProperties | undefined;
};
export type LinkBadgeBaseProps = Omit<ComponentPropsWithoutRef<'a'>, 'children'> & {
classNames: LinkBadgeClassNames;
icon?: ReactNode;
iconClassName?: string | undefined;
label: ReactNode;
labelClassName?: string | undefined;
renderDefaultIcon: (props: LinkBadgeDefaultIconProps) => ReactNode;
unstyled?: boolean;
};
export declare function LinkBadgeBase({ className, classNames, icon, iconClassName, label, labelClassName, renderDefaultIcon, rel, style, target, unstyled, ...props }: LinkBadgeBaseProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=LinkBadgeBase.d.ts.map
{"version":3,"file":"LinkBadgeBase.d.ts","sourceRoot":"","sources":["../src/LinkBadgeBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA2BhF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IACjF,UAAU,EAAE,mBAAmB,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,iBAAiB,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,EACV,IAAI,EACJ,aAAa,EACb,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,GAAkB,EAClB,KAAK,EACL,MAAiB,EACjB,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAqBpB"}
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
const DEFAULT_ROOT_STYLE = {
alignItems: 'center',
backgroundColor: '#ffffff',
border: '1px solid #d1d5db',
borderRadius: '999px',
boxShadow: '0 1px 2px rgba(15, 23, 42, 0.08)',
color: '#374151',
display: 'inline-flex',
fontFamily: 'inherit',
fontSize: '0.875rem',
fontWeight: 600,
gap: '0.5rem',
lineHeight: 1,
padding: '0.45rem 0.8rem',
textDecoration: 'none',
};
const DEFAULT_ICON_STYLE = {
color: 'inherit',
display: 'block',
flexShrink: 0,
height: '1rem',
width: '1rem',
};
export function LinkBadgeBase({ className, classNames, icon, iconClassName, label, labelClassName, renderDefaultIcon, rel = 'noreferrer', style, target = '_blank', unstyled = false, ...props }) {
const rootClassName = [classNames.root, className].filter(Boolean).join(' ');
const iconSlotClassName = [classNames.icon, iconClassName].filter(Boolean).join(' ');
const labelSlotClassName = [classNames.label, labelClassName].filter(Boolean).join(' ');
const iconStyle = unstyled ? undefined : DEFAULT_ICON_STYLE;
const mergedStyle = unstyled ? style : { ...DEFAULT_ROOT_STYLE, ...style };
return (_jsxs("a", { className: rootClassName, rel: rel, style: mergedStyle, target: target, ...props, children: [_jsx("span", { "aria-hidden": "true", className: iconSlotClassName, style: iconStyle, children: icon ?? renderDefaultIcon({ className: iconSlotClassName, style: iconStyle }) }), _jsx("span", { className: labelSlotClassName, children: label })] }));
}
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
export declare const sourceBadgeClassNames: {
readonly root: "tv-shared-source-badge";
readonly icon: "tv-shared-source-badge__icon";
readonly label: "tv-shared-source-badge__label";
};
export type SourceBadgeIconName = 'code' | 'git-branch' | 'github';
export type SourceBadgeProps = Omit<ComponentPropsWithoutRef<'a'>, 'children' | 'href'> & {
href: string;
icon?: ReactNode;
iconClassName?: string;
iconName?: SourceBadgeIconName;
label?: ReactNode;
labelClassName?: string;
unstyled?: boolean;
};
export declare function SourceBadge({ className, href, icon, iconClassName, iconName, label, labelClassName, rel, style, target, unstyled, ...props }: SourceBadgeProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=SourceBadge.d.ts.map
{"version":3,"file":"SourceBadge.d.ts","sourceRoot":"","sources":["../src/SourceBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYjE,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAUnE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAiCF,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,KAAgB,EAChB,cAAc,EACd,GAAkB,EAClB,KAAK,EACL,MAAiB,EACjB,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAkBlB"}
import { jsx as _jsx } from "react/jsx-runtime";
import { FiCode, FiGitBranch, FiGithub, } from 'react-icons/fi';
import { LinkBadgeBase, } from './LinkBadgeBase.js';
export const sourceBadgeClassNames = {
root: 'tv-shared-source-badge',
icon: 'tv-shared-source-badge__icon',
label: 'tv-shared-source-badge__label',
};
const sourceBadgeIcons = {
code: FiCode,
'git-branch': FiGitBranch,
github: FiGithub,
};
const GITHUB_HOSTNAMES = new Set(['github.com', 'www.github.com']);
function resolveSourceBadgeIconName(href, iconName) {
if (iconName) {
return iconName;
}
try {
const url = new URL(href, 'https://tvprograms.tech');
if (GITHUB_HOSTNAMES.has(url.hostname.toLowerCase())) {
return 'github';
}
}
catch {
return 'code';
}
return 'code';
}
function renderSourceBadgeIcon(iconName) {
return ({ className, style }) => {
const Icon = sourceBadgeIcons[iconName];
return _jsx(Icon, { className: className, focusable: "false", style: style });
};
}
export function SourceBadge({ className, href, icon, iconClassName, iconName, label = 'Source', labelClassName, rel = 'noreferrer', style, target = '_blank', unstyled = false, ...props }) {
return (_jsx(LinkBadgeBase, { className: className, classNames: sourceBadgeClassNames, href: href, icon: icon, iconClassName: iconClassName, label: label, labelClassName: labelClassName, rel: rel, renderDefaultIcon: renderSourceBadgeIcon(resolveSourceBadgeIconName(href, iconName)), style: style, target: target, unstyled: unstyled, ...props }));
}
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"BrandBadge.d.ts","sourceRoot":"","sources":["../src/BrandBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgChF,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAqB,EACrB,IAAI,EACJ,aAAa,EACb,KAAgC,EAChC,cAAc,EACd,GAAkB,EAClB,KAAK,EACL,MAAiB,EACjB,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,2CAyBjB"}
{"version":3,"file":"BrandBadge.d.ts","sourceRoot":"","sources":["../src/BrandBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWjE,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAqB,EACrB,IAAI,EACJ,aAAa,EACb,KAAgC,EAChC,cAAc,EACd,GAAkB,EAClB,KAAK,EACL,MAAiB,EACjB,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,2CAkBjB"}

@@ -1,27 +0,5 @@

import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { jsx as _jsx } from "react/jsx-runtime";
import { TVPROGRAMS_DEFAULT_LABEL, TVPROGRAMS_URL, } from './constants.js';
import { LinkBadgeBase, } from './LinkBadgeBase.js';
import { TvProgramsMark } from './TvProgramsMark.js';
const DEFAULT_ROOT_STYLE = {
alignItems: 'center',
backgroundColor: '#ffffff',
border: '1px solid #d1d5db',
borderRadius: '999px',
boxShadow: '0 1px 2px rgba(15, 23, 42, 0.08)',
color: '#374151',
display: 'inline-flex',
fontFamily: 'inherit',
fontSize: '0.875rem',
fontWeight: 600,
gap: '0.5rem',
lineHeight: 1,
padding: '0.45rem 0.8rem',
textDecoration: 'none',
};
const DEFAULT_ICON_STYLE = {
color: 'inherit',
display: 'block',
flexShrink: 0,
height: '1rem',
width: '1rem',
};
export const brandBadgeClassNames = {

@@ -32,8 +10,7 @@ root: 'tv-shared-brand-badge',

};
function renderDefaultBrandBadgeIcon({ className, style }) {
return _jsx(TvProgramsMark, { className: className, style: style });
}
export function BrandBadge({ className, href = TVPROGRAMS_URL, icon, iconClassName, label = TVPROGRAMS_DEFAULT_LABEL, labelClassName, rel = 'noreferrer', style, target = '_blank', unstyled = false, ...props }) {
const rootClassName = [brandBadgeClassNames.root, className].filter(Boolean).join(' ');
const iconSlotClassName = [brandBadgeClassNames.icon, iconClassName].filter(Boolean).join(' ');
const labelSlotClassName = [brandBadgeClassNames.label, labelClassName].filter(Boolean).join(' ');
const mergedStyle = unstyled ? style : { ...DEFAULT_ROOT_STYLE, ...style };
return (_jsxs("a", { className: rootClassName, href: href, rel: rel, style: mergedStyle, target: target, ...props, children: [_jsx("span", { "aria-hidden": "true", className: iconSlotClassName, style: unstyled ? undefined : DEFAULT_ICON_STYLE, children: icon ?? _jsx(TvProgramsMark, { className: iconSlotClassName, style: unstyled ? undefined : DEFAULT_ICON_STYLE }) }), _jsx("span", { className: labelSlotClassName, children: label })] }));
return (_jsx(LinkBadgeBase, { className: className, classNames: brandBadgeClassNames, href: href, icon: icon, iconClassName: iconClassName, label: label, labelClassName: labelClassName, rel: rel, renderDefaultIcon: renderDefaultBrandBadgeIcon, style: style, target: target, unstyled: unstyled, ...props }));
}
export { BrandBadge, brandBadgeClassNames, type BrandBadgeProps, } from './BrandBadge.js';
export { SourceBadge, sourceBadgeClassNames, type SourceBadgeIconName, type SourceBadgeProps, } from './SourceBadge.js';
export { TVPROGRAMS_DEFAULT_LABEL, TVPROGRAMS_HOSTNAME, TVPROGRAMS_URL, } from './constants.js';

@@ -3,0 +4,0 @@ export { TvProgramsMark, type TvProgramsMarkProps, } from './TvProgramsMark.js';

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC"}
export { BrandBadge, brandBadgeClassNames, } from './BrandBadge.js';
export { SourceBadge, sourceBadgeClassNames, } from './SourceBadge.js';
export { TVPROGRAMS_DEFAULT_LABEL, TVPROGRAMS_HOSTNAME, TVPROGRAMS_URL, } from './constants.js';

@@ -3,0 +4,0 @@ export { TvProgramsMark, } from './TvProgramsMark.js';

{
"name": "@taylorvance/tv-shared-web",
"version": "0.7.2",
"version": "0.8.0",
"description": "Shared React runtime primitives for Taylor Vance portfolio projects.",

@@ -21,2 +21,7 @@ "type": "module",

},
"./SourceBadge": {
"types": "./dist/SourceBadge.d.ts",
"import": "./dist/SourceBadge.js",
"default": "./dist/SourceBadge.js"
},
"./TvProgramsWordmark": {

@@ -114,3 +119,4 @@ "types": "./dist/TvProgramsWordmark.d.ts",

"dependencies": {
"react-hotkeys-hook": "^5.1.0"
"react-hotkeys-hook": "^5.1.0",
"react-icons": "^5.6.0"
},

@@ -117,0 +123,0 @@ "peerDependencies": {

@@ -13,3 +13,3 @@ # `@taylorvance/tv-shared-web`

- brand primitives: `BrandBadge`, `TvProgramsMark`, `TvProgramsWordmark`
- brand and source primitives: `BrandBadge`, `SourceBadge`, `TvProgramsMark`, `TvProgramsWordmark`
- shared branding constants: `TVPROGRAMS_URL`, `TVPROGRAMS_HOSTNAME`, `TVPROGRAMS_DEFAULT_LABEL`

@@ -27,2 +27,3 @@ - styling hooks: `brandBadgeClassNames`, `tvProgramsWordmarkClassNames`

- `@taylorvance/tv-shared-web/BrandBadge`
- `@taylorvance/tv-shared-web/SourceBadge`
- `@taylorvance/tv-shared-web/TvProgramsWordmark`

@@ -51,3 +52,3 @@ - `@taylorvance/tv-shared-web/assets`

## Brand primitives
## Brand And Source Primitives

@@ -64,2 +65,14 @@ Default badge:

Source badge:
```tsx
import { SourceBadge } from '@taylorvance/tv-shared-web';
export function Footer() {
return <SourceBadge href="https://github.com/taylorvance/wordlink" />;
}
```
`SourceBadge` automatically uses the GitHub icon for `github.com` links and falls back to a generic code icon for other hosts. Use `iconName="code"`, `iconName="github"`, or `iconName="git-branch"` to force a specific preset. Consumers can also pass a custom `icon`.
Wordmark:

@@ -66,0 +79,0 @@