Skip to content

Commit d35932f

Browse files
committed
refactor: update import paths and re-export definitions for better accessibility
1 parent 197002f commit d35932f

7 files changed

Lines changed: 107 additions & 41 deletions

File tree

README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,49 @@ The playground includes comprehensive examples for all components:
353353
- @formkit/vue 1.x
354354
- @formkit/nuxt 1.x
355355

356+
## External Module Usage
357+
358+
External Nuxt modules and applications can import FormKit definitions programmatically.
359+
360+
### Import All Definitions
361+
362+
```typescript
363+
import { nuxtUIInputs, nuxtUIOutputs } from '@sfxcode/formkit-nuxt-ui/formkit'
364+
365+
// Use in FormKit config
366+
export default defineFormKitConfig({
367+
inputs: {
368+
...nuxtUIInputs,
369+
...nuxtUIOutputs,
370+
},
371+
})
372+
```
373+
374+
### Import Individual Definitions
375+
376+
```typescript
377+
import {
378+
nuxtUICheckboxDefinition,
379+
nuxtUIInputDefinition,
380+
nuxtUISelectDefinition
381+
} from '@sfxcode/formkit-nuxt-ui/definitions'
382+
383+
export default defineFormKitConfig({
384+
inputs: {
385+
nuxtUICheckbox: nuxtUICheckboxDefinition,
386+
nuxtUIInput: nuxtUIInputDefinition,
387+
nuxtUISelect: nuxtUISelectDefinition,
388+
},
389+
})
390+
```
391+
392+
### Available Import Paths
393+
394+
- `@sfxcode/formkit-nuxt-ui/formkit` - All definitions + type augmentation
395+
- `@sfxcode/formkit-nuxt-ui/definitions` - Definition objects only
396+
397+
For detailed usage examples, see [EXTERNAL_USAGE.md](./EXTERNAL_USAGE.md).
398+
356399
## Contributing
357400

358401
Contributions are welcome! Please feel free to submit a Pull Request.

build.config.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,33 @@ import { defineBuildConfig } from 'unbuild'
22

33
export default defineBuildConfig({
44
entries: [
5-
'src/module',
5+
// Module entry
66
{
7+
input: 'src/module',
8+
},
9+
// Runtime exports - formkit type definitions and plugins
10+
{
11+
input: 'src/runtime/formkit/',
12+
outDir: 'dist/runtime/formkit',
713
builder: 'mkdist',
8-
input: './src/runtime/',
9-
outDir: './dist/runtime',
10-
pattern: ['**/*.{ts,vue}'],
11-
loaders: ['vue', 'js'],
14+
declaration: true,
15+
ext: 'mjs',
1216
},
1317
],
14-
declaration: true,
1518
externals: [
1619
'@nuxt/kit',
1720
'@nuxt/schema',
18-
'nuxt',
19-
'vue',
2021
'@formkit/core',
2122
'@formkit/vue',
23+
'@formkit/inputs',
2224
'@formkit/addons',
2325
'@nuxt/ui',
26+
'vue',
27+
'#app',
28+
'#imports',
2429
],
30+
declaration: true,
31+
rollup: {
32+
emitCJS: false,
33+
},
2534
})

package.json

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,33 @@
4141
"types": "./dist/types.d.mts",
4242
"import": "./dist/module.mjs"
4343
},
44-
"./runtime/formkit": {
45-
"types": "./dist/runtime/formkit/index.d.ts",
46-
"import": "./dist/runtime/formkit/index.mjs",
47-
"require": "./dist/runtime/formkit/index.js"
48-
},
49-
"./runtime/formkit/definitions": {
44+
"./definitions": {
5045
"types": "./dist/runtime/formkit/definitions/index.d.ts",
51-
"import": "./dist/runtime/formkit/definitions/index.mjs",
52-
"require": "./dist/runtime/formkit/definitions/index.js"
46+
"import": "./dist/runtime/formkit/definitions/index.mjs"
5347
},
54-
"./runtime/formkit/plugins": {
48+
"./plugins": {
5549
"types": "./dist/runtime/formkit/plugins/index.d.ts",
56-
"import": "./dist/runtime/formkit/plugins/index.mjs",
57-
"require": "./dist/runtime/formkit/plugins/index.js"
50+
"import": "./dist/runtime/formkit/plugins/index.mjs"
51+
},
52+
"./formkit": {
53+
"types": "./dist/runtime/formkit/index.d.ts",
54+
"import": "./dist/runtime/formkit/index.mjs"
5855
}
5956
},
6057
"main": "./dist/module.mjs",
6158
"typesVersions": {
6259
"*": {
6360
".": [
6461
"./dist/types.d.mts"
62+
],
63+
"definitions": [
64+
"./dist/runtime/formkit/definitions/index.d.ts"
65+
],
66+
"plugins": [
67+
"./dist/runtime/formkit/plugins/index.d.ts"
68+
],
69+
"formkit": [
70+
"./dist/runtime/formkit/index.d.ts"
6571
]
6672
}
6773
},

src/runtime/formkit/definitions/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { nuxtUICheckboxDefinition, nuxtUICheckboxGroupDefinition, nuxtUIColorPickerDefinition, nuxtUIInputDateDefinition, nuxtUIInputDefinition, nuxtUIInputMenuDefinition, nuxtUIInputNumberDefinition, nuxtUIInputTagsDefinition, nuxtUIInputTimeDefinition, nuxtUIPinInputDefinition, nuxtUIRadioGroupDefinition, nuxtUISelectDefinition, nuxtUISelectMenuDefinition, nuxtUISliderDefinition, nuxtUISwitchDefinition, nuxtUITextareaDefinition } from './input'
22
import { nuxtUIOutputBooleanDefinition, nuxtUIOutputDateDefinition, nuxtUIOutputLinkDefinition, nuxtUIOutputListDefinition, nuxtUIOutputNumberDefinition, nuxtUIOutputTextDefinition } from './output'
33

4+
// Re-export all individual definitions
5+
export * from './input'
6+
export * from './output'
7+
48
export const nuxtUIInputs = {
59
nuxtUICheckbox: nuxtUICheckboxDefinition,
610
nuxtUICheckboxGroup: nuxtUICheckboxGroupDefinition,

src/runtime/formkit/definitions/input.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import type { FormKitTypeDefinition } from '@formkit/core'
22
import { createInput } from '@formkit/vue'
33

4-
import FUCheckbox from '../../runtime/components/inputs/FUCheckbox.vue'
5-
import FUCheckboxGroup from '../../runtime/components/inputs/FUCheckboxGroup.vue'
6-
import FUColorPicker from '../../runtime/components/inputs/FUColorPicker.vue'
7-
import FUInput from '../../runtime/components/inputs/FUInput.vue'
8-
import FUInputDate from '../../runtime/components/inputs/FUInputDate.vue'
9-
import FUInputMenu from '../../runtime/components/inputs/FUInputMenu.vue'
10-
import FUInputNumber from '../../runtime/components/inputs/FUInputNumber.vue'
11-
import FUInputTags from '../../runtime/components/inputs/FUInputTags.vue'
12-
import FUInputTime from '../../runtime/components/inputs/FUInputTime.vue'
13-
import FUPinInput from '../../runtime/components/inputs/FUPinInput.vue'
14-
import FURadioGroup from '../../runtime/components/inputs/FURadioGroup.vue'
15-
import FUSelect from '../../runtime/components/inputs/FUSelect.vue'
16-
import FUSelectMenu from '../../runtime/components/inputs/FUSelectMenu.vue'
17-
import FUSlider from '../../runtime/components/inputs/FUSlider.vue'
18-
import FUSwitch from '../../runtime/components/inputs/FUSwitch.vue'
19-
import FUTextarea from '../../runtime/components/inputs/FUTextarea.vue'
4+
import FUCheckbox from '../../../runtime/components/inputs/FUCheckbox.vue'
5+
import FUCheckboxGroup from '../../../runtime/components/inputs/FUCheckboxGroup.vue'
6+
import FUColorPicker from '../../../runtime/components/inputs/FUColorPicker.vue'
7+
import FUInput from '../../../runtime/components/inputs/FUInput.vue'
8+
import FUInputDate from '../../../runtime/components/inputs/FUInputDate.vue'
9+
import FUInputMenu from '../../../runtime/components/inputs/FUInputMenu.vue'
10+
import FUInputNumber from '../../../runtime/components/inputs/FUInputNumber.vue'
11+
import FUInputTags from '../../../runtime/components/inputs/FUInputTags.vue'
12+
import FUInputTime from '../../../runtime/components/inputs/FUInputTime.vue'
13+
import FUPinInput from '../../../runtime/components/inputs/FUPinInput.vue'
14+
import FURadioGroup from '../../../runtime/components/inputs/FURadioGroup.vue'
15+
import FUSelect from '../../../runtime/components/inputs/FUSelect.vue'
16+
import FUSelectMenu from '../../../runtime/components/inputs/FUSelectMenu.vue'
17+
import FUSlider from '../../../runtime/components/inputs/FUSlider.vue'
18+
import FUSwitch from '../../../runtime/components/inputs/FUSwitch.vue'
19+
import FUTextarea from '../../../runtime/components/inputs/FUTextarea.vue'
2020

2121
export const nuxtUICheckboxDefinition: FormKitTypeDefinition = createInput(FUCheckbox, {
2222
props: ['label', 'description', 'color', 'variant', 'size', 'indicator', 'icon', 'indeterminateIcon', 'autofocus', 'ui'],

src/runtime/formkit/definitions/output.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import type { FormKitTypeDefinition } from '@formkit/core'
22
import { createInput } from '@formkit/vue'
33

4-
import FUOutputDate from '../../runtime/components/output/FUOutputDate.vue'
5-
import FUOutputBoolean from '../../runtime/components/output/FUOutputBoolean.vue'
6-
import FUOutputText from '../../runtime/components/output/FUOutputText.vue'
7-
import FUOutputLink from '../../runtime/components/output/FUOutputLink.vue'
8-
import FUOutputNumber from '../../runtime/components/output/FUOutputNumber.vue'
9-
import FUOutputList from '../../runtime/components/output/FUOutputList.vue'
4+
import FUOutputDate from '../../../runtime/components/output/FUOutputDate.vue'
5+
import FUOutputBoolean from '../../../runtime/components/output/FUOutputBoolean.vue'
6+
import FUOutputText from '../../../runtime/components/output/FUOutputText.vue'
7+
import FUOutputLink from '../../../runtime/components/output/FUOutputLink.vue'
8+
import FUOutputNumber from '../../../runtime/components/output/FUOutputNumber.vue'
9+
import FUOutputList from '../../../runtime/components/output/FUOutputList.vue'
1010

1111
export const nuxtUIOutputTextDefinition: FormKitTypeDefinition = createInput(FUOutputText, {
1212
props: ['size', 'color', 'variant', 'icon', 'leadingIcon', 'trailingIcon', 'leading', 'trailing', 'onIconClicked', 'onLeadingIconClicked', 'onTrailingIconClicked', 'outputType'],

src/runtime/formkit/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ import type {
1515
SwitchSlots,
1616
} from '@nuxt/ui'
1717

18+
// Re-export all definitions for external use
19+
export * from './definitions'
20+
export * from './plugins'
21+
1822
/**
1923
* Keeps all slots from 1st argument, add any slots from 2nd type which do not collide with the 1st's names.
2024
*/

0 commit comments

Comments
 (0)