Feedbackduskmoonimplemented7 demos

message

message shows transient global feedback after user actions.

Import@duskmoon-dev/components/message
8API sections
46documented props
5behavior scenarios
Key API
topdurationmaxCountprefixClsgetContainerplacement

Usage

When to use

  • Use it immediately after user actions or system checks that need visible confirmation.
  • Choose the least interruptive feedback surface that still makes the state clear.

Implementation notes

StylesheetImport @duskmoon-dev/components/styles.css once in the app or docs shell.
StateStart with default props for static examples, then switch to controlled props when state must be shared.
ThemeThe preview inherits the active DuskMoon data-theme value from the docs layout.

Features

User feedback

Covers transient, inline, or blocking feedback patterns for user actions and system status.

Action recovery

Shows how the component keeps next actions visible after success, warning, or failure states.

Primary API surface

message is most often configured through `top`, `duration`, `maxCount`, `prefixCls`.

Covered behavior

Opens and renders typed messages

Feature Demos

Feature demos are authored for the component page, then supplemented with behavior scenarios from the component test coverage.

Preview

Basic usage

authored

Import the component stylesheet and message from its package subpath, then render it with the core props.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function Example() {
  return (<message>DuskMoon Message</message>);
}
Preview

Opens and renders typed messages

test-backed

message scenario from the component test coverage: opens and renders typed messages.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function messageOpensAndRendersTypedDemo() {
  return (<message>DuskMoon Message</message>);
}
Preview

Updates same keyed message and closes by key

test-backed

message scenario from the component test coverage: updates same keyed message and closes by key.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function messageUpdatesSameKeyedMessageDemo() {
  return (<message>DuskMoon Message</message>);
}
Preview

Supports max count and placement config

test-backed

message scenario from the component test coverage: supports max count and placement config.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function messageSupportsMaxCountAndDemo() {
  return (<message>DuskMoon Message</message>);
}
Preview

Supports close button and onClose

test-backed

message scenario from the component test coverage: supports close button and onclose.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function messageSupportsCloseButtonAndDemo() {
  return (<message>DuskMoon Message</message>);
}
Preview

Supports useMessage holder tuple

test-backed

message scenario from the component test coverage: supports usemessage holder tuple.

Source
import "@duskmoon-dev/components/styles.css";
import { message } from "@duskmoon-dev/components/message";

export function messageSupportsUseMessageHolderTupleDemo() {
  return (<message>DuskMoon Message</message>);
}
Preview

Theme aware

authored

Docs previews inherit the DuskMoon data-theme value. Use the header switch to compare light and dark rendering.

Source
<div data-theme="sunshine">
  <message>DuskMoon Message</message>
</div>

<div data-theme="moonlight">
  <message>DuskMoon Message</message>
</div>

API

The API reference below lists every parsed exported type or interface for message. Start with `top`, `duration`, `maxCount`, `prefixCls` for common usage.

Types: packages/components/src/components/message/Message.types.tsScenarios: packages/components/src/components/message/Message.test.tsx
MessageConfiginterface
PropTypeRequiredDescription
topnumberNotop configures message.
durationnumberNoduration configures message.
maxCountnumberNomaxCount configures message.
prefixClsstringNoprefixCls configures message.
getContainer() => HTMLElementNogetContainer configures message.
placementMessagePlacementNoplacement configures message.
MessageArgsPropsinterface
PropTypeRequiredDescription
keystring | numberNokey configures message.
typeMessageTypeNotype configures message.
contentReactNodeNocontent configures message.
durationnumberNoduration configures message.
classNamestringNoclassName configures message.
iconReactNodeNoicon configures message.
onClose() => voidNoonClose configures message.
MessageInstanceinterface
PropTypeRequiredDescription
keystringYeskey configures message.
typeMessageTypeYestype configures message.
contentReactNodeNocontent configures message.
durationnumberYesduration configures message.
classNamestringNoclassName configures message.
iconReactNodeNoicon configures message.
onClose() => voidNoonClose configures message.
MessageHandleinterface extends Promise<void>
PropTypeRequiredDescription
keystringYeskey configures message.
close() => voidYesclose configures message.
MessageApiinterface
PropTypeRequiredDescription
open(config: MessageArgsProps) => MessageHandleYesopen configures message.
success(Yessuccess configures message.
contentMessageContent,Yescontent configures message.
durationnumber,Noduration configures message.
onClose() => void,NoonClose configures message.
error(Yeserror configures message.
contentMessageContent,Yescontent configures message.
durationnumber,Noduration configures message.
onClose() => void,NoonClose configures message.
info(Yesinfo configures message.
contentMessageContent,Yescontent configures message.
durationnumber,Noduration configures message.
onClose() => void,NoonClose configures message.
warning(Yeswarning configures message.
contentMessageContent,Yescontent configures message.
durationnumber,Noduration configures message.
onClose() => void,NoonClose configures message.
loading(Yesloading configures message.
contentMessageContent,Yescontent configures message.
durationnumber,Noduration configures message.
onClose() => void,NoonClose configures message.
destroy(key?: string | number) => voidYesdestroy configures message.
config(config: MessageConfig) => voidYesconfig configures message.
useMessage() => [MessageApi, ReactNode]YesuseMessage configures message.
MessageTypetype
"success" | "error" | "info" | "warning" | "loading"
MessagePlacementtype
"top" | "bottom"
MessageContenttype
ReactNode | MessageArgsProps