@taylorvance/tv-shared-web
Advanced tools
| 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 +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"} |
+6
-29
@@ -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 })); | ||
| } |
+1
-0
| 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"} |
+1
-0
| 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'; |
+8
-2
| { | ||
| "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": { |
+15
-2
@@ -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 @@ |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
127000
5.69%64
10.34%2131
4.31%286
4.76%3
50%+ Added
+ Added