@ngrok/mantle 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +52 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +165 -85
- package/dist/index.js.map +1 -1
- package/package.json +15 -14
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, CSSProperti
|
|
|
3
3
|
import { VariantProps as _VariantProps1 } from "class-variance-authority";
|
|
4
4
|
import * as DrawerPrimitive from "@radix-ui/react-dialog";
|
|
5
5
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
6
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
7
|
+
import { z } from "zod";
|
|
6
8
|
/**
|
|
7
9
|
* Conditionally add Tailwind (and other) CSS classes.
|
|
8
10
|
*
|
|
@@ -121,6 +123,24 @@ export type WithStyleProps = {
|
|
|
121
123
|
*/
|
|
122
124
|
style?: CSSProperties;
|
|
123
125
|
};
|
|
126
|
+
/**
|
|
127
|
+
* List of supported languages for syntax highlighting.
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
130
|
+
declare const supportedLanguages: readonly ["bash", "cs", "csharp", "css", "dotnet", "go", "html", "java", "javascript", "js", "json", "jsx", "py", "python", "rb", "ruby", "rust", "sh", "shell", "ts", "tsx", "typescript", "yaml", "yml"];
|
|
131
|
+
/**
|
|
132
|
+
* Supported languages for syntax highlighting.
|
|
133
|
+
*/
|
|
134
|
+
type SupportedLanguage = (typeof supportedLanguages)[number];
|
|
135
|
+
/**
|
|
136
|
+
* Parses a markdown code block (```) language class into a SupportedLanguage.
|
|
137
|
+
* Defaults to "sh" if no supported language is found.
|
|
138
|
+
*/
|
|
139
|
+
export function parseLanguage(value: `language-${string}` | `lang-${string}` | (string & {}) | undefined): SupportedLanguage;
|
|
140
|
+
/**
|
|
141
|
+
* Type Predicate: checks if an arbitrary value is a supported syntax highlighting language.
|
|
142
|
+
*/
|
|
143
|
+
export const isSupportedLanguage: (value: unknown) => value is "html" | "ruby" | "rb" | "json" | "go" | "py" | "bash" | "cs" | "csharp" | "css" | "dotnet" | "java" | "javascript" | "js" | "jsx" | "python" | "rust" | "sh" | "shell" | "ts" | "tsx" | "typescript" | "yaml" | "yml";
|
|
124
144
|
export const CodeBlock: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
125
145
|
export const CodeBlockBody: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
126
146
|
export const CodeBlockCode: import("react").ForwardRefExoticComponent<WithStyleProps & {
|
|
@@ -225,17 +245,14 @@ export const MediaObjectContent: import("react").ForwardRefExoticComponent<HTMLA
|
|
|
225
245
|
export const Popover: import("react").FC<PopoverPrimitive.PopoverProps>;
|
|
226
246
|
export const PopoverTrigger: import("react").ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
227
247
|
export const PopoverContent: import("react").ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
228
|
-
export const Select: import("react").FC<
|
|
229
|
-
export const SelectGroup: import("react").ForwardRefExoticComponent<
|
|
230
|
-
export const SelectValue: import("react").ForwardRefExoticComponent<
|
|
231
|
-
export const
|
|
232
|
-
export const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
export const
|
|
236
|
-
export const SelectLabel: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/react-select").SelectLabelProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
237
|
-
export const SelectOption: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/react-select").SelectItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
238
|
-
export const SelectSeparator: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/react-select").SelectSeparatorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
248
|
+
export const Select: import("react").FC<SelectPrimitive.SelectProps>;
|
|
249
|
+
export const SelectGroup: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
250
|
+
export const SelectValue: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
251
|
+
export const SelectTrigger: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
252
|
+
export const SelectContent: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
253
|
+
export const SelectLabel: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
254
|
+
export const SelectItem: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
255
|
+
export const SelectSeparator: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
239
256
|
type Props = Exclude<HTMLAttributes<HTMLDivElement>, "children">;
|
|
240
257
|
export function Skeleton({ className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
|
|
241
258
|
export const Table: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLTableElement> & import("react").RefAttributes<HTMLTableElement>>;
|
|
@@ -297,5 +314,29 @@ type Primitive = string | number | boolean | undefined | null;
|
|
|
297
314
|
* Tagged template literal to format code blocks and normalize leading indentation
|
|
298
315
|
*/
|
|
299
316
|
export function code(strings: TemplateStringsArray, ...values: Primitive[]): string;
|
|
317
|
+
declare const metaSchema: z.ZodObject<{
|
|
318
|
+
collapsible: z.ZodDefault<z.ZodBoolean>;
|
|
319
|
+
disableCopy: z.ZodDefault<z.ZodBoolean>;
|
|
320
|
+
mode: z.ZodOptional<z.ZodEnum<["file", "cli"]>>;
|
|
321
|
+
title: z.ZodOptional<z.ZodString>;
|
|
322
|
+
}, "strip", z.ZodTypeAny, {
|
|
323
|
+
collapsible: boolean;
|
|
324
|
+
disableCopy: boolean;
|
|
325
|
+
mode?: "file" | "cli" | undefined;
|
|
326
|
+
title?: string | undefined;
|
|
327
|
+
}, {
|
|
328
|
+
collapsible?: boolean | undefined;
|
|
329
|
+
disableCopy?: boolean | undefined;
|
|
330
|
+
mode?: "file" | "cli" | undefined;
|
|
331
|
+
title?: string | undefined;
|
|
332
|
+
}>;
|
|
333
|
+
type Meta = z.infer<typeof metaSchema>;
|
|
334
|
+
/**
|
|
335
|
+
* Parses a markdown code block (```) metastring into a meta object.
|
|
336
|
+
* Defaults to DefaultMeta if no metastring given or if metastring is invalid.
|
|
337
|
+
* Useful for parsing the metastring from a markdown code block to pass into the
|
|
338
|
+
* CodeBlock components as props.
|
|
339
|
+
*/
|
|
340
|
+
export function parseMetastring(value: string | undefined): Meta;
|
|
300
341
|
|
|
301
342
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
1
|
+
{"mappings":";;;;;;;AAGA;;;;GAIG;AACH,mBAAmB,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;ACVD;;GAEG;AACH,0BAA0B;IACzB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;ACdF,OAAA,MAAM,8BAA+B,MAAM,GAAG,SAAS,WAIrD,CAAC;AAIH;;;;;;;;GAQG;AACH,OAAA,MAAM,2JAIJ,CAAC;AC1BH;;GAEG;AACH,qBAA4B,IAAI,IAAI;KAClC,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;CAC/C,CAAC;ACFF;;;;GAIG;AACH,kBAAyB,QAAQ,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,MAAM,IAAI,OAAO,CAChH,gBAAgB,eAAgB,QAAQ,CAAC,CAAC,CAC1C,CAAC;ACHF,QAAA,MAAM;;;;8EA4CL,CAAC;AAEF,sBAAsB,aAAa,qBAAqB,CAAC,CAAC;AAE1D;;GAEG;AACH,0BAA0B,WAAW,GAAG,qBAAqB,iBAAiB,CAAC,GAAG,cAAc,CAAC;AAEjG;;;;;;;GAOG;AACH,OAAA,MAAM;;;;qIAML,CAAC;ACpEF,wBAAwB,eAAe,cAAc,CAAC,CAAC;AAEvD;;;GAGG;AACH,OAAO,MAAM,0GAQX,CAAC;AAGH;;GAEG;AACH,OAAO,MAAM,8GAIX,CAAC;AAGH;;GAEG;AACH,OAAO,MAAM,gHAIX,CAAC;AAGH;;GAEG;AACH,OAAO,MAAM,gHAIX,CAAC;AAGH,6BAA6B,eAAe,kBAAkB,CAAC,GAAG,WAAW,CAAC;AAE9E;;GAEG;AACH,OAAO,MAAM,4JAGX,CAAC;AC3DH;;;GAGG;AACH,6BAA6B;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AExBF;;;GAGG;AACH,QAAO,MAAM,8NAyBH,CAAC;AAEX;;GAEG;AACH,yBAAgC,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;GAGG;AACH,8BACC,KAAK,EAAE,YAAY,MAAM,EAAE,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,GACxE,iBAAiB,CAUnB;AAED;;GAEG;AACH,OAAO,MAAM,6BAA8B,OAAO,oOAEjD,CAAC;ACCF,OAAA,MAAM,oIA4CJ,CAAC;AAGH,OAAA,MAAM,wIAEJ,CAAC;AAUH,OAAA,MAAM;eANM,MAAM,GAAG,SAAS;;;;kDA4D5B,CAAC;AAGH,OAAA,MAAM,0IAMJ,CAAC;AAGH,OAAA,MAAM;;sDAKL,CAAC;AAQF,OAAA,MAAM;sBAJY,MAAM,KAAK,IAAI;2BACV,OAAO,KAAK,IAAI;qDAsDtC,CAAC;AAGF,oCAAoC,IAAI,CACvC,eAAe,iBAAiB,CAAC,EACjC,UAAU,GAAG,eAAe,GAAG,eAAe,CAC9C,CAAC;AAEF,OAAA,MAAM,mJAoCL,CAAC;AC/RF,OAAA,MAAM,uDAA6B,CAAC;AAEpC,OAAA,MAAM,+IAAuC,CAAC;AAE9C,OAAA,MAAM,2IAAmC,CAAC;AAE1C,OAAA,MAAM,mEAAqC,CAAC;AAE5C,OAAA,MAAM,yMAYJ,CAAC;AAyBH,OAAA,MAAM;;gIAaL,CAAC;AAGF,OAAA,MAAM;8BAAyC,eAAe,cAAc,CAAC;;CAE5E,CAAC;AAGF,OAAA,MAAM;8BAAyC,eAAe,cAAc,CAAC;;CAE5E,CAAC;AAGF,OAAA,MAAM,6MAKJ,CAAC;AAGH,OAAA,MAAM,6NAKJ,CAAC;ACvFH;;GAEG;AACH,OAAA,MAAM,uIAMJ,CAAC;ACZH;;;;;;;;;;;GAWG;AACH,2BACG,KAAK,GACL,IAAI,GACJ,MAAM,GACN,kBAAkB,GAClB,YAAY,GACZ,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,UAAU,GACV,OAAO,GACP,UAAU,GACV,cAAc,GACd,kBAAkB,GAClB,eAAe,GACf,oBAAoB,GACpB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,GACT,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,cAAc,GACd,aAAa,GACb,QAAQ,GACR,SAAS,GACT,sBAAsB,GACtB,oBAAoB,GACpB,UAAU,GACV,MAAM,GACN,UAAU,GACV,YAAY,GACZ,WAAW,GACX,KAAK,GACL,KAAK,GACL,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,WAAW,GACX,eAAe,GACf,MAAM,GACN,KAAK,GACL,OAAO,CAAC;AAEX;;;;;GAKG;AACH,wBACG,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,gBAAgB,GAChB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,MAAM,CAAC;ACzFV,QAAA,MAAM;;8EAiBL,CAAC;AAEF,qBAAqB,aAAa,oBAAoB,CAAC,CAAC;AAExD;;GAEG;AACH,yBAAyB,aAAa,GACrC,IAAI,CAAC,oBAAoB,gBAAgB,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,GAAG;IACtE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB,CAAC;AAEH;;GAEG;AACH,OAAA,MAAM;;;;;oDAIL,CAAC;ACxCF;;;;;;;;;;;GAWG;AACH,OAAA,MAAM,sIAML,CAAC;AAGF;;GAEG;AACH,OAAA,MAAM,2IAML,CAAC;AAGF;;GAEG;AACH,OAAA,MAAM,6IAML,CAAC;AC1CF,OAAA,MAAM,0DAA+B,CAAC;AAEtC,OAAA,MAAM,kJAAyC,CAAC;AAEhD,OAAA,MAAM,4MAgBJ,CAAC;AChBH,OAAA,MAAM,uDAA6B,CAAC;AAEpC,OAAA,MAAM,wIAAmC,CAAC;AAE1C,OAAA,MAAM,yIAAmC,CAAC;AAE1C,OAAA,MAAM,+MAiBJ,CAAC;AA+BH,OAAA,MAAM,yMA6BJ,CAAC;AAGH,OAAA,MAAM,qMAKJ,CAAC;AAGH,OAAA,MAAM,mMAoBJ,CAAC;AAGH,OAAA,MAAM,6MAKJ,CAAC;AC/HH,aAAa,OAAO,CAAC,eAAe,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;AAEjE,yBAAkB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAE/C;ACJD,OAAA,MAAM,oIAIJ,CAAC;AAGH,OAAA,MAAM,wJAIL,CAAC;AAGF,OAAA,MAAM,sJAIL,CAAC;AAGF,OAAA,MAAM,wJAQL,CAAC;AAGF,OAAA,MAAM,6IAQL,CAAC;AAGF,OAAA,MAAM,kJAWL,CAAC;AAGF,OAAA,MAAM,kJAIL,CAAC;AAGF,OAAA,MAAM,yJAIL,CAAC;ACzDF;;GAEG;AACH,QAAA,MAAM,yFAA0F,CAAC;AAEjG;;GAEG;AACH,oBAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAErC;;GAEG;AACH,OAAA,MAAM,eAAgB,KAAK,+EAAU,CAAC;AAEtC;;GAEG;AACH,wBAAiB,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAM/C;AAOD;;GAEG;AACH,0BAA0B,CAAC,OAAO,KAAK,EAAE,QAAQ,EAAE,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AA6B3E,iCAA0B,iBAAiB,GAAG;IAC7C,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,8BAAuB,EAAE,QAAQ,EAAE,YAAuB,EAAE,UAAgC,EAAE,EAAE,kBAAkB,2CAmDjH;AAED;;;;GAIG;AACH,+CAMC;AAsCD;;;GAGG;AACH,OAAA,MAAM;;;6CAuCL,CAAC;AClOF,OAAA,MAAM,2FAA0B,CAAC;AAEjC,OAAA,MAAM,2EAAc,CAAC;AAErB,OAAA,MAAM,mKAAwB,CAAC;AAE/B,OAAA,MAAM,6NAYL,CAAC;ACtBF,iBAAiB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAE9D;;GAEG;AACH,qBAAqB,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAwBlF;ACxBD,QAAA,MAAM;;;;;;;;;;;;;;;EAKJ,CAAC;AAIH,YAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAW9C;;;;;GAKG;AACH,gCAAgC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CA2B/D","sources":["components/components/cx/index.ts","components/components/types/as-child.ts","components/components/anchor/index.tsx","components/components/types/deep-non-nullable.ts","components/components/types/variant-props.ts","components/components/button/index.tsx","components/components/card/index.tsx","components/components/types/with-style-props.ts","components/components/code-block/line-numbers.ts","components/components/code-block/supported-languages.ts","components/components/code-block/index.tsx","components/components/drawer/index.tsx","components/components/inline-code/index.tsx","components/components/input/types.ts","components/components/input/index.tsx","components/components/media-object/index.tsx","components/components/popover/index.tsx","components/components/select/index.tsx","components/components/skeleton/index.tsx","components/components/table/index.tsx","components/components/theme-provider/index.tsx","components/components/tooltip/index.tsx","components/components/code-block/code.ts","components/components/code-block/parse-metastring.ts","components/components/index.tsx","components/index.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// component exports\nexport { Anchor, anchorClassNames } from \"./anchor\";\nexport { Button } from \"./button\";\nexport { Card, CardBody, CardFooter, CardHeader, CardTitle } from \"./card\";\nexport {\n\tCodeBlock,\n\tCodeBlockBody,\n\tCodeBlockCode,\n\tCodeBlockCopyButton,\n\tCodeBlockExpanderButton,\n\tCodeBlockHeader,\n\tCodeBlockTitle,\n} from \"./code-block\";\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n} from \"./drawer\";\nexport { InlineCode } from \"./inline-code\";\nexport { Input } from \"./input\";\nexport { MediaObject, MediaObjectMedia, MediaObjectContent } from \"./media-object\";\nexport { Popover, PopoverTrigger, PopoverContent } from \"./popover\";\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n} from \"./select\";\nexport { Skeleton } from \"./skeleton\";\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from \"./table\";\nexport { PreventWrongThemeFlash, ThemeProvider } from \"./theme-provider\";\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from \"./tooltip\";\n\n// utils exports\nexport { code } from \"./code-block/code\";\nexport { parseMetastring } from \"./code-block/parse-metastring\";\nexport { isSupportedLanguage, parseLanguage } from \"./code-block/supported-languages\";\nexport { cx } from \"./cx\";\nexport { isTheme, theme, useTheme } from \"./theme-provider\";\n\n// types exports\nexport type { ButtonProps } from \"./button\";\nexport type { CardProps, CardTitleProps } from \"./card\";\nexport type { InputProps } from \"./input\";\nexport type { AutoComplete, InputType } from \"./input/types\";\nexport type { Theme, ThemeProviderProps } from \"./theme-provider\";\nexport type { WithAsChild } from \"./types/as-child\";\nexport type { WithStyleProps } from \"./types/with-style-props\";\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js
CHANGED
|
@@ -8,13 +8,18 @@ import $hLlzK$prismjs from "prismjs";
|
|
|
8
8
|
import "prismjs/components/prism-bash.js";
|
|
9
9
|
import "prismjs/components/prism-jsx.js";
|
|
10
10
|
import "prismjs/components/prism-tsx.js";
|
|
11
|
+
import {CaretDown as $hLlzK$CaretDown} from "@phosphor-icons/react/CaretDown";
|
|
12
|
+
import {Check as $hLlzK$Check} from "@phosphor-icons/react/Check";
|
|
13
|
+
import {Copy as $hLlzK$Copy} from "@phosphor-icons/react/Copy";
|
|
11
14
|
import {useCopyToClipboard as $hLlzK$useCopyToClipboard} from "@uidotdev/usehooks";
|
|
12
15
|
import $hLlzK$tinyinvariant from "tiny-invariant";
|
|
16
|
+
import {X as $hLlzK$X} from "@phosphor-icons/react/X";
|
|
13
17
|
import {Root as $hLlzK$Root, Trigger as $hLlzK$Trigger, Close as $hLlzK$Close, Portal as $hLlzK$Portal, Overlay as $hLlzK$Overlay, Content as $hLlzK$Content, Title as $hLlzK$Title, Description as $hLlzK$Description} from "@radix-ui/react-dialog";
|
|
14
|
-
import {Cross2Icon as $hLlzK$Cross2Icon, CaretSortIcon as $hLlzK$CaretSortIcon, CheckIcon as $hLlzK$CheckIcon} from "@radix-ui/react-icons";
|
|
15
18
|
import {Root as $hLlzK$Root1, Trigger as $hLlzK$Trigger1, Portal as $hLlzK$Portal1, Content as $hLlzK$Content1} from "@radix-ui/react-popover";
|
|
16
|
-
import {
|
|
19
|
+
import {CaretUp as $hLlzK$CaretUp} from "@phosphor-icons/react/CaretUp";
|
|
20
|
+
import {Root as $hLlzK$Root2, Group as $hLlzK$Group, Value as $hLlzK$Value, Trigger as $hLlzK$Trigger2, Icon as $hLlzK$Icon, ScrollUpButton as $hLlzK$ScrollUpButton, ScrollDownButton as $hLlzK$ScrollDownButton, Portal as $hLlzK$Portal2, Content as $hLlzK$Content2, Viewport as $hLlzK$Viewport, Label as $hLlzK$Label, Item as $hLlzK$Item, ItemIndicator as $hLlzK$ItemIndicator, ItemText as $hLlzK$ItemText, Separator as $hLlzK$Separator} from "@radix-ui/react-select";
|
|
17
21
|
import {Provider as $hLlzK$Provider, Root as $hLlzK$Root3, Trigger as $hLlzK$Trigger3, Content as $hLlzK$Content3} from "@radix-ui/react-tooltip";
|
|
22
|
+
import {z as $hLlzK$z} from "zod";
|
|
18
23
|
|
|
19
24
|
// component exports
|
|
20
25
|
|
|
@@ -27,7 +32,7 @@ function $aeb027d07c362ab5$export$a274e22fb40f762e(...inputs) {
|
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
|
|
30
|
-
const $814757e656175971$export$86577199b2baf6c3 = (className)=>(0, $aeb027d07c362ab5$export$a274e22fb40f762e)("text-blue-600 focus-visible:ring-blue-
|
|
35
|
+
const $814757e656175971$export$86577199b2baf6c3 = (className)=>(0, $aeb027d07c362ab5$export$a274e22fb40f762e)("text-blue-600 focus-visible:ring-blue-600/25 cursor-pointer rounded bg-transparent focus:outline-none focus-visible:ring hover:underline visited:text-blue-800", className);
|
|
31
36
|
/**
|
|
32
37
|
* Fundamental component for rendering links to external addresses.
|
|
33
38
|
*
|
|
@@ -120,7 +125,7 @@ $e4a151af04a6a62e$export$353f5b6fc5456de1.displayName = "Button";
|
|
|
120
125
|
|
|
121
126
|
const $b9d5893769d495bc$export$60332b2344f7fe41 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, ...rest }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("div", {
|
|
122
127
|
ref: ref,
|
|
123
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative rounded border bg-
|
|
128
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative rounded-md border border-gray-300 bg-white dark:bg-gray-50", className),
|
|
124
129
|
...rest,
|
|
125
130
|
children: children
|
|
126
131
|
}));
|
|
@@ -134,14 +139,14 @@ const $b9d5893769d495bc$export$851de33184ecdac4 = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
134
139
|
$b9d5893769d495bc$export$851de33184ecdac4.displayName = "CardBody";
|
|
135
140
|
const $b9d5893769d495bc$export$e9897d434e0741ee = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, ...rest }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("div", {
|
|
136
141
|
ref: ref,
|
|
137
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-t px-6 py-3", className),
|
|
142
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-t border-gray-300 px-6 py-3", className),
|
|
138
143
|
...rest,
|
|
139
144
|
children: children
|
|
140
145
|
}));
|
|
141
146
|
$b9d5893769d495bc$export$e9897d434e0741ee.displayName = "CardFooter";
|
|
142
147
|
const $b9d5893769d495bc$export$5665775b26e26c5d = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, ...rest }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("div", {
|
|
143
148
|
ref: ref,
|
|
144
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-b px-6 py-3", className),
|
|
149
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-b border-gray-300 px-6 py-3", className),
|
|
145
150
|
...rest,
|
|
146
151
|
children: children
|
|
147
152
|
}));
|
|
@@ -167,9 +172,13 @@ $b9d5893769d495bc$export$474db65c3c394e1c.displayName = "CardTitle";
|
|
|
167
172
|
|
|
168
173
|
|
|
169
174
|
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
170
178
|
/**
|
|
171
179
|
* List of supported languages for syntax highlighting.
|
|
172
|
-
|
|
180
|
+
* @private
|
|
181
|
+
*/ const $d7a3c3bf16d2f4b8$export$1c2c8674a5fbafd = [
|
|
173
182
|
"bash",
|
|
174
183
|
"cs",
|
|
175
184
|
"csharp",
|
|
@@ -195,8 +204,15 @@ $b9d5893769d495bc$export$474db65c3c394e1c.displayName = "CardTitle";
|
|
|
195
204
|
"yaml",
|
|
196
205
|
"yml"
|
|
197
206
|
];
|
|
207
|
+
function $d7a3c3bf16d2f4b8$export$dbb82c29aa7faca4(value) {
|
|
208
|
+
if (!value) return "sh";
|
|
209
|
+
// remove leading "language-" and "lang-" prefixes
|
|
210
|
+
// find first '-' and slice from there
|
|
211
|
+
const maybeLanguage = value.trim().slice(value.indexOf("-") + 1);
|
|
212
|
+
return $d7a3c3bf16d2f4b8$export$47c66070d6d6cd6d(maybeLanguage) ? maybeLanguage : "sh";
|
|
213
|
+
}
|
|
198
214
|
const $d7a3c3bf16d2f4b8$export$47c66070d6d6cd6d = (value)=>{
|
|
199
|
-
return typeof value === "string" && $d7a3c3bf16d2f4b8$
|
|
215
|
+
return typeof value === "string" && $d7a3c3bf16d2f4b8$export$1c2c8674a5fbafd.includes(value);
|
|
200
216
|
};
|
|
201
217
|
function $d7a3c3bf16d2f4b8$export$fa66e0e5413be530(language = "sh") {
|
|
202
218
|
const lang = language !== null && language !== void 0 ? language : "sh";
|
|
@@ -368,9 +384,14 @@ const $467de5d6131f2179$export$2e9b808b8155db21 = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
368
384
|
copied ? /*#__PURE__*/ (0, $hLlzK$jsxs)((0, $hLlzK$Fragment), {
|
|
369
385
|
children: [
|
|
370
386
|
"Copied",
|
|
371
|
-
/*#__PURE__*/ (0, $hLlzK$jsx)($
|
|
387
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$Check), {
|
|
388
|
+
className: "w-4 h-4",
|
|
389
|
+
weight: "bold"
|
|
390
|
+
})
|
|
372
391
|
]
|
|
373
|
-
}) : /*#__PURE__*/ (0, $hLlzK$jsx)($
|
|
392
|
+
}) : /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$Copy), {
|
|
393
|
+
className: "w-5 h-5 -ml-px"
|
|
394
|
+
})
|
|
374
395
|
]
|
|
375
396
|
});
|
|
376
397
|
});
|
|
@@ -389,7 +410,7 @@ const $467de5d6131f2179$export$2e996d1cfaa94c3d = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
389
410
|
...props,
|
|
390
411
|
"aria-controls": codeId,
|
|
391
412
|
"aria-expanded": isCodeExpanded,
|
|
392
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("bg-gray-050 flex w-full items-center justify-center border-t border-gray-300 px-4 py-2 font-sans text-gray-700 hover:bg-gray-100", className),
|
|
413
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("bg-gray-050 flex w-full items-center justify-center border-t border-gray-300 px-4 py-2 gap-0.5 font-sans text-gray-700 hover:bg-gray-100", className),
|
|
393
414
|
ref: ref,
|
|
394
415
|
type: "button",
|
|
395
416
|
onClick: (event)=>{
|
|
@@ -399,47 +420,14 @@ const $467de5d6131f2179$export$2e996d1cfaa94c3d = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
399
420
|
children: [
|
|
400
421
|
isCodeExpanded ? "Show less" : "Show more",
|
|
401
422
|
" ",
|
|
402
|
-
/*#__PURE__*/ (0, $hLlzK$jsx)($
|
|
403
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)(isCodeExpanded && "rotate-180", "transition-all duration-150")
|
|
423
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$CaretDown), {
|
|
424
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("w-4 h-4", isCodeExpanded && "rotate-180", "transition-all duration-150"),
|
|
425
|
+
weight: "bold"
|
|
404
426
|
})
|
|
405
427
|
]
|
|
406
428
|
});
|
|
407
429
|
});
|
|
408
430
|
$467de5d6131f2179$export$2e996d1cfaa94c3d.displayName = "CodeBlockExpanderButton";
|
|
409
|
-
const $467de5d6131f2179$var$ExpandIcon = ({ className: className, style: style })=>/*#__PURE__*/ (0, $hLlzK$jsx)("svg", {
|
|
410
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
411
|
-
viewBox: "0 0 20 20",
|
|
412
|
-
fill: "currentColor",
|
|
413
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative top-px h-5 w-5 transition-transform", className),
|
|
414
|
-
style: style,
|
|
415
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)("path", {
|
|
416
|
-
d: "M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
|
417
|
-
})
|
|
418
|
-
});
|
|
419
|
-
const $467de5d6131f2179$var$CopyIcon = ({ className: className, style: style })=>/*#__PURE__*/ (0, $hLlzK$jsx)("svg", {
|
|
420
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
421
|
-
fill: "none",
|
|
422
|
-
viewBox: "0 0 20 20",
|
|
423
|
-
strokeWidth: "{1.5}",
|
|
424
|
-
stroke: "currentColor",
|
|
425
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("h-5 w-5", className),
|
|
426
|
-
style: style,
|
|
427
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)("path", {
|
|
428
|
-
strokeLinecap: "round",
|
|
429
|
-
strokeLinejoin: "round",
|
|
430
|
-
d: "M7.719 7.719v-3.5a1.5 1.5 0 0 1 1.5-1.5h5.562a1.5 1.5 0 0 1 1.5 1.5V12a1.5 1.5 0 0 1-1.5 1.5H11.5m-7.281 4.781H10a1.5 1.5 0 0 0 1.5-1.5V9.22a1.5 1.5 0 0 0-1.5-1.5H4.219a1.5 1.5 0 0 0-1.5 1.5v7.562a1.5 1.5 0 0 0 1.5 1.5Z"
|
|
431
|
-
})
|
|
432
|
-
});
|
|
433
|
-
const $467de5d6131f2179$var$CheckIcon = ({ className: className, style: style })=>/*#__PURE__*/ (0, $hLlzK$jsx)("svg", {
|
|
434
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
435
|
-
viewBox: "0 0 20 20",
|
|
436
|
-
fill: "currentColor",
|
|
437
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("h-5 w-5", className),
|
|
438
|
-
style: style,
|
|
439
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)("path", {
|
|
440
|
-
d: "M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
|
|
441
|
-
})
|
|
442
|
-
});
|
|
443
431
|
|
|
444
432
|
|
|
445
433
|
|
|
@@ -485,8 +473,8 @@ const $cb110289be1d8272$export$57ca055474bc0056 = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
485
473
|
/*#__PURE__*/ (0, $hLlzK$jsxs)($hLlzK$Close, {
|
|
486
474
|
className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",
|
|
487
475
|
children: [
|
|
488
|
-
/*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$
|
|
489
|
-
className: "h-
|
|
476
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$X), {
|
|
477
|
+
className: "h-6 w-6"
|
|
490
478
|
}),
|
|
491
479
|
/*#__PURE__*/ (0, $hLlzK$jsx)("span", {
|
|
492
480
|
className: "sr-only",
|
|
@@ -530,7 +518,7 @@ $cb110289be1d8272$export$5ac91ab14e563b4.displayName = $hLlzK$Description.displa
|
|
|
530
518
|
* A component to render inline code.
|
|
531
519
|
*/ const $49d620f73f88e7de$export$7f1bf47c7f50a6aa = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("code", {
|
|
532
520
|
ref: ref,
|
|
533
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("font-mono bg-gray-100 border border-gray-300 text-
|
|
521
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("font-mono bg-gray-100 border border-gray-300 text-[0.8em] rounded-md px-1 py-0.5", className),
|
|
534
522
|
...props
|
|
535
523
|
}));
|
|
536
524
|
$49d620f73f88e7de$export$7f1bf47c7f50a6aa.displayName = "InlineCode";
|
|
@@ -631,69 +619,96 @@ $c20827da6ac8f3e9$export$d7e1f420b25549ff.displayName = $hLlzK$Content1.displayN
|
|
|
631
619
|
|
|
632
620
|
|
|
633
621
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
const $08d8b7c38a500c5a$export$
|
|
637
|
-
const $08d8b7c38a500c5a$export$
|
|
638
|
-
const $08d8b7c38a500c5a$export$
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
const $08d8b7c38a500c5a$export$ef9b1a59e592288f = $hLlzK$Root2;
|
|
625
|
+
const $08d8b7c38a500c5a$export$ee25a334c55de1f4 = $hLlzK$Group;
|
|
626
|
+
const $08d8b7c38a500c5a$export$e288731fd71264f0 = $hLlzK$Value;
|
|
627
|
+
const $08d8b7c38a500c5a$export$3ac1e88a1c0b9f1 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsxs)($hLlzK$Trigger2, {
|
|
639
628
|
ref: ref,
|
|
640
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 placeholder:text-gray-300 focus:border-blue-500 focus:outline-none focus:ring-4 focus:ring-blue-600/25 disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
629
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 placeholder:text-gray-300 focus:border-blue-500 focus:outline-none focus:ring-4 focus:ring-blue-600/25 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", className),
|
|
641
630
|
...props,
|
|
642
631
|
children: [
|
|
643
632
|
children,
|
|
644
|
-
|
|
633
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$Icon, {
|
|
645
634
|
asChild: true,
|
|
646
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$
|
|
647
|
-
className: "h-4 w-4
|
|
635
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$CaretDown), {
|
|
636
|
+
className: "h-4 w-4",
|
|
637
|
+
weight: "bold"
|
|
648
638
|
})
|
|
649
639
|
})
|
|
650
640
|
]
|
|
651
641
|
}));
|
|
652
|
-
$08d8b7c38a500c5a$export$3ac1e88a1c0b9f1.displayName =
|
|
653
|
-
const $08d8b7c38a500c5a$export$
|
|
654
|
-
|
|
642
|
+
$08d8b7c38a500c5a$export$3ac1e88a1c0b9f1.displayName = $hLlzK$Trigger2.displayName;
|
|
643
|
+
const $08d8b7c38a500c5a$export$d8117927658af6d7 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$ScrollUpButton, {
|
|
644
|
+
ref: ref,
|
|
645
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("flex cursor-default items-center justify-center py-1", className),
|
|
646
|
+
...props,
|
|
647
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$CaretUp), {
|
|
648
|
+
className: "h-4 w-4",
|
|
649
|
+
weight: "bold"
|
|
650
|
+
})
|
|
651
|
+
}));
|
|
652
|
+
$08d8b7c38a500c5a$export$d8117927658af6d7.displayName = $hLlzK$ScrollUpButton.displayName;
|
|
653
|
+
const $08d8b7c38a500c5a$export$ff951e476c12189 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$ScrollDownButton, {
|
|
654
|
+
ref: ref,
|
|
655
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("flex cursor-default items-center justify-center py-1", className),
|
|
656
|
+
...props,
|
|
657
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$CaretDown), {
|
|
658
|
+
className: "h-4 w-4",
|
|
659
|
+
weight: "bold"
|
|
660
|
+
})
|
|
661
|
+
}));
|
|
662
|
+
$08d8b7c38a500c5a$export$ff951e476c12189.displayName = $hLlzK$ScrollDownButton.displayName;
|
|
663
|
+
const $08d8b7c38a500c5a$export$c973a4b3cb86a03d = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, position: position = "popper", ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$Portal2, {
|
|
664
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsxs)($hLlzK$Content2, {
|
|
655
665
|
ref: ref,
|
|
656
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-
|
|
666
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-300 bg-card text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
|
|
657
667
|
position: position,
|
|
658
668
|
...props,
|
|
659
|
-
children:
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
669
|
+
children: [
|
|
670
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)($08d8b7c38a500c5a$export$d8117927658af6d7, {}),
|
|
671
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$Viewport, {
|
|
672
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("p-1", position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),
|
|
673
|
+
children: children
|
|
674
|
+
}),
|
|
675
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)($08d8b7c38a500c5a$export$ff951e476c12189, {})
|
|
676
|
+
]
|
|
663
677
|
})
|
|
664
678
|
}));
|
|
665
|
-
$08d8b7c38a500c5a$export$c973a4b3cb86a03d.displayName =
|
|
666
|
-
const $08d8b7c38a500c5a$export$f67338d29bd972f8 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)(
|
|
679
|
+
$08d8b7c38a500c5a$export$c973a4b3cb86a03d.displayName = $hLlzK$Content2.displayName;
|
|
680
|
+
const $08d8b7c38a500c5a$export$f67338d29bd972f8 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$Label, {
|
|
667
681
|
ref: ref,
|
|
668
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("
|
|
682
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
|
|
669
683
|
...props
|
|
670
684
|
}));
|
|
671
|
-
$08d8b7c38a500c5a$export$f67338d29bd972f8.displayName =
|
|
672
|
-
const $08d8b7c38a500c5a$export$
|
|
685
|
+
$08d8b7c38a500c5a$export$f67338d29bd972f8.displayName = $hLlzK$Label.displayName;
|
|
686
|
+
const $08d8b7c38a500c5a$export$13ef48a934230896 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, children: children, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsxs)($hLlzK$Item, {
|
|
673
687
|
ref: ref,
|
|
674
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative flex w-full cursor-pointer items-center rounded-sm py-1.5 pl-
|
|
688
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-blue-600 focus:text-button data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
|
|
675
689
|
...props,
|
|
676
690
|
children: [
|
|
677
691
|
/*#__PURE__*/ (0, $hLlzK$jsx)("span", {
|
|
678
|
-
className: "absolute
|
|
679
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)(
|
|
680
|
-
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$
|
|
681
|
-
className: "h-4 w-4"
|
|
692
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
693
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$ItemIndicator, {
|
|
694
|
+
children: /*#__PURE__*/ (0, $hLlzK$jsx)((0, $hLlzK$Check), {
|
|
695
|
+
className: "h-4 w-4",
|
|
696
|
+
weight: "bold"
|
|
682
697
|
})
|
|
683
698
|
})
|
|
684
699
|
}),
|
|
685
|
-
/*#__PURE__*/ (0, $hLlzK$jsx)(
|
|
700
|
+
/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$ItemText, {
|
|
686
701
|
children: children
|
|
687
702
|
})
|
|
688
703
|
]
|
|
689
704
|
}));
|
|
690
|
-
$08d8b7c38a500c5a$export$
|
|
691
|
-
const $08d8b7c38a500c5a$export$eba4b1df07cb1d3 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)(
|
|
705
|
+
$08d8b7c38a500c5a$export$13ef48a934230896.displayName = $hLlzK$Item.displayName;
|
|
706
|
+
const $08d8b7c38a500c5a$export$eba4b1df07cb1d3 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)($hLlzK$Separator, {
|
|
692
707
|
ref: ref,
|
|
693
708
|
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("-mx-1 my-1 h-px bg-muted", className),
|
|
694
709
|
...props
|
|
695
710
|
}));
|
|
696
|
-
$08d8b7c38a500c5a$export$eba4b1df07cb1d3.displayName =
|
|
711
|
+
$08d8b7c38a500c5a$export$eba4b1df07cb1d3.displayName = $hLlzK$Separator.displayName;
|
|
697
712
|
|
|
698
713
|
|
|
699
714
|
|
|
@@ -732,13 +747,13 @@ const $8a0ec98a1adff889$export$76ccd210b9029917 = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
732
747
|
$8a0ec98a1adff889$export$76ccd210b9029917.displayName = "TableBody";
|
|
733
748
|
const $8a0ec98a1adff889$export$1f116082bba1f9a8 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("tfoot", {
|
|
734
749
|
ref: ref,
|
|
735
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-t bg-
|
|
750
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-t border-gray-200 bg-gray-50/50 font-medium [&>tr]:last:border-b-0", className),
|
|
736
751
|
...props
|
|
737
752
|
}));
|
|
738
753
|
$8a0ec98a1adff889$export$1f116082bba1f9a8.displayName = "TableFooter";
|
|
739
754
|
const $8a0ec98a1adff889$export$b05581f4e764e162 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("tr", {
|
|
740
755
|
ref: ref,
|
|
741
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-b hover:bg-muted/50 data-[state=selected]:bg-muted", className),
|
|
756
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("border-b border-gray-200 hover:bg-muted/50 data-[state=selected]:bg-muted", className),
|
|
742
757
|
...props
|
|
743
758
|
}));
|
|
744
759
|
$8a0ec98a1adff889$export$b05581f4e764e162.displayName = "TableRow";
|
|
@@ -756,7 +771,7 @@ const $8a0ec98a1adff889$export$1e4baea7053fc0e3 = /*#__PURE__*/ (0, $hLlzK$forwa
|
|
|
756
771
|
$8a0ec98a1adff889$export$1e4baea7053fc0e3.displayName = "TableCell";
|
|
757
772
|
const $8a0ec98a1adff889$export$35468a455d619eb3 = /*#__PURE__*/ (0, $hLlzK$forwardRef)(({ className: className, ...props }, ref)=>/*#__PURE__*/ (0, $hLlzK$jsx)("caption", {
|
|
758
773
|
ref: ref,
|
|
759
|
-
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("
|
|
774
|
+
className: (0, $aeb027d07c362ab5$export$a274e22fb40f762e)("py-4 text-sm text-gray-500 border-t border-gray-200", className),
|
|
760
775
|
...props
|
|
761
776
|
}));
|
|
762
777
|
$8a0ec98a1adff889$export$35468a455d619eb3.displayName = "TableCaption";
|
|
@@ -979,7 +994,72 @@ function $fcf2a9f2608e06c6$export$6565f9f03506010b(strings, ...values) {
|
|
|
979
994
|
|
|
980
995
|
|
|
981
996
|
|
|
997
|
+
const $3a9419b35016ff92$var$modes = [
|
|
998
|
+
"file",
|
|
999
|
+
"cli"
|
|
1000
|
+
];
|
|
1001
|
+
const $3a9419b35016ff92$var$metaSchema = (0, $hLlzK$z).object({
|
|
1002
|
+
collapsible: (0, $hLlzK$z).boolean().default(false),
|
|
1003
|
+
disableCopy: (0, $hLlzK$z).boolean().default(false),
|
|
1004
|
+
mode: (0, $hLlzK$z).enum($3a9419b35016ff92$var$modes).optional(),
|
|
1005
|
+
title: (0, $hLlzK$z).string().trim().optional()
|
|
1006
|
+
});
|
|
1007
|
+
const $3a9419b35016ff92$export$63f5d3298ab11b24 = {
|
|
1008
|
+
collapsible: false,
|
|
1009
|
+
disableCopy: false,
|
|
1010
|
+
mode: undefined,
|
|
1011
|
+
title: undefined
|
|
1012
|
+
};
|
|
1013
|
+
function $3a9419b35016ff92$export$2b83d7916142717(value) {
|
|
1014
|
+
var _value_trim;
|
|
1015
|
+
const metastring = (_value_trim = value === null || value === void 0 ? void 0 : value.trim()) !== null && _value_trim !== void 0 ? _value_trim : "";
|
|
1016
|
+
if (!metastring) return $3a9419b35016ff92$export$63f5d3298ab11b24;
|
|
1017
|
+
const metaJson = $3a9419b35016ff92$export$3b54394b2741a26c(metastring).reduce((acc, token)=>{
|
|
1018
|
+
const [key, _value] = token.split("=");
|
|
1019
|
+
if (!key) return acc;
|
|
1020
|
+
const value = $3a9419b35016ff92$export$3626aedd0f1137ab(_value);
|
|
1021
|
+
acc[key] = value !== null && value !== void 0 ? value : true;
|
|
1022
|
+
return acc;
|
|
1023
|
+
}, {});
|
|
1024
|
+
try {
|
|
1025
|
+
const parsed = $3a9419b35016ff92$var$metaSchema.parse(metaJson);
|
|
1026
|
+
// return the parsed meta object, with default values filled in
|
|
1027
|
+
return {
|
|
1028
|
+
...$3a9419b35016ff92$export$63f5d3298ab11b24,
|
|
1029
|
+
...parsed
|
|
1030
|
+
};
|
|
1031
|
+
} catch (_) {
|
|
1032
|
+
return $3a9419b35016ff92$export$63f5d3298ab11b24;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
function $3a9419b35016ff92$export$3626aedd0f1137ab(value) {
|
|
1036
|
+
return value === null || value === void 0 ? void 0 : value.trim().replace(/^"(.*)"$/, "$1");
|
|
1037
|
+
}
|
|
1038
|
+
function $3a9419b35016ff92$export$3b54394b2741a26c(value) {
|
|
1039
|
+
var _value_trim;
|
|
1040
|
+
const input = (_value_trim = value === null || value === void 0 ? void 0 : value.trim()) !== null && _value_trim !== void 0 ? _value_trim : "";
|
|
1041
|
+
const result = [];
|
|
1042
|
+
let currentString = "";
|
|
1043
|
+
let inQuotes = false;
|
|
1044
|
+
for (const char of input){
|
|
1045
|
+
if (char === " " && !inQuotes) {
|
|
1046
|
+
if (currentString) {
|
|
1047
|
+
result.push(currentString);
|
|
1048
|
+
currentString = "";
|
|
1049
|
+
}
|
|
1050
|
+
} else if (char === '"') {
|
|
1051
|
+
inQuotes = !inQuotes;
|
|
1052
|
+
currentString += char;
|
|
1053
|
+
} else currentString += char;
|
|
1054
|
+
}
|
|
1055
|
+
if (currentString) result.push(currentString);
|
|
1056
|
+
return result;
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
982
1062
|
|
|
983
1063
|
|
|
984
|
-
export {$814757e656175971$export$b688253958b8dfe7 as Anchor, $814757e656175971$export$86577199b2baf6c3 as anchorClassNames, $e4a151af04a6a62e$export$353f5b6fc5456de1 as Button, $b9d5893769d495bc$export$60332b2344f7fe41 as Card, $b9d5893769d495bc$export$851de33184ecdac4 as CardBody, $b9d5893769d495bc$export$e9897d434e0741ee as CardFooter, $b9d5893769d495bc$export$5665775b26e26c5d as CardHeader, $b9d5893769d495bc$export$474db65c3c394e1c as CardTitle, $467de5d6131f2179$export$6c415d1fdae3dfdb as CodeBlock, $467de5d6131f2179$export$7e83364d3e7fd36a as CodeBlockBody, $467de5d6131f2179$export$1c41328978c69a88 as CodeBlockCode, $467de5d6131f2179$export$2e9b808b8155db21 as CodeBlockCopyButton, $467de5d6131f2179$export$2e996d1cfaa94c3d as CodeBlockExpanderButton, $467de5d6131f2179$export$b351deb59183780 as CodeBlockHeader, $467de5d6131f2179$export$b5654939a1e891d as CodeBlockTitle, $cb110289be1d8272$export$4071300121a182f5 as Drawer, $cb110289be1d8272$export$6bb43caaf29f3aa0 as DrawerPortal, $cb110289be1d8272$export$ac2f3b6686941bb7 as DrawerOverlay, $cb110289be1d8272$export$278caabac542baaf as DrawerTrigger, $cb110289be1d8272$export$8c488a07f269f722 as DrawerClose, $cb110289be1d8272$export$57ca055474bc0056 as DrawerContent, $cb110289be1d8272$export$bb68d554ded258ea as DrawerHeader, $cb110289be1d8272$export$d05a7d25ec5abf06 as DrawerFooter, $cb110289be1d8272$export$ef709dfaef303e38 as DrawerTitle, $cb110289be1d8272$export$5ac91ab14e563b4 as DrawerDescription, $49d620f73f88e7de$export$7f1bf47c7f50a6aa as InlineCode, $fd39f83d90873c05$export$f5b8910cec6cf069 as Input, $ae2faa0cd0fa65f5$export$c5be64db09f93414 as MediaObject, $ae2faa0cd0fa65f5$export$a850f92726a1f836 as MediaObjectMedia, $ae2faa0cd0fa65f5$export$8d93ffc9d5ebcf0c as MediaObjectContent, $c20827da6ac8f3e9$export$5b6b19405a83ff9d as Popover, $c20827da6ac8f3e9$export$7dacb05d26466c3 as PopoverTrigger, $c20827da6ac8f3e9$export$d7e1f420b25549ff as PopoverContent, $08d8b7c38a500c5a$export$ef9b1a59e592288f as Select, $08d8b7c38a500c5a$export$c973a4b3cb86a03d as SelectContent, $08d8b7c38a500c5a$export$ee25a334c55de1f4 as SelectGroup, $08d8b7c38a500c5a$export$
|
|
1064
|
+
export {$814757e656175971$export$b688253958b8dfe7 as Anchor, $814757e656175971$export$86577199b2baf6c3 as anchorClassNames, $e4a151af04a6a62e$export$353f5b6fc5456de1 as Button, $b9d5893769d495bc$export$60332b2344f7fe41 as Card, $b9d5893769d495bc$export$851de33184ecdac4 as CardBody, $b9d5893769d495bc$export$e9897d434e0741ee as CardFooter, $b9d5893769d495bc$export$5665775b26e26c5d as CardHeader, $b9d5893769d495bc$export$474db65c3c394e1c as CardTitle, $467de5d6131f2179$export$6c415d1fdae3dfdb as CodeBlock, $467de5d6131f2179$export$7e83364d3e7fd36a as CodeBlockBody, $467de5d6131f2179$export$1c41328978c69a88 as CodeBlockCode, $467de5d6131f2179$export$2e9b808b8155db21 as CodeBlockCopyButton, $467de5d6131f2179$export$2e996d1cfaa94c3d as CodeBlockExpanderButton, $467de5d6131f2179$export$b351deb59183780 as CodeBlockHeader, $467de5d6131f2179$export$b5654939a1e891d as CodeBlockTitle, $cb110289be1d8272$export$4071300121a182f5 as Drawer, $cb110289be1d8272$export$6bb43caaf29f3aa0 as DrawerPortal, $cb110289be1d8272$export$ac2f3b6686941bb7 as DrawerOverlay, $cb110289be1d8272$export$278caabac542baaf as DrawerTrigger, $cb110289be1d8272$export$8c488a07f269f722 as DrawerClose, $cb110289be1d8272$export$57ca055474bc0056 as DrawerContent, $cb110289be1d8272$export$bb68d554ded258ea as DrawerHeader, $cb110289be1d8272$export$d05a7d25ec5abf06 as DrawerFooter, $cb110289be1d8272$export$ef709dfaef303e38 as DrawerTitle, $cb110289be1d8272$export$5ac91ab14e563b4 as DrawerDescription, $49d620f73f88e7de$export$7f1bf47c7f50a6aa as InlineCode, $fd39f83d90873c05$export$f5b8910cec6cf069 as Input, $ae2faa0cd0fa65f5$export$c5be64db09f93414 as MediaObject, $ae2faa0cd0fa65f5$export$a850f92726a1f836 as MediaObjectMedia, $ae2faa0cd0fa65f5$export$8d93ffc9d5ebcf0c as MediaObjectContent, $c20827da6ac8f3e9$export$5b6b19405a83ff9d as Popover, $c20827da6ac8f3e9$export$7dacb05d26466c3 as PopoverTrigger, $c20827da6ac8f3e9$export$d7e1f420b25549ff as PopoverContent, $08d8b7c38a500c5a$export$ef9b1a59e592288f as Select, $08d8b7c38a500c5a$export$c973a4b3cb86a03d as SelectContent, $08d8b7c38a500c5a$export$ee25a334c55de1f4 as SelectGroup, $08d8b7c38a500c5a$export$f67338d29bd972f8 as SelectLabel, $08d8b7c38a500c5a$export$13ef48a934230896 as SelectItem, $08d8b7c38a500c5a$export$eba4b1df07cb1d3 as SelectSeparator, $08d8b7c38a500c5a$export$3ac1e88a1c0b9f1 as SelectTrigger, $08d8b7c38a500c5a$export$e288731fd71264f0 as SelectValue, $e4ab606c19eb58c8$export$8f31e4c4a37b8e9c as Skeleton, $8a0ec98a1adff889$export$54ec01a60f47d33d as Table, $8a0ec98a1adff889$export$f850895b287ef28e as TableHeader, $8a0ec98a1adff889$export$76ccd210b9029917 as TableBody, $8a0ec98a1adff889$export$1f116082bba1f9a8 as TableFooter, $8a0ec98a1adff889$export$2f4a7be4f0dcc2 as TableHead, $8a0ec98a1adff889$export$b05581f4e764e162 as TableRow, $8a0ec98a1adff889$export$1e4baea7053fc0e3 as TableCell, $8a0ec98a1adff889$export$35468a455d619eb3 as TableCaption, $1139165ac42b5b24$export$2d1315cd4e7dcc1 as PreventWrongThemeFlash, $1139165ac42b5b24$export$d8964aec282183a3 as ThemeProvider, $d2d52c6753841931$export$28c660c63b792dea as Tooltip, $d2d52c6753841931$export$8c610744efcf8a1d as TooltipTrigger, $d2d52c6753841931$export$e9003e2be37ec060 as TooltipContent, $d2d52c6753841931$export$f78649fb9ca566b8 as TooltipProvider, $fcf2a9f2608e06c6$export$6565f9f03506010b as code, $3a9419b35016ff92$export$2b83d7916142717 as parseMetastring, $d7a3c3bf16d2f4b8$export$47c66070d6d6cd6d as isSupportedLanguage, $d7a3c3bf16d2f4b8$export$dbb82c29aa7faca4 as parseLanguage, $aeb027d07c362ab5$export$a274e22fb40f762e as cx, $1139165ac42b5b24$export$6b08dcdbd4008308 as isTheme, $1139165ac42b5b24$export$bca14c5b3b88a9c9 as theme, $1139165ac42b5b24$export$93d4e7f90805808f as useTheme};
|
|
985
1065
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["components/index.tsx","components/anchor/index.tsx","components/cx/index.ts","components/button/index.tsx","components/card/index.tsx","components/code-block/index.tsx","components/code-block/supported-languages.ts","components/drawer/index.tsx","components/inline-code/index.tsx","components/input/index.tsx","components/media-object/index.tsx","components/popover/index.tsx","components/select/index.tsx","components/skeleton/index.tsx","components/table/index.tsx","components/theme-provider/index.tsx","components/tooltip/index.tsx","components/code-block/code.ts"],"sourcesContent":["// component exports\nexport { Anchor, anchorClassNames } from \"./anchor\";\nexport { Button } from \"./button\";\nexport { Card, CardBody, CardFooter, CardHeader, CardTitle } from \"./card\";\nexport {\n\tCodeBlock,\n\tCodeBlockBody,\n\tCodeBlockCode,\n\tCodeBlockCopyButton,\n\tCodeBlockExpanderButton,\n\tCodeBlockHeader,\n\tCodeBlockTitle,\n} from \"./code-block\";\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n} from \"./drawer\";\nexport { InlineCode } from \"./inline-code\";\nexport { Input } from \"./input\";\nexport { MediaObject, MediaObjectMedia, MediaObjectContent } from \"./media-object\";\nexport { Popover, PopoverTrigger, PopoverContent } from \"./popover\";\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectIcon,\n\tSelectLabel,\n\tSelectOption,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n} from \"./select\";\nexport { Skeleton } from \"./skeleton\";\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from \"./table\";\nexport { PreventWrongThemeFlash, ThemeProvider } from \"./theme-provider\";\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from \"./tooltip\";\n\n// utils exports\nexport { code } from \"./code-block/code\";\nexport { cx } from \"./cx\";\nexport { isTheme, theme, useTheme } from \"./theme-provider\";\n\n// types exports\nexport type { ButtonProps } from \"./button\";\nexport type { CardProps, CardTitleProps } from \"./card\";\nexport type { InputProps } from \"./input\";\nexport type { AutoComplete, InputType } from \"./input/types\";\nexport type { Theme, ThemeProviderProps } from \"./theme-provider\";\nexport type { WithAsChild } from \"./types/as-child\";\nexport type { WithStyleProps } from \"./types/with-style-props\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { AnchorHTMLAttributes, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport { WithAsChild } from \"../types/as-child\";\n\nconst anchorClassNames = (className: string | undefined) =>\n\tcx(\n\t\t\"text-blue-600 focus-visible:ring-blue-500/30 cursor-pointer rounded bg-transparent focus:outline-none focus-visible:ring hover:underline visited:text-purple-600\",\n\t\tclassName,\n\t);\n\ntype AnchorProps = AnchorHTMLAttributes<HTMLAnchorElement> & WithAsChild;\n\n/**\n * Fundamental component for rendering links to external addresses.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n *\n * @note If you need to link to an internal application route, prefer using the\n * [`react-router-dom` `<Link>`](https://reactrouter.com/en/main/components/link) or the\n * [`@remix-run/react` `<Link>`](https://remix.run/docs/en/main/components/link).\n */\nconst Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(({ asChild, className, ...props }, ref) => {\n\tconst Component = asChild ? Slot : \"a\";\n\n\treturn <Component className={anchorClassNames(className)} ref={ref} {...props} />;\n});\nAnchor.displayName = \"Anchor\";\n\nexport { Anchor, anchorClassNames };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Conditionally add Tailwind (and other) CSS classes.\n *\n * Allows for tailwind overrides in LTR-specificity-like order of applied classes.\n */\nexport function cx(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef, type ButtonHTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\nimport type { WithAsChild } from \"../types/as-child\";\nimport type { VariantProps } from \"../types/variant-props\";\n\nconst buttonVariants = cva(\n\t\"inline-flex items-center justify-center rounded-md font-medium border focus-visible:outline-none focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\",\n\t{\n\t\tvariants: {\n\t\t\tpriority: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"border-blue-500 text-blue-500 bg-white hover:bg-blue-50 active:bg-blue-100 focus-visible:ring-blue-600/25\",\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-blue-500 text-button hover:bg-blue-600 active:bg-blue-700 focus-visible:ring-blue-600/25 border-transparent\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"bg-blue-50 border-blue-300 text-blue-900 hover:bg-blue-100 active:bg-blue-200 focus-visible:ring-blue-600/25\",\n\t\t\t},\n\t\t\tstate: {\n\t\t\t\tdefault: \"\",\n\t\t\t\tdanger: \"\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-10 px-4 py-2\",\n\t\t\t\tsm: \"h-9 rounded-md px-3 text-sm\",\n\t\t\t\tlg: \"h-12 rounded-md px-6 text-lg\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tpriority: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t\tcompoundVariants: [\n\t\t\t{\n\t\t\t\tpriority: \"default\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"border-red-500 text-red-500 hover:bg-red-50 active:bg-red-100 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tpriority: \"primary\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"bg-red-500 hover:bg-red-600 active:bg-red-700 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tpriority: \"secondary\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"bg-red-50 border-red-200 text-red-900 hover:bg-red-100 active:bg-red-200 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t],\n\t},\n);\n\ntype ButtonVariants = VariantProps<typeof buttonVariants>;\n\n/**\n * The props for the `Button` component.\n */\nexport type ButtonProps = WithAsChild & ButtonHTMLAttributes<HTMLButtonElement> & ButtonVariants;\n\n/**\n * Renders a button or a component that looks like a button, an interactive\n * element activated by a user with a mouse, keyboard, finger, voice command, or\n * other assistive technology. Once activated, it then performs an action, such\n * as submitting a form or opening a dialog.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n\t({ className, priority = \"default\", size = \"default\", state = \"default\", asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn <Comp className={cx(buttonVariants({ priority, size, state, className }))} ref={ref} {...props} />;\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport type { WithAsChild } from \"../types/as-child\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * A container that can be used to display content in a box resembling a playing\n * card.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"relative rounded border bg-card\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCard.displayName = \"Card\";\n\n/**\n * The main content of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardBody = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"p-6\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardBody.displayName = \"CardBody\";\n\n/**\n * The footer container of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"border-t px-6 py-3\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardFooter.displayName = \"CardFooter\";\n\n/**\n * The header container of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardHeader = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"border-b px-6 py-3\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardHeader.displayName = \"CardHeader\";\n\nexport type CardTitleProps = HTMLAttributes<HTMLHeadingElement> & WithAsChild;\n\n/**\n * The title of a card. Usually composed as a direct child of a `CardHeader` component.\n */\nexport const CardTitle = forwardRef<HTMLParagraphElement, CardTitleProps>(({ className, asChild, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"h3\";\n\treturn <Comp ref={ref} className={cx(\"font-semibold leading-none tracking-tight\", className)} {...props} />;\n});\nCardTitle.displayName = \"CardTitle\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport Prism from \"prismjs\";\nimport {\n\tcreateContext,\n\tDispatch,\n\tElementRef,\n\tforwardRef,\n\tHTMLAttributes,\n\tSetStateAction,\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-jsx.js\";\nimport \"prismjs/components/prism-tsx.js\";\nimport { useCopyToClipboard } from \"@uidotdev/usehooks\";\nimport assert from \"tiny-invariant\";\nimport { cx } from \"../cx\";\nimport type { WithStyleProps } from \"../types/with-style-props\";\nimport { LineRange } from \"./line-numbers\";\nimport { formatLanguageClassName, type SupportedLanguage } from \"./supported-languages\";\n\n/**\n * TODO(cody):\n * - fix line numbers, maybe try grid instead of :before and flex?\n * - fix line hightlighting\n * - fix line wrapping? horizontal scrolling has problems w/ line highlighting :(\n */\n\ntype CodeBlockContextType = {\n\tcodeId: string | undefined;\n\tcopyText: string;\n\thasCodeExpander: boolean;\n\tisCodeExpanded: boolean;\n\tregisterCodeId: (id: string) => void;\n\tsetCopyText: (newCopyText: string) => void;\n\tsetHasCodeExpander: (value: boolean) => void;\n\tsetIsCodeExpanded: Dispatch<SetStateAction<boolean>>;\n\tunregisterCodeId: (id: string) => void;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n\tcodeId: undefined,\n\tcopyText: \"\",\n\thasCodeExpander: false,\n\tisCodeExpanded: false,\n\tregisterCodeId: () => {},\n\tsetCopyText: () => {},\n\tsetHasCodeExpander: () => {},\n\tsetIsCodeExpanded: () => {},\n\tunregisterCodeId: () => {},\n});\n\nconst CodeBlock = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => {\n\tconst [copyText, setCopyText] = useState(\"\");\n\tconst [hasCodeExpander, setHasCodeExpander] = useState(false);\n\tconst [isCodeExpanded, setIsCodeExpanded] = useState(false);\n\tconst [codeId, setCodeId] = useState<string | undefined>(undefined);\n\n\tconst context: CodeBlockContextType = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tcodeId,\n\t\t\t\tcopyText,\n\t\t\t\thasCodeExpander,\n\t\t\t\tisCodeExpanded,\n\t\t\t\tregisterCodeId: (id) => {\n\t\t\t\t\tsetCodeId((old) => {\n\t\t\t\t\t\tassert(old == null, \"You can only render a single CodeBlockCode within a CodeBlock.\");\n\t\t\t\t\t\treturn id;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsetCopyText,\n\t\t\t\tsetHasCodeExpander,\n\t\t\t\tsetIsCodeExpanded,\n\t\t\t\tunregisterCodeId: (id) => {\n\t\t\t\t\tsetCodeId((old) => {\n\t\t\t\t\t\tassert(old === id, \"You can only render a single CodeBlockCode within a CodeBlock.\");\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t}) as const,\n\t\t[codeId, copyText, hasCodeExpander, isCodeExpanded],\n\t);\n\n\treturn (\n\t\t<CodeBlockContext.Provider value={context}>\n\t\t\t<div\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono text-[0.8125rem]\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</CodeBlockContext.Provider>\n\t);\n});\nCodeBlock.displayName = \"CodeBlock\";\n\nconst CodeBlockBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n\t<div className={cx(\"relative\", className)} ref={ref} {...props} />\n));\nCodeBlockBody.displayName = \"CodeBlockBody\";\n\ntype CodeBlockCodeProps = WithStyleProps & {\n\tchildren?: string | undefined;\n\thighlightLines?: (LineRange | number)[];\n\tlanguage?: SupportedLanguage;\n\tshowLineNumbers?: boolean;\n};\n\nconst CodeBlockCode = forwardRef<HTMLPreElement, CodeBlockCodeProps>((props, ref) => {\n\tconst { children, className, language = \"sh\", style } = props;\n\tconst innerPreRef = useRef<ElementRef<\"pre\">>();\n\tconst id = useId();\n\tconst { hasCodeExpander, isCodeExpanded, registerCodeId, setCopyText, unregisterCodeId } =\n\t\tuseContext(CodeBlockContext);\n\n\t// trim any leading and trailing whitespace/empty lines\n\tconst trimmedCode = children?.trim() ?? \"\";\n\n\tuseEffect(() => {\n\t\tconst preElement = innerPreRef.current;\n\t\tif (!preElement) {\n\t\t\treturn;\n\t\t}\n\t\tPrism.highlightElement(preElement);\n\t}, [trimmedCode, children]);\n\n\tuseEffect(() => {\n\t\tsetCopyText(trimmedCode);\n\t}, [trimmedCode, setCopyText]);\n\n\tuseEffect(() => {\n\t\tregisterCodeId(id);\n\n\t\treturn () => {\n\t\t\tunregisterCodeId(id);\n\t\t};\n\t}, [id, registerCodeId, unregisterCodeId]);\n\n\treturn (\n\t\t<pre\n\t\t\taria-expanded={hasCodeExpander ? isCodeExpanded : undefined}\n\t\t\tclassName={cx(\n\t\t\t\tformatLanguageClassName(language),\n\t\t\t\t\"scrollbar overflow-x-auto overflow-y-hidden p-4 pr-[3.375rem] firefox:after:mr-[3.375rem] firefox:after:inline-block firefox:after:content-['']\",\n\t\t\t\t\"aria-[expanded='false']:max-h-[13.6rem]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-lang={language}\n\t\t\tid={id}\n\t\t\tref={(node) => {\n\t\t\t\tinnerPreRef.current = node ?? undefined;\n\t\t\t\treturn ref;\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\ttabSize: 2,\n\t\t\t\tMozTabSize: 2,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t<code>{trimmedCode}</code>\n\t\t</pre>\n\t);\n});\nCodeBlockCode.displayName = \"CodeBlockCode\";\n\nconst CodeBlockHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n\t<div\n\t\tclassName={cx(\"flex items-center gap-1 border-b border-gray-300 bg-gray-100 px-4 py-2 text-gray-700\", className)}\n\t\tref={ref}\n\t\t{...props}\n\t/>\n));\nCodeBlockHeader.displayName = \"CodeBlockHeader\";\n\nconst CodeBlockTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement> & { asChild?: boolean }>(\n\t({ asChild = false, className, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"h3\";\n\t\treturn <Comp ref={ref} className={cx(\"font-mono text-[0.8125rem] font-normal\", className)} {...props} />;\n\t},\n);\nCodeBlockTitle.displayName = \"CodeBlockTitle\";\n\ntype CodeBlockCopyButtonProps = WithStyleProps & {\n\tonCopy?: (value: string) => void;\n\tonCopyError?: (error: unknown) => void;\n};\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n\t({ className, onCopy, onCopyError, style }, ref) => {\n\t\tconst { copyText } = useContext(CodeBlockContext);\n\t\tconst [, copyToClipboard] = useCopyToClipboard();\n\t\tconst [copied, setCopied] = useState(false);\n\n\t\tuseEffect(() => {\n\t\t\tif (copied) {\n\t\t\t\tconst timeoutId = window.setTimeout(() => {\n\t\t\t\t\tsetCopied(false);\n\t\t\t\t}, 2000);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t};\n\t\t\t}\n\t\t}, [copied]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"absolute right-3 top-3 z-10 flex h-7 w-7 items-center justify-center rounded-sm border border-gray-300 bg-gray-50 shadow-[-1rem_0_0.75rem_-0.375rem_hsl(var(--gray-050)),1rem_0_0_-0.25rem_hsl(var(--gray-050))] hover:border-gray-400 hover:bg-gray-200\",\n\t\t\t\t\tcopied &&\n\t\t\t\t\t\t\"gap-1 w-auto border-transparent bg-green-500 focus:bg-green-500 pl-2 pr-1.5 text-button hover:border-transparent hover:bg-green-500\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\tstyle={style}\n\t\t\t\tonClick={async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait copyToClipboard(copyText);\n\t\t\t\t\t\tonCopy?.(copyText);\n\t\t\t\t\t\tsetCopied(true);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tonCopyError?.(error);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Copy code</span>\n\t\t\t\t{copied ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\tCopied\n\t\t\t\t\t\t<CheckIcon />\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<CopyIcon />\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\nCodeBlockCopyButton.displayName = \"CodeBlockCopyButton\";\n\ntype CodeBlockExpanderButtonProps = Omit<\n\tHTMLAttributes<HTMLButtonElement>,\n\t\"children\" | \"aria-controls\" | \"aria-expanded\"\n>;\n\nconst CodeBlockExpanderButton = forwardRef<HTMLButtonElement, CodeBlockExpanderButtonProps>(\n\t({ className, onClick, ...props }, ref) => {\n\t\tconst { codeId, isCodeExpanded, setIsCodeExpanded, setHasCodeExpander } = useContext(CodeBlockContext);\n\n\t\tuseEffect(() => {\n\t\t\tsetHasCodeExpander(true);\n\n\t\t\treturn () => {\n\t\t\t\tsetHasCodeExpander(false);\n\t\t\t};\n\t\t}, [setHasCodeExpander]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\t{...props}\n\t\t\t\taria-controls={codeId}\n\t\t\t\taria-expanded={isCodeExpanded}\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"bg-gray-050 flex w-full items-center justify-center border-t border-gray-300 px-4 py-2 font-sans text-gray-700 hover:bg-gray-100\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tsetIsCodeExpanded((prev) => !prev);\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{isCodeExpanded ? \"Show less\" : \"Show more\"}{\" \"}\n\t\t\t\t<ExpandIcon className={cx(isCodeExpanded && \"rotate-180\", \"transition-all duration-150\")} />\n\t\t\t</button>\n\t\t);\n\t},\n);\nCodeBlockExpanderButton.displayName = \"CodeBlockExpanderButton\";\n\nexport {\n\tCodeBlock,\n\tCodeBlockBody,\n\tCodeBlockCode,\n\tCodeBlockCopyButton,\n\tCodeBlockExpanderButton,\n\tCodeBlockHeader,\n\tCodeBlockTitle,\n};\n\nconst ExpandIcon = ({ className, style }: WithStyleProps) => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 20 20\"\n\t\tfill=\"currentColor\"\n\t\tclassName={cx(\"relative top-px h-5 w-5 transition-transform\", className)}\n\t\tstyle={style}\n\t>\n\t\t<path d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\" />\n\t</svg>\n);\n\nconst CopyIcon = ({ className, style }: WithStyleProps) => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tfill=\"none\"\n\t\tviewBox=\"0 0 20 20\"\n\t\tstrokeWidth=\"{1.5}\"\n\t\tstroke=\"currentColor\"\n\t\tclassName={cx(\"h-5 w-5\", className)}\n\t\tstyle={style}\n\t>\n\t\t<path\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\td=\"M7.719 7.719v-3.5a1.5 1.5 0 0 1 1.5-1.5h5.562a1.5 1.5 0 0 1 1.5 1.5V12a1.5 1.5 0 0 1-1.5 1.5H11.5m-7.281 4.781H10a1.5 1.5 0 0 0 1.5-1.5V9.22a1.5 1.5 0 0 0-1.5-1.5H4.219a1.5 1.5 0 0 0-1.5 1.5v7.562a1.5 1.5 0 0 0 1.5 1.5Z\"\n\t\t/>\n\t</svg>\n);\n\nconst CheckIcon = ({ className, style }: WithStyleProps) => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 20 20\"\n\t\tfill=\"currentColor\"\n\t\tclassName={cx(\"h-5 w-5\", className)}\n\t\tstyle={style}\n\t>\n\t\t<path d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\" />\n\t</svg>\n);\n","/**\n * List of supported languages for syntax highlighting.\n */\nconst supportedLanguages = [\n\t\"bash\",\n\t\"cs\",\n\t\"csharp\",\n\t\"css\",\n\t\"dotnet\",\n\t\"go\",\n\t\"html\",\n\t\"java\",\n\t\"javascript\",\n\t\"js\",\n\t\"json\",\n\t\"jsx\",\n\t\"py\",\n\t\"python\",\n\t\"rb\",\n\t\"ruby\",\n\t\"rust\",\n\t\"sh\",\n\t\"shell\",\n\t\"ts\",\n\t\"tsx\",\n\t\"typescript\",\n\t\"yaml\",\n\t\"yml\",\n] as const;\n\n/**\n * Supported languages for syntax highlighting.\n */\nexport type SupportedLanguage = (typeof supportedLanguages)[number];\n\n/**\n * Type Predicate: checks if an arbitrary value is a supported syntax highlighting language.\n */\nexport const isSupportedLanguage = (value: unknown): value is SupportedLanguage => {\n\treturn typeof value === \"string\" && supportedLanguages.includes(value as SupportedLanguage);\n};\n\n/**\n * A class name for a language that Prism.js can understand.\n */\ntype LanguageClass = `language-${SupportedLanguage}`;\n\n/**\n * Formats a language name into a class name that Prism.js can understand.\n * @default \"language-sh\"\n */\nexport function formatLanguageClassName(language: SupportedLanguage | undefined = \"sh\") {\n\tconst lang = language ?? \"sh\";\n\tconst className: LanguageClass = `language-${lang}`;\n\treturn className;\n}\n","import * as DrawerPrimitive from \"@radix-ui/react-dialog\";\nimport { Cross2Icon } from \"@radix-ui/react-icons\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef, HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Drawer = DrawerPrimitive.Root;\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerOverlay = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Overlay>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Overlay\n\t\tclassName={cx(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t\tref={ref}\n\t/>\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst drawerVariants = cva(\n\t\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\ttop: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n\t\t\t\tbottom:\n\t\t\t\t\t\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n\t\t\t\tleft: \"inset-y-0 left-0 h-full w-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n\t\t\t\tright:\n\t\t\t\t\t\"inset-y-0 right-0 h-full w-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"right\",\n\t\t},\n\t},\n);\n\ntype DrawerContentProps = {} & ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> &\n\tVariantProps<typeof drawerVariants>;\n\nconst DrawerContent = forwardRef<ElementRef<typeof DrawerPrimitive.Content>, DrawerContentProps>(\n\t({ side = \"right\", className, children, ...props }, ref) => (\n\t\t<DrawerPortal>\n\t\t\t<DrawerOverlay />\n\t\t\t<DrawerPrimitive.Content ref={ref} className={cx(drawerVariants({ side }), className)} {...props}>\n\t\t\t\t{children}\n\t\t\t\t<DrawerPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n\t\t\t\t\t{/* TODO(cody): replaceme w/ real icon */}\n\t\t\t\t\t<Cross2Icon className=\"h-4 w-4\" />\n\t\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t\t</DrawerPrimitive.Close>\n\t\t\t</DrawerPrimitive.Content>\n\t\t</DrawerPortal>\n\t),\n);\nDrawerContent.displayName = DrawerPrimitive.Content.displayName;\n\nconst DrawerHeader = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cx(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cx(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Title>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Title ref={ref} className={cx(\"text-lg font-semibold text-gray-900\", className)} {...props} />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Description>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Description ref={ref} className={cx(\"text-sm text-gray-600\", className)} {...props} />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","import { forwardRef, HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\n/**\n * A component to render inline code.\n */\nconst InlineCode = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(({ className, ...props }, ref) => (\n\t<code\n\t\tref={ref}\n\t\tclassName={cx(\"font-mono bg-gray-100 border border-gray-300 text-sm rounded-md px-1 py-0.5\", className)}\n\t\t{...props}\n\t/>\n));\nInlineCode.displayName = \"InlineCode\";\n\nexport { InlineCode };\n","import { cva } from \"class-variance-authority\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport type { VariantProps } from \"../types/variant-props\";\nimport type { AutoComplete, InputType } from \"./types\";\n\nconst inputVariants = cva(\n\t\"flex h-10 w-full rounded-md border bg-white px-3 py-2 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-4 disabled:cursor-not-allowed disabled:opacity-50\",\n\t{\n\t\tvariants: {\n\t\t\tstate: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"text-gray-900 border-gray-300 placeholder:text-gray-400 focus:border-blue-500 focus-visible:ring-blue-600/25\",\n\t\t\t\tdanger:\n\t\t\t\t\t\"text-red-900 border-red-500 placeholder:text-red-400 focus:border-red-500 focus-visible:ring-red-600/25\",\n\t\t\t\tsuccess:\n\t\t\t\t\t\"text-green-900 border-green-500 placeholder:text-green-400 focus:border-green-500 focus-visible:ring-green-600/25\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tstate: \"default\",\n\t\t},\n\t},\n);\n\ntype InputVariants = VariantProps<typeof inputVariants>;\n\n/**\n * The props for the `Input` component.\n */\nexport type InputProps = InputVariants &\n\tOmit<InputHTMLAttributes<HTMLInputElement>, \"autoComplete\" | \"type\"> & {\n\t\tautoComplete?: AutoComplete;\n\t\ttype?: InputType;\n\t};\n\n/**\n * Used to create interactive controls for web-based forms in order to accept data from the user\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n\t({ className, state = \"default\", type = \"text\", ...props }, ref) => {\n\t\treturn <input className={cx(inputVariants({ state }), className)} ref={ref} type={type} {...props} />;\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\n/**\n * The media object is an image/icon (media) to the left, with descriptive\n * content (title and subtitle/description) to the right.\n *\n * Change the spacing between the media and content by passing a `gap-*` class.\n * The default gap is `gap-4`.\n *\n * Use flexbox utilities to change the alignment of the media and content.\n *\n * Compose the media object with the `MediaObjectMedia` and `MediaObjectContent`\n * components as direct children.\n */\nconst MediaObject = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"flex gap-4\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObject.displayName = \"MediaObject\";\n\n/**\n * The container for an image or icon to display in the media slot of the media object.\n */\nconst MediaObjectMedia = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"shrink-0 leading-none\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObjectMedia.displayName = \"MediaObjectMedia\";\n\n/**\n * The container for the content slot of a media object.\n */\nconst MediaObjectContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"min-w-0 flex-1\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObjectContent.displayName = \"MediaObjectContent\";\n\nexport { MediaObject, MediaObjectMedia, MediaObjectContent };\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = forwardRef<\n\tElementRef<typeof PopoverPrimitive.Content>,\n\tComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<PopoverPrimitive.Portal>\n\t\t<PopoverPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cx(\n\t\t\t\t\"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import { CaretSortIcon, CheckIcon } from \"@radix-ui/react-icons\";\nimport {\n\tContent,\n\tGroup,\n\tIcon,\n\tItem,\n\tItemIndicator,\n\tItemText,\n\tLabel,\n\tPortal,\n\tRoot,\n\tSeparator,\n\tTrigger,\n\tValue,\n\tViewport,\n} from \"@radix-ui/react-select\";\nimport type { ComponentPropsWithoutRef, ElementRef } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Select = Root;\n\nconst SelectGroup = Group;\n\nconst SelectValue = Value;\n\nconst SelectIcon = Icon;\n\nconst SelectTrigger = forwardRef<\n\tElementRef<typeof Trigger>,\n\tComponentPropsWithoutRef<typeof Trigger> & { hideIcon?: boolean }\n>(({ className, children, hideIcon = false, ...props }, ref) => (\n\t<Trigger\n\t\tref={ref}\n\t\tclassName={cx(\n\t\t\t\"flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 placeholder:text-gray-300 focus:border-blue-500 focus:outline-none focus:ring-4 focus:ring-blue-600/25 disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t{!hideIcon && (\n\t\t\t<Icon asChild>\n\t\t\t\t<CaretSortIcon className=\"h-4 w-4 opacity-50\" />\n\t\t\t</Icon>\n\t\t)}\n\t</Trigger>\n));\nSelectTrigger.displayName = Trigger.displayName;\n\nconst SelectContent = forwardRef<ElementRef<typeof Content>, ComponentPropsWithoutRef<typeof Content>>(\n\t({ className, children, position = \"popper\", ...props }, ref) => (\n\t\t<Portal>\n\t\t\t<Content\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-white text-gray-900 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\t\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tposition={position}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Viewport\n\t\t\t\t\tclassName={cx(\n\t\t\t\t\t\t\"p-1\",\n\t\t\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\t\t\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Viewport>\n\t\t\t</Content>\n\t\t</Portal>\n\t),\n);\nSelectContent.displayName = Content.displayName;\n\nconst SelectLabel = forwardRef<ElementRef<typeof Label>, ComponentPropsWithoutRef<typeof Label>>(\n\t({ className, ...props }, ref) => (\n\t\t<Label ref={ref} className={cx(\"px-2 py-1.5 text-sm font-semibold\", className)} {...props} />\n\t),\n);\nSelectLabel.displayName = Label.displayName;\n\nconst SelectOption = forwardRef<ElementRef<typeof Item>, ComponentPropsWithoutRef<typeof Item>>(\n\t({ className, children, ...props }, ref) => (\n\t\t<Item\n\t\t\tref={ref}\n\t\t\tclassName={cx(\n\t\t\t\t\"relative flex w-full cursor-pointer items-center rounded-sm py-1.5 pl-2 pr-2 text-sm outline-none focus:bg-blue-500 focus:text-button data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t\t<ItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"h-4 w-4\" />\n\t\t\t\t</ItemIndicator>\n\t\t\t</span>\n\t\t\t<ItemText>{children}</ItemText>\n\t\t</Item>\n\t),\n);\nSelectOption.displayName = Item.displayName;\n\nconst SelectSeparator = forwardRef<ElementRef<typeof Separator>, ComponentPropsWithoutRef<typeof Separator>>(\n\t({ className, ...props }, ref) => (\n\t\t<Separator ref={ref} className={cx(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\n\t),\n);\nSelectSeparator.displayName = Separator.displayName;\n\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectIcon,\n\tSelectLabel,\n\tSelectOption,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n};\n","import { HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\ntype Props = Exclude<HTMLAttributes<HTMLDivElement>, \"children\">;\n\nfunction Skeleton({ className, ...props }: Props) {\n\treturn <div className={cx(\"animate-pulse rounded-md bg-gray-200\", className)} {...props} />;\n}\n\nexport { Skeleton };\n","import { forwardRef, HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(({ className, ...props }, ref) => (\n\t<div className=\"relative w-full overflow-auto\">\n\t\t<table ref={ref} className={cx(\"w-full caption-bottom text-sm\", className)} {...props} />\n\t</div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<thead ref={ref} className={cx(\"[&_tr]:border-b bg-background\", className)} {...props} />\n\t),\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tbody ref={ref} className={cx(\"[&_tr:last-child]:border-0\", className)} {...props} />\n\t),\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tfoot ref={ref} className={cx(\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\", className)} {...props} />\n\t),\n);\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tr ref={ref} className={cx(\"border-b hover:bg-muted/50 data-[state=selected]:bg-muted\", className)} {...props} />\n\t),\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<th\n\t\t\tref={ref}\n\t\t\tclassName={cx(\n\t\t\t\t\"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<td ref={ref} className={cx(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />\n\t),\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, HTMLAttributes<HTMLTableCaptionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<caption ref={ref} className={cx(\"mt-4 text-sm text-muted-foreground\", className)} {...props} />\n\t),\n);\nTableCaption.displayName = \"TableCaption\";\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import type { PropsWithChildren } from \"react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * prefersDarkModeMediaQuery is the media query used to detect if the user prefers dark mode.\n */\nconst prefersDarkModeMediaQuery = \"(prefers-color-scheme: dark)\" as const;\n\n/**\n * prefersHighContrastMediaQuery is the media query used to detect if the user prefers high contrast mode.\n */\nconst prefersHighContrastMediaQuery = \"(prefers-contrast: more)\" as const;\n\n/**\n * themes is a tuple of valid themes.\n */\nconst themes = [\"system\", \"light\", \"dark\", \"light-high-contrast\", \"dark-high-contrast\"] as const;\n\n/**\n * Theme is a string literal type that represents a valid theme.\n */\ntype Theme = (typeof themes)[number];\n\n/**\n * theme is a helper which translates the Theme type into a string literal type.\n */\nconst theme = (value: Theme) => value;\n\n/**\n * Type predicate that checks if a value is a valid theme.\n */\nfunction isTheme(value: unknown): value is Theme {\n\tif (typeof value !== \"string\") {\n\t\treturn false;\n\t}\n\n\treturn themes.includes(value as Theme);\n}\n\n/**\n * DEFAULT_STORAGE_KEY is the default key used to store the theme in localStorage.\n */\nconst DEFAULT_STORAGE_KEY = \"mantle-ui-theme\" as const;\n\n/**\n * ThemeProviderState is the shape of the state returned by the ThemeProviderContext.\n */\ntype ThemeProviderState = [theme: Theme, setTheme: (theme: Theme) => void];\n\n/**\n * Initial state for the ThemeProviderContext.\n */\nconst initialState: ThemeProviderState = [\"system\", () => null];\n\n/**\n * ThemeProviderContext is a React Context that provides the current theme and a function to set the theme.\n */\nconst ThemeProviderContext = createContext<ThemeProviderState>(initialState);\n\n/**\n * isBrowser returns true if the code is running in a browser environment.\n */\nconst isBrowser = () => typeof window !== \"undefined\";\n\n/**\n * Gets the stored theme from localStorage or returns the default theme if no theme is stored.\n */\nfunction getStoredTheme(storageKey: string, defaultTheme: Theme = \"system\") {\n\tconst fallbackTheme = defaultTheme ?? \"system\";\n\tif (isBrowser()) {\n\t\tconst storedTheme = window.localStorage.getItem(storageKey);\n\t\treturn isTheme(storedTheme) ? storedTheme : fallbackTheme;\n\t}\n\treturn fallbackTheme;\n}\n\ntype ThemeProviderProps = PropsWithChildren & {\n\tdefaultTheme?: Theme;\n\tstorageKey?: string;\n};\n\n/**\n * ThemeProvider is a React Context Provider that provides the current theme and a function to set the theme.\n */\nfunction ThemeProvider({ children, defaultTheme = \"system\", storageKey = DEFAULT_STORAGE_KEY }: ThemeProviderProps) {\n\tconst [theme, setTheme] = useState<Theme>(() => {\n\t\tconst initialTheme = getStoredTheme(storageKey, defaultTheme);\n\t\tapplyTheme(initialTheme);\n\t\treturn initialTheme;\n\t});\n\n\tuseEffect(() => {\n\t\tconst storedTheme = getStoredTheme(storageKey, defaultTheme);\n\t\tsetTheme(storedTheme);\n\t\tapplyTheme(storedTheme);\n\t}, [defaultTheme, storageKey]);\n\n\tuseEffect(() => {\n\t\tconst prefersDarkMql = window.matchMedia(prefersDarkModeMediaQuery);\n\t\tconst prefersHighContrastMql = window.matchMedia(prefersHighContrastMediaQuery);\n\n\t\tconst onChange = () => {\n\t\t\tconst storedTheme = getStoredTheme(storageKey, defaultTheme);\n\n\t\t\t// If the stored theme is not \"system\", then the user has explicitly set a theme and we should not\n\t\t\t// automatically change the theme when the user's system preferences change.\n\t\t\tif (storedTheme !== \"system\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapplyTheme(\"system\");\n\t\t};\n\n\t\tprefersDarkMql.addEventListener(\"change\", onChange);\n\t\tprefersHighContrastMql.addEventListener(\"change\", onChange);\n\n\t\treturn () => {\n\t\t\tprefersDarkMql.removeEventListener(\"change\", onChange);\n\t\t\tprefersHighContrastMql.removeEventListener(\"change\", onChange);\n\t\t};\n\t}, [defaultTheme, storageKey]);\n\n\tconst value: ThemeProviderState = useMemo(\n\t\t() => [\n\t\t\ttheme,\n\t\t\t(theme: Theme) => {\n\t\t\t\twindow.localStorage.setItem(storageKey, theme);\n\t\t\t\tsetTheme(theme);\n\t\t\t\tapplyTheme(theme);\n\t\t\t},\n\t\t],\n\t\t[storageKey, theme],\n\t);\n\n\treturn <ThemeProviderContext.Provider value={value}>{children}</ThemeProviderContext.Provider>;\n}\n\n/**\n * useTheme returns the current theme and a function to set the theme.\n *\n * @note This function will throw an error if used outside of a ThemeProvider context tree.\n */\nfunction useTheme() {\n\tconst context = useContext(ThemeProviderContext);\n\n\tinvariant(context, \"useTheme must be used within a ThemeProvider\");\n\n\treturn context;\n}\n\n/**\n * Applies the given theme to the <html> element.\n */\nfunction applyTheme(theme: Theme) {\n\tif (!isBrowser()) {\n\t\treturn;\n\t}\n\n\tconst htmlElement = window.document.documentElement;\n\thtmlElement.classList.remove(...themes);\n\tconst prefersDarkMode = window.matchMedia(prefersDarkModeMediaQuery).matches;\n\tconst prefersHighContrast = window.matchMedia(prefersHighContrastMediaQuery).matches;\n\tconst newTheme = theme === \"system\" ? determineThemeFromMediaQuery({ prefersDarkMode, prefersHighContrast }) : theme;\n\thtmlElement.classList.add(newTheme);\n\thtmlElement.dataset.appliedTheme = newTheme;\n\thtmlElement.dataset.theme = theme;\n}\n\n/**\n * determineThemeFromMediaQuery returns the theme that should be used based on the user's media query preferences.\n * @private\n */\nexport function determineThemeFromMediaQuery({\n\tprefersDarkMode,\n\tprefersHighContrast,\n}: {\n\tprefersDarkMode: boolean;\n\tprefersHighContrast: boolean;\n}) {\n\tif (prefersHighContrast) {\n\t\treturn prefersDarkMode ? \"dark-high-contrast\" : \"light-high-contrast\";\n\t}\n\n\treturn prefersDarkMode ? \"dark\" : \"light\";\n}\n\n/**\n * PreventWrongThemeFlash is a React component that prevents the wrong theme from flashing on initial page load.\n * Render as high as possible in the DOM, preferably in the <head> element.\n */\nconst PreventWrongThemeFlash = ({\n\tdefaultTheme = \"system\",\n\tstorageKey = DEFAULT_STORAGE_KEY,\n}: {\n\tdefaultTheme?: Theme;\n\tstorageKey?: string;\n}) => (\n\t<script\n\t\tdangerouslySetInnerHTML={{\n\t\t\t__html: `\n(function() {\n\tconst themes = ${JSON.stringify(themes)};\n\tconst isTheme = (value) => typeof value === \"string\" && themes.includes(value);\n\tconst fallbackTheme = \"${defaultTheme}\" ?? \"system\";\n\tconst maybeStoredTheme = window.localStorage.getItem(\"${storageKey}\");\n\tconst hasStoredTheme = isTheme(maybeStoredTheme);\n\tif (!hasStoredTheme) {\n\t\twindow.localStorage.setItem(\"${storageKey}\", fallbackTheme);\n\t}\n\tconst themePreference = hasStoredTheme ? maybeStoredTheme : fallbackTheme;\n\tconst prefersDarkMode = window.matchMedia(\"${prefersDarkModeMediaQuery}\").matches;\n\tconst prefersHighContrast = window.matchMedia(\"${prefersHighContrastMediaQuery}\").matches;\n\tlet initialTheme = themePreference;\n\tif (initialTheme === \"system\") {\n\t\tif (prefersHighContrast) {\n\t\t\tinitialTheme = prefersDarkMode ? \"dark-high-contrast\" : \"light-high-contrast\";\n\t\t} else {\n\t\t\tinitialTheme = prefersDarkMode ? \"dark\" : \"light\";\n\t\t}\n\t}\n\tconst htmlElement = document.documentElement;\n\thtmlElement.classList.remove(...themes);\n\thtmlElement.classList.add(initialTheme);\n\thtmlElement.dataset.appliedTheme = initialTheme;\n\thtmlElement.dataset.theme = themePreference;\n})();\n`.trim(),\n\t\t}}\n\t/>\n);\n\nexport type { Theme, ThemeProviderProps };\nexport { isTheme, PreventWrongThemeFlash, ThemeProvider, theme, useTheme };\n","import { Content, Provider, Root, Trigger } from \"@radix-ui/react-tooltip\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst TooltipProvider = Provider;\n\nconst Tooltip = Root;\n\nconst TooltipTrigger = Trigger;\n\nconst TooltipContent = forwardRef<ElementRef<typeof Content>, ComponentPropsWithoutRef<typeof Content>>(\n\t({ className, sideOffset = 4, ...props }, ref) => (\n\t\t<Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cx(\n\t\t\t\t\"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTooltipContent.displayName = Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","type Primitive = string | number | boolean | undefined | null;\n\n/**\n * Tagged template literal to format code blocks and normalize leading indentation\n */\nexport function code(strings: TemplateStringsArray, ...values: Primitive[]): string {\n\tif (!isTemplateStringsArray(strings) || !Array.isArray(values)) {\n\t\tthrow new Error(\n\t\t\t\"It looks like you tried to call `code` as a function. Make sure to use it as a tagged template.\\n\\tExample: code`SELECT * FROM users`, not code('SELECT * FROM users')\",\n\t\t);\n\t}\n\n\tconst text = String.raw({ raw: strings }, ...values);\n\n\t// fine the minimum indentation of the code block\n\tconst minIndent = findMinIndent(text);\n\tconst lines = text.trim().split(\"\\n\");\n\n\treturn lines\n\t\t.map((line) => {\n\t\t\t// remove nothing if the line doesn't start with indentation\n\t\t\tif (/^\\S+/.test(line)) {\n\t\t\t\treturn line;\n\t\t\t}\n\t\t\treturn line.slice(minIndent);\n\t\t})\n\t\t.join(\"\\n\");\n\t// replace all tabs with 2 spaces\n\t// .replace(/\\t/g, \" \")\n}\n\n/**\n * Find the shortest indentation of a multiline string\n */\nfunction findMinIndent(value: string): number {\n\tconst match = value.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((acc, curr) => Math.min(acc, curr.length), Infinity);\n}\n\n/**\n * Type guard to check if a value is a `TemplateStringsArray`\n */\nfunction isTemplateStringsArray(strings: unknown): strings is TemplateStringsArray {\n\treturn Array.isArray(strings) && \"raw\" in strings && Array.isArray(strings.raw);\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["components/index.tsx","components/anchor/index.tsx","components/cx/index.ts","components/button/index.tsx","components/card/index.tsx","components/code-block/index.tsx","components/code-block/supported-languages.ts","components/drawer/index.tsx","components/inline-code/index.tsx","components/input/index.tsx","components/media-object/index.tsx","components/popover/index.tsx","components/select/index.tsx","components/skeleton/index.tsx","components/table/index.tsx","components/theme-provider/index.tsx","components/tooltip/index.tsx","components/code-block/code.ts","components/code-block/parse-metastring.ts"],"sourcesContent":["// component exports\nexport { Anchor, anchorClassNames } from \"./anchor\";\nexport { Button } from \"./button\";\nexport { Card, CardBody, CardFooter, CardHeader, CardTitle } from \"./card\";\nexport {\n\tCodeBlock,\n\tCodeBlockBody,\n\tCodeBlockCode,\n\tCodeBlockCopyButton,\n\tCodeBlockExpanderButton,\n\tCodeBlockHeader,\n\tCodeBlockTitle,\n} from \"./code-block\";\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n} from \"./drawer\";\nexport { InlineCode } from \"./inline-code\";\nexport { Input } from \"./input\";\nexport { MediaObject, MediaObjectMedia, MediaObjectContent } from \"./media-object\";\nexport { Popover, PopoverTrigger, PopoverContent } from \"./popover\";\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n} from \"./select\";\nexport { Skeleton } from \"./skeleton\";\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from \"./table\";\nexport { PreventWrongThemeFlash, ThemeProvider } from \"./theme-provider\";\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from \"./tooltip\";\n\n// utils exports\nexport { code } from \"./code-block/code\";\nexport { parseMetastring } from \"./code-block/parse-metastring\";\nexport { isSupportedLanguage, parseLanguage } from \"./code-block/supported-languages\";\nexport { cx } from \"./cx\";\nexport { isTheme, theme, useTheme } from \"./theme-provider\";\n\n// types exports\nexport type { ButtonProps } from \"./button\";\nexport type { CardProps, CardTitleProps } from \"./card\";\nexport type { InputProps } from \"./input\";\nexport type { AutoComplete, InputType } from \"./input/types\";\nexport type { Theme, ThemeProviderProps } from \"./theme-provider\";\nexport type { WithAsChild } from \"./types/as-child\";\nexport type { WithStyleProps } from \"./types/with-style-props\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { AnchorHTMLAttributes, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport { WithAsChild } from \"../types/as-child\";\n\nconst anchorClassNames = (className: string | undefined) =>\n\tcx(\n\t\t\"text-blue-600 focus-visible:ring-blue-600/25 cursor-pointer rounded bg-transparent focus:outline-none focus-visible:ring hover:underline visited:text-blue-800\",\n\t\tclassName,\n\t);\n\ntype AnchorProps = AnchorHTMLAttributes<HTMLAnchorElement> & WithAsChild;\n\n/**\n * Fundamental component for rendering links to external addresses.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n *\n * @note If you need to link to an internal application route, prefer using the\n * [`react-router-dom` `<Link>`](https://reactrouter.com/en/main/components/link) or the\n * [`@remix-run/react` `<Link>`](https://remix.run/docs/en/main/components/link).\n */\nconst Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(({ asChild, className, ...props }, ref) => {\n\tconst Component = asChild ? Slot : \"a\";\n\n\treturn <Component className={anchorClassNames(className)} ref={ref} {...props} />;\n});\nAnchor.displayName = \"Anchor\";\n\nexport { Anchor, anchorClassNames };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Conditionally add Tailwind (and other) CSS classes.\n *\n * Allows for tailwind overrides in LTR-specificity-like order of applied classes.\n */\nexport function cx(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef, type ButtonHTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\nimport type { WithAsChild } from \"../types/as-child\";\nimport type { VariantProps } from \"../types/variant-props\";\n\nconst buttonVariants = cva(\n\t\"inline-flex items-center justify-center rounded-md font-medium border focus-visible:outline-none focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\",\n\t{\n\t\tvariants: {\n\t\t\tpriority: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"border-blue-500 text-blue-500 bg-white hover:bg-blue-50 active:bg-blue-100 focus-visible:ring-blue-600/25\",\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-blue-500 text-button hover:bg-blue-600 active:bg-blue-700 focus-visible:ring-blue-600/25 border-transparent\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"bg-blue-50 border-blue-300 text-blue-900 hover:bg-blue-100 active:bg-blue-200 focus-visible:ring-blue-600/25\",\n\t\t\t},\n\t\t\tstate: {\n\t\t\t\tdefault: \"\",\n\t\t\t\tdanger: \"\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-10 px-4 py-2\",\n\t\t\t\tsm: \"h-9 rounded-md px-3 text-sm\",\n\t\t\t\tlg: \"h-12 rounded-md px-6 text-lg\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tpriority: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t\tcompoundVariants: [\n\t\t\t{\n\t\t\t\tpriority: \"default\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"border-red-500 text-red-500 hover:bg-red-50 active:bg-red-100 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tpriority: \"primary\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"bg-red-500 hover:bg-red-600 active:bg-red-700 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tpriority: \"secondary\",\n\t\t\t\tstate: \"danger\",\n\t\t\t\tclass: \"bg-red-50 border-red-200 text-red-900 hover:bg-red-100 active:bg-red-200 focus-visible:ring-red-600/25\",\n\t\t\t},\n\t\t],\n\t},\n);\n\ntype ButtonVariants = VariantProps<typeof buttonVariants>;\n\n/**\n * The props for the `Button` component.\n */\nexport type ButtonProps = WithAsChild & ButtonHTMLAttributes<HTMLButtonElement> & ButtonVariants;\n\n/**\n * Renders a button or a component that looks like a button, an interactive\n * element activated by a user with a mouse, keyboard, finger, voice command, or\n * other assistive technology. Once activated, it then performs an action, such\n * as submitting a form or opening a dialog.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n\t({ className, priority = \"default\", size = \"default\", state = \"default\", asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn <Comp className={cx(buttonVariants({ priority, size, state, className }))} ref={ref} {...props} />;\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport type { WithAsChild } from \"../types/as-child\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * A container that can be used to display content in a box resembling a playing\n * card.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div\n\t\tref={ref}\n\t\tclassName={cx(\"relative rounded-md border border-gray-300 bg-white dark:bg-gray-50\", className)}\n\t\t{...rest}\n\t>\n\t\t{children}\n\t</div>\n));\nCard.displayName = \"Card\";\n\n/**\n * The main content of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardBody = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"p-6\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardBody.displayName = \"CardBody\";\n\n/**\n * The footer container of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"border-t border-gray-300 px-6 py-3\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardFooter.displayName = \"CardFooter\";\n\n/**\n * The header container of a card. Usually composed as a direct child of a `Card` component.\n */\nexport const CardHeader = forwardRef<HTMLDivElement, CardProps>(({ className, children, ...rest }, ref) => (\n\t<div ref={ref} className={cx(\"border-b border-gray-300 px-6 py-3\", className)} {...rest}>\n\t\t{children}\n\t</div>\n));\nCardHeader.displayName = \"CardHeader\";\n\nexport type CardTitleProps = HTMLAttributes<HTMLHeadingElement> & WithAsChild;\n\n/**\n * The title of a card. Usually composed as a direct child of a `CardHeader` component.\n */\nexport const CardTitle = forwardRef<HTMLParagraphElement, CardTitleProps>(({ className, asChild, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"h3\";\n\treturn <Comp ref={ref} className={cx(\"font-semibold leading-none tracking-tight\", className)} {...props} />;\n});\nCardTitle.displayName = \"CardTitle\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport Prism from \"prismjs\";\nimport {\n\tcreateContext,\n\tDispatch,\n\tElementRef,\n\tforwardRef,\n\tHTMLAttributes,\n\tSetStateAction,\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-jsx.js\";\nimport \"prismjs/components/prism-tsx.js\";\nimport { CaretDown } from \"@phosphor-icons/react/CaretDown\";\nimport { Check } from \"@phosphor-icons/react/Check\";\nimport { Copy } from \"@phosphor-icons/react/Copy\";\nimport { useCopyToClipboard } from \"@uidotdev/usehooks\";\nimport assert from \"tiny-invariant\";\nimport { cx } from \"../cx\";\nimport type { WithStyleProps } from \"../types/with-style-props\";\nimport { LineRange } from \"./line-numbers\";\nimport { formatLanguageClassName, type SupportedLanguage } from \"./supported-languages\";\n\n/**\n * TODO(cody):\n * - fix line numbers, maybe try grid instead of :before and flex?\n * - fix line hightlighting\n * - fix line wrapping? horizontal scrolling has problems w/ line highlighting :(\n */\n\ntype CodeBlockContextType = {\n\tcodeId: string | undefined;\n\tcopyText: string;\n\thasCodeExpander: boolean;\n\tisCodeExpanded: boolean;\n\tregisterCodeId: (id: string) => void;\n\tsetCopyText: (newCopyText: string) => void;\n\tsetHasCodeExpander: (value: boolean) => void;\n\tsetIsCodeExpanded: Dispatch<SetStateAction<boolean>>;\n\tunregisterCodeId: (id: string) => void;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n\tcodeId: undefined,\n\tcopyText: \"\",\n\thasCodeExpander: false,\n\tisCodeExpanded: false,\n\tregisterCodeId: () => {},\n\tsetCopyText: () => {},\n\tsetHasCodeExpander: () => {},\n\tsetIsCodeExpanded: () => {},\n\tunregisterCodeId: () => {},\n});\n\nconst CodeBlock = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => {\n\tconst [copyText, setCopyText] = useState(\"\");\n\tconst [hasCodeExpander, setHasCodeExpander] = useState(false);\n\tconst [isCodeExpanded, setIsCodeExpanded] = useState(false);\n\tconst [codeId, setCodeId] = useState<string | undefined>(undefined);\n\n\tconst context: CodeBlockContextType = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tcodeId,\n\t\t\t\tcopyText,\n\t\t\t\thasCodeExpander,\n\t\t\t\tisCodeExpanded,\n\t\t\t\tregisterCodeId: (id) => {\n\t\t\t\t\tsetCodeId((old) => {\n\t\t\t\t\t\tassert(old == null, \"You can only render a single CodeBlockCode within a CodeBlock.\");\n\t\t\t\t\t\treturn id;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsetCopyText,\n\t\t\t\tsetHasCodeExpander,\n\t\t\t\tsetIsCodeExpanded,\n\t\t\t\tunregisterCodeId: (id) => {\n\t\t\t\t\tsetCodeId((old) => {\n\t\t\t\t\t\tassert(old === id, \"You can only render a single CodeBlockCode within a CodeBlock.\");\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t}) as const,\n\t\t[codeId, copyText, hasCodeExpander, isCodeExpanded],\n\t);\n\n\treturn (\n\t\t<CodeBlockContext.Provider value={context}>\n\t\t\t<div\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono text-[0.8125rem]\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</CodeBlockContext.Provider>\n\t);\n});\nCodeBlock.displayName = \"CodeBlock\";\n\nconst CodeBlockBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n\t<div className={cx(\"relative\", className)} ref={ref} {...props} />\n));\nCodeBlockBody.displayName = \"CodeBlockBody\";\n\ntype CodeBlockCodeProps = WithStyleProps & {\n\tchildren?: string | undefined;\n\thighlightLines?: (LineRange | number)[];\n\tlanguage?: SupportedLanguage;\n\tshowLineNumbers?: boolean;\n};\n\nconst CodeBlockCode = forwardRef<HTMLPreElement, CodeBlockCodeProps>((props, ref) => {\n\tconst { children, className, language = \"sh\", style } = props;\n\tconst innerPreRef = useRef<ElementRef<\"pre\">>();\n\tconst id = useId();\n\tconst { hasCodeExpander, isCodeExpanded, registerCodeId, setCopyText, unregisterCodeId } =\n\t\tuseContext(CodeBlockContext);\n\n\t// trim any leading and trailing whitespace/empty lines\n\tconst trimmedCode = children?.trim() ?? \"\";\n\n\tuseEffect(() => {\n\t\tconst preElement = innerPreRef.current;\n\t\tif (!preElement) {\n\t\t\treturn;\n\t\t}\n\t\tPrism.highlightElement(preElement);\n\t}, [trimmedCode, children]);\n\n\tuseEffect(() => {\n\t\tsetCopyText(trimmedCode);\n\t}, [trimmedCode, setCopyText]);\n\n\tuseEffect(() => {\n\t\tregisterCodeId(id);\n\n\t\treturn () => {\n\t\t\tunregisterCodeId(id);\n\t\t};\n\t}, [id, registerCodeId, unregisterCodeId]);\n\n\treturn (\n\t\t<pre\n\t\t\taria-expanded={hasCodeExpander ? isCodeExpanded : undefined}\n\t\t\tclassName={cx(\n\t\t\t\tformatLanguageClassName(language),\n\t\t\t\t\"scrollbar overflow-x-auto overflow-y-hidden p-4 pr-[3.375rem] firefox:after:mr-[3.375rem] firefox:after:inline-block firefox:after:content-['']\",\n\t\t\t\t\"aria-[expanded='false']:max-h-[13.6rem]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-lang={language}\n\t\t\tid={id}\n\t\t\tref={(node) => {\n\t\t\t\tinnerPreRef.current = node ?? undefined;\n\t\t\t\treturn ref;\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\ttabSize: 2,\n\t\t\t\tMozTabSize: 2,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t<code>{trimmedCode}</code>\n\t\t</pre>\n\t);\n});\nCodeBlockCode.displayName = \"CodeBlockCode\";\n\nconst CodeBlockHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n\t<div\n\t\tclassName={cx(\"flex items-center gap-1 border-b border-gray-300 bg-gray-100 px-4 py-2 text-gray-700\", className)}\n\t\tref={ref}\n\t\t{...props}\n\t/>\n));\nCodeBlockHeader.displayName = \"CodeBlockHeader\";\n\nconst CodeBlockTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement> & { asChild?: boolean }>(\n\t({ asChild = false, className, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"h3\";\n\t\treturn <Comp ref={ref} className={cx(\"font-mono text-[0.8125rem] font-normal\", className)} {...props} />;\n\t},\n);\nCodeBlockTitle.displayName = \"CodeBlockTitle\";\n\ntype CodeBlockCopyButtonProps = WithStyleProps & {\n\tonCopy?: (value: string) => void;\n\tonCopyError?: (error: unknown) => void;\n};\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n\t({ className, onCopy, onCopyError, style }, ref) => {\n\t\tconst { copyText } = useContext(CodeBlockContext);\n\t\tconst [, copyToClipboard] = useCopyToClipboard();\n\t\tconst [copied, setCopied] = useState(false);\n\n\t\tuseEffect(() => {\n\t\t\tif (copied) {\n\t\t\t\tconst timeoutId = window.setTimeout(() => {\n\t\t\t\t\tsetCopied(false);\n\t\t\t\t}, 2000);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t};\n\t\t\t}\n\t\t}, [copied]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"absolute right-3 top-3 z-10 flex h-7 w-7 items-center justify-center rounded-sm border border-gray-300 bg-gray-50 shadow-[-1rem_0_0.75rem_-0.375rem_hsl(var(--gray-050)),1rem_0_0_-0.25rem_hsl(var(--gray-050))] hover:border-gray-400 hover:bg-gray-200\",\n\t\t\t\t\tcopied &&\n\t\t\t\t\t\t\"gap-1 w-auto border-transparent bg-green-500 focus:bg-green-500 pl-2 pr-1.5 text-button hover:border-transparent hover:bg-green-500\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\tstyle={style}\n\t\t\t\tonClick={async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait copyToClipboard(copyText);\n\t\t\t\t\t\tonCopy?.(copyText);\n\t\t\t\t\t\tsetCopied(true);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tonCopyError?.(error);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Copy code</span>\n\t\t\t\t{copied ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\tCopied\n\t\t\t\t\t\t<Check className=\"w-4 h-4\" weight=\"bold\" />\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<Copy className=\"w-5 h-5 -ml-px\" />\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\nCodeBlockCopyButton.displayName = \"CodeBlockCopyButton\";\n\ntype CodeBlockExpanderButtonProps = Omit<\n\tHTMLAttributes<HTMLButtonElement>,\n\t\"children\" | \"aria-controls\" | \"aria-expanded\"\n>;\n\nconst CodeBlockExpanderButton = forwardRef<HTMLButtonElement, CodeBlockExpanderButtonProps>(\n\t({ className, onClick, ...props }, ref) => {\n\t\tconst { codeId, isCodeExpanded, setIsCodeExpanded, setHasCodeExpander } = useContext(CodeBlockContext);\n\n\t\tuseEffect(() => {\n\t\t\tsetHasCodeExpander(true);\n\n\t\t\treturn () => {\n\t\t\t\tsetHasCodeExpander(false);\n\t\t\t};\n\t\t}, [setHasCodeExpander]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\t{...props}\n\t\t\t\taria-controls={codeId}\n\t\t\t\taria-expanded={isCodeExpanded}\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"bg-gray-050 flex w-full items-center justify-center border-t border-gray-300 px-4 py-2 gap-0.5 font-sans text-gray-700 hover:bg-gray-100\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tsetIsCodeExpanded((prev) => !prev);\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{isCodeExpanded ? \"Show less\" : \"Show more\"}{\" \"}\n\t\t\t\t<CaretDown\n\t\t\t\t\tclassName={cx(\"w-4 h-4\", isCodeExpanded && \"rotate-180\", \"transition-all duration-150\")}\n\t\t\t\t\tweight=\"bold\"\n\t\t\t\t/>\n\t\t\t</button>\n\t\t);\n\t},\n);\nCodeBlockExpanderButton.displayName = \"CodeBlockExpanderButton\";\n\nexport {\n\tCodeBlock,\n\tCodeBlockBody,\n\tCodeBlockCode,\n\tCodeBlockCopyButton,\n\tCodeBlockExpanderButton,\n\tCodeBlockHeader,\n\tCodeBlockTitle,\n};\n","/**\n * List of supported languages for syntax highlighting.\n * @private\n */\nexport const supportedLanguages = [\n\t\"bash\",\n\t\"cs\",\n\t\"csharp\",\n\t\"css\",\n\t\"dotnet\",\n\t\"go\",\n\t\"html\",\n\t\"java\",\n\t\"javascript\",\n\t\"js\",\n\t\"json\",\n\t\"jsx\",\n\t\"py\",\n\t\"python\",\n\t\"rb\",\n\t\"ruby\",\n\t\"rust\",\n\t\"sh\",\n\t\"shell\",\n\t\"ts\",\n\t\"tsx\",\n\t\"typescript\",\n\t\"yaml\",\n\t\"yml\",\n] as const;\n\n/**\n * Supported languages for syntax highlighting.\n */\nexport type SupportedLanguage = (typeof supportedLanguages)[number];\n\n/**\n * Parses a markdown code block (```) language class into a SupportedLanguage.\n * Defaults to \"sh\" if no supported language is found.\n */\nexport function parseLanguage(\n\tvalue: `language-${string}` | `lang-${string}` | (string & {}) | undefined,\n): SupportedLanguage {\n\tif (!value) {\n\t\treturn \"sh\";\n\t}\n\n\t// remove leading \"language-\" and \"lang-\" prefixes\n\t// find first '-' and slice from there\n\tconst maybeLanguage = value.trim().slice(value.indexOf(\"-\") + 1);\n\n\treturn isSupportedLanguage(maybeLanguage) ? maybeLanguage : \"sh\";\n}\n\n/**\n * Type Predicate: checks if an arbitrary value is a supported syntax highlighting language.\n */\nexport const isSupportedLanguage = (value: unknown): value is SupportedLanguage => {\n\treturn typeof value === \"string\" && supportedLanguages.includes(value as SupportedLanguage);\n};\n\n/**\n * A class name for a language that Prism.js can understand.\n */\ntype LanguageClass = `language-${SupportedLanguage}`;\n\n/**\n * Formats a language name into a class name that Prism.js can understand.\n * @default \"language-sh\"\n */\nexport function formatLanguageClassName(language: SupportedLanguage | undefined = \"sh\") {\n\tconst lang = language ?? \"sh\";\n\tconst className: LanguageClass = `language-${lang}`;\n\treturn className;\n}\n","import { X } from \"@phosphor-icons/react/X\";\nimport * as DrawerPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef, HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Drawer = DrawerPrimitive.Root;\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerOverlay = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Overlay>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Overlay\n\t\tclassName={cx(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t\tref={ref}\n\t/>\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst drawerVariants = cva(\n\t\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\ttop: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n\t\t\t\tbottom:\n\t\t\t\t\t\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n\t\t\t\tleft: \"inset-y-0 left-0 h-full w-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n\t\t\t\tright:\n\t\t\t\t\t\"inset-y-0 right-0 h-full w-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"right\",\n\t\t},\n\t},\n);\n\ntype DrawerContentProps = {} & ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> &\n\tVariantProps<typeof drawerVariants>;\n\nconst DrawerContent = forwardRef<ElementRef<typeof DrawerPrimitive.Content>, DrawerContentProps>(\n\t({ side = \"right\", className, children, ...props }, ref) => (\n\t\t<DrawerPortal>\n\t\t\t<DrawerOverlay />\n\t\t\t<DrawerPrimitive.Content ref={ref} className={cx(drawerVariants({ side }), className)} {...props}>\n\t\t\t\t{children}\n\t\t\t\t<DrawerPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n\t\t\t\t\t<X className=\"h-6 w-6\" />\n\t\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t\t</DrawerPrimitive.Close>\n\t\t\t</DrawerPrimitive.Content>\n\t\t</DrawerPortal>\n\t),\n);\nDrawerContent.displayName = DrawerPrimitive.Content.displayName;\n\nconst DrawerHeader = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cx(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cx(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Title>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Title ref={ref} className={cx(\"text-lg font-semibold text-gray-900\", className)} {...props} />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = forwardRef<\n\tElementRef<typeof DrawerPrimitive.Description>,\n\tComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Description ref={ref} className={cx(\"text-sm text-gray-600\", className)} {...props} />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","import { forwardRef, HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\n/**\n * A component to render inline code.\n */\nconst InlineCode = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement>>(({ className, ...props }, ref) => (\n\t<code\n\t\tref={ref}\n\t\tclassName={cx(\"font-mono bg-gray-100 border border-gray-300 text-[0.8em] rounded-md px-1 py-0.5\", className)}\n\t\t{...props}\n\t/>\n));\nInlineCode.displayName = \"InlineCode\";\n\nexport { InlineCode };\n","import { cva } from \"class-variance-authority\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\nimport type { VariantProps } from \"../types/variant-props\";\nimport type { AutoComplete, InputType } from \"./types\";\n\nconst inputVariants = cva(\n\t\"flex h-10 w-full rounded-md border bg-white px-3 py-2 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-4 disabled:cursor-not-allowed disabled:opacity-50\",\n\t{\n\t\tvariants: {\n\t\t\tstate: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"text-gray-900 border-gray-300 placeholder:text-gray-400 focus:border-blue-500 focus-visible:ring-blue-600/25\",\n\t\t\t\tdanger:\n\t\t\t\t\t\"text-red-900 border-red-500 placeholder:text-red-400 focus:border-red-500 focus-visible:ring-red-600/25\",\n\t\t\t\tsuccess:\n\t\t\t\t\t\"text-green-900 border-green-500 placeholder:text-green-400 focus:border-green-500 focus-visible:ring-green-600/25\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tstate: \"default\",\n\t\t},\n\t},\n);\n\ntype InputVariants = VariantProps<typeof inputVariants>;\n\n/**\n * The props for the `Input` component.\n */\nexport type InputProps = InputVariants &\n\tOmit<InputHTMLAttributes<HTMLInputElement>, \"autoComplete\" | \"type\"> & {\n\t\tautoComplete?: AutoComplete;\n\t\ttype?: InputType;\n\t};\n\n/**\n * Used to create interactive controls for web-based forms in order to accept data from the user\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n\t({ className, state = \"default\", type = \"text\", ...props }, ref) => {\n\t\treturn <input className={cx(inputVariants({ state }), className)} ref={ref} type={type} {...props} />;\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\n/**\n * The media object is an image/icon (media) to the left, with descriptive\n * content (title and subtitle/description) to the right.\n *\n * Change the spacing between the media and content by passing a `gap-*` class.\n * The default gap is `gap-4`.\n *\n * Use flexbox utilities to change the alignment of the media and content.\n *\n * Compose the media object with the `MediaObjectMedia` and `MediaObjectContent`\n * components as direct children.\n */\nconst MediaObject = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"flex gap-4\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObject.displayName = \"MediaObject\";\n\n/**\n * The container for an image or icon to display in the media slot of the media object.\n */\nconst MediaObjectMedia = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"shrink-0 leading-none\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObjectMedia.displayName = \"MediaObjectMedia\";\n\n/**\n * The container for the content slot of a media object.\n */\nconst MediaObjectContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, style }, ref) => (\n\t\t<div ref={ref} className={cx(\"min-w-0 flex-1\", className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t),\n);\nMediaObjectContent.displayName = \"MediaObjectContent\";\n\nexport { MediaObject, MediaObjectMedia, MediaObjectContent };\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = forwardRef<\n\tElementRef<typeof PopoverPrimitive.Content>,\n\tComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<PopoverPrimitive.Portal>\n\t\t<PopoverPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cx(\n\t\t\t\t\"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import { CaretDown } from \"@phosphor-icons/react/CaretDown\";\nimport { CaretUp } from \"@phosphor-icons/react/CaretUp\";\nimport { Check } from \"@phosphor-icons/react/Check\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport type { ComponentPropsWithoutRef, ElementRef } from \"react\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = forwardRef<\n\tElementRef<typeof SelectPrimitive.Trigger>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cx(\n\t\t\t\"flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 placeholder:text-gray-300 focus:border-blue-500 focus:outline-none focus:ring-4 focus:ring-blue-600/25 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<SelectPrimitive.Icon asChild>\n\t\t\t<CaretDown className=\"h-4 w-4\" weight=\"bold\" />\n\t\t</SelectPrimitive.Icon>\n\t</SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = forwardRef<\n\tElementRef<typeof SelectPrimitive.ScrollUpButton>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.ScrollUpButton\n\t\tref={ref}\n\t\tclassName={cx(\"flex cursor-default items-center justify-center py-1\", className)}\n\t\t{...props}\n\t>\n\t\t<CaretUp className=\"h-4 w-4\" weight=\"bold\" />\n\t</SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = forwardRef<\n\tElementRef<typeof SelectPrimitive.ScrollDownButton>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.ScrollDownButton\n\t\tref={ref}\n\t\tclassName={cx(\"flex cursor-default items-center justify-center py-1\", className)}\n\t\t{...props}\n\t>\n\t\t<CaretDown className=\"h-4 w-4\" weight=\"bold\" />\n\t</SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = forwardRef<\n\tElementRef<typeof SelectPrimitive.Content>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n\t<SelectPrimitive.Portal>\n\t\t<SelectPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cx(\n\t\t\t\t\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-300 bg-card text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tposition={position}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SelectScrollUpButton />\n\t\t\t<SelectPrimitive.Viewport\n\t\t\t\tclassName={cx(\n\t\t\t\t\t\"p-1\",\n\t\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\t\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</SelectPrimitive.Viewport>\n\t\t\t<SelectScrollDownButton />\n\t\t</SelectPrimitive.Content>\n\t</SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = forwardRef<\n\tElementRef<typeof SelectPrimitive.Label>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Label ref={ref} className={cx(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)} {...props} />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = forwardRef<\n\tElementRef<typeof SelectPrimitive.Item>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cx(\n\t\t\t\"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-blue-600 focus:text-button data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<SelectPrimitive.ItemIndicator>\n\t\t\t\t<Check className=\"h-4 w-4\" weight=\"bold\" />\n\t\t\t</SelectPrimitive.ItemIndicator>\n\t\t</span>\n\n\t\t<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n\t</SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = forwardRef<\n\tElementRef<typeof SelectPrimitive.Separator>,\n\tComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Separator ref={ref} className={cx(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n\tSelect,\n\tSelectGroup,\n\tSelectValue,\n\tSelectTrigger,\n\tSelectContent,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n\tSelectScrollUpButton,\n\tSelectScrollDownButton,\n};\n","import { HTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\ntype Props = Exclude<HTMLAttributes<HTMLDivElement>, \"children\">;\n\nfunction Skeleton({ className, ...props }: Props) {\n\treturn <div className={cx(\"animate-pulse rounded-md bg-gray-200\", className)} {...props} />;\n}\n\nexport { Skeleton };\n","import { forwardRef, HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from \"react\";\nimport { cx } from \"../cx\";\n\nconst Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(({ className, ...props }, ref) => (\n\t<div className=\"relative w-full overflow-auto\">\n\t\t<table ref={ref} className={cx(\"w-full caption-bottom text-sm\", className)} {...props} />\n\t</div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<thead ref={ref} className={cx(\"[&_tr]:border-b bg-background\", className)} {...props} />\n\t),\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tbody ref={ref} className={cx(\"[&_tr:last-child]:border-0\", className)} {...props} />\n\t),\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tfoot\n\t\t\tref={ref}\n\t\t\tclassName={cx(\"border-t border-gray-200 bg-gray-50/50 font-medium [&>tr]:last:border-b-0\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<tr\n\t\t\tref={ref}\n\t\t\tclassName={cx(\"border-b border-gray-200 hover:bg-muted/50 data-[state=selected]:bg-muted\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<th\n\t\t\tref={ref}\n\t\t\tclassName={cx(\n\t\t\t\t\"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<td ref={ref} className={cx(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />\n\t),\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, HTMLAttributes<HTMLTableCaptionElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<caption ref={ref} className={cx(\"py-4 text-sm text-gray-500 border-t border-gray-200\", className)} {...props} />\n\t),\n);\nTableCaption.displayName = \"TableCaption\";\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import type { PropsWithChildren } from \"react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * prefersDarkModeMediaQuery is the media query used to detect if the user prefers dark mode.\n */\nconst prefersDarkModeMediaQuery = \"(prefers-color-scheme: dark)\" as const;\n\n/**\n * prefersHighContrastMediaQuery is the media query used to detect if the user prefers high contrast mode.\n */\nconst prefersHighContrastMediaQuery = \"(prefers-contrast: more)\" as const;\n\n/**\n * themes is a tuple of valid themes.\n */\nconst themes = [\"system\", \"light\", \"dark\", \"light-high-contrast\", \"dark-high-contrast\"] as const;\n\n/**\n * Theme is a string literal type that represents a valid theme.\n */\ntype Theme = (typeof themes)[number];\n\n/**\n * theme is a helper which translates the Theme type into a string literal type.\n */\nconst theme = (value: Theme) => value;\n\n/**\n * Type predicate that checks if a value is a valid theme.\n */\nfunction isTheme(value: unknown): value is Theme {\n\tif (typeof value !== \"string\") {\n\t\treturn false;\n\t}\n\n\treturn themes.includes(value as Theme);\n}\n\n/**\n * DEFAULT_STORAGE_KEY is the default key used to store the theme in localStorage.\n */\nconst DEFAULT_STORAGE_KEY = \"mantle-ui-theme\" as const;\n\n/**\n * ThemeProviderState is the shape of the state returned by the ThemeProviderContext.\n */\ntype ThemeProviderState = [theme: Theme, setTheme: (theme: Theme) => void];\n\n/**\n * Initial state for the ThemeProviderContext.\n */\nconst initialState: ThemeProviderState = [\"system\", () => null];\n\n/**\n * ThemeProviderContext is a React Context that provides the current theme and a function to set the theme.\n */\nconst ThemeProviderContext = createContext<ThemeProviderState>(initialState);\n\n/**\n * isBrowser returns true if the code is running in a browser environment.\n */\nconst isBrowser = () => typeof window !== \"undefined\";\n\n/**\n * Gets the stored theme from localStorage or returns the default theme if no theme is stored.\n */\nfunction getStoredTheme(storageKey: string, defaultTheme: Theme = \"system\") {\n\tconst fallbackTheme = defaultTheme ?? \"system\";\n\tif (isBrowser()) {\n\t\tconst storedTheme = window.localStorage.getItem(storageKey);\n\t\treturn isTheme(storedTheme) ? storedTheme : fallbackTheme;\n\t}\n\treturn fallbackTheme;\n}\n\ntype ThemeProviderProps = PropsWithChildren & {\n\tdefaultTheme?: Theme;\n\tstorageKey?: string;\n};\n\n/**\n * ThemeProvider is a React Context Provider that provides the current theme and a function to set the theme.\n */\nfunction ThemeProvider({ children, defaultTheme = \"system\", storageKey = DEFAULT_STORAGE_KEY }: ThemeProviderProps) {\n\tconst [theme, setTheme] = useState<Theme>(() => {\n\t\tconst initialTheme = getStoredTheme(storageKey, defaultTheme);\n\t\tapplyTheme(initialTheme);\n\t\treturn initialTheme;\n\t});\n\n\tuseEffect(() => {\n\t\tconst storedTheme = getStoredTheme(storageKey, defaultTheme);\n\t\tsetTheme(storedTheme);\n\t\tapplyTheme(storedTheme);\n\t}, [defaultTheme, storageKey]);\n\n\tuseEffect(() => {\n\t\tconst prefersDarkMql = window.matchMedia(prefersDarkModeMediaQuery);\n\t\tconst prefersHighContrastMql = window.matchMedia(prefersHighContrastMediaQuery);\n\n\t\tconst onChange = () => {\n\t\t\tconst storedTheme = getStoredTheme(storageKey, defaultTheme);\n\n\t\t\t// If the stored theme is not \"system\", then the user has explicitly set a theme and we should not\n\t\t\t// automatically change the theme when the user's system preferences change.\n\t\t\tif (storedTheme !== \"system\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapplyTheme(\"system\");\n\t\t};\n\n\t\tprefersDarkMql.addEventListener(\"change\", onChange);\n\t\tprefersHighContrastMql.addEventListener(\"change\", onChange);\n\n\t\treturn () => {\n\t\t\tprefersDarkMql.removeEventListener(\"change\", onChange);\n\t\t\tprefersHighContrastMql.removeEventListener(\"change\", onChange);\n\t\t};\n\t}, [defaultTheme, storageKey]);\n\n\tconst value: ThemeProviderState = useMemo(\n\t\t() => [\n\t\t\ttheme,\n\t\t\t(theme: Theme) => {\n\t\t\t\twindow.localStorage.setItem(storageKey, theme);\n\t\t\t\tsetTheme(theme);\n\t\t\t\tapplyTheme(theme);\n\t\t\t},\n\t\t],\n\t\t[storageKey, theme],\n\t);\n\n\treturn <ThemeProviderContext.Provider value={value}>{children}</ThemeProviderContext.Provider>;\n}\n\n/**\n * useTheme returns the current theme and a function to set the theme.\n *\n * @note This function will throw an error if used outside of a ThemeProvider context tree.\n */\nfunction useTheme() {\n\tconst context = useContext(ThemeProviderContext);\n\n\tinvariant(context, \"useTheme must be used within a ThemeProvider\");\n\n\treturn context;\n}\n\n/**\n * Applies the given theme to the <html> element.\n */\nfunction applyTheme(theme: Theme) {\n\tif (!isBrowser()) {\n\t\treturn;\n\t}\n\n\tconst htmlElement = window.document.documentElement;\n\thtmlElement.classList.remove(...themes);\n\tconst prefersDarkMode = window.matchMedia(prefersDarkModeMediaQuery).matches;\n\tconst prefersHighContrast = window.matchMedia(prefersHighContrastMediaQuery).matches;\n\tconst newTheme = theme === \"system\" ? determineThemeFromMediaQuery({ prefersDarkMode, prefersHighContrast }) : theme;\n\thtmlElement.classList.add(newTheme);\n\thtmlElement.dataset.appliedTheme = newTheme;\n\thtmlElement.dataset.theme = theme;\n}\n\n/**\n * determineThemeFromMediaQuery returns the theme that should be used based on the user's media query preferences.\n * @private\n */\nexport function determineThemeFromMediaQuery({\n\tprefersDarkMode,\n\tprefersHighContrast,\n}: {\n\tprefersDarkMode: boolean;\n\tprefersHighContrast: boolean;\n}) {\n\tif (prefersHighContrast) {\n\t\treturn prefersDarkMode ? \"dark-high-contrast\" : \"light-high-contrast\";\n\t}\n\n\treturn prefersDarkMode ? \"dark\" : \"light\";\n}\n\n/**\n * PreventWrongThemeFlash is a React component that prevents the wrong theme from flashing on initial page load.\n * Render as high as possible in the DOM, preferably in the <head> element.\n */\nconst PreventWrongThemeFlash = ({\n\tdefaultTheme = \"system\",\n\tstorageKey = DEFAULT_STORAGE_KEY,\n}: {\n\tdefaultTheme?: Theme;\n\tstorageKey?: string;\n}) => (\n\t<script\n\t\tdangerouslySetInnerHTML={{\n\t\t\t__html: `\n(function() {\n\tconst themes = ${JSON.stringify(themes)};\n\tconst isTheme = (value) => typeof value === \"string\" && themes.includes(value);\n\tconst fallbackTheme = \"${defaultTheme}\" ?? \"system\";\n\tconst maybeStoredTheme = window.localStorage.getItem(\"${storageKey}\");\n\tconst hasStoredTheme = isTheme(maybeStoredTheme);\n\tif (!hasStoredTheme) {\n\t\twindow.localStorage.setItem(\"${storageKey}\", fallbackTheme);\n\t}\n\tconst themePreference = hasStoredTheme ? maybeStoredTheme : fallbackTheme;\n\tconst prefersDarkMode = window.matchMedia(\"${prefersDarkModeMediaQuery}\").matches;\n\tconst prefersHighContrast = window.matchMedia(\"${prefersHighContrastMediaQuery}\").matches;\n\tlet initialTheme = themePreference;\n\tif (initialTheme === \"system\") {\n\t\tif (prefersHighContrast) {\n\t\t\tinitialTheme = prefersDarkMode ? \"dark-high-contrast\" : \"light-high-contrast\";\n\t\t} else {\n\t\t\tinitialTheme = prefersDarkMode ? \"dark\" : \"light\";\n\t\t}\n\t}\n\tconst htmlElement = document.documentElement;\n\thtmlElement.classList.remove(...themes);\n\thtmlElement.classList.add(initialTheme);\n\thtmlElement.dataset.appliedTheme = initialTheme;\n\thtmlElement.dataset.theme = themePreference;\n})();\n`.trim(),\n\t\t}}\n\t/>\n);\n\nexport type { Theme, ThemeProviderProps };\nexport { isTheme, PreventWrongThemeFlash, ThemeProvider, theme, useTheme };\n","import { Content, Provider, Root, Trigger } from \"@radix-ui/react-tooltip\";\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from \"react\";\nimport { cx } from \"../cx\";\n\nconst TooltipProvider = Provider;\n\nconst Tooltip = Root;\n\nconst TooltipTrigger = Trigger;\n\nconst TooltipContent = forwardRef<ElementRef<typeof Content>, ComponentPropsWithoutRef<typeof Content>>(\n\t({ className, sideOffset = 4, ...props }, ref) => (\n\t\t<Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cx(\n\t\t\t\t\"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nTooltipContent.displayName = Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","type Primitive = string | number | boolean | undefined | null;\n\n/**\n * Tagged template literal to format code blocks and normalize leading indentation\n */\nexport function code(strings: TemplateStringsArray, ...values: Primitive[]): string {\n\tif (!isTemplateStringsArray(strings) || !Array.isArray(values)) {\n\t\tthrow new Error(\n\t\t\t\"It looks like you tried to call `code` as a function. Make sure to use it as a tagged template.\\n\\tExample: code`SELECT * FROM users`, not code('SELECT * FROM users')\",\n\t\t);\n\t}\n\n\tconst text = String.raw({ raw: strings }, ...values);\n\n\t// fine the minimum indentation of the code block\n\tconst minIndent = findMinIndent(text);\n\tconst lines = text.trim().split(\"\\n\");\n\n\treturn lines\n\t\t.map((line) => {\n\t\t\t// remove nothing if the line doesn't start with indentation\n\t\t\tif (/^\\S+/.test(line)) {\n\t\t\t\treturn line;\n\t\t\t}\n\t\t\treturn line.slice(minIndent);\n\t\t})\n\t\t.join(\"\\n\");\n\t// replace all tabs with 2 spaces\n\t// .replace(/\\t/g, \" \")\n}\n\n/**\n * Find the shortest indentation of a multiline string\n */\nfunction findMinIndent(value: string): number {\n\tconst match = value.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((acc, curr) => Math.min(acc, curr.length), Infinity);\n}\n\n/**\n * Type guard to check if a value is a `TemplateStringsArray`\n */\nfunction isTemplateStringsArray(strings: unknown): strings is TemplateStringsArray {\n\treturn Array.isArray(strings) && \"raw\" in strings && Array.isArray(strings.raw);\n}\n","import { z } from \"zod\";\n\nconst modes = [\"file\", \"cli\"] as const;\nexport type Mode = (typeof modes)[number];\n\nconst metaSchema = z.object({\n\tcollapsible: z.boolean().default(false),\n\tdisableCopy: z.boolean().default(false),\n\tmode: z.enum(modes).optional(),\n\ttitle: z.string().trim().optional(),\n});\n\nexport type MetaInput = z.input<typeof metaSchema>;\n\nexport type Meta = z.infer<typeof metaSchema>;\n\nexport const defaultMeta = {\n\tcollapsible: false,\n\tdisableCopy: false,\n\tmode: undefined,\n\ttitle: undefined,\n} as const satisfies Meta;\n\nexport type DefaultMeta = typeof defaultMeta;\n\n/**\n * Parses a markdown code block (```) metastring into a meta object.\n * Defaults to DefaultMeta if no metastring given or if metastring is invalid.\n * Useful for parsing the metastring from a markdown code block to pass into the\n * CodeBlock components as props.\n */\nexport function parseMetastring(value: string | undefined): Meta {\n\tconst metastring = value?.trim() ?? \"\";\n\tif (!metastring) {\n\t\treturn defaultMeta;\n\t}\n\n\tconst metaJson = tokenizeMetastring(metastring).reduce<Record<string, unknown>>((acc, token) => {\n\t\tconst [key, _value] = token.split(\"=\");\n\t\tif (!key) {\n\t\t\treturn acc;\n\t\t}\n\t\tconst value = normalizeValue(_value);\n\t\tacc[key] = value ?? true;\n\t\treturn acc;\n\t}, {});\n\n\ttry {\n\t\tconst parsed = metaSchema.parse(metaJson);\n\n\t\t// return the parsed meta object, with default values filled in\n\t\treturn {\n\t\t\t...defaultMeta,\n\t\t\t...parsed,\n\t\t};\n\t} catch (_) {\n\t\treturn defaultMeta;\n\t}\n}\n\n/**\n * Remove leading and trailing `\"` quotes around value\n * @private\n */\nexport function normalizeValue(value: string | undefined) {\n\treturn value?.trim().replace(/^\"(.*)\"$/, \"$1\");\n}\n\n/**\n * Splits a metastring into an array of tokens that can be parsed into a meta object.\n * Should allow for quotes and spaces in tokens\n * @private\n */\nexport function tokenizeMetastring(value: string | undefined): string[] {\n\tconst input = value?.trim() ?? \"\";\n\tconst result: string[] = [];\n\n\tlet currentString = \"\";\n\tlet inQuotes = false;\n\n\tfor (const char of input) {\n\t\tif (char === \" \" && !inQuotes) {\n\t\t\tif (currentString) {\n\t\t\t\tresult.push(currentString);\n\t\t\t\tcurrentString = \"\";\n\t\t\t}\n\t\t} else if (char === '\"') {\n\t\t\tinQuotes = !inQuotes;\n\t\t\tcurrentString += char;\n\t\t} else {\n\t\t\tcurrentString += char;\n\t\t}\n\t}\n\n\tif (currentString) {\n\t\tresult.push(currentString);\n\t}\n\n\treturn result;\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "mantle is ngrok's UI library and design system.",
|
|
4
4
|
"author": "ngrok",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "0.0.
|
|
6
|
+
"version": "0.0.5",
|
|
7
7
|
"homepage": "https://mantle.ngrok.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"node": ">=20.0.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
+
"@phosphor-icons/react": "^2.0.15",
|
|
31
32
|
"@radix-ui/react-dialog": "1.0.5",
|
|
32
33
|
"@radix-ui/react-dropdown-menu": "2.0.6",
|
|
33
|
-
"@radix-ui/react-icons": "1.3.0",
|
|
34
34
|
"@radix-ui/react-popover": "1.0.7",
|
|
35
35
|
"@radix-ui/react-select": "2.0.0",
|
|
36
36
|
"@radix-ui/react-slot": "1.0.2",
|
|
@@ -44,7 +44,6 @@
|
|
|
44
44
|
"class-variance-authority": "0.7.0",
|
|
45
45
|
"clsx": "2.0.0",
|
|
46
46
|
"isbot": "3.7.1",
|
|
47
|
-
"lucide-react": "0.294.0",
|
|
48
47
|
"prismjs": "1.29.0",
|
|
49
48
|
"tailwind-merge": "2.1.0",
|
|
50
49
|
"tiny-invariant": "1.3.1"
|
|
@@ -71,45 +70,47 @@
|
|
|
71
70
|
"@types/lodash.camelcase": "4.3.9",
|
|
72
71
|
"@types/node": "20.10.3",
|
|
73
72
|
"@types/prismjs": "1.26.3",
|
|
74
|
-
"@types/react": "18.2.
|
|
73
|
+
"@types/react": "18.2.42",
|
|
75
74
|
"@types/react-dom": "18.2.17",
|
|
76
75
|
"@typescript-eslint/eslint-plugin": "6.13.2",
|
|
77
76
|
"@typescript-eslint/parser": "6.13.2",
|
|
78
77
|
"@vitejs/plugin-react-swc": "3.5.0",
|
|
79
|
-
"@vitest/ui": "1.0.
|
|
78
|
+
"@vitest/ui": "1.0.1",
|
|
80
79
|
"autoprefixer": "10.4.16",
|
|
81
80
|
"browserslist": "4.22.2",
|
|
82
81
|
"commander": "11.1.0",
|
|
83
82
|
"copyfiles": "2.4.1",
|
|
83
|
+
"eslint": "8.55.0",
|
|
84
84
|
"eslint-config-prettier": "9.1.0",
|
|
85
|
-
"eslint-plugin-react-hooks": "4.6.0",
|
|
86
85
|
"eslint-plugin-react": "7.33.2",
|
|
86
|
+
"eslint-plugin-react-hooks": "4.6.0",
|
|
87
87
|
"eslint-plugin-storybook": "0.6.15",
|
|
88
|
-
"eslint": "8.55.0",
|
|
89
88
|
"fast-glob": "3.3.2",
|
|
90
89
|
"jsdom": "22.1.0",
|
|
91
90
|
"lodash.camelcase": "4.3.0",
|
|
92
91
|
"parcel": "2.10.3",
|
|
93
92
|
"postcss": "8.4.32",
|
|
94
|
-
"prettier-plugin-tailwindcss": "0.5.7",
|
|
95
93
|
"prettier": "3.1.0",
|
|
96
|
-
"
|
|
94
|
+
"prettier-plugin-tailwindcss": "0.5.9",
|
|
97
95
|
"react": "18.2.0",
|
|
96
|
+
"react-dom": "18.2.0",
|
|
98
97
|
"storybook": "7.6.3",
|
|
98
|
+
"tailwindcss": "3.3.6",
|
|
99
99
|
"tailwindcss-animate": "1.0.7",
|
|
100
|
-
"tailwindcss": "3.3.5",
|
|
101
100
|
"tsx": "4.6.2",
|
|
102
101
|
"typescript": "5.3.2",
|
|
103
|
-
"vite-tsconfig-paths": "4.2.1",
|
|
104
102
|
"vite": "5.0.5",
|
|
105
|
-
"
|
|
106
|
-
"vitest
|
|
103
|
+
"vite-tsconfig-paths": "4.2.1",
|
|
104
|
+
"vitest": "1.0.1",
|
|
105
|
+
"vitest-dom": "0.1.1",
|
|
106
|
+
"zod": "3.22.4"
|
|
107
107
|
},
|
|
108
108
|
"peerDependencies": {
|
|
109
109
|
"@types/react": "^18",
|
|
110
110
|
"@types/react-dom": "^18",
|
|
111
111
|
"react": "^18",
|
|
112
|
-
"react-dom": "^18"
|
|
112
|
+
"react-dom": "^18",
|
|
113
|
+
"zod": "^3.22.4"
|
|
113
114
|
},
|
|
114
115
|
"scripts": {
|
|
115
116
|
"build-storybook": "pnpm run cmd:storybook build",
|