@hyddenlabs/hydn-ui 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-display/data-grid/data-grid-cell.d.ts +37 -0
- package/dist/components/data-display/data-grid/data-grid-cell.d.ts.map +1 -0
- package/dist/components/data-display/data-grid/data-grid-cell.js +19 -0
- package/dist/components/data-display/data-grid/data-grid-cell.js.map +1 -0
- package/dist/components/data-display/data-grid/data-grid.d.ts +204 -0
- package/dist/components/data-display/data-grid/data-grid.d.ts.map +1 -0
- package/dist/components/data-display/data-grid/data-grid.js +566 -0
- package/dist/components/data-display/data-grid/data-grid.js.map +1 -0
- package/dist/components/data-display/data-grid/index.d.ts +5 -0
- package/dist/components/data-display/data-grid/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/navigation/dropdown/dropdown.d.ts +8 -2
- package/dist/components/navigation/dropdown/dropdown.d.ts.map +1 -1
- package/dist/components/navigation/dropdown/dropdown.js +18 -4
- package/dist/components/navigation/dropdown/dropdown.js.map +1 -1
- package/dist/components/navigation/navbar/navbar.d.ts.map +1 -1
- package/dist/components/navigation/navbar/navbar.js +1 -2
- package/dist/components/navigation/navbar/navbar.js.map +1 -1
- package/dist/index.js +154 -150
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/size-tokens.d.ts +3 -3
- package/dist/theme/size-tokens.js +3 -3
- package/dist/theme/size-tokens.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type DataGridCellProps = {
|
|
3
|
+
/** Cell content - can be single element or multiple elements that stack vertically */
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Additional CSS classes to apply */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Text alignment for the cell content */
|
|
8
|
+
align?: 'left' | 'center' | 'right';
|
|
9
|
+
/** Truncate text content with ellipsis when it overflows (default: true) */
|
|
10
|
+
truncate?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* DataGridCell - Cell wrapper for DataGrid render props
|
|
14
|
+
*
|
|
15
|
+
* Vertically centers content and stacks multiple children vertically.
|
|
16
|
+
* Truncates with ellipsis by default to prevent awkward cutoffs.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* // Default truncation
|
|
21
|
+
* render: (value, row) => (
|
|
22
|
+
* <DataGridCell>
|
|
23
|
+
* <Text weight="medium">{row.name}</Text>
|
|
24
|
+
* <Text size="sm" variant="muted">{row.email}</Text>
|
|
25
|
+
* </DataGridCell>
|
|
26
|
+
* )
|
|
27
|
+
*
|
|
28
|
+
* // Disable truncation (allows wrapping or cutoff)
|
|
29
|
+
* render: (value) => <DataGridCell truncate={false}>{value}</DataGridCell>
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
declare function DataGridCell({ children, className, align, truncate }: Readonly<DataGridCellProps>): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
declare namespace DataGridCell {
|
|
34
|
+
var displayName: string;
|
|
35
|
+
}
|
|
36
|
+
export default DataGridCell;
|
|
37
|
+
//# sourceMappingURL=data-grid-cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-cell.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/data-grid/data-grid-cell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sFAAsF;IACtF,QAAQ,EAAE,SAAS,CAAC;IACpB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAQF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAc,EAAE,KAAc,EAAE,QAAe,EAAE,EAAE,QAAQ,CAAC,iBAAiB,CAAC,2CAiB/G;kBAjBQ,YAAY;;;AAqBrB,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Children } from "react";
|
|
3
|
+
const alignClasses = {
|
|
4
|
+
left: "items-start text-left",
|
|
5
|
+
center: "items-center text-center",
|
|
6
|
+
right: "items-end text-right"
|
|
7
|
+
};
|
|
8
|
+
function DataGridCell({ children, className = "", align = "left", truncate = true }) {
|
|
9
|
+
if (truncate) {
|
|
10
|
+
const childArray = Children.toArray(children);
|
|
11
|
+
return /* @__PURE__ */ jsx("div", { className: `flex flex-col gap-0.5 min-w-0 overflow-hidden ${alignClasses[align]} ${className}`, children: childArray.map((child, i) => /* @__PURE__ */ jsx("div", { className: "truncate min-w-0", children: child }, i)) });
|
|
12
|
+
}
|
|
13
|
+
return /* @__PURE__ */ jsx("div", { className: `flex flex-col gap-0.5 min-w-0 ${alignClasses[align]} ${className}`, children });
|
|
14
|
+
}
|
|
15
|
+
DataGridCell.displayName = "DataGridCell";
|
|
16
|
+
export {
|
|
17
|
+
DataGridCell as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data-grid-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-cell.js","sources":["../../../../src/components/data-display/data-grid/data-grid-cell.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nexport type DataGridCellProps = {\n /** Cell content - can be single element or multiple elements that stack vertically */\n children: ReactNode;\n /** Additional CSS classes to apply */\n className?: string;\n /** Text alignment for the cell content */\n align?: 'left' | 'center' | 'right';\n /** Truncate text content with ellipsis when it overflows (default: true) */\n truncate?: boolean;\n};\n\nconst alignClasses = {\n left: 'items-start text-left',\n center: 'items-center text-center',\n right: 'items-end text-right'\n};\n\n/**\n * DataGridCell - Cell wrapper for DataGrid render props\n *\n * Vertically centers content and stacks multiple children vertically.\n * Truncates with ellipsis by default to prevent awkward cutoffs.\n *\n * @example\n * ```tsx\n * // Default truncation\n * render: (value, row) => (\n * <DataGridCell>\n * <Text weight=\"medium\">{row.name}</Text>\n * <Text size=\"sm\" variant=\"muted\">{row.email}</Text>\n * </DataGridCell>\n * )\n *\n * // Disable truncation (allows wrapping or cutoff)\n * render: (value) => <DataGridCell truncate={false}>{value}</DataGridCell>\n * ```\n */\nfunction DataGridCell({ children, className = '', align = 'left', truncate = true }: Readonly<DataGridCellProps>) {\n if (truncate) {\n // When truncating, wrap each child in a div to ensure ellipsis works\n // (text nodes don't truncate properly in flex containers)\n const childArray = Children.toArray(children);\n return (\n <div className={`flex flex-col gap-0.5 min-w-0 overflow-hidden ${alignClasses[align]} ${className}`}>\n {childArray.map((child, i) => (\n <div key={i} className=\"truncate min-w-0\">\n {child}\n </div>\n ))}\n </div>\n );\n }\n\n return <div className={`flex flex-col gap-0.5 min-w-0 ${alignClasses[align]} ${className}`}>{children}</div>;\n}\n\nDataGridCell.displayName = 'DataGridCell';\n\nexport default DataGridCell;\n"],"names":[],"mappings":";;AAaA,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAsBA,SAAS,aAAa,EAAE,UAAU,YAAY,IAAI,QAAQ,QAAQ,WAAW,QAAqC;AAChH,MAAI,UAAU;AAGZ,UAAM,aAAa,SAAS,QAAQ,QAAQ;AAC5C,WACE,oBAAC,SAAI,WAAW,iDAAiD,aAAa,KAAK,CAAC,IAAI,SAAS,IAC9F,UAAA,WAAW,IAAI,CAAC,OAAO,MACtB,oBAAC,OAAA,EAAY,WAAU,oBACpB,UAAA,MAAA,GADO,CAEV,CACD,EAAA,CACH;AAAA,EAEJ;AAEA,SAAO,oBAAC,OAAA,EAAI,WAAW,iCAAiC,aAAa,KAAK,CAAC,IAAI,SAAS,IAAK,SAAA,CAAS;AACxG;AAEA,aAAa,cAAc;"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ButtonProps } from '../../forms/button/button';
|
|
3
|
+
import { Size } from '../../../theme/size-tokens';
|
|
4
|
+
import { ColorVariant } from '../../../theme/tokens';
|
|
5
|
+
export type DataGridAction<T> = {
|
|
6
|
+
/** Icon name for the action button */
|
|
7
|
+
icon: string;
|
|
8
|
+
/** Size of the icon */
|
|
9
|
+
iconSize?: Size;
|
|
10
|
+
/** Color variant for the icon */
|
|
11
|
+
iconColor?: ColorVariant;
|
|
12
|
+
/** Icon to display on hover (optional) */
|
|
13
|
+
hoverIcon?: string;
|
|
14
|
+
/** Accessible label for the action (shown in tooltip or screen readers) */
|
|
15
|
+
label: string;
|
|
16
|
+
/** Tooltip text to display on hover. If not provided, label will be used for aria-label only. */
|
|
17
|
+
tooltip?: string;
|
|
18
|
+
/** Callback when the action is clicked */
|
|
19
|
+
onClick: (row: T, index: number) => void;
|
|
20
|
+
/** Visual variant for the action button */
|
|
21
|
+
variant?: 'primary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error' | 'info';
|
|
22
|
+
};
|
|
23
|
+
export type DataGridActionItem<T> = DataGridAction<T> | ReactNode;
|
|
24
|
+
export type DataGridColumnDef<T> = {
|
|
25
|
+
/** Key of the data property to display in this column */
|
|
26
|
+
key: keyof T;
|
|
27
|
+
/** Column header label */
|
|
28
|
+
label: string;
|
|
29
|
+
/** Whether this column can be sorted */
|
|
30
|
+
sortable?: boolean;
|
|
31
|
+
/** CSS width class or value for the column (e.g., 'w-48', '200px', 'flex-1') */
|
|
32
|
+
width?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Minimum width in pixels for the column. When set:
|
|
35
|
+
* - Column truncates but never shrinks below this width
|
|
36
|
+
* - Column auto-hides if container can't fit it at this width
|
|
37
|
+
* - No need to also set hidePriority (though you can for explicit hide ordering)
|
|
38
|
+
*
|
|
39
|
+
* @example minWidth: 120 // Hide if email would be squished below 120px
|
|
40
|
+
*/
|
|
41
|
+
minWidth?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum width in pixels for the column. Prevents column from growing too wide.
|
|
44
|
+
* Use for columns like status/role that don't need much space.
|
|
45
|
+
*
|
|
46
|
+
* @example maxWidth: 100 // Cap role column at 100px
|
|
47
|
+
*/
|
|
48
|
+
maxWidth?: number;
|
|
49
|
+
/** Text alignment for cells in this column */
|
|
50
|
+
align?: 'left' | 'center' | 'right';
|
|
51
|
+
/** Whether text should wrap instead of truncating (useful for long strings) */
|
|
52
|
+
wrapText?: boolean;
|
|
53
|
+
/** Optional priority for responsive hiding. Lower values hide first when container width shrinks. Columns without hidePriority or minWidth are never hidden. */
|
|
54
|
+
hidePriority?: number;
|
|
55
|
+
/** Whether to show this column's label in mobile/vertical layout (default: true) */
|
|
56
|
+
showLabelOnMobile?: boolean;
|
|
57
|
+
/** Custom render function for cell content (use as escape hatch when config options don't cover your use case) */
|
|
58
|
+
render?: (value: T[keyof T], row: T, index: number) => ReactNode;
|
|
59
|
+
/** Pre-built formatter for common data types */
|
|
60
|
+
format?: 'date' | 'currency' | 'number' | 'percent';
|
|
61
|
+
/** Options for Intl formatters (NumberFormat or DateTimeFormat) */
|
|
62
|
+
formatOptions?: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions;
|
|
63
|
+
/** Map values to badge variants. Unmatched values render with 'neutral' variant. Use '*' key to override the default fallback. */
|
|
64
|
+
badgeMap?: {
|
|
65
|
+
[key: string]: {
|
|
66
|
+
variant?: ColorVariant;
|
|
67
|
+
label?: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/** Map values to status dot colors. Renders text with a colored dot to the left. Lighter alternative to badges for status indicators. */
|
|
71
|
+
statusDotMap?: {
|
|
72
|
+
[key: string]: {
|
|
73
|
+
color?: ColorVariant;
|
|
74
|
+
label?: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Render cell values as badges. When the value is an array, each item is rendered
|
|
79
|
+
* as an individual badge; for scalar values, the value is wrapped in a single badge.
|
|
80
|
+
*/
|
|
81
|
+
renderAsBadges?: boolean;
|
|
82
|
+
/** Variant for badge rendering */
|
|
83
|
+
badgeVariant?: ColorVariant;
|
|
84
|
+
/** Size for badge rendering */
|
|
85
|
+
componentSize?: 'sm' | 'md' | 'lg';
|
|
86
|
+
/** Fallback value to display when cell value is null, undefined, or empty string */
|
|
87
|
+
fallback?: string;
|
|
88
|
+
};
|
|
89
|
+
export type DataGridProps<T> = {
|
|
90
|
+
/** Array of data objects to display in the grid */
|
|
91
|
+
data: T[];
|
|
92
|
+
/** Column definitions specifying how to render each column */
|
|
93
|
+
columns: DataGridColumnDef<T>[];
|
|
94
|
+
/** Additional CSS classes to apply */
|
|
95
|
+
className?: string;
|
|
96
|
+
/** Whether to apply striped row styling (alternating background) */
|
|
97
|
+
striped?: boolean;
|
|
98
|
+
/** Whether rows have hover effects */
|
|
99
|
+
hoverable?: boolean;
|
|
100
|
+
/** Whether to use compact spacing for dense data */
|
|
101
|
+
compact?: boolean;
|
|
102
|
+
/** Whether columns can be sorted (can be overridden per column) */
|
|
103
|
+
sortable?: boolean;
|
|
104
|
+
/** Whether to enable client-side pagination */
|
|
105
|
+
paginated?: boolean;
|
|
106
|
+
/** Number of rows per page when pagination is enabled */
|
|
107
|
+
pageSize?: number;
|
|
108
|
+
/** Whether to show checkboxes for row selection */
|
|
109
|
+
selectable?: boolean;
|
|
110
|
+
/** Whether to enable search/filter functionality */
|
|
111
|
+
searchable?: boolean;
|
|
112
|
+
/** Specific keys to search within. If not provided, searches all fields. */
|
|
113
|
+
searchKeys?: (keyof T)[];
|
|
114
|
+
/** Placeholder text for the search input */
|
|
115
|
+
searchPlaceholder?: string;
|
|
116
|
+
/** Callback when search query changes */
|
|
117
|
+
onSearchChange?: (query: string) => void;
|
|
118
|
+
/** Action buttons, function returning actions based on row data, or custom render function for the actions column */
|
|
119
|
+
actions?: DataGridActionItem<T>[] | ((row: T, index: number) => DataGridActionItem<T>[] | ReactNode);
|
|
120
|
+
/** Label for the actions column header */
|
|
121
|
+
actionsLabel?: string;
|
|
122
|
+
/** Function returning href for row navigation. When provided, entire row becomes a link. */
|
|
123
|
+
rowHref?: (row: T, index: number) => string | undefined;
|
|
124
|
+
/** Callback when a row is clicked (if rowHref not provided) */
|
|
125
|
+
onRowClick?: (row: T, index: number) => void;
|
|
126
|
+
/** Callback when row selection changes (provides array of selected row indices) */
|
|
127
|
+
onSelectionChange?: (selectedIndices: number[]) => void;
|
|
128
|
+
emptyState?: {
|
|
129
|
+
/** Message to display when there is no data */
|
|
130
|
+
title?: string;
|
|
131
|
+
/** Description to display when there is no data */
|
|
132
|
+
description?: string;
|
|
133
|
+
/** Text for the button in the empty state */
|
|
134
|
+
buttonText?: string;
|
|
135
|
+
/** Click handler for the button in the empty state */
|
|
136
|
+
onButtonClick?: () => void;
|
|
137
|
+
};
|
|
138
|
+
/** Initial sort configuration */
|
|
139
|
+
initialSort?: {
|
|
140
|
+
key: keyof T;
|
|
141
|
+
direction: 'asc' | 'desc';
|
|
142
|
+
};
|
|
143
|
+
/** Title displayed above the grid (left side of header) */
|
|
144
|
+
title?: string;
|
|
145
|
+
/** Header actions displayed above the grid (right side of header). */
|
|
146
|
+
headerActions?: HeaderAction[];
|
|
147
|
+
};
|
|
148
|
+
export type HeaderAction = {
|
|
149
|
+
/** Button text; if omitted and `icon` provided, button will be icon-only */
|
|
150
|
+
label?: string;
|
|
151
|
+
/** Icon name to render inside the button (maps to library `Icon`) */
|
|
152
|
+
icon?: string;
|
|
153
|
+
/** Accessible label for screen readers. Required for icon-only buttons (when label is omitted). */
|
|
154
|
+
ariaLabel?: string;
|
|
155
|
+
/** Click handler invoked when the button is clicked */
|
|
156
|
+
onClick?: () => void;
|
|
157
|
+
/** Button variant (maps to Button `variant` prop) */
|
|
158
|
+
variant?: ButtonProps['variant'];
|
|
159
|
+
/** Button style (maps to Button `style` prop) */
|
|
160
|
+
style?: ButtonProps['style'];
|
|
161
|
+
/** Button size (maps to Button `size` prop) */
|
|
162
|
+
size?: ButtonProps['size'];
|
|
163
|
+
/** Additional className forwarded to the Button */
|
|
164
|
+
className?: string;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* DataGrid - Responsive data display component with Vercel-style layout
|
|
168
|
+
*
|
|
169
|
+
* Features:
|
|
170
|
+
* - Generic typed data and columns (same API as DataTable)
|
|
171
|
+
* - Responsive layout: horizontal rows on desktop, vertical card-like on mobile
|
|
172
|
+
* - Clickable rows via rowHref with interactive elements taking priority
|
|
173
|
+
* - Client-side sorting, pagination, selection, and search
|
|
174
|
+
* - Custom cell rendering with DataGridCell for multi-element stacking
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```tsx
|
|
178
|
+
* <DataGrid
|
|
179
|
+
* data={deployments}
|
|
180
|
+
* columns={[
|
|
181
|
+
* {
|
|
182
|
+
* key: 'name',
|
|
183
|
+
* label: 'Deployment',
|
|
184
|
+
* render: (value, row) => (
|
|
185
|
+
* <DataGridCell>
|
|
186
|
+
* <Text weight="medium">{row.name}</Text>
|
|
187
|
+
* <Text size="sm" variant="muted">{row.url}</Text>
|
|
188
|
+
* </DataGridCell>
|
|
189
|
+
* )
|
|
190
|
+
* },
|
|
191
|
+
* { key: 'status', label: 'Status', badgeMap: { ready: { variant: 'success' } } },
|
|
192
|
+
* { key: 'createdAt', label: 'Created', format: 'date' }
|
|
193
|
+
* ]}
|
|
194
|
+
* rowHref={(row) => `/deployments/${row.id}`}
|
|
195
|
+
* hoverable
|
|
196
|
+
* />
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
declare function DataGrid<T>({ data, columns, className, striped, hoverable, compact, sortable, paginated, pageSize, selectable, searchable, searchKeys, searchPlaceholder, onSearchChange, actions, actionsLabel, rowHref, onRowClick, onSelectionChange, emptyState, headerActions, title, initialSort }: DataGridProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
200
|
+
declare namespace DataGrid {
|
|
201
|
+
var displayName: string;
|
|
202
|
+
}
|
|
203
|
+
export default DataGrid;
|
|
204
|
+
//# sourceMappingURL=data-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/data-grid/data-grid.tsx"],"names":[],"mappings":"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"}
|