// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/ import { initializeToggleClasses } from '#shared/components/Form/fields/FieldToggle/initializeToggleClasses.ts' import { initializeFieldLinkClasses } from '#shared/components/Form/initializeFieldLinkClasses.ts' import { initializeFormClasses } from '#shared/components/Form/initializeFormClasses.ts' import { initializeFormGroupClasses } from '#shared/components/Form/initializeFormGroupClasses.ts' import mainInitializeForm, { getFormPlugins } from '#shared/form/index.ts' import type { FormFieldTypeImportModules, FormThemeExtension, InitializeAppForm, } from '#shared/types/form.ts' import type { ImportGlobEagerOutput } from '#shared/types/utils.ts' import { getCoreDesktopClasses } from './theme/global/getCoreDesktopClasses.ts' import type { FormKitPlugin } from '@formkit/core' import type { App } from 'vue' const pluginModules: ImportGlobEagerOutput = import.meta.glob( './plugins/global/*.ts', { eager: true }, ) export const desktopFormFieldModules: ImportGlobEagerOutput = import.meta.glob('../components/Form/fields/**/index.ts', { eager: true }) const themeExtensionModules: ImportGlobEagerOutput = import.meta.glob('./theme/global/extensions/*.ts', { eager: true }) export const initializeForm: InitializeAppForm = (app: App) => { const plugins = getFormPlugins(pluginModules) const theme = { coreClasses: getCoreDesktopClasses, extensions: themeExtensionModules, } const decoratorIcons = { checkboxDecorator: '', } mainInitializeForm( app, undefined, desktopFormFieldModules, plugins, theme, decoratorIcons, ) } export const initializeFormFields = () => { initializeFormClasses({ loading: 'my-9 fill-yellow-300', }) initializeFieldLinkClasses({ container: 'formkit-link', base: 'ms-3 mb-2.5', link: 'hover:rounded-sm hover:outline hover:outline-1 hover:outline-offset-1 hover:outline-blue-600 dark:hover:outline-blue-900', }) initializeFormGroupClasses({ container: 'form-group grid grid-cols-2 gap-y-2.5 gap-x-3', help: 'text-xs', dirtyMark: 'form-group-mark-dirty', }) initializeToggleClasses({ track: 'bg-stone-200 dark:bg-gray-500 ring-1 ring-neutral-100 dark:ring-gray-900 hover:outline hover:outline-1 hover:outline-offset-2 hover:outline-blue-600 dark:hover:outline-blue-900 focus:outline focus:outline-1 focus:outline-offset-2 focus:outline-blue-800 hover:focus:outline-blue-800 dark:hover:focus:outline-blue-800 formkit-invalid:outline formkit-invalid:outline-1 formkit-invalid:outline-offset-2 formkit-invalid:outline-red-500 dark:hover:formkit-invalid:outline-red-500 formkit-errors:outline formkit-errors:outline-1 formkit-errors:outline-offset-2 formkit-errors:outline-red-500 dark:hover:formkit-errors:outline-red-500', trackOn: '!bg-blue-800', knob: 'bg-white', }) }