@fuf-stack/pixels 0.32.1 → 0.32.2

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.
@@ -0,0 +1,111 @@
1
+ // src/Table/Table.tsx
2
+ import {
3
+ getKeyValue,
4
+ Table as NextTable,
5
+ TableBody,
6
+ TableCell,
7
+ TableColumn,
8
+ TableHeader,
9
+ TableRow
10
+ } from "@heroui/table";
11
+ import { slugify, tv, variantsToClassNames } from "@fuf-stack/pixel-utils";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ var tableVariants = tv({
14
+ slots: {
15
+ base: "",
16
+ wrapper: "",
17
+ table: "",
18
+ thead: "",
19
+ tbody: "",
20
+ tr: "",
21
+ th: "bg-content2",
22
+ td: "",
23
+ tfoot: "",
24
+ sortIcon: "",
25
+ emptyWrapper: "",
26
+ loadingWrapper: ""
27
+ },
28
+ variants: {
29
+ separation: {
30
+ divider: {
31
+ tr: 'divide-x rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first="true"])]:border-none'
32
+ },
33
+ "divider-x": {
34
+ tr: "divide-x"
35
+ },
36
+ "divider-y": {
37
+ tr: 'rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first="true"])]:border-none'
38
+ },
39
+ "striped-divider-x": {
40
+ tr: "divide-x",
41
+ th: "border-divider",
42
+ td: "border-divider first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2"
43
+ },
44
+ striped: {
45
+ tr: "",
46
+ td: "first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2"
47
+ },
48
+ none: {}
49
+ }
50
+ }
51
+ });
52
+ var Table = ({
53
+ ariaLabel = void 0,
54
+ bottomContent = void 0,
55
+ className = void 0,
56
+ columns,
57
+ emptyContent = "No rows to display.",
58
+ hasWrapper = false,
59
+ hideHeader = false,
60
+ loading = false,
61
+ loadingContent = void 0,
62
+ rows = [],
63
+ separation = "none",
64
+ stickyHeader = false,
65
+ testId = void 0
66
+ }) => {
67
+ const variants = tableVariants({ separation });
68
+ const classNames = variantsToClassNames(variants, className, "base");
69
+ return /* @__PURE__ */ jsxs(
70
+ NextTable,
71
+ {
72
+ "aria-label": ariaLabel,
73
+ bottomContent,
74
+ classNames,
75
+ "data-testid": testId && slugify(testId),
76
+ hideHeader,
77
+ isHeaderSticky: stickyHeader,
78
+ isStriped: separation === "striped" || separation === "striped-divider-x",
79
+ removeWrapper: !hasWrapper,
80
+ children: [
81
+ /* @__PURE__ */ jsx(TableHeader, { columns, children: (column) => /* @__PURE__ */ jsx(TableColumn, { children: column.label }, column.key) }),
82
+ /* @__PURE__ */ jsx(
83
+ TableBody,
84
+ {
85
+ isLoading: loading,
86
+ loadingContent: loadingContent || "...",
87
+ emptyContent,
88
+ items: rows,
89
+ children: (item) => /* @__PURE__ */ jsx(
90
+ TableRow,
91
+ {
92
+ children: (columnKey) => /* @__PURE__ */ jsx(TableCell, { children: getKeyValue(item, columnKey) })
93
+ },
94
+ item.key
95
+ )
96
+ }
97
+ )
98
+ ]
99
+ }
100
+ );
101
+ };
102
+ var Table_default = Table;
103
+
104
+ // src/Table/index.ts
105
+ var Table_default2 = Table_default;
106
+
107
+ export {
108
+ tableVariants,
109
+ Table_default2 as Table_default
110
+ };
111
+ //# sourceMappingURL=chunk-DQE7D2UZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Table/Table.tsx","../src/Table/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport {\n getKeyValue,\n Table as NextTable,\n TableBody,\n TableCell,\n TableColumn,\n TableHeader,\n TableRow,\n} from '@heroui/table';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\n// table styling variants\nexport const tableVariants = tv({\n slots: {\n base: '',\n wrapper: '',\n table: '',\n thead: '',\n tbody: '',\n tr: '',\n th: 'bg-content2',\n td: '',\n tfoot: '',\n sortIcon: '',\n emptyWrapper: '',\n loadingWrapper: '',\n },\n variants: {\n separation: {\n divider: {\n tr: 'divide-x rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first=\"true\"])]:border-none',\n },\n 'divider-x': {\n tr: 'divide-x',\n },\n 'divider-y': {\n tr: 'rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first=\"true\"])]:border-none',\n },\n 'striped-divider-x': {\n tr: 'divide-x',\n th: 'border-divider',\n td: 'border-divider first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2',\n },\n striped: {\n tr: '',\n td: 'first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2',\n },\n none: {},\n },\n },\n});\n\nexport type VariantProps = TVProps<typeof tableVariants>;\ntype ClassName = TVClassName<typeof tableVariants>;\n\nexport interface TableColumnProps {\n key: string;\n label: ReactNode;\n}\n\nexport interface TableRowProps {\n key: string | number;\n [key: string | number]: ReactNode;\n}\n\nexport interface TableProps extends VariantProps {\n /** Aria label for the Table. */\n ariaLabel?: string;\n /** Component to display at the bottom of the Table. */\n bottomContent?: ReactNode;\n /** CSS class name */\n className?: ClassName;\n /** Objects with table data */\n columns: TableColumnProps[];\n /** Component to display if there are no rows! */\n emptyContent?: ReactNode;\n /** Determine if the Table should have a card like wrapper. */\n hasWrapper?: boolean;\n /** remove header */\n hideHeader?: boolean;\n /** Tells the Table to show the loading component. */\n loading?: boolean;\n /** Loading animation component. */\n loadingContent?: ReactNode;\n /** Items displayed as rows in the Table. Should have key-value pair for each column. */\n rows?: TableRowProps[];\n /** Separation style for the rows & columns. */\n separation?:\n | 'none'\n | 'striped'\n | 'striped-divider-x'\n | 'divider-x'\n | 'divider-y'\n | 'divider';\n /** Keeps the header of the Table in view while scrolling a height limited Table. */\n stickyHeader?: boolean;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Table component based on [HeroUI Table](https://www.heroui.com//docs/components/table)\n */\nconst Table = ({\n ariaLabel = undefined,\n bottomContent = undefined,\n className = undefined,\n columns,\n emptyContent = 'No rows to display.',\n hasWrapper = false,\n hideHeader = false,\n loading = false,\n loadingContent = undefined,\n rows = [],\n separation = 'none',\n stickyHeader = false,\n testId = undefined,\n}: TableProps) => {\n const variants = tableVariants({ separation });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n return (\n <NextTable\n aria-label={ariaLabel}\n bottomContent={bottomContent}\n classNames={classNames}\n data-testid={testId && slugify(testId)}\n hideHeader={hideHeader}\n isHeaderSticky={stickyHeader}\n isStriped={separation === 'striped' || separation === 'striped-divider-x'}\n removeWrapper={!hasWrapper}\n >\n <TableHeader columns={columns}>\n {(column: TableColumnProps) => (\n <TableColumn key={column.key}>{column.label}</TableColumn>\n )}\n </TableHeader>\n <TableBody\n isLoading={loading}\n loadingContent={loadingContent || '...'} // TODO: use future spinner/loading component\n emptyContent={emptyContent}\n items={rows}\n >\n {(item: TableRowProps) => (\n <TableRow\n key={item.key}\n // data-testid={`${slugify(testId || 'table')}_item_${slugify(JSON.stringify(item.testId || item.key))}`}\n >\n {(columnKey) => (\n <TableCell>{getKeyValue(item, columnKey)}</TableCell>\n )}\n </TableRow>\n )}\n </TableBody>\n </NextTable>\n );\n};\n\nexport default Table;\n","import Table, { tableVariants } from './Table';\n\nexport type {\n TableProps,\n TableRowProps,\n TableColumnProps,\n VariantProps,\n} from './Table';\n\nexport { tableVariants };\n\nexport default Table;\n"],"mappings":";AAGA;AAAA,EACE;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,IAAI,4BAA4B;AAiH9C,SAYM,KAZN;AA9GG,IAAM,gBAAgB,GAAG;AAAA,EAC9B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,gBAAgB;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,IACR,YAAY;AAAA,MACV,SAAS;AAAA,QACP,IAAI;AAAA,MACN;AAAA,MACA,aAAa;AAAA,QACX,IAAI;AAAA,MACN;AAAA,MACA,aAAa;AAAA,QACX,IAAI;AAAA,MACN;AAAA,MACA,qBAAqB;AAAA,QACnB,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACF,CAAC;AAqDD,IAAM,QAAQ,CAAC;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AAAA,EACb,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,OAAO,CAAC;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,SAAS;AACX,MAAkB;AAChB,QAAM,WAAW,cAAc,EAAE,WAAW,CAAC;AAC7C,QAAM,aAAa,qBAAqB,UAAU,WAAW,MAAM;AAEnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,eAAa,UAAU,QAAQ,MAAM;AAAA,MACrC;AAAA,MACA,gBAAgB;AAAA,MAChB,WAAW,eAAe,aAAa,eAAe;AAAA,MACtD,eAAe,CAAC;AAAA,MAEhB;AAAA,4BAAC,eAAY,SACV,WAAC,WACA,oBAAC,eAA8B,iBAAO,SAApB,OAAO,GAAmB,GAEhD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,gBAAgB,kBAAkB;AAAA,YAClC;AAAA,YACA,OAAO;AAAA,YAEN,WAAC,SACA;AAAA,cAAC;AAAA;AAAA,gBAIE,WAAC,cACA,oBAAC,aAAW,sBAAY,MAAM,SAAS,GAAE;AAAA;AAAA,cAJtC,KAAK;AAAA,YAMZ;AAAA;AAAA,QAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,gBAAQ;;;ACvJf,IAAOA,iBAAQ;","names":["Table_default"]}
@@ -0,0 +1,111 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/Table/Table.tsx
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+ var _table = require('@heroui/table');
11
+ var _pixelutils = require('@fuf-stack/pixel-utils');
12
+ var _jsxruntime = require('react/jsx-runtime');
13
+ var tableVariants = _pixelutils.tv.call(void 0, {
14
+ slots: {
15
+ base: "",
16
+ wrapper: "",
17
+ table: "",
18
+ thead: "",
19
+ tbody: "",
20
+ tr: "",
21
+ th: "bg-content2",
22
+ td: "",
23
+ tfoot: "",
24
+ sortIcon: "",
25
+ emptyWrapper: "",
26
+ loadingWrapper: ""
27
+ },
28
+ variants: {
29
+ separation: {
30
+ divider: {
31
+ tr: 'divide-x rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first="true"])]:border-none'
32
+ },
33
+ "divider-x": {
34
+ tr: "divide-x"
35
+ },
36
+ "divider-y": {
37
+ tr: 'rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first="true"])]:border-none'
38
+ },
39
+ "striped-divider-x": {
40
+ tr: "divide-x",
41
+ th: "border-divider",
42
+ td: "border-divider first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2"
43
+ },
44
+ striped: {
45
+ tr: "",
46
+ td: "first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2"
47
+ },
48
+ none: {}
49
+ }
50
+ }
51
+ });
52
+ var Table = ({
53
+ ariaLabel = void 0,
54
+ bottomContent = void 0,
55
+ className = void 0,
56
+ columns,
57
+ emptyContent = "No rows to display.",
58
+ hasWrapper = false,
59
+ hideHeader = false,
60
+ loading = false,
61
+ loadingContent = void 0,
62
+ rows = [],
63
+ separation = "none",
64
+ stickyHeader = false,
65
+ testId = void 0
66
+ }) => {
67
+ const variants = tableVariants({ separation });
68
+ const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
69
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
70
+ _table.Table,
71
+ {
72
+ "aria-label": ariaLabel,
73
+ bottomContent,
74
+ classNames,
75
+ "data-testid": testId && _pixelutils.slugify.call(void 0, testId),
76
+ hideHeader,
77
+ isHeaderSticky: stickyHeader,
78
+ isStriped: separation === "striped" || separation === "striped-divider-x",
79
+ removeWrapper: !hasWrapper,
80
+ children: [
81
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _table.TableHeader, { columns, children: (column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _table.TableColumn, { children: column.label }, column.key) }),
82
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
83
+ _table.TableBody,
84
+ {
85
+ isLoading: loading,
86
+ loadingContent: loadingContent || "...",
87
+ emptyContent,
88
+ items: rows,
89
+ children: (item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
90
+ _table.TableRow,
91
+ {
92
+ children: (columnKey) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _table.TableCell, { children: _table.getKeyValue.call(void 0, item, columnKey) })
93
+ },
94
+ item.key
95
+ )
96
+ }
97
+ )
98
+ ]
99
+ }
100
+ );
101
+ };
102
+ var Table_default = Table;
103
+
104
+ // src/Table/index.ts
105
+ var Table_default2 = Table_default;
106
+
107
+
108
+
109
+
110
+ exports.tableVariants = tableVariants; exports.Table_default = Table_default2;
111
+ //# sourceMappingURL=chunk-TA3MY4KY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-TA3MY4KY.cjs","../src/Table/Table.tsx","../src/Table/index.ts"],"names":["Table_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-TA3MY4KY.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport {\n getKeyValue,\n Table as NextTable,\n TableBody,\n TableCell,\n TableColumn,\n TableHeader,\n TableRow,\n} from '@heroui/table';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\n// table styling variants\nexport const tableVariants = tv({\n slots: {\n base: '',\n wrapper: '',\n table: '',\n thead: '',\n tbody: '',\n tr: '',\n th: 'bg-content2',\n td: '',\n tfoot: '',\n sortIcon: '',\n emptyWrapper: '',\n loadingWrapper: '',\n },\n variants: {\n separation: {\n divider: {\n tr: 'divide-x rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first=\"true\"])]:border-none',\n },\n 'divider-x': {\n tr: 'divide-x',\n },\n 'divider-y': {\n tr: 'rounded-lg border-b data-[last=true]:border-none [&:first-child:not([data-first=\"true\"])]:border-none',\n },\n 'striped-divider-x': {\n tr: 'divide-x',\n th: 'border-divider',\n td: 'border-divider first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2',\n },\n striped: {\n tr: '',\n td: 'first:rounded-s-lg last:rounded-e-lg group-data-[odd=true]:bg-content2',\n },\n none: {},\n },\n },\n});\n\nexport type VariantProps = TVProps<typeof tableVariants>;\ntype ClassName = TVClassName<typeof tableVariants>;\n\nexport interface TableColumnProps {\n key: string;\n label: ReactNode;\n}\n\nexport interface TableRowProps {\n key: string | number;\n [key: string | number]: ReactNode;\n}\n\nexport interface TableProps extends VariantProps {\n /** Aria label for the Table. */\n ariaLabel?: string;\n /** Component to display at the bottom of the Table. */\n bottomContent?: ReactNode;\n /** CSS class name */\n className?: ClassName;\n /** Objects with table data */\n columns: TableColumnProps[];\n /** Component to display if there are no rows! */\n emptyContent?: ReactNode;\n /** Determine if the Table should have a card like wrapper. */\n hasWrapper?: boolean;\n /** remove header */\n hideHeader?: boolean;\n /** Tells the Table to show the loading component. */\n loading?: boolean;\n /** Loading animation component. */\n loadingContent?: ReactNode;\n /** Items displayed as rows in the Table. Should have key-value pair for each column. */\n rows?: TableRowProps[];\n /** Separation style for the rows & columns. */\n separation?:\n | 'none'\n | 'striped'\n | 'striped-divider-x'\n | 'divider-x'\n | 'divider-y'\n | 'divider';\n /** Keeps the header of the Table in view while scrolling a height limited Table. */\n stickyHeader?: boolean;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Table component based on [HeroUI Table](https://www.heroui.com//docs/components/table)\n */\nconst Table = ({\n ariaLabel = undefined,\n bottomContent = undefined,\n className = undefined,\n columns,\n emptyContent = 'No rows to display.',\n hasWrapper = false,\n hideHeader = false,\n loading = false,\n loadingContent = undefined,\n rows = [],\n separation = 'none',\n stickyHeader = false,\n testId = undefined,\n}: TableProps) => {\n const variants = tableVariants({ separation });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n return (\n <NextTable\n aria-label={ariaLabel}\n bottomContent={bottomContent}\n classNames={classNames}\n data-testid={testId && slugify(testId)}\n hideHeader={hideHeader}\n isHeaderSticky={stickyHeader}\n isStriped={separation === 'striped' || separation === 'striped-divider-x'}\n removeWrapper={!hasWrapper}\n >\n <TableHeader columns={columns}>\n {(column: TableColumnProps) => (\n <TableColumn key={column.key}>{column.label}</TableColumn>\n )}\n </TableHeader>\n <TableBody\n isLoading={loading}\n loadingContent={loadingContent || '...'} // TODO: use future spinner/loading component\n emptyContent={emptyContent}\n items={rows}\n >\n {(item: TableRowProps) => (\n <TableRow\n key={item.key}\n // data-testid={`${slugify(testId || 'table')}_item_${slugify(JSON.stringify(item.testId || item.key))}`}\n >\n {(columnKey) => (\n <TableCell>{getKeyValue(item, columnKey)}</TableCell>\n )}\n </TableRow>\n )}\n </TableBody>\n </NextTable>\n );\n};\n\nexport default Table;\n","import Table, { tableVariants } from './Table';\n\nexport type {\n TableProps,\n TableRowProps,\n TableColumnProps,\n VariantProps,\n} from './Table';\n\nexport { tableVariants };\n\nexport default Table;\n"]}
package/dist/index.cjs CHANGED
@@ -1,5 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
+ var _chunkTA3MY4KYcjs = require('./chunk-TA3MY4KY.cjs');
4
+
5
+
3
6
 
4
7
  var _chunk2SQEDOXZcjs = require('./chunk-2SQEDOXZ.cjs');
5
8
 
@@ -93,5 +96,6 @@ require('./chunk-D4TLDLEX.cjs');
93
96
 
94
97
 
95
98
 
96
- exports.Accordion = _chunkXTR4NKDPcjs.Accordion_default; exports.Avatar = _chunkBURI3HTZcjs.Avatar_default; exports.AvatarGroup = _chunkHPLU3CHPcjs.AvatarGroup_default; exports.Badge = _chunkD7KXMNEIcjs.Badge_default; exports.Breadcrumb = _chunkOOFJGGRScjs.Breadcrumb_default; exports.Button = _chunkA4FOULHYcjs.Button_default; exports.ButtonGroup = _chunkA4FOULHYcjs.ButtonGroup_default; exports.Card = _chunkZXN5DNKQcjs.Card_default; exports.Drawer = _chunkWSM7WMFPcjs.Drawer_default; exports.Json = _chunkFFRBORVVcjs.Json_default; exports.Label = _chunkWV3ZDL4Jcjs.Label_default; exports.Menu = _chunkORO34I7Xcjs.Menu_default; exports.Modal = _chunkT7EAVBXLcjs.Modal_default; exports.Popover = _chunkAJLLRWSEcjs.Popover_default; exports.Tabs = _chunk2SQEDOXZcjs.Tabs_default; exports.Tooltip = _chunkXNMTAL3Jcjs.Tooltip_default; exports.accordionVariants = _chunkXTR4NKDPcjs.accordionVariants; exports.breadcrumbVariants = _chunkOOFJGGRScjs.breadcrumbVariants; exports.buttonVariants = _chunkA4FOULHYcjs.buttonVariants; exports.cardVariants = _chunkZXN5DNKQcjs.cardVariants; exports.drawerBackdrops = _chunkWSM7WMFPcjs.drawerBackdrops; exports.drawerPlacements = _chunkWSM7WMFPcjs.drawerPlacements; exports.drawerRadii = _chunkWSM7WMFPcjs.drawerRadii; exports.drawerSizes = _chunkWSM7WMFPcjs.drawerSizes; exports.drawerVariants = _chunkWSM7WMFPcjs.drawerVariants; exports.modalVariants = _chunkT7EAVBXLcjs.modalVariants; exports.tabsVariants = _chunk2SQEDOXZcjs.tabsVariants; exports.tooltipPlacementOptions = _chunkXNMTAL3Jcjs.tooltipPlacementOptions; exports.useDebounce = _chunkMWNBYTRNcjs.useDebounce; exports.useLocalStorage = _chunkMWNBYTRNcjs.useLocalStorage;
99
+
100
+ exports.Accordion = _chunkXTR4NKDPcjs.Accordion_default; exports.Avatar = _chunkBURI3HTZcjs.Avatar_default; exports.AvatarGroup = _chunkHPLU3CHPcjs.AvatarGroup_default; exports.Badge = _chunkD7KXMNEIcjs.Badge_default; exports.Breadcrumb = _chunkOOFJGGRScjs.Breadcrumb_default; exports.Button = _chunkA4FOULHYcjs.Button_default; exports.ButtonGroup = _chunkA4FOULHYcjs.ButtonGroup_default; exports.Card = _chunkZXN5DNKQcjs.Card_default; exports.Drawer = _chunkWSM7WMFPcjs.Drawer_default; exports.Json = _chunkFFRBORVVcjs.Json_default; exports.Label = _chunkWV3ZDL4Jcjs.Label_default; exports.Menu = _chunkORO34I7Xcjs.Menu_default; exports.Modal = _chunkT7EAVBXLcjs.Modal_default; exports.Popover = _chunkAJLLRWSEcjs.Popover_default; exports.Tabs = _chunk2SQEDOXZcjs.Tabs_default; exports.Tooltip = _chunkXNMTAL3Jcjs.Tooltip_default; exports.accordionVariants = _chunkXTR4NKDPcjs.accordionVariants; exports.breadcrumbVariants = _chunkOOFJGGRScjs.breadcrumbVariants; exports.buttonVariants = _chunkA4FOULHYcjs.buttonVariants; exports.cardVariants = _chunkZXN5DNKQcjs.cardVariants; exports.drawerBackdrops = _chunkWSM7WMFPcjs.drawerBackdrops; exports.drawerPlacements = _chunkWSM7WMFPcjs.drawerPlacements; exports.drawerRadii = _chunkWSM7WMFPcjs.drawerRadii; exports.drawerSizes = _chunkWSM7WMFPcjs.drawerSizes; exports.drawerVariants = _chunkWSM7WMFPcjs.drawerVariants; exports.modalVariants = _chunkT7EAVBXLcjs.modalVariants; exports.tableVariants = _chunkTA3MY4KYcjs.tableVariants; exports.tabsVariants = _chunk2SQEDOXZcjs.tabsVariants; exports.tooltipPlacementOptions = _chunkXNMTAL3Jcjs.tooltipPlacementOptions; exports.useDebounce = _chunkMWNBYTRNcjs.useDebounce; exports.useLocalStorage = _chunkMWNBYTRNcjs.useLocalStorage;
97
101
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qoDAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,8rDAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -11,6 +11,7 @@ export { L as Label, a as LabelProps } from './Label-BH0taC2T.cjs';
11
11
  export { M as Menu, b as MenuItem, a as MenuProps, c as MenuSection } from './Menu-C7lpY7pY.cjs';
12
12
  export { M as Modal, a as ModalProps, m as modalVariants } from './Modal-DI5ZdS_3.cjs';
13
13
  export { _ as Popover, P as PopoverProps } from './Popover-Db9vCWrz.cjs';
14
+ export { b as TableColumnProps, T as TableProps, a as TableRowProps, V as VariantProps, t as tableVariants } from './Table--d9l8Xlk.cjs';
14
15
  export { b as TabProps, T as Tabs, a as TabsProps, t as tabsVariants } from './Tabs-XIux-c3p.cjs';
15
16
  export { T as Tooltip, a as TooltipProps, t as tooltipPlacementOptions } from './Tooltip-Bsq7nJLh.cjs';
16
17
  export { useDebounce, useLocalStorage } from './hooks/index.cjs';
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export { L as Label, a as LabelProps } from './Label-BH0taC2T.js';
11
11
  export { M as Menu, b as MenuItem, a as MenuProps, c as MenuSection } from './Menu-C7lpY7pY.js';
12
12
  export { M as Modal, a as ModalProps, m as modalVariants } from './Modal-DI5ZdS_3.js';
13
13
  export { _ as Popover, P as PopoverProps } from './Popover-Db9vCWrz.js';
14
+ export { b as TableColumnProps, T as TableProps, a as TableRowProps, V as VariantProps, t as tableVariants } from './Table--d9l8Xlk.js';
14
15
  export { b as TabProps, T as Tabs, a as TabsProps, t as tabsVariants } from './Tabs-XIux-c3p.js';
15
16
  export { T as Tooltip, a as TooltipProps, t as tooltipPlacementOptions } from './Tooltip-Bsq7nJLh.js';
16
17
  export { useDebounce, useLocalStorage } from './hooks/index.js';
package/dist/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ import {
2
+ tableVariants
3
+ } from "./chunk-DQE7D2UZ.js";
1
4
  import {
2
5
  Tabs_default,
3
6
  tabsVariants
@@ -89,6 +92,7 @@ export {
89
92
  drawerSizes,
90
93
  drawerVariants,
91
94
  modalVariants,
95
+ tableVariants,
92
96
  tabsVariants,
93
97
  tooltipPlacementOptions,
94
98
  useDebounce,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@fuf-stack/pixels",
3
3
  "description": "fuf core react component library",
4
4
  "author": "Hannes Tiede",
5
- "version": "0.32.1",
5
+ "version": "0.32.2",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",
8
8
  "module": "./dist/index.js",
@@ -173,9 +173,9 @@
173
173
  "react": "19.0.0",
174
174
  "react-dom": "19.0.0",
175
175
  "@repo/storybook-config": "0.0.1",
176
- "@repo/tailwind-config": "0.0.1",
177
176
  "@repo/tsup-config": "0.0.1",
178
- "@repo/vite-config": "0.0.1"
177
+ "@repo/vite-config": "0.0.1",
178
+ "@repo/tailwind-config": "0.0.1"
179
179
  },
180
180
  "scripts": {
181
181
  "build": "tsup --config node_modules/@repo/tsup-config/config.ts --dts-resolve",