{"_id":"@ciwergrp/nuxid-core","_rev":"5-c27c6e7cdd440b1d03488726be3f70f7","name":"@ciwergrp/nuxid-core","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.1":{"name":"@ciwergrp/nuxid-core","version":"0.1.1","keywords":["nuxt","essentials","nuxid"],"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","_id":"@ciwergrp/nuxid-core@0.1.1","maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"homepage":"https://gitlab.com/ciwergrp/nuxid#readme","bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"bin":{"nuxid":"bin/nuxid.mjs"},"dist":{"shasum":"5b8d3b2a3ed92014a4e955b066d91df3975caa17","tarball":"https://registry.npmjs.org/@ciwergrp/nuxid-core/-/nuxid-core-0.1.1.tgz","fileCount":256,"integrity":"sha512-2KiiJ4G2d7YktI/vyq0x24YEi19/TRtawD8KD0W2cGO0nzhsW3LiSDxT8weOuJQpYh7VOqzC+KjAyc2THrH3Gg==","signatures":[{"sig":"MEQCIC8MhhZkctgSzKukSqeaW3+i/DhjD9OD7osKG4T5NrKcAiA6rIY0EOzAwQGsAmFN0sXTavrf1/y4NHCHa8Z4Tc+HIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344722},"main":"./dist/module.mjs","type":"module","_from":"file:ciwergrp-nuxid-core-0.1.1.tgz","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"scripts":{"dev":"npm run dev:prepare && nuxi dev playground","lint":"eslint .","test":"vitest run","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:types":"npm run dev:prepare && vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"ciwer","email":"bagusp81@gmail.com"},"_resolved":"/tmp/cee78e0d3729dc8b63d644c2bd8c31bb/ciwergrp-nuxid-core-0.1.1.tgz","_integrity":"sha512-2KiiJ4G2d7YktI/vyq0x24YEi19/TRtawD8KD0W2cGO0nzhsW3LiSDxT8weOuJQpYh7VOqzC+KjAyc2THrH3Gg==","repository":{"url":"git+https://gitlab.com/ciwergrp/nuxid.git","type":"git"},"_npmVersion":"10.9.7","description":"All-in-one essential modules for Nuxt","directories":{},"_nodeVersion":"22.22.2","dependencies":{"pinia":"3.0.4","date-fns":"4.1.0","@nuxt/kit":"4.4.2","lodash-es":"4.18.1","@nuxt/icon":"2.2.1","@date-fns/tz":"1.4.1","@vueuse/nuxt":"14.2.1","@inquirer/prompts":"8.4.2","@sindresorhus/slugify":"3.0.0","@sindresorhus/transliterate":"2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{".":["./dist/types.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.4","eslint":"^10.3.0","vitest":"^4.1.5","vue-tsc":"^3.2.7","typescript":"^5.8.3","@types/node":"^22.19.17","@nuxt/schema":"^4.4.4","@nuxt/devtools":"^3.2.4","@nuxt/test-utils":"^4.0.3","@types/lodash-es":"^4.17.12","@nuxt/eslint-config":"^1.15.2","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxid-core_0.1.1_1777886182055_0.9199038967683746","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ciwergrp/nuxid-core","version":"0.1.3","keywords":["nuxt","essentials","nuxid"],"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","_id":"@ciwergrp/nuxid-core@0.1.3","maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"homepage":"https://gitlab.com/ciwergrp/nuxid#readme","bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"bin":{"nuxid":"bin/nuxid.mjs"},"dist":{"shasum":"eea3f81453d5082ec3fa214fe56a41314f34af90","tarball":"https://registry.npmjs.org/@ciwergrp/nuxid-core/-/nuxid-core-0.1.3.tgz","fileCount":257,"integrity":"sha512-J2oSB8UTWaRUw5G7AZU2FhI0Vj9VjaR3w2Y4ATQCBeVcEU9Nz+Sbvi5gvEv9L9WErXduQDMc75tm+Rvt0Uh8Fg==","signatures":[{"sig":"MEQCIEq5edgebj1tpJnKl2TG/itGYsoc1u+SqbFrG60TSmbEAiAaa6yGnKRFhowloerelXnSOSvPJrZuiJyHfYYAlCwEuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378497},"main":"./dist/module.mjs","type":"module","_from":"file:ciwergrp-nuxid-core-0.1.3.tgz","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"scripts":{"dev":"pnpm dev:prepare && nuxi dev playground","lint":"eslint .","test":"vitest run","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:types":"pnpm dev:prepare && vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"ciwer","email":"bagusp81@gmail.com"},"_resolved":"/tmp/3acbf1d474861301c5227e31c49ff338/ciwergrp-nuxid-core-0.1.3.tgz","_integrity":"sha512-J2oSB8UTWaRUw5G7AZU2FhI0Vj9VjaR3w2Y4ATQCBeVcEU9Nz+Sbvi5gvEv9L9WErXduQDMc75tm+Rvt0Uh8Fg==","repository":{"url":"git+https://gitlab.com/ciwergrp/nuxid.git","type":"git"},"_npmVersion":"10.9.7","description":"All-in-one essential modules for Nuxt","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","pinia":"3.0.4","date-fns":"4.1.0","@nuxt/kit":"4.4.2","lodash-es":"4.18.1","@nuxt/icon":"2.2.1","@date-fns/tz":"1.4.1","@vueuse/nuxt":"14.2.1","@inquirer/prompts":"8.4.2","@sindresorhus/slugify":"3.0.0","@sindresorhus/transliterate":"2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{".":["./dist/types.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.4","eslint":"^10.3.0","vitest":"^4.1.5","vue-tsc":"^3.2.7","@nuxt/ui":"^4.7.1","typescript":"^5.8.3","@types/node":"^22.19.17","@nuxt/schema":"^4.4.4","@nuxt/devtools":"^3.2.4","@nuxt/test-utils":"^4.0.3","@types/lodash-es":"^4.17.12","@nuxt/eslint-config":"^1.15.2","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxid-core_0.1.3_1778142290753_0.388161053577589","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@ciwergrp/nuxid-core","version":"0.3.2","keywords":["nuxt","essentials","nuxid"],"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","_id":"@ciwergrp/nuxid-core@0.3.2","maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"homepage":"https://gitlab.com/ciwergrp/nuxid#readme","bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"bin":{"nuxid":"bin/nuxid.mjs"},"dist":{"shasum":"cabbfd2ee89f03debd2f4b1d9023fc8da7ea73c4","tarball":"https://registry.npmjs.org/@ciwergrp/nuxid-core/-/nuxid-core-0.3.2.tgz","fileCount":249,"integrity":"sha512-z4tqUykVTm2zzQ2f6GGQlpY87UiD1x1z6hJyZagxsEeEM1SwBQl9Tq8HJUjhMD3mWJk/eZoyO/VMzVVXggX9bA==","signatures":[{"sig":"MEUCIQDIwYR/8XgubC+naGaKUWgwSuSaskXdA4tFlTwj3gmj+wIgA7qu8zHEyZ2TXaNexTJ1kL64hDPFuWH1Vc6N3oK2l6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375046},"main":"./dist/module.mjs","type":"module","_from":"file:ciwergrp-nuxid-core-0.3.2.tgz","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"scripts":{"dev":"pnpm dev:prepare && nuxi dev playground","lint":"eslint .","test":"vitest run","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:types":"pnpm dev:prepare && vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"ciwer","email":"bagusp81@gmail.com"},"_resolved":"/tmp/8af02c477f6e63a734e874a689972738/ciwergrp-nuxid-core-0.3.2.tgz","_integrity":"sha512-z4tqUykVTm2zzQ2f6GGQlpY87UiD1x1z6hJyZagxsEeEM1SwBQl9Tq8HJUjhMD3mWJk/eZoyO/VMzVVXggX9bA==","repository":{"url":"git+https://gitlab.com/ciwergrp/nuxid.git","type":"git"},"_npmVersion":"10.9.8","description":"All-in-one essential modules for Nuxt","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","date-fns":"4.3.0","@nuxt/kit":"4.4.6","lodash-es":"4.18.1","@nuxt/icon":"2.2.2","@date-fns/tz":"1.5.0","@vueuse/nuxt":"14.3.0","@inquirer/prompts":"8.5.0","@sindresorhus/slugify":"3.0.0","@sindresorhus/transliterate":"2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{".":["./dist/types.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.4","eslint":"^10.3.0","vitest":"^4.1.5","vue-tsc":"^3.2.7","@nuxt/ui":"^4.7.1","typescript":"^5.8.3","@types/node":"^22.19.17","@nuxt/schema":"^4.4.4","@nuxt/devtools":"^3.2.4","@nuxt/test-utils":"^4.0.3","@types/lodash-es":"^4.17.12","@nuxt/eslint-config":"^1.15.2","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxid-core_0.3.2_1781158085470_0.8752722760472085","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@ciwergrp/nuxid-core","version":"0.3.3","keywords":["nuxt","essentials","nuxid"],"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","_id":"@ciwergrp/nuxid-core@0.3.3","maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"homepage":"https://gitlab.com/ciwergrp/nuxid#readme","bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"bin":{"nuxid":"bin/nuxid.mjs"},"dist":{"shasum":"f6b4919125f2dfade1b5de9717c99ab0bf8d2bad","tarball":"https://registry.npmjs.org/@ciwergrp/nuxid-core/-/nuxid-core-0.3.3.tgz","fileCount":249,"integrity":"sha512-dwT48hrOk3kxHC6+dn5HOqEwLEowM6oYYxazyH81F8oaZLBxBsSl+wHcqVirGXGUE7sslH4GuGRAHdKWD5iyEQ==","signatures":[{"sig":"MEUCIQDM62Rfsw8kj694OMwM1lQy6rwfv+4hQCoU8qLkKPhflgIgGoAB231sCw3zVaxezxtbNd+zs+AETaszGfNhagJp9yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376576},"main":"./dist/module.mjs","type":"module","_from":"file:ciwergrp-nuxid-core-0.3.3.tgz","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"scripts":{"dev":"pnpm dev:prepare && nuxi dev playground","lint":"eslint .","test":"vitest run","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:types":"pnpm dev:prepare && vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"ciwer","email":"bagusp81@gmail.com"},"_resolved":"/tmp/88188d2220950cb9405cf9a82272ec67/ciwergrp-nuxid-core-0.3.3.tgz","_integrity":"sha512-dwT48hrOk3kxHC6+dn5HOqEwLEowM6oYYxazyH81F8oaZLBxBsSl+wHcqVirGXGUE7sslH4GuGRAHdKWD5iyEQ==","repository":{"url":"git+https://gitlab.com/ciwergrp/nuxid.git","type":"git"},"_npmVersion":"10.9.8","description":"All-in-one essential modules for Nuxt","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","date-fns":"4.3.0","@nuxt/kit":"4.4.6","lodash-es":"4.18.1","@nuxt/icon":"2.2.2","@date-fns/tz":"1.5.0","@vueuse/nuxt":"14.3.0","@inquirer/prompts":"8.5.0","@sindresorhus/slugify":"3.0.0","@sindresorhus/transliterate":"2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{".":["./dist/types.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.4","eslint":"^10.3.0","vitest":"^4.1.5","vue-tsc":"^3.2.7","@nuxt/ui":"^4.7.1","typescript":"^5.8.3","@types/node":"^22.19.17","@nuxt/schema":"^4.4.4","@nuxt/devtools":"^3.2.4","@nuxt/test-utils":"^4.0.3","@types/lodash-es":"^4.17.12","@nuxt/eslint-config":"^1.15.2","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxid-core_0.3.3_1781160518238_0.24557740260016558","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@ciwergrp/nuxid-core","version":"0.3.5","description":"All-in-one essential modules for Nuxt","repository":{"type":"git","url":"git+https://gitlab.com/ciwergrp/nuxid.git"},"keywords":["nuxt","essentials","nuxid"],"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"main":"./dist/module.mjs","typesVersions":{"*":{".":["./dist/types.d.mts"]}},"bin":{"nuxid":"bin/nuxid.mjs"},"publishConfig":{"access":"public"},"dependencies":{"@date-fns/tz":"1.5.0","@inquirer/prompts":"8.5.0","@nuxt/icon":"2.2.2","@nuxt/kit":"4.4.6","@sindresorhus/slugify":"3.0.0","@sindresorhus/transliterate":"2.3.1","@vueuse/nuxt":"14.3.0","date-fns":"4.3.0","lodash-es":"4.18.1","zod":"^4.4.3"},"devDependencies":{"@nuxt/devtools":"^3.2.4","@nuxt/eslint-config":"^1.15.2","@nuxt/ui":"^4.7.1","@nuxt/module-builder":"^1.0.2","@nuxt/schema":"^4.4.4","@nuxt/test-utils":"^4.0.3","@types/lodash-es":"^4.17.12","@types/node":"^22.19.17","eslint":"^10.3.0","nuxt":"^4.4.4","typescript":"^5.8.3","vitest":"^4.1.5","vue-tsc":"^3.2.7"},"scripts":{"dev":"pnpm dev:prepare && nuxi dev playground","dev:build":"nuxi build playground","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","lint":"eslint .","test":"vitest run","test:watch":"vitest watch","test:types":"pnpm dev:prepare && vue-tsc --noEmit && cd playground && vue-tsc --noEmit"},"_id":"@ciwergrp/nuxid-core@0.3.5","bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"homepage":"https://gitlab.com/ciwergrp/nuxid#readme","_integrity":"sha512-0Qz/g2WuAeRPMHq7ha6/zApBdrOGPehIJCRvpo5mJRe/UrGYqP3TMMQsz4uZ+X6zL7C2gl9IX1tf5gaqjrou1Q==","_resolved":"/tmp/2f1adf90e15888a17179535e3506500a/ciwergrp-nuxid-core-0.3.5.tgz","_from":"file:ciwergrp-nuxid-core-0.3.5.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-0Qz/g2WuAeRPMHq7ha6/zApBdrOGPehIJCRvpo5mJRe/UrGYqP3TMMQsz4uZ+X6zL7C2gl9IX1tf5gaqjrou1Q==","shasum":"5a44b091f8a288886d5260ee7fcdd26f7f544f01","tarball":"https://registry.npmjs.org/@ciwergrp/nuxid-core/-/nuxid-core-0.3.5.tgz","fileCount":249,"unpackedSize":379423,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCcdxFY9fDiIaLQjF+urlsnhRzXR20FTmLOwIcjsAD3CQIhANgh6zRfZKl2vVQF7h7qK8l6e/4FckgONgNUg8MzPWNT"}]},"_npmUser":{"name":"ciwer","email":"bagusp81@gmail.com"},"directories":{},"maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nuxid-core_0.3.5_1781364634016_0.39988467417598517"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T09:16:21.901Z","modified":"2026-06-13T15:30:34.288Z","0.1.1":"2026-05-04T09:16:22.215Z","0.1.3":"2026-05-07T08:24:50.907Z","0.3.2":"2026-06-11T06:08:05.606Z","0.3.3":"2026-06-11T06:48:38.383Z","0.3.5":"2026-06-13T15:30:34.166Z"},"bugs":{"url":"https://gitlab.com/ciwergrp/nuxid/issues"},"author":{"name":"Bagus","email":"bagusp81@gmail.com"},"license":"MIT","homepage":"https://gitlab.com/ciwergrp/nuxid#readme","keywords":["nuxt","essentials","nuxid"],"repository":{"type":"git","url":"git+https://gitlab.com/ciwergrp/nuxid.git"},"description":"All-in-one essential modules for Nuxt","maintainers":[{"name":"ciwer","email":"bagusp81@gmail.com"}],"readme":"# Nuxid – Nuxt Essentials\n\nNuxid bundles a set of productivity helpers for Nuxt projects: lodash auto-imports, validation rules, form and cursor fetch composables, helper utilities, icon defaults, Pinia integration, VueUse, and version updates.\n\n## Quick start\n\nInstall and register the module:\n\n```bash\npnpm add @ciwergrp/nuxid-core\n```\n\n```ts\n// nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['@ciwergrp/nuxid-core'],\n  nuxid: {\n   // all built-in modules are enabled by default\n  },\n})\n```\n\n## Features\n\n- **Lodash auto-imports**: imports from `lodash-es` with prefix `ki` (e.g. `kiDebounce`), skips prefix for names starting with `is`. Configure with:\n  - `prefix` (`false | string`, default `'ki'`)\n  - `prefixSkip` (`string | string[] | false`, default `'is'`)\n  - `upperAfterPrefix` (`boolean`, default `true`)\n  - `exclude` (`string[]`)\n  - `alias` (`Array<[from, to]>`)\n- **Validator helpers**: `createValidationRules` compiles Laravel-style rules into a Zod schema, plus `ValidationRule` and `ValidationOptions` types.\n- **Form composable**: `useHttp` wraps `$fetch`, handles `processing`, `errors`, `response`, and builds `FormData` automatically (or always when `alwaysFormData: true`).\n- **Helper utilities**: array/object/number/string/date helpers with configurable factory (`number().abbreviate()`, `string().normalizeValue()`) or prefixed (`NumberAbbreviate()`) styles, locale lookups, currency defaults, and timezone source configuration (`query`/`cookie`/`localStorage`/`static`).\n- **Cursor fetch composable**: `useCursorHttp` wraps `$fetch`, supports cursor pagination, polling, reactive params, custom fetchers, and configurable cursor/meta keys.\n- **Pinia integration**: injects Pinia, auto-imports core helpers (`defineStore`, `storeToRefs`, etc.), and auto-imports stores from `stores` by default.\n- **Icon defaults**: installs `@nuxt/icon` with default component name `KIcon`, size `1.25em`, base class `align-middle inline-block text-current`, mode `svg`.\n- **VueUse integration**: installs `@vueuse/nuxt` and filters excluded imports.\n- **Version updater**: auto-imports `useVersionUpdater`.\n\n## Usage snippets\n\n**Lodash example**\n\n```ts\nconst result = kiDebounce(() => console.log('hello'), 200)\n```\n\n**Validator example**\n\n```ts\nconst rules = createValidationRules(\n  {\n    email: ['required', 'email'],\n    password: ['required', 'min:8'],\n  },\n  formState,\n)\n\nconst result = rules.safeParse(formState)\n```\n\n**Form example**\n\n```ts\nconst form = useHttp({ name: '', avatar: null }, { alwaysFormData: false })\n\nawait form.post('/api/profile')\n\nif (form.errors) {\n  console.error(form.errors)\n}\n```\n\n**Helper example**\n\n```ts\nconst price = number().currency(4200)\nconst slug = string().slug('Hello World')\nconst label = string().normalizeValue('')\n```\n\n**Cursor fetch example**\n\n```ts\nconst { data, loadMore, refresh } = useCursorFetch('/api/messages', {\n  fetchOptions: { query: { perPage: 20 } },\n  pollInterval: 5000,\n  itemKey: 'code',\n  cursorParam: 'after',\n  meta: {\n    cursorKey: 'next_cursor',\n    hasMoreKey: 'has_next_page',\n  },\n})\n```\n\n**Pinia example**\n\n```ts\nexport const useCartStore = defineStore('cart', {\n  state: () => ({ items: [] }),\n})\n```\n\n## Configuration reference\n\n```ts\nexport default defineNuxtConfig({\n  modules: ['@ciwergrp/nuxid-core'],\n  nuxid: {\n    icon: {\n      componentName: 'KIcon',\n      size: '1.25em',\n      class: 'align-middle inline-block text-current',\n      mode: 'svg',\n    },\n    lodash: {\n      prefix: 'ki',\n      prefixSkip: 'is',\n      upperAfterPrefix: true,\n      exclude: [],\n      alias: [],\n    },\n    helper: {\n      style: 'factory',\n      localeSource: 'cookie',\n      localeKey: 'lang',\n      localeFallback: 'en',\n      defaultCurrency: 'USD',\n      timezone: {\n        source: 'cookie',\n        key: 'tz',\n        static: 'UTC',\n        fallback: 'UTC',\n      },\n    },\n    pinia: {\n      storesDirs: ['stores'],\n    },\n  },\n})\n```\n\n## Structure Directory\n\nThis module is designed to work best in a Nuxt + pnpm monorepo, where each product or domain is its own Nuxt app under `apps/`, and shared building blocks live in `layers/` as Nuxt layers. The root of the repo acts as the single workspace: dependency versions, lint config, TypeScript config, and tooling live at the top level, while apps and layers are composed via Nuxt’s layer system. This keeps per-domain apps small and focused, encourages reuse without copy/paste, and makes it easy to scale multiple teams or products inside one repo.\n\nRecommended top-level structure:\n\n```bash\n% ls -l\ntotal 1008\n-rw-r--r--@   1 bagusvnt  staff   14838 Jan 12 13:24 AGENTS.md\n-rw-r--r--    1 bagusvnt  staff     371 Jan  7 10:45 README.md\ndrwxr-xr-x    5 bagusvnt  staff     160 Jan  7 11:46 apps\n-rw-r--r--@   1 bagusvnt  staff     134 Jan  7 12:26 docker-compose.yml\n-rw-r--r--    1 bagusvnt  staff    1103 Jan  7 10:45 eslint.config.mjs\ndrwxr-xr-x    4 bagusvnt  staff     128 Jan  7 10:45 layers\ndrwxr-xr-x@ 781 bagusvnt  staff   24992 Jan 15 10:06 node_modules\n-rw-r--r--@   1 bagusvnt  staff    1158 Jan 15 10:06 package.json\n-rw-r--r--@   1 bagusvnt  staff  474254 Jan 15 10:06 pnpm-lock.yaml\n-rw-r--r--    1 bagusvnt  staff      38 Jan  7 10:45 pnpm-workspace.yaml\n-rw-r--r--    1 bagusvnt  staff     566 Jan  7 10:45 tsconfig.json\n```\n\nInside `apps/`, each app represents a domain or product boundary (for example `apps/admin/`) and owns its `nuxt.config.ts`, routing, and app-specific modules. Inside `layers/`, you keep shared pieces such as UI components, composables, config, and utilities that can be layered into any app. Each layer is also a Nuxt project with its own `nuxt.config.ts`, so you can expose components, auto-imports, and module options from that layer while keeping a clean separation of concerns.\n\nExamples:\n\n- `apps/admin/nuxt.config.ts`\n- `layers/ui/nuxt.config.ts`\n\n## Development\n\n```bash\npnpm install\npnpm run dev:prepare    # generate stubs for module + playground\npnpm run dev            # playground with local module\npnpm run dev:build      # production-like build of playground\npnpm run lint\npnpm run test\npnpm run test:types\npnpm run prepack        # build distributable into dist/\n```\n\nPlayground lives in `playground/`. Module entry is at `src/module.ts`; runtime code under `src/runtime`; features under `src/features`.\n","readmeFilename":"README.md"}