UNPKG

@oslokommune/punkt-react

Version:

React komponentbibliotek til Punkt, et designsystem laget av Oslo Origo

816 lines (705 loc) 25.7 kB
/// <reference types="react" /> import { AnchorHTMLAttributes } from 'react'; import { ChangeEventHandler } from 'react'; import { default as default_2 } from 'react'; import { FC } from 'react'; import { FocusEventHandler } from 'react'; import { ForwardRefExoticComponent } from 'react'; import { HTMLAttributes } from 'react'; import { HTMLProps } from 'react'; import { InputHTMLAttributes } from 'react'; import { IPktBackLink as IPktBackLink_2 } from '@oslokommune/punkt-elements'; import { IPktCombobox as IPktCombobox_2 } from '@oslokommune/punkt-elements'; import { IPktConsent as IPktConsent_2 } from '@oslokommune/punkt-elements'; import { IPktHeading } from '@oslokommune/punkt-elements'; import { IPktLoader as IPktLoader_2 } from '@oslokommune/punkt-elements'; import { IPktProgressbar as IPktProgressbar_2 } from '@oslokommune/punkt-elements'; import { JSX as JSX_2 } from 'react/jsx-runtime'; import { LegacyRef } from 'react'; import { LinkHTMLAttributes } from 'react'; import { MouseEventHandler } from 'react'; import * as React_2 from 'react'; import { ReactElement } from 'react'; import { ReactNode } from 'react'; import { RefAttributes } from 'react'; import { SelectHTMLAttributes } from 'react'; import { TextareaHTMLAttributes } from 'react'; import { TPktAccordionSkin } from '@oslokommune/punkt-elements'; declare type Booleanish = boolean | 'true' | 'false'; declare interface Column { title: string; links?: Link[]; text?: string; } declare type ExtendedBackLink = Omit<IPktBackLink_2, 'text'> & AnchorHTMLAttributes<HTMLAnchorElement>; declare type ExtendedCombobox = Omit<IPktCombobox_2, 'helptext'> & SelectHTMLAttributes<HTMLSelectElement>; declare type ExtendedLoader = IPktLoader_2 & PktElType; declare type ExtendedProgressbar = IPktProgressbar_2 & PktElType; declare interface IBreadcrumbs { text: string; href: string; } declare interface InputProps extends default_2.InputHTMLAttributes<HTMLInputElement> { /** The input's label */ label?: string; /** The input's id */ id: string; } export declare interface IPktAccordion extends PktElType { compact?: boolean; /** * @default skin: "borderless" */ skin?: TPktAccordionSkin; /** * @description A unique identifier to connect the accordion with a heading */ ariaLabelledBy?: string; /** * @description A unique identifier to connect the accordion with a heading */ ref?: LegacyRef<HTMLElement>; } export declare interface IPktAccordionItem extends Omit<PktElType, 'onClick'> { compact?: boolean; skin?: TPktAccordionSkin; title?: string; defaultOpen?: boolean; isOpen?: boolean; id?: string; onClick?: (e: PktEventWithTarget) => void; ref?: LegacyRef<HTMLElement>; } export declare interface IPktAlert extends PktElType { skin?: 'error' | 'success' | 'warning' | 'info'; closeAlert?: boolean; title?: string; date?: string; ariaLive?: 'off' | 'polite' | 'assertive'; compact?: boolean; role?: string; onClose?: (e: CustomEvent) => void; } export declare interface IPktBackLink extends ExtendedBackLink { text?: string; ref?: LegacyRef<HTMLAnchorElement>; ariaLabel?: string; onClick?: MouseEventHandler<HTMLAnchorElement>; } export declare interface IPktBreadcrumbs extends default_2.AnchorHTMLAttributes<HTMLAnchorElement> { breadcrumbs: IBreadcrumbs[]; navigationType?: 'router' | 'anchor'; } export declare interface IPktButton extends default_2.ButtonHTMLAttributes<HTMLButtonElement> { iconName?: string; secondIconName?: string; mode?: 'light' | 'dark'; size?: 'small' | 'medium' | 'large'; color?: 'blue' | 'blue-outline' | 'green' | 'green-outline' | 'green-dark' | 'green-dark-outline' | 'beige-light' | 'beige-dark-outline' | 'yellow' | 'yellow-outline' | 'red' | 'red-outline'; skin?: 'primary' | 'secondary' | 'tertiary'; variant?: 'label-only' | 'icon-left' | 'icon-right' | 'icon-only' | 'icons-right-and-left'; state?: 'normal' | 'focus' | 'hover' | 'active'; type?: 'button' | 'submit' | 'reset'; isLoading?: boolean; loadingAnimationPath?: string; } export declare interface IPktCard extends PktElType { ariaLabel?: string; metaLead?: string | null; borderOnHover?: boolean | null; metaTrail?: string | null; layout?: TLayout; heading?: string; headingLevel?: IPktHeading['level']; image?: { src: string; alt: string; }; imageShape?: TCardImageShape; clickCardLink?: string | null; padding?: TCardPadding; openLinkInNewTab?: boolean | null; skin?: TCardSkin; subheading?: string; tagPosition?: TCardTagPosition; tags?: (Omit<IPktTag, 'closeTag'> & { text: string; })[]; } export declare interface IPktCheckbox extends default_2.InputHTMLAttributes<HTMLInputElement> { id: string; hasTile?: boolean; disabled?: boolean; label?: string; checkHelptext?: string; hasError?: boolean; defaultChecked?: boolean; checked?: boolean; value?: string; isSwitch?: boolean; hideLabel?: boolean; labelPosition?: 'right' | 'left'; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; onChange?: ChangeEventHandler<HTMLInputElement>; } export declare interface IPktCombobox extends ExtendedCombobox { helptext?: string | ReactNode | ReactNode[]; ref?: LegacyRef<HTMLSelectElement>; onClick?: MouseEventHandler<HTMLSelectElement>; onChange?: ChangeEventHandler<HTMLSelectElement>; onInput?: ChangeEventHandler<HTMLSelectElement>; onBlur?: FocusEventHandler<HTMLSelectElement>; onFocus?: FocusEventHandler<HTMLSelectElement>; onValueChange?: (e: CustomEvent) => void; onToggleHelpText?: (e: CustomEvent) => void; } declare interface IPktConsent extends IPktConsent_2 { ref?: LegacyRef<HTMLDivElement>; onToggleConsent?: (e: CustomEvent) => void; } export declare interface IPktDatepicker extends InputHTMLAttributes<HTMLInputElement> { value?: string | string[]; label?: string; dateformat?: string; multiple?: boolean; maxlength?: number; range?: boolean; weeknumbers?: boolean; withcontrols?: boolean; fullwidth?: boolean; excludedates?: string[]; excludeweekdays?: string[]; currentmonth?: string; calendarOpen?: boolean; requiredTag?: boolean; requiredText?: string; optionalTag?: boolean; optionalText?: string; tagText?: string; useWrapper?: boolean; helptext?: string | ReactNode | ReactNode[]; helptextDropdown?: string | ReactNode | ReactNode[]; helptextDropdownButton?: string; hasError?: boolean; errorMessage?: string | ReactNode | ReactNode[]; strings?: any; ref?: LegacyRef<HTMLInputElement>; onChange?: ChangeEventHandler<HTMLInputElement>; onInput?: ChangeEventHandler<HTMLInputElement>; onBlur?: FocusEventHandler<HTMLInputElement>; onFocus?: FocusEventHandler<HTMLInputElement>; onValueChange?: (e: CustomEvent) => void; onToggleHelpText?: (e: CustomEvent) => void; dataTestid?: string; skipForwardTestid?: boolean; } export declare interface IPktFooter extends default_2.HTMLAttributes<HTMLDivElement> { columnOne: Column; columnTwo: Column; socialLinks?: SocialLink[]; personvernOgInfoLink?: string; tilgjengelighetLink?: string; openLinksInNewTab?: boolean; includeConsent?: boolean; hotjarId?: string | null; googleAnalyticsId?: string | null; devMode?: boolean; cookieDomain?: string | null; cookieSecure?: string | null; cookieExpiryDays?: string | null; onToggleConsent?: (e: CustomEvent) => void; } export declare interface IPktFooterSimple extends default_2.HTMLAttributes<HTMLDivElement> { links?: Array<{ href: string; text: string; external?: boolean; openInNewTab?: boolean; }>; personvernOgInfoLink?: string; tilgjengelighetLink?: string; openLinksInNewTab?: boolean; includeConsent?: boolean; hotjarId?: string | null; googleAnalyticsId?: string | null; devMode?: boolean; cookieDomain?: string | null; cookieSecure?: string | null; cookieExpiryDays?: string | null; onToggleConsent?: (e: CustomEvent) => void; } export declare interface IPktHeader extends HTMLAttributes<HTMLDivElement> { logoLink?: string | (() => void); serviceName?: string; fixed?: boolean; scrollToHide?: boolean; user?: User; userMenu?: UserMenuItem[]; representing?: Representing; userOptions?: UserMenuItem[]; userMenuFooter?: UserMenuFooterItem[]; canChangeRepresentation?: boolean; showMenuButton?: boolean; showLogOutButton?: boolean; openMenu?: () => void; logOut?: () => void; changeRepresentation?: () => void; children?: default_2.ReactNode | default_2.ReactNode[]; } declare interface IPktHelptextProps extends HTMLAttributes<HTMLDivElement> { helptext?: string | ReactNode | ReactNode[]; helptextDropdown?: string | ReactNode | ReactNode[]; helptextDropdownButton?: string; forId?: string; ref?: LegacyRef<HTMLDivElement>; onToggleHelpText?: (e: CustomEvent) => void; } declare interface IPktIcon extends PktElType { name?: string; path?: string; 'aria-hidden'?: Booleanish | undefined; } export declare interface IPktInputWrapper extends RefAttributes<HTMLElement> { forId: string; label: string; helptext?: string | ReactNode; helptextDropdown?: string | ReactNode; helptextDropdownButton?: string; counter?: boolean; counterCurrent?: number; counterMaxLength?: number; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; hasError?: boolean; errorMessage?: string | ReactNode; disabled?: boolean; inline?: boolean; ariaDescribedby?: string; useWrapper?: boolean; children?: ReactNode; className?: string; hasFieldset?: boolean; role?: string; counterPosition?: 'top' | 'bottom'; } declare interface IPktLink extends LinkHTMLAttributes<HTMLAnchorElement> { href?: string; iconName?: string | undefined; iconPosition?: string | undefined; external?: boolean; target?: string | null; ref?: LegacyRef<HTMLAnchorElement>; } export declare interface IPktLinkCard extends PktElType { skin?: 'normal' | 'blue' | 'beige' | 'green' | 'gray' | 'beige-outline' | 'gray-outline'; title?: string; href?: string; iconName?: string; openInNewTab?: boolean; external?: boolean; } export declare interface IPktLoader extends ExtendedLoader { } export declare interface IPktMessagebox extends PktElType { skin?: 'beige' | 'red' | 'green' | 'blue'; title?: string; compact?: boolean; closable?: boolean; onClose?: (e: CustomEvent) => void; } export declare interface IPktModal extends PktElType { headingText?: string; hideCloseButton?: boolean; closeOnBackdropClick?: boolean; size?: 'small' | 'medium' | 'large'; removePadding?: boolean; closeButtonSkin?: 'blue' | 'yellow-filled'; variant?: 'dialog' | 'drawer'; drawerPosition?: 'left' | 'right'; transparentBackdrop?: boolean; } export declare interface IPktProgressbar extends ExtendedProgressbar { } export declare interface IPktRadioButton extends default_2.InputHTMLAttributes<HTMLInputElement> { id: string; name: string; label: string; hasTile?: boolean; disabled?: boolean; checkHelptext?: string | default_2.ReactNode | default_2.ReactNode[]; defaultChecked?: boolean; checked?: boolean; hasError?: boolean; value?: string; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; onChange?: ChangeEventHandler<HTMLInputElement>; } declare interface IPktSelectProps extends SelectHTMLAttributes<HTMLSelectElement> { ariaDescribedby?: string; ariaLabelledby?: string; children?: ReactNode | ReactNode[]; disabled?: boolean; errorMessage?: string | ReactNode | ReactNode[]; hasError?: boolean; helptext?: string | ReactNode | ReactNode[]; helptextDropdown?: string | ReactNode | ReactNode[]; helptextDropdownButton?: string; id: string; inline?: boolean; fullwidth?: boolean; label: string; name?: string; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; options?: Array<{ value: string; label: string; disabled?: boolean; }>; } export declare interface IPktStep { /** * Step content. Can be a string, a React component or an element. */ children?: React.ReactNode; /** * Additional class names */ className?: string; /** * Step status. Can be 'completed', 'incomplete' or 'current' */ status: TStepStatus; /** * Title of the step */ title: string; } export declare interface IPktStepper extends default_2.HTMLAttributes<HTMLOListElement> { /** * The index of the current active step */ activeStep: number; /** * Children of the Stepper must be Step items. Either an Array of Step items or a single Step item. */ children: ReactElement<IPktStep>[] | ReactElement<IPktStep>; /** * Additional class names */ className?: string; /** * Boolean to hide the content of non-active steps content * @default true */ hideNonActiveStepsContent?: boolean; /** * Boolean to hide the content and title of non-active steps * @default false */ hideNonActiveSteps?: boolean; /** * Orientation of the stepper. * @default vertical */ orientation?: 'horizontal' | 'vertical'; } export declare interface IPktTab { text: string; href?: string; action?: (index: number) => void; icon?: string; controls?: string; tag?: { text: string; skin: TSkin | undefined; }; active?: boolean; } declare interface IPktTabs { arrowNav?: boolean; tabs: IPktTab[]; onTabSelected?: (index: number) => void; } export declare interface IPktTag extends PktElType { skin?: 'blue' | 'blue-light' | 'blue-dark' | 'green' | 'red' | 'beige' | 'yellow' | 'grey' | 'gray'; textStyle?: 'normal-text' | 'thin-text'; size?: 'small' | 'medium' | 'large'; closeTag?: boolean; iconName?: string; ariaLabel?: string; onClose?: (e: CustomEvent) => void; } export declare interface IPktTextarea extends TextareaHTMLAttributes<HTMLTextAreaElement> { id: string; ariaDescribedby?: string; ariaLabelledby?: string; counter?: boolean; counterMaxLength?: number; disabled?: boolean; errorMessage?: string | ReactNode | ReactNode[]; hasError?: boolean; helptext?: string | ReactNode | ReactNode[]; helptextDropdown?: string | ReactNode | ReactNode[]; helptextDropdownButton?: string; inline?: boolean; fullwidth?: boolean; label: string; name?: string; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; placeholder?: string; rows?: number; useWrapper?: boolean; value?: string; autocomplete?: string; minLength?: number; maxLength?: number; readOnly?: boolean; required?: boolean; skipForwardTestid?: boolean; onChange?: ChangeEventHandler<HTMLTextAreaElement>; } export declare interface IPktTextinput extends InputHTMLAttributes<HTMLInputElement> { id: string; ariaDescribedby?: string; ariaLabelledby?: string; autocomplete?: string; counter?: boolean; counterMaxLength?: number; disabled?: boolean; errorMessage?: string | ReactNode | ReactNode[]; hasError?: boolean; helptext?: string | ReactNode | ReactNode[]; helptextDropdown?: string | ReactNode | ReactNode[]; helptextDropdownButton?: string; iconNameRight?: string; inline?: boolean; fullwidth?: boolean; label: string; name?: string; optionalTag?: boolean; optionalText?: string; requiredTag?: boolean; requiredText?: string; tagText?: string | null; placeholder?: string; prefix?: string; suffix?: string; type?: string; useWrapper?: boolean; value?: string; omitSearchIcon?: boolean; min?: number | string; max?: number | string; minLength?: number; maxLength?: number; step?: string; size?: number; readonly?: boolean; required?: boolean; dataTestid?: string; onChange?: ChangeEventHandler<HTMLInputElement>; skipForwardTestid?: boolean; } declare interface ISearch extends HTMLProps<HTMLInputElement> { appearance?: 'local' | 'local-with-button' | 'global'; disabled?: boolean; fullwidth?: boolean; id: string; label?: string; name?: string; placeholder?: string; suggestions?: SearchSuggestion[]; value?: string | undefined; onSearch?: (value: string) => void; onSuggestionClick?: (index: number) => void; action?: string; method?: 'get' | 'post' | 'dialog'; } declare interface ISearchForm extends ISearch { action?: string; method?: 'get' | 'post' | 'dialog'; } declare interface ISearchInput extends ISearch { onChange: (event: default_2.ChangeEvent<HTMLInputElement>) => void; disabled?: boolean; } declare interface ISpecObject { name?: string; 'css-class'?: string; 'dark-mode'?: boolean; isElement?: boolean; props?: Record<string, PropObject | string[]>; events?: Record<string, PropObject>; slots?: Record<string, any>; default?: any; } declare interface ITableBodyProps { className?: string; children: React_2.ReactNode; } declare interface ITableDataCellProps { className?: string; children?: React_2.ReactNode; dataLabel?: string; } declare interface ITableHeaderCellProps { className?: string; children: React_2.ReactNode; } declare interface ITableHeaderProps { className?: string; children: React_2.ReactNode; } declare interface ITableProps { compact?: boolean; skin?: 'basic' | 'zebra-blue'; responsiveView?: boolean; className?: string; children: React_2.ReactNode; } declare interface ITableRowProps { className?: string; children: React_2.ReactNode; } declare interface Link { href: string; text: string; external?: boolean; openInNewTab?: boolean; } export declare const PktAccordion: FC<IPktAccordion>; export declare const PktAccordionItem: FC<IPktAccordionItem>; export declare const PktAlert: FC<IPktAlert>; export declare const PktBackLink: default_2.ForwardRefExoticComponent<IPktBackLink>; export declare const PktBreadcrumbs: default_2.ForwardRefExoticComponent<IPktBreadcrumbs & default_2.RefAttributes<HTMLAnchorElement>>; export declare const PktButton: default_2.ForwardRefExoticComponent<IPktButton & default_2.RefAttributes<HTMLButtonElement>>; export declare const PktCard: FC<IPktCard>; export declare const PktCheckbox: default_2.ForwardRefExoticComponent<IPktCheckbox & default_2.RefAttributes<HTMLInputElement>>; export declare const PktCombobox: FC<IPktCombobox>; export declare const PktConsent: ForwardRefExoticComponent<IPktConsent>; export declare const PktDatepicker: FC<IPktDatepicker>; declare interface PktElType extends default_2.HTMLAttributes<HTMLElement> { className?: string; style?: default_2.CSSProperties; children?: default_2.ReactNode | default_2.ReactNode[]; ref?: default_2.RefObject<HTMLElement> | default_2.LegacyRef<HTMLElement>; id?: string; } declare interface PktEventWithTarget extends Event { target: EventTarget & HTMLInputElement; } export declare const PktFooter: default_2.FC<IPktFooter>; export declare const PktFooterSimple: default_2.FC<IPktFooterSimple>; export declare const PktHeader: default_2.ForwardRefExoticComponent<IPktHeader & default_2.RefAttributes<HTMLDivElement>>; export declare const PktHelptext: FC<IPktHelptextProps>; export declare const PktIcon: FC<IPktIcon>; /** * Input component * @param {string} label - Label for the input * @param {string} id - Id for the input * @param {string} validationMessage - Validation message for the input * @param {React.InputHTMLAttributes<HTMLInputElement>} props - Other props to pass to the input * @returns {React.ReactElement} - React element * * @example * <Input label="First name" id="firstName" validationMessage="First name is required" /> * */ export declare const PktInput: default_2.ForwardRefExoticComponent<InputProps & default_2.RefAttributes<HTMLInputElement>>; export declare const PktInputWrapper: ForwardRefExoticComponent<Omit<IPktInputWrapper, "ref"> & RefAttributes<HTMLDivElement>>; export declare const PktLink: FC<IPktLink>; export declare const PktLinkCard: FC<IPktLinkCard>; export declare const PktLoader: FC<IPktLoader>; export declare const PktMessagebox: FC<IPktMessagebox>; export declare const PktModal: FC<IPktModal>; export declare const PktPreview: default_2.FC<PreviewProps>; export declare const PktProgressbar: default_2.ForwardRefExoticComponent<Omit<IPktProgressbar, "ref"> & default_2.RefAttributes<HTMLElement>>; export declare const PktRadioButton: default_2.ForwardRefExoticComponent<IPktRadioButton & default_2.RefAttributes<HTMLInputElement>>; export declare const PktSearchInput: default_2.ForwardRefExoticComponent<(Omit<ISearchForm, "ref"> | Omit<ISearchInput, "ref">) & default_2.RefAttributes<HTMLInputElement>>; export declare const PktSelect: ForwardRefExoticComponent<IPktSelectProps & RefAttributes<HTMLSelectElement>>; export declare const PktStep: ({ children, className, status, title }: IPktStep) => JSX_2.Element; export declare const PktStepper: default_2.ForwardRefExoticComponent<IPktStepper & default_2.RefAttributes<HTMLOListElement>>; export declare const PktTable: ({ className, compact, skin, responsiveView, children, }: ITableProps) => JSX_2.Element; export declare const PktTableBody: ({ children, className }: ITableBodyProps) => JSX_2.Element; export declare const PktTableDataCell: ({ children, className, dataLabel }: ITableDataCellProps) => JSX_2.Element; export declare const PktTableHeader: ({ className, children }: ITableHeaderProps) => JSX_2.Element; export declare const PktTableHeaderCell: ({ className, children }: ITableHeaderCellProps) => JSX_2.Element; export declare const PktTableRow: ({ className, children }: ITableRowProps) => JSX_2.Element; export declare const PktTabs: default_2.ForwardRefExoticComponent<IPktTabs & default_2.RefAttributes<HTMLDivElement>>; export declare const PktTag: FC<IPktTag>; export declare const PktTextarea: default_2.ForwardRefExoticComponent<IPktTextarea & default_2.RefAttributes<HTMLTextAreaElement>>; export declare const PktTextinput: default_2.ForwardRefExoticComponent<IPktTextinput & default_2.RefAttributes<HTMLInputElement>>; declare interface PreviewProps { children?: ReactNode; specs: ISpecObject; fullWidth?: boolean; } declare type PropObject = { name?: string; description?: string; type?: string | string[]; variant?: string; converter?: string; reflect?: boolean; default?: any; previewDefault?: any; items?: PropObject; }; declare interface Representing { name?: string; shortname?: string; orgNumber?: string | number; } declare interface SearchSuggestion { title?: string; text?: string; href?: string; onClick?: () => void; } declare interface SocialLink { href: string; iconName?: string; language?: string; openInNewTab?: boolean; } declare type TCardImageShape = 'square' | 'round'; declare type TCardPadding = 'none' | 'default'; declare type TCardSkin = 'outlined' | 'outlined-beige' | 'gray' | 'beige' | 'green' | 'blue'; declare type TCardTagPosition = 'top' | 'bottom'; declare type TLayout = 'vertical' | 'horizontal'; declare type TSkin = 'blue' | 'green' | 'red' | 'beige' | 'yellow' | 'grey' | 'gray' | 'blue-light'; declare type TStepStatus = 'completed' | 'incomplete' | 'current'; declare interface User { name?: string; shortname?: string; lastLoggedIn?: string | Date; } declare interface UserMenuFooterItem { title: string; target: string | (() => void); } declare interface UserMenuItem { iconName?: string; title: string; target: string | (() => void); } export { }