@payfit/unity-components 0.0.0-alpha.12 → 0.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/button/Button.d.cts +5 -2
- package/dist/cjs/components/checkbox/Checkbox.variants.cjs +1 -1
- package/dist/cjs/components/data-table/DataTable.cjs +1 -1
- package/dist/cjs/components/data-table/DataTable.d.cts +3 -6
- package/dist/cjs/components/date-calendar/DateCalendar.cjs +1 -0
- package/dist/cjs/components/date-calendar/DateCalendar.d.cts +23 -0
- package/dist/cjs/components/date-calendar/hooks/useMonthsList.d.cts +4 -0
- package/dist/cjs/components/date-calendar/hooks/useYearsList.d.cts +10 -0
- package/dist/cjs/components/date-picker/DatePicker.cjs +1 -1
- package/dist/cjs/components/date-picker/DatePicker.d.cts +3 -3
- package/dist/cjs/components/definition-tooltip/DefinitionTooltip.cjs +1 -0
- package/dist/cjs/components/definition-tooltip/DefinitionTooltip.d.cts +23 -0
- package/dist/cjs/components/dialog/parts/DialogActions/DialogButton.cjs +1 -1
- package/dist/cjs/components/dialog/parts/DialogActions/DialogButton.d.cts +2 -2
- package/dist/cjs/components/icon-button/CircularIconButton.cjs +1 -1
- package/dist/cjs/components/icon-button/CircularIconButton.d.cts +0 -21
- package/dist/cjs/components/icon-button/IconButton.d.cts +1 -1
- package/dist/cjs/components/number-field/NumberField.cjs +1 -0
- package/dist/cjs/components/number-field/NumberField.d.cts +47 -0
- package/dist/cjs/components/number-input/NumberInput.cjs +1 -0
- package/dist/cjs/components/number-input/NumberInput.d.cts +216 -0
- package/dist/cjs/components/pagination/Pagination.cjs +1 -1
- package/dist/cjs/components/pagination/hooks/use-pagination.cjs +1 -1
- package/dist/cjs/components/pagination/hooks/use-pagination.d.cts +2 -1
- package/dist/cjs/components/popover/Popover.cjs +1 -1
- package/dist/cjs/components/popover/parts/PopoverHeader.cjs +1 -1
- package/dist/cjs/components/radio-button-group/parts/RadioButton.cjs +1 -1
- package/dist/cjs/components/select-field/test-utils.cjs +1 -0
- package/dist/cjs/components/selectable-button-group/SelectableButtonGroup.cjs +1 -1
- package/dist/cjs/components/selectable-button-group/SelectableButtonGroup.context.d.cts +5 -1
- package/dist/cjs/components/selectable-button-group/SelectableButtonGroup.d.cts +7 -1
- package/dist/cjs/components/selectable-button-group/parts/SelectableButton.cjs +1 -1
- package/dist/cjs/components/selectable-button-group/parts/SelectableButton.d.cts +35 -0
- package/dist/cjs/components/selectable-button-group-field/SelectableButtonGroupField.cjs +1 -0
- package/dist/cjs/components/selectable-button-group-field/SelectableButtonGroupField.d.cts +59 -0
- package/dist/cjs/components/side-panel/SidePanel.cjs +1 -1
- package/dist/cjs/components/side-panel/SidePanel.d.cts +6 -0
- package/dist/cjs/components/table/Table.cjs +1 -1
- package/dist/cjs/components/table/Table.d.cts +4 -0
- package/dist/cjs/components/table/parts/TableCell.cjs +1 -1
- package/dist/cjs/components/tabs/parts/NavigationButton.cjs +1 -1
- package/dist/cjs/components/tabs/parts/TabList.cjs +1 -1
- package/dist/cjs/components/text/Text.cjs +1 -1
- package/dist/cjs/components/text/Text.d.cts +1 -1
- package/dist/cjs/components/text/Text.variants.cjs +1 -1
- package/dist/cjs/components/text/Text.variants.d.cts +7 -0
- package/dist/cjs/components/tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/tooltip/Tooltip.d.cts +4 -3
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.d.cts +5 -0
- package/dist/cjs/index.storybook-testing.d.cts +1 -0
- package/dist/cjs/storybook-testing.cjs +1 -1
- package/dist/esm/components/button/Button.d.ts +5 -2
- package/dist/esm/components/checkbox/Checkbox.variants.js +4 -4
- package/dist/esm/components/data-table/DataTable.d.ts +3 -6
- package/dist/esm/components/data-table/DataTable.js +61 -56
- package/dist/esm/components/date-calendar/DateCalendar.d.ts +23 -0
- package/dist/esm/components/{date-picker/parts → date-calendar}/DateCalendar.js +62 -60
- package/dist/esm/components/date-calendar/hooks/useMonthsList.d.ts +4 -0
- package/dist/esm/components/date-calendar/hooks/useYearsList.d.ts +10 -0
- package/dist/esm/components/date-picker/DatePicker.d.ts +3 -3
- package/dist/esm/components/date-picker/DatePicker.js +22 -22
- package/dist/esm/components/definition-tooltip/DefinitionTooltip.d.ts +23 -0
- package/dist/esm/components/definition-tooltip/DefinitionTooltip.js +29 -0
- package/dist/esm/components/dialog/parts/DialogActions/DialogButton.d.ts +2 -2
- package/dist/esm/components/dialog/parts/DialogActions/DialogButton.js +31 -27
- package/dist/esm/components/icon-button/CircularIconButton.d.ts +0 -21
- package/dist/esm/components/icon-button/CircularIconButton.js +23 -26
- package/dist/esm/components/icon-button/IconButton.d.ts +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +47 -0
- package/dist/esm/components/number-field/NumberField.js +71 -0
- package/dist/esm/components/number-input/NumberInput.d.ts +216 -0
- package/dist/esm/components/number-input/NumberInput.js +214 -0
- package/dist/esm/components/pagination/Pagination.js +17 -16
- package/dist/esm/components/pagination/hooks/use-pagination.d.ts +2 -1
- package/dist/esm/components/pagination/hooks/use-pagination.js +12 -11
- package/dist/esm/components/popover/Popover.js +25 -21
- package/dist/esm/components/popover/parts/PopoverHeader.js +17 -15
- package/dist/esm/components/radio-button-group/parts/RadioButton.js +1 -1
- package/dist/esm/components/select-field/test-utils.js +25 -0
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +5 -1
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +7 -1
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -16
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +35 -0
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +44 -36
- package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +59 -0
- package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.js +45 -0
- package/dist/esm/components/side-panel/SidePanel.d.ts +6 -0
- package/dist/esm/components/side-panel/SidePanel.js +38 -35
- package/dist/esm/components/table/Table.d.ts +4 -0
- package/dist/esm/components/table/Table.js +96 -71
- package/dist/esm/components/table/parts/TableCell.js +5 -5
- package/dist/esm/components/tabs/parts/NavigationButton.js +4 -4
- package/dist/esm/components/tabs/parts/TabList.js +44 -35
- package/dist/esm/components/text/Text.d.ts +1 -1
- package/dist/esm/components/text/Text.js +6 -5
- package/dist/esm/components/text/Text.variants.d.ts +7 -0
- package/dist/esm/components/text/Text.variants.js +2 -1
- package/dist/esm/components/tooltip/Tooltip.d.ts +4 -3
- package/dist/esm/components/tooltip/Tooltip.js +13 -12
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +237 -225
- package/dist/esm/index.storybook-testing.d.ts +1 -0
- package/dist/esm/storybook-testing.js +3 -1
- package/i18n/en-GB.json +2 -0
- package/i18n/es-ES.json +2 -0
- package/i18n/fr-FR.json +2 -0
- package/package.json +7 -6
- package/dist/cjs/components/date-picker/parts/DateCalendar.cjs +0 -1
- package/dist/cjs/components/date-picker/parts/DateCalendar.d.cts +0 -9
- package/dist/cjs/components/popover/parts/PopoverContent.cjs +0 -1
- package/dist/esm/components/date-picker/parts/DateCalendar.d.ts +0 -9
- package/dist/esm/components/popover/parts/PopoverContent.js +0 -9
- /package/dist/cjs/components/{date-picker → date-calendar}/hooks/useMonthsList.cjs +0 -0
- /package/dist/cjs/components/{date-picker → date-calendar}/hooks/useYearsList.cjs +0 -0
- /package/dist/cjs/components/{date-picker → date-calendar}/parts/DateSegmentSelect.cjs +0 -0
- /package/dist/cjs/components/{date-picker → date-calendar}/parts/DateSegmentSelect.d.cts +0 -0
- /package/dist/esm/components/{date-picker → date-calendar}/hooks/useMonthsList.js +0 -0
- /package/dist/esm/components/{date-picker → date-calendar}/hooks/useYearsList.js +0 -0
- /package/dist/esm/components/{date-picker → date-calendar}/parts/DateSegmentSelect.d.ts +0 -0
- /package/dist/esm/components/{date-picker → date-calendar}/parts/DateSegmentSelect.js +0 -0
|
@@ -28,15 +28,18 @@ type UnityButtonProps = AriaButtonProps & ButtonBase & {
|
|
|
28
28
|
*/
|
|
29
29
|
isLoading?: boolean;
|
|
30
30
|
};
|
|
31
|
-
|
|
31
|
+
type UnionButtonProps = (UnityButtonProps & {
|
|
32
32
|
variant: 'primary';
|
|
33
33
|
} & ButtonFilled) | (UnityButtonProps & {
|
|
34
34
|
variant: 'secondary';
|
|
35
35
|
} & ButtonOutlined) | (UnityButtonProps & {
|
|
36
36
|
variant: 'ghost';
|
|
37
37
|
} & ButtonGhost);
|
|
38
|
+
export type ButtonProps = PropsWithChildren<Omit<UnionButtonProps, 'style'>>;
|
|
38
39
|
/**
|
|
39
40
|
* Buttons allow users to take actions, and make choices, with a single tap.
|
|
40
41
|
*/
|
|
41
|
-
declare const Button: import('react').ForwardRefExoticComponent<
|
|
42
|
+
declare const Button: import('react').ForwardRefExoticComponent<Omit<UnionButtonProps, "style"> & {
|
|
43
|
+
children?: import('react').ReactNode | undefined;
|
|
44
|
+
} & import('react').RefAttributes<HTMLButtonElement>>;
|
|
42
45
|
export { Button };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("tailwind-variants"),a=e.tv({slots:{base:"uy-group uy-inline-flex uy-flex-col uy-gap-50 uy-py-[1px]",wrapper:"uy-inline-flex uy-items-start uy-gap-[2px] uy-typography-body uy-text-content-form-enabled data-[focus-visible]:uy-outline data-[focus-visible]:uy-outline-[2px] data-[focus-visible]:uy-outline-utility-focus-ring data-[focus-visible]:uy-outline-offset-2 uy-rounded-25",asterisk:"uy-text-content-danger",optionalTag:"uy-typography-body",descriptionsContainer:"uy-ml-300 uy-leading-0 uy-inline-flex uy-flex-col uy-gap-50",helperText:"uy-typography-body-small uy-text-content-neutral-low",feedbackText:"uy-typography-body-small-strong uy-text-content-form-invalid"},variants:{isDisabled:{true:{base:"!uy-text-content-form-disabled"}},isInvalid:{true:{}},isReadOnly:{true:{base:"uy-cursor-not-allowed"}}},defaultVariants:{isDisabled:!1,isInvalid:!1,isReadOnly:!1},compoundVariants:[{isDisabled:!1,isReadOnly:!1,className:{wrapper:"uy-cursor-pointer"}},{isDisabled:!0,isReadOnly:!1,className:{wrapper:"uy-cursor-not-allowed"}},{isDisabled:!1,isReadOnly:!0,className:{wrapper:"uy-cursor-not-allowed"}},{isDisabled:!0,isReadOnly:!0,className:{wrapper:"uy-cursor-not-allowed"}}]});exports.checkbox=a;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("tailwind-variants"),a=e.tv({slots:{base:"uy-group uy-inline-flex uy-flex-col uy-gap-50 uy-py-[1px]",wrapper:"uy-inline-flex uy-items-start uy-gap-[2px] uy-typography-body uy-text-content-form-enabled data-[focus-visible]:uy-outline data-[focus-visible]:uy-outline-[2px] data-[focus-visible]:uy-outline-utility-focus-ring data-[focus-visible]:uy-outline-offset-2 uy-rounded-25 uy-leading-[1lh]",asterisk:"uy-text-content-danger",optionalTag:"uy-typography-body uy-leading-[1lh]",descriptionsContainer:"uy-ml-300 uy-leading-0 uy-inline-flex uy-flex-col uy-gap-50",helperText:"uy-typography-body-small uy-text-content-neutral-low",feedbackText:"uy-typography-body-small-strong uy-text-content-form-invalid"},variants:{isDisabled:{true:{base:"!uy-text-content-form-disabled"}},isInvalid:{true:{}},isReadOnly:{true:{base:"uy-cursor-not-allowed"}}},defaultVariants:{isDisabled:!1,isInvalid:!1,isReadOnly:!1},compoundVariants:[{isDisabled:!1,isReadOnly:!1,className:{wrapper:"uy-cursor-pointer"}},{isDisabled:!0,isReadOnly:!1,className:{wrapper:"uy-cursor-not-allowed"}},{isDisabled:!1,isReadOnly:!0,className:{wrapper:"uy-cursor-not-allowed"}},{isDisabled:!0,isReadOnly:!0,className:{wrapper:"uy-cursor-not-allowed"}}]});exports.checkbox=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),x=require("@tanstack/react-table"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),x=require("@tanstack/react-table"),y=require("../table/parts/TableBody.cjs"),E=require("../table/parts/TableColumnHeader.cjs"),c=require("../table/parts/TableEmptyState.cjs"),H=require("../table/parts/TableHeader.cjs"),w=require("../table/parts/TablePagination.cjs"),S=require("../table/Table.cjs"),z=require("./parts/ColumnSortHeader.cjs");function f({table:t,isLoading:l,error:a,emptyState:u,loadingState:p,errorState:j,pagination:o,minRows:P,maxRows:C,children:q,...s}){var T;const i=m.useRef(null),{pageIndex:d,pageSize:g}=t.getState().pagination;m.useEffect(()=>{var r;(r=i.current)==null||r.scrollToTop()},[d,g]);const R={label:s.label,description:s.description,isHorizontalScrollEnabled:s.isHorizontalScrollEnabled},b=()=>{if(l)return p??e.jsx(c.TableEmptyStateLoading,{});if(a)return j??e.jsx(c.TableEmptyStateError,{})},h=()=>l||a?b():t.getRowModel().rows.length===0?u??e.jsx(c.TableEmptyStateNoData,{}):u;return e.jsxs(S.TableRoot,{minRows:P,maxRows:C,children:[e.jsxs(S.Table,{ref:i,...R,children:[e.jsx(H.TableHeader,{children:t.getHeaderGroups().map(r=>r.headers.map(n=>e.jsx(E.TableColumnHeader,{children:n.column.getCanSort()?e.jsx(z.ColumnSortHeader,{header:n,children:e.jsx("span",{children:x.flexRender(n.column.columnDef.header,n.getContext())})}):e.jsx("span",{children:x.flexRender(n.column.columnDef.header,n.getContext())})},n.id)))}),e.jsx(y.TableBody,{renderEmptyState:h,renderDataState:b,children:!l&&!a&&t.getRowModel().rows.map(q)})]}),t.getPageCount()>1&&e.jsx(w.TablePagination,{pageCount:t.getPageCount(),rowCount:t.getPaginationRowModel().rows.length,currentPage:d+1,rowsPerPage:g,pageSizeOptions:o==null?void 0:o.pageSizeOptions,onPageChange:r=>{t.setPageIndex(r-1)},onPageSizeChange:r=>{t.setPageSize(r)},itemLabel:(T=o==null?void 0:o.labels)==null?void 0:T.itemLabel})]})}f.displayName="DataTable";exports.DataTable=f;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { Row, Table as TableType } from '@tanstack/react-table';
|
|
3
3
|
import { TablePaginationProps } from '../table/parts/TablePagination.cjs';
|
|
4
|
+
import { TableProps, TableRootProps } from '../table/Table.cjs';
|
|
4
5
|
export interface DataTablePaginationLabels {
|
|
5
6
|
/** Label for the "rows per page" and pagination label dropdown */
|
|
6
7
|
itemLabel?: string;
|
|
@@ -11,13 +12,9 @@ export interface DataTablePaginationOptions {
|
|
|
11
12
|
/** Custom labels for pagination */
|
|
12
13
|
labels?: DataTablePaginationLabels;
|
|
13
14
|
}
|
|
14
|
-
export interface DataTableProps<TData> {
|
|
15
|
+
export interface DataTableProps<TData> extends Omit<TableRootProps, 'children'>, Omit<TableProps, 'children'> {
|
|
15
16
|
/** The table instance from @tanstack/react-table */
|
|
16
17
|
table: TableType<TData>;
|
|
17
|
-
/** The minimum number of rows to display, affecting the minimum height */
|
|
18
|
-
minRows?: number;
|
|
19
|
-
/** The maximum number of rows to display, affecting the maximum height */
|
|
20
|
-
maxRows?: number;
|
|
21
18
|
/** Optional loading state */
|
|
22
19
|
isLoading?: boolean;
|
|
23
20
|
/** Optional error state */
|
|
@@ -87,7 +84,7 @@ export interface DataTableProps<TData> {
|
|
|
87
84
|
* @remarks
|
|
88
85
|
* [API](https://unity-components.payfit.io/?path=/docs/data-datatable--docs) • [Demo](https://unity-components.payfit.io/?path=/docs/data-datatable--docs)
|
|
89
86
|
*/
|
|
90
|
-
declare function DataTable<TData extends object>({ table, isLoading, error, emptyState, loadingState, errorState, pagination, minRows, maxRows, children, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
87
|
+
declare function DataTable<TData extends object>({ table, isLoading, error, emptyState, loadingState, errorState, pagination, minRows, maxRows, children, ...rest }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
91
88
|
declare namespace DataTable {
|
|
92
89
|
var displayName: string;
|
|
93
90
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),x=require("react"),l=require("@internationalized/date"),t=require("react-aria-components"),Y=require("tailwind-variants"),g=require("../icon-button/IconButton.cjs"),B=require("./hooks/useMonthsList.cjs"),M=require("./hooks/useYearsList.cjs"),m=require("./parts/DateSegmentSelect.cjs"),T=Y.tv({slots:{base:"",calendarWrapper:"uy-flex uy-flex-col uy-gap-100",dialogHeader:"uy-flex uy-items-center uy-h-500 uy-w-full",dialogHeaderGroup:"uy-flex uy-items-center",calendarGrid:"uy-border-separate uy-border-spacing-25 uy-w-full",calendarHeaderCell:"uy-typography-body-strong uy-text-content-neutral-low uy-w-[44px] uy-h-[44px] uy-p-[1px] uy-uppercase",calendarCell:["uy-typography-body uy-relative uy-text-content-form-enabled uy-w-[44px] uy-h-[44px] uy-p-[1px] uy-outline-hidden uy-cursor-pointer uy-rounded-circle uy-flex uy-items-center uy-justify-center","hover:uy-bg-surface-neutral-hover active:uy-bg-surface-form-active data-[pressed]:uy-bg-surface-neutral-pressed focus-visible:uy-outline-2 focus-visible:uy-outline-utility-focus-ring focus-visible:uy-outline-offset-2","data-[outside-month]:uy-text-content-neutral-disabled data-[outside-month]:uy-cursor-not-allowed data-[disabled]:uy-text-content-neutral-disabled data-[disabled]:uy-cursor-not-allowed data-[unavailable]:uy-text-content-neutral-disabled data-[unavailable]:uy-cursor-not-allowed","data-[selected]:uy-bg-surface-form-active data-[selected]:uy-text-content-inverted","data-[today]:after:uy-content-' ' data-[today]:after:uy-absolute data-[today]:after:uy-bottom-150 data-[today]:after:uy-w-100 data-[today]:after:uy-h-25 data-[today]:after:uy-bg-border-primary-active data-[today]:data-[selected]:after:uy-bg-content-inverted"]},variants:{isDisabled:{true:{calendarHeaderCell:"uy-text-content-form-disabled"}}},defaultVariants:{isDisabled:!1}});function p({value:b,defaultValue:n,minValue:r,maxValue:d,onChange:i,onFocusChange:o,...s}){const f=l.today(l.getLocalTimeZone()),[v,D]=x.useState(b??n??f),[u,c]=x.useState(b??n??f),j=B.useMonthsList(),C=M.useYearsList({startYear:r==null?void 0:r.year,endYear:d==null?void 0:d.year}),N=a=>{c(y=>y.set({month:parseInt(a,10)}))},S=a=>{c(y=>y.set({year:parseInt(a,10)}))},{base:w,calendarWrapper:H,dialogHeader:q,dialogHeaderGroup:h,calendarGrid:L,calendarHeaderCell:G,calendarCell:I}=T({isDisabled:s.isDisabled});return e.jsx("div",{className:w(),"data-dd-privacy":"mask",children:e.jsx(t.Calendar,{...s,minValue:r,maxValue:d,value:v,defaultValue:n,onChange:a=>{D(a),i==null||i(a)},focusedValue:u,onFocusChange:a=>{c(a),o==null||o(a)},children:e.jsxs("div",{className:H(),children:[e.jsxs("header",{className:q(),children:[e.jsx(t.Heading,{className:"uy-sr-only"}),e.jsxs("div",{className:h({className:"uy-pl-100 uy-gap-200"}),children:[e.jsx(m.DateSegmentSelect,{type:"month",items:j,value:u.month.toString(),onChange:N,isDisabled:s.isDisabled}),e.jsx(m.DateSegmentSelect,{type:"year",items:C,value:u.year.toString(),onChange:S,isDisabled:s.isDisabled})]}),e.jsxs("div",{className:h({className:"uy-ml-auto uy-gap-100"}),children:[e.jsx(g.IconButton,{slot:"previous",icon:"CaretLeftOutlined",color:"neutral",label:"Previous",variant:"ghost",isDisabled:s.isDisabled}),e.jsx(g.IconButton,{slot:"next",icon:"CaretRightOutlined",color:"neutral",label:"Next",variant:"ghost",isDisabled:s.isDisabled})]})]}),e.jsxs(t.CalendarGrid,{className:L(),weekdayStyle:"short",children:[e.jsx(t.CalendarGridHeader,{children:a=>e.jsx(t.CalendarHeaderCell,{className:G(),children:a})}),e.jsx(t.CalendarGridBody,{children:a=>e.jsx(t.CalendarCell,{date:a,"data-today":l.isToday(a,l.getLocalTimeZone())?!0:void 0,className:I()})})]})]})})})}p.displayName="DateCalendar";exports.DateCalendar=p;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DateValue } from '@internationalized/date';
|
|
2
|
+
import { CalendarProps as AriaDateCalendarProps } from 'react-aria-components';
|
|
3
|
+
type PropsFromAriaCalendar<TDate extends DateValue> = AriaDateCalendarProps<TDate>;
|
|
4
|
+
export type DateCalendarProps<TDate extends DateValue> = PropsFromAriaCalendar<TDate>;
|
|
5
|
+
/**
|
|
6
|
+
* The `DateCalendar` component displays one or more date grids and allows users to navigate through dates select a single date.
|
|
7
|
+
* @param {DateCalendarProps} props - The props for the `DateCalendar` component
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { DateCalendar } from '@payfit/unity-components'
|
|
11
|
+
* import { CalendarDate } from '@internationalized/date'
|
|
12
|
+
*
|
|
13
|
+
* const [date, setDate] = useState(new CalendatDate(2022, 1, 1))
|
|
14
|
+
* <DateCalendar value={date} onChange={setDate} />
|
|
15
|
+
* ```
|
|
16
|
+
* @see {@link DateCalendarProps} for all available props
|
|
17
|
+
* @remarks [API and Demos](https://unity-components.payfit.io/?path=/docs/date-and-time-datecalendar--docs)
|
|
18
|
+
*/
|
|
19
|
+
declare function DateCalendar<TDate extends DateValue>({ value, defaultValue, minValue, maxValue, onChange, onFocusChange, ...props }: DateCalendarProps<TDate>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare namespace DateCalendar {
|
|
21
|
+
var displayName: string;
|
|
22
|
+
}
|
|
23
|
+
export { DateCalendar };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface UseYearsListOptions {
|
|
2
|
+
yearsBefore?: number;
|
|
3
|
+
yearsAfter?: number;
|
|
4
|
+
startYear?: number;
|
|
5
|
+
endYear?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function useYearsList({ yearsBefore, yearsAfter, startYear, endYear, }?: UseYearsListOptions): {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
}[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),I=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),I=require("react"),t=require("react-aria-components"),N=require("react-intl"),m=require("tailwind-variants"),P=require("../date-calendar/DateCalendar.cjs"),W=require("../icon/Icon.cjs"),R=require("./parts/DateInput.cjs"),U=m.tv({slots:{base:["uy-group uy-flex uy-h-500 uy-border uy-border-solid uy-rounded-100","active:uy-border-border-form-active data-[focus-visible]:uy-border-border-form-active"],inputWrapper:["uy-flex uy-grow uy-rounded-75 uy-outline-none","focus-within:uy-outline-2 focus-within:uy-outline-utility-focus-ring focus-within:uy-outline-offset-2","group-[:has(button:focus)]:data-[focus-within]:uy-outline-none group-[:has(button:focus)]:data-[focus-within]:uy-outline-offset-0 group-[:has(button:focus)]:data-[focus-within]:uy-outline-transparent"],suffix:["uy-flex-grow-0 uy-content-center uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-border-l uy-border-solid uy-rounded-r-100","hover:uy-bg-surface-neutral-hover active:uy-bg-surface-neutral-pressed active:uy-border-border-form-active data-[pressed]:uy-bg-surface-neutral-pressed data-[pressed]:uy-border-border-form-active","focus-visible:uy-outline-2 focus-visible:uy-outline-utility-focus-ring focus-visible:uy-outline-offset-[3px]"]},variants:{isInvalid:{true:{base:"uy-border-border-form-error uy-bg-surface-form-error",suffix:"uy-bg-surface-form-error uy-border-border-form-error"}},isReadOnly:{true:{base:"uy-border-border-form-disabled uy-bg-surface-form-disabled",inputWrapper:"uy-border-border-form-disabled uy-bg-surface-form-disabled",suffix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-disabled"}},isDisabled:{true:{base:"uy-border-border-form-disabled uy-bg-surface-form-disabled",inputWrapper:"uy-bg-surface-form-disabled uy-text-content-form-disabled",suffix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-disabled"}}},compoundVariants:[{isInvalid:!1,isDisabled:!1,isReadOnly:!1,className:{base:"uy-border-border-form-enabled uy-bg-surface-form-enabled",suffix:"uy-border-border-form-enabled uy-bg-surface-neutral-low uy-text-content-form-enabled"}}]}),M=m.tv({base:"uy-overflow-auto uy-shadow-floating uy-border uy-border-solid uy-border-border-neutral uy-bg-surface-neutral uy-rounded-75",variants:{isEntering:{true:"uy-animate-in uy-fade-in data-[placement-bottom]:uy-slide-in-from-top-1 data-[placement-top]:uy-slide-in-from-bottom-1 uy-duration-200 uy-ease-out"},isExiting:{true:"uy-animate-out uy-fade-out data-[placement-bottom]:uy-slide-out-to-top-1 data-[placement-top]:uy-slide-out-to-bottom-1 uy-duration-150 uy-ease-in"}}}),p=I.forwardRef(({value:f,defaultValue:b,isInvalid:y,isLoading:v,isDisabled:u,isReadOnly:o,onClearButtonPress:d,onBlur:i,onFocus:s,onChange:n,onOpenChange:l,id:x,...e},O)=>{const g=N.useIntl(),{base:h,inputWrapper:D,suffix:w}=U({isInvalid:!!y,isReadOnly:!!o,isDisabled:!!u}),c=r=>{n==null||n(r)},k=r=>{l==null||l(r),r?s==null||s():i==null||i()},j=r=>e.isDateUnavailable?e.isDateUnavailable(r):!1,V=()=>{d==null||d()};return a.jsxs(t.DatePicker,{"data-dd-privacy":"mask",...e,className:h(),value:f,defaultValue:b,minValue:e.minValue,maxValue:e.maxValue,isReadOnly:!!o,isDisabled:!!u,onChange:c,onFocus:s,onBlur:i,onOpenChange:k,isDateUnavailable:j,children:[a.jsxs(t.Group,{className:D(),id:x,children:[a.jsx(R.DateInput,{isLoading:v,isDisabled:u,isReadOnly:o,isInvalid:y,onClearButtonPress:V}),a.jsx(t.Button,{className:w(),isDisabled:o||u,children:a.jsx(W.Icon,{src:"CalendarBlankOutlined",color:"inherit",alt:g.formatMessage({id:"unity:component:form-field:date-picker:calendar-button",defaultMessage:"Open Calendar"})})})]}),a.jsx(t.Popover,{className:({isEntering:r,isExiting:q})=>M({isEntering:r,isExiting:q}),children:a.jsx(t.Dialog,{className:"uy-p-150","data-dd-privacy":"mask",children:a.jsx(P.DateCalendar,{value:f,defaultValue:b,minValue:e.minValue,maxValue:e.maxValue,onChange:c,firstDayOfWeek:e.firstDayOfWeek})})})]})});p.displayName="DatePicker";exports.DatePicker=p;
|
|
@@ -2,15 +2,15 @@ import { CalendarDate } from '@internationalized/date';
|
|
|
2
2
|
import { DatePickerProps as AriaDatePickerProps } from 'react-aria-components';
|
|
3
3
|
export interface DatePickerProps extends Pick<AriaDatePickerProps<CalendarDate>, 'id' | 'firstDayOfWeek'> {
|
|
4
4
|
/** The currently selected date */
|
|
5
|
-
value?: CalendarDate;
|
|
5
|
+
value?: CalendarDate | null;
|
|
6
6
|
/** The default selected date (uncontrolled) */
|
|
7
|
-
defaultValue?: CalendarDate;
|
|
7
|
+
defaultValue?: CalendarDate | null;
|
|
8
8
|
/** The minimum allowed date */
|
|
9
9
|
minValue?: CalendarDate;
|
|
10
10
|
/** The maximum allowed date */
|
|
11
11
|
maxValue?: CalendarDate;
|
|
12
12
|
/** Callback fired when the date value changes */
|
|
13
|
-
onChange?: (value: CalendarDate |
|
|
13
|
+
onChange?: (value: CalendarDate | null) => void;
|
|
14
14
|
/** Callback fired when the clear button is clicked */
|
|
15
15
|
onClearButtonPress?: () => void;
|
|
16
16
|
/** Callback fired when the picker loses focus */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("react"),s=require("react-aria-components"),l=require("tailwind-variants"),c=require("../text/Text.cjs"),a=require("../tooltip/Tooltip.cjs"),f=l.tv({base:["uy-text-content-neutral-enabled uy-rounded-50 uy-py-75","hover:uy-text-content-neutral-hover","active:uy-text-content-neutral-active","focus-visible:uy-outline-2 focus-visible:uy-outline focus-visible:uy-outline-offset-2 focus-visible:uy-outline-utility-focus-ring"]}),t=r.forwardRef(({children:i,title:o,asElement:n="span",...u},y)=>e.jsx(a.Tooltip,{title:o,...u,children:e.jsx(s.Focusable,{children:e.jsx(c.Text,{variant:"actionInfo",asElement:n,role:"button",className:f(),children:i})})}));t.displayName="DefinitionTooltip";exports.DefinitionTooltip=t;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ValidTextElements } from '../text/Text.cjs';
|
|
2
|
+
import { TooltipProps } from '../tooltip/Tooltip.cjs';
|
|
3
|
+
export interface DefinitionTooltipProps extends Omit<TooltipProps, 'children'> {
|
|
4
|
+
/** The HTML element to render the definition tooltip as. Defaults to a `<span>`. */
|
|
5
|
+
asElement?: Extract<ValidTextElements, 'abbr' | 'dfn' | 'span'>;
|
|
6
|
+
/** The text to trigger the tooltip. */
|
|
7
|
+
children: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Definition tooltips provide brief definitions for words through a tooltip on hover.
|
|
11
|
+
* They may appear within a sentence or as standalone text, and should be used only to define terms or acronyms.
|
|
12
|
+
* @param {DefinitionTooltipProps} props - The props for the `DefinitionTooltip` component.
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { DefinitionTooltip } from '@payfit/unity-components'
|
|
16
|
+
*
|
|
17
|
+
* <DefinitionTooltip title="I am the description of the definition tooltip">I am an definition tooltip</DefinitionTooltip>
|
|
18
|
+
* ```
|
|
19
|
+
* @see {@link DefinitionTooltipProps} for all available props
|
|
20
|
+
* @remarks {@link https://www.payfit.design/24f360409/p/05d163-info-link|Design docs}
|
|
21
|
+
*/
|
|
22
|
+
declare const DefinitionTooltip: import('react').ForwardRefExoticComponent<DefinitionTooltipProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
23
|
+
export { DefinitionTooltip };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),f=require("react"),x=require("react-aria-components"),s=require("../../../button/Button.cjs"),l=({children:r,variant:g,onPress:t,isLoading:u,icon:n,...o})=>{const a=f.useContext(x.OverlayTriggerStateContext);switch(g){case"close":const c=t;return i.jsx(s.Button,{...o,prefixIcon:n,variant:"secondary",onPress:e=>{c&&c(e),a==null||a.close()},children:r});case"confirm":return i.jsx(s.Button,{...o,prefixIcon:n,variant:"primary",isLoading:u,onPress:e=>{t&&t(e)},children:r});case"danger":return i.jsx(s.Button,{...o,variant:"primary",color:"danger",isLoading:u,prefixIcon:n??"WarningCircleOutlined",onPress:e=>{t&&t(e)},children:r})}};l.displayName="DialogButton";exports.DialogButton=l;
|
|
@@ -3,7 +3,7 @@ import { PropsWithChildren } from 'react';
|
|
|
3
3
|
import { ButtonProps } from '../../../button/Button.cjs';
|
|
4
4
|
type ButtonVariant = 'close' | 'confirm' | 'danger';
|
|
5
5
|
type OnPressParameters = Parameters<NonNullable<ButtonProps['onPress']>>[0];
|
|
6
|
-
export type DialogButtonProps<T extends ButtonVariant> = {
|
|
6
|
+
export type DialogButtonProps<T extends ButtonVariant> = Omit<ButtonProps, 'variant' | 'color'> & {
|
|
7
7
|
/** the different variants for the button */
|
|
8
8
|
variant: T;
|
|
9
9
|
/** the icon, it is a discouraged practice, except for `danger` variant which has a `WarningCircleOutlined` as default */
|
|
@@ -16,7 +16,7 @@ export type DialogButtonProps<T extends ButtonVariant> = {
|
|
|
16
16
|
*
|
|
17
17
|
*/
|
|
18
18
|
declare const DialogButton: {
|
|
19
|
-
<T extends ButtonVariant>({ children, variant, onPress, isLoading, icon, }: PropsWithChildren<DialogButtonProps<T>>): import("react/jsx-runtime").JSX.Element | undefined;
|
|
19
|
+
<T extends ButtonVariant>({ children, variant, onPress, isLoading, icon, ...props }: PropsWithChildren<DialogButtonProps<T>>): import("react/jsx-runtime").JSX.Element | undefined;
|
|
20
20
|
displayName: string;
|
|
21
21
|
};
|
|
22
22
|
export { DialogButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("react-aria-components"),v=require("tailwind-variants"),I=require("../../hooks/use-id.cjs"),d=require("../icon/Icon.cjs"),y=require("../spinner/Spinner.cjs"),b=require("../tooltip/Tooltip.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("react-aria-components"),v=require("tailwind-variants"),I=require("../../hooks/use-id.cjs"),d=require("../icon/Icon.cjs"),y=require("../spinner/Spinner.cjs"),b=require("../tooltip/Tooltip.cjs"),p=v.tv({base:["uy-rounded-circle uy-flex uy-items-center uy-justify-center uy-transition-colors","active:uy-bg-surface-neutral-active","data-[pressed]:uy-bg-surface-neutral-pressed","focus-visible:uy-outline-2 focus-visible:uy-outline-offset-2 focus-visible:uy-outline-utility-focus-ring","data-[disabled]:uy-cursor-not-allowed data-[disabled]:uy-text-content-neutral-disabled","aria-busy:uy-text-content-neutral-disabled aria-busy:uy-cursor-progress"],variants:{size:{default:"uy-w-300 uy-h-300",large:"uy-w-400 uy-h-400"},color:{"content.neutral":"uy-text-content-neutral","content.neutral.low":"uy-text-content-neutral-low"}},defaultVariants:{size:"default",color:"content.neutral"}});function x(f){const j=I(),{onPress:i,icon:l,color:h,size:n,isLoading:t,title:r,isDisabled:a,asElement:m="default",className:g,...o}=f,s=`icon-button-label-${j}`,u=p({class:g,color:h,size:n});return m==="button"?e.jsx(b.Tooltip,{title:r,children:e.jsxs(c.Button,{"data-dd-privacy":"allow",...o,onPress:i,isDisabled:a||t,"aria-labelledby":s,"aria-busy":t,className:u,children:[t?e.jsx(y.Spinner,{size:"small",label:"Loading",color:"inherit"}):e.jsx(d.Icon,{src:l,size:n==="large"?24:20,color:"inherit",role:"presentation"}),e.jsx("span",{id:s,className:"uy-sr-only",children:r})]})}):e.jsx(b.Tooltip,{title:r,children:e.jsx(c.Pressable,{"data-dd-privacy":"allow",...o,onPress:i,isDisabled:a||t,"aria-labelledby":s,"aria-busy":t,children:e.jsxs("div",{role:"button","aria-disabled":a,className:u,children:[t?e.jsx(y.Spinner,{size:"small",label:"Loading",color:"inherit"}):e.jsx(d.Icon,{src:l,size:n==="large"?24:20,color:"inherit",role:"presentation"}),e.jsx("span",{id:s,className:"uy-sr-only",children:r})]})})})}x.displayName="CircularIconButton";exports.CircularIconButton=x;exports.circularIconButton=p;
|
|
@@ -10,9 +10,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
10
10
|
'content.neutral': string;
|
|
11
11
|
'content.neutral.low': string;
|
|
12
12
|
};
|
|
13
|
-
isDisabled: {
|
|
14
|
-
false: string;
|
|
15
|
-
};
|
|
16
13
|
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
17
14
|
size: {
|
|
18
15
|
default: string;
|
|
@@ -22,9 +19,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
22
19
|
'content.neutral': string;
|
|
23
20
|
'content.neutral.low': string;
|
|
24
21
|
};
|
|
25
|
-
isDisabled: {
|
|
26
|
-
false: string;
|
|
27
|
-
};
|
|
28
22
|
}, {
|
|
29
23
|
size: {
|
|
30
24
|
default: string;
|
|
@@ -34,9 +28,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
34
28
|
'content.neutral': string;
|
|
35
29
|
'content.neutral.low': string;
|
|
36
30
|
};
|
|
37
|
-
isDisabled: {
|
|
38
|
-
false: string;
|
|
39
|
-
};
|
|
40
31
|
}>, {
|
|
41
32
|
size: {
|
|
42
33
|
default: string;
|
|
@@ -46,9 +37,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
46
37
|
'content.neutral': string;
|
|
47
38
|
'content.neutral.low': string;
|
|
48
39
|
};
|
|
49
|
-
isDisabled: {
|
|
50
|
-
false: string;
|
|
51
|
-
};
|
|
52
40
|
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
53
41
|
size: {
|
|
54
42
|
default: string;
|
|
@@ -58,9 +46,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
58
46
|
'content.neutral': string;
|
|
59
47
|
'content.neutral.low': string;
|
|
60
48
|
};
|
|
61
|
-
isDisabled: {
|
|
62
|
-
false: string;
|
|
63
|
-
};
|
|
64
49
|
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
65
50
|
size: {
|
|
66
51
|
default: string;
|
|
@@ -70,9 +55,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
70
55
|
'content.neutral': string;
|
|
71
56
|
'content.neutral.low': string;
|
|
72
57
|
};
|
|
73
|
-
isDisabled: {
|
|
74
|
-
false: string;
|
|
75
|
-
};
|
|
76
58
|
}, {
|
|
77
59
|
size: {
|
|
78
60
|
default: string;
|
|
@@ -82,9 +64,6 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
|
|
|
82
64
|
'content.neutral': string;
|
|
83
65
|
'content.neutral.low': string;
|
|
84
66
|
};
|
|
85
|
-
isDisabled: {
|
|
86
|
-
false: string;
|
|
87
|
-
};
|
|
88
67
|
}>, unknown, unknown, undefined>>;
|
|
89
68
|
export interface CircularIconButtonProps extends Omit<AriaButtonProps, 'className'>, VariantProps<typeof circularIconButton> {
|
|
90
69
|
icon: UnityIcon;
|
|
@@ -7,7 +7,7 @@ interface IconButtonBaseProps {
|
|
|
7
7
|
/** The icon to display inside the button */
|
|
8
8
|
icon: UnityIcon;
|
|
9
9
|
/** The function to trigger when the button is clicked */
|
|
10
|
-
onClick
|
|
10
|
+
onClick?: () => void;
|
|
11
11
|
/** Override the icon role */
|
|
12
12
|
iconRole?: AriaRole;
|
|
13
13
|
/** className to add to the button */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("react"),C=require("react-hook-form"),I=require("tailwind-variants"),T=require("../form-field/FormField.cjs"),g=require("../form-field/parts/FormControl.cjs"),k=require("../form-field/parts/FormFeedbackText.cjs"),H=require("../form-field/parts/FormHelperText.cjs"),P=require("../form-field/parts/FormLabel.cjs"),R=require("../number-input/NumberInput.cjs"),s=I.tv({base:"uy-flex uy-flex-col uy-gap-100"});function v({name:r,label:t,defaultValue:o,helperText:n,feedbackText:i,contextualLink:l,isRequired:c,isInvalid:m,isLoading:F,isDisabled:a,isReadOnly:d,requiredVariant:b,onClearButtonPress:x,...p},q){const{control:N,setValue:j}=C.useFormContext(),f={isRequired:c,isInvalid:m,isLoading:F,isDisabled:a,isReadOnly:d},y=x??(()=>{j(r,NaN)});return e.jsxs(T.FormField,{control:N,name:r,className:s(),...f,children:[e.jsx(P.FormLabel,{requiredVariant:b,children:t}),n&&e.jsx(H.FormHelperText,{children:n}),e.jsx(g.FormControl,{children:e.jsx(R.NumberInput,{ref:q,onClearButtonPress:y,defaultValue:o,...p})}),e.jsx(k.FormFeedbackText,{children:i}),l]})}const u=h.forwardRef(function(t,o){return v(t,o)});u.displayName="NumberField";exports.NumberField=u;exports.numberField=s;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ForwardedRef, JSX, ReactNode } from 'react';
|
|
2
|
+
import { FieldPath, FieldValues } from 'react-hook-form';
|
|
3
|
+
import { infer as ZodInfer } from 'zod';
|
|
4
|
+
import { Schema } from '../../hooks/use-form.types.cjs';
|
|
5
|
+
import { LabelProps } from '../label/Label.cjs';
|
|
6
|
+
import { NumberProps } from '../number-input/NumberInput.cjs';
|
|
7
|
+
export declare const numberField: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy-flex uy-flex-col uy-gap-100", import('tailwind-variants/dist/config.js').TVConfig<unknown, {} | {}>, {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy-flex uy-flex-col uy-gap-100", import('tailwind-variants/dist/config.js').TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
8
|
+
export interface NumberFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Pick<LabelProps, 'isRequired' | 'requiredVariant'>, Omit<NumberProps, 'name'> {
|
|
9
|
+
/** The name of the field, which should match the form schema. */
|
|
10
|
+
name: TName;
|
|
11
|
+
/** The label for the text field. */
|
|
12
|
+
label: string;
|
|
13
|
+
/** Helper text to display below the text field. */
|
|
14
|
+
helperText?: ReactNode;
|
|
15
|
+
/** Feedback text to display below the text field. */
|
|
16
|
+
feedbackText?: ReactNode;
|
|
17
|
+
/** A contextual link to display below the text field. */
|
|
18
|
+
contextualLink?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
type NumberFieldComponent = (<TSchema extends Schema>(props: NumberFieldProps<ZodInfer<TSchema>> & {
|
|
21
|
+
ref?: ForwardedRef<HTMLInputElement>;
|
|
22
|
+
}) => JSX.Element) & {
|
|
23
|
+
displayName?: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* NumberField is a form control component that combines a number input with form field functionality.
|
|
27
|
+
* It integrates with React Hook Form and provides features like validation, labels, helper text, and feedback.
|
|
28
|
+
* @template TFieldValues - The type of the form values
|
|
29
|
+
* @template TName - The type of the field name (must be a key of TFieldValues)
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* import { NumberField } from '@payfit/unity-components'
|
|
33
|
+
*
|
|
34
|
+
* <NumberField
|
|
35
|
+
* name="age"
|
|
36
|
+
* label="Age"
|
|
37
|
+
* helperText="Enter your age in years"
|
|
38
|
+
* isRequired
|
|
39
|
+
* />
|
|
40
|
+
* ```
|
|
41
|
+
* @template TSchema - The Zod schema type for form validation
|
|
42
|
+
* @param {NumberFieldProps<ZodInfer<TSchema>>} props - The props for the NumberField component
|
|
43
|
+
* @param {ForwardedRef<HTMLInputElement>} ref - Ref forwarded to the underlying input element
|
|
44
|
+
* @returns {JSX.Element} A NumberField component
|
|
45
|
+
*/
|
|
46
|
+
declare const NumberField: NumberFieldComponent;
|
|
47
|
+
export { NumberField };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),A=require("react"),i=require("react-aria-components"),B=require("tailwind-variants"),F=require("../icon/Icon.cjs");require("@payfit/unity-icons");const G=require("react-intl"),l=require("../icon-button/CircularIconButton.cjs"),T=require("../spinner/Spinner.cjs"),p=B.tv({slots:{base:["uy-group uy-flex uy-h-500 uy-border uy-border-solid uy-rounded-100","focus-within:uy-outline-none focus-within:uy-ring-2 focus-within:uy-ring-utility-focus-ring focus-within:uy-ring-offset-2","active:uy-border-border-form-active"],wrapper:["uy-flex uy-gap-50 uy-flex-grow uy-flex-nowrap uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-rounded-75 uy-max-w-full uy-justify-between uy-items-center"],input:["uy-w-full uy-flex-1 uy-outline-none uy-typography-body uy-min-w-0 uy-max-w-full","placeholder:uy-text-content-neutral-lowest"],prefix:["uy-flex-grow-0 uy-content-center uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-border-r uy-border-solid uy-rounded-l-100","active:uy-border-border-form-active"],suffix:["uy-flex-grow-0 uy-content-center uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-border-l uy-border-solid uy-rounded-r-100","active:uy-border-border-form-active"],state:["uy-flex uy-gap-50 uy-items-center uy-shrink-0 uy-text-content-neutral-disabled"],controls:["uy-flex uy-gap-50"]},variants:{isReadOnly:{true:{base:["uy-border-border-form-disabled uy-bg-surface-form-disabled"],prefix:["uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-read-only"],wrapper:["uy-bg-surface-form-disabled uy-text-content-form-disabled","group-data-[invalid=true]:uy-bg-surface-form-error"],input:["uy-bg-surface-form-disabled uy-text-content-form-read-only"],suffix:["uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-read-only"]},false:{base:["uy-border-border-form-enabled uy-bg-surface-form-enabled","data-[invalid=true]:uy-border-border-form-error data-[invalid=true]:uy-bg-surface-form-error","data-[disabled=true]:uy-border-border-form-disabled data-[disabled=true]:uy-bg-surface-form-disabled data-[disabled=true]:uy-cursor-not-allowed"],prefix:["uy-bg-surface-neutral-low uy-border-border-form-enabled uy-text-content-form-enabled","group-data-[invalid=true]:uy-bg-surface-form-error group-data-[invalid=true]:uy-border-border-form-error","group-data-[disabled=true]:uy-bg-surface-form-disabled group-data-[disabled=true]:uy-border-border-form-disabled group-data-[disabled=true]:uy-text-content-form-disabled data-[disabled=true]:uy-cursor-not-allowed"],suffix:["uy-bg-surface-neutral-low uy-border-border-form-enabled uy-text-content-form-enabled","group-data-[invalid=true]:uy-bg-surface-form-error group-data-[invalid=true]:uy-border-border-form-error","group-data-[disabled=true]:uy-bg-surface-form-disabled group-data-[disabled=true]:uy-border-border-form-disabled group-data-[disabled=true]:uy-text-content-form-disabled data-[disabled=true]:uy-cursor-not-allowed"],wrapper:["uy-border-border-form-enabled uy-bg-surface-form-enabled","group-data-[invalid=true]:uy-bg-surface-form-error group-data-[invalid=true]:uy-border-border-form-error","group-data-[disabled=true]:uy-bg-surface-form-disabled group-data-[disabled=true]:uy-text-content-form-disabled data-[disabled=true]:uy-cursor-not-allowed"],input:["uy-text-content-form-enabled uy-bg-surface-form-enabled","group-data-[invalid=true]:uy-bg-surface-form-error","group-data-[disabled=true]:uy-bg-surface-form-disabled group-data-[disabled=true]:uy-text-content-form-disabled data-[disabled=true]:uy-cursor-not-allowed"],state:["group-data-[invalid=true]:uy-text-content-form-error"],button:"data-[disabled=true]:uy-cursor-not-allowed"}}}}),g=A.forwardRef(({withControls:b=!1,defaultValue:u,formatOptions:x,isDisabled:y,isInvalid:c,isLoading:o,isReadOnly:a,isRequired:w,maxValue:d,minValue:n,prefix:f,onBlur:v,onChange:N,onClearButtonPress:s,step:h,suffix:m,value:r,...j},I)=>{const{base:M,wrapper:q,input:S,prefix:C,suffix:O,state:E,controls:D}=p({isReadOnly:a}),t=G.useIntl(),R=r!==void 0&&!isNaN(r),k=u!==void 0&&!isNaN(u),z=(R||k)&&!b&&!o&&!a&&!y;return e.jsxs(i.NumberField,{ref:I,className:M(),value:r,defaultValue:u,minValue:n,maxValue:d,step:h,isDisabled:y,isReadOnly:a,isInvalid:c,isRequired:w,"aria-busy":o,onChange:N,formatOptions:x,onBlur:v,...j,children:[f?e.jsx("span",{className:C(),children:f}):null,e.jsxs(i.Group,{className:q(),children:[e.jsx(i.Input,{className:S()}),e.jsxs("div",{className:E(),children:[o&&e.jsx(T.Spinner,{color:"inherit",size:"small",label:t.formatMessage({id:"unity:component:common:loading:label",defaultMessage:"Loading..."})}),c&&e.jsx(F.Icon,{src:"WarningCircleOutlined",color:"content.form.invalid",alt:t.formatMessage({id:"unity:component:form-field:form-input:error:alt",defaultMessage:"Error"})}),z&&e.jsx(l.CircularIconButton,{title:t.formatMessage({id:"unity:component:common:clear:title",defaultMessage:"Clear"}),className:"uy-text-content-neutral-enabled",icon:"CloseOutlined",onPress:()=>{s==null||s()}})]}),b&&e.jsxs("div",{className:D(),children:[e.jsx(l.CircularIconButton,{asElement:"button",icon:"MinusOutlined",slot:"decrement",isDisabled:n!==void 0&&r===n,title:t.formatMessage({id:"unity:component:form-field:number-input:decrement:title",defaultMessage:"decrement"})}),e.jsx(l.CircularIconButton,{asElement:"button",icon:"PlusOutlined",slot:"increment",isDisabled:d!==void 0&&r===d,title:t.formatMessage({id:"unity:component:form-field:number-input:increment:title",defaultMessage:"increment"})})]})]}),m?e.jsx("span",{className:O(),children:m}):null]})});g.displayName="NumberInput";exports.NumberInput=g;exports.numberInput=p;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { NumberFieldProps } from 'react-aria-components';
|
|
3
|
+
import { VariantProps } from 'tailwind-variants';
|
|
4
|
+
export declare const numberInput: import('tailwind-variants').TVReturnType<{
|
|
5
|
+
isReadOnly: {
|
|
6
|
+
true: {
|
|
7
|
+
base: string[];
|
|
8
|
+
prefix: string[];
|
|
9
|
+
wrapper: string[];
|
|
10
|
+
input: string[];
|
|
11
|
+
suffix: string[];
|
|
12
|
+
};
|
|
13
|
+
false: {
|
|
14
|
+
base: string[];
|
|
15
|
+
prefix: string[];
|
|
16
|
+
suffix: string[];
|
|
17
|
+
wrapper: string[];
|
|
18
|
+
input: string[];
|
|
19
|
+
state: string[];
|
|
20
|
+
button: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}, {
|
|
24
|
+
base: string[];
|
|
25
|
+
wrapper: string[];
|
|
26
|
+
input: string[];
|
|
27
|
+
prefix: string[];
|
|
28
|
+
suffix: string[];
|
|
29
|
+
state: string[];
|
|
30
|
+
controls: string[];
|
|
31
|
+
}, undefined, import('tailwind-variants/dist/config.js').TVConfig<{
|
|
32
|
+
isReadOnly: {
|
|
33
|
+
true: {
|
|
34
|
+
base: string[];
|
|
35
|
+
prefix: string[];
|
|
36
|
+
wrapper: string[];
|
|
37
|
+
input: string[];
|
|
38
|
+
suffix: string[];
|
|
39
|
+
};
|
|
40
|
+
false: {
|
|
41
|
+
base: string[];
|
|
42
|
+
prefix: string[];
|
|
43
|
+
suffix: string[];
|
|
44
|
+
wrapper: string[];
|
|
45
|
+
input: string[];
|
|
46
|
+
state: string[];
|
|
47
|
+
button: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}, {
|
|
51
|
+
isReadOnly: {
|
|
52
|
+
true: {
|
|
53
|
+
base: string[];
|
|
54
|
+
prefix: string[];
|
|
55
|
+
wrapper: string[];
|
|
56
|
+
input: string[];
|
|
57
|
+
suffix: string[];
|
|
58
|
+
};
|
|
59
|
+
false: {
|
|
60
|
+
base: string[];
|
|
61
|
+
prefix: string[];
|
|
62
|
+
suffix: string[];
|
|
63
|
+
wrapper: string[];
|
|
64
|
+
input: string[];
|
|
65
|
+
state: string[];
|
|
66
|
+
button: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}>, {
|
|
70
|
+
isReadOnly: {
|
|
71
|
+
true: {
|
|
72
|
+
base: string[];
|
|
73
|
+
prefix: string[];
|
|
74
|
+
wrapper: string[];
|
|
75
|
+
input: string[];
|
|
76
|
+
suffix: string[];
|
|
77
|
+
};
|
|
78
|
+
false: {
|
|
79
|
+
base: string[];
|
|
80
|
+
prefix: string[];
|
|
81
|
+
suffix: string[];
|
|
82
|
+
wrapper: string[];
|
|
83
|
+
input: string[];
|
|
84
|
+
state: string[];
|
|
85
|
+
button: string;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}, {
|
|
89
|
+
base: string[];
|
|
90
|
+
wrapper: string[];
|
|
91
|
+
input: string[];
|
|
92
|
+
prefix: string[];
|
|
93
|
+
suffix: string[];
|
|
94
|
+
state: string[];
|
|
95
|
+
controls: string[];
|
|
96
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
97
|
+
isReadOnly: {
|
|
98
|
+
true: {
|
|
99
|
+
base: string[];
|
|
100
|
+
prefix: string[];
|
|
101
|
+
wrapper: string[];
|
|
102
|
+
input: string[];
|
|
103
|
+
suffix: string[];
|
|
104
|
+
};
|
|
105
|
+
false: {
|
|
106
|
+
base: string[];
|
|
107
|
+
prefix: string[];
|
|
108
|
+
suffix: string[];
|
|
109
|
+
wrapper: string[];
|
|
110
|
+
input: string[];
|
|
111
|
+
state: string[];
|
|
112
|
+
button: string;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
}, {
|
|
116
|
+
base: string[];
|
|
117
|
+
wrapper: string[];
|
|
118
|
+
input: string[];
|
|
119
|
+
prefix: string[];
|
|
120
|
+
suffix: string[];
|
|
121
|
+
state: string[];
|
|
122
|
+
controls: string[];
|
|
123
|
+
}, undefined, import('tailwind-variants/dist/config.js').TVConfig<{
|
|
124
|
+
isReadOnly: {
|
|
125
|
+
true: {
|
|
126
|
+
base: string[];
|
|
127
|
+
prefix: string[];
|
|
128
|
+
wrapper: string[];
|
|
129
|
+
input: string[];
|
|
130
|
+
suffix: string[];
|
|
131
|
+
};
|
|
132
|
+
false: {
|
|
133
|
+
base: string[];
|
|
134
|
+
prefix: string[];
|
|
135
|
+
suffix: string[];
|
|
136
|
+
wrapper: string[];
|
|
137
|
+
input: string[];
|
|
138
|
+
state: string[];
|
|
139
|
+
button: string;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
}, {
|
|
143
|
+
isReadOnly: {
|
|
144
|
+
true: {
|
|
145
|
+
base: string[];
|
|
146
|
+
prefix: string[];
|
|
147
|
+
wrapper: string[];
|
|
148
|
+
input: string[];
|
|
149
|
+
suffix: string[];
|
|
150
|
+
};
|
|
151
|
+
false: {
|
|
152
|
+
base: string[];
|
|
153
|
+
prefix: string[];
|
|
154
|
+
suffix: string[];
|
|
155
|
+
wrapper: string[];
|
|
156
|
+
input: string[];
|
|
157
|
+
state: string[];
|
|
158
|
+
button: string;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
}>, unknown, unknown, undefined>>;
|
|
162
|
+
type StyleWithoutCurrency = Exclude<Intl.NumberFormatOptions['style'], 'currency'>;
|
|
163
|
+
interface FormatOptions extends Omit<Intl.NumberFormatOptions, 'currency' | 'style'> {
|
|
164
|
+
style?: StyleWithoutCurrency;
|
|
165
|
+
}
|
|
166
|
+
export interface NumberProps extends VariantProps<typeof numberInput>, Omit<NumberFieldProps, 'className' | 'style' | 'formatOptions' | 'children'> {
|
|
167
|
+
withControls?: boolean;
|
|
168
|
+
/** Element to display before the input field */
|
|
169
|
+
prefix?: ReactElement;
|
|
170
|
+
/** Element to display after the input field */
|
|
171
|
+
suffix?: ReactElement;
|
|
172
|
+
/** Whether the field is in a loading state */
|
|
173
|
+
isLoading?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Clear button click handler
|
|
176
|
+
*/
|
|
177
|
+
onClearButtonPress?: () => void;
|
|
178
|
+
/** Format options for the number input */
|
|
179
|
+
formatOptions?: FormatOptions;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* The `NumberInput` component renders an input field specifically designed for numeric values. It provides features like
|
|
183
|
+
* increment/decrement controls, formatting options, and various states including loading, invalid, disabled, and read-only.
|
|
184
|
+
* The component supports prefix and suffix elements, clear button functionality, and can be integrated with form validation.
|
|
185
|
+
* @param {NumberProps} props - The props for the `NumberInput` component
|
|
186
|
+
* @example
|
|
187
|
+
* ```tsx
|
|
188
|
+
* import { NumberInput } from '@payfit/unity-components'
|
|
189
|
+
*
|
|
190
|
+
* // Basic usage
|
|
191
|
+
* <NumberInput aria-label="Amount" />
|
|
192
|
+
*
|
|
193
|
+
* // With controls and formatting
|
|
194
|
+
* <NumberInput
|
|
195
|
+
* withControls
|
|
196
|
+
* minValue={0}
|
|
197
|
+
* maxValue={1000}
|
|
198
|
+
* step={10}
|
|
199
|
+
* formatOptions={{
|
|
200
|
+
* minimumFractionDigits: 2,
|
|
201
|
+
* maximumFractionDigits: 2
|
|
202
|
+
* }}
|
|
203
|
+
* aria-label="Amount"
|
|
204
|
+
* />
|
|
205
|
+
*
|
|
206
|
+
* // With prefix
|
|
207
|
+
* <NumberInput
|
|
208
|
+
* prefix={<Icon src="CurrencyEuroOutlined" size={20} />}
|
|
209
|
+
* aria-label="Amount"
|
|
210
|
+
* />
|
|
211
|
+
* ```
|
|
212
|
+
* @see {@link NumberProps} for all available props
|
|
213
|
+
* @remarks {@link https://www.payfit.design/24f360409/p/545bd2-number-field|Design docs}
|
|
214
|
+
*/
|
|
215
|
+
declare const NumberInput: import('react').ForwardRefExoticComponent<NumberProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
216
|
+
export { NumberInput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),d=require("react"),P=require("react-aria"),N=require("react-intl"),R=require("react-stately"),S=require("tailwind-variants"),T=require("./hooks/use-pagination.cjs"),E=require("./parts/PaginationEllipsis.cjs"),W=require("./parts/PaginationJumpDialog.cjs"),J=require("./parts/PaginationLink.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),d=require("react"),P=require("react-aria"),N=require("react-intl"),R=require("react-stately"),S=require("tailwind-variants"),T=require("./hooks/use-pagination.cjs"),E=require("./parts/PaginationEllipsis.cjs"),W=require("./parts/PaginationJumpDialog.cjs"),J=require("./parts/PaginationLink.cjs"),D=require("./parts/PaginationNavButton.cjs"),O=require("./utils/pagination-window.cjs"),A=S.tv({slots:{base:"uy-flex uy-gap-100 uy-relative",pagesList:"uy-flex uy-gap-100 uy-list-none uy-m-0 uy-p-0"}}),$=7,L=d.forwardRef(({pageCount:i,defaultPage:f,currentPage:v,onPageHover:l,onPageChange:y,onNextPress:c,onPreviousPress:u,...j},h)=>{const p=P.useId(),m=N.useIntl(),b=v!==void 0&&y!==void 0&&f===void 0,{currentPage:r,goToPage:s}=T.usePagination({pageCount:i,initialPage:b?v:f,onPageChange:y,isControlled:b}),g=R.useOverlayTriggerState({}),o=d.useRef(new Map),k=d.useMemo(()=>O.generatePaginationWithWindow(i,r,$),[i,r]),x=new Intl.NumberFormat(m.locale,{notation:"standard"}),I=a=>{s(a),g.close(),requestAnimationFrame(()=>{const t=o.current.get(a);t&&t.focus()})},q=(a,t)=>{switch(a.key){case"ArrowLeft":case"ArrowUp":a.preventDefault(),t>1&&(s(t-1),requestAnimationFrame(()=>{var e;(e=o.current.get(t-1))==null||e.focus()}));break;case"ArrowRight":case"ArrowDown":a.preventDefault(),t<i&&(s(t+1),requestAnimationFrame(()=>{var e;(e=o.current.get(t+1))==null||e.focus()}));break;case"Home":a.preventDefault(),s(1),requestAnimationFrame(()=>{var e;(e=o.current.get(1))==null||e.focus()});break;case"End":a.preventDefault(),s(i),requestAnimationFrame(()=>{var e;(e=o.current.get(i))==null||e.focus()});break}},w={paginationLabel:m.formatMessage({id:"unity:component:pagination:label",defaultMessage:"Pagination"}),pageListLabel:m.formatMessage({id:"unity:component:pagination:page-list:label",defaultMessage:"Page {current} of {total}"},{current:r,total:i})},{base:F,pagesList:M}=A();return n.jsxs("nav",{"data-dd-privacy":"allow",...j,ref:h,className:F(),"aria-labelledby":w.paginationLabel,children:[n.jsx(W.PaginationJumpDialog,{pageCount:i,onJumpToPage:I,state:g}),n.jsx(D.PaginationNavButton,{variant:"previous",isDisabled:r===1,onClick:()=>{s("previous"),u==null||u()}}),n.jsx("ul",{className:M(),"aria-label":w.pageListLabel,children:k.map((a,t)=>a.type==="page"?n.jsx("li",{"aria-setsize":i,"aria-posinset":a.value,children:n.jsx(J.PaginationLink,{ref:e=>{e?o.current.set(a.value,e):o.current.delete(a.value)},onPress:()=>{s(a.value)},onHoverChange:e=>{e&&(l==null||l(a.value))},onKeyDown:e=>{q(e,a.value)},isActive:a.value===r,value:a.value,children:x.format(a.value)})},`uy-pagination-${p}-item-${t}`):n.jsx("li",{children:n.jsx(E.PaginationEllipsis,{value:a.value,onKeyDown:e=>{q(e,-1)},onPress:()=>{g.open()}})},`uy-pagination-${p}-item-${t}`))}),n.jsx(D.PaginationNavButton,{variant:"next",isDisabled:r===i,onClick:()=>{s("next"),c==null||c()}})]})});L.displayName="Pagination";exports.Pagination=L;exports.pagination=A;
|