{"id":17124944,"url":"https://github.com/shellyln/zirconia","last_synced_at":"2026-06-20T23:31:24.513Z","repository":{"id":74004388,"uuid":"315043126","full_name":"shellyln/zirconia","owner":"shellyln","description":"Report rendering library for Salesforce LWC and Visualforce","archived":false,"fork":false,"pushed_at":"2021-12-14T12:20:24.000Z","size":3095,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-24T07:04:39.448Z","etag":null,"topics":["chartjs","html","lex","lightning","lisp","lsx","lwc","plantuml","qrcode","reporting","reporting-tool","salesforce","visualforce"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shellyln.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-22T13:23:53.000Z","updated_at":"2021-12-14T12:20:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba718e2f-7bda-4842-9fce-05f54920667c","html_url":"https://github.com/shellyln/zirconia","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shellyln/zirconia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellyln%2Fzirconia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellyln%2Fzirconia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellyln%2Fzirconia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellyln%2Fzirconia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shellyln","download_url":"https://codeload.github.com/shellyln/zirconia/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellyln%2Fzirconia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34589204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chartjs","html","lex","lightning","lisp","lsx","lwc","plantuml","qrcode","reporting","reporting-tool","salesforce","visualforce"],"created_at":"2024-10-14T18:43:45.293Z","updated_at":"2026-06-20T23:31:24.492Z","avatar_url":"https://github.com/shellyln.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 💎 Zirconia\n## Report rendering library for Salesforce LWC and Visualforce\n\nYou can easily build the complex documents written in [Markdown](https://github.com/markdown-it/markdown-it), HTML, and [LSX](https://github.com/shellyln/liyad#what-is-lsx)\nthat including images, [charts](https://www.chartjs.org/), [UML diagrams](http://plantuml.com/), [barcodes and 2d codes (QR Code)](https://github.com/shellyln/red-agate/tree/master/packages/red-agate-barcode).  \nAnd get the output as a HTML that packed into the single file.  \nZirconia is powered by [Ménneu](https://github.com/shellyln/menneu) document processor.\n\n## 💡 Examples of report template\n\nSee https://github.com/shellyln/menneu/tree/master/examples and  \n`force-app/main/default/staticresources/ZrO2ReportExamples`\n\n\u003ctable align=\"center\"\u003e\n  \u003ctbody\u003e\n    \u003ctr align=\"center\"\u003e\n      \u003ctd style=\"width:33%\"\u003e\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-markdown.pdf\"\u003e\n          \u003cimg src=\"https://shellyln.github.io/menneu/assets/pdf/example-markdown.png\" style=\"max-width:100%;\"\u003e\n        \u003c/a\u003e\n        Markdown Demo\n        \u003ca href=\"https://github.com/shellyln/menneu/tree/master/examples/markdown-demo\"\u003e\n          source\n        \u003c/a\u003e\n        /\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-markdown.pdf\"\u003e\n          pdf\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"33%\"\u003e\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-bill.pdf\"\u003e\n          \u003cimg src=\"https://shellyln.github.io/menneu/assets/pdf/example-bill.png\" style=\"max-width:100%;\"\u003e\n        \u003c/a\u003e\n        Billing Statement\n        \u003ca href=\"https://github.com/shellyln/menneu/tree/master/examples/billing\"\u003e\n          source\n        \u003c/a\u003e\n        /\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-bill.pdf\"\u003e\n          pdf\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"33%\"\u003e\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-html.pdf\"\u003e\n          \u003cimg src=\"https://shellyln.github.io/menneu/assets/pdf/example-html.png\" style=\"max-width:100%;\"\u003e\n        \u003c/a\u003e\n        HTML Demo\n        \u003ca href=\"https://github.com/shellyln/menneu/tree/master/examples/html-demo\"\u003e\n          source\n        \u003c/a\u003e\n        /\n        \u003ca href=\"https://shellyln.github.io/menneu/assets/pdf/example-html.pdf\"\u003e\n          pdf\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"text-align:center\"\u003e\n        Testing the basic and extended markdown syntaxes.\n      \u003c/td\u003e\n      \u003ctd style=\"text-align:center\"\u003e\n        Reporting example that markuped up with Lisp LSX syntax.\n      \u003c/td\u003e\n      \u003ctd style=\"text-align:center\"\u003e\n        Testing the html template that embedding Lisp LSX.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## 💡 LSX Language reference\n\nSee [https://github.com/shellyln/liyad#what-is-lsx](https://github.com/shellyln/liyad#what-is-lsx)\n\n\n## 📝 Visual editors\n\n* [Ménneu Playground](https://shellyln.github.io/menneu/playground.html)\n    * Report definition\n      ```md\n      %%%($=for $data \"\"\"\n      # %%%($last ::$data:Name)\n      \"\"\")\n      ## h2\n      ### h3\n      ```\n    * Preview data\n      ```json\n      [{\"Id\":\"1\",\"Name\":\"Foo\"},{\"Id\":\"2\",\"Name\":\"Bar\"}]\n      ```\n\n* [MDNE Online](https://shellyln.github.io/mdne/#filename=Untitled.md\u0026open.d=eJwDAAAAAAE)\n    * Report definition and Preview data\n      ```md\n      \u003c!--- Preview data --\u003e\n      %%%($last\n          ($let $data ($list\n              (# (\"Id\" \"1\")(\"Name\" \"Foo\"))\n              (# (\"Id\" \"2\")(\"Name\" \"Bar\")) )) nil)\n      \n      \u003c!--- Report definition --\u003e\n      %%%($=for $data \"\"\"\n      # %%%($last ::$data:Name)\n      \"\"\")\n      ## h2\n      ### h3\n      ```\n        * Turn on the `Scripting` switch\n\n* [MDNE Desktop app](https://github.com/shellyln/mdne-electron) ([Electron standalone app](https://github.com/shellyln/mdne-electron)), ([for Node.js+Chrome](https://github.com/shellyln/mdne)),\n    * `path/to/report-def.md`\n      ```md\n      %%%($=for $data \"\"\"\n      # %%%($last ::$data:Name)\n      \"\"\")\n      ## h2\n      ### h3\n      ```\n    * `path/to/report-def.data.json`\n      ```json\n      [{\"Id\":\"1\",\"Name\":\"Foo\"},{\"Id\":\"2\",\"Name\":\"Bar\"}]\n      ```\n        * Turn on the `Scripting` switch\n\n## ⚙️ Setup a deployment and contribution environment\n\n```bash\ngit clone https://github.com/shellyln/zirconia.git\ncd zirconia\ngit checkout -b my-package-releases\n\n# Authorize a Dev-Hub org (if you haven't already done).\nsfdx force:auth:web:login \\\n    --setdefaultdevhubusername \\\n    --setalias my-hub-org\n\nsfdx force:org:create \\\n    --definitionfile config/project-scratch-def.json \\\n    --setalias ZirconiaOrg \\\n    --durationdays 30 \\\n    --setdefaultusername\n\nsfdx force:alias:list\nsfdx force:org:list\n\nnpm install\n\nsfdx force:source:push\nsfdx force:org:open\n\n# and try it!\n```\n\n## 📖 Usage\n\n### 🟢 Object detail reports with LWC\n\n1. Open object detail view page.\n1. Click `⚙️Setup` menu and click `Edit page`.\n1. Select `Components \u003e Custom \u003e ZrO2RefreshViewMessageBroker` from Left pane, and drop to any top level panel of right pane.\n1. Select `Components \u003e Custom \u003e zrO2SingleRecordProvider` from Left pane, and drop to any panel of right pane you want to place a `Print` button.\n1. Set `zrO2SingleRecordProvider` properties:\n    | Field            | Value |\n    |------------------|-------|\n    | reportName       | `example` |\n    | resourceName     | `ZrO2ReportExamples` (static resource name) |\n    | resourceFileName | `example-lwc-detail.md`, `example-lwc-detail-chart.md`, or something you created |\n    | reportFormat     | `md` (select from `md` \\| `md-fragment` \\| `lisp` \\| `html`) |\n    | commands         | `print,download,attach+navigate` (select from `print` \\| `download` \\| `attach` \\| `attach+navigate` \\| `event`) |\n    | buttonCaption    | `Print` |\n    | buttonVariant    | `brand` (select from `neutral` \\| `brand` \\| `outline-brand` \\| `destructive` \\| `text-destructive` \\| `success`) |\n    * To query the relationships, create a new LWC with `zrO2SingleRecordProvider` as the boilerplate.\n1. If you haven't activated this flexi page yet, click the `Activation...` button.\n1. Click `Save` button.\n\n### 🟢 Object detail reports with Visualforce (VF Button)\n\n1. Click `⚙️Setup` menu and click `⚙️Setup`.\n1. Open `Object Manager` and select the object you want to add report. (e.g.: `Account`)\n1. Select `Buttons, Links, and Actions` menu and click `New Button or Link` button.\n1. Set properties and save:\n    | Field          | Value |\n    |----------------|-------|\n    | Display Type   | Detail Page Button |\n    | Behavior       | Display in existing window with sidebar |\n    | Content Source | Visualforce Page |\n    | Content        | `ZrO2ExampleAccountDetailReport` or something you created |\n    * To change the target object, data querying condition, and report template,\n      create a new Visualforce Page with `ZrO2ExampleAccountDetailReport` as the boilerplate.\n1. Select `Page Layouts` menu and add the button to the page layouts.\n\n### 🟢 Object detail reports with Visualforce (VF Quick Action)\n\n1. Click `⚙️Setup` menu and click `⚙️Setup`.\n1. Open `Object Manager` and select the object you want to add report. (e.g.: `Account`)\n1. Select `Buttons, Links, and Actions` menu and click `New Action` button.\n1. Set properties and save:\n    | Field          | Value |\n    |----------------|-------|\n    | Action Type    | Custom Visualforce |\n    | Visualforce Page | `ZrO2ExampleAccountDetailReport` or something you created |\n    * To change the target object, data querying condition, and report template,\n      create a new Visualforce Page with `ZrO2ExampleAccountDetailReport` as the boilerplate.\n1. Select `Page Layouts` menu and add the Quick Action to the page layouts.\n\n### 🟢 Object list reports with Visualforce\n\n1. Click `⚙️Setup` menu and click `⚙️Setup`.\n1. Open `Object Manager` and select the object you want to add report. (e.g.: `Account`)\n1. Select `Buttons, Links, and Actions` menu and click `New Button or Link` button.\n1. Set properties and save:\n    | Field          | Value |\n    |----------------|-------|\n    | Display Type   | List Button |\n    | \u0026nbsp;\u0026nbsp;Display Checkboxes | X |\n    | Behavior       | Display in existing window with sidebar |\n    | Content Source | Visualforce Page |\n    | Content        | `ZrO2ExampleAccountListReport` or something you created |\n    * To change the target object, data querying condition, and report template,\n      create a new Visualforce Page with `ZrO2ExampleAccountListReport` as the boilerplate.\n1. Select `Search Layouts` menu and add the button to the list layouts.\n1. Select `Search Layouts for Salesforce Classic` menu and add the button to the `List View` layouts.\n\n## 📦 Deploy the package (pre-release)\n\n```bash\nsfdx force:org:list\n\n# Specify the `USERNAME` or` ALIAS` of the DevHub org listed in the above command.\nsfdx force:package:create \\\n    -n Zirconia \\\n    -d \"Report rendering library for Salesforce LWC and Visualforce\" \\\n    -r force-app \\\n    -t Unlocked \\\n    -v \u003cdevhub_org_username_or_alias\u003e\n\nsfdx force:package:list\n\ncat sfdx-project.json\n\nsfdx force:package:version:create \\\n    -p Zirconia \\\n    -d force-app \\\n    -k test1234 \\\n    -v \u003cdevhub_org_username_or_alias\u003e \\\n    --codecoverage \\\n    --wait 10\n\nsfdx force:package:version:list --verbose\n\ngit add .\ngit commit -m \"v0.1.0-1\"\n\n# Install the package in your developer or sandbox org for testing.\nsfdx force:package:install \\\n    -u \u003ctarget_dev_or_sandbox_org_username_or_alias\u003e \\\n    --package Zirconia@0.1.0-1 \\\n    -k test1234 \\\n    --wait 10 \\\n    --publishwait 10 \\\n    --noprompt\n```\n\n## 🚀 Deploy the package (production-release)\n\n```bash\n# Promote the package version to production.\nsfdx force:package:version:promote \\\n    -p Zirconia@0.1.0-1 \\\n    -v \u003cdevhub_org_username_or_alias\u003e\n\n# Install the package in your production org.\nsfdx force:package:install \\\n    -u \u003ctarget_org_username_or_alias\u003e \\\n    --package Zirconia@0.1.0-1 \\\n    -k test1234 \\\n    --wait 10 \\\n    --publishwait 10 \\\n    --noprompt\n```\n\n## 🚧 Manage the package and package versions\n\n```bash\nsfdx force:package:version:list --verbose\nsfdx force:package:version:delete -p 04tXXX\nsfdx force:package:delete -p 0HoXXX\n```\n\n\n---\n\n## ⚖️ License\n[MIT](https://github.com/shellyln/zirconia/blob/master/LICENSE.md)  \nCopyright (c) 2020 Shellyl_N and Authors\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellyln%2Fzirconia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshellyln%2Fzirconia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellyln%2Fzirconia/lists"}