> {
+ children: PollChildrenType[];
+}
+```
+* Extends: Partial<Omit<PollData, 'question' | 'answers'>>
+
+
+
+
+
+### children
+
+PollChildrenType[]`} />
+
+The poll children components (question and answers).
+
+
+
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/poll-question-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/poll-question-props.mdx
new file mode 100644
index 00000000..bc9a7943
--- /dev/null
+++ b/apps/website/docs/api-reference/commandkit/interfaces/poll-question-props.mdx
@@ -0,0 +1,38 @@
+---
+title: "PollQuestionProps"
+isDefaultIndex: false
+generated: true
+---
+
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+
+
+## PollQuestionProps
+
+
+
+The poll question properties for the poll question component.
+
+```ts title="Signature"
+interface PollQuestionProps extends Omit {
+ children: PollQuestionMedia['text'];
+}
+```
+* Extends: Omit<PollQuestionMedia, 'text'>
+
+
+
+
+
+### children
+
+
+
+The question text content.
+
+
+
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/role-select-menu-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/role-select-menu-props.mdx
index 9729570a..6902e79e 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/role-select-menu-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/role-select-menu-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## RoleSelectMenuProps
-
+
The RoleSelectMenu component props.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/section-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/section-props.mdx
index 29848928..ef1b39ae 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/section-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/section-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## SectionProps
-
+
Represents the properties for a section component.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/select-menu-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/select-menu-props.mdx
index 70847b9a..311fbfd9 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/select-menu-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/select-menu-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## SelectMenuProps
-
+
Type for the base select menu component data.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/separator-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/separator-props.mdx
index b624ef93..60e1f065 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/separator-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/separator-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## SeparatorProps
-
+
Represents the properties for a separator component.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/string-select-menu-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/string-select-menu-props.mdx
index 3a88228a..9478ef78 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/string-select-menu-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/string-select-menu-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## StringSelectMenuProps
-
+
The properties for a string select menu component.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/text-display-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/text-display-props.mdx
index 4e3159b7..93109e20 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/text-display-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/text-display-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## TextDisplayProps
-
+
Represents the properties for a text display component.
This interface extends the TextDisplayComponentData type from discord.js,
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/text-input-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/text-input-props.mdx
index 823dc538..e23ed0cd 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/text-input-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/text-input-props.mdx
@@ -13,14 +13,14 @@ import MemberDescription from '@site/src/components/MemberDescription';
## TextInputProps
-
+
```ts title="Signature"
interface TextInputProps {
customId: string;
- label: string;
+ label?: string;
placeholder?: string;
maxLength?: number;
minLength?: number;
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/thumbnail-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/thumbnail-props.mdx
index 472c1047..b08170c2 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/thumbnail-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/thumbnail-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ThumbnailProps
-
+
Represents the properties for a thumbnail component.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/user-select-menu-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/user-select-menu-props.mdx
index 4dd35c20..66b722d0 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/user-select-menu-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/user-select-menu-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## UserSelectMenuProps
-
+
The UserSelectMenu component.
diff --git a/apps/website/docs/api-reference/commandkit/types/any-command-kit-element.mdx b/apps/website/docs/api-reference/commandkit/types/any-command-kit-element.mdx
index c9e7ef07..93568385 100644
--- a/apps/website/docs/api-reference/commandkit/types/any-command-kit-element.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/any-command-kit-element.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## AnyCommandKitElement
-
+
Represents any CommandKit element, which can be of any type defined in CommandKitElementData.
diff --git a/apps/website/docs/api-reference/commandkit/types/button-children-like.mdx b/apps/website/docs/api-reference/commandkit/types/button-children-like.mdx
index 5421315b..e60a1187 100644
--- a/apps/website/docs/api-reference/commandkit/types/button-children-like.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/button-children-like.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ButtonChildrenLike
-
+
The button children type.
diff --git a/apps/website/docs/api-reference/commandkit/types/button-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/button-kit-predicate.mdx
index 51c9d9a1..d4be00c4 100644
--- a/apps/website/docs/api-reference/commandkit/types/button-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/button-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ButtonKitPredicate
-
+
The predicate function that filters button interactions.
It receives a ButtonInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/channel-select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/channel-select-menu-kit-predicate.mdx
index 3612eed5..18fa354f 100644
--- a/apps/website/docs/api-reference/commandkit/types/channel-select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/channel-select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ChannelSelectMenuKitPredicate
-
+
Type for the predicate function that filters channel select menu interactions.
It receives a ChannelSelectMenuInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-data.mdx b/apps/website/docs/api-reference/commandkit/types/command-data.mdx
index f5a21978..122ed33e 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-data.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-data.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandData
-
+
Represents a command that can be executed by CommandKit.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch-context-data.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch-context-data.mdx
index fcceb8fb..27514b29 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch-context-data.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch-context-data.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitButtonBuilderInteractionCollectorDispatchContextData
-
+
The context data for the interaction collector.
This includes the autoReset, time, filter, onEnd, and onError properties.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch.mdx
index 66c7f0bb..a9e4c59f 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-interaction-collector-dispatch.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitButtonBuilderInteractionCollectorDispatch
-
+
The handler to run when a button is clicked. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-on-end.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-on-end.mdx
index aa090559..f525d819 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-on-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-button-builder-on-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitButtonBuilderOnEnd
-
+
The handler to run when the interaction collector ends. This handler is called with the reason as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-element.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-element.mdx
index cfff4652..dea16a5b 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-element.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-element.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitElement
-
+
Represents a CommandKit element with a specific type and data.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch-context-data.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch-context-data.mdx
index c9ef4da4..e0b95585 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch-context-data.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch-context-data.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitModalBuilderInteractionCollectorDispatchContextData
-
+
The context data for the interaction collector.
This includes the autoReset, time, filter, onEnd, and onError properties.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch.mdx
index 5a37a6a0..6162b0e1 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-interaction-collector-dispatch.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitModalBuilderInteractionCollectorDispatch
-
+
The handler to run when a modal is submitted. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-on-end.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-on-end.mdx
index 665bd10e..f1f0f7da 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-on-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-modal-builder-on-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitModalBuilderOnEnd
-
+
The handler to run when the interaction collector ends. This handler is called with the reason as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch-context-data.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch-context-data.mdx
index 380ca0e0..d93ea83d 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch-context-data.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch-context-data.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitSelectMenuBuilderInteractionCollectorDispatchContextData
-
+
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch.mdx
index 03e9a496..39948109 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-interaction-collector-dispatch.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitSelectMenuBuilderInteractionCollectorDispatch
-
+
The handler to run when a modal is submitted. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-on-end.mdx b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-on-end.mdx
index c8aba970..9c624644 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-on-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-kit-select-menu-builder-on-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandKitSelectMenuBuilderOnEnd
-
+
diff --git a/apps/website/docs/api-reference/commandkit/types/command-metadata-function.mdx b/apps/website/docs/api-reference/commandkit/types/command-metadata-function.mdx
index 47368b68..7ada2e8d 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-metadata-function.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-metadata-function.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandMetadataFunction
-
+
The command metadata function
diff --git a/apps/website/docs/api-reference/commandkit/types/common-builder-kit.mdx b/apps/website/docs/api-reference/commandkit/types/common-builder-kit.mdx
index d569c0de..688a68cd 100644
--- a/apps/website/docs/api-reference/commandkit/types/common-builder-kit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/common-builder-kit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommonBuilderKit
-
+
Type for the common builder kit that can be used with select menus.
diff --git a/apps/website/docs/api-reference/commandkit/types/element-type.mdx b/apps/website/docs/api-reference/commandkit/types/element-type.mdx
index afa9442a..4df0d795 100644
--- a/apps/website/docs/api-reference/commandkit/types/element-type.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/element-type.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ElementType
-
+
The type of element that can be used in CommandKit.
This is a union of the keys of the ElementType object.
diff --git a/apps/website/docs/api-reference/commandkit/types/event-handler.mdx b/apps/website/docs/api-reference/commandkit/types/event-handler.mdx
index 79f02e68..d5c11e10 100644
--- a/apps/website/docs/api-reference/commandkit/types/event-handler.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/event-handler.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## EventHandler
-
+
Represents an event handler for a specific event.
diff --git a/apps/website/docs/api-reference/commandkit/types/mentionable-select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/mentionable-select-menu-kit-predicate.mdx
index 686e142e..8e2ff1ea 100644
--- a/apps/website/docs/api-reference/commandkit/types/mentionable-select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/mentionable-select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## MentionableSelectMenuKitPredicate
-
+
Type for the predicate function that filters mentionable select menu interactions.
It receives a MentionableSelectMenuInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/modal-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/modal-kit-predicate.mdx
index e12867c5..6390dd31 100644
--- a/apps/website/docs/api-reference/commandkit/types/modal-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/modal-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ModalKitPredicate
-
+
The predicate function that filters modal interactions.
It receives a ModalSubmitInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-button-kit-click.mdx b/apps/website/docs/api-reference/commandkit/types/on-button-kit-click.mdx
index 2abfbb86..cc5a945e 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-button-kit-click.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-button-kit-click.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnButtonKitClick
-
+
The handler to run when a button is clicked. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-button-kit-end.mdx b/apps/website/docs/api-reference/commandkit/types/on-button-kit-end.mdx
index 13e1f039..6a7e9d4d 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-button-kit-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-button-kit-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnButtonKitEnd
-
+
The handler to run when the interaction collector ends. This handler is called with the reason as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-channel-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-channel-select-menu-kit-submit.mdx
index 8bee5f53..04f12b83 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-channel-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-channel-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnChannelSelectMenuKitSubmit
-
+
Type for the handler function that is called when the channel select menu is submitted.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-mentionable-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-mentionable-select-menu-kit-submit.mdx
index d43651af..87a9e658 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-mentionable-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-mentionable-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnMentionableSelectMenuKitSubmit
-
+
Type for the handler function that is called when the mentionable select menu is submitted.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-modal-kit-end.mdx b/apps/website/docs/api-reference/commandkit/types/on-modal-kit-end.mdx
index 91e0b083..b4da7d7d 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-modal-kit-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-modal-kit-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnModalKitEnd
-
+
The handler to run when the interaction collector ends. This handler is called with the reason as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-modal-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-modal-kit-submit.mdx
index b33cf71f..a8ec5eec 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-modal-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-modal-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnModalKitSubmit
-
+
The handler to run when a modal is submitted. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-role-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-role-select-menu-kit-submit.mdx
index 4c5b59eb..7123456c 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-role-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-role-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnRoleSelectMenuKitSubmit
-
+
Type for the handler function that is called when the role select menu is submitted.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-end.mdx b/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-end.mdx
index 896fb5fa..c6dd9509 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-end.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-end.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnSelectMenuKitEnd
-
+
The handler to run when the interaction collector ends. This handler is called with the reason as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-submit.mdx
index efd14de9..9d798014 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnSelectMenuKitSubmit
-
+
The handler to run when a modal is submitted. This handler is called with the interaction as the first argument.
If the first argument is null, it means that the interaction collector has been destroyed.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-string-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-string-select-menu-kit-submit.mdx
index 3ec909fb..bb473a3d 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-string-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-string-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnStringSelectMenuKitSubmit
-
+
Type for the handler function that is called when the string select menu is submitted.
diff --git a/apps/website/docs/api-reference/commandkit/types/on-user-select-menu-kit-submit.mdx b/apps/website/docs/api-reference/commandkit/types/on-user-select-menu-kit-submit.mdx
index e42cca32..33891b33 100644
--- a/apps/website/docs/api-reference/commandkit/types/on-user-select-menu-kit-submit.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/on-user-select-menu-kit-submit.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## OnUserSelectMenuKitSubmit
-
+
Type for the handler function that is called when the user select menu is submitted.
diff --git a/apps/website/docs/api-reference/commandkit/types/poll-children-type.mdx b/apps/website/docs/api-reference/commandkit/types/poll-children-type.mdx
new file mode 100644
index 00000000..9d4efbfa
--- /dev/null
+++ b/apps/website/docs/api-reference/commandkit/types/poll-children-type.mdx
@@ -0,0 +1,23 @@
+---
+title: "PollChildrenType"
+isDefaultIndex: false
+generated: true
+---
+
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+
+
+## PollChildrenType
+
+
+
+
+
+```ts title="Signature"
+type PollChildrenType = | PollChild
+ | PollChild
+```
diff --git a/apps/website/docs/api-reference/commandkit/types/resolve-builder-interaction.mdx b/apps/website/docs/api-reference/commandkit/types/resolve-builder-interaction.mdx
index cce04e76..68884a61 100644
--- a/apps/website/docs/api-reference/commandkit/types/resolve-builder-interaction.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/resolve-builder-interaction.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ResolveBuilderInteraction
-
+
Type that resolves to the specific interaction type based on the builder type.
This is used to ensure that the interaction type matches the builder type.
diff --git a/apps/website/docs/api-reference/commandkit/types/role-select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/role-select-menu-kit-predicate.mdx
index eda4869b..4e5f6724 100644
--- a/apps/website/docs/api-reference/commandkit/types/role-select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/role-select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## RoleSelectMenuKitPredicate
-
+
Type for the predicate function that filters role select menu interactions.
It receives a RoleSelectMenuInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/select-menu-kit-predicate.mdx
index 05102075..8a8feab1 100644
--- a/apps/website/docs/api-reference/commandkit/types/select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## SelectMenuKitPredicate
-
+
The predicate function that filters select menu interactions.
It receives an interaction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/string-encodable.mdx b/apps/website/docs/api-reference/commandkit/types/string-encodable.mdx
index 2c70c24f..33c84447 100644
--- a/apps/website/docs/api-reference/commandkit/types/string-encodable.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/string-encodable.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## StringEncodable
-
+
Represents a type that can be encoded as a string.
diff --git a/apps/website/docs/api-reference/commandkit/types/string-select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/string-select-menu-kit-predicate.mdx
index dae26b83..a5f6b00b 100644
--- a/apps/website/docs/api-reference/commandkit/types/string-select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/string-select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## StringSelectMenuKitPredicate
-
+
Type for the predicate function that filters string select menu interactions.
It receives a StringSelectMenuInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/types/string-select-menu-option-props.mdx b/apps/website/docs/api-reference/commandkit/types/string-select-menu-option-props.mdx
index 19bafb92..c059a1a7 100644
--- a/apps/website/docs/api-reference/commandkit/types/string-select-menu-option-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/string-select-menu-option-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## StringSelectMenuOptionProps
-
+
Represents the properties for a string select menu option.
This can be either a SelectMenuComponentOptionData or an APISelectMenuOption.
diff --git a/apps/website/docs/api-reference/commandkit/types/user-select-menu-kit-predicate.mdx b/apps/website/docs/api-reference/commandkit/types/user-select-menu-kit-predicate.mdx
index 54754c83..683745ca 100644
--- a/apps/website/docs/api-reference/commandkit/types/user-select-menu-kit-predicate.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/user-select-menu-kit-predicate.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## UserSelectMenuKitPredicate
-
+
Type for the predicate function that filters user select menu interactions.
It receives a UserSelectMenuInteraction and returns a boolean or a Promise that resolves to a boolean.
diff --git a/apps/website/docs/api-reference/commandkit/variables/element-type.mdx b/apps/website/docs/api-reference/commandkit/variables/element-type.mdx
index 4ae8628b..525b108c 100644
--- a/apps/website/docs/api-reference/commandkit/variables/element-type.mdx
+++ b/apps/website/docs/api-reference/commandkit/variables/element-type.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ElementType
-
+
Represents the types of elements that can be used in CommandKit.
diff --git a/apps/website/docs/guide/04-jsx-components/02-discord-components-v1/01-action-row.mdx b/apps/website/docs/guide/04-jsx-components/02-interactive-components/01-action-row.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/02-discord-components-v1/01-action-row.mdx
rename to apps/website/docs/guide/04-jsx-components/02-interactive-components/01-action-row.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/02-discord-components-v1/02-button.mdx b/apps/website/docs/guide/04-jsx-components/02-interactive-components/02-button.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/02-discord-components-v1/02-button.mdx
rename to apps/website/docs/guide/04-jsx-components/02-interactive-components/02-button.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/02-discord-components-v1/03-select-menu.mdx b/apps/website/docs/guide/04-jsx-components/02-interactive-components/03-select-menu.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/02-discord-components-v1/03-select-menu.mdx
rename to apps/website/docs/guide/04-jsx-components/02-interactive-components/03-select-menu.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/02-discord-components-v1/04-modal.mdx b/apps/website/docs/guide/04-jsx-components/02-interactive-components/04-modal.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/02-discord-components-v1/04-modal.mdx
rename to apps/website/docs/guide/04-jsx-components/02-interactive-components/04-modal.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/02-interactive-components/05-poll.mdx b/apps/website/docs/guide/04-jsx-components/02-interactive-components/05-poll.mdx
new file mode 100644
index 00000000..fb690b40
--- /dev/null
+++ b/apps/website/docs/guide/04-jsx-components/02-interactive-components/05-poll.mdx
@@ -0,0 +1,213 @@
+---
+title: Poll
+---
+
+The `Poll` component allows you to create interactive polls in Discord messages. Users can vote on poll questions with multiple answer options, and the results are displayed in real-time. Polls can be open for up to 32 days (768 hours).
+
+## Basic usage
+
+```tsx title="src/app/commands/poll-example.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'poll',
+ description: 'Create a poll',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+ What's your favorite programming language?
+ JavaScript
+ TypeScript
+ Python
+ Rust
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
+
+## Poll duration
+
+Set how long the poll should be active (in hours). The duration defaults to 24 hours and can be up to 32 days (768 hours):
+
+```tsx title="src/app/commands/poll-duration.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'quickpoll',
+ description: 'Create a quick poll',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+ Quick question: Coffee or tea?
+ Coffee
+ Tea
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
+
+For longer polls, you can specify durations up to 32 days:
+
+```tsx title="src/app/commands/long-poll.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'weeklypoll',
+ description: 'Create a weekly poll',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+ Weekly poll: What should we work on next?
+ New features
+ Bug fixes
+ Documentation
+ UI improvements
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
+
+## Multiple choice polls
+
+Allow users to select multiple answers:
+
+```tsx title="src/app/commands/multiselect-poll.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'multiselect',
+ description: 'Create a multiple choice poll',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+
+ Which social media platforms do you use? (Select all that apply)
+
+ Facebook
+ Twitter
+ Instagram
+ LinkedIn
+ TikTok
+ YouTube
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
+
+## Poll layout types
+
+Customize how your poll appears using different layout types:
+
+```tsx title="src/app/commands/poll-layouts.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData, PollLayoutType } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'layoutpoll',
+ description: 'Create a poll with custom layout',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+ List layout poll
+ First item
+ Second item
+ Third item
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
+
+## Poll with media
+
+Add images or other media to your poll questions:
+
+```tsx title="src/app/commands/media-poll.tsx"
+import {
+ CommandData,
+ Poll,
+ PollQuestion,
+ PollAnswer,
+ ChatInputCommand,
+} from 'commandkit';
+import { PollData } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'mediapoll',
+ description: 'Create a poll with media',
+};
+
+export const chatInput: ChatInputCommand = async (ctx) => {
+ const poll: PollData = (
+
+
+ Choose your favorite logo design
+
+ Design A
+ Design B
+ Design C
+
+ );
+
+ await ctx.interaction.reply({ poll });
+};
+```
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/01-text-display.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/01-text-display.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/01-text-display.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/01-text-display.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/02-container.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/02-container.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/02-container.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/02-container.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/03-media-gallery.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/03-media-gallery.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/03-media-gallery.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/03-media-gallery.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/04-separator.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/04-separator.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/04-separator.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/04-separator.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/05-file.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/05-file.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/05-file.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/05-file.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-discord-components-v2/06-section.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/06-section.mdx
similarity index 100%
rename from apps/website/docs/guide/04-jsx-components/03-discord-components-v2/06-section.mdx
rename to apps/website/docs/guide/04-jsx-components/03-display-components/06-section.mdx
diff --git a/apps/website/docs/guide/04-jsx-components/03-display-components/07-label.mdx b/apps/website/docs/guide/04-jsx-components/03-display-components/07-label.mdx
new file mode 100644
index 00000000..6654de00
--- /dev/null
+++ b/apps/website/docs/guide/04-jsx-components/03-display-components/07-label.mdx
@@ -0,0 +1,167 @@
+---
+title: Label
+---
+
+The `Label` component wraps modal components with text as a label and optional description, providing better organization and context for form elements.
+
+## Basic usage
+
+```tsx title="src/app/commands/label-example.tsx"
+import {
+ CommandData,
+ Modal,
+ ShortInput,
+ Label,
+ OnModalKitSubmit,
+ ChatInputCommandContext,
+} from 'commandkit';
+import { MessageFlags } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'profile',
+ description: 'Create your profile',
+};
+
+const handleSubmit: OnModalKitSubmit = async (interaction, context) => {
+ const name = interaction.fields.getTextInputValue('name');
+
+ await interaction.reply({
+ content: `Hello, ${name}!`,
+ flags: MessageFlags.Ephemeral,
+ });
+
+ context.dispose();
+};
+
+export const chatInput: ChatInputCommandContext = async (ctx) => {
+ const modal = (
+
+
+
+ );
+
+ await ctx.interaction.showModal(modal);
+};
+```
+
+## With description
+
+Labels can include descriptive text to provide additional context:
+
+```tsx title="src/app/commands/label-description.tsx"
+import {
+ CommandData,
+ Modal,
+ ShortInput,
+ ParagraphInput,
+ Label,
+ OnModalKitSubmit,
+ ChatInputCommandContext,
+} from 'commandkit';
+import { MessageFlags } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'profile',
+ description: 'Create your profile',
+};
+
+const handleSubmit: OnModalKitSubmit = async (interaction, context) => {
+ const username = interaction.fields.getTextInputValue('username');
+ const bio = interaction.fields.getTextInputValue('bio');
+
+ await interaction.reply({
+ content: `**Username:** ${username}\n**Bio:** ${bio}`,
+ flags: MessageFlags.Ephemeral,
+ });
+
+ context.dispose();
+};
+
+export const chatInput: ChatInputCommandContext = async (ctx) => {
+ const modal = (
+
+
+
+
+
+ );
+
+ await ctx.interaction.showModal(modal);
+};
+```
+
+## Multiple labels
+
+Use multiple labels to organize different sections of your modal:
+
+```tsx title="src/app/commands/multiple-labels.tsx"
+import {
+ CommandData,
+ Modal,
+ ShortInput,
+ ParagraphInput,
+ Label,
+ OnModalKitSubmit,
+ ChatInputCommandContext,
+} from 'commandkit';
+import { MessageFlags } from 'discord.js';
+
+export const command: CommandData = {
+ name: 'contact',
+ description: 'Send us a message',
+};
+
+const handleSubmit: OnModalKitSubmit = async (interaction, context) => {
+ const firstName = interaction.fields.getTextInputValue('firstName');
+ const lastName = interaction.fields.getTextInputValue('lastName');
+ const email = interaction.fields.getTextInputValue('email');
+ const message = interaction.fields.getTextInputValue('message');
+
+ await interaction.reply({
+ content: `**Contact Form Submitted**\n**Name:** ${firstName} ${lastName}\n**Email:** ${email}\n**Message:** ${message}`,
+ flags: MessageFlags.Ephemeral,
+ });
+
+ context.dispose();
+};
+
+export const chatInput: ChatInputCommandContext = async (ctx) => {
+ const modal = (
+
+
+
+
+
+
+
+ );
+
+ await ctx.interaction.showModal(modal);
+};
+```
diff --git a/packages/commandkit/src/analytics/analytics-engine.ts b/packages/commandkit/src/analytics/analytics-engine.ts
index 6ac3882b..a84222f5 100644
--- a/packages/commandkit/src/analytics/analytics-engine.ts
+++ b/packages/commandkit/src/analytics/analytics-engine.ts
@@ -1,4 +1,4 @@
-import { CommandKit } from '../commandkit';
+import type { CommandKit } from '../commandkit';
import { Logger } from '../logger/Logger';
import {
AnalyticsEvent,
diff --git a/packages/commandkit/src/app/commands/Context.ts b/packages/commandkit/src/app/commands/Context.ts
index 5510b6b1..375d5b50 100644
--- a/packages/commandkit/src/app/commands/Context.ts
+++ b/packages/commandkit/src/app/commands/Context.ts
@@ -12,7 +12,7 @@ import {
TextBasedChannel,
UserContextMenuCommandInteraction,
} from 'discord.js';
-import { CommandKit } from '../../commandkit';
+import type { CommandKit } from '../../commandkit';
import { GenericFunction, getContext } from '../../context/async-context';
import { CommandKitEnvironment } from '../../context/environment';
import {
diff --git a/packages/commandkit/src/app/events/EventWorkerContext.ts b/packages/commandkit/src/app/events/EventWorkerContext.ts
index 8ec6e437..9d1cfe8c 100644
--- a/packages/commandkit/src/app/events/EventWorkerContext.ts
+++ b/packages/commandkit/src/app/events/EventWorkerContext.ts
@@ -1,6 +1,6 @@
import { AsyncLocalStorage } from 'node:async_hooks';
import { ParsedEvent } from '../router';
-import { CommandKit } from '../../commandkit';
+import type { CommandKit } from '../../commandkit';
/**
* Context object containing information about the currently executing event.
diff --git a/packages/commandkit/src/app/handlers/AppEventsHandler.ts b/packages/commandkit/src/app/handlers/AppEventsHandler.ts
index 0f42fddd..2415b44a 100644
--- a/packages/commandkit/src/app/handlers/AppEventsHandler.ts
+++ b/packages/commandkit/src/app/handlers/AppEventsHandler.ts
@@ -1,5 +1,5 @@
import { Collection } from 'discord.js';
-import { CommandKit } from '../../commandkit';
+import type { CommandKit } from '../../commandkit';
import { ListenerFunction } from '../../events/CommandKitEventsChannel';
import { Logger } from '../../logger/Logger';
import { toFileURL } from '../../utils/resolve-file-url';
diff --git a/packages/commandkit/src/app/register/CommandRegistrar.ts b/packages/commandkit/src/app/register/CommandRegistrar.ts
index 3e96969c..5e1afce8 100644
--- a/packages/commandkit/src/app/register/CommandRegistrar.ts
+++ b/packages/commandkit/src/app/register/CommandRegistrar.ts
@@ -1,5 +1,5 @@
import { ApplicationCommandType, REST, Routes } from 'discord.js';
-import { CommandKit } from '../../commandkit';
+import type { CommandKit } from '../../commandkit';
import { CommandData, CommandMetadata } from '../../types';
import { Logger } from '../../logger/Logger';
diff --git a/packages/commandkit/src/cli/app-process.ts b/packages/commandkit/src/cli/app-process.ts
index 92a1199c..4bdaf05c 100644
--- a/packages/commandkit/src/cli/app-process.ts
+++ b/packages/commandkit/src/cli/app-process.ts
@@ -36,7 +36,7 @@ export function createAppProcess(
'--enable-source-maps',
];
- const nodeOptions = process.env.NODE_OPTIONS;
+ const nodeOptions = process.env.CK_NODE_OPTIONS || process.env.NODE_OPTIONS;
let nodeArgs = [...baseArgs];
if (nodeOptions) {
diff --git a/packages/commandkit/src/cli/build.ts b/packages/commandkit/src/cli/build.ts
index 6c7213fb..d5599d40 100644
--- a/packages/commandkit/src/cli/build.ts
+++ b/packages/commandkit/src/cli/build.ts
@@ -219,10 +219,10 @@ async function injectEntryFile(
const code = `/* Entrypoint File Generated By CommandKit */
${isDev ? `\n\n// Injected for development\n${wrapInAsyncIIFE([envScript(isDev), emitAntiCrashScript ? antiCrashScript : ''])}\n\n` : wrapInAsyncIIFE([envScript(isDev)])}
-import { commandkit } from 'commandkit';
-import { Client } from 'discord.js';
async function bootstrap() {
+ const { Client } = await import('discord.js');
+ const { commandkit } = await import('commandkit');
const app = await import('./app.js').then((m) => m.default ?? m);
if (!app || !(app instanceof Client)) {
diff --git a/packages/commandkit/src/components/common/element.ts b/packages/commandkit/src/components/common/element.ts
index 9f2b6de0..2c9afc1c 100644
--- a/packages/commandkit/src/components/common/element.ts
+++ b/packages/commandkit/src/components/common/element.ts
@@ -1,7 +1,6 @@
-import { ActionRowBuilder, TextInputBuilder } from 'discord.js';
-import type { ButtonKit } from '../v1/button/ButtonKit';
-import { warnUnstable } from '../../utils/warn-unstable';
-import { ModalKit } from '../v1/modal/ModalKit';
+import type { ActionRowBuilder, TextInputBuilder } from 'discord.js';
+import type { ButtonKit } from '../interactive/button/ButtonKit';
+import type { ModalKit } from '../interactive/modal/ModalKit';
/**
* Represents the types of elements that can be used in CommandKit.
diff --git a/packages/commandkit/src/components/v2/common.ts b/packages/commandkit/src/components/display/common.ts
similarity index 78%
rename from packages/commandkit/src/components/v2/common.ts
rename to packages/commandkit/src/components/display/common.ts
index 5f0177b1..8a7b4f19 100644
--- a/packages/commandkit/src/components/v2/common.ts
+++ b/packages/commandkit/src/components/display/common.ts
@@ -4,7 +4,7 @@ import { ComponentBuilder } from 'discord.js';
* @private
*/
export function applyId(props: { id?: number }, component: ComponentBuilder) {
- if (props.id != null) {
+ if (props.id != null && 'setId' in component) {
component.setId(props.id);
}
}
diff --git a/packages/commandkit/src/components/v2/container.ts b/packages/commandkit/src/components/display/container.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/container.ts
rename to packages/commandkit/src/components/display/container.ts
diff --git a/packages/commandkit/src/components/v2/file.ts b/packages/commandkit/src/components/display/file.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/file.ts
rename to packages/commandkit/src/components/display/file.ts
diff --git a/packages/commandkit/src/components/v2/index.ts b/packages/commandkit/src/components/display/index.ts
similarity index 78%
rename from packages/commandkit/src/components/v2/index.ts
rename to packages/commandkit/src/components/display/index.ts
index 05de7138..56c1d056 100644
--- a/packages/commandkit/src/components/v2/index.ts
+++ b/packages/commandkit/src/components/display/index.ts
@@ -4,3 +4,5 @@ export * from './media-gallery';
export * from './section';
export * from './separator';
export * from './text-display';
+export * from './label';
+export * from './poll';
diff --git a/packages/commandkit/src/components/display/label.ts b/packages/commandkit/src/components/display/label.ts
new file mode 100644
index 00000000..d8dcda8f
--- /dev/null
+++ b/packages/commandkit/src/components/display/label.ts
@@ -0,0 +1,43 @@
+import {
+ APIComponentInLabel,
+ LabelBuilder,
+ type LabelBuilderData,
+} from 'discord.js';
+import { applyId } from './common';
+
+/**
+ * The label properties for the label component.
+ */
+export interface LabelProps
+ extends Omit {
+ /**
+ * The component that will be wrapped by the label component.
+ */
+ children: LabelBuilderData['component'] & {};
+}
+
+/**
+ * The label component wraps modal components with text as a label and optional description.
+ * @param props The label properties.
+ * @returns The label builder instance.
+ * @example ```tsx
+ * import { Label } from 'commandkit';
+ *
+ * const label = ;
+ * ```
+ */
+export function Label(props: LabelProps) {
+ const { children, id, ...rest } = props;
+
+ const label = new LabelBuilder({
+ ...rest,
+ // channel select menu builder is missing?
+ component: children as unknown as APIComponentInLabel,
+ });
+
+ applyId(props, label);
+
+ return label;
+}
diff --git a/packages/commandkit/src/components/v2/media-gallery.ts b/packages/commandkit/src/components/display/media-gallery.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/media-gallery.ts
rename to packages/commandkit/src/components/display/media-gallery.ts
diff --git a/packages/commandkit/src/components/display/poll.ts b/packages/commandkit/src/components/display/poll.ts
new file mode 100644
index 00000000..3604101c
--- /dev/null
+++ b/packages/commandkit/src/components/display/poll.ts
@@ -0,0 +1,132 @@
+import {
+ PollLayoutType,
+ type PollAnswerData,
+ type PollData,
+ type PollQuestionMedia,
+} from 'discord.js';
+
+/**
+ * The poll properties for the poll component.
+ */
+export interface PollProps
+ extends Partial> {
+ /**
+ * The poll children components (question and answers).
+ */
+ children: PollChildrenType[];
+}
+
+enum PollChildType {
+ Answer,
+ Question,
+}
+
+type PollChild = T & {
+ $$typeof: Type;
+};
+
+export type PollChildrenType =
+ | PollChild
+ | PollChild;
+
+/**
+ * The poll component creates a Discord poll with a question and multiple answer options.
+ * @param props The poll properties.
+ * @returns The poll data object.
+ * @example ```tsx
+ * import { Poll, PollQuestion, PollAnswer } from 'commandkit';
+ *
+ * const poll =
+ * What's your favorite color?
+ * Red
+ * Blue
+ * Green
+ * ;
+ * ```
+ */
+export function Poll({ children, ...props }: PollProps): PollData {
+ const question = children.find(
+ (child): child is PollChild =>
+ child.$$typeof === PollChildType.Question,
+ );
+
+ if (!question) {
+ throw new Error('Poll question is required');
+ }
+
+ const answers = children.filter(
+ (child): child is PollChild =>
+ child.$$typeof === PollChildType.Answer,
+ );
+
+ const { children: questionChildren, ...questionProps } = question;
+ const { duration, allowMultiselect, layoutType, ...restProps } = props;
+
+ return {
+ duration: duration ?? 24,
+ allowMultiselect: allowMultiselect ?? false,
+ layoutType: layoutType ?? PollLayoutType.Default,
+ ...restProps,
+ question: { text: questionChildren, ...questionProps },
+ answers: answers.map(
+ ({ children: answerChildren, $$typeof, ...answerProps }) => ({
+ text: answerChildren,
+ ...answerProps,
+ }),
+ ),
+ };
+}
+
+/**
+ * The poll question properties for the poll question component.
+ */
+export interface PollQuestionProps extends Omit {
+ /**
+ * The question text content.
+ */
+ children: PollQuestionMedia['text'];
+}
+
+/**
+ * The poll question component defines the question text for a Discord poll.
+ * @param props The poll question properties.
+ * @returns The poll question media object.
+ * @example ```tsx
+ * import { PollQuestion } from 'commandkit';
+ *
+ * const question = What's your favorite programming language?;
+ * ```
+ */
+export function PollQuestion({
+ children,
+ ...props
+}: PollQuestionProps): PollChild {
+ return { ...props, text: children, $$typeof: PollChildType.Question };
+}
+
+/**
+ * The poll answer properties for the poll answer component.
+ */
+export interface PollAnswerProps extends Omit {
+ /**
+ * The answer text content.
+ */
+ children: PollAnswerData['text'];
+}
+
+/**
+ * The poll answer component defines an answer option for a Discord poll.
+ * @param props The poll answer properties.
+ * @returns The poll answer data object.
+ * @example ```tsx
+ * import { PollAnswer } from 'commandkit';
+ *
+ * const answer = TypeScript;
+ * ```
+ */
+export function PollAnswer({
+ children,
+ ...props
+}: PollAnswerProps): PollChild {
+ return { ...props, text: children, $$typeof: PollChildType.Answer };
+}
diff --git a/packages/commandkit/src/components/v2/section.ts b/packages/commandkit/src/components/display/section.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/section.ts
rename to packages/commandkit/src/components/display/section.ts
diff --git a/packages/commandkit/src/components/v2/separator.ts b/packages/commandkit/src/components/display/separator.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/separator.ts
rename to packages/commandkit/src/components/display/separator.ts
diff --git a/packages/commandkit/src/components/v2/text-display.ts b/packages/commandkit/src/components/display/text-display.ts
similarity index 100%
rename from packages/commandkit/src/components/v2/text-display.ts
rename to packages/commandkit/src/components/display/text-display.ts
diff --git a/packages/commandkit/src/components/index.ts b/packages/commandkit/src/components/index.ts
index d0ed748b..68e5ab4a 100644
--- a/packages/commandkit/src/components/index.ts
+++ b/packages/commandkit/src/components/index.ts
@@ -1,27 +1,26 @@
// action row
-export * from './v1/action-row/ActionRow';
+export * from './interactive/action-row/ActionRow';
// buttons
-export * from './v1/button/ButtonKit';
-export * from './v1/button/Button';
+export * from './interactive/button/ButtonKit';
+export * from './interactive/button/Button';
// modals
-export * from './v1/modal/ModalKit';
-export * from './v1/modal/Modal';
+export * from './interactive/modal/ModalKit';
+export * from './interactive/modal/Modal';
// select menus
-export * from './v1/select-menu/StringSelectMenuKit';
-export * from './v1/select-menu/ChannelSelectMenuKit';
-export * from './v1/select-menu/MentionableSelectMenuKit';
-export * from './v1/select-menu/UserSelectMenuKit';
-export * from './v1/select-menu/RoleSelectMenuKit';
-export * from './v1/select-menu/SelectMenu';
-export * from './v1/select-menu/common';
+export * from './interactive/select-menu/StringSelectMenuKit';
+export * from './interactive/select-menu/ChannelSelectMenuKit';
+export * from './interactive/select-menu/MentionableSelectMenuKit';
+export * from './interactive/select-menu/UserSelectMenuKit';
+export * from './interactive/select-menu/RoleSelectMenuKit';
+export * from './interactive/select-menu/SelectMenu';
+export * from './interactive/select-menu/common';
// v2
-export * from './v2/index';
+export * from './display/index';
// common
export * from './common/element';
export * from './common/types';
-export * from './common/EventInterceptor';
diff --git a/packages/commandkit/src/components/v1/action-row/ActionRow.ts b/packages/commandkit/src/components/interactive/action-row/ActionRow.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/action-row/ActionRow.ts
rename to packages/commandkit/src/components/interactive/action-row/ActionRow.ts
diff --git a/packages/commandkit/src/components/v1/button/Button.ts b/packages/commandkit/src/components/interactive/button/Button.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/button/Button.ts
rename to packages/commandkit/src/components/interactive/button/Button.ts
diff --git a/packages/commandkit/src/components/v1/button/ButtonKit.ts b/packages/commandkit/src/components/interactive/button/ButtonKit.ts
similarity index 99%
rename from packages/commandkit/src/components/v1/button/ButtonKit.ts
rename to packages/commandkit/src/components/interactive/button/ButtonKit.ts
index 793d218e..af3a1eaa 100644
--- a/packages/commandkit/src/components/v1/button/ButtonKit.ts
+++ b/packages/commandkit/src/components/interactive/button/ButtonKit.ts
@@ -209,6 +209,7 @@ export class ButtonKit extends ButtonBuilder {
}
const interceptor = this.#getEventInterceptor();
+ if (!interceptor) return;
this.#unsub = interceptor.subscribe(
Events.InteractionCreate,
diff --git a/packages/commandkit/src/components/v1/modal/Modal.ts b/packages/commandkit/src/components/interactive/modal/Modal.ts
similarity index 82%
rename from packages/commandkit/src/components/v1/modal/Modal.ts
rename to packages/commandkit/src/components/interactive/modal/Modal.ts
index ec88ca9d..c1c6fb1b 100644
--- a/packages/commandkit/src/components/v1/modal/Modal.ts
+++ b/packages/commandkit/src/components/interactive/modal/Modal.ts
@@ -1,4 +1,4 @@
-import { ActionRowBuilder, TextInputBuilder, TextInputStyle } from 'discord.js';
+import { TextInputBuilder, TextInputStyle } from 'discord.js';
import { MaybeArray } from '../../common/types';
import { CommandKitElement } from '../../common/element';
import {
@@ -8,6 +8,7 @@ import {
OnModalKitSubmit,
} from './ModalKit';
import { EventInterceptorErrorHandler } from '../../common/EventInterceptor';
+import { warnDeprecated } from '../../../utils/warning';
/**
* The properties for the modal component.
@@ -15,7 +16,7 @@ import { EventInterceptorErrorHandler } from '../../common/EventInterceptor';
export interface ModalProps {
customId?: string;
title: string;
- children?: MaybeArray;
+ children?: MaybeArray;
onSubmit?: OnModalKitSubmit;
onEnd?: OnModalKitEnd;
onError?: EventInterceptorErrorHandler;
@@ -48,17 +49,11 @@ export function Modal(props: ModalProps): CommandKitElement<'modal'> {
}
if (props.children) {
- const childs = (
- Array.isArray(props.children) ? props.children : [props.children]
- )
- .map((c) => {
- if (c instanceof ActionRowBuilder) return c;
- if (c instanceof TextInputBuilder)
- return new ActionRowBuilder().addComponents(c);
- })
- .filter((c): c is ActionRowBuilder => c != null);
-
- modal.addComponents(childs);
+ const childs = Array.isArray(props.children)
+ ? props.children
+ : [props.children];
+
+ modal.components.push(...childs);
}
if (props.onEnd) {
@@ -74,7 +69,10 @@ export function Modal(props: ModalProps): CommandKitElement<'modal'> {
export interface TextInputProps {
customId: string;
- label: string;
+ /**
+ * @deprecated use the `` component instead.
+ */
+ label?: string;
placeholder?: string;
maxLength?: number;
minLength?: number;
@@ -86,7 +84,7 @@ export interface TextInputProps {
* The text input component.
* @param props The text input properties.
* @returns The commandkit element.
- * @example
+ * @example
*/
export function TextInput(
props: TextInputProps & { style: TextInputStyle },
@@ -98,6 +96,12 @@ export function TextInput(
}
if (props.label) {
+ warnDeprecated({
+ what: 'Property `label`',
+ where: '',
+ message: 'Use the component instead.',
+ });
+
input.setLabel(props.label);
}
diff --git a/packages/commandkit/src/components/v1/modal/ModalKit.ts b/packages/commandkit/src/components/interactive/modal/ModalKit.ts
similarity index 95%
rename from packages/commandkit/src/components/v1/modal/ModalKit.ts
rename to packages/commandkit/src/components/interactive/modal/ModalKit.ts
index a952d5ab..b4626a63 100644
--- a/packages/commandkit/src/components/v1/modal/ModalKit.ts
+++ b/packages/commandkit/src/components/interactive/modal/ModalKit.ts
@@ -75,9 +75,17 @@ export class ModalKit extends ModalBuilder {
#getEventInterceptor() {
const ctx = getContext();
- if (!ctx) return getCommandKit(true).eventInterceptor;
+ if (!ctx) {
+ const interceptor = getCommandKit(true).eventInterceptor;
- return exitContext(() => ctx.commandkit.eventInterceptor);
+ console.log({ interceptor, commandkit: getCommandKit(true) });
+
+ return interceptor;
+ }
+
+ const interceptor = exitContext(() => ctx.commandkit.eventInterceptor);
+ console.log({ interceptor2: interceptor });
+ return interceptor;
}
/**
diff --git a/packages/commandkit/src/components/v1/select-menu/ChannelSelectMenuKit.ts b/packages/commandkit/src/components/interactive/select-menu/ChannelSelectMenuKit.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/ChannelSelectMenuKit.ts
rename to packages/commandkit/src/components/interactive/select-menu/ChannelSelectMenuKit.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/MentionableSelectMenuKit.ts b/packages/commandkit/src/components/interactive/select-menu/MentionableSelectMenuKit.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/MentionableSelectMenuKit.ts
rename to packages/commandkit/src/components/interactive/select-menu/MentionableSelectMenuKit.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/RoleSelectMenuKit.ts b/packages/commandkit/src/components/interactive/select-menu/RoleSelectMenuKit.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/RoleSelectMenuKit.ts
rename to packages/commandkit/src/components/interactive/select-menu/RoleSelectMenuKit.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/SelectMenu.ts b/packages/commandkit/src/components/interactive/select-menu/SelectMenu.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/SelectMenu.ts
rename to packages/commandkit/src/components/interactive/select-menu/SelectMenu.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/StringSelectMenuKit.ts b/packages/commandkit/src/components/interactive/select-menu/StringSelectMenuKit.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/StringSelectMenuKit.ts
rename to packages/commandkit/src/components/interactive/select-menu/StringSelectMenuKit.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/UserSelectMenuKit.ts b/packages/commandkit/src/components/interactive/select-menu/UserSelectMenuKit.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/UserSelectMenuKit.ts
rename to packages/commandkit/src/components/interactive/select-menu/UserSelectMenuKit.ts
diff --git a/packages/commandkit/src/components/v1/select-menu/common.ts b/packages/commandkit/src/components/interactive/select-menu/common.ts
similarity index 100%
rename from packages/commandkit/src/components/v1/select-menu/common.ts
rename to packages/commandkit/src/components/interactive/select-menu/common.ts
diff --git a/packages/commandkit/src/context/environment.ts b/packages/commandkit/src/context/environment.ts
index 9447a1c6..29e87be0 100644
--- a/packages/commandkit/src/context/environment.ts
+++ b/packages/commandkit/src/context/environment.ts
@@ -1,6 +1,6 @@
import { randomUUID } from 'node:crypto';
-import { CommandKit } from '../commandkit';
-import { GenericFunction, getContext, useEnvironment } from './async-context';
+import type { CommandKit } from '../commandkit';
+import { GenericFunction, getContext } from './async-context';
import type { Context } from '../app';
import { Collection } from 'discord.js';
diff --git a/packages/commandkit/src/flags/feature-flags.ts b/packages/commandkit/src/flags/feature-flags.ts
index a94f1f13..5aae2df6 100644
--- a/packages/commandkit/src/flags/feature-flags.ts
+++ b/packages/commandkit/src/flags/feature-flags.ts
@@ -1,7 +1,7 @@
import { getCommandKit, getContext } from '../context/async-context';
import { eventWorkerContext } from '../app/events/EventWorkerContext';
import { ParsedEvent } from '../app/router';
-import { CommandKit } from '../commandkit';
+import type { CommandKit } from '../commandkit';
import {
AutocompleteInteraction,
ChatInputCommandInteraction,
diff --git a/packages/commandkit/src/index.ts b/packages/commandkit/src/index.ts
index 2a672f8d..a097dd97 100644
--- a/packages/commandkit/src/index.ts
+++ b/packages/commandkit/src/index.ts
@@ -4,6 +4,7 @@ export default CommandKit;
export * from './commandkit';
export * from './components';
+export * from './components/common/EventInterceptor';
export * from './config/config';
export * from './context/async-context';
export {
diff --git a/packages/commandkit/src/plugins/plugin-runtime/CommandKitPluginRuntime.ts b/packages/commandkit/src/plugins/plugin-runtime/CommandKitPluginRuntime.ts
index b607110b..4dd0807d 100644
--- a/packages/commandkit/src/plugins/plugin-runtime/CommandKitPluginRuntime.ts
+++ b/packages/commandkit/src/plugins/plugin-runtime/CommandKitPluginRuntime.ts
@@ -1,5 +1,5 @@
import { Collection, Constructable } from 'discord.js';
-import { CommandKit } from '../../commandkit';
+import type { CommandKit } from '../../commandkit';
import { RuntimePlugin } from '../RuntimePlugin';
import {
CommandKitErrorCodes,
diff --git a/packages/commandkit/src/types.ts b/packages/commandkit/src/types.ts
index 64564aab..fd7a1ef7 100644
--- a/packages/commandkit/src/types.ts
+++ b/packages/commandkit/src/types.ts
@@ -3,7 +3,6 @@ import type {
Client,
ClientEvents,
Interaction,
- PermissionResolvable,
PermissionsString,
RESTPostAPIApplicationCommandsJSONBody,
} from 'discord.js';
diff --git a/packages/commandkit/src/utils/warn-unstable.ts b/packages/commandkit/src/utils/warning.ts
similarity index 59%
rename from packages/commandkit/src/utils/warn-unstable.ts
rename to packages/commandkit/src/utils/warning.ts
index 2f6e6705..6e4abce2 100644
--- a/packages/commandkit/src/utils/warn-unstable.ts
+++ b/packages/commandkit/src/utils/warning.ts
@@ -1,4 +1,5 @@
const WARNED_KEYS = new Set();
+const DEPRECATED_KEYS = new Set();
/**
* Emit a warning message to the console as a CommandKitWarning.
@@ -24,3 +25,29 @@ export function warnUnstable(name: string) {
'CommandKitUnstableWarning',
);
}
+export function warnDeprecated({
+ what,
+ message,
+ where,
+}: {
+ what: string;
+ where?: string;
+ message?: string;
+}) {
+ const name = `${what}:${where}`;
+
+ if (DEPRECATED_KEYS.has(name)) return;
+
+ DEPRECATED_KEYS.add(name);
+
+ emitWarning(
+ [
+ `${what} is deprecated`,
+ where ? `in ${where}` : '',
+ message || 'and may be removed in future versions.',
+ ]
+ .filter(Boolean)
+ .join(' '),
+ 'CommandKitDeprecatedWarning',
+ );
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 88672525..daa085f4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,8 +11,8 @@ catalogs:
version: 5.9.3
discordjs:
discord.js:
- specifier: ^14.22.1
- version: 14.22.1
+ specifier: ^14.23.2
+ version: 14.23.2
overrides:
next@>=15.0.0 <15.1.2: '>=15.1.2'
@@ -105,7 +105,7 @@ importers:
version: link:../../packages/commandkit
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
dotenv:
specifier: ^16.4.7
version: 16.6.1
@@ -119,6 +119,9 @@ importers:
'@types/ms':
specifier: ^2.1.0
version: 2.1.0
+ cross-env:
+ specifier: ^10.1.0
+ version: 10.1.0
tsx:
specifier: ^4.7.0
version: 4.20.6
@@ -207,7 +210,7 @@ importers:
version: link:../commandkit
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
tsconfig:
specifier: workspace:*
version: link:../tsconfig
@@ -305,7 +308,7 @@ importers:
version: 17.0.33
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
tsconfig:
specifier: workspace:*
version: link:../tsconfig
@@ -379,7 +382,7 @@ importers:
version: link:../commandkit
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
tsconfig:
specifier: workspace:*
version: link:../tsconfig
@@ -573,7 +576,7 @@ importers:
version: link:../commandkit
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
tsconfig:
specifier: workspace:*
version: link:../tsconfig
@@ -588,7 +591,7 @@ importers:
version: link:../commandkit
discord.js:
specifier: catalog:discordjs
- version: 14.22.1
+ version: 14.23.2
tsconfig:
specifier: workspace:*
version: link:../tsconfig
@@ -1347,10 +1350,6 @@ packages:
resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==}
engines: {node: '>=6.9.0'}
- '@babel/runtime@7.28.3':
- resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==}
- engines: {node: '>=6.9.0'}
-
'@babel/runtime@7.28.4':
resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
engines: {node: '>=6.9.0'}
@@ -1669,8 +1668,8 @@ packages:
resolution: {integrity: sha512-cZnkTnmsIlW4G4j5i+h6N/j96uWypVE6QYNckodlp/gTd4EHUZAMRrSsLGuqPra7A1ZXdGlmgf8R7UMttPCRtA==}
engines: {node: '>=20'}
- '@discordjs/builders@1.11.3':
- resolution: {integrity: sha512-p3kf5eV49CJiRTfhtutUCeivSyQ/l2JlKodW1ZquRwwvlOWmG9+6jFShX6x8rUiYhnP6wKI96rgN/SXMy5e5aw==}
+ '@discordjs/builders@1.12.2':
+ resolution: {integrity: sha512-AugKmrgRJOHXEyMkABH/hXpAmIBKbYokCEl9VAM4Kh6FvkdobQ+Zhv7AR6K+y5hS7+VQ7gKXPYCe1JQmV07H1g==}
engines: {node: '>=16.11.0'}
'@discordjs/collection@1.5.3':
@@ -1939,6 +1938,9 @@ packages:
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+ '@epic-web/invariant@1.0.0':
+ resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
+
'@esbuild/aix-ppc64@0.25.10':
resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==}
engines: {node: '>=18'}
@@ -4877,6 +4879,11 @@ packages:
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
engines: {node: '>=12.0.0'}
+ cross-env@10.1.0:
+ resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==}
+ engines: {node: '>=20'}
+ hasBin: true
+
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -5328,11 +5335,11 @@ packages:
directive-to-hof@0.0.2:
resolution: {integrity: sha512-LXSafC5HhiYxMxAUMgq8TvbgL9TjGwkN5yqndVluDa5DbuuCouSuwGqpwHJadTxm+KZmwBmxJKsGVdOk1NT2uw==}
- discord-api-types@0.38.21:
- resolution: {integrity: sha512-E6KtXUNjZVIYP1GMjmeRdAC1xRql9xtSahRwJYpP74/hJ6Q2i2oTp6ZbFG/FUN0WqtdW2igHDsJyF2u9hV8pHQ==}
+ discord-api-types@0.38.29:
+ resolution: {integrity: sha512-+5BfrjLJN1hrrcK0MxDQli6NSv5lQH7Y3/qaOfk9+k7itex8RkA/UcevVMMLe8B4IKIawr4ITBTb2fBB2vDORg==}
- discord.js@14.22.1:
- resolution: {integrity: sha512-3k+Kisd/v570Jr68A1kNs7qVhNehDwDJAPe4DZ2Syt+/zobf9zEcuYFvsfIaAOgCa0BiHMfOOKQY4eYINl0z7w==}
+ discord.js@14.23.2:
+ resolution: {integrity: sha512-tU2NFr823X3TXEc8KyR/4m296KLxPai4nirN3q9kHCpY4TKj96n9lHZnyLzRNMui8EbL07jg9hgH2PWWfKMGIg==}
engines: {node: '>=18'}
dlv@1.1.3:
@@ -11111,8 +11118,6 @@ snapshots:
dependencies:
core-js-pure: 3.45.1
- '@babel/runtime@7.28.3': {}
-
'@babel/runtime@7.28.4': {}
'@babel/template@7.27.2':
@@ -11461,12 +11466,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@discordjs/builders@1.11.3':
+ '@discordjs/builders@1.12.2':
dependencies:
'@discordjs/formatters': 0.6.1
'@discordjs/util': 1.1.1
'@sapphire/shapeshift': 4.0.0
- discord-api-types: 0.38.21
+ discord-api-types: 0.38.29
fast-deep-equal: 3.1.3
ts-mixer: 6.0.4
tslib: 2.8.1
@@ -11477,7 +11482,7 @@ snapshots:
'@discordjs/formatters@0.6.1':
dependencies:
- discord-api-types: 0.38.21
+ discord-api-types: 0.38.29
'@discordjs/rest@2.6.0':
dependencies:
@@ -11486,7 +11491,7 @@ snapshots:
'@sapphire/async-queue': 1.5.5
'@sapphire/snowflake': 3.5.3
'@vladfrangu/async_event_emitter': 2.4.6
- discord-api-types: 0.38.21
+ discord-api-types: 0.38.29
magic-bytes.js: 1.12.1
tslib: 2.8.1
undici: 6.21.3
@@ -11501,7 +11506,7 @@ snapshots:
'@sapphire/async-queue': 1.5.5
'@types/ws': 8.18.1
'@vladfrangu/async_event_emitter': 2.4.6
- discord-api-types: 0.38.21
+ discord-api-types: 0.38.29
tslib: 2.8.1
ws: 8.18.3
transitivePeerDependencies:
@@ -11567,7 +11572,7 @@ snapshots:
'@babel/preset-env': 7.27.2(@babel/core@7.28.0)
'@babel/preset-react': 7.27.1(@babel/core@7.28.0)
'@babel/preset-typescript': 7.27.1(@babel/core@7.28.0)
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
'@babel/runtime-corejs3': 7.28.0
'@babel/traverse': 7.28.0
'@docusaurus/logger': 3.8.1
@@ -12389,6 +12394,8 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@epic-web/invariant@1.0.0': {}
+
'@esbuild/aix-ppc64@0.25.10':
optional: true
@@ -14340,7 +14347,7 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 24.7.0
+ '@types/node': 22.18.8
'@types/ws@8.5.13':
dependencies:
@@ -15347,6 +15354,11 @@ snapshots:
dependencies:
luxon: 3.7.1
+ cross-env@10.1.0:
+ dependencies:
+ '@epic-web/invariant': 1.0.0
+ cross-spawn: 7.0.6
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -15820,18 +15832,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- discord-api-types@0.38.21: {}
+ discord-api-types@0.38.29: {}
- discord.js@14.22.1:
+ discord.js@14.23.2:
dependencies:
- '@discordjs/builders': 1.11.3
+ '@discordjs/builders': 1.12.2
'@discordjs/collection': 1.5.3
'@discordjs/formatters': 0.6.1
'@discordjs/rest': 2.6.0
'@discordjs/util': 1.1.1
'@discordjs/ws': 1.2.3
'@sapphire/snowflake': 3.5.3
- discord-api-types: 0.38.21
+ discord-api-types: 0.38.29
fast-deep-equal: 3.1.3
lodash.snakecase: 4.1.1
magic-bytes.js: 1.12.1
@@ -19113,7 +19125,7 @@ snapshots:
react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.0))(webpack@5.99.9(@swc/core@1.13.0)):
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.0)'
webpack: 5.99.9(@swc/core@1.13.0)
@@ -19149,13 +19161,13 @@ snapshots:
react-router-config@5.1.1(react-router@5.3.4(react@19.2.0))(react@19.2.0):
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
react: 19.2.0
react-router: 5.3.4(react@19.2.0)
react-router-dom@5.3.4(react@19.2.0):
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
history: 4.10.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -19166,7 +19178,7 @@ snapshots:
react-router@5.3.4(react@19.2.0):
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
history: 4.10.1
hoist-non-react-statics: 3.3.2
loose-envify: 1.4.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 9727c8d5..73b49782 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -3,6 +3,6 @@ packages:
- apps/*
catalogs:
discordjs:
- discord.js: ^14.22.1
+ discord.js: ^14.23.2
build:
typescript: ^5.8.3