@nova-design-system/nova-react 3.16.0 → 3.18.0-beta.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.
Files changed (54) hide show
  1. package/dist/cjs/generated/components.server.js +826 -0
  2. package/dist/cjs/{index-7K7BV1CP.js → index-CQAMJPJk.js} +846 -317
  3. package/dist/cjs/index.js +2 -1
  4. package/dist/cjs/{nv-accordion-item.entry-C-9tYw-c.js → nv-accordion-item.entry-BQ4e6YBV.js} +1 -1
  5. package/dist/cjs/{nv-accordion.entry-BA3mTIdj.js → nv-accordion.entry-BX5L-Gh7.js} +1 -1
  6. package/dist/cjs/{nv-alert.entry-Bic-YGW1.js → nv-alert.entry-GY7Xn7F6.js} +1 -1
  7. package/dist/cjs/{nv-avatar.entry-C-yd0YlD.js → nv-avatar.entry-j-ctCQEi.js} +1 -1
  8. package/dist/cjs/{nv-badge_2.entry-B_8yvNXL.js → nv-badge_2.entry-tuEGBPUn.js} +1 -1
  9. package/dist/cjs/{nv-breadcrumb.entry-BCTbG942.js → nv-breadcrumb.entry-DHZpC_e3.js} +1 -1
  10. package/dist/cjs/{nv-breadcrumbs.entry-C9B5Baf7.js → nv-breadcrumbs.entry-2tzS_xzO.js} +1 -1
  11. package/dist/cjs/{nv-button.entry-DgX8Bwmq.js → nv-button.entry-BfV4ewn0.js} +2 -8
  12. package/dist/cjs/{nv-buttongroup.entry-CKhZN_Yf.js → nv-buttongroup.entry-BBTtBLTw.js} +1 -1
  13. package/dist/cjs/{nv-calendar.entry-E6Pk83WA.js → nv-calendar.entry-CTkbvFRZ.js} +1 -1
  14. package/dist/cjs/{nv-col.entry-CkZpukX9.js → nv-col.entry-CsSk4Ltj.js} +1 -1
  15. package/dist/cjs/{nv-datagrid.entry-RsfP7vbC.js → nv-datagrid.entry-DlQRC5CG.js} +2 -2
  16. package/dist/cjs/{nv-datagridcolumn.entry-D4VrDWo9.js → nv-datagridcolumn.entry-BxSumv4Q.js} +1 -1
  17. package/dist/cjs/{nv-dialog.entry-BhtWpYHl.js → nv-dialog.entry-BFeHCAhr.js} +1 -1
  18. package/dist/cjs/{nv-dialogfooter_2.entry-BXLYmzYl.js → nv-dialogfooter_2.entry-CXOzxujX.js} +1 -1
  19. package/dist/cjs/{nv-fieldcheckbox.entry-D96Nm6DZ.js → nv-fieldcheckbox.entry-BMq7p1kc.js} +1 -1
  20. package/dist/cjs/{nv-fielddate.entry-ty37R9jF.js → nv-fielddate.entry-DmMQq5bO.js} +1 -1
  21. package/dist/cjs/{nv-fielddaterange.entry-BSIRu_mq.js → nv-fielddaterange.entry-BJm7_qAB.js} +1 -1
  22. package/dist/cjs/{nv-fielddropdown.entry-CUzvIoZZ.js → nv-fielddropdown.entry-DOkzDn78.js} +1 -1
  23. package/dist/cjs/{nv-fielddropdownitem.entry-D-GTxLNk.js → nv-fielddropdownitem.entry-CVI8jUn4.js} +1 -1
  24. package/dist/cjs/{nv-fieldmultiselect.entry-DFY2bf6s.js → nv-fieldmultiselect.entry-CWxL0xsk.js} +1 -1
  25. package/dist/cjs/{nv-fieldnumber.entry-CILclJ7Q.js → nv-fieldnumber.entry-bReRT-TF.js} +1 -1
  26. package/dist/cjs/{nv-fieldpassword.entry-CdR-NM8e.js → nv-fieldpassword.entry-BprEVABM.js} +1 -1
  27. package/dist/cjs/{nv-fieldradio.entry-lC4scIvU.js → nv-fieldradio.entry-T_uuPP7m.js} +1 -1
  28. package/dist/cjs/{nv-fieldselect.entry-CYu6870F.js → nv-fieldselect.entry-DB9YREaD.js} +1 -1
  29. package/dist/cjs/{nv-fieldslider.entry-DOuJAR6P.js → nv-fieldslider.entry-Bkj5p8jp.js} +1 -1
  30. package/dist/cjs/{nv-fieldtext.entry-BFLUiPa4.js → nv-fieldtext.entry-BsUZW21W.js} +1 -1
  31. package/dist/cjs/{nv-fieldtextarea.entry-BeI0k97G.js → nv-fieldtextarea.entry-DtC4sL4g.js} +1 -1
  32. package/dist/cjs/{nv-fieldtime.entry-C28EAKki.js → nv-fieldtime.entry-BW8nABK-.js} +1 -1
  33. package/dist/cjs/{nv-icon.entry-BXgjUpe_.js → nv-icon.entry-BFTi5BIN.js} +2 -2
  34. package/dist/cjs/{nv-iconbutton_2.entry-CpIkxrp9.js → nv-iconbutton_2.entry-DI-3_IYV.js} +1 -1
  35. package/dist/cjs/{nv-menu.entry-as-NOsF-.js → nv-menu.entry-BbqP7TZx.js} +1 -1
  36. package/dist/cjs/{nv-menuitem.entry-D8KAh6nr.js → nv-menuitem.entry-BxGppIvW.js} +1 -1
  37. package/dist/cjs/{nv-notification.entry-C-_jV-DL.js → nv-notification.entry-D1gy3PSV.js} +1 -1
  38. package/dist/cjs/{nv-notificationcontainer.entry-CMn42loT.js → nv-notificationcontainer.entry-MJPLFXsR.js} +1 -1
  39. package/dist/cjs/{nv-popover.entry--BhEBSir.js → nv-popover.entry-CL28RbQ0.js} +1 -1
  40. package/dist/cjs/{nv-row.entry-BxhcK9aY.js → nv-row.entry-DkCe2B9f.js} +1 -1
  41. package/dist/cjs/nv-split.entry-BMVNZDwj.js +337 -0
  42. package/dist/cjs/{nv-stack.entry-C3DF9jJZ.js → nv-stack.entry-iH3La5O3.js} +2 -2
  43. package/dist/cjs/{nv-table.entry-pfEGt2KH.js → nv-table.entry-DFHkpLLG.js} +2 -2
  44. package/dist/cjs/{nv-toggle.entry-ChpqtQtn.js → nv-toggle.entry-BM2Xdtvg.js} +3 -3
  45. package/dist/cjs/{nv-togglebutton.entry-DE7CKmeN.js → nv-togglebutton.entry-DPu3j4uH.js} +2 -2
  46. package/dist/cjs/{nv-togglebuttongroup.entry-BJPjdmHD.js → nv-togglebuttongroup.entry-BBUI9mSK.js} +2 -2
  47. package/dist/cjs/{nv-tooltip.entry-D9-Fga6C.js → nv-tooltip.entry-CEynYna7.js} +2 -2
  48. package/dist/components/NvDatatable.js +122 -19
  49. package/dist/generated/components.js +8 -0
  50. package/dist/generated/components.server.js +9 -0
  51. package/dist/types/components/NvDatatable.d.ts +35 -1
  52. package/dist/types/generated/components.d.ts +5 -0
  53. package/dist/types/generated/components.server.d.ts +5 -0
  54. package/package.json +11 -4
@@ -1,7 +1,12 @@
1
- import React, { useMemo } from 'react';
2
- import { flexRender, getCoreRowModel, useReactTable, } from '@tanstack/react-table';
1
+ import React, { useMemo, useState, useEffect, useRef, } from 'react';
2
+ import { flexRender, getCoreRowModel, getPaginationRowModel, useReactTable, } from '@tanstack/react-table';
3
3
  import { NvTable } from '../generated/components';
4
- const NvDatatable = ({ columns, rows, ...htmlProps }) => {
4
+ const NvDatatable = ({ columns, rows, pagination, renderPagination, stickyHeader, ...htmlProps }) => {
5
+ const [paginationState, setPaginationState] = useState({
6
+ pageIndex: 0,
7
+ pageSize: pagination?.initialPageSize || 10,
8
+ });
9
+ const lastRowRef = useRef(null);
5
10
  const tableColumns = useMemo(() => columns
6
11
  .filter((col) => !col.hidden)
7
12
  .map((col) => ({
@@ -24,22 +29,120 @@ const NvDatatable = ({ columns, rows, ...htmlProps }) => {
24
29
  return value;
25
30
  },
26
31
  })), [columns]);
27
- const table = useReactTable({
28
- data: rows,
29
- columns: tableColumns,
30
- getCoreRowModel: getCoreRowModel(),
31
- });
32
- return (React.createElement(NvTable, { ...htmlProps },
33
- React.createElement("table", null,
34
- React.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (React.createElement("tr", { key: headerGroup.id }, headerGroup.headers.map((header) => (React.createElement("th", { key: header.id, "data-testid": `datatable-header-${header.id}`, style: {
35
- width: header.column.columnDef.size + 'px',
36
- }, "data-no-resize": header.column.columnDef.enableResizing ? null : true }, header.isPlaceholder
37
- ? null
38
- : flexRender(header.column.columnDef.header, header.getContext())))))))),
39
- React.createElement("tbody", null, table.getRowModel().rows.map((row) => (React.createElement("tr", { key: row.id, "data-testid": `datatable-row-${row.id}` }, row.getVisibleCells().map((cell) => (React.createElement("td", { key: cell.id, "data-testid": `datatable-cell-${cell.id}`, style: {
40
- padding: '8px',
41
- borderBottom: '1px solid #eee',
42
- } }, flexRender(cell.column.columnDef.cell, cell.getContext())))))))))));
32
+ const tableConfig = useMemo(() => {
33
+ const baseConfig = {
34
+ data: rows,
35
+ columns: tableColumns,
36
+ getCoreRowModel: getCoreRowModel(),
37
+ };
38
+ if (!pagination) {
39
+ return baseConfig;
40
+ }
41
+ if (pagination.mode === 'client') {
42
+ return {
43
+ ...baseConfig,
44
+ getPaginationRowModel: getPaginationRowModel(),
45
+ initialState: {
46
+ pagination: {
47
+ pageIndex: 0,
48
+ pageSize: pagination.initialPageSize || 10,
49
+ },
50
+ },
51
+ };
52
+ }
53
+ if (pagination.mode === 'server') {
54
+ const pageSize = paginationState.pageSize;
55
+ let pageCount = -1;
56
+ if (pagination.totalPageCount !== undefined) {
57
+ pageCount = pagination.totalPageCount;
58
+ }
59
+ else if (pagination.totalRowCount !== undefined) {
60
+ pageCount = Math.ceil(pagination.totalRowCount / pageSize);
61
+ }
62
+ return {
63
+ ...baseConfig,
64
+ manualPagination: true,
65
+ pageCount,
66
+ state: {
67
+ pagination: paginationState,
68
+ },
69
+ onPaginationChange: setPaginationState,
70
+ };
71
+ }
72
+ return baseConfig;
73
+ }, [rows, tableColumns, pagination, paginationState]);
74
+ const table = useReactTable(tableConfig);
75
+ useEffect(() => {
76
+ if (pagination?.mode === 'server' && pagination.onPaginationChange) {
77
+ pagination.onPaginationChange({
78
+ pageIndex: paginationState.pageIndex,
79
+ pageSize: paginationState.pageSize,
80
+ });
81
+ }
82
+ }, [paginationState, pagination]);
83
+ useEffect(() => {
84
+ if (pagination?.mode !== 'infinite' || !lastRowRef.current) {
85
+ return;
86
+ }
87
+ const threshold = pagination.loadMoreThreshold || 500;
88
+ const observer = new IntersectionObserver((entries) => {
89
+ const entry = entries[0];
90
+ if (entry.isIntersecting &&
91
+ pagination.hasMore &&
92
+ !pagination.isLoading &&
93
+ pagination.onLoadMore) {
94
+ pagination.onLoadMore();
95
+ }
96
+ }, {
97
+ rootMargin: `${threshold}px`,
98
+ root: null,
99
+ });
100
+ observer.observe(lastRowRef.current);
101
+ return () => {
102
+ observer.disconnect();
103
+ };
104
+ }, [rows, pagination]);
105
+ const tablePaginationState = table.getState().pagination;
106
+ const paginationAPI = useMemo(() => {
107
+ if (!pagination) {
108
+ return null;
109
+ }
110
+ const pageCount = table.getPageCount();
111
+ const rowCount = pagination.mode === 'server'
112
+ ? pagination.totalRowCount || rows.length
113
+ : rows.length;
114
+ return {
115
+ pageIndex: tablePaginationState.pageIndex,
116
+ pageSize: tablePaginationState.pageSize,
117
+ pageCount,
118
+ rowCount,
119
+ firstPage: () => table.setPageIndex(0),
120
+ previousPage: () => table.previousPage(),
121
+ nextPage: () => table.nextPage(),
122
+ lastPage: () => table.setPageIndex(pageCount - 1),
123
+ setPageIndex: (index) => table.setPageIndex(index),
124
+ setPageSize: (size) => table.setPageSize(size),
125
+ canPreviousPage: table.getCanPreviousPage(),
126
+ canNextPage: table.getCanNextPage(),
127
+ isLoading: pagination.mode === 'infinite' ? pagination.isLoading : undefined,
128
+ hasMore: pagination.mode === 'infinite' ? pagination.hasMore : undefined,
129
+ };
130
+ }, [pagination, table, rows.length, tablePaginationState]);
131
+ const tableRows = table.getRowModel().rows;
132
+ const isInfiniteScroll = pagination?.mode === 'infinite';
133
+ return (React.createElement(React.Fragment, null,
134
+ React.createElement(NvTable, { ...htmlProps },
135
+ React.createElement("table", null,
136
+ React.createElement("thead", { "data-sticky-top": stickyHeader ? 'true' : undefined }, table.getHeaderGroups().map((headerGroup) => (React.createElement("tr", { key: headerGroup.id }, headerGroup.headers.map((header) => (React.createElement("th", { key: header.id, "data-testid": `datatable-header-${header.id}`, style: {
137
+ width: header.column.columnDef.size + 'px',
138
+ }, "data-no-resize": header.column.columnDef.enableResizing ? null : true }, header.isPlaceholder
139
+ ? null
140
+ : flexRender(header.column.columnDef.header, header.getContext())))))))),
141
+ React.createElement("tbody", null, tableRows.map((row, index) => {
142
+ const isLastRow = isInfiniteScroll && index === tableRows.length - 1;
143
+ return (React.createElement("tr", { key: row.id, "data-testid": `datatable-row-${row.id}`, ref: isLastRow ? lastRowRef : undefined }, row.getVisibleCells().map((cell) => (React.createElement("td", { key: cell.id, "data-testid": `datatable-cell-${cell.id}` }, flexRender(cell.column.columnDef.cell, cell.getContext()))))));
144
+ })))),
145
+ paginationAPI && renderPagination && renderPagination(paginationAPI)));
43
146
  };
44
147
  NvDatatable.displayName = 'NvDatatable';
45
148
  export { NvDatatable };
@@ -39,6 +39,7 @@ import { NvNotification as NvNotificationElement, defineCustomElement as defineN
39
39
  import { NvNotificationcontainer as NvNotificationcontainerElement, defineCustomElement as defineNvNotificationcontainer } from "@nova-design-system/nova-webcomponents/dist/components/nv-notificationcontainer.js";
40
40
  import { NvPopover as NvPopoverElement, defineCustomElement as defineNvPopover } from "@nova-design-system/nova-webcomponents/dist/components/nv-popover.js";
41
41
  import { NvRow as NvRowElement, defineCustomElement as defineNvRow } from "@nova-design-system/nova-webcomponents/dist/components/nv-row.js";
42
+ import { NvSplit as NvSplitElement, defineCustomElement as defineNvSplit } from "@nova-design-system/nova-webcomponents/dist/components/nv-split.js";
42
43
  import { NvStack as NvStackElement, defineCustomElement as defineNvStack } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
43
44
  import { NvTable as NvTableElement, defineCustomElement as defineNvTable } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
44
45
  import { NvToggle as NvToggleElement, defineCustomElement as defineNvToggle } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
@@ -355,6 +356,13 @@ export const NvRow = createComponent({
355
356
  events: {},
356
357
  defineCustomElement: defineNvRow
357
358
  });
359
+ export const NvSplit = createComponent({
360
+ tagName: 'nv-split',
361
+ elementClass: NvSplitElement,
362
+ react: React,
363
+ events: { onSizesChanged: 'sizesChanged' },
364
+ defineCustomElement: defineNvSplit
365
+ });
358
366
  export const NvStack = createComponent({
359
367
  tagName: 'nv-stack',
360
368
  elementClass: NvStackElement,
@@ -694,6 +694,15 @@ export const NvRow = createComponent({
694
694
  hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
695
695
  serializeShadowRoot
696
696
  });
697
+ export const NvSplit = createComponent({
698
+ tagName: 'nv-split',
699
+ properties: {
700
+ direction: 'direction',
701
+ gutterSize: 'gutter-size'
702
+ },
703
+ hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
704
+ serializeShadowRoot
705
+ });
697
706
  export const NvStack = createComponent({
698
707
  tagName: 'nv-stack',
699
708
  properties: {
@@ -1,13 +1,47 @@
1
1
  import React, { type ComponentProps } from 'react';
2
2
  declare const NvDatatable: {
3
- <T extends NvDatatableRow = NvDatatableRow>({ columns, rows, ...htmlProps }: NvDatatableProps<T>): React.JSX.Element;
3
+ <T extends NvDatatableRow = NvDatatableRow>({ columns, rows, pagination, renderPagination, stickyHeader, ...htmlProps }: NvDatatableProps<T>): React.JSX.Element;
4
4
  displayName: string;
5
5
  };
6
6
  export { NvDatatable };
7
7
  export type NvDatatableProps<T> = {
8
8
  columns: Array<NvDatatableColumn<T>>;
9
9
  rows: Array<T>;
10
+ pagination?: NvDatatablePaginationConfig;
11
+ renderPagination?: (api: NvDatatableRenderPaginationAPI) => React.ReactNode;
12
+ stickyHeader?: boolean;
10
13
  } & Pick<ComponentProps<'div'>, 'className' | 'style'>;
14
+ export interface NvDatatablePaginationConfig {
15
+ mode: 'client' | 'server' | 'infinite';
16
+ initialPageSize?: number;
17
+ pageSizeOptions?: number[];
18
+ totalRowCount?: number;
19
+ totalPageCount?: number;
20
+ onPaginationChange?: (state: {
21
+ pageIndex: number;
22
+ pageSize: number;
23
+ }) => void;
24
+ hasMore?: boolean;
25
+ isLoading?: boolean;
26
+ loadMoreThreshold?: number;
27
+ onLoadMore?: () => void;
28
+ }
29
+ export interface NvDatatableRenderPaginationAPI {
30
+ pageIndex: number;
31
+ pageSize: number;
32
+ pageCount: number;
33
+ rowCount: number;
34
+ firstPage: () => void;
35
+ previousPage: () => void;
36
+ nextPage: () => void;
37
+ lastPage: () => void;
38
+ setPageIndex: (index: number) => void;
39
+ setPageSize: (size: number) => void;
40
+ canPreviousPage: boolean;
41
+ canNextPage: boolean;
42
+ isLoading?: boolean;
43
+ hasMore?: boolean;
44
+ }
11
45
  export interface NvDatatableColumn<T> {
12
46
  field: keyof T;
13
47
  headerName?: string;
@@ -39,6 +39,7 @@ import { NvNotification as NvNotificationElement } from "@nova-design-system/nov
39
39
  import { NvNotificationcontainer as NvNotificationcontainerElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-notificationcontainer.js";
40
40
  import { NvPopover as NvPopoverElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-popover.js";
41
41
  import { NvRow as NvRowElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-row.js";
42
+ import { NvSplit as NvSplitElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-split.js";
42
43
  import { NvStack as NvStackElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
43
44
  import { NvTable as NvTableElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
44
45
  import { NvToggle as NvToggleElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
@@ -216,6 +217,10 @@ export type NvPopoverEvents = {
216
217
  export declare const NvPopover: StencilReactComponent<NvPopoverElement, NvPopoverEvents>;
217
218
  export type NvRowEvents = NonNullable<unknown>;
218
219
  export declare const NvRow: StencilReactComponent<NvRowElement, NvRowEvents>;
220
+ export type NvSplitEvents = {
221
+ onSizesChanged: EventName<CustomEvent<number[]>>;
222
+ };
223
+ export declare const NvSplit: StencilReactComponent<NvSplitElement, NvSplitEvents>;
219
224
  export type NvStackEvents = NonNullable<unknown>;
220
225
  export declare const NvStack: StencilReactComponent<NvStackElement, NvStackEvents>;
221
226
  export type NvTableEvents = NonNullable<unknown>;
@@ -39,6 +39,7 @@ import { NvNotification as NvNotificationElement } from "@nova-design-system/nov
39
39
  import { NvNotificationcontainer as NvNotificationcontainerElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-notificationcontainer.js";
40
40
  import { NvPopover as NvPopoverElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-popover.js";
41
41
  import { NvRow as NvRowElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-row.js";
42
+ import { NvSplit as NvSplitElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-split.js";
42
43
  import { NvStack as NvStackElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
43
44
  import { NvTable as NvTableElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
44
45
  import { NvToggle as NvToggleElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
@@ -218,6 +219,10 @@ export type NvPopoverEvents = {
218
219
  export declare const NvPopover: StencilReactComponent<NvPopoverElement, NvPopoverEvents>;
219
220
  export type NvRowEvents = NonNullable<unknown>;
220
221
  export declare const NvRow: StencilReactComponent<NvRowElement, NvRowEvents>;
222
+ export type NvSplitEvents = {
223
+ onSizesChanged: EventName<CustomEvent<number[]>>;
224
+ };
225
+ export declare const NvSplit: StencilReactComponent<NvSplitElement, NvSplitEvents>;
221
226
  export type NvStackEvents = NonNullable<unknown>;
222
227
  export declare const NvStack: StencilReactComponent<NvStackElement, NvStackEvents>;
223
228
  export type NvTableEvents = NonNullable<unknown>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nova-design-system/nova-react",
3
- "version": "3.16.0",
3
+ "version": "3.18.0-beta.0",
4
4
  "description": "Nova is a design system created by Elia Group to empower creators to efficiently build solutions that people love to use.",
5
5
  "author": "Elia Group",
6
6
  "homepage": "https://nova.eliagroup.io",
@@ -16,9 +16,16 @@
16
16
  "dist"
17
17
  ],
18
18
  "exports": {
19
- "import": "./dist/index.js",
20
- "require": "./dist/cjs/index.js",
21
- "types": "./dist/types/index.d.ts"
19
+ ".": {
20
+ "import": "./dist/index.js",
21
+ "require": "./dist/cjs/index.js",
22
+ "types": "./dist/types/index.d.ts",
23
+ "node": "./dist/generated/components.server.js"
24
+ },
25
+ "./server": {
26
+ "import": "./dist/generated/components.server.js",
27
+ "types": "./dist/types/generated/components.server.d.ts"
28
+ }
22
29
  },
23
30
  "publishConfig": {
24
31
  "registry": "https://registry.npmjs.org/",