pub(crate) const CHILD_INPUT_TEXT_ID: &str = "child-input-text";
pub(crate) const TEMPERATURE_CELSIUS_ID: &str = "temperature-celsius";
pub(crate) const TEMPERATURE_FAHRENHEIT_ID: &str = "temperature-fahrenheit";
pub(crate) const COLOR_MIXER_RED_ID: &str = "color-mixer-red";
pub(crate) const COLOR_MIXER_GREEN_ID: &str = "color-mixer-green";
pub(crate) const COLOR_MIXER_BLUE_ID: &str = "color-mixer-blue";
pub(crate) const BINDING_PARENT_MESSAGE_ID: &str = "binding-parent-message";
pub(crate) const CHILD_INPUT_TEXT_NAME: &str = "shared_text";
pub(crate) const TEMPERATURE_CELSIUS_NAME: &str = "celsius";
pub(crate) const TEMPERATURE_FAHRENHEIT_NAME: &str = "fahrenheit";
pub(crate) const COLOR_MIXER_RED_NAME: &str = "red";
pub(crate) const COLOR_MIXER_GREEN_NAME: &str = "green";
pub(crate) const COLOR_MIXER_BLUE_NAME: &str = "blue";
pub(crate) const BINDING_PARENT_MESSAGE_NAME: &str = "parent_message";
pub(crate) const BINDING_TEXT_TYPE: &str = "text";
pub(crate) const BINDING_NUMBER_TYPE: &str = "number";
pub(crate) const BINDING_RANGE_TYPE: &str = "range";
pub(crate) const BINDING_AUTOCOMPLETE_OFF: &str = "off";
pub(crate) const COLOR_MIXER_MIN: &str = "0";
pub(crate) const COLOR_MIXER_MAX: &str = "255";
pub(crate) const BINDING_COLOR_MIXER_HINT: &str =
"Adjust the RGB sliders — the hex color and preview update reactively via watch!";
pub(crate) const BINDING_COLOR_MIXER_TITLE: &str = "Color Mixer";
pub(crate) const BINDING_TEMPERATURE_CONVERTER_HINT: &str =
"Edit either temperature field — the other updates reactively via watch!";
pub(crate) const BINDING_TEMPERATURE_CONVERTER_TITLE: &str = "Temperature Converter";
pub(crate) const BINDING_CROSS_CARD_DESC: &str = "Signals are linked across components using the watch! macro. Changing one Signal automatically updates the other through a reactive side effect.";
pub(crate) const BINDING_CROSS_CARD_TITLE: &str = "Cross-Component Reactive Binding (watch!)";
pub(crate) const BINDING_COUNT_PREFIX: &str = "Count: ";
pub(crate) const BINDING_SHARED_TEXT_PREFIX: &str = "Text: ";
pub(crate) const BINDING_PARENT_COMPONENT_TITLE: &str = "Parent Component";
pub(crate) const BINDING_TWO_WAY_CARD_DESC: &str = "Both parent and child components share the same Signal instances. Any mutation in either component is immediately reflected in the other — no callbacks or event listeners needed.";
pub(crate) const BINDING_TWO_WAY_CARD_TITLE: &str = "Two-Way Binding (Shared Signal)";
pub(crate) const BINDING_MAX_PREFIX: &str = "Max: ";
pub(crate) const BINDING_TOGGLE_BUTTON_LABEL: &str = "Toggle";
pub(crate) const BINDING_TYPED_PROPS_TITLE: &str = "Typed Props Controls";
pub(crate) const BINDING_PARENT_MESSAGE_ECHO_PREFIX: &str = "Message: ";
pub(crate) const BINDING_PARENT_MESSAGE_INPUT_LABEL: &str = "Parent message: ";
pub(crate) const BINDING_PROPS_CARD_DESC: &str = "The parent component passes a string message to the child via props. The child communicates back to the parent through callback functions triggered on user interaction.";
pub(crate) const BINDING_PROPS_CARDBACK_CARD_TITLE: &str = "Props & Callbacks";
pub(crate) const BINDING_PAGE_SUBTITLE: &str = "Props passing with callbacks, two-way binding via shared Signals, and cross-component reactive binding using watch!.";
pub(crate) const BINDING_PAGE_TITLE: &str = "Component Binding";
pub(crate) const BINDING_FAHRENHEIT_LABEL: &str = "Fahrenheit";
pub(crate) const BINDING_CELSIUS_LABEL: &str = "Celsius";
pub(crate) const BINDING_SHARED_COUNT_PREFIX: &str = "Shared count: ";
pub(crate) const BINDING_SHARED_TEXT_INPUT_LABEL: &str = "Edit shared text:";
pub(crate) const BINDING_CHILD_COMPONENT_TITLE: &str = "Child Component";
pub(crate) const BINDING_DISABLED_WARNING: &str = "Counter is disabled!";
pub(crate) const BINDING_RESET_BUTTON_LABEL: &str = "Reset";
pub(crate) const BINDING_PROPS_MAX_COUNT_INFIX: &str = ", max_count=";
pub(crate) const BINDING_PROPS_DISABLED_PREFIX: &str = "Props received: disabled=";
pub(crate) const BINDING_LIMITED_COUNTER_TITLE: &str = "Limited Counter";