{"_id":"@autossey/prxmpt","_rev":"2-b413e14d35d5c9819dd04b384f4901d3","name":"@autossey/prxmpt","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@autossey/prxmpt","version":"0.1.0","description":"Prompt Crafting with JSX","license":"MIT","private":false,"author":{"name":"Connor White"},"type":"module","main":".auto/build/index.js","types":".auto/build/index.d.ts","exports":{".":{"types":"./.auto/build/index.d.ts","import":"./.auto/build/index.js"},"./jsx-runtime":{"types":"./.auto/build/jsx-runtime.d.ts","import":"./.auto/build/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./.auto/build/jsx-runtime.d.ts","import":"./.auto/build/jsx-runtime.js"}},"engines":{"node":">=18.0.0"},"scripts":{"build":"bun build:source && bun build:types","build:source":"swc source --config-file .swcrc --copy-files --delete-dir-on-start --out-dir .auto/build","build:types":"tsc --emitDeclarationOnly --project tsconfig.build.json","lint":"eslint source","test":"TZ=UTC NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" jest","typecheck":"tsc --noEmit --project tsconfig.build.json","watch:source":"swc source --config-file .swcrc --copy-files --out-dir .auto/build --watch","watch:types":"tsc --emitDeclarationOnly --watch --project tsconfig.build.json","prepack":"bun run build"},"dependencies":{"as-typed-array":"^3.0.1","types-json":"4.0.1","yaml":"^2.3.2"},"devDependencies":{"@autossey/eslint-config":"^0.1.0","@autossey/tsconfig":"^1.0.0","@jest/globals":"^29.7.0","@swc/core":"^1.3.89","@swc/jest":"^0.2.29","eslint":"^8.50.0","jest":"^29.7.0","typescript":"^5.2.2"},"eslintConfig":{"extends":"@autossey/eslint-config"},"jest":{"collectCoverage":true,"collectCoverageFrom":["source/**/*.tsx","source/**/*.ts"],"coverageDirectory":"coverage","coverageProvider":"v8","coverageReporters":["text","lcov"],"extensionsToTreatAsEsm":[".ts",".tsx"],"moduleNameMapper":{"^#(.*)":"$1","^(\\.{1,2}/.*)\\.js$":"$1"},"testRegex":"test/(.*).test.tsx?$","transform":{"^.+\\.tsx?$":["@swc/jest",{"jsc":{"target":"es2019"}}]}},"_id":"@autossey/prxmpt@0.1.0","_nodeVersion":"20.5.1","_npmVersion":"9.8.0","dist":{"integrity":"sha512-bCewW8n243qv3fChDebbQhRodeP7gr2ukmd+RuCSuWOP7h3wu9W61GLl3Rz7LgvmZjLfKvrIWKPAizL1Hjsiuw==","shasum":"11f4144732346bdfedefb5bd9704fa50b7411049","tarball":"https://registry.npmjs.org/@autossey/prxmpt/-/prxmpt-0.1.0.tgz","fileCount":92,"unpackedSize":133039,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+fmF/m6mtUcNMr9DX8ibQheZ2JXM0dtzhq75tLn2xdAiAkBXHgn97i4mHYNinfd7E67XMVq3Idm/YBmbdQz1JSjQ=="}]},"_npmUser":{"name":"bconnorwhite","email":"connor.bcw@gmail.com"},"directories":{},"maintainers":[{"name":"bconnorwhite","email":"connor.bcw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prxmpt_0.1.0_1695851804157_0.7692090421499269"},"_hasShrinkwrap":false},"0.1.1":{"name":"@autossey/prxmpt","version":"0.1.1","description":"Prompt Crafting with JSX","license":"MIT","private":false,"author":{"name":"Connor White"},"homepage":"https://github.com/AutosseyAI/prxmpt#readme","repository":{"type":"git","url":"git+https://github.com/AutosseyAI/prxmpt.git"},"bugs":{"url":"https://github.com/AutosseyAI/prxmpt/issues"},"keywords":["prompt","prxmpt","autossey","ai","openai","jsx"],"type":"module","main":".auto/build/index.js","types":".auto/build/index.d.ts","exports":{".":"./.auto/build/index.js","./tsconfig.json":"./tsconfig.json","./jsx-runtime":"./.auto/build/jsx-runtime.js","./jsx-dev-runtime":"./.auto/build/jsx-runtime.js"},"engines":{"node":">=18.0.0"},"scripts":{"build":"bun build:source && bun build:types","build:source":"swc source --config-file .swcrc --copy-files --delete-dir-on-start --out-dir .auto/build","build:types":"tsc --emitDeclarationOnly --project tsconfig.build.json","lint":"eslint source","test":"TZ=UTC NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" jest","typecheck":"tsc --noEmit --project tsconfig.build.json","watch:source":"swc source --config-file .swcrc --copy-files --out-dir .auto/build --watch","watch:types":"tsc --emitDeclarationOnly --watch --project tsconfig.build.json","prepack":"bun run build"},"dependencies":{"as-typed-array":"^3.0.1","types-json":"4.0.1","yaml":"^2.3.2"},"devDependencies":{"@autossey/eslint-config":"^0.1.0","@autossey/tsconfig":"^1.0.0","@jest/globals":"^29.7.0","@swc/core":"^1.3.89","@swc/jest":"^0.2.29","eslint":"^8.50.0","jest":"^29.7.0","typescript":"^5.2.2"},"eslintConfig":{"extends":"@autossey/eslint-config"},"jest":{"collectCoverage":true,"collectCoverageFrom":["source/**/*.tsx","source/**/*.ts"],"coverageDirectory":"coverage","coverageProvider":"v8","coverageReporters":["text","lcov"],"extensionsToTreatAsEsm":[".ts",".tsx"],"moduleNameMapper":{"^#(.*)":"$1","^(\\.{1,2}/.*)\\.js$":"$1"},"testRegex":"test/(.*).test.tsx?$","transform":{"^.+\\.tsx?$":["@swc/jest",{"jsc":{"target":"es2019"}}]}},"_id":"@autossey/prxmpt@0.1.1","_nodeVersion":"20.5.1","_npmVersion":"9.8.0","dist":{"integrity":"sha512-SS2UIyGD3ORv3RGS5uGdeKy9PBgT8ahicO3/h4ZbiY6ITAD+96V2PTNxRqc2zHg5uRMVvQWnQ1FPbBiEkC93aw==","shasum":"d63e72fa1acb8e6639045ad903b0422dfafd6077","tarball":"https://registry.npmjs.org/@autossey/prxmpt/-/prxmpt-0.1.1.tgz","fileCount":92,"unpackedSize":133297,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7LUWNumi0ameRSctfcgeS+ss5YroDqk5qLAmGMKxZDAiBzUu8OCFaZiIZznwUQKcZdvlWdIS6WGlkxY5sbkk6ipg=="}]},"_npmUser":{"name":"bconnorwhite","email":"connor.bcw@gmail.com"},"directories":{},"maintainers":[{"name":"bconnorwhite","email":"connor.bcw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prxmpt_0.1.1_1695927619558_0.7822548060741397"},"_hasShrinkwrap":false},"0.2.0":{"name":"@autossey/prxmpt","version":"0.2.0","description":"Prompt Crafting with JSX","license":"MIT","private":false,"author":{"name":"Connor White"},"homepage":"https://github.com/AutosseyAI/prxmpt#readme","repository":{"type":"git","url":"git+https://github.com/AutosseyAI/prxmpt.git"},"bugs":{"url":"https://github.com/AutosseyAI/prxmpt/issues"},"keywords":["prompt","prxmpt","autossey","ai","openai","jsx"],"type":"module","main":".auto/build/index.js","types":".auto/build/index.d.ts","exports":{".":"./.auto/build/index.js","./tsconfig.json":"./tsconfig.json","./jsx-runtime":"./.auto/build/jsx-runtime.js","./jsx-dev-runtime":"./.auto/build/jsx-runtime.js","./loader":"./.auto/build/loader.js"},"engines":{"node":">=18.0.0"},"scripts":{"build":"bun build:source && bun build:types","build:source":"swc source --config-file .swcrc --copy-files --delete-dir-on-start --out-dir .auto/build","build:types":"tsc --emitDeclarationOnly --project source/tsconfig.json","lint":"eslint source && eslint test","test":"TZ=UTC NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" jest","typecheck":"tsc --noEmit --project source/tsconfig.json","watch:source":"swc source --config-file .swcrc --copy-files --out-dir .auto/build --watch","watch:types":"tsc --emitDeclarationOnly --watch --project source/tsconfig.json","prepack":"bun run build"},"dependencies":{"@swc/core":"^1.3.89","as-typed-array":"^3.0.1","types-json":"4.0.1","yaml":"^2.3.2"},"devDependencies":{"@autossey/eslint-config":"^0.2.0","@autossey/tsconfig":"^1.1.1","@jest/globals":"^29.7.0","@swc/jest":"^0.2.29","@types/node":"^20.8.2","eslint":"^8.50.0","jest":"^29.7.0","typescript":"^5.2.2"},"eslintConfig":{"extends":"@autossey/eslint-config"},"jest":{"collectCoverage":true,"collectCoverageFrom":["source/**/*.tsx","source/**/*.ts"],"coverageDirectory":"coverage","coverageProvider":"v8","coverageReporters":["text","lcov"],"extensionsToTreatAsEsm":[".ts",".tsx"],"moduleNameMapper":{"^#(.*)":"$1","^(\\.{1,2}/.*)\\.js$":"$1"},"testRegex":"test/(.*).test.tsx?$","transform":{"^.+\\.tsx?$":["@swc/jest",{"jsc":{"target":"es2019"}}]}},"_id":"@autossey/prxmpt@0.2.0","_nodeVersion":"20.5.1","_npmVersion":"9.8.0","dist":{"integrity":"sha512-mXeFLNv5AFyKBp4w9gVVny3XP7GvgvZtaw0FnXXgb5V2fBJuVgrvxNJh7ok8S8r4X8ug5qFQoEyjNTpO8VYnug==","shasum":"53fe00e8d40536678a792088bd280c5cc5176ab0","tarball":"https://registry.npmjs.org/@autossey/prxmpt/-/prxmpt-0.2.0.tgz","fileCount":94,"unpackedSize":135903,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICg2N906LBbTihRXQIVkW1tG3vJa+rIuI8W55U63Mt1qAiEAjk5oddDBy3cGa8QWgJKNr4XmC9k+VnRmV+B6BPPPMQc="}]},"_npmUser":{"name":"bconnorwhite","email":"connor.bcw@gmail.com"},"directories":{},"maintainers":[{"name":"bconnorwhite","email":"connor.bcw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prxmpt_0.2.0_1696345592036_0.33506692562723894"},"_hasShrinkwrap":false}},"time":{"created":"2023-09-27T21:56:44.059Z","0.1.0":"2023-09-27T21:56:44.392Z","modified":"2023-10-03T15:06:32.496Z","0.1.1":"2023-09-28T19:00:19.827Z","0.2.0":"2023-10-03T15:06:32.280Z"},"maintainers":[{"name":"bconnorwhite","email":"connor.bcw@gmail.com"}],"description":"Prompt Crafting with JSX","author":{"name":"Connor White"},"license":"MIT","readme":"<div id=\"top\" align=\"center\">\n  <h1>𝕡𝕣𝕩𝕞𝕡𝕥</h1>\n  <a href=\"https://coveralls.io/github/AutosseyAI/prxmpt\">\n    <img alt=\"Coverage Status\" src=\"https://img.shields.io/coveralls/github/AutosseyAI/prxmpt/badge.svg\" />\n  </a>\n  <a href=\"https://npmjs.com/package/@autossey/prxmpt\">\n    <img alt=\"NPM\" src=\"https://img.shields.io/npm/v/@autossey/prxmpt.svg\">\n  </a>\n  <a href=\"https://github.com/AutosseyAI/prxmpt\">\n    <img alt=\"TypeScript\" src=\"https://img.shields.io/github/languages/top/AutosseyAI/prxmpt.svg\">\n  </a>\n\n</div>\n\n<br />\n\n<blockquote align=\"center\"><i>-- Prompt Crafting with JSX --</i></blockquote>\n\n<div align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@autossey/prxmpt\">npm</a>\n  <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>\n  <a href=\"https://github.com/AutosseyAI/prxmpt/issues/new\">Issues</a>\n</div>\n\n<br />\n<br />\n\nPrxmpt is like _\"Tailwind for Prompt Engineering\"_. It provides a set of utilities for formatting strings with JSX.\n\nPrxmpt is designed for shaping the input to LLMs, and includes powerful elements such as [\\<priority\\>](#priority) for managing tokens. However, Prxmpt also provides both Markdown and HTML elements, making it perfect for formatting LLM outputs for end users as well.\n\n<h2 id=\"why-jsx\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Why JSX?</h2>\n\n1. 📖 **Readability** - JSX gives us more control over whitespace, enabling more readable code.\n2. 🎛️ **Control** - With built-in props such as `hide`, we can easily control the text we display without ternaries.\n3. 📦 **Reusability** - Prxmpt components take props just like normal JSX components, making them easy to reuse.\n\n```tsx\nconst text = (\n  <lined>\n    <h1>This is the first line.</h1>\n    <text hide={hideLine2}>Here's a second line.</text>\n    <empty />\n    <text>\n      This is a longer line, so we'll break the text tag.\n      We can even start another line here, and a space will be added.\n    </text>\n  </lined>\n);\n```\n\n<details>\n  <summary><i>Result (<code>hideLine2=false</code>)</i></summary>\n\n  ```\n  # This is the first line.\n  Here's a second line.\n\n  This is a long line, so we'llbreak the text tag We can even start another line here, and a space will be added.\n  ```\n</details>\n\n<details>\n  <summary><i>Result (<code>hideLine2=true</code>)</i></summary>\n\n  ```\n  # This is the first line.\n\n  This is a long line, so we'll break the text tag We can even start another line here, and a space will be added.\n  ```\n</details>\n\nCompare this to an equivalent using template literals:\n\n```ts\nconst text = `# This is the first line.${hideLine2 ? \"\\nHere's a second line.\" : \"\"}\\n\\nThis is a longer line, so by now we're off the page. We can even start another line here, but I wouldn't recommend it.`;\n```\n\n<h2 id=\"installation\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Installation</h2>\n\n<details open>\n  <summary>\n    <a href=\"https://www.npmjs.com/package/@autossey/prxmpt\">\n      <img src=\"https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=white\" alt=\"NPM\" />\n    </a>\n  </summary>\n\n```sh\nnpm install @autossey/prxmpt\n```\n\n</details>\n\n<details open>\n  <summary>\n    <a href=\"https://yarnpkg.com/package/@autossey/prxmpt\">\n      <img src=\"https://img.shields.io/badge/yarn-2C8EBB?logo=yarn&logoColor=white\" alt=\"Yarn\" />\n    </a>\n  </summary>\n\n```sh\nyarn add @autossey/prxmpt\n```\n\n</details>\n\n<details open>\n  <summary>\n    <img src=\"https://img.shields.io/badge/pnpm-F69220?logo=pnpm&logoColor=white\" alt=\"PNPM\" />\n  </summary>\n\n```sh\npnpm add @autossey/prxmpt\n```\n\n</details>\n\n<details open>\n  <summary>\n    <img src=\"https://img.shields.io/badge/bun-EE81C3?logo=bun&logoColor=white\" alt=\"Bun\" />\n  </summary>\n\n```sh\nbun add @autossey/prxmpt\n```\n\n</details>\n\n<h2 id=\"getting-started\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Getting Started</h2>\n\n<details open>\n  <summary><b>Automatic Mode</b></summary>\n\nPrxmpt provides a base `tsconfig.json` that you can extend:\n\n```json\n{\n  \"extends\": \"@autossey/prxmpt/tsconfig.json\"\n}\n```\n\n> NOTE: Bun doesn't seem to detect Prxmpt correctly when using the \"extends\" method.\n\nAlternatively, you can simply add the following fields to your `tsconfig.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@autossey/prxmpt\",\n    \"module\": \"NodeNext\"\n  }\n}\n```\n\nYou should be able to use Prxmpt elements now, without importing:\n\n```tsx\nexport const MyComponent = () => (\n  <text>Hello, World!</text>\n);\n```\n\n> If using Prxmpt with React, add the following line at the top of each file that uses Prxmpt instead:\n> ```tsx\n> /** @jsxImportSource @autossey/prxmpt */\n>\n> export const MyComponent = () => (\n>   <text>Hello, World!</text>\n> );\n> ```\n\n</details>\n\n<details>\n  <summary><b>Classic Mode</b></summary>\n\nTo use Prxmpt in classic mode, you'll need to set the following fields in your `tsconfig.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"jsx\": \"react\",\n    \"jsxFactory\": \"Prxmpt.createElement\",\n    \"jsxFragmentFactory\": \"Prxmpt.Fragment\"\n  }\n}\n```\nAdditionally, you'll need to import `Prxmpt` in each file you use it:\n\n```tsx\nimport Prxmpt from \"@autossey/prxmpt\";\n\nexport const MyComponent = () => (\n  <text>Hello, World!</text>\n);\n```\n\n</details>\n\n<h2 id=\"examples\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Examples</h2>\n\nSeveral examples are provided in the [examples](https://github.com/AutosseyAI/prxmpt/tree/main/examples) directory:\n\n**Element Usage Examples:**\n- [kitchen sink](https://github.com/AutosseyAI/prxmpt/blob/main/examples/kitchen-sink/source/Prompt.tsx) (Showcases many elements)\n- [priority](https://github.com/AutosseyAI/prxmpt/tree/main/examples/priority/) (A few examples of the `<priority>` element)\n\n**Setup Examples (TypeScript):**\n- [bun](./examples/bun/)\n- [bun (classic mode)](./examples/bun-classic/)\n- [Next.js](./examples/next/)\n- [swc](./examples/swc/)\n- [swc (classic mode)](./examples/swc-classic/)\n- [ts-node](./examples/ts-node/)\n- [ts-node (classic mode)](./examples/ts-node-classic/)\n- [tsc](./examples/tsc/)\n- [tsc (classic mode)](./examples/tsc-classic/)\n\n**Setup Examples (JavaScript):**\n- [node --loader @autossey/prxmpt](./examples/node-loader/)\n- [swc](./examples/swc-js/)\n- [swc (classic mode)](./examples/swc-js-classic/)\n\nFor examples of how to use specific elements, the [tests](https://github.com/AutosseyAI/prxmpt/tree/main/test/) show more usecases.\n\n<h2 id=\"elements\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Elements</h2>\n\n- [Text Elements](#text-elements)\n    - [`<text>`](#text)\n  - [Characters](#characters)\n    - [`<empty>`](#empty)\n    - [`<space>`](#space)\n    - [`<tab>`](#tab)\n    - [`<ellipsis>`](#ellipsis)\n    - [`<na>` (n/a)](#na)\n  - [Brackets](#brackets)\n    - [`<parens>` (Parenthesis)](#parenthesis)\n    - [`<square>` (Square Bracket)](#square-bracket)\n    - [`<curly>` (Square Bracket)](#curly-bracket)\n    - [`<angle>` (Angle Bracket)](#angle-bracket)\n  - [Quotes](#quotes)\n    - [`<sq>` (Single Quote)](#single-quote)\n    - [`<dq>` (Double Quote)](#double-quote)\n    - [`<bq>` (Back Quote)](#back-quote)\n    - [`<tsq>` (Triple Single Quote)](#triple-single-quote)\n    - [`<tdq>` (Triple Double Quote)](#triple-double-quote)\n    - [`<tbq>` (Triple Back Quote)](#triple-back-quote)\n  - [Comments](#comments)\n    - [`<comment type=\"slash\">`](#slash-comment)\n    - [`<comment type=\"hash\">`](#hash-comment)\n    - [`<comment type=\"dash\">`](#dash-comment)\n    - [`<comment type=\"html\">`](#html-comment)\n  - [Sentences](#sentences)\n    - [`<state>`](#state)\n    - [`<ask>`](#ask)\n    - [`<exclaim>`](#exclaim)\n  - [Miscellaneous](#miscellaneous-text)\n    - [`<kv>` (Key-Value Pair)](#key-value-pair)\n- [HTML Elements](#html-elements)\n    - [`<tag>`](#tag)\n  - [Breaks](#breaks)\n    - [`<br>` (Line Break)](#line-break)\n    - [`<hr>` (Horizontal Rule)](#horizontal-rule)\n  - [Linking](#linking)\n    - [`<a>` (Anchor)](#anchor)\n    - [`<img>` (Image)](#image)\n  - [Headings](#headings)\n    - [`<h1>`](#h1)\n    - [`<h2>`](#h2)\n    - [`<h3>`](#h3)\n    - [`<h4>`](#h4)\n    - [`<h5>`](#h5)\n    - [`<h6>`](#h6) \n  - [Lists](#lists)\n    - [`<ul>` (Unordered List)](#unordered-list)\n    - [`<ol>` (Ordered List)](#ordered-list)\n    - [`<cl>` (Checkbox List)](#checkbox-list)\n    - [`<dl>` (Definition List)](#definition-list)\n  - [Styling](#styling)\n    - [`<i>` (Italic)](#italic)\n    - [`<b>` (Bold)](#bold)\n    - [`<s>` (Strikethrough)](#strikethrough)\n    - [`<code>` (Code)](#code)\n  - [Miscellaneous](#miscellaneous-html)\n    - [`<span>`](#span)\n    - [`<p>`](#paragraph)\n    - [`<blockquote>`](#blockquote)\n    - [`<q>`](#quote)\n    - [`<pre>`](#pre)\n- [Serialization Elements](#serialization-elements)\n  - [Primitives](#primitives)\n    - [`<num>`](#num)\n  - [Dates](#dates)\n    - [`<datetime>`](#datetime)\n    - [`<date>`](#date)\n    - [`<time>`](#time)\n    - [`<year>`](#year)\n    - [`<month>`](#month)\n    - [`<day>`](#day)\n    - [`<hour>`](#hour)\n    - [`<minute>`](#minute)\n    - [`<second>`](#second)\n    - [`<millisecond>`](#millisecond)\n    - [`<duration>`](#duration)\n  - [Objects](#objects)\n    - [`<json>`](#json)\n    - [`<yaml>`](#yaml)\n- [Utility Elements](#utility-elements)\n  - [Casing](#casing)\n    - [`<upper>`](#upper)\n    - [`<lower>`](#lower)\n    - [`<capital>`](#capital)\n    - [`<title>`](#title)\n  - [Joins](#joins)\n    - [`<lined>`](#lined)\n    - [`<spaced>`](#spaced)\n    - [`<csl>` (Comma Separated List)](#csl)\n    - [`<union>`](#union)\n    - [`<sectioned>`](#sectioned)\n  - [Sets](#sets)\n    - [`<and>`](#and)\n    - [`<andor>`](#andor)\n    - [`<or>`](#or)\n    - [`<nor>`](#nor)\n  - [Affixes](#affixes)\n    - [`<trim>`](#trim)\n    - [`<frame>`](#frame)\n  - [Limiters](#limiters)\n    - [`<cap>`](#cap)\n    - [`<priority>`](#priority)\n\n<h2 id=\"exports\"><div align=\"right\"><a href=\"#top\">🔝</a></div>Exports</h2>\n\nThe following functions are also exported from Prxmpt:\n\n- [Rendering](#rendering)\n  - [`createElement`](#createelement)\n  - [`render`](#render)\n- [Children](#children)\n  - [`hasChildren`](#haschildren)\n  - [`isChildren`](#ischildren)\n- [Splitters](#splitters)\n  - [`split`](#split)\n  - [`paragraphs`](#paragraphs)\n  - [`lines`](#lines)\n  - [`spaces`](#spaces)\n  - [`words`](#words)\n  - [`commas`](#commas)\n  - [`chars`](#chars)\n\n<h2 id=\"text-elements\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Text Elements</h2>\n\n#### Text\n_`<text>`_\n\nText is the base Prxmpt element. It returns its children as a string:\n\n\n```tsx\nconst string = <text>Hello, World!</text>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\nText can also be hidden with the `hide` prop:\n\n```tsx\nconst string = <text>Hello<text hide>, World</hide>!</text>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello!\n  ```\n</details>\n\n<details open>\n  <summary><b>Props</b></summary>\n\nSince `<text>` is the base of most other elements, the props it provides can be used with most other elements.\n\nPrxmpt treats children as an array of strings, which means `<text>` can also provide several array functions for mapping, filtering, and joining children.\n\n---\n- **hide**\n```tsx\n/**\n * Prevent the Element from being rendered.\n * @default false\n */\nhide?: boolean;\n```\n- **filter**\n```tsx\n/**\n * A function to filter children.\n * @default (node) => true\n */\nfilter?: (node: Prxmpt.Children, index: number, arr: Prxmpt.Children[]) => boolean;\n```\n- **map**\n```tsx\n/**\n * A function that maps each child to a new Element.\n * @default (node) => Prxmpt.render(node)\n */\nmap?: (node: Prxmpt.Children, index: number, arr: Prxmpt.Children[]) => Prxmpt.JSX.Element;\n```\n- **reverse**\n```tsx\n/**\n * Reverse the order of the children.\n */\nreverse?: boolean;\n```\n- **join**\n```tsx\n/**\n * An Element to insert between each child.\n * @default \"\"\n */\njoin?: Prxmpt.Children;\n```\n- **repeat**\n```tsx\n/**\n * @default 1\n */\nrepeat?: number;\n```\n- **trim**\n```tsx\n/**\n * `true`: Trim whitespace from the beginning and end of the Element.\n * \n * `\"start\"`: Trim whitespace from the beginning of the Element.\n * \n * `\"end\"`: Trim whitespace from the end of the Element.\n * \n * @default false\n */\ntrim?: boolean | TrimSide;\n```\n- **casing**\n```tsx\n/**\n * Convert the Element to a given casing.\n * @default undefined\n */\ncasing?: Casing;\n```\n- **prefix**\n```tsx\n/**\n * An Element to prepend to the element.\n * @default \"\"\n */\nprefix?: Prxmpt.Children;\n```\n- **suffix**\n```tsx\n/**\n * An Element to append to the element.\n * @default \"\"\n */\nsuffix?: Prxmpt.Children;\n```\n- **indent**\n```tsx\n/**\n * Apply indentation to each line of the Element.\n * \n * If `true`, indentation is applied using 2 spaces.\n * \n * If a number is provided, that number of spaces is used.\n * \n * If `\"\\t\"` is provided, a single tab character is used.\n * \n * @default false\n */\nindent?: boolean | number | \"\\t\";\n```\n- **block**\n```tsx\n/**\n * Append a newline to the end of the Element.\n * @default false\n */\nblock?: boolean;\n```\n---\n</details>\n\n<h3 id=\"characters\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Characters</h3>\n\n#### Empty\n_`<empty>`_\n\nThe `<empty>` element returns an empty string:\n\n```tsx\n// \"\"\nconst string = <empty />;\n```\n\n`<empty>` is often useful as a child of elements that join their children on some delimiter.\n\n```tsx\nconst string = (\n  <lined>\n    <text>Line 1</text>\n    <empty />\n    <text>Line 3</text>\n  </lined>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Line 1\n\n  Line 2\n  ```\n</details>\n\n#### Space\n_`<space>`_\n\nThe `<space>` element returns a space:\n\n```tsx\n// \" \"\nconst string = <space />;\n```\n\n#### Tab\n_`<tab>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **literal**\n```tsx\n/**\n  * If true, use a literal tab character. Otherwise, use spaces.\n  * @default false\n  */\nliteral?: boolean;\n```\n- **width**\n```tsx\n/**\n  * Number of characters per tab\n  * @default 1 if `literal` is true, otherwise 2\n  */\nwidth?: number;\n```\n---\n</details>\n\n```tsx\n// \"    \"\nconst string = <tab width={4} />\n```\n\n#### Ellipsis\n_`<ellipsis>`_\n\n```tsx\nconst string = <ellipsis />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ...\n  ```\n</details>\n\n#### NA\n_`<na>`_\n\n```tsx\nconst string = <na />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  n/a\n  ```\n</details>\n\n<h3 id=\"brackets\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Brackets</h3>\n\n#### Parenthesis\n_`<parens>`_\n\n```tsx\nconst string = <parens>Hello, World!</parens>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  (Hello, World!)\n  ```\n</details>\n\n#### Square Bracket\n_`<square>`_\n\n```tsx\nconst string = <square>Hello, World!</square>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  [Hello, World!]\n  ```\n</details>\n\n\n#### Curly Bracket\n_`<curly>`_\n\n```tsx\nconst string = <curly>Hello, World!</curly>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  {Hello, World!}\n  ```\n</details>\n\n#### Angle Bracket\n_`<angle>`_\n\n```tsx\nconst string = <angle>Hello, World!</angle>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <Hello, World!>\n  ```\n</details>\n\n<h3 id=\"quotes\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Quotes</h3>\n\n#### Single Quote\n_`<sq>`_\n\n```tsx\nconst string = <sq>Hello, World!</sq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  'Hello, World!'\n  ```\n</details>\n\n#### Double Quote\n_`<dq>`_\n\n```tsx\nconst string = <dq>Hello, World!</dq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  \"Hello, World!\"\n  ```\n</details>\n\n#### Back Quote\n_`<bq>`_\n\n```tsx\nconst string = <bq>Hello, World!</bq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  `Hello, World!`\n  ```\n</details>\n\n#### Triple Single Quote\n_`<tsq>`_\n\n```tsx\nconst string = <tsq>Hello, World!</tsq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  '''\n  Hello, World!\n  '''\n  ```\n</details>\n\n#### Triple Double Quote\n_`<tdq>`_\n\n```tsx\nconst string = <tdq>Hello, World!</tdq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  \"\"\"\n  Hello, World!\n  \"\"\"\n  ```\n</details>\n\n#### Triple Back Quote\n_`<tbq>`_\n\n```tsx\nconst tbq = <tbq>Hello, World!</tbq>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n  <pre>```<br/>Hello, World!<br/>```</pre>\n</details>\n\n<h3 id=\"comments\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Comments</h3>\n\n#### Slash Comment\n_`<comment type=\"slash\">`_\n\n```tsx\nconst slash = <comment type=\"slash\">Hello, World!</comment>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  // Hello, World!\n  ```\n</details>\n\n#### Hash Comment\n_`<comment type=\"hash\">`_\n\n```tsx\nconst hash = <comment type=\"hash\">Hello, World!</comment>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  # Hello, World!\n  ```\n</details>\n\n#### Dash Comment\n_`<comment type=\"dash\">`_\n\n```tsx\nconst dash = <comment type=\"dash\">Hello, World!</comment>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  -- Hello, World!\n  ```\n</details>\n\n#### HTML Comment\n_`<comment type=\"html\">`_\n\n```tsx\nconst html = <comment type=\"html\">Hello, World!</comment>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <!-- Hello, World! -->\n  ```\n</details>\n\n<h3 id=\"sentences\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Sentences</h3>\n\n#### State\n_`<state>`_\n\n```tsx\nconst state = <state>Hello, World!</state>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World.\n  ```\n</details>\n\n#### Ask\n_`<ask>`_\n\n```tsx\nconst ask = <ask>Hello, World!</ask>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World?\n  ```\n</details>\n\n#### Exclaim\n_`<exclaim>`_\n\n```tsx\nconst exclaim = <exclaim>Hello, World!</exclaim>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n<h3 id=\"miscellaneous-text\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Miscellaneous</h3>\n\n#### Key-Value Pair\n_`<kv>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **key**\n```tsx\n/**\n  * A key to render.\n  */\nkey: Prxmpt.Children;\n```\n\n- **keyCase**\n```tsx\n/**\n  * Case to apply to the key.\n  * @default undefined\n  */\nkeyCase?: \"upper\" | \"lower\" | \"capital\" | \"title\";\n```\n\n- **wrap**\n```tsx\n/**\n * Override the default behavior for wrapping the value.\n * @default undefined\n */\nwrap?: boolean;\n```\n\n- **noSpace**\n```tsx\n/**\n * If true, do not add a space between the key and value.\n * Only applies when not wrapping.\n * @default false\n */\nnoSpace?: boolean;\n```\n---\n\n</details>\n\n```tsx\nconst string = <kv key=\"Hello\">World</kv>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello: World\n  ```\n</details>\n\nWhen the children contain multiple lines, the value is rendered starting on a newline by default:\n\n```tsx\nconst worlds = (\n  <tdq join={\"\\n\"}>\n    <text>World1</text>\n    <text>World2</text>\n    <text>World3</text>\n  </tdq>\n);\n\nconst string = <kv key=\"Hello\">{worlds}</kv>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello:\n  \"\"\"\n  World1\n  World2\n  World3\n  \"\"\"\n  ```\n</details>\n\n<h2 id=\"html-elements\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>HTML Elements</h2>\n\nHTML elements are built on top of the `<tag>` element. Each html element has a boolean `html` prop that is set to false by default. When `html` is true, the element is rendered as HTML. Otherwise, the element is rendered as a Markdown equivalent.\n\nAdditionally, custom attributes can be set using the `attributes` prop.\n\n#### Tag\n_`<tag>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **name**\n```tsx\n/**\n * Name of the tag.\n */\nname: string;\n```\n- **noIndent**\n```tsx\n/**\n * @default false\n */\nnoIndent?: boolean;\n```\n- **wrap**\n```tsx\n/**\n * Defaults to true if the content contains a newline.\n */\nwrap?: boolean;\n```\n---\n</details>\n\n```tsx\nconst tag = <tag name=\"mytag\">Hello, World!</tag>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <mytag>Hello, World!</mytag>\n  ```\n</details>\n\n\nIf no children are provided, the tag is rendered as a self-closing tag:\n\n```tsx\nconst tag = <tag name=\"mytag\" />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <mytag />\n  ```\n</details>\n\n<h3 id=\"breaks\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Breaks</h3>\n\n#### Line Break\n_`<br />`_\n\n```tsx\n// \"\\n\"\nconst br = <br />;\n```\n\n```tsx\nconst br = <br html />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <br />\n  ```\n</details>\n\n#### Horizontal Rule\n_`<hr />`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **width**\n```tsx\n/**\n * @default 3\n */\nwidth?: number;\n```\n- **char**\n```tsx\n/**\n * @default \"-\"\n */\nchar?: \"-\" | \"_\" | \"=\" | \"*\";\n```\n---\n</details>\n\n```tsx\nconst hr = <hr />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ---\n  ```\n</details>\n\n```tsx\nconst hr = <hr />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <hr />\n  ```\n</details>\n\n<h3 id=\"linking\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Linking</h3>\n\n#### Anchor\n_`<a>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **href**\n\n```tsx\n/**\n * The URL of the link.\n */\nhref: string;\n```\n- **title**\n```tsx\n/**\n * A title for the link.\n */\ntitle?: string;\n```\n---\n</details>\n\n```tsx\nconst string = <a href=\"https://example.com\" title=\"A Title\">Hello, World!</a>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  [Hello, World!](https://example.com \"A Title\")\n  ```\n</details>\n\n```tsx\nconst string = <a href=\"https://example.com\" title=\"A Title\" html>Hello, World!</a>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <a href=\"https://example.com\" title=\"A Title\">Hello, World!</a>\n  ```\n</details>\n\n#### Image\n_`<img>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **src**\n```tsx\n/**\n * The URL of the image.\n */\nhref: string;\n```\n- **title**\n```tsx\n/**\n * A title for the image.\n */\ntitle?: string;\n```\n---\n</details>\n\n```tsx\nconst string = <img src=\"https://example.com\" title=\"A Title\">Hello, World!</img>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ![Hello, World!](https://example.com \"A Title\")\n  ```\n</details>\n\n```tsx\nconst string = <img src=\"https://example.com\" title=\"A Title\" html>Hello, World!</img>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <img src=\"https://example.com\" alt=\"Hello, World!\" title=\"A Title\" />\n  ```\n</details>\n\n<h3 id=\"headings\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Headings</h3>\n\n#### H1\n_`<h1>`_\n\n##### Standard:\n\n```tsx\nconst string = <h1>Hello, World!</h1>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  # Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h1 html>Hello, World!</h1>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h1>Hello, World!</h1>\n  ```\n</details>\n\n#### H2\n_`<h2>`_\n\n##### Standard:\n\n```tsx\nconst string = <h2>Hello, World!</h2>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ## Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h2 html>Hello, World!</h2>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h2>Hello, World!</h2>\n  ```\n</details>\n\n#### H3\n_`<h3>`_\n\n##### Standard:\n\n```tsx\nconst string = <h3>Hello, World!</h3>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ### Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h3 html>Hello, World!</h3>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h3>Hello, World!</h3>\n  ```\n</details>\n\n#### H4\n_`<h4>`_\n\n##### Standard:\n\n```tsx\nconst string = <h4>Hello, World!</h4>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  #### Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h4 html>Hello, World!</h4>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h4>Hello, World!</h4>\n  ```\n</details>\n\n#### H5\n_`<h5>`_\n\n##### Standard:\n\n```tsx\nconst string = <h5>Hello, World!</h5>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ##### Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h5 html>Hello, World!</h5>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h5>Hello, World!</h5>\n  ```\n</details>\n\n#### H6\n_`<h6>`_\n\n##### Standard:\n\n```tsx\nconst string = <h6>Hello, World!</h6>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ###### Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <h6 html>Hello, World!</h6>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <h6>Hello, World!</h6>\n  ```\n</details>\n\n<h3 id=\"lists\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Lists</h3>\n\n#### Ordered List\n_`<ol>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **onlyMarkIfList**\n```tsx\n/**\n  * Only include markers if the list contains more than one item.\n  * @default false\n  */\nonlyMarkIfList?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <ol>\n    <text>Hello</text>\n    <text>World</text>\n  </ol>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  1. Hello\n  2. World\n  ```\n</details>\n\n#### Unordered List\n_`<ul>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **onlyMarkIfList**\n```tsx\n/**\n  * Only include markers if the list contains more than one item.\n  * @default false\n  */\nonlyMarkIfList?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <ul>\n    <text>Hello</text>\n    <text>World</text>\n  </ul>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  - Hello\n  - World\n  ```\n</details>\n\n#### Checkbox list\n_`<cl>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **items**\n```tsx\nitems: {\n  /**\n   * @default false\n   */\n  checked?: boolean;\n  /**\n   * Content to render after the checkbox.\n   */\n  content: Prxmpt.Children;\n}[];\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <cl\n    items={[\n      { content: \"Hello\" },\n      { content: \"World\", checked: true },\n    ]}\n  />\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  - [ ] Hello\n  - [x] World\n  ```\n</details>\n\n#### Definition List\n_`<dl>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **items**\n```tsx\n/**\n * The items to render.\n */\nitems: Record<string, Prxmpt.Children>;\n```\n- **termCase**\n```tsx\n/**\n * Casing to apply to each key.\n * @default undefined\n */\ntermCase?: \"upper\" | \"lower\" | \"capital\" | \"title\";\n```\n- **space**\n```tsx\n/**\n * Number of blank lined to insert between each item.\n * @default 0\n */\nspace?: number;\n```\n- **wrap**\n```tsx\n/**\n * Override the default behavior for wrapping values.\n * @default undefined\n */\nwrap?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <dl\n    items={{\n      Hello: \"World\",\n      Foo: \"Bar\"\n    }}\n  />\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello: World\n  Foo: Bar\n  ```\n</details>\n\n<h3 id=\"styling\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Styling</h3>\n\n#### Italic\n_`<i>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **char**\n```tsx\n/**\n * @default \"_\"\n */\nchar?: \"*\" | \"_\";\n```\n---\n</details>\n\n##### Standard:\n\n```tsx\nconst string = <i>Hello, World!</i>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  _Hello, World!_\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <i html>Hello, World!</i>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <i>Hello, World!</i>\n  ```\n</details>\n\n#### Bold\n_`<b>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **char**\n```tsx\n/**\n * @default \"*\"\n */\nchar?: \"*\" | \"_\";\n```\n---\n</details>\n\n##### Standard:\n\n```tsx\nconst string = <b>Hello, World!</b>;\n```\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  **Hello, World!**\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <b html>Hello, World!</b>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <b>Hello, World!</b>\n  ```\n</details>\n\n#### Strikethrough\n_`<s>`_\n\n##### Standard:\n\n```tsx\nconst string = <s>Hello, World!</s>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ~~Hello, World!~~\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <s html>Hello, World!</s>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <s>Hello, World!</s>\n  ```\n</details>\n\n#### Code\n_`<code>`_\n\n##### Standard:\n\n```tsx\nconst string = <code>Hello, World!</code>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  `Hello, World!`\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <code html>Hello, World!</code>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <code>Hello, World!</code>\n  ```\n</details>\n\n<h3 id=\"miscellaneous-html\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Miscellaneous</h3>\n\n#### Span\n_`<span>`_\n\n##### Standard:\n\nWhen rendered as text, `<span>` simply renders its children like `<text>`:\n\n```tsx\nconst string = <span>Hello, World!</span>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <span html>Hello, World!</span>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <span>Hello, World!</span>\n  ```\n</details>\n\n#### Paragraph\n_`<p>`_\n\n##### Standard:\n\nWhen rendered as text, the paragraph tag adds a newline at the end of the element:\n\n```tsx\nconst string = <p>Hello, World!</p>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <p html>Hello, World!</p>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <p>Hello, World!</p>\n  ```\n</details>\n\n#### Blockquote\n_`<blockquote>`_\n\n##### Standard:\n\n```tsx\nconst string = (\n  <blockquote join={\"\\n\"}>\n    <text>Hello</text>\n    <empty />\n    <text>World!</text>\n  </blockquote>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  > Hello\n  >\n  > World!\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <blockquote html>Hello, World!</blockquote>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <blockquote>Hello, World!</blockquote>\n  ```\n</details>\n\n#### Quote\n_`<q>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **type**\n```tsx\n/**\n * @default \"double\"\n */\ntype?: \"single\" | \"double\" | \"backtick\";\n```\n---\n</details>\n\n##### Standard:\n\nThe quote element returns a triple quote if the children contain a newline, otherwise it returns a single quote.\n\n###### Single Line\n\n```tsx\nconst string = <q>Hello, World!</q>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  \"Hello, World!\"\n  ```\n</details>\n\n###### Multi Line\n\n```tsx\nconst string = <q>Hello<br />World</q>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  \"\"\"\n  Hello, World!\n  \"\"\"\n  ```\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <q html>Hello, World!</q>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <q>Hello, World!</q>\n  ```\n</details>\n\n#### Pre\n_`<pre>`_\n\n##### Standard:\n\n```tsx\nconst string = <pre>Hello, World!</pre>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n  <pre>```<br />Hello, World!<br />```</pre>\n</details>\n\n##### HTML:\n\n```tsx\nconst string = <pre html>Hello, World!</pre>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  <pre>Hello, World!</pre>\n  ```\n</details>\n\n<h2 id=\"serialization-elements\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Serialization Elements</h2>\n\n<h3 id=\"primitives\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Primitives</h3>\n\n#### Num\n_`<num>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **add**\n```tsx\n/**\n * Add a value to the number.\n */\nadd?: number;\n```\n- **min**\n```tsx\n/**\n * Minimum value. Applied after `add`.\n */\nmin?: number;\n```\n- **max**\n```tsx\n/**\n * Maximum value. Applied after `add`.\n */\nmax?: number;\n```\n- **fixed**\n```tsx\n/**\n * Number of decimal places.\n */\nfixed?: number;\n```\n---\n</details>\n\n```tsx\nconst string = <num fixed={2}>1</num>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  1.00\n  ```\n</details>\n\n```tsx\nconst string = <num min={1}>0</num>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  1\n  ```\n</details>\n\n<h3 id=\"dates\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Dates</h3>\n\n#### Datetime\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **dateFormat**\n```tsx\n/**\n * @default \"short\"\n */\ndateFormat?: \"long\" | \"medium\" | \"short\" | \"full\";\n```\n- **timeFormat**\n```tsx\n/**\n * @default \"short\"\n */\ntimeFormat?: \"long\" | \"medium\" | \"short\" | \"full\";\n```\n---\n</details>\n\n```tsx\nconst string = <datetime />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  September 23, 2023 at 5:17 PM\n  ```\n</details>\n\n#### Date\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **format**\n```tsx\n/**\n * @default \"short\"\n */\nformat?: \"long\" | \"medium\" | \"short\" | \"full\";\n```\n---\n</details>\n\n```tsx\nconst string = <date />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  September 23, 2023\n  ```\n</details>\n\n#### Time\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **format**\n```tsx\n/**\n * @default \"short\"\n */\nformat?: \"long\" | \"medium\" | \"short\" | \"full\";\n```\n---\n</details>\n\n```tsx\nconst string = <time />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  5:17 PM\n  ```\n</details>\n\n#### Year\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n---\n</details>\n\n```tsx\nconst string = <year />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  2023\n  ```\n</details>\n\n#### Month\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **format**\n```tsx\n/**\n * @default \"number\"\n */\nformat?: \"number\" | \"long\" | \"short\" | \"narrow\";\n```\n---\n</details>\n\n```tsx\nconst string = <month />\n```\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  8\n  ```\n</details>\n\n```tsx\nconst string = <month format=\"long\" />\n```\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  September\n  ```\n</details>\n\n```tsx\nconst string = <month format=\"short\" />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Sep\n  ```\n</details>\n\n```tsx\nconst string = <month format=\"narrow\" />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  S\n  ```\n</details>\n\n#### Day\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **format**\n```tsx\n/**\n * @default \"number\"\n */\nformat?: \"number\" | \"long\" | \"short\" | \"narrow\";\n```\n---\n</details>\n\n```tsx\nconst string = <day />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  6\n  ```\n</details>\n\n```tsx\nconst string = <day format=\"long\" />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Saturday\n  ```\n</details>\n\n```tsx\nconst string = <day format=\"short\" />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Sat\n  ```\n</details>\n\n```tsx\nconst string = <day format=\"narrow\" />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  S\n  ```\n</details>\n\n#### Hour\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **cycle**\n```tsx\n/**\n * @default \"12\"\n */\ncycle?: \"12\" | \"24\";\n```\n---\n</details>\n\n```tsx\nconst string = <hour />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  5\n  ```\n</details>\n\n```tsx\nconst string = <hour cycle=\"24\">\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  17\n  ```\n</details>\n\n#### Minute\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n---\n</details>\n\n```tsx\nconst string = <minute />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  42\n  ```\n</details>\n\n#### Second\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n---\n</details>\n\n```tsx\nconst string = <second />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  42\n  ```\n</details>\n\n#### Millisecond\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n---\n</details>\n\n```tsx\nconst string = <millisecond />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  999\n  ```\n</details>\n\n#### Duration\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **value**\n```tsx\n/**\n * The end of the duration.\n * @default Date.now()\n */\nvalue?: Date | string | number;\n```\n- **since**\n```tsx\n/**\n * The start of the duration.\n */\nsince: Date | string | number;\n```\n---\n</details>\n\n```tsx\nconst string = <duration since={\"September 2021\"} />\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  2 years\n  ```\n</details>\n\n<h3 id=\"objects\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Objects</h3>\n\n#### JSON\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **data**\n```tsx\n/**\n * The data to stringify.\n */\ndata: NestedOptionalJSONValue;\n```\n- **pretty**\n```tsx\n/**\n * @default false\n */\npretty?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = <json data={{ Hello: \"World\" }} pretty />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  {\n    \"Hello\": \"World\"\n  }\n  ```\n</details>\n\n#### YAML\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **data**\n```tsx\n/**\n * The data to stringify.\n */\ndata: NestedOptionalJSONValue;\n```\n- **noStartMarker**\n```tsx\n/**\n * @default false\n */\nnoStartMarker?: boolean;\n```\n- **sequenceIndent**\n```tsx\n/**\n * @default false\n */\nsequenceIndent?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = <yaml data={{ hello: \"world\" }} />;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  ---\n  hello: world\n  ```\n</details>\n\n<h2 id=\"utility-elements\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Utility Elements</h2>\n\n<h3 id=\"casing\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Casing</h3>\n\n#### Upper\n\n_`<upper>`_\n\n```tsx\nconst string = <upper>Hello, World!</upper>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  HELLO, WORLD!\n  ```\n</details>\n\n#### Lower\n\n_`<lower>`_\n\n```tsx\nconst string = <lower>Hello, World!</lower>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  hello, world!\n  ```\n</details>\n\n#### Capital\n\n_`<capital>`_\n\n```tsx\nconst string = <capital>hello, world!</capital>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, world!\n  ```\n</details>\n\n#### Title\n\n_`<title>`_\n\n```tsx\nconst string = <title>hello, world!</title>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n<h3 id=\"affixes\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Affixes</h3>\n\n#### Trim\n\n```tsx\n// \"Hello, World!\"\nconst string = <trim>Hello, World! </trim>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n#### Frame\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **with**\n```tsx\n/**\n * A value to apply to both `prefix` and `suffix`.\n */\nwith: Prxmpt.Children;\n```\n---\n</details>\n\n```tsx\nconst string = <frame with=\"--\">Hello, World! </frame>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  -- Hello, World! --\n  ```\n</details>\n\n<h3 id=\"joins\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Joins</h3>\n\n#### Lined\n_`<lined>`_\n\n```tsx\nconst string = (\n  <lined>\n    <text>Hello</text>\n    <text>World!</text>\n  </lined>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello\n  World!\n  ```\n</details>\n\n#### Spaced\n_`<spaced>`_\n\n```tsx\nconst string = (\n  <spaced>\n    <text>Hello</text>\n    <text>World!</text>\n  </spaced>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello World!\n  ```\n</details>\n\n#### Comma-Separated List\n_`<csl>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **noSpace**\n```tsx\n/**\n * @default false\n */\nnoSpace?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <csl>\n    <text>hello</text>\n    <text>world</text>\n  </csl>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  hello, world\n  ```\n</details>\n\n```tsx\nconst string = (\n  <csl noSpace>\n    <text>hello</text>\n    <text>world</text>\n  </csl>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  hello,world\n  ```\n</details>\n\n#### Union\n_`<union>`_\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **noSpace**\n```tsx\n/**\n * @default false\n */\nnoSpace?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <union>\n    <text>hello</text>\n    <text>world</text>\n  </union>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  hello | world\n  ```\n</details>\n\n```tsx\nconst string = (\n  <union noSpace>\n    <text>hello</text>\n    <text>world</text>\n  </union>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  hello|world\n  ```\n</details>\n\n\n#### Sectioned\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **divider**\n```tsx\n/**\n * @default \"---\"\n */\ndivider?: string;\n```\n- **frame**\n```tsx\n/**\n * Whether add dividers before and after the body.\n * @default false\n */\nframe?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <sectioned>\n    <text>Hello</text>\n    <text>World!</text>\n  </sectioned>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello\n  ---\n  World!\n  ```\n</details>\n\n<h3 id=\"sets\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Sets</h3>\n\nSets automatically adjust the separators used based on the number of children provided.\n\n#### And\n_`<and>`_\n\n```tsx\nconst string = (\n  <and>\n    <text>a</text>\n  </and>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a\n  ```\n</details>\n\n```tsx\nconst string = (\n  <and>\n    <text>a</text>\n    <text>b</text>\n  </and>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a and b\n  ```\n</details>\n\n```tsx\nconst string = (\n  <and>\n    <text>a</text>\n    <text>b</text>\n    <text>c</text>\n  </and>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a, b, and c\n  ```\n</details>\n\n#### And / Or\n_`<andor>`_\n\n```tsx\nconst string = (\n  <andor>\n    <text>a</text>\n    <text>b</text>\n    <text>c</text>\n  </andor>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a, b, and/or c\n  ```\n</details>\n\n#### Or\n_`<or>`_\n\n```tsx\nconst string = (\n  <or>\n    <text>a</text>\n    <text>b</text>\n    <text>c</text>\n  </or>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a, b, or c\n  ```\n</details>\n\n#### Nor\n_`<nor>`_\n\n```tsx\nconst string = (\n  <nor>\n    <text>a</text>\n    <text>b</text>\n    <text>c</text>\n  </nor>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  a, b, nor c\n  ```\n</details>\n\n<h3 id=\"limiters\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Limiters</h3>\n\n#### Cap\n\nThe `<cap>` element allows you to limit the length of a string by providing a `splitter` function and a `max` number of \"units\" to allow.\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **max**\n```tsx\n/**\n * The maximum \"units\" to include.\n * @default Infinity\n */\nmax?: number;\n```\n- **splitter**\n```tsx\n/**\n * A function that splits a string into \"units\".\n * @default \"chars\"\n */\nsplitter?: \"paragraphs\" | \"lines\" | \"spaces\" | \"words\" | \"commas\" | \"chars\" | (string: string) => string[];\n```\n- **ellipsis**\n```tsx\n/**\n * A string to append to the end if the maximum is reached.\n * This string is included in the maximum count.\n * If `true`, \"...\" is used.\n * @default undefined\n */\nellipsis?: string | true;\n```\n---\n</details>\n\n```tsx\nconst string = <cap max={5}>Hello, World!</cap>;\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello\n  ```\n</details>\n\n#### Priority\n\nThe `<priority>` element is like a width-based [CSS media query](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries) for strings.\n\nInstead of providing a list of children, `<priority>` expects a list of items, each of which can have a priority. Higher priorities are rendered first (like `z-index` in CSS), and each item has a default priority of 0. Several strategies are provided as well for fine-tuning how items are prioritiezed.\n\nPriority elements can also be nested, which enable extremely fine-grained control over which content is rendered. Several examples are provided in the [priority example directory](https://github.com/AutosseyAI/prxmpt/tree/main/examples/priority).\n\n<details>\n  <summary><b>Props</b></summary>\n\n---\n- **max**\n```tsx\n/**\n * The maximum \"units\" to include.\n * @default Infinity\n */\nmax?: number;\n```\n- **counter**\n```tsx\n/**\n * A function that returns the number of \"units\" in a string.\n * @default (string: string) => string.length\n */\ncounter?: (string: string) => number;\n```\n- **items**\n```tsx\n/**\n * The items to render, in order of priority.\n */\nitems: (Prxmpt.Children | {\n  /**\n   * The priority of this item. Higher priority items are included first.\n   * @default 0\n   */\n  p?: number;\n  /**\n   * The content to render.\n   */\n  content: ((capacity: number) => Prxmpt.Children) | Prxmpt.Children;\n})[];\n```\n- **strategy**\n\n> The strategy to use when prioritizing items.<br />If multiple strategies are provided, subsequent strategies are tried in order to break ties.\n\n`\"priority\"`:\n\n_Prioritize items by the provided priority.<br />Once the maximum is reached, continue to check if remaining items fit._\n\n`\"order-asc\"`:\n\n_Prioritize items by the order provided.<br />Once the maximum is reached, continue to check if remaining items fit._\n\n`\"order-desc\"`:\n\n_Prioritize items in reverse of the order provided.<br />Once the maximum is reached, continue to check if remaining items fit._\n\n`\"size-asc\"`:\n\n_Prioritize items in size order, smallest to largest.<br />Use if you want to include as many items as possible._\n\n`\"size-desc\"`:\n\n_Prioritized items in size order, largest to smallest.<br />Use if you want to include as few items as possible._\n```tsx\n/**\n * @default [\"priority\", \"order-asc\"]\n */\nstrategy?: PriorityStrategy | PriorityStrategy[];\n```\n- **noSkip**\n```tsx\n/**\n  * If `true`, do not skip items after the maximum is reached.\n  * @default false\n  */\nnoSkip?: boolean;\n```\n---\n</details>\n\n```tsx\nconst string = (\n  <priority\n    max={15}\n    join={\"\\n\"}\n    items={[{\n      p: 2\n      content: \"Test 1\"\n    }, {\n      // p: 0 is the default\n      content: \"This is a a super long string that won't fit.\"\n    }, {\n      p: 1,\n      content: \"Test 3\"\n    }]} />\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Test 1\n  Test 3\n  ```\n</details>\n\n<h2 id=\"exports\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Exports</h2>\n\n<h3 id=\"rendering\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Rendering</h3>\n\n#### `createElement`\n\n```tsx\nimport { createElement } from \"@autossey/prxmpt\";\n\nconst string = createElement(\"text\", {}, \"Hello, World!\");\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n#### `render`\n\n```tsx\nimport { render } from \"@autossey/prxmpt\";\n\nconst string = render(\n  <text>Hello, World!</text>\n);\n```\n\n<details open>\n  <summary><i>Result</i></summary>\n\n  ```\n  Hello, World!\n  ```\n</details>\n\n<h3 id=\"children\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Children</h3>\n\n#### `hasChildren`\n\nReturns `true` if the provided props object has a `children` property.\n\n```tsx\nimport { hasChildren } from \"@autossey/prxmpt\";\n\nif(hasChildren({ children: \"Hello, World!\" })) {\n  // ...\n}\n```\n\n#### `isChildren`\n\nReturns `true` if the provided value is a valid Prxmpt element child.\n\n```tsx\nimport { isChildren } from \"@autossey/prxmpt\";\n\nif(isChildren(\"Hello, World!\")) {\n  // ...\n}\n```\n\n<h3 id=\"splitters\"><div align=\"right\"><a href=\"#elements\">🔝</a></div>Splitters</h3>\n\n#### `split`\n\nSplit `children` on `separator`. If `separator` is `undefined`, no splitting occurs.\n\n```tsx\nimport { split } from \"@autossey/prxmpt\";\n\nconst children = (\n  <lined>\n    <text>Hello</text>\n    <text>World!</text>\n  </lined>\n);\n\n// [\"Hello\", \"World!\"]\n\nconst strings = split(children, \"\\n\");\n```\n\n#### `paragraphs`\n\nSplit `children` on `\"\\n\\n\"`.\n\n#### `lines`\n\nSplit `children` on `\"\\n\"`.\n\n#### `spaces`\n\nSplit `children` on whitespace.\n\n#### `words`\n\nSplit `children` on word boundaries.\n\n#### `commas`\n\nSplit `children` on `\",\"`.\n\n#### `characters`\n\nSplit `children` on `\"\"`.\n\n<br />\n\n<h2 id=\"dependencies\">Dependencies<a href=\"https://www.npmjs.com/package/clee?activeTab=dependencies\"><img align=\"right\" alt=\"dependencies\" src=\"https://img.shields.io/librariesio/release/npm/clee.svg\"></a></h2>\n\n- [@swc/core](https://www.npmjs.com/package/@swc/core): Super-fast alternative for babel\n- [as-typed-array](https://www.npmjs.com/package/as-typed-array): Make any value an array\n- [types-json](https://www.npmjs.com/package/types-json): Type checking for JSON objects\n- [yaml](https://www.npmjs.com/package/yaml): JavaScript parser and stringifier for YAML\n\n<h3 id=\"dev-dependencies\">Dev Dependencies</h3>\n\n- [@autossey/eslint-config](https://www.npmjs.com/package/@autossey/eslint-config): A base for projects that use ESLint.\n- [@autossey/tsconfig](https://www.npmjs.com/package/@autossey/tsconfig): A collection of base TSConfigs for various types of projects.\n- [@jest/globals](https://www.npmjs.com/package/@jest/globals)\n- [@swc/jest](https://www.npmjs.com/package/@swc/jest): Swc integration for jest\n- [@types/node](https://www.npmjs.com/package/@types/node): TypeScript definitions for Node.js\n- [eslint](https://www.npmjs.com/package/eslint): An AST-based pattern checker for JavaScript.\n- [jest](https://www.npmjs.com/package/jest): Delightful JavaScript Testing.\n- [typescript](https://www.npmjs.com/package/typescript): TypeScript is a language for application scale JavaScript development\n\n<br />\n\n<h2 id=\"license\">License <a href=\"https://opensource.org/licenses/MIT\"><img align=\"right\" alt=\"license\" src=\"https://img.shields.io/npm/l/@autossey/prxmpt.svg\"></a></h2>\n\n[MIT](https://opensource.org/licenses/MIT) - _The MIT License_\n\n","readmeFilename":"README.md","homepage":"https://github.com/AutosseyAI/prxmpt#readme","keywords":["prompt","prxmpt","autossey","ai","openai","jsx"],"repository":{"type":"git","url":"git+https://github.com/AutosseyAI/prxmpt.git"},"bugs":{"url":"https://github.com/AutosseyAI/prxmpt/issues"}}