@bfrs/agentic-components 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BFRS_AGENTIC_COMPONENTS.md +190 -6
- package/README.md +34 -3
- package/dist/components/ui/forms/Radio/Radio.d.ts +3 -1
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/patterns/HorizontalStepper/HorizontalStepper.d.ts +45 -0
- package/dist/components/ui/patterns/HorizontalStepper/index.d.ts +1 -0
- package/dist/custom-elements.d.ts +7 -0
- package/dist/custom-elements.js +4264 -4000
- package/dist/custom-elements.js.map +1 -1
- package/dist/index.js +3323 -3094
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
FileDropzone,
|
|
52
52
|
RevealField,
|
|
53
53
|
RevealAndCopy,
|
|
54
|
+
HorizontalStepper,
|
|
54
55
|
Modal,
|
|
55
56
|
DataTable,
|
|
56
57
|
TableColumnVisibility,
|
|
@@ -144,7 +145,7 @@ Registered tags cover the documented component surface, including
|
|
|
144
145
|
`bfrs-table-row-actions`, `bfrs-table-bulk-actions`, and
|
|
145
146
|
`bfrs-table-column-visibility`, and `bfrs-table-save-view` in addition to the existing component tags.
|
|
146
147
|
Existing form and pattern tags include `bfrs-date-range-picker`,
|
|
147
|
-
`bfrs-multi-select`, `bfrs-step-progress-card`, `bfrs-data-table`,
|
|
148
|
+
`bfrs-multi-select`, `bfrs-horizontal-stepper`, `bfrs-step-progress-card`, `bfrs-data-table`,
|
|
148
149
|
`bfrs-modal`, `bfrs-tabs`, and the rest of the documented `bfrs-*` surface.
|
|
149
150
|
|
|
150
151
|
ReactNode-based composition is exposed through native named slots. Angular
|
|
@@ -185,7 +186,7 @@ Mount `bfrs-toast-provider` once when Angular needs the equivalent of
|
|
|
185
186
|
|
|
186
187
|
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`.
|
|
187
188
|
|
|
188
|
-
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`.
|
|
189
|
+
Common component events: `(value-change)`, `(checked-change)`, `(open-change)`, `(reveal-change)`, `(copy)`, `(copy-error)`, `(close)`, `(step-select)`, `(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`.
|
|
189
190
|
|
|
190
191
|
For validated forms, keep client validation, API validation, and submit side effects in the consuming app. In React, wrap controls in `FormField`, pass field errors through `errorText`, and set the control's `error` prop when supported. In Angular, wrap controls that do not render their own label in `bfrs-form-field`; pass `error-text` and `helper-text` there, listen to the control's `(value-change)`, and manage success/failure notifications with `bfrs-toast-manager`.
|
|
191
192
|
|
|
@@ -1040,20 +1041,22 @@ Radio group. Renders a list of mutually exclusive options.
|
|
|
1040
1041
|
value={plan}
|
|
1041
1042
|
onValueChange={setPlan}
|
|
1042
1043
|
options={[
|
|
1043
|
-
{ value: "free", label: "Free" },
|
|
1044
|
-
{ value: "pro", label: "Pro" },
|
|
1045
|
-
{ value: "enterprise", label: "Enterprise" },
|
|
1044
|
+
{ value: "free", label: "Free", description: "For testing basic workflows." },
|
|
1045
|
+
{ value: "pro", label: "Pro", description: "For growing teams that need automation." },
|
|
1046
|
+
{ value: "enterprise", label: "Enterprise", description: "For custom limits and support." },
|
|
1046
1047
|
]}
|
|
1047
1048
|
/>
|
|
1048
1049
|
```
|
|
1049
1050
|
|
|
1050
1051
|
| Prop | Type | Default |
|
|
1051
1052
|
|------|------|---------|
|
|
1052
|
-
| `options` | `{ value: string; label:
|
|
1053
|
+
| `options` | `{ value: string; label: ReactNode; description?: ReactNode; disabled?: boolean }[]` | **required** |
|
|
1053
1054
|
| `value` | `string` | — |
|
|
1054
1055
|
| `onValueChange` | `(value: string) => void` | — |
|
|
1055
1056
|
| `error` | `boolean` | `false` |
|
|
1056
1057
|
|
|
1058
|
+
Each option renders `label` as the primary text and optional `description` as secondary text below it, matching the Checkbox label stack.
|
|
1059
|
+
|
|
1057
1060
|
---
|
|
1058
1061
|
|
|
1059
1062
|
#### `Switch`
|
|
@@ -2233,6 +2236,72 @@ Built-in loading behavior:
|
|
|
2233
2236
|
|
|
2234
2237
|
---
|
|
2235
2238
|
|
|
2239
|
+
#### `HorizontalStepper`
|
|
2240
|
+
|
|
2241
|
+
Compact horizontal flow stepper matching the activation-panel layout: optional announcement banner, centered connected steps, and heading/subheading copy below. Uses semantic theme tokens instead of hardcoded screenshot colors. Actions remain parent-owned: React passes `onClose` / `onStepSelect`; custom elements emit `(close)` / `(step-select)`.
|
|
2242
|
+
|
|
2243
|
+
For custom elements, add `selectable` when steps should be clickable and emit `(step-select)`.
|
|
2244
|
+
|
|
2245
|
+
Variants:
|
|
2246
|
+
- `primary` — default theme-colored activation or plan-selection flow.
|
|
2247
|
+
- `success` — completed or positive-confirmation flows.
|
|
2248
|
+
- `info` — informational setup or guidance flows.
|
|
2249
|
+
- `warning` — pending verification or caution flows.
|
|
2250
|
+
- `neutral` — low-emphasis wizard progress where status color should stay quiet.
|
|
2251
|
+
|
|
2252
|
+
```tsx
|
|
2253
|
+
<HorizontalStepper
|
|
2254
|
+
announcement="Great Choice! Early COD Remittance activation in progress.."
|
|
2255
|
+
closeButton
|
|
2256
|
+
onClose={handleClose}
|
|
2257
|
+
currentStep={0}
|
|
2258
|
+
title="Select a Plan"
|
|
2259
|
+
subheading="Get guaranteed remittance from the shipment delivered date."
|
|
2260
|
+
size="sm"
|
|
2261
|
+
variant="primary"
|
|
2262
|
+
steps={[
|
|
2263
|
+
{ label: "Select Plan", secondaryText: "Choose payout speed" },
|
|
2264
|
+
{ label: "Verify OTP", secondaryText: "Confirm activation" },
|
|
2265
|
+
]}
|
|
2266
|
+
/>
|
|
2267
|
+
```
|
|
2268
|
+
|
|
2269
|
+
```html
|
|
2270
|
+
<bfrs-horizontal-stepper
|
|
2271
|
+
announcement="Great Choice! Early COD Remittance activation in progress.."
|
|
2272
|
+
title="Select a Plan"
|
|
2273
|
+
subheading="Get guaranteed remittance from the shipment delivered date."
|
|
2274
|
+
current-step="0"
|
|
2275
|
+
close-button
|
|
2276
|
+
size="sm"
|
|
2277
|
+
selectable
|
|
2278
|
+
variant="primary"
|
|
2279
|
+
[props]="{ steps: remittanceSteps }"
|
|
2280
|
+
(close)="dismissStepper()"
|
|
2281
|
+
(step-select)="selectStep($event.detail)">
|
|
2282
|
+
</bfrs-horizontal-stepper>
|
|
2283
|
+
```
|
|
2284
|
+
|
|
2285
|
+
| Prop | Type | Default |
|
|
2286
|
+
|------|------|---------|
|
|
2287
|
+
| `steps` | `{ label: ReactNode; secondaryText?: ReactNode; description?: ReactNode; status?: "done" \| "active" \| "pending" \| "disabled"; disabled?: boolean }[]` | **required** |
|
|
2288
|
+
| `currentStep` | `number` | `0` |
|
|
2289
|
+
| `title` | `ReactNode` | — |
|
|
2290
|
+
| `subheading` | `ReactNode` | — |
|
|
2291
|
+
| `description` | `ReactNode` | — alias for `subheading` |
|
|
2292
|
+
| `announcement` | `ReactNode` | — |
|
|
2293
|
+
| `closeButton` | `boolean` | `false` |
|
|
2294
|
+
| `closeLabel` | `string` | `"Close"` |
|
|
2295
|
+
| `onClose` | `() => void` | — |
|
|
2296
|
+
| `onStepSelect` | `(step, index) => void` | — |
|
|
2297
|
+
| `size` | `"sm" \| "md"` | `"sm"` |
|
|
2298
|
+
| `surface` | `"card" \| "plain"` | `"card"` |
|
|
2299
|
+
| `variant` | `"primary" \| "success" \| "info" \| "warning" \| "neutral"` | `"primary"` |
|
|
2300
|
+
|
|
2301
|
+
Each step renders `label` as the primary text and optional `secondaryText` below it. `description` is kept as a backwards-compatible alias for `secondaryText`.
|
|
2302
|
+
|
|
2303
|
+
---
|
|
2304
|
+
|
|
2236
2305
|
#### `StepProgressCard`
|
|
2237
2306
|
|
|
2238
2307
|
Step-by-step progress indicator. Calculates `done` / `active` / `pending` state automatically from `currentStep` and preserves the green completed-dot, active-star, and rail-fill transitions. Defaults to the Figma-derived plain progress block; pass `surface="card"` for the standard card wrapper.
|
|
@@ -2343,6 +2412,121 @@ Step-by-step progress indicator. Calculates `done` / `active` / `pending` state
|
|
|
2343
2412
|
|
|
2344
2413
|
---
|
|
2345
2414
|
|
|
2415
|
+
## Table / Thead / Tbody / Tfoot / Tr / Th / Td
|
|
2416
|
+
|
|
2417
|
+
Primitive table components with DataTable-matching styles, density support, and row hover effects. Use these for custom layouts where `DataTable` is too prescriptive.
|
|
2418
|
+
|
|
2419
|
+
### React
|
|
2420
|
+
|
|
2421
|
+
```tsx
|
|
2422
|
+
import { Table, Thead, Tbody, Tfoot, Tr, Th, Td } from "@bfrs/agentic-components";
|
|
2423
|
+
|
|
2424
|
+
<Table density="compact" sticky aria-label="Orders">
|
|
2425
|
+
<Thead sticky>
|
|
2426
|
+
<Tr>
|
|
2427
|
+
<Th>Order</Th>
|
|
2428
|
+
<Th align="right">Amount</Th>
|
|
2429
|
+
<Th>Status</Th>
|
|
2430
|
+
</Tr>
|
|
2431
|
+
</Thead>
|
|
2432
|
+
<Tbody>
|
|
2433
|
+
{orders.map((order) => (
|
|
2434
|
+
<Tr key={order.id} onClick={() => navigate(`/orders/${order.id}`)}>
|
|
2435
|
+
<Td>{order.id}</Td>
|
|
2436
|
+
<Td align="right">₹{order.amount}</Td>
|
|
2437
|
+
<Td>{order.status}</Td>
|
|
2438
|
+
</Tr>
|
|
2439
|
+
))}
|
|
2440
|
+
</Tbody>
|
|
2441
|
+
<Tfoot>
|
|
2442
|
+
<Tr>
|
|
2443
|
+
<Th colSpan={2}>Total</Th>
|
|
2444
|
+
<Th align="right">₹{total}</Th>
|
|
2445
|
+
</Tr>
|
|
2446
|
+
</Tfoot>
|
|
2447
|
+
</Table>
|
|
2448
|
+
```
|
|
2449
|
+
|
|
2450
|
+
#### Table props
|
|
2451
|
+
|
|
2452
|
+
| Prop | Type | Default | Description |
|
|
2453
|
+
|------|------|---------|-------------|
|
|
2454
|
+
| `density` | `"compact" \| "default" \| "comfortable"` | `"default"` | Cell padding density — propagates to Th/Td via React context |
|
|
2455
|
+
| `maxHeight` | `string \| number` | — | Enables vertical scrolling at this height |
|
|
2456
|
+
| `minWidth` | `string \| number` | — | Minimum table width (useful for fixed-layout tables) |
|
|
2457
|
+
| `className` | `string` | — | Applied to the outer border wrapper |
|
|
2458
|
+
| `tableClassName` | `string` | — | Applied to the `<table>` element |
|
|
2459
|
+
| `aria-label` | `string` | `"Table"` | Accessibility label |
|
|
2460
|
+
| `children` | `ReactNode` | — | `Thead`, `Tbody`, `Tfoot` elements |
|
|
2461
|
+
|
|
2462
|
+
#### Thead props
|
|
2463
|
+
|
|
2464
|
+
| Prop | Type | Default | Description |
|
|
2465
|
+
|------|------|---------|-------------|
|
|
2466
|
+
| `sticky` | `boolean` | `false` | Sticks the header at the top of the scroll container |
|
|
2467
|
+
| `className` | `string` | — | Extra class on `<thead>` |
|
|
2468
|
+
|
|
2469
|
+
#### Tr props
|
|
2470
|
+
|
|
2471
|
+
| Prop | Type | Default | Description |
|
|
2472
|
+
|------|------|---------|-------------|
|
|
2473
|
+
| `onClick` | `() => void` | — | Row click handler; adds `cursor-pointer` automatically |
|
|
2474
|
+
| `className` | `string` | — | Extra class on `<tr>` |
|
|
2475
|
+
|
|
2476
|
+
#### Th props
|
|
2477
|
+
|
|
2478
|
+
| Prop | Type | Default | Description |
|
|
2479
|
+
|------|------|---------|-------------|
|
|
2480
|
+
| `align` | `"left" \| "center" \| "right"` | `"left"` | Text alignment |
|
|
2481
|
+
| `colSpan` | `number` | — | HTML colspan |
|
|
2482
|
+
| `className` | `string` | — | Extra class on `<th>` |
|
|
2483
|
+
|
|
2484
|
+
#### Td props
|
|
2485
|
+
|
|
2486
|
+
| Prop | Type | Default | Description |
|
|
2487
|
+
|------|------|---------|-------------|
|
|
2488
|
+
| `align` | `"left" \| "center" \| "right"` | `"left"` | Text alignment |
|
|
2489
|
+
| `colSpan` | `number` | — | HTML colspan |
|
|
2490
|
+
| `className` | `string` | — | Extra class on `<td>` |
|
|
2491
|
+
|
|
2492
|
+
### Angular (custom elements)
|
|
2493
|
+
|
|
2494
|
+
Custom elements: `bfrs-table`, `bfrs-thead`, `bfrs-tbody`, `bfrs-tfoot`, `bfrs-tr`, `bfrs-th`, `bfrs-td`.
|
|
2495
|
+
|
|
2496
|
+
`bfrs-table` propagates `density` to all descendant `bfrs-th` and `bfrs-td` elements automatically. Row hover transitions the background color of all `bfrs-td` children via JavaScript events.
|
|
2497
|
+
|
|
2498
|
+
```html
|
|
2499
|
+
<bfrs-table density="compact" max-height="400px" aria-label="Orders">
|
|
2500
|
+
<bfrs-thead sticky>
|
|
2501
|
+
<bfrs-tr>
|
|
2502
|
+
<bfrs-th>Order</bfrs-th>
|
|
2503
|
+
<bfrs-th align="right">Amount</bfrs-th>
|
|
2504
|
+
<bfrs-th>Status</bfrs-th>
|
|
2505
|
+
</bfrs-tr>
|
|
2506
|
+
</bfrs-thead>
|
|
2507
|
+
<bfrs-tbody>
|
|
2508
|
+
<bfrs-tr *ngFor="let order of orders" (click)="navigate(order.id)">
|
|
2509
|
+
<bfrs-td>{{ order.id }}</bfrs-td>
|
|
2510
|
+
<bfrs-td align="right">₹{{ order.amount }}</bfrs-td>
|
|
2511
|
+
<bfrs-td>{{ order.status }}</bfrs-td>
|
|
2512
|
+
</bfrs-tr>
|
|
2513
|
+
</bfrs-tbody>
|
|
2514
|
+
</bfrs-table>
|
|
2515
|
+
```
|
|
2516
|
+
|
|
2517
|
+
| Attribute | Element | Description |
|
|
2518
|
+
|-----------|---------|-------------|
|
|
2519
|
+
| `density` | `bfrs-table` | `"compact"`, `"default"`, or `"comfortable"` — propagated to all th/td |
|
|
2520
|
+
| `max-height` | `bfrs-table` | CSS max-height for scroll container |
|
|
2521
|
+
| `min-width` | `bfrs-table` | CSS min-width on the table |
|
|
2522
|
+
| `aria-label` | `bfrs-table` | Accessibility label |
|
|
2523
|
+
| `sticky` | `bfrs-thead` | Boolean — sticks header at scroll top |
|
|
2524
|
+
| `on-click` | `bfrs-tr` | Emits `click` event; adds `cursor-pointer` |
|
|
2525
|
+
| `align` | `bfrs-th`, `bfrs-td` | `"left"`, `"center"`, or `"right"` |
|
|
2526
|
+
| `density` | `bfrs-th`, `bfrs-td` | Override density per cell (set explicitly; overrides table propagation) |
|
|
2527
|
+
|
|
2528
|
+
---
|
|
2529
|
+
|
|
2346
2530
|
## What NOT to do
|
|
2347
2531
|
|
|
2348
2532
|
- Do not use raw Tailwind classes for spacing, color, or typography — use `Stack`, `Text`, and component props instead
|
package/README.md
CHANGED
|
@@ -262,7 +262,30 @@ The standalone helpers are available as `bfrs-table-toolbar`,
|
|
|
262
262
|
`bfrs-table-row-actions`, `bfrs-table-bulk-actions`, and
|
|
263
263
|
`bfrs-table-column-visibility`.
|
|
264
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`.
|
|
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`, `bfrs-horizontal-stepper`, and `bfrs-step-progress-card`.
|
|
266
|
+
|
|
267
|
+
`HorizontalStepper` provides the compact horizontal flow layout with an optional announcement banner and parent-owned `onClose` / `onStepSelect` behavior:
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
import { HorizontalStepper } from "@bfrs/agentic-components";
|
|
271
|
+
|
|
272
|
+
<HorizontalStepper
|
|
273
|
+
announcement="Great Choice! Early COD Remittance activation in progress.."
|
|
274
|
+
closeButton
|
|
275
|
+
onClose={handleClose}
|
|
276
|
+
currentStep={0}
|
|
277
|
+
title="Select a Plan"
|
|
278
|
+
subheading="Get guaranteed remittance from the shipment delivered date."
|
|
279
|
+
size="sm"
|
|
280
|
+
variant="primary"
|
|
281
|
+
steps={[
|
|
282
|
+
{ label: "Select Plan", secondaryText: "Choose payout speed" },
|
|
283
|
+
{ label: "Verify OTP", secondaryText: "Confirm activation" }
|
|
284
|
+
]}
|
|
285
|
+
/>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Use `variant="primary" | "success" | "info" | "warning" | "neutral"` for semantic color treatment, and `size="sm" | "md"` for compact or roomier layouts.
|
|
266
289
|
|
|
267
290
|
## Theme Overrides
|
|
268
291
|
|
|
@@ -357,10 +380,10 @@ function SaveButton() {
|
|
|
357
380
|
|
|
358
381
|
### Checkbox
|
|
359
382
|
|
|
360
|
-
Use `Checkbox` for independent true/false decisions or multi-select choices. It renders as a square checklist control, while `Radio` renders circular options for single-choice groups.
|
|
383
|
+
Use `Checkbox` for independent true/false decisions or multi-select choices. It renders as a square checklist control, while `Radio` renders circular options for single-choice groups. Both support primary text plus secondary description text.
|
|
361
384
|
|
|
362
385
|
```tsx
|
|
363
|
-
import { Checkbox } from "@bfrs/agentic-components";
|
|
386
|
+
import { Checkbox, Radio } from "@bfrs/agentic-components";
|
|
364
387
|
|
|
365
388
|
<Checkbox
|
|
366
389
|
label="Accept terms"
|
|
@@ -370,6 +393,14 @@ import { Checkbox } from "@bfrs/agentic-components";
|
|
|
370
393
|
/>
|
|
371
394
|
|
|
372
395
|
<Checkbox label="Partially selected" checked="indeterminate" />
|
|
396
|
+
|
|
397
|
+
<Radio
|
|
398
|
+
options={[
|
|
399
|
+
{ value: "registered", label: "Registered business", description: "Company GST and business KYC are available." },
|
|
400
|
+
{ value: "individual", label: "Individual seller", description: "Use personal details for seller verification." }
|
|
401
|
+
]}
|
|
402
|
+
defaultValue="registered"
|
|
403
|
+
/>
|
|
373
404
|
```
|
|
374
405
|
|
|
375
406
|
## Development
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
2
3
|
export type RadioOption = {
|
|
3
4
|
value: string;
|
|
4
|
-
label:
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
description?: ReactNode;
|
|
5
7
|
disabled?: boolean;
|
|
6
8
|
};
|
|
7
9
|
export type RadioProps = RadioGroupPrimitive.RadioGroupProps & {
|
|
@@ -66,6 +66,7 @@ export * from './patterns/ChatBubble';
|
|
|
66
66
|
export * from './patterns/ChatComposer';
|
|
67
67
|
export * from './patterns/FullPageLoader';
|
|
68
68
|
export * from './patterns/BusinessInfoDisplayCard';
|
|
69
|
+
export * from './patterns/HorizontalStepper';
|
|
69
70
|
export * from './patterns/StepProgressCard';
|
|
70
71
|
export * from './patterns/RevealAndCopy';
|
|
71
72
|
export * from './patterns/Collapsible';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type HorizontalStepperState = "done" | "active" | "pending" | "disabled";
|
|
3
|
+
export type HorizontalStepperVariant = "primary" | "success" | "info" | "warning" | "neutral";
|
|
4
|
+
export type HorizontalStepperSize = "sm" | "md";
|
|
5
|
+
export type HorizontalStepperStep = {
|
|
6
|
+
id?: string;
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
secondaryText?: ReactNode;
|
|
9
|
+
/** Backwards-compatible alias for secondaryText. Prefer secondaryText for new code. */
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
status?: HorizontalStepperState;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type HorizontalStepperProps = HTMLAttributes<HTMLElement> & {
|
|
15
|
+
steps: HorizontalStepperStep[];
|
|
16
|
+
currentStep?: number;
|
|
17
|
+
title?: ReactNode;
|
|
18
|
+
subheading?: ReactNode;
|
|
19
|
+
/** Backwards-compatible alias for subheading. Prefer subheading for new code. */
|
|
20
|
+
description?: ReactNode;
|
|
21
|
+
announcement?: ReactNode;
|
|
22
|
+
closeButton?: boolean;
|
|
23
|
+
closeLabel?: string;
|
|
24
|
+
onClose?: () => void;
|
|
25
|
+
onStepSelect?: (step: HorizontalStepperStep, index: number) => void;
|
|
26
|
+
size?: HorizontalStepperSize;
|
|
27
|
+
surface?: "card" | "plain";
|
|
28
|
+
variant?: HorizontalStepperVariant;
|
|
29
|
+
};
|
|
30
|
+
export declare const HorizontalStepper: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
|
|
31
|
+
steps: HorizontalStepperStep[];
|
|
32
|
+
currentStep?: number;
|
|
33
|
+
title?: ReactNode;
|
|
34
|
+
subheading?: ReactNode;
|
|
35
|
+
/** Backwards-compatible alias for subheading. Prefer subheading for new code. */
|
|
36
|
+
description?: ReactNode;
|
|
37
|
+
announcement?: ReactNode;
|
|
38
|
+
closeButton?: boolean;
|
|
39
|
+
closeLabel?: string;
|
|
40
|
+
onClose?: () => void;
|
|
41
|
+
onStepSelect?: (step: HorizontalStepperStep, index: number) => void;
|
|
42
|
+
size?: HorizontalStepperSize;
|
|
43
|
+
surface?: "card" | "plain";
|
|
44
|
+
variant?: HorizontalStepperVariant;
|
|
45
|
+
} & import('react').RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './HorizontalStepper';
|
|
@@ -787,6 +787,12 @@ export declare class BfrsStepProgressCardElement extends ReactCustomElement {
|
|
|
787
787
|
protected defaultDisplay(): string;
|
|
788
788
|
protected renderElement(): unknown;
|
|
789
789
|
}
|
|
790
|
+
export declare class BfrsHorizontalStepperElement extends ReactCustomElement {
|
|
791
|
+
static readonly tagName = "horizontal-stepper";
|
|
792
|
+
static get observedAttributes(): string[];
|
|
793
|
+
protected defaultDisplay(): string;
|
|
794
|
+
protected renderElement(): unknown;
|
|
795
|
+
}
|
|
790
796
|
export declare class BfrsStepProgressCardSkeletonElement extends ReactCustomElement {
|
|
791
797
|
static readonly tagName = "step-progress-card-skeleton";
|
|
792
798
|
static get observedAttributes(): string[];
|
|
@@ -884,6 +890,7 @@ declare global {
|
|
|
884
890
|
"bfrs-skeleton": BfrsSkeletonElement;
|
|
885
891
|
"bfrs-spinner": BfrsSpinnerElement;
|
|
886
892
|
"bfrs-stack": BfrsStackElement;
|
|
893
|
+
"bfrs-horizontal-stepper": BfrsHorizontalStepperElement;
|
|
887
894
|
"bfrs-step-progress-card": BfrsStepProgressCardElement;
|
|
888
895
|
"bfrs-step-progress-card-skeleton": BfrsStepProgressCardSkeletonElement;
|
|
889
896
|
"bfrs-suggest-input": BfrsSuggestInputElement;
|