Apple-compliant widget toolkit for Clarity Platform - Enforces iOS Human Interface Guidelines automatically.
This package provides React components and utilities that enforce Apple's design standards for widgets, ensuring your widgets pass App Store review and feel native to iOS users.
Create a GitHub Personal Access Token with read:packages permission:
- Go to https://github.com/settings/tokens
- Generate new token (classic)
- Select
read:packagesscope - Copy the token
Add to ~/.npmrc:
@clarittyai:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKENnpm install @clarittyai/widget-toolkitPeer Dependencies:
npm install react framer-motion tailwindcssimport {
WidgetContainer,
WidgetButton,
widgetText,
widgetGradients
} from '@clarittyai/widget-toolkit';
export default function MyWidget({ size = 'large' }: { size: 'small' | 'large' }) {
return (
<WidgetContainer
size={size}
padding="default"
className={widgetGradients.sunset}
>
<div className="flex flex-col gap-3">
<div className={widgetText.display}>42</div>
<div className={widgetText.caption}>Active Users</div>
{size === 'large' && (
<WidgetButton variant="primary">
View Details
</WidgetButton>
)}
</div>
</WidgetContainer>
);
}- Small:
190Γ190px(1:1 ratio - iOS systemSmall) - Large:
400Γ190px(2.1:1 ratio - iOS systemLarge)
- Padding: 16px default (Apple's standard widget margin)
- Internal gaps: 8px, 12px, 16px (multiples of 8)
- Display: 48px, weight 900 (large metrics)
- Headline: 20px, weight 700 (titles)
- Body: 14px, weight 500 (content)
- Caption: 12px, weight 500 (minimum readable size)
- Buttons: Minimum 44Γ44px
- Toggles: Minimum 48px wide
Enforces strict dimensions, padding, border radius, and overflow.
<WidgetContainer
size="small" | "large"
padding="default" | "compact" | "spacious"
className="your-gradient-classes"
>
{children}
</WidgetContainer>Enforces touch target sizes and Apple-style styling.
<WidgetButton
variant="primary" | "secondary" | "ghost"
size="default" | "large"
onClick={handleClick}
>
Button Text
</WidgetButton>Typography scale matching Apple SF Pro:
import { widgetText } from '@clarittyai/widget-toolkit';
<div className={widgetText.display}>42</div> // 48px, weight 900
<div className={widgetText.headline}>Title</div> // 20px, weight 700
<div className={widgetText.caption}>Label</div> // 12px, weight 500Spacing utilities following 8pt grid:
import { widgetSpacing } from '@clarittyai/widget-toolkit';
<div className={widgetSpacing.padding.default}> // p-4 (16px)
<div className={widgetSpacing.gap.normal}> // gap-3 (12px)Apple-style gradient presets:
import { widgetGradients } from '@clarittyai/widget-toolkit';
<div className={widgetGradients.sunset}> // Amber/Orange gradient
<div className={widgetGradients.ocean}> // Blue/Cyan gradient
<div className={widgetGradients.lavender}> // Indigo/Purple gradientValidate your widgets against Apple HIG:
npx @clarittyai/widget-toolkit validate widget/Widget.tsxChecks:
- β Dimensions are exact (190Γ190 or 400Γ190)
- β Padding β₯ 12px
- β Font sizes β₯ 12px
- β Touch targets β₯ 44px
- β No advertising content
β οΈ Warns about contrast ratios
This toolkit enforces Apple's Human Interface Guidelines to ensure:
- Widgets pass App Store review
- Consistent user experience
- Accessibility standards
- Native iOS feel
MIT Β© Clarity Platform