<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Components on OINK</title>
    <link>https://oink.pgsty.com/docs/components/</link>
    <description>Recent content in Components on OINK</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Fri, 14 Aug 2026 21:56:46 +0800</lastBuildDate>
    
    
      <atom:link href="https://oink.pgsty.com/docs/components/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Code blocks and Code Groups</title>
        <link>https://oink.pgsty.com/docs/components/code-blocks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/code-blocks/</guid>
        <description>&lt;p&gt;OINK enhances Hugo&amp;rsquo;s ordinary fenced code blocks without replacing Chroma or&#xA;requiring a browser highlighter. The server emits the complete code and shell;&#xA;small page-scoped scripts only enable Copy, visual collapse, and tab state.&lt;/p&gt;&#xA;&lt;h2 id=&#34;enhanced-fences&#34;&gt;Enhanced fences&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#enhanced-fences&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Add metadata in Hugo&amp;rsquo;s fence attribute list. A fence without attributes still&#xA;receives the same responsive shell and its normal Copy default. &lt;code&gt;filename&lt;/code&gt; adds&#xA;a visible header; &lt;code&gt;title&lt;/code&gt; is its compatible alias, and setting both is a build&#xA;error. With neither, OINK uses a compact overlay instead of an empty title row.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Badge</title>
        <link>https://oink.pgsty.com/docs/components/badge/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/badge/</guid>
        <description>&lt;p&gt;Use Badge to place a short status beside a feature, option, or release name. The&#xA;author chooses a semantic tone; Oink maps it to theme tokens that retain&#xA;contrast in light and dark modes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Badge works well for lifecycle states such as Beta, New, Experimental, and&#xA;Deprecated. Keep the text explicit: color supplements the label and never&#xA;replaces it. Use ordinary prose or an alert when the status needs explanation,&#xA;instructions, or a deadline.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kbd</title>
        <link>https://oink.pgsty.com/docs/components/kbd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/kbd/</guid>
        <description>&lt;p&gt;Use Kbd to distinguish literal keys and shortcuts from surrounding prose. It&#xA;renders semantic HTML, remains readable in Markdown and print, and needs no&#xA;JavaScript.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Use Kbd for keys the reader should press, including multi-key shortcuts. Use&#xA;inline code for commands, option names, or text the reader should type; those&#xA;are not physical or virtual keys.&lt;/p&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick start&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#quick-start&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;source&#34;&gt;Source&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#source&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-16335da9-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;go-html-template&#34; data-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;GO-HTML-TEMPLATE&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-16335da9-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Press &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;kbd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Ctrl&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;K&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt; to open search.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use &lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;kbd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;⌘&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Shift&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt; to open the command palette.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;rendered-result&#34;&gt;Rendered result&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#rendered-result&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Press &lt;span class=&#34;td-kbd-sequence&#34;&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt;&lt;span class=&#34;td-kbd-sequence__separator&#34; aria-hidden=&#34;true&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;visually-hidden&#34;&gt; with &lt;/span&gt;&lt;kbd&gt;K&lt;/kbd&gt;&lt;/span&gt; to open search. Use &lt;span class=&#34;td-kbd-sequence&#34;&gt;&lt;kbd&gt;⌘&lt;/kbd&gt;&lt;span class=&#34;td-kbd-sequence__separator&#34; aria-hidden=&#34;true&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;visually-hidden&#34;&gt; with &lt;/span&gt;&lt;kbd&gt;Shift&lt;/kbd&gt;&lt;span class=&#34;td-kbd-sequence__separator&#34; aria-hidden=&#34;true&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;visually-hidden&#34;&gt; with &lt;/span&gt;&lt;kbd&gt;P&lt;/kbd&gt;&lt;/span&gt; to&#xA;open the command palette, or press &lt;span class=&#34;td-kbd-sequence&#34;&gt;&lt;kbd&gt;Alt&lt;/kbd&gt;&lt;span class=&#34;td-kbd-sequence__separator&#34; aria-hidden=&#34;true&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;visually-hidden&#34;&gt; with &lt;/span&gt;&lt;kbd&gt;Enter&lt;/kbd&gt;&lt;/span&gt; to apply an action.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Fields and Field</title>
        <link>https://oink.pgsty.com/docs/components/fields/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/fields/</guid>
        <description>&lt;p&gt;Use &lt;code&gt;fields&lt;/code&gt; with &lt;code&gt;field&lt;/code&gt; children to document named values and their metadata.&#xA;The component favors a responsive definition list over a wide fixed table, so&#xA;long names and descriptions remain usable on narrow screens.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Fields works for configuration keys, command or API parameters, object&#xA;properties, and response members. Use a regular Markdown table when readers must&#xA;compare many rows across the same columns. Use prose when the entries are steps&#xA;rather than definitions.&lt;/p&gt;</description>
      </item>
    <item>
        <title>FileTree</title>
        <link>https://oink.pgsty.com/docs/components/filetree/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/filetree/</guid>
        <description>&lt;p&gt;Use FileTree to explain the part of a repository or directory layout that&#xA;matters to the reader. Folders use native disclosure controls in interactive&#xA;HTML; every output retains the complete nested structure.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;FileTree works best for curated structures in setup guides, architecture&#xA;overviews, and contribution instructions. Use a code block for literal command&#xA;output that should be copied verbatim. Describe generated or highly dynamic&#xA;trees in prose instead of committing a large snapshot that will quickly drift.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Gallery</title>
        <link>https://oink.pgsty.com/docs/components/gallery/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/gallery/</guid>
        <description>&lt;p&gt;Gallery groups related images in a responsive grid. It is static-first: images,&#xA;alternative text, and captions remain available without JavaScript. When Image&#xA;Zoom is enabled, Gallery reuses the same dialog instead of loading another&#xA;lightbox.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Use Gallery to compare a small set of screenshots, states, or related visual&#xA;examples. Use a single image when sequence and comparison do not matter. Use&#xA;Carousel when the content intentionally needs slide navigation and hiding&#xA;noncurrent items is acceptable.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Image Zoom</title>
        <link>https://oink.pgsty.com/docs/components/image-zoom/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/image-zoom/</guid>
        <description>&lt;p&gt;Image Zoom progressively enhances eligible content images with one native&#xA;dialog. It is useful for screenshots and architecture diagrams whose details may&#xA;be hard to read at the document width. The original image remains complete when&#xA;JavaScript or dialog support is unavailable.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use&#34;&gt;When to use&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#when-to-use&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Enable zoom when a reader benefits from seeing the source image at a larger&#xA;size. Prefer a purpose-built crop or a clearer diagram when enlargement does not&#xA;solve the readability problem. Decorative icons, logos embedded in prose, and&#xA;linked thumbnails should retain their existing behavior.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Shortcodes</title>
        <link>https://oink.pgsty.com/docs/components/layout/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/layout/</guid>
        <description>&lt;p&gt;Shortcodes add behavior that ordinary Markdown cannot express. OINK retains the&#xA;core Docsy components and adds locally served charts, terminal recordings,&#xA;infographics, carousels, cards, and disclosure widgets. Browser runtimes load&#xA;only on pages that use them.&lt;/p&gt;&#xA;&lt;p&gt;Prefer Markdown for headings, prose, lists, links, tables, and images. A&#xA;shortcode becomes part of the content API: changing its name or parameters can&#xA;break every page that calls it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;shortcode-delimiters&#34;&gt;Shortcode delimiters&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#shortcode-delimiters&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hugo supports two forms:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Diagrams and formulae</title>
        <link>https://oink.pgsty.com/docs/components/diagrams/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/diagrams/</guid>
        <description>&lt;p&gt;OINK supports KaTeX, Mermaid, Markmap, PlantUML, and Diagrams.net. KaTeX,&#xA;Mermaid, and Markmap use build-time or same-origin resources shipped with the&#xA;theme. PlantUML and the Diagrams.net editor require an explicitly configured&#xA;service endpoint; they do not silently default to a public service.&lt;/p&gt;&#xA;&lt;h2 id=&#34;latex-support-with-katex&#34;&gt;LaTeX support with KaTeX&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#latex-support-with-katex&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://katex.org/&#34;&gt;KaTeX&lt;/a&gt; renders TeX mathematics for the web. Hugo&amp;rsquo;s embedded KaTeX support can&#xA;render formulae at build time, so readers do not need a remote math service.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Apache ECharts</title>
        <link>https://oink.pgsty.com/docs/components/echarts/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/echarts/</guid>
        <description>&lt;p&gt;The &lt;code&gt;echarts&lt;/code&gt; shortcode renders an Apache ECharts options object with the&#xA;versioned runtime bundled by Oink. Hugo parses JSON or YAML at build time,&#xA;serializes the result into the page, and loads ECharts only on pages that use&#xA;the component.&lt;/p&gt;&#xA;&lt;p&gt;Use ECharts for quantitative charts whose axes, encodings, tooltips, or series&#xA;need more control than a diagram or table provides. Keep a nearby textual&#xA;summary so the conclusion does not depend on color, pointer interaction, or&#xA;JavaScript.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Infographics with AntV</title>
        <link>https://oink.pgsty.com/docs/components/infographic/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/components/infographic/</guid>
        <description>&lt;p&gt;The &lt;code&gt;infographic&lt;/code&gt; shortcode renders the AntV Infographic DSL with the versioned&#xA;runtime bundled by Oink. Use it for processes, timelines, cycles, funnels,&#xA;roadmaps, and compact visual summaries where a statistical chart would be too&#xA;literal.&lt;/p&gt;&#xA;&lt;p&gt;The DSL is serialized as data, not inserted as arbitrary HTML or executable&#xA;code. The browser runtime turns it into SVG and loads only on pages that use the&#xA;shortcode.&lt;/p&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick start&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#quick-start&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-647e4ca7-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;go-html-template&#34; data-line-count=&#34;12&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;GO-HTML-TEMPLATE&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-647e4ca7-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;infographic&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infographic list-row-simple-horizontal-arrow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  title Documentation workflow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  items&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - label Draft&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      desc Write the first version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - label Review&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      desc Check facts and language&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - label Publish&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      desc Build and verify the site&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;infographic&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The same three steps appear below. Drafting creates the first version, review&#xA;checks facts and language, and publication builds and verifies the site.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
