{"id":299679,"date":"2026-05-10T10:10:02","date_gmt":"2026-05-10T10:10:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/k-typewriter\/"},"modified":"2026-05-10T10:09:25","modified_gmt":"2026-05-10T10:09:25","slug":"sbs-typing-effect-block","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sbs-typing-effect-block\/","author":18091940,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.6","requires_php":"8.0","requires_plugins":null,"header_name":"Stroke by stroke typing effect Block","header_author":"imjlk","header_description":"Add a configurable typewriter text block for hero headlines, notices, and multilingual messaging.","assets_banners_color":"9fa4ab","last_updated":"2026-05-10 10:09:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/imjlk\/k-typewriter","header_author_uri":"https:\/\/profiles.wordpress.org\/imjlk\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":24,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"imjlk","date":"2026-05-10 10:09:25"}},"upgrade_notice":{"1.0.0":"<p>First public release of Stroke by stroke typing effect Block.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3527707,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3527707,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3527707,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3527707,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3527707,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"author\":\"imjlk\",\"title\":\"Stroke by stroke typing effect Block Preview\",\"description\":\"Front-end demo for Stroke by stroke typing effect Block with a published homepage and graceful fallback content.\"},\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.0\",\"wp\":\"6.9\"},\"steps\":[{\"step\":\"activatePlugin\",\"pluginName\":\"Stroke by stroke typing effect Block\",\"pluginPath\":\"sbs-typing-effect-block\\\/sbs-typing-effect-block.php\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; require WP_PLUGIN_DIR . '\\\/sbs-typing-effect-block\\\/playground\\\/setup-demo.php'; ?>\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"sbs-typing-effect-block\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":{"imjlk\/sbs-typing-effect-block":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"imjlk\/sbs-typing-effect-block","version":"1.0.0","title":"Stroke by stroke typing effect Block","category":"text","icon":"editor-textcolor","description":"Animate multilingual headlines, notices, and hero copy with a polished typewriter effect.","keywords":["typewriter","headline","hero"],"attributes":{"items":{"type":"array","default":[]},"typeDelay":{"type":"number","default":80},"transitionMode":{"type":"string","default":"backspace"},"deleteDelay":{"type":"number","default":40},"pauseDelay":{"type":"number","default":1200},"startDelay":{"type":"number","default":0},"startDelayMode":{"type":"string","default":"first-start"},"loop":{"type":"boolean","default":true},"reserveLines":{"type":"number","default":1},"verticalAlign":{"type":"string","default":"top"},"inlineLayout":{"type":"boolean","default":false},"inlineWidthMode":{"type":"string","default":"auto"},"inlineWidthCh":{"type":"number","default":24},"textDirection":{"type":"string","default":"auto"},"startFromEmpty":{"type":"boolean","default":false},"showCursor":{"type":"boolean","default":true},"cursorAnimationMode":{"type":"string","default":"blink"},"cursorWidth":{"type":"number","default":0.08},"cursorHeight":{"type":"number","default":0.86},"cursorOffsetX":{"type":"number","default":0},"cursorOffsetY":{"type":"number","default":0},"cursorBlinkSpeed":{"type":"number","default":1000},"cursorTransitionSpeed":{"type":"number","default":900},"hideCursorWhenComplete":{"type":"boolean","default":false},"keepCursorAnimationOnComplete":{"type":"boolean","default":false},"startOnView":{"type":"boolean","default":true},"replayOnReentry":{"type":"boolean","default":false},"pauseOnHover":{"type":"boolean","default":false},"fallbackMode":{"type":"string","default":"auto"},"fallbackText":{"type":"string","default":""},"summaryMode":{"type":"string","default":"auto"},"summaryText":{"type":"string","default":""},"tagName":{"type":"string","default":"p"}},"example":{"attributes":{"items":["\ud55c \uae00\uc790\uc529, \ub9ac\ub4ec \uc788\uac8c.","Animate headlines in any language."],"reserveLines":2,"verticalAlign":"middle","inlineLayout":true,"inlineWidthMode":"measure","textDirection":"auto","startDelay":250,"startDelayMode":"first-start","tagName":"h2"}},"supports":{"html":false,"interactivity":true,"color":{"text":true,"background":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true,"textAlign":true}},"textdomain":"sbs-typing-effect-block","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScriptModule":"file:.\/view.js"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3527707,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3527707,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3527707,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3527707,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Editing inline layout, width reservation, and message timing in the block sidebar.","2":"A starter pattern gallery showing multiple ready-to-use front-end layouts.","3":"Editor and front-end parity for the same inline typewriter pattern.","4":"The same starter pattern gallery viewed inside the block editor canvas."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1220,20134,27923,99,30049],"plugin_category":[48],"plugin_contributors":[262460],"plugin_business_model":[],"class_list":["post-299679","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-headline","plugin_tags-hero","plugin_tags-multilingual","plugin_tags-typewriter","plugin_category-language-tools","plugin_contributors-imjlk","plugin_committers-imjlk"],"banners":{"banner":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/banner-772x250.png?rev=3527707","banner_2x":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/banner-1544x500.png?rev=3527707","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/icon-128x128.png?rev=3527707","icon_2x":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/icon-256x256.png?rev=3527707","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/screenshot-1.png?rev=3527707","caption":"Editing inline layout, width reservation, and message timing in the block sidebar."},{"src":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/screenshot-2.png?rev=3527707","caption":"A starter pattern gallery showing multiple ready-to-use front-end layouts."},{"src":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/screenshot-3.png?rev=3527707","caption":"Editor and front-end parity for the same inline typewriter pattern."},{"src":"https:\/\/ps.w.org\/sbs-typing-effect-block\/assets\/screenshot-4.png?rev=3527707","caption":"The same starter pattern gallery viewed inside the block editor canvas."}],"raw_content":"<!--section=description-->\n<p>Stroke by stroke typing effect Block is a dynamic block for WordPress sites that need expressive text motion without sacrificing accessibility or graceful fallbacks.<\/p>\n\n<p>Its typing playback is built on top of UniTyper by Beaver Coding:\nhttps:\/\/github.com\/beavercoding2022\/uni-typer<\/p>\n\n<p>Development repository:\nhttps:\/\/github.com\/imjlk\/k-typewriter<\/p>\n\n<p>Use it for:<\/p>\n\n<ul>\n<li>Homepage hero copy<\/li>\n<li>Product callouts<\/li>\n<li>Announcement banners<\/li>\n<li>Event pages<\/li>\n<li>Multilingual headline rotations<\/li>\n<li>Inline keyword rotators inside rows and grouped layouts<\/li>\n<\/ul>\n\n<p>Key features:<\/p>\n\n<ul>\n<li>Multiple messages with one message per line<\/li>\n<li>Configurable typing, deleting, and pause timing<\/li>\n<li>Optional start delay with first-start, every-cycle, and every-reentry timing modes<\/li>\n<li>Optional looping, viewport start, and replay-on-re-entry behavior<\/li>\n<li>Cursor controls for visibility, animation mode, thickness, height, and offset<\/li>\n<li>First-message static fallback by default, with an optional custom fallback override<\/li>\n<li>Auto-generated non-visual summary with optional override text<\/li>\n<li>Inline layout support with width reservation in <code>ch<\/code> or measured longest-message mode<\/li>\n<li>Text direction controls for <code>auto<\/code>, <code>ltr<\/code>, and <code>rtl<\/code><\/li>\n<li>Start animation only when the block enters the viewport<\/li>\n<li>Dynamic rendering for SEO-friendly first paint and no-JavaScript fallback<\/li>\n<li>Reduced-motion support for visitors who prefer less animation<\/li>\n<li>Semantic tag selection for <code>p<\/code>, <code>div<\/code>, <code>span<\/code>, <code>h1<\/code>-<code>h6<\/code>, <code>strong<\/code>, <code>em<\/code>, <code>small<\/code>, and <code>mark<\/code><\/li>\n<li>Support for theme typography, spacing, and color tools<\/li>\n<li>Bundled patterns for hero headlines, inline keyword rotators, announcement strips, feature spotlights, multilingual sections, split launch heroes, editorial leads, 404 prompts, and terminal-style loading sequences<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/sbs-typing-effect-block<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the <code>Plugins<\/code> screen in WordPress.<\/li>\n<li>Open the block editor and insert the <code>Stroke by stroke typing effect Block<\/code>.<\/li>\n<li>Add one message per line in the block settings sidebar.<\/li>\n<li>Adjust timing, cursor, inline layout, width reservation, loop, and viewport options to match your design.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20without%20javascript%3F\"><h3>Does it work without JavaScript?<\/h3><\/dt>\n<dd><p>Yes. By default the first message is rendered on the server so visitors still see meaningful content even if JavaScript does not run. You can also override that visible fallback with a custom fallback message.<\/p><\/dd>\n<dt id=\"is%20reduced%20motion%20supported%3F\"><h3>Is reduced motion supported?<\/h3><\/dt>\n<dd><p>Yes. Visitors with <code>prefers-reduced-motion<\/code> enabled will see the visible fallback only, without animation.<\/p><\/dd>\n<dt id=\"can%20i%20control%20the%20non-visual%20summary%20for%20assistive%20technology%3F\"><h3>Can I control the non-visual summary for assistive technology?<\/h3><\/dt>\n<dd><p>Yes. Leave the summary on <code>Auto-generated<\/code> to build a locale-aware summary from every message, or switch the source to <code>Custom override<\/code> and provide your own summary for assistive technology.<\/p><\/dd>\n<dt id=\"can%20i%20use%20korean%20and%20english%20together%3F\"><h3>Can I use Korean and English together?<\/h3><\/dt>\n<dd><p>Yes. The block is designed for multilingual messaging and works well with Korean, English, Arabic, and mixed-language headlines. Use <code>Text direction<\/code> when you need explicit <code>ltr<\/code> or <code>rtl<\/code> behavior.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20html%20tag%3F\"><h3>Can I change the HTML tag?<\/h3><\/dt>\n<dd><p>Yes. Choose between <code>p<\/code>, <code>div<\/code>, <code>span<\/code>, <code>h1<\/code>-<code>h6<\/code>, <code>strong<\/code>, <code>em<\/code>, <code>small<\/code>, and <code>mark<\/code> from the block settings. Use <code>h1<\/code> only when the block is the primary page heading.<\/p><\/dd>\n<dt id=\"can%20i%20keep%20inline%20layouts%20stable%20while%20the%20text%20changes%3F\"><h3>Can I keep inline layouts stable while the text changes?<\/h3><\/dt>\n<dd><p>Yes. Turn on <code>Inline layout<\/code> and use <code>Inline width reserve<\/code> with either <code>Characters (ch)<\/code> or <code>Measure longest message<\/code> to keep inline keyword rotators and row layouts steadier.<\/p><\/dd>\n<dt id=\"does%20it%20support%20a%20wordpress%20playground%20preview%3F\"><h3>Does it support a WordPress Playground preview?<\/h3><\/dt>\n<dd><p>Yes. The plugin includes a WordPress.org Playground blueprint, so maintainers can enable a one-click preview from the plugin's Advanced view after deployment.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Added a dynamic, Interactivity API-powered typewriter block.<\/li>\n<li>Added viewport-aware animation start, replay-on-re-entry, reduced-motion support, and graceful no-JS fallback.<\/li>\n<li>Added inline layout, width reservation, text direction controls, and detailed cursor controls.<\/li>\n<li>Added bundled starter and advanced patterns, WordPress Playground demos, packaging, local <code>wp-env<\/code> tooling, smoke tests, and release workflows.<\/li>\n<\/ul>","raw_excerpt":"Animate headlines, notices, and hero copy with a polished typewriter block that works beautifully with multilingual text.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/299679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=299679"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/imjlk"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=299679"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=299679"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=299679"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=299679"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=299679"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=299679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}