namespace Htmx.ApiDemo.Templates.Components; /// /// shadcn-style FileInput component with optional label and description. /// public sealed class FileInput : FileInputBase { private readonly byte[] _idData; private readonly byte[] _nameData; private readonly byte[] _acceptData; private readonly byte[] _multipleData; private readonly byte[] _labelData; private readonly byte[] _descriptionData; private readonly byte[] _extraClassesData; private readonly byte[] _hxAttrsData; public FileInput( string id, string name = "", string accept = "", bool multiple = false, string label = "", string description = "", string extraClasses = "", string hxAttrs = "") { _idData = id.ToUtf8Bytes(); _nameData = (string.IsNullOrEmpty(name) ? id : name).ToUtf8Bytes(); _acceptData = string.IsNullOrEmpty(accept) ? [] : $"""accept="{accept}" """.ToUtf8Bytes(); _multipleData = multiple ? "multiple".ToUtf8Bytes() : []; _extraClassesData = extraClasses.ToUtf8Bytes(); _hxAttrsData = hxAttrs.ToUtf8Bytes(); _labelData = string.IsNullOrEmpty(label) ? [] : $"""""".ToUtf8Bytes(); _descriptionData = string.IsNullOrEmpty(description) ? [] : $"""

{description}

""".ToUtf8Bytes(); } protected override void RenderId(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_idData); protected override void RenderName(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_nameData); protected override void RenderAccept(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_acceptData); protected override void RenderMultiple(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_multipleData); protected override void RenderLabel(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_labelData); protected override void RenderDescription(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_descriptionData); protected override void RenderExtraClasses(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_extraClassesData); protected override void RenderHxAttrs(HtmxRenderContext ctx) => ctx.Writer.WriteUtf8(_hxAttrsData); }