@raystack/apsara 0.53.3 → 0.53.4

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.
@@ -2,6 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
5
6
  var filter = require('../../../icons/assets/filter.svg.cjs');
6
7
  var filters = require('../../../types/filters.cjs');
7
8
  var button = require('../../button/button.cjs');
@@ -12,15 +13,25 @@ var iconButton = require('../../icon-button/icon-button.cjs');
12
13
  var useDataTable = require('../hooks/useDataTable.cjs');
13
14
  var useFilters = require('../hooks/useFilters.cjs');
14
15
 
15
- function AddFilter({ columnList = [], appliedFiltersSet, onAddFilter }) {
16
+ function AddFilter({ columnList = [], appliedFiltersSet, onAddFilter, children }) {
16
17
  const availableFilters = columnList?.filter(col => !appliedFiltersSet.has(col.id));
17
- return availableFilters.length > 0 ? (jsxRuntime.jsxs(dropdownMenu.DropdownMenu, { children: [jsxRuntime.jsx(dropdownMenu.DropdownMenu.Trigger, { asChild: true, children: appliedFiltersSet.size > 0 ? (jsxRuntime.jsx(iconButton.IconButton, { size: 4, children: jsxRuntime.jsx(filter.ReactComponent, {}) })) : (jsxRuntime.jsx(button.Button, { variant: 'text', size: 'small', leadingIcon: jsxRuntime.jsx(filter.ReactComponent, {}), color: 'neutral', children: "Filter" })) }), jsxRuntime.jsx(dropdownMenu.DropdownMenu.Content, { children: availableFilters?.map(column => {
18
+ const trigger = React.useMemo(() => {
19
+ if (typeof children === 'function')
20
+ return children({ availableFilters, appliedFilters: appliedFiltersSet });
21
+ else if (children)
22
+ return children;
23
+ else if (appliedFiltersSet.size > 0)
24
+ return (jsxRuntime.jsx(iconButton.IconButton, { size: 4, children: jsxRuntime.jsx(filter.ReactComponent, {}) }));
25
+ else
26
+ return (jsxRuntime.jsx(button.Button, { variant: 'text', size: 'small', leadingIcon: jsxRuntime.jsx(filter.ReactComponent, {}), color: 'neutral', children: "Filter" }));
27
+ }, [children, appliedFiltersSet, availableFilters]);
28
+ return availableFilters.length > 0 ? (jsxRuntime.jsxs(dropdownMenu.DropdownMenu, { children: [jsxRuntime.jsx(dropdownMenu.DropdownMenu.Trigger, { asChild: true, children: trigger }), jsxRuntime.jsx(dropdownMenu.DropdownMenu.Content, { children: availableFilters?.map(column => {
18
29
  const columnDef = column.columnDef;
19
30
  const id = columnDef.accessorKey || column.id;
20
31
  return (jsxRuntime.jsx(dropdownMenu.DropdownMenu.Item, { onClick: () => onAddFilter(column), children: columnDef.header || id }, id));
21
32
  }) })] })) : null;
22
33
  }
23
- function Filters() {
34
+ function Filters({ classNames, className, trigger }) {
24
35
  const { table, tableQuery } = useDataTable.useDataTable();
25
36
  const columns = table?.getAllColumns();
26
37
  const { onAddFilter, handleRemoveFilter, handleFilterValueChange, handleFilterOperationChange } = useFilters.useFilters();
@@ -39,7 +50,7 @@ function Filters() {
39
50
  ...filter
40
51
  };
41
52
  }) || [];
42
- return (jsxRuntime.jsxs(flex.Flex, { gap: 3, children: [jsxRuntime.jsx(flex.Flex, { gap: 3, children: appliedFilters.map(filter => (jsxRuntime.jsx(filterChip.FilterChip, { label: filter.label, value: filter.value, onRemove: () => handleRemoveFilter(filter.name), onValueChange: value => handleFilterValueChange(filter.name, value), onOperationChange: operator => handleFilterOperationChange(filter.name, operator), columnType: filter.filterType, options: filter.options }, filter.name))) }), jsxRuntime.jsx(AddFilter, { columnList: columnList, appliedFiltersSet: appliedFiltersSet, onAddFilter: onAddFilter })] }));
53
+ return (jsxRuntime.jsxs(flex.Flex, { gap: 3, className: className, children: [jsxRuntime.jsx(flex.Flex, { gap: 3, className: classNames?.container, children: appliedFilters.map(filter => (jsxRuntime.jsx(filterChip.FilterChip, { label: filter.label, value: filter.value, onRemove: () => handleRemoveFilter(filter.name), onValueChange: value => handleFilterValueChange(filter.name, value), onOperationChange: operator => handleFilterOperationChange(filter.name, operator), columnType: filter.filterType, options: filter.options, className: classNames?.filterChips }, filter.name))) }), jsxRuntime.jsx(AddFilter, { columnList: columnList, appliedFiltersSet: appliedFiltersSet, onAddFilter: onAddFilter, children: trigger })] }));
43
54
  }
44
55
 
45
56
  exports.Filters = Filters;
@@ -1 +1 @@
1
- {"version":3,"file":"filters.cjs","sources":["../../../../components/data-table/components/filters.tsx"],"sourcesContent":["'use client';\n\nimport { FilterIcon } from '~/icons';\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport { Button } from '../../button';\nimport { DropdownMenu } from '../../dropdown-menu';\nimport { FilterChip } from '../../filter-chip';\nimport { Flex } from '../../flex';\nimport { IconButton } from '../../icon-button';\nimport { DataTableColumn } from '../data-table.types';\nimport { useDataTable } from '../hooks/useDataTable';\nimport { useFilters } from '../hooks/useFilters';\n\ninterface AddFilterProps<TData, TValue> {\n columnList: DataTableColumn<TData, TValue>[];\n appliedFiltersSet: Set<string>;\n onAddFilter: (column: DataTableColumn<TData, TValue>) => void;\n}\n\nfunction AddFilter<TData, TValue>({\n columnList = [],\n appliedFiltersSet,\n onAddFilter\n}: AddFilterProps<TData, TValue>) {\n const availableFilters = columnList?.filter(\n col => !appliedFiltersSet.has(col.id)\n );\n\n return availableFilters.length > 0 ? (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n {appliedFiltersSet.size > 0 ? (\n <IconButton size={4}>\n <FilterIcon />\n </IconButton>\n ) : (\n <Button\n variant='text'\n size='small'\n leadingIcon={<FilterIcon />}\n color='neutral'\n >\n Filter\n </Button>\n )}\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n {availableFilters?.map(column => {\n const columnDef = column.columnDef;\n const id = columnDef.accessorKey || column.id;\n return (\n <DropdownMenu.Item key={id} onClick={() => onAddFilter(column)}>\n {columnDef.header || id}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null;\n}\n\nexport function Filters<TData, TValue>() {\n const { table, tableQuery } = useDataTable();\n const columns = table?.getAllColumns() as DataTableColumn<TData, TValue>[];\n\n const {\n onAddFilter,\n handleRemoveFilter,\n handleFilterValueChange,\n handleFilterOperationChange\n } = useFilters<TData, TValue>();\n\n const columnList = columns?.filter(\n column => column.columnDef.enableColumnFilter\n );\n\n const appliedFiltersSet = new Set(\n tableQuery?.filters?.map(filter => filter.name)\n );\n\n const appliedFilters =\n tableQuery?.filters?.map(filter => {\n const columnDef = columns?.find(col => {\n const columnDef = col.columnDef;\n const id = columnDef.accessorKey || col.id;\n return id === filter.name;\n })?.columnDef;\n return {\n filterType: columnDef?.filterType || FilterType.string,\n label: (columnDef?.header as string) || '',\n options: columnDef?.filterOptions || [],\n ...filter\n };\n }) || [];\n\n return (\n <Flex gap={3}>\n <Flex gap={3}>\n {appliedFilters.map(filter => (\n <FilterChip\n key={filter.name}\n label={filter.label}\n value={filter.value}\n onRemove={() => handleRemoveFilter(filter.name)}\n onValueChange={value => handleFilterValueChange(filter.name, value)}\n onOperationChange={operator =>\n handleFilterOperationChange(\n filter.name,\n operator as FilterOperatorTypes\n )\n }\n columnType={filter.filterType}\n options={filter.options}\n />\n ))}\n </Flex>\n <AddFilter\n columnList={columnList}\n appliedFiltersSet={appliedFiltersSet}\n onAddFilter={onAddFilter}\n />\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmBA;;AASE;AAoBQ;;;;AAWV;;;AAIE;AAEA;AAOA;;;;AAWM;;AAEA;;;AAGA;AACA;AACA;AACA;;;;AAgCR;;"}
1
+ {"version":3,"file":"filters.cjs","sources":["../../../../components/data-table/components/filters.tsx"],"sourcesContent":["'use client';\n\nimport { ReactNode, useMemo } from 'react';\nimport { FilterIcon } from '~/icons';\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport { Button } from '../../button';\nimport { DropdownMenu } from '../../dropdown-menu';\nimport { FilterChip } from '../../filter-chip';\nimport { Flex } from '../../flex';\nimport { IconButton } from '../../icon-button';\nimport { DataTableColumn } from '../data-table.types';\nimport { useDataTable } from '../hooks/useDataTable';\nimport { useFilters } from '../hooks/useFilters';\n\ntype Trigger<TData, TValue> =\n | ReactNode\n | (({\n availableFilters,\n appliedFilters\n }: {\n availableFilters: DataTableColumn<TData, TValue>[];\n appliedFilters: Set<string>;\n }) => ReactNode);\n\ninterface AddFilterProps<TData, TValue> {\n columnList: DataTableColumn<TData, TValue>[];\n appliedFiltersSet: Set<string>;\n onAddFilter: (column: DataTableColumn<TData, TValue>) => void;\n children?: Trigger<TData, TValue>;\n}\n\nfunction AddFilter<TData, TValue>({\n columnList = [],\n appliedFiltersSet,\n onAddFilter,\n children\n}: AddFilterProps<TData, TValue>) {\n const availableFilters = columnList?.filter(\n col => !appliedFiltersSet.has(col.id)\n );\n\n const trigger = useMemo(() => {\n if (typeof children === 'function')\n return children({ availableFilters, appliedFilters: appliedFiltersSet });\n else if (children) return children;\n else if (appliedFiltersSet.size > 0)\n return (\n <IconButton size={4}>\n <FilterIcon />\n </IconButton>\n );\n else\n return (\n <Button\n variant='text'\n size='small'\n leadingIcon={<FilterIcon />}\n color='neutral'\n >\n Filter\n </Button>\n );\n }, [children, appliedFiltersSet, availableFilters]);\n\n return availableFilters.length > 0 ? (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n <DropdownMenu.Content>\n {availableFilters?.map(column => {\n const columnDef = column.columnDef;\n const id = columnDef.accessorKey || column.id;\n return (\n <DropdownMenu.Item key={id} onClick={() => onAddFilter(column)}>\n {columnDef.header || id}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null;\n}\n\nexport function Filters<TData, TValue>({\n classNames,\n className,\n trigger\n}: {\n classNames?: {\n container?: string;\n filterChips?: string;\n addFilter?: string;\n };\n className?: string;\n trigger?: Trigger<TData, TValue>;\n}) {\n const { table, tableQuery } = useDataTable();\n const columns = table?.getAllColumns() as DataTableColumn<TData, TValue>[];\n\n const {\n onAddFilter,\n handleRemoveFilter,\n handleFilterValueChange,\n handleFilterOperationChange\n } = useFilters<TData, TValue>();\n\n const columnList = columns?.filter(\n column => column.columnDef.enableColumnFilter\n );\n\n const appliedFiltersSet = new Set(\n tableQuery?.filters?.map(filter => filter.name)\n );\n\n const appliedFilters =\n tableQuery?.filters?.map(filter => {\n const columnDef = columns?.find(col => {\n const columnDef = col.columnDef;\n const id = columnDef.accessorKey || col.id;\n return id === filter.name;\n })?.columnDef;\n return {\n filterType: columnDef?.filterType || FilterType.string,\n label: (columnDef?.header as string) || '',\n options: columnDef?.filterOptions || [],\n ...filter\n };\n }) || [];\n\n return (\n <Flex gap={3} className={className}>\n <Flex gap={3} className={classNames?.container}>\n {appliedFilters.map(filter => (\n <FilterChip\n key={filter.name}\n label={filter.label}\n value={filter.value}\n onRemove={() => handleRemoveFilter(filter.name)}\n onValueChange={value => handleFilterValueChange(filter.name, value)}\n onOperationChange={operator =>\n handleFilterOperationChange(\n filter.name,\n operator as FilterOperatorTypes\n )\n }\n columnType={filter.filterType}\n options={filter.options}\n className={classNames?.filterChips}\n />\n ))}\n </Flex>\n <AddFilter\n columnList={columnList}\n appliedFiltersSet={appliedFiltersSet}\n onAddFilter={onAddFilter}\n >\n {trigger}\n </AddFilter>\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AA+BA;;AAUE;;;AAGO;AAAc;AACd;AACH;;;;AAkBJ;AAKQ;;;;AAWV;AAEM;;AAcJ;AAEA;AAOA;;;;AAWM;;AAEA;;;AAGA;AACA;AACA;AACA;;;AAIN;AA+BF;;"}
@@ -1,2 +1,17 @@
1
- export declare function Filters<TData, TValue>(): import("react/jsx-runtime").JSX.Element;
1
+ import { ReactNode } from 'react';
2
+ import { DataTableColumn } from '../data-table.types';
3
+ type Trigger<TData, TValue> = ReactNode | (({ availableFilters, appliedFilters }: {
4
+ availableFilters: DataTableColumn<TData, TValue>[];
5
+ appliedFilters: Set<string>;
6
+ }) => ReactNode);
7
+ export declare function Filters<TData, TValue>({ classNames, className, trigger }: {
8
+ classNames?: {
9
+ container?: string;
10
+ filterChips?: string;
11
+ addFilter?: string;
12
+ };
13
+ className?: string;
14
+ trigger?: Trigger<TData, TValue>;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export {};
2
17
  //# sourceMappingURL=filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../components/data-table/components/filters.tsx"],"names":[],"mappings":"AA6DA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,6CA8DpC"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../components/data-table/components/filters.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAQ3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,KAAK,OAAO,CAAC,KAAK,EAAE,MAAM,IACtB,SAAS,GACT,CAAC,CAAC,EACA,gBAAgB,EAChB,cAAc,EACf,EAAE;IACD,gBAAgB,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACnD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,KAAK,SAAS,CAAC,CAAC;AA4DrB,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EACrC,UAAU,EACV,SAAS,EACT,OAAO,EACR,EAAE;IACD,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAClC,2CAiEA"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useMemo } from 'react';
3
4
  import { ReactComponent as SvgFilter } from '../../../icons/assets/filter.svg.js';
4
5
  import { FilterType } from '../../../types/filters.js';
5
6
  import { Button } from '../../button/button.js';
@@ -10,15 +11,25 @@ import { IconButton } from '../../icon-button/icon-button.js';
10
11
  import { useDataTable } from '../hooks/useDataTable.js';
11
12
  import { useFilters } from '../hooks/useFilters.js';
12
13
 
13
- function AddFilter({ columnList = [], appliedFiltersSet, onAddFilter }) {
14
+ function AddFilter({ columnList = [], appliedFiltersSet, onAddFilter, children }) {
14
15
  const availableFilters = columnList?.filter(col => !appliedFiltersSet.has(col.id));
15
- return availableFilters.length > 0 ? (jsxs(DropdownMenu, { children: [jsx(DropdownMenu.Trigger, { asChild: true, children: appliedFiltersSet.size > 0 ? (jsx(IconButton, { size: 4, children: jsx(SvgFilter, {}) })) : (jsx(Button, { variant: 'text', size: 'small', leadingIcon: jsx(SvgFilter, {}), color: 'neutral', children: "Filter" })) }), jsx(DropdownMenu.Content, { children: availableFilters?.map(column => {
16
+ const trigger = useMemo(() => {
17
+ if (typeof children === 'function')
18
+ return children({ availableFilters, appliedFilters: appliedFiltersSet });
19
+ else if (children)
20
+ return children;
21
+ else if (appliedFiltersSet.size > 0)
22
+ return (jsx(IconButton, { size: 4, children: jsx(SvgFilter, {}) }));
23
+ else
24
+ return (jsx(Button, { variant: 'text', size: 'small', leadingIcon: jsx(SvgFilter, {}), color: 'neutral', children: "Filter" }));
25
+ }, [children, appliedFiltersSet, availableFilters]);
26
+ return availableFilters.length > 0 ? (jsxs(DropdownMenu, { children: [jsx(DropdownMenu.Trigger, { asChild: true, children: trigger }), jsx(DropdownMenu.Content, { children: availableFilters?.map(column => {
16
27
  const columnDef = column.columnDef;
17
28
  const id = columnDef.accessorKey || column.id;
18
29
  return (jsx(DropdownMenu.Item, { onClick: () => onAddFilter(column), children: columnDef.header || id }, id));
19
30
  }) })] })) : null;
20
31
  }
21
- function Filters() {
32
+ function Filters({ classNames, className, trigger }) {
22
33
  const { table, tableQuery } = useDataTable();
23
34
  const columns = table?.getAllColumns();
24
35
  const { onAddFilter, handleRemoveFilter, handleFilterValueChange, handleFilterOperationChange } = useFilters();
@@ -37,7 +48,7 @@ function Filters() {
37
48
  ...filter
38
49
  };
39
50
  }) || [];
40
- return (jsxs(Flex, { gap: 3, children: [jsx(Flex, { gap: 3, children: appliedFilters.map(filter => (jsx(FilterChip, { label: filter.label, value: filter.value, onRemove: () => handleRemoveFilter(filter.name), onValueChange: value => handleFilterValueChange(filter.name, value), onOperationChange: operator => handleFilterOperationChange(filter.name, operator), columnType: filter.filterType, options: filter.options }, filter.name))) }), jsx(AddFilter, { columnList: columnList, appliedFiltersSet: appliedFiltersSet, onAddFilter: onAddFilter })] }));
51
+ return (jsxs(Flex, { gap: 3, className: className, children: [jsx(Flex, { gap: 3, className: classNames?.container, children: appliedFilters.map(filter => (jsx(FilterChip, { label: filter.label, value: filter.value, onRemove: () => handleRemoveFilter(filter.name), onValueChange: value => handleFilterValueChange(filter.name, value), onOperationChange: operator => handleFilterOperationChange(filter.name, operator), columnType: filter.filterType, options: filter.options, className: classNames?.filterChips }, filter.name))) }), jsx(AddFilter, { columnList: columnList, appliedFiltersSet: appliedFiltersSet, onAddFilter: onAddFilter, children: trigger })] }));
41
52
  }
42
53
 
43
54
  export { Filters };
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sources":["../../../../components/data-table/components/filters.tsx"],"sourcesContent":["'use client';\n\nimport { FilterIcon } from '~/icons';\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport { Button } from '../../button';\nimport { DropdownMenu } from '../../dropdown-menu';\nimport { FilterChip } from '../../filter-chip';\nimport { Flex } from '../../flex';\nimport { IconButton } from '../../icon-button';\nimport { DataTableColumn } from '../data-table.types';\nimport { useDataTable } from '../hooks/useDataTable';\nimport { useFilters } from '../hooks/useFilters';\n\ninterface AddFilterProps<TData, TValue> {\n columnList: DataTableColumn<TData, TValue>[];\n appliedFiltersSet: Set<string>;\n onAddFilter: (column: DataTableColumn<TData, TValue>) => void;\n}\n\nfunction AddFilter<TData, TValue>({\n columnList = [],\n appliedFiltersSet,\n onAddFilter\n}: AddFilterProps<TData, TValue>) {\n const availableFilters = columnList?.filter(\n col => !appliedFiltersSet.has(col.id)\n );\n\n return availableFilters.length > 0 ? (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n {appliedFiltersSet.size > 0 ? (\n <IconButton size={4}>\n <FilterIcon />\n </IconButton>\n ) : (\n <Button\n variant='text'\n size='small'\n leadingIcon={<FilterIcon />}\n color='neutral'\n >\n Filter\n </Button>\n )}\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n {availableFilters?.map(column => {\n const columnDef = column.columnDef;\n const id = columnDef.accessorKey || column.id;\n return (\n <DropdownMenu.Item key={id} onClick={() => onAddFilter(column)}>\n {columnDef.header || id}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null;\n}\n\nexport function Filters<TData, TValue>() {\n const { table, tableQuery } = useDataTable();\n const columns = table?.getAllColumns() as DataTableColumn<TData, TValue>[];\n\n const {\n onAddFilter,\n handleRemoveFilter,\n handleFilterValueChange,\n handleFilterOperationChange\n } = useFilters<TData, TValue>();\n\n const columnList = columns?.filter(\n column => column.columnDef.enableColumnFilter\n );\n\n const appliedFiltersSet = new Set(\n tableQuery?.filters?.map(filter => filter.name)\n );\n\n const appliedFilters =\n tableQuery?.filters?.map(filter => {\n const columnDef = columns?.find(col => {\n const columnDef = col.columnDef;\n const id = columnDef.accessorKey || col.id;\n return id === filter.name;\n })?.columnDef;\n return {\n filterType: columnDef?.filterType || FilterType.string,\n label: (columnDef?.header as string) || '',\n options: columnDef?.filterOptions || [],\n ...filter\n };\n }) || [];\n\n return (\n <Flex gap={3}>\n <Flex gap={3}>\n {appliedFilters.map(filter => (\n <FilterChip\n key={filter.name}\n label={filter.label}\n value={filter.value}\n onRemove={() => handleRemoveFilter(filter.name)}\n onValueChange={value => handleFilterValueChange(filter.name, value)}\n onOperationChange={operator =>\n handleFilterOperationChange(\n filter.name,\n operator as FilterOperatorTypes\n )\n }\n columnType={filter.filterType}\n options={filter.options}\n />\n ))}\n </Flex>\n <AddFilter\n columnList={columnList}\n appliedFiltersSet={appliedFiltersSet}\n onAddFilter={onAddFilter}\n />\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAmBA;;AASE;AAoBQ;;;;AAWV;;;AAIE;AAEA;AAOA;;;;AAWM;;AAEA;;;AAGA;AACA;AACA;AACA;;;;AAgCR;;"}
1
+ {"version":3,"file":"filters.js","sources":["../../../../components/data-table/components/filters.tsx"],"sourcesContent":["'use client';\n\nimport { ReactNode, useMemo } from 'react';\nimport { FilterIcon } from '~/icons';\nimport { FilterOperatorTypes, FilterType } from '~/types/filters';\nimport { Button } from '../../button';\nimport { DropdownMenu } from '../../dropdown-menu';\nimport { FilterChip } from '../../filter-chip';\nimport { Flex } from '../../flex';\nimport { IconButton } from '../../icon-button';\nimport { DataTableColumn } from '../data-table.types';\nimport { useDataTable } from '../hooks/useDataTable';\nimport { useFilters } from '../hooks/useFilters';\n\ntype Trigger<TData, TValue> =\n | ReactNode\n | (({\n availableFilters,\n appliedFilters\n }: {\n availableFilters: DataTableColumn<TData, TValue>[];\n appliedFilters: Set<string>;\n }) => ReactNode);\n\ninterface AddFilterProps<TData, TValue> {\n columnList: DataTableColumn<TData, TValue>[];\n appliedFiltersSet: Set<string>;\n onAddFilter: (column: DataTableColumn<TData, TValue>) => void;\n children?: Trigger<TData, TValue>;\n}\n\nfunction AddFilter<TData, TValue>({\n columnList = [],\n appliedFiltersSet,\n onAddFilter,\n children\n}: AddFilterProps<TData, TValue>) {\n const availableFilters = columnList?.filter(\n col => !appliedFiltersSet.has(col.id)\n );\n\n const trigger = useMemo(() => {\n if (typeof children === 'function')\n return children({ availableFilters, appliedFilters: appliedFiltersSet });\n else if (children) return children;\n else if (appliedFiltersSet.size > 0)\n return (\n <IconButton size={4}>\n <FilterIcon />\n </IconButton>\n );\n else\n return (\n <Button\n variant='text'\n size='small'\n leadingIcon={<FilterIcon />}\n color='neutral'\n >\n Filter\n </Button>\n );\n }, [children, appliedFiltersSet, availableFilters]);\n\n return availableFilters.length > 0 ? (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n <DropdownMenu.Content>\n {availableFilters?.map(column => {\n const columnDef = column.columnDef;\n const id = columnDef.accessorKey || column.id;\n return (\n <DropdownMenu.Item key={id} onClick={() => onAddFilter(column)}>\n {columnDef.header || id}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null;\n}\n\nexport function Filters<TData, TValue>({\n classNames,\n className,\n trigger\n}: {\n classNames?: {\n container?: string;\n filterChips?: string;\n addFilter?: string;\n };\n className?: string;\n trigger?: Trigger<TData, TValue>;\n}) {\n const { table, tableQuery } = useDataTable();\n const columns = table?.getAllColumns() as DataTableColumn<TData, TValue>[];\n\n const {\n onAddFilter,\n handleRemoveFilter,\n handleFilterValueChange,\n handleFilterOperationChange\n } = useFilters<TData, TValue>();\n\n const columnList = columns?.filter(\n column => column.columnDef.enableColumnFilter\n );\n\n const appliedFiltersSet = new Set(\n tableQuery?.filters?.map(filter => filter.name)\n );\n\n const appliedFilters =\n tableQuery?.filters?.map(filter => {\n const columnDef = columns?.find(col => {\n const columnDef = col.columnDef;\n const id = columnDef.accessorKey || col.id;\n return id === filter.name;\n })?.columnDef;\n return {\n filterType: columnDef?.filterType || FilterType.string,\n label: (columnDef?.header as string) || '',\n options: columnDef?.filterOptions || [],\n ...filter\n };\n }) || [];\n\n return (\n <Flex gap={3} className={className}>\n <Flex gap={3} className={classNames?.container}>\n {appliedFilters.map(filter => (\n <FilterChip\n key={filter.name}\n label={filter.label}\n value={filter.value}\n onRemove={() => handleRemoveFilter(filter.name)}\n onValueChange={value => handleFilterValueChange(filter.name, value)}\n onOperationChange={operator =>\n handleFilterOperationChange(\n filter.name,\n operator as FilterOperatorTypes\n )\n }\n columnType={filter.filterType}\n options={filter.options}\n className={classNames?.filterChips}\n />\n ))}\n </Flex>\n <AddFilter\n columnList={columnList}\n appliedFiltersSet={appliedFiltersSet}\n onAddFilter={onAddFilter}\n >\n {trigger}\n </AddFilter>\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AA+BA;;AAUE;;;AAGO;AAAc;AACd;AACH;;;;AAkBJ;AAKQ;;;;AAWV;AAEM;;AAcJ;AAEA;AAOA;;;;AAWM;;AAEA;;;AAGA;AACA;AACA;AACA;;;AAIN;AA+BF;;"}
@@ -5,6 +5,7 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var index$1 = require('../../node_modules/.pnpm/@tanstack_react-table@8.9.2_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@tanstack/react-table/build/lib/index.cjs');
6
6
  var React = require('react');
7
7
  var content = require('./components/content.cjs');
8
+ var filters = require('./components/filters.cjs');
8
9
  var search = require('./components/search.cjs');
9
10
  var toolbar = require('./components/toolbar.cjs');
10
11
  var context = require('./context.cjs');
@@ -106,7 +107,8 @@ function DataTableRoot({ data = [], columns, query, mode = 'client', isLoading =
106
107
  const DataTable = Object.assign(DataTableRoot, {
107
108
  Content: content.Content,
108
109
  Toolbar: toolbar.Toolbar,
109
- Search: search.TableSearch
110
+ Search: search.TableSearch,
111
+ Filters: filters.Filters
110
112
  });
111
113
 
112
114
  exports.DataTable = DataTable;
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.cjs","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
1
+ {"version":3,"file":"data-table.cjs","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { Filters } from './components/filters';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch,\n Filters: Filters\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACA;AACD;;"}
@@ -1,4 +1,5 @@
1
1
  import { Content } from './components/content';
2
+ import { Filters } from './components/filters';
2
3
  import { Toolbar } from './components/toolbar';
3
4
  import { DataTableProps } from './data-table.types';
4
5
  declare function DataTableRoot<TData, TValue>({ data, columns, query, mode, isLoading, loadingRowCount, defaultSort, children, onTableQueryChange, onLoadMore, onRowClick }: React.PropsWithChildren<DataTableProps<TData, TValue>>): import("react/jsx-runtime").JSX.Element;
@@ -6,6 +7,7 @@ export declare const DataTable: typeof DataTableRoot & {
6
7
  Content: typeof Content;
7
8
  Toolbar: typeof Toolbar;
8
9
  Search: import("react").ForwardRefExoticComponent<import("../search/search").SearchProps & import("react").RefAttributes<HTMLInputElement>>;
10
+ Filters: typeof Filters;
9
11
  };
10
12
  export {};
11
13
  //# sourceMappingURL=data-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../components/data-table/data-table.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EACL,cAAc,EAMf,MAAM,oBAAoB,CAAC;AAW5B,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EACpC,IAAS,EACT,OAAO,EACP,KAAK,EACL,IAAe,EACf,SAAiB,EACjB,eAAmB,EACnB,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,UAAU,EACX,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,2CA2HxD;AAED,eAAO,MAAM,SAAS;;;;CAIpB,CAAC"}
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../components/data-table/data-table.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EACL,cAAc,EAMf,MAAM,oBAAoB,CAAC;AAW5B,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EACpC,IAAS,EACT,OAAO,EACP,KAAK,EACL,IAAe,EACf,SAAiB,EACjB,eAAmB,EACnB,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,UAAU,EACX,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,2CA2HxD;AAED,eAAO,MAAM,SAAS;;;;;CAKpB,CAAC"}
@@ -3,6 +3,7 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { useReactTable } from '../../node_modules/.pnpm/@tanstack_react-table@8.9.2_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@tanstack/react-table/build/lib/index.js';
4
4
  import { useState, useRef, useMemo, useCallback, useEffect } from 'react';
5
5
  import { Content } from './components/content.js';
6
+ import { Filters } from './components/filters.js';
6
7
  import { TableSearch } from './components/search.js';
7
8
  import { Toolbar } from './components/toolbar.js';
8
9
  import { TableContext } from './context.js';
@@ -104,7 +105,8 @@ function DataTableRoot({ data = [], columns, query, mode = 'client', isLoading =
104
105
  const DataTable = Object.assign(DataTableRoot, {
105
106
  Content: Content,
106
107
  Toolbar: Toolbar,
107
- Search: TableSearch
108
+ Search: TableSearch,
109
+ Filters: Filters
108
110
  });
109
111
 
110
112
  export { DataTable };
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { Filters } from './components/filters';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch,\n Filters: Filters\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACA;AACD;;"}
@@ -8,33 +8,38 @@ var headline_module = require('./headline.module.css.cjs');
8
8
  const headline = index.cva(headline_module.default.headline, {
9
9
  variants: {
10
10
  size: {
11
- t1: headline_module.default["headline-t1"],
12
- t2: headline_module.default["headline-t2"],
13
- t3: headline_module.default["headline-t3"],
14
- t4: headline_module.default["headline-t4"],
15
- small: headline_module.default["headline-small"],
16
- medium: headline_module.default["headline-medium"],
17
- large: headline_module.default["headline-large"],
11
+ t1: headline_module.default['headline-t1'],
12
+ t2: headline_module.default['headline-t2'],
13
+ t3: headline_module.default['headline-t3'],
14
+ t4: headline_module.default['headline-t4'],
15
+ small: headline_module.default['headline-small'],
16
+ medium: headline_module.default['headline-medium'],
17
+ large: headline_module.default['headline-large']
18
+ },
19
+ weight: {
20
+ regular: headline_module.default['headline-weight-regular'],
21
+ medium: headline_module.default['headline-weight-medium']
18
22
  },
19
23
  align: {
20
- left: headline_module.default["headline-align-left"],
21
- center: headline_module.default["headline-align-center"],
22
- right: headline_module.default["headline-align-right"],
24
+ left: headline_module.default['headline-align-left'],
25
+ center: headline_module.default['headline-align-center'],
26
+ right: headline_module.default['headline-align-right']
23
27
  },
24
28
  truncate: {
25
- true: headline_module.default["headline-truncate"],
26
- },
29
+ true: headline_module.default['headline-truncate']
30
+ }
27
31
  },
28
32
  defaultVariants: {
29
- size: "t2",
30
- align: "left",
31
- truncate: false,
32
- },
33
+ size: 't2',
34
+ weight: 'medium',
35
+ align: 'left',
36
+ truncate: false
37
+ }
33
38
  });
34
- const Headline = React.forwardRef(({ className, size, align, truncate, as: Component = "h2", ...props }, ref) => {
35
- return (jsxRuntime.jsx(Component, { ref: ref, className: headline({ size, align, truncate, className }), ...props }));
39
+ const Headline = React.forwardRef(({ className, size, weight, align, truncate, as: Component = 'h2', ...props }, ref) => {
40
+ return (jsxRuntime.jsx(Component, { ref: ref, className: headline({ size, weight, align, truncate, className }), ...props }));
36
41
  });
37
- Headline.displayName = "Headline";
42
+ Headline.displayName = 'Headline';
38
43
 
39
44
  exports.Headline = Headline;
40
45
  //# sourceMappingURL=headline.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"headline.cjs","sources":["../../../components/headline/headline.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef, HTMLAttributes } from \"react\";\n\nimport styles from \"./headline.module.css\";\n\nconst headline = cva(styles.headline, {\n variants: {\n size: {\n t1: styles[\"headline-t1\"],\n t2: styles[\"headline-t2\"],\n t3: styles[\"headline-t3\"],\n t4: styles[\"headline-t4\"],\n small: styles[\"headline-small\"],\n medium: styles[\"headline-medium\"],\n large: styles[\"headline-large\"],\n },\n align: {\n left: styles[\"headline-align-left\"],\n center: styles[\"headline-align-center\"],\n right: styles[\"headline-align-right\"],\n },\n truncate: {\n true: styles[\"headline-truncate\"],\n },\n },\n defaultVariants: {\n size: \"t2\",\n align: \"left\",\n truncate: false,\n },\n});\n\nexport type HeadlineBaseProps = VariantProps<typeof headline> & {\n /**\n * @remarks Use \"t1\" | \"t2\" | \"t3\" | \"t4\"\n */\n size?: \"t1\" | \"t2\" | \"t3\" | \"t4\" | \"small\" | \"medium\" | \"large\";\n};\n\ntype HeadlineProps = HeadlineBaseProps &\n HTMLAttributes<HTMLHeadingElement> & {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n };\n\nexport const Headline = forwardRef<HTMLHeadingElement, HeadlineProps>(\n (\n { className, size, align, truncate, as: Component = \"h2\", ...props },\n ref,\n ) => {\n return (\n <Component\n ref={ref}\n className={headline({ size, align, truncate, className })}\n {...props}\n />\n );\n },\n);\n\nHeadline.displayName = \"Headline\";\n"],"names":["cva","styles","forwardRef","_jsx"],"mappings":";;;;;;;AAKA,MAAM,QAAQ,GAAGA,SAAG,CAACC,uBAAM,CAAC,QAAQ,EAAE;AACpC,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,KAAK,EAAEA,uBAAM,CAAC,gBAAgB,CAAC;AAC/B,YAAA,MAAM,EAAEA,uBAAM,CAAC,iBAAiB,CAAC;AACjC,YAAA,KAAK,EAAEA,uBAAM,CAAC,gBAAgB,CAAC;AAChC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAEA,uBAAM,CAAC,qBAAqB,CAAC;AACnC,YAAA,MAAM,EAAEA,uBAAM,CAAC,uBAAuB,CAAC;AACvC,YAAA,KAAK,EAAEA,uBAAM,CAAC,sBAAsB,CAAC;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAEA,uBAAM,CAAC,mBAAmB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA,CAAC,CAAC;AAcI,MAAM,QAAQ,GAAGC,gBAAU,CAChC,CACE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,EACpE,GAAG,KACD;IACF,QACEC,cAAC,CAAA,SAAS,EACR,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EACrD,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,EACD;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"headline.cjs","sources":["../../../components/headline/headline.tsx"],"sourcesContent":["import { type VariantProps, cva } from 'class-variance-authority';\nimport { HTMLAttributes, forwardRef } from 'react';\n\nimport styles from './headline.module.css';\n\nconst headline = cva(styles.headline, {\n variants: {\n size: {\n t1: styles['headline-t1'],\n t2: styles['headline-t2'],\n t3: styles['headline-t3'],\n t4: styles['headline-t4'],\n small: styles['headline-small'],\n medium: styles['headline-medium'],\n large: styles['headline-large']\n },\n weight: {\n regular: styles['headline-weight-regular'],\n medium: styles['headline-weight-medium']\n },\n align: {\n left: styles['headline-align-left'],\n center: styles['headline-align-center'],\n right: styles['headline-align-right']\n },\n truncate: {\n true: styles['headline-truncate']\n }\n },\n defaultVariants: {\n size: 't2',\n weight: 'medium',\n align: 'left',\n truncate: false\n }\n});\n\nexport type HeadlineBaseProps = VariantProps<typeof headline> & {\n /**\n * @remarks Use \"t1\" | \"t2\" | \"t3\" | \"t4\"\n */\n size?: 't1' | 't2' | 't3' | 't4' | 'small' | 'medium' | 'large';\n};\n\ntype HeadlineProps = HeadlineBaseProps &\n HTMLAttributes<HTMLHeadingElement> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n };\n\nexport const Headline = forwardRef<HTMLHeadingElement, HeadlineProps>(\n (\n {\n className,\n size,\n weight,\n align,\n truncate,\n as: Component = 'h2',\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={headline({ size, weight, align, truncate, className })}\n {...props}\n />\n );\n }\n);\n\nHeadline.displayName = 'Headline';\n"],"names":["cva","styles","forwardRef","_jsx"],"mappings":";;;;;;;AAKA,MAAM,QAAQ,GAAGA,SAAG,CAACC,uBAAM,CAAC,QAAQ,EAAE;AACpC,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAEA,uBAAM,CAAC,aAAa,CAAC;AACzB,YAAA,KAAK,EAAEA,uBAAM,CAAC,gBAAgB,CAAC;AAC/B,YAAA,MAAM,EAAEA,uBAAM,CAAC,iBAAiB,CAAC;AACjC,YAAA,KAAK,EAAEA,uBAAM,CAAC,gBAAgB,CAAC;AAChC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAEA,uBAAM,CAAC,yBAAyB,CAAC;AAC1C,YAAA,MAAM,EAAEA,uBAAM,CAAC,wBAAwB,CAAC;AACzC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAEA,uBAAM,CAAC,qBAAqB,CAAC;AACnC,YAAA,MAAM,EAAEA,uBAAM,CAAC,uBAAuB,CAAC;AACvC,YAAA,KAAK,EAAEA,uBAAM,CAAC,sBAAsB,CAAC;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAEA,uBAAM,CAAC,mBAAmB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA,CAAC,CAAC;AAcI,MAAM,QAAQ,GAAGC,gBAAU,CAChC,CACE,EACE,SAAS,EACT,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,EAAE,EAAE,SAAS,GAAG,IAAI,EACpB,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,QACEC,cAAA,CAAC,SAAS,EAAA,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAC7D,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,EACD;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -1,7 +1,8 @@
1
- import { type VariantProps } from "class-variance-authority";
2
- import { HTMLAttributes } from "react";
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import { HTMLAttributes } from 'react';
3
3
  declare const headline: (props?: ({
4
4
  size?: "small" | "medium" | "large" | "t1" | "t2" | "t3" | "t4" | null | undefined;
5
+ weight?: "medium" | "regular" | null | undefined;
5
6
  align?: "center" | "left" | "right" | null | undefined;
6
7
  truncate?: boolean | null | undefined;
7
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -9,10 +10,11 @@ export type HeadlineBaseProps = VariantProps<typeof headline> & {
9
10
  /**
10
11
  * @remarks Use "t1" | "t2" | "t3" | "t4"
11
12
  */
12
- size?: "t1" | "t2" | "t3" | "t4" | "small" | "medium" | "large";
13
+ size?: 't1' | 't2' | 't3' | 't4' | 'small' | 'medium' | 'large';
13
14
  };
14
15
  export declare const Headline: import("react").ForwardRefExoticComponent<VariantProps<(props?: ({
15
16
  size?: "small" | "medium" | "large" | "t1" | "t2" | "t3" | "t4" | null | undefined;
17
+ weight?: "medium" | "regular" | null | undefined;
16
18
  align?: "center" | "left" | "right" | null | undefined;
17
19
  truncate?: boolean | null | undefined;
18
20
  } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
@@ -1 +1 @@
1
- {"version":3,"file":"headline.d.ts","sourceRoot":"","sources":["../../../components/headline/headline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAc,cAAc,EAAE,MAAM,OAAO,CAAC;AAInD,QAAA,MAAM,QAAQ;;;;8EAyBZ,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG;IAC9D;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACjE,CAAC;AAOF,eAAO,MAAM,QAAQ;;;;;IAXnB;;OAEG;;;;sDAsBJ,CAAC"}
1
+ {"version":3,"file":"headline.d.ts","sourceRoot":"","sources":["../../../components/headline/headline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAc,MAAM,OAAO,CAAC;AAInD,QAAA,MAAM,QAAQ;;;;;8EA8BZ,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG;IAC9D;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACjE,CAAC;AAOF,eAAO,MAAM,QAAQ;;;;;;IAXnB;;OAEG;;;;sDA8BJ,CAAC"}
@@ -6,33 +6,38 @@ import styles from './headline.module.css.js';
6
6
  const headline = cva(styles.headline, {
7
7
  variants: {
8
8
  size: {
9
- t1: styles["headline-t1"],
10
- t2: styles["headline-t2"],
11
- t3: styles["headline-t3"],
12
- t4: styles["headline-t4"],
13
- small: styles["headline-small"],
14
- medium: styles["headline-medium"],
15
- large: styles["headline-large"],
9
+ t1: styles['headline-t1'],
10
+ t2: styles['headline-t2'],
11
+ t3: styles['headline-t3'],
12
+ t4: styles['headline-t4'],
13
+ small: styles['headline-small'],
14
+ medium: styles['headline-medium'],
15
+ large: styles['headline-large']
16
+ },
17
+ weight: {
18
+ regular: styles['headline-weight-regular'],
19
+ medium: styles['headline-weight-medium']
16
20
  },
17
21
  align: {
18
- left: styles["headline-align-left"],
19
- center: styles["headline-align-center"],
20
- right: styles["headline-align-right"],
22
+ left: styles['headline-align-left'],
23
+ center: styles['headline-align-center'],
24
+ right: styles['headline-align-right']
21
25
  },
22
26
  truncate: {
23
- true: styles["headline-truncate"],
24
- },
27
+ true: styles['headline-truncate']
28
+ }
25
29
  },
26
30
  defaultVariants: {
27
- size: "t2",
28
- align: "left",
29
- truncate: false,
30
- },
31
+ size: 't2',
32
+ weight: 'medium',
33
+ align: 'left',
34
+ truncate: false
35
+ }
31
36
  });
32
- const Headline = forwardRef(({ className, size, align, truncate, as: Component = "h2", ...props }, ref) => {
33
- return (jsx(Component, { ref: ref, className: headline({ size, align, truncate, className }), ...props }));
37
+ const Headline = forwardRef(({ className, size, weight, align, truncate, as: Component = 'h2', ...props }, ref) => {
38
+ return (jsx(Component, { ref: ref, className: headline({ size, weight, align, truncate, className }), ...props }));
34
39
  });
35
- Headline.displayName = "Headline";
40
+ Headline.displayName = 'Headline';
36
41
 
37
42
  export { Headline };
38
43
  //# sourceMappingURL=headline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headline.js","sources":["../../../components/headline/headline.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef, HTMLAttributes } from \"react\";\n\nimport styles from \"./headline.module.css\";\n\nconst headline = cva(styles.headline, {\n variants: {\n size: {\n t1: styles[\"headline-t1\"],\n t2: styles[\"headline-t2\"],\n t3: styles[\"headline-t3\"],\n t4: styles[\"headline-t4\"],\n small: styles[\"headline-small\"],\n medium: styles[\"headline-medium\"],\n large: styles[\"headline-large\"],\n },\n align: {\n left: styles[\"headline-align-left\"],\n center: styles[\"headline-align-center\"],\n right: styles[\"headline-align-right\"],\n },\n truncate: {\n true: styles[\"headline-truncate\"],\n },\n },\n defaultVariants: {\n size: \"t2\",\n align: \"left\",\n truncate: false,\n },\n});\n\nexport type HeadlineBaseProps = VariantProps<typeof headline> & {\n /**\n * @remarks Use \"t1\" | \"t2\" | \"t3\" | \"t4\"\n */\n size?: \"t1\" | \"t2\" | \"t3\" | \"t4\" | \"small\" | \"medium\" | \"large\";\n};\n\ntype HeadlineProps = HeadlineBaseProps &\n HTMLAttributes<HTMLHeadingElement> & {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n };\n\nexport const Headline = forwardRef<HTMLHeadingElement, HeadlineProps>(\n (\n { className, size, align, truncate, as: Component = \"h2\", ...props },\n ref,\n ) => {\n return (\n <Component\n ref={ref}\n className={headline({ size, align, truncate, className })}\n {...props}\n />\n );\n },\n);\n\nHeadline.displayName = \"Headline\";\n"],"names":["_jsx"],"mappings":";;;;;AAKA,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpC,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;AAC/B,YAAA,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC;AACjC,YAAA,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;AAChC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAAM,CAAC,qBAAqB,CAAC;AACnC,YAAA,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC;AACvC,YAAA,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,MAAM,CAAC,mBAAmB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA,CAAC,CAAC;AAcI,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,EACpE,GAAG,KACD;IACF,QACEA,GAAC,CAAA,SAAS,EACR,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EACrD,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,EACD;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"headline.js","sources":["../../../components/headline/headline.tsx"],"sourcesContent":["import { type VariantProps, cva } from 'class-variance-authority';\nimport { HTMLAttributes, forwardRef } from 'react';\n\nimport styles from './headline.module.css';\n\nconst headline = cva(styles.headline, {\n variants: {\n size: {\n t1: styles['headline-t1'],\n t2: styles['headline-t2'],\n t3: styles['headline-t3'],\n t4: styles['headline-t4'],\n small: styles['headline-small'],\n medium: styles['headline-medium'],\n large: styles['headline-large']\n },\n weight: {\n regular: styles['headline-weight-regular'],\n medium: styles['headline-weight-medium']\n },\n align: {\n left: styles['headline-align-left'],\n center: styles['headline-align-center'],\n right: styles['headline-align-right']\n },\n truncate: {\n true: styles['headline-truncate']\n }\n },\n defaultVariants: {\n size: 't2',\n weight: 'medium',\n align: 'left',\n truncate: false\n }\n});\n\nexport type HeadlineBaseProps = VariantProps<typeof headline> & {\n /**\n * @remarks Use \"t1\" | \"t2\" | \"t3\" | \"t4\"\n */\n size?: 't1' | 't2' | 't3' | 't4' | 'small' | 'medium' | 'large';\n};\n\ntype HeadlineProps = HeadlineBaseProps &\n HTMLAttributes<HTMLHeadingElement> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n };\n\nexport const Headline = forwardRef<HTMLHeadingElement, HeadlineProps>(\n (\n {\n className,\n size,\n weight,\n align,\n truncate,\n as: Component = 'h2',\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={headline({ size, weight, align, truncate, className })}\n {...props}\n />\n );\n }\n);\n\nHeadline.displayName = 'Headline';\n"],"names":["_jsx"],"mappings":";;;;;AAKA,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpC,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;AACzB,YAAA,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;AAC/B,YAAA,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC;AACjC,YAAA,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;AAChC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,MAAM,CAAC,yBAAyB,CAAC;AAC1C,YAAA,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACzC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAAM,CAAC,qBAAqB,CAAC;AACnC,YAAA,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC;AACvC,YAAA,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,MAAM,CAAC,mBAAmB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA,CAAC,CAAC;AAcI,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EACE,SAAS,EACT,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,EAAE,EAAE,SAAS,GAAG,IAAI,EACpB,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,QACEA,GAAA,CAAC,SAAS,EAAA,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAC7D,GAAA,KAAK,EACT,CAAA,EACF;AACJ,CAAC,EACD;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var styles = {"headline":"headline-module_headline__9pizd","headline-t1":"headline-module_headline-t1__MFXXX","headline-t2":"headline-module_headline-t2__Yrdm-","headline-t3":"headline-module_headline-t3__VANlP","headline-t4":"headline-module_headline-t4__SR27z","headline-small":"headline-module_headline-small__HDHbA","headline-medium":"headline-module_headline-medium__kyY3q","headline-large":"headline-module_headline-large__oQa8d","headline-align-left":"headline-module_headline-align-left__886nP","headline-align-center":"headline-module_headline-align-center__JPQFy","headline-align-right":"headline-module_headline-align-right__-iZyQ","headline-truncate":"headline-module_headline-truncate__mll-3","headline___t1":"headline-module_headline-t1__MFXXX","headline___t2":"headline-module_headline-t2__Yrdm-","headline___t3":"headline-module_headline-t3__VANlP","headline___t4":"headline-module_headline-t4__SR27z","headline___small":"headline-module_headline-small__HDHbA","headline___medium":"headline-module_headline-medium__kyY3q","headline___large":"headline-module_headline-large__oQa8d","headline___align___left":"headline-module_headline-align-left__886nP","headline___align___center":"headline-module_headline-align-center__JPQFy","headline___align___right":"headline-module_headline-align-right__-iZyQ","headline___truncate":"headline-module_headline-truncate__mll-3"};
5
+ var styles = {"headline":"headline-module_headline__9pizd","headline-t1":"headline-module_headline-t1__MFXXX","headline-t2":"headline-module_headline-t2__Yrdm-","headline-t3":"headline-module_headline-t3__VANlP","headline-t4":"headline-module_headline-t4__SR27z","headline-small":"headline-module_headline-small__HDHbA","headline-medium":"headline-module_headline-medium__kyY3q","headline-large":"headline-module_headline-large__oQa8d","headline-align-left":"headline-module_headline-align-left__886nP","headline-align-center":"headline-module_headline-align-center__JPQFy","headline-align-right":"headline-module_headline-align-right__-iZyQ","headline-truncate":"headline-module_headline-truncate__mll-3","headline-weight-regular":"headline-module_headline-weight-regular__TpqJf","headline-weight-medium":"headline-module_headline-weight-medium__Q1Ije","headline___t1":"headline-module_headline-t1__MFXXX","headline___t2":"headline-module_headline-t2__Yrdm-","headline___t3":"headline-module_headline-t3__VANlP","headline___t4":"headline-module_headline-t4__SR27z","headline___small":"headline-module_headline-small__HDHbA","headline___medium":"headline-module_headline-medium__kyY3q","headline___large":"headline-module_headline-large__oQa8d","headline___align___left":"headline-module_headline-align-left__886nP","headline___align___center":"headline-module_headline-align-center__JPQFy","headline___align___right":"headline-module_headline-align-right__-iZyQ","headline___truncate":"headline-module_headline-truncate__mll-3","headline___weight___regular":"headline-module_headline-weight-regular__TpqJf","headline___weight___medium":"headline-module_headline-weight-medium__Q1Ije"};
6
6
 
7
7
  exports.default = styles;
8
8
  //# sourceMappingURL=headline.module.css.cjs.map
@@ -1,4 +1,4 @@
1
- var styles = {"headline":"headline-module_headline__9pizd","headline-t1":"headline-module_headline-t1__MFXXX","headline-t2":"headline-module_headline-t2__Yrdm-","headline-t3":"headline-module_headline-t3__VANlP","headline-t4":"headline-module_headline-t4__SR27z","headline-small":"headline-module_headline-small__HDHbA","headline-medium":"headline-module_headline-medium__kyY3q","headline-large":"headline-module_headline-large__oQa8d","headline-align-left":"headline-module_headline-align-left__886nP","headline-align-center":"headline-module_headline-align-center__JPQFy","headline-align-right":"headline-module_headline-align-right__-iZyQ","headline-truncate":"headline-module_headline-truncate__mll-3","headline___t1":"headline-module_headline-t1__MFXXX","headline___t2":"headline-module_headline-t2__Yrdm-","headline___t3":"headline-module_headline-t3__VANlP","headline___t4":"headline-module_headline-t4__SR27z","headline___small":"headline-module_headline-small__HDHbA","headline___medium":"headline-module_headline-medium__kyY3q","headline___large":"headline-module_headline-large__oQa8d","headline___align___left":"headline-module_headline-align-left__886nP","headline___align___center":"headline-module_headline-align-center__JPQFy","headline___align___right":"headline-module_headline-align-right__-iZyQ","headline___truncate":"headline-module_headline-truncate__mll-3"};
1
+ var styles = {"headline":"headline-module_headline__9pizd","headline-t1":"headline-module_headline-t1__MFXXX","headline-t2":"headline-module_headline-t2__Yrdm-","headline-t3":"headline-module_headline-t3__VANlP","headline-t4":"headline-module_headline-t4__SR27z","headline-small":"headline-module_headline-small__HDHbA","headline-medium":"headline-module_headline-medium__kyY3q","headline-large":"headline-module_headline-large__oQa8d","headline-align-left":"headline-module_headline-align-left__886nP","headline-align-center":"headline-module_headline-align-center__JPQFy","headline-align-right":"headline-module_headline-align-right__-iZyQ","headline-truncate":"headline-module_headline-truncate__mll-3","headline-weight-regular":"headline-module_headline-weight-regular__TpqJf","headline-weight-medium":"headline-module_headline-weight-medium__Q1Ije","headline___t1":"headline-module_headline-t1__MFXXX","headline___t2":"headline-module_headline-t2__Yrdm-","headline___t3":"headline-module_headline-t3__VANlP","headline___t4":"headline-module_headline-t4__SR27z","headline___small":"headline-module_headline-small__HDHbA","headline___medium":"headline-module_headline-medium__kyY3q","headline___large":"headline-module_headline-large__oQa8d","headline___align___left":"headline-module_headline-align-left__886nP","headline___align___center":"headline-module_headline-align-center__JPQFy","headline___align___right":"headline-module_headline-align-right__-iZyQ","headline___truncate":"headline-module_headline-truncate__mll-3","headline___weight___regular":"headline-module_headline-weight-regular__TpqJf","headline___weight___medium":"headline-module_headline-weight-medium__Q1Ije"};
2
2
 
3
3
  export { styles as default };
4
4
  //# sourceMappingURL=headline.module.css.js.map