Input components have change events that are dispatched when the value changes. The new value is provided as a payload in the event handler. Change events have slightly different names across components, reflecting the payloads they provide. For example, Number Input and Slider Input use the event wf-number-change while Text Input and Text Area Input use the generic wf-change.As discussed in the Event handlers section, the payload can be accessed via the payload argument in the event handler.
# This event handler takes the payload and assigns it# to the state element "name"def handle_input_change(state, payload): state["name"] = payload
Writing event handlers for every input component can be tedious. In most cases, you’ll only need to update a single element of state when the value changes, akin to the example above. You can achieve this by binding a component to a state element.Bindings automatically handle the change event for the component and set the value of the state element to the payload. Furthermore, bindings are two-way. If the state element is updated from the back-end, the front-end component is updated to reflect the new value.As mentioned in the Builder basics section of the guide, bindings can be configured in the component settings.The binding above establishes a two-way link between the component and the state element name. If name changes in the back-end, the component changes. If the component changes, the value of name changes.
Bindings can be used together with events. This is useful for triggering recalculations or applying dynamic filters. For example, you may want to have three Number Input components bound to a, b and c and display a value n. This easily done by binding the components and linking the same recalculation event handler to all three components.
Framework automatically sanitises the payloads it provides for its built-in events, those that start with wf-.For example, if a Dropdown Input component lists options high and low, you’re guaranteed you won’t get a value like "Robert'); DROP TABLE students;--" when handling wf-option-change. You’ll get "high", "low" or None.
Inputs are sanitised, but you should still be carefulAs with any application, it’s important to be familiar with the risks associated with handling user input, especially SQL injections. If you’re using any custom HTML and mixing it with user generated content, make sure you understand XSS.
Input components can be combined with Message and Button components to create forms with messages, indicating whether the submission was successful.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Writer AI Studio","colors":{"primary":"#BFCBFF","light":"#6985FF","dark":"#5551ff"},"logo":{"light":"https://mintcdn.com/writer/YZ72OUP7BQyK8p2G/logo/writer_logo_light.svg?fit=max\u0026auto=format\u0026n=YZ72OUP7BQyK8p2G\u0026q=85\u0026s=c9a784871f9b98724bb1eae947e745ed","dark":"https://mintcdn.com/writer/YZ72OUP7BQyK8p2G/logo/writer_logo_dark.svg?fit=max\u0026auto=format\u0026n=YZ72OUP7BQyK8p2G\u0026q=85\u0026s=9e22a34b91e20df881d68634a0042c1d"},"favicon":"https://mintcdn.com/writer/z-qGRP1BKyHYhEJN/images/icons/favicon.svg?fit=max\u0026auto=format\u0026n=z-qGRP1BKyHYhEJN\u0026q=85\u0026s=33356fdc372b2640b92c5546da07c9e0","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","python","javascript"]}},"navbar":{"primary":{"type":"button","label":"Sign in","href":"https://app.writer.com/login"}},"footer":{"socials":{"x":"https://x.com/Get_Writer","github":"https://github.com/writer","linkedin":"https://www.linkedin.com/company/getwriter"}},"seo":{"metatags":{"description":"Writer AI Studio developer documentation - Build AI agents with APIs, SDKs, Agent Builder, and no-code tools. Integrate generative AI into your applications.","og:site_name":"Writer AI Studio Documentation","og:type":"website","twitter:card":"summary_large_image","twitter:site":"@Get_Writer"},"indexing":"all"},"integrations":{"gtm":{"tagId":"GTM-NXVXDK"},"segment":{"key":"o2ZzfP0pJxH4cihXBPrF4IlbGqmG34BA"}},"contextual":{"options":["copy","view","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"writer","hasAudioNarration":false,"actualSubdomain":"writer","customDomains":["dev.writer.com"],"gitSource":{"type":"github","owner":"writerinternal","repo":"docs","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0ecd7a842d0026c9c76c2","collectionId":"0bf36e05-d989-4ca8-af5c-53694bbe9ac2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0ecd7a842d0026c9c76c2"},"feedback":{"thumbs":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0ecd7a842d0026c9c76c2","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Home","count":99},{"language":"default","tag":"Writer Framework","count":71},{"language":"default","tag":"Component reference","count":45},{"language":"default","tag":"API Reference","count":35},{"language":"default","tag":"Connect to your data","count":31},{"language":"default","tag":"Available prebuilt connectors","count":27},{"language":"default","tag":"Content","count":17},{"language":"default","tag":"Legacy API Reference","count":16},{"language":"default","tag":"Getting started","count":14},{"language":"default","tag":"Input","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--purple-1:#5551FF;--purple-2:#4A46DA;--black:#000;--gray-1:#333}body{font-family:\"Graphik\",sans-serif;font-weight:400}body.bold{font-weight:600}h1,h2,h3{font-family:\"Poppins\",sans-serif}h1{font-weight:600!important}h2,h3{font-weight:500}img[src$=no-code],img[src$=quickstart]{border:1px solid #e4e7ed}img[src$=auth]{min-width:25%;width:35%;margin:auto}img[src$=auth-table]{min-width:25px;width:25px}.imageBorder,img[src$=framework]{border:1px solid #e4e7ed}.flex-none.min-w-full.text-sm.overflow-x-auto{background-color:#171b1a}.no-bullet li{list-style-type:none;font-size:small}.large-icon{width:60px;height:100%}.bg-primary\\/10{background-color:#bfcbff}.text-primary{color:#000}.dark .prompts{color:#828282}.dark .prompts,.papers,.prompts{font-family:'Roboto Mono',monospace}.prompts{color:#000}.papers{font-size:small;padding-left:20px;padding-right:20px;text-align:justify}td,th{padding:10px;text-align:left}.update table td,.update table th{word-break:break-word}.expandedImageContainer{padding:16px;border-radius:16px;background:#e9eef1;overflow:hidden;display:flex;justify-content:center}.expandedImageContainerInner{display:flex;align-items:flex-start;max-width:300px;max-height:210px}.expandedImageContainer img{max-height:210px}.components__table{table-layout:fixed;width:300px}.button-wrapper{margin-top:30px}.button{border:0;cursor:pointer;font-size:14px;font-weight:600;padding:8px 20px;position:relative;outline:0;transition:background-color .1s ease-in}.primary-button{background-color:var(--purple-1);border-radius:40px;color:#fff;display:inline-flex;align-items:center}.secondary-button{background-color:var(--black);border-radius:30px;color:#fff}.button--arrow{padding-right:40px}.componentFields td,.componentFields th{padding:8px;border:1px solid rgb(var(--gray-200))}.componentFields .desc{width:50ch}:is(.dark .componentFields td, .dark .componentFields th, .dark .blueprintFields td, .dark .blueprintFields th){border:1px solid rgb(var(--gray-800))}.blueprintFields td,.blueprintFields th{padding:8px;border:1px solid rgb(var(--gray-200));vertical-align:top}#topbar-cta-button{margin:0}#topbar-cta-button a,li[id=\"https://app.writer.com/login\"] a{display:inline-flex;align-items:center;background-color:var(--purple-1)!important;border-radius:9999px;padding:4px 14px;font-weight:600;font-size:14px;text-decoration:none;transition:background-color .2s ease;line-height:24px}#topbar-cta-button a span,li[id=\"https://app.writer.com/login\"] a div,li[id=\"https://app.writer.com/login\"] a span{color:#fff!important}#topbar-cta-button a:hover,li[id=\"https://app.writer.com/login\"] a:hover{background-color:var(--purple-2)!important}#topbar-cta-button svg{margin-left:4px;height:16px;width:16px}li[id=\"https://app.writer.com/login\"]{margin:0;max-width:100%;box-sizing:border-box}li[id=\"https://app.writer.com/login\"] a{display:inline-flex!important;align-items:center!important;border-radius:9999px!important;padding:4px 8px 4px 14px!important;font-weight:600!important;font-size:14px!important;text-decoration:none!important;transition:background-color .2s ease!important;line-height:24px!important;max-width:100%!important;box-sizing:border-box!important;white-space:nowrap!important;overflow:hidden!important}li[id=\"https://app.writer.com/login\"] svg{margin-left:0!important;height:16px!important;width:16px!important}#topbar-cta-button svg path,li[id=\"https://app.writer.com/login\"] svg path{stroke:#fff!important;stroke-width:1.5!important;stroke-linecap:round!important;fill:none!important}div[id=sidebar-content],div[id=sidebar],ul[class*=\"bg-zinc-950/5\"]{overflow-x:hidden;box-sizing:border-box}ul[class*=\"bg-zinc-950/5\"]{max-width:100%}#content-area.max-w-5xl{max-width:80rem}#content-area.max-w-xl{max-width:60rem!important}img.max-height-800{max-height:800px!important}img.max-width-80{max-width:80%!important}#navbar .nav-tabs{flex:1 1 auto!important;width:100%!important;justify-content:center!important}"}],"page":{"pagePath":"framework/handling-inputs","slug":"/framework/handling-inputs","pageMetadata":{"title":"Handling inputs","description":null,"href":"/framework/handling-inputs","hidden":true},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`There are two, complementary, ways to handle inputs in Framework: via event handlers and via binding.`}),`\n`,_jsx(Heading,{level:`2`,id:`event-handlers`,children:`Event handlers`}),`\n`,_jsxs(_components.p,{children:[`Input components have `,_jsx(_components.em,{children:`change`}),` events that are dispatched when the value changes. The new value is provided as a payload in the event handler. Change events have slightly different names across components, reflecting the payloads they provide. For example, `,_jsx(_components.em,{children:`Number Input`}),` and `,_jsx(_components.em,{children:`Slider Input`}),` use the event `,_jsx(_components.code,{children:`wf-number-change`}),` while `,_jsx(_components.em,{children:`Text Input`}),` and `,_jsx(_components.em,{children:`Text Area Input`}),` use the generic `,_jsx(_components.code,{children:`wf-change`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`As discussed in the `,_jsx(_components.a,{href:`/framework/event-handlers`,children:`Event handlers`}),` section, the payload can be accessed via the `,_jsx(_components.code,{children:`payload`}),` argument in the event handler.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# This event handler takes the payload and assigns it`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# to the state element \"name\"`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle_input_change`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`state`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` payload`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`two-way-bindings`,children:`Two-way bindings`}),`\n`,_jsx(_components.p,{children:`Writing event handlers for every input component can be tedious. In most cases, you’ll only need to update a single element of state when the value changes, akin to the example above. You can achieve this by binding a component to a state element.`}),`\n`,_jsxs(_components.p,{children:[`Bindings automatically handle the `,_jsx(_components.em,{children:`change`}),` event for the component and set the value of the state element to the payload. Furthermore, bindings are two-way. If the state element is updated from the back-end, the front-end component is updated to reflect the new value.`]}),`\n`,_jsxs(_components.p,{children:[`As mentioned in the `,_jsx(_components.a,{href:`/framework/builder-basics`,children:`Builder basics`}),` section of the guide, bindings can be configured in the component settings.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=bcb3fe9fc8d61fe1f7302f98a35b4099`,alt:`Repeater example`,\"data-og-width\":`1704`,width:`1704`,\"data-og-height\":`479`,height:`479`,\"data-path\":`framework/images/handling-inputs.binding.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=280\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=30286a1280fbb6857684e8b7df39ea4b 280w, https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=560\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=5fcd4e09500b5f515e3da035d56ecb30 560w, https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=840\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=07d449ad6f6684fc6a8bfb345cddf328 840w, https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=1100\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=4a01e06896f46ab476c478efbc93197c 1100w, https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=1650\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=7d36df5998e1d3b122f16f1f1082c26d 1650w, https://mintcdn.com/writer/eBiCs3I5_-mSTcT-/framework/images/handling-inputs.binding.png?w=2500\u0026fit=max\u0026auto=format\u0026n=eBiCs3I5_-mSTcT-\u0026q=85\u0026s=9e78b799744a7e6f3d51982eb132fedb 2500w`}),`\n`,_jsxs(_components.p,{children:[`The binding above establishes a two-way link between the component and the state element `,_jsx(_components.code,{children:`name`}),`. If `,_jsx(_components.code,{children:`name`}),` changes in the back-end, the component changes. If the component changes, the value of `,_jsx(_components.code,{children:`name`}),` changes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`using-events-and-bindings-simultaneously`,children:`Using events and bindings simultaneously`}),`\n`,_jsxs(_components.p,{children:[`Bindings can be used together with events. This is useful for triggering recalculations or applying dynamic filters. For example, you may want to have three `,_jsx(_components.em,{children:`Number Input`}),` components bound to `,_jsx(_components.code,{children:`a`}),`, `,_jsx(_components.code,{children:`b`}),` and `,_jsx(_components.code,{children:`c`}),` and display a value `,_jsx(_components.code,{children:`n`}),`. This easily done by binding the components and linking the same recalculation event handler to all three components.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` recalculate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`state`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"n\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"a\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"b\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`handling-inputs-safely`,children:`Handling inputs safely`}),`\n`,_jsxs(_components.p,{children:[`Framework automatically sanitises the payloads it provides for its built-in events, those that start with `,_jsx(_components.code,{children:`wf-`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For example, if a `,_jsx(_components.em,{children:`Dropdown Input`}),` component lists options `,_jsx(_components.code,{children:`high`}),` and `,_jsx(_components.code,{children:`low`}),`, you’re guaranteed you won’t get a value like `,_jsx(_components.code,{children:`\"Robert'); DROP TABLE students;--\"`}),` when handling `,_jsx(_components.code,{children:`wf-option-change`}),`. You’ll get `,_jsx(_components.code,{children:`\"high\"`}),`, `,_jsx(_components.code,{children:`\"low\"`}),` or `,_jsx(_components.code,{children:`None`}),`.`]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`Inputs are sanitised, but you should still be careful`}),_jsx(_components.p,{children:`As with any application, it’s important to be familiar with the risks associated with handling user input, especially SQL injections. If you’re using any custom HTML and mixing it with user generated content, make sure you understand XSS.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`creating-forms`,children:`Creating forms`}),`\n`,_jsxs(_components.p,{children:[`Input components can be combined with `,_jsx(_components.em,{children:`Message`}),` and `,_jsx(_components.em,{children:`Button`}),` components to create forms with messages, indicating whether the submission was successful.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=d60aee2c6edda91f55808ee2d678c288`,alt:`Form example`,\"data-og-width\":`1704`,width:`1704`,\"data-og-height\":`762`,height:`762`,\"data-path\":`framework/images/handling-inputs.form.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=280\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=64e26040ef3e8d68b4637bd5fea22701 280w, https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=560\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=b88b74e0aaaafaa15bcb9badf0a36259 560w, https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=840\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=394e066d339f3c59aa6b3f9d8aba1a39 840w, https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=1100\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=fa7381a45e5660ce96e304161feeddcf 1100w, https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=1650\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=be882a73798bc6b47612e77b06e08086 1650w, https://mintcdn.com/writer/9jV0H_SSzBim4ReZ/framework/images/handling-inputs.form.png?w=2500\u0026fit=max\u0026auto=format\u0026n=9jV0H_SSzBim4ReZ\u0026q=85\u0026s=b5e3d32164e295da0c49afcd40e4b927 2500w`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Handling inputs","description":null,"href":"/framework/handling-inputs","hidden":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Event handlers","slug":"event-handlers","depth":2,"children":[]},{"title":"Two-way bindings","slug":"two-way-bindings","depth":2,"children":[]},{"title":"Using events and bindings simultaneously","slug":"using-events-and-bindings-simultaneously","depth":2,"children":[]},{"title":"Handling inputs safely","slug":"handling-inputs-safely","depth":2,"children":[]},{"title":"Creating forms","slug":"creating-forms","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"writer","siteName":"Writer AI Studio","title":"Handling inputs - Writer AI Studio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T18:27:12.429Z","originalFileLocation":"framework/handling-inputs.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Writer AI Studio developer documentation - Build AI agents with APIs, SDKs, Agent Builder, and no-code tools. Integrate generative AI into your applications.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Writer AI Studio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Handling inputs - Writer AI Studio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Writer AI Studio developer documentation - Build AI agents with APIs, SDKs, Agent Builder, and no-code tools. Integrate generative AI into your applications.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Writer AI Studio Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://dev.writer.com/framework/handling-inputs\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://writer.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Handling+inputs\u0026amp;theme=9c7f3bd87cb846f8ead27220\u0026amp;signature=726c5e0e0b345393f573bc428fbf23e9d3c780ce265d9de40b4a343919cd87e2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Handling inputs - Writer AI Studio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Writer AI Studio developer documentation - Build AI agents with APIs, SDKs, Agent Builder, and no-code tools. Integrate generative AI into your applications.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://writer.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Handling+inputs\u0026amp;theme=9c7f3bd87cb846f8ead27220\u0026amp;signature=726c5e0e0b345393f573bc428fbf23e9d3c780ce265d9de40b4a343919cd87e2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/writer/rBMYB50U__7D_mBT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Writer AI Studio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#BFCBFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://dev.writer.com/framework/handling-inputs\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/framework/handling-inputs.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://dev.writer.com/#organization\",\"name\":\"Writer AI Studio\",\"url\":\"https://dev.writer.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/writer/YZ72OUP7BQyK8p2G/logo/writer_logo_light.svg?fit=max\u0026auto=format\u0026n=YZ72OUP7BQyK8p2G\u0026q=85\u0026s=c9a784871f9b98724bb1eae947e745ed\"}},{\"@type\":\"WebSite\",\"@id\":\"https://dev.writer.com#website\",\"name\":\"Writer AI Studio\",\"url\":\"https://dev.writer.com\",\"publisher\":{\"@id\":\"https://dev.writer.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://dev.writer.com/framework/handling-inputs#webpage\",\"url\":\"https://dev.writer.com/framework/handling-inputs\",\"name\":\"Handling inputs\",\"dateModified\":\"2026-10-27T18:27:12.429Z\",\"isPartOf\":{\"@id\":\"https://dev.writer.com#website\"},\"breadcrumb\":{\"@id\":\"https://dev.writer.com/framework/handling-inputs#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://dev.writer.com/framework/handling-inputs#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://dev.writer.com/framework/application-state\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handling inputs\",\"item\":\"https://dev.writer.com/framework/handling-inputs\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://dev.writer.com/framework/handling-inputs#article\",\"headline\":\"Handling inputs\",\"name\":\"Handling inputs\",\"url\":\"https://dev.writer.com/framework/handling-inputs\",\"mainEntityOfPage\":{\"@id\":\"https://dev.writer.com/framework/handling-inputs#webpage\"},\"dateModified\":\"2026-10-27T18:27:12.429Z\",\"publisher\":{\"@id\":\"https://dev.writer.com/#organization\"},\"isPartOf\":{\"@id\":\"https://dev.writer.com#website\"}}]}\u003c/script>","siteName":"Writer AI Studio","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":"/home/introduction"}]},{"tab":"Writer Framework","icon":"shapes","hidden":true,"groups":[{"group":"Getting started","pages":[{"title":"Writer Framework","sidebarTitle":"Introduction","description":null,"href":"/framework/introduction"},{"title":"Quickstart","description":null,"href":"/framework/quickstart"},{"title":"Writer AI module","description":null,"href":"/framework/ai-module"},{"title":"Sample app library","mode":"wide","description":null,"href":"/framework/sample-apps"}]},{"group":"Guides","pages":[{"title":"Application state","description":null,"href":"/framework/application-state"},{"title":"Backend-initiated actions","description":null,"href":"/framework/backend-initiated-actions"},{"title":"Builder basics","description":null,"href":"/framework/builder-basics"},{"title":"Dataframe","description":null,"href":"/framework/dataframe"},{"title":"Event handlers","description":null,"href":"/framework/event-handlers"},{"title":"Handling inputs","href":"/framework/handling-inputs"},{"title":"Repeater","description":null,"href":"/framework/repeater"}]},{"group":"Tutorials","pages":[{"title":"Social post generator","description":null,"href":"/framework/social-post-generator"},{"title":"Chat assistant","description":null,"href":"/framework/chat-assistant"},{"title":"Product description generator","description":null,"href":"/framework/product-description-generator"},{"title":"Release notes generator","description":null,"href":"/framework/release-notes-generator"}]},{"group":"Advanced","pages":[{"title":"Authentication","description":null,"href":"/framework/authentication"},{"title":"SEO and social sharing","mode":"wide","description":null,"href":"/framework/seo"},{"title":"Backend-driven UI","description":null,"href":"/framework/backend-driven-ui"},{"title":"Custom components","description":null,"href":"/framework/custom-components"},{"title":"Custom server","description":null,"href":"/framework/custom-server"},{"title":"Frontend scripts","description":null,"href":"/framework/frontend-scripts"},{"title":"Page routes","description":null,"href":"/framework/page-routes"},{"title":"Sessions","description":null,"href":"/framework/sessions"},{"title":"State schema","description":null,"href":"/framework/state-schema"},{"title":"Stylesheets","description":null,"href":"/framework/stylesheets"},{"title":"Testing","description":null,"href":"/framework/testing"}]},{"group":"Component reference","pages":[{"group":"Layout","pages":[{"title":"Column","description":null,"href":"/components/column"},{"title":"Column Container","description":null,"href":"/components/columns"},{"title":"Horizontal Stack","description":null,"href":"/components/horizontalstack"},{"title":"Section","description":null,"href":"/components/section"},{"title":"Separator","description":null,"href":"/components/separator"},{"title":"Sidebar","description":null,"href":"/components/sidebar"},{"title":"Step","description":null,"href":"/components/step"},{"title":"Step Container","description":null,"href":"/components/steps"},{"title":"Tab","description":null,"href":"/components/tab"},{"title":"Tab Container","description":null,"href":"/components/tabs"}]},{"group":"Content","pages":[{"title":"Annotated Text","description":null,"href":"/components/annotatedtext"},{"title":"Chatbot","description":null,"href":"/components/chatbot"},{"title":"DataFrame","description":null,"href":"/components/dataframe"},{"title":"Heading","description":null,"href":"/components/heading"},{"title":"Image","description":null,"href":"/components/image"},{"title":"JSON Viewer","description":null,"href":"/components/jsonviewer"},{"title":"Link","description":null,"href":"/components/link"},{"title":"Message","description":null,"href":"/components/message"},{"title":"Metric","description":null,"href":"/components/metric"},{"title":"Plotly Graph","description":null,"href":"/components/plotlygraph"},{"title":"Progress Bar","description":null,"href":"/components/progressbar"},{"title":"Tags","description":null,"href":"/components/tags"},{"title":"Text","description":null,"href":"/components/text"},{"title":"Video Player","description":null,"href":"/components/videoplayer"}]},{"group":"Input","pages":[{"title":"Checkbox Input","description":null,"href":"/components/checkboxinput"},{"title":"Date Input","description":null,"href":"/components/dateinput"},{"title":"File Input","description":null,"href":"/components/fileinput"},{"title":"Number Input","description":null,"href":"/components/numberinput"},{"title":"Radio Input","description":null,"href":"/components/radioinput"},{"title":"Slider Range Input","description":null,"href":"/components/rangeinput"},{"title":"Rating Input","description":null,"href":"/components/ratinginput"},{"title":"Select Input","description":null,"href":"/components/selectinput"},{"title":"Slider Input","description":null,"href":"/components/sliderinput"},{"title":"Switch Input","description":null,"href":"/components/switchinput"},{"title":"Text area Input","description":null,"href":"/components/textareainput"},{"title":"Text Input","description":null,"href":"/components/textinput"},{"title":"Time Input","description":null,"href":"/components/timeinput"}]},{"group":"Other","pages":[{"title":"Button","description":null,"href":"/components/button"},{"title":"HTML Element","description":null,"href":"/components/html"},{"title":"Pagination","description":null,"href":"/components/pagination"},{"title":"Repeater","description":null,"href":"/components/repeater"},{"title":"Reuse Component","description":null,"href":"/components/reuse"},{"title":"Timer","description":null,"href":"/components/timer"}]},{"group":"Embed","pages":[{"title":"PDF","description":null,"href":"/components/pdf"},{"title":"IFrame","description":null,"href":"/components/iframe"}]}]}]},{"tab":"API Reference","icon":"key","pages":[{"title":"API Reference","href":"/api-reference/api-keys"}]},{"tab":"Legacy API Reference","hidden":true,"pages":[{"title":"Legacy API Reference","href":"/api-reference-legacy/billing/get-your-organization-subscription-details"}]}]},"title":"Handling inputs - Writer AI Studio","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-D7yRe3On.js","lightbox-handle-r17bVUz3.js"]}