Skip to content

Modals

Modals are a way to display a form to the user. They can be used to collect information or confirm an action.

Example

ts
import { defineModal } from '@harmonix-js/core'

export default defineModal(
  {
    title: 'Form',
    inputs: {
      color: {
        label: 'Favorite color',
        style: 'Short',
        placeholder: 'Enter your favorite color'
      },
      hobbies: {
        label: 'Hobbies',
        style: 'Paragraph',
        placeholder: 'Enter your hobbies'
      }
    }
  },
  (interaction, context) => {
    const { color } = context.inputs

    interaction.reply(`Submitted color: ${color}`)
  }
)

Modal can be customized using the following options:

  • id: The unique identifier for the modal.
  • title: The title displayed on the modal.
  • inputs: The record of inputs to include in the modal.

Using Modals

Modals can be imported using getModal function and be added to messages using the components property of the interaction.reply method. You can use the useActionRow function to create a row.

Example

ts
import { defineCommand, getModal, useActionRow } from '@harmonix-js/core'

export default defineCommand(
	{
		description: 'Open a form.'
	},
	(_, interaction) => {
		const modal = getModal('form')
		const row = useActionRow(modal)

		interaction.reply({
			content: 'Click the button to open the form!',
			components: [row]
		})
	}
)

INFO

The getModal function is used to import the modal with the specified ID. By default, the ID is the filename without the extension.

Released under the MIT License.