The strongly-typed
Nuxt toolkit.

Four focused modules with a framework-agnostic core. Independently installable.

pnpm add
@alikhalilll/nuxt-api-provider
@alikhalilll/nuxt-crypto
@alikhalilll/nuxt-auto-middleware
@alikhalilll/a-tel-input
app/components/SignupForm.vue
<script setup lang="ts">
import { ATelInput } from '@alikhalilll/a-tel-input';

const phone = ref('');
const country = ref<number | null>(null);
</script>

<template>
  <ATelInput
    v-model:phone="phone"
    v-model:country="country"
  />
</template>

Try +447911 123 456 or ٠١٠٦٦١٠٥٩٦٣

Packages

Each package is independently installable. Most ship a framework-agnostic core at …/core — usable in any JS/TS project; the Nuxt entry just wires the autoimports.

@alikhalilll/nuxt-api-provider

Nuxt module + framework-agnostic core

Typed fetch client with interceptors, retry/backoff, timeouts, and a unified upload + download progress hook.

@alikhalilll/nuxt-crypto

Nuxt module + framework-agnostic core

AES-256-GCM + PBKDF2 via the Web Crypto API, with key caching and pluggable algorithms. Server-only mode keeps the passphrase off the client.

@alikhalilll/nuxt-auto-middleware

Nuxt-only (middleware is a Nuxt primitive)

Layout → middleware mapping with glob patterns, named groups, per-page overrides, and a typed middleware-name registry.

@alikhalilll/a-tel-input

Vue 3 (Nuxt + non-Nuxt)

Headless Vue 3 phone input — ATelInput with auto country detection, libphonenumber validation, and a popover/drawer country picker. All in one package.