diff --git a/apps/docs/app/globals.css b/apps/docs/app/globals.css index 93f4f8360..7c3783247 100644 --- a/apps/docs/app/globals.css +++ b/apps/docs/app/globals.css @@ -2,19 +2,19 @@ @import url("./rehype.css"); @font-face { - font-family: "ABC Favorit Mono"; - font-style: normal; - font-weight: 400; - src: url("https://cdn.platform.workleap.com/hopper/fonts/abc-favorit/mono/alternative/ABCFavoritMono-Regular.woff2") format("woff2-variations"); - font-display: fallback; + font-family: "ABC Favorit Mono"; + font-style: normal; + font-weight: 400; + src: url("https://cdn.platform.workleap.com/hopper/fonts/abc-favorit/mono/alternative/ABCFavoritMono-Regular.woff2") format("woff2-variations"); + font-display: fallback; } @font-face { - font-family: "ABC Favorit"; - font-style: normal; - font-weight: 100 900; - src: url("https://cdn.platform.workleap.com/hopper/fonts/abc-favorit/alternative/ABCFavoritVariable.woff2") format("woff2-variations"); - font-display: fallback; + font-family: "ABC Favorit"; + font-style: normal; + font-weight: 100 900; + src: url("https://cdn.platform.workleap.com/hopper/fonts/abc-favorit/alternative/ABCFavoritVariable.woff2") format("woff2-variations"); + font-display: fallback; } * { diff --git a/apps/docs/app/lib/capitalize.ts b/apps/docs/app/lib/capitalize.ts new file mode 100644 index 000000000..fdcc1242c --- /dev/null +++ b/apps/docs/app/lib/capitalize.ts @@ -0,0 +1,3 @@ +export const capitalize = (str: string): string => { + return str.charAt(0).toUpperCase() + str.slice(1); +}; diff --git a/apps/docs/app/lib/formatingCode.ts b/apps/docs/app/lib/formatingCode.ts new file mode 100644 index 000000000..8cc5b9a94 --- /dev/null +++ b/apps/docs/app/lib/formatingCode.ts @@ -0,0 +1,9 @@ +import { highlightCode } from "@/components/highlightCode"; + +export async function formatCode(code: string, language: string) { + return await highlightCode(` +\`\`\`${language} +${code} +\`\`\` +`); +} diff --git a/apps/docs/app/lib/gePropsType.ts b/apps/docs/app/lib/gePropsType.ts new file mode 100644 index 000000000..f61662d7a --- /dev/null +++ b/apps/docs/app/lib/gePropsType.ts @@ -0,0 +1,20 @@ +export interface PropItemTypeValue { + name: string; + value?: Array<{ value: string; name: string }>; + raw?: string; +} + +export function getType(type: PropItemTypeValue) { + const handler: { + [key: string]: (type: PropItemTypeValue) => string; + } = { + enum: t => + t.value ? t.value.map(item => item.value.replace(/'/g, "")).join(" \\| ") : "", + union: t => t.value ? t.value.map(item => item.name).join(" \\| ") : "" + }; + if (typeof handler[type.name] === "function") { + return handler[type.name](type).replace(/\|/g, ""); + } + + return type.name; +} diff --git a/apps/docs/app/lib/generateUniqueKey.ts b/apps/docs/app/lib/generateUniqueKey.ts new file mode 100644 index 000000000..8b1cd459c --- /dev/null +++ b/apps/docs/app/lib/generateUniqueKey.ts @@ -0,0 +1,3 @@ +export function generateUniqueKey() { + return `${Date.now()}-${Math.random()}`; +} diff --git a/apps/docs/app/lib/getComponentProps.ts b/apps/docs/app/lib/getComponentProps.ts new file mode 100644 index 000000000..debd426f3 --- /dev/null +++ b/apps/docs/app/lib/getComponentProps.ts @@ -0,0 +1,47 @@ +import { promises as fs } from "fs"; +import path from "path"; +import type { ComponentDocWithGroups } from "@/scripts/generateComponentData.mjs"; +import type { PropItem } from "react-docgen-typescript/lib/parser"; +import { getType } from "@/app/lib/gePropsType.ts"; +import { formatCode } from "@/app/lib/formatingCode.ts"; +import { generateUniqueKey } from "@/app/lib/generateUniqueKey.ts"; + +const filePath = path.join(process.cwd(), "datas", "components"); + +export const formatData = async (prop: PropItem) => { + const { name, type, defaultValue, description } = prop; + const formatType = getType(type); + const code = await formatCode(formatType, "tsx"); + const formatedDescription = description.replace(/
/g, ""); + + return ({ + id: generateUniqueKey(), + name, + type: code, + defaultValue: defaultValue ? defaultValue.value : "", + description: formatedDescription + }); +}; + +async function formatPropTable(data: ComponentDocWithGroups[]) { + const result = []; + for (const item of data) { + const { groups } = item; + for (const group of Object.keys(groups)) { + const groupItems = await Promise.all(Object.keys(groups[group]).map(key => formatData(groups[group][key]))); + result.push({ [group]: groupItems }); + } + } + + return result; +} + +export async function getComponentProps(component: string) { + const file = await fs.readFile(filePath + `/${component}.json`, "utf8"); + const data = JSON.parse(file); + const [item] = data; + + const groups = await formatPropTable(data); + + return ({ description: item.description, groups }); +} diff --git a/apps/docs/app/lib/rehypeConfig.js b/apps/docs/app/lib/rehypeConfig.js index bea95eef8..cf9d7587a 100644 --- a/apps/docs/app/lib/rehypeConfig.js +++ b/apps/docs/app/lib/rehypeConfig.js @@ -4,7 +4,10 @@ import rehypePrettyCode from "rehype-pretty-code"; /** @type {import('rehype-pretty-code').Options } */ export const rehypeOptions = { // Use one of Shiki's packaged themes - theme: "nord", + theme: { + light: "one-dark-pro", + dark: "one-dark-pro" + }, keepBackground: false, onVisitLine(node) { // Prevent lines from collapsing in `display: grid` mode, and diff --git a/apps/docs/app/rehype.css b/apps/docs/app/rehype.css index 501109793..64a30f397 100644 --- a/apps/docs/app/rehype.css +++ b/apps/docs/app/rehype.css @@ -4,27 +4,40 @@ --hd-codeblock-border-radius: 0.5rem; --hd-codeblock-border-size: 0.125rem; --hd-codeblock-padding: var(--hd-space-2); -} - -[data-rehype-pretty-code-figure] { - /* NORD */ - --hd-codeblock-line-highlighted-border-color: #88C0D0; + --hd-codeblock-line-line-number-color: var(--hd-neutral-400); --hd-codeblock-line-highlighted-background-color: #434C5E; - --hd-codeblock-line-line-number-color: #4C566A; - --hd-codeblock-line-line-number-color-highlight: #D8DEE9; + --hd-codeblock-line-highlighted-border-color: #88C0D0; --hd-codeblock-word-selection-background-color: #4B586A; - --hd-codeblock-word-setter-background-color: #D0877080; - --hd-codeblock-word-setter-text-color: rgb(232 228 228); - --hd-codeblock-word-initial-value-background-color: #B48EAD80; - --hd-codeblock-word-initial-value-text-color: rgb(233 217 229); - --hd-codeblock-word-value-background-color: #BF616A80; - --hd-codeblock-word-value-text-color: rgb(239 194 198); - --hd-codeblock-title-background-color: rgb(59 66 82); - --hd-codeblock-title-text-color: rgb(216 222 233); + --hd-codeblock-word-color: #AF168D; +} + +code[data-theme*=' '], +code[data-theme*=' '] span { + color: var(--shiki-light); +} + +[data-theme="dark"] { + code[data-theme*=' '], + code[data-theme*=' '] span { + color: var(--shiki-dark, var(--hd-color-neutral-text)); + } +} + +[style*="--shiki-light: #98C379"] { + --shiki-light: var(--hd-color-primary-text) !important +} + +[style*="--shiki-light: #E06C75"], +[style*="--shiki-light: #C678DD"] { + --shiki-light: var(--hd-codeblock-word-color) !important } -[data-rehype-pretty-code-figure] *::selection { - background: rgb(67 76 94 / 80%); +[style*="--shiki-light: #56B6C2"] { + --shiki-light: var(--hd-neutral-700) !important +} + +[style*="--shiki-light: #E5C07B"] { + --shiki-light: var(--hd-color-accent-text) !important } [data-rehype-pretty-code-figure] pre { @@ -71,17 +84,12 @@ color: var(--hd-codeblock-line-line-number-color); } -/* LINE NUMBERS HIGHLIGHT - NUMBER COLOR */ -[data-rehype-pretty-code-figure] code[data-line-numbers] > [data-line].highlighted::before { - color: var(--hd-codeblock-line-line-number-color-highlight); -} - -/* Block Title */ +/* !* Block Title *! */ [data-rehype-pretty-code-title] { display: none; } -/* Block Caption */ +/* !* Block Caption *! */ [data-rehype-pretty-code-caption] { margin-top: var(--hd-space-1); color: var(--hd-color-primary-text); @@ -89,28 +97,3 @@ font-style: italic; font-size: .875rem; } - -/* Custom Word ID */ -[data-rehype-pretty-code-figure] [data-word-id] { - padding: var(--hd-space-05); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #000000), var(--tw-ring-shadow, 0 0 #000000), var(--tw-shadow); -} - -/* v for value */ -[data-rehype-pretty-code-figure] [data-word-id="v"] { - background-color: var(--hd-codeblock-word-value-background-color); - color: var(--hd-codeblock-word-value-text-color); -} - -/* s for setter */ -[data-rehype-pretty-code-figure] [data-word-id="s"] { - background-color: var(--hd-codeblock-word-setter-background-color); - color: var(--hd-codeblock-word-setter-text-color); -} - -/* i for initial value */ -[data-rehype-pretty-code-figure] [data-word-id="i"] { - background-color: var(--hd-codeblock-word-initial-value-background-color); - color: var(--hd-codeblock-word-initial-value-text-color); - font-weight: 700; -} diff --git a/apps/docs/app/ui/components/heading/heading.css b/apps/docs/app/ui/components/heading/heading.css index db38e7638..d5aeff918 100644 --- a/apps/docs/app/ui/components/heading/heading.css +++ b/apps/docs/app/ui/components/heading/heading.css @@ -9,6 +9,5 @@ } .hd-heading__links { - display: flex; - gap: var(--hd-space-1); + margin-inline: calc(var(--hd-space-1) * -1); } diff --git a/apps/docs/app/ui/components/linkList/LinkList.tsx b/apps/docs/app/ui/components/linkList/LinkList.tsx index 469107ece..c002fd0e6 100644 --- a/apps/docs/app/ui/components/linkList/LinkList.tsx +++ b/apps/docs/app/ui/components/linkList/LinkList.tsx @@ -1,8 +1,11 @@ "use client"; + import clsx from "clsx"; import Button from "@/components/button/Button.tsx"; import { Icon, GithubIcon, NpmIcon, ExternalLinkIcon, type IconProps } from "@/components/icon"; +import "./linkList.css"; + export interface Links { name: string; src: string; diff --git a/apps/docs/app/ui/components/linkList/linkList.css b/apps/docs/app/ui/components/linkList/linkList.css new file mode 100644 index 000000000..91be8759c --- /dev/null +++ b/apps/docs/app/ui/components/linkList/linkList.css @@ -0,0 +1,13 @@ +.hd-link-list { + --hd-link-list-direction: column; + + display: flex; + flex-direction: var(--hd-link-list-direction); + align-items: flex-start; + gap: var(--hd-space-1); + + @media screen and (width >= 37.5rem) { + --hd-link-list-direction: row; + } +} + diff --git a/apps/docs/app/ui/components/previewComponent/previewComponent.css b/apps/docs/app/ui/components/previewComponent/previewComponent.css index 73b5c28b8..cf503e21c 100644 --- a/apps/docs/app/ui/components/previewComponent/previewComponent.css +++ b/apps/docs/app/ui/components/previewComponent/previewComponent.css @@ -35,6 +35,7 @@ --hd-color-neutral-icon: var(--hd-neutral-900); } + [data-theme="dark"] .hd-component-wrapper--light .hd-component-wrapper__action:hover { --hd-color-neutral-icon: var(--hd-neutral-0); } @@ -47,6 +48,7 @@ --hd-color-neutral-icon: var(--hd-neutral-0); } +[data-theme="dark"] .hd-component-wrapper--light .hd-preview-component__content, .hd-component-wrapper--light .hd-preview-component__content { --background: var(--hd-white); --color: var(--hd-neutral-50); diff --git a/apps/docs/app/ui/components/propTable/PropTable.tsx b/apps/docs/app/ui/components/propTable/PropTable.tsx index ae885064a..467fcc270 100644 --- a/apps/docs/app/ui/components/propTable/PropTable.tsx +++ b/apps/docs/app/ui/components/propTable/PropTable.tsx @@ -1,93 +1,78 @@ -import { promises as fs } from "fs"; -import path from "path"; -import type { PropItem } from "react-docgen-typescript/lib/parser"; -import type { ComponentDocWithGroups } from "@/scripts/generateComponentData.mjs"; +import { MDXRemote } from "next-mdx-remote/rsc"; +import { getComponentProps } from "@/app/lib/getComponentProps.ts"; +import { capitalize } from "@/app/lib/capitalize.ts"; + import Collapsible from "@/components/collapsible/Collapsible.tsx"; import Title from "@/components/title/Title.tsx"; +import Code from "@/components/code/Code.tsx"; +import HighlightCode from "@/components/highlightCode/HighlightCode.tsx"; + +import { PropTableRender } from "./PropTableRender.tsx"; +import type { Item } from "./PropTableRender.tsx"; import "./propTable.css"; + export interface PropTableProps { component: string; } -interface PropItemTypeValue { +interface PropTableItem extends Item { name: string; - value?: Array<{ value: string; name: string }>; - raw?: string; + type: string; + description: string; } -const filePath = path.join(process.cwd(), "datas", "components"); - -const getType = (type: PropItemTypeValue) => { - const handler: { - [key: string]: (type: PropItemTypeValue) => string; - } = { - enum: t => - t.value ? t.value.map(item => item.value.replace(/'/g, "")).join(" \\| ") : "", - union: t => t.value ? t.value.map(item => item.name).join(" \\| ") : "" - }; - if (typeof handler[type.name] === "function") { - return handler[type.name](type).replace(/\|/g, ""); - } +export interface Groups { + [group: string]: PropTableItem[]; +} - return type.name; -}; +const formatGroup = (groups: Groups[]) => { + return groups.map(group => { + const [key] = Object.keys(group); -const renderRow = (key: string, prop: PropItem) => { - const { name, type, defaultValue, required, description } = prop; + return { + [key]: group[key].map(item => { + const description = item.description; - return ( - - {name} - {getType(type)} - {defaultValue?.value} - {required ? "✓" : "✗"} - {description} - - ); + return { + ...item, + name: {item.name}, + type: , + defaultValue: item.defaultValue.replace(/'/g, "\""), + description: + }; + }) + }; + }); }; export default async function PropTable({ component }: PropTableProps) { - const file = await fs.readFile(filePath + `/${component}.json`, "utf8"); - const data = JSON.parse(file); + const { description, groups } = await getComponentProps(component); + const formatedGroups = formatGroup(groups); - return data.map((item: ComponentDocWithGroups) => { - const { description, displayName, groups } = item; + return ( + <> +

{description}

+ {formatedGroups.map(group => { + const [key] = Object.keys(group); - return ( - <> -

{displayName}

-

{description}

- {Object.keys(groups).map(group => { - return ( - - {group} - - } - className="props__section" - > - - - - - - - - - - - - {Object.keys(groups[group]).map(key => renderRow(key, groups[group][key]))} - -
PropertyTypeDefaultRequiredDescription
-
- ); - })} - - ); - }); + return ( + <> + {key === "default" ? + : + + {capitalize(key)} + } + > + + + } + + ); + })} + + ); } diff --git a/apps/docs/app/ui/components/propTable/PropTableRender.tsx b/apps/docs/app/ui/components/propTable/PropTableRender.tsx new file mode 100644 index 000000000..c9ea28b52 --- /dev/null +++ b/apps/docs/app/ui/components/propTable/PropTableRender.tsx @@ -0,0 +1,112 @@ +"use client"; + +import { + flexRender, + getCoreRowModel, + useReactTable, + type ColumnDef +} from "@tanstack/react-table"; +import clsx from "clsx"; + +import type { ReactNode } from "react"; + +export interface Item { + id: string; + name: ReactNode; + type: ReactNode; + defaultValue: string; + description: ReactNode; +} + +const columns: ColumnDef[] = [ + { + id: "name", + accessorKey: "name", + header: () => "Prop", + cell: info => info.getValue() + }, + { + id: "type", + accessorKey: "type", + header: () => "Type", + cell: info => info.getValue() + }, + { + id: "default", + accessorKey: "defaultValue", + header: () => "Default" + + }, + { + id: "description", + accessorKey: "description", + header: () => "Description", + cell: info => info.getValue() + } +]; + +const isColumnAvailable = (columnName: string, items: Item[]) => { + return items.some(item => item[columnName as keyof Item] !== ""); +}; + +export const PropTableRender = ({ items }: { items: Item[] }) => { + const table = useReactTable({ + columns, + state: { + columnVisibility: { + "default": isColumnAvailable("defaultValue", items) + } + }, + data: items, + getCoreRowModel: getCoreRowModel() + }); + + + return ( + + + {table.getHeaderGroups().map(headerGroup => ( + + {headerGroup.headers.map(header => ( + + ))} + + ))} + + + {table.getRowModel().rows.map(row => ( + + {row.getVisibleCells().map(cell => { + let headerValue = ""; + if (typeof cell.column.columnDef.header === "function") { + // TODO find a correct way to get the header value + // @ts-expect-error header needs an argument + headerValue = cell.column.columnDef.header(); + } + + const lastCell = row.getVisibleCells().indexOf(cell) === row.getVisibleCells().length - 1; + const emptyCell = cell.getValue() === "" || cell.getValue() === null || cell.getValue() === undefined; + + return ( + + ); + } + )} + + ))} + +
+ {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} +
+ {emptyCell ? "-" : flexRender(cell.column.columnDef.cell, cell.getContext())} +
+ ); +}; diff --git a/apps/docs/app/ui/components/propTable/propTable.css b/apps/docs/app/ui/components/propTable/propTable.css index 578471498..1f86cfee4 100644 --- a/apps/docs/app/ui/components/propTable/propTable.css +++ b/apps/docs/app/ui/components/propTable/propTable.css @@ -1,7 +1,80 @@ -.props__section { - margin-top: var(--hd-space-1); +.hd-props-table { + --hd-props-table-header-display: none; + --hd-props-table-row-display: block; + --hd-props-table-row-border: var(--hd-border-size) solid var(--hd-color-neutral-border); + --hd-props-table-row-padding: var(--hd-space-2); + --hd-props-table-cell-display: flex; + --hd-props-table-cell-border: none; + --hd-props-table-cell-label-display: inline-block; + --hd-props-table-cell-padding-block: var(--hd-space-1); + --hd-props-table-cell-padding-inline: 0; + --hd-props-table-cell-description-font-size: 0.875rem; + + box-sizing: border-box; + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + + @media screen and (width >= 64rem) { + --hd-props-table-header-display: table-header-group; + --hd-props-table-row-display: table-row; + --hd-props-table-cell-label-display: none; + --hd-props-table-cell-display: table-cell; + --hd-props-table-row-padding: 0; + --hd-props-table-cell-padding-block: var(--hd-space-1); + --hd-props-table-cell-padding-inline: var(--hd-space-1); + --hd-props-table-cell-description-font-size: 0.875rem; + } +} + +.hd-props-table__section { + margin-block: var(--hd-space-05); +} + +.hd-props-table + .hd-props-table__section { + margin-block-start: var(--hd-space-1); } -.props__section .hd-collapsible__content { - margin-top: var(--hd-space-1); +.hd-props-table [data-rehype-pretty-code-figure] { + margin: 0; } + +.hd-props-table__thead { + display: var(--hd-props-table-header-display); +} + +.hd-props-table__tbody { + vertical-align: top; +} + +.hd-props-table__row { + display: var(--hd-props-table-row-display); + border-bottom: var(--hd-props-table-row-border); + padding-block: var(--hd-props-table-row-padding); +} + +.hd-props-table__cell { + display: var(--hd-props-table-cell-display); + flex-flow: row nowrap; + gap: var(--hd-space-1); +} + +[data-column]::before { + display: var(--hd-props-table-cell-label-display); + content: attr(data-column); + flex: 0 0 5rem; + font-family: var(--hd-default-font-family); + font-size: 0.875rem; + font-weight: 700; +} + +.hd-props-table__cell.hd-table__cell { + padding-block: var(--hd-props-table-cell-padding-block); + padding-inline: var(--hd-props-table-cell-padding-inline); + border-bottom: var(--hd-props-table-cell-border); +} + +.hd-props-table__col-description * { + font-size: var(--hd-props-table-cell-description-font-size); +} + diff --git a/apps/docs/components/code/InlineCode.tsx b/apps/docs/components/code/InlineCode.tsx index 12aadc9d8..e539f5e58 100644 --- a/apps/docs/components/code/InlineCode.tsx +++ b/apps/docs/components/code/InlineCode.tsx @@ -1,14 +1,16 @@ import React, { type HTMLAttributes } from "react"; +import clsx from "clsx"; import "./code.css"; export type InlineCodeProps = React.DetailedHTMLProps, HTMLElement> & { children?: React.ReactNode; + variant?: "default" | "ghost"; }; -const InlineCode = ({ children, ...props }: InlineCodeProps) => { +const InlineCode = ({ children, variant = "default", ...props }: InlineCodeProps) => { return ( - {children} + {children} ); }; diff --git a/apps/docs/components/code/code.css b/apps/docs/components/code/code.css index 097b6be31..49328e640 100644 --- a/apps/docs/components/code/code.css +++ b/apps/docs/components/code/code.css @@ -27,3 +27,9 @@ opacity: 1; transform: translateX(var(--hd-space-1)); } + +.hd-code--ghost { + padding-block: 0; + padding-inline: 0; + background-color: transparent; +} diff --git a/apps/docs/components/collapsible/Collapsible.stories.tsx b/apps/docs/components/collapsible/Collapsible.stories.tsx index 5f3d09385..1726255bd 100644 --- a/apps/docs/components/collapsible/Collapsible.stories.tsx +++ b/apps/docs/components/collapsible/Collapsible.stories.tsx @@ -17,3 +17,10 @@ export const Default: Story = { children: "Conent of the collapsible" } }; + +export const Open: Story = { + args: { + ...Default.args, + isOpen: true + } +}; diff --git a/apps/docs/components/collapsible/Collapsible.tsx b/apps/docs/components/collapsible/Collapsible.tsx index 169dc64de..b353f8d48 100644 --- a/apps/docs/components/collapsible/Collapsible.tsx +++ b/apps/docs/components/collapsible/Collapsible.tsx @@ -1,7 +1,7 @@ "use client"; import clsx from "clsx"; -import { type ReactNode, useRef, useState } from "react"; +import { type ReactNode, useEffect, useRef, useState } from "react"; import { ToggleButton } from "react-aria-components"; import { Icon, CollapseIcon } from "@/components/icon"; @@ -19,11 +19,15 @@ const Collapsible = ({ children, title, label, isOpen = false, className }: Coll const [open, setOpen] = useState(isOpen); const contentRef = useRef(null); - let styles = { height: "0px" }; + useEffect(() => { + if (open && contentRef.current) { + contentRef.current.style.height = `${contentRef.current.scrollHeight}px`; + } - if (contentRef.current && open) { - styles = { height: contentRef.current.scrollHeight + "px" }; - } + if (!open && contentRef.current) { + contentRef.current.style.height = "0px"; + } + }, [open]); const toggle = () => { setOpen(!open); @@ -40,7 +44,6 @@ const Collapsible = ({ children, title, label, isOpen = false, className }: Coll
{children}
diff --git a/apps/docs/components/collapsible/collapsible.css b/apps/docs/components/collapsible/collapsible.css index 6d0282a60..b4d703788 100644 --- a/apps/docs/components/collapsible/collapsible.css +++ b/apps/docs/components/collapsible/collapsible.css @@ -7,7 +7,7 @@ line-height: 1.35; color: var(--hd-color-neutral-text); display: flex; - width: 100%; + width: calc(100% + var(--hd-space-2) * 2); justify-content: space-between; align-items: center; padding-block: var(--hd-space-2); diff --git a/apps/docs/components/highlightCode/HighlightCode.tsx b/apps/docs/components/highlightCode/HighlightCode.tsx index a205881ac..1188779b9 100644 --- a/apps/docs/components/highlightCode/HighlightCode.tsx +++ b/apps/docs/components/highlightCode/HighlightCode.tsx @@ -1,36 +1,49 @@ "use client"; -import { useEffect, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import * as prod from "react/jsx-runtime"; import { unified } from "unified"; import rehypeReact from "rehype-react"; import rehypeParse from "rehype-parse"; import Pre from "@/components/pre/Pre.tsx"; +import InlineCode, { type InlineCodeProps } from "@/components/code/InlineCode.tsx"; + +export type Variant = "default" | "tiny"; export interface HighlightCodeProps { code: string; + variant?: Variant; } -const production = { Fragment: prod.Fragment, jsx: prod.jsx, jsxs: prod.jsxs, components: { pre: Pre } }; +const production = { Fragment: prod.Fragment, jsx: prod.jsx, jsxs: prod.jsxs }; -function useProcessor(text: string) { +function useProcessor(text: string, variant?: Variant) { const [Content, setContent] = useState(<>); useEffect(() => { + const options = { + ...production, + components: { + pre: variant === "tiny" ? (props: InlineCodeProps) => : Pre + } + }; + unified() .use(rehypeParse, { fragment: true }) // @ts-expect-error: rehype-react types error - .use(rehypeReact, production) + .use(rehypeReact, options) .process(text) .then(file => { setContent(file.result); }); - }, [text]); + }, [text, variant]); return Content; } -export default function HighlightCode({ code }: HighlightCodeProps) { - return useProcessor(code); +export default function HighlightCode({ code, variant = "default" }: HighlightCodeProps) { + const processor = useProcessor(code, variant); + + return useMemo(() => processor, [processor]); } diff --git a/apps/docs/components/pre/Pre.tsx b/apps/docs/components/pre/Pre.tsx index 2751466ea..9e8582539 100644 --- a/apps/docs/components/pre/Pre.tsx +++ b/apps/docs/components/pre/Pre.tsx @@ -12,9 +12,10 @@ export type PreProps = React.DetailedHTMLProps, H "data-language"?: string; raw?: string; className?: string; + theme?: "light" | "dark"; }; -const Pre = ({ children, className, title, "data-language": dataLanguage, raw, ...props }: PreProps) => { +const Pre = ({ children, className, title, "data-language": dataLanguage, raw, theme = "dark", ...props }: PreProps) => { const classes = clsx("hd-pre", { "hd-pre--title": title }, className); @@ -31,7 +32,7 @@ const Pre = ({ children, className, title, "data-language": dataLanguage, raw, . const copyButton = raw && ; return ( -
+        
             {title &&
                 
diff --git a/apps/docs/components/table/Table.tsx b/apps/docs/components/table/Table.tsx index 9a84d3db0..b9bb84520 100644 --- a/apps/docs/components/table/Table.tsx +++ b/apps/docs/components/table/Table.tsx @@ -2,7 +2,7 @@ import clsx from "clsx"; import { Cell, Column, Row, Table as TableRA, TableBody, TableHeader } from "react-aria-components"; -import type { ReactNode } from "react"; +import React, { type ReactNode, useMemo } from "react"; import "./table.css"; @@ -25,6 +25,7 @@ function generateUniqueKey() { const Table = ({ data, head, lastColumnAlignment = "left", ariaLabel = "standard table", className }: TableProps) => { const textAlignRight = lastColumnAlignment === "right"; const lastColumn = head.length - 1; + const dataItem = useMemo(() => data, [data]); const headItems = head.map((item, index) => { return ( @@ -37,7 +38,7 @@ const Table = ({ data, head, lastColumnAlignment = "left", ariaLabel = "standard ); }); - const dataItems = data.map(item => { + const dataItems = dataItem.map(item => { return ( {Object.keys(item).map((key, index) => { @@ -54,6 +55,7 @@ const Table = ({ data, head, lastColumnAlignment = "left", ariaLabel = "standard }); return ( + {headItems} diff --git a/apps/docs/components/table/table.css b/apps/docs/components/table/table.css index 195fba20c..b0c769ddf 100644 --- a/apps/docs/components/table/table.css +++ b/apps/docs/components/table/table.css @@ -23,6 +23,10 @@ min-width: 3rem; } +.hd-table__th { + padding: var(--hd-space-1); +} + .hd-table__cell { font-family: var(--hd-mono-font-family); font-size: 0.8125rem; diff --git a/apps/docs/components/title/title.css b/apps/docs/components/title/title.css index c28ec9f2e..a5c2861ff 100644 --- a/apps/docs/components/title/title.css +++ b/apps/docs/components/title/title.css @@ -1,9 +1,9 @@ .hd-title { - --hd-title-font-family: var(--hd-default-font-family); + --hd-title-font-family: var(--hd-default-font-family); - font-family: var(--hd-title-font-family); - line-height: 1; - margin-block: 0; + font-family: var(--hd-title-font-family); + line-height: 1; + margin-block: 0; } .hd-title--level1 { @@ -34,14 +34,12 @@ .hd-title-link { position: relative; display: inline; - padding-left: 2ch; - margin-left: -2ch; } -.hd-title-link::before { +.hd-title-link::after { content: "#"; position: absolute; - left: 0; + left: calc(100% + 1ch); font-size: 1em; line-height: inherit; color: var(--hd-color-neutral-text-weak); @@ -49,7 +47,7 @@ transition: opacity 0.1s ease-in; } -.hd-title-link:hover::before, -.hd-title-link:focus::before { +.hd-title-link:hover::after, +.hd-title-link:focus::after { opacity: 1; } diff --git a/apps/docs/content/components/button.mdx b/apps/docs/content/components/button.mdx index d7c844de4..afc5f1a01 100644 --- a/apps/docs/content/components/button.mdx +++ b/apps/docs/content/components/button.mdx @@ -11,14 +11,12 @@ links: ## Usage -```shell -import { Button } from "@hopper-ui/components"; -``` ```tsx showLineNumbers +import { Button } from "@hopper-ui/components"; + ``` ## Props -The table below contains all types of the props available in title component. diff --git a/apps/docs/datas/components/Button.json b/apps/docs/datas/components/Button.json index 9b7263605..5ae859e2b 100644 --- a/apps/docs/datas/components/Button.json +++ b/apps/docs/datas/components/Button.json @@ -1 +1 @@ -[{"tags":{},"filePath":"/Users/franck.gaudin/Devel/DS/wl-hopper/packages/components/src/buttons/src/Button.tsx","description":"Buttons are used to initialize an action. Button labels express what action will occur when the user interacts with it.\n\n[View Documentation](TODO)","displayName":"Button","methods":[],"props":{"variant":{"defaultValue":{"value":"\"primary\""},"description":"The visual style of the button.\n*","name":"variant","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"\"primary\" | \"secondary\" | \"danger\" | \"upsell\" | \"ghost-primary\" | \"ghost-secondary\" | \"ghost-danger\""}},"size":{"defaultValue":{"value":"\"md\""},"description":"A button can vary in size.","name":"size","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp<\"sm\" | \"md\">"}},"fluid":{"defaultValue":null,"description":"Whether or not the button takes up the width of its container.","name":"fluid","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp"}},"isLoading":{"defaultValue":null,"description":"","name":"isLoading","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"href":{"defaultValue":null,"description":"A URL to link to. Setting this makes the component render an `a` tag instead of a `button`","name":"href","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"target":{"defaultValue":null,"description":"The target window for the link.","name":"target","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"rel":{"defaultValue":null,"description":"The relationship between the linked resource and the current page. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel).","name":"rel","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"form":{"defaultValue":null,"description":"The element to associate the button with.\nThe value of this attribute must be the id of a in the same document.","name":"form","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"slot":{"defaultValue":null,"description":"A slot name for the component. Slots allow the component to receive props from a parent component.\nAn explicit `null` value indicates that the local props completely override all props received from a parent.","name":"slot","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"}],"required":false,"type":{"name":"string"}},"style":{"defaultValue":null,"description":"The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state.","name":"style","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"CSSProperties | ((values: ButtonRenderProps) => CSSProperties)"}},"children":{"defaultValue":null,"description":"The children of the component. A function may be provided to alter the children based on component state.","name":"children","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"}],"required":false,"type":{"name":"ReactNode | ((values: ButtonRenderProps) => ReactNode)"}},"isDisabled":{"defaultValue":null,"description":"Whether the button is disabled.","name":"isDisabled","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"onPress":{"defaultValue":null,"description":"Handler that is called when the press is released over the target.","name":"onPress","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressStart":{"defaultValue":null,"description":"Handler that is called when a press interaction starts.","name":"onPressStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressEnd":{"defaultValue":null,"description":"Handler that is called when a press interaction ends, either\nover the target or when the pointer leaves the target.","name":"onPressEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressChange":{"defaultValue":null,"description":"Handler that is called when the press state changes.","name":"onPressChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(isPressed: boolean) => void"}},"onPressUp":{"defaultValue":null,"description":"Handler that is called when a press is released over the target, regardless of\nwhether it started on the target or not.","name":"onPressUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"autoFocus":{"defaultValue":null,"description":"Whether the element should receive focus on render.","name":"autoFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"}],"required":false,"type":{"name":"boolean"}},"onFocus":{"defaultValue":null,"description":"Handler that is called when the element receives focus.","name":"onFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onBlur":{"defaultValue":null,"description":"Handler that is called when the element loses focus.","name":"onBlur","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onFocusChange":{"defaultValue":null,"description":"Handler that is called when the element's focus status changes.","name":"onFocusChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(isFocused: boolean) => void"}},"onKeyDown":{"defaultValue":null,"description":"Handler that is called when a key is pressed.","name":"onKeyDown","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onKeyUp":{"defaultValue":null,"description":"Handler that is called when a key is released.","name":"onKeyUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"aria-expanded":{"defaultValue":null,"description":"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.","name":"aria-expanded","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\""}},"aria-haspopup":{"defaultValue":null,"description":"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.","name":"aria-haspopup","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"dialog\" | \"menu\" | \"grid\" | \"true\" | \"false\" | \"listbox\" | \"tree\""}},"aria-controls":{"defaultValue":null,"description":"Identifies the element (or elements) whose contents or presence are controlled by the current element.","name":"aria-controls","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"string"}},"aria-pressed":{"defaultValue":null,"description":"Indicates the current \"pressed\" state of toggle buttons.","name":"aria-pressed","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\" | \"mixed\""}},"type":{"defaultValue":{"value":"'button'"},"description":"The behavior of the button when used in an HTML form.","name":"type","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"\"button\" | \"submit\" | \"reset\""}},"excludeFromTabOrder":{"defaultValue":null,"description":"Whether to exclude the element from the sequential tab order. If true,\nthe element will not be focusable via the keyboard by tabbing. This should\nbe avoided except in rare scenarios where an alternative means of accessing\nthe element or its functionality via the keyboard is available.","name":"excludeFromTabOrder","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"}],"required":false,"type":{"name":"boolean"}},"id":{"defaultValue":null,"description":"The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id).","name":"id","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"}],"required":false,"type":{"name":"string"}},"aria-label":{"defaultValue":null,"description":"Defines a string value that labels the current element.","name":"aria-label","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-labelledby":{"defaultValue":null,"description":"Identifies the element (or elements) that labels the current element.","name":"aria-labelledby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-describedby":{"defaultValue":null,"description":"Identifies the element (or elements) that describes the object.","name":"aria-describedby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-details":{"defaultValue":null,"description":"Identifies the element (or elements) that provide a detailed, extended description for the object.","name":"aria-details","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"formAction":{"defaultValue":null,"description":"The URL that processes the information submitted by the button.\nOverrides the action attribute of the button's form owner.","name":"formAction","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formEncType":{"defaultValue":null,"description":"Indicates how to encode the form data that is submitted.","name":"formEncType","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formMethod":{"defaultValue":null,"description":"Indicates the HTTP method used to submit the form.","name":"formMethod","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formNoValidate":{"defaultValue":null,"description":"Indicates that the form is not to be validated when it is submitted.","name":"formNoValidate","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"formTarget":{"defaultValue":null,"description":"Overrides the target attribute of the button's form owner.","name":"formTarget","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"value":{"defaultValue":null,"description":"The value associated with the button's name when it's submitted with the form data.","name":"value","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"onHoverStart":{"defaultValue":null,"description":"Handler that is called when a hover interaction starts.","name":"onHoverStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverEnd":{"defaultValue":null,"description":"Handler that is called when a hover interaction ends.","name":"onHoverEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverChange":{"defaultValue":null,"description":"Handler that is called when the hover state changes.","name":"onHoverChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(isHovering: boolean) => void"}},"className":{"defaultValue":null,"description":"The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.","name":"className","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"string | ((values: ButtonRenderProps) => string)"}},"name":{"defaultValue":null,"description":"Submitted as a pair with the button's value as part of the form data.","name":"name","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"ref":{"defaultValue":null,"description":"Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}","name":"ref","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"RefAttributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"RefAttributes"}],"required":false,"type":{"name":"LegacyRef"}},"key":{"defaultValue":null,"description":"","name":"key","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"Attributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"Attributes"}],"required":false,"type":{"name":"Key"}}},"groups":{"default":{"variant":{"defaultValue":{"value":"\"primary\""},"description":"The visual style of the button.\n*","name":"variant","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"\"primary\" | \"secondary\" | \"danger\" | \"upsell\" | \"ghost-primary\" | \"ghost-secondary\" | \"ghost-danger\""}},"size":{"defaultValue":{"value":"\"md\""},"description":"A button can vary in size.","name":"size","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp<\"sm\" | \"md\">"}},"fluid":{"defaultValue":null,"description":"Whether or not the button takes up the width of its container.","name":"fluid","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp"}},"isLoading":{"defaultValue":null,"description":"","name":"isLoading","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"href":{"defaultValue":null,"description":"A URL to link to. Setting this makes the component render an `a` tag instead of a `button`","name":"href","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"target":{"defaultValue":null,"description":"The target window for the link.","name":"target","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"rel":{"defaultValue":null,"description":"The relationship between the linked resource and the current page. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel).","name":"rel","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"form":{"defaultValue":null,"description":"The element to associate the button with.\nThe value of this attribute must be the id of a in the same document.","name":"form","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"slot":{"defaultValue":null,"description":"A slot name for the component. Slots allow the component to receive props from a parent component.\nAn explicit `null` value indicates that the local props completely override all props received from a parent.","name":"slot","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"}],"required":false,"type":{"name":"string"}},"style":{"defaultValue":null,"description":"The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state.","name":"style","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"CSSProperties | ((values: ButtonRenderProps) => CSSProperties)"}},"children":{"defaultValue":null,"description":"The children of the component. A function may be provided to alter the children based on component state.","name":"children","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"}],"required":false,"type":{"name":"ReactNode | ((values: ButtonRenderProps) => ReactNode)"}},"isDisabled":{"defaultValue":null,"description":"Whether the button is disabled.","name":"isDisabled","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"autoFocus":{"defaultValue":null,"description":"Whether the element should receive focus on render.","name":"autoFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"}],"required":false,"type":{"name":"boolean"}},"excludeFromTabOrder":{"defaultValue":null,"description":"Whether to exclude the element from the sequential tab order. If true,\nthe element will not be focusable via the keyboard by tabbing. This should\nbe avoided except in rare scenarios where an alternative means of accessing\nthe element or its functionality via the keyboard is available.","name":"excludeFromTabOrder","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"}],"required":false,"type":{"name":"boolean"}},"id":{"defaultValue":null,"description":"The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id).","name":"id","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"}],"required":false,"type":{"name":"string"}},"formAction":{"defaultValue":null,"description":"The URL that processes the information submitted by the button.\nOverrides the action attribute of the button's form owner.","name":"formAction","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formEncType":{"defaultValue":null,"description":"Indicates how to encode the form data that is submitted.","name":"formEncType","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formMethod":{"defaultValue":null,"description":"Indicates the HTTP method used to submit the form.","name":"formMethod","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formNoValidate":{"defaultValue":null,"description":"Indicates that the form is not to be validated when it is submitted.","name":"formNoValidate","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"formTarget":{"defaultValue":null,"description":"Overrides the target attribute of the button's form owner.","name":"formTarget","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"value":{"defaultValue":null,"description":"The value associated with the button's name when it's submitted with the form data.","name":"value","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"className":{"defaultValue":null,"description":"The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.","name":"className","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"string | ((values: ButtonRenderProps) => string)"}},"name":{"defaultValue":null,"description":"Submitted as a pair with the button's value as part of the form data.","name":"name","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.1.1_react-dom@18.2.0_react@18.2.0/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"ref":{"defaultValue":null,"description":"Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}","name":"ref","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"RefAttributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"RefAttributes"}],"required":false,"type":{"name":"LegacyRef"}},"key":{"defaultValue":null,"description":"","name":"key","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"Attributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.2.67/node_modules/@types/react/index.d.ts","name":"Attributes"}],"required":false,"type":{"name":"Key"}}},"events":{"onPress":{"defaultValue":null,"description":"Handler that is called when the press is released over the target.","name":"onPress","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressStart":{"defaultValue":null,"description":"Handler that is called when a press interaction starts.","name":"onPressStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressEnd":{"defaultValue":null,"description":"Handler that is called when a press interaction ends, either\nover the target or when the pointer leaves the target.","name":"onPressEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressChange":{"defaultValue":null,"description":"Handler that is called when the press state changes.","name":"onPressChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(isPressed: boolean) => void"}},"onPressUp":{"defaultValue":null,"description":"Handler that is called when a press is released over the target, regardless of\nwhether it started on the target or not.","name":"onPressUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onFocus":{"defaultValue":null,"description":"Handler that is called when the element receives focus.","name":"onFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onBlur":{"defaultValue":null,"description":"Handler that is called when the element loses focus.","name":"onBlur","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onFocusChange":{"defaultValue":null,"description":"Handler that is called when the element's focus status changes.","name":"onFocusChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(isFocused: boolean) => void"}},"onKeyDown":{"defaultValue":null,"description":"Handler that is called when a key is pressed.","name":"onKeyDown","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onKeyUp":{"defaultValue":null,"description":"Handler that is called when a key is released.","name":"onKeyUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onHoverStart":{"defaultValue":null,"description":"Handler that is called when a hover interaction starts.","name":"onHoverStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverEnd":{"defaultValue":null,"description":"Handler that is called when a hover interaction ends.","name":"onHoverEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverChange":{"defaultValue":null,"description":"Handler that is called when the hover state changes.","name":"onHoverChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(isHovering: boolean) => void"}}},"a11y":{"aria-expanded":{"defaultValue":null,"description":"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.","name":"aria-expanded","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\""}},"aria-haspopup":{"defaultValue":null,"description":"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.","name":"aria-haspopup","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"dialog\" | \"menu\" | \"grid\" | \"true\" | \"false\" | \"listbox\" | \"tree\""}},"aria-controls":{"defaultValue":null,"description":"Identifies the element (or elements) whose contents or presence are controlled by the current element.","name":"aria-controls","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"string"}},"aria-pressed":{"defaultValue":null,"description":"Indicates the current \"pressed\" state of toggle buttons.","name":"aria-pressed","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\" | \"mixed\""}},"type":{"defaultValue":{"value":"'button'"},"description":"The behavior of the button when used in an HTML form.","name":"type","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.2_react@18.2.0/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"\"button\" | \"submit\" | \"reset\""}},"aria-label":{"defaultValue":null,"description":"Defines a string value that labels the current element.","name":"aria-label","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-labelledby":{"defaultValue":null,"description":"Identifies the element (or elements) that labels the current element.","name":"aria-labelledby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-describedby":{"defaultValue":null,"description":"Identifies the element (or elements) that describes the object.","name":"aria-describedby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-details":{"defaultValue":null,"description":"Identifies the element (or elements) that provide a detailed, extended description for the object.","name":"aria-details","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.22.1_react@18.2.0/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}}}}}] \ No newline at end of file +[{"tags":{},"filePath":"/Users/franck.gaudin/Devel/DS/wl-hopper/packages/components/src/buttons/src/Button.tsx","description":"Buttons are used to initialize an action. Button labels express what action will occur when the user interacts with it.\n\n[View Documentation](TODO)","displayName":"Button","methods":[],"props":{"variant":{"defaultValue":{"value":"\"primary\""},"description":"The visual style of the button.\n*","name":"variant","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"\"primary\" | \"secondary\" | \"danger\" | \"upsell\" | \"ghost-primary\" | \"ghost-secondary\" | \"ghost-danger\""}},"size":{"defaultValue":{"value":"\"md\""},"description":"A button can vary in size.","name":"size","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp<\"sm\" | \"md\">"}},"fluid":{"defaultValue":null,"description":"Whether or not the button takes up the width of its container.","name":"fluid","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp"}},"isLoading":{"defaultValue":null,"description":"A button can show a loading indicator.","name":"isLoading","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"href":{"defaultValue":null,"description":"A URL to link to. Setting this makes the component render an `a` tag instead of a `button`","name":"href","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"target":{"defaultValue":null,"description":"The target window for the link.","name":"target","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"rel":{"defaultValue":null,"description":"The relationship between the linked resource and the current page. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel).","name":"rel","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"routerOptions":{"defaultValue":null,"description":"Options for the configured client side router.","name":"routerOptions","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"never"}},"form":{"defaultValue":null,"description":"The `` element to associate the button with.\nThe value of this attribute must be the id of a `` in the same document.","name":"form","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"slot":{"defaultValue":null,"description":"A slot name for the component. Slots allow the component to receive props from a parent component.\nAn explicit `null` value indicates that the local props completely override all props received from a parent.","name":"slot","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"}],"required":false,"type":{"name":"string"}},"style":{"defaultValue":null,"description":"The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state.","name":"style","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"CSSProperties | ((values: ButtonRenderProps & { defaultStyle: CSSProperties; }) => CSSProperties)"}},"children":{"defaultValue":null,"description":"The children of the component. A function may be provided to alter the children based on component state.","name":"children","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"}],"required":false,"type":{"name":"ReactNode | ((values: ButtonRenderProps & { defaultChildren: ReactNode; }) => ReactNode)"}},"isDisabled":{"defaultValue":null,"description":"Whether the button is disabled.","name":"isDisabled","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"onPress":{"defaultValue":null,"description":"Handler that is called when the press is released over the target.","name":"onPress","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressStart":{"defaultValue":null,"description":"Handler that is called when a press interaction starts.","name":"onPressStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressEnd":{"defaultValue":null,"description":"Handler that is called when a press interaction ends, either\nover the target or when the pointer leaves the target.","name":"onPressEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressChange":{"defaultValue":null,"description":"Handler that is called when the press state changes.","name":"onPressChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(isPressed: boolean) => void"}},"onPressUp":{"defaultValue":null,"description":"Handler that is called when a press is released over the target, regardless of\nwhether it started on the target or not.","name":"onPressUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"autoFocus":{"defaultValue":null,"description":"Whether the element should receive focus on render.","name":"autoFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"}],"required":false,"type":{"name":"boolean"}},"onFocus":{"defaultValue":null,"description":"Handler that is called when the element receives focus.","name":"onFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onBlur":{"defaultValue":null,"description":"Handler that is called when the element loses focus.","name":"onBlur","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onFocusChange":{"defaultValue":null,"description":"Handler that is called when the element's focus status changes.","name":"onFocusChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(isFocused: boolean) => void"}},"onKeyDown":{"defaultValue":null,"description":"Handler that is called when a key is pressed.","name":"onKeyDown","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onKeyUp":{"defaultValue":null,"description":"Handler that is called when a key is released.","name":"onKeyUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"aria-expanded":{"defaultValue":null,"description":"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.","name":"aria-expanded","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\""}},"aria-haspopup":{"defaultValue":null,"description":"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.","name":"aria-haspopup","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"dialog\" | \"menu\" | \"grid\" | \"true\" | \"false\" | \"listbox\" | \"tree\""}},"aria-controls":{"defaultValue":null,"description":"Identifies the element (or elements) whose contents or presence are controlled by the current element.","name":"aria-controls","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"string"}},"aria-pressed":{"defaultValue":null,"description":"Indicates the current \"pressed\" state of toggle buttons.","name":"aria-pressed","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\" | \"mixed\""}},"type":{"defaultValue":{"value":"'button'"},"description":"The behavior of the button when used in an HTML form.","name":"type","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"\"button\" | \"submit\" | \"reset\""}},"excludeFromTabOrder":{"defaultValue":null,"description":"Whether to exclude the element from the sequential tab order. If true,\nthe element will not be focusable via the keyboard by tabbing. This should\nbe avoided except in rare scenarios where an alternative means of accessing\nthe element or its functionality via the keyboard is available.","name":"excludeFromTabOrder","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"}],"required":false,"type":{"name":"boolean"}},"id":{"defaultValue":null,"description":"The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id).","name":"id","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"}],"required":false,"type":{"name":"string"}},"aria-label":{"defaultValue":null,"description":"Defines a string value that labels the current element.","name":"aria-label","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-labelledby":{"defaultValue":null,"description":"Identifies the element (or elements) that labels the current element.","name":"aria-labelledby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-describedby":{"defaultValue":null,"description":"Identifies the element (or elements) that describes the object.","name":"aria-describedby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-details":{"defaultValue":null,"description":"Identifies the element (or elements) that provide a detailed, extended description for the object.","name":"aria-details","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"formAction":{"defaultValue":null,"description":"The URL that processes the information submitted by the button.\nOverrides the action attribute of the button's form owner.","name":"formAction","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formEncType":{"defaultValue":null,"description":"Indicates how to encode the form data that is submitted.","name":"formEncType","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formMethod":{"defaultValue":null,"description":"Indicates the HTTP method used to submit the form.","name":"formMethod","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formNoValidate":{"defaultValue":null,"description":"Indicates that the form is not to be validated when it is submitted.","name":"formNoValidate","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"formTarget":{"defaultValue":null,"description":"Overrides the target attribute of the button's form owner.","name":"formTarget","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"value":{"defaultValue":null,"description":"The value associated with the button's name when it's submitted with the form data.","name":"value","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"onHoverStart":{"defaultValue":null,"description":"Handler that is called when a hover interaction starts.","name":"onHoverStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverEnd":{"defaultValue":null,"description":"Handler that is called when a hover interaction ends.","name":"onHoverEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverChange":{"defaultValue":null,"description":"Handler that is called when the hover state changes.","name":"onHoverChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(isHovering: boolean) => void"}},"className":{"defaultValue":null,"description":"The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.","name":"className","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"string | ((values: ButtonRenderProps & { defaultClassName: string; }) => string)"}},"name":{"defaultValue":null,"description":"Submitted as a pair with the button's value as part of the form data.","name":"name","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"ref":{"defaultValue":null,"description":"Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}","name":"ref","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.3.1/node_modules/@types/react/index.d.ts","name":"RefAttributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.3.1/node_modules/@types/react/index.d.ts","name":"RefAttributes"}],"required":false,"type":{"name":"LegacyRef"}},"key":{"defaultValue":null,"description":"","name":"key","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.3.1/node_modules/@types/react/index.d.ts","name":"Attributes"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@types+react@18.3.1/node_modules/@types/react/index.d.ts","name":"Attributes"}],"required":false,"type":{"name":"Key"}}},"groups":{"default":{"variant":{"defaultValue":{"value":"\"primary\""},"description":"The visual style of the button.\n*","name":"variant","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"\"primary\" | \"secondary\" | \"danger\" | \"upsell\" | \"ghost-primary\" | \"ghost-secondary\" | \"ghost-danger\""}},"size":{"defaultValue":{"value":"\"md\""},"description":"A button can vary in size.","name":"size","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp<\"sm\" | \"md\">"}},"fluid":{"defaultValue":null,"description":"Whether or not the button takes up the width of its container.","name":"fluid","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"ResponsiveProp"}},"isLoading":{"defaultValue":null,"description":"A button can show a loading indicator.","name":"isLoading","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"href":{"defaultValue":null,"description":"A URL to link to. Setting this makes the component render an `a` tag instead of a `button`","name":"href","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"target":{"defaultValue":null,"description":"The target window for the link.","name":"target","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"rel":{"defaultValue":null,"description":"The relationship between the linked resource and the current page. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel).","name":"rel","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"routerOptions":{"defaultValue":null,"description":"Options for the configured client side router.","name":"routerOptions","parent":{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/packages/components/src/buttons/src/Button.tsx","name":"ButtonProps"}],"required":false,"type":{"name":"never"}},"form":{"defaultValue":null,"description":"The `` element to associate the button with.\nThe value of this attribute must be the id of a `` in the same document.","name":"form","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"style":{"defaultValue":null,"description":"The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state.","name":"style","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"CSSProperties | ((values: ButtonRenderProps & { defaultStyle: CSSProperties; }) => CSSProperties)"}},"children":{"defaultValue":null,"description":"The children of the component. A function may be provided to alter the children based on component state.","name":"children","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"RenderProps"}],"required":false,"type":{"name":"ReactNode | ((values: ButtonRenderProps & { defaultChildren: ReactNode; }) => ReactNode)"}},"isDisabled":{"defaultValue":null,"description":"Whether the button is disabled.","name":"isDisabled","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"autoFocus":{"defaultValue":null,"description":"Whether the element should receive focus on render.","name":"autoFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusableProps"}],"required":false,"type":{"name":"boolean"}},"type":{"defaultValue":{"value":"'button'"},"description":"The behavior of the button when used in an HTML form.","name":"type","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"\"button\" | \"submit\" | \"reset\""}},"id":{"defaultValue":null,"description":"The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id).","name":"id","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"DOMProps"}],"required":false,"type":{"name":"string"}},"formAction":{"defaultValue":null,"description":"The URL that processes the information submitted by the button.\nOverrides the action attribute of the button's form owner.","name":"formAction","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formEncType":{"defaultValue":null,"description":"Indicates how to encode the form data that is submitted.","name":"formEncType","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formMethod":{"defaultValue":null,"description":"Indicates the HTTP method used to submit the form.","name":"formMethod","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"formNoValidate":{"defaultValue":null,"description":"Indicates that the form is not to be validated when it is submitted.","name":"formNoValidate","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"boolean"}},"formTarget":{"defaultValue":null,"description":"Overrides the target attribute of the button's form owner.","name":"formTarget","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"value":{"defaultValue":null,"description":"The value associated with the button's name when it's submitted with the form data.","name":"value","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}},"className":{"defaultValue":null,"description":"The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.","name":"className","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"StyleRenderProps"}],"required":false,"type":{"name":"string | ((values: ButtonRenderProps & { defaultClassName: string; }) => string)"}},"name":{"defaultValue":null,"description":"Submitted as a pair with the button's value as part of the form data.","name":"name","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"ButtonProps"}],"required":false,"type":{"name":"string"}}},"events":{"onPress":{"defaultValue":null,"description":"Handler that is called when the press is released over the target.","name":"onPress","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressStart":{"defaultValue":null,"description":"Handler that is called when a press interaction starts.","name":"onPressStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressEnd":{"defaultValue":null,"description":"Handler that is called when a press interaction ends, either\nover the target or when the pointer leaves the target.","name":"onPressEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onPressChange":{"defaultValue":null,"description":"Handler that is called when the press state changes.","name":"onPressChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(isPressed: boolean) => void"}},"onPressUp":{"defaultValue":null,"description":"Handler that is called when a press is released over the target, regardless of\nwhether it started on the target or not.","name":"onPressUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"PressEvents"}],"required":false,"type":{"name":"(e: PressEvent) => void"}},"onFocus":{"defaultValue":null,"description":"Handler that is called when the element receives focus.","name":"onFocus","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onBlur":{"defaultValue":null,"description":"Handler that is called when the element loses focus.","name":"onBlur","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(e: FocusEvent) => void"}},"onFocusChange":{"defaultValue":null,"description":"Handler that is called when the element's focus status changes.","name":"onFocusChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"FocusEvents"}],"required":false,"type":{"name":"(isFocused: boolean) => void"}},"onKeyDown":{"defaultValue":null,"description":"Handler that is called when a key is pressed.","name":"onKeyDown","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onKeyUp":{"defaultValue":null,"description":"Handler that is called when a key is released.","name":"onKeyUp","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"KeyboardEvents"}],"required":false,"type":{"name":"(e: KeyboardEvent) => void"}},"onHoverStart":{"defaultValue":null,"description":"Handler that is called when a hover interaction starts.","name":"onHoverStart","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverEnd":{"defaultValue":null,"description":"Handler that is called when a hover interaction ends.","name":"onHoverEnd","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(e: HoverEvent) => void"}},"onHoverChange":{"defaultValue":null,"description":"Handler that is called when the hover state changes.","name":"onHoverChange","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/events.d.ts","name":"HoverEvents"}],"required":false,"type":{"name":"(isHovering: boolean) => void"}}},"accessibility":{"aria-expanded":{"defaultValue":null,"description":"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.","name":"aria-expanded","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\""}},"aria-haspopup":{"defaultValue":null,"description":"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.","name":"aria-haspopup","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"dialog\" | \"menu\" | \"grid\" | \"true\" | \"false\" | \"listbox\" | \"tree\""}},"aria-controls":{"defaultValue":null,"description":"Identifies the element (or elements) whose contents or presence are controlled by the current element.","name":"aria-controls","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"string"}},"aria-pressed":{"defaultValue":null,"description":"Indicates the current \"pressed\" state of toggle buttons.","name":"aria-pressed","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+button@3.9.3_react@18.3.1/node_modules/@react-types/button/src/index.d.ts","name":"AriaBaseButtonProps"}],"required":false,"type":{"name":"boolean | \"true\" | \"false\" | \"mixed\""}},"excludeFromTabOrder":{"defaultValue":null,"description":"Whether to exclude the element from the sequential tab order. If true,\nthe element will not be focusable via the keyboard by tabbing. This should\nbe avoided except in rare scenarios where an alternative means of accessing\nthe element or its functionality via the keyboard is available.","name":"excludeFromTabOrder","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"FocusableDOMProps"}],"required":false,"type":{"name":"boolean"}},"aria-label":{"defaultValue":null,"description":"Defines a string value that labels the current element.","name":"aria-label","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-labelledby":{"defaultValue":null,"description":"Identifies the element (or elements) that labels the current element.","name":"aria-labelledby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-describedby":{"defaultValue":null,"description":"Identifies the element (or elements) that describes the object.","name":"aria-describedby","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}},"aria-details":{"defaultValue":null,"description":"Identifies the element (or elements) that provide a detailed, extended description for the object.","name":"aria-details","parent":{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/@react-types+shared@3.23.0_react@18.3.1/node_modules/@react-types/shared/src/dom.d.ts","name":"AriaLabelingProps"}],"required":false,"type":{"name":"string"}}},"layout":{"slot":{"defaultValue":null,"description":"A slot name for the component. Slots allow the component to receive props from a parent component.\nAn explicit `null` value indicates that the local props completely override all props received from a parent.","name":"slot","parent":{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"},"declarations":[{"fileName":"wl-hopper/node_modules/.pnpm/react-aria-components@1.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-aria-components/dist/types.d.ts","name":"SlotProps"}],"required":false,"type":{"name":"string"}}}}}] \ No newline at end of file diff --git a/apps/docs/package.json b/apps/docs/package.json index 9eca72380..553cf05be 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -15,6 +15,7 @@ "build:componentData": "tsx scripts/generateComponentData.mts" }, "dependencies": { + "@tanstack/react-table": "^8.16.0", "clsx": "2.1.1", "contentlayer": "0.3.4", "next": "14.2.3", diff --git a/apps/docs/scripts/generateComponentData.mts b/apps/docs/scripts/generateComponentData.mts index 0339aff7d..1b28ca828 100644 --- a/apps/docs/scripts/generateComponentData.mts +++ b/apps/docs/scripts/generateComponentData.mts @@ -14,7 +14,7 @@ interface Group { type Groups = { [key: string]: Group } type GroupsConfig = { - [key: string]: string; + [key: string]: string | string[] } export interface ComponentDocWithGroups extends ComponentDoc { @@ -54,28 +54,56 @@ function getFormattedData(data: ComponentDoc[]): ComponentDocWithGroups[] { const groupsConfig: GroupsConfig = { events: "Events", - a11y: 'Aria', + accessibility: ["Aria", "Focusable"], + layout: "Slot", // Add more groups here as needed }; + // Define the exceptions that should be added to a specific group + // The first element is the prop name and the second is the group key + const groupsExceptions = [["type", "default"], ["autoFocus", "default"]]; + return data.map(component => { + // Destructure and ignore id and ref from component.props + const {key, ref, ...props} = component.props; + // Initialize the groups const groups: Groups = { default: {}, ...Object.keys(groupsConfig).reduce((acc, group) => ({...acc, [group]: {}}), {}), }; - Object.entries(component.props).forEach(([key, prop]) => { + Object.entries(props).forEach(([key, prop]) => { let added = false; // Check each group to see if the prop should be added to it Object.entries(groupsConfig).forEach(([group, term]) => { - if (prop.parent?.name.includes(term)) { + if (Array.isArray(term)) { + term.forEach(t => { + if (prop.parent?.name.includes(t)) { + groups[group][key] = prop; + added = true; + } + }); + } else if (prop.parent?.name.includes(term)) { groups[group][key] = prop; added = true; } }); + // Validates if the props that are in the groupsExceptions array then adds them to the corresponding group + groupsExceptions.forEach(([propName, groupKey]) => { + if (prop.name === propName && groups.hasOwnProperty(groupKey)) { + Object.entries(groups).forEach(([groupName, groupProps]) => { + if (groupProps.hasOwnProperty(propName)) { + groups[groupKey][propName] = groupProps[propName]; + delete groups[groupName][propName]; + added = true; + } + }); + } + }); + // If the prop wasn't added to any group, add it to the default group if (!added) { groups.default[key] = prop; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34d937ab8..57cc5bedf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,6 +140,9 @@ importers: apps/docs: dependencies: + '@tanstack/react-table': + specifier: ^8.16.0 + version: 8.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: specifier: 2.1.1 version: 2.1.1 @@ -3505,6 +3508,17 @@ packages: '@swc/types@0.1.6': resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + '@tanstack/react-table@8.16.0': + resolution: {integrity: sha512-rKRjnt8ostqN2fercRVOIH/dq7MAmOENCMvVlKx6P9Iokhh6woBGnIZEkqsY/vEJf1jN3TqLOb34xQGLVRuhAg==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.16.0': + resolution: {integrity: sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==} + engines: {node: '>=12'} + '@testing-library/dom@10.1.0': resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} engines: {node: '>=18'} @@ -14301,6 +14315,14 @@ snapshots: dependencies: '@swc/counter': 0.1.3 + '@tanstack/react-table@8.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/table-core': 8.16.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/table-core@8.16.0': {} + '@testing-library/dom@10.1.0': dependencies: '@babel/code-frame': 7.24.2