import { Ban } from "lucide-react";
//#region ../core/src/registries/property-schema-types.ts
/**
* Property field type constant - single source of truth for field types.
* Use PROPERTY_FIELD_TYPES.text instead of "text" for type-safe comparisons.
*/
const PROPERTY_FIELD_TYPES = {
	text: "text",
	textarea: "textarea",
	number: "number",
	boolean: "boolean",
	select: "select",
	color: "color",
	range: "range",
	dataSource: "dataSource",
	resource: "resource",
	image: "image",
	alignment: "alignment",
	slider: "slider",
	colorPicker: "colorPicker",
	sectionHeader: "sectionHeader",
	separator: "separator",
	buttonGroup: "buttonGroup",
	colorSelect: "colorSelect",
	sectionLayoutSelect: "sectionLayoutSelect",
	background: "background",
	contentPosition: "contentPosition",
	textSizeSelect: "textSizeSelect",
	cssUnit: "cssUnit",
	fontPicker: "fontPicker",
	stringArray: "stringArray",
	borderRadius: "borderRadius",
	screenPicker: "screenPicker"
};
/**
* Runtime validation for property field types.
* @param value - The value to check
* @returns true if value is a valid PropertyFieldType
*/
function isPropertyFieldType(value) {
	return Object.values(PROPERTY_FIELD_TYPES).includes(value);
}
//#endregion
//#region ../core/src/registries/field-helpers.ts
const getColorField = (props) => {
	return {
		...props,
		type: "colorSelect"
	};
};
const getBorderRadiusField = (props) => {
	return {
		advanced: true,
		...props,
		type: "buttonGroup",
		options: [
			{
				icon: Ban,
				ariaLabel: "No radius",
				value: "none"
			},
			{
				label: "SM",
				value: "sm"
			},
			{
				label: "MD",
				value: "md"
			},
			{
				label: "LG",
				value: "lg"
			},
			{
				label: "XL",
				value: "xl"
			},
			{
				label: "FULL",
				value: "full"
			}
		]
	};
};
const getPaddingField = (props) => {
	return {
		advanced: true,
		...props,
		type: "buttonGroup",
		options: [
			{
				icon: Ban,
				ariaLabel: "No padding",
				value: 0
			},
			{
				label: "SM",
				value: 2
			},
			{
				label: "MD",
				value: 4
			},
			{
				label: "LG",
				value: 6
			},
			{
				label: "XL",
				value: 8
			},
			{
				label: "FULL",
				value: 10
			}
		]
	};
};
const getButtonSizeField = (props) => {
	return {
		...props,
		type: "buttonGroup",
		options: [
			{
				label: "SM",
				value: "sm"
			},
			{
				label: "MD",
				value: "default"
			},
			{
				label: "LG",
				value: "lg"
			},
			{
				label: "XL",
				value: "xl"
			}
		]
	};
};
const getFontWeightField = (props) => {
	return {
		...props,
		type: "buttonGroup",
		options: [
			{
				label: "Normal",
				value: "normal"
			},
			{
				label: "Medium",
				value: "medium"
			},
			{
				label: "Semibold",
				value: "semibold"
			},
			{
				label: "Bold",
				value: "bold"
			}
		]
	};
};
const getFontSizeField = (props) => {
	return {
		...props,
		type: "textSizeSelect"
	};
};
const getGapField = (props) => {
	return {
		...props,
		type: "buttonGroup",
		options: [
			{
				icon: Ban,
				ariaLabel: "No gap",
				value: "none"
			},
			{
				label: "XS",
				value: "xs"
			},
			{
				label: "SM",
				value: "sm"
			},
			{
				label: "MD",
				value: "md"
			},
			{
				label: "LG",
				value: "lg"
			},
			{
				label: "XL",
				value: "xl"
			}
		]
	};
};
const getHeightField = (props) => {
	return {
		...props,
		type: "cssUnit",
		allowedUnits: [
			"px",
			"vh",
			"rem"
		],
		minByUnit: {
			px: 10,
			vh: 1,
			rem: 1
		},
		maxByUnit: {
			px: 1200,
			vh: 100,
			rem: 75
		},
		stepByUnit: {
			px: 10,
			vh: 1,
			rem: 1
		}
	};
};
const getBorderRadiusCompositeField = (props) => {
	return {
		advanced: true,
		...props,
		type: "borderRadius",
		keys: props.keys ?? {
			topLeft: "borderRadiusTL",
			topRight: "borderRadiusTR",
			bottomLeft: "borderRadiusBL",
			bottomRight: "borderRadiusBR"
		}
	};
};
/**
* Gap value mapping - use `as const satisfies` for compile-time validation
* with literal type preservation.
*/
const gapValues = {
	none: 0,
	xs: 1,
	sm: 2,
	md: 4,
	lg: 6,
	xl: 8
};
const getBorderWidthField = (props) => ({
	advanced: true,
	...props,
	type: "buttonGroup",
	options: [
		{
			icon: Ban,
			ariaLabel: "No border",
			value: "none"
		},
		{
			label: "THIN",
			value: "thin"
		},
		{
			label: "MD",
			value: "medium"
		},
		{
			label: "THICK",
			value: "thick"
		}
	]
});
const getBorderColorField = getColorField;
/**
* Border width class mapping - full literal Tailwind classes for scanner.
*/
const borderWidthClasses = {
	none: "border-0",
	thin: "border",
	medium: "border-2",
	thick: "border-4"
};
/**
* Border color class mapping - full literal Tailwind classes for scanner.
*/
const borderColorClasses = {
	background: "border-background",
	foreground: "border-foreground",
	primary: "border-primary",
	secondary: "border-secondary",
	accent: "border-accent",
	border: "border-border",
	muted: "border-muted",
	destructive: "border-destructive",
	transparent: "border-transparent"
};
//#endregion
export { getBorderRadiusCompositeField as a, getButtonSizeField as c, getFontWeightField as d, getGapField as f, isPropertyFieldType as g, PROPERTY_FIELD_TYPES as h, getBorderColorField as i, getColorField as l, getPaddingField as m, borderWidthClasses as n, getBorderRadiusField as o, getHeightField as p, gapValues as r, getBorderWidthField as s, borderColorClasses as t, getFontSizeField as u };

//# sourceMappingURL=registries-59Barbhg.mjs.map