rallly/packages/ui/src/helpers/component-props.ts
Luke Vella e6792a4283
🎨 Update UI package (#1070)
Add new components and update various existing ones.
2024-03-25 15:28:24 +07:00

22 lines
797 B
TypeScript

import type React from "react";
type ComponentPropsAs<
C extends React.ElementType<any>,
T extends React.ComponentPropsWithoutRef<C>["as"],
> = Omit<
Extract<React.ComponentPropsWithoutRef<C>, { as: T }>,
"as" | "asChild"
>;
// Omits the specified props from the component props. Autocomplete will suggest props
// of the component, but won't restrict the omittable props to those that actually exist.
type ComponentPropsWithout<
T extends React.ElementType,
O extends
| Omit<string, keyof React.ComponentPropsWithoutRef<T>>
| keyof React.ComponentPropsWithoutRef<T>,
> = Omit<React.ComponentPropsWithoutRef<T>, O & string>;
type RemovedProps = "asChild" | "defaultChecked" | "defaultValue" | "color";
export type { ComponentPropsAs, ComponentPropsWithout, RemovedProps };