@bfrs/agentic-components 0.3.7 → 0.3.9

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/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
@@ -3,6 +3,7 @@ import { ActionMenuItem } from '../../navigation/ActionMenu';
3
3
  export type SortDirection = "asc" | "desc";
4
4
  export type TableDensity = "compact" | "default" | "comfortable";
5
5
  export type TableAlign = "left" | "center" | "right";
6
+ export type TablePaginationVariant = "indexed" | "simple";
6
7
  export type DataTableSorting = {
7
8
  columnId: string;
8
9
  direction: SortDirection;
@@ -45,6 +46,8 @@ export type DataTableLeadingColumn<Row> = {
45
46
  export type DataTablePagination = {
46
47
  page: number;
47
48
  totalPages: number;
49
+ /** "indexed" shows Prev, page numbers, and Next. "simple" shows only Prev and Next. */
50
+ variant?: TablePaginationVariant;
48
51
  pageSize?: number;
49
52
  totalItems?: number;
50
53
  pageSizeOptions?: number[];
@@ -1,2 +1,2 @@
1
1
  import { TablePaginationProps } from './DataTable.types';
2
- export declare function TablePagination({ page, totalPages, pageSize, totalItems, pageSizeOptions, onPageChange, onPageSizeChange, itemLabel, itemsPerPageLabel, className, pageSizeControl, showPageNavigation }: TablePaginationProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function TablePagination({ page, totalPages, variant, pageSize, totalItems, pageSizeOptions, onPageChange, onPageSizeChange, itemLabel, itemsPerPageLabel, className, pageSizeControl, showPageNavigation }: TablePaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,44 @@
1
+ import { ReactNode } from 'react';
2
+ import { TableColumnVisibilityColumn } from './DataTable.types';
3
+ export type TableSaveViewPayload = {
4
+ name: string;
5
+ visibleColumnIds: string[];
6
+ hiddenColumnCount: number;
7
+ filtersCount: number;
8
+ appliedSettingLabels: string[];
9
+ };
10
+ export type TableSaveViewProps = {
11
+ open?: boolean;
12
+ defaultOpen?: boolean;
13
+ onOpenChange?: (open: boolean) => void;
14
+ onClose?: () => void;
15
+ trigger?: ReactNode;
16
+ triggerLabel?: ReactNode;
17
+ title?: ReactNode;
18
+ description?: ReactNode;
19
+ viewName?: string;
20
+ defaultViewName?: string;
21
+ onViewNameChange?: (viewName: string) => void;
22
+ viewNameLabel?: ReactNode;
23
+ viewNamePlaceholder?: string;
24
+ appliedLabel?: ReactNode;
25
+ appliedSettings?: ReactNode;
26
+ appliedSettingLabels?: string[];
27
+ columns?: TableColumnVisibilityColumn[];
28
+ visibleColumnIds?: string[];
29
+ hiddenColumnCount?: number;
30
+ filtersCount?: number;
31
+ cancelLabel?: ReactNode;
32
+ saveLabel?: ReactNode;
33
+ onCancel?: () => void;
34
+ onSave?: (payload: TableSaveViewPayload) => void | Promise<void>;
35
+ loading?: boolean;
36
+ disabled?: boolean;
37
+ closeOnSave?: boolean;
38
+ closeOnOverlayClick?: boolean;
39
+ closeOnEscape?: boolean;
40
+ preventClose?: boolean;
41
+ className?: string;
42
+ triggerClassName?: string;
43
+ };
44
+ export declare function TableSaveView({ open, defaultOpen, onOpenChange, onClose, trigger, triggerLabel, title, description, viewName, defaultViewName, onViewNameChange, viewNameLabel, viewNamePlaceholder, appliedLabel, appliedSettings, appliedSettingLabels, columns, visibleColumnIds, hiddenColumnCount, filtersCount, cancelLabel, saveLabel, onCancel, onSave, loading, disabled, closeOnSave, closeOnOverlayClick, closeOnEscape, preventClose, className, triggerClassName }: TableSaveViewProps): import("react/jsx-runtime").JSX.Element;
@@ -8,3 +8,4 @@ export * from './TableErrorState';
8
8
  export * from './TableRowActions';
9
9
  export * from './TableBulkActions';
10
10
  export * from './TableColumnVisibility';
11
+ export * from './TableSaveView';
@@ -2,6 +2,7 @@ import { HTMLAttributes, ReactNode } from 'react';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const alertVariants: (props?: ({
4
4
  tone?: "success" | "warning" | "danger" | "info" | null | undefined;
5
+ size?: "xs" | "sm" | "md" | "lg" | null | undefined;
5
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
7
  export type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & VariantProps<typeof alertVariants> & {
7
8
  title?: ReactNode;
@@ -10,6 +11,7 @@ export type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & Variant
10
11
  };
11
12
  export declare const Alert: import('react').ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "title"> & VariantProps<(props?: ({
12
13
  tone?: "success" | "warning" | "danger" | "info" | null | undefined;
14
+ size?: "xs" | "sm" | "md" | "lg" | null | undefined;
13
15
  } & import('class-variance-authority/types').ClassProp) | undefined) => string> & {
14
16
  title?: ReactNode;
15
17
  action?: ReactNode;
@@ -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: string;
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';
@@ -607,6 +607,12 @@ export declare class BfrsTableColumnVisibilityElement extends ReactCustomElement
607
607
  static get observedAttributes(): string[];
608
608
  protected renderElement(): unknown;
609
609
  }
610
+ export declare class BfrsTableSaveViewElement extends OpenCustomElement {
611
+ static readonly tagName = "table-save-view";
612
+ static get observedAttributes(): string[];
613
+ protected defaultDisplay(): string;
614
+ protected renderElement(): unknown;
615
+ }
610
616
  export declare class BfrsDataTableElement extends ReactCustomElement {
611
617
  static readonly tagName = "data-table";
612
618
  static get observedAttributes(): string[];
@@ -755,6 +761,7 @@ export declare class BfrsAccordionElement extends ReactCustomElement {
755
761
  static get observedAttributes(): string[];
756
762
  protected defaultDisplay(): string;
757
763
  private accordionDefaultValue;
764
+ private accordionValue;
758
765
  protected renderElement(): unknown;
759
766
  }
760
767
  export declare class BfrsSummaryBarElement extends ReactCustomElement {
@@ -780,6 +787,12 @@ export declare class BfrsStepProgressCardElement extends ReactCustomElement {
780
787
  protected defaultDisplay(): string;
781
788
  protected renderElement(): unknown;
782
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
+ }
783
796
  export declare class BfrsStepProgressCardSkeletonElement extends ReactCustomElement {
784
797
  static readonly tagName = "step-progress-card-skeleton";
785
798
  static get observedAttributes(): string[];
@@ -877,6 +890,7 @@ declare global {
877
890
  "bfrs-skeleton": BfrsSkeletonElement;
878
891
  "bfrs-spinner": BfrsSpinnerElement;
879
892
  "bfrs-stack": BfrsStackElement;
893
+ "bfrs-horizontal-stepper": BfrsHorizontalStepperElement;
880
894
  "bfrs-step-progress-card": BfrsStepProgressCardElement;
881
895
  "bfrs-step-progress-card-skeleton": BfrsStepProgressCardSkeletonElement;
882
896
  "bfrs-suggest-input": BfrsSuggestInputElement;
@@ -890,6 +904,7 @@ declare global {
890
904
  "bfrs-table-row-actions": BfrsTableRowActionsElement;
891
905
  "bfrs-table-bulk-actions": BfrsTableBulkActionsElement;
892
906
  "bfrs-table-column-visibility": BfrsTableColumnVisibilityElement;
907
+ "bfrs-table-save-view": BfrsTableSaveViewElement;
893
908
  "bfrs-tabs": BfrsTabsElement;
894
909
  "bfrs-tabs-list": BfrsTabsListElement;
895
910
  "bfrs-tabs-trigger": BfrsTabsTriggerElement;