@economic/taco 11.0.1-EC-71735-react-19-upgrade.0 → 12.0.0-react18-compat.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/charts/utils/color.cjs +1 -1
- package/dist/charts/utils/color.cjs.map +1 -1
- package/dist/charts/utils/color.js +1 -1
- package/dist/charts/utils/color.js.map +1 -1
- package/dist/primitives/Table/types.cjs.map +1 -1
- package/dist/primitives/Table/types.d.ts +1 -1
- package/dist/primitives/Table/types.js.map +1 -1
- package/dist/tailwind.colors.cjs +1 -27
- package/dist/tailwind.colors.cjs.map +1 -1
- package/dist/tailwind.colors.js +1 -27
- package/dist/tailwind.colors.js.map +1 -1
- package/dist/utils/tailwind.cjs +1 -18
- package/dist/utils/tailwind.cjs.map +1 -1
- package/dist/utils/tailwind.d.ts +1 -1
- package/dist/utils/tailwind.js +1 -18
- package/dist/utils/tailwind.js.map +1 -1
- package/package.json +6 -6
- package/tailwind.colors.js +8 -31
|
@@ -28,7 +28,7 @@ const getInverseThemeColor = (hexCode) => {
|
|
|
28
28
|
if (shade > 500) {
|
|
29
29
|
return getThemeColor(`${color}-100`);
|
|
30
30
|
}
|
|
31
|
-
if (shade === 500 && (color === "red" || color === "blue" || color === "
|
|
31
|
+
if (shade === 500 && (color === "red" || color === "blue" || color === "purple" || color === "green")) {
|
|
32
32
|
return "white";
|
|
33
33
|
}
|
|
34
34
|
return getThemeColor(`${color}-900`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.cjs","sources":["../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors.js';\n\nconst mapColor = (palette: any, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n }\n\n if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n }\n\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string | Color | undefined, def = '') => colors[color ?? def];\n\nexport const getInverseThemeColor = (hexCode: string) => {\n const themeColor: Color | undefined = Object.keys(colors)[Object.values(colors).indexOf(hexCode)];\n\n const [color, number] = String(themeColor).split('-');\n const shade = Number(number);\n\n if (shade) {\n if (shade > 500) {\n return getThemeColor(`${color}-100`);\n }\n if (
|
|
1
|
+
{"version":3,"file":"color.cjs","sources":["../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors.js';\n\nconst mapColor = (palette: any, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n }\n\n if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n }\n\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string | Color | undefined, def = '') => colors[color ?? def];\n\nexport const getInverseThemeColor = (hexCode: string) => {\n const themeColor: Color | undefined = Object.keys(colors)[Object.values(colors).indexOf(hexCode)];\n\n const [color, number] = String(themeColor).split('-');\n const shade = Number(number);\n\n if (shade) {\n if (shade > 500) {\n return getThemeColor(`${color}-100`);\n }\n if (shade === 500 && (color === 'red' || color === 'blue' || color === 'purple' || color === 'green')) {\n return 'white';\n }\n\n return getThemeColor(`${color}-900`);\n }\n\n return color === 'black' ? 'white' : 'black';\n};\n"],"names":["themeColors"],"mappings":";;;AAEA,MAAM,WAAW,CAAC,SAAc,SAAS,OAAY;AACjD,SAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,OAAO,UAAU;AACjD,QAAI,UAAU,WAAW;AACrB,aAAO;AAAA,IACX;AAEA,QAAI,OAAO,QAAQ,KAAK,MAAM,UAAU;AACpC,aAAO;AAAA,QACH,GAAG;AAAA,QACH,CAAC,SAAU,UAAU,YAAY,SAAS,GAAG,MAAM,IAAI,KAAK,KAAM,KAAK,GAAG,QAAQ,KAAK;AAAA,MAAA;AAAA,IAE/F;AAEA,WAAO;AAAA,MACH,GAAG;AAAA,MACH,GAAG,SAAS,QAAQ,KAAK,GAAG,KAAK;AAAA,IAAA;AAAA,EAEzC,GAAG,CAAA,CAAE;AACT;AAEO,MAAM,SAAiC,SAASA,eAAW;AAI3D,MAAM,gBAAgB,CAAC,OAAmC,MAAM,OAAO,OAAO,SAAS,GAAG;AAE1F,MAAM,uBAAuB,CAAC,YAAoB;AACrD,QAAM,aAAgC,OAAO,KAAK,MAAM,EAAE,OAAO,OAAO,MAAM,EAAE,QAAQ,OAAO,CAAC;AAEhG,QAAM,CAAC,OAAO,MAAM,IAAI,OAAO,UAAU,EAAE,MAAM,GAAG;AACpD,QAAM,QAAQ,OAAO,MAAM;AAE3B,MAAI,OAAO;AACP,QAAI,QAAQ,KAAK;AACb,aAAO,cAAc,GAAG,KAAK,MAAM;AAAA,IACvC;AACA,QAAI,UAAU,QAAQ,UAAU,SAAS,UAAU,UAAU,UAAU,YAAY,UAAU,UAAU;AACnG,aAAO;AAAA,IACX;AAEA,WAAO,cAAc,GAAG,KAAK,MAAM;AAAA,EACvC;AAEA,SAAO,UAAU,UAAU,UAAU;AACzC;;;;"}
|
|
@@ -26,7 +26,7 @@ const getInverseThemeColor = (hexCode) => {
|
|
|
26
26
|
if (shade > 500) {
|
|
27
27
|
return getThemeColor(`${color}-100`);
|
|
28
28
|
}
|
|
29
|
-
if (shade === 500 && (color === "red" || color === "blue" || color === "
|
|
29
|
+
if (shade === 500 && (color === "red" || color === "blue" || color === "purple" || color === "green")) {
|
|
30
30
|
return "white";
|
|
31
31
|
}
|
|
32
32
|
return getThemeColor(`${color}-900`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sources":["../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors.js';\n\nconst mapColor = (palette: any, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n }\n\n if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n }\n\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string | Color | undefined, def = '') => colors[color ?? def];\n\nexport const getInverseThemeColor = (hexCode: string) => {\n const themeColor: Color | undefined = Object.keys(colors)[Object.values(colors).indexOf(hexCode)];\n\n const [color, number] = String(themeColor).split('-');\n const shade = Number(number);\n\n if (shade) {\n if (shade > 500) {\n return getThemeColor(`${color}-100`);\n }\n if (
|
|
1
|
+
{"version":3,"file":"color.js","sources":["../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors.js';\n\nconst mapColor = (palette: any, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n }\n\n if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n }\n\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string | Color | undefined, def = '') => colors[color ?? def];\n\nexport const getInverseThemeColor = (hexCode: string) => {\n const themeColor: Color | undefined = Object.keys(colors)[Object.values(colors).indexOf(hexCode)];\n\n const [color, number] = String(themeColor).split('-');\n const shade = Number(number);\n\n if (shade) {\n if (shade > 500) {\n return getThemeColor(`${color}-100`);\n }\n if (shade === 500 && (color === 'red' || color === 'blue' || color === 'purple' || color === 'green')) {\n return 'white';\n }\n\n return getThemeColor(`${color}-900`);\n }\n\n return color === 'black' ? 'white' : 'black';\n};\n"],"names":["themeColors"],"mappings":";AAEA,MAAM,WAAW,CAAC,SAAc,SAAS,OAAY;AACjD,SAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,OAAO,UAAU;AACjD,QAAI,UAAU,WAAW;AACrB,aAAO;AAAA,IACX;AAEA,QAAI,OAAO,QAAQ,KAAK,MAAM,UAAU;AACpC,aAAO;AAAA,QACH,GAAG;AAAA,QACH,CAAC,SAAU,UAAU,YAAY,SAAS,GAAG,MAAM,IAAI,KAAK,KAAM,KAAK,GAAG,QAAQ,KAAK;AAAA,MAAA;AAAA,IAE/F;AAEA,WAAO;AAAA,MACH,GAAG;AAAA,MACH,GAAG,SAAS,QAAQ,KAAK,GAAG,KAAK;AAAA,IAAA;AAAA,EAEzC,GAAG,CAAA,CAAE;AACT;AAEO,MAAM,SAAiC,SAASA,YAAW;AAI3D,MAAM,gBAAgB,CAAC,OAAmC,MAAM,OAAO,OAAO,SAAS,GAAG;AAE1F,MAAM,uBAAuB,CAAC,YAAoB;AACrD,QAAM,aAAgC,OAAO,KAAK,MAAM,EAAE,OAAO,OAAO,MAAM,EAAE,QAAQ,OAAO,CAAC;AAEhG,QAAM,CAAC,OAAO,MAAM,IAAI,OAAO,UAAU,EAAE,MAAM,GAAG;AACpD,QAAM,QAAQ,OAAO,MAAM;AAE3B,MAAI,OAAO;AACP,QAAI,QAAQ,KAAK;AACb,aAAO,cAAc,GAAG,KAAK,MAAM;AAAA,IACvC;AACA,QAAI,UAAU,QAAQ,UAAU,SAAS,UAAU,UAAU,UAAU,YAAY,UAAU,UAAU;AACnG,aAAO;AAAA,IACX;AAEA,WAAO,cAAc,GAAG,KAAK,MAAM;AAAA,EACvC;AAEA,SAAO,UAAU,UAAU,UAAU;AACzC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '../../components/Menu/components/Item';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '../../types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement | null> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":";;AA0BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;;"}
|
|
1
|
+
{"version":3,"file":"types.cjs","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '../../components/Menu/components/Item';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '../../types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.Ref<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":";;AA0BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;;"}
|
|
@@ -61,7 +61,7 @@ export type TableColumnRendererControlProps = {
|
|
|
61
61
|
onKeyDown?: React.KeyboardEventHandler;
|
|
62
62
|
onFocus?: React.FocusEventHandler;
|
|
63
63
|
readOnly?: boolean;
|
|
64
|
-
ref: React.
|
|
64
|
+
ref: React.Ref<HTMLElement>;
|
|
65
65
|
setValue: (value: any) => void;
|
|
66
66
|
value: any;
|
|
67
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '../../components/Menu/components/Item';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '../../types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement | null> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":"AA0BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '../../components/Menu/components/Item';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '../../types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.Ref<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":"AA0BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;"}
|
package/dist/tailwind.colors.cjs
CHANGED
|
@@ -1,29 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const tokens = require("@economic/taco-tokens/tokens");
|
|
3
|
-
const LEGACY_BROWN = {
|
|
4
|
-
100: "#EEE0DA",
|
|
5
|
-
// Used in Badge component
|
|
6
|
-
300: "#C4AB9E",
|
|
7
|
-
// Client: Used in paymentcards
|
|
8
|
-
500: "#93715D",
|
|
9
|
-
// Client: Used in paymentcards, invoicing dashboard
|
|
10
|
-
700: "#73503B",
|
|
11
|
-
// Client: Used in paymentcards, invoicing dashboard
|
|
12
|
-
900: "#45291F"
|
|
13
|
-
// Used in Badge component
|
|
14
|
-
};
|
|
15
|
-
const LEGACY_ORANGE = {
|
|
16
|
-
100: "#FFE3BB",
|
|
17
|
-
// Used in Badge component
|
|
18
|
-
300: "#FAB64D",
|
|
19
|
-
// Client: Used in paymentcards, workflows
|
|
20
|
-
500: "#F99702",
|
|
21
|
-
// Client: Used in Avatar component
|
|
22
|
-
700: "#EF7D00",
|
|
23
|
-
// Client: Used in paymentcards
|
|
24
|
-
900: "#4A2811"
|
|
25
|
-
// Used in Badge component
|
|
26
|
-
};
|
|
27
3
|
const BLACK_SUBTLE_ALPHA = 7;
|
|
28
4
|
const BLACK_SUBTLE = `color-mix(in oklab, ${tokens.neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;
|
|
29
5
|
const WHITE_SUBTLE_ALPHA = 8;
|
|
@@ -157,9 +133,7 @@ const THEME_COLORS = {
|
|
|
157
133
|
red: palette.red,
|
|
158
134
|
green: palette.green,
|
|
159
135
|
yellow: palette.yellow,
|
|
160
|
-
pink: palette.pink
|
|
161
|
-
brown: LEGACY_BROWN,
|
|
162
|
-
orange: LEGACY_ORANGE
|
|
136
|
+
pink: palette.pink
|
|
163
137
|
};
|
|
164
138
|
module.exports = THEME_COLORS;
|
|
165
139
|
//# sourceMappingURL=tailwind.colors.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.colors.cjs","sources":["../tailwind.colors.js"],"sourcesContent":["/**\n * Taco Tailwind color theme.\n *\n * Structure:\n * 1. Legacy constants — colors not (yet) in the token pipeline.\n * 2. Semantic constants — non-token UI colors (overlay blends, etc.).\n * 3. Token maps — rename taco-tokens keys to Tailwind family/shade tuples.\n * 4. palette — assembled from all token maps; mutated to add DEFAULT shades.\n * 5. THEME_COLORS — the final export consumed by tailwind.config.js.\n *\n * To add a new token-backed color family: add rows to the relevant *_MAP and a\n * `palette.<family>` entry in THEME_COLORS. Do NOT edit taco-tokens — it is generated.\n */\nimport { primaryColors, secondaryColors, tertiaryColors, neutralColors, brandColors } from '@economic/taco-tokens/tokens';\n\n// ─── 1. Legacy constants ──────────────────────────────────────────────────────\n\n// Not generated in tokens: TODO: Map and remove post color palette update\nconst LEGACY_BROWN = {\n 100: '#EEE0DA', // Used in Badge component\n 300: '#C4AB9E', // Client: Used in paymentcards\n 500: '#93715D', // Client: Used in paymentcards, invoicing dashboard\n 700: '#73503B', // Client: Used in paymentcards, invoicing dashboard\n 900: '#45291F', // Used in Badge component\n};\n\n// Not generated in tokens: TODO: Map and remove post color palette update */\nconst LEGACY_ORANGE = {\n 100: '#FFE3BB', // Used in Badge component\n 300: '#FAB64D', // Client: Used in paymentcards, workflows\n 500: '#F99702', // Client: Used in Avatar component\n 700: '#EF7D00', // Client: Used in paymentcards\n 900: '#4A2811', // Used in Badge component\n};\n\n// ─── 2. Semantic constants ────────────────────────────────────────────────────\n\n/** Not in tokens: 7% tacoNeutralBlack over transparent → `bg-black-subtle`. */\nconst BLACK_SUBTLE_ALPHA = 7;\nconst BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;\n\n/** Not in tokens: 8% tacoNeutralWhite over transparent → `bg-white-subtle`. */\nconst WHITE_SUBTLE_ALPHA = 8;\nconst WHITE_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralWhite} ${WHITE_SUBTLE_ALPHA}%, transparent)`;\n\n// ─── 3. Token maps ────────────────────────────────────────────────────────────\n\n/**\n * Maps token keys from a source object into a `{ [family]: { [shade]: hex } }` structure\n * that Tailwind can consume as a color scale.\n *\n * @param {Record<string, string>} source - A taco-tokens export (e.g. `primaryColors`).\n * @param {ReadonlyArray<readonly [string, string, string | number]>} rows - Each row is\n * [tokenKey, tailwindFamily, tailwindShade], e.g. ['tacoBlue500', 'blue', 500].\n * @returns {Record<string, Record<string | number, string>>}\n */\nconst assignTokenShades = (source, rows) => {\n const out = {};\n for (const [tokenKey, family, shade] of rows) {\n const value = source[tokenKey];\n if (value === undefined) {\n continue;\n }\n if (!out[family]) {\n out[family] = {};\n }\n out[family][shade] = value;\n }\n return out;\n};\n\nconst PRIMARY_MAP = [\n ['tacoBlue50', 'blue', 50],\n ['tacoBlue100', 'blue', 100],\n ['tacoBlue200', 'blue', 200],\n ['tacoBlue300', 'blue', 300],\n ['tacoBlue500', 'blue', 500],\n ['tacoBlue700', 'blue', 700],\n ['tacoBlue900', 'blue', 900],\n ['tacoGray50', 'gray', 50],\n ['tacoGray100', 'gray', 100],\n ['tacoGray200', 'gray', 200],\n ['tacoGray300', 'gray', 300],\n ['tacoGray500', 'gray', 500],\n ['tacoGray700', 'gray', 700],\n ['tacoGray900', 'gray', 900],\n];\n\nconst SECONDARY_MAP = [\n ['tacoRed50', 'red', 50],\n ['tacoRed100', 'red', 100],\n ['tacoRed200', 'red', 200],\n ['tacoRed300', 'red', 300],\n ['tacoRed500', 'red', 500],\n ['tacoRed700', 'red', 700],\n ['tacoRed900', 'red', 900],\n ['tacoYellow50', 'yellow', 50],\n ['tacoYellow100', 'yellow', 100],\n ['tacoYellow200', 'yellow', 200],\n ['tacoYellow300', 'yellow', 300],\n ['tacoYellow500', 'yellow', 500],\n ['tacoYellow700', 'yellow', 700],\n ['tacoYellow900', 'yellow', 900],\n ['tacoGreen50', 'green', 50],\n ['tacoGreen100', 'green', 100],\n ['tacoGreen200', 'green', 200],\n ['tacoGreen300', 'green', 300],\n ['tacoGreen500', 'green', 500],\n ['tacoGreen700', 'green', 700],\n ['tacoGreen900', 'green', 900],\n];\n\nconst TERTIARY_MAP = [\n ['tacoPink50', 'pink', 50],\n ['tacoPink100', 'pink', 100],\n ['tacoPink200', 'pink', 200],\n ['tacoPink300', 'pink', 300],\n ['tacoPink500', 'pink', 500],\n ['tacoPink700', 'pink', 700],\n ['tacoPink900', 'pink', 900],\n ['tacoPurple50', 'purple', 50],\n ['tacoPurple100', 'purple', 100],\n ['tacoPurple200', 'purple', 200],\n ['tacoPurple300', 'purple', 300],\n ['tacoPurple500', 'purple', 500],\n ['tacoPurple700', 'purple', 700],\n ['tacoPurple900', 'purple', 900],\n];\n\n/**\n * Matches --taco-neutral-white / --taco-neutral-black in tokens.css.\n * Note: palette.neutral.white / .black are not exposed in THEME_COLORS — `white` and `black`\n * are set directly from neutralColors instead to keep utilities flat (bg-white, not bg-neutral-white).\n */\nconst NEUTRAL_MAP = [\n ['tacoNeutralWhite', 'neutral', 'white'],\n ['tacoNeutralBlack', 'neutral', 'black'],\n];\n\n// ─── 4. Palette assembly ──────────────────────────────────────────────────────\n\nconst fromPrimary = assignTokenShades(primaryColors, PRIMARY_MAP);\nconst fromSecondary = assignTokenShades(secondaryColors, SECONDARY_MAP);\nconst fromTertiary = assignTokenShades(tertiaryColors, TERTIARY_MAP);\nconst fromNeutral = assignTokenShades(neutralColors, NEUTRAL_MAP);\n\nconst mergeFamilies = (...parts) => {\n const merged = {};\n for (const part of parts) {\n for (const [family, shades] of Object.entries(part)) {\n merged[family] = { ...merged[family], ...shades };\n }\n }\n return merged;\n};\n\nconst palette = mergeFamilies(fromPrimary, fromSecondary, fromTertiary, fromNeutral);\n\n// `DEFAULT` lets Tailwind resolve bare utilities (e.g. `bg-blue` → blue-500, `text-red` → red-500).\npalette.blue = {\n DEFAULT: primaryColors.tacoBlue500,\n ...palette.blue,\n};\n\npalette.red = {\n DEFAULT: secondaryColors.tacoRed500,\n ...palette.red,\n};\n\npalette.green = {\n DEFAULT: secondaryColors.tacoGreen500,\n ...palette.green,\n};\n\npalette.yellow = {\n DEFAULT: secondaryColors.tacoYellow500,\n ...palette.yellow,\n};\n\npalette.gray = {\n DEFAULT: primaryColors.tacoGray50,\n ...palette.gray,\n};\n\n// ─── 5. Theme colors ──────────────────────────────────────────────────────────\n\nconst THEME_COLORS = {\n transparent: 'transparent',\n current: 'currentColor',\n white: neutralColors.tacoNeutralWhite,\n black: neutralColors.tacoNeutralBlack,\n 'black-subtle': BLACK_SUBTLE,\n 'white-subtle': WHITE_SUBTLE,\n brand: {\n morning: brandColors.tacoBrandMorning,\n noon: brandColors.tacoBrandNoon,\n sunset: brandColors.tacoBrandSunset,\n midnight: brandColors.tacoBrandMidnight,\n },\n /** Alias for `gray` — supports both spellings in className strings. */\n grey: { ...palette.gray },\n gray: palette.gray,\n neutral: palette.neutral,\n purple: palette.purple,\n blue: palette.blue,\n red: palette.red,\n green: palette.green,\n yellow: palette.yellow,\n pink: palette.pink,\n brown: LEGACY_BROWN,\n orange: LEGACY_ORANGE,\n};\n\nexport default THEME_COLORS;\n"],"names":["neutralColors","primaryColors","secondaryColors","tertiaryColors","brandColors"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tailwind.colors.cjs","sources":["../tailwind.colors.js"],"sourcesContent":["/**\n * Taco Tailwind color theme.\n *\n * Structure:\n * 1. Semantic constants — non-token UI colors (overlay blends, etc.).\n * 2. Token maps — rename taco-tokens keys to Tailwind family/shade tuples.\n * 3. Palette — assembled from all token maps; mutated to add DEFAULT shades.\n * 4. THEME_COLORS — the final export consumed by tailwind.config.js.\n *\n * To add a new token-backed color family: add rows to the relevant *_MAP and a\n * `palette.<family>` entry in THEME_COLORS. Do NOT edit taco-tokens — it is generated.\n */\nimport { primaryColors, secondaryColors, tertiaryColors, neutralColors, brandColors } from '@economic/taco-tokens/tokens';\n\n// ─── 1. Semantic constants ────────────────────────────────────────────────────\n\n/** Not in tokens: 7% tacoNeutralBlack over transparent → `bg-black-subtle`. */\nconst BLACK_SUBTLE_ALPHA = 7;\nconst BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;\n\n/** Not in tokens: 8% tacoNeutralWhite over transparent → `bg-white-subtle`. */\nconst WHITE_SUBTLE_ALPHA = 8;\nconst WHITE_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralWhite} ${WHITE_SUBTLE_ALPHA}%, transparent)`;\n\n// ─── 2. Token maps ────────────────────────────────────────────────────────────\n\n/**\n * Maps token keys from a source object into a `{ [family]: { [shade]: hex } }` structure\n * that Tailwind can consume as a color scale.\n *\n * @param {Record<string, string>} source - A taco-tokens export (e.g. `primaryColors`).\n * @param {ReadonlyArray<readonly [string, string, string | number]>} rows - Each row is\n * [tokenKey, tailwindFamily, tailwindShade], e.g. ['tacoBlue500', 'blue', 500].\n * @returns {Record<string, Record<string | number, string>>}\n */\nconst assignTokenShades = (source, rows) => {\n const out = {};\n for (const [tokenKey, family, shade] of rows) {\n const value = source[tokenKey];\n if (value === undefined) {\n continue;\n }\n if (!out[family]) {\n out[family] = {};\n }\n out[family][shade] = value;\n }\n return out;\n};\n\nconst PRIMARY_MAP = [\n ['tacoBlue50', 'blue', 50],\n ['tacoBlue100', 'blue', 100],\n ['tacoBlue200', 'blue', 200],\n ['tacoBlue300', 'blue', 300],\n ['tacoBlue500', 'blue', 500],\n ['tacoBlue700', 'blue', 700],\n ['tacoBlue900', 'blue', 900],\n ['tacoGray50', 'gray', 50],\n ['tacoGray100', 'gray', 100],\n ['tacoGray200', 'gray', 200],\n ['tacoGray300', 'gray', 300],\n ['tacoGray500', 'gray', 500],\n ['tacoGray700', 'gray', 700],\n ['tacoGray900', 'gray', 900],\n];\n\nconst SECONDARY_MAP = [\n ['tacoRed50', 'red', 50],\n ['tacoRed100', 'red', 100],\n ['tacoRed200', 'red', 200],\n ['tacoRed300', 'red', 300],\n ['tacoRed500', 'red', 500],\n ['tacoRed700', 'red', 700],\n ['tacoRed900', 'red', 900],\n ['tacoYellow50', 'yellow', 50],\n ['tacoYellow100', 'yellow', 100],\n ['tacoYellow200', 'yellow', 200],\n ['tacoYellow300', 'yellow', 300],\n ['tacoYellow500', 'yellow', 500],\n ['tacoYellow700', 'yellow', 700],\n ['tacoYellow900', 'yellow', 900],\n ['tacoGreen50', 'green', 50],\n ['tacoGreen100', 'green', 100],\n ['tacoGreen200', 'green', 200],\n ['tacoGreen300', 'green', 300],\n ['tacoGreen500', 'green', 500],\n ['tacoGreen700', 'green', 700],\n ['tacoGreen900', 'green', 900],\n];\n\nconst TERTIARY_MAP = [\n ['tacoPink50', 'pink', 50],\n ['tacoPink100', 'pink', 100],\n ['tacoPink200', 'pink', 200],\n ['tacoPink300', 'pink', 300],\n ['tacoPink500', 'pink', 500],\n ['tacoPink700', 'pink', 700],\n ['tacoPink900', 'pink', 900],\n ['tacoPurple50', 'purple', 50],\n ['tacoPurple100', 'purple', 100],\n ['tacoPurple200', 'purple', 200],\n ['tacoPurple300', 'purple', 300],\n ['tacoPurple500', 'purple', 500],\n ['tacoPurple700', 'purple', 700],\n ['tacoPurple900', 'purple', 900],\n];\n\n/**\n * Matches --taco-neutral-white / --taco-neutral-black in tokens.css.\n * Note: palette.neutral.white / .black are not exposed in THEME_COLORS — `white` and `black`\n * are set directly from neutralColors instead to keep utilities flat (bg-white, not bg-neutral-white).\n */\nconst NEUTRAL_MAP = [\n ['tacoNeutralWhite', 'neutral', 'white'],\n ['tacoNeutralBlack', 'neutral', 'black'],\n];\n\n// ─── 3. Palette assembly ──────────────────────────────────────────────────────\n\nconst fromPrimary = assignTokenShades(primaryColors, PRIMARY_MAP);\nconst fromSecondary = assignTokenShades(secondaryColors, SECONDARY_MAP);\nconst fromTertiary = assignTokenShades(tertiaryColors, TERTIARY_MAP);\nconst fromNeutral = assignTokenShades(neutralColors, NEUTRAL_MAP);\n\nconst mergeFamilies = (...parts) => {\n const merged = {};\n for (const part of parts) {\n for (const [family, shades] of Object.entries(part)) {\n merged[family] = { ...merged[family], ...shades };\n }\n }\n return merged;\n};\n\nconst palette = mergeFamilies(fromPrimary, fromSecondary, fromTertiary, fromNeutral);\n\n// `DEFAULT` lets Tailwind resolve bare utilities (e.g. `bg-blue` → blue-500, `text-red` → red-500).\npalette.blue = {\n DEFAULT: primaryColors.tacoBlue500,\n ...palette.blue,\n};\n\npalette.red = {\n DEFAULT: secondaryColors.tacoRed500,\n ...palette.red,\n};\n\npalette.green = {\n DEFAULT: secondaryColors.tacoGreen500,\n ...palette.green,\n};\n\npalette.yellow = {\n DEFAULT: secondaryColors.tacoYellow500,\n ...palette.yellow,\n};\n\npalette.gray = {\n DEFAULT: primaryColors.tacoGray50,\n ...palette.gray,\n};\n\n// ─── 4. Theme colors ──────────────────────────────────────────────────────────\n\nconst THEME_COLORS = {\n transparent: 'transparent',\n current: 'currentColor',\n white: neutralColors.tacoNeutralWhite,\n black: neutralColors.tacoNeutralBlack,\n 'black-subtle': BLACK_SUBTLE,\n 'white-subtle': WHITE_SUBTLE,\n brand: {\n morning: brandColors.tacoBrandMorning,\n noon: brandColors.tacoBrandNoon,\n sunset: brandColors.tacoBrandSunset,\n midnight: brandColors.tacoBrandMidnight,\n },\n /** Alias for `gray` — supports both spellings in className strings. */\n grey: { ...palette.gray },\n gray: palette.gray,\n neutral: palette.neutral,\n purple: palette.purple,\n blue: palette.blue,\n red: palette.red,\n green: palette.green,\n yellow: palette.yellow,\n pink: palette.pink,\n};\n\nexport default THEME_COLORS;\n"],"names":["neutralColors","primaryColors","secondaryColors","tertiaryColors","brandColors"],"mappings":"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"}
|
package/dist/tailwind.colors.js
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
1
|
import { neutralColors, primaryColors, secondaryColors, brandColors, tertiaryColors } from "@economic/taco-tokens/tokens";
|
|
2
|
-
const LEGACY_BROWN = {
|
|
3
|
-
100: "#EEE0DA",
|
|
4
|
-
// Used in Badge component
|
|
5
|
-
300: "#C4AB9E",
|
|
6
|
-
// Client: Used in paymentcards
|
|
7
|
-
500: "#93715D",
|
|
8
|
-
// Client: Used in paymentcards, invoicing dashboard
|
|
9
|
-
700: "#73503B",
|
|
10
|
-
// Client: Used in paymentcards, invoicing dashboard
|
|
11
|
-
900: "#45291F"
|
|
12
|
-
// Used in Badge component
|
|
13
|
-
};
|
|
14
|
-
const LEGACY_ORANGE = {
|
|
15
|
-
100: "#FFE3BB",
|
|
16
|
-
// Used in Badge component
|
|
17
|
-
300: "#FAB64D",
|
|
18
|
-
// Client: Used in paymentcards, workflows
|
|
19
|
-
500: "#F99702",
|
|
20
|
-
// Client: Used in Avatar component
|
|
21
|
-
700: "#EF7D00",
|
|
22
|
-
// Client: Used in paymentcards
|
|
23
|
-
900: "#4A2811"
|
|
24
|
-
// Used in Badge component
|
|
25
|
-
};
|
|
26
2
|
const BLACK_SUBTLE_ALPHA = 7;
|
|
27
3
|
const BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;
|
|
28
4
|
const WHITE_SUBTLE_ALPHA = 8;
|
|
@@ -156,9 +132,7 @@ const THEME_COLORS = {
|
|
|
156
132
|
red: palette.red,
|
|
157
133
|
green: palette.green,
|
|
158
134
|
yellow: palette.yellow,
|
|
159
|
-
pink: palette.pink
|
|
160
|
-
brown: LEGACY_BROWN,
|
|
161
|
-
orange: LEGACY_ORANGE
|
|
135
|
+
pink: palette.pink
|
|
162
136
|
};
|
|
163
137
|
export {
|
|
164
138
|
THEME_COLORS as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.colors.js","sources":["../tailwind.colors.js"],"sourcesContent":["/**\n * Taco Tailwind color theme.\n *\n * Structure:\n * 1. Legacy constants — colors not (yet) in the token pipeline.\n * 2. Semantic constants — non-token UI colors (overlay blends, etc.).\n * 3. Token maps — rename taco-tokens keys to Tailwind family/shade tuples.\n * 4. palette — assembled from all token maps; mutated to add DEFAULT shades.\n * 5. THEME_COLORS — the final export consumed by tailwind.config.js.\n *\n * To add a new token-backed color family: add rows to the relevant *_MAP and a\n * `palette.<family>` entry in THEME_COLORS. Do NOT edit taco-tokens — it is generated.\n */\nimport { primaryColors, secondaryColors, tertiaryColors, neutralColors, brandColors } from '@economic/taco-tokens/tokens';\n\n// ─── 1. Legacy constants ──────────────────────────────────────────────────────\n\n// Not generated in tokens: TODO: Map and remove post color palette update\nconst LEGACY_BROWN = {\n 100: '#EEE0DA', // Used in Badge component\n 300: '#C4AB9E', // Client: Used in paymentcards\n 500: '#93715D', // Client: Used in paymentcards, invoicing dashboard\n 700: '#73503B', // Client: Used in paymentcards, invoicing dashboard\n 900: '#45291F', // Used in Badge component\n};\n\n// Not generated in tokens: TODO: Map and remove post color palette update */\nconst LEGACY_ORANGE = {\n 100: '#FFE3BB', // Used in Badge component\n 300: '#FAB64D', // Client: Used in paymentcards, workflows\n 500: '#F99702', // Client: Used in Avatar component\n 700: '#EF7D00', // Client: Used in paymentcards\n 900: '#4A2811', // Used in Badge component\n};\n\n// ─── 2. Semantic constants ────────────────────────────────────────────────────\n\n/** Not in tokens: 7% tacoNeutralBlack over transparent → `bg-black-subtle`. */\nconst BLACK_SUBTLE_ALPHA = 7;\nconst BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;\n\n/** Not in tokens: 8% tacoNeutralWhite over transparent → `bg-white-subtle`. */\nconst WHITE_SUBTLE_ALPHA = 8;\nconst WHITE_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralWhite} ${WHITE_SUBTLE_ALPHA}%, transparent)`;\n\n// ─── 3. Token maps ────────────────────────────────────────────────────────────\n\n/**\n * Maps token keys from a source object into a `{ [family]: { [shade]: hex } }` structure\n * that Tailwind can consume as a color scale.\n *\n * @param {Record<string, string>} source - A taco-tokens export (e.g. `primaryColors`).\n * @param {ReadonlyArray<readonly [string, string, string | number]>} rows - Each row is\n * [tokenKey, tailwindFamily, tailwindShade], e.g. ['tacoBlue500', 'blue', 500].\n * @returns {Record<string, Record<string | number, string>>}\n */\nconst assignTokenShades = (source, rows) => {\n const out = {};\n for (const [tokenKey, family, shade] of rows) {\n const value = source[tokenKey];\n if (value === undefined) {\n continue;\n }\n if (!out[family]) {\n out[family] = {};\n }\n out[family][shade] = value;\n }\n return out;\n};\n\nconst PRIMARY_MAP = [\n ['tacoBlue50', 'blue', 50],\n ['tacoBlue100', 'blue', 100],\n ['tacoBlue200', 'blue', 200],\n ['tacoBlue300', 'blue', 300],\n ['tacoBlue500', 'blue', 500],\n ['tacoBlue700', 'blue', 700],\n ['tacoBlue900', 'blue', 900],\n ['tacoGray50', 'gray', 50],\n ['tacoGray100', 'gray', 100],\n ['tacoGray200', 'gray', 200],\n ['tacoGray300', 'gray', 300],\n ['tacoGray500', 'gray', 500],\n ['tacoGray700', 'gray', 700],\n ['tacoGray900', 'gray', 900],\n];\n\nconst SECONDARY_MAP = [\n ['tacoRed50', 'red', 50],\n ['tacoRed100', 'red', 100],\n ['tacoRed200', 'red', 200],\n ['tacoRed300', 'red', 300],\n ['tacoRed500', 'red', 500],\n ['tacoRed700', 'red', 700],\n ['tacoRed900', 'red', 900],\n ['tacoYellow50', 'yellow', 50],\n ['tacoYellow100', 'yellow', 100],\n ['tacoYellow200', 'yellow', 200],\n ['tacoYellow300', 'yellow', 300],\n ['tacoYellow500', 'yellow', 500],\n ['tacoYellow700', 'yellow', 700],\n ['tacoYellow900', 'yellow', 900],\n ['tacoGreen50', 'green', 50],\n ['tacoGreen100', 'green', 100],\n ['tacoGreen200', 'green', 200],\n ['tacoGreen300', 'green', 300],\n ['tacoGreen500', 'green', 500],\n ['tacoGreen700', 'green', 700],\n ['tacoGreen900', 'green', 900],\n];\n\nconst TERTIARY_MAP = [\n ['tacoPink50', 'pink', 50],\n ['tacoPink100', 'pink', 100],\n ['tacoPink200', 'pink', 200],\n ['tacoPink300', 'pink', 300],\n ['tacoPink500', 'pink', 500],\n ['tacoPink700', 'pink', 700],\n ['tacoPink900', 'pink', 900],\n ['tacoPurple50', 'purple', 50],\n ['tacoPurple100', 'purple', 100],\n ['tacoPurple200', 'purple', 200],\n ['tacoPurple300', 'purple', 300],\n ['tacoPurple500', 'purple', 500],\n ['tacoPurple700', 'purple', 700],\n ['tacoPurple900', 'purple', 900],\n];\n\n/**\n * Matches --taco-neutral-white / --taco-neutral-black in tokens.css.\n * Note: palette.neutral.white / .black are not exposed in THEME_COLORS — `white` and `black`\n * are set directly from neutralColors instead to keep utilities flat (bg-white, not bg-neutral-white).\n */\nconst NEUTRAL_MAP = [\n ['tacoNeutralWhite', 'neutral', 'white'],\n ['tacoNeutralBlack', 'neutral', 'black'],\n];\n\n// ─── 4. Palette assembly ──────────────────────────────────────────────────────\n\nconst fromPrimary = assignTokenShades(primaryColors, PRIMARY_MAP);\nconst fromSecondary = assignTokenShades(secondaryColors, SECONDARY_MAP);\nconst fromTertiary = assignTokenShades(tertiaryColors, TERTIARY_MAP);\nconst fromNeutral = assignTokenShades(neutralColors, NEUTRAL_MAP);\n\nconst mergeFamilies = (...parts) => {\n const merged = {};\n for (const part of parts) {\n for (const [family, shades] of Object.entries(part)) {\n merged[family] = { ...merged[family], ...shades };\n }\n }\n return merged;\n};\n\nconst palette = mergeFamilies(fromPrimary, fromSecondary, fromTertiary, fromNeutral);\n\n// `DEFAULT` lets Tailwind resolve bare utilities (e.g. `bg-blue` → blue-500, `text-red` → red-500).\npalette.blue = {\n DEFAULT: primaryColors.tacoBlue500,\n ...palette.blue,\n};\n\npalette.red = {\n DEFAULT: secondaryColors.tacoRed500,\n ...palette.red,\n};\n\npalette.green = {\n DEFAULT: secondaryColors.tacoGreen500,\n ...palette.green,\n};\n\npalette.yellow = {\n DEFAULT: secondaryColors.tacoYellow500,\n ...palette.yellow,\n};\n\npalette.gray = {\n DEFAULT: primaryColors.tacoGray50,\n ...palette.gray,\n};\n\n// ─── 5. Theme colors ──────────────────────────────────────────────────────────\n\nconst THEME_COLORS = {\n transparent: 'transparent',\n current: 'currentColor',\n white: neutralColors.tacoNeutralWhite,\n black: neutralColors.tacoNeutralBlack,\n 'black-subtle': BLACK_SUBTLE,\n 'white-subtle': WHITE_SUBTLE,\n brand: {\n morning: brandColors.tacoBrandMorning,\n noon: brandColors.tacoBrandNoon,\n sunset: brandColors.tacoBrandSunset,\n midnight: brandColors.tacoBrandMidnight,\n },\n /** Alias for `gray` — supports both spellings in className strings. */\n grey: { ...palette.gray },\n gray: palette.gray,\n neutral: palette.neutral,\n purple: palette.purple,\n blue: palette.blue,\n red: palette.red,\n green: palette.green,\n yellow: palette.yellow,\n pink: palette.pink,\n brown: LEGACY_BROWN,\n orange: LEGACY_ORANGE,\n};\n\nexport default THEME_COLORS;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tailwind.colors.js","sources":["../tailwind.colors.js"],"sourcesContent":["/**\n * Taco Tailwind color theme.\n *\n * Structure:\n * 1. Semantic constants — non-token UI colors (overlay blends, etc.).\n * 2. Token maps — rename taco-tokens keys to Tailwind family/shade tuples.\n * 3. Palette — assembled from all token maps; mutated to add DEFAULT shades.\n * 4. THEME_COLORS — the final export consumed by tailwind.config.js.\n *\n * To add a new token-backed color family: add rows to the relevant *_MAP and a\n * `palette.<family>` entry in THEME_COLORS. Do NOT edit taco-tokens — it is generated.\n */\nimport { primaryColors, secondaryColors, tertiaryColors, neutralColors, brandColors } from '@economic/taco-tokens/tokens';\n\n// ─── 1. Semantic constants ────────────────────────────────────────────────────\n\n/** Not in tokens: 7% tacoNeutralBlack over transparent → `bg-black-subtle`. */\nconst BLACK_SUBTLE_ALPHA = 7;\nconst BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BLACK_SUBTLE_ALPHA}%, transparent)`;\n\n/** Not in tokens: 8% tacoNeutralWhite over transparent → `bg-white-subtle`. */\nconst WHITE_SUBTLE_ALPHA = 8;\nconst WHITE_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralWhite} ${WHITE_SUBTLE_ALPHA}%, transparent)`;\n\n// ─── 2. Token maps ────────────────────────────────────────────────────────────\n\n/**\n * Maps token keys from a source object into a `{ [family]: { [shade]: hex } }` structure\n * that Tailwind can consume as a color scale.\n *\n * @param {Record<string, string>} source - A taco-tokens export (e.g. `primaryColors`).\n * @param {ReadonlyArray<readonly [string, string, string | number]>} rows - Each row is\n * [tokenKey, tailwindFamily, tailwindShade], e.g. ['tacoBlue500', 'blue', 500].\n * @returns {Record<string, Record<string | number, string>>}\n */\nconst assignTokenShades = (source, rows) => {\n const out = {};\n for (const [tokenKey, family, shade] of rows) {\n const value = source[tokenKey];\n if (value === undefined) {\n continue;\n }\n if (!out[family]) {\n out[family] = {};\n }\n out[family][shade] = value;\n }\n return out;\n};\n\nconst PRIMARY_MAP = [\n ['tacoBlue50', 'blue', 50],\n ['tacoBlue100', 'blue', 100],\n ['tacoBlue200', 'blue', 200],\n ['tacoBlue300', 'blue', 300],\n ['tacoBlue500', 'blue', 500],\n ['tacoBlue700', 'blue', 700],\n ['tacoBlue900', 'blue', 900],\n ['tacoGray50', 'gray', 50],\n ['tacoGray100', 'gray', 100],\n ['tacoGray200', 'gray', 200],\n ['tacoGray300', 'gray', 300],\n ['tacoGray500', 'gray', 500],\n ['tacoGray700', 'gray', 700],\n ['tacoGray900', 'gray', 900],\n];\n\nconst SECONDARY_MAP = [\n ['tacoRed50', 'red', 50],\n ['tacoRed100', 'red', 100],\n ['tacoRed200', 'red', 200],\n ['tacoRed300', 'red', 300],\n ['tacoRed500', 'red', 500],\n ['tacoRed700', 'red', 700],\n ['tacoRed900', 'red', 900],\n ['tacoYellow50', 'yellow', 50],\n ['tacoYellow100', 'yellow', 100],\n ['tacoYellow200', 'yellow', 200],\n ['tacoYellow300', 'yellow', 300],\n ['tacoYellow500', 'yellow', 500],\n ['tacoYellow700', 'yellow', 700],\n ['tacoYellow900', 'yellow', 900],\n ['tacoGreen50', 'green', 50],\n ['tacoGreen100', 'green', 100],\n ['tacoGreen200', 'green', 200],\n ['tacoGreen300', 'green', 300],\n ['tacoGreen500', 'green', 500],\n ['tacoGreen700', 'green', 700],\n ['tacoGreen900', 'green', 900],\n];\n\nconst TERTIARY_MAP = [\n ['tacoPink50', 'pink', 50],\n ['tacoPink100', 'pink', 100],\n ['tacoPink200', 'pink', 200],\n ['tacoPink300', 'pink', 300],\n ['tacoPink500', 'pink', 500],\n ['tacoPink700', 'pink', 700],\n ['tacoPink900', 'pink', 900],\n ['tacoPurple50', 'purple', 50],\n ['tacoPurple100', 'purple', 100],\n ['tacoPurple200', 'purple', 200],\n ['tacoPurple300', 'purple', 300],\n ['tacoPurple500', 'purple', 500],\n ['tacoPurple700', 'purple', 700],\n ['tacoPurple900', 'purple', 900],\n];\n\n/**\n * Matches --taco-neutral-white / --taco-neutral-black in tokens.css.\n * Note: palette.neutral.white / .black are not exposed in THEME_COLORS — `white` and `black`\n * are set directly from neutralColors instead to keep utilities flat (bg-white, not bg-neutral-white).\n */\nconst NEUTRAL_MAP = [\n ['tacoNeutralWhite', 'neutral', 'white'],\n ['tacoNeutralBlack', 'neutral', 'black'],\n];\n\n// ─── 3. Palette assembly ──────────────────────────────────────────────────────\n\nconst fromPrimary = assignTokenShades(primaryColors, PRIMARY_MAP);\nconst fromSecondary = assignTokenShades(secondaryColors, SECONDARY_MAP);\nconst fromTertiary = assignTokenShades(tertiaryColors, TERTIARY_MAP);\nconst fromNeutral = assignTokenShades(neutralColors, NEUTRAL_MAP);\n\nconst mergeFamilies = (...parts) => {\n const merged = {};\n for (const part of parts) {\n for (const [family, shades] of Object.entries(part)) {\n merged[family] = { ...merged[family], ...shades };\n }\n }\n return merged;\n};\n\nconst palette = mergeFamilies(fromPrimary, fromSecondary, fromTertiary, fromNeutral);\n\n// `DEFAULT` lets Tailwind resolve bare utilities (e.g. `bg-blue` → blue-500, `text-red` → red-500).\npalette.blue = {\n DEFAULT: primaryColors.tacoBlue500,\n ...palette.blue,\n};\n\npalette.red = {\n DEFAULT: secondaryColors.tacoRed500,\n ...palette.red,\n};\n\npalette.green = {\n DEFAULT: secondaryColors.tacoGreen500,\n ...palette.green,\n};\n\npalette.yellow = {\n DEFAULT: secondaryColors.tacoYellow500,\n ...palette.yellow,\n};\n\npalette.gray = {\n DEFAULT: primaryColors.tacoGray50,\n ...palette.gray,\n};\n\n// ─── 4. Theme colors ──────────────────────────────────────────────────────────\n\nconst THEME_COLORS = {\n transparent: 'transparent',\n current: 'currentColor',\n white: neutralColors.tacoNeutralWhite,\n black: neutralColors.tacoNeutralBlack,\n 'black-subtle': BLACK_SUBTLE,\n 'white-subtle': WHITE_SUBTLE,\n brand: {\n morning: brandColors.tacoBrandMorning,\n noon: brandColors.tacoBrandNoon,\n sunset: brandColors.tacoBrandSunset,\n midnight: brandColors.tacoBrandMidnight,\n },\n /** Alias for `gray` — supports both spellings in className strings. */\n grey: { ...palette.gray },\n gray: palette.gray,\n neutral: palette.neutral,\n purple: palette.purple,\n blue: palette.blue,\n red: palette.red,\n green: palette.green,\n yellow: palette.yellow,\n pink: palette.pink,\n};\n\nexport default THEME_COLORS;\n"],"names":[],"mappings":"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"}
|
package/dist/utils/tailwind.cjs
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const AVAILABLE_COLORS = [
|
|
4
|
-
"green",
|
|
5
|
-
"yellow",
|
|
6
|
-
"red",
|
|
7
|
-
"blue",
|
|
8
|
-
"purple",
|
|
9
|
-
"brown",
|
|
10
|
-
"pink",
|
|
11
|
-
"orange",
|
|
12
|
-
"grey",
|
|
13
|
-
"transparent"
|
|
14
|
-
];
|
|
3
|
+
const AVAILABLE_COLORS = ["green", "yellow", "red", "blue", "purple", "pink", "grey", "transparent"];
|
|
15
4
|
const COLOR_BY_STATE = {
|
|
16
5
|
information: "blue",
|
|
17
6
|
warning: "yellow",
|
|
@@ -26,9 +15,7 @@ const OUTLINE_COLOR_SHADE_CLASSNAME = {
|
|
|
26
15
|
red: "border-red-500 text-red-500",
|
|
27
16
|
blue: "border-blue-500 text-blue-500",
|
|
28
17
|
purple: "border-purple-500 text-purple-500",
|
|
29
|
-
brown: "border-brown-500 text-brown-500",
|
|
30
18
|
pink: "border-pink-500 text-pink-500",
|
|
31
|
-
orange: "border-orange-500 text-orange-500",
|
|
32
19
|
grey: "border-gray-500 text-gray-500",
|
|
33
20
|
transparent: "border-gray-500 text-gray-500"
|
|
34
21
|
};
|
|
@@ -38,9 +25,7 @@ const SUBTLE_COLOR_SHADE_CLASSNAME = {
|
|
|
38
25
|
red: "bg-red-100 text-red-700",
|
|
39
26
|
blue: "bg-blue-100 text-blue-700",
|
|
40
27
|
purple: "bg-purple-100 text-purple-700",
|
|
41
|
-
brown: "bg-brown-100 text-brown-700",
|
|
42
28
|
pink: "bg-pink-100 text-pink-700",
|
|
43
|
-
orange: "bg-orange-100 text-orange-700",
|
|
44
29
|
grey: "bg-gray-100 text-black",
|
|
45
30
|
transparent: "bg-black-subtle text-black"
|
|
46
31
|
};
|
|
@@ -50,9 +35,7 @@ const COLOR_SHADE_CLASSNAME = {
|
|
|
50
35
|
red: "bg-red-500 text-white",
|
|
51
36
|
blue: "bg-blue-500 text-white",
|
|
52
37
|
purple: "bg-purple-500 text-white",
|
|
53
|
-
brown: "bg-brown-700 text-white",
|
|
54
38
|
pink: "bg-pink-500 text-white",
|
|
55
|
-
orange: "bg-orange-700 text-orange-900",
|
|
56
39
|
grey: "bg-gray-500 text-white",
|
|
57
40
|
transparent: "bg-black-subtle text-black"
|
|
58
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.cjs","sources":["../../src/utils/tailwind.ts"],"sourcesContent":["import type { Color, State } from '../types';\n\nexport const AVAILABLE_COLORS = [
|
|
1
|
+
{"version":3,"file":"tailwind.cjs","sources":["../../src/utils/tailwind.ts"],"sourcesContent":["import type { Color, State } from '../types';\n\nexport const AVAILABLE_COLORS = ['green', 'yellow', 'red', 'blue', 'purple', 'pink', 'grey', 'transparent'] as const;\n\nexport const COLOR_BY_STATE: Record<State, Color> = {\n information: 'blue',\n warning: 'yellow',\n error: 'red',\n experiment: 'purple',\n success: 'green',\n default: 'grey',\n};\n\nexport const OUTLINE_COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'border-green-500 text-green-500',\n yellow: 'border-yellow-500 text-yellow-500',\n red: 'border-red-500 text-red-500',\n blue: 'border-blue-500 text-blue-500',\n purple: 'border-purple-500 text-purple-500',\n pink: 'border-pink-500 text-pink-500',\n grey: 'border-gray-500 text-gray-500',\n transparent: 'border-gray-500 text-gray-500',\n};\n\nexport const SUBTLE_COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'bg-green-100 text-green-700',\n yellow: 'bg-yellow-100 text-yellow-700',\n red: 'bg-red-100 text-red-700',\n blue: 'bg-blue-100 text-blue-700',\n purple: 'bg-purple-100 text-purple-700',\n pink: 'bg-pink-100 text-pink-700',\n grey: 'bg-gray-100 text-black',\n transparent: 'bg-black-subtle text-black',\n};\n\nexport const COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'bg-green-500 text-white',\n yellow: 'bg-yellow-200 text-black',\n red: 'bg-red-500 text-white',\n blue: 'bg-blue-500 text-white',\n purple: 'bg-purple-500 text-white',\n pink: 'bg-pink-500 text-white',\n grey: 'bg-gray-500 text-white',\n transparent: 'bg-black-subtle text-black',\n};\n"],"names":[],"mappings":";;AAEO,MAAM,mBAAmB,CAAC,SAAS,UAAU,OAAO,QAAQ,UAAU,QAAQ,QAAQ,aAAa;AAEnG,MAAM,iBAAuC;AAAA,EAChD,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AACb;AAEO,MAAM,gCAAuD;AAAA,EAChE,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;AAEO,MAAM,+BAAsD;AAAA,EAC/D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;AAEO,MAAM,wBAA+C;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;;;;;;"}
|
package/dist/utils/tailwind.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Color, State } from '../types';
|
|
2
|
-
export declare const AVAILABLE_COLORS: readonly ["green", "yellow", "red", "blue", "purple", "
|
|
2
|
+
export declare const AVAILABLE_COLORS: readonly ["green", "yellow", "red", "blue", "purple", "pink", "grey", "transparent"];
|
|
3
3
|
export declare const COLOR_BY_STATE: Record<State, Color>;
|
|
4
4
|
export declare const OUTLINE_COLOR_SHADE_CLASSNAME: Record<Color, string>;
|
|
5
5
|
export declare const SUBTLE_COLOR_SHADE_CLASSNAME: Record<Color, string>;
|
package/dist/utils/tailwind.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
const AVAILABLE_COLORS = [
|
|
2
|
-
"green",
|
|
3
|
-
"yellow",
|
|
4
|
-
"red",
|
|
5
|
-
"blue",
|
|
6
|
-
"purple",
|
|
7
|
-
"brown",
|
|
8
|
-
"pink",
|
|
9
|
-
"orange",
|
|
10
|
-
"grey",
|
|
11
|
-
"transparent"
|
|
12
|
-
];
|
|
1
|
+
const AVAILABLE_COLORS = ["green", "yellow", "red", "blue", "purple", "pink", "grey", "transparent"];
|
|
13
2
|
const COLOR_BY_STATE = {
|
|
14
3
|
information: "blue",
|
|
15
4
|
warning: "yellow",
|
|
@@ -24,9 +13,7 @@ const OUTLINE_COLOR_SHADE_CLASSNAME = {
|
|
|
24
13
|
red: "border-red-500 text-red-500",
|
|
25
14
|
blue: "border-blue-500 text-blue-500",
|
|
26
15
|
purple: "border-purple-500 text-purple-500",
|
|
27
|
-
brown: "border-brown-500 text-brown-500",
|
|
28
16
|
pink: "border-pink-500 text-pink-500",
|
|
29
|
-
orange: "border-orange-500 text-orange-500",
|
|
30
17
|
grey: "border-gray-500 text-gray-500",
|
|
31
18
|
transparent: "border-gray-500 text-gray-500"
|
|
32
19
|
};
|
|
@@ -36,9 +23,7 @@ const SUBTLE_COLOR_SHADE_CLASSNAME = {
|
|
|
36
23
|
red: "bg-red-100 text-red-700",
|
|
37
24
|
blue: "bg-blue-100 text-blue-700",
|
|
38
25
|
purple: "bg-purple-100 text-purple-700",
|
|
39
|
-
brown: "bg-brown-100 text-brown-700",
|
|
40
26
|
pink: "bg-pink-100 text-pink-700",
|
|
41
|
-
orange: "bg-orange-100 text-orange-700",
|
|
42
27
|
grey: "bg-gray-100 text-black",
|
|
43
28
|
transparent: "bg-black-subtle text-black"
|
|
44
29
|
};
|
|
@@ -48,9 +33,7 @@ const COLOR_SHADE_CLASSNAME = {
|
|
|
48
33
|
red: "bg-red-500 text-white",
|
|
49
34
|
blue: "bg-blue-500 text-white",
|
|
50
35
|
purple: "bg-purple-500 text-white",
|
|
51
|
-
brown: "bg-brown-700 text-white",
|
|
52
36
|
pink: "bg-pink-500 text-white",
|
|
53
|
-
orange: "bg-orange-700 text-orange-900",
|
|
54
37
|
grey: "bg-gray-500 text-white",
|
|
55
38
|
transparent: "bg-black-subtle text-black"
|
|
56
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.js","sources":["../../src/utils/tailwind.ts"],"sourcesContent":["import type { Color, State } from '../types';\n\nexport const AVAILABLE_COLORS = [
|
|
1
|
+
{"version":3,"file":"tailwind.js","sources":["../../src/utils/tailwind.ts"],"sourcesContent":["import type { Color, State } from '../types';\n\nexport const AVAILABLE_COLORS = ['green', 'yellow', 'red', 'blue', 'purple', 'pink', 'grey', 'transparent'] as const;\n\nexport const COLOR_BY_STATE: Record<State, Color> = {\n information: 'blue',\n warning: 'yellow',\n error: 'red',\n experiment: 'purple',\n success: 'green',\n default: 'grey',\n};\n\nexport const OUTLINE_COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'border-green-500 text-green-500',\n yellow: 'border-yellow-500 text-yellow-500',\n red: 'border-red-500 text-red-500',\n blue: 'border-blue-500 text-blue-500',\n purple: 'border-purple-500 text-purple-500',\n pink: 'border-pink-500 text-pink-500',\n grey: 'border-gray-500 text-gray-500',\n transparent: 'border-gray-500 text-gray-500',\n};\n\nexport const SUBTLE_COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'bg-green-100 text-green-700',\n yellow: 'bg-yellow-100 text-yellow-700',\n red: 'bg-red-100 text-red-700',\n blue: 'bg-blue-100 text-blue-700',\n purple: 'bg-purple-100 text-purple-700',\n pink: 'bg-pink-100 text-pink-700',\n grey: 'bg-gray-100 text-black',\n transparent: 'bg-black-subtle text-black',\n};\n\nexport const COLOR_SHADE_CLASSNAME: Record<Color, string> = {\n green: 'bg-green-500 text-white',\n yellow: 'bg-yellow-200 text-black',\n red: 'bg-red-500 text-white',\n blue: 'bg-blue-500 text-white',\n purple: 'bg-purple-500 text-white',\n pink: 'bg-pink-500 text-white',\n grey: 'bg-gray-500 text-white',\n transparent: 'bg-black-subtle text-black',\n};\n"],"names":[],"mappings":"AAEO,MAAM,mBAAmB,CAAC,SAAS,UAAU,OAAO,QAAQ,UAAU,QAAQ,QAAQ,aAAa;AAEnG,MAAM,iBAAuC;AAAA,EAChD,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AACb;AAEO,MAAM,gCAAuD;AAAA,EAChE,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;AAEO,MAAM,+BAAsD;AAAA,EAC/D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;AAEO,MAAM,wBAA+C;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AACjB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@economic/taco",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0-react18-compat.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
47
47
|
"@dnd-kit/sortable": "^10.0.0",
|
|
48
48
|
"@dnd-kit/utilities": "^3.2.2",
|
|
49
|
-
"@economic/taco-tokens": "
|
|
49
|
+
"@economic/taco-tokens": "3.0.2-react18-compat.0",
|
|
50
50
|
"@radix-ui/react-scroll-area": "1.2.10",
|
|
51
51
|
"@react-aria/focus": "^3.19.0",
|
|
52
52
|
"@react-aria/interactions": "^3.12.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"tailwindcss": ">=3.4.19"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@economic/taco-rules": "1.0.2-
|
|
71
|
+
"@economic/taco-rules": "1.0.2-react18-compat.0",
|
|
72
72
|
"@oxlint/plugins": "^1.75.0",
|
|
73
73
|
"@svgr/cli": "^8.1.0",
|
|
74
74
|
"@testing-library/jest-dom": "^6.9.1",
|
|
@@ -81,13 +81,13 @@
|
|
|
81
81
|
"clsx": "^2.1.1",
|
|
82
82
|
"fast-sort": "^2.2.0",
|
|
83
83
|
"jsdom": "^29.1.1",
|
|
84
|
-
"nanoid": "^6.0.
|
|
84
|
+
"nanoid": "^6.0.1",
|
|
85
85
|
"resize-observer-polyfill": "^1.5.1",
|
|
86
86
|
"rimraf": "^6.1.3",
|
|
87
87
|
"stylelint": "^17.14.1",
|
|
88
88
|
"svgo": "^4.0.2",
|
|
89
89
|
"tailwindcss": "^3.4.19",
|
|
90
|
-
"typescript": "^
|
|
90
|
+
"typescript": "^6.0.3",
|
|
91
91
|
"vite": "^7.3.6",
|
|
92
92
|
"vite-plugin-dts": "^5.0.3",
|
|
93
93
|
"vite-plugin-externalize-deps": "^0.10.0",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"optionalDependencies": {
|
|
97
97
|
"@rollup/rollup-linux-x64-gnu": "^4.62.4"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "102ac8458611e9a5c37fcfc69711d90df6ebb0b9"
|
|
100
100
|
}
|
package/tailwind.colors.js
CHANGED
|
@@ -2,38 +2,17 @@
|
|
|
2
2
|
* Taco Tailwind color theme.
|
|
3
3
|
*
|
|
4
4
|
* Structure:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
8
|
-
* 4.
|
|
9
|
-
* 5. THEME_COLORS — the final export consumed by tailwind.config.js.
|
|
5
|
+
* 1. Semantic constants — non-token UI colors (overlay blends, etc.).
|
|
6
|
+
* 2. Token maps — rename taco-tokens keys to Tailwind family/shade tuples.
|
|
7
|
+
* 3. Palette — assembled from all token maps; mutated to add DEFAULT shades.
|
|
8
|
+
* 4. THEME_COLORS — the final export consumed by tailwind.config.js.
|
|
10
9
|
*
|
|
11
10
|
* To add a new token-backed color family: add rows to the relevant *_MAP and a
|
|
12
11
|
* `palette.<family>` entry in THEME_COLORS. Do NOT edit taco-tokens — it is generated.
|
|
13
12
|
*/
|
|
14
13
|
import { primaryColors, secondaryColors, tertiaryColors, neutralColors, brandColors } from '@economic/taco-tokens/tokens';
|
|
15
14
|
|
|
16
|
-
// ─── 1.
|
|
17
|
-
|
|
18
|
-
// Not generated in tokens: TODO: Map and remove post color palette update
|
|
19
|
-
const LEGACY_BROWN = {
|
|
20
|
-
100: '#EEE0DA', // Used in Badge component
|
|
21
|
-
300: '#C4AB9E', // Client: Used in paymentcards
|
|
22
|
-
500: '#93715D', // Client: Used in paymentcards, invoicing dashboard
|
|
23
|
-
700: '#73503B', // Client: Used in paymentcards, invoicing dashboard
|
|
24
|
-
900: '#45291F', // Used in Badge component
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// Not generated in tokens: TODO: Map and remove post color palette update */
|
|
28
|
-
const LEGACY_ORANGE = {
|
|
29
|
-
100: '#FFE3BB', // Used in Badge component
|
|
30
|
-
300: '#FAB64D', // Client: Used in paymentcards, workflows
|
|
31
|
-
500: '#F99702', // Client: Used in Avatar component
|
|
32
|
-
700: '#EF7D00', // Client: Used in paymentcards
|
|
33
|
-
900: '#4A2811', // Used in Badge component
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
// ─── 2. Semantic constants ────────────────────────────────────────────────────
|
|
15
|
+
// ─── 1. Semantic constants ────────────────────────────────────────────────────
|
|
37
16
|
|
|
38
17
|
/** Not in tokens: 7% tacoNeutralBlack over transparent → `bg-black-subtle`. */
|
|
39
18
|
const BLACK_SUBTLE_ALPHA = 7;
|
|
@@ -43,7 +22,7 @@ const BLACK_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralBlack} ${BL
|
|
|
43
22
|
const WHITE_SUBTLE_ALPHA = 8;
|
|
44
23
|
const WHITE_SUBTLE = `color-mix(in oklab, ${neutralColors.tacoNeutralWhite} ${WHITE_SUBTLE_ALPHA}%, transparent)`;
|
|
45
24
|
|
|
46
|
-
// ───
|
|
25
|
+
// ─── 2. Token maps ────────────────────────────────────────────────────────────
|
|
47
26
|
|
|
48
27
|
/**
|
|
49
28
|
* Maps token keys from a source object into a `{ [family]: { [shade]: hex } }` structure
|
|
@@ -137,7 +116,7 @@ const NEUTRAL_MAP = [
|
|
|
137
116
|
['tacoNeutralBlack', 'neutral', 'black'],
|
|
138
117
|
];
|
|
139
118
|
|
|
140
|
-
// ───
|
|
119
|
+
// ─── 3. Palette assembly ──────────────────────────────────────────────────────
|
|
141
120
|
|
|
142
121
|
const fromPrimary = assignTokenShades(primaryColors, PRIMARY_MAP);
|
|
143
122
|
const fromSecondary = assignTokenShades(secondaryColors, SECONDARY_MAP);
|
|
@@ -182,7 +161,7 @@ palette.gray = {
|
|
|
182
161
|
...palette.gray,
|
|
183
162
|
};
|
|
184
163
|
|
|
185
|
-
// ───
|
|
164
|
+
// ─── 4. Theme colors ──────────────────────────────────────────────────────────
|
|
186
165
|
|
|
187
166
|
const THEME_COLORS = {
|
|
188
167
|
transparent: 'transparent',
|
|
@@ -207,8 +186,6 @@ const THEME_COLORS = {
|
|
|
207
186
|
green: palette.green,
|
|
208
187
|
yellow: palette.yellow,
|
|
209
188
|
pink: palette.pink,
|
|
210
|
-
brown: LEGACY_BROWN,
|
|
211
|
-
orange: LEGACY_ORANGE,
|
|
212
189
|
};
|
|
213
190
|
|
|
214
191
|
export default THEME_COLORS;
|