@bitforgehq/ui 0.3.0 → 0.3.2
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/CHANGELOG.md +598 -0
- package/README.md +18 -11
- package/ai/MANIFEST.index.json +306 -0
- package/ai/MANIFEST.json +8915 -3788
- package/ai/REFERENCE.index.json +476 -0
- package/ai/REFERENCE.json +5810 -2905
- package/ai/UI_GUIDE.md +212 -58
- package/ai/components/app-frame.md +328 -0
- package/ai/components/back-button.md +42 -2
- package/ai/components/badge.md +17 -7
- package/ai/components/bar-chart.md +188 -0
- package/ai/components/breadcrumb-item.md +121 -0
- package/ai/components/breadcrumb.md +277 -0
- package/ai/components/button.md +82 -15
- package/ai/components/calendar.md +300 -0
- package/ai/components/card.md +119 -4
- package/ai/components/chart-card.md +283 -0
- package/ai/components/combobox.md +411 -0
- package/ai/components/date-input.md +396 -0
- package/ai/components/datetime-input.md +215 -0
- package/ai/components/description-item.md +111 -0
- package/ai/components/description-list.md +160 -0
- package/ai/components/donut-chart.md +169 -0
- package/ai/components/empty-state.md +99 -6
- package/ai/components/header.md +71 -2
- package/ai/components/icon-button.md +74 -16
- package/ai/components/icon.md +63 -7
- package/ai/components/line-chart.md +234 -0
- package/ai/components/list.md +70 -6
- package/ai/components/menu.md +5 -0
- package/ai/components/multi-combobox.md +257 -0
- package/ai/components/nav-group.md +178 -0
- package/ai/components/nav-item.md +210 -0
- package/ai/components/page-header.md +237 -0
- package/ai/components/pagination.md +173 -0
- package/ai/components/popover.md +250 -0
- package/ai/components/side-panel.md +391 -0
- package/ai/components/sidebar-toggle.md +287 -0
- package/ai/components/sidebar.md +541 -0
- package/ai/components/skeleton.md +215 -0
- package/ai/components/sparkline.md +188 -0
- package/ai/components/stat.md +297 -0
- package/ai/components/tab-group.md +226 -0
- package/ai/components/tab-panel.md +163 -0
- package/ai/components/table.md +697 -0
- package/ai/components/tabs.md +46 -2
- package/ai/components/theme-menu-button.md +182 -0
- package/ai/components/theme-switch.md +170 -0
- package/ai/components/time-input.md +240 -0
- package/ai/components/toolbar.md +354 -0
- package/ai/components/tooltip.md +230 -0
- package/ai/components/top-nav.md +159 -0
- package/ai/reference/bf-app-frame-breakpoint.md +27 -0
- package/ai/reference/bf-app-frame-content-width.md +29 -0
- package/ai/reference/bf-badge-appearance.md +36 -0
- package/ai/reference/bf-badge-variant.md +1 -1
- package/ai/reference/bf-bar-chart-orientation.md +27 -0
- package/ai/reference/bf-button-appearance.md +36 -0
- package/ai/reference/bf-button-variant.md +1 -1
- package/ai/reference/bf-calendar-disabled-date.md +23 -0
- package/ai/reference/bf-calendar-harness.md +51 -0
- package/ai/reference/bf-calendar-weekday.md +31 -0
- package/ai/reference/bf-chart-card-heading-level.md +26 -0
- package/ai/reference/bf-chart-curve.md +28 -0
- package/ai/reference/bf-chart-harness.md +51 -0
- package/ai/reference/bf-chart-legend-position.md +30 -0
- package/ai/reference/bf-chart-series.md +23 -0
- package/ai/reference/bf-chart-value-format.md +23 -0
- package/ai/reference/bf-color-scheme-service.md +30 -0
- package/ai/reference/bf-color-scheme.md +31 -0
- package/ai/reference/bf-combobox-filter.md +27 -0
- package/ai/reference/bf-combobox-harness.md +89 -0
- package/ai/reference/bf-combobox-option.md +33 -0
- package/ai/reference/bf-compare-with.md +2 -0
- package/ai/reference/bf-date-input-harness.md +67 -0
- package/ai/reference/bf-date-input-picker.md +27 -0
- package/ai/reference/bf-date-time-input-harness.md +76 -0
- package/ai/reference/bf-date-time-input-picker.md +27 -0
- package/ai/reference/bf-description-list-layout.md +26 -0
- package/ai/reference/bf-donut-slice.md +22 -0
- package/ai/reference/bf-empty-state-heading-level.md +1 -1
- package/ai/reference/bf-empty-state-heading.md +33 -0
- package/ai/reference/bf-labels.md +73 -20
- package/ai/reference/bf-menu-button-variant.md +1 -0
- package/ai/reference/bf-menu-placement.md +1 -0
- package/ai/reference/bf-overlay-options.md +28 -27
- package/ai/reference/bf-overlay-placement.md +34 -0
- package/ai/reference/bf-overlay-position.md +1 -1
- package/ai/reference/bf-overlay-service.md +5 -3
- package/ai/reference/bf-page-header-heading-level.md +26 -0
- package/ai/reference/bf-pagination-harness.md +61 -0
- package/ai/reference/bf-platform-service.md +17 -15
- package/ai/reference/bf-popover-harness.md +42 -0
- package/ai/reference/bf-popover-placement.md +28 -0
- package/ai/reference/bf-popover-trigger-directive.md +56 -0
- package/ai/reference/bf-side-panel-config.md +35 -0
- package/ai/reference/bf-side-panel-harness.md +34 -0
- package/ai/reference/bf-side-panel-ref.md +44 -0
- package/ai/reference/bf-side-panel-service.md +43 -0
- package/ai/reference/bf-side-panel-template-context.md +32 -0
- package/ai/reference/bf-side-panel-width.md +28 -0
- package/ai/reference/bf-sidebar-state-service.md +21 -0
- package/ai/reference/bf-sidebar-toggle-harness.md +32 -0
- package/ai/reference/bf-size.md +13 -0
- package/ai/reference/bf-skeleton-shape.md +28 -0
- package/ai/reference/bf-stat-appearance.md +33 -0
- package/ai/reference/bf-stat-trend-intent.md +27 -0
- package/ai/reference/bf-stat-trend.md +27 -0
- package/ai/reference/bf-stat-variant.md +26 -0
- package/ai/reference/bf-tab-group-harness.md +44 -0
- package/ai/reference/bf-table-align.md +26 -0
- package/ai/reference/bf-table-cell-context.md +24 -0
- package/ai/reference/bf-table-cell-directive.md +22 -0
- package/ai/reference/bf-table-column.md +28 -0
- package/ai/reference/bf-table-harness.md +77 -0
- package/ai/reference/bf-table-row-key.md +21 -0
- package/ai/reference/bf-table-sort-direction.md +26 -0
- package/ai/reference/bf-table-sort.md +27 -0
- package/ai/reference/bf-table-stack.md +29 -0
- package/ai/reference/bf-theme.md +5 -4
- package/ai/reference/bf-time-input-harness.md +67 -0
- package/ai/reference/bf-time-input-hour-cycle.md +27 -0
- package/ai/reference/bf-time-input-picker.md +27 -0
- package/ai/reference/bf-tooltip-directive.md +43 -0
- package/ai/reference/bf-tooltip-harness.md +43 -0
- package/ai/reference/bf-tooltip-placement.md +28 -0
- package/ai/reference/bf_color_scheme_storage.md +20 -0
- package/ai/reference/bf_side_panel_data.md +17 -0
- package/ai/reference/bf_sidebar_state_storage.md +20 -0
- package/ai/reference/bf_theme_storage.md +3 -1
- package/ai/reference/provide-bf-color-scheme.md +20 -0
- package/ai/reference/provide-bf-labels.md +13 -4
- package/ai/reference/provide-bf-sidebar-state.md +20 -0
- package/ai/reference/slide-in-from-end.md +24 -0
- package/ai/reference/slide-out-to-end.md +24 -0
- package/bin/bf-ui.js +433 -3
- package/fesm2022/bitforgehq-ui-charts.mjs +3045 -0
- package/fesm2022/bitforgehq-ui-charts.mjs.map +1 -0
- package/fesm2022/bitforgehq-ui-icons.mjs +107 -3
- package/fesm2022/bitforgehq-ui-icons.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui-mobile.mjs +14 -59
- package/fesm2022/bitforgehq-ui-mobile.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui-overlay.mjs +6566 -38
- package/fesm2022/bitforgehq-ui-overlay.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui-testing.mjs +634 -1
- package/fesm2022/bitforgehq-ui-testing.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui.mjs +5708 -137
- package/fesm2022/bitforgehq-ui.mjs.map +1 -1
- package/llms-full.txt +26766 -14470
- package/llms.txt +106 -1
- package/package.json +7 -3
- package/theme.css +101 -0
- package/types/bitforgehq-ui-charts.d.ts +967 -0
- package/types/bitforgehq-ui-icons.d.ts +13 -1
- package/types/bitforgehq-ui-mobile.d.ts +25 -18
- package/types/bitforgehq-ui-overlay.d.ts +1895 -7
- package/types/bitforgehq-ui-testing.d.ts +782 -1
- package/types/bitforgehq-ui.d.ts +2393 -45
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# BfChartCardHeadingLevel
|
|
2
|
+
|
|
3
|
+
Heading level of a chart card title, two on a page or three inside
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
The heading level of a `bf-chart-card` title: `2` for a card on a page, `3` inside a section.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfChartCardHeadingLevel } from '@bitforgehq/ui/charts';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type BfChartCardHeadingLevel = 2 | 3
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Values
|
|
20
|
+
|
|
21
|
+
- `2`
|
|
22
|
+
- `3`
|
|
23
|
+
|
|
24
|
+
## Used by
|
|
25
|
+
|
|
26
|
+
- [bf-chart-card](../components/chart-card.md)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# BfChartCurve
|
|
2
|
+
|
|
3
|
+
The two line shapes, straight segments or a smooth monotone curve
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
The line between two points of a line chart or a sparkline: straight, or a smooth monotone
|
|
8
|
+
cubic curve that never overshoots the values.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { type BfChartCurve } from '@bitforgehq/ui/charts';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
type BfChartCurve = 'linear' | 'smooth'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Values
|
|
21
|
+
|
|
22
|
+
- `linear`
|
|
23
|
+
- `smooth`
|
|
24
|
+
|
|
25
|
+
## Used by
|
|
26
|
+
|
|
27
|
+
- [bf-line-chart](../components/line-chart.md)
|
|
28
|
+
- [bf-sparkline](../components/sparkline.md)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# BfChartHarness
|
|
2
|
+
|
|
3
|
+
Test harness for the charts: reads the series, toggles one and reads the data table
|
|
4
|
+
|
|
5
|
+
Class from `@bitforgehq/ui/testing` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Harness for the `@bitforgehq/ui/charts` charts (`bf-line-chart`, `bf-bar-chart`,
|
|
8
|
+
`bf-donut-chart`). It works through what a user sees: the legend's series names, its toggle
|
|
9
|
+
buttons and the Show data table, so a test never reads the SVG.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { BfChartHarness } from '@bitforgehq/ui/testing';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Signature
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
class BfChartHarness extends ComponentHarness
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Methods
|
|
22
|
+
|
|
23
|
+
### `getLabel(): Promise<string>`
|
|
24
|
+
|
|
25
|
+
The figure's accessible name (`label`, else the chart card's title, else the `chart` label).
|
|
26
|
+
|
|
27
|
+
### `getSeriesNames(): Promise<string[]>`
|
|
28
|
+
|
|
29
|
+
The series (or slice) names in the legend, in order; empty for a chart of one series, which
|
|
30
|
+
draws no legend.
|
|
31
|
+
|
|
32
|
+
### `isSeriesShown(name: string): Promise<boolean>`
|
|
33
|
+
|
|
34
|
+
Whether the legend shows the series (or slice) with this name.
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Description |
|
|
37
|
+
| --------- | -------- | ---------------- |
|
|
38
|
+
| `name` | `string` | The series name. |
|
|
39
|
+
|
|
40
|
+
### `toggleSeries(name: string): Promise<void>`
|
|
41
|
+
|
|
42
|
+
Clicks the legend button of the series (or slice) with this name, as a user would, to hide
|
|
43
|
+
or show it. Throws for an unknown name.
|
|
44
|
+
|
|
45
|
+
| Parameter | Type | Description |
|
|
46
|
+
| --------- | -------- | ---------------- |
|
|
47
|
+
| `name` | `string` | The series name. |
|
|
48
|
+
|
|
49
|
+
### `showData(): Promise<string[][]>`
|
|
50
|
+
|
|
51
|
+
Opens the Show data table (if it is closed) and reads it.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# BfChartLegendPosition
|
|
2
|
+
|
|
3
|
+
The legend positions of a chart, above or below the plot, or none
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Where a chart draws its legend: above the plot, below it, or not at all.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfChartLegendPosition } from '@bitforgehq/ui/charts';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type BfChartLegendPosition = 'top' | 'bottom' | 'none'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Values
|
|
20
|
+
|
|
21
|
+
- `top`
|
|
22
|
+
- `bottom`
|
|
23
|
+
- `none`
|
|
24
|
+
|
|
25
|
+
## Used by
|
|
26
|
+
|
|
27
|
+
- [bf-bar-chart](../components/bar-chart.md)
|
|
28
|
+
- [bf-chart-card](../components/chart-card.md)
|
|
29
|
+
- [bf-donut-chart](../components/donut-chart.md)
|
|
30
|
+
- [bf-line-chart](../components/line-chart.md)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# BfChartSeries
|
|
2
|
+
|
|
3
|
+
One named series of chart values, one per category, null for a gap
|
|
4
|
+
|
|
5
|
+
Interface from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
One named row of values in a chart, one value per category; `null` leaves a gap.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfChartSeries } from '@bitforgehq/ui/charts';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Properties
|
|
14
|
+
|
|
15
|
+
| Name | Type | Default | Description |
|
|
16
|
+
| -------- | ----------------------------- | -------- | --------------------------------------------------------------------------------- |
|
|
17
|
+
| `name` | `string` | required | The series name, shown in the legend, the tooltip and the data table. |
|
|
18
|
+
| `values` | `readonly (number \| null)[]` | required | One value per category, in the categories' order; `null` where there is no value. |
|
|
19
|
+
|
|
20
|
+
## Used by
|
|
21
|
+
|
|
22
|
+
- [bf-bar-chart](../components/bar-chart.md)
|
|
23
|
+
- [bf-line-chart](../components/line-chart.md)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# BfChartValueFormat
|
|
2
|
+
|
|
3
|
+
Function that formats one chart value for axes, tooltips and the table
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Formats a chart value for the axis, the tooltip, the announcements and the data table.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfChartValueFormat } from '@bitforgehq/ui/charts';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type BfChartValueFormat = (value: number) => string
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Used by
|
|
20
|
+
|
|
21
|
+
- [bf-bar-chart](../components/bar-chart.md)
|
|
22
|
+
- [bf-donut-chart](../components/donut-chart.md)
|
|
23
|
+
- [bf-line-chart](../components/line-chart.md)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# BfColorSchemeService
|
|
2
|
+
|
|
3
|
+
The app colour scheme choice and dark state, applied to html and stored
|
|
4
|
+
|
|
5
|
+
Service from `@bitforgehq/ui` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
The app's colour scheme: the user's choice (system, light, dark), kept in
|
|
8
|
+
`BF_COLOR_SCHEME_STORAGE` under `bf-theme`, and whether the app is dark now. With
|
|
9
|
+
`provideBfColorScheme()` (or `provideBfShell()` in a Capacitor app) it toggles the `dark` class
|
|
10
|
+
on `<html>` and stores every change; `prefers-color-scheme` is the source under `system` and is
|
|
11
|
+
followed live. Without either, the signals still compute but nothing is written, so a page that
|
|
12
|
+
merely injects the service never fights the host page's own theme. Storage and the media query are read in the browser only, so a server render
|
|
13
|
+
starts at `system`, light, and writes nothing. No Capacitor: a desktop web app uses it as is,
|
|
14
|
+
and the shell's `BfPlatformService.theme` and `dark` are these same signals.
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { BfColorSchemeService } from '@bitforgehq/ui';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Properties
|
|
21
|
+
|
|
22
|
+
| Name | Type | Default | Description |
|
|
23
|
+
| ------------ | ------------------------------- | ------- | ------------------------------------------------------------------------------------------------- |
|
|
24
|
+
| `scheme` | `WritableSignal<BfColorScheme>` | | The user's choice, stored when `provideBfColorScheme()` is provided; set it with `scheme.set(…)`. |
|
|
25
|
+
| `systemDark` | `Signal<boolean>` | | Whether the system prefers dark (`prefers-color-scheme: dark`), followed live. |
|
|
26
|
+
| `dark` | `Signal<boolean>` | | Whether the app is dark now: the choice, or the system's under `system`. |
|
|
27
|
+
|
|
28
|
+
## Uses
|
|
29
|
+
|
|
30
|
+
- [BfColorScheme](bf-color-scheme.md)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# BfColorScheme
|
|
2
|
+
|
|
3
|
+
The colour scheme choice, following the system or forcing light or dark
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
The app's colour scheme choice: follow the system, or force light or dark.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfColorScheme } from '@bitforgehq/ui';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type BfColorScheme = 'system' | 'light' | 'dark'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Values
|
|
20
|
+
|
|
21
|
+
- `system`
|
|
22
|
+
- `light`
|
|
23
|
+
- `dark`
|
|
24
|
+
|
|
25
|
+
## Used by
|
|
26
|
+
|
|
27
|
+
- [BfColorSchemeService](bf-color-scheme-service.md)
|
|
28
|
+
- [BfPlatformService](bf-platform-service.md)
|
|
29
|
+
- [BfTheme](bf-theme.md)
|
|
30
|
+
- [bf-theme-menu-button](../components/theme-menu-button.md)
|
|
31
|
+
- [bf-theme-switch](../components/theme-switch.md)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# BfComboboxFilter
|
|
2
|
+
|
|
3
|
+
Decides whether a combobox option matches the text typed into the field
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/overlay` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Whether an option matches the typed query (the `filter` of the comboboxes). Called only for a
|
|
8
|
+
query that is not empty.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { type BfComboboxFilter } from '@bitforgehq/ui/overlay';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
type BfComboboxFilter<T = string> = (option: BfComboboxOption<T>, query: string) => boolean
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Uses
|
|
21
|
+
|
|
22
|
+
- [BfComboboxOption](bf-combobox-option.md)
|
|
23
|
+
|
|
24
|
+
## Used by
|
|
25
|
+
|
|
26
|
+
- [bf-combobox](../components/combobox.md)
|
|
27
|
+
- [bf-multi-combobox](../components/multi-combobox.md)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# BfComboboxHarness
|
|
2
|
+
|
|
3
|
+
Test harness for the comboboxes: types, reads and picks options and tags
|
|
4
|
+
|
|
5
|
+
Class from `@bitforgehq/ui/testing` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Harness for `bf-combobox` and `bf-multi-combobox`. Its option list renders in the CDK overlay
|
|
8
|
+
container while open (found through the input's `aria-controls`); it works by option label, so a
|
|
9
|
+
test never needs the option values. Its `label` filter matches the visible label, else the
|
|
10
|
+
`aria-label`.
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { BfComboboxHarness } from '@bitforgehq/ui/testing';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Signature
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
class BfComboboxHarness extends ComponentHarness
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Methods
|
|
23
|
+
|
|
24
|
+
### `getLabel(): Promise<string>`
|
|
25
|
+
|
|
26
|
+
The visible label without the required mark, else the `aria-label`.
|
|
27
|
+
|
|
28
|
+
### `open(): Promise<void>`
|
|
29
|
+
|
|
30
|
+
Opens the option list with a click into the field; does nothing while it is open.
|
|
31
|
+
|
|
32
|
+
### `close(): Promise<void>`
|
|
33
|
+
|
|
34
|
+
Closes the option list with `Escape`, as a user would; does nothing while it is closed.
|
|
35
|
+
|
|
36
|
+
### `isOpen(): Promise<boolean>`
|
|
37
|
+
|
|
38
|
+
Whether the option list is open (`aria-expanded`).
|
|
39
|
+
|
|
40
|
+
### `type(query: string): Promise<void>`
|
|
41
|
+
|
|
42
|
+
Replaces the field's text with `query`, key by key as a user types; the list opens filtered.
|
|
43
|
+
|
|
44
|
+
| Parameter | Type | Description |
|
|
45
|
+
| --------- | -------- | ----------------- |
|
|
46
|
+
| `query` | `string` | The text to type. |
|
|
47
|
+
|
|
48
|
+
### `getOptionLabels(): Promise<string[]>`
|
|
49
|
+
|
|
50
|
+
The labels of the listed options, in order, opening the list first when it is closed.
|
|
51
|
+
|
|
52
|
+
### `selectOption(label: string): Promise<void>`
|
|
53
|
+
|
|
54
|
+
Picks the listed option with this label with a click, opening the list first when it is
|
|
55
|
+
closed. Throws for an unknown or disabled option.
|
|
56
|
+
|
|
57
|
+
| Parameter | Type | Description |
|
|
58
|
+
| --------- | -------- | ------------------- |
|
|
59
|
+
| `label` | `string` | The option's label. |
|
|
60
|
+
|
|
61
|
+
### `getValueText(): Promise<string>`
|
|
62
|
+
|
|
63
|
+
The field's text: the picked option's label on a `bf-combobox` (or the text being typed), the
|
|
64
|
+
typed text on a `bf-multi-combobox` (its picks are tags, see `getChipLabels()`).
|
|
65
|
+
|
|
66
|
+
### `getChipLabels(): Promise<string[]>`
|
|
67
|
+
|
|
68
|
+
The labels of a `bf-multi-combobox`'s tags, in order; empty for a `bf-combobox`.
|
|
69
|
+
|
|
70
|
+
### `removeChip(label: string): Promise<void>`
|
|
71
|
+
|
|
72
|
+
Removes the tag with this label with its remove button. Throws for an unknown tag or one
|
|
73
|
+
without a remove button (a disabled or read-only field).
|
|
74
|
+
|
|
75
|
+
| Parameter | Type | Description |
|
|
76
|
+
| --------- | -------- | ---------------- |
|
|
77
|
+
| `label` | `string` | The tag's label. |
|
|
78
|
+
|
|
79
|
+
### `isDisabled(): Promise<boolean>`
|
|
80
|
+
|
|
81
|
+
Whether the field is disabled.
|
|
82
|
+
|
|
83
|
+
### `focus(): Promise<void>`
|
|
84
|
+
|
|
85
|
+
Focuses the input.
|
|
86
|
+
|
|
87
|
+
### `blur(): Promise<void>`
|
|
88
|
+
|
|
89
|
+
Blurs the input, which closes the list and marks a bound form field touched.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# BfComboboxOption
|
|
2
|
+
|
|
3
|
+
One combobox choice with its value, label, description, group and disabled flag
|
|
4
|
+
|
|
5
|
+
Interface from `@bitforgehq/ui/overlay` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
One choice of `bf-combobox` and `bf-multi-combobox`; `value` is any type (a string by default).
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfComboboxOption } from '@bitforgehq/ui/overlay';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
interface BfComboboxOption<T = string>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Properties
|
|
20
|
+
|
|
21
|
+
| Name | Type | Default | Description |
|
|
22
|
+
| ------------- | --------- | -------- | ----------------------------------------------------------------------------------------- |
|
|
23
|
+
| `value` | `T` | required | The value the combobox takes when this option is picked. |
|
|
24
|
+
| `label` | `string` | required | The option's text in the list, and the field's text once it is picked. |
|
|
25
|
+
| `description` | `string` | | A second, muted line under the label (an email, a role). |
|
|
26
|
+
| `disabled` | `boolean` | | Whether this option cannot be picked; it stays in the list, skipped by the arrow keys. |
|
|
27
|
+
| `group` | `string` | | The heading this option is listed under; options with the same group are listed together. |
|
|
28
|
+
|
|
29
|
+
## Used by
|
|
30
|
+
|
|
31
|
+
- [bf-combobox](../components/combobox.md)
|
|
32
|
+
- [BfComboboxFilter](bf-combobox-filter.md)
|
|
33
|
+
- [bf-multi-combobox](../components/multi-combobox.md)
|
|
@@ -19,6 +19,8 @@ type BfCompareWith<T> = (optionValue: T, value: T) => boolean
|
|
|
19
19
|
|
|
20
20
|
## Used by
|
|
21
21
|
|
|
22
|
+
- [bf-combobox](../components/combobox.md)
|
|
23
|
+
- [bf-multi-combobox](../components/multi-combobox.md)
|
|
22
24
|
- [bf-radio-group](../components/radio-group.md)
|
|
23
25
|
- [bf-segmented](../components/segmented.md)
|
|
24
26
|
- [bf-select](../components/select.md)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# BfDateInputHarness
|
|
2
|
+
|
|
3
|
+
Test harness for the date input: types a date or picks one in its calendar
|
|
4
|
+
|
|
5
|
+
Class from `@bitforgehq/ui/testing` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Harness for `bf-date-input`. It reads and types the field as a user sees it (in its locale's
|
|
8
|
+
order) and picks a date through the calendar popover with `BfCalendarHarness`.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { BfDateInputHarness } from '@bitforgehq/ui/testing';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
class BfDateInputHarness extends ComponentHarness
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
### `getLabel(): Promise<string>`
|
|
23
|
+
|
|
24
|
+
The visible label without the required mark, else the field's `aria-label`.
|
|
25
|
+
|
|
26
|
+
### `getValue(): Promise<string>`
|
|
27
|
+
|
|
28
|
+
The field's text as the locale shows it ("14/10/2026"); the ISO value in native mode.
|
|
29
|
+
|
|
30
|
+
### `setValue(text: string): Promise<void>`
|
|
31
|
+
|
|
32
|
+
Types a date as a user would: clears the field, then types each run of digits (or letters)
|
|
33
|
+
into the next part in the field's order, such as "14/10/2026" in an en-GB field. In native mode it sets the
|
|
34
|
+
platform input to the ISO value.
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Description |
|
|
37
|
+
| --------- | -------- | ------------------------------- |
|
|
38
|
+
| `text` | `string` | The date as the field shows it. |
|
|
39
|
+
|
|
40
|
+
### `clear(): Promise<void>`
|
|
41
|
+
|
|
42
|
+
Clears every part with `Backspace`, as a user would.
|
|
43
|
+
|
|
44
|
+
### `isInvalid(): Promise<boolean>`
|
|
45
|
+
|
|
46
|
+
Whether the field shows its error state (`aria-invalid` on its parts or native input).
|
|
47
|
+
|
|
48
|
+
### `isDisabled(): Promise<boolean>`
|
|
49
|
+
|
|
50
|
+
Whether the field is disabled.
|
|
51
|
+
|
|
52
|
+
### `openPicker(): Promise<void>`
|
|
53
|
+
|
|
54
|
+
Opens the calendar popover with a click on its button; throws when the field has none or it is disabled.
|
|
55
|
+
|
|
56
|
+
### `isPickerOpen(): Promise<boolean>`
|
|
57
|
+
|
|
58
|
+
Whether the calendar popover is open (`aria-expanded` on its button).
|
|
59
|
+
|
|
60
|
+
### `pickDate(iso: string): Promise<void>`
|
|
61
|
+
|
|
62
|
+
Picks a date in the calendar as a user would: opens the popover (when closed), then picks the
|
|
63
|
+
day through the calendar's harness, which closes it.
|
|
64
|
+
|
|
65
|
+
| Parameter | Type | Description |
|
|
66
|
+
| --------- | -------- | ------------------------------------------- |
|
|
67
|
+
| `iso` | `string` | The ISO date to pick, such as '2026-11-03'. |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# BfDateInputPicker
|
|
2
|
+
|
|
3
|
+
Whether a date input offers a calendar popover besides typing
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/overlay` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
How `bf-date-input` picks a date besides typing: `calendar` adds a button that opens a
|
|
8
|
+
`bf-calendar` in a popover, `none` keeps the field typed only.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { type BfDateInputPicker } from '@bitforgehq/ui/overlay';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
type BfDateInputPicker = 'calendar' | 'none'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Values
|
|
21
|
+
|
|
22
|
+
- `calendar`
|
|
23
|
+
- `none`
|
|
24
|
+
|
|
25
|
+
## Used by
|
|
26
|
+
|
|
27
|
+
- [bf-date-input](../components/date-input.md)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# BfDateTimeInputHarness
|
|
2
|
+
|
|
3
|
+
Test harness for the date and time input: types or picks a date and time
|
|
4
|
+
|
|
5
|
+
Class from `@bitforgehq/ui/testing` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
Harness for `bf-datetime-input`. It reads and types the field as a user sees it and picks the
|
|
8
|
+
date in the popover's calendar and the time in its list.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { BfDateTimeInputHarness } from '@bitforgehq/ui/testing';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
class BfDateTimeInputHarness extends ComponentHarness
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
### `getLabel(): Promise<string>`
|
|
23
|
+
|
|
24
|
+
The visible label without the required mark, else the field's `aria-label`.
|
|
25
|
+
|
|
26
|
+
### `getValue(): Promise<string>`
|
|
27
|
+
|
|
28
|
+
The field's text as the locale shows it ("14/10/2026, 09:30"); the ISO value in native mode.
|
|
29
|
+
|
|
30
|
+
### `setValue(text: string): Promise<void>`
|
|
31
|
+
|
|
32
|
+
Types a date and time as a user would: clears the field, then types each run of digits (or letters)
|
|
33
|
+
into the next part in the field's order, such as "14/10/2026, 09:30" in an en-GB field. In native mode it sets the
|
|
34
|
+
platform input to the ISO value.
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Description |
|
|
37
|
+
| --------- | -------- | ---------------------------------------- |
|
|
38
|
+
| `text` | `string` | The date and time as the field shows it. |
|
|
39
|
+
|
|
40
|
+
### `clear(): Promise<void>`
|
|
41
|
+
|
|
42
|
+
Clears every part with `Backspace`, as a user would.
|
|
43
|
+
|
|
44
|
+
### `isInvalid(): Promise<boolean>`
|
|
45
|
+
|
|
46
|
+
Whether the field shows its error state (`aria-invalid` on its parts or native input).
|
|
47
|
+
|
|
48
|
+
### `isDisabled(): Promise<boolean>`
|
|
49
|
+
|
|
50
|
+
Whether the field is disabled.
|
|
51
|
+
|
|
52
|
+
### `openPicker(): Promise<void>`
|
|
53
|
+
|
|
54
|
+
Opens the popover with a click on its button; throws when the field has none or it is disabled.
|
|
55
|
+
|
|
56
|
+
### `isPickerOpen(): Promise<boolean>`
|
|
57
|
+
|
|
58
|
+
Whether the popover is open (`aria-expanded` on its button).
|
|
59
|
+
|
|
60
|
+
### `pickDate(iso: string): Promise<void>`
|
|
61
|
+
|
|
62
|
+
Picks a date in the calendar as a user would: opens the popover (when closed), then picks the
|
|
63
|
+
day through the calendar's harness. The popover stays open, with focus on its time list.
|
|
64
|
+
|
|
65
|
+
| Parameter | Type | Description |
|
|
66
|
+
| --------- | -------- | ------------------------------------------- |
|
|
67
|
+
| `iso` | `string` | The ISO date to pick, such as '2026-11-03'. |
|
|
68
|
+
|
|
69
|
+
### `pickTime(time: string): Promise<void>`
|
|
70
|
+
|
|
71
|
+
Picks a time in the list as a user would: opens the popover (when closed), then clicks the
|
|
72
|
+
time, which closes it. Throws for a time the list does not hold (off the `step`) or disables.
|
|
73
|
+
|
|
74
|
+
| Parameter | Type | Description |
|
|
75
|
+
| --------- | -------- | -------------------------------------- |
|
|
76
|
+
| `time` | `string` | The ISO time to pick, such as '14:30'. |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# BfDateTimeInputPicker
|
|
2
|
+
|
|
3
|
+
Whether a date and time input offers a calendar and time list popover
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui/overlay` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
How `bf-datetime-input` picks a date and time besides typing: `popover` adds a button that
|
|
8
|
+
opens a calendar and a list of times side by side, `none` keeps the field typed only.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { type BfDateTimeInputPicker } from '@bitforgehq/ui/overlay';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Signature
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
type BfDateTimeInputPicker = 'popover' | 'none'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Values
|
|
21
|
+
|
|
22
|
+
- `popover`
|
|
23
|
+
- `none`
|
|
24
|
+
|
|
25
|
+
## Used by
|
|
26
|
+
|
|
27
|
+
- [bf-datetime-input](../components/datetime-input.md)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# BfDescriptionListLayout
|
|
2
|
+
|
|
3
|
+
The two description list layouts, divided label-value rows or a grid of tiles
|
|
4
|
+
|
|
5
|
+
Type from `@bitforgehq/ui` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
The layout of a `bf-description-list`: `rows` (label beside value, divided) or `grid` (tiles).
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfDescriptionListLayout } from '@bitforgehq/ui';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Signature
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type BfDescriptionListLayout = 'rows' | 'grid'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Values
|
|
20
|
+
|
|
21
|
+
- `rows`
|
|
22
|
+
- `grid`
|
|
23
|
+
|
|
24
|
+
## Used by
|
|
25
|
+
|
|
26
|
+
- [bf-description-list](../components/description-list.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# BfDonutSlice
|
|
2
|
+
|
|
3
|
+
One labelled slice of a donut chart with its value
|
|
4
|
+
|
|
5
|
+
Interface from `@bitforgehq/ui/charts` · since 0.3.1
|
|
6
|
+
|
|
7
|
+
One slice of a `bf-donut-chart`.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { type BfDonutSlice } from '@bitforgehq/ui/charts';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Properties
|
|
14
|
+
|
|
15
|
+
| Name | Type | Default | Description |
|
|
16
|
+
| ------- | -------- | -------- | ------------------------------------------------------------------------------------------------- |
|
|
17
|
+
| `label` | `string` | required | The slice name, shown in the legend, the tooltip and the data table. |
|
|
18
|
+
| `value` | `number` | required | The slice's value; its share of the total sets its angle. Zero and negative values draw no slice. |
|
|
19
|
+
|
|
20
|
+
## Used by
|
|
21
|
+
|
|
22
|
+
- [bf-donut-chart](../components/donut-chart.md)
|