@radix-ui/themes
Version:
[](https://radix-ui.com/themes)
90 lines (85 loc) • 2.13 kB
text/typescript
import { asChildPropDef } from '../props/index.js';
import type { PropDef } from '../props/index.js';
const sides = ['all', 'x', 'y', 'top', 'bottom', 'left', 'right'] as const;
const clipValues = ['border-box', 'padding-box'] as const;
const paddingValues = ['current', '0'] as const;
const insetPropDefs = {
...asChildPropDef,
side: {
type: 'enum',
className: 'rt-r-side',
values: sides,
default: 'all',
responsive: true,
},
clip: {
type: 'enum',
className: 'rt-r-clip',
values: clipValues,
default: 'border-box',
responsive: true,
},
p: {
type: 'enum',
className: 'rt-r-p',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
px: {
type: 'enum',
className: 'rt-r-px',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
py: {
type: 'enum',
className: 'rt-r-py',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
pt: {
type: 'enum',
className: 'rt-r-pt',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
pr: {
type: 'enum',
className: 'rt-r-pr',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
pb: {
type: 'enum',
className: 'rt-r-pb',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
pl: {
type: 'enum',
className: 'rt-r-pl',
values: paddingValues,
parseValue: parsePaddingValue,
responsive: true,
},
} satisfies {
side: PropDef<(typeof sides)[number]>;
clip: PropDef<(typeof clipValues)[number]>;
p: PropDef<(typeof paddingValues)[number]>;
px: PropDef<(typeof paddingValues)[number]>;
py: PropDef<(typeof paddingValues)[number]>;
pt: PropDef<(typeof paddingValues)[number]>;
pr: PropDef<(typeof paddingValues)[number]>;
pb: PropDef<(typeof paddingValues)[number]>;
pl: PropDef<(typeof paddingValues)[number]>;
};
function parsePaddingValue(value: string) {
return value === 'current' ? 'inset' : value;
}
export { insetPropDefs };