diff --git a/src/api/types.ts b/src/api/types.ts index c02b29d..12ef004 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -50,6 +50,7 @@ export type BusinessRegistrationRequest = { export type CreateBusinessRegistrationPayload = { title: string; categoryId: string; + slug?: string; description?: string; contactPhone?: string; address?: string; diff --git a/src/utils/slug.ts b/src/utils/slug.ts new file mode 100644 index 0000000..a3a4f71 --- /dev/null +++ b/src/utils/slug.ts @@ -0,0 +1,21 @@ +/** Simple slug for API (latin, hyphen-separated). */ +export function slugify(value: string): string { + return value + .trim() + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/[^a-z0-9-]/g, '') + .replace(/-+/g, '-') + .replace(/^-|-$/g, ''); +} + +const SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; + +export function isValidSlug(slug: string): boolean { + return SLUG_PATTERN.test(slug); +} + +export function optionalSlug(value: string): string | undefined { + const trimmed = value.trim(); + return trimmed || undefined; +} diff --git a/src/views/app/AppRegisterBusinessView.vue b/src/views/app/AppRegisterBusinessView.vue index a5919dd..07f55f8 100644 --- a/src/views/app/AppRegisterBusinessView.vue +++ b/src/views/app/AppRegisterBusinessView.vue @@ -37,7 +37,16 @@