open-index/open-npm huggingface dataset:
npm package: @retronav/ixora
Description: An extension pack to make interactive markdown editors using CodeMirror 6.
Author: Pranav Karawale
Latest version: 0.3.3

<p align="center">
    <img
    height="150px"
    src="https://codeberg.org/retronav/ixora/raw/branch/main/assets/logo.svg"
    alt="Ixora logo" />
</p>

# Ixora

[![CI build](https://ci.codeberg.org/api/badges/retronav/ixora/status.svg)](https://ci.codeberg.org/retronav/ixora)
[![npm version](https://img.shields.io/npm/v/@retronav/ixora?logo=npm&style=flat)](https://www.npmjs.com/package/@retronav/ixora)

> WARNING: Ixora is under heavy development, but is quite usable.

Ixora is a CodeMirror 6 extension pack to make writing
Markdown fun and beautiful.

This library includes:

-   Proper heading font sizes
-   Hidden decoration marks (`*italic*` -> `italic` but style is preserved)
-   Auto link detection
-   Support for ID links (eg. `[Foo bar](#foo-bar)`)
-   YAML frontmatter support
-   Styling for lots of Markdown elements
-   [Lots more?](./TODO.md)

## Installation

1. Install the `@retronav/ixora` package using the package manager
   of your choice.
2. Import the extensions you need
    ```ts
    import { headings, codeblock, list } from '@retronav/ixora';
    ```
    Or import all of them at once
    ```ts
    import ixora from '@retronav/ixora';
    ```
3. Add them in the `extensions` parameter of your CodeMirror editor creation
   function.

    ```ts
    const editor = new EditorView({
    	state: EditorState.create({
    		extensions: [
    			// If you import all at once
    			ixora,

    			// ...

    			// If you import indivivually
    			headings(),
    			codeblock(),
    			lists()

    			// ...
    		]
    	})
    });
    ```

Check `test/util.ts` for an example of how to use Ixora with CodeMirror.

# Additional information

## License

The source code is licensed under the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).

The artwork is licensed under
[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

## The logo

The logo of this project is derived from
[the Markdown Mark](https://dcurt.is/the-markdown-mark)
by [Dustin Curtis](https://dcurt.is/). The logo uses the color #FF2400
(scarlet). Instead of the arrow pointing downward, there is an
ixora flower beside the "M" which can be thought of as an arrow pointing upward.
npm package: @retronav/rehype-shiki
Description: Rehype plugin to highlight your code blocks with Shiki
Author: Pranav Karawale
Latest version: 1.0.2

# `@retronav/rehype-shiki`

Rehype plugin to highlight your code blocks with [Shiki](https://shiki.matsu.io).

# Features

- Supports both `pre` (markdown codeblocks) and `raw` (raw HTML) nodes.
- Allows you to use your own Shiki highlighter with customizations.
- Shiki is added as a `peerDependency`, which means no locking on a particular
  version.

# Usage

Check [index.test.ts](./src/index.test.ts) for various use cases.
This plugin uses the `class` attribute on the code element to determine the
language of the codeblock. Example of a codeblock which is parsed by
`remark-rehype` from markdown and works with this plugin:

```html
<pre>
    <code class="language-typescript">
    const foo = 'bar';
    </code>
</pre>
```

# Inspiration

Much of the plugin's interface is inspired by [`@leafac/rehype-shiki`](https://github.com/leafac/rehype-shiki).
npm package: @retronav/rosette
Description: Get Notion databases in a structured format and convert Notion pages to HTML.
Author: Pranav Karawale
Latest version: 0.1.2

<p align="center">
  <img src="./assets/logo.png" alt="Rosette logo">
</p>

# Rosette

Rosette is a library that transforms Notion pages into structured JSON and HTML, turning Notion into a lightweight, elegant CMS. Just like a rosette, clean, beautiful, structured.

## Installation

```bash
npm install @retronav/rosette
```

## Usage

First, you'll need a Notion API key and a database ID. You can get your API key from [Notion's integrations page](https://www.notion.so/my-integrations).

```typescript
import { NotionDatabaseManager, properties } from "@retronav/rosette";
import { Client } from "@notionhq/client";
import { z } from "zod";

// 1. Initialize the Notion client
const notion = new Client({ auth: process.env.NOTION_API_KEY });

// 2. Define your database schema using Zod and Rosette's schema helpers
const mySchema = z.object({
  Title: properties.title, // For 'Title' property
  Description: properties.text, // For 'Text' or 'Rich Text' property
  Date: properties.date, // For 'Date' property
  Tags: properties.multiSelect, // For 'Multi-select' property
  Published: properties.checkbox // For 'Checkbox' property
  // Add more properties as needed, matching your Notion database structure
});

// 3. Create a NotionDatabaseManager instance
const databaseId = "your-notion-database-id";
const manager = new NotionDatabaseManager(notion, mySchema, databaseId);

// 4. Process the database entries
async function main() {
  try {
    const entries = await manager.process({
      // Optional: Add a filter if needed
      // filter: {
      //   property: 'Published',
      //   checkbox: {
      //     equals: true,
      //   },
      // },
      // Optional: Customize slug generation
      // slugger: (properties) => customSlugifyFunction(properties.Title),
    });

    entries.forEach((entry, id) => {
      console.log("Entry ID:", id);
      console.log("Properties:", entry.properties); // Parsed and typed according to your schema
      console.log("HTML Content:", entry.content); // HTML content of the Notion page
    });
  } catch (error) {
    console.error("Failed to process Notion database:", error);
  }
}

main();
```
npm package: @retronav/thicket
Description: Components and utilities used by Thicket
Author: Pranav Karawale
Latest version: 1.1.0

![Screenshot of Thicket](https://github.com/retronav/thicket/raw/main/public/screenshot.png)

# Thicket

Your own digital garden, powered by [Astro](https://astro.build).

# Features

- Network Graph
- Search for nodes and headings
- Blazingly(?) fast (thanks to Astro!)
- Light and Dark modes that switch according to device theme
- Support for Wikilinks
- Customizable by default, BYOC (bring your own colors)!
- Modular Code (probably)
- Tagging nodes
- and much more...!

Read more to know
[how to install Thicket](https://thicket.retronav.vercel.app/Docs/Installation)
and make your own digital garden! (yes, the docs also use Thicket!)

You can also install the components and utilities used in Thicket as an NPM
package: `@retronav/thicket`.

## Demo

To experience Thicket, you can visit
[this link](https://thicket.retronav.vercel.app/).