UNPKG

@poupe/vue

Version:

Vue component library for Poupe UI framework with theme customization and accessibility support

1 lines 2.38 kB
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/resolver/index.ts"],"sourcesContent":["import type { ComponentResolverObject } from 'unplugin-vue-components';\n\nexport const components = [\n 'Button',\n 'Card',\n 'Icon',\n 'Input',\n 'Placeholder',\n 'Surface',\n] as const;\n\nexport const themeComponents = [\n 'ThemeScheme',\n] as const;\n\nexport type ComponentName = typeof components[number];\nexport type ThemeComponentName = typeof themeComponents[number];\n\nexport const DEFAULT_PREFIX = 'P';\n\nexport interface ResolverOptions {\n /** @defaultValue 'P' */\n prefix?: string\n}\n\n/** @returns kebab-case and snake_case to CamelCase to be used\n * as component prefix\n */\nexport const normalizedComponentPrefix = (s: string): string => {\n return s.replaceAll(/^[-_]+|[-_]+$/g, '')\n .replaceAll(/(^|[-_]+)([a-z])/g, (_, prefix, char) => char.toUpperCase());\n};\n\nexport const createResolver = (options: ResolverOptions = {}): ComponentResolverObject => {\n const { prefix: $prefix = DEFAULT_PREFIX } = options;\n const prefix = normalizedComponentPrefix($prefix);\n\n return {\n type: 'component',\n resolve: (name: string) => {\n const componentName = prefix ? stripPrefix(name, prefix) : name;\n if (componentName) {\n if (components.includes(componentName as ComponentName)) {\n return {\n name: componentName,\n from: '@poupe/vue',\n };\n }\n if (themeComponents.includes(componentName as ThemeComponentName)) {\n return {\n name: componentName,\n from: '@poupe/vue/theme-scheme',\n };\n }\n }\n },\n };\n};\n\nexport default createResolver;\n\nconst stripPrefix = (name: string, prefix: string) => name.startsWith(prefix) ? name.slice(prefix.length) : undefined;\n"],"mappings":"AAEA,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,kBAAkB,CAC7B,aACF;AAKA,MAAa,iBAAiB;;;AAU9B;MACE,kBAAoB,UAAA,CAAA,MAAoB;CAE1C,MAAA,EAAA,QAAA,UAAA,QAAA;CAEA,MAAa,SAAA,0BAA6E,OAAA;CACxF,OAAM;EACN,MAAM;EAEN,UAAO,SAAA;GACL,MAAM,gBAAA,SAAA,YAAA,MAAA,MAAA,IAAA;GACN,IAAA,eAA2B;IACzB,IAAA,WAAM,SAAgB,aAAS,GAAA,OAAY;KAC3C,MAAI;KACF,MAAI;;QAGA,gBAAM,SAAA,aAAA,GAAA,OAAA;KACR,MAAA;KAEF,MAAI;;;;;;MAQV,eAAA,MAAA,WAAA,KAAA,WAAA,MAAA,IAAA,KAAA,MAAA,OAAA,MAAA,IAAA,KAAA;AAKF,SAAM,gBAAe,YAAc,gBAAwB,kBAA0B,SAAM,2BAAiB"}