{"version":3,"file":"Pagination.mjs","names":["classes"],"sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { factory, Factory, MantineSpacing, useProps } from '../../core';\nimport { Group } from '../Group/Group';\nimport { PaginationIcon } from './Pagination.icons';\nimport {\n  PaginationControl,\n  type PaginationControlProps,\n} from './PaginationControl/PaginationControl';\nimport { PaginationDots, type PaginationDotsProps } from './PaginationDots/PaginationDots';\nimport {\n  PaginationFirst,\n  PaginationLast,\n  PaginationNext,\n  PaginationPrevious,\n  type PaginationEdgeProps,\n} from './PaginationEdges/PaginationEdges';\nimport { PaginationItems, type PaginationItemsProps } from './PaginationItems/PaginationItems';\nimport {\n  PaginationRoot,\n  PaginationRootCssVariables,\n  PaginationRootProps,\n  PaginationRootStylesNames,\n} from './PaginationRoot/PaginationRoot';\nimport classes from './Pagination.module.css';\nexport type PaginationStylesNames = PaginationRootStylesNames;\nexport type PaginationCssVariables = PaginationRootCssVariables;\n\nexport interface PaginationProps extends PaginationRootProps {\n  /** If set, first/last controls are displayed @default false */\n  withEdges?: boolean;\n\n  /** If set, next/previous controls are displayed @default true */\n  withControls?: boolean;\n\n  /** Props passed down to next/previous/first/last controls */\n  getControlProps?: (control: 'first' | 'previous' | 'last' | 'next') => Record<string, any>;\n\n  /** Next control icon component */\n  nextIcon?: PaginationIcon;\n\n  /** Previous control icon component */\n  previousIcon?: PaginationIcon;\n\n  /** Last control icon component */\n  lastIcon?: PaginationIcon;\n\n  /** First control icon component */\n  firstIcon?: PaginationIcon;\n\n  /** Dots icon component */\n  dotsIcon?: PaginationIcon;\n\n  /** Key of `theme.spacing`, gap between controls @default 8 */\n  gap?: MantineSpacing;\n\n  /** If set, the pagination is hidden when only one page is available (`total={1}`) @default false */\n  hideWithOnePage?: boolean;\n\n  /** If set to `false`, page number buttons are hidden, only next/previous controls remain @default `true` */\n  withPages?: boolean;\n}\n\nexport type PaginationFactory = Factory<{\n  props: PaginationProps;\n  ref: HTMLDivElement;\n  stylesNames: PaginationStylesNames;\n  vars: PaginationCssVariables;\n  staticComponents: {\n    Root: typeof PaginationRoot;\n    Control: typeof PaginationControl;\n    Dots: typeof PaginationDots;\n    First: typeof PaginationFirst;\n    Last: typeof PaginationLast;\n    Next: typeof PaginationNext;\n    Previous: typeof PaginationPrevious;\n    Items: typeof PaginationItems;\n  };\n}>;\n\nconst defaultProps = {\n  withControls: true,\n  withPages: true,\n  siblings: 1,\n  boundaries: 1,\n  gap: 8,\n} satisfies Partial<PaginationProps>;\n\nexport const Pagination = factory<PaginationFactory>((_props) => {\n  const props = useProps('Pagination', defaultProps, _props);\n  const {\n    withEdges,\n    withControls,\n    getControlProps,\n    nextIcon,\n    previousIcon,\n    lastIcon,\n    firstIcon,\n    dotsIcon,\n    total,\n    gap,\n    hideWithOnePage,\n    withPages,\n    ...others\n  } = props;\n\n  if (total <= 0 || (hideWithOnePage && total === 1)) {\n    return null;\n  }\n\n  return (\n    <PaginationRoot total={total} {...others}>\n      <Group gap={gap}>\n        {withEdges && <PaginationFirst icon={firstIcon} {...getControlProps?.('first')} />}\n        {withControls && (\n          <PaginationPrevious icon={previousIcon} {...getControlProps?.('previous')} />\n        )}\n        {withPages && <PaginationItems dotsIcon={dotsIcon} />}\n        {withControls && <PaginationNext icon={nextIcon} {...getControlProps?.('next')} />}\n        {withEdges && <PaginationLast icon={lastIcon} {...getControlProps?.('last')} />}\n      </Group>\n    </PaginationRoot>\n  );\n});\n\nPagination.classes = classes;\nPagination.displayName = '@mantine/core/Pagination';\nPagination.Root = PaginationRoot;\nPagination.Control = PaginationControl;\nPagination.Dots = PaginationDots;\nPagination.First = PaginationFirst;\nPagination.Last = PaginationLast;\nPagination.Next = PaginationNext;\nPagination.Previous = PaginationPrevious;\nPagination.Items = PaginationItems;\n\nexport namespace Pagination {\n  export type Props = PaginationProps;\n  export type StylesNames = PaginationStylesNames;\n  export type CssVariables = PaginationCssVariables;\n  export type Factory = PaginationFactory;\n\n  export namespace Root {\n    export type Props = PaginationRootProps;\n  }\n\n  export namespace Control {\n    export type Props = PaginationControlProps;\n  }\n\n  export namespace Dots {\n    export type Props = PaginationDotsProps;\n  }\n\n  export namespace Edge {\n    export type Props = PaginationEdgeProps;\n  }\n\n  export namespace Items {\n    export type Props = PaginationItemsProps;\n  }\n}\n"],"mappings":";;;;;;;;;;;;AA8EA,MAAM,eAAe;CACnB,cAAc;CACd,WAAW;CACX,UAAU;CACV,YAAY;CACZ,KAAK;CACN;AAED,MAAa,aAAa,SAA4B,WAAW;CAE/D,MAAM,EACJ,WACA,cACA,iBACA,UACA,cACA,UACA,WACA,UACA,OACA,KACA,iBACA,WACA,GAAG,WAdS,SAAS,cAAc,cAAc,OAAO;AAiB1D,KAAI,SAAS,KAAM,mBAAmB,UAAU,EAC9C,QAAO;AAGT,QACE,oBAAC,gBAAD;EAAuB;EAAO,GAAI;YAChC,qBAAC,OAAD;GAAY;aAAZ;IACG,aAAa,oBAAC,iBAAD;KAAiB,MAAM;KAAW,GAAI,kBAAkB,QAAQ;KAAI,CAAA;IACjF,gBACC,oBAAC,oBAAD;KAAoB,MAAM;KAAc,GAAI,kBAAkB,WAAW;KAAI,CAAA;IAE9E,aAAa,oBAAC,iBAAD,EAA2B,UAAY,CAAA;IACpD,gBAAgB,oBAAC,gBAAD;KAAgB,MAAM;KAAU,GAAI,kBAAkB,OAAO;KAAI,CAAA;IACjF,aAAa,oBAAC,gBAAD;KAAgB,MAAM;KAAU,GAAI,kBAAkB,OAAO;KAAI,CAAA;IACzE;;EACO,CAAA;EAEnB;AAEF,WAAW,UAAUA;AACrB,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,QAAQ"}