Forms & Tables
Caption Element
Style table caption elements with configurable color, padding, and text alignment using the useCaptionElement composable.
Part of the Global Preset:
useCaptionElement is included in the Global Preset (useGlobalPreset) and you can configure it through the preset's caption option. For most projects, applying it via the preset is the recommended approach.Overview
The useCaptionElement composable styles the caption element for table captions with configurable text color, padding on each side, and text alignment.
useCaptionElement
function useCaptionElement(
s: Styleframe,
options?: WithThemes<CaptionElementConfig>
): CaptionElementResult
styleframe.config.ts
import { styleframe } from 'styleframe';
import { useCaptionElement } from '@styleframe/theme';
const s = styleframe();
const {
captionColor,
captionPaddingTop,
captionPaddingRight,
captionPaddingBottom,
captionPaddingLeft,
captionTextAlign,
} = useCaptionElement(s);
export default s;
styleframe/index.css
:root {
--caption--color: var(--color--text-weak);
--caption--padding-top: var(--spacing--xs);
--caption--padding-right: var(--spacing--sm);
--caption--padding-bottom: var(--spacing--xs);
--caption--padding-left: var(--spacing--sm);
--caption--text-align: left;
}
caption {
color: var(--caption--color);
padding-top: var(--caption--padding-top);
padding-right: var(--caption--padding-right);
padding-bottom: var(--caption--padding-bottom);
padding-left: var(--caption--padding-left);
text-align: var(--caption--text-align);
}
Default Values
| Option | Default | Variable | Export |
|---|---|---|---|
color | "@color.text-weak" | --caption--color | captionColor |
paddingTop | "@spacing.xs" | --caption--padding-top | captionPaddingTop |
paddingRight | "@spacing.sm" | --caption--padding-right | captionPaddingRight |
paddingBottom | "@spacing.xs" | --caption--padding-bottom | captionPaddingBottom |
paddingLeft | "@spacing.sm" | --caption--padding-left | captionPaddingLeft |
textAlign | "left" | --caption--text-align | captionTextAlign |
The default configuration includes a dark theme override that re-references @color.text-weak.
Custom Values
styleframe.config.ts
import { styleframe } from 'styleframe';
import { useCaptionElement } from '@styleframe/theme';
const s = styleframe();
const { captionColor, captionTextAlign } = useCaptionElement(s, {
color: '@color.gray-500',
paddingTop: '@spacing.sm',
paddingBottom: '@spacing.sm',
textAlign: 'center',
});
export default s;
styleframe.config.ts
import { styleframe } from 'styleframe';
import { useGlobalPreset } from '@styleframe/theme';
const s = styleframe();
const { caption } = useGlobalPreset(s, {
caption: {
color: '@color.gray-500',
paddingTop: '@spacing.sm',
paddingBottom: '@spacing.sm',
textAlign: 'center',
},
});
export default s;
styleframe/index.css
:root {
--caption--color: var(--color--gray-500);
--caption--padding-top: var(--spacing--sm);
--caption--padding-right: var(--spacing--sm);
--caption--padding-bottom: var(--spacing--sm);
--caption--padding-left: var(--spacing--sm);
--caption--text-align: center;
}
caption {
color: var(--caption--color);
padding-top: var(--caption--padding-top);
padding-right: var(--caption--padding-right);
padding-bottom: var(--caption--padding-bottom);
padding-left: var(--caption--padding-left);
text-align: var(--caption--text-align);
}
Best Practices
- Use subdued text color: Caption text is secondary information — use a muted color like
@color.text-weakto establish visual hierarchy. - Reference spacing tokens: Use
@spacing.xsand@spacing.smfor padding to stay consistent with your layout system. - Left-align by default: Left alignment is the most readable option for table captions in LTR languages.