Composables
Caption Element
Style table caption elements with configurable color, padding, and text alignment using the useCaptionElement composable.
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/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.
Body
Style the body element with configurable color, background, font family, font size, and line height using the useBodyElement composable.
Code
Style inline code and preformatted text blocks with configurable font family, font size, and spacing using the useCodeElement and usePreElement composables.