From a71553462900c1cd795f7286e63b5fab30da4afd Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Tue, 17 Mar 2026 11:36:08 +0100 Subject: [PATCH 01/24] [stories] added example for tables with 100rows and selectable rows --- .../advanced/data-table.advanced.stories.tsx | 5 + .../examples/checkbox_in_big_table/index.tsx | 108 + .../examples/checkbox_in_big_table/table.tsx | 1795 +++++++++++++++++ 3 files changed, 1908 insertions(+) create mode 100644 stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx create mode 100644 stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx diff --git a/stories/components/data-table/advanced/data-table.advanced.stories.tsx b/stories/components/data-table/advanced/data-table.advanced.stories.tsx index 17fdbdccd2..dfc471a0aa 100644 --- a/stories/components/data-table/advanced/data-table.advanced.stories.tsx +++ b/stories/components/data-table/advanced/data-table.advanced.stories.tsx @@ -9,6 +9,7 @@ import AccordionWithPaginationExample, { tableInTableDefaultProps } from './exam import type { TableInTableProps } from './examples/accordion_with_pagination'; import AccordionWithStickyRowsExample, { accordionStickyProps } from './examples/accordion_with_sticky_rows'; import BigTableWithStickyHeaderExample from './examples/big_table_with_sticky_header'; +import CheckboxInBigTableExample from './examples/checkbox_in_big_table'; import FakeMultiLineHeaderExample from './examples/fake-multi-level-header'; import FixedColumnsWidthWithShadowsExample from './examples/fixed_columns_width_with_shadows'; import FixedColumnsWithDiffWidthsExample from './examples/fixed_columns_with_diff_widths'; @@ -72,6 +73,10 @@ export const BigTableWithStickyHeader: Story = { render: BigTableWithStickyHeaderExample, }; +export const CheckboxInBigTable: Story = { + render: CheckboxInBigTableExample, +}; + export const FixedColumnsWithDiffWidths: Story = { render: FixedColumnsWithDiffWidthsExample, }; diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx new file mode 100644 index 0000000000..257851a2df --- /dev/null +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx @@ -0,0 +1,108 @@ +import { + Box, + Flex, + Collapse, + ScreenReaderOnly, +} from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; +import { Text } from '@semcore/ui/typography'; +import React from 'react'; + +import { Table } from './table'; + +type CheckboxExampleProps = { + animationDuration: number; + loading: boolean; + sideIndents?: 'wide'; + compact?: boolean; +}; + +const Demo = (props: CheckboxExampleProps) => { + const [selectedRows, setSelectedRows] = React.useState([]); + const [selectedRowsDisplay, setSelectedRowsDisplay] = React.useState(0); + const [ariaMessage, setAriaMessage] = React.useState(''); + const [currentPage, setCurrentPage] = React.useState(0); + const tableRef = React.useRef(null); + + const handleChangeSelectedRows = React.useCallback((value: string[]) => { + setSelectedRows(value); + + if (!selectedRows.length) + setAriaMessage('Action bar appeared before the table'); + setSelectedRowsDisplay(value.length); + }, []); + + const handleDeselectAll = () => { + setSelectedRows([]); + tableRef.current?.focus(); + }; + + React.useEffect(() => { + const timer = setTimeout(() => setAriaMessage(''), 300); + return () => clearTimeout(timer); + }, [ariaMessage]); + + return ( + <> + + + {ariaMessage} + + + + + Selected rows: {selectedRowsDisplay} + + + + + 0} + handleChangeSelectedRows={handleChangeSelectedRows} + animationDuration={props.animationDuration} + loading={props.loading} + compact={props.compact} + sideIndents={props.sideIndents} + /> + + + ); +}; + +export const defaultProps: CheckboxExampleProps = { + animationDuration: 200, + loading: false, + sideIndents: undefined, + compact: undefined, +}; + +Demo.defaultProps = defaultProps; + +export default Demo; diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx new file mode 100644 index 0000000000..4280d0108e --- /dev/null +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx @@ -0,0 +1,1795 @@ +import { + Box, + Flex, + Collapse, + ScreenReaderOnly, +} from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; +import { DataTable } from '@semcore/ui/data-table'; +import Pagination from '@semcore/ui/pagination'; +import { Text } from '@semcore/ui/typography'; +import React from 'react'; + +type CheckboxExampleProps = { + animationDuration: number; + loading: boolean; + sideIndents?: 'wide'; + compact?: boolean; +}; + +const columns = [ + { name: 'keyword', children: 'Keyword' }, + { name: 'intent', children: 'Intent' }, + { name: 'previousPosition', children: 'Intent' }, + { name: 'position', children: 'Intent' }, + { name: 'traffic', children: 'Traffic' }, + { name: 'trafficPercent', children: 'Traffic' }, + { name: 'vol', children: 'Vol.' }, + { name: 'kd', children: 'KD %' }, + { name: 'cpc', children: 'CPC' }, + { name: 'url', children: 'CPC' }, + { name: 'cost', children: 'Comp.' }, + { name: 'comp', children: 'Comp.' }, + { name: 'results', children: 'Results' }, + { name: 'crawledTime', children: 'Updated' }, +]; + +type TableProps = { + selectedRows: string[]; + hasSelectedRows: boolean; + handleChangeSelectedRows: (value: string[]) => void; + animationDuration: number; + + sideIndents?: 'wide'; + loading: boolean; + compact?: boolean; +}; + +export const Table = (props: TableProps) => { + const [currentPage, setCurrentPage] = React.useState(0); + + const tableRef = React.useRef(null); + + const handleDeselectAll = () => { + props.handleChangeSelectedRows([]); + tableRef.current?.focus(); + }; + + const limit = 100; + const tableData = React.useMemo(() => { + return data.slice( + currentPage * limit, + currentPage * limit + limit, + ); + }, [currentPage, limit]); + + const headerProps = React.useMemo(() => { + return { + sticky: true, + top: props.hasSelectedRows ? 44 : 0, + animationDuration: props.animationDuration, + }; + }, [props.hasSelectedRows, props.animationDuration]); + + return ( + <> + + + ); +}; + +const data = [ + { + id: '1', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '2', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '3', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '4', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '5', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '6', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '7', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '8', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '9', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '10', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '11', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '12', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '13', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '14', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '15', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '16', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '17', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '18', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '19', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '20', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '21', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '22', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '23', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '24', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '25', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '26', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '27', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '28', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '29', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '30', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '31', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '32', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '33', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '34', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '35', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '36', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '37', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '38', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '39', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '40', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '41', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '42', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '43', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '44', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '45', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '46', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '47', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '48', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '49', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '50', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '51', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '52', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '53', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '54', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '55', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '56', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '57', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '58', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '59', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '60', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '61', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '62', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '63', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '64', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '65', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '66', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '67', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '68', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '69', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '70', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '71', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '72', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '73', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '74', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '75', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '76', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '77', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '78', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '79', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '80', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '81', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '82', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '83', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '84', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '85', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '86', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '87', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '88', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '89', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '90', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '91', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '92', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '93', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '94', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '95', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '96', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '97', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '98', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '99', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '100', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, +]; From bf76d3db77f1180b9bf8ca073f1428492d306368 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 19 Mar 2026 11:40:50 +0100 Subject: [PATCH 02/24] [data-table] added solution to selectedRows in big tables --- .../data-table/src/components/Body/Body.tsx | 4 +- .../src/components/Body/Body.types.ts | 3 +- .../src/components/Body/LimitOverlay.tsx | 2 +- .../data-table/src/components/Body/Row.tsx | 45 +- .../src/components/Body/Row.types.ts | 3 +- .../src/components/DataTable/DataTable.tsx | 30 +- .../components/DataTable/DataTable.types.ts | 41 +- .../data-table/src/components/Head/Head.tsx | 64 +- .../src/components/Head/Head.types.ts | 3 +- semcore/data-table/src/index.ts | 2 + .../data-table/src/store/SelectableRows.ts | 118 ++ .../advanced/data-table.advanced.stories.tsx | 5 + .../checkbox_in_big_table_reactive/index.tsx | 127 ++ .../checkbox_in_big_table_reactive/table.tsx | 1779 +++++++++++++++++ 14 files changed, 2174 insertions(+), 52 deletions(-) create mode 100644 semcore/data-table/src/store/SelectableRows.ts create mode 100644 stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx create mode 100644 stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx diff --git a/semcore/data-table/src/components/Body/Body.tsx b/semcore/data-table/src/components/Body/Body.tsx index 3bb19a92fb..6ad5fd0004 100644 --- a/semcore/data-table/src/components/Body/Body.tsx +++ b/semcore/data-table/src/components/Body/Body.tsx @@ -150,7 +150,7 @@ class BodyRoot extends Component extends Component = DataTableB renderCell?: (props: CellRenderProps) => React.ReactNode | Record; onBackFromAccordion: (colName: string) => void; stickyHeader?: boolean; - selectedRows?: UniqKeyType[]; + selectedRows?: UniqKeyType[] | ISelectedRows; onSelectRow?: ( isSelect: boolean, selectedRowIndex: number, diff --git a/semcore/data-table/src/components/Body/LimitOverlay.tsx b/semcore/data-table/src/components/Body/LimitOverlay.tsx index be9f4fd92c..eb4ab068e7 100644 --- a/semcore/data-table/src/components/Body/LimitOverlay.tsx +++ b/semcore/data-table/src/components/Body/LimitOverlay.tsx @@ -120,7 +120,7 @@ class LimitOverlayRoot extends Component e.stopPropagation()} + onClick={(e: React.SyntheticEvent) => e.stopPropagation()} > extends Component< private closeAccordionTimeout = 0; private openAccordionTimeout = 0; + private unsubscribeSelectAll: undefined | (() => void) = undefined; + private unsubscribeToggle: undefined | (() => void) = undefined; + rowElementRef = React.createRef(); state: State = { @@ -50,9 +54,21 @@ export class RowRoot extends Component< } componentDidMount() { - this.asProps.componentRef?.(this); + const { componentRef, selectedRows, row } = this.asProps; + componentRef?.(this); this.setAccordion(); + + if (selectedRows && !Array.isArray(selectedRows)) { + this.unsubscribeSelectAll = selectedRows.subscribe(SelectableRows.SELECT_ALL_EVENT, () => { + this.forceUpdate(); + }); + this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { + if (row[UNIQ_ROW_KEY] === key) { + this.forceUpdate(); + } + }); + } } componentDidUpdate(prevProps: DataTableRowProps) { @@ -65,6 +81,9 @@ export class RowRoot extends Component< componentWillUnmount() { this.asProps.componentRef?.(null); + + this.unsubscribeSelectAll?.(); + this.unsubscribeToggle?.(); } setAccordion() { @@ -109,17 +128,25 @@ export class RowRoot extends Component< } handleSelectRow = (value: boolean, event?: React.SyntheticEvent) => { - const { row, rowIndex, onSelectRow } = this.asProps; + const { row, rowIndex, onSelectRow, selectedRows } = this.asProps; onSelectRow?.(value, rowIndex, row, event); + + if (selectedRows && !Array.isArray(selectedRows)) { + selectedRows.toggle(value, row); + } }; handleClickCheckbox = (value: boolean) => (event?: React.SyntheticEvent) => { event?.preventDefault(); event?.stopPropagation(); - const { row, rowIndex, onSelectRow } = this.asProps; + const { row, rowIndex, onSelectRow, selectedRows } = this.asProps; onSelectRow?.(value, rowIndex, row, event); + + if (selectedRows && !Array.isArray(selectedRows)) { + selectedRows.toggle(value, row); + } }; handleBackFromAccordion = (e: React.KeyboardEvent) => { @@ -275,7 +302,6 @@ export class RowRoot extends Component< isAccordionRow, accordionRowIndex, selectedRows, - theme, } = this.asProps; const SAccordionToggle = ButtonLink; @@ -317,7 +343,6 @@ export class RowRoot extends Component< flatRows: this.asProps.flatRows, shadowVertical, withoutBorder, - theme, }; if (renderCell) { @@ -453,7 +478,6 @@ export class RowRoot extends Component< scrollAreaRef, accordionAnimationRows, onCellClick, - theme, } = this.asProps; const { expandedForAnimation, accordionRows, accordionComponent } = this.state; @@ -474,6 +498,11 @@ export class RowRoot extends Component< const rowUniqKey = row[UNIQ_ROW_KEY]; const accordionId = `${uid}_${rowUniqKey}`; + let theme = this.asProps.theme; + if (selectedRows && (Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.has(rowUniqKey))) { + theme = 'info'; + } + const rowsLimit = limit?.fromRow; const columnsLimit = limit?.fromColumn; @@ -500,6 +529,7 @@ export class RowRoot extends Component< onClick={this.handleClickRow(row)} aria-hidden={this.isRowHidden} data-filled-columns={filledColumns} + theme={theme} > {columns.map((column, i) => { const index = i; @@ -522,7 +552,7 @@ export class RowRoot extends Component< } if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { - const checked = selectedRows.includes(rowUniqKey); + const checked = Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.has(rowUniqKey); const nextColumnName = columns[i + 1].name; @@ -588,6 +618,7 @@ export class RowRoot extends Component< aria-hidden={isCellHidden} style={style} data-aria-level={index === 0 ? ariaLevel : undefined} + theme={theme} /> ); })} diff --git a/semcore/data-table/src/components/Body/Row.types.ts b/semcore/data-table/src/components/Body/Row.types.ts index 869dfbdf96..b99675558d 100644 --- a/semcore/data-table/src/components/Body/Row.types.ts +++ b/semcore/data-table/src/components/Body/Row.types.ts @@ -5,6 +5,7 @@ import type { CellRenderProps } from './Body.types'; import type { DataTableCellProps, Theme } from './Cell.types'; import type { MergedColumnsCell, MergedRowsCell } from './MergedCells'; import type { RowRoot } from './Row'; +import type { ISelectedRows } from '../../store/SelectableRows'; import type { ACCORDION, GRID_ROW_INDEX, @@ -68,7 +69,7 @@ export type RowPropsInner = JSX.Intrins gridTemplateAreas: string[]; gridTemplateColumns: string[]; - selectedRows?: UniqKeyType[]; + selectedRows?: UniqKeyType[] | ISelectedRows; onSelectRow?: ( isSelect: boolean, selectedRowIndex: number, diff --git a/semcore/data-table/src/components/DataTable/DataTable.tsx b/semcore/data-table/src/components/DataTable/DataTable.tsx index 365ec8eaad..5f65bc6e39 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.tsx +++ b/semcore/data-table/src/components/DataTable/DataTable.tsx @@ -178,7 +178,7 @@ class DataTableRoot< this.calculateVerticalShadow(); } } - if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined) { + if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined && Array.isArray(selectedRows)) { const selectedRowsSet = new Set(selectedRows); const allChecked: UniqKeyType[] = []; @@ -276,7 +276,6 @@ class DataTableRoot< getI18nText, uid, headerProps, - onSelectedRowsChange, selectedRows, sideIndents, variant, @@ -305,7 +304,7 @@ class DataTableRoot< totalRows: this.totalRows, selectedRows, flatRows: this.getFlatRows(), - onChangeSelectAll: onSelectedRowsChange, + onChangeSelectAll: Array.isArray(selectedRows) ? this.handleSelectAllRows : undefined, getFixedStyle: this.getFixedStyle, onCellClick: this.handleCellClick, shadowVertical, @@ -372,7 +371,7 @@ class DataTableRoot< renderEmptyData, sideIndents, selectedRows, - onSelectRow: this.handleSelectRow, + onSelectRow: Array.isArray(selectedRows) ? this.handleSelectRow : undefined, getFixedStyle: this.getFixedStyle, onCellClick: this.handleCellClick, rawData, @@ -427,15 +426,23 @@ class DataTableRoot< } }; + handleSelectAllRows = (selectedRows: UniqKeyType[], event?: React.SyntheticEvent) => { + if (!('onSelectedRowsChange' in this.asProps) || !this.asProps.onSelectedRowsChange || !Array.isArray(selectedRows)) return; + + this.asProps.onSelectedRowsChange(selectedRows, event); + }; + handleSelectRow = ( isSelected: boolean, selectedRowIndex: number, row: DTRow, event?: React.SyntheticEvent, ) => { - const { selectedRows, onSelectedRowsChange } = this.asProps; + const { selectedRows } = this.asProps; - if (!selectedRows || !onSelectedRowsChange) return; + if (!selectedRows || !('onSelectedRowsChange' in this.asProps) || !this.asProps.onSelectedRowsChange || !Array.isArray(selectedRows)) return; + + const { onSelectedRowsChange } = this.asProps; const selectedRowsSet = new Set(selectedRows); @@ -1243,7 +1250,7 @@ class DataTableRoot< private getRows(): Array[] | DTRow> { const columns = this.columns; // @ts-ignore - const { data, uid, uniqueRowKey } = this.props; + const { data, uid, uniqueRowKey, selectedRows } = this.props; if (this.tmpData === data) { return this.calculatedRows; @@ -1251,6 +1258,8 @@ class DataTableRoot< this.tmpData = data; + const availableRowKeys: UniqKeyType[] = []; + const rows: Array[] | DTRow> = []; const columnNames = columns.map((column: DTColumn) => column.name); @@ -1340,6 +1349,8 @@ class DataTableRoot< }); } + availableRowKeys.push(dtRow[UNIQ_ROW_KEY]); + return dtRow; }; @@ -1414,6 +1425,11 @@ class DataTableRoot< }); this.calculatedRows = rows; + + if (selectedRows && !Array.isArray(selectedRows)) { + selectedRows.setAvailableKeys(availableRowKeys); + } + return rows; } diff --git a/semcore/data-table/src/components/DataTable/DataTable.types.ts b/semcore/data-table/src/components/DataTable/DataTable.types.ts index d77e2c9b3d..fd3c3936c1 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.types.ts +++ b/semcore/data-table/src/components/DataTable/DataTable.types.ts @@ -4,6 +4,7 @@ import type Tooltip from '@semcore/tooltip'; import type * as React from 'react'; import type { ACCORDION, ROW_GROUP, UNIQ_ROW_KEY } from './DataTable'; +import type { ISelectedRows } from '../../store/SelectableRows'; import type { DataTableBodyProps } from '../Body/Body.types'; import type { DTRow, RowPropsInner } from '../Body/Row.types'; import type { DataTableColumnProps } from '../Head/Column.types'; @@ -115,22 +116,6 @@ export type DataTableProps< */ uniqueRowKey?: UniqKey; - /** - * List of selected rows (uniqIds from a data array) - */ - selectedRows?: UniqKeyType[]; - - /** Callback when row selection changes */ - onSelectedRowsChange?: ( - selectedRows: UniqKeyType[], - event?: React.SyntheticEvent, - opts?: { - selectedRowIndex: number; - isSelected: boolean; - row: DTRow; - } - ) => void; - /** * For custom empty data widget. */ @@ -196,7 +181,29 @@ export type DataTableProps< * Handling table container resizing. */ onResize?: ResizeObserverCallback; - }; + } & ({ + /** + * List of selected rows (uniqIds from a data array) + */ + selectedRows?: UniqKeyType[]; + + /** Callback when row selection changes */ + onSelectedRowsChange?: ( + selectedRows: UniqKeyType[], + event?: React.SyntheticEvent, + opts?: { + selectedRowIndex: number; + isSelected: boolean; + row: DTRow; + } + ) => void; + } | { + /** + * Entity of selected rows (uniq id from them) + * This is mutable! variable because of table performance. Don't change the link on it. + */ + selectedRows?: ISelectedRows; + }); export type ColumnItemConfig = Intergalactic.InternalTypings.EfficientOmit< Intergalactic.InternalTypings.ComponentProps< diff --git a/semcore/data-table/src/components/Head/Head.tsx b/semcore/data-table/src/components/Head/Head.tsx index e21119c332..a729a03fbe 100644 --- a/semcore/data-table/src/components/Head/Head.tsx +++ b/semcore/data-table/src/components/Head/Head.tsx @@ -10,6 +10,7 @@ import { Group } from './Group'; import type { DataTableGroupProps } from './Group.type'; import type { DataTableHeadProps, HeadPropsInner } from './Head.types'; import style from './style.shadow.css'; +import { SelectableRows } from '../../store/SelectableRows'; import type { DTRow } from '../Body/Row.types'; import { DataTable, type ROW_GROUP, SELECT_ALL, UNIQ_ROW_KEY } from '../DataTable/DataTable'; import type { DataTableData } from '../DataTable/DataTable.types'; @@ -28,6 +29,22 @@ class HeadRoot< static displayName = 'Head'; static style = style; + private unsubscribeSelectAll: undefined | (() => void) = undefined; + + componentDidMount() { + const { selectedRows } = this.asProps; + + if (selectedRows && !Array.isArray(selectedRows)) { + this.unsubscribeSelectAll = selectedRows.subscribe(SelectableRows.SELECT_ALL_EVENT, () => { + this.forceUpdate(); + }); + } + } + + componentWillUnmount() { + this.unsubscribeSelectAll?.(); + } + sortableColumnDescribeId() { const { uid } = this.asProps; return `${uid}-column-sortable-describer`; @@ -129,20 +146,29 @@ class HeadRoot< } handleSelectAll = (value: boolean, event?: React.SyntheticEvent) => { - const { selectedRows = [] } = this.asProps; - const idsSet = new Set(selectedRows); + const { selectedRows } = this.asProps; - if (value) { - this.selectableRows.forEach((row) => { - idsSet.add(row[UNIQ_ROW_KEY]); - }); - } else { - this.selectableRows.forEach((row) => { - idsSet.delete(row[UNIQ_ROW_KEY]); - }); - } + if (Array.isArray(selectedRows)) { + const idsSet = new Set(selectedRows); + + if (value) { + this.selectableRows.forEach((row) => { + idsSet.add(row[UNIQ_ROW_KEY]); + }); + } else { + this.selectableRows.forEach((row) => { + idsSet.delete(row[UNIQ_ROW_KEY]); + }); + } - this.asProps.onChangeSelectAll?.(Array.from(idsSet), event); + this.asProps.onChangeSelectAll?.(Array.from(idsSet), event); + } else if (selectedRows) { + if (value) { + selectedRows.selectAll(); + } else { + selectedRows.clearAll(); + } + } }; handleClickSelectAll = (value: boolean) => (event?: React.SyntheticEvent) => { @@ -153,15 +179,23 @@ class HeadRoot< }; get areAllRowsSelected() { - const { selectedRows = [] } = this.asProps; + const { selectedRows } = this.asProps; - return selectedRows.length > 0 && this.selectableRows.every((row) => selectedRows?.includes(row[UNIQ_ROW_KEY])); + if (Array.isArray(selectedRows)) { + return selectedRows.length > 0 && this.selectableRows.every((row) => selectedRows?.includes(row[UNIQ_ROW_KEY])); + } else if (selectedRows) { + return selectedRows.isAllSelected(); + } } get isIndeterminate() { const { selectedRows } = this.asProps; - return this.selectableRows.some((row) => selectedRows?.includes(row[UNIQ_ROW_KEY])); + if (Array.isArray(selectedRows)) { + return this.selectableRows.some((row) => selectedRows?.includes(row[UNIQ_ROW_KEY])); + } else if (selectedRows) { + return selectedRows.isIndeterminate(); + } } get selectableRows(): DTRow[] { diff --git a/semcore/data-table/src/components/Head/Head.types.ts b/semcore/data-table/src/components/Head/Head.types.ts index 91e6e1adf7..3885f1fec0 100644 --- a/semcore/data-table/src/components/Head/Head.types.ts +++ b/semcore/data-table/src/components/Head/Head.types.ts @@ -1,4 +1,5 @@ import type { ColumnPropsInner, DTColumn } from './Column.types'; +import type { ISelectedRows } from '../../store/SelectableRows'; import type { BodyPropsInner } from '../Body/Body.types'; import type { DataTableCellProps } from '../Body/Cell.types'; import type { DTRow } from '../Body/Row.types'; @@ -54,7 +55,7 @@ export type HeadPropsInner< sideIndents?: 'wide'; totalRows: number; - selectedRows?: UniqKeyType[]; + selectedRows?: UniqKeyType[] | ISelectedRows; onChangeSelectAll?: (selectedRows: UniqKeyType[], event?: React.SyntheticEvent) => void; flatRows: DTRow[]; diff --git a/semcore/data-table/src/index.ts b/semcore/data-table/src/index.ts index 39ff2750a3..aba62e0f75 100644 --- a/semcore/data-table/src/index.ts +++ b/semcore/data-table/src/index.ts @@ -13,6 +13,7 @@ import type { ColumnGroupConfig, ColumnItemConfig, } from './components/DataTable/DataTable.types'; +import { SelectableRows } from './store/SelectableRows'; const wrapDataTable = ( wrapper: ( @@ -34,6 +35,7 @@ export { */ UNIQ_ROW_KEY, wrapDataTable, + SelectableRows, }; export type { DataTableSort, diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts new file mode 100644 index 0000000000..5d077ef34f --- /dev/null +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -0,0 +1,118 @@ +import EventEmitter from '@semcore/core/lib/utils/eventEmitter'; + +import type { DTRow } from '../components/Body/Row.types'; +import { UNIQ_ROW_KEY } from '../components/DataTable/DataTable'; + +export interface ISelectedRows { + setAvailableKeys(keys: UniqKeyType[]): void; + + get(): UniqKeyType[]; + set(value: UniqKeyType[]): void; + has(value: UniqKeyType): boolean; + selectAll(): void; + clearAll(): void; + toggle(selected: boolean, row: DTRow): void; + + isAllSelected(): boolean; + isIndeterminate(): boolean; + + subscribe: EventEmitter['subscribe']; +} + +export class SelectableRows extends EventEmitter implements ISelectedRows { + private readonly values: Set; + + private availableKeys = new Set(); + + public static TOGGLE_EVENT = 'toggle_selected_row'; + public static SELECT_ALL_EVENT = 'select_all_selected_rows'; + + constructor(initValues: UniqRowKeyType[] = []) { + super(); + + this.values = new Set(initValues); + } + + public setAvailableKeys(value: UniqRowKeyType[]): void { + this.availableKeys = new Set(value); + } + + public get() { + return Array.from(this.values.values()); + } + + public set(value: UniqRowKeyType[]): void { + this.clearAll(); + + value.forEach((val) => { + this.values.add(val); + + this.emit(SelectableRows.TOGGLE_EVENT, val); + }); + } + + public has(value: UniqRowKeyType): boolean { + return this.values.has(value); + } + + public isAllSelected(): boolean { + let isAllSelected = true; + + for (const key of this.availableKeys.values()) { + if (!this.values.has(key)) { + isAllSelected = false; + break; + } + } + + return isAllSelected; + } + + public isIndeterminate(): boolean { + let isIndeterminate = false; + + for (const key of this.availableKeys.values()) { + if (this.values.has(key)) { + isIndeterminate = true; + break; + } + } + + return isIndeterminate; + } + + public selectAll(): void { + for (const key of this.availableKeys.values()) { + this.values.add(key); + } + + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + + public clearAll(): void { + this.values.clear(); + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + + public toggle(selected: boolean, row: DTRow): void { + if (selected) { + if (this.values.size === 0) { + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + + this.values.add(row[UNIQ_ROW_KEY]); + + if (this.values.size === this.availableKeys.size) { + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + } else { + this.values.delete(row[UNIQ_ROW_KEY]); + + if (this.values.size === 0) { + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + } + + this.emit(SelectableRows.TOGGLE_EVENT, row[UNIQ_ROW_KEY]); + } +} diff --git a/stories/components/data-table/advanced/data-table.advanced.stories.tsx b/stories/components/data-table/advanced/data-table.advanced.stories.tsx index dfc471a0aa..38a182eed2 100644 --- a/stories/components/data-table/advanced/data-table.advanced.stories.tsx +++ b/stories/components/data-table/advanced/data-table.advanced.stories.tsx @@ -10,6 +10,7 @@ import type { TableInTableProps } from './examples/accordion_with_pagination'; import AccordionWithStickyRowsExample, { accordionStickyProps } from './examples/accordion_with_sticky_rows'; import BigTableWithStickyHeaderExample from './examples/big_table_with_sticky_header'; import CheckboxInBigTableExample from './examples/checkbox_in_big_table'; +import CheckboxInBigTableReactiveExample from './examples/checkbox_in_big_table_reactive'; import FakeMultiLineHeaderExample from './examples/fake-multi-level-header'; import FixedColumnsWidthWithShadowsExample from './examples/fixed_columns_width_with_shadows'; import FixedColumnsWithDiffWidthsExample from './examples/fixed_columns_with_diff_widths'; @@ -77,6 +78,10 @@ export const CheckboxInBigTable: Story = { render: CheckboxInBigTableExample, }; +export const CheckboxInBigTableReactive: Story = { + render: CheckboxInBigTableReactiveExample, +}; + export const FixedColumnsWithDiffWidths: Story = { render: FixedColumnsWithDiffWidthsExample, }; diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx new file mode 100644 index 0000000000..07095c9d3a --- /dev/null +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx @@ -0,0 +1,127 @@ +import { + Box, + Flex, + Collapse, + ScreenReaderOnly, +} from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; +import { SelectableRows } from '@semcore/ui/data-table'; +import { Text } from '@semcore/ui/typography'; +import React from 'react'; + +import { Table } from './table'; + +type CheckboxExampleProps = { + animationDuration: number; + loading: boolean; + sideIndents?: 'wide'; + compact?: boolean; +}; + +const selectedRows = new SelectableRows(); + +const Demo = (props: CheckboxExampleProps) => { + const [selectedRowsDisplay, setSelectedRowsDisplay] = React.useState(0); + const [ariaMessage, setAriaMessage] = React.useState(''); + const tableRef = React.useRef(null); + + const handleDeselectAll = () => { + selectedRows.clearAll(); + tableRef.current?.focus(); + }; + + React.useEffect(() => { + const unsubscribe = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, () => { + const selectedRowsSize = selectedRows.get().length; + if (selectedRowsSize > 0) { + setAriaMessage('Action bar appeared before the table'); + } + + setSelectedRowsDisplay(selectedRowsSize); + }); + + return unsubscribe; + }, []); + + React.useEffect(() => { + const unsubscribe = selectedRows.subscribe(SelectableRows.SELECT_ALL_EVENT, () => { + const selectedRowsSize = selectedRows.get().length; + if (selectedRowsSize > 0) { + setAriaMessage('Action bar appeared before the table'); + } + + setSelectedRowsDisplay(selectedRowsSize); + }); + + return unsubscribe; + }, []); + + React.useEffect(() => { + const timer = setTimeout(() => setAriaMessage(''), 300); + return () => clearTimeout(timer); + }, [ariaMessage]); + + return ( + <> + + + {ariaMessage} + + + + + Selected rows: {selectedRowsDisplay} + + + + +
0} + tableRef={tableRef} + animationDuration={props.animationDuration} + loading={props.loading} + compact={props.compact} + sideIndents={props.sideIndents} + /> + + + ); +}; + +export const defaultProps: CheckboxExampleProps = { + animationDuration: 200, + loading: false, + sideIndents: undefined, + compact: undefined, +}; + +Demo.defaultProps = defaultProps; + +export default Demo; diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx new file mode 100644 index 0000000000..703504ecc2 --- /dev/null +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx @@ -0,0 +1,1779 @@ +import { + Box, + Flex, + Collapse, + ScreenReaderOnly, +} from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; +import type { SelectableRows } from '@semcore/ui/data-table'; +import { DataTable } from '@semcore/ui/data-table'; +import Pagination from '@semcore/ui/pagination'; +import { Text } from '@semcore/ui/typography'; +import React from 'react'; + +type CheckboxExampleProps = { + animationDuration: number; + loading: boolean; + sideIndents?: 'wide'; + compact?: boolean; +}; + +const columns = [ + { name: 'keyword', children: 'Keyword' }, + { name: 'intent', children: 'Intent' }, + { name: 'previousPosition', children: 'Intent' }, + { name: 'position', children: 'Intent' }, + { name: 'traffic', children: 'Traffic' }, + { name: 'trafficPercent', children: 'Traffic' }, + { name: 'vol', children: 'Vol.' }, + { name: 'kd', children: 'KD %' }, + { name: 'cpc', children: 'CPC' }, + { name: 'url', children: 'CPC' }, + { name: 'cost', children: 'Comp.' }, + { name: 'comp', children: 'Comp.' }, + { name: 'results', children: 'Results' }, + { name: 'crawledTime', children: 'Updated' }, +]; + +type TableProps = { + selectedRows: SelectableRows; + hasSelectedRows: boolean; + animationDuration: number; + tableRef: React.Ref; + + sideIndents?: 'wide'; + loading: boolean; + compact?: boolean; +}; + +export const Table = (props: TableProps) => { + const headerProps = React.useMemo(() => { + return { + sticky: true, + top: props.hasSelectedRows ? 44 : 0, + animationDuration: props.animationDuration, + }; + }, [props.hasSelectedRows, props.animationDuration]); + + return ( + <> + + + ); +}; + +const data = [ + { + id: '1', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '2', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '3', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '4', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '5', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '6', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '7', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '8', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '9', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '10', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '11', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '12', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '13', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '14', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '15', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '16', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '17', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '18', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '19', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '20', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '21', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '22', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '23', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '24', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '25', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '26', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '27', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '28', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '29', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '30', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '31', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '32', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '33', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '34', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '35', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '36', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '37', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '38', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '39', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '40', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '41', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '42', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '43', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '44', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '45', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '46', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '47', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '48', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '49', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '50', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '51', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '52', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '53', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '54', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '55', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '56', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '57', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '58', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '59', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '60', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '61', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '62', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '63', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '64', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '65', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '66', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '67', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '68', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '69', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '70', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '71', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '72', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '73', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '74', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '75', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '76', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '77', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '78', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '79', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '80', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '81', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '82', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '83', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '84', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '85', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '86', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '87', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '88', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '89', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '90', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '91', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '92', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '93', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '94', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '95', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '96', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '97', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '98', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '99', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, + { + id: '100', + keyword: 'ebay buy', + intent: 'Commercial', + previousPosition: 3, + position: 1, + traffic: 1500, + trafficPercent: '6.8%', + vol: '22,000', + kd: '31.2', + cpc: '$1.15', + url: 'https://www.ebay.com/buy', + cost: '$1,725', + comp: '0.85', + results: '1,200,000,000', + crawledTime: '2024-06-01 12:00:00', + }, +]; From 89cf946d170ae42ae77b8a79b0ecca2252201800 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 19 Mar 2026 16:45:32 +0100 Subject: [PATCH 03/24] [chore] linter fix --- .../advanced/data-table.advanced.stories.tsx | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/stories/components/data-table/advanced/data-table.advanced.stories.tsx b/stories/components/data-table/advanced/data-table.advanced.stories.tsx index 38a182eed2..62a337863b 100644 --- a/stories/components/data-table/advanced/data-table.advanced.stories.tsx +++ b/stories/components/data-table/advanced/data-table.advanced.stories.tsx @@ -1,5 +1,5 @@ import { DataTable } from '@semcore/ui/data-table'; -import type { Meta, StoryObj } from '@storybook/react-vite'; +import type { Meta, StoryObj, ArgTypes } from '@storybook/react-vite'; import AccordionInMergedRowsExample, { accordionMergedProps } from './examples/accordion_in_merged_rows'; import type { AccordionWithCheckboxProps } from './examples/accordion_with_checkbox'; @@ -9,8 +9,8 @@ import AccordionWithPaginationExample, { tableInTableDefaultProps } from './exam import type { TableInTableProps } from './examples/accordion_with_pagination'; import AccordionWithStickyRowsExample, { accordionStickyProps } from './examples/accordion_with_sticky_rows'; import BigTableWithStickyHeaderExample from './examples/big_table_with_sticky_header'; -import CheckboxInBigTableExample from './examples/checkbox_in_big_table'; -import CheckboxInBigTableReactiveExample from './examples/checkbox_in_big_table_reactive'; +import CheckboxInBigTableExample, { defaultProps as checkboxInBigTableDefaultProps } from './examples/checkbox_in_big_table'; +import CheckboxInBigTableReactiveExample, { defaultProps as checkboxInBigReactiveTableDefaultProps } from './examples/checkbox_in_big_table_reactive'; import FakeMultiLineHeaderExample from './examples/fake-multi-level-header'; import FixedColumnsWidthWithShadowsExample from './examples/fixed_columns_width_with_shadows'; import FixedColumnsWithDiffWidthsExample from './examples/fixed_columns_with_diff_widths'; @@ -30,6 +30,23 @@ const meta: Meta = { component: DataTable, }; +const checkboxArgTypes: Partial> = { + animationDuration: { + control: { type: 'number' }, + }, + loading: { control: 'boolean' }, + sideIndents: { + control: 'select', + options: [undefined, 'wide'], + defaultValue: undefined, + }, + compact: { + control: 'radio', + options: [undefined, true, false], + defaultValue: undefined, + }, +}; + export default meta; type Story = StoryObj; @@ -74,12 +91,16 @@ export const BigTableWithStickyHeader: Story = { render: BigTableWithStickyHeaderExample, }; -export const CheckboxInBigTable: Story = { +export const CheckboxInBigTable: StoryObj = { render: CheckboxInBigTableExample, + argTypes: checkboxArgTypes, + args: checkboxInBigTableDefaultProps, }; -export const CheckboxInBigTableReactive: Story = { +export const CheckboxInBigTableReactive: StoryObj = { render: CheckboxInBigTableReactiveExample, + argTypes: checkboxArgTypes, + args: checkboxInBigReactiveTableDefaultProps, }; export const FixedColumnsWithDiffWidths: Story = { From e064bf6bdeb101c4971470eebd88fa9cde78b038 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 19 Mar 2026 18:05:36 +0100 Subject: [PATCH 04/24] [data-table] added comments, marked selectedRows: [] as deprecated --- .../components/DataTable/DataTable.types.ts | 1 + .../data-table/src/store/SelectableRows.ts | 20 +++++++++++++++++-- .../examples/complex-components-wrappers.tsx | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/semcore/data-table/src/components/DataTable/DataTable.types.ts b/semcore/data-table/src/components/DataTable/DataTable.types.ts index fd3c3936c1..1e3b644992 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.types.ts +++ b/semcore/data-table/src/components/DataTable/DataTable.types.ts @@ -184,6 +184,7 @@ export type DataTableProps< } & ({ /** * List of selected rows (uniqIds from a data array) + * @deprecated use ISelectedRows for this property instead of an array. */ selectedRows?: UniqKeyType[]; diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index 5d077ef34f..afa209f3ee 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -4,18 +4,34 @@ import type { DTRow } from '../components/Body/Row.types'; import { UNIQ_ROW_KEY } from '../components/DataTable/DataTable'; export interface ISelectedRows { + /** Method for set keys from data. Call it in DataTable, on data changes */ setAvailableKeys(keys: UniqKeyType[]): void; + /** Get the list of keys */ get(): UniqKeyType[]; - set(value: UniqKeyType[]): void; + + /** Replace the list of keys. */ + replace(value: UniqKeyType[]): void; + + /** Check if the key exists in selected rows */ has(value: UniqKeyType): boolean; + + /** Select all handler */ selectAll(): void; + + /** Clear all handler */ clearAll(): void; + + /** Toggle selection of row */ toggle(selected: boolean, row: DTRow): void; + /** Check if all rows selected */ isAllSelected(): boolean; + + /** Check if at least one row selected */ isIndeterminate(): boolean; + /** Subscribe to changes */ subscribe: EventEmitter['subscribe']; } @@ -41,7 +57,7 @@ export class SelectableRows extends EventEmitter implements ISel return Array.from(this.values.values()); } - public set(value: UniqRowKeyType[]): void { + public replace(value: UniqRowKeyType[]): void { this.clearAll(); value.forEach((val) => { diff --git a/website/docs/core-principles/writing-code/examples/complex-components-wrappers.tsx b/website/docs/core-principles/writing-code/examples/complex-components-wrappers.tsx index 91d732b596..4d42202218 100644 --- a/website/docs/core-principles/writing-code/examples/complex-components-wrappers.tsx +++ b/website/docs/core-principles/writing-code/examples/complex-components-wrappers.tsx @@ -9,6 +9,7 @@ const CardDataTable = wrapDataTable<{ title: string }>(({ title, ...restProps }) {title} + {/* @ts-ignore todo: Ilia Brauer remove in 17 */} @@ -17,6 +18,7 @@ const CardDataTable = wrapDataTable<{ title: string }>(({ title, ...restProps }) const Demo = () => { return ( + // @ts-ignore todo: Ilia Brauer remove in 17 Date: Fri, 20 Mar 2026 11:05:44 +0100 Subject: [PATCH 05/24] [data-table] fixed themes for cells UIK-4978 --- semcore/data-table/src/components/Body/Row.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index 04856a1ebc..1122e9f94f 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -618,7 +618,6 @@ export class RowRoot extends Component< aria-hidden={isCellHidden} style={style} data-aria-level={index === 0 ? ariaLevel : undefined} - theme={theme} /> ); })} From b535206c846158463ed57cfe9e85030b9c131656 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Fri, 20 Mar 2026 14:45:00 +0100 Subject: [PATCH 06/24] [stories] add test stories --- .../tests/data-table-cells.stories.tsx | 34 ++- .../checkbox-in-table-with-no-data.tsx | 49 +++- .../checkbox-reactive-with-pagination.tsx | 220 ++++++++++++++++++ .../cells-tests/checkbox-reactive.tsx | 32 +++ 4 files changed, 321 insertions(+), 14 deletions(-) create mode 100644 stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx create mode 100644 stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx diff --git a/stories/components/data-table/tests/data-table-cells.stories.tsx b/stories/components/data-table/tests/data-table-cells.stories.tsx index 2e42743874..5d6e83b879 100644 --- a/stories/components/data-table/tests/data-table-cells.stories.tsx +++ b/stories/components/data-table/tests/data-table-cells.stories.tsx @@ -4,7 +4,11 @@ import React from 'react'; import CardFlagInCellExample from './examples/cells-tests/card-flag-in-cell'; import CheckBoxExample from './examples/cells-tests/checkbox'; -import CheckboxInTableWithNoDataExample from './examples/cells-tests/checkbox-in-table-with-no-data'; +import CheckboxInTableWithNoDataExample, { defaultProps as checkboxNoDataProps } from './examples/cells-tests/checkbox-in-table-with-no-data'; +import type { DemoProps as CheckboxNoDataProps } from './examples/cells-tests/checkbox-in-table-with-no-data'; +import CheckboxReactiveExample from './examples/cells-tests/checkbox-reactive'; +import CheckboxReactiveWithPaginationExample, { defaultProps as checkboxReactivePaginationProps } from './examples/cells-tests/checkbox-reactive-with-pagination'; +import type { DemoProps as CheckboxReactivePaginationProps } from './examples/cells-tests/checkbox-reactive-with-pagination'; import DDSelectInCellExample from './examples/cells-tests/dd-select-in-cell'; import InteractiveCellsExample from './examples/cells-tests/interactive-elements-in-cells'; import LongTextCellsExample from './examples/cells-tests/long-text-in-cells'; @@ -54,8 +58,34 @@ export const CheckBox: Story = { render: CheckBoxExample, }; -export const CheckboxInTableWithNoData: Story = { +export const CheckboxInTableWithNoData: StoryObj = { render: CheckboxInTableWithNoDataExample, + argTypes: { + reactive: { + control: 'boolean', + description: 'Use SelectableRows (reactive) instead of array', + }, + }, + args: checkboxNoDataProps, +}; + +export const CheckboxReactive: Story = { + render: CheckboxReactiveExample, +}; + +export const CheckboxReactiveWithPagination: StoryObj = { + render: CheckboxReactiveWithPaginationExample, + argTypes: { + mergedRows: { + control: 'boolean', + description: 'Use merged rows (ROW_GROUP) data', + }, + loading: { + control: 'boolean', + description: 'Show loading state', + }, + }, + args: checkboxReactivePaginationProps, }; export const MergedRowForMultiLevelHeader: StoryObj = { diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx index b3f5122bcc..1e2b10d396 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx @@ -1,24 +1,49 @@ -import { DataTable } from '@semcore/ui/data-table'; +import { DataTable, SelectableRows } from '@semcore/ui/data-table'; import React from 'react'; -const Demo = () => { - return ( - <> +export type DemoProps = { + reactive?: boolean; +}; + +const selectableRows = new SelectableRows(); + +const columns = [ + { name: 'keyword', children: 'Keyword' }, + { name: 'kd', children: 'KD %' }, + { name: 'cpc', children: 'CPC' }, + { name: 'vol', children: 'Vol.' }, +]; + +const Demo = ({ reactive = false }: DemoProps) => { + if (reactive) { + return ( - + ); + } + + return ( + ); }; +export const defaultProps: DemoProps = { + reactive: false, +}; + +Demo.defaultProps = defaultProps; + export default Demo; diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx new file mode 100644 index 0000000000..90acb59f75 --- /dev/null +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx @@ -0,0 +1,220 @@ +import { + Box, + Flex, + Collapse, + ScreenReaderOnly, +} from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; +import { DataTable, ROW_GROUP, SelectableRows } from '@semcore/ui/data-table'; +import Pagination from '@semcore/ui/pagination'; +import { Text } from '@semcore/ui/typography'; +import React from 'react'; + +export type DemoProps = { + mergedRows?: boolean; + loading?: boolean; +}; + +const selectedRows = new SelectableRows(); + +const columns = [ + { name: 'keyword', children: 'Keyword' }, + { name: 'kd', children: 'KD %' }, + { name: 'cpc', children: 'CPC' }, + { name: 'vol', children: 'Vol.' }, +]; + +const Demo = ({ mergedRows = false, loading = false }: DemoProps) => { + const [selectedRowsDisplay, setSelectedRowsDisplay] = React.useState(0); + const [ariaMessage, setAriaMessage] = React.useState(''); + const [currentPage, setCurrentPage] = React.useState(0); + const tableRef = React.useRef(null); + + const handleDeselectAll = () => { + selectedRows.clearAll(); + tableRef.current?.focus(); + }; + + React.useEffect(() => { + const unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, () => { + const size = selectedRows.get().length; + if (size > 0) setAriaMessage('Action bar appeared before the table'); + setSelectedRowsDisplay(size); + }); + const unsubscribeSelectAll = selectedRows.subscribe(SelectableRows.SELECT_ALL_EVENT, () => { + const size = selectedRows.get().length; + if (size > 0) setAriaMessage('Action bar appeared before the table'); + setSelectedRowsDisplay(size); + }); + + return () => { + unsubscribeToggle(); + unsubscribeSelectAll(); + }; + }, []); + + React.useEffect(() => { + const timer = setTimeout(() => setAriaMessage(''), 300); + return () => clearTimeout(timer); + }, [ariaMessage]); + + const currentData = mergedRows ? mergedData : flatData; + const limit = 5; + const tableData = currentData.slice(currentPage * limit, currentPage * limit + limit); + + return ( + <> + + + {ariaMessage} + + 0} + duration={0} + style={{ position: 'sticky', top: 0, zIndex: 50 }} + > + + + Selected rows: {selectedRowsDisplay} + + + + + + + setCurrentPage(page - 1)} + aria-label='Table with selectable rows pagination' + /> + + ); +}; + +const flatData = [ + { id: '1', keyword: 'ebay buy', kd: '31.2', cpc: '$1.15', vol: '22,000' }, + { id: '2', keyword: 'amazon shoes', kd: '47', cpc: '$2.95', vol: '48,000' }, + { id: '3', keyword: 'www.nike.com', kd: '66.4', cpc: '$3.80', vol: 'n/a' }, + { id: '4', keyword: 'buy iphone 13', kd: '59', cpc: '$5.20', vol: '71,000' }, + { id: '5', keyword: 'adidas sale', kd: '40.2', cpc: '$1.85', vol: '19,500' }, + { id: '6', keyword: 'cheap flights expedia', kd: '52', cpc: '$4.10', vol: '35,800' }, + { id: '7', keyword: 'booking.com hotels', kd: '73', cpc: '$6.45', vol: 'n/a' }, + { id: '8', keyword: 'ubereats promo code', kd: '38', cpc: '$2.10', vol: '11,700' }, + { id: '9', keyword: 'buy ps5 online', kd: '64', cpc: '$5.95', vol: '44,200' }, + { id: '10', keyword: 'shopify login', kd: '25.8', cpc: '$0.65', vol: '13,600' }, + { id: '11', keyword: 'h&m online store', kd: '36', cpc: '$1.70', vol: '10,300' }, + { id: '12', keyword: 'buy macbook air', kd: '57.4', cpc: '$4.90', vol: '28,400' }, + { id: '13', keyword: 'www.zara.com', kd: '45', cpc: '$3.20', vol: 'n/a' }, + { id: '14', keyword: 'target clearance', kd: '33', cpc: '$1.25', vol: '12,900' }, + { id: '15', keyword: 'asos men jackets', kd: '41', cpc: '$2.55', vol: '6,800' }, + { id: '16', keyword: 'best buy coupons', kd: '48', cpc: '$3.70', vol: '17,100' }, + { id: '17', keyword: 'walmart near me', kd: '60.1', cpc: '$0.95', vol: '50,000' }, + { id: '18', keyword: 'netflix gift card', kd: '39', cpc: '$2.20', vol: '8,900' }, + { id: '19', keyword: 'www.apple.com', kd: '71', cpc: '$6.90', vol: 'n/a' }, + { id: '20', keyword: 'nike running shoes men', kd: '44', cpc: '$3.60', vol: '21,700' }, + { id: '21', keyword: 'download spotify premium', kd: '58', cpc: '$4.75', vol: '26,800' }, + { id: '22', keyword: 'buy dell laptop', kd: '53.1', cpc: '$5.40', vol: '19,600' }, + { id: '23', keyword: 'gap kids sale', kd: '34', cpc: '$1.10', vol: '5,300' }, +]; + +const mergedData = [ + { + keyword: 'ebay buy', + [ROW_GROUP]: [ + { id: '1', kd: '31.2', cpc: '$1.15', vol: '22,000' }, + { id: '2', kd: '31.2', cpc: '$1.15', vol: '22,000' }, + ], + }, + { + keyword: 'amazon shoes', + [ROW_GROUP]: [ + { id: '3', kd: '47', cpc: '$2.95', vol: '48,000' }, + { id: '4', kd: '47', cpc: '$2.95', vol: '48,000' }, + ], + }, + { + keyword: 'www.nike.com', + [ROW_GROUP]: [ + { id: '5', kd: '66.4', cpc: '$3.80', vol: 'n/a' }, + { id: '6', kd: '66.4', cpc: '$3.80', vol: 'n/a' }, + ], + }, + { + keyword: 'buy iphone 13', + [ROW_GROUP]: [ + { id: '7', kd: '59', cpc: '$5.20', vol: '71,000' }, + { id: '8', kd: '59', cpc: '$5.20', vol: '71,000' }, + ], + }, + { + keyword: 'adidas sale', + [ROW_GROUP]: [ + { id: '9', kd: '40.2', cpc: '$1.85', vol: '19,500' }, + ], + }, + { + keyword: 'cheap flights expedia', + [ROW_GROUP]: [ + { id: '10', kd: '52', cpc: '$4.10', vol: '35,800' }, + ], + }, + { + keyword: 'booking.com hotels', + [ROW_GROUP]: [ + { id: '11', kd: '73', cpc: '$6.45', vol: 'n/a' }, + ], + }, + { + keyword: 'ubereats promo code', + [ROW_GROUP]: [ + { id: '12', kd: '38', cpc: '$2.10', vol: '11,700' }, + ], + }, + { + keyword: 'buy ps5 online', + [ROW_GROUP]: [ + { id: '13', kd: '64', cpc: '$5.95', vol: '44,200' }, + ], + }, + { + keyword: 'shopify login', + [ROW_GROUP]: [ + { id: '14', kd: '25.8', cpc: '$0.65', vol: '13,600' }, + ], + }, +]; + +export const defaultProps: DemoProps = { + mergedRows: false, + loading: false, +}; + +Demo.defaultProps = defaultProps; + +export default Demo; diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx new file mode 100644 index 0000000000..02d2293919 --- /dev/null +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx @@ -0,0 +1,32 @@ +import { DataTable, SelectableRows } from '@semcore/ui/data-table'; +import React from 'react'; + +const data = Array.from({ length: 50 }).map((_, index) => ({ + id: String(index + 1), + name: `Row ${index + 1}`, +})); + +const columns = [ + { name: 'id', children: 'ID' }, + { name: 'name', children: 'Name' }, +]; + +const selectedRows = new SelectableRows(); + +const Demo = () => { + return ( +
+ +
+ ); +}; + +export default Demo; From e7b7f589feea0dc6c56b59ad1948a3df3b2165ce Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 20 Mar 2026 15:40:12 +0100 Subject: [PATCH 07/24] [data-table] improved perf UIK-4985 --- .../data-table/src/components/Body/Row.tsx | 7 +-- .../data-table/src/store/SelectableRows.ts | 24 ++++++++- .../examples/checkbox_in_big_table/index.tsx | 53 ++++++++---------- .../examples/checkbox_in_big_table/table.tsx | 54 +++---------------- .../checkbox_in_big_table_reactive/index.tsx | 49 ++++++++--------- .../checkbox_in_big_table_reactive/table.tsx | 31 ++--------- 6 files changed, 82 insertions(+), 136 deletions(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index 1122e9f94f..5a066c5b40 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -60,9 +60,6 @@ export class RowRoot extends Component< this.setAccordion(); if (selectedRows && !Array.isArray(selectedRows)) { - this.unsubscribeSelectAll = selectedRows.subscribe(SelectableRows.SELECT_ALL_EVENT, () => { - this.forceUpdate(); - }); this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { if (row[UNIQ_ROW_KEY] === key) { this.forceUpdate(); @@ -499,7 +496,7 @@ export class RowRoot extends Component< const accordionId = `${uid}_${rowUniqKey}`; let theme = this.asProps.theme; - if (selectedRows && (Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.has(rowUniqKey))) { + if (selectedRows && (Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.isChecked(rowUniqKey))) { theme = 'info'; } @@ -552,7 +549,7 @@ export class RowRoot extends Component< } if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { - const checked = Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.has(rowUniqKey); + const checked = Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.isChecked(rowUniqKey); const nextColumnName = columns[i + 1].name; diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index afa209f3ee..09ae88ea24 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -10,6 +10,9 @@ export interface ISelectedRows { /** Get the list of keys */ get(): UniqKeyType[]; + /** Check if the row is selected */ + isChecked(key: UniqKeyType): boolean; + /** Replace the list of keys. */ replace(value: UniqKeyType[]): void; @@ -54,7 +57,11 @@ export class SelectableRows extends EventEmitter implements ISel } public get() { - return Array.from(this.values.values()); + return Array.from(this.values.keys()); + } + + public isChecked(key: UniqRowKeyType): boolean { + return this.values.has(key); } public replace(value: UniqRowKeyType[]): void { @@ -74,6 +81,10 @@ export class SelectableRows extends EventEmitter implements ISel public isAllSelected(): boolean { let isAllSelected = true; + if (this.availableKeys.size === 0 || this.values.size === 0) { + return false; + } + for (const key of this.availableKeys.values()) { if (!this.values.has(key)) { isAllSelected = false; @@ -100,14 +111,21 @@ export class SelectableRows extends EventEmitter implements ISel public selectAll(): void { for (const key of this.availableKeys.values()) { this.values.add(key); + this.emit(SelectableRows.TOGGLE_EVENT, key); } this.emit(SelectableRows.SELECT_ALL_EVENT); } public clearAll(): void { + const keys = Array.from(this.values.keys()); + this.values.clear(); this.emit(SelectableRows.SELECT_ALL_EVENT); + + keys.forEach((key) => { + this.emit(SelectableRows.TOGGLE_EVENT, key); + }); } public toggle(selected: boolean, row: DTRow): void { @@ -122,6 +140,10 @@ export class SelectableRows extends EventEmitter implements ISel this.emit(SelectableRows.SELECT_ALL_EVENT); } } else { + if (this.values.size === this.availableKeys.size) { + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + this.values.delete(row[UNIQ_ROW_KEY]); if (this.values.size === 0) { diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx index 257851a2df..31fe034e0a 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx @@ -1,7 +1,6 @@ import { Box, Flex, - Collapse, ScreenReaderOnly, } from '@semcore/ui/base-components'; import Button from '@semcore/ui/button'; @@ -11,7 +10,6 @@ import React from 'react'; import { Table } from './table'; type CheckboxExampleProps = { - animationDuration: number; loading: boolean; sideIndents?: 'wide'; compact?: boolean; @@ -21,7 +19,6 @@ const Demo = (props: CheckboxExampleProps) => { const [selectedRows, setSelectedRows] = React.useState([]); const [selectedRowsDisplay, setSelectedRowsDisplay] = React.useState(0); const [ariaMessage, setAriaMessage] = React.useState(''); - const [currentPage, setCurrentPage] = React.useState(0); const tableRef = React.useRef(null); const handleChangeSelectedRows = React.useCallback((value: string[]) => { @@ -51,42 +48,37 @@ const Demo = (props: CheckboxExampleProps) => { h={1000} style={{ overflow: 'auto', - scrollPaddingTop: selectedRows.length ? '44px' : undefined, + scrollPaddingTop: '44px', }} > {ariaMessage} - - - - Selected rows: {selectedRowsDisplay} - - - - + }} + > + + Selected rows: {selectedRowsDisplay} + + +
0} handleChangeSelectedRows={handleChangeSelectedRows} - animationDuration={props.animationDuration} loading={props.loading} compact={props.compact} sideIndents={props.sideIndents} @@ -97,7 +89,6 @@ const Demo = (props: CheckboxExampleProps) => { }; export const defaultProps: CheckboxExampleProps = { - animationDuration: 200, loading: false, sideIndents: undefined, compact: undefined, diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx index 4280d0108e..ad22d4ee35 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/table.tsx @@ -1,22 +1,6 @@ -import { - Box, - Flex, - Collapse, - ScreenReaderOnly, -} from '@semcore/ui/base-components'; -import Button from '@semcore/ui/button'; import { DataTable } from '@semcore/ui/data-table'; -import Pagination from '@semcore/ui/pagination'; -import { Text } from '@semcore/ui/typography'; import React from 'react'; -type CheckboxExampleProps = { - animationDuration: number; - loading: boolean; - sideIndents?: 'wide'; - compact?: boolean; -}; - const columns = [ { name: 'keyword', children: 'Keyword' }, { name: 'intent', children: 'Intent' }, @@ -36,50 +20,28 @@ const columns = [ type TableProps = { selectedRows: string[]; - hasSelectedRows: boolean; handleChangeSelectedRows: (value: string[]) => void; - animationDuration: number; - + tableRef: React.Ref; sideIndents?: 'wide'; loading: boolean; compact?: boolean; }; -export const Table = (props: TableProps) => { - const [currentPage, setCurrentPage] = React.useState(0); - - const tableRef = React.useRef(null); - - const handleDeselectAll = () => { - props.handleChangeSelectedRows([]); - tableRef.current?.focus(); - }; - - const limit = 100; - const tableData = React.useMemo(() => { - return data.slice( - currentPage * limit, - currentPage * limit + limit, - ); - }, [currentPage, limit]); - - const headerProps = React.useMemo(() => { - return { - sticky: true, - top: props.hasSelectedRows ? 44 : 0, - animationDuration: props.animationDuration, - }; - }, [props.hasSelectedRows, props.animationDuration]); +const headerProps = { + sticky: true, + top: 44, +}; +export const Table = (props: TableProps) => { return ( <> { h={1000} style={{ overflow: 'auto', - scrollPaddingTop: selectedRows.get().length ? '44px' : undefined, + scrollPaddingTop: '44px', }} > {ariaMessage} - - - - Selected rows: {selectedRowsDisplay} - + }} + > + + Selected rows: {selectedRowsDisplay} + + {selectedRowsDisplay > 0 && ( - - + )} +
0} tableRef={tableRef} - animationDuration={props.animationDuration} loading={props.loading} compact={props.compact} sideIndents={props.sideIndents} @@ -116,7 +112,6 @@ const Demo = (props: CheckboxExampleProps) => { }; export const defaultProps: CheckboxExampleProps = { - animationDuration: 200, loading: false, sideIndents: undefined, compact: undefined, diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx index 703504ecc2..1946a98188 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/table.tsx @@ -1,23 +1,7 @@ -import { - Box, - Flex, - Collapse, - ScreenReaderOnly, -} from '@semcore/ui/base-components'; -import Button from '@semcore/ui/button'; import type { SelectableRows } from '@semcore/ui/data-table'; import { DataTable } from '@semcore/ui/data-table'; -import Pagination from '@semcore/ui/pagination'; -import { Text } from '@semcore/ui/typography'; import React from 'react'; -type CheckboxExampleProps = { - animationDuration: number; - loading: boolean; - sideIndents?: 'wide'; - compact?: boolean; -}; - const columns = [ { name: 'keyword', children: 'Keyword' }, { name: 'intent', children: 'Intent' }, @@ -37,8 +21,6 @@ const columns = [ type TableProps = { selectedRows: SelectableRows; - hasSelectedRows: boolean; - animationDuration: number; tableRef: React.Ref; sideIndents?: 'wide'; @@ -46,15 +28,12 @@ type TableProps = { compact?: boolean; }; -export const Table = (props: TableProps) => { - const headerProps = React.useMemo(() => { - return { - sticky: true, - top: props.hasSelectedRows ? 44 : 0, - animationDuration: props.animationDuration, - }; - }, [props.hasSelectedRows, props.animationDuration]); +const headerProps = { + sticky: true, + top: 44, +}; +export const Table = (props: TableProps) => { return ( <> Date: Fri, 20 Mar 2026 15:57:38 +0100 Subject: [PATCH 08/24] [data-table] fixed rows selection in merged rows UIK-4984 --- .../data-table/src/components/Body/Row.tsx | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index 5a066c5b40..e9a71f8969 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -340,6 +340,7 @@ export class RowRoot extends Component< flatRows: this.asProps.flatRows, shadowVertical, withoutBorder, + theme: this.theme, }; if (renderCell) { @@ -441,6 +442,17 @@ export class RowRoot extends Component< : undefined; } + get theme() { + const { selectedRows, theme, row } = this.asProps; + + if (!selectedRows || Array.isArray(selectedRows)) { + return theme; + } + + const rowUniqKey = row[UNIQ_ROW_KEY]; + return selectedRows.isChecked(rowUniqKey) ? 'info' : theme; + } + render() { const SRow = Root; const SCollapseRow = Collapse; @@ -495,11 +507,6 @@ export class RowRoot extends Component< const rowUniqKey = row[UNIQ_ROW_KEY]; const accordionId = `${uid}_${rowUniqKey}`; - let theme = this.asProps.theme; - if (selectedRows && (Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.isChecked(rowUniqKey))) { - theme = 'info'; - } - const rowsLimit = limit?.fromRow; const columnsLimit = limit?.fromColumn; @@ -526,7 +533,7 @@ export class RowRoot extends Component< onClick={this.handleClickRow(row)} aria-hidden={this.isRowHidden} data-filled-columns={filledColumns} - theme={theme} + theme={this.theme} > {columns.map((column, i) => { const index = i; @@ -571,7 +578,7 @@ export class RowRoot extends Component< isAccordionRow={isAccordionRow} aria-hidden={isCellHidden} withAccordion={withAccordion} - theme={theme} + theme={this.theme} > Date: Fri, 20 Mar 2026 16:25:50 +0100 Subject: [PATCH 09/24] [data-table] fixed rows selection with shift in new reactive way UIK-4986 --- .../src/components/DataTable/DataTable.tsx | 23 ++++++++--- .../data-table/src/store/SelectableRows.ts | 41 +++++++++++++++++-- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/semcore/data-table/src/components/DataTable/DataTable.tsx b/semcore/data-table/src/components/DataTable/DataTable.tsx index 5f65bc6e39..b926f56620 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.tsx +++ b/semcore/data-table/src/components/DataTable/DataTable.tsx @@ -23,6 +23,8 @@ import type { ColumnItemConfig, DataRowItem, } from './DataTable.types'; +import type { ISelectedRows } from '../../store/SelectableRows'; +import { SelectableRows } from '../../store/SelectableRows'; import scrollStyles from '../../style/scroll-shadows.shadow.css'; import { localizedMessages } from '../../translations/__intergalactic-dynamic-locales'; import { Body } from '../Body/Body'; @@ -127,7 +129,7 @@ class DataTableRoot< private headerNodesMap = new Map(); - private isPressedShift = false; + private selectedRowsContainer: ISelectedRows; private lastSelectedRowKey: UniqKeyType | undefined; constructor(props: DataTableProps) { @@ -140,6 +142,12 @@ class DataTableRoot< this.calculatedRows = this.getRows(); this.flatRows = this.calculatedRows.flat(); this.tmpData = props.data; + + if (Array.isArray(props.selectedRows) || !props.selectedRows) { + this.selectedRowsContainer = new SelectableRows(); + } else { + this.selectedRowsContainer = props.selectedRows; + } } state: State = { @@ -198,6 +206,9 @@ class DataTableRoot< this.setSelectAllMessage(false); } } + if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined && !Array.isArray(selectedRows)) { + this.selectedRowsContainer = selectedRows; + } } componentWillUnmount() { @@ -446,7 +457,7 @@ class DataTableRoot< const selectedRowsSet = new Set(selectedRows); - if (this.isPressedShift && selectedRowsSet.size > 0 && this.lastSelectedRowKey && (isSelected ? selectedRowsSet.has(this.lastSelectedRowKey) : true)) { + if (this.selectedRowsContainer.isPressedShift && selectedRowsSet.size > 0 && this.lastSelectedRowKey && (isSelected ? selectedRowsSet.has(this.lastSelectedRowKey) : true)) { let select = false; const firstColumnKey = this.columns[0].name; const isMerged = this.flatRows.some((item) => item[firstColumnKey] instanceof MergedRowsCell); @@ -717,14 +728,14 @@ class DataTableRoot< break; } case 'Shift': { - this.isPressedShift = true; + this.selectedRowsContainer.isPressedShift = true; } } }; handleKeyUp = (e: React.KeyboardEvent) => { if (e.key === 'Shift') { - this.isPressedShift = false; + this.selectedRowsContainer.isPressedShift = false; } }; @@ -1349,7 +1360,9 @@ class DataTableRoot< }); } - availableRowKeys.push(dtRow[UNIQ_ROW_KEY]); + if (!excludeColumns) { // we should add only the main row in mergedRows or default rows + availableRowKeys.push(dtRow[UNIQ_ROW_KEY]); + } return dtRow; }; diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index 09ae88ea24..9fb4048476 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -1,9 +1,12 @@ import EventEmitter from '@semcore/core/lib/utils/eventEmitter'; +import { MergedRowsCell } from '@semcore/ui/data-table'; import type { DTRow } from '../components/Body/Row.types'; import { UNIQ_ROW_KEY } from '../components/DataTable/DataTable'; export interface ISelectedRows { + /** Flag for multiple rows selection */ + isPressedShift: boolean; /** Method for set keys from data. Call it in DataTable, on data changes */ setAvailableKeys(keys: UniqKeyType[]): void; @@ -43,9 +46,13 @@ export class SelectableRows extends EventEmitter implements ISel private availableKeys = new Set(); + private lastSelectedRow: UniqRowKeyType | null = null; + public static TOGGLE_EVENT = 'toggle_selected_row'; public static SELECT_ALL_EVENT = 'select_all_selected_rows'; + public isPressedShift: boolean = false; + constructor(initValues: UniqRowKeyType[] = []) { super(); @@ -129,12 +136,38 @@ export class SelectableRows extends EventEmitter implements ISel } public toggle(selected: boolean, row: DTRow): void { - if (selected) { + if (this.isPressedShift && this.values.size > 0 && this.lastSelectedRow && (selected ? this.values.has(this.lastSelectedRow) : true)) { + let select = false; + + for (const item of this.availableKeys.values()) { + if (!select && (item === row[UNIQ_ROW_KEY] || item === this.lastSelectedRow)) { + select = true; + this.toggleOneRow(selected, item); + continue; + } + + if (select) { + this.toggleOneRow(selected, item); + } + + if (select && (item === row[UNIQ_ROW_KEY] || item === this.lastSelectedRow)) { + break; + } + } + } else { + this.toggleOneRow(selected, row[UNIQ_ROW_KEY]); + + this.lastSelectedRow = row[UNIQ_ROW_KEY]; + } + } + + private toggleOneRow(isSelected: boolean, key: UniqRowKeyType): void { + if (isSelected) { if (this.values.size === 0) { this.emit(SelectableRows.SELECT_ALL_EVENT); } - this.values.add(row[UNIQ_ROW_KEY]); + this.values.add(key); if (this.values.size === this.availableKeys.size) { this.emit(SelectableRows.SELECT_ALL_EVENT); @@ -144,13 +177,13 @@ export class SelectableRows extends EventEmitter implements ISel this.emit(SelectableRows.SELECT_ALL_EVENT); } - this.values.delete(row[UNIQ_ROW_KEY]); + this.values.delete(key); if (this.values.size === 0) { this.emit(SelectableRows.SELECT_ALL_EVENT); } } - this.emit(SelectableRows.TOGGLE_EVENT, row[UNIQ_ROW_KEY]); + this.emit(SelectableRows.TOGGLE_EVENT, key); } } From 6cb25dc57f9e971ec97e746755ce8218359fdfdd Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 20 Mar 2026 16:52:21 +0100 Subject: [PATCH 10/24] [data-table] fixed rows selection with reactive way for merged rows UIK-4984 --- .../data-table/src/components/Body/Body.tsx | 56 +++-------- .../data-table/src/components/Body/Row.tsx | 2 - .../src/components/Body/RowGroup.tsx | 93 +++++++++++++++++++ 3 files changed, 107 insertions(+), 44 deletions(-) create mode 100644 semcore/data-table/src/components/Body/RowGroup.tsx diff --git a/semcore/data-table/src/components/Body/Body.tsx b/semcore/data-table/src/components/Body/Body.tsx index 6ad5fd0004..952700920f 100644 --- a/semcore/data-table/src/components/Body/Body.tsx +++ b/semcore/data-table/src/components/Body/Body.tsx @@ -6,15 +6,16 @@ import Spin from '@semcore/spin'; import * as React from 'react'; import type { BodyPropsInner, DataTableBodyProps, DataTableBodyType } from './Body.types'; -import { MergedColumnsCell, MergedRowsCell } from './MergedCells'; +import { MergedColumnsCell } from './MergedCells'; import type { RowRoot } from './Row'; import { Row } from './Row'; -import type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types'; +import type { DataTableRowType, DTRow, RowPropsInner } from './Row.types'; +import { RowGroup } from './RowGroup'; import style from './style.shadow.css'; import { GRID_ROW_INDEX, IS_EMPTY_DATA_ROW, - ROW_INDEX, SELECT_ALL, + ROW_INDEX, UNIQ_ROW_KEY, } from '../DataTable/DataTable'; import type { DataTableData } from '../DataTable/DataTable.types'; @@ -226,7 +227,6 @@ class BodyRoot extends Component extends Component - {row.map((item, i) => { - const rowProps: DataTableRowProps = { - row: item, - mergedRow: i > 0 ? true : false, - componentRef: this.handleComponentRef(item), - }; - - if ((isFirstCellAreMergedRows && Array.isArray(selectedRows) && selectedRows.includes(groupUniqKey))) { - rowProps.theme = 'info'; - } - - return ( - - ); - })} - , + rows={row} + selectedRows={selectedRows} + columns={columns} + startIndex={this.startIndex} + rowIndex={index} + handleRef={this.handleRef} + handleComponentRef={this.handleComponentRef} + /> ); } diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index e9a71f8969..036d22fafe 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -36,7 +36,6 @@ export class RowRoot extends Component< private closeAccordionTimeout = 0; private openAccordionTimeout = 0; - private unsubscribeSelectAll: undefined | (() => void) = undefined; private unsubscribeToggle: undefined | (() => void) = undefined; rowElementRef = React.createRef(); @@ -79,7 +78,6 @@ export class RowRoot extends Component< componentWillUnmount() { this.asProps.componentRef?.(null); - this.unsubscribeSelectAll?.(); this.unsubscribeToggle?.(); } diff --git a/semcore/data-table/src/components/Body/RowGroup.tsx b/semcore/data-table/src/components/Body/RowGroup.tsx new file mode 100644 index 0000000000..08a52adbc5 --- /dev/null +++ b/semcore/data-table/src/components/Body/RowGroup.tsx @@ -0,0 +1,93 @@ +import { Box } from '@semcore/base-components'; +import { sstyled } from '@semcore/core'; +import * as React from 'react'; + +import style from './style.shadow.css'; +import type { ISelectedRows } from '../../store/SelectableRows'; +import { SelectableRows } from '../../store/SelectableRows'; +import { Body } from '../Body/Body'; +import { MergedRowsCell } from '../Body/MergedCells'; +import type { RowRoot } from '../Body/Row'; +import type { DTRow, DataTableRowProps } from '../Body/Row.types'; +import { SELECT_ALL, UNIQ_ROW_KEY } from '../DataTable/DataTable'; +import type { DataTableData } from '../DataTable/DataTable.types'; +import type { DTColumn } from '../Head/Column.types'; + +type RowGroupProps = { + rows: DTRow[]; + selectedRows?: UniqKeyType[] | ISelectedRows; + columns: DTColumn[]; + startIndex: number; + rowIndex: number; + handleRef: (index: number, row: DTRow) => (node: HTMLElement | null) => void; + handleComponentRef: (row: DTRow) => (component: RowRoot | null) => void; + +}; + +export class RowGroup extends React.PureComponent> { + private unsubscribeToggle: undefined | (() => void) = undefined; + + componentDidMount() { + const { selectedRows, rows } = this.props; + + if (selectedRows && !Array.isArray(selectedRows)) { + this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { + if (rows[0][UNIQ_ROW_KEY] === key) { + this.forceUpdate(); + } + }); + } + } + + componentWillUnmount() { + this.unsubscribeToggle?.(); + } + + render() { + const SRowGroup = Box; + const { rows, selectedRows, columns, startIndex, rowIndex } = this.props; + + const groupUniqKey = rows[0][UNIQ_ROW_KEY]; + + let isFirstCellAreMergedRows = false; + const theme: 'info' | undefined = undefined; + + if (selectedRows) { + const nextColumnName = columns[1].name; + const firstCell = rows[0][nextColumnName]; + + if (firstCell instanceof MergedRowsCell) { + rows[0][SELECT_ALL.toString()] = new MergedRowsCell('', firstCell.rowsCount); + + isFirstCellAreMergedRows = true; + } + } + + return sstyled(style)( + + {rows.map((item, i) => { + const rowProps: DataTableRowProps = { + row: item, + mergedRow: i > 0 ? true : false, + componentRef: this.props.handleComponentRef(item), + }; + + if (isFirstCellAreMergedRows && (Array.isArray(selectedRows) ? selectedRows.includes(groupUniqKey) : selectedRows?.isChecked(groupUniqKey))) { + rowProps.theme = 'info'; + } + + return ( + + ); + })} + , + ); + } +} From 3aa69c53c67e9c0d5d56ccf26ca46c25c12c8351 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Fri, 20 Mar 2026 17:25:34 +0100 Subject: [PATCH 11/24] [stories] update test stories --- .../advanced/data-table.advanced.stories.tsx | 3 -- .../examples/checkbox_in_big_table/index.tsx | 1 + .../tests/data-table-cells.stories.tsx | 28 ++++++++++--- .../checkbox-reactive-with-pagination.tsx | 2 +- .../cells-tests/checkbox-reactive.tsx | 34 +++++++++++++--- .../tests/examples/cells-tests/checkbox.tsx | 39 ++++++++++++++++--- 6 files changed, 85 insertions(+), 22 deletions(-) diff --git a/stories/components/data-table/advanced/data-table.advanced.stories.tsx b/stories/components/data-table/advanced/data-table.advanced.stories.tsx index 62a337863b..c855b47fad 100644 --- a/stories/components/data-table/advanced/data-table.advanced.stories.tsx +++ b/stories/components/data-table/advanced/data-table.advanced.stories.tsx @@ -31,9 +31,6 @@ const meta: Meta = { }; const checkboxArgTypes: Partial> = { - animationDuration: { - control: { type: 'number' }, - }, loading: { control: 'boolean' }, sideIndents: { control: 'select', diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx index 31fe034e0a..61445887b2 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx @@ -79,6 +79,7 @@ const Demo = (props: CheckboxExampleProps) => {
= { + render: CheckBoxExample as any, + argTypes: { + fixedColumns: { + control: 'boolean', + description: 'Enable fixed left/right columns with horizontal scroll', + }, + }, + args: checkboxProps, }; export const CheckboxInTableWithNoData: StoryObj = { @@ -69,8 +78,15 @@ export const CheckboxInTableWithNoData: StoryObj = { args: checkboxNoDataProps, }; -export const CheckboxReactive: Story = { - render: CheckboxReactiveExample, +export const CheckboxReactive: StoryObj = { + render: CheckboxReactiveExample as any, + argTypes: { + fixedColumns: { + control: 'boolean', + description: 'Enable fixed left/right columns with horizontal scroll', + }, + }, + args: checkboxReactiveProps, }; export const CheckboxReactiveWithPagination: StoryObj = { diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx index 90acb59f75..11d4e0c95c 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx @@ -17,7 +17,7 @@ export type DemoProps = { const selectedRows = new SelectableRows(); -const columns = [ +const columns: { name: string; children: string }[] = [ { name: 'keyword', children: 'Keyword' }, { name: 'kd', children: 'KD %' }, { name: 'cpc', children: 'CPC' }, diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx index 02d2293919..d5a6a56fe7 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx @@ -1,19 +1,34 @@ import { DataTable, SelectableRows } from '@semcore/ui/data-table'; import React from 'react'; +export type DemoProps = { + fixedColumns?: boolean; +}; + const data = Array.from({ length: 50 }).map((_, index) => ({ id: String(index + 1), name: `Row ${index + 1}`, + kd: `${(Math.random() * 100).toFixed(1)}`, + cpc: `$${(Math.random() * 10).toFixed(2)}`, + vol: `${Math.floor(Math.random() * 100000)}`, })); -const columns = [ - { name: 'id', children: 'ID' }, - { name: 'name', children: 'Name' }, -]; - const selectedRows = new SelectableRows(); -const Demo = () => { +const Demo = ({ fixedColumns = false }: DemoProps) => { + const columns = fixedColumns + ? [ + { name: 'id', children: 'ID', fixed: 'left' as const, gtcWidth: '100px' }, + { name: 'name', children: 'Name', gtcWidth: '200px' }, + { name: 'kd', children: 'KD %', gtcWidth: '150px' }, + { name: 'cpc', children: 'CPC', gtcWidth: '150px' }, + { name: 'vol', children: 'Vol.', fixed: 'right' as const, gtcWidth: '120px' }, + ] + : [ + { name: 'id', children: 'ID' }, + { name: 'name', children: 'Name' }, + ]; + return (
{ columns={columns} data={data} hMax={400} + w={fixedColumns ? '500px' : undefined} headerProps={{ sticky: true }} selectedRows={selectedRows} uniqueRowKey='id' @@ -29,4 +45,10 @@ const Demo = () => { ); }; +export const defaultProps: DemoProps = { + fixedColumns: false, +}; + +Demo.defaultProps = defaultProps; + export default Demo; diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx index b114bf94e6..193bc3eb1c 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx @@ -1,27 +1,48 @@ import { DataTable, type DataTableSort } from '@semcore/ui/data-table'; import React from 'react'; -const data = Array.from({ length: 50 }).map((_, index) => ({ +export type DemoProps = { + fixedColumns?: boolean; +}; + +const baseData = Array.from({ length: 50 }).map((_, index) => ({ + id: index + 1, + name: `Row ${index + 1}`, +})); + +const extendedData = Array.from({ length: 50 }).map((_, index) => ({ id: index + 1, name: `Row ${index + 1}`, + kd: `${(Math.random() * 100).toFixed(1)}`, + cpc: `$${(Math.random() * 10).toFixed(2)}`, + vol: `${Math.floor(Math.random() * 100000)}`, })); -const columns = [ +const baseColumns = [ { name: 'id', children: 'ID', sortable: true }, { name: 'name', children: 'Name', sortable: true }, ]; -const Demo = () => { +const fixedColumns = [ + { name: 'id', children: 'ID', sortable: true, fixed: 'left' as const, gtcWidth: '100px' }, + { name: 'name', children: 'Name', sortable: true, gtcWidth: '200px' }, + { name: 'kd', children: 'KD %', sortable: true, gtcWidth: '150px' }, + { name: 'cpc', children: 'CPC', sortable: true, gtcWidth: '150px' }, + { name: 'vol', children: 'Vol.', sortable: true, fixed: 'right' as const, gtcWidth: '120px' }, +]; + +const Demo = ({ fixedColumns: useFixedColumns = false }: DemoProps) => { const [selectedRows, setSelectedRows] = React.useState([]); - const [sort, setSort] = React.useState>(); + const [sort, setSort] = React.useState>(); return (
{ ); }; +export const defaultProps: DemoProps = { + fixedColumns: false, +}; + +Demo.defaultProps = defaultProps; + export default Demo; From 04532e89fa69de48f89c8181049dcc8a55c3b40f Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 20 Mar 2026 17:55:44 +0100 Subject: [PATCH 12/24] [data-table] fixed clearAll UIK-4989 --- semcore/data-table/src/store/SelectableRows.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index 9fb4048476..dd7ebde0b9 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -125,14 +125,12 @@ export class SelectableRows extends EventEmitter implements ISel } public clearAll(): void { - const keys = Array.from(this.values.keys()); + for (const key of this.availableKeys.values()) { + this.values.delete(key); + this.emit(SelectableRows.TOGGLE_EVENT, key); + } - this.values.clear(); this.emit(SelectableRows.SELECT_ALL_EVENT); - - keys.forEach((key) => { - this.emit(SelectableRows.TOGGLE_EVENT, key); - }); } public toggle(selected: boolean, row: DTRow): void { From b4f5133feb5e789fadb0d1eba47a4d412f7591a1 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 20 Mar 2026 17:57:28 +0100 Subject: [PATCH 13/24] [data-table] fixed select with shift UIK-4990 --- semcore/data-table/src/store/SelectableRows.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index dd7ebde0b9..0ac0cb681f 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -154,9 +154,9 @@ export class SelectableRows extends EventEmitter implements ISel } } else { this.toggleOneRow(selected, row[UNIQ_ROW_KEY]); - - this.lastSelectedRow = row[UNIQ_ROW_KEY]; } + + this.lastSelectedRow = row[UNIQ_ROW_KEY]; } private toggleOneRow(isSelected: boolean, key: UniqRowKeyType): void { From bb3f32554c7cc042cff0863de30645ce7e0d727b Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Fri, 20 Mar 2026 18:22:54 +0100 Subject: [PATCH 14/24] [data-table] update test --- .../data-table-cells.browser-test.tsx | 240 +----- ...-with-selectable-rows-1-chromium-linux.png | Bin 18134 -> 0 bytes ...a-with-selectable-rows-1-firefox-linux.png | Bin 35266 -> 0 bytes ...ta-with-selectable-rows-1-webkit-linux.png | Bin 18459 -> 0 bytes ...s-checked-by-keyboard-1-chromium-linux.png | Bin 35857 -> 0 bytes .../data-table-states.browser-test.tsx | 771 +++++++++++++++++- ...for-checkbox-in-table-1-chromium-linux.png | Bin 52785 -> 52667 bytes ...nd-mouse-interactions-2-chromium-linux.png | Bin 71310 -> 71309 bytes ...-compact-and-compact-2-chromium-linux.png} | Bin ...n-compact-and-compact-2-firefox-linux.png} | Bin ...on-compact-and-compact-2-webkit-linux.png} | Bin ...-compact-and-compact-1-chromium-linux.png} | Bin ...n-compact-and-compact-1-firefox-linux.png} | Bin ...on-compact-and-compact-1-webkit-linux.png} | Bin ...s-checked-by-keyboard-1-chromium-linux.png | Bin 0 -> 35836 bytes ...s-checked-by-keyboard-1-firefox-linux.png} | Bin ...ls-checked-by-keyboard-1-webkit-linux.png} | Bin ...ighlight-on-selection-1-chromium-linux.png | Bin 0 -> 14730 bytes ...-highlight-on-selection-1-webkit-linux.png | Bin 0 -> 15491 bytes ...highlight-on-selection-1-firefox-linux.png | Bin 0 -> 33467 bytes 20 files changed, 771 insertions(+), 240 deletions(-) delete mode 100644 semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-chromium-linux.png delete mode 100644 semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-firefox-linux.png delete mode 100644 semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-webkit-linux.png delete mode 100644 semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-chromium-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-chromium-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-firefox-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-firefox-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-webkit-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-webkit-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-chromium-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-chromium-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-firefox-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-firefox-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-webkit-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-webkit-linux.png} (100%) create mode 100644 semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-firefox-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-firefox-linux.png} (100%) rename semcore/data-table/__tests__/{data-table-cells.browser-test.tsx-snapshots/-visual-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-webkit-linux.png => data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-webkit-linux.png} (100%) create mode 100644 semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-SelectableRows-reactive-API-Verify-SelectableRows-row-highlight-on-selection-1-chromium-linux.png create mode 100644 semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-SelectableRows-reactive-API-Verify-SelectableRows-row-highlight-on-selection-1-webkit-linux.png create mode 100644 semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-SelectableRows-reactive-API-Verify-SelectableRows-visual---row-highlight-on-selection-1-firefox-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx b/semcore/data-table/__tests__/data-table-cells.browser-test.tsx index b7a274f6cb..826d5be993 100644 --- a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-cells.browser-test.tsx @@ -2,7 +2,7 @@ import { expect, test } from '@semcore/testing-utils/playwright'; import { loadPage } from '@semcore/testing-utils/shared/helpers'; import { TAG } from '@semcore/testing-utils/shared/tags'; -import { locators, checkStyles } from './utils'; +import { locators } from './utils'; /* ===================================================== @visual @@ -48,131 +48,8 @@ test.describe(`${TAG.VISUAL}`, () => { } await expect(page).toHaveScreenshot(); }); - - test('Verify empty data with selectable rows', { - tag: [TAG.PRIORITY_MEDIUM, - '@data-table'], - }, async ({ page }) => { - await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx', 'en'); - - await expect(page).toHaveScreenshot(); - }); - - test('Verify sideIndents=wide with selectable rows non compact and compact', { - tag: [TAG.PRIORITY_MEDIUM, - '@data-table'], - }, async ({ page }) => { - await loadPage(page, 'stories/components/data-table/docs/examples/checkbox-in-table.tsx', 'en', { - sideIndents: 'wide', - }); - - await test.step('Verify wide for non compact data-table', async () => { - await expect(page).toHaveScreenshot(); - }); - - await test.step('Verify wide for compact data-table', async () => { - await loadPage(page, 'stories/components/data-table/docs/examples/checkbox-in-table.tsx', 'en', { - sideIndents: 'wide', compact: true, - }); - await expect(page).toHaveScreenshot(); - }); - }); - - test('Verify color on hover when merged rows AND columns with multi-level header', { - tag: [TAG.PRIORITY_HIGH, - '@data-table'], - }, async ({ page, browserName }) => { - if (browserName == 'firefox') test.skip(); - - await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/merged-row-for-multi-level-header.tsx', 'en'); - - const consoleErrors: string[] = []; - - page.on('console', (msg) => { - if (msg.type() === 'error') { - consoleErrors.push(msg.text()); - } - }); - - page.on('pageerror', (error) => { - consoleErrors.push(error.message); - }); - - await test.step('Verify Color when child cell hovered', async () => { - await locators.getCell(page, 3, 1).hover(); - - await checkStyles(locators.getCell(page, 3, 1), { 'background-color': 'rgb(240, 240, 244)' }); - await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(240, 240, 244)' }); - await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(255, 255, 255)' }); - }); - - await test.step('Verify Color when parent cell hovered', async () => { - await locators.getCell(page, 2, 2).hover(); - - for (let row = 2; row <= 5; row++) { - await checkStyles(locators.getCell(page, row, 1), { 'background-color': 'rgb(240, 240, 244)' }); - } - }); - - await test.step('Verify no console errors', async () => { - expect(consoleErrors, `Console errors found:\n${consoleErrors.join('\n')}`).toHaveLength(0); - }); - }); - - test('Verify styles when checkbox in merged cells checked by keyboard', { - tag: [TAG.PRIORITY_HIGH, - TAG.KEYBOARD, - '@data-table', - '@tooltip'], - }, async ({ page, browserName }) => { - await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); - - await page.keyboard.press('Tab'); - - await page.keyboard.press('ArrowDown'); - await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); - - await page.keyboard.press('Space'); - - await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); - await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(233, 247, 255)' }); - await expect(page).toHaveScreenshot(); - - if (browserName == 'firefox') return; - const cell22 = locators.getCell(page, 2, 1); - const box22 = await cell22.boundingBox(); - if (box22) { - await page.mouse.move(box22.x + box22.width / 2, box22.y + box22.height / 2); - } - - await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(196, 229, 254)' }); - - const cell23 = locators.getCell(page, 2, 3); - const box23 = await cell23.boundingBox(); - if (box23) { - await page.mouse.move(box23.x + box23.width / 2, box23.y + box23.height / 2); - } - await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(196, 229, 254)' }); - await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(233, 247, 255)' }); - await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(233, 247, 255)' }); - }); }); + /* ===================================================== @functional Keyboard and mouse interactions - no snapshots here. @@ -473,119 +350,6 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { }); }); - test('Verify select rows with Shift', { - tag: [ - TAG.KEYBOARD, - TAG.MOUSE, - - '@data-table', - ], - }, async ({ page }) => { - await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox.tsx', 'en'); - - const firstCell = locators.getCell(page, 3, 1); - const secondCell = locators.getCell(page, 7, 1); - - await firstCell.locator('label').click(); - await secondCell.locator('label').click({ modifiers: ['Shift'] }); - - for (let i = 3; i <= 7; i++) { - await expect(locators.getCell(page, i, 1).locator('input')).toBeChecked(); - } - - await locators.getCell(page, 5, 1).locator('label').click({ modifiers: ['Shift'] }); - - for (let i = 5; i <= 7; i++) { - await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); - } - - await locators.getCell(page, 9, 1).locator('label').click({ modifiers: ['Shift'] }); - for (let i = 5; i <= 8; i++) { - await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); - } - await expect(locators.getCell(page, 9, 1).locator('input')).toBeChecked(); - }); - - test('Verify select rows with Shift when checkbox in merged cells', { - tag: [ - TAG.KEYBOARD, - TAG.MOUSE, - '@data-table', - ], - }, async ({ page }) => { - await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); - - const firstCell = locators.getCell(page, 2, 1); - const secondCell = locators.getCell(page, 4, 1); - - await firstCell.locator('label').click(); - await secondCell.locator('label').click({ modifiers: ['Shift'] }); - - await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); - await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); - - await locators.getCell(page, 8, 1).locator('label').click({ modifiers: ['Shift'] }); - - await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); - await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); - await expect(locators.getCell(page, 6, 1).locator('input')).toBeChecked(); - await expect(locators.getCell(page, 8, 1).locator('input')).toBeChecked(); - }); - - test('Verify keyboard interaction when checkbox in merged cells', { - tag: [TAG.PRIORITY_HIGH, - TAG.KEYBOARD, - '@data-table', - '@tooltip'], - }, async ({ page }) => { - await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); - - await test.step('Verify Focus on checkbox', async () => { - await page.keyboard.press('Tab'); - await page.keyboard.press('ArrowDown'); - await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); - }); - - await test.step('Verify navigation to the 1st child', async () => { - await page.keyboard.press('Space'); - await page.keyboard.press('ArrowRight'); - await page.keyboard.press('ArrowRight'); - await expect(locators.getCell(page, 2, 3)).toBeFocused(); - }); - await test.step('Verify focus returns to checkbox', async () => { - await page.keyboard.press('ArrowLeft'); - await page.keyboard.press('ArrowLeft'); - await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); - }); - await test.step('Verify navigation from non merged to merged', async () => { - for (let i = 0; i < 4; i++) - await page.keyboard.press('ArrowDown'); - await expect(locators.getCell(page, 10, 1).locator('input')).toBeFocused(); - await page.keyboard.press('ArrowUp'); - await expect(locators.getCell(page, 8, 1).locator('input')).toBeFocused(); - }); - await test.step('Verify navigation from 2nd child outside the table and back', async () => { - await page.keyboard.press('ArrowRight'); - await page.keyboard.press('ArrowRight'); - await page.keyboard.press('ArrowRight'); - await page.keyboard.press('ArrowDown'); - await expect(locators.getCell(page, 9, 4)).toBeFocused(); - - await page.keyboard.press('Tab'); - await expect(locators.button(page, 'Next')).toBeFocused(); - await page.keyboard.press('Shift+Tab'); - await expect(locators.getCell(page, 9, 4)).toBeFocused(); - }); - await test.step('Verify navigation from last child outside the table and back', async () => { - await page.keyboard.press('ArrowRight'); - await expect(locators.getCell(page, 9, 5)).toBeFocused(); - await page.keyboard.press('Tab'); - await expect(locators.button(page, 'Next')).toBeFocused(); - await page.keyboard.press('Shift+Tab'); - await expect(locators.getCell(page, 9, 5)).toBeFocused(); - }); - }); - test('Verify multiple access to cells with spin', { tag: [TAG.PRIORITY_HIGH, TAG.KEYBOARD, diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-chromium-linux.png deleted file mode 100644 index 43463d4a6c61c200e626ed06a6a8d22e5675cd18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18134 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 diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-firefox-linux.png b/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-empty-data-with-selectable-rows-1-firefox-linux.png deleted file mode 100644 index 57fd467031b84da4beb51a0a26ef299c6f729594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35266 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 es64>i$hdq;*{z3-#S*|}J^g6p+wc=tXJL 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 yg(nM%@MR;OLcirY*H{~NkMjxE~TloqUd1o^Ha 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 diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png deleted file mode 100644 index de34fb895c8cd3fc41fbcf05e5de2ccd997415fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35857 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 { }); }); }); + test.describe('Limited mode', () => { test(`Verify limited state for table with accordion keyboard and mouse interactions`, { tag: [TAG.PRIORITY_HIGH, @@ -251,6 +252,231 @@ test.describe(`${TAG.VISUAL}`, () => { await expect(page).toHaveScreenshot(); }); }); + + test.describe('Selectable rows (old API)', () => { + test('Verify sideIndents=wide with selectable rows non compact and compact', { + tag: [TAG.PRIORITY_MEDIUM, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/docs/examples/checkbox-in-table.tsx', 'en', { + sideIndents: 'wide', + }); + + await test.step('Verify wide for non compact data-table', async () => { + await expect(page).toHaveScreenshot(); + }); + + await test.step('Verify wide for compact data-table', async () => { + await loadPage(page, 'stories/components/data-table/docs/examples/checkbox-in-table.tsx', 'en', { + sideIndents: 'wide', compact: true, + }); + await expect(page).toHaveScreenshot(); + }); + }); + + test('Verify color on hover when merged rows AND columns with multi-level header', { + tag: [TAG.PRIORITY_HIGH, + '@data-table'], + }, async ({ page, browserName }) => { + if (browserName == 'firefox') test.skip(); + + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/merged-row-for-multi-level-header.tsx', 'en'); + + const consoleErrors: string[] = []; + + page.on('console', (msg) => { + if (msg.type() === 'error') { + consoleErrors.push(msg.text()); + } + }); + + page.on('pageerror', (error) => { + consoleErrors.push(error.message); + }); + + await test.step('Verify Color when child cell hovered', async () => { + await locators.getCell(page, 3, 1).hover(); + + await checkStyles(locators.getCell(page, 3, 1), { 'background-color': 'rgb(240, 240, 244)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(240, 240, 244)' }); + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(255, 255, 255)' }); + }); + + await test.step('Verify Color when parent cell hovered', async () => { + await locators.getCell(page, 2, 2).hover(); + + for (let row = 2; row <= 5; row++) { + await checkStyles(locators.getCell(page, row, 1), { 'background-color': 'rgb(240, 240, 244)' }); + } + }); + + await test.step('Verify no console errors', async () => { + expect(consoleErrors, `Console errors found:\n${consoleErrors.join('\n')}`).toHaveLength(0); + }); + }); + + test('Verify styles when checkbox in merged cells checked by keyboard', { + tag: [TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + '@data-table', + '@tooltip'], + }, async ({ page, browserName }) => { + await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); + + await page.keyboard.press('Tab'); + + await page.keyboard.press('ArrowDown'); + await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); + + await page.keyboard.press('Space'); + + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(233, 247, 255)' }); + await expect(page).toHaveScreenshot(); + + if (browserName == 'firefox') return; + const cell22 = locators.getCell(page, 2, 1); + const box22 = await cell22.boundingBox(); + if (box22) { + await page.mouse.move(box22.x + box22.width / 2, box22.y + box22.height / 2); + } + + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(196, 229, 254)' }); + + const cell23 = locators.getCell(page, 2, 3); + const box23 = await cell23.boundingBox(); + if (box23) { + await page.mouse.move(box23.x + box23.width / 2, box23.y + box23.height / 2); + } + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 4), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 3, 2), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 4), { 'background-color': 'rgb(233, 247, 255)' }); + }); + }); + + test.describe('SelectableRows (reactive API)', () => { + test('Verify SelectableRows row highlight on selection', { + tag: [TAG.PRIORITY_HIGH, + '@data-table'], + }, async ({ page, browserName }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx', 'en'); + if (browserName == 'firefox') return; + const firstRowCheckbox = locators.getCell(page, 2, 1).locator('label'); + await firstRowCheckbox.click(); + + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(196, 229, 254)' }); + + await expect(page).toHaveScreenshot(); + }); + + test('Verify SelectableRows select all rows highlight', { + tag: [TAG.PRIORITY_HIGH, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + await selectAllCheckbox.click(); + + const bodyRows = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="DataTable.Row"]'); + const rowCount = await bodyRows.count(); + + for (let i = 0; i < rowCount; i++) { + const row = bodyRows.nth(i); + const cells = row.locator('[data-ui-name="Row.Cell"]'); + const cellCount = await cells.count(); + for (let j = 0; j < cellCount; j++) { + await checkStyles(cells.nth(j), { 'background-color': 'rgb(196, 229, 254)' }); + } + } + }); + + test('Verify color on hover when merged rows with SelectableRows', { + tag: [TAG.PRIORITY_HIGH, + '@data-table'], + }, async ({ page, browserName }) => { + if (browserName === 'firefox') test.skip(); + + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en', { mergedRows: true }); + + const consoleErrors: string[] = []; + + page.on('console', (msg) => { + if (msg.type() === 'error') { + consoleErrors.push(msg.text()); + } + }); + + page.on('pageerror', (error) => { + consoleErrors.push(error.message); + }); + + await test.step('Verify color when child cell hovered', async () => { + await locators.getCell(page, 3, 3).hover(); + + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(240, 240, 244)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(240, 240, 244)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(255, 255, 255)' }); + await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(240, 240, 244)' }); + }); + + await test.step('Verify color when parent merged cell hovered', async () => { + await locators.getCell(page, 2, 2).hover(); + + for (let row = 2; row <= 3; row++) { + await checkStyles(locators.getCell(page, row, 1), { 'background-color': 'rgb(240, 240, 244)' }); + } + }); + + await test.step('Verify color when checkbox checked', async () => { + const firstRowCheckbox = locators.getCell(page, 2, 1).locator('label'); + await firstRowCheckbox.click(); + await locators.collapse(page).waitFor({ state: 'visible' }); + for (let row = 2; row <= 3; row++) { + await checkStyles(locators.getCell(page, row, 1), { 'background-color': 'rgb(196, 229, 254)' }); + } + }); + + await test.step('Verify color when parent hovered', async () => { + await locators.getCell(page, 2, 2).hover(); + + for (let row = 2; row <= 3; row++) { + await checkStyles(locators.getCell(page, row, 1), { 'background-color': 'rgb(196, 229, 254)' }); + } + }); + + await test.step('Verify color when child cell hovered', async () => { + await locators.getCell(page, 3, 3).hover(); + + await checkStyles(locators.getCell(page, 2, 1), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 2), { 'background-color': 'rgb(196, 229, 254)' }); + await checkStyles(locators.getCell(page, 2, 3), { 'background-color': 'rgb(233, 247, 255)' }); + await checkStyles(locators.getCell(page, 3, 3), { 'background-color': 'rgb(196, 229, 254)' }); + }); + + await test.step('Verify no console errors', async () => { + expect(consoleErrors, `Console errors found:\n${consoleErrors.join('\n')}`).toHaveLength(0); + }); + }); + }); }); /* ===================================================== @@ -311,7 +537,16 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { }); }); - test.describe('Checkbox in table', () => { + test.describe('Selectable rows (old API)', () => { + test('Verify empty data with selectable rows', { + tag: [TAG.PRIORITY_MEDIUM, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + await expect(selectAllCheckbox).not.toBeChecked(); + }); test('Verify table with checkbox attributes and mouse interaction', { tag: [TAG.PRIORITY_HIGH, TAG.MOUSE, @@ -537,6 +772,538 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(selectAllCheckbox).not.toBeChecked(); }); }); + + test('Verify select rows with Shift', { + tag: [ + TAG.KEYBOARD, + TAG.MOUSE, + + '@data-table', + ], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox.tsx', 'en'); + + const firstCell = locators.getCell(page, 3, 1); + const secondCell = locators.getCell(page, 7, 1); + + await firstCell.locator('label').click(); + await secondCell.locator('label').click({ modifiers: ['Shift'] }); + + for (let i = 3; i <= 7; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).toBeChecked(); + } + + await locators.getCell(page, 5, 1).locator('label').click({ modifiers: ['Shift'] }); + + for (let i = 5; i <= 7; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); + } + + await locators.getCell(page, 9, 1).locator('label').click({ modifiers: ['Shift'] }); + for (let i = 5; i <= 8; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); + } + await expect(locators.getCell(page, 9, 1).locator('input')).toBeChecked(); + }); + + test('Verify select rows with Shift when checkbox in merged cells', { + tag: [ + TAG.KEYBOARD, + TAG.MOUSE, + '@data-table', + ], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); + + const firstCell = locators.getCell(page, 2, 1); + const secondCell = locators.getCell(page, 4, 1); + + await firstCell.locator('label').click(); + await secondCell.locator('label').click({ modifiers: ['Shift'] }); + + await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); + + await locators.getCell(page, 8, 1).locator('label').click({ modifiers: ['Shift'] }); + + await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 6, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 8, 1).locator('input')).toBeChecked(); + }); + + test('Verify keyboard interaction when checkbox in merged cells', { + tag: [TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + '@data-table', + '@tooltip'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/advanced/examples/selectable_with_merged_rows.tsx', 'en'); + + await test.step('Verify Focus on checkbox', async () => { + await page.keyboard.press('Tab'); + await page.keyboard.press('ArrowDown'); + await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); + }); + + await test.step('Verify navigation to the 1st child', async () => { + await page.keyboard.press('Space'); + await page.keyboard.press('ArrowRight'); + await page.keyboard.press('ArrowRight'); + await expect(locators.getCell(page, 2, 3)).toBeFocused(); + }); + await test.step('Verify focus returns to checkbox', async () => { + await page.keyboard.press('ArrowLeft'); + await page.keyboard.press('ArrowLeft'); + await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); + }); + await test.step('Verify navigation from non merged to merged', async () => { + for (let i = 0; i < 4; i++) + await page.keyboard.press('ArrowDown'); + await expect(locators.getCell(page, 10, 1).locator('input')).toBeFocused(); + await page.keyboard.press('ArrowUp'); + await expect(locators.getCell(page, 8, 1).locator('input')).toBeFocused(); + }); + await test.step('Verify navigation from 2nd child outside the table and back', async () => { + await page.keyboard.press('ArrowRight'); + await page.keyboard.press('ArrowRight'); + await page.keyboard.press('ArrowRight'); + await page.keyboard.press('ArrowDown'); + await expect(locators.getCell(page, 9, 4)).toBeFocused(); + + await page.keyboard.press('Tab'); + await expect(locators.button(page, 'Next')).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await expect(locators.getCell(page, 9, 4)).toBeFocused(); + }); + await test.step('Verify navigation from last child outside the table and back', async () => { + await page.keyboard.press('ArrowRight'); + await expect(locators.getCell(page, 9, 5)).toBeFocused(); + await page.keyboard.press('Tab'); + await expect(locators.button(page, 'Next')).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await expect(locators.getCell(page, 9, 5)).toBeFocused(); + }); + }); + }); + + test.describe('SelectableRows (reactive API)', () => { + test('Verify SelectableRows empty data with selectable rows', { + tag: [TAG.PRIORITY_MEDIUM, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx', 'en', { reactive: true }); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + test('Verify SelectableRows checkbox attributes and mouse interaction', { + tag: [TAG.PRIORITY_HIGH, + TAG.MOUSE, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const headerCheckbox = locators.getHeadColumn(page, 1).locator('input'); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify header checkbox has aria-label', async () => { + await expect(headerCheckbox).toHaveAttribute('aria-label', 'All items'); + }); + + await test.step('Verify no selection initially', async () => { + await expect(selectAllCheckbox).not.toBeChecked(); + await expect(rowCheckboxes.first()).not.toBeChecked(); + }); + + await test.step('Verify single row selection by click', async () => { + await rowCheckboxes.first().click(); + await expect(rowCheckboxes.first()).toBeChecked(); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify single row deselection by click', async () => { + await rowCheckboxes.first().click(); + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + await test.step('Verify select all by header checkbox', async () => { + await selectAllCheckbox.click(); + await expect(selectAllCheckbox).toBeChecked(); + + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).toBeChecked(); + } + }); + + await test.step('Verify deselect all by header checkbox', async () => { + await selectAllCheckbox.click(); + await expect(selectAllCheckbox).not.toBeChecked(); + + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); + } + }); + + await test.step('Verify indeterminate state', async () => { + await selectAllCheckbox.click(); + await rowCheckboxes.first().click(); + + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + }); + + test('Verify SelectableRows keyboard navigation and selection', { + tag: [TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const headerCheckbox = locators.getHeadColumn(page, 1).locator('input'); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify header checkbox focused by Tab', async () => { + await page.keyboard.press('Tab'); + await expect(headerCheckbox).toBeFocused(); + }); + + await test.step('Verify select all by Space on header', async () => { + await page.keyboard.press('Space'); + + await expect(selectAllCheckbox).toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).toBeChecked(); + } + }); + + await test.step('Verify deselect all by Space on header', async () => { + await page.keyboard.press('Space'); + + await expect(selectAllCheckbox).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); + } + }); + + await test.step('Verify single row selection by keyboard', async () => { + await page.keyboard.press('ArrowDown'); + await page.keyboard.press('Space'); + + await expect(rowCheckboxes.first()).toBeChecked(); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify single row deselection by keyboard', async () => { + await page.keyboard.press('Space'); + + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + }); + + test('Verify SelectableRows with pagination mouse interaction', { + tag: [TAG.PRIORITY_HIGH, + TAG.MOUSE, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const collapse = locators.collapse(page); + const selectedRowsCount = collapse.locator('[data-ui-name="Text"]').nth(1); + const deselectAllButton = collapse.locator('button'); + const nextButton = page.locator('[data-ui-name="Pagination.NextPage"]'); + const prevButton = page.locator('[data-ui-name="Pagination.PrevPage"]'); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify no action bar when nothing selected', async () => { + await expect(collapse).toBeHidden(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + await test.step('Verify action bar when header checkbox is checked', async () => { + await selectAllCheckbox.click(); + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + + await expect(collapse).toBeVisible(); + await expect(selectedRowsCount).toHaveText('5'); + await expect(selectAllCheckbox).toBeChecked(); + }); + + await test.step('Verify action bar persists when navigating to next page', async () => { + await nextButton.click(); + + await expect(collapse).toBeVisible(); + await expect(selectedRowsCount).toHaveText('5'); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + await test.step('Verify counter increases when selecting on next page', async () => { + await selectAllCheckbox.click(); + + await expect(selectedRowsCount).toHaveText('10'); + await expect(selectAllCheckbox).toBeChecked(); + }); + + await test.step('Verify indeterminate when one row unchecked', async () => { + await rowCheckboxes.first().click(); + + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectedRowsCount).toHaveText('9'); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify counter on next page', async () => { + await nextButton.click(); + + await expect(selectAllCheckbox).not.toBeChecked(); + await expect(selectedRowsCount).toHaveText('9'); + }); + + await test.step('Verify indeterminate state saved when prev button clicked', async () => { + await prevButton.click(); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify deselect all clears everything', async () => { + await deselectAllButton.click(); + + await expect(collapse).toBeHidden(); + await expect(selectAllCheckbox).not.toBeChecked(); + + await nextButton.click(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + }); + + test('Verify SelectableRows with pagination keyboard interaction', { + tag: [TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + '@data-table'], + }, async ({ page, browserName }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en'); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const collapse = locators.collapse(page); + const selectedRowsCount = collapse.locator('[data-ui-name="Text"]').nth(1); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify select all via keyboard', async () => { + await page.keyboard.press('Tab'); + await page.keyboard.press('Space'); + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + + await expect(collapse).toBeVisible(); + await expect(selectedRowsCount).toHaveText('5'); + await expect(selectAllCheckbox).toBeChecked(); + }); + + await test.step('Verify navigate to next page', async () => { + await page.keyboard.press('Tab'); + await page.keyboard.press('Enter'); + + await expect(collapse).toBeVisible(); + await expect(selectedRowsCount).toHaveText('5'); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + await test.step('Verify select all on second page', async () => { + await page.keyboard.press('Shift+Tab'); + await expect(page.getByRole('button', { name: 'Prev' })).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await page.keyboard.press('Shift+Tab'); + await page.keyboard.press('Space'); + await expect(selectedRowsCount).toHaveText('10'); + await expect(selectAllCheckbox).toBeChecked(); + }); + + await test.step('Verify uncheck single row', async () => { + await page.keyboard.press('ArrowDown'); + await page.keyboard.press('ArrowDown'); + await page.keyboard.press('Space'); + + await expect(rowCheckboxes.nth(1)).not.toBeChecked(); + await expect(selectedRowsCount).toHaveText('9'); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + if (browserName === 'webkit') return; + + await test.step('Verify deselect all via keyboard', async () => { + await page.keyboard.press('Shift+Tab'); + await page.keyboard.press('Space'); + + await expect(collapse).toBeHidden(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + }); + + test('Verify SelectableRows select rows with Shift', { + tag: [ + TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + TAG.MOUSE, + '@data-table', + ], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx', 'en'); + + const firstCell = locators.getCell(page, 3, 1); + const secondCell = locators.getCell(page, 7, 1); + + await test.step('Verify Shift+click selects range', async () => { + await firstCell.locator('label').click(); + await secondCell.locator('label').click({ modifiers: ['Shift'] }); + + for (let i = 3; i <= 7; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).toBeChecked(); + } + }); + + await test.step('Verify Shift+click deselects partial range', async () => { + await locators.getCell(page, 5, 1).locator('label').click({ modifiers: ['Shift'] }); + + for (let i = 5; i <= 7; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); + } + }); + + await test.step('Verify Shift+click on unchecked range', async () => { + await locators.getCell(page, 9, 1).locator('label').click({ modifiers: ['Shift'] }); + for (let i = 5; i <= 8; i++) { + await expect(locators.getCell(page, i, 1).locator('input')).not.toBeChecked(); + } + await expect(locators.getCell(page, 9, 1).locator('input')).toBeChecked(); + }); + }); + + test('Verify SelectableRows Shift selection with merged rows', { + tag: [ + TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + TAG.MOUSE, + '@data-table', + ], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en', { mergedRows: true }); + + const firstCell = locators.getCell(page, 2, 1); + const secondCell = locators.getCell(page, 4, 1); + + await test.step('Verify Shift+click selects range in merged rows', async () => { + await firstCell.locator('label').click(); + await secondCell.locator('label').click({ modifiers: ['Shift'] }); + + await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); + }); + + await test.step('Verify Shift+click extends selection in merged rows', async () => { + await locators.getCell(page, 8, 1).locator('label').click({ modifiers: ['Shift'] }); + + await expect(locators.getCell(page, 2, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 4, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 6, 1).locator('input')).toBeChecked(); + await expect(locators.getCell(page, 8, 1).locator('input')).toBeChecked(); + }); + }); + + test('Verify SelectableRows with merged rows mouse interaction', { + tag: [TAG.PRIORITY_HIGH, + TAG.MOUSE, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en', { mergedRows: true }); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const collapse = locators.collapse(page); + const selectedRowsCount = collapse.locator('[data-ui-name="Text"]').nth(1); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify single row selection in merged group', async () => { + await rowCheckboxes.first().click(); + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + + await expect(rowCheckboxes.first()).toBeChecked(); + await expect(collapse).toBeVisible(); + await expect(selectedRowsCount).toHaveText('1'); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify deselection', async () => { + await rowCheckboxes.first().click(); + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectAllCheckbox).not.toBeChecked(); + }); + + await test.step('Verify select all with merged rows', async () => { + await selectAllCheckbox.click(); + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + + await expect(selectAllCheckbox).toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).toBeChecked(); + } + }); + + await test.step('Verify deselect all with merged rows', async () => { + await selectAllCheckbox.click(); + await expect(selectAllCheckbox).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) { + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); + } + }); + }); + + test('Verify SelectableRows with merged rows keyboard interaction', { + tag: [TAG.PRIORITY_HIGH, + TAG.KEYBOARD, + '@data-table'], + }, async ({ page }) => { + await loadPage(page, 'stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx', 'en', { mergedRows: true }); + + const selectAllCheckbox = page.locator('[data-ui-name="DataTable.Head"] [data-ui-name="Checkbox"]'); + const rowCheckboxes = page.locator('[data-ui-name="DataTable.Body"] [data-ui-name="Checkbox"]'); + + await test.step('Verify focus on header checkbox', async () => { + await page.keyboard.press('Tab'); + await expect(locators.getHeadColumn(page, 1).locator('input')).toBeFocused(); + }); + + await test.step('Verify select all via keyboard', async () => { + await page.keyboard.press('Space'); + await page.getByRole('button', { name: 'Deselect all' }).waitFor({ state: 'visible' }); + + await expect(selectAllCheckbox).toBeChecked(); + }); + + await test.step('Verify navigate to row checkbox and deselect', async () => { + await page.keyboard.press('ArrowDown'); + await expect(locators.getCell(page, 2, 1).locator('input')).toBeFocused(); + + await page.keyboard.press('Space'); + await expect(rowCheckboxes.first()).not.toBeChecked(); + await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + }); + + await test.step('Verify re-select row', async () => { + await page.keyboard.press('Space'); + await expect(rowCheckboxes.first()).toBeChecked(); + await expect(selectAllCheckbox).toBeChecked(); + }); + }); }); test.describe('Limited state', () => { diff --git a/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Limited-mode-Verify-limited-state-for-checkbox-in-table-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Limited-mode-Verify-limited-state-for-checkbox-in-table-1-chromium-linux.png index 665be5b7fbf61665181a4665b41e6f6da8d55243..c671a1294cc330a9cf825a6b4e1584eb36689b8c 100644 GIT binary patch literal 52667 zcmdRW1ykN?*EP~&#oeK}yA~_%P~6?!p}4yhDDLjAH}39Ead#;0cJu>wNNM$U2qYO;SQa=;DPrq@!bfrDK(n^(ON$)eQSE1Nf8w zY<|5l@td6goq_FrMDG6Yq!$84|G#4c@DEJ?9{bgRL16!T{8b$c9RA;9Vmd!CsDF=< zF~5RA{(B7biP-P2hJUx9|4$yjrwn$v26F251Mdq(B4RWDR&P3y#He@SzRbDlHJ2wE zNtyMXBsAHn-skPP$!3-R`6wTx>!|wue#I=cpEBDk9vVw_WIF3@=i7K-SL1h!(`ctZ z$NVmy`G?JGZF`%fW~>aY;|W+0X#4{G7w_yjSK1vKS|h$hk_5aD*-Z)Wlk3v|GZ@%c z)!&D|U-9hPuLiL6&elMzC~tpWF0GcT?szMdisd9FC0A&kj%M=3V+n2MOB9a!el=Lk z

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�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 ao)KJ@Q_cifZI}Rb2$GXllB$$24*p+fojdOU delta 48813 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 bd2@MxJ5fk{Gg9{od*$>sB0{3K(R=Tm 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 delta 29182 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 diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-chromium-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-chromium-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-chromium-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-chromium-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-firefox-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-firefox-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-firefox-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-firefox-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-webkit-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-webkit-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-2-webkit-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-37a5a--with-selectable-rows-non-compact-and-compact-2-webkit-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-chromium-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-chromium-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-chromium-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-firefox-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-firefox-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-firefox-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-firefox-linux.png diff --git a/semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-webkit-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-webkit-linux.png similarity index 100% rename from semcore/data-table/__tests__/data-table-cells.browser-test.tsx-snapshots/-visual-Verify-sideIndents-wide-with-selectable-rows-non-compact-and-compact-1-webkit-linux.png rename to semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-sideI-62955--with-selectable-rows-non-compact-and-compact-1-webkit-linux.png diff --git a/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-Selectable-rows-old-API-Verify-styles-when-checkbox-in-merged-cells-checked-by-keyboard-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1c4c341ef824a9985458837601accf93eae74e GIT binary patch literal 35836 zcmd432T)Ys_9hBqK#-saCNO^}>}l2imFXAqFo*u zL2{-^O+z=(Z{xkUUcFaSH8nLe{~4;Q`iO^f_St){wZ8SOZ=Em7in1g`G(>oKcqDIL zzf{G;y9N%g3=&=eUoRNm;)5@ICskP~yyE@`8+dpR@!q`rN8LSTd)89>?l^tNeg*N< zMkbByFD8Ot?|FqXSG~;2nK0!Wny7CNE_+2`N(~uh75J7n;T6%?8l2~U#NOC4N1fcW zLZf`w?ANJpT0?@kQ~x$@Z>DkAey#VLe7^eSQ1I~P+#Fq~{~o=tdWc7GdGz=r-mS~; z?^mxpyZnA}hp_qb8}H5kjVA;yUVrE3hvRNKG5OQ{vC$I+HG*HvHF^BF4Y3Dk$_#SKG(;i{_ZG^b6DEh#q^k$e`h8 z=Nl{qXPdonL2ozZmnH~3hUZ-TUdNHoCOaXMwcU3(k8$B=&mJ|RS9AM(y|l~iFP9Hb zMr8)?Y$e{v7d`7nD`bz#=?O+N8Yb%t{kXh}#&H14Xi$3D00_dZ%zdG+cQct~dX zguUTrN!*#!IR+IM7dJUMNh@G8h(JjAU7Tgggl=zdKYH}Y8mvW*LNcdbm3o0@-~7BE zqEH8ooKJsd{3$in;PvZHs7Ap9IyyB~)mLFOu~AVb#>Nh(2P;Yvr;l;_=3C?N82? zW=06XX-`f~!VLAVi6K%9GCAgE9Ld78iti!kPnk`(=hmv)zsg2h!F>#Ci&N*$_bP8n z{BmXf`u(I=!)QV@39=@s>#f^AnEDYzbb3ggxHLUg>Bj$dKvhwg{6Ta|QNa^9WmLJ- zyVyzD-&YoSuX|j(WotL~Bg$}YVvIUd@#Kjv&HK5C*VscnYT^KsbNjyr`u43u{0sZZ z@+XXp3t15ojt&l|=jeHjFf1C0K0cmn^1&7x)KhWkyRY@9o=Jl_$Dp>VU3aDwk_Fm2 zI!bgZm<0r?Amhb{YXe5WaDdS`IXO*NS}iRvAMI4n_b2ho5f0@lrC(l1ue#WFx(du0 zg_OIy`{O51Y{4!7>%riAvLL77f}EQj98}iQLN|XTP*hZuJU@z-XTIF=t9{AOd3h}c z(hN!r8y8waa&vM7tVdrH^0;nK^d$=tGt%%|k2ZR_xw)Z%1-Psa8jnFWfFTSa5L8k% zb#+xXljRA1#cth`QY>OT9HLsaIKu|?PR$Mhbel%oeBsNUXhwdhVz67Darq`OmfuMD zJ)}E`+^0%xYs;=|7ZOsX5!Sv#;=7?-K^j7{@xBnbB2*&RcHt-1)2rDpPDMqNekv=O z3o{bEWo^P1-{o1KsP$}6cfNB+uYb7p%V;Er9KBAV{*@pnqts<0fCxaucSU-k3GtYs-SAYyENzEePgGk0Y;gx}WL%}4DCkGL!$5BhyVj(%KJqTYxuI$K(X#d4?NzSomy zI)wWf0Uza=iRC(ZhsKn5G~PFDW4q(b3WNc8jj4C)dJx`T1d`rJZm$usc*#RDv2q^Yin`f48(S zA?@^_?GqCdj}TV2wyEF0|CsXKUkn1i%o8YuQiYOqC_PI4P`B_F>`}C#U+9J<&;5BDA1Vnn0fB9; zk(uXB`G5JS*JW`p)|QuTX6yI`1+`EI+mjX0`WMxZ@&55~K`yT1W|bmcm?sF;sIBos z-KlDO1`3J_FZAx&Y-MGoVS_tkU};4~fl5|;9H-s^@_aojqRMtU4vi>5z#!w%EK1NS zGGHG?desfbvJv!?6BEEVP@6F4jo}9KF=DExx!fLP_t1`ZnlvFcn@bBe*?CjLys*pSr9%Skf_cJ{I@$P!&5sTU6Kfv>!4 zc?KM)n7B9&vsD5@e~($Y$Kfj5-LJs&y_As&dm!uxT&Y&EzSTtOf|1|(%E}5Q1%(>G z2H=F6nwnd*0=+#waxUVfp`mio%nBBLNieXnTSCZy>DSiRvpjjymnM$AILFe7x`LHn znW=TsD%5sZZ2eMLSSaGM$!9m?j^3SxUtqS%OgqxVJPwXFMi51MYqQa(gBj9>hK58z znZWh5x3`DU3Q9OGe=aFOf?(j{?0ji*%BXcf=Yxj_0;gqfL{y^gmh;eI&a;|`Q?V5I}DlYlL#si}#G<h3PeJQur=!x|lxHemtS_>bT%c!;0$qiYaML#8}+??2i z<(atuG5lQ_z$i=qSnQiTL~ShZOV+RR&z1R2jMMh52JUhC9f|{8QeM-j3EOc~&Rcv2 zMHf0RZOwnW40AhN?C%x)!)B#Z>lcz+r-7LFc&_MT##w6vHpGqFR+I`b$Qfjo|1usl zsPSe;jW}N(`lF2;kXJ}94`0;2z`K5V@cIh=z02>1H?O|C{PurL?*A7sM*SC@@Iz-J zJZ7|axajKNTi^LnlFM3}`n>t_U;kSWeV<7b(Iy(CnhFFG!q#cdpPy0 zW#CK9c4m{B8T6h;wOK!&QN63r$({;}QYv&+b?o==vndp9z;!a7(Q!AIBF#q~e*CgG zLi&<%_ry-7Ro%Jqg5D@98dm$7rc0c27CnWG6#_hnZ6RYSHh?eu`Lj2H+%Gj|Lhno? z(I@*0(z1d!6A39X`nh(tiQ9fSYUk~VFAB+3DdKJte0-IPsZ&y)E%874*~}vHBI|W? zuf+(5kTDokxSlgf!b9V^kjHaQxQl=(7{tS~cxS}zg{tE)2 zXxgtCeQ|zctv_wL(j&A=s{SpdrON;w>&Wo%h@j2M`Iey%3Uy>XUYwngahsMx)P8Qj zvOldrqadfLsR^1a&s^}{vbqn_@#7zYF#}#@3D!zJA{%Z5f3r%EK3earzXVa5ksMu- z6&a1aF;X8VVO+h7k@S*1BKO;)@h59SPF5PB~tqEmI<0bRY zT({SSov6*sE&3Cm%c023Ei7{4#}zMUVawUYIoMnBWTI?|h9*f@S67PAiP$MyRoG+r zs<^ngi`I>Xkgr}8Pf>5>(4ZtN={ErN$mUaI;~dvV10lCg|$1G zg9K)cTl>A)`-g!OTNQpQU$b2{M}gN<9m!Ehlki#HAKAXS)IK#mJ&;=8Jk`!FBvfNi zA0gs>P!`g$?cdzYu8~qvUe2s|56QE|!XYQeS@cOOnm{?8f<@`t)vKgj%d!r%kmQ>b z%-1b;zG1h*R8>cgz~|PH`uqkKwUed1w{iVqAUF(;-bJ|>0%N#^IZlqp z2u(~&l94LDeLGj{H2y09d+5uo$$Ix3i)Nek{CEHbK`*Ufob=wH7U6A5O7r*c6Jle< z9Tp=z=H*0PPhQUQUqOCxeBeJaGTcOa5D=TKap44~6*x15U)*SHy4Xa|3);_a@_Qb2 z&il>Vm{?~P6%CGz-4{9XN|fJ)`N+0?bxll6WReY=tZnI;oXpn@O9HcVff}FJhicvz zd;bp1|CYc`GKfEwIwR}r>-R@;=jwdCX6sPLu^bT(gvFjbF~=U$S*MEl#(j;r>63o`QCBP_2@1UCUd4%xi0FzkK;(yPc(~M%>7j zzNuH!lxAlbS`odJz{3QP&4%h&+cZ|`hHOalk2UEKU!>Qc!3zK8VRi=AEyvhe9UYx( z$nL&#tK*q;i@uGarNcDwy0z6+_So*;-cO(Vc{mOEF)drD3Z1 z-WzUPDcd%_UDvy5YV|KXs*8a~bK9LslxSHRH=?4N*y)PS4Gz8z&;o7_X1%h>D1Dtl z!n@Kj`>WLFx3L@&KA6!BoRSBAltz|knB~BgBz{QJ_#J9$OJM()qrLu z$53adho_>Wd4?d9eYb-N>q|O6+|FF>OOiP9`dLt**9U_J$62VG#e|1fk!Kn<)+wcl zX&C4}prkVxYkPuofY#O-*85gCv)uUcnvb8~54#gjOwDZzViU4)W8;1r1abb%xf2c- zPl12D~tvC2@>to9C_J23p+o z+}T4ngpn}!dG+Z(b{7|t0<2{n4|k^B9x^iiYH~D(Kp<}D;0~oU3D0HiSoVHSJwEjD zTs^M&m#7<3v$Rk-L+TpiOKWSW@>f7#6$C@xzrQL*e9{2Xaw0x#ZT%_YVqKt_Fq)^* z(qV}MpwRo6?!@(vKMlV=Sk}|Mg)Ciu2=D=#ZbipfWb#0YIC_0(Y1(afv_LOcHT&xm zUOGH`M&JWLJO}U>MLfIm*|2B^LQ+zXy}hBKtd0isw$)tW zB;XhfiJJHKZ;HC@UR+>*NfCNsyKj&_AR;AIRCu#9w#9)`AZFEL*Q_kq-K;ZNfr9hq zY8;&An+OthbQF@j*I_>wyD$Luz7Uf)O6`ON>aI}{x8e=HoD31mlB#4ap%3<>?3E- zg8nB@goLyS0S`bo%zX)gUh9|HeL^{y?}r$vh*p=Vr&N2&^~9I-_jhfM?Vel?3NHrlygTk%6*Y~&3nwxC z-(S7(Xub3P^5}mBHhxcKxrchaLJEI?tC{K8@2)xegiYA^3}r5dS{#%>t@ui#DA#uW z-q#(%o2{zzCp=H;O3_=3aP1HLUZ~WRnMd&GVEJ1mxjb_UY8m^h=9eTro-$vY$hB&? z0$zVVWvUOay$o9rxw!sv>I43n!sR&3HMj7$x5t^Bd z@t$3b8J^(>er$EJaGa-!hF;OCt4v?HrL<#6YWG(~%B5L8<{C=K#@~DbFNm!S&znW} zv@5MwpAlT8Mz80QY7E?PK=?rdMXKfp98ujO#f`9iI~oM0{E)F$+`D2~DrG$*&*~Sd z`SN!DQCiw~zDux9_`pK{-Z@FP)Q4mW=y5ym*;ZWBNF{;l(+T z9IZJwgzYg+AaCK^ovU-17}uKB01tg-&YkUGiMm$mvtqa-V=MQ#({HsFIMz4Egz=bJT9)HBi)7 z*@}7`<-x)foYiA0cSS-Msn8DHAj?e-Vx4Wx>|JV$ckgMU6|A*0(77V$^c(+`T8{x7yo8a6`a$ zQgv)NLnd^u^x2qeBL*e7Go|tM5U;y3dAx+%s4}lSK-%$bd1T~%V7?ma2t{nuE6L9P z#C*3mQ8y_`B{I?oB*{?QX+i6&kGH}IKD@|OB^+v2S1FHaAUW-L;i<#+y^=q~~5@0r(z8@JqE>L{q9B-&ABV_;=4$;u4*Mn9Y9V9MA^ zMsUNEOHabJd-)3OVTA6*Rtaf%ct8kAXlU5hu|xfAQ^?bzqOWs#O&eFNkK5&bXbfQa zhpC_|eKNV5HbvZl1ISMOTU+Mmcd=)-AHbyD+-pUG4n%{1bQA=rS zYu*zzcWhx+AbMc(-t0(Y-WR%)1cOL6xJj~vaPay|%{KZ>_b#T-$8%^FkCyMqmYjpQ zCgQv+W-=pWn~JN)yvdfnk#bLxB$=-m`;X6czjs|>qR`4*Gui;sS?JE z5vCm$W@bHv(`y9Dmop5^&787Zf48Px5?w*eT9Y_m1HqxrAd-m4`EP{I)D)RID0jwZ|?8s ztXe!lwcOt`baZu?thAdoqUI)ITy_+WzlDeV1aM(^zhuv&I~0qYPucGx5?I8ZK4s(S zLKJ6inw#Ia0hc8UozwmrP0*d$U>Bp9_d)Ag?iv{@%Q}6%8UJJeKo{QfJ*-f@Ni8 z#-Mt#gvREkBL((;@zxqfA{V7YrU?6K0n@pLL<*MRpkUYa8J)3W`*(x;6-pY@;+{SR zS+1PY(o8-C1eVm)J_G?s*>9}-iC5fV&Hnz8^FC->WQnX&iaM-ri#Dv$aYHp%slKUV z*dP7tyGoXR!MHZetm{A~v_Zh0t^eznwSWF`vXD;)%UH;!MlbHJoN0aq8Bq|=<+6>L zgwRqLwh}WQAavGg@3nSxP&byT=UjSzbRcz2`Vs373YswUur&HgL;_zFUhge%68Z@>FsJWpg(9Im7_IBo*Uv5f$ z&f(O(cb_&@!d0Ho0W(qNN+(Kn%*DX>{+%tv>u_`Iw}|uBY1=O!Y#{jnK|o4Ms)qg5 zAAG_>B3yd)t{qM167_EOvo&Sw1O#akjXsC%-y_fLt~Gr9@}+B2A(@Ix&%(m^qGv|< zP|TtUl_B8np@6kI-j*R2b=x|&EinXC_Y+;VJ&C>j<6_OmS3Lr@hSPabXugrN2!2ja zriThoq9>y&Vwk5gs|&o5xw;bR);^n$mHMc5j?L1DeOS`VsLLGQbiE;7>opXzJbsR2 zfj&-2kBoGXlKMoxc#_d_C@!YSsdLbZOLys~p`igjYIkcXIxddcjF-tYORFI=vP{L> zTguo=a%1L+2=8KlQF6#Ja%-kY@1_E2GwsO8IPzFVsf1JS>x86$h(%LK$AQZhisaUu zgH_BuyO}V>aH|X=diTh6)nlBdo=ZmF|aKE z3;81^aRU_Z6XCYr-oo{;Y+lA6-#nMeb&**sWt&Oc4;>4ZP(=gcx1<3gB@zn892Ll`v zX4u+3dB$O|#>2;JgWYFo^70uT9)6ITI`1lgH#b}an9%owFJMI(`A@zc7r4r+AI&5_ zx8T%2`Kly{M_JOR=ZV6tH972t(ZW%>xvhb%qoXkm423I>wcDvPj8|Dp>b?cRs8=vran3`R!q@o*a=*t4hZPf^4o zzhu#Bl?Xs)p{3aN6`yXR8CqHjpVo0L7~MT`a!SgT3*!vI$m>5>F|i!Uh{99flg|n3 zd4u1-mktj8rr}N%9iN&#&xgbHxsXRX;~bYR&&1ROSV$FeFk?MzGmYnm;uELq+AI2b z<*RY>*$3&C*WjWE0Rga6_&j>wo2o^3$L_#4r%U>8ppvSsea`k4h%E;I%Ji1>e(57v z4XVtWFl*HMM272Z-Q=V&^+3wT$)qLJNy5PE*c~&0o5y|SsD$bH91RTz5mz`lnq+0g z7aQd2GEO3=|50oIR;-g-oK@kZX|dWQ?j^A`XF#|Bm^*{)w+wEJA$%`L?oLfHT_=OS zvjUN$f2#cz>hn{uM&f%2UK^;P4?|kvow5GLyuS={@Kj#0bpfqAg$K*w8U53 zYnje$DVz>9J2NUm_G7!;&H2G_b$Ujbv8S%5`HhhKPHT%Y#y?h+Su z6FWZK+8-N#)y~WkL61Tos=c>rYkkSRe^gmsriotmFJBx;6&*;G@Yy}G8k4Kl_dVQS zxUw zr-wQ2?lH<>uf_-iUq{r3mcNR(nW@fhDWAgUyQywUVd^q|CC241fZo5euDc4Lk)I&qkp_&86-wwiGPihzH{jV#U03+UM{D^?9^v!2J!`I;I4 z{jN;Ya)0zq`)N}r{`|R?yBosVP=!7+^Xydjc>l-DZ-f+>95D3U8i?*zPx#g4W67lK z0>*y7Y=f@StCoMM?q*3My({PKKyy)c=GvbEFXu$Hb_?iovQwcR93=jkG0rVF84i>+ z?aOePf49STiQVyJw4(5ZWZ6WJeGT`s?@BqlMfz?29BO`R_)p27{*10gMfGC)7ya}& zea4qQ9EtW?LD!XVe{;$P+9&t@gUAzw7uO(@1$Jx8P0(@N(DyIKF8s`Vqv{`y|0;d< z`eQ!eY1Y!`&n(0*F~nnq4DV~b_IpmJGWJq)O#VWHKkT|@%IPJ!j@O`veEcs_kTN1> z!s%aC3)YDLc|8!{7}zTfPdVA&&R*t(Kg0@bblyG3zxN_B3!<}!GrpX=wqO72Qo{eS zf=h`b8d22J)U;WA1<(J^LpAo;YrCJ{a-($d{wQouRqZSfWdTn#q@vQ#rO_du_BbBw zUVtY>tL?8P*N)dBz7L48I=vh7pJfU9lP1*djo|kj*(eWWCr)}4OHd2(-xGtmCa}s7n-svGVrvvDK3 z2Xr^cXsM`a$9I-o>wU;{boD43ReVOSjedJFh}T{4Kbmu}Mp18DwehVEyJf3we|P$6GQm_evp&kg>P7??Gxx z1cQkB(JPnUJFFZ+1h;-P44)&%x7IuJ)&>G}D}B$CxB#mJY7S$rQr->uwTZ#O?V?;1 ztQ{!^`T|9I@sVjNUBCX}ig)V5+v7?|NLaRIVQ$saR%Zpba@W>YHHj)RkQwXgCMETa zpr^Wov)5u&K-F+X``wFX;ARQZ#p%QyRL3@p?fH(ov*l7Hb};>K3FdA{zX~HFA_Um^ z3xMvS6E)n}Bj2t0Z@_={CGvxK7*Fl5_cqBF-&-^a1MB&vx>oqnzQ=>643jx=kw0EHI3zdHU4~C61sGoQE_~O*U z#H1V~?4}{4wv(k7@wHBA5*}hc$0^mKqu05)$J)aRwBS2qJ=i^CTH540oK&o6;IRud zN`}f6lE($0%d7MD+V6aVkidAMw~hc(!eC~&G&8o^96GeJ<4fGkMqiPpR6&;hhP zbq1f0ouL)f6t~*ue9Zj#Rba?kV@%Hqug;s%8x7n5-R(B|U_U*PgTW|E?9|K3VEnuS zL?q{yJWk3l{6itAOu;xrrGNQnJg`Zos=gAmuQ_xX@3sKSNYA6 z@zWc}xr|7OZ|antRAcN&k}BT=;Q9eIyaJ>Jhn55S^=De}H1Pw{a)*v^jGdiz>J4Sr zNl_8fjp>2GiD%-RjpYF?-)avHv21FrcRR@Fe2@P4nn*3CrHayHPf;hE5GK>;XxRu1 z_LQx%(!?Y)-rZAoQoF#*@rBMlP_3;grc1bCDmSzBx!|WK4j;n+!X>#y5|DOHsJ`ag zJwdzvqYaQAM%*GxZ(NTj(u|Y(oGExE>Iuho$5h^tY6%EpG2)kigoI>gu(qO(82_hY zzIuOxkk#2}emisfX7M%Ft*0(Tb}WCR+)DG@Y&~Qwe@nFp3eN4u|BnEch`4#?D)D7R z{6AL1uguH)PYpjxd9u9OB2hK}DTqjyKdiP-KmL~~4L(`$bbykJ%*(d+)~45TJ*=ex z#l=-YwfV5@TB!_;Ui4qG^iL6B!dLXj`g?mlkA#|ACkB7ds4FSuHcRB^Z}60HFH%J5 z7l=fC1X#|^Zl;0q!GkGOML#Iv|E)WvRP(zh-fh2P2B#~NZa22%9@j$wFG2y76YfJlNJ8G zg@r&%lp%fHXDWLHLz1kNB4lo9NlQgFmnky>ehufd9^aMp@gdWj)(*NF(tnV!xu_}w zqjg2kZFC{-a|NiaU!tY+BgL+w$3e!WKHr*?96xiQmZDp+DoW1h&r#D_R;!RIZ z0zu^9IJy+m?MOuyc)w!;ul$8zr3XpAL z5IGqAA}#fqjFvxz*SrB5Q6;74<8-CFI1G++!2OaQJB}?F7Z)F&uk&~VRJ2A5msQzW z(dt#CnBT9Ge#P)CS(4DOFvwi_Y(7Ou;a}=7hwaLyR$=nH>}>P9RR^a}JUvB%3?82u zMs=BOa^Zjf3Wlf!)#gF22ohj~LBV=zVq$9Ifv9V_(Y&E`5h?3DSbbY#XOl> zb6Kg+U_~GhjzDrxPfsqcejq*SlU$xT4dsVuYMt+m78@k9D5agAo)R(}8Iytw0?`WD&nqIbrTF)3$f9=-VN!4GLO)qAGr{J{P=ODJ?@tsiNyDw6;W5uhz zi_91t##kXLkG_2a71N-gAg#jp=uTu=S=oO7PI6J<(?fPZ13wV-{hHQf=&UZEEWn99 zx_C=?n;LC0b(G$p3TKV!-kBDho}4Ew7n!L0n(Jr!=qL zB#_3OE^k!m(5pcZdBq6H=gNrepFg)}z1|J~EQ28Ilwr$7wt_A+Z=r{C_njJMPr+J!P(H4)8GDwXj}Q1H;}tVWkVUbTdd z)sl+qY^Q^b0!Tj!JSX!ar#}USg8Ei(Uth6)BO+6#;w)8Ky5$Z<^nou9=*Vhte~gD{ z<=iY@OsX0Zd;lar2ECOEbl!ciIWkFa^sgH(l6hLyCNlM1(d}*R?flj=P(Pf+JPEz~ z79v&ApiU`K>>pWKY&PR{3`UYWVYYMD7MN@Vy(o`!=R?NU#rZfOt4pWurIPw~kN=|j z2}jO_P?=h;66p#3)GmxoP_VkkQXJIsh1~Z9Jz^h7IEsmiV%JVV+V2RIYbDlvJp5_T zy@FNqw@=ND7}5z^d{2s-nYb@(6EiXvey6X^)E>IQ@dHW>gsZ!q43ZI?*yD4I&Wm?; zis6`x<`<`XTZ=2eIHJE?LFl_9C#SRJWL@rFYmjV@U_fo_G-n#csTaPdrll49;Rk9l zVGWJ9Z$|=3g-+Bv#qTxHzsGYL(UFrcufI=^i^~BbSMqe$KtjS>Nqpv>p1Q#~Iqib; zM@1SH!6M98V^n0r>4Es&@FG20Umtpl;n)DHB;oR*l#Gy2%+<{A;)45<6m@pK(D`EZ z?j8Aq2dYQyswwxCS7XN4@X*L{J;DsIH|>9<1JS58(3+|j?Ut5Rb$9hsNvRj<$`D2- zB%B}_5eUt&nORj;)zv@cBuqdmR{IVA6A6%`^GlRpU0x<{pUq7wgGMByrhilQB~wilH8XXzx9!aP?IDV$ft(s8`TZua zAj!wf%&uD(E--5@hxMh4NVibHSs{+j zv94oz3)VI^M?IMyZgvL6?~KcA+BP%K#qrqcywG#|ODwZ9Nn?d8h%zTZ#+L-uIn-Q+ znmYz?Up3rC}nLI5rzq1KRCZ;UkbFw>k z?zH^IxpixSWUS)#!vO}pYV`VKy#;4=5^UxXQx*u8o4}9oKCh^(ybC3T>KTJneT}57 zqJm#Q!1H3ht#=^p8qhv80*YEf=Ep6zczhwQ-5{X!*=zvHphzmmyFz9;9Wz`8B4Z^+ zN`z(h=_UGHxaDY9YOb@xYnbJ(5jv4dzn#cxS3PlkHL-kqL?8;n-4~Ykmu>+4ZRrLYCiOX>$&03rUzsyZfQP3H z=7CGEzuo`=F%popZo55x2B2>v7Nnup11>-;pYFPG@4-BKGad z`33E3PLlmoS~s1AeDzMiTO~G-@ZRqXhi|*zr`xupDGN+tZkp{6HrmD z9z&v8&8xZ8_?}w?5m6l<#}1?jYZZiJmpU#SYa6g@1_SAE*1*qSzW5v* zS;hC$fv~%KpI}p+EB=Ms_TWWC(X`~oAWVfxP>o{AcG`7wYXf_FDl6M@a(XK1gL%re z+qS^e0a{gHYf21^fdfqhmn21`2Z+QV0-ZWQWmO#yVmZcr?}@ngt}i?nUsX)ur6wMN@prnKx_bYAm$p*AG z*u83KBO2Cv^$2wpTg#u8M2r9+X+&7;AL-+Es?Wy^9_~qeaCAI7=<$8k9&BZ`p%_jI zf0~pla!z~ucC9r^L<3xc7CCj=QDKQs&86Sp-90=qHr>#+Rl+fznPr-inwld|&l32I zhez1?WW7b!mx!|{Z+%^XRvdVsF>&D^g`GHuL4a7FKL;wcdxLPdckc%GZkvXE`*wvO z08yfst<3u1!FJfUTj>%cdAeif-OCQq%u4AX#%ODwlxM^9(o|G|rz2Wx8#6V4ywqT_&%_d?idX|?FjpTXjE7fm-t|53Ks?jcj=zJmm76O+PSUH=29 zHvWmn>p*384lU1fk(NyKrS5poe%fvO;)kJu);RQ1rrYtA(*ODM3VLx;@HFMmp0jO> zf!lb>>w9~9XF@b&gQN=XW&h11_Kv}+8ux`B@iH@WNpNyzHIvrWO;K4eBQ&Xg8eJwo z{xp<=|K=#UVtP6r{!3w;^FPl~{&%nNZxVCeBc@Ic4CIBdg%L>1T>mC!CYM9|uT9MU zKPvM*b|5f3m|QE^We3B+2P&8RT^hU}+P{Cd=vAJb%*{eXM5ZJaQ4^IOkU6eI`Qtxx zB&McJFe<_rEui|XSUWr0)_Gx}si~_wHOLqsu`_IS9^A*Gm;xlbB*et_z(avw8_~cZ z==7$hkRsbcsZY|D9`Y^@`HuqMPvpq}wJB6ux*CJ^cFi}HdXX3x9X(PuvKGw}W;S~ZG_W;ppOl;|^YT?+s`v||{iDO9-#&kS@a%^Y*41`C@Amhn3YR^q zZTzOIDFCjFRRKJdP0T_$Ma0+|O1<9`SHygN#oo4SIJT~?4rpmfNlAzt&EJVAz?I% ziM)nmvU(XsO~Ux*sCfQiMD}T!vV9$MUtDWfB!WFo-i;iEiE+k5UBPJ$%Nf5O!|_>G$h49 z@5^dew56}_g%n|sR0ihV)YJrs(D_zUFD5Ce=y%u96T{`7HnVX{EC>NjBA_{4SYH2w z#PRv9&CKW{#l4aR?SYU&P|zuV(fdzxMy4Rt>g$U{(2t-T{;!PThy8rXq3(g^XLB<% z!&*nsu1YqhMW?*`?{vXwjq6gRP+Jk5Mg9m^n?=2U(_?;IBj#6R2JF&{(pTSC>&lj^J?DJQ&e!TP)3|rB)vKI zD@gqR;YouUcVS$jo|+m3<4aG^x=nLO$FH@uI+s)D_^+ws0^N&9p!~M8>$65UZcWrC zlV^U^8zIJ>zisqA&$&4FDyV<;V`jS4L2k~qA}4I+z^_T5P!G-~Dr$LFqf$bDaZ=_7 zS^&>63?LB?4hmU=^{hDRfC!3r2i1Yt5%)YU*6Aq%xURD^4;d1UvF-ZW+xwK0GYA^6 zsj2P3s7YvSX$b*v^9&w&0@xy;`UEFf5&7Z| zWLmHtiMm`CXeYL@)i$_!cN}P!M=r3b*aIW2=_*^$d{H*#WB_`-a}7kU-w3&SBjlxQ z2O(pBTKzN6-j~^`9)N8DI|LdVCl_C|34B0gq%okfA|gsQg_P2-y?ptKA2Ri_=s7|6 zcd)R~3t>^;uMSSL|Iq@R`3D7^p4HL^G|~N8)x_=2qt)q(jo>;NpMn~FRzSPy7<38D z%Vl-_!ebnyWT3ikVv;Tf2r#D*VC!D({vr+}&-@+Vpk7msxxVtuA^$x!rHgt`r8Iz= z_nkJHy>$7L?&+9aZf`0${HP_j>w=v=m)i40qN6_lv=#5%V zNKg>B9wsz4Hk&+iJoJ9X`BGK~ z!SCkyOXez*+RT?>13X;}3<{w27BcL+bO zPH0sPWr!}w}d`TZiv8&*PfBs4l zr9L@*E`0oS%@gfWEw@I>@XZ~Uo9=e)s^Z1gZ#FWwEQY)98j1}Yn?Q2;m5Xa=hzGnU z;l9}VY$go@dZW+-yt&|cjuO`)6hA9NH6O4b52&b$hpaW&$JSL^yc&jV591h)k&^2R z3-k=>$`ux2iRto@J-B%~jgW{3)1}50xw#<2SOzB>`M^@iA3f%?xj1VBj3&s^4p)72 z#|Fkfv|Rbt4%-q8XAnIdk~O_$K)AQaI&^pa=kloTSSX6Px21#7yTKn#83lL`1Id%C&ju^4OeN>pr9Kl;+OR0z zGg4n-au%7THY&26zo3*>C%G3L8ed#fBeYTN5LL(ewS(yVy`mAcrZ64|p9CmM{$+TJ*G-VwWxL|Zx4GfW}$tcQ* z(dVxEe`N8aLE`rKjc&Q~%8e|E2bj6ek|smkYeATZC1U%O!I#f?c=aSUGcIk&s|K zy9fxUo1&h{F0YO+DH+I?(+VW_yEu)HP%=;No&ztzINtj(J`ht?UheGXR`0S^^|AeG zjA+H`)4c*sx1)spqN&P~`5#t$8x@%2vm-CiGUbLLO*-9}5%g^EStyYUE~b9wsCx5i zdZYf^)byv^+$AbYnxK;-=J7^%EW~9?aL5`K_4t~v*b@$ptuEx-C_c~L6D5oO$j5K8 zhDM=>!@!k4elt~WuJ>VY@{?@-{ErP#%y{xf#QQ`WP+X`m2Bn0$_xp}-qSV=8^_FAn z2?<_|8R@+#(ed#tZ-yCekix9S0qLt%)Ss_cQg#u2=u_q1_BnFtXj-qzCiL@XF~?>1 zdae59)z!CAm9|)=5;r908&&NIAGZN0P1vibpQprB@Ka4cpAh_jIis5Q8;6+tSGfIG zIgQSN-l9uQ^1hf^Yo`i>%&S+FW7^8j^1XpyMjpSR5#{=D@u}@Pl{JxQn4l*ez3{3@EH zJ9ba$3~lF8$*}pj1tEV&(3L{2gxthPGOzVxZPvY*P&>e|9Z*v)Z=wLTk%udAL~U}* zhFx?HqOP>}v6kQgK3uR4-sCp#%h=j9kL&CixppIc$Os9ms`5Rkm-=kjICtWM`{zwm zIGv=Go!!N>J&>>Z88m>`S44M2JPyoL$VIyl}aC?rexAabAQc9{Y7`H(3~ zk{~2gnH8WYYXsC`wKx5mD6R?jVw@}WXxazcw6d_^`{$i9D3?$Y1(7epw5AQ3y!ja! zRpx(z?1NCH+AbBe<@tncjzP0?vSSegcb`d#q!#P)!`nhvZRaZcM@CG0Cz>;9h;_@& zR+isH2wY)}$qHyWwoOL(RwDfvFIJH)C1?^DOYqMHY zFqM3D>Wez(vy*(CbVZ!)01|XW9v@R42_NQz_E^k8EW~mkbsR3Qs95W|)1F(gx}g;h zt0+(|b@B!}h}2Zy>EFMlGL!-LtC9Dvz`m@annLO^^OM-^8w3gDEG)9mEBxq-5&3FZ z;EdOn-xJyP&aX88`T<^vQ&*?Sr`+YQaQ~CW}2&*+hbo{R_0NSo2C`8 zW1Bc_{?*douZZzTzCdjWi~K+BeFs#OX_qEQs{|1YND>hx2@)h{T2yF)ph(V$fMm&; zLIp(;kt`x0A|Mn=axN4B$s$QYQRJMVC_;t3*#AGXGk@qNg(25&ewGzm0}vgcx)(K(?+?$J#~K?$dgqPp((c6?M@rBR-q z;xpB*A77O6^icQ>^(&t~$s}v0-TK(O@bhN{xY-hxZ;@RrCPh9rttN`PKloYL4Q^#8 z=p(_3cl<1+h=*OUt7t!ey;2yMD+5uU{t1F?U~j$W;*$D0_MVm1oe^(;FOubOB%4eP zm_7ze)w4{i5e|dz6X_?uwu}YWw=|}{nbz+1{koRsD}yd)l{h%5oY*{e?tgyP3OnL& znhL%PCG->60a=&9DgjYZQ4%^oSvE!9+l=J22N0;4^OknwbHT3pW{R4fBXz^8(6sKk zFASBkf_V=l7I2MHhf)j7{G{%i-}*lK?p^J&xx)Z1Ss}H+(0R_4YEG*jNh&EdI66Ue zNG)awQeUtWsNpKza7e}}u^%*{?5_5vqoHvp;Aaa9*T%+*jqRaMW zOo8-_7c{)3V@1qf*0JaZn60F=)YZ%89QQ3wMMVhqI66G2e=EB;s7^Otz?3(nu%ra4 zwhH46HAwn8cW$L8>*i&j_`U*t@0l0bR!v7BdukLxf5p3#XV0H;AgI=66yNB-y%HJr z!lZiJ{aWNPUKJ=hUneA#JK$2hoQ&BOg8&)bp6fovU~01EE*L`J@Pw9G;;se-X%EOE z+)5~ZcQ(|fA(9sTI*TW*`v*IV;9*Rmg2^kuDe-m)_uAO)@g3MA&0gl$CJ{ zgXr&};QZ3&qOL!2+f^x=&%au+IptSb9{c1Znqp~Y;cYxo_yV7xtg)$1>XM`9bsZBU zqbJ5(E6%@Uqf8pl^2um8#8{k60<^W&-l)ahxqmd{$B)LA&w0_|p`pHMY`!xw{&o&5E%QRUCnjDKzz{wCi1Kj}IC;U#RI2$GSV!=AtJ`TKzYwLWZD$4j8Z zlv`Chk@1(7_IE=o>R)o)|0_MuKfM3nl0g2tZ5mS*G^@fdy6hi2$hhcws1eP1Z2%t3 zE%Yt6>E-6nO#pk-19HO8k4FV^)?HIO-`GM3mDS$VLCMd;7iSNv#?o?}B~LFyJK~&p zO*1Q6!e!SI@+Dx&fpHeXk6!P#oUX)^0#k!_zI~!)mGJlTyMF!p%X8xRKK)@T4!CV+ zy3Cg*CeEHZ2$9IrB?Qn)Uar4yQXMq8^C^ZsP^<|SiO_M;Ykx1}Dh^PwNd}hd zW$W0N4rO)>_hsMNTvn*v^uC?lm)`svzG(9(X%7q6W2Aue-9f(-_N9ok*zqri-QS2i z1@O*&gEH)#!dEWqG1M|?@>c4oJgw>BH6=^<bw$VXs*7j!Jg^-W8K6_1stltn< zP|E5FT<;s&UN*mSy)XDmrO*8H@bH+R;pXP*J6Xp;lCDVn1L6@mK+M4J@89_K>zNTQ zZf*&Feq>R3IsKP`ay96OG#p2uNL_iVc>hO56#aWBOu+M8?YbEcr7}~@t5@Ic`*K*S zsK-K;$c|X#cD^NSW;~&N-m?=HfpJ>Klt=z(%@IRVnEm#jS)w~@JcQ3SF)`8bXwsV5&fEAGSu;|)mQ-q+APh)~0+G=NJQ-8^9)J_1k;u$tBCD4 zi+jLT*VNWxhX?X8uO$NeC%E_@A7>Z$Fb(boXiHd+NW>~#YuFm54mC-;^*Zs=K?!NS zh?7+?uBmaZZSq_cAI0rIq-B*v$&SfW#L+Q5d^BF>i9EBH~U3%PpbDo}z2->F8(zKVq9beemreQuF70Q`!0Qr?jl-TH}FBF%+_1 zJ{{jZ$(19?j@28`29#rfl!2-SyZP0q>^>M=sGa0oMWoI@DB@K8cUCQhM4=6QaqjK( zC*$Kds2oD*fm%(o9ET{Y9OJCA0+%=%MxZJ*Q;y}EB4;joAE)s7x=X{jxr)81s;bME z7eaq{R*c+7;_{=z^#*@^v>O=sJXkZ#(_8$ne89h9sK-zK;y4a0B;C zT&chvl+CBBnZ_2YrVfCkq`oakjZU8XrTh)H<&NQ;PxS7;UsAsMME0lt16Qw-vNFCB zEw3_}OVZ*31j{^@x`Xtp7oGp=@@JnsJQns*ibFN77M*IG6J*kN{Bl4IPj6t?W~*;`Rn=PmjDnM=BCd?ySe+6J*O=K!Bth5bz~;kcLmE5SDwk zX?6css!3X-ixwj~e0?>$;jr_I8|A5Gu*lo{L`qgM_$^GM+S}WgNGtxjIXdwz)39F` z+je|hnB@5Q_bKRMrIhqY9V4;k z&{|ThpGNAH{mKBHQv0B5Pmh6Umv_rlODhs0@0Nyf&F<3ulR*S03~-?k!4-vh-!m=Y zGJ0>XM0M}2qMu`Zs%>P#kM4(z^-r+o;`a^AQOiqHpxhAiRR&}?Q{yhUs4N?a z1EzI%PK4YF41x)28E!v51b_QB2mJ=@xF1{)_};dx?)yU}cGAAu@8~DOg$7=-G5T1L z3ZgmxqVy=~qNh02nk|Gf7|b=aB5dyjt1b_folwd(!QSxmQ})?;tmJLDHMjw14*6s= zH&0fH-N5?XIKkOD?m5PwY?7ii>ZHJ<3;@E#H+N4Q@WyCPeEXE!jTXhP4QN6-oeDrX zJX^jS)m+_3TU_=XZUaNYzG%s(PrFiU7YSvlsV=Yws|t2g2+8r-^3ZvE6BO0eX;h;h zX{Fj7oTEyD36QxmJ|K^eqLr)ug|6a72V4IvclMT5G;1GKLp*6MY1D$?_4o)Dw1wF{ z^B~LhRK#D6X^IG;cN#9KbDtfBf~Pe=?04xth=}b>9$M7;_$};X=1rDGt%LsR+7UWl zkA#|CZuIr{tPCW-q8+1SjWt8t_AviAo!`gT*#tNzI8Gxzh+ZR_Z` zsiqc`-aK63=@a-f?2425yd2=9AYu(HkB#jGxWQ>(ZMJM#=0@{ZY7WpW@Msb4ZNzFR zP`?&){jmkdYHTm4jgOSu4Syn4Uo-csoaQg^jEK~tR|5R!#W~TSFJJ8dzmpD{&~a^w zQ*506`fN64E18=LVhv8dwR6xB{MU@`xBK2?YisM{2O%>#XWdyul}gC&=Wiwa0`MNrjH{Utq(yeVZiMY3blF3~e-F``uN@ zqg{khrNN=0{*SlO{r%gM^$3?wuUhV{*7O*omM13gdyC0-V7^2sfN zC~#C|e|J+s-gPP1fos4Vf#we}__X1ks8I%mi8wNT=Drxeejo@4AZC+M5~ns??o{Q& z@w2JPuPX%;N)Ps`>|1GHHmt)lZzfAASVSwQU+Vm>my5?ooO8j{fWBlTv1`BiNR8BK zx7{jFR&LEV3IL8*VOibX#M~kPGg(x9lg_)W?v zgb`eY%*;#%)F-i{fh6^g3% zr4C7d5T|RCw7FqlS(?@7g3M@2*RkJU1-;Dpg=Dfx(d!gunFto>mD;=6=g?0;>kXFV zQ%XDg1L|sOb&MyC-d+tnyE8s2uSmxxQ|LZmw#)dQT<*PAs-$GVKDH=>M*p&T0POgO zX&7lZ02FwQ>|hhV|MNqOD8P}Hc81^fyvUxnbbq$oFT3f0GMt>4kaO6^+lksRcrM5b za&m5cF=ylnz<1#~qjzvG&#kPGQj|PfN=cu8eO&S*K#6`F;)&-92Qhzkc}e-j6%$1H>Ec z16tYfMxHdSEHr=0?TY98$Zf#{Ab(8orer<$?CjR{R?UtcKi7{LE4jOCtLTU>^k{hm z zFx27DVF2RDm{pvf{+M1Vk2qTb8D?%?UVK4T*|dj*4+$xeLB{m@7Oz{NooqEV+HAGR zeYSw^!Uc#qG-~hCP**RQ(woAc8hFkidQJhKW$Rbv(0GCL1#lh&(z~nD-KH~H)V<3^ z5qizVmS$R78ZA}T7KEL%O%u-J_uI~xx+D~+n%Pm7L;!F*-bh^9tO{mqeiC84QEpsr zpO$(9o0?^&q%;wmEegR^6Vub#F4@NAUK)UmkhWNpy z<>d<((zk@*&|L(%2fpbCGr7gt7YYze88ivm*dWyWVNM-HeqF#>jOF1uxCsw*M zZb97ENVwJ?5I^I)-gZQz^+`n1rjRllO6|0+ozO9Dg(Xy-yY7+wtIQ} zc)Ci&AF4Oy83MR3h%Dek!?(S>BwdJ3*47Mcr&yVUo%@##1ON8E&pt0NuNfi6eR0w< zNQ;$qakzZ-Yf}?24_e70&;;A%4SB3>ZswVzR(f05882I4>J;-a6^SV+>jXMkXF{Ou z_j)26@DOnC$vX!*m!5ZR6^Fi zMeoyoHEX52Kl%kQGv>jE){en;4T)fmw&qtewD))Q49h$$Z)chPy(RIVnp=m;&~vq$ zhjh(rb*MYnZnD(8AW;&ro>IGi@xsM{e8R{(xUk8|vfkc{{e$gG7*so#su6IF=xUBV zl~kPqJ-HuZBw6TfAmwl$L%2Ye~>Vc)tZ*N3Td{^`8%74BOf$3K|A<5W8xj5bLIJ%IA{Mr&JS_(Du_ z9?<{l>TM5@Q`*s1@=5Gvq^%iaLg~;5$wXU7P>=|l8{neEb(Ag3fu>?wg%sp6kfYo1 zU6-sW4?a#PJxhdypu(j~TsJdXFO@vjwws@r8q;e5lR*vV(OBZV=j9fzUVoH!pgIjcv6;PObiZ07`h$qjFB4#JQPb%^ zv()|?U4(!1&z;!c8^eG5`~OWA``0f~9|OPZ-2u!ta}~@NNufyORDF_9PL|U6U#Kn7 z(~FN>iu>!vM=HHR^ew_pdrMQ?X{Z7Yj=fWSA{TP(Vw(1P_<%}z^_hYi%_St{ zGAmRK^CK>WJn-_$G0R(kC`H)UXRiI$dg739FyqsMy1C^Zspddc@b4&`>A!#^9*tfG z-%N(Ng2h=AQ+^|3{;3Lj<( z{-phFda>VWXLr_=FD~cm<2~qDpvCmbFda6>EjbJpRnjXV`!ch#SgSPZ!*0HnQn-9M z0E$pEvlQTJpdY;j{91}%=t|H+Zz7yvCzU``3=R8qIYbA;Lm=wOCh1wuS9>$(xT zQsBr@3d8rb_V-JOh~&U0k*0iC^9z&<+^ZSP>Pk`y1CX%rM0z^d&pQ(el zti1s(ASpTUW20O58rkX8Kbi0Cm0=QA64MDKStq($T_MSQE*rN~2QD&Tpeu0YsaPSd zzd@C!?STnjrDM~<6L+(;KfA+w2ix5RL_8g6g8#j`?SN1g@>!6Fj8eP37lX!<2uKa( z4|(9>p@Zz*T?Ir}T2?wvcQ@Ge4^>qv5QhK!j*?1dV`B@Ux5p}G>Dt)D7Z=|-Xkh4r zPe8Jyu-<{86YP4^MRB4$k$7EZ1YVjzqYmA!DyE|FTeh25a^?q z-3JOBkSqxzuaY&5SKq|Y`IMVqkp%(+s@)rS7ZG;(lmQ}CyuLRWWU zGDuimEzz$0 za%5yakNyRRn5h~4A-MjMyG_@F2ZfRz0>Pgy{8C#gTkO9~HMjryPA`uIG<(8#|IUV4 zoVa{&k_P|BA6)RR+@EtlN}jvU8S8Yw2*MeAR3Xlk#wh_*Ml+4S{^nNy>p!FY|KFbQ ze?MU@^u7?pfkRbt({{`GCk}P6yQ6OqDv^-pUzNyMVhg9L-%PSN%kpyd`0;H9lecV8 zyizYi9i*wIc~c!>fP5mv3^LMm_w^ssfODD2SF={plaZhz^D0#wzUgx_Gj_b z_7WkmiO0P^*Jy76xg0NO3?a|Us}eymBxe9(=!S#dihAER_;!<@zirlk?#^f1GnY*^ zTKS!_G>JRAK_bCCVb3C*hVwTg92mEFu+QUCpN53w=-7jf<01JZ_4Z%miVhWD9&Tu6 zXm=!`q%L1JN$<vuv;dL@+Gu8$1cM zXD`cfJ;uff2FPr&y%BTX8ZJ5IWb%{udhKGl<%XnC1y<85Z50yB?jf9#IG^Y-_ zLj9PRf||#n=uNmuwz95V4$8Ut^5GI^LlFKyT7{7Qx~+sbgY$?r}^<++CG%60*8 zU3NVB@k>jNgl$Ofhm0;#Poy!I>cY@+2LvR0EDv2mWhtk_I51E;JyZ%4sxy%Vc;q1g z#ghNvU5#<+o;n2B+iCxP@16&c`p|NpR05@YP_frFM@Ppd*wR+tYa<~DV8?ov4pcs- zH6E4bq_lzjw~$-ZktCid;q<;PGNaL*c!)*V3xJ%cloS9x&ZDdwnmQ5$O-He9UWpnK zlQGia3dVI7#N0>KKob$G9^}-ki*kH@-xUucD_SN+32Et!o7FE>=vKYmkvjLS24B+g zs;HGv#>2|&ZJ$*!Fg9lJjCo)OaMNA{jD1p2u;wS3k_iP<9DQ6D1Qg)iTN}`(isDxPSg+7HU2cdXpVm}m{45enbt+3WdP`We_)*?6z+3l3 z1|J_iks2T~&^R~<*^rl{4M_~xx0N(-eq%RtAppMAYZ+2+x_A(sZ@NHxCv=@V!PwA9 z&`=I#F{?8AW8R~7bV(l-g!bp)Kv#PPPN4);qv1YdILVUP(k}0)PYm2mjg5w=u5ki54R3>vOCr7SO*H?NlF1f@5< zSRE*jR0vIxa#e$i;ZRUET;vINuC%oE&$TNEd>s-F4ah4{blm^+z3WqX@$e2hoj5UBUN3G2(rEB z>|AGqEh4ADxb)6t05#}5SfZ&YDhiU=OFcF@y3#f_&vB!yIt9+j2f$*inSUv|OV&G* zS^mHvf$XN{fawA>M=U~>uJ|tSR1TR$DEBO51z~p64^nG!(VneeW?r5Xpdx7zM_5kX z5@d29>(9Cglqaik($>}%2(MudmJ1s1bej-)R(@rE{y-GPgLoNU>~3VV2NLchHN&_l zhC?7eVE0u|yLIgBPc6#vIg3<)7QXSY%X_`|E#?M4SK6)KT;0j`L`ACl`b|$5HbA2u zK2+*(rp8W=J=E0xC!*+&TPE!#x!883AZAz4T&W$1 zjeq98ZDCAUfhp?B{k65p=HpT_QcFXXH!>YH_3QUOc6H zS|`Wr>^{FPEGUzNyR{3;`Si`NOYY zy*BvV4{{1)$`h%t&WC^}_OgA#&Q3`4s+1qz9UQ8tT|X>1w-PR!irY=>+`jm9);kEF z_u<17Y>f_+EElNu;EZXXiR}znr!45KCx8t_FpsUVq=k4Kf z3)#1~4EZlgF5(&*8gCS=w);CU3Pta^gOz-JDiFdG1fT-4dlXDdEIMO^4zWx5027jJ zRGOni391ud+X2G;flDsmkQH+o?Ja%ZHs525@vZhwjHP4Z0tYJyo3zn z6;h=(*T8l`t=pQ#t2z{j>&rpUdGDY`mId*p+^9j>HS$)*^ken1h+XVjlvOoiP%z|s z*8_Oo0H%9(N@wTNvV{w2N8?+wq6%eqhI_LhsQ;)HHdlgiqf341@alMCWKF3>x3-H= zm+C1BB_*YDC&ZR3_|&#RjRsxBZjB1v@01(>C7(F$@xgVnUnxxPk{0E<+oYbuK#&=% z>u+Iy1g64vS>^#vGmVY%FYkv*U3e_7XGn!+D` z=RNi9N*^gx2j=%2=p>(4;gb;YFso2l4j%*v0{sO60eMJ~aGg|!0}1STS{PBW%W{GW zX`aY0j8RA4;g+9t?5Wt=-jjpDlx-DPE{4)KN2cb^VzyvkR|*3W{DOZ@pEMNffP|h; zXu~X^0Tk|03WIh2>ihQtuBoK^`(uh@Eg zozBVbu~`}Ru5W9*Xq>UPo@FX1CW`%#kp@ z-jyh2i3iVxyx&p?kiVjSAxMWt{No`5W5tdBdU67{*6!5KvpadlrQbR_&~=lxP;$W# z1wcT}0Nw$()@8J&uTovh#ihW$56>MWS9kXY<748_V8-XfD89Yrv!%+E<1;fb8F3vL zCl^BCenTYpeX$`xsSkJrQmFSYLB;=!Ub_E@URpIoQ1A}?Bj}k%e?dZGWj47Qni^JS z=2D-QR-2pVLDO+%yS9b|KTq4v*D^Ma?-CMb2}e)3&jx6NS_rNr0dW=&@F|V^X2{pC zH(60Y*@Xf5l75Q7pQL#(~-(c^QoOG{f22M^5`P;gdF0pEe{;*#q@?#mHgqInf8?NF$;0h6-PMhELFU1M4gvTo zfpk4ubI>g)?f==d3;{%nWtRF2Kr?jfm$E_lUGx!)U(bE<=(fTUs)L8YSvUSeWSBQ< z*Uw)_bNtizHYUCHUkJ;DtHAwvNzs35>b|=eOR^@~cl8+WzUlal%SmotTEi6qeS-|fbzG4q2a>`$_2Z3A&XJR7cR)uP8d$0?rf>_bc-F;f5G9qF_ zaX(?oKx;AE-v1Scf>f^j=_vgwafZx0*1J{5XB51w5mQ;GSk7FcY8h<#++<{TdujFb zF?D1|N2@kh<_EqhHx!@Q6TzeKX1{0qYm;@hYEyAs7Epg<>*iLX^oN8*zt-Gl%}Z>_ z^E<|isbX1HYPjcHF)vp*WU((p(_WgLO|y)$nXyqA1)JRzvwT=s_xuJvprsyOubw9V z8*`bo^pKpYpWw6JA3x-@qCx!2e0I@}VC#fI_c99;s5u^4eOPr~IA%~E!^NHPhZ2(u z%&~%6^!xNQe9v;wk&=;RAm?CNzfQW8GGN)>(cUZlrbrsDu$z2qWiKhOPb^EM;ZWeZGD4&x>At3%K z%k${CyrNIURo0p|X;ueoy|Pw7{Nan&^u`g3OIm&}`ER$}o1mhRRm51y=kW}jNi{9& ziydHj{=RR9r7cHa%fiyq`Et1afj-#BhC~3^{|1#zz!q%VaeTTgvNIId1`c}iF~wM1 zb2}IS!2gG-J9UzQ!Jl-s_i-3+sZ8_t8w4vK`NrC`Grr{UPVyv}Kb4aZV6L?pDBm&c z!?g0ej9w{htjBgA%RXUT+6kVe(EubO)%%DU%C+ZwTu3MeB1gV`vf?@BwxtcWu|mHN zefQb+fO`z<`w{$CJb~^vhwJa-uk@>O;4(9 zA!j#xYkq1MjmDniZ6 z;lE2{4CM>xF6*B>6=S{erR%&be`vzvP$K)UL5#dSDO_dq#rewVrG>({?TyPN8L?B- zss|-a%BxqgZ{p2bO7E(vBfHYiPWMONY+W4yBeD9L)Jy z5%OG66V8Vef7NGvc0aO5T!xYeKKkAlcQG_55ssM>VdOMtu};|7Tula}XMu0qfVXgX z>uCbcL1vd%;bQ@lx5jY$&C&LoWgjAT>x9u|vKggA;Db1$#2crUtU0jQ5d@(GwTvf! zfS?i@T1pP06#dp_S9MK|9H@$WTDo09CZH5{a2W~-JdC!s$%5XyMO{Dx>|xnq%2JnY z_)NTZ)bwD>oh(VGy}I{Ebse4dZ*-$BkWK}zI=Zuz&%+~Agq+V{sEtZ1RzOMTy`6z8t4zWJu%DsUUu=U@|~WtT3Zo-Gp3cp?VTiw)@7lAO!UP>w1G2ygFnQ-E&*6iG7P%f8!N-GF3xE$s~T zIY8>N@zx)RM0ylPBV4Tqd})<~iCT`UdfAVv-)1&k48FbJVrdl^yvrj$!PIBJDXe)^%nO$!GzM4GlpS%kc^Dx ziR$&MIwGr)`@TmLmIvXtX?tdMRDOPP*b8x8+)HNkM`r0V)n|E$ZG?2YXFOjDSR{l@)FP zUa+otb8dV)?Wgwkr3~K^Dmo+^#nLgu0lJGIKjMmYQ#yA^y_O|2Zy&0~~QROm7S4@XF7Xk)HnPlBMiX|>)>QTJkN zbw)~#vrEg6;xW^iXxNX9Q)e*cx49?RjsW4o%7W246=9Y0BjK$;2ZIPlhzXP-)0W+C z@Zrg{)JRLQF)*rvOOWHezME>*@avAqEbxxsl{6McXrFuc@G>^M6>XDK3Htaxc5XY z&dSbk$9&nXa-=g~2?hWvr+4UC%gX#z9NpM4la@BhC|YYCmm4>LJvz46BTo<6)+P!n zBhmfY4L5ruKd&;iG+|JSN4JEO{@@c8m4#3(*sapLhkhC?R>PcEq`Mmc>8bcTK1xpR zoeYVyPy2MYvIV_MHfWfHz%rzRz6 z!sC#F?irhMz0Ig+ZdxU$k;j~e}aO(nj-U=t)osD0-}z>1K%SpVJW z1aQD>Bwc~oCi1pj#Q7P$7Bt$a<4u7W%gv|93(m;hx~F4eEmZ!#^=J8Nq`4QtYkO(; z#fujoKfVU|d5*$MdMo5195w*c^Xml!5%K2!+e8K1Z5{~5IarH;*MS|-*EbqLsCs_r z6uWk@XV12BGF8_|puqB~RNoWwpyO&OAqO#EOeq?CcLP&mV?AVLlX#Z0&GCkonI9)6 zO?A|-GBX=$YKHzcIdK+QBA+HPnDbUdD2rbEcf08(kYWPS7qq)eO+!PItXb~U@*D!y zB3SDLXI8ShOzrw=EHCxx#hbl;c(9gvTZ`q6?xf0hoYqC^`MS}xqQ=HVCHni%oH?^+ z3}}UC!xQ2Y!Cy6D3d)wQ-sg(PeUkn6ajR3@nxc}DT3T8KMtv>-wEq1`iiZlbi_6N0 z0a%f1`oABf-}jr4Aos^`%^ z?w8EW1TY_5fSR%A$Lax{%kp=o69c&S`TJBld_W|&B*nzI;kg#!!$*?C>Wb&^yF$td+ddk)U0}y?)&{7dmd>1P6wGlH(cjRl|Fp-1P4zt7pLQr5;L1L zJ6?;an+@Yl4;&me8Qyy8WjR+PTy|Py7i)qETZD0fzdr8B&i3eH`uf_qR%E~Y)U-T) zJz?Farrh5heGR(Dw$cr@F;s`m(Pp0Jq{($?{S9_y2NB+GA_js9;f>u7q~2<1l7i-a zJ7tifPW#*IEh^@0odd2n0Dw>C?^KyHLZOOjlN?$r4P*j<{$ZVMkr5LAY!U9@WRK;Mg;Jcu)kQPZ^@n;B20M z8_nRzSf9AR?q_6-5Ds0wO{XR8Rz}fXEmrC^99;3?T_BN*z&AkTIYl zGeHr;m>?)J&-0Lg%!C<2=H#yEIX&&~*xR1A_dd_PPxH?Xds=(%?Dc-{@Nw&VQ^O7G zwylFeARA5^9XktwtOj3KHH)qS3q9y5A+QkgIcum7$!Xj^34weAIeF};MPU5&fP08# z$JKfMW}{U{y|0GpL0+XDIG=s^OorYb2P25eh3x#P^D2QsFB~#V-@14Bdz7^oJU@F} zHed6pt8u>X8#hnG{ei-pb2sm`X%_wVLD*OFgpCUvxU(FT|J|$VTWcNBB$bu%_=Nl} za_JQ`W)|Ie(s*~I;A&QUb&6Snt4mT7y#N-^z6k}Zf4l}+1Fmk}s;v-6=$@Z%&<{po z(~w5KvroXzdLrGKW|!jF146&D_phGj3mYCJeq7kR!IeOK6f!+CQdLzTvc7)Z2kh>d z*vi)1tZ&VaNP!WjU%zpFJ)@kBG~!fV-?y#xey}r}byKpnRUZ`;w?$u7tI#ZPWh8N% z;JVHF9MGzL{kYbh&4kiNb`(kd%Os3}XpN+P@6DTXno7)Xp7?-!)l)nh{1xjJArcxe zM}OY>$cz+Mo6f`X7Nfh6MYI*kiVmv=kIR=CvjNDu+9__)b&1}BeBKO!l4x zWnyT!0Wy6iN*T>8A@rYfaNtq++_<;Lk6T(=@)rgx!6F*VZFQ`?=|}4j($jo!7J_se z_aS*2VIIBZS05FT4J;SpZ_;Pv5RFXrB zK>0*VIP`#9JB+`SYz0RTm|-}Bp+dsDO^^6D#Hvq8LHy5Vz^~<(?A>PZozGZ3 zl0&UGRxT>E!WTfv~3~(>uvMWt>QA${9wmOVGXN+KQAu=ZSQV>gW$4qh?0~SKPMV~9=21F^KR0iqp7x<{UJ+) z*|GprCv)>?o;xJTe8x2()IikL)m1*MjOFY{y8$Ur{WxEF+e~|=-8wIaSH*R+RRc&vujQvhpLd^ zyC}?GxZpbZPO^ePq$P-{9Ga^>Xvi6g;4dwR?2fF#a2J(JrXMvHpM`Yan|6)R(^OY) zDw?~BZzxQo=^lVgKMbbN`t^Ad_S-DmQTuv}dx<@0TlUJZM1KHfXmoTAk(M^`xbCaa z0psuiq1k%vGAy%>y3ZH{zD#RMyxoy$J<@fG6WxOAEo>2JumWz~bi66D| z<=EIb4lA#%janLOXgb37@JCQI&t>OSXL4#?;l$bEOcf&IHJUD~>(-to)`%l_@b^O| zj=0Wn@gG??-@%R)&T+MuHkR|73d9DU08kuk%eTT6V87mzVwfbBr{7)k!bI!_@i9Qo z(45G#5Hq=`ExZ<&dps-EY>)GbsQ{ruAHUdCPT8K&siGG4VC4$^YMZ{OD_0d(cx5?p z<%TT)2j880kGr11jXW|(CF&?@RGuB+?h4=#mhptF&bE>mtphu zEkAckFy7xsR6Z5XPp+glRoC~YCcK?la{%lxJ=U2W9 z4z~GP*=lr!)c47L!r|h~nLY~tDM4FOu<$z&pUaIFrr^A?ZTMCv`8D%B54}vOvJPT2=A?dt8 zdvGy(l$dAVH{R{DzJuj=mtbwnE_J{UdznJI6VQm|r{J-MjAvU~h0rMmqP7H&B2N2j zq2t#h*tOQ_W(ddC->lg?AVlup?w=t5|J)+2C+0J0FQ&uVT@`^t`F`o@iqs@@8OSdMRB-kIwo!~}A&DrU4U!pL)n1>?kw;o~)whS+dh)+#ng&@8K z_lty&WWak_V!_-H?-Ri`MrL9p-GffO7@gRH@Vybc6=e>OtcU1<%WOw-hw`K0Sh7`) z_T1wbN{LJR+xPNe4VH0aR^9FE;?Rxy)z$T!{)tz{yyb97{hAjW9fHTwomGoC?_nva zE=TCg!}4JyUJz60{qqtQMF?V_sv9#fUzmBbN}n5SK1(PM>L+$L!(yeKeyE z@K%T3Z+F2@?<2D3tjNIu!6!}}XZCg`*t%sJh+3mr1;l|&4zev&!hQF+G`9h9=^Wl4ODdc4m^odG?w!BUusp)_`8y*h3G!KGwh^k7bxt zuE;Q%&ucOCJGiV6zsWoj%DMhvBW48`tA*`vev(eY6Q zfSx>4EG{4RV2i#{T@7Qfq6w`?(gN59(cYN?QJ#>+98T$4TiLeQ$AA1i2Jh8B{|09| zY1yp(#9YASPMs~=XWOi8r_-Bl503E<(2W-RFLCj=khHarUD-^}{0#MjkwGXnN_$$G zg|QU9;VF*L45dqVt_XN_ZrpjDZvw(~pd0h#uKo^oJgcaq!*wFh>Iv|?*?#k;5iCIb z5WDT*&+=K1k?MZ{dZVr$XCTUCat-fx^PSeD?ux82E!6;nO>FzsG4wM4k{P|RKxCxn zqMQU}#a)?o(N)`@Z5Ywp+Z%@{MUc?p z0oC=8+&&vlzgV72Q;=&->&c5L4Gj&{&TN&v(x`!awYD~MbYfk_I=yet+Nfr_yBXf= zPG9{x2}{nlML<%>XCj652oIv8Q4GiTD#SP6($e>5L5@AM#fbR^2L~TLilI`Ai;FoN zo(^hddg{)q(8kVqqmi+ZH$-I>EWP56av3XDrcoPPg{H%{>IW{Sr_!N8^B1F=`oBN( z5B>869>+zKi9}wM?cAZ6<-C20im><(pKhDm{(ZFVn+c{$LdaPw_-cUHPxe_U*|Ta( zizEodgewc9QVs{uz3syrZ@mk9t`M>P6@TPp%EgoqBV*1I%8G8Tu3E$OKI441*{e96 z3lk6I;alNnExt=@a8=5JOusE2l^v8QqjgfEh@4uILy)T#TomH_DBG6c@ZB)gJT)P> zqFqI2d9ducgo?PlM}MJf&+E;*hO5FPRn^o!MBhb!Oiwis1!VT)FbSm?b6PiV-b`9r zT5QXaE&74XCl?Lnw2B*Q1Vi-{Ux8RzTEbBSCNOplc6p|ckcnRnIegOJeRMkCcb+?hiSB5twO?89ZE?ugk!1x}3^nC4F zI-ObA6J+w#_b4OWDl{c~*l7c_iwhC7t7Xp(^1 z1}lT%c9#qoPjl4qy%*dv>v7DnF>GXEl?{TAmyjdwTQc%cJS|2v|0FwhvB=_m!jx8_wQ+`EtyhwAhhsAmVcAQjRTYs5g^z#xCS?c>Q`v zN%s4uvID4<_~@wp2^Qyi`}<1~1FT1nUUk`PtLf-;j28*eYe&kiyyBPs?LQ7_tNj~O zkrW>9q2YbvN^FdL7?eLUuBJ@nq)2V?|Af_w(wdimYP2H0a%(ILxG6a`Rd5&g{bApU z2TLz;Pd?UfIS1MCur>OE;CH5vEQt$lha4Uj@YVq}<2SlFI-f`e;&k)oC+YnkfX}c; zMTHI|I6TDlGC9Gc@u(+Bt$M2Bip6Uo?-x6$^xJ_g4@F#sSXAI4&_Y!PL{Z`zu2($Y8+7U0@` zcrcZEv$$CT6G&HU;<)0=Sp7@Sq5iadh@OjWk#|RH3cfy$?M3aAmV#r3R=1^^=;%H) zI(;a3vHBluvqTG^xV&A^`xHL651!!D7!&z2{tdt!d$bm$S-Jo*5ZrPXZ-_O!SbSQ1@u#AjMG?6n^apMl6bf|YV2^|88c2Q9esAnEXj6iMWBBaZ)wt4)94~LMCV+Nas65r3x!A><|8RrWH#JvG zO*AKR-UBC#K=EI?@&R{*nn6`58+isD;9f^kLa2{+sUR~lVllH;5wQn|w6sT8oKD=^ z*0b%60`7>qn%eLj4qK4BO7hkl3(Uk^$7bZ+Z3jbKFzX7FlU+OF-0w(eU5IWHn7!#n zlmD0i{0e{rn0vuK_5cno8b5E@8!EDStjn{=tP)iD}928MZX+d>$aoRH!h2&S45_%eTT?FF#- zE&ulS*%~hh^zeXMO}~G+ye{V*o^c(w+rS{`%H#J4j~4tNcdXj2{3Vs{rm1|X-l*1thcsn5Y% zJpJ}8YrU7Bi6{;xAu=x>lvpLw}V4X6qDEZlruw0KGz>Uyot`dQKrFYWB%EDsyfWYL?aR}HjxMA~V zFf*r~M=AT1(?-;^Gs0d@IYp>U}g6+dpE9WCDY@pE-=HM~}t0D3~cK?bF$< zsetl2bH>=XPTD1r&8pR0>2=2^8{D)DuDSc{*->ah!zYU64xwP!5-ts;K;^E29PaDP zwpEE;pryB&>NrkC%LUJqTf(KnB{dNJZ@`6uNvAIw6B9FRT&26v-XYB4!6`BF~p>zxtX%PQXpfWKKum;tJUva;@*Tra&(EVrOj~-cd z7e&!(CFH?@zl6&LB{ zu7~rc9$H)3!{{y&TegVrQP%Zs`8ZArY`p~->+w4{5-kcz_(Vw6c%%LNc>3_aVUrld zwbVX+Q9um`R72VHIsOneD=UkLrq?#j@n0E2^az9yraP7~T*30B1q}E#?S=C`f^yi0 zEMXQ7nqLJdHKRoz{(UA1gy;B#kO*A(q^R>%c9?bFMrne{r{bb zzGyKFapbZ#@Y$^SkE=<{i-rw=fu{aZ26_Pk4SF}>p2Ivrr8>lv9d-kD@NZ~&w7_~g zX!M`Rxm!)m$Lmb^=ywob?VzBdaOgSCM`Po|--d!|`>vdzC#)CH@#kdvXS3F?9I(oF zy#z|pR4h_MT_ZJ>euUnSm-8KTDPi3P*;BS%k=tae)mQ_%kT!GojtXi1+GN{HIh@hA zyMcc=@+0>PaH-9=@{!<73mJs3XI3yC{Q@pws#pi=9Vxh-_hNKo;21V>t7`XkTgWu? zpTrW`{ry687o1-c0o{rYydvs2TxC)hmAyw=^Ciu3Y+;uZE^ulR;JH`pNd*UV!v+ek zQ}f^0sXd=3B0x{I#zTJLu7YQk)CXII9(jmU+5Y`}zmJM92+#Cfsv8>L{J<44VhF;i!jM`BI_@gY4x+Zlx)c| z-=A*|)(os2dCgpcnwZT6ajrzVyHjTwJo}WC51*@-k#8L&CnJN^fRuAba|!D1`!o?i z!4zbwtOF6GmJ6Hj!_QiA*F?rs_|FUm9sm-#cD7OHYU z1OVc64v+B}mB}3IN4bb5=OF4BYg0f+@~^Vys2=GCt@IKrb}Dq?UW!+FUH6yD(Z^@jJoVO@H5r!B`2_HC!+XR z!t2+nnP#|>IU+q9Oyqrv5!#4WFok`>jEYj+^e&@E0jZNdBrG6$U7B%Q1vGuTXwNzE~rp+5zUW%WG6Ds9i zmk3^&K8R*n12`LalkV2fxK$aBy;LD}su<9@L308Kyzg8JL08_qO)BNFK!Zj3MCBa= zQ5j8y4X|?o(~%FWudn|vu$K1R2atK-1%`Z8jOAm15e|mlAirsgIAh#E0yFepoblBr z$TaVDUfy^=YFwD!)L318KJStzwJ~FAN>ZO%yH&sXw=GjtI5O~)NCkQxr#(?lC->P{ zS`M%ZKt@)ks#d~!21#1_8Cm_q$SZd!*XwN0I|^rvWFV@fq=d|3xu2}*{tweMo8Wop zj)XnX^OE{LK0g4mntEEDPUo0bAJFU zlJbJS+6IRFMJL$ra}q=^faAYpO1wx74B63gwkZ82h?rizDryk2wk}(@$ljn>-vmsK z1%bt!TL)6c5oKt+(VHxrG7S~Y5@1*3bj$j-w>39g*qhrDE>hDTR;mly9_)94fDmpa z{iwzfCFM6*o$xAXY3#Zn_l-P$^NZFNc_F1h0GN4jI2P2Wcz;$8aBQKCP6Az+j&VzK_oNWHw-j)R{5o8~CocHc zn5R69DZpP;0U}6*VZi5hZ%o-3F$wD7|G`iy0K#8(S!z7QZOC9sX6GfVE82?XM;JrWNk3MTy zE4WfYaz>&N)NdX80p!P@O7_WL($=2u&j8Ge5J>zU7pVr|#RgF9>Ca2B^WDQ{c0M!r z;3XrAzeZcrBWrgTFh5b%t-p(^ihBVQ4TK+HPL&nqBw-yC$3Ls`P30hs2Iid-+^VO! zxt%NsNr2q<^PAhS?fiq8q-aEj4 zM#nP*y-<(=eGoTX245J*{)?`tFF@lj8mt8AzxHU{PmNw`f<`Zpw7qUq0iGk|aGYTh zNOXR^d-lJ_O#R^79~3~u7Uu^1O@V#5{lSxt%x_4PqzX=b{oPHUJm-@AN-?Kr7vJ7G zR+rJ?zT}-Jw#cSUwv{vp3}#?NgCOtzHZ8k<_G_&h1kYAJW_v-v8Ik+_CxPRmCZWrS z1hzSV5AES+OA)%k`hQO8TR=25)EgMRqohO_eXvP(xi+)TRGS;$6-9dbs+A7h9nv<-UAHt>M@s#h+^!$2^znohZE)FF&W#W}3)6w3 z9ymvoASBRpasM;W2|a1|iB*Q0ZSW%kcd}%*bQssPzpsJid_|oaQ43S|0|GNA(D{cs{c|+cg;8KCduwl>s%Vjc00G;G8BVGcdhF4gVpYInC!p~`KbqaVYaHPKl zp}&+AwAg>9k4B?q!&WT-??3`pTKLx)2TL#G5WS<*`fUrryY<=O$}uX^B8XngdAevfA2v zz*#+lIMpL8!DGCaispFpc7ptL)K~%69^6hg2tTqgGKVj@bP4z?tmPWk1-3}!Zj*k; z&wVhz$9>(|4Dx9JFaejGfqi<77xXV*^(;g}u^!*|IzPnzqJcpP{7DNSULd{7nJohu z|5+_TPyUM?DTYY~qPLD2k5)}hHTeCMi8sTL&E?ksN@<9I-SiZU)I$L}CfQCz!LAE< zChqaC{g=TPa8l4?3siL?NM}#)_WZ@Cq@}D|ML&`MV~*5?zF0KSIY{2tJ@rQ zYY&pdUFjpaOjFP~?=Wo8_RnkVA+halaaRJ`c@JcJTX`;_6uR^U+n;^mAnn-p_sC&%^D@ zhI)H;?cW7K(4Oxv=>7mfJHRP-7aun`Xh~e;0*5cJ>g(x3Y|hWK+ROw9ItYEQd)72K zWnnZd_|f!_OYE>yKR(cM=l;#|dy+rsQ{-W!xs3uifvj&rUxF@u{ly9JOZ>q|(Bq%K;Mxs( ze}wM}xOC_&!~;RFor8?9=lSq=Nn~&>Qs|vpfn!Na1owZvkNaEj_Y1IkaGUN=|KzJh z>d=k(zQYpl6}z{7pX%W>7%~dZN!;TUWJ!Nktz$j4yS%k(~u7AJNaBc z=GvG3Bv|Je^))r=jV9tRDhq8>rr_2G@s{dX?~Pm4^w&~#A@3X3T<+gtrd7Nz!y&va z&$jq(AzqJ-#;2NzYgC${dOQm10^71OUr#Puu(#dSv7L8X5KNMhu&_k;534-&4s!%F z-H*7JE+izRtcfg}&)aKs;6dUvzX7y_@b4rKEG*yU-kfXcb`jglqK2h~(-qbQWR!2U zWyuNEOQAPPF|5n+Y3!`MM*BCXO9-8v_Y07C_-W-aKk8`9x_WtfCpQ!mCy2O&-5xa2 zdnABfdzYpxrp8$Cn`OEi+RfIKBfo_Xcy9>Ti!eKaElzE_Omp3{Ejqq1Lcl~R(r!}G zG<)`XzI|uNhniJ9-H07N{9JtxR9fa3w`gT=Z(kJNq-Q@=nzdq7u$@)B!h|)%NMr<3 zM&d6VF|XU2;gtx7X}`+Ow*v#KZLu(~V-MvND4jlC+S$f6?)!jbP`D99&51ZrO&=X@ z5;oY}BDmCU%zLDXu2uD^NvK!7^O^`C$EqRyO@I(VoQ{c3$fVL{Dxq3a*5bIsH)rYYQ-O>wU9*n=RTeD=X zlZs-LS=ieYmwp&@nQ59_KAS06O|9catt7+@t+Bs=@_uRJ-b{g8Nd*nlWa`j^4^iG; zj{4XST1Nt<)C1bwIuyCJWN@Trawq=EcI9<@x6q`1HR@D?QT1Z^a87oPHeZ=dMKp|l zfQU26G?a`I*Sr%dLDY!qDspT|NfEfM`ymcZH;G{8i+a}_jaoXZ(`b`pQ85Twwzi1f zv9#BIekm(1yd#)FxxCaJSF7V6d+}I8K`njgo{C++yUQ1meHNE5pI9u;qK(qDy1Vy? zD%+tO4FolPiL+luP?$6o`x~TEn6|7qQ4wC(Kk2WIy{L45ztVg%adQ}{cvUVi<|3pz zQf3Jmg~P2v7wRf{tjnLT!&!L+IqV4}LfoJJ43)NZDF^!vH1zs)0rE5@M;NRU6yL;R z(3o1eML|XZ`^@S>0b;rK=+Q>+y6HYND>GRmVBQq0JkH)~+`|got#zc-5<=kfm$w4) zLd#ag?ddBP`$a{`WW={7b{mrtO#S3sF38&Cj5xcmqV9U@Q4<|L7Xh)A)igrQT5-F^ z^i)bfUm=}d9fzhK=i#;UWrfV%$BoauL|`wbqqbk-tesn-u8mW4v2pph44l8}Gtsl? zY{!9kK3u+U;y&oW*BXJI)UM}_-rf|h`#!F&n@f#OC|0HbDI0obaNr@4i}GGFC1j23 zp6qb}31;*OsOty#de%#U8k7znShDlNk*`|kzMeDI)Jc1JwZPNRhcRFji<^0ED9wlc z(1Gp&FbL%xe5wD8U9B0utU_vKI_9`{1029gR0*l$b-o=_+}3gM+(4&eu)^d)wbdN} zQ|nvQj$pI^oXIlW7e>W8`hEBuTu#Xnza1NWjsh_3>L~INV4;{~ot2#&crF$G6X^Q4 zk7#eO>|SLJ_Wh3HTb1G+;zS?F=M4q*MhNr?l6zKEbiJD%RAE{xp*`0(Irm{KqNKPu zlOje1V!EDX|^6yuVr6~{06uYe0fIZjt; zV@8Ne$Kclr|G7x;w|)J);PC)E!N{5K7OYLBPtG*comP2P)T6q?oRAS0w=1_Tqh~?9 zjlB8zom9QqItd-V+-SE|WP)><4sgAuWfyaz@H_H=e31tRWoeeyIb{nv_u%$jI2USe zy$2IV2;IQ;+}B;@nNOIQZfiDEn#f7JZG_fbzv=K4HC_{k)F@}p7l{ZXLmcfe@^TuA z(1GX~_{#W3o{ctNk)*w_6ghljfvIYiCCV~rZa z-RO~#C#_X*cl}-l`^ISL>@4d{5$?IO%a@Uj-FJjh%!!!RNyEAR9IDI1*4M~>1Dn%m zLwy5p#~tH8V~nAGsYcOW-bZCVrYe1lv-%CZE+juA^y+*5W@P9&eZyT)Osz>w%6ijI zlR8z0wnt>2FMLx>-eGs_Y*F^H@1${O?wAAX$VPe+F< zwKnh4`o<|#c#b*BkQV2Ui|ZH*KiBf1vk0c$-Un7C=ra+$cH4yTZC}GGw-)2waTOIA zvX8w2eRZX&B7Cu(KQ(prOwMe{Zt5PKy_! z6yOOXrn55ysOxI#)2)Fx@9GaN6}AEW_t>f*+U+%|?*W{HH^uj>u_fRts!V>n^4{IK1g>YT?Mt8TQnO5Lj^NSvBTxg&d#@Bfr}$3(~1|Gjw^A}1Le;8 zd=mq3DgXILv`!nJ{Ow69p0V`S<`^nOZ?P{?p`dc1d3e~J33WwV&+HvH2q1Ar6VC@m zmSqpQ?y#?MZF_G|7#{6{X@93)U0Gi3PS96MRtaFNoivE!-J<~3o3~-6;g;UM6lKrX z1*`~qX4uAxj2@(G5*xw0ncmi{@YaZO;fr;CDDO&FVf@xDB!=k?0>PtS8{d^~wYS{!*{>YD`RXYCY0&(Ghp>k6hsOM=s2g2{UwKt}LasVb?YOc16YNnw zI(RRO9nUA}nNOsJ;gRZ5NV(9%bIJ0oADEq31H^-qgoZVZ)^;#;`^REcFG}=SmPBwsCoAG+D&@3v3=DN|D=@49*yf=BG{D`L$Mp? zprevUmxDKEJNIwB8}!VDbkBOGrE!f+B2*$)I&zvjjdshng>FIc18(X%#%j6A|jCs2$aaik)2X&dn7%x!x2%J!{5F$FrrC4Hq5kfLxQ%t z0&PFr#G5twF5KSMGP1JwaNXfVch5krGpT02rYNdiQ&p7&&F>O;f$s%pf8n{&+f!{S z{ohD**M=E8wA>d<5=*#nB*)!dMkdEdWB}oUa0IuGUvB>{(xSksKV5&Us7VukeJa|( zEFfT=hc1Thnx(%I7FLLuC%KRVd$Hjw-&=%7xSu_HmfuhSig}KshCIu-rq3rS6uVDI z=n)2kh0m2fP8w<6RsWU3ODg0uT=!DXc;d&q3&y6FI4_rDvqLS7h=_%ZWFHwd@>_Jx z_WJ-bQB-YSKUvwVe0&@7{Wb}~?!WD{@|uguyGF%aIC9J&Nu6<9P3}|)2VmdKY1C(# zPO|dD$MnE>e#kNfue3oTnVK}XDw`x_r0INx&tY?^r0$gW_FnuG27&Dl=q)!SV02ht zzxkd}+o&&e^3!hp)F+X%r`{ zBvz20e_VQAD7Gmnb;y$I=br;Zgy&LHQl28vxo!#GHx`OCMfdL?^8Fs_qOYvnm|Vs) z<-#T!nw+Oy2r27Rc@?AASv&S7mpA3)*G&W|$nr@Z`TDjZVSm}Rj$z3tIz8I29^mX_Y@Y@$p#oJcSHNmvcHQiB+ z*)tku2%^SU@8o%ceKdk7)!XF$@M#$rYONnnef+$XAVPimeSy9DdRwcByaak8q#qe( z#`pZi)pIBmt4s2x4xg2k)uh51YSpYgp8;2m6NnLZ#ibn4A|!A9wYFuU>+)RjSBzvL zXBp&1@GcGe;QczQgi}r}m9XiP5~b_b&@-ixE$lEx!KN^L@TafRkAmS|3M!Y2cWxK$g2VFaYxQtF0zi`6KotCNiCDsfq!q2+AUlwP0A`0&9oNgRX0 zbfjuZsZ^LaIQ;s`_%H>>em>T+-bSFVyxZxO3msSf# zJE8bf)t*lM-pE-^B}CMT8YfG~>SfXvAsRMM7QNO0iKrFlTVz4H~0&YrgcGt;vAo<>XpBJLN?+Z=_{$ zLV>O<)=*+C**?^H`k9H5`hzrX!y^w1>WV_=#(zvx{TfnL%`(lduFiP%>J=#l%@rBp zw6@dtSK}=+r83@A#o5<99L}PS0S*ecJ0p&u&l%;|Lj!4dxhsPTKD4#X?@7-7`t}s7 z`N-F;;8a@1gT6+2+FAv$naHdP-2ZnyzSOZ(g(-tAO-1#fg+s}$FFZYnHhLFJFg$-VazVLaH8D-cMvP*mB`ip zts3Q(EmHSK3bV5F^HEy(NkO`;MA?;JV+m{u+k4b{xPZ9R!uI51wxWb7W`CrPY~3_I ztY3hq%#Y&sI=>{0)l_BgnB|RZ?AqSK8y-oJ5|~3gL*sQ1opgKOGidbIE&eIkC%R|P z6S)l2_tS!=SK;b`3lA=)pHk}|drw;H%PaFkEw4_-QN^@3w`X~o6X^&R<<>0>Qavl( zkPC{*j88v0*^KR8tMnnlyIr>ZSAL02PNfW)Rk-)s0HMmmn>ym}4E>_RcU$)=xi1ey+|lwJ?nv{; z7>sBfd(mf*UszsV1`#%sE9FzWcz;#l$v_w2kCpTDq9|I!PcZF6@v5u2#vXk&V%o0? zd{l!*HZ|8pIUDMHM$nJmIuhYazfQ7G;_B*9q~d8|JKwQ^qL;&==OEuVX8k?6HWhV1 zY%;^x5!8rosk;ae*llo&Ngh5aN~>r=u~U^rMav!unFeXgB{uA>jFZ#OvBC<>HZ}Xu zt!aygx2GD;DQr;LPw(8>=OQ3Vf5(|y4hBiphaE|1jgF2MOpvJC!mtZS83!R>Cq`>y zoMF`(8Dm&`W93nMi+%7|K)>BS?N_fX5aX$cUB-?=V(Xrr!;9)MPTz zjl7SmUNUGl$lJco^Vbz;{_~F>dyZNsCnoOG9w?7sq*7_ouwDH8**O(aF#5X2b3eN= zQ5j;cC5u5Wz+Gd~Y2}`S*2YCI{DWKdT*`~MeP4TExN1WDdPnTxWwUOwLL5FoV=?f< zoJiW1VSsa@jD)PO?~#m3)r?iav)SH5HGd4;#WYh84-UORe(5VKvoT6#wJV_4{kyx_ zEb5+;v?q$7{o(vwkahQ5aXb>=8Y+cDEC| zn#5gMT6#o71LwK+CL*J_h#U4*k-vIGmk)}Rn0V7rlca^(r5b;sj@~@~{3fsXT2+#n z4bF>383i;2IDLpS!=}e0#Z>QFZU9%tG(uhk;lf#QI>BXR`DFN zwdgF zig#~o09mEad-&y9I)`p0UGXIreEvj#aDEO5ZTWvT&)X zf*4ZKBn5E1<1;w^>lO!V22arie5HFU@iJ+&cSVjdrqYS6RY?IfO~KUFX$2O&f>5#f z7V-_=Z)JVTdqmA3jed~Z{K}dF5bIB;*-d>e$%B>xeQM!k&&se?e%MHL1=@V50Se9}cS>JvKek*wKXk!jVvG4TS}F8lV$bRJOlPjmYi^}_ay177%} zLt}Jm;QVo~S{USNh6vewcN~LazR$8SOuexMz!ygu0yYbHa%FWjMnL3%_M5i0{eV>y zG}+p&yT*^UgE$E&eRl@3*!LZ<7JfPxtB1Ka@SC$E&$C(9PYhmZwYLkNuppus*a{-b zg~p4^$za2IeED#kB-|sbTpfR za1X6^m~6IZ&66zbwpQP!A^OVsc_Pgfy@rnV+l8%qRg9%zFvI@>x&BX#UV43dQp)fE zewHLmV9ocmXV{*e_(|FJYpAsNo%3N_AX%N7wS~E~HS`|{9mWco{J%(c;Bvn_ZaJF0 zPy1UNyNz|30_KcY#e!lYkc&UNVlY}fP?4qQP|xu=1Y9QSK|;dnz+pvHaQ|rfVf=~k z*H4NZ&)WwMPGvagM5n&1@*Dg4{X>|xo7?w+fq{c_@t@qC{~m^+$T-Z!^z0muJ9qAk zw2DAUiNLkpp*L;O+avzwO?Fb=tsPrWQ~06H;N{?LVDaanxUQg2?HV7ey#sW(if8u4 zBM%v(K$wHm?A%;ZHxB4zj{SSd$$zImpF_~0DsN^pplK#qrW{ro47fSKWx=V7ZUA~z zbx-ZN0*W*4%rNw9z3Pkq zg*JB+@qi%XyeG>SHGaryzQ+4{(hAHch*2rY$q5r2oiYBb32d9Q_z*BTD;-KrE&fzH z(*Xck*IIxm$xa#qD#hf>4Zi=w^F3K6`W=Fwb2o&Z4t_M3{dcZ`?$N~oE}!4{PC7hba^_NJS=_l; zA>n=duw4~|)Wd3O@e*UZ4EsdlPEqWO-|Xd}sJI09eKk zjG@dQ?lEvHArc^HTuA@nX^Mx$aL_{Kd^Y;bVvmWnuOXzmeNR?SM1_))(GtPf01%ZK z#vRrn)qhaX2|AyEoWhtP(QizbXhMfrstxh%yyC8w8`J|)(GRVD9hK}mXP-=bXQOmP2Fn5m%q~GE_ zLCs*oT@npW8_rapnYsihGpymsN^w&xCK_gk+DddfROS0FRx;`nS*|9O0^axHS?!m; ztyV5$*IT?4Gl*gB9sLMJv>_5XN^pU{>x<<;U3 zyVMk@_Y!@~W!X%?yh~8bFq?AEyjPaS>NQTkg&N%MajZs=oNZ+=_3&^7^$mHXDzA?R z%JTuH%S)UOY!pP)EYH}?c4GV2)deNQ zyB_(qq#t=D@^f-i)Q2dWdSU&p*$J6e^TlD^(7G-eKqH*cnBy&4XWlt%b6Bhq!A01>g0sr;r_ZlgW z(39>R;P^f{YH_{>Owp(WGa!`c@GsqXGbW0Q4Hg?xx)@z81dN4`!tW`JeBPWe3|tci`A zW?x5Jz^N}CTLiL9r4#%XCq;?doe1KMMi5lA`3~#trjFIRwm;63Q$;`rQqMnrd{;Ec zuzRvDf&mb&8$<-}&}t8h(QGrH>6saU1Hm`C<2%gEMymtcJMYK90LK81k-NGbN8{dr(OTOVU_T% zLdV(8qx#Z93ZdSV1O%ITN0=Bq*D$Hw5o3PfcZxkl_+WtFGf7UV&Cnlg`Pz`1#V51-)wKcN)#+~ zLw0N%)tib@_8u{{4ZqYqxw29`STZ{`6DTb!`>m4u>j)a6hf!&_wT0YBZ3D|g7o-&^ z@6%V0nj9NjUZgILRLMjw_1WaGnM5?|T@?S&N5lC%=H9|k9=RrSCI%Lb+3j&j1+K{+ zglR`aG`_XMKRJC}ySuQ+v2ErpR^>(Mk*E{pHJ-pl14`vL`~{&zHEJnu*hh2b$xGg} zli^Db-p3xZqu(3$7S{;$=R|yKBUzzj<$$)yIKnQ;sZSU$F%}R+dZVyg;^ei3C+{#w z_Ag$AX3gxT6 zsQxEx?g(x`=Kfimdn5Fd&5irJ3dGOC_aFHnpIqwyFKlkcCIySw9=|EL0bfZhNI~A{ zdn%^{u=6wc?(~UIzYB`2@FKo@`D*DSInNy}R|H@zhc%?l_pU0Yk%rd_TnHb4<7Z=e zxrgee3O=RczYyxoB1|Il_w~)B@mISIp$8@)L(_s9fq7rqBnhYJi#nQ zyod?B%|46k=ldFXKL&88A1m0Lcv0#^?ifttZtnwPBE3;R3Cl@f$LE2}<(++aiIZ1@Z3;lOOZ}frCca-t z`8`Jo3Mf6?%h%xf7MxExRR5=4=ng|yP9atQeV$-2NSO9JJBx5GE&tb7i`+~y&#*Rg zVcLdaBDOa{=}BUwF2TkLw=VnitK95fBgV`j`%sP6R2aXZ^a*?DiUcU=vjvq0 zW(JEt-p$P(w6=VZ2J(QBal&yead3L~yfCyO^%A0t=2U``yT*)cz?bnSZ|mLwr)_OX z@Y=9zH~zzej)4VAJtX(}aCU3rMJ0`c;&H-4Q#8`(s#g9ZPQ`@Ik#0`aU1Z>MF(Sw7 zfCN(hhgEog2eeL9>aBIES=o#_c=fY$;4A5sv^bLds}nK6je+tAN4vm5_g`|X|0tj6 zEMH)i^q5!YrFDfa6Q4^$9rSTvFjf|x1CVZ?Fmjg)~L3#(Up%Z=bkHa&v z&W&Czvg|hbq=Bj2VzEtzbHlWLd`LctzIabmrFJa_!@GO#qrGaL_~(6*-?N86zrz}g zu8mZDK(J2~FT`RDa4YSzwo7Q55)*@*5(+i z6S=(iqPNjP@ z3qO~{#I)K^AWdXYDmGHPKapFbNEvDKaPO|HFv`+0NnA6(j!s6S*4N9C`=HVcw{H2T z8bNju5juR&LCo)X+&r0 zr#cGo;Rt9{7r6jm1v1hGMnQ|&VKYyODc754hXc)^uB87tZ&vsbK6#gb2xj9)eY^Aa z?2!nUMxeVh+KgXb#ItLCD%Puk(fXgruAdPu_o*Vp)^E{3@XV$!@VAiP*3SAERa78j$rwsx{E$~A03LPy zYH&GtwS`8Db~<$ZQ+0UE#XxWGkC#AtU8nq`S!{ZPJq8&bL!5Dne%k(F|3yZx$)&eUQ(t3bjKZrR86&|byzsd4( z{_BFD^IvZDKXEek|Gxb1Ir;a3`1fx3e*^`vOWp%H3Fk@M0F|Kc&l&3GYhU^4{{RFM Bo2UQ) literal 0 HcmV?d00001 diff --git a/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-SelectableRows-reactive-API-Verify-SelectableRows-visual---row-highlight-on-selection-1-firefox-linux.png b/semcore/data-table/__tests__/data-table-states.browser-test.tsx-snapshots/-visual-SelectableRows-reactive-API-Verify-SelectableRows-visual---row-highlight-on-selection-1-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..51cd1b1dd6eb7aa34ebc947af6d2f4f651f9f3ec GIT binary patch literal 33467 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 W_yC@bsTm0HkJ2@@tJ!~=-2Y$wm^ZHg literal 0 HcmV?d00001 From ec19cd5f14dfe6d45421b73bd5f612c22340a119 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 20 Mar 2026 22:08:30 +0100 Subject: [PATCH 15/24] [data-table] fixed clear all UIK-4989 --- package.json | 2 +- .../data-table/src/components/Head/Head.tsx | 2 +- .../data-table/src/store/SelectableRows.ts | 14 +- semcore/icon/package.json | 3452 ++++++++--------- 4 files changed, 1741 insertions(+), 1729 deletions(-) diff --git a/package.json b/package.json index 0171778e61..bd0c6e7878 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "packageManager": "pnpm@10.11.1", + "packageManager": "pnpm@10.11.1+sha512.e519b9f7639869dc8d5c3c5dfef73b3f091094b0a006d7317353c72b124e80e1afd429732e28705ad6bfa1ee879c1fce46c128ccebd3192101f43dd67c667912", "scripts": { "dev": "pnpm storybook", "start": "pnpm storybook", diff --git a/semcore/data-table/src/components/Head/Head.tsx b/semcore/data-table/src/components/Head/Head.tsx index a729a03fbe..82440a68b5 100644 --- a/semcore/data-table/src/components/Head/Head.tsx +++ b/semcore/data-table/src/components/Head/Head.tsx @@ -166,7 +166,7 @@ class HeadRoot< if (value) { selectedRows.selectAll(); } else { - selectedRows.clearAll(); + selectedRows.clearAllAvailable(); } } }; diff --git a/semcore/data-table/src/store/SelectableRows.ts b/semcore/data-table/src/store/SelectableRows.ts index 0ac0cb681f..202db5281d 100644 --- a/semcore/data-table/src/store/SelectableRows.ts +++ b/semcore/data-table/src/store/SelectableRows.ts @@ -1,5 +1,4 @@ import EventEmitter from '@semcore/core/lib/utils/eventEmitter'; -import { MergedRowsCell } from '@semcore/ui/data-table'; import type { DTRow } from '../components/Body/Row.types'; import { UNIQ_ROW_KEY } from '../components/DataTable/DataTable'; @@ -28,6 +27,9 @@ export interface ISelectedRows { /** Clear all handler */ clearAll(): void; + /** Clear all available values (rows on current page) handler */ + clearAllAvailable(): void; + /** Toggle selection of row */ toggle(selected: boolean, row: DTRow): void; @@ -125,6 +127,16 @@ export class SelectableRows extends EventEmitter implements ISel } public clearAll(): void { + const keys = Array.from(this.values.values()); + this.values.clear(); + for (const key of keys) { + this.emit(SelectableRows.TOGGLE_EVENT, key); + } + + this.emit(SelectableRows.SELECT_ALL_EVENT); + } + + public clearAllAvailable(): void { for (const key of this.availableKeys.values()) { this.values.delete(key); this.emit(SelectableRows.TOGGLE_EVENT, key); diff --git a/semcore/icon/package.json b/semcore/icon/package.json index 9d7cbbf000..6f40acdcd1 100644 --- a/semcore/icon/package.json +++ b/semcore/icon/package.json @@ -57,6 +57,16 @@ "import": "./color/YoutubeInvert/l/index.mjs", "types": "./color/YoutubeInvert/l/index.d.ts" }, + "./color/WooCommerceColored/m": { + "require": "./color/WooCommerceColored/m/index.js", + "import": "./color/WooCommerceColored/m/index.mjs", + "types": "./color/WooCommerceColored/m/index.d.ts" + }, + "./color/WooCommerceColored/l": { + "require": "./color/WooCommerceColored/l/index.js", + "import": "./color/WooCommerceColored/l/index.mjs", + "types": "./color/WooCommerceColored/l/index.d.ts" + }, "./color/YoutubeColored/m": { "require": "./color/YoutubeColored/m/index.js", "import": "./color/YoutubeColored/m/index.mjs", @@ -67,15 +77,15 @@ "import": "./color/YoutubeColored/l/index.mjs", "types": "./color/YoutubeColored/l/index.d.ts" }, - "./color/WooCommerceColored/m": { - "require": "./color/WooCommerceColored/m/index.js", - "import": "./color/WooCommerceColored/m/index.mjs", - "types": "./color/WooCommerceColored/m/index.d.ts" + "./color/WhatsApp/m": { + "require": "./color/WhatsApp/m/index.js", + "import": "./color/WhatsApp/m/index.mjs", + "types": "./color/WhatsApp/m/index.d.ts" }, - "./color/WooCommerceColored/l": { - "require": "./color/WooCommerceColored/l/index.js", - "import": "./color/WooCommerceColored/l/index.mjs", - "types": "./color/WooCommerceColored/l/index.d.ts" + "./color/WhatsApp/l": { + "require": "./color/WhatsApp/l/index.js", + "import": "./color/WhatsApp/l/index.mjs", + "types": "./color/WhatsApp/l/index.d.ts" }, "./color/WhatConvertsColored/m": { "require": "./color/WhatConvertsColored/m/index.js", @@ -107,26 +117,6 @@ "import": "./color/TikTokColored/l/index.mjs", "types": "./color/TikTokColored/l/index.d.ts" }, - "./color/WhatsApp/m": { - "require": "./color/WhatsApp/m/index.js", - "import": "./color/WhatsApp/m/index.mjs", - "types": "./color/WhatsApp/m/index.d.ts" - }, - "./color/WhatsApp/l": { - "require": "./color/WhatsApp/l/index.js", - "import": "./color/WhatsApp/l/index.mjs", - "types": "./color/WhatsApp/l/index.d.ts" - }, - "./color/PipedriveColored/m": { - "require": "./color/PipedriveColored/m/index.js", - "import": "./color/PipedriveColored/m/index.mjs", - "types": "./color/PipedriveColored/m/index.d.ts" - }, - "./color/PipedriveColored/l": { - "require": "./color/PipedriveColored/l/index.js", - "import": "./color/PipedriveColored/l/index.mjs", - "types": "./color/PipedriveColored/l/index.d.ts" - }, "./color/Salesforce/m": { "require": "./color/Salesforce/m/index.js", "import": "./color/Salesforce/m/index.mjs", @@ -157,6 +147,26 @@ "import": "./color/ShopifyColored/l/index.mjs", "types": "./color/ShopifyColored/l/index.d.ts" }, + "./color/MicrosoftOutlook/m": { + "require": "./color/MicrosoftOutlook/m/index.js", + "import": "./color/MicrosoftOutlook/m/index.mjs", + "types": "./color/MicrosoftOutlook/m/index.d.ts" + }, + "./color/MicrosoftOutlook/l": { + "require": "./color/MicrosoftOutlook/l/index.js", + "import": "./color/MicrosoftOutlook/l/index.mjs", + "types": "./color/MicrosoftOutlook/l/index.d.ts" + }, + "./color/MicrosoftOffice/m": { + "require": "./color/MicrosoftOffice/m/index.js", + "import": "./color/MicrosoftOffice/m/index.mjs", + "types": "./color/MicrosoftOffice/m/index.d.ts" + }, + "./color/MicrosoftOffice/l": { + "require": "./color/MicrosoftOffice/l/index.js", + "import": "./color/MicrosoftOffice/l/index.mjs", + "types": "./color/MicrosoftOffice/l/index.d.ts" + }, "./color/PerplexityColored/m": { "require": "./color/PerplexityColored/m/index.js", "import": "./color/PerplexityColored/m/index.mjs", @@ -167,6 +177,16 @@ "import": "./color/PerplexityColored/l/index.mjs", "types": "./color/PerplexityColored/l/index.d.ts" }, + "./color/PipedriveColored/m": { + "require": "./color/PipedriveColored/m/index.js", + "import": "./color/PipedriveColored/m/index.mjs", + "types": "./color/PipedriveColored/m/index.d.ts" + }, + "./color/PipedriveColored/l": { + "require": "./color/PipedriveColored/l/index.js", + "import": "./color/PipedriveColored/l/index.mjs", + "types": "./color/PipedriveColored/l/index.d.ts" + }, "./color/Moz/m": { "require": "./color/Moz/m/index.js", "import": "./color/Moz/m/index.mjs", @@ -177,25 +197,15 @@ "import": "./color/Moz/l/index.mjs", "types": "./color/Moz/l/index.d.ts" }, - "./color/MicrosoftOffice/m": { - "require": "./color/MicrosoftOffice/m/index.js", - "import": "./color/MicrosoftOffice/m/index.mjs", - "types": "./color/MicrosoftOffice/m/index.d.ts" - }, - "./color/MicrosoftOffice/l": { - "require": "./color/MicrosoftOffice/l/index.js", - "import": "./color/MicrosoftOffice/l/index.mjs", - "types": "./color/MicrosoftOffice/l/index.d.ts" - }, - "./color/MicrosoftOutlook/m": { - "require": "./color/MicrosoftOutlook/m/index.js", - "import": "./color/MicrosoftOutlook/m/index.mjs", - "types": "./color/MicrosoftOutlook/m/index.d.ts" + "./color/MicrosoftExchange/m": { + "require": "./color/MicrosoftExchange/m/index.js", + "import": "./color/MicrosoftExchange/m/index.mjs", + "types": "./color/MicrosoftExchange/m/index.d.ts" }, - "./color/MicrosoftOutlook/l": { - "require": "./color/MicrosoftOutlook/l/index.js", - "import": "./color/MicrosoftOutlook/l/index.mjs", - "types": "./color/MicrosoftOutlook/l/index.d.ts" + "./color/MicrosoftExchange/l": { + "require": "./color/MicrosoftExchange/l/index.js", + "import": "./color/MicrosoftExchange/l/index.mjs", + "types": "./color/MicrosoftExchange/l/index.d.ts" }, "./color/Microsoft/m": { "require": "./color/Microsoft/m/index.js", @@ -207,16 +217,6 @@ "import": "./color/Microsoft/l/index.mjs", "types": "./color/Microsoft/l/index.d.ts" }, - "./color/Matomo/m": { - "require": "./color/Matomo/m/index.js", - "import": "./color/Matomo/m/index.mjs", - "types": "./color/Matomo/m/index.d.ts" - }, - "./color/Matomo/l": { - "require": "./color/Matomo/l/index.js", - "import": "./color/Matomo/l/index.mjs", - "types": "./color/Matomo/l/index.d.ts" - }, "./color/MetaColored/m": { "require": "./color/MetaColored/m/index.js", "import": "./color/MetaColored/m/index.mjs", @@ -227,6 +227,16 @@ "import": "./color/MetaColored/l/index.mjs", "types": "./color/MetaColored/l/index.d.ts" }, + "./color/Matomo/m": { + "require": "./color/Matomo/m/index.js", + "import": "./color/Matomo/m/index.mjs", + "types": "./color/Matomo/m/index.d.ts" + }, + "./color/Matomo/l": { + "require": "./color/Matomo/l/index.js", + "import": "./color/Matomo/l/index.mjs", + "types": "./color/Matomo/l/index.d.ts" + }, "./color/LookerStudio/m": { "require": "./color/LookerStudio/m/index.js", "import": "./color/LookerStudio/m/index.mjs", @@ -237,26 +247,6 @@ "import": "./color/LookerStudio/l/index.mjs", "types": "./color/LookerStudio/l/index.d.ts" }, - "./color/MicrosoftExchange/m": { - "require": "./color/MicrosoftExchange/m/index.js", - "import": "./color/MicrosoftExchange/m/index.mjs", - "types": "./color/MicrosoftExchange/m/index.d.ts" - }, - "./color/MicrosoftExchange/l": { - "require": "./color/MicrosoftExchange/l/index.js", - "import": "./color/MicrosoftExchange/l/index.mjs", - "types": "./color/MicrosoftExchange/l/index.d.ts" - }, - "./color/Mailchimp/m": { - "require": "./color/Mailchimp/m/index.js", - "import": "./color/Mailchimp/m/index.mjs", - "types": "./color/Mailchimp/m/index.d.ts" - }, - "./color/Mailchimp/l": { - "require": "./color/Mailchimp/l/index.js", - "import": "./color/Mailchimp/l/index.mjs", - "types": "./color/Mailchimp/l/index.d.ts" - }, "./color/LinkedInColored/m": { "require": "./color/LinkedInColored/m/index.js", "import": "./color/LinkedInColored/m/index.mjs", @@ -277,15 +267,25 @@ "import": "./color/InstagramColored/l/index.mjs", "types": "./color/InstagramColored/l/index.d.ts" }, - "./color/Hubspot/m": { - "require": "./color/Hubspot/m/index.js", - "import": "./color/Hubspot/m/index.mjs", - "types": "./color/Hubspot/m/index.d.ts" + "./color/JavaScript/m": { + "require": "./color/JavaScript/m/index.js", + "import": "./color/JavaScript/m/index.mjs", + "types": "./color/JavaScript/m/index.d.ts" }, - "./color/Hubspot/l": { - "require": "./color/Hubspot/l/index.js", - "import": "./color/Hubspot/l/index.mjs", - "types": "./color/Hubspot/l/index.d.ts" + "./color/JavaScript/l": { + "require": "./color/JavaScript/l/index.js", + "import": "./color/JavaScript/l/index.mjs", + "types": "./color/JavaScript/l/index.d.ts" + }, + "./color/Mailchimp/m": { + "require": "./color/Mailchimp/m/index.js", + "import": "./color/Mailchimp/m/index.mjs", + "types": "./color/Mailchimp/m/index.d.ts" + }, + "./color/Mailchimp/l": { + "require": "./color/Mailchimp/l/index.js", + "import": "./color/Mailchimp/l/index.mjs", + "types": "./color/Mailchimp/l/index.d.ts" }, "./color/GoogleSearchConsole/m": { "require": "./color/GoogleSearchConsole/m/index.js", @@ -297,16 +297,6 @@ "import": "./color/GoogleSearchConsole/l/index.mjs", "types": "./color/GoogleSearchConsole/l/index.d.ts" }, - "./color/JavaScript/m": { - "require": "./color/JavaScript/m/index.js", - "import": "./color/JavaScript/m/index.mjs", - "types": "./color/JavaScript/m/index.d.ts" - }, - "./color/JavaScript/l": { - "require": "./color/JavaScript/l/index.js", - "import": "./color/JavaScript/l/index.mjs", - "types": "./color/JavaScript/l/index.d.ts" - }, "./color/GoogleMyBusiness/m": { "require": "./color/GoogleMyBusiness/m/index.js", "import": "./color/GoogleMyBusiness/m/index.mjs", @@ -317,6 +307,26 @@ "import": "./color/GoogleMyBusiness/l/index.mjs", "types": "./color/GoogleMyBusiness/l/index.d.ts" }, + "./color/GoogleMail/m": { + "require": "./color/GoogleMail/m/index.js", + "import": "./color/GoogleMail/m/index.mjs", + "types": "./color/GoogleMail/m/index.d.ts" + }, + "./color/GoogleMail/l": { + "require": "./color/GoogleMail/l/index.js", + "import": "./color/GoogleMail/l/index.mjs", + "types": "./color/GoogleMail/l/index.d.ts" + }, + "./color/GoogleGenerativeAIColored/m": { + "require": "./color/GoogleGenerativeAIColored/m/index.js", + "import": "./color/GoogleGenerativeAIColored/m/index.mjs", + "types": "./color/GoogleGenerativeAIColored/m/index.d.ts" + }, + "./color/GoogleGenerativeAIColored/l": { + "require": "./color/GoogleGenerativeAIColored/l/index.js", + "import": "./color/GoogleGenerativeAIColored/l/index.mjs", + "types": "./color/GoogleGenerativeAIColored/l/index.d.ts" + }, "./color/GoogleSlides/m": { "require": "./color/GoogleSlides/m/index.js", "import": "./color/GoogleSlides/m/index.mjs", @@ -327,6 +337,26 @@ "import": "./color/GoogleSlides/l/index.mjs", "types": "./color/GoogleSlides/l/index.d.ts" }, + "./color/GoogleDocs/m": { + "require": "./color/GoogleDocs/m/index.js", + "import": "./color/GoogleDocs/m/index.mjs", + "types": "./color/GoogleDocs/m/index.d.ts" + }, + "./color/GoogleDocs/l": { + "require": "./color/GoogleDocs/l/index.js", + "import": "./color/GoogleDocs/l/index.mjs", + "types": "./color/GoogleDocs/l/index.d.ts" + }, + "./color/Hubspot/m": { + "require": "./color/Hubspot/m/index.js", + "import": "./color/Hubspot/m/index.mjs", + "types": "./color/Hubspot/m/index.d.ts" + }, + "./color/Hubspot/l": { + "require": "./color/Hubspot/l/index.js", + "import": "./color/Hubspot/l/index.mjs", + "types": "./color/Hubspot/l/index.d.ts" + }, "./color/GoogleSheets/m": { "require": "./color/GoogleSheets/m/index.js", "import": "./color/GoogleSheets/m/index.mjs", @@ -337,16 +367,6 @@ "import": "./color/GoogleSheets/l/index.mjs", "types": "./color/GoogleSheets/l/index.d.ts" }, - "./color/GoogleGenerativeAIColored/m": { - "require": "./color/GoogleGenerativeAIColored/m/index.js", - "import": "./color/GoogleGenerativeAIColored/m/index.mjs", - "types": "./color/GoogleGenerativeAIColored/m/index.d.ts" - }, - "./color/GoogleGenerativeAIColored/l": { - "require": "./color/GoogleGenerativeAIColored/l/index.js", - "import": "./color/GoogleGenerativeAIColored/l/index.mjs", - "types": "./color/GoogleGenerativeAIColored/l/index.d.ts" - }, "./color/GoogleDisplayVideoAds/m": { "require": "./color/GoogleDisplayVideoAds/m/index.js", "import": "./color/GoogleDisplayVideoAds/m/index.mjs", @@ -357,6 +377,26 @@ "import": "./color/GoogleDisplayVideoAds/l/index.mjs", "types": "./color/GoogleDisplayVideoAds/l/index.d.ts" }, + "./color/GoogleAnalytics4/m": { + "require": "./color/GoogleAnalytics4/m/index.js", + "import": "./color/GoogleAnalytics4/m/index.mjs", + "types": "./color/GoogleAnalytics4/m/index.d.ts" + }, + "./color/GoogleAnalytics4/l": { + "require": "./color/GoogleAnalytics4/l/index.js", + "import": "./color/GoogleAnalytics4/l/index.mjs", + "types": "./color/GoogleAnalytics4/l/index.d.ts" + }, + "./color/GoogleColor/m": { + "require": "./color/GoogleColor/m/index.js", + "import": "./color/GoogleColor/m/index.mjs", + "types": "./color/GoogleColor/m/index.d.ts" + }, + "./color/GoogleColor/l": { + "require": "./color/GoogleColor/l/index.js", + "import": "./color/GoogleColor/l/index.mjs", + "types": "./color/GoogleColor/l/index.d.ts" + }, "./color/GoogleDataStudio/m": { "require": "./color/GoogleDataStudio/m/index.js", "import": "./color/GoogleDataStudio/m/index.mjs", @@ -367,50 +407,10 @@ "import": "./color/GoogleDataStudio/l/index.mjs", "types": "./color/GoogleDataStudio/l/index.d.ts" }, - "./color/GoogleDocs/m": { - "require": "./color/GoogleDocs/m/index.js", - "import": "./color/GoogleDocs/m/index.mjs", - "types": "./color/GoogleDocs/m/index.d.ts" - }, - "./color/GoogleDocs/l": { - "require": "./color/GoogleDocs/l/index.js", - "import": "./color/GoogleDocs/l/index.mjs", - "types": "./color/GoogleDocs/l/index.d.ts" - }, - "./color/GoogleMail/m": { - "require": "./color/GoogleMail/m/index.js", - "import": "./color/GoogleMail/m/index.mjs", - "types": "./color/GoogleMail/m/index.d.ts" - }, - "./color/GoogleMail/l": { - "require": "./color/GoogleMail/l/index.js", - "import": "./color/GoogleMail/l/index.mjs", - "types": "./color/GoogleMail/l/index.d.ts" - }, - "./color/GoogleColor/m": { - "require": "./color/GoogleColor/m/index.js", - "import": "./color/GoogleColor/m/index.mjs", - "types": "./color/GoogleColor/m/index.d.ts" - }, - "./color/GoogleColor/l": { - "require": "./color/GoogleColor/l/index.js", - "import": "./color/GoogleColor/l/index.mjs", - "types": "./color/GoogleColor/l/index.d.ts" - }, - "./color/GoogleAnalytics4/m": { - "require": "./color/GoogleAnalytics4/m/index.js", - "import": "./color/GoogleAnalytics4/m/index.mjs", - "types": "./color/GoogleAnalytics4/m/index.d.ts" - }, - "./color/GoogleAnalytics4/l": { - "require": "./color/GoogleAnalytics4/l/index.js", - "import": "./color/GoogleAnalytics4/l/index.mjs", - "types": "./color/GoogleAnalytics4/l/index.d.ts" - }, - "./color/GoogleCloud/m": { - "require": "./color/GoogleCloud/m/index.js", - "import": "./color/GoogleCloud/m/index.mjs", - "types": "./color/GoogleCloud/m/index.d.ts" + "./color/GoogleCloud/m": { + "require": "./color/GoogleCloud/m/index.js", + "import": "./color/GoogleCloud/m/index.mjs", + "types": "./color/GoogleCloud/m/index.d.ts" }, "./color/GoogleCloud/l": { "require": "./color/GoogleCloud/l/index.js", @@ -427,15 +427,15 @@ "import": "./color/GoogleAnalytics/l/index.mjs", "types": "./color/GoogleAnalytics/l/index.d.ts" }, - "./color/GitHubInvert/m": { - "require": "./color/GitHubInvert/m/index.js", - "import": "./color/GitHubInvert/m/index.mjs", - "types": "./color/GitHubInvert/m/index.d.ts" + "./color/GoogleAds/m": { + "require": "./color/GoogleAds/m/index.js", + "import": "./color/GoogleAds/m/index.mjs", + "types": "./color/GoogleAds/m/index.d.ts" }, - "./color/GitHubInvert/l": { - "require": "./color/GitHubInvert/l/index.js", - "import": "./color/GitHubInvert/l/index.mjs", - "types": "./color/GitHubInvert/l/index.d.ts" + "./color/GoogleAds/l": { + "require": "./color/GoogleAds/l/index.js", + "import": "./color/GoogleAds/l/index.mjs", + "types": "./color/GoogleAds/l/index.d.ts" }, "./color/GitLab/m": { "require": "./color/GitLab/m/index.js", @@ -447,6 +447,16 @@ "import": "./color/GitLab/l/index.mjs", "types": "./color/GitLab/l/index.d.ts" }, + "./color/GitHubInvert/m": { + "require": "./color/GitHubInvert/m/index.js", + "import": "./color/GitHubInvert/m/index.mjs", + "types": "./color/GitHubInvert/m/index.d.ts" + }, + "./color/GitHubInvert/l": { + "require": "./color/GitHubInvert/l/index.js", + "import": "./color/GitHubInvert/l/index.mjs", + "types": "./color/GitHubInvert/l/index.d.ts" + }, "./color/GitHub/m": { "require": "./color/GitHub/m/index.js", "import": "./color/GitHub/m/index.mjs", @@ -457,16 +467,6 @@ "import": "./color/GitHub/l/index.mjs", "types": "./color/GitHub/l/index.d.ts" }, - "./color/GoogleAds/m": { - "require": "./color/GoogleAds/m/index.js", - "import": "./color/GoogleAds/m/index.mjs", - "types": "./color/GoogleAds/m/index.d.ts" - }, - "./color/GoogleAds/l": { - "require": "./color/GoogleAds/l/index.js", - "import": "./color/GoogleAds/l/index.mjs", - "types": "./color/GoogleAds/l/index.d.ts" - }, "./color/Figma/m": { "require": "./color/Figma/m/index.js", "import": "./color/Figma/m/index.mjs", @@ -477,35 +477,15 @@ "import": "./color/Figma/l/index.mjs", "types": "./color/Figma/l/index.d.ts" }, - "./color/Confluence/m": { - "require": "./color/Confluence/m/index.js", - "import": "./color/Confluence/m/index.mjs", - "types": "./color/Confluence/m/index.d.ts" - }, - "./color/Confluence/l": { - "require": "./color/Confluence/l/index.js", - "import": "./color/Confluence/l/index.mjs", - "types": "./color/Confluence/l/index.d.ts" - }, - "./color/ConstantContactColored/m": { - "require": "./color/ConstantContactColored/m/index.js", - "import": "./color/ConstantContactColored/m/index.mjs", - "types": "./color/ConstantContactColored/m/index.d.ts" - }, - "./color/ConstantContactColored/l": { - "require": "./color/ConstantContactColored/l/index.js", - "import": "./color/ConstantContactColored/l/index.mjs", - "types": "./color/ConstantContactColored/l/index.d.ts" - }, - "./color/Copilot/m": { - "require": "./color/Copilot/m/index.js", - "import": "./color/Copilot/m/index.mjs", - "types": "./color/Copilot/m/index.d.ts" + "./color/ClaudeColored/m": { + "require": "./color/ClaudeColored/m/index.js", + "import": "./color/ClaudeColored/m/index.mjs", + "types": "./color/ClaudeColored/m/index.d.ts" }, - "./color/Copilot/l": { - "require": "./color/Copilot/l/index.js", - "import": "./color/Copilot/l/index.mjs", - "types": "./color/Copilot/l/index.d.ts" + "./color/ClaudeColored/l": { + "require": "./color/ClaudeColored/l/index.js", + "import": "./color/ClaudeColored/l/index.mjs", + "types": "./color/ClaudeColored/l/index.d.ts" }, "./color/CampaignMonitorColored/m": { "require": "./color/CampaignMonitorColored/m/index.js", @@ -517,15 +497,25 @@ "import": "./color/CampaignMonitorColored/l/index.mjs", "types": "./color/CampaignMonitorColored/l/index.d.ts" }, - "./color/ClaudeColored/m": { - "require": "./color/ClaudeColored/m/index.js", - "import": "./color/ClaudeColored/m/index.mjs", - "types": "./color/ClaudeColored/m/index.d.ts" + "./color/CallTrackingMetricsColored/m": { + "require": "./color/CallTrackingMetricsColored/m/index.js", + "import": "./color/CallTrackingMetricsColored/m/index.mjs", + "types": "./color/CallTrackingMetricsColored/m/index.d.ts" }, - "./color/ClaudeColored/l": { - "require": "./color/ClaudeColored/l/index.js", - "import": "./color/ClaudeColored/l/index.mjs", - "types": "./color/ClaudeColored/l/index.d.ts" + "./color/CallTrackingMetricsColored/l": { + "require": "./color/CallTrackingMetricsColored/l/index.js", + "import": "./color/CallTrackingMetricsColored/l/index.mjs", + "types": "./color/CallTrackingMetricsColored/l/index.d.ts" + }, + "./color/Confluence/m": { + "require": "./color/Confluence/m/index.js", + "import": "./color/Confluence/m/index.mjs", + "types": "./color/Confluence/m/index.d.ts" + }, + "./color/Confluence/l": { + "require": "./color/Confluence/l/index.js", + "import": "./color/Confluence/l/index.mjs", + "types": "./color/Confluence/l/index.d.ts" }, "./color/CallRailColored/m": { "require": "./color/CallRailColored/m/index.js", @@ -537,25 +527,15 @@ "import": "./color/CallRailColored/l/index.mjs", "types": "./color/CallRailColored/l/index.d.ts" }, - "./color/CallTrackingMetricsColored/m": { - "require": "./color/CallTrackingMetricsColored/m/index.js", - "import": "./color/CallTrackingMetricsColored/m/index.mjs", - "types": "./color/CallTrackingMetricsColored/m/index.d.ts" - }, - "./color/CallTrackingMetricsColored/l": { - "require": "./color/CallTrackingMetricsColored/l/index.js", - "import": "./color/CallTrackingMetricsColored/l/index.mjs", - "types": "./color/CallTrackingMetricsColored/l/index.d.ts" - }, - "./color/BirdeyeColored/m": { - "require": "./color/BirdeyeColored/m/index.js", - "import": "./color/BirdeyeColored/m/index.mjs", - "types": "./color/BirdeyeColored/m/index.d.ts" + "./color/ConstantContactColored/m": { + "require": "./color/ConstantContactColored/m/index.js", + "import": "./color/ConstantContactColored/m/index.mjs", + "types": "./color/ConstantContactColored/m/index.d.ts" }, - "./color/BirdeyeColored/l": { - "require": "./color/BirdeyeColored/l/index.js", - "import": "./color/BirdeyeColored/l/index.mjs", - "types": "./color/BirdeyeColored/l/index.d.ts" + "./color/ConstantContactColored/l": { + "require": "./color/ConstantContactColored/l/index.js", + "import": "./color/ConstantContactColored/l/index.mjs", + "types": "./color/ConstantContactColored/l/index.d.ts" }, "./color/Amazon/m": { "require": "./color/Amazon/m/index.js", @@ -567,6 +547,16 @@ "import": "./color/Amazon/l/index.mjs", "types": "./color/Amazon/l/index.d.ts" }, + "./color/Copilot/m": { + "require": "./color/Copilot/m/index.js", + "import": "./color/Copilot/m/index.mjs", + "types": "./color/Copilot/m/index.d.ts" + }, + "./color/Copilot/l": { + "require": "./color/Copilot/l/index.js", + "import": "./color/Copilot/l/index.mjs", + "types": "./color/Copilot/l/index.d.ts" + }, "./color/Ahrefs/m": { "require": "./color/Ahrefs/m/index.js", "import": "./color/Ahrefs/m/index.mjs", @@ -577,6 +567,26 @@ "import": "./color/Ahrefs/l/index.mjs", "types": "./color/Ahrefs/l/index.d.ts" }, + "./color/BirdeyeColored/m": { + "require": "./color/BirdeyeColored/m/index.js", + "import": "./color/BirdeyeColored/m/index.mjs", + "types": "./color/BirdeyeColored/m/index.d.ts" + }, + "./color/BirdeyeColored/l": { + "require": "./color/BirdeyeColored/l/index.js", + "import": "./color/BirdeyeColored/l/index.mjs", + "types": "./color/BirdeyeColored/l/index.d.ts" + }, + "./pay/WeChatPay/m": { + "require": "./pay/WeChatPay/m/index.js", + "import": "./pay/WeChatPay/m/index.mjs", + "types": "./pay/WeChatPay/m/index.d.ts" + }, + "./pay/WeChatPay/l": { + "require": "./pay/WeChatPay/l/index.js", + "import": "./pay/WeChatPay/l/index.mjs", + "types": "./pay/WeChatPay/l/index.d.ts" + }, "./pay/Visa/m": { "require": "./pay/Visa/m/index.js", "import": "./pay/Visa/m/index.mjs", @@ -597,16 +607,6 @@ "import": "./pay/UnionPay/l/index.mjs", "types": "./pay/UnionPay/l/index.d.ts" }, - "./pay/WeChatPay/m": { - "require": "./pay/WeChatPay/m/index.js", - "import": "./pay/WeChatPay/m/index.mjs", - "types": "./pay/WeChatPay/m/index.d.ts" - }, - "./pay/WeChatPay/l": { - "require": "./pay/WeChatPay/l/index.js", - "import": "./pay/WeChatPay/l/index.mjs", - "types": "./pay/WeChatPay/l/index.d.ts" - }, "./pay/PayPal/m": { "require": "./pay/PayPal/m/index.js", "import": "./pay/PayPal/m/index.mjs", @@ -617,36 +617,6 @@ "import": "./pay/PayPal/l/index.mjs", "types": "./pay/PayPal/l/index.d.ts" }, - "./pay/Mastercard/m": { - "require": "./pay/Mastercard/m/index.js", - "import": "./pay/Mastercard/m/index.mjs", - "types": "./pay/Mastercard/m/index.d.ts" - }, - "./pay/Mastercard/l": { - "require": "./pay/Mastercard/l/index.js", - "import": "./pay/Mastercard/l/index.mjs", - "types": "./pay/Mastercard/l/index.d.ts" - }, - "./pay/JCB/m": { - "require": "./pay/JCB/m/index.js", - "import": "./pay/JCB/m/index.mjs", - "types": "./pay/JCB/m/index.d.ts" - }, - "./pay/JCB/l": { - "require": "./pay/JCB/l/index.js", - "import": "./pay/JCB/l/index.mjs", - "types": "./pay/JCB/l/index.d.ts" - }, - "./pay/Discover/m": { - "require": "./pay/Discover/m/index.js", - "import": "./pay/Discover/m/index.mjs", - "types": "./pay/Discover/m/index.d.ts" - }, - "./pay/Discover/l": { - "require": "./pay/Discover/l/index.js", - "import": "./pay/Discover/l/index.mjs", - "types": "./pay/Discover/l/index.d.ts" - }, "./pay/Diners/m": { "require": "./pay/Diners/m/index.js", "import": "./pay/Diners/m/index.mjs", @@ -667,6 +637,26 @@ "import": "./pay/CreditCard/l/index.mjs", "types": "./pay/CreditCard/l/index.d.ts" }, + "./pay/JCB/m": { + "require": "./pay/JCB/m/index.js", + "import": "./pay/JCB/m/index.mjs", + "types": "./pay/JCB/m/index.d.ts" + }, + "./pay/JCB/l": { + "require": "./pay/JCB/l/index.js", + "import": "./pay/JCB/l/index.mjs", + "types": "./pay/JCB/l/index.d.ts" + }, + "./pay/Mastercard/m": { + "require": "./pay/Mastercard/m/index.js", + "import": "./pay/Mastercard/m/index.mjs", + "types": "./pay/Mastercard/m/index.d.ts" + }, + "./pay/Mastercard/l": { + "require": "./pay/Mastercard/l/index.js", + "import": "./pay/Mastercard/l/index.mjs", + "types": "./pay/Mastercard/l/index.d.ts" + }, "./pay/AmericanExpress/m": { "require": "./pay/AmericanExpress/m/index.js", "import": "./pay/AmericanExpress/m/index.mjs", @@ -677,70 +667,100 @@ "import": "./pay/AmericanExpress/l/index.mjs", "types": "./pay/AmericanExpress/l/index.d.ts" }, - "./platform/SocialToolkit": { - "require": "./platform/SocialToolkit/index.js", - "import": "./platform/SocialToolkit/index.mjs", - "types": "./platform/SocialToolkit/index.d.ts" + "./pay/Discover/m": { + "require": "./pay/Discover/m/index.js", + "import": "./pay/Discover/m/index.mjs", + "types": "./pay/Discover/m/index.d.ts" }, - "./platform/SEOToolkit": { - "require": "./platform/SEOToolkit/index.js", - "import": "./platform/SEOToolkit/index.mjs", - "types": "./platform/SEOToolkit/index.d.ts" + "./pay/Discover/l": { + "require": "./pay/Discover/l/index.js", + "import": "./pay/Discover/l/index.mjs", + "types": "./pay/Discover/l/index.d.ts" }, "./platform/TrafficMarketToolkit": { "require": "./platform/TrafficMarketToolkit/index.js", "import": "./platform/TrafficMarketToolkit/index.mjs", "types": "./platform/TrafficMarketToolkit/index.d.ts" }, - "./platform/LocalToolkit": { - "require": "./platform/LocalToolkit/index.js", - "import": "./platform/LocalToolkit/index.mjs", - "types": "./platform/LocalToolkit/index.d.ts" + "./platform/SEOToolkit": { + "require": "./platform/SEOToolkit/index.js", + "import": "./platform/SEOToolkit/index.mjs", + "types": "./platform/SEOToolkit/index.d.ts" }, "./platform/PRToolkit": { "require": "./platform/PRToolkit/index.js", "import": "./platform/PRToolkit/index.mjs", "types": "./platform/PRToolkit/index.d.ts" }, + "./platform/ReportsToolkit": { + "require": "./platform/ReportsToolkit/index.js", + "import": "./platform/ReportsToolkit/index.mjs", + "types": "./platform/ReportsToolkit/index.d.ts" + }, + "./platform/SocialToolkit": { + "require": "./platform/SocialToolkit/index.js", + "import": "./platform/SocialToolkit/index.mjs", + "types": "./platform/SocialToolkit/index.d.ts" + }, "./platform/HomePlatform": { "require": "./platform/HomePlatform/index.js", "import": "./platform/HomePlatform/index.mjs", "types": "./platform/HomePlatform/index.d.ts" }, - "./platform/ReportsToolkit": { - "require": "./platform/ReportsToolkit/index.js", - "import": "./platform/ReportsToolkit/index.mjs", - "types": "./platform/ReportsToolkit/index.d.ts" + "./platform/ContentToolkit": { + "require": "./platform/ContentToolkit/index.js", + "import": "./platform/ContentToolkit/index.mjs", + "types": "./platform/ContentToolkit/index.d.ts" + }, + "./platform/LocalToolkit": { + "require": "./platform/LocalToolkit/index.js", + "import": "./platform/LocalToolkit/index.mjs", + "types": "./platform/LocalToolkit/index.d.ts" }, "./platform/AppCenter": { "require": "./platform/AppCenter/index.js", "import": "./platform/AppCenter/index.mjs", "types": "./platform/AppCenter/index.d.ts" }, - "./platform/ContentToolkit": { - "require": "./platform/ContentToolkit/index.js", - "import": "./platform/ContentToolkit/index.mjs", - "types": "./platform/ContentToolkit/index.d.ts" + "./platform/AISEOToolkit": { + "require": "./platform/AISEOToolkit/index.js", + "import": "./platform/AISEOToolkit/index.mjs", + "types": "./platform/AISEOToolkit/index.d.ts" }, "./platform/EnterpriseSolutions": { "require": "./platform/EnterpriseSolutions/index.js", "import": "./platform/EnterpriseSolutions/index.mjs", "types": "./platform/EnterpriseSolutions/index.d.ts" }, + "./platform/AdsToolkit": { + "require": "./platform/AdsToolkit/index.js", + "import": "./platform/AdsToolkit/index.mjs", + "types": "./platform/AdsToolkit/index.d.ts" + }, "./platform/AIToolkit": { "require": "./platform/AIToolkit/index.js", "import": "./platform/AIToolkit/index.mjs", "types": "./platform/AIToolkit/index.d.ts" }, - "./platform/AISEOToolkit": { - "require": "./platform/AISEOToolkit/index.js", - "import": "./platform/AISEOToolkit/index.mjs", - "types": "./platform/AISEOToolkit/index.d.ts" + "./ZoomMinus/m": { + "require": "./ZoomMinus/m/index.js", + "import": "./ZoomMinus/m/index.mjs", + "types": "./ZoomMinus/m/index.d.ts" }, - "./platform/AdsToolkit": { - "require": "./platform/AdsToolkit/index.js", - "import": "./platform/AdsToolkit/index.mjs", - "types": "./platform/AdsToolkit/index.d.ts" + "./ZoomMinus/l": { + "require": "./ZoomMinus/l/index.js", + "import": "./ZoomMinus/l/index.mjs", + "types": "./ZoomMinus/l/index.d.ts" + }, + "./ZoomPlus/m": { + "require": "./ZoomPlus/m/index.js", + "import": "./ZoomPlus/m/index.mjs", + "types": "./ZoomPlus/m/index.d.ts" + }, + "./ZoomPlus/l": { + "require": "./ZoomPlus/l/index.js", + "import": "./ZoomPlus/l/index.mjs", + "types": "./ZoomPlus/l/index.d.ts" }, "./YoutubePlaceholder/m": { "require": "./YoutubePlaceholder/m/index.js", @@ -762,25 +782,15 @@ "import": "./Yext/l/index.mjs", "types": "./Yext/l/index.d.ts" }, - "./ZoomMinus/m": { - "require": "./ZoomMinus/m/index.js", - "import": "./ZoomMinus/m/index.mjs", - "types": "./ZoomMinus/m/index.d.ts" - }, - "./ZoomMinus/l": { - "require": "./ZoomMinus/l/index.js", - "import": "./ZoomMinus/l/index.mjs", - "types": "./ZoomMinus/l/index.d.ts" - }, - "./ZoomPlus/m": { - "require": "./ZoomPlus/m/index.js", - "import": "./ZoomPlus/m/index.mjs", - "types": "./ZoomPlus/m/index.d.ts" + "./Wristwatch/m": { + "require": "./Wristwatch/m/index.js", + "import": "./Wristwatch/m/index.mjs", + "types": "./Wristwatch/m/index.d.ts" }, - "./ZoomPlus/l": { - "require": "./ZoomPlus/l/index.js", - "import": "./ZoomPlus/l/index.mjs", - "types": "./ZoomPlus/l/index.d.ts" + "./Wristwatch/l": { + "require": "./Wristwatch/l/index.js", + "import": "./Wristwatch/l/index.mjs", + "types": "./Wristwatch/l/index.d.ts" }, "./Wordpress/m": { "require": "./Wordpress/m/index.js", @@ -797,20 +807,10 @@ "import": "./Youtube/m/index.mjs", "types": "./Youtube/m/index.d.ts" }, - "./Youtube/l": { - "require": "./Youtube/l/index.js", - "import": "./Youtube/l/index.mjs", - "types": "./Youtube/l/index.d.ts" - }, - "./Wristwatch/m": { - "require": "./Wristwatch/m/index.js", - "import": "./Wristwatch/m/index.mjs", - "types": "./Wristwatch/m/index.d.ts" - }, - "./Wristwatch/l": { - "require": "./Wristwatch/l/index.js", - "import": "./Wristwatch/l/index.mjs", - "types": "./Wristwatch/l/index.d.ts" + "./Youtube/l": { + "require": "./Youtube/l/index.js", + "import": "./Youtube/l/index.mjs", + "types": "./Youtube/l/index.d.ts" }, "./Wine/m": { "require": "./Wine/m/index.js", @@ -822,15 +822,15 @@ "import": "./Wine/l/index.mjs", "types": "./Wine/l/index.d.ts" }, - "./Warning/m": { - "require": "./Warning/m/index.js", - "import": "./Warning/m/index.mjs", - "types": "./Warning/m/index.d.ts" + "./WebPages/m": { + "require": "./WebPages/m/index.js", + "import": "./WebPages/m/index.mjs", + "types": "./WebPages/m/index.d.ts" }, - "./Warning/l": { - "require": "./Warning/l/index.js", - "import": "./Warning/l/index.mjs", - "types": "./Warning/l/index.d.ts" + "./WebPages/l": { + "require": "./WebPages/l/index.js", + "import": "./WebPages/l/index.mjs", + "types": "./WebPages/l/index.d.ts" }, "./WebStories/m": { "require": "./WebStories/m/index.js", @@ -852,15 +852,15 @@ "import": "./VolumeUp/l/index.mjs", "types": "./VolumeUp/l/index.d.ts" }, - "./WebPages/m": { - "require": "./WebPages/m/index.js", - "import": "./WebPages/m/index.mjs", - "types": "./WebPages/m/index.d.ts" + "./Warning/m": { + "require": "./Warning/m/index.js", + "import": "./Warning/m/index.mjs", + "types": "./Warning/m/index.d.ts" }, - "./WebPages/l": { - "require": "./WebPages/l/index.js", - "import": "./WebPages/l/index.mjs", - "types": "./WebPages/l/index.d.ts" + "./Warning/l": { + "require": "./Warning/l/index.js", + "import": "./Warning/l/index.mjs", + "types": "./Warning/l/index.d.ts" }, "./Vk/m": { "require": "./Vk/m/index.js", @@ -892,15 +892,15 @@ "import": "./VideoStop/l/index.mjs", "types": "./VideoStop/l/index.d.ts" }, - "./VideoAlt/m": { - "require": "./VideoAlt/m/index.js", - "import": "./VideoAlt/m/index.mjs", - "types": "./VideoAlt/m/index.d.ts" + "./VideoList/m": { + "require": "./VideoList/m/index.js", + "import": "./VideoList/m/index.mjs", + "types": "./VideoList/m/index.d.ts" }, - "./VideoAlt/l": { - "require": "./VideoAlt/l/index.js", - "import": "./VideoAlt/l/index.mjs", - "types": "./VideoAlt/l/index.d.ts" + "./VideoList/l": { + "require": "./VideoList/l/index.js", + "import": "./VideoList/l/index.mjs", + "types": "./VideoList/l/index.d.ts" }, "./Veterinary/m": { "require": "./Veterinary/m/index.js", @@ -912,6 +912,16 @@ "import": "./Veterinary/l/index.mjs", "types": "./Veterinary/l/index.d.ts" }, + "./Video/m": { + "require": "./Video/m/index.js", + "import": "./Video/m/index.mjs", + "types": "./Video/m/index.d.ts" + }, + "./Video/l": { + "require": "./Video/l/index.js", + "import": "./Video/l/index.mjs", + "types": "./Video/l/index.d.ts" + }, "./VideoCarousel/m": { "require": "./VideoCarousel/m/index.js", "import": "./VideoCarousel/m/index.mjs", @@ -922,15 +932,25 @@ "import": "./VideoCarousel/l/index.mjs", "types": "./VideoCarousel/l/index.d.ts" }, - "./VideoList/m": { - "require": "./VideoList/m/index.js", - "import": "./VideoList/m/index.mjs", - "types": "./VideoList/m/index.d.ts" + "./VideoAlt/m": { + "require": "./VideoAlt/m/index.js", + "import": "./VideoAlt/m/index.mjs", + "types": "./VideoAlt/m/index.d.ts" }, - "./VideoList/l": { - "require": "./VideoList/l/index.js", - "import": "./VideoList/l/index.mjs", - "types": "./VideoList/l/index.d.ts" + "./VideoAlt/l": { + "require": "./VideoAlt/l/index.js", + "import": "./VideoAlt/l/index.mjs", + "types": "./VideoAlt/l/index.d.ts" + }, + "./Vacation/m": { + "require": "./Vacation/m/index.js", + "import": "./Vacation/m/index.mjs", + "types": "./Vacation/m/index.d.ts" + }, + "./Vacation/l": { + "require": "./Vacation/l/index.js", + "import": "./Vacation/l/index.mjs", + "types": "./Vacation/l/index.d.ts" }, "./Value/m": { "require": "./Value/m/index.js", @@ -942,15 +962,15 @@ "import": "./Value/l/index.mjs", "types": "./Value/l/index.d.ts" }, - "./Video/m": { - "require": "./Video/m/index.js", - "import": "./Video/m/index.mjs", - "types": "./Video/m/index.d.ts" + "./UserSharedFirst/m": { + "require": "./UserSharedFirst/m/index.js", + "import": "./UserSharedFirst/m/index.mjs", + "types": "./UserSharedFirst/m/index.d.ts" }, - "./Video/l": { - "require": "./Video/l/index.js", - "import": "./Video/l/index.mjs", - "types": "./Video/l/index.d.ts" + "./UserSharedFirst/l": { + "require": "./UserSharedFirst/l/index.js", + "import": "./UserSharedFirst/l/index.mjs", + "types": "./UserSharedFirst/l/index.d.ts" }, "./UserShared/m": { "require": "./UserShared/m/index.js", @@ -982,25 +1002,15 @@ "import": "./UserDemo/l/index.mjs", "types": "./UserDemo/l/index.d.ts" }, - "./Vacation/m": { - "require": "./Vacation/m/index.js", - "import": "./Vacation/m/index.mjs", - "types": "./Vacation/m/index.d.ts" - }, - "./Vacation/l": { - "require": "./Vacation/l/index.js", - "import": "./Vacation/l/index.mjs", - "types": "./Vacation/l/index.d.ts" - }, - "./UserSharedFirst/m": { - "require": "./UserSharedFirst/m/index.js", - "import": "./UserSharedFirst/m/index.mjs", - "types": "./UserSharedFirst/m/index.d.ts" + "./User/m": { + "require": "./User/m/index.js", + "import": "./User/m/index.mjs", + "types": "./User/m/index.d.ts" }, - "./UserSharedFirst/l": { - "require": "./UserSharedFirst/l/index.js", - "import": "./UserSharedFirst/l/index.mjs", - "types": "./UserSharedFirst/l/index.d.ts" + "./User/l": { + "require": "./User/l/index.js", + "import": "./User/l/index.mjs", + "types": "./User/l/index.d.ts" }, "./Unsplash/m": { "require": "./Unsplash/m/index.js", @@ -1022,25 +1032,15 @@ "import": "./Unarchive/l/index.mjs", "types": "./Unarchive/l/index.d.ts" }, - "./Twitter/m": { - "require": "./Twitter/m/index.js", - "import": "./Twitter/m/index.mjs", - "types": "./Twitter/m/index.d.ts" - }, - "./Twitter/l": { - "require": "./Twitter/l/index.js", - "import": "./Twitter/l/index.mjs", - "types": "./Twitter/l/index.d.ts" - }, - "./User/m": { - "require": "./User/m/index.js", - "import": "./User/m/index.mjs", - "types": "./User/m/index.d.ts" + "./Undo/m": { + "require": "./Undo/m/index.js", + "import": "./Undo/m/index.mjs", + "types": "./Undo/m/index.d.ts" }, - "./User/l": { - "require": "./User/l/index.js", - "import": "./User/l/index.mjs", - "types": "./User/l/index.d.ts" + "./Undo/l": { + "require": "./Undo/l/index.js", + "import": "./Undo/l/index.mjs", + "types": "./Undo/l/index.d.ts" }, "./TwitterCarousel/m": { "require": "./TwitterCarousel/m/index.js", @@ -1052,25 +1052,15 @@ "import": "./TwitterCarousel/l/index.mjs", "types": "./TwitterCarousel/l/index.d.ts" }, - "./Undo/m": { - "require": "./Undo/m/index.js", - "import": "./Undo/m/index.mjs", - "types": "./Undo/m/index.d.ts" - }, - "./Undo/l": { - "require": "./Undo/l/index.js", - "import": "./Undo/l/index.mjs", - "types": "./Undo/l/index.d.ts" - }, - "./TopStories/m": { - "require": "./TopStories/m/index.js", - "import": "./TopStories/m/index.mjs", - "types": "./TopStories/m/index.d.ts" + "./Toxic/m": { + "require": "./Toxic/m/index.js", + "import": "./Toxic/m/index.mjs", + "types": "./Toxic/m/index.d.ts" }, - "./TopStories/l": { - "require": "./TopStories/l/index.js", - "import": "./TopStories/l/index.mjs", - "types": "./TopStories/l/index.d.ts" + "./Toxic/l": { + "require": "./Toxic/l/index.js", + "import": "./Toxic/l/index.mjs", + "types": "./Toxic/l/index.d.ts" }, "./Trello/m": { "require": "./Trello/m/index.js", @@ -1082,15 +1072,15 @@ "import": "./Trello/l/index.mjs", "types": "./Trello/l/index.d.ts" }, - "./Trash/m": { - "require": "./Trash/m/index.js", - "import": "./Trash/m/index.mjs", - "types": "./Trash/m/index.d.ts" + "./Twitter/m": { + "require": "./Twitter/m/index.js", + "import": "./Twitter/m/index.mjs", + "types": "./Twitter/m/index.d.ts" }, - "./Trash/l": { - "require": "./Trash/l/index.js", - "import": "./Trash/l/index.mjs", - "types": "./Trash/l/index.d.ts" + "./Twitter/l": { + "require": "./Twitter/l/index.js", + "import": "./Twitter/l/index.mjs", + "types": "./Twitter/l/index.d.ts" }, "./TimeNight/m": { "require": "./TimeNight/m/index.js", @@ -1102,15 +1092,15 @@ "import": "./TimeNight/l/index.mjs", "types": "./TimeNight/l/index.d.ts" }, - "./Toxic/m": { - "require": "./Toxic/m/index.js", - "import": "./Toxic/m/index.mjs", - "types": "./Toxic/m/index.d.ts" + "./TopStories/m": { + "require": "./TopStories/m/index.js", + "import": "./TopStories/m/index.mjs", + "types": "./TopStories/m/index.d.ts" }, - "./Toxic/l": { - "require": "./Toxic/l/index.js", - "import": "./Toxic/l/index.mjs", - "types": "./Toxic/l/index.d.ts" + "./TopStories/l": { + "require": "./TopStories/l/index.js", + "import": "./TopStories/l/index.mjs", + "types": "./TopStories/l/index.d.ts" }, "./TimeClock/m": { "require": "./TimeClock/m/index.js", @@ -1122,6 +1112,36 @@ "import": "./TimeClock/l/index.mjs", "types": "./TimeClock/l/index.d.ts" }, + "./Tile/m": { + "require": "./Tile/m/index.js", + "import": "./Tile/m/index.mjs", + "types": "./Tile/m/index.d.ts" + }, + "./Tile/l": { + "require": "./Tile/l/index.js", + "import": "./Tile/l/index.mjs", + "types": "./Tile/l/index.d.ts" + }, + "./Trash/m": { + "require": "./Trash/m/index.js", + "import": "./Trash/m/index.mjs", + "types": "./Trash/m/index.d.ts" + }, + "./Trash/l": { + "require": "./Trash/l/index.js", + "import": "./Trash/l/index.mjs", + "types": "./Trash/l/index.d.ts" + }, + "./TimeDay/m": { + "require": "./TimeDay/m/index.js", + "import": "./TimeDay/m/index.mjs", + "types": "./TimeDay/m/index.d.ts" + }, + "./TimeDay/l": { + "require": "./TimeDay/l/index.js", + "import": "./TimeDay/l/index.mjs", + "types": "./TimeDay/l/index.d.ts" + }, "./TikTok/m": { "require": "./TikTok/m/index.js", "import": "./TikTok/m/index.mjs", @@ -1132,15 +1152,15 @@ "import": "./TikTok/l/index.mjs", "types": "./TikTok/l/index.d.ts" }, - "./Tile/m": { - "require": "./Tile/m/index.js", - "import": "./Tile/m/index.mjs", - "types": "./Tile/m/index.d.ts" - }, - "./Tile/l": { - "require": "./Tile/l/index.js", - "import": "./Tile/l/index.mjs", - "types": "./Tile/l/index.d.ts" + "./ThumbDown/m": { + "require": "./ThumbDown/m/index.js", + "import": "./ThumbDown/m/index.mjs", + "types": "./ThumbDown/m/index.d.ts" + }, + "./ThumbDown/l": { + "require": "./ThumbDown/l/index.js", + "import": "./ThumbDown/l/index.mjs", + "types": "./ThumbDown/l/index.d.ts" }, "./ThumbUp/m": { "require": "./ThumbUp/m/index.js", @@ -1152,15 +1172,15 @@ "import": "./ThumbUp/l/index.mjs", "types": "./ThumbUp/l/index.d.ts" }, - "./TimeDay/m": { - "require": "./TimeDay/m/index.js", - "import": "./TimeDay/m/index.mjs", - "types": "./TimeDay/m/index.d.ts" + "./TextBold/m": { + "require": "./TextBold/m/index.js", + "import": "./TextBold/m/index.mjs", + "types": "./TextBold/m/index.d.ts" }, - "./TimeDay/l": { - "require": "./TimeDay/l/index.js", - "import": "./TimeDay/l/index.mjs", - "types": "./TimeDay/l/index.d.ts" + "./TextBold/l": { + "require": "./TextBold/l/index.js", + "import": "./TextBold/l/index.mjs", + "types": "./TextBold/l/index.d.ts" }, "./TextUnderline/m": { "require": "./TextUnderline/m/index.js", @@ -1182,15 +1202,15 @@ "import": "./TextQuotes/l/index.mjs", "types": "./TextQuotes/l/index.d.ts" }, - "./ThumbDown/m": { - "require": "./ThumbDown/m/index.js", - "import": "./ThumbDown/m/index.mjs", - "types": "./ThumbDown/m/index.d.ts" + "./TextItalic/m": { + "require": "./TextItalic/m/index.js", + "import": "./TextItalic/m/index.mjs", + "types": "./TextItalic/m/index.d.ts" }, - "./ThumbDown/l": { - "require": "./ThumbDown/l/index.js", - "import": "./ThumbDown/l/index.mjs", - "types": "./ThumbDown/l/index.d.ts" + "./TextItalic/l": { + "require": "./TextItalic/l/index.js", + "import": "./TextItalic/l/index.mjs", + "types": "./TextItalic/l/index.d.ts" }, "./Text/m": { "require": "./Text/m/index.js", @@ -1212,25 +1232,25 @@ "import": "./Telescope/l/index.mjs", "types": "./Telescope/l/index.d.ts" }, - "./TextBold/m": { - "require": "./TextBold/m/index.js", - "import": "./TextBold/m/index.mjs", - "types": "./TextBold/m/index.d.ts" + "./TagFilled/m": { + "require": "./TagFilled/m/index.js", + "import": "./TagFilled/m/index.mjs", + "types": "./TagFilled/m/index.d.ts" }, - "./TextBold/l": { - "require": "./TextBold/l/index.js", - "import": "./TextBold/l/index.mjs", - "types": "./TextBold/l/index.d.ts" + "./TagFilled/l": { + "require": "./TagFilled/l/index.js", + "import": "./TagFilled/l/index.mjs", + "types": "./TagFilled/l/index.d.ts" }, - "./TextItalic/m": { - "require": "./TextItalic/m/index.js", - "import": "./TextItalic/m/index.mjs", - "types": "./TextItalic/m/index.d.ts" + "./Tag/m": { + "require": "./Tag/m/index.js", + "import": "./Tag/m/index.mjs", + "types": "./Tag/m/index.d.ts" }, - "./TextItalic/l": { - "require": "./TextItalic/l/index.js", - "import": "./TextItalic/l/index.mjs", - "types": "./TextItalic/l/index.d.ts" + "./Tag/l": { + "require": "./Tag/l/index.js", + "import": "./Tag/l/index.mjs", + "types": "./Tag/l/index.d.ts" }, "./TackNo/m": { "require": "./TackNo/m/index.js", @@ -1242,25 +1262,15 @@ "import": "./TackNo/l/index.mjs", "types": "./TackNo/l/index.d.ts" }, - "./Tack/m": { - "require": "./Tack/m/index.js", - "import": "./Tack/m/index.mjs", - "types": "./Tack/m/index.d.ts" - }, - "./Tack/l": { - "require": "./Tack/l/index.js", - "import": "./Tack/l/index.mjs", - "types": "./Tack/l/index.d.ts" - }, - "./TagFilled/m": { - "require": "./TagFilled/m/index.js", - "import": "./TagFilled/m/index.mjs", - "types": "./TagFilled/m/index.d.ts" + "./Tablet/m": { + "require": "./Tablet/m/index.js", + "import": "./Tablet/m/index.mjs", + "types": "./Tablet/m/index.d.ts" }, - "./TagFilled/l": { - "require": "./TagFilled/l/index.js", - "import": "./TagFilled/l/index.mjs", - "types": "./TagFilled/l/index.d.ts" + "./Tablet/l": { + "require": "./Tablet/l/index.js", + "import": "./Tablet/l/index.mjs", + "types": "./Tablet/l/index.d.ts" }, "./Table/m": { "require": "./Table/m/index.js", @@ -1272,16 +1282,6 @@ "import": "./Table/l/index.mjs", "types": "./Table/l/index.d.ts" }, - "./Tag/m": { - "require": "./Tag/m/index.js", - "import": "./Tag/m/index.mjs", - "types": "./Tag/m/index.d.ts" - }, - "./Tag/l": { - "require": "./Tag/l/index.js", - "import": "./Tag/l/index.mjs", - "types": "./Tag/l/index.d.ts" - }, "./SummaryAI/m": { "require": "./SummaryAI/m/index.js", "import": "./SummaryAI/m/index.mjs", @@ -1292,6 +1292,16 @@ "import": "./SummaryAI/l/index.mjs", "types": "./SummaryAI/l/index.d.ts" }, + "./Tack/m": { + "require": "./Tack/m/index.js", + "import": "./Tack/m/index.mjs", + "types": "./Tack/m/index.d.ts" + }, + "./Tack/l": { + "require": "./Tack/l/index.js", + "import": "./Tack/l/index.mjs", + "types": "./Tack/l/index.d.ts" + }, "./StoriesAI/m": { "require": "./StoriesAI/m/index.js", "import": "./StoriesAI/m/index.mjs", @@ -1302,26 +1312,6 @@ "import": "./StoriesAI/l/index.mjs", "types": "./StoriesAI/l/index.d.ts" }, - "./Tablet/m": { - "require": "./Tablet/m/index.js", - "import": "./Tablet/m/index.mjs", - "types": "./Tablet/m/index.d.ts" - }, - "./Tablet/l": { - "require": "./Tablet/l/index.js", - "import": "./Tablet/l/index.mjs", - "types": "./Tablet/l/index.d.ts" - }, - "./Stop/m": { - "require": "./Stop/m/index.js", - "import": "./Stop/m/index.mjs", - "types": "./Stop/m/index.d.ts" - }, - "./Stop/l": { - "require": "./Stop/l/index.js", - "import": "./Stop/l/index.mjs", - "types": "./Stop/l/index.d.ts" - }, "./Sport/m": { "require": "./Sport/m/index.js", "import": "./Sport/m/index.mjs", @@ -1352,25 +1342,25 @@ "import": "./SortDesc/l/index.mjs", "types": "./SortDesc/l/index.d.ts" }, - "./SmileSad/m": { - "require": "./SmileSad/m/index.js", - "import": "./SmileSad/m/index.mjs", - "types": "./SmileSad/m/index.d.ts" + "./Stop/m": { + "require": "./Stop/m/index.js", + "import": "./Stop/m/index.mjs", + "types": "./Stop/m/index.d.ts" }, - "./SmileSad/l": { - "require": "./SmileSad/l/index.js", - "import": "./SmileSad/l/index.mjs", - "types": "./SmileSad/l/index.d.ts" + "./Stop/l": { + "require": "./Stop/l/index.js", + "import": "./Stop/l/index.mjs", + "types": "./Stop/l/index.d.ts" }, - "./SortAsc/m": { - "require": "./SortAsc/m/index.js", - "import": "./SortAsc/m/index.mjs", - "types": "./SortAsc/m/index.d.ts" + "./Smoking/m": { + "require": "./Smoking/m/index.js", + "import": "./Smoking/m/index.mjs", + "types": "./Smoking/m/index.d.ts" }, - "./SortAsc/l": { - "require": "./SortAsc/l/index.js", - "import": "./SortAsc/l/index.mjs", - "types": "./SortAsc/l/index.d.ts" + "./Smoking/l": { + "require": "./Smoking/l/index.js", + "import": "./Smoking/l/index.mjs", + "types": "./Smoking/l/index.d.ts" }, "./SmileSimple/m": { "require": "./SmileSimple/m/index.js", @@ -1382,15 +1372,25 @@ "import": "./SmileSimple/l/index.mjs", "types": "./SmileSimple/l/index.d.ts" }, - "./Smoking/m": { - "require": "./Smoking/m/index.js", - "import": "./Smoking/m/index.mjs", - "types": "./Smoking/m/index.d.ts" + "./SmileHappy/m": { + "require": "./SmileHappy/m/index.js", + "import": "./SmileHappy/m/index.mjs", + "types": "./SmileHappy/m/index.d.ts" }, - "./Smoking/l": { - "require": "./Smoking/l/index.js", - "import": "./Smoking/l/index.mjs", - "types": "./Smoking/l/index.d.ts" + "./SmileHappy/l": { + "require": "./SmileHappy/l/index.js", + "import": "./SmileHappy/l/index.mjs", + "types": "./SmileHappy/l/index.d.ts" + }, + "./SortAsc/m": { + "require": "./SortAsc/m/index.js", + "import": "./SortAsc/m/index.mjs", + "types": "./SortAsc/m/index.d.ts" + }, + "./SortAsc/l": { + "require": "./SortAsc/l/index.js", + "import": "./SortAsc/l/index.mjs", + "types": "./SortAsc/l/index.d.ts" }, "./SmileNeutral/m": { "require": "./SmileNeutral/m/index.js", @@ -1402,6 +1402,36 @@ "import": "./SmileNeutral/l/index.mjs", "types": "./SmileNeutral/l/index.d.ts" }, + "./Skype/m": { + "require": "./Skype/m/index.js", + "import": "./Skype/m/index.mjs", + "types": "./Skype/m/index.d.ts" + }, + "./Skype/l": { + "require": "./Skype/l/index.js", + "import": "./Skype/l/index.mjs", + "types": "./Skype/l/index.d.ts" + }, + "./SmileSad/m": { + "require": "./SmileSad/m/index.js", + "import": "./SmileSad/m/index.mjs", + "types": "./SmileSad/m/index.d.ts" + }, + "./SmileSad/l": { + "require": "./SmileSad/l/index.js", + "import": "./SmileSad/l/index.mjs", + "types": "./SmileSad/l/index.d.ts" + }, + "./SideMenuRight/m": { + "require": "./SideMenuRight/m/index.js", + "import": "./SideMenuRight/m/index.mjs", + "types": "./SideMenuRight/m/index.d.ts" + }, + "./SideMenuRight/l": { + "require": "./SideMenuRight/l/index.js", + "import": "./SideMenuRight/l/index.mjs", + "types": "./SideMenuRight/l/index.d.ts" + }, "./Sitemap/m": { "require": "./Sitemap/m/index.js", "import": "./Sitemap/m/index.mjs", @@ -1412,6 +1442,16 @@ "import": "./Sitemap/l/index.mjs", "types": "./Sitemap/l/index.d.ts" }, + "./SideMenuLeft/m": { + "require": "./SideMenuLeft/m/index.js", + "import": "./SideMenuLeft/m/index.mjs", + "types": "./SideMenuLeft/m/index.d.ts" + }, + "./SideMenuLeft/l": { + "require": "./SideMenuLeft/l/index.js", + "import": "./SideMenuLeft/l/index.mjs", + "types": "./SideMenuLeft/l/index.d.ts" + }, "./SimplifyText/m": { "require": "./SimplifyText/m/index.js", "import": "./SimplifyText/m/index.mjs", @@ -1422,16 +1462,6 @@ "import": "./SimplifyText/l/index.mjs", "types": "./SimplifyText/l/index.d.ts" }, - "./Skype/m": { - "require": "./Skype/m/index.js", - "import": "./Skype/m/index.mjs", - "types": "./Skype/m/index.d.ts" - }, - "./Skype/l": { - "require": "./Skype/l/index.js", - "import": "./Skype/l/index.mjs", - "types": "./Skype/l/index.d.ts" - }, "./Slack/m": { "require": "./Slack/m/index.js", "import": "./Slack/m/index.mjs", @@ -1442,15 +1472,15 @@ "import": "./Slack/l/index.mjs", "types": "./Slack/l/index.d.ts" }, - "./SmileHappy/m": { - "require": "./SmileHappy/m/index.js", - "import": "./SmileHappy/m/index.mjs", - "types": "./SmileHappy/m/index.d.ts" + "./ShowNo/m": { + "require": "./ShowNo/m/index.js", + "import": "./ShowNo/m/index.mjs", + "types": "./ShowNo/m/index.d.ts" }, - "./SmileHappy/l": { - "require": "./SmileHappy/l/index.js", - "import": "./SmileHappy/l/index.mjs", - "types": "./SmileHappy/l/index.d.ts" + "./ShowNo/l": { + "require": "./ShowNo/l/index.js", + "import": "./ShowNo/l/index.mjs", + "types": "./ShowNo/l/index.d.ts" }, "./ShowYes/m": { "require": "./ShowYes/m/index.js", @@ -1462,15 +1492,15 @@ "import": "./ShowYes/l/index.mjs", "types": "./ShowYes/l/index.d.ts" }, - "./ShowNo/m": { - "require": "./ShowNo/m/index.js", - "import": "./ShowNo/m/index.mjs", - "types": "./ShowNo/m/index.d.ts" + "./Settings/m": { + "require": "./Settings/m/index.js", + "import": "./Settings/m/index.mjs", + "types": "./Settings/m/index.d.ts" }, - "./ShowNo/l": { - "require": "./ShowNo/l/index.js", - "import": "./ShowNo/l/index.mjs", - "types": "./ShowNo/l/index.d.ts" + "./Settings/l": { + "require": "./Settings/l/index.js", + "import": "./Settings/l/index.mjs", + "types": "./Settings/l/index.d.ts" }, "./ShortVideos/m": { "require": "./ShortVideos/m/index.js", @@ -1482,16 +1512,6 @@ "import": "./ShortVideos/l/index.mjs", "types": "./ShortVideos/l/index.d.ts" }, - "./SideMenuRight/m": { - "require": "./SideMenuRight/m/index.js", - "import": "./SideMenuRight/m/index.mjs", - "types": "./SideMenuRight/m/index.d.ts" - }, - "./SideMenuRight/l": { - "require": "./SideMenuRight/l/index.js", - "import": "./SideMenuRight/l/index.mjs", - "types": "./SideMenuRight/l/index.d.ts" - }, "./ShareAlt/m": { "require": "./ShareAlt/m/index.js", "import": "./ShareAlt/m/index.mjs", @@ -1502,15 +1522,15 @@ "import": "./ShareAlt/l/index.mjs", "types": "./ShareAlt/l/index.d.ts" }, - "./SideMenuLeft/m": { - "require": "./SideMenuLeft/m/index.js", - "import": "./SideMenuLeft/m/index.mjs", - "types": "./SideMenuLeft/m/index.d.ts" + "./Serp/m": { + "require": "./Serp/m/index.js", + "import": "./Serp/m/index.mjs", + "types": "./Serp/m/index.d.ts" }, - "./SideMenuLeft/l": { - "require": "./SideMenuLeft/l/index.js", - "import": "./SideMenuLeft/l/index.mjs", - "types": "./SideMenuLeft/l/index.d.ts" + "./Serp/l": { + "require": "./Serp/l/index.js", + "import": "./Serp/l/index.mjs", + "types": "./Serp/l/index.d.ts" }, "./Share/m": { "require": "./Share/m/index.js", @@ -1522,16 +1542,6 @@ "import": "./Share/l/index.mjs", "types": "./Share/l/index.d.ts" }, - "./Settings/m": { - "require": "./Settings/m/index.js", - "import": "./Settings/m/index.mjs", - "types": "./Settings/m/index.d.ts" - }, - "./Settings/l": { - "require": "./Settings/l/index.js", - "import": "./Settings/l/index.mjs", - "types": "./Settings/l/index.d.ts" - }, "./SeoQuake/m": { "require": "./SeoQuake/m/index.js", "import": "./SeoQuake/m/index.mjs", @@ -1542,26 +1552,6 @@ "import": "./SeoQuake/l/index.mjs", "types": "./SeoQuake/l/index.d.ts" }, - "./Serp/m": { - "require": "./Serp/m/index.js", - "import": "./Serp/m/index.mjs", - "types": "./Serp/m/index.d.ts" - }, - "./Serp/l": { - "require": "./Serp/l/index.js", - "import": "./Serp/l/index.mjs", - "types": "./Serp/l/index.d.ts" - }, - "./SemrushRank/m": { - "require": "./SemrushRank/m/index.js", - "import": "./SemrushRank/m/index.mjs", - "types": "./SemrushRank/m/index.d.ts" - }, - "./SemrushRank/l": { - "require": "./SemrushRank/l/index.js", - "import": "./SemrushRank/l/index.mjs", - "types": "./SemrushRank/l/index.d.ts" - }, "./Sent/m": { "require": "./Sent/m/index.js", "import": "./Sent/m/index.mjs", @@ -1572,25 +1562,15 @@ "import": "./Sent/l/index.mjs", "types": "./Sent/l/index.d.ts" }, - "./SeeResultsAbout/m": { - "require": "./SeeResultsAbout/m/index.js", - "import": "./SeeResultsAbout/m/index.mjs", - "types": "./SeeResultsAbout/m/index.d.ts" - }, - "./SeeResultsAbout/l": { - "require": "./SeeResultsAbout/l/index.js", - "import": "./SeeResultsAbout/l/index.mjs", - "types": "./SeeResultsAbout/l/index.d.ts" - }, - "./SecurityNo/m": { - "require": "./SecurityNo/m/index.js", - "import": "./SecurityNo/m/index.mjs", - "types": "./SecurityNo/m/index.d.ts" + "./SemrushRank/m": { + "require": "./SemrushRank/m/index.js", + "import": "./SemrushRank/m/index.mjs", + "types": "./SemrushRank/m/index.d.ts" }, - "./SecurityNo/l": { - "require": "./SecurityNo/l/index.js", - "import": "./SecurityNo/l/index.mjs", - "types": "./SecurityNo/l/index.d.ts" + "./SemrushRank/l": { + "require": "./SemrushRank/l/index.js", + "import": "./SemrushRank/l/index.mjs", + "types": "./SemrushRank/l/index.d.ts" }, "./Semrush/m": { "require": "./Semrush/m/index.js", @@ -1612,25 +1592,25 @@ "import": "./Sellzone/l/index.mjs", "types": "./Sellzone/l/index.d.ts" }, - "./Search/m": { - "require": "./Search/m/index.js", - "import": "./Search/m/index.mjs", - "types": "./Search/m/index.d.ts" + "./SeeResultsAbout/m": { + "require": "./SeeResultsAbout/m/index.js", + "import": "./SeeResultsAbout/m/index.mjs", + "types": "./SeeResultsAbout/m/index.d.ts" }, - "./Search/l": { - "require": "./Search/l/index.js", - "import": "./Search/l/index.mjs", - "types": "./Search/l/index.d.ts" + "./SeeResultsAbout/l": { + "require": "./SeeResultsAbout/l/index.js", + "import": "./SeeResultsAbout/l/index.mjs", + "types": "./SeeResultsAbout/l/index.d.ts" }, - "./Security/m": { - "require": "./Security/m/index.js", - "import": "./Security/m/index.mjs", - "types": "./Security/m/index.d.ts" + "./Science/m": { + "require": "./Science/m/index.js", + "import": "./Science/m/index.mjs", + "types": "./Science/m/index.d.ts" }, - "./Security/l": { - "require": "./Security/l/index.js", - "import": "./Security/l/index.mjs", - "types": "./Security/l/index.d.ts" + "./Science/l": { + "require": "./Science/l/index.js", + "import": "./Science/l/index.mjs", + "types": "./Science/l/index.d.ts" }, "./Safari/m": { "require": "./Safari/m/index.js", @@ -1642,6 +1622,16 @@ "import": "./Safari/l/index.mjs", "types": "./Safari/l/index.d.ts" }, + "./Rss/m": { + "require": "./Rss/m/index.js", + "import": "./Rss/m/index.mjs", + "types": "./Rss/m/index.d.ts" + }, + "./Rss/l": { + "require": "./Rss/l/index.js", + "import": "./Rss/l/index.mjs", + "types": "./Rss/l/index.d.ts" + }, "./Robot/m": { "require": "./Robot/m/index.js", "import": "./Robot/m/index.mjs", @@ -1652,16 +1642,6 @@ "import": "./Robot/l/index.mjs", "types": "./Robot/l/index.d.ts" }, - "./Science/m": { - "require": "./Science/m/index.js", - "import": "./Science/m/index.mjs", - "types": "./Science/m/index.d.ts" - }, - "./Science/l": { - "require": "./Science/l/index.js", - "import": "./Science/l/index.mjs", - "types": "./Science/l/index.d.ts" - }, "./Retweet/m": { "require": "./Retweet/m/index.js", "import": "./Retweet/m/index.mjs", @@ -1682,16 +1662,6 @@ "import": "./Return/l/index.mjs", "types": "./Return/l/index.d.ts" }, - "./Rss/m": { - "require": "./Rss/m/index.js", - "import": "./Rss/m/index.mjs", - "types": "./Rss/m/index.d.ts" - }, - "./Rss/l": { - "require": "./Rss/l/index.js", - "import": "./Rss/l/index.mjs", - "types": "./Rss/l/index.d.ts" - }, "./Restaurant/m": { "require": "./Restaurant/m/index.js", "import": "./Restaurant/m/index.mjs", @@ -1712,6 +1682,16 @@ "import": "./ResizeRow/l/index.mjs", "types": "./ResizeRow/l/index.d.ts" }, + "./ResizeCol/m": { + "require": "./ResizeCol/m/index.js", + "import": "./ResizeCol/m/index.mjs", + "types": "./ResizeCol/m/index.d.ts" + }, + "./ResizeCol/l": { + "require": "./ResizeCol/l/index.js", + "import": "./ResizeCol/l/index.mjs", + "types": "./ResizeCol/l/index.d.ts" + }, "./Report/m": { "require": "./Report/m/index.js", "import": "./Report/m/index.mjs", @@ -1722,15 +1702,45 @@ "import": "./Report/l/index.mjs", "types": "./Report/l/index.d.ts" }, - "./Rephrase/m": { - "require": "./Rephrase/m/index.js", - "import": "./Rephrase/m/index.mjs", - "types": "./Rephrase/m/index.d.ts" + "./SecurityNo/m": { + "require": "./SecurityNo/m/index.js", + "import": "./SecurityNo/m/index.mjs", + "types": "./SecurityNo/m/index.d.ts" }, - "./Rephrase/l": { - "require": "./Rephrase/l/index.js", - "import": "./Rephrase/l/index.mjs", - "types": "./Rephrase/l/index.d.ts" + "./SecurityNo/l": { + "require": "./SecurityNo/l/index.js", + "import": "./SecurityNo/l/index.mjs", + "types": "./SecurityNo/l/index.d.ts" + }, + "./Security/m": { + "require": "./Security/m/index.js", + "import": "./Security/m/index.mjs", + "types": "./Security/m/index.d.ts" + }, + "./Security/l": { + "require": "./Security/l/index.js", + "import": "./Security/l/index.mjs", + "types": "./Security/l/index.d.ts" + }, + "./Search/m": { + "require": "./Search/m/index.js", + "import": "./Search/m/index.mjs", + "types": "./Search/m/index.d.ts" + }, + "./Search/l": { + "require": "./Search/l/index.js", + "import": "./Search/l/index.mjs", + "types": "./Search/l/index.d.ts" + }, + "./Religion/m": { + "require": "./Religion/m/index.js", + "import": "./Religion/m/index.mjs", + "types": "./Religion/m/index.d.ts" + }, + "./Religion/l": { + "require": "./Religion/l/index.js", + "import": "./Religion/l/index.mjs", + "types": "./Religion/l/index.d.ts" }, "./Reply/m": { "require": "./Reply/m/index.js", @@ -1742,15 +1752,25 @@ "import": "./Reply/l/index.mjs", "types": "./Reply/l/index.d.ts" }, - "./ResizeCol/m": { - "require": "./ResizeCol/m/index.js", - "import": "./ResizeCol/m/index.mjs", - "types": "./ResizeCol/m/index.d.ts" + "./Rephrase/m": { + "require": "./Rephrase/m/index.js", + "import": "./Rephrase/m/index.mjs", + "types": "./Rephrase/m/index.d.ts" }, - "./ResizeCol/l": { - "require": "./ResizeCol/l/index.js", - "import": "./ResizeCol/l/index.mjs", - "types": "./ResizeCol/l/index.d.ts" + "./Rephrase/l": { + "require": "./Rephrase/l/index.js", + "import": "./Rephrase/l/index.mjs", + "types": "./Rephrase/l/index.d.ts" + }, + "./Reload/m": { + "require": "./Reload/m/index.js", + "import": "./Reload/m/index.mjs", + "types": "./Reload/m/index.d.ts" + }, + "./Reload/l": { + "require": "./Reload/l/index.js", + "import": "./Reload/l/index.mjs", + "types": "./Reload/l/index.d.ts" }, "./RelatedSearches/m": { "require": "./RelatedSearches/m/index.js", @@ -1762,16 +1782,6 @@ "import": "./RelatedSearches/l/index.mjs", "types": "./RelatedSearches/l/index.d.ts" }, - "./Religion/m": { - "require": "./Religion/m/index.js", - "import": "./Religion/m/index.mjs", - "types": "./Religion/m/index.d.ts" - }, - "./Religion/l": { - "require": "./Religion/l/index.js", - "import": "./Religion/l/index.mjs", - "types": "./Religion/l/index.d.ts" - }, "./RelatedProducts/m": { "require": "./RelatedProducts/m/index.js", "import": "./RelatedProducts/m/index.mjs", @@ -1782,36 +1792,6 @@ "import": "./RelatedProducts/l/index.mjs", "types": "./RelatedProducts/l/index.d.ts" }, - "./Reload/m": { - "require": "./Reload/m/index.js", - "import": "./Reload/m/index.mjs", - "types": "./Reload/m/index.d.ts" - }, - "./Reload/l": { - "require": "./Reload/l/index.js", - "import": "./Reload/l/index.mjs", - "types": "./Reload/l/index.d.ts" - }, - "./Redo/m": { - "require": "./Redo/m/index.js", - "import": "./Redo/m/index.mjs", - "types": "./Redo/m/index.d.ts" - }, - "./Redo/l": { - "require": "./Redo/l/index.js", - "import": "./Redo/l/index.mjs", - "types": "./Redo/l/index.d.ts" - }, - "./Recreation/m": { - "require": "./Recreation/m/index.js", - "import": "./Recreation/m/index.mjs", - "types": "./Recreation/m/index.d.ts" - }, - "./Recreation/l": { - "require": "./Recreation/l/index.js", - "import": "./Recreation/l/index.mjs", - "types": "./Recreation/l/index.d.ts" - }, "./Recent/m": { "require": "./Recent/m/index.js", "import": "./Recent/m/index.mjs", @@ -1822,15 +1802,15 @@ "import": "./Recent/l/index.mjs", "types": "./Recent/l/index.d.ts" }, - "./Redirect/m": { - "require": "./Redirect/m/index.js", - "import": "./Redirect/m/index.mjs", - "types": "./Redirect/m/index.d.ts" + "./QuestionsAnswers/m": { + "require": "./QuestionsAnswers/m/index.js", + "import": "./QuestionsAnswers/m/index.mjs", + "types": "./QuestionsAnswers/m/index.d.ts" }, - "./Redirect/l": { - "require": "./Redirect/l/index.js", - "import": "./Redirect/l/index.mjs", - "types": "./Redirect/l/index.d.ts" + "./QuestionsAnswers/l": { + "require": "./QuestionsAnswers/l/index.js", + "import": "./QuestionsAnswers/l/index.mjs", + "types": "./QuestionsAnswers/l/index.d.ts" }, "./QuestionSerp/m": { "require": "./QuestionSerp/m/index.js", @@ -1852,15 +1832,35 @@ "import": "./Question/l/index.mjs", "types": "./Question/l/index.d.ts" }, - "./QuestionsAnswers/m": { - "require": "./QuestionsAnswers/m/index.js", - "import": "./QuestionsAnswers/m/index.mjs", - "types": "./QuestionsAnswers/m/index.d.ts" + "./Redo/m": { + "require": "./Redo/m/index.js", + "import": "./Redo/m/index.mjs", + "types": "./Redo/m/index.d.ts" }, - "./QuestionsAnswers/l": { - "require": "./QuestionsAnswers/l/index.js", - "import": "./QuestionsAnswers/l/index.mjs", - "types": "./QuestionsAnswers/l/index.d.ts" + "./Redo/l": { + "require": "./Redo/l/index.js", + "import": "./Redo/l/index.mjs", + "types": "./Redo/l/index.d.ts" + }, + "./Redirect/m": { + "require": "./Redirect/m/index.js", + "import": "./Redirect/m/index.mjs", + "types": "./Redirect/m/index.d.ts" + }, + "./Redirect/l": { + "require": "./Redirect/l/index.js", + "import": "./Redirect/l/index.mjs", + "types": "./Redirect/l/index.d.ts" + }, + "./Recreation/m": { + "require": "./Recreation/m/index.js", + "import": "./Recreation/m/index.mjs", + "types": "./Recreation/m/index.d.ts" + }, + "./Recreation/l": { + "require": "./Recreation/l/index.js", + "import": "./Recreation/l/index.mjs", + "types": "./Recreation/l/index.d.ts" }, "./Pulse/m": { "require": "./Pulse/m/index.js", @@ -1882,15 +1882,15 @@ "import": "./PublicUtility/l/index.mjs", "types": "./PublicUtility/l/index.d.ts" }, - "./Prowly/m": { - "require": "./Prowly/m/index.js", - "import": "./Prowly/m/index.mjs", - "types": "./Prowly/m/index.d.ts" + "./PublicSafety/m": { + "require": "./PublicSafety/m/index.js", + "import": "./PublicSafety/m/index.mjs", + "types": "./PublicSafety/m/index.d.ts" }, - "./Prowly/l": { - "require": "./Prowly/l/index.js", - "import": "./Prowly/l/index.mjs", - "types": "./Prowly/l/index.d.ts" + "./PublicSafety/l": { + "require": "./PublicSafety/l/index.js", + "import": "./PublicSafety/l/index.mjs", + "types": "./PublicSafety/l/index.d.ts" }, "./PositionTop/m": { "require": "./PositionTop/m/index.js", @@ -1912,6 +1912,16 @@ "import": "./Printing/l/index.mjs", "types": "./Printing/l/index.d.ts" }, + "./Prowly/m": { + "require": "./Prowly/m/index.js", + "import": "./Prowly/m/index.mjs", + "types": "./Prowly/m/index.d.ts" + }, + "./Prowly/l": { + "require": "./Prowly/l/index.js", + "import": "./Prowly/l/index.mjs", + "types": "./Prowly/l/index.d.ts" + }, "./Power/m": { "require": "./Power/m/index.js", "import": "./Power/m/index.mjs", @@ -1922,25 +1932,25 @@ "import": "./Power/l/index.mjs", "types": "./Power/l/index.d.ts" }, - "./PublicSafety/m": { - "require": "./PublicSafety/m/index.js", - "import": "./PublicSafety/m/index.mjs", - "types": "./PublicSafety/m/index.d.ts" + "./PositionBottom/m": { + "require": "./PositionBottom/m/index.js", + "import": "./PositionBottom/m/index.mjs", + "types": "./PositionBottom/m/index.d.ts" }, - "./PublicSafety/l": { - "require": "./PublicSafety/l/index.js", - "import": "./PublicSafety/l/index.mjs", - "types": "./PublicSafety/l/index.d.ts" + "./PositionBottom/l": { + "require": "./PositionBottom/l/index.js", + "import": "./PositionBottom/l/index.mjs", + "types": "./PositionBottom/l/index.d.ts" }, - "./PositionLeft/m": { - "require": "./PositionLeft/m/index.js", - "import": "./PositionLeft/m/index.mjs", - "types": "./PositionLeft/m/index.d.ts" + "./PopupAlt/m": { + "require": "./PopupAlt/m/index.js", + "import": "./PopupAlt/m/index.mjs", + "types": "./PopupAlt/m/index.d.ts" }, - "./PositionLeft/l": { - "require": "./PositionLeft/l/index.js", - "import": "./PositionLeft/l/index.mjs", - "types": "./PositionLeft/l/index.d.ts" + "./PopupAlt/l": { + "require": "./PopupAlt/l/index.js", + "import": "./PopupAlt/l/index.mjs", + "types": "./PopupAlt/l/index.d.ts" }, "./PositionRight/m": { "require": "./PositionRight/m/index.js", @@ -1952,16 +1962,6 @@ "import": "./PositionRight/l/index.mjs", "types": "./PositionRight/l/index.d.ts" }, - "./PositionBottom/m": { - "require": "./PositionBottom/m/index.js", - "import": "./PositionBottom/m/index.mjs", - "types": "./PositionBottom/m/index.d.ts" - }, - "./PositionBottom/l": { - "require": "./PositionBottom/l/index.js", - "import": "./PositionBottom/l/index.mjs", - "types": "./PositionBottom/l/index.d.ts" - }, "./PositionMiddle/m": { "require": "./PositionMiddle/m/index.js", "import": "./PositionMiddle/m/index.mjs", @@ -1972,6 +1972,26 @@ "import": "./PositionMiddle/l/index.mjs", "types": "./PositionMiddle/l/index.d.ts" }, + "./PositionLeft/m": { + "require": "./PositionLeft/m/index.js", + "import": "./PositionLeft/m/index.mjs", + "types": "./PositionLeft/m/index.d.ts" + }, + "./PositionLeft/l": { + "require": "./PositionLeft/l/index.js", + "import": "./PositionLeft/l/index.mjs", + "types": "./PositionLeft/l/index.d.ts" + }, + "./PopularProducts/m": { + "require": "./PopularProducts/m/index.js", + "import": "./PopularProducts/m/index.mjs", + "types": "./PopularProducts/m/index.d.ts" + }, + "./PopularProducts/l": { + "require": "./PopularProducts/l/index.js", + "import": "./PopularProducts/l/index.mjs", + "types": "./PopularProducts/l/index.d.ts" + }, "./Popup/m": { "require": "./Popup/m/index.js", "import": "./Popup/m/index.mjs", @@ -1992,26 +2012,6 @@ "import": "./PopularStores/l/index.mjs", "types": "./PopularStores/l/index.d.ts" }, - "./PopupAlt/m": { - "require": "./PopupAlt/m/index.js", - "import": "./PopupAlt/m/index.mjs", - "types": "./PopupAlt/m/index.d.ts" - }, - "./PopupAlt/l": { - "require": "./PopupAlt/l/index.js", - "import": "./PopupAlt/l/index.mjs", - "types": "./PopupAlt/l/index.d.ts" - }, - "./PopularProducts/m": { - "require": "./PopularProducts/m/index.js", - "import": "./PopularProducts/m/index.mjs", - "types": "./PopularProducts/m/index.d.ts" - }, - "./PopularProducts/l": { - "require": "./PopularProducts/l/index.js", - "import": "./PopularProducts/l/index.mjs", - "types": "./PopularProducts/l/index.d.ts" - }, "./Plug/m": { "require": "./Plug/m/index.js", "import": "./Plug/m/index.mjs", @@ -2022,16 +2022,6 @@ "import": "./Plug/l/index.mjs", "types": "./Plug/l/index.d.ts" }, - "./Pins/m": { - "require": "./Pins/m/index.js", - "import": "./Pins/m/index.mjs", - "types": "./Pins/m/index.d.ts" - }, - "./Pins/l": { - "require": "./Pins/l/index.js", - "import": "./Pins/l/index.mjs", - "types": "./Pins/l/index.d.ts" - }, "./Pinterest/m": { "require": "./Pinterest/m/index.js", "import": "./Pinterest/m/index.mjs", @@ -2042,15 +2032,25 @@ "import": "./Pinterest/l/index.mjs", "types": "./Pinterest/l/index.d.ts" }, - "./PinUsd/m": { - "require": "./PinUsd/m/index.js", - "import": "./PinUsd/m/index.mjs", - "types": "./PinUsd/m/index.d.ts" + "./PinMap/m": { + "require": "./PinMap/m/index.js", + "import": "./PinMap/m/index.mjs", + "types": "./PinMap/m/index.d.ts" }, - "./PinUsd/l": { - "require": "./PinUsd/l/index.js", - "import": "./PinUsd/l/index.mjs", - "types": "./PinUsd/l/index.d.ts" + "./PinMap/l": { + "require": "./PinMap/l/index.js", + "import": "./PinMap/l/index.mjs", + "types": "./PinMap/l/index.d.ts" + }, + "./Pins/m": { + "require": "./Pins/m/index.js", + "import": "./Pins/m/index.mjs", + "types": "./Pins/m/index.d.ts" + }, + "./Pins/l": { + "require": "./Pins/l/index.js", + "import": "./Pins/l/index.mjs", + "types": "./Pins/l/index.d.ts" }, "./Pin/m": { "require": "./Pin/m/index.js", @@ -2062,36 +2062,6 @@ "import": "./Pin/l/index.mjs", "types": "./Pin/l/index.d.ts" }, - "./PinList/m": { - "require": "./PinList/m/index.js", - "import": "./PinList/m/index.mjs", - "types": "./PinList/m/index.d.ts" - }, - "./PinList/l": { - "require": "./PinList/l/index.js", - "import": "./PinList/l/index.mjs", - "types": "./PinList/l/index.d.ts" - }, - "./PinNo/m": { - "require": "./PinNo/m/index.js", - "import": "./PinNo/m/index.mjs", - "types": "./PinNo/m/index.d.ts" - }, - "./PinNo/l": { - "require": "./PinNo/l/index.js", - "import": "./PinNo/l/index.mjs", - "types": "./PinNo/l/index.d.ts" - }, - "./PinMap/m": { - "require": "./PinMap/m/index.js", - "import": "./PinMap/m/index.mjs", - "types": "./PinMap/m/index.d.ts" - }, - "./PinMap/l": { - "require": "./PinMap/l/index.js", - "import": "./PinMap/l/index.mjs", - "types": "./PinMap/l/index.d.ts" - }, "./Pictures/m": { "require": "./Pictures/m/index.js", "import": "./Pictures/m/index.mjs", @@ -2112,15 +2082,15 @@ "import": "./PictureFrame/l/index.mjs", "types": "./PictureFrame/l/index.d.ts" }, - "./PictureAdd/m": { - "require": "./PictureAdd/m/index.js", - "import": "./PictureAdd/m/index.mjs", - "types": "./PictureAdd/m/index.d.ts" + "./PinUsd/m": { + "require": "./PinUsd/m/index.js", + "import": "./PinUsd/m/index.mjs", + "types": "./PinUsd/m/index.d.ts" }, - "./PictureAdd/l": { - "require": "./PictureAdd/l/index.js", - "import": "./PictureAdd/l/index.mjs", - "types": "./PictureAdd/l/index.d.ts" + "./PinUsd/l": { + "require": "./PinUsd/l/index.js", + "import": "./PinUsd/l/index.mjs", + "types": "./PinUsd/l/index.d.ts" }, "./Picture/m": { "require": "./Picture/m/index.js", @@ -2132,15 +2102,15 @@ "import": "./Picture/l/index.mjs", "types": "./Picture/l/index.d.ts" }, - "./Phone/m": { - "require": "./Phone/m/index.js", - "import": "./Phone/m/index.mjs", - "types": "./Phone/m/index.d.ts" + "./PinNo/m": { + "require": "./PinNo/m/index.js", + "import": "./PinNo/m/index.mjs", + "types": "./PinNo/m/index.d.ts" }, - "./Phone/l": { - "require": "./Phone/l/index.js", - "import": "./Phone/l/index.mjs", - "types": "./Phone/l/index.d.ts" + "./PinNo/l": { + "require": "./PinNo/l/index.js", + "import": "./PinNo/l/index.mjs", + "types": "./PinNo/l/index.d.ts" }, "./Photo/m": { "require": "./Photo/m/index.js", @@ -2152,6 +2122,36 @@ "import": "./Photo/l/index.mjs", "types": "./Photo/l/index.d.ts" }, + "./PinList/m": { + "require": "./PinList/m/index.js", + "import": "./PinList/m/index.mjs", + "types": "./PinList/m/index.d.ts" + }, + "./PinList/l": { + "require": "./PinList/l/index.js", + "import": "./PinList/l/index.mjs", + "types": "./PinList/l/index.d.ts" + }, + "./PictureAdd/m": { + "require": "./PictureAdd/m/index.js", + "import": "./PictureAdd/m/index.mjs", + "types": "./PictureAdd/m/index.d.ts" + }, + "./PictureAdd/l": { + "require": "./PictureAdd/l/index.js", + "import": "./PictureAdd/l/index.mjs", + "types": "./PictureAdd/l/index.d.ts" + }, + "./Phone/m": { + "require": "./Phone/m/index.js", + "import": "./Phone/m/index.mjs", + "types": "./Phone/m/index.d.ts" + }, + "./Phone/l": { + "require": "./Phone/l/index.js", + "import": "./Phone/l/index.mjs", + "types": "./Phone/l/index.d.ts" + }, "./Pause/m": { "require": "./Pause/m/index.js", "import": "./Pause/m/index.mjs", @@ -2172,15 +2172,15 @@ "import": "./Perplexity/l/index.mjs", "types": "./Perplexity/l/index.d.ts" }, - "./OrientationPortrait/m": { - "require": "./OrientationPortrait/m/index.js", - "import": "./OrientationPortrait/m/index.mjs", - "types": "./OrientationPortrait/m/index.d.ts" + "./Packaging/m": { + "require": "./Packaging/m/index.js", + "import": "./Packaging/m/index.mjs", + "types": "./Packaging/m/index.d.ts" }, - "./OrientationPortrait/l": { - "require": "./OrientationPortrait/l/index.js", - "import": "./OrientationPortrait/l/index.mjs", - "types": "./OrientationPortrait/l/index.d.ts" + "./Packaging/l": { + "require": "./Packaging/l/index.js", + "import": "./Packaging/l/index.mjs", + "types": "./Packaging/l/index.d.ts" }, "./OrganicCarousel/m": { "require": "./OrganicCarousel/m/index.js", @@ -2192,6 +2192,26 @@ "import": "./OrganicCarousel/l/index.mjs", "types": "./OrganicCarousel/l/index.d.ts" }, + "./OrientationPortrait/m": { + "require": "./OrientationPortrait/m/index.js", + "import": "./OrientationPortrait/m/index.mjs", + "types": "./OrientationPortrait/m/index.d.ts" + }, + "./OrientationPortrait/l": { + "require": "./OrientationPortrait/l/index.js", + "import": "./OrientationPortrait/l/index.mjs", + "types": "./OrientationPortrait/l/index.d.ts" + }, + "./Organic/m": { + "require": "./Organic/m/index.js", + "import": "./Organic/m/index.mjs", + "types": "./Organic/m/index.d.ts" + }, + "./Organic/l": { + "require": "./Organic/l/index.js", + "import": "./Organic/l/index.mjs", + "types": "./Organic/l/index.d.ts" + }, "./OrientationLandscape/m": { "require": "./OrientationLandscape/m/index.js", "import": "./OrientationLandscape/m/index.mjs", @@ -2212,26 +2232,6 @@ "import": "./Opera/l/index.mjs", "types": "./Opera/l/index.d.ts" }, - "./Oil/m": { - "require": "./Oil/m/index.js", - "import": "./Oil/m/index.mjs", - "types": "./Oil/m/index.d.ts" - }, - "./Oil/l": { - "require": "./Oil/l/index.js", - "import": "./Oil/l/index.mjs", - "types": "./Oil/l/index.d.ts" - }, - "./Packaging/m": { - "require": "./Packaging/m/index.js", - "import": "./Packaging/m/index.mjs", - "types": "./Packaging/m/index.d.ts" - }, - "./Packaging/l": { - "require": "./Packaging/l/index.js", - "import": "./Packaging/l/index.mjs", - "types": "./Packaging/l/index.d.ts" - }, "./NotificationNo/m": { "require": "./NotificationNo/m/index.js", "import": "./NotificationNo/m/index.mjs", @@ -2242,6 +2242,16 @@ "import": "./NotificationNo/l/index.mjs", "types": "./NotificationNo/l/index.d.ts" }, + "./Oil/m": { + "require": "./Oil/m/index.js", + "import": "./Oil/m/index.mjs", + "types": "./Oil/m/index.d.ts" + }, + "./Oil/l": { + "require": "./Oil/l/index.js", + "import": "./Oil/l/index.mjs", + "types": "./Oil/l/index.d.ts" + }, "./Notification/m": { "require": "./Notification/m/index.js", "import": "./Notification/m/index.mjs", @@ -2262,26 +2272,6 @@ "import": "./Note/l/index.mjs", "types": "./Note/l/index.d.ts" }, - "./Organic/m": { - "require": "./Organic/m/index.js", - "import": "./Organic/m/index.mjs", - "types": "./Organic/m/index.d.ts" - }, - "./Organic/l": { - "require": "./Organic/l/index.js", - "import": "./Organic/l/index.mjs", - "types": "./Organic/l/index.d.ts" - }, - "./MoveAlt/m": { - "require": "./MoveAlt/m/index.js", - "import": "./MoveAlt/m/index.mjs", - "types": "./MoveAlt/m/index.d.ts" - }, - "./MoveAlt/l": { - "require": "./MoveAlt/l/index.js", - "import": "./MoveAlt/l/index.mjs", - "types": "./MoveAlt/l/index.d.ts" - }, "./Museum/m": { "require": "./Museum/m/index.js", "import": "./Museum/m/index.mjs", @@ -2292,16 +2282,6 @@ "import": "./Museum/l/index.mjs", "types": "./Museum/l/index.d.ts" }, - "./Monitoring/m": { - "require": "./Monitoring/m/index.js", - "import": "./Monitoring/m/index.mjs", - "types": "./Monitoring/m/index.d.ts" - }, - "./Monitoring/l": { - "require": "./Monitoring/l/index.js", - "import": "./Monitoring/l/index.mjs", - "types": "./Monitoring/l/index.d.ts" - }, "./News/m": { "require": "./News/m/index.js", "import": "./News/m/index.mjs", @@ -2322,25 +2302,25 @@ "import": "./Music/l/index.mjs", "types": "./Music/l/index.d.ts" }, - "./Military/m": { - "require": "./Military/m/index.js", - "import": "./Military/m/index.mjs", - "types": "./Military/m/index.d.ts" + "./Monitoring/m": { + "require": "./Monitoring/m/index.js", + "import": "./Monitoring/m/index.mjs", + "types": "./Monitoring/m/index.d.ts" }, - "./Military/l": { - "require": "./Military/l/index.js", - "import": "./Military/l/index.mjs", - "types": "./Military/l/index.d.ts" + "./Monitoring/l": { + "require": "./Monitoring/l/index.js", + "import": "./Monitoring/l/index.mjs", + "types": "./Monitoring/l/index.d.ts" }, - "./MoneyCoins/m": { - "require": "./MoneyCoins/m/index.js", - "import": "./MoneyCoins/m/index.mjs", - "types": "./MoneyCoins/m/index.d.ts" + "./MoveAlt/m": { + "require": "./MoveAlt/m/index.js", + "import": "./MoveAlt/m/index.mjs", + "types": "./MoveAlt/m/index.d.ts" }, - "./MoneyCoins/l": { - "require": "./MoneyCoins/l/index.js", - "import": "./MoneyCoins/l/index.mjs", - "types": "./MoneyCoins/l/index.d.ts" + "./MoveAlt/l": { + "require": "./MoveAlt/l/index.js", + "import": "./MoveAlt/l/index.mjs", + "types": "./MoveAlt/l/index.d.ts" }, "./Mobile/m": { "require": "./Mobile/m/index.js", @@ -2362,15 +2342,15 @@ "import": "./Microphone/l/index.mjs", "types": "./Microphone/l/index.d.ts" }, - "./Megaphone/m": { - "require": "./Megaphone/m/index.js", - "import": "./Megaphone/m/index.mjs", - "types": "./Megaphone/m/index.d.ts" + "./Military/m": { + "require": "./Military/m/index.js", + "import": "./Military/m/index.mjs", + "types": "./Military/m/index.d.ts" }, - "./Megaphone/l": { - "require": "./Megaphone/l/index.js", - "import": "./Megaphone/l/index.mjs", - "types": "./Megaphone/l/index.d.ts" + "./Military/l": { + "require": "./Military/l/index.js", + "import": "./Military/l/index.mjs", + "types": "./Military/l/index.d.ts" }, "./Medkit/m": { "require": "./Medkit/m/index.js", @@ -2382,15 +2362,35 @@ "import": "./Medkit/l/index.mjs", "types": "./Medkit/l/index.d.ts" }, - "./MathPlus/m": { - "require": "./MathPlus/m/index.js", - "import": "./MathPlus/m/index.mjs", - "types": "./MathPlus/m/index.d.ts" + "./Megaphone/m": { + "require": "./Megaphone/m/index.js", + "import": "./Megaphone/m/index.mjs", + "types": "./Megaphone/m/index.d.ts" }, - "./MathPlus/l": { - "require": "./MathPlus/l/index.js", - "import": "./MathPlus/l/index.mjs", - "types": "./MathPlus/l/index.d.ts" + "./Megaphone/l": { + "require": "./Megaphone/l/index.js", + "import": "./Megaphone/l/index.mjs", + "types": "./Megaphone/l/index.d.ts" + }, + "./MathMinusAlt/m": { + "require": "./MathMinusAlt/m/index.js", + "import": "./MathMinusAlt/m/index.mjs", + "types": "./MathMinusAlt/m/index.d.ts" + }, + "./MathMinusAlt/l": { + "require": "./MathMinusAlt/l/index.js", + "import": "./MathMinusAlt/l/index.mjs", + "types": "./MathMinusAlt/l/index.d.ts" + }, + "./MathMinus/m": { + "require": "./MathMinus/m/index.js", + "import": "./MathMinus/m/index.mjs", + "types": "./MathMinus/m/index.d.ts" + }, + "./MathMinus/l": { + "require": "./MathMinus/l/index.js", + "import": "./MathMinus/l/index.mjs", + "types": "./MathMinus/l/index.d.ts" }, "./MathPlusAlt/m": { "require": "./MathPlusAlt/m/index.js", @@ -2402,15 +2402,25 @@ "import": "./MathPlusAlt/l/index.mjs", "types": "./MathPlusAlt/l/index.d.ts" }, - "./MathMinus/m": { - "require": "./MathMinus/m/index.js", - "import": "./MathMinus/m/index.mjs", - "types": "./MathMinus/m/index.d.ts" + "./MathPlus/m": { + "require": "./MathPlus/m/index.js", + "import": "./MathPlus/m/index.mjs", + "types": "./MathPlus/m/index.d.ts" + }, + "./MathPlus/l": { + "require": "./MathPlus/l/index.js", + "import": "./MathPlus/l/index.mjs", + "types": "./MathPlus/l/index.d.ts" + }, + "./MailOpen/m": { + "require": "./MailOpen/m/index.js", + "import": "./MailOpen/m/index.mjs", + "types": "./MailOpen/m/index.d.ts" }, - "./MathMinus/l": { - "require": "./MathMinus/l/index.js", - "import": "./MathMinus/l/index.mjs", - "types": "./MathMinus/l/index.d.ts" + "./MailOpen/l": { + "require": "./MailOpen/l/index.js", + "import": "./MailOpen/l/index.mjs", + "types": "./MailOpen/l/index.d.ts" }, "./Marine/m": { "require": "./Marine/m/index.js", @@ -2422,6 +2432,26 @@ "import": "./Marine/l/index.mjs", "types": "./Marine/l/index.d.ts" }, + "./Mail/m": { + "require": "./Mail/m/index.js", + "import": "./Mail/m/index.mjs", + "types": "./Mail/m/index.d.ts" + }, + "./Mail/l": { + "require": "./Mail/l/index.js", + "import": "./Mail/l/index.mjs", + "types": "./Mail/l/index.d.ts" + }, + "./MoneyCoins/m": { + "require": "./MoneyCoins/m/index.js", + "import": "./MoneyCoins/m/index.mjs", + "types": "./MoneyCoins/m/index.d.ts" + }, + "./MoneyCoins/l": { + "require": "./MoneyCoins/l/index.js", + "import": "./MoneyCoins/l/index.mjs", + "types": "./MoneyCoins/l/index.d.ts" + }, "./MailOpenFilled/m": { "require": "./MailOpenFilled/m/index.js", "import": "./MailOpenFilled/m/index.mjs", @@ -2432,15 +2462,25 @@ "import": "./MailOpenFilled/l/index.mjs", "types": "./MailOpenFilled/l/index.d.ts" }, - "./MathMinusAlt/m": { - "require": "./MathMinusAlt/m/index.js", - "import": "./MathMinusAlt/m/index.mjs", - "types": "./MathMinusAlt/m/index.d.ts" + "./Magnet/m": { + "require": "./Magnet/m/index.js", + "import": "./Magnet/m/index.mjs", + "types": "./Magnet/m/index.d.ts" }, - "./MathMinusAlt/l": { - "require": "./MathMinusAlt/l/index.js", - "import": "./MathMinusAlt/l/index.mjs", - "types": "./MathMinusAlt/l/index.d.ts" + "./Magnet/l": { + "require": "./Magnet/l/index.js", + "import": "./Magnet/l/index.mjs", + "types": "./Magnet/l/index.d.ts" + }, + "./Logistic/m": { + "require": "./Logistic/m/index.js", + "import": "./Logistic/m/index.mjs", + "types": "./Logistic/m/index.d.ts" + }, + "./Logistic/l": { + "require": "./Logistic/l/index.js", + "import": "./Logistic/l/index.mjs", + "types": "./Logistic/l/index.d.ts" }, "./MailFilled/m": { "require": "./MailFilled/m/index.js", @@ -2452,25 +2492,15 @@ "import": "./MailFilled/l/index.mjs", "types": "./MailFilled/l/index.d.ts" }, - "./Mail/m": { - "require": "./Mail/m/index.js", - "import": "./Mail/m/index.mjs", - "types": "./Mail/m/index.d.ts" - }, - "./Mail/l": { - "require": "./Mail/l/index.js", - "import": "./Mail/l/index.mjs", - "types": "./Mail/l/index.d.ts" - }, - "./Magnet/m": { - "require": "./Magnet/m/index.js", - "import": "./Magnet/m/index.mjs", - "types": "./Magnet/m/index.d.ts" + "./LockYes/m": { + "require": "./LockYes/m/index.js", + "import": "./LockYes/m/index.mjs", + "types": "./LockYes/m/index.d.ts" }, - "./Magnet/l": { - "require": "./Magnet/l/index.js", - "import": "./Magnet/l/index.mjs", - "types": "./Magnet/l/index.d.ts" + "./LockYes/l": { + "require": "./LockYes/l/index.js", + "import": "./LockYes/l/index.mjs", + "types": "./LockYes/l/index.d.ts" }, "./MagicWand/m": { "require": "./MagicWand/m/index.js", @@ -2482,15 +2512,15 @@ "import": "./MagicWand/l/index.mjs", "types": "./MagicWand/l/index.d.ts" }, - "./MailOpen/m": { - "require": "./MailOpen/m/index.js", - "import": "./MailOpen/m/index.mjs", - "types": "./MailOpen/m/index.d.ts" + "./ListNumber/m": { + "require": "./ListNumber/m/index.js", + "import": "./ListNumber/m/index.mjs", + "types": "./ListNumber/m/index.d.ts" }, - "./MailOpen/l": { - "require": "./MailOpen/l/index.js", - "import": "./MailOpen/l/index.mjs", - "types": "./MailOpen/l/index.d.ts" + "./ListNumber/l": { + "require": "./ListNumber/l/index.js", + "import": "./ListNumber/l/index.mjs", + "types": "./ListNumber/l/index.d.ts" }, "./LockNo/m": { "require": "./LockNo/m/index.js", @@ -2512,56 +2542,6 @@ "import": "./ListCheck/l/index.mjs", "types": "./ListCheck/l/index.d.ts" }, - "./Logistic/m": { - "require": "./Logistic/m/index.js", - "import": "./Logistic/m/index.mjs", - "types": "./Logistic/m/index.d.ts" - }, - "./Logistic/l": { - "require": "./Logistic/l/index.js", - "import": "./Logistic/l/index.mjs", - "types": "./Logistic/l/index.d.ts" - }, - "./LockYes/m": { - "require": "./LockYes/m/index.js", - "import": "./LockYes/m/index.mjs", - "types": "./LockYes/m/index.d.ts" - }, - "./LockYes/l": { - "require": "./LockYes/l/index.js", - "import": "./LockYes/l/index.mjs", - "types": "./LockYes/l/index.d.ts" - }, - "./ListAddCheck/m": { - "require": "./ListAddCheck/m/index.js", - "import": "./ListAddCheck/m/index.mjs", - "types": "./ListAddCheck/m/index.d.ts" - }, - "./ListAddCheck/l": { - "require": "./ListAddCheck/l/index.js", - "import": "./ListAddCheck/l/index.mjs", - "types": "./ListAddCheck/l/index.d.ts" - }, - "./ListNumber/m": { - "require": "./ListNumber/m/index.js", - "import": "./ListNumber/m/index.mjs", - "types": "./ListNumber/m/index.d.ts" - }, - "./ListNumber/l": { - "require": "./ListNumber/l/index.js", - "import": "./ListNumber/l/index.mjs", - "types": "./ListNumber/l/index.d.ts" - }, - "./ListAddTop/m": { - "require": "./ListAddTop/m/index.js", - "import": "./ListAddTop/m/index.mjs", - "types": "./ListAddTop/m/index.d.ts" - }, - "./ListAddTop/l": { - "require": "./ListAddTop/l/index.js", - "import": "./ListAddTop/l/index.mjs", - "types": "./ListAddTop/l/index.d.ts" - }, "./ListBullet/m": { "require": "./ListBullet/m/index.js", "import": "./ListBullet/m/index.mjs", @@ -2572,15 +2552,15 @@ "import": "./ListBullet/l/index.mjs", "types": "./ListBullet/l/index.d.ts" }, - "./LinkedIn/m": { - "require": "./LinkedIn/m/index.js", - "import": "./LinkedIn/m/index.mjs", - "types": "./LinkedIn/m/index.d.ts" + "./ListAddTop/m": { + "require": "./ListAddTop/m/index.js", + "import": "./ListAddTop/m/index.mjs", + "types": "./ListAddTop/m/index.d.ts" }, - "./LinkedIn/l": { - "require": "./LinkedIn/l/index.js", - "import": "./LinkedIn/l/index.mjs", - "types": "./LinkedIn/l/index.d.ts" + "./ListAddTop/l": { + "require": "./ListAddTop/l/index.js", + "import": "./ListAddTop/l/index.mjs", + "types": "./ListAddTop/l/index.d.ts" }, "./ListAddBottom/m": { "require": "./ListAddBottom/m/index.js", @@ -2592,16 +2572,6 @@ "import": "./ListAddBottom/l/index.mjs", "types": "./ListAddBottom/l/index.d.ts" }, - "./LinkExternalAlt/m": { - "require": "./LinkExternalAlt/m/index.js", - "import": "./LinkExternalAlt/m/index.mjs", - "types": "./LinkExternalAlt/m/index.d.ts" - }, - "./LinkExternalAlt/l": { - "require": "./LinkExternalAlt/l/index.js", - "import": "./LinkExternalAlt/l/index.mjs", - "types": "./LinkExternalAlt/l/index.d.ts" - }, "./LinkInternal/m": { "require": "./LinkInternal/m/index.js", "import": "./LinkInternal/m/index.mjs", @@ -2612,6 +2582,26 @@ "import": "./LinkInternal/l/index.mjs", "types": "./LinkInternal/l/index.d.ts" }, + "./ListAddCheck/m": { + "require": "./ListAddCheck/m/index.js", + "import": "./ListAddCheck/m/index.mjs", + "types": "./ListAddCheck/m/index.d.ts" + }, + "./ListAddCheck/l": { + "require": "./ListAddCheck/l/index.js", + "import": "./ListAddCheck/l/index.mjs", + "types": "./ListAddCheck/l/index.d.ts" + }, + "./LinkExternalAlt/m": { + "require": "./LinkExternalAlt/m/index.js", + "import": "./LinkExternalAlt/m/index.mjs", + "types": "./LinkExternalAlt/m/index.d.ts" + }, + "./LinkExternalAlt/l": { + "require": "./LinkExternalAlt/l/index.js", + "import": "./LinkExternalAlt/l/index.mjs", + "types": "./LinkExternalAlt/l/index.d.ts" + }, "./LinkExternal/m": { "require": "./LinkExternal/m/index.js", "import": "./LinkExternal/m/index.mjs", @@ -2622,6 +2612,26 @@ "import": "./LinkExternal/l/index.mjs", "types": "./LinkExternal/l/index.d.ts" }, + "./LinkedIn/m": { + "require": "./LinkedIn/m/index.js", + "import": "./LinkedIn/m/index.mjs", + "types": "./LinkedIn/m/index.d.ts" + }, + "./LinkedIn/l": { + "require": "./LinkedIn/l/index.js", + "import": "./LinkedIn/l/index.mjs", + "types": "./LinkedIn/l/index.d.ts" + }, + "./Link/m": { + "require": "./Link/m/index.js", + "import": "./Link/m/index.mjs", + "types": "./Link/m/index.d.ts" + }, + "./Link/l": { + "require": "./Link/l/index.js", + "import": "./Link/l/index.mjs", + "types": "./Link/l/index.d.ts" + }, "./LinkAltHalf/m": { "require": "./LinkAltHalf/m/index.js", "import": "./LinkAltHalf/m/index.mjs", @@ -2642,6 +2652,16 @@ "import": "./LinkAltBroken/l/index.mjs", "types": "./LinkAltBroken/l/index.d.ts" }, + "./Lightning/m": { + "require": "./Lightning/m/index.js", + "import": "./Lightning/m/index.mjs", + "types": "./Lightning/m/index.d.ts" + }, + "./Lightning/l": { + "require": "./Lightning/l/index.js", + "import": "./Lightning/l/index.mjs", + "types": "./Lightning/l/index.d.ts" + }, "./LikeFilled/m": { "require": "./LikeFilled/m/index.js", "import": "./LikeFilled/m/index.mjs", @@ -2652,16 +2672,6 @@ "import": "./LikeFilled/l/index.mjs", "types": "./LikeFilled/l/index.d.ts" }, - "./Link/m": { - "require": "./Link/m/index.js", - "import": "./Link/m/index.mjs", - "types": "./Link/m/index.d.ts" - }, - "./Link/l": { - "require": "./Link/l/index.js", - "import": "./Link/l/index.mjs", - "types": "./Link/l/index.d.ts" - }, "./Like/m": { "require": "./Like/m/index.js", "import": "./Like/m/index.mjs", @@ -2672,16 +2682,6 @@ "import": "./Like/l/index.mjs", "types": "./Like/l/index.d.ts" }, - "./Law/m": { - "require": "./Law/m/index.js", - "import": "./Law/m/index.mjs", - "types": "./Law/m/index.d.ts" - }, - "./Law/l": { - "require": "./Law/l/index.js", - "import": "./Law/l/index.mjs", - "types": "./Law/l/index.d.ts" - }, "./LightningFilled/m": { "require": "./LightningFilled/m/index.js", "import": "./LightningFilled/m/index.mjs", @@ -2692,16 +2692,6 @@ "import": "./LightningFilled/l/index.mjs", "types": "./LightningFilled/l/index.d.ts" }, - "./Lightning/m": { - "require": "./Lightning/m/index.js", - "import": "./Lightning/m/index.mjs", - "types": "./Lightning/m/index.d.ts" - }, - "./Lightning/l": { - "require": "./Lightning/l/index.js", - "import": "./Lightning/l/index.mjs", - "types": "./Lightning/l/index.d.ts" - }, "./Language/m": { "require": "./Language/m/index.js", "import": "./Language/m/index.mjs", @@ -2712,15 +2702,25 @@ "import": "./Language/l/index.mjs", "types": "./Language/l/index.d.ts" }, - "./Key/m": { - "require": "./Key/m/index.js", - "import": "./Key/m/index.mjs", - "types": "./Key/m/index.d.ts" + "./KeyCmd/m": { + "require": "./KeyCmd/m/index.js", + "import": "./KeyCmd/m/index.mjs", + "types": "./KeyCmd/m/index.d.ts" }, - "./Key/l": { - "require": "./Key/l/index.js", - "import": "./Key/l/index.mjs", - "types": "./Key/l/index.d.ts" + "./KeyCmd/l": { + "require": "./KeyCmd/l/index.js", + "import": "./KeyCmd/l/index.mjs", + "types": "./KeyCmd/l/index.d.ts" + }, + "./KeyHotkey/m": { + "require": "./KeyHotkey/m/index.js", + "import": "./KeyHotkey/m/index.mjs", + "types": "./KeyHotkey/m/index.d.ts" + }, + "./KeyHotkey/l": { + "require": "./KeyHotkey/l/index.js", + "import": "./KeyHotkey/l/index.mjs", + "types": "./KeyHotkey/l/index.d.ts" }, "./Laptop/m": { "require": "./Laptop/m/index.js", @@ -2732,6 +2732,16 @@ "import": "./Laptop/l/index.mjs", "types": "./Laptop/l/index.d.ts" }, + "./Law/m": { + "require": "./Law/m/index.js", + "import": "./Law/m/index.mjs", + "types": "./Law/m/index.d.ts" + }, + "./Law/l": { + "require": "./Law/l/index.js", + "import": "./Law/l/index.mjs", + "types": "./Law/l/index.d.ts" + }, "./Jewelry/m": { "require": "./Jewelry/m/index.js", "import": "./Jewelry/m/index.mjs", @@ -2742,36 +2752,6 @@ "import": "./Jewelry/l/index.mjs", "types": "./Jewelry/l/index.d.ts" }, - "./Kebab/m": { - "require": "./Kebab/m/index.js", - "import": "./Kebab/m/index.mjs", - "types": "./Kebab/m/index.d.ts" - }, - "./Kebab/l": { - "require": "./Kebab/l/index.js", - "import": "./Kebab/l/index.mjs", - "types": "./Kebab/l/index.d.ts" - }, - "./KeyCmd/m": { - "require": "./KeyCmd/m/index.js", - "import": "./KeyCmd/m/index.mjs", - "types": "./KeyCmd/m/index.d.ts" - }, - "./KeyCmd/l": { - "require": "./KeyCmd/l/index.js", - "import": "./KeyCmd/l/index.mjs", - "types": "./KeyCmd/l/index.d.ts" - }, - "./KeyHotkey/m": { - "require": "./KeyHotkey/m/index.js", - "import": "./KeyHotkey/m/index.mjs", - "types": "./KeyHotkey/m/index.d.ts" - }, - "./KeyHotkey/l": { - "require": "./KeyHotkey/l/index.js", - "import": "./KeyHotkey/l/index.mjs", - "types": "./KeyHotkey/l/index.d.ts" - }, "./InterestingFinds/m": { "require": "./InterestingFinds/m/index.js", "import": "./InterestingFinds/m/index.mjs", @@ -2782,15 +2762,25 @@ "import": "./InterestingFinds/l/index.mjs", "types": "./InterestingFinds/l/index.d.ts" }, - "./Instagram/m": { - "require": "./Instagram/m/index.js", - "import": "./Instagram/m/index.mjs", - "types": "./Instagram/m/index.d.ts" + "./Key/m": { + "require": "./Key/m/index.js", + "import": "./Key/m/index.mjs", + "types": "./Key/m/index.d.ts" }, - "./Instagram/l": { - "require": "./Instagram/l/index.js", - "import": "./Instagram/l/index.mjs", - "types": "./Instagram/l/index.d.ts" + "./Key/l": { + "require": "./Key/l/index.js", + "import": "./Key/l/index.mjs", + "types": "./Key/l/index.d.ts" + }, + "./Kebab/m": { + "require": "./Kebab/m/index.js", + "import": "./Kebab/m/index.mjs", + "types": "./Kebab/m/index.d.ts" + }, + "./Kebab/l": { + "require": "./Kebab/l/index.js", + "import": "./Kebab/l/index.mjs", + "types": "./Kebab/l/index.d.ts" }, "./IndentedResult/m": { "require": "./IndentedResult/m/index.js", @@ -2802,25 +2792,15 @@ "import": "./IndentedResult/l/index.mjs", "types": "./IndentedResult/l/index.d.ts" }, - "./Infinity/m": { - "require": "./Infinity/m/index.js", - "import": "./Infinity/m/index.mjs", - "types": "./Infinity/m/index.d.ts" - }, - "./Infinity/l": { - "require": "./Infinity/l/index.js", - "import": "./Infinity/l/index.mjs", - "types": "./Infinity/l/index.d.ts" - }, - "./Hourglass/m": { - "require": "./Hourglass/m/index.js", - "import": "./Hourglass/m/index.mjs", - "types": "./Hourglass/m/index.d.ts" + "./Instagram/m": { + "require": "./Instagram/m/index.js", + "import": "./Instagram/m/index.mjs", + "types": "./Instagram/m/index.d.ts" }, - "./Hourglass/l": { - "require": "./Hourglass/l/index.js", - "import": "./Hourglass/l/index.mjs", - "types": "./Hourglass/l/index.d.ts" + "./Instagram/l": { + "require": "./Instagram/l/index.js", + "import": "./Instagram/l/index.mjs", + "types": "./Instagram/l/index.d.ts" }, "./Info/m": { "require": "./Info/m/index.js", @@ -2832,6 +2812,26 @@ "import": "./Info/l/index.mjs", "types": "./Info/l/index.d.ts" }, + "./Hotel/m": { + "require": "./Hotel/m/index.js", + "import": "./Hotel/m/index.mjs", + "types": "./Hotel/m/index.d.ts" + }, + "./Hotel/l": { + "require": "./Hotel/l/index.js", + "import": "./Hotel/l/index.mjs", + "types": "./Hotel/l/index.d.ts" + }, + "./Infinity/m": { + "require": "./Infinity/m/index.js", + "import": "./Infinity/m/index.mjs", + "types": "./Infinity/m/index.d.ts" + }, + "./Infinity/l": { + "require": "./Infinity/l/index.js", + "import": "./Infinity/l/index.mjs", + "types": "./Infinity/l/index.d.ts" + }, "./Health/m": { "require": "./Health/m/index.js", "import": "./Health/m/index.mjs", @@ -2842,6 +2842,16 @@ "import": "./Health/l/index.mjs", "types": "./Health/l/index.d.ts" }, + "./Hourglass/m": { + "require": "./Hourglass/m/index.js", + "import": "./Hourglass/m/index.mjs", + "types": "./Hourglass/m/index.d.ts" + }, + "./Hourglass/l": { + "require": "./Hourglass/l/index.js", + "import": "./Hourglass/l/index.mjs", + "types": "./Hourglass/l/index.d.ts" + }, "./Home/m": { "require": "./Home/m/index.js", "import": "./Home/m/index.mjs", @@ -2882,36 +2892,6 @@ "import": "./Hamburger/l/index.mjs", "types": "./Hamburger/l/index.d.ts" }, - "./Google/m": { - "require": "./Google/m/index.js", - "import": "./Google/m/index.mjs", - "types": "./Google/m/index.d.ts" - }, - "./Google/l": { - "require": "./Google/l/index.js", - "import": "./Google/l/index.mjs", - "types": "./Google/l/index.d.ts" - }, - "./Goblet/m": { - "require": "./Goblet/m/index.js", - "import": "./Goblet/m/index.mjs", - "types": "./Goblet/m/index.d.ts" - }, - "./Goblet/l": { - "require": "./Goblet/l/index.js", - "import": "./Goblet/l/index.mjs", - "types": "./Goblet/l/index.d.ts" - }, - "./Hotel/m": { - "require": "./Hotel/m/index.js", - "import": "./Hotel/m/index.mjs", - "types": "./Hotel/m/index.d.ts" - }, - "./Hotel/l": { - "require": "./Hotel/l/index.js", - "import": "./Hotel/l/index.mjs", - "types": "./Hotel/l/index.d.ts" - }, "./GoogleBusinessProfile/m": { "require": "./GoogleBusinessProfile/m/index.js", "import": "./GoogleBusinessProfile/m/index.mjs", @@ -2922,6 +2902,16 @@ "import": "./GoogleBusinessProfile/l/index.mjs", "types": "./GoogleBusinessProfile/l/index.d.ts" }, + "./Google/m": { + "require": "./Google/m/index.js", + "import": "./Google/m/index.mjs", + "types": "./Google/m/index.d.ts" + }, + "./Google/l": { + "require": "./Google/l/index.js", + "import": "./Google/l/index.mjs", + "types": "./Google/l/index.d.ts" + }, "./Gift/m": { "require": "./Gift/m/index.js", "import": "./Gift/m/index.mjs", @@ -2932,6 +2922,16 @@ "import": "./Gift/l/index.mjs", "types": "./Gift/l/index.d.ts" }, + "./Goblet/m": { + "require": "./Goblet/m/index.js", + "import": "./Goblet/m/index.mjs", + "types": "./Goblet/m/index.d.ts" + }, + "./Goblet/l": { + "require": "./Goblet/l/index.js", + "import": "./Goblet/l/index.mjs", + "types": "./Goblet/l/index.d.ts" + }, "./Globe/m": { "require": "./Globe/m/index.js", "import": "./Globe/m/index.mjs", @@ -2962,16 +2962,6 @@ "import": "./GenderFemale/l/index.mjs", "types": "./GenderFemale/l/index.d.ts" }, - "./Games/m": { - "require": "./Games/m/index.js", - "import": "./Games/m/index.mjs", - "types": "./Games/m/index.d.ts" - }, - "./Games/l": { - "require": "./Games/l/index.js", - "import": "./Games/l/index.mjs", - "types": "./Games/l/index.d.ts" - }, "./Gambling/m": { "require": "./Gambling/m/index.js", "import": "./Gambling/m/index.mjs", @@ -2992,6 +2982,16 @@ "import": "./Funnel/l/index.mjs", "types": "./Funnel/l/index.d.ts" }, + "./Games/m": { + "require": "./Games/m/index.js", + "import": "./Games/m/index.mjs", + "types": "./Games/m/index.d.ts" + }, + "./Games/l": { + "require": "./Games/l/index.js", + "import": "./Games/l/index.mjs", + "types": "./Games/l/index.d.ts" + }, "./Furniture/m": { "require": "./Furniture/m/index.js", "import": "./Furniture/m/index.mjs", @@ -3012,15 +3012,15 @@ "import": "./Foursquare/l/index.mjs", "types": "./Foursquare/l/index.d.ts" }, - "./FormatAlignLeft/m": { - "require": "./FormatAlignLeft/m/index.js", - "import": "./FormatAlignLeft/m/index.mjs", - "types": "./FormatAlignLeft/m/index.d.ts" + "./FormatAlignCenter/m": { + "require": "./FormatAlignCenter/m/index.js", + "import": "./FormatAlignCenter/m/index.mjs", + "types": "./FormatAlignCenter/m/index.d.ts" }, - "./FormatAlignLeft/l": { - "require": "./FormatAlignLeft/l/index.js", - "import": "./FormatAlignLeft/l/index.mjs", - "types": "./FormatAlignLeft/l/index.d.ts" + "./FormatAlignCenter/l": { + "require": "./FormatAlignCenter/l/index.js", + "import": "./FormatAlignCenter/l/index.mjs", + "types": "./FormatAlignCenter/l/index.d.ts" }, "./FormatAlignRight/m": { "require": "./FormatAlignRight/m/index.js", @@ -3042,25 +3042,15 @@ "import": "./FormatAlignJustify/l/index.mjs", "types": "./FormatAlignJustify/l/index.d.ts" }, - "./FormatAlignCenter/m": { - "require": "./FormatAlignCenter/m/index.js", - "import": "./FormatAlignCenter/m/index.mjs", - "types": "./FormatAlignCenter/m/index.d.ts" - }, - "./FormatAlignCenter/l": { - "require": "./FormatAlignCenter/l/index.js", - "import": "./FormatAlignCenter/l/index.mjs", - "types": "./FormatAlignCenter/l/index.d.ts" - }, - "./FolderOpenFilled/m": { - "require": "./FolderOpenFilled/m/index.js", - "import": "./FolderOpenFilled/m/index.mjs", - "types": "./FolderOpenFilled/m/index.d.ts" - }, - "./FolderOpenFilled/l": { - "require": "./FolderOpenFilled/l/index.js", - "import": "./FolderOpenFilled/l/index.mjs", - "types": "./FolderOpenFilled/l/index.d.ts" + "./FormatAlignLeft/m": { + "require": "./FormatAlignLeft/m/index.js", + "import": "./FormatAlignLeft/m/index.mjs", + "types": "./FormatAlignLeft/m/index.d.ts" + }, + "./FormatAlignLeft/l": { + "require": "./FormatAlignLeft/l/index.js", + "import": "./FormatAlignLeft/l/index.mjs", + "types": "./FormatAlignLeft/l/index.d.ts" }, "./Formal/m": { "require": "./Formal/m/index.js", @@ -3072,6 +3062,16 @@ "import": "./Formal/l/index.mjs", "types": "./Formal/l/index.d.ts" }, + "./FolderOpenFilled/m": { + "require": "./FolderOpenFilled/m/index.js", + "import": "./FolderOpenFilled/m/index.mjs", + "types": "./FolderOpenFilled/m/index.d.ts" + }, + "./FolderOpenFilled/l": { + "require": "./FolderOpenFilled/l/index.js", + "import": "./FolderOpenFilled/l/index.mjs", + "types": "./FolderOpenFilled/l/index.d.ts" + }, "./Form/m": { "require": "./Form/m/index.js", "import": "./Form/m/index.mjs", @@ -3082,15 +3082,15 @@ "import": "./Form/l/index.mjs", "types": "./Form/l/index.d.ts" }, - "./Food/m": { - "require": "./Food/m/index.js", - "import": "./Food/m/index.mjs", - "types": "./Food/m/index.d.ts" + "./FolderOpen/m": { + "require": "./FolderOpen/m/index.js", + "import": "./FolderOpen/m/index.mjs", + "types": "./FolderOpen/m/index.d.ts" }, - "./Food/l": { - "require": "./Food/l/index.js", - "import": "./Food/l/index.mjs", - "types": "./Food/l/index.d.ts" + "./FolderOpen/l": { + "require": "./FolderOpen/l/index.js", + "import": "./FolderOpen/l/index.mjs", + "types": "./FolderOpen/l/index.d.ts" }, "./FolderFilled/m": { "require": "./FolderFilled/m/index.js", @@ -3102,35 +3102,15 @@ "import": "./FolderFilled/l/index.mjs", "types": "./FolderFilled/l/index.d.ts" }, - "./Fish/m": { - "require": "./Fish/m/index.js", - "import": "./Fish/m/index.mjs", - "types": "./Fish/m/index.d.ts" - }, - "./Fish/l": { - "require": "./Fish/l/index.js", - "import": "./Fish/l/index.mjs", - "types": "./Fish/l/index.d.ts" - }, - "./Folder/m": { - "require": "./Folder/m/index.js", - "import": "./Folder/m/index.mjs", - "types": "./Folder/m/index.d.ts" - }, - "./Folder/l": { - "require": "./Folder/l/index.js", - "import": "./Folder/l/index.mjs", - "types": "./Folder/l/index.d.ts" - }, - "./FolderOpen/m": { - "require": "./FolderOpen/m/index.js", - "import": "./FolderOpen/m/index.mjs", - "types": "./FolderOpen/m/index.d.ts" + "./Food/m": { + "require": "./Food/m/index.js", + "import": "./Food/m/index.mjs", + "types": "./Food/m/index.d.ts" }, - "./FolderOpen/l": { - "require": "./FolderOpen/l/index.js", - "import": "./FolderOpen/l/index.mjs", - "types": "./FolderOpen/l/index.d.ts" + "./Food/l": { + "require": "./Food/l/index.js", + "import": "./Food/l/index.mjs", + "types": "./Food/l/index.d.ts" }, "./Fire/m": { "require": "./Fire/m/index.js", @@ -3142,16 +3122,6 @@ "import": "./Fire/l/index.mjs", "types": "./Fire/l/index.d.ts" }, - "./FileUpload/m": { - "require": "./FileUpload/m/index.js", - "import": "./FileUpload/m/index.mjs", - "types": "./FileUpload/m/index.d.ts" - }, - "./FileUpload/l": { - "require": "./FileUpload/l/index.js", - "import": "./FileUpload/l/index.mjs", - "types": "./FileUpload/l/index.d.ts" - }, "./Firefox/m": { "require": "./Firefox/m/index.js", "import": "./Firefox/m/index.mjs", @@ -3172,6 +3142,26 @@ "import": "./FindResultsOn/l/index.mjs", "types": "./FindResultsOn/l/index.d.ts" }, + "./Folder/m": { + "require": "./Folder/m/index.js", + "import": "./Folder/m/index.mjs", + "types": "./Folder/m/index.d.ts" + }, + "./Folder/l": { + "require": "./Folder/l/index.js", + "import": "./Folder/l/index.mjs", + "types": "./Folder/l/index.d.ts" + }, + "./Fish/m": { + "require": "./Fish/m/index.js", + "import": "./Fish/m/index.mjs", + "types": "./Fish/m/index.d.ts" + }, + "./Fish/l": { + "require": "./Fish/l/index.js", + "import": "./Fish/l/index.mjs", + "types": "./Fish/l/index.d.ts" + }, "./Filter/m": { "require": "./Filter/m/index.js", "import": "./Filter/m/index.mjs", @@ -3192,25 +3182,15 @@ "import": "./FileImport/l/index.mjs", "types": "./FileImport/l/index.d.ts" }, - "./FeaturedVideo/m": { - "require": "./FeaturedVideo/m/index.js", - "import": "./FeaturedVideo/m/index.mjs", - "types": "./FeaturedVideo/m/index.d.ts" - }, - "./FeaturedVideo/l": { - "require": "./FeaturedVideo/l/index.js", - "import": "./FeaturedVideo/l/index.mjs", - "types": "./FeaturedVideo/l/index.d.ts" - }, - "./FileExport/m": { - "require": "./FileExport/m/index.js", - "import": "./FileExport/m/index.mjs", - "types": "./FileExport/m/index.d.ts" + "./FileUpload/m": { + "require": "./FileUpload/m/index.js", + "import": "./FileUpload/m/index.mjs", + "types": "./FileUpload/m/index.d.ts" }, - "./FileExport/l": { - "require": "./FileExport/l/index.js", - "import": "./FileExport/l/index.mjs", - "types": "./FileExport/l/index.d.ts" + "./FileUpload/l": { + "require": "./FileUpload/l/index.js", + "import": "./FileUpload/l/index.mjs", + "types": "./FileUpload/l/index.d.ts" }, "./FileDownload/m": { "require": "./FileDownload/m/index.js", @@ -3222,25 +3202,15 @@ "import": "./FileDownload/l/index.mjs", "types": "./FileDownload/l/index.d.ts" }, - "./Favorite/m": { - "require": "./Favorite/m/index.js", - "import": "./Favorite/m/index.mjs", - "types": "./Favorite/m/index.d.ts" - }, - "./Favorite/l": { - "require": "./Favorite/l/index.js", - "import": "./Favorite/l/index.mjs", - "types": "./Favorite/l/index.d.ts" - }, - "./FavoriteFilled/m": { - "require": "./FavoriteFilled/m/index.js", - "import": "./FavoriteFilled/m/index.mjs", - "types": "./FavoriteFilled/m/index.d.ts" + "./FileExport/m": { + "require": "./FileExport/m/index.js", + "import": "./FileExport/m/index.mjs", + "types": "./FileExport/m/index.d.ts" }, - "./FavoriteFilled/l": { - "require": "./FavoriteFilled/l/index.js", - "import": "./FavoriteFilled/l/index.mjs", - "types": "./FavoriteFilled/l/index.d.ts" + "./FileExport/l": { + "require": "./FileExport/l/index.js", + "import": "./FileExport/l/index.mjs", + "types": "./FileExport/l/index.d.ts" }, "./FeaturedImage/m": { "require": "./FeaturedImage/m/index.js", @@ -3252,6 +3222,16 @@ "import": "./FeaturedImage/l/index.mjs", "types": "./FeaturedImage/l/index.d.ts" }, + "./FeaturedVideo/m": { + "require": "./FeaturedVideo/m/index.js", + "import": "./FeaturedVideo/m/index.mjs", + "types": "./FeaturedVideo/m/index.d.ts" + }, + "./FeaturedVideo/l": { + "require": "./FeaturedVideo/l/index.js", + "import": "./FeaturedVideo/l/index.mjs", + "types": "./FeaturedVideo/l/index.d.ts" + }, "./Fashion/m": { "require": "./Fashion/m/index.js", "import": "./Fashion/m/index.mjs", @@ -3262,6 +3242,26 @@ "import": "./Fashion/l/index.mjs", "types": "./Fashion/l/index.d.ts" }, + "./FavoriteFilled/m": { + "require": "./FavoriteFilled/m/index.js", + "import": "./FavoriteFilled/m/index.mjs", + "types": "./FavoriteFilled/m/index.d.ts" + }, + "./FavoriteFilled/l": { + "require": "./FavoriteFilled/l/index.js", + "import": "./FavoriteFilled/l/index.mjs", + "types": "./FavoriteFilled/l/index.d.ts" + }, + "./Favorite/m": { + "require": "./Favorite/m/index.js", + "import": "./Favorite/m/index.mjs", + "types": "./Favorite/m/index.d.ts" + }, + "./Favorite/l": { + "require": "./Favorite/l/index.js", + "import": "./Favorite/l/index.mjs", + "types": "./Favorite/l/index.d.ts" + }, "./Farm/m": { "require": "./Farm/m/index.js", "import": "./Farm/m/index.mjs", @@ -3272,6 +3272,16 @@ "import": "./Farm/l/index.mjs", "types": "./Farm/l/index.d.ts" }, + "./FacebookMessenger/m": { + "require": "./FacebookMessenger/m/index.js", + "import": "./FacebookMessenger/m/index.mjs", + "types": "./FacebookMessenger/m/index.d.ts" + }, + "./FacebookMessenger/l": { + "require": "./FacebookMessenger/l/index.js", + "import": "./FacebookMessenger/l/index.mjs", + "types": "./FacebookMessenger/l/index.d.ts" + }, "./ExpandText/m": { "require": "./ExpandText/m/index.js", "import": "./ExpandText/m/index.mjs", @@ -3292,26 +3302,6 @@ "import": "./Facebook/l/index.mjs", "types": "./Facebook/l/index.d.ts" }, - "./Expand/m": { - "require": "./Expand/m/index.js", - "import": "./Expand/m/index.mjs", - "types": "./Expand/m/index.d.ts" - }, - "./Expand/l": { - "require": "./Expand/l/index.js", - "import": "./Expand/l/index.mjs", - "types": "./Expand/l/index.d.ts" - }, - "./FacebookMessenger/m": { - "require": "./FacebookMessenger/m/index.js", - "import": "./FacebookMessenger/m/index.mjs", - "types": "./FacebookMessenger/m/index.d.ts" - }, - "./FacebookMessenger/l": { - "require": "./FacebookMessenger/l/index.js", - "import": "./FacebookMessenger/l/index.mjs", - "types": "./FacebookMessenger/l/index.d.ts" - }, "./ExpandAlt/m": { "require": "./ExpandAlt/m/index.js", "import": "./ExpandAlt/m/index.mjs", @@ -3322,15 +3312,25 @@ "import": "./ExpandAlt/l/index.mjs", "types": "./ExpandAlt/l/index.d.ts" }, - "./Event/m": { - "require": "./Event/m/index.js", - "import": "./Event/m/index.mjs", - "types": "./Event/m/index.d.ts" + "./Expand/m": { + "require": "./Expand/m/index.js", + "import": "./Expand/m/index.mjs", + "types": "./Expand/m/index.d.ts" }, - "./Event/l": { - "require": "./Event/l/index.js", - "import": "./Event/l/index.mjs", - "types": "./Event/l/index.d.ts" + "./Expand/l": { + "require": "./Expand/l/index.js", + "import": "./Expand/l/index.mjs", + "types": "./Expand/l/index.d.ts" + }, + "./Events/m": { + "require": "./Events/m/index.js", + "import": "./Events/m/index.mjs", + "types": "./Events/m/index.d.ts" + }, + "./Events/l": { + "require": "./Events/l/index.js", + "import": "./Events/l/index.mjs", + "types": "./Events/l/index.d.ts" }, "./Exit/m": { "require": "./Exit/m/index.js", @@ -3342,25 +3342,25 @@ "import": "./Exit/l/index.mjs", "types": "./Exit/l/index.d.ts" }, - "./Education/m": { - "require": "./Education/m/index.js", - "import": "./Education/m/index.mjs", - "types": "./Education/m/index.d.ts" + "./Ellipsis/m": { + "require": "./Ellipsis/m/index.js", + "import": "./Ellipsis/m/index.mjs", + "types": "./Ellipsis/m/index.d.ts" }, - "./Education/l": { - "require": "./Education/l/index.js", - "import": "./Education/l/index.mjs", - "types": "./Education/l/index.d.ts" + "./Ellipsis/l": { + "require": "./Ellipsis/l/index.js", + "import": "./Ellipsis/l/index.mjs", + "types": "./Ellipsis/l/index.d.ts" }, - "./Events/m": { - "require": "./Events/m/index.js", - "import": "./Events/m/index.mjs", - "types": "./Events/m/index.d.ts" + "./Event/m": { + "require": "./Event/m/index.js", + "import": "./Event/m/index.mjs", + "types": "./Event/m/index.d.ts" }, - "./Events/l": { - "require": "./Events/l/index.js", - "import": "./Events/l/index.mjs", - "types": "./Events/l/index.d.ts" + "./Event/l": { + "require": "./Event/l/index.js", + "import": "./Event/l/index.mjs", + "types": "./Event/l/index.d.ts" }, "./Edit/m": { "require": "./Edit/m/index.js", @@ -3372,15 +3372,15 @@ "import": "./Edit/l/index.mjs", "types": "./Edit/l/index.d.ts" }, - "./Ellipsis/m": { - "require": "./Ellipsis/m/index.js", - "import": "./Ellipsis/m/index.mjs", - "types": "./Ellipsis/m/index.d.ts" + "./Education/m": { + "require": "./Education/m/index.js", + "import": "./Education/m/index.mjs", + "types": "./Education/m/index.d.ts" }, - "./Ellipsis/l": { - "require": "./Ellipsis/l/index.js", - "import": "./Ellipsis/l/index.mjs", - "types": "./Ellipsis/l/index.d.ts" + "./Education/l": { + "require": "./Education/l/index.js", + "import": "./Education/l/index.mjs", + "types": "./Education/l/index.d.ts" }, "./Drop/m": { "require": "./Drop/m/index.js", @@ -3412,6 +3412,26 @@ "import": "./DocumentSad/l/index.mjs", "types": "./DocumentSad/l/index.d.ts" }, + "./DocumentPdf/m": { + "require": "./DocumentPdf/m/index.js", + "import": "./DocumentPdf/m/index.mjs", + "types": "./DocumentPdf/m/index.d.ts" + }, + "./DocumentPdf/l": { + "require": "./DocumentPdf/l/index.js", + "import": "./DocumentPdf/l/index.mjs", + "types": "./DocumentPdf/l/index.d.ts" + }, + "./DocumentDrop/m": { + "require": "./DocumentDrop/m/index.js", + "import": "./DocumentDrop/m/index.mjs", + "types": "./DocumentDrop/m/index.d.ts" + }, + "./DocumentDrop/l": { + "require": "./DocumentDrop/l/index.js", + "import": "./DocumentDrop/l/index.mjs", + "types": "./DocumentDrop/l/index.d.ts" + }, "./DocumentHappy/m": { "require": "./DocumentHappy/m/index.js", "import": "./DocumentHappy/m/index.mjs", @@ -3432,26 +3452,6 @@ "import": "./DocumentExport/l/index.mjs", "types": "./DocumentExport/l/index.d.ts" }, - "./DocumentDrop/m": { - "require": "./DocumentDrop/m/index.js", - "import": "./DocumentDrop/m/index.mjs", - "types": "./DocumentDrop/m/index.d.ts" - }, - "./DocumentDrop/l": { - "require": "./DocumentDrop/l/index.js", - "import": "./DocumentDrop/l/index.mjs", - "types": "./DocumentDrop/l/index.d.ts" - }, - "./DocumentCheck/m": { - "require": "./DocumentCheck/m/index.js", - "import": "./DocumentCheck/m/index.mjs", - "types": "./DocumentCheck/m/index.d.ts" - }, - "./DocumentCheck/l": { - "require": "./DocumentCheck/l/index.js", - "import": "./DocumentCheck/l/index.mjs", - "types": "./DocumentCheck/l/index.d.ts" - }, "./Document/m": { "require": "./Document/m/index.js", "import": "./Document/m/index.mjs", @@ -3462,25 +3462,15 @@ "import": "./Document/l/index.mjs", "types": "./Document/l/index.d.ts" }, - "./DocumentPdf/m": { - "require": "./DocumentPdf/m/index.js", - "import": "./DocumentPdf/m/index.mjs", - "types": "./DocumentPdf/m/index.d.ts" - }, - "./DocumentPdf/l": { - "require": "./DocumentPdf/l/index.js", - "import": "./DocumentPdf/l/index.mjs", - "types": "./DocumentPdf/l/index.d.ts" - }, - "./Desktop/m": { - "require": "./Desktop/m/index.js", - "import": "./Desktop/m/index.mjs", - "types": "./Desktop/m/index.d.ts" + "./DocumentCheck/m": { + "require": "./DocumentCheck/m/index.js", + "import": "./DocumentCheck/m/index.mjs", + "types": "./DocumentCheck/m/index.d.ts" }, - "./Desktop/l": { - "require": "./Desktop/l/index.js", - "import": "./Desktop/l/index.mjs", - "types": "./Desktop/l/index.d.ts" + "./DocumentCheck/l": { + "require": "./DocumentCheck/l/index.js", + "import": "./DocumentCheck/l/index.mjs", + "types": "./DocumentCheck/l/index.d.ts" }, "./DesktopChart/m": { "require": "./DesktopChart/m/index.js", @@ -3502,15 +3492,25 @@ "import": "./CursorMove/l/index.mjs", "types": "./CursorMove/l/index.d.ts" }, - "./CursorDefault/m": { - "require": "./CursorDefault/m/index.js", - "import": "./CursorDefault/m/index.mjs", - "types": "./CursorDefault/m/index.d.ts" + "./Desktop/m": { + "require": "./Desktop/m/index.js", + "import": "./Desktop/m/index.mjs", + "types": "./Desktop/m/index.d.ts" }, - "./CursorDefault/l": { - "require": "./CursorDefault/l/index.js", - "import": "./CursorDefault/l/index.mjs", - "types": "./CursorDefault/l/index.d.ts" + "./Desktop/l": { + "require": "./Desktop/l/index.js", + "import": "./Desktop/l/index.mjs", + "types": "./Desktop/l/index.d.ts" + }, + "./Cut/m": { + "require": "./Cut/m/index.js", + "import": "./Cut/m/index.mjs", + "types": "./Cut/m/index.d.ts" + }, + "./Cut/l": { + "require": "./Cut/l/index.js", + "import": "./Cut/l/index.mjs", + "types": "./Cut/l/index.d.ts" }, "./CurrencyUsd/m": { "require": "./CurrencyUsd/m/index.js", @@ -3522,15 +3522,25 @@ "import": "./CurrencyUsd/l/index.mjs", "types": "./CurrencyUsd/l/index.d.ts" }, - "./Cut/m": { - "require": "./Cut/m/index.js", - "import": "./Cut/m/index.mjs", - "types": "./Cut/m/index.d.ts" + "./CursorDefault/m": { + "require": "./CursorDefault/m/index.js", + "import": "./CursorDefault/m/index.mjs", + "types": "./CursorDefault/m/index.d.ts" }, - "./Cut/l": { - "require": "./Cut/l/index.js", - "import": "./Cut/l/index.mjs", - "types": "./Cut/l/index.d.ts" + "./CursorDefault/l": { + "require": "./CursorDefault/l/index.js", + "import": "./CursorDefault/l/index.mjs", + "types": "./CursorDefault/l/index.d.ts" + }, + "./Crosshair/m": { + "require": "./Crosshair/m/index.js", + "import": "./Crosshair/m/index.mjs", + "types": "./Crosshair/m/index.d.ts" + }, + "./Crosshair/l": { + "require": "./Crosshair/l/index.js", + "import": "./Crosshair/l/index.mjs", + "types": "./Crosshair/l/index.d.ts" }, "./Crown/m": { "require": "./Crown/m/index.js", @@ -3542,6 +3552,16 @@ "import": "./Crown/l/index.mjs", "types": "./Crown/l/index.d.ts" }, + "./Cosmetics/m": { + "require": "./Cosmetics/m/index.js", + "import": "./Cosmetics/m/index.mjs", + "types": "./Cosmetics/m/index.d.ts" + }, + "./Cosmetics/l": { + "require": "./Cosmetics/l/index.js", + "import": "./Cosmetics/l/index.mjs", + "types": "./Cosmetics/l/index.d.ts" + }, "./Craft/m": { "require": "./Craft/m/index.js", "import": "./Craft/m/index.mjs", @@ -3552,25 +3572,25 @@ "import": "./Craft/l/index.mjs", "types": "./Craft/l/index.d.ts" }, - "./Cosmetics/m": { - "require": "./Cosmetics/m/index.js", - "import": "./Cosmetics/m/index.mjs", - "types": "./Cosmetics/m/index.d.ts" + "./Copy/m": { + "require": "./Copy/m/index.js", + "import": "./Copy/m/index.mjs", + "types": "./Copy/m/index.d.ts" }, - "./Cosmetics/l": { - "require": "./Cosmetics/l/index.js", - "import": "./Cosmetics/l/index.mjs", - "types": "./Cosmetics/l/index.d.ts" + "./Copy/l": { + "require": "./Copy/l/index.js", + "import": "./Copy/l/index.mjs", + "types": "./Copy/l/index.d.ts" }, - "./Crosshair/m": { - "require": "./Crosshair/m/index.js", - "import": "./Crosshair/m/index.mjs", - "types": "./Crosshair/m/index.d.ts" + "./ColumnTwo/m": { + "require": "./ColumnTwo/m/index.js", + "import": "./ColumnTwo/m/index.mjs", + "types": "./ColumnTwo/m/index.d.ts" }, - "./Crosshair/l": { - "require": "./Crosshair/l/index.js", - "import": "./Crosshair/l/index.mjs", - "types": "./Crosshair/l/index.d.ts" + "./ColumnTwo/l": { + "require": "./ColumnTwo/l/index.js", + "import": "./ColumnTwo/l/index.mjs", + "types": "./ColumnTwo/l/index.d.ts" }, "./Comics/m": { "require": "./Comics/m/index.js", @@ -3582,15 +3602,15 @@ "import": "./Comics/l/index.mjs", "types": "./Comics/l/index.d.ts" }, - "./CollapseList/m": { - "require": "./CollapseList/m/index.js", - "import": "./CollapseList/m/index.mjs", - "types": "./CollapseList/m/index.d.ts" + "./CollapseAlt/m": { + "require": "./CollapseAlt/m/index.js", + "import": "./CollapseAlt/m/index.mjs", + "types": "./CollapseAlt/m/index.d.ts" }, - "./CollapseList/l": { - "require": "./CollapseList/l/index.js", - "import": "./CollapseList/l/index.mjs", - "types": "./CollapseList/l/index.d.ts" + "./CollapseAlt/l": { + "require": "./CollapseAlt/l/index.js", + "import": "./CollapseAlt/l/index.mjs", + "types": "./CollapseAlt/l/index.d.ts" }, "./ColumnThree/m": { "require": "./ColumnThree/m/index.js", @@ -3602,25 +3622,15 @@ "import": "./ColumnThree/l/index.mjs", "types": "./ColumnThree/l/index.d.ts" }, - "./Copy/m": { - "require": "./Copy/m/index.js", - "import": "./Copy/m/index.mjs", - "types": "./Copy/m/index.d.ts" - }, - "./Copy/l": { - "require": "./Copy/l/index.js", - "import": "./Copy/l/index.mjs", - "types": "./Copy/l/index.d.ts" - }, - "./CollapseAlt/m": { - "require": "./CollapseAlt/m/index.js", - "import": "./CollapseAlt/m/index.mjs", - "types": "./CollapseAlt/m/index.d.ts" + "./CollapseList/m": { + "require": "./CollapseList/m/index.js", + "import": "./CollapseList/m/index.mjs", + "types": "./CollapseList/m/index.d.ts" }, - "./CollapseAlt/l": { - "require": "./CollapseAlt/l/index.js", - "import": "./CollapseAlt/l/index.mjs", - "types": "./CollapseAlt/l/index.d.ts" + "./CollapseList/l": { + "require": "./CollapseList/l/index.js", + "import": "./CollapseList/l/index.mjs", + "types": "./CollapseList/l/index.d.ts" }, "./Collapse/m": { "require": "./Collapse/m/index.js", @@ -3632,26 +3642,6 @@ "import": "./Collapse/l/index.mjs", "types": "./Collapse/l/index.d.ts" }, - "./ClusteredList/m": { - "require": "./ClusteredList/m/index.js", - "import": "./ClusteredList/m/index.mjs", - "types": "./ClusteredList/m/index.d.ts" - }, - "./ClusteredList/l": { - "require": "./ClusteredList/l/index.js", - "import": "./ClusteredList/l/index.mjs", - "types": "./ClusteredList/l/index.d.ts" - }, - "./ColumnTwo/m": { - "require": "./ColumnTwo/m/index.js", - "import": "./ColumnTwo/m/index.mjs", - "types": "./ColumnTwo/m/index.d.ts" - }, - "./ColumnTwo/l": { - "require": "./ColumnTwo/l/index.js", - "import": "./ColumnTwo/l/index.mjs", - "types": "./ColumnTwo/l/index.d.ts" - }, "./Close/m": { "require": "./Close/m/index.js", "import": "./Close/m/index.mjs", @@ -3662,6 +3652,16 @@ "import": "./Close/l/index.mjs", "types": "./Close/l/index.d.ts" }, + "./ClusteredList/m": { + "require": "./ClusteredList/m/index.js", + "import": "./ClusteredList/m/index.mjs", + "types": "./ClusteredList/m/index.d.ts" + }, + "./ClusteredList/l": { + "require": "./ClusteredList/l/index.js", + "import": "./ClusteredList/l/index.mjs", + "types": "./ClusteredList/l/index.d.ts" + }, "./Chrome/m": { "require": "./Chrome/m/index.js", "import": "./Chrome/m/index.mjs", @@ -3672,6 +3672,16 @@ "import": "./Chrome/l/index.mjs", "types": "./Chrome/l/index.d.ts" }, + "./Claude/m": { + "require": "./Claude/m/index.js", + "import": "./Claude/m/index.mjs", + "types": "./Claude/m/index.d.ts" + }, + "./Claude/l": { + "require": "./Claude/l/index.js", + "import": "./Claude/l/index.mjs", + "types": "./Claude/l/index.d.ts" + }, "./ChevronUp/m": { "require": "./ChevronUp/m/index.js", "import": "./ChevronUp/m/index.mjs", @@ -3692,36 +3702,6 @@ "import": "./ChevronRight/l/index.mjs", "types": "./ChevronRight/l/index.d.ts" }, - "./Claude/m": { - "require": "./Claude/m/index.js", - "import": "./Claude/m/index.mjs", - "types": "./Claude/m/index.d.ts" - }, - "./Claude/l": { - "require": "./Claude/l/index.js", - "import": "./Claude/l/index.mjs", - "types": "./Claude/l/index.d.ts" - }, - "./ChevronDoubleUp/m": { - "require": "./ChevronDoubleUp/m/index.js", - "import": "./ChevronDoubleUp/m/index.mjs", - "types": "./ChevronDoubleUp/m/index.d.ts" - }, - "./ChevronDoubleUp/l": { - "require": "./ChevronDoubleUp/l/index.js", - "import": "./ChevronDoubleUp/l/index.mjs", - "types": "./ChevronDoubleUp/l/index.d.ts" - }, - "./ChevronDoubleRight/m": { - "require": "./ChevronDoubleRight/m/index.js", - "import": "./ChevronDoubleRight/m/index.mjs", - "types": "./ChevronDoubleRight/m/index.d.ts" - }, - "./ChevronDoubleRight/l": { - "require": "./ChevronDoubleRight/l/index.js", - "import": "./ChevronDoubleRight/l/index.mjs", - "types": "./ChevronDoubleRight/l/index.d.ts" - }, "./ChevronDown/m": { "require": "./ChevronDown/m/index.js", "import": "./ChevronDown/m/index.mjs", @@ -3752,6 +3732,16 @@ "import": "./ChevronDoubleLeft/l/index.mjs", "types": "./ChevronDoubleLeft/l/index.d.ts" }, + "./ChevronDoubleUp/m": { + "require": "./ChevronDoubleUp/m/index.js", + "import": "./ChevronDoubleUp/m/index.mjs", + "types": "./ChevronDoubleUp/m/index.d.ts" + }, + "./ChevronDoubleUp/l": { + "require": "./ChevronDoubleUp/l/index.js", + "import": "./ChevronDoubleUp/l/index.mjs", + "types": "./ChevronDoubleUp/l/index.d.ts" + }, "./ChevronDoubleDown/m": { "require": "./ChevronDoubleDown/m/index.js", "import": "./ChevronDoubleDown/m/index.mjs", @@ -3762,15 +3752,15 @@ "import": "./ChevronDoubleDown/l/index.mjs", "types": "./ChevronDoubleDown/l/index.d.ts" }, - "./Check/m": { - "require": "./Check/m/index.js", - "import": "./Check/m/index.mjs", - "types": "./Check/m/index.d.ts" + "./ChevronDoubleRight/m": { + "require": "./ChevronDoubleRight/m/index.js", + "import": "./ChevronDoubleRight/m/index.mjs", + "types": "./ChevronDoubleRight/m/index.d.ts" }, - "./Check/l": { - "require": "./Check/l/index.js", - "import": "./Check/l/index.mjs", - "types": "./Check/l/index.d.ts" + "./ChevronDoubleRight/l": { + "require": "./ChevronDoubleRight/l/index.js", + "import": "./ChevronDoubleRight/l/index.mjs", + "types": "./ChevronDoubleRight/l/index.d.ts" }, "./Checkbox/m": { "require": "./Checkbox/m/index.js", @@ -3782,15 +3772,15 @@ "import": "./Checkbox/l/index.mjs", "types": "./Checkbox/l/index.d.ts" }, - "./CheckAlt/m": { - "require": "./CheckAlt/m/index.js", - "import": "./CheckAlt/m/index.mjs", - "types": "./CheckAlt/m/index.d.ts" + "./Check/m": { + "require": "./Check/m/index.js", + "import": "./Check/m/index.mjs", + "types": "./Check/m/index.d.ts" }, - "./CheckAlt/l": { - "require": "./CheckAlt/l/index.js", - "import": "./CheckAlt/l/index.mjs", - "types": "./CheckAlt/l/index.d.ts" + "./Check/l": { + "require": "./Check/l/index.js", + "import": "./Check/l/index.mjs", + "types": "./Check/l/index.d.ts" }, "./CheckDouble/m": { "require": "./CheckDouble/m/index.js", @@ -3812,6 +3802,26 @@ "import": "./ChatQuestion/l/index.mjs", "types": "./ChatQuestion/l/index.d.ts" }, + "./CheckAlt/m": { + "require": "./CheckAlt/m/index.js", + "import": "./CheckAlt/m/index.mjs", + "types": "./CheckAlt/m/index.d.ts" + }, + "./CheckAlt/l": { + "require": "./CheckAlt/l/index.js", + "import": "./CheckAlt/l/index.mjs", + "types": "./CheckAlt/l/index.d.ts" + }, + "./ChatPlus/m": { + "require": "./ChatPlus/m/index.js", + "import": "./ChatPlus/m/index.mjs", + "types": "./ChatPlus/m/index.d.ts" + }, + "./ChatPlus/l": { + "require": "./ChatPlus/l/index.js", + "import": "./ChatPlus/l/index.mjs", + "types": "./ChatPlus/l/index.d.ts" + }, "./ChatGPT/m": { "require": "./ChatGPT/m/index.js", "import": "./ChatGPT/m/index.mjs", @@ -3822,6 +3832,16 @@ "import": "./ChatGPT/l/index.mjs", "types": "./ChatGPT/l/index.d.ts" }, + "./ChatFilled/m": { + "require": "./ChatFilled/m/index.js", + "import": "./ChatFilled/m/index.mjs", + "types": "./ChatFilled/m/index.d.ts" + }, + "./ChatFilled/l": { + "require": "./ChatFilled/l/index.js", + "import": "./ChatFilled/l/index.mjs", + "types": "./ChatFilled/l/index.d.ts" + }, "./ChatCheck/m": { "require": "./ChatCheck/m/index.js", "import": "./ChatCheck/m/index.mjs", @@ -3832,6 +3852,16 @@ "import": "./ChatCheck/l/index.mjs", "types": "./ChatCheck/l/index.d.ts" }, + "./ChatAI/m": { + "require": "./ChatAI/m/index.js", + "import": "./ChatAI/m/index.mjs", + "types": "./ChatAI/m/index.d.ts" + }, + "./ChatAI/l": { + "require": "./ChatAI/l/index.js", + "import": "./ChatAI/l/index.mjs", + "types": "./ChatAI/l/index.d.ts" + }, "./Chat/m": { "require": "./Chat/m/index.js", "import": "./Chat/m/index.mjs", @@ -3842,26 +3872,6 @@ "import": "./Chat/l/index.mjs", "types": "./Chat/l/index.d.ts" }, - "./ChatFilled/m": { - "require": "./ChatFilled/m/index.js", - "import": "./ChatFilled/m/index.mjs", - "types": "./ChatFilled/m/index.d.ts" - }, - "./ChatFilled/l": { - "require": "./ChatFilled/l/index.js", - "import": "./ChatFilled/l/index.mjs", - "types": "./ChatFilled/l/index.d.ts" - }, - "./ChatPlus/m": { - "require": "./ChatPlus/m/index.js", - "import": "./ChatPlus/m/index.mjs", - "types": "./ChatPlus/m/index.d.ts" - }, - "./ChatPlus/l": { - "require": "./ChatPlus/l/index.js", - "import": "./ChatPlus/l/index.mjs", - "types": "./ChatPlus/l/index.d.ts" - }, "./ChartVenn/m": { "require": "./ChartVenn/m/index.js", "import": "./ChartVenn/m/index.mjs", @@ -3882,16 +3892,6 @@ "import": "./ChartPie/l/index.mjs", "types": "./ChartPie/l/index.d.ts" }, - "./ChatAI/m": { - "require": "./ChatAI/m/index.js", - "import": "./ChatAI/m/index.mjs", - "types": "./ChatAI/m/index.d.ts" - }, - "./ChatAI/l": { - "require": "./ChatAI/l/index.js", - "import": "./ChatAI/l/index.mjs", - "types": "./ChatAI/l/index.d.ts" - }, "./ChartBubble/m": { "require": "./ChartBubble/m/index.js", "import": "./ChartBubble/m/index.mjs", @@ -3902,6 +3902,16 @@ "import": "./ChartBubble/l/index.mjs", "types": "./ChartBubble/l/index.d.ts" }, + "./ChartLine/m": { + "require": "./ChartLine/m/index.js", + "import": "./ChartLine/m/index.mjs", + "types": "./ChartLine/m/index.d.ts" + }, + "./ChartLine/l": { + "require": "./ChartLine/l/index.js", + "import": "./ChartLine/l/index.mjs", + "types": "./ChartLine/l/index.d.ts" + }, "./ChartBarStackedColumn/m": { "require": "./ChartBarStackedColumn/m/index.js", "import": "./ChartBarStackedColumn/m/index.mjs", @@ -3912,6 +3922,16 @@ "import": "./ChartBarStackedColumn/l/index.mjs", "types": "./ChartBarStackedColumn/l/index.d.ts" }, + "./ChartBar/m": { + "require": "./ChartBar/m/index.js", + "import": "./ChartBar/m/index.mjs", + "types": "./ChartBar/m/index.d.ts" + }, + "./ChartBar/l": { + "require": "./ChartBar/l/index.js", + "import": "./ChartBar/l/index.mjs", + "types": "./ChartBar/l/index.d.ts" + }, "./ChartBarStacked/m": { "require": "./ChartBarStacked/m/index.js", "import": "./ChartBarStacked/m/index.mjs", @@ -3922,15 +3942,15 @@ "import": "./ChartBarStacked/l/index.mjs", "types": "./ChartBarStacked/l/index.d.ts" }, - "./ChartLine/m": { - "require": "./ChartLine/m/index.js", - "import": "./ChartLine/m/index.mjs", - "types": "./ChartLine/m/index.d.ts" + "./ChargebackWin/m": { + "require": "./ChargebackWin/m/index.js", + "import": "./ChargebackWin/m/index.mjs", + "types": "./ChargebackWin/m/index.d.ts" }, - "./ChartLine/l": { - "require": "./ChartLine/l/index.js", - "import": "./ChartLine/l/index.mjs", - "types": "./ChartLine/l/index.d.ts" + "./ChargebackWin/l": { + "require": "./ChargebackWin/l/index.js", + "import": "./ChargebackWin/l/index.mjs", + "types": "./ChargebackWin/l/index.d.ts" }, "./ChargebackLoss/m": { "require": "./ChargebackLoss/m/index.js", @@ -3942,16 +3962,6 @@ "import": "./ChargebackLoss/l/index.mjs", "types": "./ChargebackLoss/l/index.d.ts" }, - "./ChartBar/m": { - "require": "./ChartBar/m/index.js", - "import": "./ChartBar/m/index.mjs", - "types": "./ChartBar/m/index.d.ts" - }, - "./ChartBar/l": { - "require": "./ChartBar/l/index.js", - "import": "./ChartBar/l/index.mjs", - "types": "./ChartBar/l/index.d.ts" - }, "./Charge/m": { "require": "./Charge/m/index.js", "import": "./Charge/m/index.mjs", @@ -3972,6 +3982,16 @@ "import": "./Casual/l/index.mjs", "types": "./Casual/l/index.d.ts" }, + "./Cards/m": { + "require": "./Cards/m/index.js", + "import": "./Cards/m/index.mjs", + "types": "./Cards/m/index.d.ts" + }, + "./Cards/l": { + "require": "./Cards/l/index.js", + "import": "./Cards/l/index.mjs", + "types": "./Cards/l/index.d.ts" + }, "./Cart/m": { "require": "./Cart/m/index.js", "import": "./Cart/m/index.mjs", @@ -3982,25 +4002,25 @@ "import": "./Cart/l/index.mjs", "types": "./Cart/l/index.d.ts" }, - "./Cards/m": { - "require": "./Cards/m/index.js", - "import": "./Cards/m/index.mjs", - "types": "./Cards/m/index.d.ts" + "./Canva/m": { + "require": "./Canva/m/index.js", + "import": "./Canva/m/index.mjs", + "types": "./Canva/m/index.d.ts" }, - "./Cards/l": { - "require": "./Cards/l/index.js", - "import": "./Cards/l/index.mjs", - "types": "./Cards/l/index.d.ts" + "./Canva/l": { + "require": "./Canva/l/index.js", + "import": "./Canva/l/index.mjs", + "types": "./Canva/l/index.d.ts" }, - "./ChargebackWin/m": { - "require": "./ChargebackWin/m/index.js", - "import": "./ChargebackWin/m/index.mjs", - "types": "./ChargebackWin/m/index.d.ts" + "./Car/m": { + "require": "./Car/m/index.js", + "import": "./Car/m/index.mjs", + "types": "./Car/m/index.d.ts" }, - "./ChargebackWin/l": { - "require": "./ChargebackWin/l/index.js", - "import": "./ChargebackWin/l/index.mjs", - "types": "./ChargebackWin/l/index.d.ts" + "./Car/l": { + "require": "./Car/l/index.js", + "import": "./Car/l/index.mjs", + "types": "./Car/l/index.d.ts" }, "./CalendarCheck/m": { "require": "./CalendarCheck/m/index.js", @@ -4012,25 +4032,25 @@ "import": "./CalendarCheck/l/index.mjs", "types": "./CalendarCheck/l/index.d.ts" }, - "./Car/m": { - "require": "./Car/m/index.js", - "import": "./Car/m/index.mjs", - "types": "./Car/m/index.d.ts" + "./CardUpdate/m": { + "require": "./CardUpdate/m/index.js", + "import": "./CardUpdate/m/index.mjs", + "types": "./CardUpdate/m/index.d.ts" }, - "./Car/l": { - "require": "./Car/l/index.js", - "import": "./Car/l/index.mjs", - "types": "./Car/l/index.d.ts" + "./CardUpdate/l": { + "require": "./CardUpdate/l/index.js", + "import": "./CardUpdate/l/index.mjs", + "types": "./CardUpdate/l/index.d.ts" }, - "./Canva/m": { - "require": "./Canva/m/index.js", - "import": "./Canva/m/index.mjs", - "types": "./Canva/m/index.d.ts" + "./Calendar/m": { + "require": "./Calendar/m/index.js", + "import": "./Calendar/m/index.mjs", + "types": "./Calendar/m/index.d.ts" }, - "./Canva/l": { - "require": "./Canva/l/index.js", - "import": "./Canva/l/index.mjs", - "types": "./Canva/l/index.d.ts" + "./Calendar/l": { + "require": "./Calendar/l/index.js", + "import": "./Calendar/l/index.mjs", + "types": "./Calendar/l/index.d.ts" }, "./Bulb/m": { "require": "./Bulb/m/index.js", @@ -4052,26 +4072,6 @@ "import": "./Briefcase/l/index.mjs", "types": "./Briefcase/l/index.d.ts" }, - "./Calendar/m": { - "require": "./Calendar/m/index.js", - "import": "./Calendar/m/index.mjs", - "types": "./Calendar/m/index.d.ts" - }, - "./Calendar/l": { - "require": "./Calendar/l/index.js", - "import": "./Calendar/l/index.mjs", - "types": "./Calendar/l/index.d.ts" - }, - "./CardUpdate/m": { - "require": "./CardUpdate/m/index.js", - "import": "./CardUpdate/m/index.mjs", - "types": "./CardUpdate/m/index.d.ts" - }, - "./CardUpdate/l": { - "require": "./CardUpdate/l/index.js", - "import": "./CardUpdate/l/index.mjs", - "types": "./CardUpdate/l/index.d.ts" - }, "./BracketsCurly/m": { "require": "./BracketsCurly/m/index.js", "import": "./BracketsCurly/m/index.mjs", @@ -4092,16 +4092,6 @@ "import": "./BracketsCode/l/index.mjs", "types": "./BracketsCode/l/index.d.ts" }, - "./BookmarkFilled/m": { - "require": "./BookmarkFilled/m/index.js", - "import": "./BookmarkFilled/m/index.mjs", - "types": "./BookmarkFilled/m/index.d.ts" - }, - "./BookmarkFilled/l": { - "require": "./BookmarkFilled/l/index.js", - "import": "./BookmarkFilled/l/index.mjs", - "types": "./BookmarkFilled/l/index.d.ts" - }, "./BracketsAngle/m": { "require": "./BracketsAngle/m/index.js", "import": "./BracketsAngle/m/index.mjs", @@ -4112,6 +4102,16 @@ "import": "./BracketsAngle/l/index.mjs", "types": "./BracketsAngle/l/index.d.ts" }, + "./BookmarkFilled/m": { + "require": "./BookmarkFilled/m/index.js", + "import": "./BookmarkFilled/m/index.mjs", + "types": "./BookmarkFilled/m/index.d.ts" + }, + "./BookmarkFilled/l": { + "require": "./BookmarkFilled/l/index.js", + "import": "./BookmarkFilled/l/index.mjs", + "types": "./BookmarkFilled/l/index.d.ts" + }, "./Book/m": { "require": "./Book/m/index.js", "import": "./Book/m/index.mjs", @@ -4122,15 +4122,15 @@ "import": "./Book/l/index.mjs", "types": "./Book/l/index.d.ts" }, - "./AttacheCase/m": { - "require": "./AttacheCase/m/index.js", - "import": "./AttacheCase/m/index.mjs", - "types": "./AttacheCase/m/index.d.ts" + "./Bookmark/m": { + "require": "./Bookmark/m/index.js", + "import": "./Bookmark/m/index.mjs", + "types": "./Bookmark/m/index.d.ts" }, - "./AttacheCase/l": { - "require": "./AttacheCase/l/index.js", - "import": "./AttacheCase/l/index.mjs", - "types": "./AttacheCase/l/index.d.ts" + "./Bookmark/l": { + "require": "./Bookmark/l/index.js", + "import": "./Bookmark/l/index.mjs", + "types": "./Bookmark/l/index.d.ts" }, "./Attach/m": { "require": "./Attach/m/index.js", @@ -4142,6 +4142,16 @@ "import": "./Attach/l/index.mjs", "types": "./Attach/l/index.d.ts" }, + "./AttacheCase/m": { + "require": "./AttacheCase/m/index.js", + "import": "./AttacheCase/m/index.mjs", + "types": "./AttacheCase/m/index.d.ts" + }, + "./AttacheCase/l": { + "require": "./AttacheCase/l/index.js", + "import": "./AttacheCase/l/index.mjs", + "types": "./AttacheCase/l/index.d.ts" + }, "./Arrows/m": { "require": "./Arrows/m/index.js", "import": "./Arrows/m/index.mjs", @@ -4152,36 +4162,6 @@ "import": "./Arrows/l/index.mjs", "types": "./Arrows/l/index.d.ts" }, - "./Bookmark/m": { - "require": "./Bookmark/m/index.js", - "import": "./Bookmark/m/index.mjs", - "types": "./Bookmark/m/index.d.ts" - }, - "./Bookmark/l": { - "require": "./Bookmark/l/index.js", - "import": "./Bookmark/l/index.mjs", - "types": "./Bookmark/l/index.d.ts" - }, - "./ArrowUp/m": { - "require": "./ArrowUp/m/index.js", - "import": "./ArrowUp/m/index.mjs", - "types": "./ArrowUp/m/index.d.ts" - }, - "./ArrowUp/l": { - "require": "./ArrowUp/l/index.js", - "import": "./ArrowUp/l/index.mjs", - "types": "./ArrowUp/l/index.d.ts" - }, - "./AskAI/m": { - "require": "./AskAI/m/index.js", - "import": "./AskAI/m/index.mjs", - "types": "./AskAI/m/index.d.ts" - }, - "./AskAI/l": { - "require": "./AskAI/l/index.js", - "import": "./AskAI/l/index.mjs", - "types": "./AskAI/l/index.d.ts" - }, "./Block/m": { "require": "./Block/m/index.js", "import": "./Block/m/index.mjs", @@ -4202,6 +4182,16 @@ "import": "./ArrowRight/l/index.mjs", "types": "./ArrowRight/l/index.d.ts" }, + "./ArrowUp/m": { + "require": "./ArrowUp/m/index.js", + "import": "./ArrowUp/m/index.mjs", + "types": "./ArrowUp/m/index.d.ts" + }, + "./ArrowUp/l": { + "require": "./ArrowUp/l/index.js", + "import": "./ArrowUp/l/index.mjs", + "types": "./ArrowUp/l/index.d.ts" + }, "./ArrowLeft/m": { "require": "./ArrowLeft/m/index.js", "import": "./ArrowLeft/m/index.mjs", @@ -4222,6 +4212,16 @@ "import": "./ArrowDown/l/index.mjs", "types": "./ArrowDown/l/index.d.ts" }, + "./AskAI/m": { + "require": "./AskAI/m/index.js", + "import": "./AskAI/m/index.mjs", + "types": "./AskAI/m/index.d.ts" + }, + "./AskAI/l": { + "require": "./AskAI/l/index.js", + "import": "./AskAI/l/index.mjs", + "types": "./AskAI/l/index.d.ts" + }, "./Archive/m": { "require": "./Archive/m/index.js", "import": "./Archive/m/index.mjs", @@ -4232,16 +4232,6 @@ "import": "./Archive/l/index.mjs", "types": "./Archive/l/index.d.ts" }, - "./Apple/m": { - "require": "./Apple/m/index.js", - "import": "./Apple/m/index.mjs", - "types": "./Apple/m/index.d.ts" - }, - "./Apple/l": { - "require": "./Apple/l/index.js", - "import": "./Apple/l/index.mjs", - "types": "./Apple/l/index.d.ts" - }, "./AppsBlock/m": { "require": "./AppsBlock/m/index.js", "import": "./AppsBlock/m/index.mjs", @@ -4252,6 +4242,16 @@ "import": "./AppsBlock/l/index.mjs", "types": "./AppsBlock/l/index.d.ts" }, + "./Architecture/m": { + "require": "./Architecture/m/index.js", + "import": "./Architecture/m/index.mjs", + "types": "./Architecture/m/index.d.ts" + }, + "./Architecture/l": { + "require": "./Architecture/l/index.js", + "import": "./Architecture/l/index.mjs", + "types": "./Architecture/l/index.d.ts" + }, "./Android/m": { "require": "./Android/m/index.js", "import": "./Android/m/index.mjs", @@ -4262,16 +4262,6 @@ "import": "./Android/l/index.mjs", "types": "./Android/l/index.d.ts" }, - "./Amp/m": { - "require": "./Amp/m/index.js", - "import": "./Amp/m/index.mjs", - "types": "./Amp/m/index.d.ts" - }, - "./Amp/l": { - "require": "./Amp/l/index.js", - "import": "./Amp/l/index.mjs", - "types": "./Amp/l/index.d.ts" - }, "./AllDevices/m": { "require": "./AllDevices/m/index.js", "import": "./AllDevices/m/index.mjs", @@ -4282,25 +4272,25 @@ "import": "./AllDevices/l/index.mjs", "types": "./AllDevices/l/index.d.ts" }, - "./Airplane/m": { - "require": "./Airplane/m/index.js", - "import": "./Airplane/m/index.mjs", - "types": "./Airplane/m/index.d.ts" + "./Apple/m": { + "require": "./Apple/m/index.js", + "import": "./Apple/m/index.mjs", + "types": "./Apple/m/index.d.ts" }, - "./Airplane/l": { - "require": "./Airplane/l/index.js", - "import": "./Airplane/l/index.mjs", - "types": "./Airplane/l/index.d.ts" + "./Apple/l": { + "require": "./Apple/l/index.js", + "import": "./Apple/l/index.mjs", + "types": "./Apple/l/index.d.ts" }, - "./Architecture/m": { - "require": "./Architecture/m/index.js", - "import": "./Architecture/m/index.mjs", - "types": "./Architecture/m/index.d.ts" + "./Amp/m": { + "require": "./Amp/m/index.js", + "import": "./Amp/m/index.mjs", + "types": "./Amp/m/index.d.ts" }, - "./Architecture/l": { - "require": "./Architecture/l/index.js", - "import": "./Architecture/l/index.mjs", - "types": "./Architecture/l/index.d.ts" + "./Amp/l": { + "require": "./Amp/l/index.js", + "import": "./Amp/l/index.mjs", + "types": "./Amp/l/index.d.ts" }, "./Adult/m": { "require": "./Adult/m/index.js", @@ -4312,6 +4302,16 @@ "import": "./Adult/l/index.mjs", "types": "./Adult/l/index.d.ts" }, + "./AddCampaign/m": { + "require": "./AddCampaign/m/index.js", + "import": "./AddCampaign/m/index.mjs", + "types": "./AddCampaign/m/index.d.ts" + }, + "./AddCampaign/l": { + "require": "./AddCampaign/l/index.js", + "import": "./AddCampaign/l/index.mjs", + "types": "./AddCampaign/l/index.d.ts" + }, "./AdobeExperienceCloud/m": { "require": "./AdobeExperienceCloud/m/index.js", "import": "./AdobeExperienceCloud/m/index.mjs", @@ -4322,15 +4322,15 @@ "import": "./AdobeExperienceCloud/l/index.mjs", "types": "./AdobeExperienceCloud/l/index.d.ts" }, - "./AddCampaign/m": { - "require": "./AddCampaign/m/index.js", - "import": "./AddCampaign/m/index.mjs", - "types": "./AddCampaign/m/index.d.ts" + "./Airplane/m": { + "require": "./Airplane/m/index.js", + "import": "./Airplane/m/index.mjs", + "types": "./Airplane/m/index.d.ts" }, - "./AddCampaign/l": { - "require": "./AddCampaign/l/index.js", - "import": "./AddCampaign/l/index.mjs", - "types": "./AddCampaign/l/index.d.ts" + "./Airplane/l": { + "require": "./Airplane/l/index.js", + "import": "./Airplane/l/index.mjs", + "types": "./Airplane/l/index.d.ts" }, "./AddressPack/m": { "require": "./AddressPack/m/index.js", @@ -4352,15 +4352,15 @@ "import": "./AdTop/l/index.mjs", "types": "./AdTop/l/index.d.ts" }, - "./AdBottom/m": { - "require": "./AdBottom/m/index.js", - "import": "./AdBottom/m/index.mjs", - "types": "./AdBottom/m/index.d.ts" + "./AdMiddle/m": { + "require": "./AdMiddle/m/index.js", + "import": "./AdMiddle/m/index.mjs", + "types": "./AdMiddle/m/index.d.ts" }, - "./AdBottom/l": { - "require": "./AdBottom/l/index.js", - "import": "./AdBottom/l/index.mjs", - "types": "./AdBottom/l/index.d.ts" + "./AdMiddle/l": { + "require": "./AdMiddle/l/index.js", + "import": "./AdMiddle/l/index.mjs", + "types": "./AdMiddle/l/index.d.ts" }, "./Ad/m": { "require": "./Ad/m/index.js", @@ -4372,15 +4372,15 @@ "import": "./Ad/l/index.mjs", "types": "./Ad/l/index.d.ts" }, - "./AdMiddle/m": { - "require": "./AdMiddle/m/index.js", - "import": "./AdMiddle/m/index.mjs", - "types": "./AdMiddle/m/index.d.ts" + "./AdBottom/m": { + "require": "./AdBottom/m/index.js", + "import": "./AdBottom/m/index.mjs", + "types": "./AdBottom/m/index.d.ts" }, - "./AdMiddle/l": { - "require": "./AdMiddle/l/index.js", - "import": "./AdMiddle/l/index.mjs", - "types": "./AdMiddle/l/index.d.ts" + "./AdBottom/l": { + "require": "./AdBottom/l/index.js", + "import": "./AdBottom/l/index.mjs", + "types": "./AdBottom/l/index.d.ts" } } } From 95b59fbffcdd093795652974176d355a6af54ad1 Mon Sep 17 00:00:00 2001 From: Sheila Sheikh <166654065+sheila-semrush@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:35:09 +0100 Subject: [PATCH 16/24] [stories] added boxSizing to action bar --- .../data-table/advanced/examples/checkbox_in_big_table/index.tsx | 1 + .../advanced/examples/checkbox_in_big_table_reactive/index.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx index 61445887b2..bccb92b6a0 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table/index.tsx @@ -63,6 +63,7 @@ const Demo = (props: CheckboxExampleProps) => { px={3} style={{ position: 'sticky', + boxSizing: 'border-box', top: 0, zIndex: 50, backgroundColor: diff --git a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx index cddcbe068c..05c9805c08 100644 --- a/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx +++ b/stories/components/data-table/advanced/examples/checkbox_in_big_table_reactive/index.tsx @@ -84,6 +84,7 @@ const Demo = (props: CheckboxExampleProps) => { h={44} style={{ position: 'sticky', + boxSizing: 'border-box', top: 0, zIndex: 50, backgroundColor: From b5fe4dcb1e5cde750f24599113672ea63115406c Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Tue, 24 Mar 2026 19:05:46 +0100 Subject: [PATCH 17/24] [data-table] improved perf for select all UIK-5006 --- .../data-table/src/components/Body/Body.tsx | 5 - .../data-table/src/components/Body/Row.tsx | 86 +++----------- .../src/components/Body/RowGroup.tsx | 42 +++---- .../src/components/Body/style.shadow.css | 14 ++- .../components/RowSelector/RowsSelector.tsx | 112 ++++++++++++++++++ 5 files changed, 159 insertions(+), 100 deletions(-) create mode 100644 semcore/data-table/src/components/RowSelector/RowsSelector.tsx diff --git a/semcore/data-table/src/components/Body/Body.tsx b/semcore/data-table/src/components/Body/Body.tsx index 952700920f..7831b3e995 100644 --- a/semcore/data-table/src/components/Body/Body.tsx +++ b/semcore/data-table/src/components/Body/Body.tsx @@ -150,11 +150,6 @@ class BodyRoot extends Component = { expandedForAnimation: boolean; @@ -36,8 +35,6 @@ export class RowRoot extends Component< private closeAccordionTimeout = 0; private openAccordionTimeout = 0; - private unsubscribeToggle: undefined | (() => void) = undefined; - rowElementRef = React.createRef(); state: State = { @@ -53,18 +50,10 @@ export class RowRoot extends Component< } componentDidMount() { - const { componentRef, selectedRows, row } = this.asProps; + const { componentRef } = this.asProps; componentRef?.(this); this.setAccordion(); - - if (selectedRows && !Array.isArray(selectedRows)) { - this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { - if (row[UNIQ_ROW_KEY] === key) { - this.forceUpdate(); - } - }); - } } componentDidUpdate(prevProps: DataTableRowProps) { @@ -77,8 +66,6 @@ export class RowRoot extends Component< componentWillUnmount() { this.asProps.componentRef?.(null); - - this.unsubscribeToggle?.(); } setAccordion() { @@ -122,28 +109,6 @@ export class RowRoot extends Component< ); } - handleSelectRow = (value: boolean, event?: React.SyntheticEvent) => { - const { row, rowIndex, onSelectRow, selectedRows } = this.asProps; - - onSelectRow?.(value, rowIndex, row, event); - - if (selectedRows && !Array.isArray(selectedRows)) { - selectedRows.toggle(value, row); - } - }; - - handleClickCheckbox = (value: boolean) => (event?: React.SyntheticEvent) => { - event?.preventDefault(); - event?.stopPropagation(); - const { row, rowIndex, onSelectRow, selectedRows } = this.asProps; - - onSelectRow?.(value, rowIndex, row, event); - - if (selectedRows && !Array.isArray(selectedRows)) { - selectedRows.toggle(value, row); - } - }; - handleBackFromAccordion = (e: React.KeyboardEvent) => { if (e.key === 'Escape') { this.asProps.onBackFromAccordion(this.cellName); @@ -297,6 +262,7 @@ export class RowRoot extends Component< isAccordionRow, accordionRowIndex, selectedRows, + theme, } = this.asProps; const SAccordionToggle = ButtonLink; @@ -338,7 +304,7 @@ export class RowRoot extends Component< flatRows: this.asProps.flatRows, shadowVertical, withoutBorder, - theme: this.theme, + theme, }; if (renderCell) { @@ -440,22 +406,10 @@ export class RowRoot extends Component< : undefined; } - get theme() { - const { selectedRows, theme, row } = this.asProps; - - if (!selectedRows || Array.isArray(selectedRows)) { - return theme; - } - - const rowUniqKey = row[UNIQ_ROW_KEY]; - return selectedRows.isChecked(rowUniqKey) ? 'info' : theme; - } - render() { const SRow = Root; const SCollapseRow = Collapse; const SCell = Row.Cell; - const SCheckboxCell = Row.Cell; const { columns, row, @@ -485,6 +439,8 @@ export class RowRoot extends Component< scrollAreaRef, accordionAnimationRows, onCellClick, + onSelectRow, + theme, } = this.asProps; const { expandedForAnimation, accordionRows, accordionComponent } = this.state; @@ -531,7 +487,6 @@ export class RowRoot extends Component< onClick={this.handleClickRow(row)} aria-hidden={this.isRowHidden} data-filled-columns={filledColumns} - theme={this.theme} > {columns.map((column, i) => { const index = i; @@ -554,38 +509,27 @@ export class RowRoot extends Component< } if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { - const checked = Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : selectedRows.isChecked(rowUniqKey); - const nextColumnName = columns[i + 1].name; - if (!(nextColumnName in row)) { + if (!(nextColumnName in row) || Array.isArray(row)) { return null; } return ( - - - - - + theme={theme} + uid={uid} + selectedRows={selectedRows} + onSelectRow={onSelectRow} + /> ); } diff --git a/semcore/data-table/src/components/Body/RowGroup.tsx b/semcore/data-table/src/components/Body/RowGroup.tsx index 08a52adbc5..84ecea5573 100644 --- a/semcore/data-table/src/components/Body/RowGroup.tsx +++ b/semcore/data-table/src/components/Body/RowGroup.tsx @@ -25,23 +25,23 @@ type RowGroupProps = { }; export class RowGroup extends React.PureComponent> { - private unsubscribeToggle: undefined | (() => void) = undefined; - - componentDidMount() { - const { selectedRows, rows } = this.props; - - if (selectedRows && !Array.isArray(selectedRows)) { - this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { - if (rows[0][UNIQ_ROW_KEY] === key) { - this.forceUpdate(); - } - }); - } - } - - componentWillUnmount() { - this.unsubscribeToggle?.(); - } + // private unsubscribeToggle: undefined | (() => void) = undefined; + // + // componentDidMount() { + // const { selectedRows, rows } = this.props; + // + // if (selectedRows && !Array.isArray(selectedRows)) { + // this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { + // if (rows[0][UNIQ_ROW_KEY] === key) { + // this.forceUpdate(); + // } + // }); + // } + // } + // + // componentWillUnmount() { + // this.unsubscribeToggle?.(); + // } render() { const SRowGroup = Box; @@ -50,7 +50,7 @@ export class RowGroup extends React.Pur const groupUniqKey = rows[0][UNIQ_ROW_KEY]; let isFirstCellAreMergedRows = false; - const theme: 'info' | undefined = undefined; + // const theme: 'info' | undefined = undefined; if (selectedRows) { const nextColumnName = columns[1].name; @@ -76,9 +76,9 @@ export class RowGroup extends React.Pur componentRef: this.props.handleComponentRef(item), }; - if (isFirstCellAreMergedRows && (Array.isArray(selectedRows) ? selectedRows.includes(groupUniqKey) : selectedRows?.isChecked(groupUniqKey))) { - rowProps.theme = 'info'; - } + // if (isFirstCellAreMergedRows && (Array.isArray(selectedRows) ? selectedRows.includes(groupUniqKey) : selectedRows?.isChecked(groupUniqKey))) { + // rowProps.theme = 'info'; + // } return ( SCellWrapper > SCell:not([theme]), SRow[isAccordionRow] > SCellWr /* we need a media query here because of the postcssHoverMediaFeature plugin. it doesn't handle this type of selectors correctly */ @media (hover: hover) { - SRow:not([accordionType='row'][expanded]):hover:not([isNonInteractive]):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { + SRow:not([accordionType='row'][expanded]):hover:not([isNonInteractive]):not(:has([data-row-selector="true"] input:checked)):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), + SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]):first-child:not(:has([data-row-selector="true"] input:checked)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), + SRowGroup:has(SCell:hover) > SRow:not([isNonInteractive]):not([aria-hidden]):first-child:not(:has([data-row-selector="true"] input:checked)) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { background-color: var(--intergalactic-table-td-cell-hover, #f0f0f4); } @@ -121,9 +121,12 @@ SCollapseRow > SCellWrapper > SCell:not([theme]), SRow[isAccordionRow] > SCellWr /* INFO THEME */ SRow:hover:not([isNonInteractive]):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell[theme='info']:not([aria-hidden]), + SRow:hover:has([data-row-selector="true"] input:checked):not([isNonInteractive]):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([aria-hidden]), SRow[theme='info']:hover:not([expanded][isNonInteractive]):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[theme='info']:not([aria-hidden]), + SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover):has([data-row-selector="true"] input:checked) SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([aria-hidden]), SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow[theme='info']:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([aria-hidden]), + SRowGroup:has(SCell:hover):has([data-row-selector="true"] input:checked) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([aria-hidden]), SRowGroup:has(SCell:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup'][theme='info']:not([aria-hidden]), SRowGroup:has(SCell:hover) > SRow[theme='info']:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([aria-hidden]) { background-color: var(--intergalactic-table-td-cell-selected-hover, #c4e5fe); @@ -235,6 +238,11 @@ SRow[theme='danger'][active] > SCellWrapper > SCell:not([theme]) { background-color: var(--intergalactic-table-td-cell-critical-active, #ffd7df); } +SRowGroup:has([data-row-selector="true"] input:checked) > SRow > SCellWrapper > SCell, +SRow:has([data-row-selector="true"] input:checked) > SCellWrapper > SCell { + background-color: var(--intergalactic-table-td-cell-selected, #e9f7ff); +} + SCell { display: flex; height: 100%; diff --git a/semcore/data-table/src/components/RowSelector/RowsSelector.tsx b/semcore/data-table/src/components/RowSelector/RowsSelector.tsx new file mode 100644 index 0000000000..694c57cc9c --- /dev/null +++ b/semcore/data-table/src/components/RowSelector/RowsSelector.tsx @@ -0,0 +1,112 @@ +import Checkbox from '@semcore/checkbox'; +import React from 'react'; + +import type { ISelectedRows } from '../../store/SelectableRows'; +import { SelectableRows } from '../../store/SelectableRows'; +import type { Theme } from '../Body/Cell.types'; +import { Row } from '../Body/Row'; +import type { DTRow } from '../Body/Row.types'; +import { UNIQ_ROW_KEY, SELECT_ALL } from '../DataTable/DataTable'; + +type RowSelectorProps = { + row: DTRow; + rowIndex: number; + gridRowIndex: number; + expanded: boolean; + withAccordion: boolean; + + uid: string; + theme?: Theme; + isCellHidden?: boolean; + isAccordionRow?: boolean; + selectedRows?: UniqKeyType[] | ISelectedRows; + onSelectRow?: ( + isSelect: boolean, + selectedRowIndex: number, + row: DTRow, + event?: React.SyntheticEvent, + ) => void; +}; + +type State = { + checked: boolean; +}; + +export class RowSelector extends React.PureComponent, State> { + state: State = { + checked: false, + }; + + private unsubscribeToggle: undefined | (() => void) = undefined; + + componentDidMount(): void { + const { row, selectedRows } = this.props; + if (selectedRows && !Array.isArray(selectedRows)) { + this.unsubscribeToggle = selectedRows.subscribe(SelectableRows.TOGGLE_EVENT, (key: UniqKeyType) => { + if (row[UNIQ_ROW_KEY] === key) { + this.setState({ checked: selectedRows.has(row[UNIQ_ROW_KEY]) }); + } + }); + } + } + + componentWillUnmount(): void { + this.unsubscribeToggle?.(); + } + + handleSelectRow = (value: boolean, event?: React.SyntheticEvent) => { + const { row, rowIndex, onSelectRow, selectedRows } = this.props; + + onSelectRow?.(value, rowIndex, row, event); + + if (selectedRows && !Array.isArray(selectedRows)) { + selectedRows.toggle(value, row); + } + }; + + handleClickCheckbox = (value: boolean) => (event?: React.SyntheticEvent) => { + event?.preventDefault(); + event?.stopPropagation(); + const { row, rowIndex, onSelectRow, selectedRows } = this.props; + + onSelectRow?.(value, rowIndex, row, event); + + if (selectedRows && !Array.isArray(selectedRows)) { + selectedRows.toggle(value, row); + } + }; + + render() { + const SCheckboxCell = Row.Cell; + + const { row, rowIndex, gridRowIndex, expanded, withAccordion, isAccordionRow, isCellHidden, theme, uid, selectedRows } = this.props; + const rowUniqKey = row[UNIQ_ROW_KEY]; + + const checked = Array.isArray(selectedRows) ? selectedRows.includes(rowUniqKey) : this.state.checked; + + return ( + + + + + + ); + } +} From 96ec71119fc4aa08cb7b340a737c8ddcca3eff25 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Wed, 25 Mar 2026 09:13:42 +0100 Subject: [PATCH 18/24] [data-table] improved perf for select all UIK-5006 --- package.json | 2 +- semcore/data-table/src/components/Body/style.shadow.css | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index bd0c6e7878..0171778e61 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "packageManager": "pnpm@10.11.1+sha512.e519b9f7639869dc8d5c3c5dfef73b3f091094b0a006d7317353c72b124e80e1afd429732e28705ad6bfa1ee879c1fce46c128ccebd3192101f43dd67c667912", + "packageManager": "pnpm@10.11.1", "scripts": { "dev": "pnpm storybook", "start": "pnpm storybook", diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 301a831b9e..626553c24f 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -104,8 +104,8 @@ SCollapseRow > SCellWrapper > SCell:not([theme]), SRow[isAccordionRow] > SCellWr /* we need a media query here because of the postcssHoverMediaFeature plugin. it doesn't handle this type of selectors correctly */ @media (hover: hover) { SRow:not([accordionType='row'][expanded]):hover:not([isNonInteractive]):not(:has([data-row-selector="true"] input:checked)):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]):first-child:not(:has([data-row-selector="true"] input:checked)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell:hover) > SRow:not([isNonInteractive]):not([aria-hidden]):first-child:not(:has([data-row-selector="true"] input:checked)) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { + SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), + SRowGroup:has(SCell:hover):not(:has(SRow:first-child(:has([data-row-selector="true"] input:checked)))) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { background-color: var(--intergalactic-table-td-cell-hover, #f0f0f4); } @@ -127,6 +127,7 @@ SCollapseRow > SCellWrapper > SCell:not([theme]), SRow[isAccordionRow] > SCellWr SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover):has([data-row-selector="true"] input:checked) SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([aria-hidden]), SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow[theme='info']:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([aria-hidden]), SRowGroup:has(SCell:hover):has([data-row-selector="true"] input:checked) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([aria-hidden]), + SRowGroup:has([data-row-selector="true"] input:checked) > SRow:hover:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([aria-hidden]), SRowGroup:has(SCell:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup'][theme='info']:not([aria-hidden]), SRowGroup:has(SCell:hover) > SRow[theme='info']:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([aria-hidden]) { background-color: var(--intergalactic-table-td-cell-selected-hover, #c4e5fe); From 6aaa51ba80d46ce33ebf09f143e3d8b7982c12ec Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Wed, 25 Mar 2026 14:36:16 +0100 Subject: [PATCH 19/24] [stories] fixed types for data-table --- .../src/components/DataTable/DataTable.types.ts | 2 +- .../cells-tests/checkbox-in-table-with-no-data.tsx | 2 +- .../cells-tests/checkbox-reactive-with-pagination.tsx | 10 ++++++++++ .../data-table/tests/examples/cells-tests/checkbox.tsx | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/semcore/data-table/src/components/DataTable/DataTable.types.ts b/semcore/data-table/src/components/DataTable/DataTable.types.ts index 1e3b644992..acd32349f8 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.types.ts +++ b/semcore/data-table/src/components/DataTable/DataTable.types.ts @@ -42,7 +42,7 @@ export type DataTableData = DataRowItem[]; export type DTUse = 'primary' | 'secondary'; -export type Sizes = Pick; +export type Sizes = Partial>; export type DataTableProps< Data extends DataTableData, diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx index 1e2b10d396..9b599ba8d5 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-in-table-with-no-data.tsx @@ -5,7 +5,7 @@ export type DemoProps = { reactive?: boolean; }; -const selectableRows = new SelectableRows(); +const selectableRows = new SelectableRows(); const columns = [ { name: 'keyword', children: 'Keyword' }, diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx index 11d4e0c95c..797f197db2 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive-with-pagination.tsx @@ -145,6 +145,7 @@ const flatData = [ const mergedData = [ { + id: '.1', keyword: 'ebay buy', [ROW_GROUP]: [ { id: '1', kd: '31.2', cpc: '$1.15', vol: '22,000' }, @@ -152,6 +153,7 @@ const mergedData = [ ], }, { + id: '.2', keyword: 'amazon shoes', [ROW_GROUP]: [ { id: '3', kd: '47', cpc: '$2.95', vol: '48,000' }, @@ -159,6 +161,7 @@ const mergedData = [ ], }, { + id: '.3', keyword: 'www.nike.com', [ROW_GROUP]: [ { id: '5', kd: '66.4', cpc: '$3.80', vol: 'n/a' }, @@ -166,6 +169,7 @@ const mergedData = [ ], }, { + id: '.4', keyword: 'buy iphone 13', [ROW_GROUP]: [ { id: '7', kd: '59', cpc: '$5.20', vol: '71,000' }, @@ -173,36 +177,42 @@ const mergedData = [ ], }, { + id: '.5', keyword: 'adidas sale', [ROW_GROUP]: [ { id: '9', kd: '40.2', cpc: '$1.85', vol: '19,500' }, ], }, { + id: '.6', keyword: 'cheap flights expedia', [ROW_GROUP]: [ { id: '10', kd: '52', cpc: '$4.10', vol: '35,800' }, ], }, { + id: '.7', keyword: 'booking.com hotels', [ROW_GROUP]: [ { id: '11', kd: '73', cpc: '$6.45', vol: 'n/a' }, ], }, { + id: '.8', keyword: 'ubereats promo code', [ROW_GROUP]: [ { id: '12', kd: '38', cpc: '$2.10', vol: '11,700' }, ], }, { + id: '.9', keyword: 'buy ps5 online', [ROW_GROUP]: [ { id: '13', kd: '64', cpc: '$5.95', vol: '44,200' }, ], }, { + id: '.10', keyword: 'shopify login', [ROW_GROUP]: [ { id: '14', kd: '25.8', cpc: '$0.65', vol: '13,600' }, diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx index 193bc3eb1c..3464e12f85 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox.tsx @@ -33,7 +33,7 @@ const fixedColumns = [ const Demo = ({ fixedColumns: useFixedColumns = false }: DemoProps) => { const [selectedRows, setSelectedRows] = React.useState([]); - const [sort, setSort] = React.useState>(); + const [sort, setSort] = React.useState>(); return (

From ad92d99a7e658931c5f9e6323dbcdf602d606425 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Wed, 25 Mar 2026 16:37:27 +0100 Subject: [PATCH 20/24] [stories] update test story --- .../cells-tests/checkbox-reactive.tsx | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx index d5a6a56fe7..b7103e4fbb 100644 --- a/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx +++ b/stories/components/data-table/tests/examples/cells-tests/checkbox-reactive.tsx @@ -1,8 +1,13 @@ +import { Flex } from '@semcore/ui/base-components'; +import Button from '@semcore/ui/button'; import { DataTable, SelectableRows } from '@semcore/ui/data-table'; +import { Text } from '@semcore/ui/typography'; import React from 'react'; - export type DemoProps = { fixedColumns?: boolean; + limitMode?: boolean; + rowsLimit?: number; + columnsLimit?: number; }; const data = Array.from({ length: 50 }).map((_, index) => ({ @@ -15,7 +20,9 @@ const data = Array.from({ length: 50 }).map((_, index) => ({ const selectedRows = new SelectableRows(); -const Demo = ({ fixedColumns = false }: DemoProps) => { +const Demo = (props: DemoProps) => { + const { rowsLimit, columnsLimit, fixedColumns, limitMode } = props; + const columns = fixedColumns ? [ { name: 'id', children: 'ID', fixed: 'left' as const, gtcWidth: '100px' }, @@ -29,9 +36,35 @@ const Demo = ({ fixedColumns = false }: DemoProps) => { { name: 'name', children: 'Name' }, ]; + const limit = limitMode + ? { + fromRow: rowsLimit, + fromColumn: columnsLimit, + renderOverlay() { + return ( + + + You've reached your report limit for today + + + To increase your daily report limit, upgrade to a Guru plan. + + + + + ); + }, + } + : undefined; + return (
{ export const defaultProps: DemoProps = { fixedColumns: false, + limitMode: false, + columnsLimit: 1, + rowsLimit: 1, }; Demo.defaultProps = defaultProps; From b2c79b0e75f21433e71b3ce76c954c68ce1b77e7 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 26 Mar 2026 12:19:39 +0100 Subject: [PATCH 21/24] [data-table] fixed styles for hover rows UIK-5029 --- semcore/data-table/src/components/Body/style.shadow.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 626553c24f..9c9dbf8b0c 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -103,9 +103,9 @@ SCollapseRow > SCellWrapper > SCell:not([theme]), SRow[isAccordionRow] > SCellWr /* we need a media query here because of the postcssHoverMediaFeature plugin. it doesn't handle this type of selectors correctly */ @media (hover: hover) { - SRow:not([accordionType='row'][expanded]):hover:not([isNonInteractive]):not(:has([data-row-selector="true"] input:checked)):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), - SRowGroup:has(SCell:hover):not(:has(SRow:first-child(:has([data-row-selector="true"] input:checked)))) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { + :not(SRowGroup:has([data-row-selector="true"] input:checked)) > SRow:not([accordionType='row'][expanded]):hover:not([isNonInteractive]):not(:has([data-row-selector="true"] input:checked)):not([aria-hidden]):not(:has(SLimitOverlayCellWrapper:hover)) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), + SRowGroup:has(SCell[data-grouped-by='rowgroup']:hover):not(:has([data-row-selector="true"] input:checked)) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell:not([theme]):not([expanded][withAccordion]):not([aria-hidden]), + SRowGroup:has(SCell:hover):not(:has([data-row-selector="true"] input:checked)) > SRow:not([isNonInteractive]):not([aria-hidden]) > SCellWrapper > SCell[data-grouped-by='rowgroup']:not([theme]):not([expanded][withAccordion]):not([aria-hidden]) { background-color: var(--intergalactic-table-td-cell-hover, #f0f0f4); } From 1acfc82891f929fe51691f206aa65cd2a83d7159 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 26 Mar 2026 12:25:09 +0100 Subject: [PATCH 22/24] [data-table] fixed styles for rows with accordion and checkbox UIK-5030 --- semcore/data-table/src/components/Body/style.shadow.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 9c9dbf8b0c..0037a790fc 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -181,7 +181,7 @@ SRow[theme='muted'][active] > SCellWrapper > SCell:not([theme]) { /* INFO THEME */ -SRow[theme='info'] SCell:not([theme]) { +SRow[theme='info'] SCell:not([theme]), SRow:has([data-row-selector="true"] input:checked) SCell:not([theme]) { &:not([expanded][withAccordion]) { background-color: var(--intergalactic-table-td-cell-selected, #e9f7ff); } From e7dc4c46e519358ecc73d04f78fa44849c6f7683 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 27 Mar 2026 12:31:30 +0100 Subject: [PATCH 23/24] [data-table] fixed init state for RowsSelector UIK-5042 --- .../src/components/RowSelector/RowsSelector.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/semcore/data-table/src/components/RowSelector/RowsSelector.tsx b/semcore/data-table/src/components/RowSelector/RowsSelector.tsx index 694c57cc9c..63e4fb768e 100644 --- a/semcore/data-table/src/components/RowSelector/RowsSelector.tsx +++ b/semcore/data-table/src/components/RowSelector/RowsSelector.tsx @@ -39,6 +39,15 @@ export class RowSelector extends React.PureComponent void) = undefined; + constructor(props: RowSelectorProps) { + super(props); + + const { row, selectedRows } = props; + if (selectedRows && !Array.isArray(selectedRows)) { + this.state.checked = selectedRows.has(row[UNIQ_ROW_KEY]); + } + } + componentDidMount(): void { const { row, selectedRows } = this.props; if (selectedRows && !Array.isArray(selectedRows)) { From 8b29efd76993041b170cc4ccaaa195a3963f0336 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Fri, 27 Mar 2026 16:17:20 +0100 Subject: [PATCH 24/24] [data-table] update test --- .../data-table-accordion.browser-test.tsx | 5 +- .../data-table-states.browser-test.tsx | 68 ++++++++++++++++--- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx index 0a607817b3..4bffe9ae12 100644 --- a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx @@ -253,7 +253,6 @@ test.describe(`${TAG.VISUAL}`, () => { await loadPage(page, 'stories/components/data-table/advanced/examples/accordion_with_checkbox.tsx', 'en', item); const cells = locators.row(page, 2).locator('[data-ui-name="Row.Cell"]'); - await page.locator('[data-ui-name="Checkbox"]').nth(1).click(); const accordion = page.locator('[role="gridcell"][aria-level="2"]'); @@ -265,6 +264,10 @@ test.describe(`${TAG.VISUAL}`, () => { 'background-color': stylesActiveHovered[1], }); + await checkStyles(accordion, { + 'background-color': stylesNotActive[2], + }); + await expect(page).toHaveScreenshot(); if (item.variant == 'card' || item.sideIndents == 'wide') { diff --git a/semcore/data-table/__tests__/data-table-states.browser-test.tsx b/semcore/data-table/__tests__/data-table-states.browser-test.tsx index 38490fc778..8a8d8379a3 100644 --- a/semcore/data-table/__tests__/data-table-states.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-states.browser-test.tsx @@ -575,6 +575,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeHidden(); await expect(selectedRowsCount).toBeHidden(); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify each checkbox in cell has aria-labelledby ', async () => { @@ -624,7 +626,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(selectedRowsCount).toHaveText('10'); await expect(selectAllCheckbox).toBeChecked(); - await expect(selectAllCheckbox).toHaveClass(/checked/); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify action bar when one item on next page unchecked', async () => { @@ -633,6 +636,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(rowCheckboxes.first()).not.toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + for (let i = 1; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify action bar when next page opened', async () => { @@ -640,11 +645,16 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(selectAllCheckbox).not.toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify indeterminate state saved when prev button is opened', async () => { await prevButton.click(); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + await expect(rowCheckboxes.first()).not.toBeChecked(); + for (let i = 1; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify checked state on all pages changes to undhecked by click on Deselect all', async () => { @@ -701,13 +711,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(selectedRowsCount).toHaveText('5'); await expect(selectAllCheckbox).toBeChecked(); - const count = await firstColumnCells.count(); - for (let i = 0; i < count; i++) { - const firstColumnCell = firstColumnCells.nth(i); - const checkbox = firstColumnCell.locator( - 'input[type="checkbox"][data-ui-name="Checkbox.Value"]', - ); - } + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify panel state when next page opened', async () => { await page.keyboard.press('Tab'); @@ -716,6 +721,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeVisible(); await expect(selectedRowsCount).toHaveText('5'); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify panel when activating Select all on text page', async () => { await page.keyboard.press('Shift+Tab'); @@ -724,17 +731,21 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await page.keyboard.press('Space'); await expect(selectedRowsCount).toHaveText('10'); await expect(selectAllCheckbox).toBeChecked(); - await expect(selectAllCheckbox).toHaveClass(/checked/); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify counter on the panel decreased and indeterminate state when uncheck one checkbox', async () => { await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowDown'); await page.keyboard.press('Space'); + await expect(rowCheckboxes.nth(0)).toBeChecked(); await expect(rowCheckboxes.nth(1)).not.toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + for (let i = 2; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify panel when opening next page', async () => { await page.keyboard.press('Tab'); @@ -743,15 +754,20 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await page.keyboard.press('Space'); await expect(selectAllCheckbox).not.toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify panel state saved on prev pages', async () => { await page.keyboard.press('Shift+Tab'); await page.keyboard.press('Space'); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + await expect(rowCheckboxes.nth(0)).toBeChecked(); + await expect(rowCheckboxes.nth(1)).not.toBeChecked(); + for (let i = 2; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); await page.keyboard.press('Shift+Tab'); await page.keyboard.press('Space'); - await expect(selectAllCheckbox).toBeChecked(); }); if (browserName === 'webkit') return; // because of pagination bus in safari @@ -1046,6 +1062,9 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeVisible(); await expect(selectedRowsCount).toHaveText('5'); await expect(selectAllCheckbox).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify counter increases when selecting on next page', async () => { @@ -1053,12 +1072,18 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(selectedRowsCount).toHaveText('10'); await expect(selectAllCheckbox).toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify indeterminate when one row unchecked', async () => { await rowCheckboxes.first().click(); await expect(rowCheckboxes.first()).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 1; i < count; i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); }); @@ -1067,12 +1092,19 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await nextButton.click(); await expect(selectAllCheckbox).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 0; i < count; i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); }); await test.step('Verify indeterminate state saved when prev button clicked', async () => { await prevButton.click(); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); + await expect(rowCheckboxes.first()).not.toBeChecked(); + const count = await rowCheckboxes.count(); + for (let i = 1; i < count; i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify deselect all clears everything', async () => { @@ -1080,9 +1112,13 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeHidden(); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); await nextButton.click(); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); }); @@ -1106,6 +1142,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeVisible(); await expect(selectedRowsCount).toHaveText('5'); await expect(selectAllCheckbox).toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify navigate to next page', async () => { @@ -1115,6 +1153,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeVisible(); await expect(selectedRowsCount).toHaveText('5'); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); await test.step('Verify select all on second page', async () => { @@ -1125,14 +1165,18 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await page.keyboard.press('Space'); await expect(selectedRowsCount).toHaveText('10'); await expect(selectAllCheckbox).toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); }); await test.step('Verify uncheck single row', async () => { await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowDown'); await page.keyboard.press('Space'); - + await expect(rowCheckboxes.nth(0)).toBeChecked(); await expect(rowCheckboxes.nth(1)).not.toBeChecked(); + for (let i = 2; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).toBeChecked(); await expect(selectedRowsCount).toHaveText('9'); await expect(selectAllCheckbox).toHaveClass(/indeterminate/); }); @@ -1145,6 +1189,8 @@ test.describe(`${TAG.FUNCTIONAL}`, () => { await expect(collapse).toBeHidden(); await expect(selectAllCheckbox).not.toBeChecked(); + for (let i = 0; i < await rowCheckboxes.count(); i++) + await expect(rowCheckboxes.nth(i)).not.toBeChecked(); }); });