├── .gitignore ├── LICENSE ├── README.md ├── debug ├── .gitignore └── panda.config.ts ├── demo ├── .gitignore ├── app │ ├── globals.css │ ├── layout.tsx │ └── page.tsx ├── next-env.d.ts ├── package.json ├── panda.config.ts ├── pnpm-lock.yaml ├── postcss.config.cjs └── tsconfig.json ├── package.json ├── pnpm-lock.yaml ├── src ├── constants.ts ├── index.ts ├── preset.ts ├── recipe.ts ├── semantic-tokens.ts ├── tailwind.ts └── types.ts ├── tsconfig.json └── tsup.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Milan de Kruijf. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Downloads][npm-shield]][npm-url] 2 | [![Contributors][contributors-shield]][contributors-url] 3 | [![Forks][forks-shield]][forks-url] 4 | [![Stargazers][stars-shield]][stars-url] 5 | [![Issues][issues-shield]][issues-url] 6 | [![MIT License][license-shield]][license-url] 7 | [![LinkedIn][linkedin-shield]][linkedin-url] 8 | 9 | # 🐼 PandaCSS preset for typography 10 | 11 | A [🐼 PandaCSS](https://panda-css.com/) typography preset inspired by the [TailwindCSS typography plugin](https://tailwindcss.com/docs/typography-plugin) 12 | 13 | ## Installation 14 | 15 | ```bash 16 | npm install --save-dev pandacss-preset-typography 17 | ``` 18 | 19 | ## Usage 20 | 21 | Add the preset to your PandaCSS configuration (`panda.config.ts`) 22 | 23 | ```ts 24 | import { defineConfig } from "@pandacss/dev"; 25 | 26 | // Import the preset. The name can be anything you want 27 | import typographyPreset from "pandacss-preset-typography"; 28 | 29 | export default defineConfig({ 30 | presets: [ 31 | typographyPreset(), 32 | // Re-add the panda presets if you want to keep 33 | // the default keyframes, breakpoints, tokens 34 | // and textStyles provided by PandaCSS 35 | "@pandacss/dev/presets", 36 | ], 37 | }); 38 | ``` 39 | 40 | ## Prose 41 | 42 | The preset generates a `prose` recipe for you that you can use to add beautiful typographic defaults to any vanilla HTML you don’t control, like HTML rendered from Markdown, or pulled from a CMS. 43 | 44 | ### Usage 45 | 46 | You can provide 5 different sizes: `sm`, `base`, `lg`, `xl` and `2xl`. If you provide no options, the default size is set as `base` or as whatever you've set it as in the options. 47 | 48 | ```tsx 49 | // Import it from wherever you export panda to, also make sure 50 | // you change the name 'prose' if you've set a custom name. 51 | import { prose } from "@pandacss/out/recipes"; 52 | 53 | export function Page() { 54 | return
; 55 | } 56 | ``` 57 | 58 | ### Lead 59 | 60 | Just like in TailwindCSS, there's also an extra `.lead` class you can apply to any element within the scope of `prose` to get a nice lead paragraph. 61 | 62 | ### Options 63 | 64 | You can change the default options as shown below. 65 | 66 | ```ts 67 | ... 68 | presets: [ 69 | typographyPreset({ 70 | recipe: { 71 | // Name of the recipe export 72 | name: "prose", 73 | className: "prose", 74 | // Sizes you want to include 75 | sizes: ["sm", "base", "lg", "xl", "2xl"], 76 | defaultSize: "base", 77 | // Enable/disable not-prose functionality 78 | // just like in TailwindCSS 79 | notProse: false, 80 | // notProse: true, 81 | // notProse: { 82 | // className: "not-prose", 83 | // }, 84 | semanticTokens: { 85 | // defaults: true, 86 | defaults: { 87 | // Set a color palette to use for the defaults. 88 | // It only works with colors that have a numeric scale (11x) 89 | // from 50 to 950. (50, 100, 200, ..., 800, 900, 950). 90 | colorPalette: "slate", 91 | }, 92 | // The prefix to use for semantic tokens. 93 | // ex: --colors--body 94 | prefix: "prose", 95 | }, 96 | }, 97 | }), 98 | ], 99 | ``` 100 | 101 | ### Colors 102 | 103 | Colors are currently being handled by CSS variables. The default colors are 104 | as followed: 105 | 106 | ```ts 107 | { 108 | semanticTokens: { 109 | colors: { 110 | // Or whatever name you've set as the semantic tokens 111 | // prefix or recipe name 112 | prose: { 113 | body: { 114 | value: "{colors.slate.700}", 115 | }, 116 | heading: { 117 | value: "{colors.slate.900}", 118 | }, 119 | lead: { 120 | value: "{colors.slate.600}", 121 | }, 122 | link: { 123 | value: "{colors.slate.900}", 124 | }, 125 | bold: { 126 | value: "{colors.slate.900}", 127 | }, 128 | counter: { 129 | value: "{colors.slate.500}", 130 | }, 131 | bullet: { 132 | value: "{colors.slate.300}", 133 | }, 134 | hrBorder: { 135 | value: "{colors.slate.200}", 136 | }, 137 | quote: { 138 | value: "{colors.slate.900}", 139 | }, 140 | quoteBorder: { 141 | value: "{colors.slate.200}", 142 | }, 143 | caption: { 144 | value: "{colors.slate.500}", 145 | }, 146 | kbd: { 147 | value: "{colors.slate.900}", 148 | }, 149 | kbdShadow: { 150 | // Expects an RGB value 151 | value: "0 0 0", 152 | }, 153 | code: { 154 | value: "{colors.slate.900}", 155 | }, 156 | preCode: { 157 | value: "{colors.slate.200}", 158 | }, 159 | preBg: { 160 | value: "{colors.slate.800}", 161 | }, 162 | thBorder: { 163 | value: "{colors.slate.300}", 164 | }, 165 | tdBorder: { 166 | value: "{colors.slate.200}", 167 | }, 168 | }, 169 | }, 170 | }, 171 | } 172 | ``` 173 | 174 | If you have the [Radix Colors](https://www.npmjs.com/package/pandacss-preset-radix-colors) preset installed for example, you'll get dark mode support out of the box by providing the colors as shown below. These colors combinations aren't fully tested, so change according to preference. 175 | 176 | ```ts 177 | { 178 | semanticTokens: { 179 | colors: { 180 | // Or whatever name you've set as the semantic tokens 181 | // prefix or recipe name 182 | prose: { 183 | body: { 184 | value: "{colors.slate.12}", 185 | }, 186 | heading: { 187 | value: "{colors.slate.12}", 188 | }, 189 | lead: { 190 | value: "{colors.slate.12}", 191 | }, 192 | link: { 193 | value: "{colors.blue.11}", 194 | }, 195 | bold: { 196 | value: "{colors.slate.12}", 197 | }, 198 | counter: { 199 | value: "{colors.slate.11}", 200 | }, 201 | bullet: { 202 | value: "{colors.slate.11}", 203 | }, 204 | hrBorder: { 205 | value: "{colors.slate.6}", 206 | }, 207 | quote: { 208 | value: "{colors.slate.11}", 209 | }, 210 | quoteBorder: { 211 | value: "{colors.slate.6}", 212 | }, 213 | caption: { 214 | value: "{colors.slate.11}", 215 | }, 216 | kbd: { 217 | value: "{colors.slate.11}", 218 | }, 219 | kbdShadow: { 220 | // Expects an RGB value 221 | value: "0 0 0", 222 | }, 223 | code: { 224 | value: "{colors.amber.11}", 225 | }, 226 | preCode: { 227 | value: "{colors.slate.12}", 228 | }, 229 | preBg: { 230 | value: "{colors.slate.2}", 231 | }, 232 | thBorder: { 233 | value: "{colors.slate.6}", 234 | }, 235 | tdBorder: { 236 | value: "{colors.slate.6}", 237 | }, 238 | }, 239 | }, 240 | }, 241 | } 242 | ``` 243 | 244 | ## Attributions 245 | 246 | - [Chakra](https://github.com/chakra-ui) team for creating [🐼 PandaCSS](https://panda-css.com/) 247 | - [Tailwind](https://github.com/tailwindlabs) team for creating the styles 248 | 249 | [contributors-shield]: https://img.shields.io/github/contributors/milandekruijf/pandacss-preset-typography.svg?style=for-the-badge 250 | [contributors-url]: https://github.com/milandekruijf/pandacss-preset-typography/graphs/contributors 251 | [forks-shield]: https://img.shields.io/github/forks/milandekruijf/pandacss-preset-typography.svg?style=for-the-badge 252 | [forks-url]: https://github.com/milandekruijf/pandacss-preset-typography/network/members 253 | [stars-shield]: https://img.shields.io/github/stars/milandekruijf/pandacss-preset-typography.svg?style=for-the-badge 254 | [stars-url]: https://github.com/milandekruijf/pandacss-preset-typography/stargazers 255 | [issues-shield]: https://img.shields.io/github/issues/milandekruijf/pandacss-preset-typography.svg?style=for-the-badge 256 | [issues-url]: https://github.com/milandekruijf/pandacss-preset-typography/issues 257 | [license-shield]: https://img.shields.io/github/license/milandekruijf/pandacss-preset-typography.svg?style=for-the-badge 258 | [license-url]: https://github.com/milandekruijf/pandacss-preset-typography/blob/main/LICENSE 259 | [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 260 | [linkedin-url]: https://www.linkedin.com/in/milandekruijf 261 | [npm-shield]: https://img.shields.io/npm/dw/pandacss-preset-typography?style=for-the-badge 262 | [npm-url]: https://www.npmjs.com/package/pandacss-preset-typography 263 | -------------------------------------------------------------------------------- /debug/.gitignore: -------------------------------------------------------------------------------- 1 | out -------------------------------------------------------------------------------- /debug/panda.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "@pandacss/dev"; 2 | 3 | import typographyPreset from "../dist"; 4 | 5 | export default defineConfig({ 6 | presets: [typographyPreset()], 7 | theme: { 8 | extend: { 9 | tokens: { 10 | colors: { 11 | prose: { 12 | body: { 13 | value: "#fff", 14 | }, 15 | }, 16 | }, 17 | }, 18 | }, 19 | }, 20 | outdir: "out", 21 | }); 22 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | node_modules/ -------------------------------------------------------------------------------- /demo/app/globals.css: -------------------------------------------------------------------------------- 1 | @layer reset, base, tokens, recipes, utilities; 2 | -------------------------------------------------------------------------------- /demo/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import "./globals.css"; 2 | import { Inter } from "next/font/google"; 3 | 4 | const inter = Inter({ subsets: ["latin"] }); 5 | 6 | export default function RootLayout({ children }: { children: React.ReactNode }) { 7 | return ( 8 | 9 | {children} 10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /demo/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { prose } from "@pandacss/out/recipes"; 2 | import { cx, css } from "@pandacss/out/css"; 3 | 4 | export default function Page() { 5 | return ( 6 |
17 |

18 | Until now, trying to style an article, document, or blog post with 19 | Tailwind has been a tedious task that required a keen eye for typography 20 | and a lot of complex custom CSS. 21 |

22 |

23 | By default, Tailwind removes all of the default browser styling from 24 | paragraphs, headings, lists and more. This ends up being really useful 25 | for building application UIs because you spend less time undoing 26 | user-agent styles, but when you really are just trying to style 27 | some content that came from a rich-text editor in a CMS or a markdown 28 | file, it can be surprising and unintuitive. 29 |

30 |

31 | We get lots of complaints about it actually, with people regularly 32 | asking us things like: 33 |

34 |
35 |

36 | Why is Tailwind removing the default styles on my h1{" "} 37 | elements? How do I disable this? What do you mean I lose all the other 38 | base styles too? 39 |

40 |
41 |

42 | We hear you, but we're not convinced that simply disabling our base 43 | styles is what you really want. You don't want to have to remove 44 | annoying margins every time you use a p element in a piece 45 | of your dashboard UI. And I doubt you really want your blog posts to use 46 | the user-agent styles either — you want them to look awesome, 47 | not awful. 48 |

49 |

50 | The @tailwindcss/typography plugin is our attempt to give 51 | you what you actually want, without any of the downsides of 52 | doing something stupid like disabling our base styles. 53 |

54 |

55 | It adds a new prose class that you can slap on any block of 56 | vanilla HTML content and turn it into a beautiful, well-formatted 57 | document: 58 |

59 |
 60 |         
 74 |       
75 |

76 | For more information about how to use the plugin and the features it 77 | includes,{" "} 78 | 79 | read the documentation 80 | 81 | . 82 |

83 |
84 |

What to expect from here on out

85 |

86 | What follows from here is just a bunch of absolute nonsense I've written 87 | to dogfood the plugin itself. It includes every sensible typographic 88 | element I could think of, like bold text, unordered 89 | lists, ordered lists, code blocks, block quotes,{" "} 90 | and even italics. 91 |

92 |

It's important to cover all of these use cases for a few reasons:

93 |
    94 |
  1. We want everything to look good out of the box.
  2. 95 |
  3. 96 | Really just the first reason, that's the whole point of the plugin. 97 |
  4. 98 |
  5. 99 | Here's a third pretend reason though a list with three items looks 100 | more realistic than a list with two items. 101 |
  6. 102 |
103 |

Now we're going to try out another header style.

104 |

Typography should be easy

105 |

106 | So that's a header for you — with any luck if we've done our job 107 | correctly that will look pretty reasonable. 108 |

109 |

Something a wise person once told me about typography is:

110 |
111 |

112 | Typography is pretty important if you don't want your stuff to look 113 | like trash. Make it good then it won't be bad. 114 |

115 |
116 |

117 | It's probably important that images look okay here by default as well: 118 |

119 |
120 | 124 |
125 | Contrary to popular belief, Lorem Ipsum is not simply random text. It 126 | has roots in a piece of classical Latin literature from 45 BC, making 127 | it over 2000 years old. 128 |
129 |
130 |

131 | Now I'm going to show you an example of an unordered list to make sure 132 | that looks good, too: 133 |

134 |
    135 |
  • So here is the first item in this list.
  • 136 |
  • In this example we're keeping the items short.
  • 137 |
  • Later, we'll use longer, more complex list items.
  • 138 |
139 |

And that's the end of this section.

140 |

What if we stack headings?

141 |

We should make sure that looks good, too.

142 |

143 | Sometimes you have headings directly underneath each other. In those 144 | cases you often have to undo the top margin on the second heading 145 | because it usually looks better for the headings to be closer together 146 | than a paragraph followed by a heading should be. 147 |

148 |

When a heading comes after a paragraph …

149 |

150 | When a heading comes after a paragraph, we need a bit more space, like I 151 | already mentioned above. Now let's see what a more complex list would 152 | look like. 153 |

154 |
    155 |
  • 156 |

    157 | 158 | I often do this thing where list items have headings. 159 | 160 |

    161 |

    162 | For some reason I think this looks cool which is unfortunate because 163 | it's pretty annoying to get the styles right. 164 |

    165 |

    166 | I often have two or three paragraphs in these list items, too, so 167 | the hard part is getting the spacing between the paragraphs, list 168 | item heading, and separate list items to all make sense. Pretty 169 | tough honestly, you could make a strong argument that you just 170 | shouldn't write this way. 171 |

    172 |
  • 173 |
  • 174 |

    175 | Since this is a list, I need at least two items. 176 |

    177 |

    178 | I explained what I'm doing already in the previous list item, but a 179 | list wouldn't be a list if it only had one item, and we really want 180 | this to look realistic. That's why I've added this second list item 181 | so I actually have something to look at when writing the styles. 182 |

    183 |
  • 184 |
  • 185 |

    186 | It's not a bad idea to add a third item either. 187 |

    188 |

    189 | I think it probably would've been fine to just use two items but 190 | three is definitely not worse, and since I seem to be having no 191 | trouble making up arbitrary things to type, I might as well include 192 | it. 193 |

    194 |
  • 195 |
196 |

197 | After this sort of list I usually have a closing statement or paragraph, 198 | because it kinda looks weird jumping right to a heading. 199 |

200 |

Code should look okay by default.

201 |

202 | I think most people are going to use{" "} 203 | highlight.js or{" "} 204 | Prism or something if they want to 205 | style their code blocks but it wouldn't hurt to make them look{" "} 206 | okay out of the box, even with no syntax highlighting. 207 |

208 |

209 | Here's what a default tailwind.config.js file looks like at 210 | the time of writing: 211 |

212 |
213 |         
214 |           {`module.exports = {
215 |   purge: [],
216 |   theme: {
217 |     extend: {},
218 |   },
219 |   variants: {},
220 |   plugins: [],
221 | }`}
222 |         
223 |       
224 |

Hopefully that looks good enough to you.

225 |

What about nested lists?

226 |

227 | Nested lists basically always look bad which is why editors like Medium 228 | don't even let you do it, but I guess since some of you goofballs are 229 | going to do it we have to carry the burden of at least making it work. 230 |

231 |
    232 |
  1. 233 | Nested lists are rarely a good idea. 234 |
      235 |
    • 236 | You might feel like you are being really "organized" or something 237 | but you are just creating a gross shape on the screen that is hard 238 | to read. 239 |
    • 240 |
    • 241 | Nested navigation in UIs is a bad idea too, keep things as flat as 242 | possible. 243 |
    • 244 |
    • 245 | Nesting tons of folders in your source code is also not helpful. 246 |
    • 247 |
    248 |
  2. 249 |
  3. 250 | Since we need to have more items, here's another one. 251 |
      252 |
    • 253 | I'm not sure if we'll bother styling more than two levels deep. 254 |
    • 255 |
    • 256 | Two is already too much, three is guaranteed to be a bad idea. 257 |
    • 258 |
    • If you nest four levels deep you belong in prison.
    • 259 |
    260 |
  4. 261 |
  5. 262 | Two items isn't really a list, three is good though. 263 |
      264 |
    • 265 | Again please don't nest lists if you want people to actually read 266 | your content. 267 |
    • 268 |
    • Nobody wants to look at this.
    • 269 |
    • I'm upset that we even have to bother styling this.
    • 270 |
    271 |
  6. 272 |
273 |

274 | The most annoying thing about lists in Markdown is that{" "} 275 | <li> elements aren't given a child{" "} 276 | <p> tag unless there are multiple paragraphs in the 277 | list item. That means I have to worry about styling that annoying 278 | situation too. 279 |

280 |
    281 |
  • 282 |

    283 | For example, here's another nested list. 284 |

    285 |

    But this time with a second paragraph.

    286 |
      287 |
    • 288 | These list items won't have <p> tags 289 |
    • 290 |
    • Because they are only one line each
    • 291 |
    292 |
  • 293 |
  • 294 |

    295 | But in this second top-level list item, they will. 296 |

    297 |

    298 | This is especially annoying because of the spacing on this 299 | paragraph. 300 |

    301 |
      302 |
    • 303 |

      304 | As you can see here, because I've added a second line, this list 305 | item now has a <p> tag. 306 |

      307 |

      This is the second line I'm talking about by the way.

      308 |
    • 309 |
    • 310 |

      Finally here's another list item so it's more like a list.

      311 |
    • 312 |
    313 |
  • 314 |
  • 315 |

    A closing list item, but with no nested list, because why not?

    316 |
  • 317 |
318 |

And finally a sentence to close off this section.

319 |

There are other elements we need to style

320 |

321 | I almost forgot to mention links, like{" "} 322 | 323 | this link to the Tailwind CSS website 324 | 325 | . We almost made them blue but that's so yesterday, so we went with dark 326 | gray, feels edgier. 327 |

328 |

We even included table styles, check it out:

329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 |
WrestlerOriginFinisher
Bret "The Hitman" HartCalgary, ABSharpshooter
Stone Cold Steve AustinAustin, TXStone Cold Stunner
Randy SavageSarasota, FLElbow Drop
VaderBoulder, COVader Bomb
Razor RamonChuluota, FLRazor's Edge
365 |

366 | We also need to make sure inline code looks good, like if I wanted to 367 | talk about <span> elements or tell you the good news 368 | about @tailwindcss/typography. 369 |

370 |

371 | Sometimes I even use code in headings 372 |

373 |

374 | Even though it's probably a bad idea, and historically I've had a hard 375 | time making it look good. This{" "} 376 | "wrap the code blocks in backticks" trick works pretty well 377 | though really. 378 |

379 |

380 | Another thing I've done in the past is put a code tag 381 | inside of a link, like if I wanted to tell you about the{" "} 382 | 383 | tailwindcss/docs 384 | {" "} 385 | repository. I don't love that there is an underline below the backticks 386 | but it is absolutely not worth the madness it would require to avoid it. 387 |

388 |

389 | We haven't used an h4 yet 390 |

391 |

392 | But now we have. Please don't use h5 or h6 in 393 | your content, Medium only supports two heading levels for a reason, you 394 | animals. I honestly considered using a before{" "} 395 | pseudo-element to scream at you if you use an h5 or{" "} 396 | h6. 397 |

398 |

399 | We don't style them at all out of the box because h4{" "} 400 | elements are already so small that they are the same size as the body 401 | copy. What are we supposed to do with an h5, make it{" "} 402 | smaller than the body copy? No thanks. 403 |

404 |

We still need to think about stacked headings though.

405 |

406 | Let's make sure we don't screw that up with h4 elements, 407 | either. 408 |

409 |

410 | Phew, with any luck we have styled the headings above this text and they 411 | look pretty good. 412 |

413 |

414 | Let's add a closing paragraph here so things end with a decently sized 415 | block of text. I can't explain why I want things to end that way but I 416 | have to assume it's because I think things will look weird or unbalanced 417 | if there is a heading too close to the end of the document. 418 |

419 |

420 | What I've written here is probably long enough, but adding this final 421 | sentence can't hurt. 422 |

423 |

424 | Please press Ctrl + Shift + R to 425 | re-render an MDN page. 426 |

427 |
428 | ); 429 | } 430 | -------------------------------------------------------------------------------- /demo/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "prepare": "panda codegen", 4 | "dev": "next dev", 5 | "build": "next build", 6 | "start": "next start", 7 | "lint": "next lint" 8 | }, 9 | "dependencies": { 10 | "next": "^13.5.3", 11 | "pandacss-preset-typography": "^0.1.2", 12 | "react": "^18.2.0", 13 | "react-dom": "^18.2.0" 14 | }, 15 | "devDependencies": { 16 | "@pandacss/dev": "^0.15.3", 17 | "pandacss-preset-radix-colors": "^0.0.7" 18 | } 19 | } -------------------------------------------------------------------------------- /demo/panda.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "@pandacss/dev"; 2 | import typographyPreset from "../dist"; 3 | // import typographyPreset from "pandacss-preset-typography"; 4 | import radixColors from "pandacss-preset-radix-colors"; 5 | 6 | export default defineConfig({ 7 | preflight: true, 8 | include: ["app/**/*.tsx"], 9 | presets: [ 10 | radixColors(), 11 | typographyPreset({ 12 | recipe: { 13 | notProse: true, 14 | }, 15 | }), 16 | "@pandacss/dev/presets", 17 | ], 18 | theme: { 19 | extend: { 20 | semanticTokens: { 21 | colors: { 22 | prose: { 23 | body: { 24 | value: "{colors.slate.12}", 25 | }, 26 | heading: { 27 | value: "{colors.slate.12}", 28 | }, 29 | lead: { 30 | value: "{colors.slate.12}", 31 | }, 32 | link: { 33 | value: "{colors.blue.11}", 34 | }, 35 | bold: { 36 | value: "{colors.slate.12}", 37 | }, 38 | counter: { 39 | value: "{colors.slate.11}", 40 | }, 41 | bullet: { 42 | value: "{colors.slate.11}", 43 | }, 44 | hrBorder: { 45 | value: "{colors.slate.6}", 46 | }, 47 | quote: { 48 | value: "{colors.slate.11}", 49 | }, 50 | quoteBorder: { 51 | value: "{colors.slate.6}", 52 | }, 53 | caption: { 54 | value: "{colors.slate.11}", 55 | }, 56 | kbd: { 57 | value: "{colors.slate.11}", 58 | }, 59 | kbdShadow: { 60 | value: "0 0 0", 61 | }, 62 | code: { 63 | value: "{colors.amber.11}", 64 | }, 65 | preCode: { 66 | value: "{colors.slate.12}", 67 | }, 68 | preBg: { 69 | value: "{colors.slate.2}", 70 | }, 71 | thBorder: { 72 | value: "{colors.slate.6}", 73 | }, 74 | tdBorder: { 75 | value: "{colors.slate.6}", 76 | }, 77 | }, 78 | }, 79 | }, 80 | }, 81 | }, 82 | outdir: "@pandacss/out", 83 | emitPackage: true, 84 | }); 85 | -------------------------------------------------------------------------------- /demo/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | '@pandacss/dev/postcss': {}, 4 | }, 5 | } -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": [ 4 | "dom", 5 | "dom.iterable", 6 | "esnext" 7 | ], 8 | "allowJs": true, 9 | "skipLibCheck": true, 10 | "strict": false, 11 | "noEmit": true, 12 | "incremental": true, 13 | "esModuleInterop": true, 14 | "module": "esnext", 15 | "moduleResolution": "node", 16 | "resolveJsonModule": true, 17 | "isolatedModules": true, 18 | "jsx": "preserve", 19 | "plugins": [ 20 | { 21 | "name": "next" 22 | } 23 | ] 24 | }, 25 | "include": [ 26 | "next-env.d.ts", 27 | ".next/types/**/*.ts", 28 | "**/*.ts", 29 | "**/*.tsx" 30 | ], 31 | "exclude": [ 32 | "node_modules" 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pandacss-preset-typography", 3 | "version": "0.1.6", 4 | "author": "Milan de Kruijf ", 5 | "description": "A 🐼 PandaCSS typography preset inspired by the TailwindCSS typography plugin", 6 | "license": "MIT", 7 | "keywords": [ 8 | "css", 9 | "styling", 10 | "preset", 11 | "typography", 12 | "chakra-ui", 13 | "pandacss" 14 | ], 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/milandekruijf/pandacss-preset-typography.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/milandekruijf/pandacss-preset-typography/issues" 21 | }, 22 | "main": "dist/index.js", 23 | "module": "dist/index.mjs", 24 | "types": "dist/index.d.ts", 25 | "files": [ 26 | "dist" 27 | ], 28 | "publishConfig": { 29 | "access": "public" 30 | }, 31 | "scripts": { 32 | "build": "tsup", 33 | "prepublish": "pnpm debug", 34 | "debug": "pnpm build && panda debug -c panda.config.ts --cwd debug" 35 | }, 36 | "dependencies": { 37 | "@tailwindcss/typography": "^0.5.13", 38 | "tailwindcss": "^3.4.4" 39 | }, 40 | "devDependencies": { 41 | "@pandacss/dev": "^0.40.1", 42 | "@pandacss/types": "^0.40.1", 43 | "@types/node": "^20.14.2", 44 | "tsup": "^8.1.0" 45 | }, 46 | "peerDependencies": { 47 | "@pandacss/dev": ">=0.9.0" 48 | }, 49 | "packageManager": "pnpm@8.8.0" 50 | } 51 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@tailwindcss/typography': 9 | specifier: ^0.5.13 10 | version: 0.5.13(tailwindcss@3.4.4) 11 | tailwindcss: 12 | specifier: ^3.4.4 13 | version: 3.4.4 14 | 15 | devDependencies: 16 | '@pandacss/dev': 17 | specifier: ^0.40.1 18 | version: 0.40.1(typescript@5.2.2) 19 | '@pandacss/types': 20 | specifier: ^0.40.1 21 | version: 0.40.1 22 | '@types/node': 23 | specifier: ^20.14.2 24 | version: 20.14.2 25 | tsup: 26 | specifier: ^8.1.0 27 | version: 8.1.0(postcss@8.4.31)(typescript@5.2.2) 28 | 29 | packages: 30 | 31 | /@alloc/quick-lru@5.2.0: 32 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 33 | engines: {node: '>=10'} 34 | dev: false 35 | 36 | /@babel/helper-string-parser@7.22.5: 37 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 38 | engines: {node: '>=6.9.0'} 39 | dev: true 40 | 41 | /@babel/helper-validator-identifier@7.22.20: 42 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 43 | engines: {node: '>=6.9.0'} 44 | dev: true 45 | 46 | /@babel/parser@7.24.7: 47 | resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} 48 | engines: {node: '>=6.0.0'} 49 | hasBin: true 50 | dependencies: 51 | '@babel/types': 7.23.0 52 | dev: true 53 | 54 | /@babel/types@7.23.0: 55 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 56 | engines: {node: '>=6.9.0'} 57 | dependencies: 58 | '@babel/helper-string-parser': 7.22.5 59 | '@babel/helper-validator-identifier': 7.22.20 60 | to-fast-properties: 2.0.0 61 | dev: true 62 | 63 | /@clack/core@0.3.3: 64 | resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} 65 | dependencies: 66 | picocolors: 1.0.0 67 | sisteransi: 1.0.5 68 | dev: true 69 | 70 | /@clack/prompts@0.7.0: 71 | resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} 72 | dependencies: 73 | '@clack/core': 0.3.3 74 | picocolors: 1.0.0 75 | sisteransi: 1.0.5 76 | dev: true 77 | bundledDependencies: 78 | - is-unicode-supported 79 | 80 | /@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.38): 81 | resolution: {integrity: sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==} 82 | engines: {node: ^14 || ^16 || >=18} 83 | peerDependencies: 84 | postcss: ^8.4 85 | dependencies: 86 | '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.0.16) 87 | postcss: 8.4.38 88 | postcss-selector-parser: 6.0.16 89 | dev: true 90 | 91 | /@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16): 92 | resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} 93 | engines: {node: ^14 || ^16 || >=18} 94 | peerDependencies: 95 | postcss-selector-parser: ^6.0.13 96 | dependencies: 97 | postcss-selector-parser: 6.0.16 98 | dev: true 99 | 100 | /@esbuild/aix-ppc64@0.20.2: 101 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} 102 | engines: {node: '>=12'} 103 | cpu: [ppc64] 104 | os: [aix] 105 | requiresBuild: true 106 | dev: true 107 | optional: true 108 | 109 | /@esbuild/aix-ppc64@0.21.4: 110 | resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==} 111 | engines: {node: '>=12'} 112 | cpu: [ppc64] 113 | os: [aix] 114 | requiresBuild: true 115 | dev: true 116 | optional: true 117 | 118 | /@esbuild/android-arm64@0.20.2: 119 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} 120 | engines: {node: '>=12'} 121 | cpu: [arm64] 122 | os: [android] 123 | requiresBuild: true 124 | dev: true 125 | optional: true 126 | 127 | /@esbuild/android-arm64@0.21.4: 128 | resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==} 129 | engines: {node: '>=12'} 130 | cpu: [arm64] 131 | os: [android] 132 | requiresBuild: true 133 | dev: true 134 | optional: true 135 | 136 | /@esbuild/android-arm@0.20.2: 137 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} 138 | engines: {node: '>=12'} 139 | cpu: [arm] 140 | os: [android] 141 | requiresBuild: true 142 | dev: true 143 | optional: true 144 | 145 | /@esbuild/android-arm@0.21.4: 146 | resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==} 147 | engines: {node: '>=12'} 148 | cpu: [arm] 149 | os: [android] 150 | requiresBuild: true 151 | dev: true 152 | optional: true 153 | 154 | /@esbuild/android-x64@0.20.2: 155 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} 156 | engines: {node: '>=12'} 157 | cpu: [x64] 158 | os: [android] 159 | requiresBuild: true 160 | dev: true 161 | optional: true 162 | 163 | /@esbuild/android-x64@0.21.4: 164 | resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==} 165 | engines: {node: '>=12'} 166 | cpu: [x64] 167 | os: [android] 168 | requiresBuild: true 169 | dev: true 170 | optional: true 171 | 172 | /@esbuild/darwin-arm64@0.20.2: 173 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} 174 | engines: {node: '>=12'} 175 | cpu: [arm64] 176 | os: [darwin] 177 | requiresBuild: true 178 | dev: true 179 | optional: true 180 | 181 | /@esbuild/darwin-arm64@0.21.4: 182 | resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==} 183 | engines: {node: '>=12'} 184 | cpu: [arm64] 185 | os: [darwin] 186 | requiresBuild: true 187 | dev: true 188 | optional: true 189 | 190 | /@esbuild/darwin-x64@0.20.2: 191 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} 192 | engines: {node: '>=12'} 193 | cpu: [x64] 194 | os: [darwin] 195 | requiresBuild: true 196 | dev: true 197 | optional: true 198 | 199 | /@esbuild/darwin-x64@0.21.4: 200 | resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==} 201 | engines: {node: '>=12'} 202 | cpu: [x64] 203 | os: [darwin] 204 | requiresBuild: true 205 | dev: true 206 | optional: true 207 | 208 | /@esbuild/freebsd-arm64@0.20.2: 209 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} 210 | engines: {node: '>=12'} 211 | cpu: [arm64] 212 | os: [freebsd] 213 | requiresBuild: true 214 | dev: true 215 | optional: true 216 | 217 | /@esbuild/freebsd-arm64@0.21.4: 218 | resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==} 219 | engines: {node: '>=12'} 220 | cpu: [arm64] 221 | os: [freebsd] 222 | requiresBuild: true 223 | dev: true 224 | optional: true 225 | 226 | /@esbuild/freebsd-x64@0.20.2: 227 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} 228 | engines: {node: '>=12'} 229 | cpu: [x64] 230 | os: [freebsd] 231 | requiresBuild: true 232 | dev: true 233 | optional: true 234 | 235 | /@esbuild/freebsd-x64@0.21.4: 236 | resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==} 237 | engines: {node: '>=12'} 238 | cpu: [x64] 239 | os: [freebsd] 240 | requiresBuild: true 241 | dev: true 242 | optional: true 243 | 244 | /@esbuild/linux-arm64@0.20.2: 245 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} 246 | engines: {node: '>=12'} 247 | cpu: [arm64] 248 | os: [linux] 249 | requiresBuild: true 250 | dev: true 251 | optional: true 252 | 253 | /@esbuild/linux-arm64@0.21.4: 254 | resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==} 255 | engines: {node: '>=12'} 256 | cpu: [arm64] 257 | os: [linux] 258 | requiresBuild: true 259 | dev: true 260 | optional: true 261 | 262 | /@esbuild/linux-arm@0.20.2: 263 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 264 | engines: {node: '>=12'} 265 | cpu: [arm] 266 | os: [linux] 267 | requiresBuild: true 268 | dev: true 269 | optional: true 270 | 271 | /@esbuild/linux-arm@0.21.4: 272 | resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==} 273 | engines: {node: '>=12'} 274 | cpu: [arm] 275 | os: [linux] 276 | requiresBuild: true 277 | dev: true 278 | optional: true 279 | 280 | /@esbuild/linux-ia32@0.20.2: 281 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} 282 | engines: {node: '>=12'} 283 | cpu: [ia32] 284 | os: [linux] 285 | requiresBuild: true 286 | dev: true 287 | optional: true 288 | 289 | /@esbuild/linux-ia32@0.21.4: 290 | resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==} 291 | engines: {node: '>=12'} 292 | cpu: [ia32] 293 | os: [linux] 294 | requiresBuild: true 295 | dev: true 296 | optional: true 297 | 298 | /@esbuild/linux-loong64@0.20.2: 299 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} 300 | engines: {node: '>=12'} 301 | cpu: [loong64] 302 | os: [linux] 303 | requiresBuild: true 304 | dev: true 305 | optional: true 306 | 307 | /@esbuild/linux-loong64@0.21.4: 308 | resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==} 309 | engines: {node: '>=12'} 310 | cpu: [loong64] 311 | os: [linux] 312 | requiresBuild: true 313 | dev: true 314 | optional: true 315 | 316 | /@esbuild/linux-mips64el@0.20.2: 317 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} 318 | engines: {node: '>=12'} 319 | cpu: [mips64el] 320 | os: [linux] 321 | requiresBuild: true 322 | dev: true 323 | optional: true 324 | 325 | /@esbuild/linux-mips64el@0.21.4: 326 | resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==} 327 | engines: {node: '>=12'} 328 | cpu: [mips64el] 329 | os: [linux] 330 | requiresBuild: true 331 | dev: true 332 | optional: true 333 | 334 | /@esbuild/linux-ppc64@0.20.2: 335 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} 336 | engines: {node: '>=12'} 337 | cpu: [ppc64] 338 | os: [linux] 339 | requiresBuild: true 340 | dev: true 341 | optional: true 342 | 343 | /@esbuild/linux-ppc64@0.21.4: 344 | resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==} 345 | engines: {node: '>=12'} 346 | cpu: [ppc64] 347 | os: [linux] 348 | requiresBuild: true 349 | dev: true 350 | optional: true 351 | 352 | /@esbuild/linux-riscv64@0.20.2: 353 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} 354 | engines: {node: '>=12'} 355 | cpu: [riscv64] 356 | os: [linux] 357 | requiresBuild: true 358 | dev: true 359 | optional: true 360 | 361 | /@esbuild/linux-riscv64@0.21.4: 362 | resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==} 363 | engines: {node: '>=12'} 364 | cpu: [riscv64] 365 | os: [linux] 366 | requiresBuild: true 367 | dev: true 368 | optional: true 369 | 370 | /@esbuild/linux-s390x@0.20.2: 371 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} 372 | engines: {node: '>=12'} 373 | cpu: [s390x] 374 | os: [linux] 375 | requiresBuild: true 376 | dev: true 377 | optional: true 378 | 379 | /@esbuild/linux-s390x@0.21.4: 380 | resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==} 381 | engines: {node: '>=12'} 382 | cpu: [s390x] 383 | os: [linux] 384 | requiresBuild: true 385 | dev: true 386 | optional: true 387 | 388 | /@esbuild/linux-x64@0.20.2: 389 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} 390 | engines: {node: '>=12'} 391 | cpu: [x64] 392 | os: [linux] 393 | requiresBuild: true 394 | dev: true 395 | optional: true 396 | 397 | /@esbuild/linux-x64@0.21.4: 398 | resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==} 399 | engines: {node: '>=12'} 400 | cpu: [x64] 401 | os: [linux] 402 | requiresBuild: true 403 | dev: true 404 | optional: true 405 | 406 | /@esbuild/netbsd-x64@0.20.2: 407 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} 408 | engines: {node: '>=12'} 409 | cpu: [x64] 410 | os: [netbsd] 411 | requiresBuild: true 412 | dev: true 413 | optional: true 414 | 415 | /@esbuild/netbsd-x64@0.21.4: 416 | resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==} 417 | engines: {node: '>=12'} 418 | cpu: [x64] 419 | os: [netbsd] 420 | requiresBuild: true 421 | dev: true 422 | optional: true 423 | 424 | /@esbuild/openbsd-x64@0.20.2: 425 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} 426 | engines: {node: '>=12'} 427 | cpu: [x64] 428 | os: [openbsd] 429 | requiresBuild: true 430 | dev: true 431 | optional: true 432 | 433 | /@esbuild/openbsd-x64@0.21.4: 434 | resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==} 435 | engines: {node: '>=12'} 436 | cpu: [x64] 437 | os: [openbsd] 438 | requiresBuild: true 439 | dev: true 440 | optional: true 441 | 442 | /@esbuild/sunos-x64@0.20.2: 443 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} 444 | engines: {node: '>=12'} 445 | cpu: [x64] 446 | os: [sunos] 447 | requiresBuild: true 448 | dev: true 449 | optional: true 450 | 451 | /@esbuild/sunos-x64@0.21.4: 452 | resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==} 453 | engines: {node: '>=12'} 454 | cpu: [x64] 455 | os: [sunos] 456 | requiresBuild: true 457 | dev: true 458 | optional: true 459 | 460 | /@esbuild/win32-arm64@0.20.2: 461 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} 462 | engines: {node: '>=12'} 463 | cpu: [arm64] 464 | os: [win32] 465 | requiresBuild: true 466 | dev: true 467 | optional: true 468 | 469 | /@esbuild/win32-arm64@0.21.4: 470 | resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==} 471 | engines: {node: '>=12'} 472 | cpu: [arm64] 473 | os: [win32] 474 | requiresBuild: true 475 | dev: true 476 | optional: true 477 | 478 | /@esbuild/win32-ia32@0.20.2: 479 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} 480 | engines: {node: '>=12'} 481 | cpu: [ia32] 482 | os: [win32] 483 | requiresBuild: true 484 | dev: true 485 | optional: true 486 | 487 | /@esbuild/win32-ia32@0.21.4: 488 | resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==} 489 | engines: {node: '>=12'} 490 | cpu: [ia32] 491 | os: [win32] 492 | requiresBuild: true 493 | dev: true 494 | optional: true 495 | 496 | /@esbuild/win32-x64@0.20.2: 497 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} 498 | engines: {node: '>=12'} 499 | cpu: [x64] 500 | os: [win32] 501 | requiresBuild: true 502 | dev: true 503 | optional: true 504 | 505 | /@esbuild/win32-x64@0.21.4: 506 | resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==} 507 | engines: {node: '>=12'} 508 | cpu: [x64] 509 | os: [win32] 510 | requiresBuild: true 511 | dev: true 512 | optional: true 513 | 514 | /@jridgewell/gen-mapping@0.3.3: 515 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 516 | engines: {node: '>=6.0.0'} 517 | dependencies: 518 | '@jridgewell/set-array': 1.1.2 519 | '@jridgewell/sourcemap-codec': 1.4.15 520 | '@jridgewell/trace-mapping': 0.3.19 521 | 522 | /@jridgewell/resolve-uri@3.1.1: 523 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 524 | engines: {node: '>=6.0.0'} 525 | 526 | /@jridgewell/set-array@1.1.2: 527 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 528 | engines: {node: '>=6.0.0'} 529 | 530 | /@jridgewell/sourcemap-codec@1.4.15: 531 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 532 | 533 | /@jridgewell/trace-mapping@0.3.19: 534 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 535 | dependencies: 536 | '@jridgewell/resolve-uri': 3.1.1 537 | '@jridgewell/sourcemap-codec': 1.4.15 538 | 539 | /@nodelib/fs.scandir@2.1.5: 540 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 541 | engines: {node: '>= 8'} 542 | dependencies: 543 | '@nodelib/fs.stat': 2.0.5 544 | run-parallel: 1.2.0 545 | 546 | /@nodelib/fs.stat@2.0.5: 547 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 548 | engines: {node: '>= 8'} 549 | 550 | /@nodelib/fs.walk@1.2.8: 551 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 552 | engines: {node: '>= 8'} 553 | dependencies: 554 | '@nodelib/fs.scandir': 2.1.5 555 | fastq: 1.15.0 556 | 557 | /@pandacss/config@0.40.1: 558 | resolution: {integrity: sha512-Pzm0GpsrV8OoXgrBJ+V7aaKG39ytbLex1XsRKY6JThkAAz0rE2P8k4nbSQU8WXuG7mbOijBKYybi/cxRAIUL1w==} 559 | dependencies: 560 | '@pandacss/logger': 0.40.1 561 | '@pandacss/preset-base': 0.40.1 562 | '@pandacss/preset-panda': 0.40.1 563 | '@pandacss/shared': 0.40.1 564 | '@pandacss/types': 0.40.1 565 | bundle-n-require: 1.1.1 566 | escalade: 3.1.2 567 | merge-anything: 5.1.7 568 | microdiff: 1.3.2 569 | typescript: 5.3.3 570 | dev: true 571 | 572 | /@pandacss/core@0.40.1: 573 | resolution: {integrity: sha512-12Eu6ReCYZYu6Y/cX5YvGUS8eJkCVJYR8njWAqJmSg+rg/vqmkAM+KL8qdYw95WiTzih1dPaSq+MqkiX3N9hUg==} 574 | dependencies: 575 | '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.38) 576 | '@pandacss/is-valid-prop': 0.40.1 577 | '@pandacss/logger': 0.40.1 578 | '@pandacss/shared': 0.40.1 579 | '@pandacss/token-dictionary': 0.40.1 580 | '@pandacss/types': 0.40.1 581 | browserslist: 4.23.0 582 | hookable: 5.5.3 583 | lightningcss: 1.23.0 584 | lodash.merge: 4.6.2 585 | outdent: 0.8.0 586 | postcss: 8.4.38 587 | postcss-discard-duplicates: 7.0.0(postcss@8.4.38) 588 | postcss-discard-empty: 7.0.0(postcss@8.4.38) 589 | postcss-merge-rules: 7.0.0(postcss@8.4.38) 590 | postcss-minify-selectors: 7.0.0(postcss@8.4.38) 591 | postcss-nested: 6.0.1(postcss@8.4.38) 592 | postcss-normalize-whitespace: 7.0.0(postcss@8.4.38) 593 | postcss-selector-parser: 6.0.16 594 | ts-pattern: 5.0.8 595 | dev: true 596 | 597 | /@pandacss/dev@0.40.1(typescript@5.2.2): 598 | resolution: {integrity: sha512-61vy1KjwfVdWTaQtwY4ghmvwPhcRRVnfwpAG5S/kogw0p1rIp7a8vDHi31CjbPxO4qccjhNNzVVGDzaqnzHf+w==} 599 | hasBin: true 600 | dependencies: 601 | '@clack/prompts': 0.7.0 602 | '@pandacss/config': 0.40.1 603 | '@pandacss/logger': 0.40.1 604 | '@pandacss/node': 0.40.1(typescript@5.2.2) 605 | '@pandacss/postcss': 0.40.1(typescript@5.2.2) 606 | '@pandacss/preset-panda': 0.40.1 607 | '@pandacss/shared': 0.40.1 608 | '@pandacss/token-dictionary': 0.40.1 609 | '@pandacss/types': 0.40.1 610 | cac: 6.7.14 611 | transitivePeerDependencies: 612 | - jsdom 613 | - typescript 614 | dev: true 615 | 616 | /@pandacss/extractor@0.40.1(typescript@5.2.2): 617 | resolution: {integrity: sha512-eHTAiNBLPxOYsf4pqbwhxjqejzaYx6EGFvdxznKohO++ihPgoph4/zl6WZx+/Ncb/IcHKMXpIBghQmmE68LIyA==} 618 | dependencies: 619 | '@pandacss/shared': 0.40.1 620 | ts-evaluator: 1.2.0(typescript@5.2.2) 621 | ts-morph: 21.0.1 622 | transitivePeerDependencies: 623 | - jsdom 624 | - typescript 625 | dev: true 626 | 627 | /@pandacss/generator@0.40.1: 628 | resolution: {integrity: sha512-kidMyFPVuJYue4uah9uL4iNdhCPikTPCsc8j9IwrcrKPT6uhLqdeBQEF3Kxs0Pik8v+cMaDV0BSSceCujxHzhA==} 629 | dependencies: 630 | '@pandacss/core': 0.40.1 631 | '@pandacss/is-valid-prop': 0.40.1 632 | '@pandacss/logger': 0.40.1 633 | '@pandacss/shared': 0.40.1 634 | '@pandacss/token-dictionary': 0.40.1 635 | '@pandacss/types': 0.40.1 636 | javascript-stringify: 2.1.0 637 | outdent: 0.8.0 638 | pluralize: 8.0.0 639 | postcss: 8.4.38 640 | ts-pattern: 5.0.8 641 | dev: true 642 | 643 | /@pandacss/is-valid-prop@0.40.1: 644 | resolution: {integrity: sha512-YcWecr6zecEiCqRi/zoCONcokG64T2LiEOCEYZMhqX9ma/KsKNd4oZO6r001/1ZUSBSVD6ZIb95h/N4gctfayg==} 645 | dev: true 646 | 647 | /@pandacss/logger@0.40.1: 648 | resolution: {integrity: sha512-UnxDZGWj4e2Cl9XJWBp5WTJiWmfXIbyYLXt0tOlVIGTiBfZtsqVnT/uD3g71QSJgyUCyYqCx/zHJTIsKIm2/HQ==} 649 | dependencies: 650 | '@pandacss/types': 0.40.1 651 | kleur: 4.1.5 652 | dev: true 653 | 654 | /@pandacss/node@0.40.1(typescript@5.2.2): 655 | resolution: {integrity: sha512-r00E85hAFmU49H0JgEwRqf2R5P6CIAydLcTTGrqYEvC8NrP2Y2vsnNENYwDT6PChAzjIZxtZK5myYki3qkfWTA==} 656 | dependencies: 657 | '@pandacss/config': 0.40.1 658 | '@pandacss/core': 0.40.1 659 | '@pandacss/extractor': 0.40.1(typescript@5.2.2) 660 | '@pandacss/generator': 0.40.1 661 | '@pandacss/logger': 0.40.1 662 | '@pandacss/parser': 0.40.1(typescript@5.2.2) 663 | '@pandacss/shared': 0.40.1 664 | '@pandacss/token-dictionary': 0.40.1 665 | '@pandacss/types': 0.40.1 666 | browserslist: 4.23.0 667 | chokidar: 3.6.0 668 | fast-glob: 3.3.2 669 | file-size: 1.0.0 670 | filesize: 10.1.2 671 | fs-extra: 11.2.0 672 | glob-parent: 6.0.2 673 | is-glob: 4.0.3 674 | lodash.merge: 4.6.2 675 | look-it-up: 2.1.0 676 | outdent: 0.8.0 677 | perfect-debounce: 1.0.0 678 | pkg-types: 1.0.3 679 | pluralize: 8.0.0 680 | postcss: 8.4.38 681 | preferred-pm: 3.1.2 682 | prettier: 3.2.5 683 | ts-morph: 21.0.1 684 | ts-pattern: 5.0.8 685 | tsconfck: 3.0.2(typescript@5.2.2) 686 | transitivePeerDependencies: 687 | - jsdom 688 | - typescript 689 | dev: true 690 | 691 | /@pandacss/parser@0.40.1(typescript@5.2.2): 692 | resolution: {integrity: sha512-tcBw29Qzxe7BSyf3G76d4ux8rCnqzg4kIApOZQFPrPLGzkc6/TO59HQr3gz8YQbD0HhO2QzjnUkVwCuOpCJoOQ==} 693 | dependencies: 694 | '@pandacss/config': 0.40.1 695 | '@pandacss/core': 0.40.1 696 | '@pandacss/extractor': 0.40.1(typescript@5.2.2) 697 | '@pandacss/logger': 0.40.1 698 | '@pandacss/shared': 0.40.1 699 | '@pandacss/types': 0.40.1 700 | '@vue/compiler-sfc': 3.4.19 701 | magic-string: 0.30.10 702 | ts-morph: 21.0.1 703 | ts-pattern: 5.0.8 704 | transitivePeerDependencies: 705 | - jsdom 706 | - typescript 707 | dev: true 708 | 709 | /@pandacss/postcss@0.40.1(typescript@5.2.2): 710 | resolution: {integrity: sha512-PunPSjbDYRw9ljLf4iGKpndAxUkDhptaVATVhHALA1zC31qjF86/ZQRTvMpbBKkIi18x0WKW4lQVA7NFb7+iYg==} 711 | dependencies: 712 | '@pandacss/node': 0.40.1(typescript@5.2.2) 713 | postcss: 8.4.38 714 | transitivePeerDependencies: 715 | - jsdom 716 | - typescript 717 | dev: true 718 | 719 | /@pandacss/preset-base@0.40.1: 720 | resolution: {integrity: sha512-uPevTES6MonoCSLa5BLHcIkj0hJE6Nynlnaqyen4BPESJFh+ylzVjQa8K3RpOAtD6phVgWsjf21cjmKfnxo+0Q==} 721 | dependencies: 722 | '@pandacss/types': 0.40.1 723 | dev: true 724 | 725 | /@pandacss/preset-panda@0.40.1: 726 | resolution: {integrity: sha512-rNw+mfU3rhQzOgUkKTZqQ6y0qRMua5Z8AVuWUrSPYCERsxmbdAVrdoOfkCjiZ+Kf+nWGumlDca9IWxI5vYlSMw==} 727 | dependencies: 728 | '@pandacss/types': 0.40.1 729 | dev: true 730 | 731 | /@pandacss/shared@0.40.1: 732 | resolution: {integrity: sha512-FBI2AaaYQZoA7TU/qa9z4FVGU3eQDC/cXobTOzmvewpVb+kFSjPo9hralYAViq+5EFRAJOFM7NMqQH0Enitjnw==} 733 | dev: true 734 | 735 | /@pandacss/token-dictionary@0.40.1: 736 | resolution: {integrity: sha512-vpeGGJMd1dasGD2siEqSxtg9wAYNHVnafJSL+QCtarRSwVf9/ETw48md6CvGX7Iq6mfUpNJaa1JkBmhnQUVuNg==} 737 | dependencies: 738 | '@pandacss/logger': 0.40.1 739 | '@pandacss/shared': 0.40.1 740 | '@pandacss/types': 0.40.1 741 | ts-pattern: 5.0.8 742 | dev: true 743 | 744 | /@pandacss/types@0.40.1: 745 | resolution: {integrity: sha512-znHd2Qc9zv/3e86CkM04Dv5b3dTymucfAvbvkUrvz4AT1KME7BQ1YEQRpaXgdE4UI5waV+Rv0Tx7Dmtt//4yWQ==} 746 | dev: true 747 | 748 | /@rollup/rollup-android-arm-eabi@4.18.0: 749 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 750 | cpu: [arm] 751 | os: [android] 752 | requiresBuild: true 753 | dev: true 754 | optional: true 755 | 756 | /@rollup/rollup-android-arm64@4.18.0: 757 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 758 | cpu: [arm64] 759 | os: [android] 760 | requiresBuild: true 761 | dev: true 762 | optional: true 763 | 764 | /@rollup/rollup-darwin-arm64@4.18.0: 765 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 766 | cpu: [arm64] 767 | os: [darwin] 768 | requiresBuild: true 769 | dev: true 770 | optional: true 771 | 772 | /@rollup/rollup-darwin-x64@4.18.0: 773 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 774 | cpu: [x64] 775 | os: [darwin] 776 | requiresBuild: true 777 | dev: true 778 | optional: true 779 | 780 | /@rollup/rollup-linux-arm-gnueabihf@4.18.0: 781 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 782 | cpu: [arm] 783 | os: [linux] 784 | requiresBuild: true 785 | dev: true 786 | optional: true 787 | 788 | /@rollup/rollup-linux-arm-musleabihf@4.18.0: 789 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 790 | cpu: [arm] 791 | os: [linux] 792 | requiresBuild: true 793 | dev: true 794 | optional: true 795 | 796 | /@rollup/rollup-linux-arm64-gnu@4.18.0: 797 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 798 | cpu: [arm64] 799 | os: [linux] 800 | requiresBuild: true 801 | dev: true 802 | optional: true 803 | 804 | /@rollup/rollup-linux-arm64-musl@4.18.0: 805 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 806 | cpu: [arm64] 807 | os: [linux] 808 | requiresBuild: true 809 | dev: true 810 | optional: true 811 | 812 | /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: 813 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 814 | cpu: [ppc64] 815 | os: [linux] 816 | requiresBuild: true 817 | dev: true 818 | optional: true 819 | 820 | /@rollup/rollup-linux-riscv64-gnu@4.18.0: 821 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 822 | cpu: [riscv64] 823 | os: [linux] 824 | requiresBuild: true 825 | dev: true 826 | optional: true 827 | 828 | /@rollup/rollup-linux-s390x-gnu@4.18.0: 829 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 830 | cpu: [s390x] 831 | os: [linux] 832 | requiresBuild: true 833 | dev: true 834 | optional: true 835 | 836 | /@rollup/rollup-linux-x64-gnu@4.18.0: 837 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 838 | cpu: [x64] 839 | os: [linux] 840 | requiresBuild: true 841 | dev: true 842 | optional: true 843 | 844 | /@rollup/rollup-linux-x64-musl@4.18.0: 845 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 846 | cpu: [x64] 847 | os: [linux] 848 | requiresBuild: true 849 | dev: true 850 | optional: true 851 | 852 | /@rollup/rollup-win32-arm64-msvc@4.18.0: 853 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 854 | cpu: [arm64] 855 | os: [win32] 856 | requiresBuild: true 857 | dev: true 858 | optional: true 859 | 860 | /@rollup/rollup-win32-ia32-msvc@4.18.0: 861 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 862 | cpu: [ia32] 863 | os: [win32] 864 | requiresBuild: true 865 | dev: true 866 | optional: true 867 | 868 | /@rollup/rollup-win32-x64-msvc@4.18.0: 869 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 870 | cpu: [x64] 871 | os: [win32] 872 | requiresBuild: true 873 | dev: true 874 | optional: true 875 | 876 | /@tailwindcss/typography@0.5.13(tailwindcss@3.4.4): 877 | resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} 878 | peerDependencies: 879 | tailwindcss: '>=3.0.0 || insiders' 880 | dependencies: 881 | lodash.castarray: 4.4.0 882 | lodash.isplainobject: 4.0.6 883 | lodash.merge: 4.6.2 884 | postcss-selector-parser: 6.0.10 885 | tailwindcss: 3.4.4 886 | dev: false 887 | 888 | /@ts-morph/common@0.22.0: 889 | resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} 890 | dependencies: 891 | fast-glob: 3.3.2 892 | minimatch: 9.0.4 893 | mkdirp: 3.0.1 894 | path-browserify: 1.0.1 895 | dev: true 896 | 897 | /@types/estree@1.0.5: 898 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 899 | dev: true 900 | 901 | /@types/node@17.0.45: 902 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 903 | dev: true 904 | 905 | /@types/node@20.14.2: 906 | resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} 907 | dependencies: 908 | undici-types: 5.26.5 909 | dev: true 910 | 911 | /@vue/compiler-core@3.4.19: 912 | resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} 913 | dependencies: 914 | '@babel/parser': 7.24.7 915 | '@vue/shared': 3.4.19 916 | entities: 4.5.0 917 | estree-walker: 2.0.2 918 | source-map-js: 1.0.2 919 | dev: true 920 | 921 | /@vue/compiler-dom@3.4.19: 922 | resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==} 923 | dependencies: 924 | '@vue/compiler-core': 3.4.19 925 | '@vue/shared': 3.4.19 926 | dev: true 927 | 928 | /@vue/compiler-sfc@3.4.19: 929 | resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} 930 | dependencies: 931 | '@babel/parser': 7.24.7 932 | '@vue/compiler-core': 3.4.19 933 | '@vue/compiler-dom': 3.4.19 934 | '@vue/compiler-ssr': 3.4.19 935 | '@vue/shared': 3.4.19 936 | estree-walker: 2.0.2 937 | magic-string: 0.30.10 938 | postcss: 8.4.38 939 | source-map-js: 1.0.2 940 | dev: true 941 | 942 | /@vue/compiler-ssr@3.4.19: 943 | resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==} 944 | dependencies: 945 | '@vue/compiler-dom': 3.4.19 946 | '@vue/shared': 3.4.19 947 | dev: true 948 | 949 | /@vue/shared@3.4.19: 950 | resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} 951 | dev: true 952 | 953 | /acorn@8.10.0: 954 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 955 | engines: {node: '>=0.4.0'} 956 | hasBin: true 957 | dev: true 958 | 959 | /ansi-colors@4.1.3: 960 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 961 | engines: {node: '>=6'} 962 | dev: true 963 | 964 | /any-promise@1.3.0: 965 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 966 | 967 | /anymatch@3.1.3: 968 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 969 | engines: {node: '>= 8'} 970 | dependencies: 971 | normalize-path: 3.0.0 972 | picomatch: 2.3.1 973 | 974 | /arg@5.0.2: 975 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 976 | dev: false 977 | 978 | /argparse@1.0.10: 979 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 980 | dependencies: 981 | sprintf-js: 1.0.3 982 | dev: true 983 | 984 | /array-union@2.1.0: 985 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 986 | engines: {node: '>=8'} 987 | dev: true 988 | 989 | /balanced-match@1.0.2: 990 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 991 | 992 | /binary-extensions@2.2.0: 993 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 994 | engines: {node: '>=8'} 995 | 996 | /brace-expansion@1.1.11: 997 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 998 | dependencies: 999 | balanced-match: 1.0.2 1000 | concat-map: 0.0.1 1001 | 1002 | /brace-expansion@2.0.1: 1003 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1004 | dependencies: 1005 | balanced-match: 1.0.2 1006 | dev: true 1007 | 1008 | /braces@3.0.2: 1009 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1010 | engines: {node: '>=8'} 1011 | dependencies: 1012 | fill-range: 7.0.1 1013 | 1014 | /browserslist@4.23.0: 1015 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 1016 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1017 | hasBin: true 1018 | dependencies: 1019 | caniuse-lite: 1.0.30001629 1020 | electron-to-chromium: 1.4.796 1021 | node-releases: 2.0.14 1022 | update-browserslist-db: 1.0.13(browserslist@4.23.0) 1023 | dev: true 1024 | 1025 | /bundle-n-require@1.1.1: 1026 | resolution: {integrity: sha512-EB2wFjXF106LQLe/CYnKCMCdLeTW47AtcEtUfiqAOgr2a08k0+YgRklur2aLfEYHlhz6baMskZ8L2U92Hh0vyA==} 1027 | dependencies: 1028 | esbuild: 0.20.2 1029 | node-eval: 2.0.0 1030 | dev: true 1031 | 1032 | /bundle-require@4.0.2(esbuild@0.21.4): 1033 | resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} 1034 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1035 | peerDependencies: 1036 | esbuild: '>=0.17' 1037 | dependencies: 1038 | esbuild: 0.21.4 1039 | load-tsconfig: 0.2.5 1040 | dev: true 1041 | 1042 | /cac@6.7.14: 1043 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1044 | engines: {node: '>=8'} 1045 | dev: true 1046 | 1047 | /camelcase-css@2.0.1: 1048 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1049 | engines: {node: '>= 6'} 1050 | dev: false 1051 | 1052 | /caniuse-api@3.0.0: 1053 | resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} 1054 | dependencies: 1055 | browserslist: 4.23.0 1056 | caniuse-lite: 1.0.30001541 1057 | lodash.memoize: 4.1.2 1058 | lodash.uniq: 4.5.0 1059 | dev: true 1060 | 1061 | /caniuse-lite@1.0.30001541: 1062 | resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==} 1063 | dev: true 1064 | 1065 | /caniuse-lite@1.0.30001629: 1066 | resolution: {integrity: sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==} 1067 | dev: true 1068 | 1069 | /chokidar@3.5.3: 1070 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1071 | engines: {node: '>= 8.10.0'} 1072 | dependencies: 1073 | anymatch: 3.1.3 1074 | braces: 3.0.2 1075 | glob-parent: 5.1.2 1076 | is-binary-path: 2.1.0 1077 | is-glob: 4.0.3 1078 | normalize-path: 3.0.0 1079 | readdirp: 3.6.0 1080 | optionalDependencies: 1081 | fsevents: 2.3.3 1082 | 1083 | /chokidar@3.6.0: 1084 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 1085 | engines: {node: '>= 8.10.0'} 1086 | dependencies: 1087 | anymatch: 3.1.3 1088 | braces: 3.0.2 1089 | glob-parent: 5.1.2 1090 | is-binary-path: 2.1.0 1091 | is-glob: 4.0.3 1092 | normalize-path: 3.0.0 1093 | readdirp: 3.6.0 1094 | optionalDependencies: 1095 | fsevents: 2.3.3 1096 | dev: true 1097 | 1098 | /code-block-writer@12.0.0: 1099 | resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} 1100 | dev: true 1101 | 1102 | /commander@4.1.1: 1103 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1104 | engines: {node: '>= 6'} 1105 | 1106 | /concat-map@0.0.1: 1107 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1108 | 1109 | /cross-spawn@7.0.3: 1110 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1111 | engines: {node: '>= 8'} 1112 | dependencies: 1113 | path-key: 3.1.1 1114 | shebang-command: 2.0.0 1115 | which: 2.0.2 1116 | dev: true 1117 | 1118 | /crosspath@2.0.0: 1119 | resolution: {integrity: sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==} 1120 | engines: {node: '>=14.9.0'} 1121 | dependencies: 1122 | '@types/node': 17.0.45 1123 | dev: true 1124 | 1125 | /cssesc@3.0.0: 1126 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1127 | engines: {node: '>=4'} 1128 | hasBin: true 1129 | 1130 | /cssnano-utils@5.0.0(postcss@8.4.38): 1131 | resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} 1132 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 1133 | peerDependencies: 1134 | postcss: ^8.4.31 1135 | dependencies: 1136 | postcss: 8.4.38 1137 | dev: true 1138 | 1139 | /debug@4.3.4: 1140 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1141 | engines: {node: '>=6.0'} 1142 | peerDependencies: 1143 | supports-color: '*' 1144 | peerDependenciesMeta: 1145 | supports-color: 1146 | optional: true 1147 | dependencies: 1148 | ms: 2.1.2 1149 | dev: true 1150 | 1151 | /detect-libc@1.0.3: 1152 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1153 | engines: {node: '>=0.10'} 1154 | hasBin: true 1155 | dev: true 1156 | 1157 | /didyoumean@1.2.2: 1158 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1159 | dev: false 1160 | 1161 | /dir-glob@3.0.1: 1162 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1163 | engines: {node: '>=8'} 1164 | dependencies: 1165 | path-type: 4.0.0 1166 | dev: true 1167 | 1168 | /dlv@1.1.3: 1169 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1170 | dev: false 1171 | 1172 | /electron-to-chromium@1.4.796: 1173 | resolution: {integrity: sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA==} 1174 | dev: true 1175 | 1176 | /entities@4.5.0: 1177 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1178 | engines: {node: '>=0.12'} 1179 | dev: true 1180 | 1181 | /esbuild@0.20.2: 1182 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} 1183 | engines: {node: '>=12'} 1184 | hasBin: true 1185 | requiresBuild: true 1186 | optionalDependencies: 1187 | '@esbuild/aix-ppc64': 0.20.2 1188 | '@esbuild/android-arm': 0.20.2 1189 | '@esbuild/android-arm64': 0.20.2 1190 | '@esbuild/android-x64': 0.20.2 1191 | '@esbuild/darwin-arm64': 0.20.2 1192 | '@esbuild/darwin-x64': 0.20.2 1193 | '@esbuild/freebsd-arm64': 0.20.2 1194 | '@esbuild/freebsd-x64': 0.20.2 1195 | '@esbuild/linux-arm': 0.20.2 1196 | '@esbuild/linux-arm64': 0.20.2 1197 | '@esbuild/linux-ia32': 0.20.2 1198 | '@esbuild/linux-loong64': 0.20.2 1199 | '@esbuild/linux-mips64el': 0.20.2 1200 | '@esbuild/linux-ppc64': 0.20.2 1201 | '@esbuild/linux-riscv64': 0.20.2 1202 | '@esbuild/linux-s390x': 0.20.2 1203 | '@esbuild/linux-x64': 0.20.2 1204 | '@esbuild/netbsd-x64': 0.20.2 1205 | '@esbuild/openbsd-x64': 0.20.2 1206 | '@esbuild/sunos-x64': 0.20.2 1207 | '@esbuild/win32-arm64': 0.20.2 1208 | '@esbuild/win32-ia32': 0.20.2 1209 | '@esbuild/win32-x64': 0.20.2 1210 | dev: true 1211 | 1212 | /esbuild@0.21.4: 1213 | resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==} 1214 | engines: {node: '>=12'} 1215 | hasBin: true 1216 | requiresBuild: true 1217 | optionalDependencies: 1218 | '@esbuild/aix-ppc64': 0.21.4 1219 | '@esbuild/android-arm': 0.21.4 1220 | '@esbuild/android-arm64': 0.21.4 1221 | '@esbuild/android-x64': 0.21.4 1222 | '@esbuild/darwin-arm64': 0.21.4 1223 | '@esbuild/darwin-x64': 0.21.4 1224 | '@esbuild/freebsd-arm64': 0.21.4 1225 | '@esbuild/freebsd-x64': 0.21.4 1226 | '@esbuild/linux-arm': 0.21.4 1227 | '@esbuild/linux-arm64': 0.21.4 1228 | '@esbuild/linux-ia32': 0.21.4 1229 | '@esbuild/linux-loong64': 0.21.4 1230 | '@esbuild/linux-mips64el': 0.21.4 1231 | '@esbuild/linux-ppc64': 0.21.4 1232 | '@esbuild/linux-riscv64': 0.21.4 1233 | '@esbuild/linux-s390x': 0.21.4 1234 | '@esbuild/linux-x64': 0.21.4 1235 | '@esbuild/netbsd-x64': 0.21.4 1236 | '@esbuild/openbsd-x64': 0.21.4 1237 | '@esbuild/sunos-x64': 0.21.4 1238 | '@esbuild/win32-arm64': 0.21.4 1239 | '@esbuild/win32-ia32': 0.21.4 1240 | '@esbuild/win32-x64': 0.21.4 1241 | dev: true 1242 | 1243 | /escalade@3.1.1: 1244 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1245 | engines: {node: '>=6'} 1246 | dev: true 1247 | 1248 | /escalade@3.1.2: 1249 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 1250 | engines: {node: '>=6'} 1251 | dev: true 1252 | 1253 | /esprima@4.0.1: 1254 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1255 | engines: {node: '>=4'} 1256 | hasBin: true 1257 | dev: true 1258 | 1259 | /estree-walker@2.0.2: 1260 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1261 | dev: true 1262 | 1263 | /execa@5.1.1: 1264 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1265 | engines: {node: '>=10'} 1266 | dependencies: 1267 | cross-spawn: 7.0.3 1268 | get-stream: 6.0.1 1269 | human-signals: 2.1.0 1270 | is-stream: 2.0.1 1271 | merge-stream: 2.0.0 1272 | npm-run-path: 4.0.1 1273 | onetime: 5.1.2 1274 | signal-exit: 3.0.7 1275 | strip-final-newline: 2.0.0 1276 | dev: true 1277 | 1278 | /fast-glob@3.3.1: 1279 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 1280 | engines: {node: '>=8.6.0'} 1281 | dependencies: 1282 | '@nodelib/fs.stat': 2.0.5 1283 | '@nodelib/fs.walk': 1.2.8 1284 | glob-parent: 5.1.2 1285 | merge2: 1.4.1 1286 | micromatch: 4.0.5 1287 | 1288 | /fast-glob@3.3.2: 1289 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1290 | engines: {node: '>=8.6.0'} 1291 | dependencies: 1292 | '@nodelib/fs.stat': 2.0.5 1293 | '@nodelib/fs.walk': 1.2.8 1294 | glob-parent: 5.1.2 1295 | merge2: 1.4.1 1296 | micromatch: 4.0.5 1297 | dev: true 1298 | 1299 | /fastq@1.15.0: 1300 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1301 | dependencies: 1302 | reusify: 1.0.4 1303 | 1304 | /file-size@1.0.0: 1305 | resolution: {integrity: sha512-tLIdonWTpABkU6Axg2yGChYdrOsy4V8xcm0IcyAP8fSsu6jiXLm5pgs083e4sq5fzNRZuAYolUbZyYmPvCKfwQ==} 1306 | dev: true 1307 | 1308 | /filesize@10.1.2: 1309 | resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} 1310 | engines: {node: '>= 10.4.0'} 1311 | dev: true 1312 | 1313 | /fill-range@7.0.1: 1314 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1315 | engines: {node: '>=8'} 1316 | dependencies: 1317 | to-regex-range: 5.0.1 1318 | 1319 | /find-up@4.1.0: 1320 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1321 | engines: {node: '>=8'} 1322 | dependencies: 1323 | locate-path: 5.0.0 1324 | path-exists: 4.0.0 1325 | dev: true 1326 | 1327 | /find-up@5.0.0: 1328 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1329 | engines: {node: '>=10'} 1330 | dependencies: 1331 | locate-path: 6.0.0 1332 | path-exists: 4.0.0 1333 | dev: true 1334 | 1335 | /find-yarn-workspace-root2@1.2.16: 1336 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1337 | dependencies: 1338 | micromatch: 4.0.5 1339 | pkg-dir: 4.2.0 1340 | dev: true 1341 | 1342 | /fs-extra@11.2.0: 1343 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} 1344 | engines: {node: '>=14.14'} 1345 | dependencies: 1346 | graceful-fs: 4.2.11 1347 | jsonfile: 6.1.0 1348 | universalify: 2.0.0 1349 | dev: true 1350 | 1351 | /fs.realpath@1.0.0: 1352 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1353 | 1354 | /fsevents@2.3.3: 1355 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1356 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1357 | os: [darwin] 1358 | requiresBuild: true 1359 | optional: true 1360 | 1361 | /function-bind@1.1.1: 1362 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1363 | dev: false 1364 | 1365 | /get-stream@6.0.1: 1366 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1367 | engines: {node: '>=10'} 1368 | dev: true 1369 | 1370 | /glob-parent@5.1.2: 1371 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1372 | engines: {node: '>= 6'} 1373 | dependencies: 1374 | is-glob: 4.0.3 1375 | 1376 | /glob-parent@6.0.2: 1377 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1378 | engines: {node: '>=10.13.0'} 1379 | dependencies: 1380 | is-glob: 4.0.3 1381 | 1382 | /glob@7.1.6: 1383 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1384 | deprecated: Glob versions prior to v9 are no longer supported 1385 | dependencies: 1386 | fs.realpath: 1.0.0 1387 | inflight: 1.0.6 1388 | inherits: 2.0.4 1389 | minimatch: 3.1.2 1390 | once: 1.4.0 1391 | path-is-absolute: 1.0.1 1392 | 1393 | /globby@11.1.0: 1394 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1395 | engines: {node: '>=10'} 1396 | dependencies: 1397 | array-union: 2.1.0 1398 | dir-glob: 3.0.1 1399 | fast-glob: 3.3.1 1400 | ignore: 5.2.4 1401 | merge2: 1.4.1 1402 | slash: 3.0.0 1403 | dev: true 1404 | 1405 | /graceful-fs@4.2.11: 1406 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1407 | dev: true 1408 | 1409 | /has@1.0.3: 1410 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1411 | engines: {node: '>= 0.4.0'} 1412 | dependencies: 1413 | function-bind: 1.1.1 1414 | dev: false 1415 | 1416 | /hookable@5.5.3: 1417 | resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 1418 | dev: true 1419 | 1420 | /human-signals@2.1.0: 1421 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1422 | engines: {node: '>=10.17.0'} 1423 | dev: true 1424 | 1425 | /ignore@5.2.4: 1426 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1427 | engines: {node: '>= 4'} 1428 | dev: true 1429 | 1430 | /inflight@1.0.6: 1431 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1432 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1433 | dependencies: 1434 | once: 1.4.0 1435 | wrappy: 1.0.2 1436 | 1437 | /inherits@2.0.4: 1438 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1439 | 1440 | /is-binary-path@2.1.0: 1441 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1442 | engines: {node: '>=8'} 1443 | dependencies: 1444 | binary-extensions: 2.2.0 1445 | 1446 | /is-core-module@2.13.0: 1447 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} 1448 | dependencies: 1449 | has: 1.0.3 1450 | dev: false 1451 | 1452 | /is-extglob@2.1.1: 1453 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1454 | engines: {node: '>=0.10.0'} 1455 | 1456 | /is-glob@4.0.3: 1457 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1458 | engines: {node: '>=0.10.0'} 1459 | dependencies: 1460 | is-extglob: 2.1.1 1461 | 1462 | /is-number@7.0.0: 1463 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1464 | engines: {node: '>=0.12.0'} 1465 | 1466 | /is-stream@2.0.1: 1467 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1468 | engines: {node: '>=8'} 1469 | dev: true 1470 | 1471 | /is-what@4.1.15: 1472 | resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} 1473 | engines: {node: '>=12.13'} 1474 | dev: true 1475 | 1476 | /isexe@2.0.0: 1477 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1478 | dev: true 1479 | 1480 | /javascript-stringify@2.1.0: 1481 | resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} 1482 | dev: true 1483 | 1484 | /jiti@1.21.3: 1485 | resolution: {integrity: sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==} 1486 | hasBin: true 1487 | dev: false 1488 | 1489 | /joycon@3.1.1: 1490 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1491 | engines: {node: '>=10'} 1492 | dev: true 1493 | 1494 | /js-yaml@3.14.1: 1495 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1496 | hasBin: true 1497 | dependencies: 1498 | argparse: 1.0.10 1499 | esprima: 4.0.1 1500 | dev: true 1501 | 1502 | /jsonc-parser@3.2.0: 1503 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 1504 | dev: true 1505 | 1506 | /jsonfile@6.1.0: 1507 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1508 | dependencies: 1509 | universalify: 2.0.0 1510 | optionalDependencies: 1511 | graceful-fs: 4.2.11 1512 | dev: true 1513 | 1514 | /kleur@4.1.5: 1515 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1516 | engines: {node: '>=6'} 1517 | dev: true 1518 | 1519 | /lightningcss-darwin-arm64@1.23.0: 1520 | resolution: {integrity: sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA==} 1521 | engines: {node: '>= 12.0.0'} 1522 | cpu: [arm64] 1523 | os: [darwin] 1524 | requiresBuild: true 1525 | dev: true 1526 | optional: true 1527 | 1528 | /lightningcss-darwin-x64@1.23.0: 1529 | resolution: {integrity: sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg==} 1530 | engines: {node: '>= 12.0.0'} 1531 | cpu: [x64] 1532 | os: [darwin] 1533 | requiresBuild: true 1534 | dev: true 1535 | optional: true 1536 | 1537 | /lightningcss-freebsd-x64@1.23.0: 1538 | resolution: {integrity: sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA==} 1539 | engines: {node: '>= 12.0.0'} 1540 | cpu: [x64] 1541 | os: [freebsd] 1542 | requiresBuild: true 1543 | dev: true 1544 | optional: true 1545 | 1546 | /lightningcss-linux-arm-gnueabihf@1.23.0: 1547 | resolution: {integrity: sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg==} 1548 | engines: {node: '>= 12.0.0'} 1549 | cpu: [arm] 1550 | os: [linux] 1551 | requiresBuild: true 1552 | dev: true 1553 | optional: true 1554 | 1555 | /lightningcss-linux-arm64-gnu@1.23.0: 1556 | resolution: {integrity: sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg==} 1557 | engines: {node: '>= 12.0.0'} 1558 | cpu: [arm64] 1559 | os: [linux] 1560 | requiresBuild: true 1561 | dev: true 1562 | optional: true 1563 | 1564 | /lightningcss-linux-arm64-musl@1.23.0: 1565 | resolution: {integrity: sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g==} 1566 | engines: {node: '>= 12.0.0'} 1567 | cpu: [arm64] 1568 | os: [linux] 1569 | requiresBuild: true 1570 | dev: true 1571 | optional: true 1572 | 1573 | /lightningcss-linux-x64-gnu@1.23.0: 1574 | resolution: {integrity: sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw==} 1575 | engines: {node: '>= 12.0.0'} 1576 | cpu: [x64] 1577 | os: [linux] 1578 | requiresBuild: true 1579 | dev: true 1580 | optional: true 1581 | 1582 | /lightningcss-linux-x64-musl@1.23.0: 1583 | resolution: {integrity: sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ==} 1584 | engines: {node: '>= 12.0.0'} 1585 | cpu: [x64] 1586 | os: [linux] 1587 | requiresBuild: true 1588 | dev: true 1589 | optional: true 1590 | 1591 | /lightningcss-win32-x64-msvc@1.23.0: 1592 | resolution: {integrity: sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg==} 1593 | engines: {node: '>= 12.0.0'} 1594 | cpu: [x64] 1595 | os: [win32] 1596 | requiresBuild: true 1597 | dev: true 1598 | optional: true 1599 | 1600 | /lightningcss@1.23.0: 1601 | resolution: {integrity: sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA==} 1602 | engines: {node: '>= 12.0.0'} 1603 | dependencies: 1604 | detect-libc: 1.0.3 1605 | optionalDependencies: 1606 | lightningcss-darwin-arm64: 1.23.0 1607 | lightningcss-darwin-x64: 1.23.0 1608 | lightningcss-freebsd-x64: 1.23.0 1609 | lightningcss-linux-arm-gnueabihf: 1.23.0 1610 | lightningcss-linux-arm64-gnu: 1.23.0 1611 | lightningcss-linux-arm64-musl: 1.23.0 1612 | lightningcss-linux-x64-gnu: 1.23.0 1613 | lightningcss-linux-x64-musl: 1.23.0 1614 | lightningcss-win32-x64-msvc: 1.23.0 1615 | dev: true 1616 | 1617 | /lilconfig@2.1.0: 1618 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1619 | engines: {node: '>=10'} 1620 | 1621 | /lines-and-columns@1.2.4: 1622 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1623 | 1624 | /load-tsconfig@0.2.5: 1625 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1626 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1627 | dev: true 1628 | 1629 | /load-yaml-file@0.2.0: 1630 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1631 | engines: {node: '>=6'} 1632 | dependencies: 1633 | graceful-fs: 4.2.11 1634 | js-yaml: 3.14.1 1635 | pify: 4.0.1 1636 | strip-bom: 3.0.0 1637 | dev: true 1638 | 1639 | /locate-path@5.0.0: 1640 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1641 | engines: {node: '>=8'} 1642 | dependencies: 1643 | p-locate: 4.1.0 1644 | dev: true 1645 | 1646 | /locate-path@6.0.0: 1647 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1648 | engines: {node: '>=10'} 1649 | dependencies: 1650 | p-locate: 5.0.0 1651 | dev: true 1652 | 1653 | /lodash.castarray@4.4.0: 1654 | resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} 1655 | dev: false 1656 | 1657 | /lodash.isplainobject@4.0.6: 1658 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 1659 | dev: false 1660 | 1661 | /lodash.memoize@4.1.2: 1662 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 1663 | dev: true 1664 | 1665 | /lodash.merge@4.6.2: 1666 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1667 | 1668 | /lodash.sortby@4.7.0: 1669 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1670 | dev: true 1671 | 1672 | /lodash.uniq@4.5.0: 1673 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} 1674 | dev: true 1675 | 1676 | /look-it-up@2.1.0: 1677 | resolution: {integrity: sha512-nMoGWW2HurtuJf6XAL56FWTDCWLOTSsanrgwOyaR5Y4e3zfG5N/0cU5xWZSEU3tBxhQugRbV1xL9jb+ug7yZww==} 1678 | dev: true 1679 | 1680 | /magic-string@0.30.10: 1681 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 1682 | dependencies: 1683 | '@jridgewell/sourcemap-codec': 1.4.15 1684 | dev: true 1685 | 1686 | /merge-anything@5.1.7: 1687 | resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 1688 | engines: {node: '>=12.13'} 1689 | dependencies: 1690 | is-what: 4.1.15 1691 | dev: true 1692 | 1693 | /merge-stream@2.0.0: 1694 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1695 | dev: true 1696 | 1697 | /merge2@1.4.1: 1698 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1699 | engines: {node: '>= 8'} 1700 | 1701 | /microdiff@1.3.2: 1702 | resolution: {integrity: sha512-pKy60S2febliZIbwdfEQKTtL5bLNxOyiRRmD400gueYl9XcHyNGxzHSlJWn9IMHwYXT0yohPYL08+bGozVk8cQ==} 1703 | dev: true 1704 | 1705 | /micromatch@4.0.5: 1706 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1707 | engines: {node: '>=8.6'} 1708 | dependencies: 1709 | braces: 3.0.2 1710 | picomatch: 2.3.1 1711 | 1712 | /mimic-fn@2.1.0: 1713 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1714 | engines: {node: '>=6'} 1715 | dev: true 1716 | 1717 | /minimatch@3.1.2: 1718 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1719 | dependencies: 1720 | brace-expansion: 1.1.11 1721 | 1722 | /minimatch@9.0.4: 1723 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 1724 | engines: {node: '>=16 || 14 >=14.17'} 1725 | dependencies: 1726 | brace-expansion: 2.0.1 1727 | dev: true 1728 | 1729 | /mkdirp@3.0.1: 1730 | resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} 1731 | engines: {node: '>=10'} 1732 | hasBin: true 1733 | dev: true 1734 | 1735 | /mlly@1.4.2: 1736 | resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} 1737 | dependencies: 1738 | acorn: 8.10.0 1739 | pathe: 1.1.1 1740 | pkg-types: 1.0.3 1741 | ufo: 1.3.1 1742 | dev: true 1743 | 1744 | /ms@2.1.2: 1745 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1746 | dev: true 1747 | 1748 | /mz@2.7.0: 1749 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1750 | dependencies: 1751 | any-promise: 1.3.0 1752 | object-assign: 4.1.1 1753 | thenify-all: 1.6.0 1754 | 1755 | /nanoid@3.3.6: 1756 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1757 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1758 | hasBin: true 1759 | 1760 | /nanoid@3.3.7: 1761 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1762 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1763 | hasBin: true 1764 | dev: true 1765 | 1766 | /node-eval@2.0.0: 1767 | resolution: {integrity: sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg==} 1768 | engines: {node: '>= 4'} 1769 | dependencies: 1770 | path-is-absolute: 1.0.1 1771 | dev: true 1772 | 1773 | /node-releases@2.0.14: 1774 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 1775 | dev: true 1776 | 1777 | /normalize-path@3.0.0: 1778 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1779 | engines: {node: '>=0.10.0'} 1780 | 1781 | /npm-run-path@4.0.1: 1782 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1783 | engines: {node: '>=8'} 1784 | dependencies: 1785 | path-key: 3.1.1 1786 | dev: true 1787 | 1788 | /object-assign@4.1.1: 1789 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1790 | engines: {node: '>=0.10.0'} 1791 | 1792 | /object-hash@3.0.0: 1793 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1794 | engines: {node: '>= 6'} 1795 | dev: false 1796 | 1797 | /object-path@0.11.8: 1798 | resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} 1799 | engines: {node: '>= 10.12.0'} 1800 | dev: true 1801 | 1802 | /once@1.4.0: 1803 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1804 | dependencies: 1805 | wrappy: 1.0.2 1806 | 1807 | /onetime@5.1.2: 1808 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1809 | engines: {node: '>=6'} 1810 | dependencies: 1811 | mimic-fn: 2.1.0 1812 | dev: true 1813 | 1814 | /outdent@0.8.0: 1815 | resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} 1816 | dev: true 1817 | 1818 | /p-limit@2.3.0: 1819 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1820 | engines: {node: '>=6'} 1821 | dependencies: 1822 | p-try: 2.2.0 1823 | dev: true 1824 | 1825 | /p-limit@3.1.0: 1826 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1827 | engines: {node: '>=10'} 1828 | dependencies: 1829 | yocto-queue: 0.1.0 1830 | dev: true 1831 | 1832 | /p-locate@4.1.0: 1833 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1834 | engines: {node: '>=8'} 1835 | dependencies: 1836 | p-limit: 2.3.0 1837 | dev: true 1838 | 1839 | /p-locate@5.0.0: 1840 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1841 | engines: {node: '>=10'} 1842 | dependencies: 1843 | p-limit: 3.1.0 1844 | dev: true 1845 | 1846 | /p-try@2.2.0: 1847 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1848 | engines: {node: '>=6'} 1849 | dev: true 1850 | 1851 | /path-browserify@1.0.1: 1852 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 1853 | dev: true 1854 | 1855 | /path-exists@4.0.0: 1856 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1857 | engines: {node: '>=8'} 1858 | dev: true 1859 | 1860 | /path-is-absolute@1.0.1: 1861 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1862 | engines: {node: '>=0.10.0'} 1863 | 1864 | /path-key@3.1.1: 1865 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1866 | engines: {node: '>=8'} 1867 | dev: true 1868 | 1869 | /path-parse@1.0.7: 1870 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1871 | dev: false 1872 | 1873 | /path-type@4.0.0: 1874 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1875 | engines: {node: '>=8'} 1876 | dev: true 1877 | 1878 | /pathe@1.1.1: 1879 | resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} 1880 | dev: true 1881 | 1882 | /perfect-debounce@1.0.0: 1883 | resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} 1884 | dev: true 1885 | 1886 | /picocolors@1.0.0: 1887 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1888 | 1889 | /picomatch@2.3.1: 1890 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1891 | engines: {node: '>=8.6'} 1892 | 1893 | /pify@2.3.0: 1894 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1895 | engines: {node: '>=0.10.0'} 1896 | dev: false 1897 | 1898 | /pify@4.0.1: 1899 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1900 | engines: {node: '>=6'} 1901 | dev: true 1902 | 1903 | /pirates@4.0.6: 1904 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1905 | engines: {node: '>= 6'} 1906 | 1907 | /pkg-dir@4.2.0: 1908 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1909 | engines: {node: '>=8'} 1910 | dependencies: 1911 | find-up: 4.1.0 1912 | dev: true 1913 | 1914 | /pkg-types@1.0.3: 1915 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} 1916 | dependencies: 1917 | jsonc-parser: 3.2.0 1918 | mlly: 1.4.2 1919 | pathe: 1.1.1 1920 | dev: true 1921 | 1922 | /pluralize@8.0.0: 1923 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1924 | engines: {node: '>=4'} 1925 | dev: true 1926 | 1927 | /postcss-discard-duplicates@7.0.0(postcss@8.4.38): 1928 | resolution: {integrity: sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==} 1929 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 1930 | peerDependencies: 1931 | postcss: ^8.4.31 1932 | dependencies: 1933 | postcss: 8.4.38 1934 | dev: true 1935 | 1936 | /postcss-discard-empty@7.0.0(postcss@8.4.38): 1937 | resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} 1938 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 1939 | peerDependencies: 1940 | postcss: ^8.4.31 1941 | dependencies: 1942 | postcss: 8.4.38 1943 | dev: true 1944 | 1945 | /postcss-import@15.1.0(postcss@8.4.31): 1946 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1947 | engines: {node: '>=14.0.0'} 1948 | peerDependencies: 1949 | postcss: ^8.0.0 1950 | dependencies: 1951 | postcss: 8.4.31 1952 | postcss-value-parser: 4.2.0 1953 | read-cache: 1.0.0 1954 | resolve: 1.22.6 1955 | dev: false 1956 | 1957 | /postcss-js@4.0.1(postcss@8.4.31): 1958 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1959 | engines: {node: ^12 || ^14 || >= 16} 1960 | peerDependencies: 1961 | postcss: ^8.4.21 1962 | dependencies: 1963 | camelcase-css: 2.0.1 1964 | postcss: 8.4.31 1965 | dev: false 1966 | 1967 | /postcss-load-config@4.0.1(postcss@8.4.31): 1968 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 1969 | engines: {node: '>= 14'} 1970 | peerDependencies: 1971 | postcss: '>=8.0.9' 1972 | ts-node: '>=9.0.0' 1973 | peerDependenciesMeta: 1974 | postcss: 1975 | optional: true 1976 | ts-node: 1977 | optional: true 1978 | dependencies: 1979 | lilconfig: 2.1.0 1980 | postcss: 8.4.31 1981 | yaml: 2.3.2 1982 | 1983 | /postcss-merge-rules@7.0.0(postcss@8.4.38): 1984 | resolution: {integrity: sha512-Zty3VlOsD6VSjBMu6PiHCVpLegtBT/qtZRVBcSeyEZ6q1iU5qTYT0WtEoLRV+YubZZguS5/ycfP+NRiKfjv6aw==} 1985 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 1986 | peerDependencies: 1987 | postcss: ^8.4.31 1988 | dependencies: 1989 | browserslist: 4.23.0 1990 | caniuse-api: 3.0.0 1991 | cssnano-utils: 5.0.0(postcss@8.4.38) 1992 | postcss: 8.4.38 1993 | postcss-selector-parser: 6.0.16 1994 | dev: true 1995 | 1996 | /postcss-minify-selectors@7.0.0(postcss@8.4.38): 1997 | resolution: {integrity: sha512-f00CExZhD6lNw2vTZbcnmfxVgaVKzUw6IRsIFX3JTT8GdsoABc1WnhhGwL1i8YPJ3sSWw39fv7XPtvLb+3Uitw==} 1998 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 1999 | peerDependencies: 2000 | postcss: ^8.4.31 2001 | dependencies: 2002 | postcss: 8.4.38 2003 | postcss-selector-parser: 6.0.16 2004 | dev: true 2005 | 2006 | /postcss-nested@6.0.1(postcss@8.4.31): 2007 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2008 | engines: {node: '>=12.0'} 2009 | peerDependencies: 2010 | postcss: ^8.2.14 2011 | dependencies: 2012 | postcss: 8.4.31 2013 | postcss-selector-parser: 6.0.13 2014 | dev: false 2015 | 2016 | /postcss-nested@6.0.1(postcss@8.4.38): 2017 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2018 | engines: {node: '>=12.0'} 2019 | peerDependencies: 2020 | postcss: ^8.2.14 2021 | dependencies: 2022 | postcss: 8.4.38 2023 | postcss-selector-parser: 6.0.13 2024 | dev: true 2025 | 2026 | /postcss-normalize-whitespace@7.0.0(postcss@8.4.38): 2027 | resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} 2028 | engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 2029 | peerDependencies: 2030 | postcss: ^8.4.31 2031 | dependencies: 2032 | postcss: 8.4.38 2033 | postcss-value-parser: 4.2.0 2034 | dev: true 2035 | 2036 | /postcss-selector-parser@6.0.10: 2037 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 2038 | engines: {node: '>=4'} 2039 | dependencies: 2040 | cssesc: 3.0.0 2041 | util-deprecate: 1.0.2 2042 | dev: false 2043 | 2044 | /postcss-selector-parser@6.0.13: 2045 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 2046 | engines: {node: '>=4'} 2047 | dependencies: 2048 | cssesc: 3.0.0 2049 | util-deprecate: 1.0.2 2050 | 2051 | /postcss-selector-parser@6.0.16: 2052 | resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} 2053 | engines: {node: '>=4'} 2054 | dependencies: 2055 | cssesc: 3.0.0 2056 | util-deprecate: 1.0.2 2057 | dev: true 2058 | 2059 | /postcss-value-parser@4.2.0: 2060 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2061 | 2062 | /postcss@8.4.31: 2063 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2064 | engines: {node: ^10 || ^12 || >=14} 2065 | dependencies: 2066 | nanoid: 3.3.6 2067 | picocolors: 1.0.0 2068 | source-map-js: 1.0.2 2069 | 2070 | /postcss@8.4.38: 2071 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 2072 | engines: {node: ^10 || ^12 || >=14} 2073 | dependencies: 2074 | nanoid: 3.3.7 2075 | picocolors: 1.0.0 2076 | source-map-js: 1.2.0 2077 | dev: true 2078 | 2079 | /preferred-pm@3.1.2: 2080 | resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} 2081 | engines: {node: '>=10'} 2082 | dependencies: 2083 | find-up: 5.0.0 2084 | find-yarn-workspace-root2: 1.2.16 2085 | path-exists: 4.0.0 2086 | which-pm: 2.0.0 2087 | dev: true 2088 | 2089 | /prettier@3.2.5: 2090 | resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} 2091 | engines: {node: '>=14'} 2092 | hasBin: true 2093 | dev: true 2094 | 2095 | /punycode@2.3.0: 2096 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2097 | engines: {node: '>=6'} 2098 | dev: true 2099 | 2100 | /queue-microtask@1.2.3: 2101 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2102 | 2103 | /read-cache@1.0.0: 2104 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2105 | dependencies: 2106 | pify: 2.3.0 2107 | dev: false 2108 | 2109 | /readdirp@3.6.0: 2110 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2111 | engines: {node: '>=8.10.0'} 2112 | dependencies: 2113 | picomatch: 2.3.1 2114 | 2115 | /resolve-from@5.0.0: 2116 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2117 | engines: {node: '>=8'} 2118 | dev: true 2119 | 2120 | /resolve@1.22.6: 2121 | resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} 2122 | hasBin: true 2123 | dependencies: 2124 | is-core-module: 2.13.0 2125 | path-parse: 1.0.7 2126 | supports-preserve-symlinks-flag: 1.0.0 2127 | dev: false 2128 | 2129 | /reusify@1.0.4: 2130 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2131 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2132 | 2133 | /rollup@4.18.0: 2134 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 2135 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2136 | hasBin: true 2137 | dependencies: 2138 | '@types/estree': 1.0.5 2139 | optionalDependencies: 2140 | '@rollup/rollup-android-arm-eabi': 4.18.0 2141 | '@rollup/rollup-android-arm64': 4.18.0 2142 | '@rollup/rollup-darwin-arm64': 4.18.0 2143 | '@rollup/rollup-darwin-x64': 4.18.0 2144 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 2145 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0 2146 | '@rollup/rollup-linux-arm64-gnu': 4.18.0 2147 | '@rollup/rollup-linux-arm64-musl': 4.18.0 2148 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 2149 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0 2150 | '@rollup/rollup-linux-s390x-gnu': 4.18.0 2151 | '@rollup/rollup-linux-x64-gnu': 4.18.0 2152 | '@rollup/rollup-linux-x64-musl': 4.18.0 2153 | '@rollup/rollup-win32-arm64-msvc': 4.18.0 2154 | '@rollup/rollup-win32-ia32-msvc': 4.18.0 2155 | '@rollup/rollup-win32-x64-msvc': 4.18.0 2156 | fsevents: 2.3.3 2157 | dev: true 2158 | 2159 | /run-parallel@1.2.0: 2160 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2161 | dependencies: 2162 | queue-microtask: 1.2.3 2163 | 2164 | /shebang-command@2.0.0: 2165 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2166 | engines: {node: '>=8'} 2167 | dependencies: 2168 | shebang-regex: 3.0.0 2169 | dev: true 2170 | 2171 | /shebang-regex@3.0.0: 2172 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2173 | engines: {node: '>=8'} 2174 | dev: true 2175 | 2176 | /signal-exit@3.0.7: 2177 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2178 | dev: true 2179 | 2180 | /sisteransi@1.0.5: 2181 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2182 | dev: true 2183 | 2184 | /slash@3.0.0: 2185 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2186 | engines: {node: '>=8'} 2187 | dev: true 2188 | 2189 | /source-map-js@1.0.2: 2190 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2191 | engines: {node: '>=0.10.0'} 2192 | 2193 | /source-map-js@1.2.0: 2194 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 2195 | engines: {node: '>=0.10.0'} 2196 | dev: true 2197 | 2198 | /source-map@0.8.0-beta.0: 2199 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 2200 | engines: {node: '>= 8'} 2201 | dependencies: 2202 | whatwg-url: 7.1.0 2203 | dev: true 2204 | 2205 | /sprintf-js@1.0.3: 2206 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2207 | dev: true 2208 | 2209 | /strip-bom@3.0.0: 2210 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2211 | engines: {node: '>=4'} 2212 | dev: true 2213 | 2214 | /strip-final-newline@2.0.0: 2215 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2216 | engines: {node: '>=6'} 2217 | dev: true 2218 | 2219 | /sucrase@3.34.0: 2220 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 2221 | engines: {node: '>=8'} 2222 | hasBin: true 2223 | dependencies: 2224 | '@jridgewell/gen-mapping': 0.3.3 2225 | commander: 4.1.1 2226 | glob: 7.1.6 2227 | lines-and-columns: 1.2.4 2228 | mz: 2.7.0 2229 | pirates: 4.0.6 2230 | ts-interface-checker: 0.1.13 2231 | 2232 | /supports-preserve-symlinks-flag@1.0.0: 2233 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2234 | engines: {node: '>= 0.4'} 2235 | dev: false 2236 | 2237 | /tailwindcss@3.4.4: 2238 | resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} 2239 | engines: {node: '>=14.0.0'} 2240 | hasBin: true 2241 | dependencies: 2242 | '@alloc/quick-lru': 5.2.0 2243 | arg: 5.0.2 2244 | chokidar: 3.5.3 2245 | didyoumean: 1.2.2 2246 | dlv: 1.1.3 2247 | fast-glob: 3.3.1 2248 | glob-parent: 6.0.2 2249 | is-glob: 4.0.3 2250 | jiti: 1.21.3 2251 | lilconfig: 2.1.0 2252 | micromatch: 4.0.5 2253 | normalize-path: 3.0.0 2254 | object-hash: 3.0.0 2255 | picocolors: 1.0.0 2256 | postcss: 8.4.31 2257 | postcss-import: 15.1.0(postcss@8.4.31) 2258 | postcss-js: 4.0.1(postcss@8.4.31) 2259 | postcss-load-config: 4.0.1(postcss@8.4.31) 2260 | postcss-nested: 6.0.1(postcss@8.4.31) 2261 | postcss-selector-parser: 6.0.13 2262 | resolve: 1.22.6 2263 | sucrase: 3.34.0 2264 | transitivePeerDependencies: 2265 | - ts-node 2266 | dev: false 2267 | 2268 | /thenify-all@1.6.0: 2269 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2270 | engines: {node: '>=0.8'} 2271 | dependencies: 2272 | thenify: 3.3.1 2273 | 2274 | /thenify@3.3.1: 2275 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2276 | dependencies: 2277 | any-promise: 1.3.0 2278 | 2279 | /to-fast-properties@2.0.0: 2280 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2281 | engines: {node: '>=4'} 2282 | dev: true 2283 | 2284 | /to-regex-range@5.0.1: 2285 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2286 | engines: {node: '>=8.0'} 2287 | dependencies: 2288 | is-number: 7.0.0 2289 | 2290 | /tr46@1.0.1: 2291 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 2292 | dependencies: 2293 | punycode: 2.3.0 2294 | dev: true 2295 | 2296 | /tree-kill@1.2.2: 2297 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2298 | hasBin: true 2299 | dev: true 2300 | 2301 | /ts-evaluator@1.2.0(typescript@5.2.2): 2302 | resolution: {integrity: sha512-ncSGek1p92bj2ifB7s9UBgryHCkU9vwC5d+Lplt12gT9DH+e41X8dMoHRQjIMeAvyG7j9dEnuHmwgOtuRIQL+Q==} 2303 | engines: {node: '>=14.19.0'} 2304 | peerDependencies: 2305 | jsdom: '>=14.x || >=15.x || >=16.x || >=17.x || >=18.x || >=19.x || >=20.x || >=21.x || >=22.x' 2306 | typescript: '>=3.2.x || >= 4.x || >= 5.x' 2307 | peerDependenciesMeta: 2308 | jsdom: 2309 | optional: true 2310 | dependencies: 2311 | ansi-colors: 4.1.3 2312 | crosspath: 2.0.0 2313 | object-path: 0.11.8 2314 | typescript: 5.2.2 2315 | dev: true 2316 | 2317 | /ts-interface-checker@0.1.13: 2318 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2319 | 2320 | /ts-morph@21.0.1: 2321 | resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} 2322 | dependencies: 2323 | '@ts-morph/common': 0.22.0 2324 | code-block-writer: 12.0.0 2325 | dev: true 2326 | 2327 | /ts-pattern@5.0.8: 2328 | resolution: {integrity: sha512-aafbuAQOTEeWmA7wtcL94w6I89EgLD7F+IlWkr596wYxeb0oveWDO5dQpv85YP0CGbxXT/qXBIeV6IYLcoZ2uA==} 2329 | dev: true 2330 | 2331 | /tsconfck@3.0.2(typescript@5.2.2): 2332 | resolution: {integrity: sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q==} 2333 | engines: {node: ^18 || >=20} 2334 | hasBin: true 2335 | peerDependencies: 2336 | typescript: ^5.0.0 2337 | peerDependenciesMeta: 2338 | typescript: 2339 | optional: true 2340 | dependencies: 2341 | typescript: 5.2.2 2342 | dev: true 2343 | 2344 | /tsup@8.1.0(postcss@8.4.31)(typescript@5.2.2): 2345 | resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==} 2346 | engines: {node: '>=18'} 2347 | hasBin: true 2348 | peerDependencies: 2349 | '@microsoft/api-extractor': ^7.36.0 2350 | '@swc/core': ^1 2351 | postcss: ^8.4.12 2352 | typescript: '>=4.5.0' 2353 | peerDependenciesMeta: 2354 | '@microsoft/api-extractor': 2355 | optional: true 2356 | '@swc/core': 2357 | optional: true 2358 | postcss: 2359 | optional: true 2360 | typescript: 2361 | optional: true 2362 | dependencies: 2363 | bundle-require: 4.0.2(esbuild@0.21.4) 2364 | cac: 6.7.14 2365 | chokidar: 3.5.3 2366 | debug: 4.3.4 2367 | esbuild: 0.21.4 2368 | execa: 5.1.1 2369 | globby: 11.1.0 2370 | joycon: 3.1.1 2371 | postcss: 8.4.31 2372 | postcss-load-config: 4.0.1(postcss@8.4.31) 2373 | resolve-from: 5.0.0 2374 | rollup: 4.18.0 2375 | source-map: 0.8.0-beta.0 2376 | sucrase: 3.34.0 2377 | tree-kill: 1.2.2 2378 | typescript: 5.2.2 2379 | transitivePeerDependencies: 2380 | - supports-color 2381 | - ts-node 2382 | dev: true 2383 | 2384 | /typescript@5.2.2: 2385 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 2386 | engines: {node: '>=14.17'} 2387 | hasBin: true 2388 | dev: true 2389 | 2390 | /typescript@5.3.3: 2391 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 2392 | engines: {node: '>=14.17'} 2393 | hasBin: true 2394 | dev: true 2395 | 2396 | /ufo@1.3.1: 2397 | resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} 2398 | dev: true 2399 | 2400 | /undici-types@5.26.5: 2401 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 2402 | dev: true 2403 | 2404 | /universalify@2.0.0: 2405 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 2406 | engines: {node: '>= 10.0.0'} 2407 | dev: true 2408 | 2409 | /update-browserslist-db@1.0.13(browserslist@4.23.0): 2410 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 2411 | hasBin: true 2412 | peerDependencies: 2413 | browserslist: '>= 4.21.0' 2414 | dependencies: 2415 | browserslist: 4.23.0 2416 | escalade: 3.1.1 2417 | picocolors: 1.0.0 2418 | dev: true 2419 | 2420 | /util-deprecate@1.0.2: 2421 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2422 | 2423 | /webidl-conversions@4.0.2: 2424 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 2425 | dev: true 2426 | 2427 | /whatwg-url@7.1.0: 2428 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 2429 | dependencies: 2430 | lodash.sortby: 4.7.0 2431 | tr46: 1.0.1 2432 | webidl-conversions: 4.0.2 2433 | dev: true 2434 | 2435 | /which-pm@2.0.0: 2436 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 2437 | engines: {node: '>=8.15'} 2438 | dependencies: 2439 | load-yaml-file: 0.2.0 2440 | path-exists: 4.0.0 2441 | dev: true 2442 | 2443 | /which@2.0.2: 2444 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2445 | engines: {node: '>= 8'} 2446 | hasBin: true 2447 | dependencies: 2448 | isexe: 2.0.0 2449 | dev: true 2450 | 2451 | /wrappy@1.0.2: 2452 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2453 | 2454 | /yaml@2.3.2: 2455 | resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} 2456 | engines: {node: '>= 14'} 2457 | 2458 | /yocto-queue@0.1.0: 2459 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2460 | engines: {node: '>=10'} 2461 | dev: true 2462 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | export const DEFAULT_RECIPE_NAME = "prose"; 2 | export const SIZES = ["sm", "base", "lg", "xl", "2xl"] as const; 3 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { createPreset } from "./preset"; 2 | 3 | export { createPreset }; 4 | export default createPreset; 5 | 6 | export { DEFAULT_RECIPE_NAME, SIZES } from "./constants"; 7 | export { createRecipe } from "./recipe"; 8 | export { createSemanticTokens } from "./semantic-tokens"; 9 | 10 | export type { 11 | PresetOptions, 12 | Size, 13 | RecipeOptions, 14 | SemanticTokensOptions, 15 | NotProseOptions, 16 | } from "./types"; 17 | -------------------------------------------------------------------------------- /src/preset.ts: -------------------------------------------------------------------------------- 1 | import { definePreset } from "@pandacss/dev"; 2 | import { PresetOptions } from "./types"; 3 | import { createRecipe } from "./recipe"; 4 | import { createSemanticTokens } from "./semantic-tokens"; 5 | import type { Preset } from "@pandacss/types"; 6 | 7 | /** 8 | * Create a new PandaCSS typography preset. 9 | * Use the options to customize the preset to your liking. 10 | * 11 | * @param options Options to customize the preset to your liking. 12 | * @returns A newly created preset with the applied options. 13 | */ 14 | export function createPreset(options?: PresetOptions): Preset { 15 | const semanticTokens = options?.recipe?.semanticTokens; 16 | 17 | return definePreset({ 18 | theme: { 19 | extend: { 20 | recipes: { 21 | ...createRecipe(options?.recipe), 22 | }, 23 | // Do not include when it has been explicitly set to false 24 | semanticTokens: 25 | semanticTokens?.defaults !== false 26 | ? { 27 | ...createSemanticTokens({ 28 | defaults: semanticTokens?.defaults ?? true, 29 | prefix: semanticTokens?.prefix ?? options?.recipe?.name, 30 | }), 31 | } 32 | : undefined, 33 | }, 34 | }, 35 | }); 36 | } 37 | -------------------------------------------------------------------------------- /src/recipe.ts: -------------------------------------------------------------------------------- 1 | import { defineRecipe } from "@pandacss/dev"; 2 | import type { RecipeOptions } from "./types"; 3 | import { getCssFromTailwind } from "./tailwind"; 4 | import { DEFAULT_RECIPE_NAME, SIZES } from "./constants"; 5 | import type { RecipeConfig } from "@pandacss/types"; 6 | 7 | export function createRecipe( 8 | options?: RecipeOptions 9 | ): Record { 10 | const name = options?.name ?? DEFAULT_RECIPE_NAME; 11 | const className = options?.className ?? name; 12 | 13 | // Get the styles from TailwindCSS's typography plugin 14 | const semanticTokens = options?.semanticTokens; 15 | const css = getCssFromTailwind({ 16 | varPrefix: 17 | semanticTokens && typeof semanticTokens === "object" 18 | ? semanticTokens?.prefix ?? name 19 | : name, 20 | notProse: options?.notProse, 21 | }); 22 | 23 | // Only add the sizes the user wants. 24 | const sizes: any = {}; 25 | (options?.sizes ?? SIZES).forEach((size) => (sizes[size] = css[size])); 26 | 27 | // Make sure there's at least 1 size included. 28 | if (Object.keys(sizes).length === 0) 29 | throw new Error("Include at least one size"); 30 | 31 | // Get the default size. 32 | const defaultSize = 33 | options?.defaultSize ?? ("base" in sizes ? "base" : Object.keys(sizes)[0]); 34 | 35 | // Make sure the set default size is actually included. 36 | if (!(defaultSize in sizes)) 37 | throw new Error( 38 | "You cannot set a default size to a size that is not included" 39 | ); 40 | 41 | return { 42 | [name]: defineRecipe({ 43 | className, 44 | description: 45 | options?.description ?? "Generated using 🐼 pandacss-preset-typography", 46 | base: css.default, 47 | defaultVariants: { 48 | size: defaultSize, 49 | }, 50 | variants: { 51 | size: sizes, 52 | }, 53 | jsx: options?.jsx, 54 | }), 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /src/semantic-tokens.ts: -------------------------------------------------------------------------------- 1 | import { defineSemanticTokens } from "@pandacss/dev"; 2 | import { SemanticTokensOptions } from "./types"; 3 | import { DEFAULT_RECIPE_NAME } from "./constants"; 4 | import type { SemanticTokens } from "@pandacss/types"; 5 | 6 | export function createSemanticTokens( 7 | options?: SemanticTokensOptions 8 | ): SemanticTokens { 9 | const { defaults } = options; 10 | 11 | if (!defaults) 12 | throw new Error( 13 | "This function shouldn't be called as 'defaults' is either undefined or set to false" 14 | ); 15 | 16 | const colorPalette = 17 | typeof defaults === "object" ? defaults?.colorPalette ?? "slate" : "slate"; 18 | 19 | return defineSemanticTokens({ 20 | colors: { 21 | [options?.prefix ?? DEFAULT_RECIPE_NAME]: { 22 | body: { 23 | value: `{colors.${colorPalette}.700}`, 24 | }, 25 | heading: { 26 | value: `{colors.${colorPalette}.900}`, 27 | }, 28 | lead: { 29 | value: `{colors.${colorPalette}.600}`, 30 | }, 31 | link: { 32 | value: `{colors.${colorPalette}.900}`, 33 | }, 34 | bold: { 35 | value: `{colors.${colorPalette}.900}`, 36 | }, 37 | counter: { 38 | value: `{colors.${colorPalette}.500}`, 39 | }, 40 | bullet: { 41 | value: `{colors.${colorPalette}.300}`, 42 | }, 43 | hrBorder: { 44 | value: `{colors.${colorPalette}.200}`, 45 | }, 46 | quote: { 47 | value: `{colors.${colorPalette}.900}`, 48 | }, 49 | quoteBorder: { 50 | value: `{colors.${colorPalette}.200}`, 51 | }, 52 | caption: { 53 | value: `{colors.${colorPalette}.500}`, 54 | }, 55 | kbd: { 56 | value: `{colors.${colorPalette}.900}`, 57 | }, 58 | kbdShadow: { 59 | // Expects an RGB value 60 | value: "0 0 0", 61 | }, 62 | code: { 63 | value: `{colors.${colorPalette}.900}`, 64 | }, 65 | preCode: { 66 | value: `{colors.${colorPalette}.200}`, 67 | }, 68 | preBg: { 69 | value: `{colors.${colorPalette}.800}`, 70 | }, 71 | thBorder: { 72 | value: `{colors.${colorPalette}.300}`, 73 | }, 74 | tdBorder: { 75 | value: `{colors.${colorPalette}.200}`, 76 | }, 77 | }, 78 | }, 79 | }); 80 | } 81 | -------------------------------------------------------------------------------- /src/tailwind.ts: -------------------------------------------------------------------------------- 1 | import { DEFAULT_RECIPE_NAME } from "./constants"; 2 | import { GetCssFromTailwindOptions } from "./types"; 3 | import twTypography from "@tailwindcss/typography" 4 | 5 | // TODO: Quite a mess. Maybe clean up? 6 | export function getCssFromTailwind(options?: GetCssFromTailwindOptions) { 7 | const cfg = (twTypography() as any).config.theme 8 | .typography; 9 | // Map all the necessary styles next to each other for easy processing 10 | const css = { 11 | default: Object.assign({}, cfg.DEFAULT.css[0], cfg.base.css[1]), 12 | sm: Object.assign({}, cfg.sm.css[0]), 13 | base: Object.assign({}, cfg.base.css[0]), 14 | lg: Object.assign({}, cfg.lg.css[0]), 15 | xl: Object.assign({}, cfg.xl.css[0]), 16 | "2xl": Object.assign({}, cfg["2xl"].css[0]), 17 | }; 18 | // Transform every tw-prose variable to our own. 19 | const varPrefix = options?.varPrefix ?? DEFAULT_RECIPE_NAME; 20 | const vars = { 21 | "var(--tw-prose-body)": `var(--colors-${varPrefix}-body)`, 22 | "var(--tw-prose-headings)": `var(--colors-${varPrefix}-heading)`, 23 | "var(--tw-prose-lead)": `var(--colors-${varPrefix}-lead)`, 24 | "var(--tw-prose-links)": `var(--colors-${varPrefix}-link)`, 25 | "var(--tw-prose-bold)": `var(--colors-${varPrefix}-bold)`, 26 | "var(--tw-prose-counters)": `var(--colors-${varPrefix}-counter)`, 27 | "var(--tw-prose-bullets)": `var(--colors-${varPrefix}-bullet)`, 28 | "var(--tw-prose-hr)": `var(--colors-${varPrefix}-hr-border)`, 29 | "var(--tw-prose-quotes)": `var(--colors-${varPrefix}-quote)`, 30 | "var(--tw-prose-quote-borders)": `var(--colors-${varPrefix}-quote-border)`, 31 | "var(--tw-prose-captions)": `var(--colors-${varPrefix}-caption)`, 32 | "var(--tw-prose-kbd)": `var(--colors-${varPrefix}-kbd)`, 33 | "var(--tw-prose-kbd-shadows)": `var(--colors-${varPrefix}-kbd-shadow)`, 34 | "var(--tw-prose-code)": `var(--colors-${varPrefix}-code)`, 35 | "var(--tw-prose-pre-code)": `var(--colors-${varPrefix}-pre-code)`, 36 | "var(--tw-prose-pre-bg)": `var(--colors-${varPrefix}-pre-bg)`, 37 | "var(--tw-prose-th-borders)": `var(--colors-${varPrefix}-th-border)`, 38 | "var(--tw-prose-td-borders)": `var(--colors-${varPrefix}-td-border)`, 39 | }; 40 | Object.entries(css).forEach(([k0, v0]) => { 41 | Object.entries(v0).forEach(([k1, v1]) => { 42 | if (typeof v1 === "string") 43 | Object.entries(vars).forEach( 44 | ([m, r]) => (css[k0][k1] = css[k0][k1].replaceAll(m, r)) 45 | ); 46 | if (typeof v1 == "object") { 47 | // Remove if object contains nothing. 48 | if (Object.entries(v1).length === 0) { 49 | delete css[k0][k1]; 50 | return; 51 | } 52 | Object.entries(v1).forEach(([k2, v2]) => { 53 | if (typeof v2 === "string") { 54 | // Replace variables. 55 | Object.entries(vars).forEach( 56 | ([m, r]) => (css[k0][k1][k2] = css[k0][k1][k2].replaceAll(m, r)) 57 | ); 58 | } 59 | // Some values are set to "0". We set it to 0px 60 | // instead so it won't resolve to variables. 61 | if (v2 === "0") css[k0][k1][k2] = "0px"; 62 | }); 63 | // Remove the current record because we'll overwrite it. 64 | delete css[k0][k1]; 65 | // Add not-prose functionality. 66 | if (options?.notProse) { 67 | const { notProse } = options; 68 | const className = 69 | typeof notProse === "object" ? notProse.className : "not-prose"; 70 | k1 = `:where(${k1}):not(:where([class~="${className}"],[class~="${className}"] *))`; 71 | } 72 | // Make selectors nested. Which is necessary 73 | // for PandaCSS to function. 74 | k1 = k1 75 | .split(", ") 76 | .map((x) => `& ${x}`) 77 | .join(", "); 78 | css[k0][k1] = v1; 79 | } 80 | }); 81 | }); 82 | return css; 83 | } 84 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { SIZES } from "./constants"; 2 | 3 | export type PresetOptions = { 4 | /** 5 | * Customize the 'prose' recipe that is included 6 | * with this preset. 7 | */ 8 | recipe?: RecipeOptions; 9 | }; 10 | 11 | export type Size = (typeof SIZES)[number]; 12 | 13 | export type RecipeOptions = { 14 | /** 15 | * Choose a name to be used to export the recipe. 16 | * Useful to change if you have another recipe with 17 | * the same name. 18 | * 19 | * @default 'prose' 20 | */ 21 | name?: string; 22 | /** 23 | * Choose a class name to be used by the recipe. 24 | * 25 | * If not set, the recipe's name will 26 | * be used. 27 | */ 28 | className?: string; 29 | /** 30 | * Change the default description that is added 31 | * in the JSDoc when generated. 32 | */ 33 | description?: string; 34 | /** 35 | * Choose what size variants to include in the recipe. 36 | * 37 | * All of them are included by default if nothing 38 | * is provided. You need to choose at least one. 39 | */ 40 | sizes?: Size[]; 41 | /** 42 | * Set the default size to use when no size 43 | * variant is provided. 44 | */ 45 | defaultSize?: Size; 46 | /** 47 | * If you want to enable not-prose functionality. 48 | * 49 | * You may provide an object if you want to set a 50 | * custom class name. 51 | */ 52 | notProse?: boolean | NotProseOptions; 53 | /** 54 | * Configure the default behavior of 55 | * the included semantic tokens. 56 | */ 57 | semanticTokens?: SemanticTokensOptions; 58 | /** 59 | * Advanced JSX tracking 60 | * 61 | * @see https://panda-css.com/docs/concepts/recipes#advanced-jsx-tracking 62 | */ 63 | jsx?: (string | RegExp)[]; 64 | }; 65 | 66 | export type SemanticTokensOptions = { 67 | /** 68 | * Set whether or not you want to include the default 69 | * semantic tokens. 70 | * 71 | * You may provide an object if you want to set 72 | * a custom prefix. 73 | * 74 | * @default true 75 | */ 76 | defaults?: 77 | | boolean 78 | | { 79 | /** 80 | * Set the color palette to use. 81 | * 82 | * It only works with colors that have a numeric scale (11x) 83 | * from 50 to 950. (50, 100, 200, ..., 800, 900, 950). 84 | * 85 | * @default 'slate' 86 | */ 87 | colorPalette?: string; 88 | }; 89 | /** 90 | * Set the semantic token prefix to be used. 91 | * 92 | * If not set, the recipe's name will 93 | * be used. 94 | */ 95 | prefix?: string; 96 | }; 97 | 98 | export type NotProseOptions = { 99 | /** 100 | * Choose a class name to be used 101 | * instead of the default value. 102 | * 103 | * @default 'not-prose' 104 | */ 105 | className: string; 106 | }; 107 | 108 | export type GetCssFromTailwindOptions = { 109 | varPrefix?: string; 110 | notProse?: 111 | | boolean 112 | | { 113 | className: string; 114 | }; 115 | }; 116 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["ESNext"], 4 | "moduleResolution": "node", 5 | "esModuleInterop": true 6 | }, 7 | "include": ["src/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig((options) => ({ 4 | entry: ["src/index.ts"], 5 | format: ["cjs", "esm"], 6 | dts: true, 7 | clean: true, 8 | minify: false, 9 | outDir: "dist", 10 | external: ["@pandacss/dev", "tailwindcss", "@tailwindcss/typography"], 11 | ...options, 12 | })); 13 | --------------------------------------------------------------------------------