@bfrs/agentic-components 0.3.4 → 0.3.6
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/BFRS_AGENTIC_COMPONENTS.md +111 -2
- package/README.md +113 -1
- package/dist/components/data-display/DataTable/DataTable.d.ts +1 -1
- package/dist/components/data-display/DataTable/DataTable.types.d.ts +11 -2
- package/dist/components/data-display/DataTable/TablePagination.d.ts +1 -1
- package/dist/components/primitives/Input/Input.d.ts +1 -1
- package/dist/components/primitives/Input/Input.types.d.ts +1 -1
- package/dist/components/ui/feedback/Alert/Alert.d.ts +2 -2
- package/dist/custom-elements.d.ts +224 -0
- package/dist/custom-elements.js +10530 -9603
- package/dist/custom-elements.js.map +1 -1
- package/dist/index.js +2909 -2908
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +2 -2
|
@@ -115,11 +115,54 @@ Use native Angular DOM event bindings for interactions. Do not pass React-style
|
|
|
115
115
|
<bfrs-paper (click)="openDetails()">Open details</bfrs-paper>
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
Registered tags cover the documented component surface
|
|
118
|
+
Registered tags cover the documented component surface, including
|
|
119
|
+
`bfrs-button-group`, `bfrs-toast-provider`, `bfrs-table-toolbar`,
|
|
120
|
+
`bfrs-table-empty-state`, `bfrs-table-error-state`, `bfrs-table-skeleton`,
|
|
121
|
+
`bfrs-table-row-actions`, `bfrs-table-bulk-actions`, and
|
|
122
|
+
`bfrs-table-column-visibility` in addition to the existing component tags.
|
|
123
|
+
Existing form and pattern tags include `bfrs-date-range-picker`,
|
|
124
|
+
`bfrs-multi-select`, `bfrs-step-progress-card`, `bfrs-data-table`,
|
|
125
|
+
`bfrs-modal`, `bfrs-tabs`, and the rest of the documented `bfrs-*` surface.
|
|
126
|
+
|
|
127
|
+
ReactNode-based composition is exposed through native named slots. Angular
|
|
128
|
+
components placed in these slots remain live across the Shadow DOM boundary:
|
|
129
|
+
|
|
130
|
+
```html
|
|
131
|
+
<bfrs-page-header title="Orders">
|
|
132
|
+
<bfrs-breadcrumbs slot="breadcrumb" [props]="{ items: breadcrumbs }"></bfrs-breadcrumbs>
|
|
133
|
+
<bfrs-button slot="secondary-actions" variant="outline">Export</bfrs-button>
|
|
134
|
+
<bfrs-button slot="actions">Create order</bfrs-button>
|
|
135
|
+
</bfrs-page-header>
|
|
136
|
+
|
|
137
|
+
<bfrs-modal title="Edit order" [attr.open]="open || null">
|
|
138
|
+
<app-order-form></app-order-form>
|
|
139
|
+
<app-modal-actions slot="footer"></app-modal-actions>
|
|
140
|
+
</bfrs-modal>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Supported composition slots include `left-icon`, `right-icon`, `label`,
|
|
144
|
+
`helper-text`, `error-message`, `prefix`, `suffix`, `trigger`, `title`,
|
|
145
|
+
`description`, `footer`, `actions`, `primary-action`, `secondary-actions`,
|
|
146
|
+
`search-input`, `filter-trigger`, `breadcrumb`, `header`, `sidebar`, `brand`,
|
|
147
|
+
`tabs`, `search`, `icon`, `empty-state`, `error`, and `row-actions-header`.
|
|
148
|
+
|
|
149
|
+
`bfrs-tabs` uses item-specific slots named `tab-{value}-label`,
|
|
150
|
+
`tab-{value}-badge`, and `tab-{value}-content`. Menu and navigation item
|
|
151
|
+
schemas additionally accept `iconName`, `iconSlot`, `labelSlot`, `badgeSlot`,
|
|
152
|
+
and related slot-name fields.
|
|
153
|
+
|
|
154
|
+
The React compound tabs API is available as `bfrs-tabs-list`,
|
|
155
|
+
`bfrs-tabs-trigger`, and `bfrs-tabs-content`. The parent `bfrs-tabs` coordinates
|
|
156
|
+
their selected state and emits `value-change`.
|
|
157
|
+
|
|
158
|
+
Mount `bfrs-toast-provider` once when Angular needs the equivalent of
|
|
159
|
+
`ToastProvider` and `useToast`. The element exposes `toast()`, `success()`,
|
|
160
|
+
`warning()`, `danger()`, `info()`, `dismiss()`, and `clear()` methods, and emits
|
|
161
|
+
`toast-change`, `toast-action`, `dismiss`, and `clear`.
|
|
119
162
|
|
|
120
163
|
Use attributes for simple props: `variant`, `size`, `tone`, `label`, `loading`, `disabled`, `required`, `error-message`, `error-text`, `helper-text`, `prefix`, `suffix`, `min`, `max`, `step`, and `value`. Use `[props]` or the `props` JSON attribute for structured props like `options`, palette arrays, `items`, `columns`, `data`, `sections`, `steps`, and `toasts`.
|
|
121
164
|
|
|
122
|
-
Common component events: `(value-change)`, `(checked-change)`, `(open-change)`, `(reveal-change)`, `(copy)`, `(copy-error)`, `(close)`, `(confirm)`, `(cancel)`, `(cell-action)`, `(row-click)`, `(sort-change)`, `(page-change)`, `(page-size-change)`, `(action-select)`, `(dropdown-select)`, `(date-range-change)`, `(search-change)`, `(open-filters)`, `(apply)`, `(reset)`, and `(submit)`. Payloads are available on `$event.detail`.
|
|
165
|
+
Common component events: `(value-change)`, `(checked-change)`, `(open-change)`, `(reveal-change)`, `(copy)`, `(copy-error)`, `(close)`, `(confirm)`, `(cancel)`, `(cell-action)`, `(cell-event)`, `(row-click)`, `(sort-change)`, `(page-change)`, `(page-size-change)`, `(action-select)`, `(dropdown-select)`, `(date-range-change)`, `(search-change)`, `(open-filters)`, `(apply)`, `(reset)`, and `(submit)`. Payloads are available on `$event.detail`.
|
|
123
166
|
|
|
124
167
|
For validated forms, keep client validation, API validation, and submit side effects in the consuming app. In React, pass field errors through `FormField errorText` and set `Input error`. In Angular, use `bfrs-input` with `[attr.error]` and `[attr.error-message]`, listen to `(value-change)`, and manage success/failure notifications with `bfrs-toast-manager`.
|
|
125
168
|
|
|
@@ -1318,6 +1361,72 @@ Custom-element DataTable action cells must be declarative because Angular/HTML c
|
|
|
1318
1361
|
</bfrs-data-table>
|
|
1319
1362
|
```
|
|
1320
1363
|
|
|
1364
|
+
Angular/HTML consumers can also render framework-neutral rich cells with
|
|
1365
|
+
`cellType: "text" | "chip" | "chips" | "badge" | "badges" | "image" |
|
|
1366
|
+
"avatar" | "link" | "custom-element"`. Configure them through the serializable
|
|
1367
|
+
`cellConfig` object:
|
|
1368
|
+
|
|
1369
|
+
```ts
|
|
1370
|
+
columns = [
|
|
1371
|
+
{
|
|
1372
|
+
id: "status",
|
|
1373
|
+
header: "Status",
|
|
1374
|
+
accessorKey: "status",
|
|
1375
|
+
cellType: "chip",
|
|
1376
|
+
cellConfig: {
|
|
1377
|
+
caption: "Current status",
|
|
1378
|
+
labelKey: "status",
|
|
1379
|
+
toneKey: "statusTone"
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
id: "tags",
|
|
1384
|
+
header: "Tags",
|
|
1385
|
+
cellType: "chips",
|
|
1386
|
+
cellConfig: {
|
|
1387
|
+
itemsKey: "tags",
|
|
1388
|
+
itemLabelKey: "label",
|
|
1389
|
+
itemToneKey: "tone"
|
|
1390
|
+
}
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
id: "channel",
|
|
1394
|
+
header: "Channel",
|
|
1395
|
+
cellType: "image",
|
|
1396
|
+
cellConfig: {
|
|
1397
|
+
srcKey: "channel.logo",
|
|
1398
|
+
altKey: "channel.name",
|
|
1399
|
+
width: 32,
|
|
1400
|
+
height: 32
|
|
1401
|
+
}
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
id: "customer",
|
|
1405
|
+
header: "Customer",
|
|
1406
|
+
cellType: "custom-element",
|
|
1407
|
+
cellConfig: {
|
|
1408
|
+
tagName: "customer-summary",
|
|
1409
|
+
attributeMap: {
|
|
1410
|
+
name: "customer.name",
|
|
1411
|
+
email: "customer.email"
|
|
1412
|
+
},
|
|
1413
|
+
propertyMap: {
|
|
1414
|
+
customerId: "customer.id"
|
|
1415
|
+
},
|
|
1416
|
+
events: ["open", "change"]
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
];
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
`caption`/`captionKey` adds a small label above any rich cell. Key fields
|
|
1423
|
+
support dot-separated row paths. For custom elements, register the hyphenated
|
|
1424
|
+
tag before the table renders. `attributeMap` sets scalar attributes,
|
|
1425
|
+
`propertyMap` assigns JavaScript properties, and `rowProperty` can pass the
|
|
1426
|
+
complete row when the nested custom element explicitly supports it. Raw HTML is
|
|
1427
|
+
not rendered. Listed custom-element events are re-emitted as `cell-event` with
|
|
1428
|
+
`{ eventName, detail, columnId, row, rowId, rowIndex }`.
|
|
1429
|
+
|
|
1321
1430
|
---
|
|
1322
1431
|
|
|
1323
1432
|
### Navigation
|
package/README.md
CHANGED
|
@@ -150,7 +150,119 @@ orderColumns = [
|
|
|
150
150
|
];
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
Rich Angular/HTML cells use the same serializable column approach. Supported
|
|
154
|
+
`cellType` values are `text`, `chip`, `chips`, `badge`, `badges`, `image`,
|
|
155
|
+
`avatar`, `link`, `custom-element`, `button`, `buttons`, and `actions`.
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
orderColumns = [
|
|
159
|
+
{
|
|
160
|
+
id: "status",
|
|
161
|
+
header: "Status",
|
|
162
|
+
accessorKey: "status",
|
|
163
|
+
cellType: "chip",
|
|
164
|
+
cellConfig: { caption: "Current status", labelKey: "status", toneKey: "statusTone" }
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: "channel",
|
|
168
|
+
header: "Channel",
|
|
169
|
+
cellType: "image",
|
|
170
|
+
cellConfig: { srcKey: "channelLogo", altKey: "channelName", width: 32, height: 32 }
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
id: "customer",
|
|
174
|
+
header: "Customer",
|
|
175
|
+
cellType: "custom-element",
|
|
176
|
+
cellConfig: {
|
|
177
|
+
tagName: "customer-summary",
|
|
178
|
+
attributeMap: { name: "customer.name", email: "customer.email" },
|
|
179
|
+
events: ["open"]
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
];
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Registered custom-element events are re-emitted by `bfrs-data-table` as
|
|
186
|
+
`cell-event` with `{ eventName, detail, columnId, row, rowId, rowIndex }`.
|
|
187
|
+
|
|
188
|
+
ReactNode props are exposed to Angular as native named slots. Slotted Angular
|
|
189
|
+
components remain live; they are not converted to static HTML:
|
|
190
|
+
|
|
191
|
+
```html
|
|
192
|
+
<bfrs-page-header title="Orders">
|
|
193
|
+
<bfrs-breadcrumbs slot="breadcrumb" [props]="{ items: breadcrumbs }"></bfrs-breadcrumbs>
|
|
194
|
+
<bfrs-button slot="secondary-actions" variant="outline">Export</bfrs-button>
|
|
195
|
+
<bfrs-button slot="actions">Create order</bfrs-button>
|
|
196
|
+
</bfrs-page-header>
|
|
197
|
+
|
|
198
|
+
<bfrs-workspace-header toggle (toggle-sidebar)="toggleSidebar()">
|
|
199
|
+
<app-brand slot="brand"></app-brand>
|
|
200
|
+
<app-workspace-tabs slot="tabs"></app-workspace-tabs>
|
|
201
|
+
<app-global-search slot="search"></app-global-search>
|
|
202
|
+
<app-user-actions slot="actions"></app-user-actions>
|
|
203
|
+
</bfrs-workspace-header>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Common named slots include `left-icon`, `right-icon`, `label`, `helper-text`,
|
|
207
|
+
`error-message`, `trigger`, `title`, `description`, `footer`, `actions`,
|
|
208
|
+
`primary-action`, `secondary-actions`, `search-input`, `filter-trigger`,
|
|
209
|
+
`breadcrumb`, `header`, `sidebar`, `brand`, `tabs`, `search`, `icon`,
|
|
210
|
+
`empty-state`, `error`, and `row-actions-header`.
|
|
211
|
+
|
|
212
|
+
Tabs accept serializable items and live slots using the convention
|
|
213
|
+
`tab-{value}-label`, `tab-{value}-badge`, and `tab-{value}-content`:
|
|
214
|
+
|
|
215
|
+
```html
|
|
216
|
+
<bfrs-tabs [props]="{ items: [{ value: 'open', label: 'Open' }, { value: 'closed', label: 'Closed' }] }">
|
|
217
|
+
<bfrs-badge slot="tab-open-badge" count="4"></bfrs-badge>
|
|
218
|
+
<app-open-orders slot="tab-open-content"></app-open-orders>
|
|
219
|
+
<app-closed-orders slot="tab-closed-content"></app-closed-orders>
|
|
220
|
+
</bfrs-tabs>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Angular can also use the compound API directly:
|
|
224
|
+
|
|
225
|
+
```html
|
|
226
|
+
<bfrs-tabs value="open" (value-change)="activeTab = $event.detail.value">
|
|
227
|
+
<bfrs-tabs-list>
|
|
228
|
+
<bfrs-tabs-trigger value="open">Open <bfrs-badge slot="badge" count="4"></bfrs-badge></bfrs-tabs-trigger>
|
|
229
|
+
<bfrs-tabs-trigger value="closed">Closed</bfrs-tabs-trigger>
|
|
230
|
+
</bfrs-tabs-list>
|
|
231
|
+
<bfrs-tabs-content value="open"><app-open-orders></app-open-orders></bfrs-tabs-content>
|
|
232
|
+
<bfrs-tabs-content value="closed"><app-closed-orders></app-closed-orders></bfrs-tabs-content>
|
|
233
|
+
</bfrs-tabs>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
For imperative notifications, mount one provider and call its public methods
|
|
237
|
+
through `ViewChild`:
|
|
238
|
+
|
|
239
|
+
```html
|
|
240
|
+
<bfrs-toast-provider #toasts placement="bottom-center"
|
|
241
|
+
(toast-action)="handleToastAction($event.detail)">
|
|
242
|
+
</bfrs-toast-provider>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
@ViewChild("toasts") toasts!: ElementRef<HTMLElement & {
|
|
247
|
+
success(input: string | { title: string; description?: string }): string;
|
|
248
|
+
danger(input: string | { title: string; description?: string }): string;
|
|
249
|
+
dismiss(id: string): void;
|
|
250
|
+
clear(): void;
|
|
251
|
+
}>;
|
|
252
|
+
|
|
253
|
+
save() {
|
|
254
|
+
this.toasts.nativeElement.success("Order saved");
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
DataTable also accepts declarative `leadingColumn`, `rowActions`,
|
|
259
|
+
`rowClassRules`, `rowIdKey`, `accessorPath`, and `sortValueKey` configuration.
|
|
260
|
+
The standalone helpers are available as `bfrs-table-toolbar`,
|
|
261
|
+
`bfrs-table-empty-state`, `bfrs-table-error-state`, `bfrs-table-skeleton`,
|
|
262
|
+
`bfrs-table-row-actions`, `bfrs-table-bulk-actions`, and
|
|
263
|
+
`bfrs-table-column-visibility`.
|
|
264
|
+
|
|
265
|
+
Registered tags include `bfrs-box`, `bfrs-container`, `bfrs-paper`, `bfrs-stack`, `bfrs-grid`, `bfrs-text`, `bfrs-icon`, `bfrs-button`, `bfrs-button-group`, `bfrs-icon-button`, `bfrs-form-field`, `bfrs-label`, `bfrs-input`, `bfrs-slider`, `bfrs-color-picker`, `bfrs-color-swatch-group`, `bfrs-textarea`, `bfrs-select`, `bfrs-date-range-picker`, `bfrs-searchable-select`, `bfrs-multi-select`, `bfrs-suggest-input`, `bfrs-option-card-group`, `bfrs-selectable-chip-group`, `bfrs-number-stepper`, `bfrs-file-dropzone`, `bfrs-reveal-field`, `bfrs-checkbox`, `bfrs-radio`, `bfrs-switch`, `bfrs-badge`, `bfrs-chip`, `bfrs-alert`, `bfrs-info-card`, `bfrs-tip`, `bfrs-toast-manager`, `bfrs-toast-provider`, `bfrs-spinner`, `bfrs-skeleton`, `bfrs-empty-state`, `bfrs-error-state`, `bfrs-loading-state`, `bfrs-modal`, `bfrs-drawer`, `bfrs-confirm-dialog`, `bfrs-dropdown`, `bfrs-tooltip`, `bfrs-popover`, `bfrs-avatar`, `bfrs-metric-card`, `bfrs-table-pagination`, `bfrs-table-toolbar`, `bfrs-table-empty-state`, `bfrs-table-error-state`, `bfrs-table-skeleton`, `bfrs-table-row-actions`, `bfrs-table-bulk-actions`, `bfrs-table-column-visibility`, `bfrs-data-table`, `bfrs-tabs`, `bfrs-tabs-list`, `bfrs-tabs-trigger`, `bfrs-tabs-content`, `bfrs-breadcrumbs`, `bfrs-action-menu`, `bfrs-page-header`, `bfrs-section-header`, `bfrs-layout-shell`, `bfrs-form-section`, `bfrs-filter-bar`, `bfrs-filter-drawer`, `bfrs-chat-bubble`, `bfrs-chat-composer`, `bfrs-full-page-loader`, `bfrs-business-info-display-card`, `bfrs-collapsible`, `bfrs-accordion`, `bfrs-summary-bar`, `bfrs-entity-display-card`, `bfrs-reveal-and-copy`, and `bfrs-step-progress-card`.
|
|
154
266
|
|
|
155
267
|
## Theme Overrides
|
|
156
268
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DataTableProps } from './DataTable.types';
|
|
2
|
-
export declare function DataTable<Row>({ data, columns, getRowId, loading, error, emptyState, emptyTitle, emptyDescription, pagination, enableSorting, sorting, defaultSorting, onSortingChange, visibleColumnIds, columnOrder, defaultColumnOrder, onColumnOrderChange, enableColumnPinning, pinnedColumnCount, defaultPinnedColumnCount, onPinnedColumnCountChange, pinLeadingColumn, defaultPinLeadingColumn, onPinLeadingColumnChange, enableColumnReordering, resetKey, showSortIcon, leadingColumn, rowActions, rowActionsHeader, rowActionsWidth, stickyRowActions, selection, selectedRowIds, onSelectedRowIdsChange, stickyHeader, minWidth, density, className, tableClassName, headerClassName, rowClassName, cellClassName, onRowClick, "aria-label": ariaLabel }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function DataTable<Row>({ data, columns, getRowId, loading, error, emptyState, emptyTitle, emptyDescription, pagination, enableSorting, sorting, defaultSorting, onSortingChange, visibleColumnIds, columnOrder, defaultColumnOrder, onColumnOrderChange, enableColumnPinning, pinnedColumnCount, defaultPinnedColumnCount, onPinnedColumnCountChange, pinLeadingColumn, defaultPinLeadingColumn, onPinLeadingColumnChange, enableColumnReordering, resetKey, showSortIcon, leadingColumn, rowActions, rowActionsHeader, rowActionsWidth, stickyRowActions, selection, selectedRowIds, onSelectedRowIdsChange, stickyHeader, minWidth, maxHeight, density, className, tableClassName, headerClassName, rowClassName, cellClassName, onRowClick, "aria-label": ariaLabel }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -60,7 +60,7 @@ export type DataTableProps<Row> = {
|
|
|
60
60
|
emptyState?: ReactNode;
|
|
61
61
|
emptyTitle?: ReactNode;
|
|
62
62
|
emptyDescription?: ReactNode;
|
|
63
|
-
pagination?:
|
|
63
|
+
pagination?: TablePaginationProps;
|
|
64
64
|
enableSorting?: boolean;
|
|
65
65
|
sorting?: DataTableSorting | null;
|
|
66
66
|
defaultSorting?: DataTableSorting | null;
|
|
@@ -89,6 +89,12 @@ export type DataTableProps<Row> = {
|
|
|
89
89
|
onSelectedRowIdsChange?: (ids: string[]) => void;
|
|
90
90
|
stickyHeader?: boolean;
|
|
91
91
|
minWidth?: number | string;
|
|
92
|
+
/**
|
|
93
|
+
* Caps the height of the scrollable region so the body scrolls vertically
|
|
94
|
+
* while the sticky header stays fixed at the top. Pair with the `pagination`
|
|
95
|
+
* prop to keep the footer fixed below the scroll area.
|
|
96
|
+
*/
|
|
97
|
+
maxHeight?: number | string;
|
|
92
98
|
density?: TableDensity;
|
|
93
99
|
className?: string;
|
|
94
100
|
tableClassName?: string;
|
|
@@ -109,7 +115,10 @@ export type TableToolbarProps = {
|
|
|
109
115
|
className?: string;
|
|
110
116
|
};
|
|
111
117
|
export type TablePaginationProps = DataTablePagination & {
|
|
112
|
-
|
|
118
|
+
/** Suffix shown after the count, e.g. "Orders" -> "15 Orders". Defaults to "items". */
|
|
119
|
+
itemLabel?: ReactNode;
|
|
120
|
+
/** Leading label for the page-size control. Defaults to "Items per page:". */
|
|
121
|
+
itemsPerPageLabel?: ReactNode;
|
|
113
122
|
className?: string;
|
|
114
123
|
/**
|
|
115
124
|
* Page-size control presentation. "select" (default, unchanged) renders a
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TablePaginationProps } from './DataTable.types';
|
|
2
|
-
export declare function TablePagination({ page, totalPages, pageSize, totalItems, pageSizeOptions, onPageChange, onPageSizeChange, itemLabel, className, pageSizeControl, showPageNavigation }: TablePaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function TablePagination({ page, totalPages, pageSize, totalItems, pageSizeOptions, onPageChange, onPageSizeChange, itemLabel, itemsPerPageLabel, className, pageSizeControl, showPageNavigation }: TablePaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const Input: import('react').ForwardRefExoticComponent<Omit<import('react').InputHTMLAttributes<HTMLInputElement>, "size"> & {
|
|
1
|
+
export declare const Input: import('react').ForwardRefExoticComponent<Omit<import('react').InputHTMLAttributes<HTMLInputElement>, "size" | "prefix"> & {
|
|
2
2
|
size?: import('./Input.types').InputSize;
|
|
3
3
|
label?: import('react').ReactNode;
|
|
4
4
|
helperText?: import('react').ReactNode;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export type InputSize = "xs" | "sm" | "md" | "lg";
|
|
3
|
-
export type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "size"> & {
|
|
3
|
+
export type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "prefix"> & {
|
|
4
4
|
size?: InputSize;
|
|
5
5
|
label?: ReactNode;
|
|
6
6
|
helperText?: ReactNode;
|
|
@@ -3,12 +3,12 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
3
3
|
declare const alertVariants: (props?: ({
|
|
4
4
|
tone?: "success" | "warning" | "danger" | "info" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
|
-
export type AlertProps = HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants> & {
|
|
6
|
+
export type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & VariantProps<typeof alertVariants> & {
|
|
7
7
|
title?: ReactNode;
|
|
8
8
|
action?: ReactNode;
|
|
9
9
|
icon?: ReactNode;
|
|
10
10
|
};
|
|
11
|
-
export declare const Alert: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
11
|
+
export declare const Alert: import('react').ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "title"> & VariantProps<(props?: ({
|
|
12
12
|
tone?: "success" | "warning" | "danger" | "info" | null | undefined;
|
|
13
13
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string> & {
|
|
14
14
|
title?: ReactNode;
|
|
@@ -1,7 +1,124 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ButtonProps } from './components/primitives/Button';
|
|
3
|
+
import { BadgeProps } from './components/primitives/Badge';
|
|
4
|
+
import { ChipProps } from './components/primitives/Chip';
|
|
5
|
+
import { AvatarProps } from './components/ui/data-display/Avatar';
|
|
1
6
|
import { ColorSwatchValue } from './components/ui/forms/ColorSwatchGroup';
|
|
7
|
+
import { TableEmptyState, TableErrorState, DataTableColumn, DataTableLeadingColumn } from './components/data-display/DataTable';
|
|
8
|
+
import { ToastTone } from './components/feedback/Toast';
|
|
2
9
|
import { BfrsColorScheme } from './components/ui/providers/BfrsProvider';
|
|
3
10
|
type UnknownProps = Record<string, unknown>;
|
|
4
11
|
type CheckedValue = boolean | "indeterminate";
|
|
12
|
+
export type BfrsToastElementInput = string | {
|
|
13
|
+
id?: string;
|
|
14
|
+
title: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
tone?: ToastTone;
|
|
17
|
+
duration?: number;
|
|
18
|
+
iconName?: string;
|
|
19
|
+
actionId?: string;
|
|
20
|
+
actionLabel?: string;
|
|
21
|
+
dismissible?: boolean;
|
|
22
|
+
className?: string;
|
|
23
|
+
};
|
|
24
|
+
export type DataTableElementRowClassRule = {
|
|
25
|
+
path: string;
|
|
26
|
+
className: string;
|
|
27
|
+
equals?: unknown;
|
|
28
|
+
notEquals?: unknown;
|
|
29
|
+
truthy?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export type DataTableElementLeadingColumn = Omit<DataTableLeadingColumn<UnknownProps>, "cell" | "header"> & {
|
|
32
|
+
header?: string;
|
|
33
|
+
cellType?: DataTableElementCellType;
|
|
34
|
+
cellConfig?: DataTableElementCellConfig;
|
|
35
|
+
action?: DataTableElementCellAction;
|
|
36
|
+
actions?: DataTableElementCellAction[];
|
|
37
|
+
actionsDisplay?: "inline" | "menu";
|
|
38
|
+
};
|
|
39
|
+
export type DataTableElementCellAction = {
|
|
40
|
+
id?: string;
|
|
41
|
+
label?: string;
|
|
42
|
+
labelKey?: string;
|
|
43
|
+
variant?: ButtonProps["variant"];
|
|
44
|
+
size?: ButtonProps["size"];
|
|
45
|
+
display?: "button" | "icon" | "menu";
|
|
46
|
+
iconName?: string;
|
|
47
|
+
iconNameKey?: string;
|
|
48
|
+
ariaLabel?: string;
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
disabledKey?: string;
|
|
51
|
+
destructive?: boolean;
|
|
52
|
+
};
|
|
53
|
+
export type DataTableElementCellConfig = {
|
|
54
|
+
/** Optional small label rendered above the cell content. */
|
|
55
|
+
caption?: string;
|
|
56
|
+
captionKey?: string;
|
|
57
|
+
/** Main display value. Falls back to the column accessor value. */
|
|
58
|
+
label?: string;
|
|
59
|
+
labelKey?: string;
|
|
60
|
+
valueKey?: string;
|
|
61
|
+
secondary?: string;
|
|
62
|
+
secondaryKey?: string;
|
|
63
|
+
/** Chip / badge presentation. Dynamic keys are resolved from the row. */
|
|
64
|
+
tone?: BadgeProps["tone"] | ChipProps["tone"];
|
|
65
|
+
toneKey?: string;
|
|
66
|
+
variant?: BadgeProps["variant"] | ChipProps["variant"];
|
|
67
|
+
variantKey?: string;
|
|
68
|
+
size?: BadgeProps["size"] | ChipProps["size"] | AvatarProps["size"];
|
|
69
|
+
sizeKey?: string;
|
|
70
|
+
dot?: boolean;
|
|
71
|
+
dotKey?: string;
|
|
72
|
+
/** Use plural cell types with arrays of primitive values or objects. */
|
|
73
|
+
itemsKey?: string;
|
|
74
|
+
itemLabelKey?: string;
|
|
75
|
+
itemValueKey?: string;
|
|
76
|
+
itemToneKey?: string;
|
|
77
|
+
/** Image / avatar presentation. */
|
|
78
|
+
src?: string;
|
|
79
|
+
srcKey?: string;
|
|
80
|
+
alt?: string;
|
|
81
|
+
altKey?: string;
|
|
82
|
+
name?: string;
|
|
83
|
+
nameKey?: string;
|
|
84
|
+
status?: AvatarProps["status"];
|
|
85
|
+
statusKey?: string;
|
|
86
|
+
width?: number | string;
|
|
87
|
+
height?: number | string;
|
|
88
|
+
rounded?: boolean;
|
|
89
|
+
/** Link presentation. */
|
|
90
|
+
href?: string;
|
|
91
|
+
hrefKey?: string;
|
|
92
|
+
target?: "_blank" | "_self" | "_parent" | "_top";
|
|
93
|
+
rel?: string;
|
|
94
|
+
/** Registered custom-element presentation. Native tags are intentionally rejected. */
|
|
95
|
+
tagName?: string;
|
|
96
|
+
properties?: UnknownProps;
|
|
97
|
+
propertyMap?: Record<string, string>;
|
|
98
|
+
attributes?: Record<string, unknown>;
|
|
99
|
+
attributeMap?: Record<string, string>;
|
|
100
|
+
text?: string;
|
|
101
|
+
textKey?: string;
|
|
102
|
+
events?: string[];
|
|
103
|
+
/** Optionally assign the complete row object to this property on the custom element. */
|
|
104
|
+
rowProperty?: string;
|
|
105
|
+
};
|
|
106
|
+
export type DataTableElementCellType = "text" | "chip" | "chips" | "badge" | "badges" | "image" | "avatar" | "link" | "custom-element" | "button" | "buttons" | "actions";
|
|
107
|
+
export type DataTableElementColumn = DataTableColumn<UnknownProps> & {
|
|
108
|
+
accessorPath?: string;
|
|
109
|
+
sortValueKey?: string;
|
|
110
|
+
cellType?: DataTableElementCellType;
|
|
111
|
+
cellConfig?: DataTableElementCellConfig;
|
|
112
|
+
action?: DataTableElementCellAction;
|
|
113
|
+
actions?: DataTableElementCellAction[];
|
|
114
|
+
actionsDisplay?: "inline" | "menu";
|
|
115
|
+
actionId?: string;
|
|
116
|
+
actionLabel?: string;
|
|
117
|
+
actionVariant?: ButtonProps["variant"];
|
|
118
|
+
actionSize?: ButtonProps["size"];
|
|
119
|
+
iconName?: string;
|
|
120
|
+
ariaLabel?: string;
|
|
121
|
+
};
|
|
5
122
|
export type BfrsCustomElementRegistryOptions = {
|
|
6
123
|
prefix?: string;
|
|
7
124
|
};
|
|
@@ -14,6 +131,7 @@ declare abstract class ReactCustomElement extends HTMLElement {
|
|
|
14
131
|
private hasCapturedInitialContent;
|
|
15
132
|
private initialRenderQueued;
|
|
16
133
|
private propertyProps;
|
|
134
|
+
private lightDomObserver;
|
|
17
135
|
get props(): UnknownProps;
|
|
18
136
|
set props(value: UnknownProps);
|
|
19
137
|
connectedCallback(): void;
|
|
@@ -27,8 +145,13 @@ declare abstract class ReactCustomElement extends HTMLElement {
|
|
|
27
145
|
protected colorSchemeAttribute(): BfrsColorScheme;
|
|
28
146
|
protected slottedText(fallback?: string): string | undefined;
|
|
29
147
|
protected htmlContent(fallback?: string): unknown;
|
|
148
|
+
protected hasSlot(name?: string): boolean;
|
|
149
|
+
protected slotNode(name?: string, fallback?: ReactNode): ReactNode;
|
|
150
|
+
protected defaultContentNode(fallback?: string): ReactNode;
|
|
30
151
|
protected booleanAttribute(name: string, fallback?: boolean): boolean;
|
|
152
|
+
protected booleanValue(attributeName: string, propName: string, fallback?: boolean): boolean;
|
|
31
153
|
protected numberAttribute(name: string): number | undefined;
|
|
154
|
+
protected numberValue(attributeName: string, propName: string): number | undefined;
|
|
32
155
|
protected jsonAttribute<Value>(name: string, fallback: Value): Value;
|
|
33
156
|
protected mergedProps(): {
|
|
34
157
|
[x: string]: unknown;
|
|
@@ -38,6 +161,7 @@ declare abstract class ReactCustomElement extends HTMLElement {
|
|
|
38
161
|
protected objectValue<Value extends UnknownProps>(name: string, fallback: Value): Value;
|
|
39
162
|
protected emit(name: string, detail?: unknown): void;
|
|
40
163
|
private applyDefaultDisplay;
|
|
164
|
+
private observeLightDom;
|
|
41
165
|
private ensureMountNode;
|
|
42
166
|
private scheduleInitialUpdate;
|
|
43
167
|
private captureInitialContent;
|
|
@@ -53,6 +177,11 @@ export declare class BfrsButtonElement extends ReactCustomElement {
|
|
|
53
177
|
static get observedAttributes(): string[];
|
|
54
178
|
protected renderElement(): unknown;
|
|
55
179
|
}
|
|
180
|
+
export declare class BfrsButtonGroupElement extends ReactCustomElement {
|
|
181
|
+
static readonly tagName = "button-group";
|
|
182
|
+
static get observedAttributes(): string[];
|
|
183
|
+
protected renderElement(): unknown;
|
|
184
|
+
}
|
|
56
185
|
export declare class BfrsInputElement extends ReactCustomElement {
|
|
57
186
|
static readonly tagName = "input";
|
|
58
187
|
static get observedAttributes(): string[];
|
|
@@ -364,6 +493,21 @@ export declare class BfrsToastManagerElement extends ReactCustomElement {
|
|
|
364
493
|
static get observedAttributes(): string[];
|
|
365
494
|
protected renderElement(): unknown;
|
|
366
495
|
}
|
|
496
|
+
export declare class BfrsToastProviderElement extends ReactCustomElement {
|
|
497
|
+
static readonly tagName = "toast-provider";
|
|
498
|
+
static get observedAttributes(): string[];
|
|
499
|
+
private toasts;
|
|
500
|
+
private idCounter;
|
|
501
|
+
protected defaultDisplay(): string;
|
|
502
|
+
toast(input: BfrsToastElementInput): string;
|
|
503
|
+
success(input: string | Omit<Exclude<BfrsToastElementInput, string>, "tone">): string;
|
|
504
|
+
warning(input: string | Omit<Exclude<BfrsToastElementInput, string>, "tone">): string;
|
|
505
|
+
danger(input: string | Omit<Exclude<BfrsToastElementInput, string>, "tone">): string;
|
|
506
|
+
info(input: string | Omit<Exclude<BfrsToastElementInput, string>, "tone">): string;
|
|
507
|
+
dismiss(id: string): void;
|
|
508
|
+
clear(): void;
|
|
509
|
+
protected renderElement(): unknown;
|
|
510
|
+
}
|
|
367
511
|
export declare class BfrsModalElement extends OpenCustomElement {
|
|
368
512
|
static readonly tagName = "modal";
|
|
369
513
|
static get observedAttributes(): string[];
|
|
@@ -418,12 +562,60 @@ export declare class BfrsTablePaginationElement extends ReactCustomElement {
|
|
|
418
562
|
protected defaultDisplay(): string;
|
|
419
563
|
protected renderElement(): unknown;
|
|
420
564
|
}
|
|
565
|
+
export declare class BfrsTableToolbarElement extends ReactCustomElement {
|
|
566
|
+
static readonly tagName = "table-toolbar";
|
|
567
|
+
static get observedAttributes(): string[];
|
|
568
|
+
protected defaultDisplay(): string;
|
|
569
|
+
protected renderElement(): unknown;
|
|
570
|
+
}
|
|
571
|
+
declare abstract class BfrsTableStateElement extends ReactCustomElement {
|
|
572
|
+
protected abstract stateComponent(): typeof TableEmptyState | typeof TableErrorState;
|
|
573
|
+
protected abstract defaultTitle(): string;
|
|
574
|
+
static get observedAttributes(): string[];
|
|
575
|
+
protected defaultDisplay(): string;
|
|
576
|
+
protected renderElement(): unknown;
|
|
577
|
+
}
|
|
578
|
+
export declare class BfrsTableEmptyStateElement extends BfrsTableStateElement {
|
|
579
|
+
static readonly tagName = "table-empty-state";
|
|
580
|
+
protected stateComponent(): typeof TableEmptyState;
|
|
581
|
+
protected defaultTitle(): string;
|
|
582
|
+
}
|
|
583
|
+
export declare class BfrsTableErrorStateElement extends BfrsTableStateElement {
|
|
584
|
+
static readonly tagName = "table-error-state";
|
|
585
|
+
protected stateComponent(): typeof TableErrorState;
|
|
586
|
+
protected defaultTitle(): string;
|
|
587
|
+
}
|
|
588
|
+
export declare class BfrsTableSkeletonElement extends ReactCustomElement {
|
|
589
|
+
static readonly tagName = "table-skeleton";
|
|
590
|
+
static get observedAttributes(): string[];
|
|
591
|
+
protected defaultDisplay(): string;
|
|
592
|
+
protected renderElement(): unknown;
|
|
593
|
+
}
|
|
594
|
+
export declare class BfrsTableRowActionsElement extends ReactCustomElement {
|
|
595
|
+
static readonly tagName = "table-row-actions";
|
|
596
|
+
static get observedAttributes(): string[];
|
|
597
|
+
protected renderElement(): unknown;
|
|
598
|
+
}
|
|
599
|
+
export declare class BfrsTableBulkActionsElement extends ReactCustomElement {
|
|
600
|
+
static readonly tagName = "table-bulk-actions";
|
|
601
|
+
static get observedAttributes(): string[];
|
|
602
|
+
protected defaultDisplay(): string;
|
|
603
|
+
protected renderElement(): unknown;
|
|
604
|
+
}
|
|
605
|
+
export declare class BfrsTableColumnVisibilityElement extends ReactCustomElement {
|
|
606
|
+
static readonly tagName = "table-column-visibility";
|
|
607
|
+
static get observedAttributes(): string[];
|
|
608
|
+
protected renderElement(): unknown;
|
|
609
|
+
}
|
|
421
610
|
export declare class BfrsDataTableElement extends ReactCustomElement {
|
|
422
611
|
static readonly tagName = "data-table";
|
|
423
612
|
static get observedAttributes(): string[];
|
|
424
613
|
protected defaultDisplay(): string;
|
|
425
614
|
protected renderElement(): unknown;
|
|
426
615
|
private normalizeColumn;
|
|
616
|
+
private cellConfigValue;
|
|
617
|
+
private renderCaptionedCell;
|
|
618
|
+
private renderRichCell;
|
|
427
619
|
private dataTableRowId;
|
|
428
620
|
private actionDisabled;
|
|
429
621
|
private emitCellAction;
|
|
@@ -431,9 +623,29 @@ export declare class BfrsDataTableElement extends ReactCustomElement {
|
|
|
431
623
|
private renderButtonGroupCell;
|
|
432
624
|
private renderActionMenuCell;
|
|
433
625
|
}
|
|
626
|
+
export declare class BfrsTabsListElement extends ReactCustomElement {
|
|
627
|
+
static readonly tagName = "tabs-list";
|
|
628
|
+
static get observedAttributes(): string[];
|
|
629
|
+
protected defaultDisplay(): string;
|
|
630
|
+
protected renderElement(): unknown;
|
|
631
|
+
}
|
|
632
|
+
export declare class BfrsTabsTriggerElement extends ReactCustomElement {
|
|
633
|
+
static readonly tagName = "tabs-trigger";
|
|
634
|
+
static get observedAttributes(): string[];
|
|
635
|
+
protected renderElement(): unknown;
|
|
636
|
+
}
|
|
637
|
+
export declare class BfrsTabsContentElement extends ReactCustomElement {
|
|
638
|
+
static readonly tagName = "tabs-content";
|
|
639
|
+
static get observedAttributes(): string[];
|
|
640
|
+
protected defaultDisplay(): string;
|
|
641
|
+
protected renderElement(): unknown;
|
|
642
|
+
}
|
|
434
643
|
export declare class BfrsTabsElement extends ValueCustomElement {
|
|
435
644
|
static readonly tagName = "tabs";
|
|
436
645
|
static get observedAttributes(): string[];
|
|
646
|
+
private readonly handleTabSelect;
|
|
647
|
+
connectedCallback(): void;
|
|
648
|
+
disconnectedCallback(): void;
|
|
437
649
|
protected renderElement(): unknown;
|
|
438
650
|
}
|
|
439
651
|
export declare class BfrsBreadcrumbsElement extends ReactCustomElement {
|
|
@@ -604,6 +816,7 @@ declare global {
|
|
|
604
816
|
"bfrs-business-info-display-card": BfrsBusinessInfoDisplayCardElement;
|
|
605
817
|
"bfrs-business-info-display-card-skeleton": BfrsBusinessInfoDisplayCardSkeletonElement;
|
|
606
818
|
"bfrs-button": BfrsButtonElement;
|
|
819
|
+
"bfrs-button-group": BfrsButtonGroupElement;
|
|
607
820
|
"bfrs-card": BfrsCardElement;
|
|
608
821
|
"bfrs-card-content": BfrsCardContentElement;
|
|
609
822
|
"bfrs-card-footer": BfrsCardFooterElement;
|
|
@@ -670,10 +883,21 @@ declare global {
|
|
|
670
883
|
"bfrs-summary-bar": BfrsSummaryBarElement;
|
|
671
884
|
"bfrs-switch": BfrsSwitchElement;
|
|
672
885
|
"bfrs-table-pagination": BfrsTablePaginationElement;
|
|
886
|
+
"bfrs-table-toolbar": BfrsTableToolbarElement;
|
|
887
|
+
"bfrs-table-empty-state": BfrsTableEmptyStateElement;
|
|
888
|
+
"bfrs-table-error-state": BfrsTableErrorStateElement;
|
|
889
|
+
"bfrs-table-skeleton": BfrsTableSkeletonElement;
|
|
890
|
+
"bfrs-table-row-actions": BfrsTableRowActionsElement;
|
|
891
|
+
"bfrs-table-bulk-actions": BfrsTableBulkActionsElement;
|
|
892
|
+
"bfrs-table-column-visibility": BfrsTableColumnVisibilityElement;
|
|
673
893
|
"bfrs-tabs": BfrsTabsElement;
|
|
894
|
+
"bfrs-tabs-list": BfrsTabsListElement;
|
|
895
|
+
"bfrs-tabs-trigger": BfrsTabsTriggerElement;
|
|
896
|
+
"bfrs-tabs-content": BfrsTabsContentElement;
|
|
674
897
|
"bfrs-text": BfrsTextElement;
|
|
675
898
|
"bfrs-textarea": BfrsTextareaElement;
|
|
676
899
|
"bfrs-toast-manager": BfrsToastManagerElement;
|
|
900
|
+
"bfrs-toast-provider": BfrsToastProviderElement;
|
|
677
901
|
"bfrs-tip": BfrsTipElement;
|
|
678
902
|
"bfrs-tooltip": BfrsTooltipElement;
|
|
679
903
|
"bfrs-workspace-header": BfrsWorkspaceHeaderElement;
|