{"version":3,"file":"module.mjs","sources":["../src/setup/utils.ts","../src/setup/types.ts","../src/setup/color-mode.ts","../src/setup/components.ts","../src/setup/icon.ts","../src/setup/plugins.ts","../src/setup/tailwind.ts","../src/module.ts"],"sourcesContent":["import { env } from 'std-env';\n\nexport {\n  type Nuxt,\n  type NuxtOptions,\n} from '@nuxt/schema';\n\nexport {\n  type CSSProperties,\n  formatCSSProperties,\n} from '@poupe/css';\n\nexport {\n  type ThemeOptions,\n  type Theme,\n  defaultPrimaryColor,\n  formatTheme,\n  makeThemeFromPartialOptions,\n} from '@poupe/tailwindcss/theme';\n\nexport {\n  DEFAULT_PREFIX as defaultComponentPrefix,\n} from '@poupe/vue/resolver';\n\nexport const DEBUG: boolean = env.DEBUG === 'true';\n","import type { ConsolaInstance } from 'consola';\n\nimport {\n  type CSSProperties,\n  type Nuxt,\n  type ThemeOptions,\n\n  defaultPrimaryColor,\n  defaultComponentPrefix,\n} from './utils';\n\nexport type TailwindPlugin = string | [ string, CSSProperties ];\n\nexport interface TailwindOptions {\n  sources?: string[]\n  plugins?: TailwindPlugin[]\n}\n\nexport interface ModuleOptions<K extends string = string> {\n  /** @defaultValue 'P' */\n  prefix?: string\n\n  /**\n   * options for the theme builder\n   * @defaultValue `{ color: { primary: '#2a364b' }}`\n   */\n  theme?: Partial<ThemeOptions<K>>\n\n  /**\n   * options to setup tailwind integration\n   */\n  tailwind?: TailwindOptions\n}\n\n/** Default configuration options for the module */\nexport const defaultModuleOptions: Readonly<ModuleOptions> = {\n  prefix: defaultComponentPrefix,\n  theme: {\n    colors: {\n      primary: defaultPrimaryColor,\n    },\n  },\n};\n\n/** Context for module setup */\nexport type SetupContext<K extends string = string> = {\n  options: ModuleOptions<K>\n  nuxt: Nuxt\n\n  resolve: (...path: string[]) => string\n  logger: ConsolaInstance\n};\n","import { installModule, hasNuxtModule } from '@nuxt/kit';\n\nimport type { ModuleOptions as ColorModeModuleOptions } from '@nuxtjs/color-mode';\n\nimport type { SetupContext } from './types';\n\n/**\n * installs `@nuxtjs/color-mode` module if it wasn't already,\n * and forces removal of classPrefix/classSuffix\n */\nexport async function setupColorMode<K extends string>(context: SetupContext<K>) {\n  const { nuxt } = context;\n\n  if (hasNuxtModule('@nuxtjs/color-mode', nuxt)) {\n    nuxt.options.colorMode.classPrefix = '';\n    nuxt.options.colorMode.classSuffix = '';\n  } else {\n    const colorModeModuleOptions: ColorModeModuleOptions = {\n      ...nuxt.options.colorMode,\n      classPrefix: '',\n      classSuffix: '',\n    };\n\n    await installModule('@nuxtjs/color-mode', colorModeModuleOptions, nuxt);\n  }\n};\n","import { addComponent } from '@nuxt/kit';\n\nimport { components, themeComponents, DEFAULT_PREFIX, normalizedComponentPrefix } from '@poupe/vue/resolver';\n\nimport type { SetupContext } from './types';\nimport { DEBUG } from './utils';\n\nexport const COMPONENTS_PACKAGE = '@poupe/vue';\nexport const THEME_COMPONENTS_PACKAGE = '@poupe/vue/theme-scheme';\n\nexport const setupComponents = <K extends string>(context: SetupContext<K>): void => {\n  const { logger } = context;\n  const { prefix: $prefix = DEFAULT_PREFIX } = context.options;\n  const prefix = normalizedComponentPrefix($prefix);\n\n  const start = Date.now();\n  if (DEBUG) logger.info(`Registering \\`${COMPONENTS_PACKAGE}\\` components using prefix \\`${prefix}\\``);\n\n  let count = 0;\n\n  const registerComponents = (componentList: readonly string[], packagePath: string, suffix = '') => {\n    for (const name of componentList) {\n      const fullName = `${prefix}${name}`;\n\n      try {\n        addComponent({\n          name: fullName,\n          export: name,\n          filePath: packagePath,\n        });\n        count++;\n        if (DEBUG) logger.log(` - \\`${fullName}\\` registered${suffix}.`);\n      } catch (error) {\n        logger.error(`   \\`${fullName}\\` failed to register:`, error);\n      }\n    }\n  };\n\n  // Register regular components\n  registerComponents(components, COMPONENTS_PACKAGE);\n\n  // Register theme components from separate export\n  registerComponents(themeComponents, THEME_COMPONENTS_PACKAGE, ' from theme-scheme export');\n\n  logger.success(`Poupe registered ${count} components in ${Date.now() - start}ms`);\n};\n","import { installModule, hasNuxtModule } from '@nuxt/kit';\n\nimport type { SetupContext } from './types';\n\nexport const setupIcon = async (context: SetupContext) => {\n  const { nuxt } = context;\n\n  if (!hasNuxtModule('@nuxt/icon', nuxt)) {\n    await installModule('@nuxt/icon', nuxt.options.icon, nuxt);\n  }\n};\n","import { addPlugin } from '@nuxt/kit';\n\nimport type { SetupContext } from './types';\n\nexport const setupPlugins = <K extends string>(context: SetupContext<K>) => {\n  const { resolve } = context;\n  addPlugin(resolve('./runtime/plugin'));\n};\n","import { addTemplate, addVitePlugin } from '@nuxt/kit';\nimport tailwindPlugin from '@tailwindcss/vite';\n\nimport { contentGlobs } from '@poupe/vue/config';\n\nimport {\n  type CSSProperties,\n\n  formatCSSProperties,\n  formatTheme,\n  makeThemeFromPartialOptions,\n  DEBUG,\n} from './utils';\n\nimport type {\n  SetupContext,\n  TailwindPlugin,\n  TailwindOptions,\n} from './types';\n\nconst TAILWIND_CSS_FILENAME = 'tailwind.css';\nconst TAILWIND_CSS_ALIAS = '#poupe.css';\n\nexport const formatPlugin = (plugin: TailwindPlugin, indent: string = '  '): string[] => {\n  if (typeof plugin === 'string') {\n    return [`@plugin \"${plugin}\";`];\n  }\n\n  const [name, props] = plugin;\n  const lines = formatCSSProperties(props);\n\n  if (lines.length === 0)\n    return [`@plugin \"${name}\";`];\n\n  return [\n    `@plugin \"${name}\" {`,\n    ...lines.map(line => `${indent}${line};`),\n    '}',\n  ];\n};\n\n/** @returns a resolved and deduplicated list of sources to scan */\nconst prepareSources = (context: SetupContext): string[] => {\n  const { resolve, nuxt, options } = context;\n\n  // resolve and make unique\n  const sources = [\n    nuxt.options.srcDir,\n    ...contentGlobs(),\n\n    // extra files to scan\n    ...(options.tailwind?.sources || []).filter(source => source != '').map(source => resolve(source)),\n  ];\n\n  // reassemble. first-insert order preserved\n  return [...new Set(sources)];\n};\n\n// TODO: move to @poupe/vue\nconst defaultTailwindPlugins: TailwindPlugin[] = [\n  'tailwind-scrollbar',\n];\n\n/** @returns sanitized list of plugins to enable */\nconst preparePlugins = (options?: TailwindOptions): TailwindPlugin[] => {\n  // filter out empty entries\n  const plugins: TailwindPlugin[] = [\n    ...defaultTailwindPlugins,\n    ...options?.plugins || [],\n  ].filter((plugin) => {\n    if (typeof plugin === 'string') {\n      return plugin !== '';\n    }\n    if (Array.isArray(plugin) && plugin.length == 2) {\n      return plugin[0] !== '';\n    }\n    return false;\n  });\n\n  // make unique\n  const pluginsMap: Map<string, CSSProperties | undefined> = new Map();\n  for (const plugin of plugins) {\n    if (typeof plugin === 'string') {\n      pluginsMap.set(plugin, undefined);\n    } else {\n      pluginsMap.set(plugin[0], plugin[1]);\n    }\n  }\n\n  // reassemble. first-insert order preserved\n  return [...pluginsMap.entries()].map(([name, props]) => {\n    if (props) {\n      return [name, props];\n    }\n    return name;\n  });\n};\n\n/** generate the content of the `tailwind.css` file */\nconst getCSSContent = <K extends string>(context: SetupContext<K>): string => {\n  const { options } = context;\n\n  const sources = prepareSources(context);\n  const plugins = preparePlugins(options.tailwind);\n  const theme = makeThemeFromPartialOptions(options.theme);\n\n  // generate content for the `tailwind.css` file embedding\n  // the poupe theme\n  const lines: string[] = [\n    '/* This file is generated by @poupe/nuxt. DO NOT EDIT */',\n    '',\n    '@import \"tailwindcss\";',\n    '',\n    // @theme\n    ...formatTheme(theme),\n    // @plugin\n    ...(plugins ? ['', ...plugins.flatMap(plugin => formatPlugin(plugin))] : []),\n    // @source\n    ...(sources ? ['', ...sources.map(path => `@source \"${path}\";`)] : []),\n  ];\n\n  return lines.join('\\n');\n};\n\nexport const setupTailwind = async <K extends string>(context: SetupContext<K>) => {\n  const { logger, nuxt } = context;\n  const start = Date.now();\n\n  if (DEBUG) logger.debug(`Generating \\`${TAILWIND_CSS_FILENAME}\\`...`);\n\n  // template\n  const cssFile = addTemplate({\n    filename: TAILWIND_CSS_FILENAME,\n    write: true,\n    getContents: () => getCSSContent(context),\n  });\n\n  logger.success(`Poupe generated \\`${DEBUG ? cssFile.dst : TAILWIND_CSS_ALIAS}\\` in ${Date.now() - start}ms`);\n  nuxt.options.alias[TAILWIND_CSS_ALIAS] = cssFile.dst;\n\n  // vite plugin\n  addVitePlugin(tailwindPlugin());\n\n  // TODO: setup vite\n\n  // inject CSS\n  nuxt.options.css = nuxt.options.css || [];\n  if (!Array.isArray(nuxt.options.css)) {\n    nuxt.options.css = [nuxt.options.css];\n  }\n  nuxt.options.css.unshift(cssFile.dst);\n};\n","import {\n  createResolver,\n  defineNuxtModule,\n  useLogger,\n} from '@nuxt/kit';\n\nimport {\n  type ModuleOptions,\n  type Nuxt,\n  type SetupContext,\n\n  defaultModuleOptions,\n  setupColorMode,\n  setupComponents,\n  setupIcon,\n  setupPlugins,\n  setupTailwind,\n} from './setup/index';\n\nasync function setup<K extends string = string>(options: ModuleOptions<K>, nuxt: Nuxt) {\n  const { resolve } = createResolver(import.meta.url);\n\n  // Preparations\n  nuxt.options.alias['#poupe'] = resolve('./runtime');\n\n  const setupContext: SetupContext<K> = {\n    options,\n    nuxt,\n    resolve,\n    logger: useLogger('poupe'),\n  };\n\n  // Modules\n  await setupIcon(setupContext);\n  await setupColorMode(setupContext);\n  await setupTailwind(setupContext);\n\n  // Components & Plugins\n  setupComponents(setupContext);\n  setupPlugins(setupContext);\n}\n\nexport { type ModuleOptions } from './setup/types';\n\nexport default defineNuxtModule({\n  meta: {\n    name: '@poupe/nuxt',\n    configKey: 'poupe',\n  },\n  defaults: defaultModuleOptions,\n  setup,\n});\n"],"names":["defaultComponentPrefix"],"mappings":"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"}