Reference
Tailwind Utilities
This documentation provides a reference for the curated subset of Tailwind v4 utilities available in extensions. Understanding which classes are pre-emitted helps you style extension UI efficiently while keeping the platform bundle lean.
Using utilities
Apply them via the className prop on ui.* components:
<ui.Card className="mt-4 p-6">
<ui.Stack className="gap-3">
<ui.Text className="text-lg font-semibold uppercase tracking-wide">Title</ui.Text>
<ui.Text className="text-zinc-600">Body copy</ui.Text>
</ui.Stack>
</ui.Card>
Always prefer:
- Component variants (
<ui.Button variant="primary">) over color overrides - Layout components (
<ui.Stack>,<ui.Inline>) over manual flexbox class chains - The semantic color tokens (
text-foreground,bg-background) which adapt to the embedding application's theme
Safelist limits
The safelist is intentionally a fixed list, NOT the full Tailwind catalog to provide UI consistency and reduce bundle size. Anything beyond what is listed below will be missing from the platform stylesheet at runtime — the class will appear in your DOM but the corresponding CSS rule will not exist, and the style will silently no-op. In particular:
- Arbitrary values are NOT supported in general (e.g.
w-[123px],bg-[#1a1a1a],text-[15px]). The single exception isaspect-[9/16](portrait video). For any other arbitrary value, use the named utility closest to your target. - Off-list color shades (e.g.
bg-cyan-500,text-rose-500) are not pre-emitted. The supported color set below is curated for visual consistency with the embedding application's theme. - Off-list ladder values (e.g.
mt-32,text-4xl,w-128) are not pre-emitted. The ladders below cover sizes appropriate for the embedded widget's narrow viewport.
If you need something that's not on this list, file an issue with your use case — the safelist is curated, not frozen.
Utility families
Margin (88)
m-0m-0.5m-1m-1.5m-2m-2.5m-3m-3.5m-4m-5m-6m-7m-8m-9m-10m-11m-12m-14m-16mb-0mb-1mb-2mb-3mb-4mb-5mb-6mb-8mb-10mb-12mb-16ml-0ml-1ml-2ml-3ml-4ml-5ml-6ml-8ml-10ml-12ml-16ml-automr-0mr-1mr-2mr-3mr-4mr-5mr-6mr-8mr-10mr-12mr-16mr-automt-0mt-1mt-2mt-3mt-4mt-5mt-6mt-8mt-10mt-12mt-16mx-0mx-1mx-2mx-3mx-4mx-5mx-6mx-8mx-10mx-12mx-16mx-automy-0my-1my-2my-3my-4my-5my-6my-8my-10my-12my-16
Padding (85)
p-0p-0.5p-1p-1.5p-2p-2.5p-3p-3.5p-4p-5p-6p-7p-8p-9p-10p-11p-12p-14p-16pb-0pb-1pb-2pb-3pb-4pb-5pb-6pb-8pb-10pb-12pb-16pl-0pl-1pl-2pl-3pl-4pl-5pl-6pl-8pl-10pl-12pl-16pr-0pr-1pr-2pr-3pr-4pr-5pr-6pr-8pr-10pr-12pr-16pt-0pt-1pt-2pt-3pt-4pt-5pt-6pt-8pt-10pt-12pt-16px-0px-1px-2px-3px-4px-5px-6px-8px-10px-12px-16py-0py-1py-2py-3py-4py-5py-6py-8py-10py-12py-16
Gap (26)
gap-0gap-1gap-2gap-3gap-4gap-5gap-6gap-8gap-10gap-12gap-x-0gap-x-1gap-x-2gap-x-3gap-x-4gap-x-5gap-x-6gap-x-8gap-y-0gap-y-1gap-y-2gap-y-3gap-y-4gap-y-5gap-y-6gap-y-8
Width / Height (46)
h-0h-1h-1/2h-1/3h-1/4h-2h-2/3h-3h-3/4h-4h-5h-6h-8h-10h-12h-16h-20h-24h-32h-48h-autoh-fullh-screenw-0w-1w-1/2w-1/3w-1/4w-2w-2/3w-3w-3/4w-4w-5w-6w-8w-10w-12w-16w-20w-24w-32w-48w-autow-fullw-screen
Sizing constraints (17)
max-w-2xlmax-w-3xlmax-w-4xlmax-w-5xlmax-w-fitmax-w-fullmax-w-lgmax-w-mdmax-w-nonemax-w-smmax-w-xlmax-w-xsmin-w-0min-w-fitmin-w-fullmin-w-maxmin-w-min
Aspect ratio (4)
aspect-[9/16]aspect-autoaspect-squareaspect-video
Display (7)
blockflexgridhiddeninlineinline-blockinline-flex
Flex (10)
flex-1flex-autoflex-colflex-col-reverseflex-initialflex-noneflex-nowrapflex-rowflex-row-reverseflex-wrap
Justify content (6)
justify-aroundjustify-betweenjustify-centerjustify-endjustify-evenlyjustify-start
Align items (5)
items-baselineitems-centeritems-enditems-startitems-stretch
Align self (6)
self-autoself-baselineself-centerself-endself-startself-stretch
Position (5)
absolutefixedrelativestaticsticky
Z-index (7)
z-0z-10z-20z-30z-40z-50z-auto
Overflow (10)
overflow-autooverflow-hiddenoverflow-scrolloverflow-visibleoverflow-x-autooverflow-x-hiddenoverflow-x-scrolloverflow-y-autooverflow-y-hiddenoverflow-y-scroll
Text size (6)
text-2xltext-basetext-lgtext-smtext-xltext-xs
Font weight (6)
font-boldfont-extraboldfont-lightfont-mediumfont-normalfont-semibold
Text transform (4)
capitalizelowercasenormal-caseuppercase
Letter spacing (tracking) (5)
tracking-normaltracking-tighttracking-widetracking-widertracking-widest
Line height (leading) (6)
leading-looseleading-noneleading-normalleading-relaxedleading-snugleading-tight
Text color (61)
text-amber-500text-amber-600text-amber-700text-blue-500text-blue-600text-blue-700text-emerald-500text-emerald-600text-emerald-700text-gray-50text-gray-100text-gray-200text-gray-300text-gray-400text-gray-500text-gray-600text-gray-700text-gray-800text-gray-900text-green-500text-green-600text-green-700text-indigo-500text-indigo-600text-indigo-700text-neutral-50text-neutral-100text-neutral-200text-neutral-300text-neutral-400text-neutral-500text-neutral-600text-neutral-700text-neutral-800text-neutral-900text-red-500text-red-600text-red-700text-sky-500text-sky-600text-sky-700text-slate-50text-slate-100text-slate-200text-slate-300text-slate-400text-slate-500text-slate-600text-slate-700text-slate-800text-slate-900text-zinc-50text-zinc-100text-zinc-200text-zinc-300text-zinc-400text-zinc-500text-zinc-600text-zinc-700text-zinc-800text-zinc-900
Background color (60)
bg-amber-50bg-amber-100bg-amber-500bg-amber-600bg-blue-50bg-blue-100bg-blue-500bg-blue-600bg-emerald-50bg-emerald-100bg-emerald-500bg-emerald-600bg-gray-50bg-gray-100bg-gray-200bg-gray-300bg-gray-400bg-gray-500bg-gray-600bg-gray-700bg-gray-800bg-gray-900bg-green-50bg-green-100bg-green-500bg-green-600bg-neutral-50bg-neutral-100bg-neutral-200bg-neutral-300bg-neutral-400bg-neutral-500bg-neutral-600bg-neutral-700bg-neutral-800bg-neutral-900bg-red-50bg-red-100bg-red-500bg-red-600bg-slate-50bg-slate-100bg-slate-200bg-slate-300bg-slate-400bg-slate-500bg-slate-600bg-slate-700bg-slate-800bg-slate-900bg-zinc-50bg-zinc-100bg-zinc-200bg-zinc-300bg-zinc-400bg-zinc-500bg-zinc-600bg-zinc-700bg-zinc-800bg-zinc-900
Border color (13)
border-gray-100border-gray-200border-gray-300border-gray-400border-slate-100border-slate-200border-slate-300border-slate-400border-transparentborder-zinc-100border-zinc-200border-zinc-300border-zinc-400
Border width (11)
borderborder-0border-2border-4border-8border-bborder-lborder-rborder-tborder-xborder-y
Border radius (8)
rounded-2xlrounded-3xlrounded-fullrounded-lgrounded-mdrounded-nonerounded-smrounded-xl
Opacity (15)
opacity-0opacity-5opacity-10opacity-20opacity-25opacity-30opacity-40opacity-50opacity-60opacity-70opacity-75opacity-80opacity-90opacity-95opacity-100
Box shadow (7)
shadow-2xlshadow-innershadow-lgshadow-mdshadow-noneshadow-smshadow-xl
Cursor (7)
cursor-defaultcursor-helpcursor-movecursor-not-allowedcursor-pointercursor-textcursor-wait
Transition (18)
duration-75duration-100duration-150duration-200duration-300duration-500duration-700duration-1000ease-inease-in-outease-linearease-outtransitiontransition-alltransition-colorstransition-nonetransition-opacitytransition-transform
State variants
Focus (3)
focus:outline-nonefocus:ring-2focus:ring-offset-2
Disabled (2)
disabled:cursor-not-alloweddisabled:opacity-50
Hover — opacity (5)
hover:opacity-50hover:opacity-75hover:opacity-80hover:opacity-90hover:opacity-100
Hover — text color (41)
hover:text-amber-500hover:text-amber-600hover:text-amber-700hover:text-blue-500hover:text-blue-600hover:text-blue-700hover:text-emerald-500hover:text-emerald-600hover:text-emerald-700hover:text-gray-500hover:text-gray-600hover:text-gray-700hover:text-gray-800hover:text-gray-900hover:text-green-500hover:text-green-600hover:text-green-700hover:text-indigo-500hover:text-indigo-600hover:text-indigo-700hover:text-neutral-500hover:text-neutral-600hover:text-neutral-700hover:text-neutral-800hover:text-neutral-900hover:text-red-500hover:text-red-600hover:text-red-700hover:text-sky-500hover:text-sky-600hover:text-sky-700hover:text-slate-500hover:text-slate-600hover:text-slate-700hover:text-slate-800hover:text-slate-900hover:text-zinc-500hover:text-zinc-600hover:text-zinc-700hover:text-zinc-800hover:text-zinc-900
Hover — background color (32)
hover:bg-amber-50hover:bg-amber-100hover:bg-amber-500hover:bg-amber-600hover:bg-blue-50hover:bg-blue-100hover:bg-blue-500hover:bg-blue-600hover:bg-emerald-50hover:bg-emerald-100hover:bg-emerald-500hover:bg-emerald-600hover:bg-gray-50hover:bg-gray-100hover:bg-gray-200hover:bg-green-50hover:bg-green-100hover:bg-green-500hover:bg-green-600hover:bg-neutral-50hover:bg-neutral-100hover:bg-neutral-200hover:bg-red-50hover:bg-red-100hover:bg-red-500hover:bg-red-600hover:bg-slate-50hover:bg-slate-100hover:bg-slate-200hover:bg-zinc-50hover:bg-zinc-100hover:bg-zinc-200
Theme variants
Dark — text color (61)
dark:text-amber-500dark:text-amber-600dark:text-amber-700dark:text-blue-500dark:text-blue-600dark:text-blue-700dark:text-emerald-500dark:text-emerald-600dark:text-emerald-700dark:text-gray-50dark:text-gray-100dark:text-gray-200dark:text-gray-300dark:text-gray-400dark:text-gray-500dark:text-gray-600dark:text-gray-700dark:text-gray-800dark:text-gray-900dark:text-green-500dark:text-green-600dark:text-green-700dark:text-indigo-500dark:text-indigo-600dark:text-indigo-700dark:text-neutral-50dark:text-neutral-100dark:text-neutral-200dark:text-neutral-300dark:text-neutral-400dark:text-neutral-500dark:text-neutral-600dark:text-neutral-700dark:text-neutral-800dark:text-neutral-900dark:text-red-500dark:text-red-600dark:text-red-700dark:text-sky-500dark:text-sky-600dark:text-sky-700dark:text-slate-50dark:text-slate-100dark:text-slate-200dark:text-slate-300dark:text-slate-400dark:text-slate-500dark:text-slate-600dark:text-slate-700dark:text-slate-800dark:text-slate-900dark:text-zinc-50dark:text-zinc-100dark:text-zinc-200dark:text-zinc-300dark:text-zinc-400dark:text-zinc-500dark:text-zinc-600dark:text-zinc-700dark:text-zinc-800dark:text-zinc-900
Dark — background color (60)
dark:bg-amber-50dark:bg-amber-100dark:bg-amber-500dark:bg-amber-600dark:bg-blue-50dark:bg-blue-100dark:bg-blue-500dark:bg-blue-600dark:bg-emerald-50dark:bg-emerald-100dark:bg-emerald-500dark:bg-emerald-600dark:bg-gray-50dark:bg-gray-100dark:bg-gray-200dark:bg-gray-300dark:bg-gray-400dark:bg-gray-500dark:bg-gray-600dark:bg-gray-700dark:bg-gray-800dark:bg-gray-900dark:bg-green-50dark:bg-green-100dark:bg-green-500dark:bg-green-600dark:bg-neutral-50dark:bg-neutral-100dark:bg-neutral-200dark:bg-neutral-300dark:bg-neutral-400dark:bg-neutral-500dark:bg-neutral-600dark:bg-neutral-700dark:bg-neutral-800dark:bg-neutral-900dark:bg-red-50dark:bg-red-100dark:bg-red-500dark:bg-red-600dark:bg-slate-50dark:bg-slate-100dark:bg-slate-200dark:bg-slate-300dark:bg-slate-400dark:bg-slate-500dark:bg-slate-600dark:bg-slate-700dark:bg-slate-800dark:bg-slate-900dark:bg-zinc-50dark:bg-zinc-100dark:bg-zinc-200dark:bg-zinc-300dark:bg-zinc-400dark:bg-zinc-500dark:bg-zinc-600dark:bg-zinc-700dark:bg-zinc-800dark:bg-zinc-900
Dark — border color (13)
dark:border-gray-600dark:border-gray-700dark:border-gray-800dark:border-gray-900dark:border-slate-600dark:border-slate-700dark:border-slate-800dark:border-slate-900dark:border-transparentdark:border-zinc-600dark:border-zinc-700dark:border-zinc-800dark:border-zinc-900
Dark — hover text (15)
dark:hover:text-gray-50dark:hover:text-gray-100dark:hover:text-gray-200dark:hover:text-gray-300dark:hover:text-gray-400dark:hover:text-slate-50dark:hover:text-slate-100dark:hover:text-slate-200dark:hover:text-slate-300dark:hover:text-slate-400dark:hover:text-zinc-50dark:hover:text-zinc-100dark:hover:text-zinc-200dark:hover:text-zinc-300dark:hover:text-zinc-400
Dark — hover background (9)
dark:hover:bg-gray-700dark:hover:bg-gray-800dark:hover:bg-gray-900dark:hover:bg-slate-700dark:hover:bg-slate-800dark:hover:bg-slate-900dark:hover:bg-zinc-700dark:hover:bg-zinc-800dark:hover:bg-zinc-900