\n \u003C/UFormGroup>\n\n \u003CUButton type=\"submit\">\n Submit\n \u003C/UButton>\n\n\u003C/UForm>\n```\n\n```ts\n\u003Cscript setup lang=\"ts\">\n import { z } from 'zod';\n\n const state = reactive({\n picture: undefined,\n })\n\n const schema = z.object({\n picture: z.custom\u003CFileList>()\n .transform((val) => {\n if (val instanceof File) return val;\n if (val instanceof FileList) return val[0];\n return null;\n })\n .superRefine((file, ctx) => {\n if (!(file instanceof File)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n fatal: true,\n message: 'Not a file',\n });\n return z.NEVER;\n }\n if (file.size > 5 * 1024 * 1024) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Max file size allowed is 5MB',\n });\n }\n if (\n !['image/jpeg', 'image/png', 'image/webp', 'image/jpg'].includes(\n file.type\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'File must be an image (jpeg, jpg, png, webp)',\n });\n }\n })\n });\n\n type Schema = z.infer\u003Ctypeof schema>;\n\n async function onSubmit (event: FormSubmitEvent\u003CSchema>) {\n console.log(event.data);\n }\n\u003C/script>\n```\n\nAs aspected the following onChange function logs a FileList\n\n```ts\nfunction onChangeFile(event: Event) {\n console.log(event)\n}\n```\n\nBut when I log val in the transform function of Zod\n\n```ts\n.transform((val) => {\n console.log(val);\n if (val instanceof File) return val;\n if (val instanceof FileList) return val[0];\n return null;\n})\n```\n\nI get a string like this:\n\n```\nC:\\fakepath\\Screenshot 2024-10-25 at 10.26.36.png\n```\n\nCan someone please help me out, i'm looking for a few days now for a solution.",[2909],{"name":2910,"color":2911},"question","d876e3",2462,"UInput with type='file', how to validate with Zod?","2025-03-10T01:51:18Z","https://github.com/nuxt/ui/issues/2462",0.6952642,{"description":2918,"labels":2919,"number":2924,"owner":2877,"repository":2878,"state":2879,"title":2925,"updated_at":2926,"url":2927,"score":2928},"### Environment\n\n- Operating System: Linux\n- Node Version: v20.18.0\n- Nuxt Version: 3.14.1592\n- CLI Version: 3.16.0\n- Nitro Version: 2.10.4\n- Package Manager: npm@10.9.1\n- Builder: -\n- User Config: default\n- Runtime Modules: @nuxt/ui@2.19.2, @sidebase/nuxt-auth@0.9.4, @nuxt/image@1.8.1\n- Build Modules: -\n\n\n### Version\n\nv2.19.2\n\n### Reproduction\n\nhttps://nuxtui-0mn3--3000--fc837ba8.local-credentialless.webcontainer.io\n\n\n### Description\n\nThis is the code from stackblitz, but it illustrates the problem (preview above). Basically, I am following the instructions for setting certain columns to have a maximum width, but UTable doesn't seem to be following them. If it's an implementation issue on my part, my apologies, but I've stared at this for a couple of days and I can't find any reason why I can't get the cell data to wrap.\n\n\u003Ctemplate>\n \u003CUContainer class=\"min-h-screen flex items-center\">\n \u003CUCard\n class=\"flex-1\"\n :ui=\"{\n background: 'bg-gray-50 dark:bg-gray-800/50',\n ring: 'ring-1 ring-gray-300 dark:ring-gray-700',\n divide: 'divide-y divide-gray-300 dark:divide-gray-700',\n header: { base: 'font-bold' },\n }\"\n >\n \u003Ctemplate #header> Welcome to the playground! \u003C/template>\n\n \u003Cp class=\"text-gray-500 dark:text-gray-400\">Try your components here!\u003C/p>\n \u003C/UCard>\n \u003CUTable :rows=\"data\" :columns=\"columns\">\n \u003C/UTable>\n \u003C/UContainer>\n\u003C/template>\n\n\u003Cscript setup>\nconst columns = [\n {\n key: \"name\",\n label: \"Name\",\n sortable: true,\n },\n {\n key: \"address\",\n label: \"Address\",\n rowClass: \"max-w-[200px] whitespace-normal break-word\",\n width: 200\n },\n {\n key: \"description\",\n label: \"Description\",\n rowClass: \"max-w-[200px] whitespace-normal break-word\",\n width: 200\n },];\n\n const data = [\n {\n name: \"Line 1 Name\",\n address: \"Line 1 - 123 Sesame Street, Anytown USA\",\n description: \"This is a relatively short description, but should probably wrap in any case.\"\n },\n {\n name: \"Line 2 Name\",\n address: \"Line 2 - a really really really really really really really really really really Loong address\",\n description: \"This is a really really really really really really really really really really really really really long description, and needs to be wrapped.\"\n}\n ]\n\u003C/script>\n\n\u003Cstyle>\nbody {\n @apply antialiased font-sans text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-900;\n}\n\u003C/style>\n\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[2920,2923],{"name":2921,"color":2922},"bug","d73a4a",{"name":2874,"color":2875},2856,"UTable cell content refuses to wrap","2024-12-06T23:25:36Z","https://github.com/nuxt/ui/issues/2856",0.6964025,{"description":2930,"labels":2931,"number":2936,"owner":2877,"repository":2937,"state":2938,"title":2939,"updated_at":2940,"url":2941,"score":2942},"I've explored other font providers, looks like `fontsource` is also quite promising.\r\n\r\nCurrently most of its fonts are from Google Fonts, along with some icons and some other fonts. It's also the service that Cloudflare Fonts is fetching from.\r\n\r\n@danielroe Would you like to include this font provider? If so, I'd like to work on it.\r\n\r\nDocs: https://fontsource.org/docs",[2932,2933],{"name":2868,"color":2869},{"name":2934,"color":2935},"provider","1161A4",65,"fonts","closed","feat: fontsource provider","2024-03-20T13:12:12Z","https://github.com/nuxt/fonts/issues/65",0.6523068,{"description":2944,"labels":2945,"number":2950,"owner":2877,"repository":2878,"state":2938,"title":2951,"updated_at":2952,"url":2953,"score":2954},"### Environment\n\n- Operating System: Linux\n- Node Version: v20.5.1\n- Nuxt Version: 3.14.1592\n- CLI Version: 3.15.0\n- Nitro Version: 2.10.4\n- Package Manager: pnpm@9.14.2\n- Builder: -\n- User Config: default\n- Runtime Modules: @nuxt/ui@2.19.2\n- Build Modules: -\n\n### Version\n\n2.19.2\n\n### Reproduction\n\n- create blank nuxt project with nuxt-ui module\n- add to page some buttons\n```\n\u003Cdiv>\n \u003CUButton icon=\"i-heroicons:plus-20-solid\">Add\u003C/UButton>\n \u003CUButton icon=\"ic:baseline-minus\">Remove\u003C/UButton>\n \u003CUButton>Clear\u003C/UButton>\n\u003C/div>\n```\n\n### Description\n\nButtons with icons (no matter icon set) jumping up raltive to clean text button\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[2946,2947],{"name":2921,"color":2922},{"name":2948,"color":2949},"duplicate","cfd3d7",2805,"UButton icon breaks button position","2024-12-03T11:21:27Z","https://github.com/nuxt/ui/issues/2805",0.6743653,{"description":2956,"labels":2957,"number":2960,"owner":2877,"repository":2878,"state":2938,"title":2961,"updated_at":2962,"url":2963,"score":2964},"### For what version of Nuxt UI are you suggesting this?\n\nv3.0.0-alpha.x\n\n### Description\n\n[CommandPalette](https://ui3.nuxt.dev/components/command-palette) is great but I wish it could display only an input by default and then open the content in a popper when clicking in the input. I think this is currently not possible but a very common use case. \n\nThis is what I would like to archive, screenshots from Shopify:\n\n\n\n\n\n\n\n### Additional context\n\n_No response_",[2958,2959],{"name":2868,"color":2869},{"name":2871,"color":2872},2832,"v3 CommandPalette: Open only content within popper","2024-12-05T13:24:12Z","https://github.com/nuxt/ui/issues/2832",0.681599,{"description":2966,"labels":2967,"number":2968,"owner":2877,"repository":2969,"state":2938,"title":2970,"updated_at":2971,"url":2972,"score":2973},"Hello, I've just updated nuxt-icon to 0.6.5 and the icons in my app that I had in this form no longer display correctly, I just have text instead of icons.\r\n\r\n**Example of icons that no longer work**\r\nmdi-microphone\r\nmdi-plus\r\nmdi-close\r\netc...",[],119,"icon","Upgrade from 0.6.1 to 0.6.5 breaks icons like \"mdi-microphone\"","2023-11-30T11:04:21Z","https://github.com/nuxt/icon/issues/119",0.6817844,{"description":2975,"labels":2976,"number":2977,"owner":2877,"repository":2901,"state":2938,"title":2978,"updated_at":2979,"url":2980,"score":2981},"Docs: https://posthog.com/docs/libraries/js\r\n\r\nFor reference this is how I currently instrument it:\r\n\r\n```\r\nimport { Capacitor } from '@capacitor/core'\r\nimport { posthog } from 'posthog-js'\r\nimport { appVersion } from '~/shared/version'\r\n\r\nexport default defineNuxtPlugin({\r\n name: 'analytics',\r\n setup() {\r\n if (import.meta.env.TEST) {\r\n return\r\n }\r\n\r\n const config = useRuntimeConfig()\r\n const router = useRouter()\r\n\r\n if (config.public.analyticsReportingEnabled) {\r\n posthog.init(config.public.posthog.dsn, {\r\n capture_pageview: false,\r\n capture_pageleave: true,\r\n api_host: config.public.posthog.apiHost,\r\n disable_session_recording: true,\r\n advanced_disable_decide: true,\r\n advanced_disable_feature_flags: true,\r\n advanced_disable_feature_flags_on_first_load: true,\r\n enable_recording_console_log: false,\r\n autocapture: false\r\n })\r\n\r\n posthog.register({\r\n environment: config.public.appEnvironment,\r\n countryCode: config.public.appCountryCode,\r\n release: appVersion,\r\n platform: Capacitor.getPlatform(),\r\n native: Capacitor.isNativePlatform()\r\n })\r\n\r\n router.afterEach(to => {\r\n posthog.capture('$pageview', {\r\n $current_url: to.fullPath\r\n })\r\n })\r\n }\r\n\r\n return {\r\n provide: {\r\n analytics: posthog\r\n }\r\n }\r\n }\r\n})\r\n```\r\n\r\nand after the user has logged in or we detect they are already logged in on page load:\r\n\r\n```\r\nthis.analytics.identify(userId, {\r\n email\r\n roles\r\n})\r\n ```\r\n \r\n Thanks!\r\n\r\n",[],206,"Suggestion: Posthog [analytics]","2024-09-03T16:06:49Z","https://github.com/nuxt/scripts/issues/206",0.6957233,["Reactive",2983],{},["Set"],["ShallowReactive",2986],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f2UKbqQ16ayc4t0EhN-mOMhLH1G0jWDDkW0fX5r8KNZw":-1},"/nuxt/ui/3298"]