@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.
Files changed (158) hide show
  1. package/CHANGELOG.md +598 -0
  2. package/README.md +18 -11
  3. package/ai/MANIFEST.index.json +306 -0
  4. package/ai/MANIFEST.json +8915 -3788
  5. package/ai/REFERENCE.index.json +476 -0
  6. package/ai/REFERENCE.json +5810 -2905
  7. package/ai/UI_GUIDE.md +212 -58
  8. package/ai/components/app-frame.md +328 -0
  9. package/ai/components/back-button.md +42 -2
  10. package/ai/components/badge.md +17 -7
  11. package/ai/components/bar-chart.md +188 -0
  12. package/ai/components/breadcrumb-item.md +121 -0
  13. package/ai/components/breadcrumb.md +277 -0
  14. package/ai/components/button.md +82 -15
  15. package/ai/components/calendar.md +300 -0
  16. package/ai/components/card.md +119 -4
  17. package/ai/components/chart-card.md +283 -0
  18. package/ai/components/combobox.md +411 -0
  19. package/ai/components/date-input.md +396 -0
  20. package/ai/components/datetime-input.md +215 -0
  21. package/ai/components/description-item.md +111 -0
  22. package/ai/components/description-list.md +160 -0
  23. package/ai/components/donut-chart.md +169 -0
  24. package/ai/components/empty-state.md +99 -6
  25. package/ai/components/header.md +71 -2
  26. package/ai/components/icon-button.md +74 -16
  27. package/ai/components/icon.md +63 -7
  28. package/ai/components/line-chart.md +234 -0
  29. package/ai/components/list.md +70 -6
  30. package/ai/components/menu.md +5 -0
  31. package/ai/components/multi-combobox.md +257 -0
  32. package/ai/components/nav-group.md +178 -0
  33. package/ai/components/nav-item.md +210 -0
  34. package/ai/components/page-header.md +237 -0
  35. package/ai/components/pagination.md +173 -0
  36. package/ai/components/popover.md +250 -0
  37. package/ai/components/side-panel.md +391 -0
  38. package/ai/components/sidebar-toggle.md +287 -0
  39. package/ai/components/sidebar.md +541 -0
  40. package/ai/components/skeleton.md +215 -0
  41. package/ai/components/sparkline.md +188 -0
  42. package/ai/components/stat.md +297 -0
  43. package/ai/components/tab-group.md +226 -0
  44. package/ai/components/tab-panel.md +163 -0
  45. package/ai/components/table.md +697 -0
  46. package/ai/components/tabs.md +46 -2
  47. package/ai/components/theme-menu-button.md +182 -0
  48. package/ai/components/theme-switch.md +170 -0
  49. package/ai/components/time-input.md +240 -0
  50. package/ai/components/toolbar.md +354 -0
  51. package/ai/components/tooltip.md +230 -0
  52. package/ai/components/top-nav.md +159 -0
  53. package/ai/reference/bf-app-frame-breakpoint.md +27 -0
  54. package/ai/reference/bf-app-frame-content-width.md +29 -0
  55. package/ai/reference/bf-badge-appearance.md +36 -0
  56. package/ai/reference/bf-badge-variant.md +1 -1
  57. package/ai/reference/bf-bar-chart-orientation.md +27 -0
  58. package/ai/reference/bf-button-appearance.md +36 -0
  59. package/ai/reference/bf-button-variant.md +1 -1
  60. package/ai/reference/bf-calendar-disabled-date.md +23 -0
  61. package/ai/reference/bf-calendar-harness.md +51 -0
  62. package/ai/reference/bf-calendar-weekday.md +31 -0
  63. package/ai/reference/bf-chart-card-heading-level.md +26 -0
  64. package/ai/reference/bf-chart-curve.md +28 -0
  65. package/ai/reference/bf-chart-harness.md +51 -0
  66. package/ai/reference/bf-chart-legend-position.md +30 -0
  67. package/ai/reference/bf-chart-series.md +23 -0
  68. package/ai/reference/bf-chart-value-format.md +23 -0
  69. package/ai/reference/bf-color-scheme-service.md +30 -0
  70. package/ai/reference/bf-color-scheme.md +31 -0
  71. package/ai/reference/bf-combobox-filter.md +27 -0
  72. package/ai/reference/bf-combobox-harness.md +89 -0
  73. package/ai/reference/bf-combobox-option.md +33 -0
  74. package/ai/reference/bf-compare-with.md +2 -0
  75. package/ai/reference/bf-date-input-harness.md +67 -0
  76. package/ai/reference/bf-date-input-picker.md +27 -0
  77. package/ai/reference/bf-date-time-input-harness.md +76 -0
  78. package/ai/reference/bf-date-time-input-picker.md +27 -0
  79. package/ai/reference/bf-description-list-layout.md +26 -0
  80. package/ai/reference/bf-donut-slice.md +22 -0
  81. package/ai/reference/bf-empty-state-heading-level.md +1 -1
  82. package/ai/reference/bf-empty-state-heading.md +33 -0
  83. package/ai/reference/bf-labels.md +73 -20
  84. package/ai/reference/bf-menu-button-variant.md +1 -0
  85. package/ai/reference/bf-menu-placement.md +1 -0
  86. package/ai/reference/bf-overlay-options.md +28 -27
  87. package/ai/reference/bf-overlay-placement.md +34 -0
  88. package/ai/reference/bf-overlay-position.md +1 -1
  89. package/ai/reference/bf-overlay-service.md +5 -3
  90. package/ai/reference/bf-page-header-heading-level.md +26 -0
  91. package/ai/reference/bf-pagination-harness.md +61 -0
  92. package/ai/reference/bf-platform-service.md +17 -15
  93. package/ai/reference/bf-popover-harness.md +42 -0
  94. package/ai/reference/bf-popover-placement.md +28 -0
  95. package/ai/reference/bf-popover-trigger-directive.md +56 -0
  96. package/ai/reference/bf-side-panel-config.md +35 -0
  97. package/ai/reference/bf-side-panel-harness.md +34 -0
  98. package/ai/reference/bf-side-panel-ref.md +44 -0
  99. package/ai/reference/bf-side-panel-service.md +43 -0
  100. package/ai/reference/bf-side-panel-template-context.md +32 -0
  101. package/ai/reference/bf-side-panel-width.md +28 -0
  102. package/ai/reference/bf-sidebar-state-service.md +21 -0
  103. package/ai/reference/bf-sidebar-toggle-harness.md +32 -0
  104. package/ai/reference/bf-size.md +13 -0
  105. package/ai/reference/bf-skeleton-shape.md +28 -0
  106. package/ai/reference/bf-stat-appearance.md +33 -0
  107. package/ai/reference/bf-stat-trend-intent.md +27 -0
  108. package/ai/reference/bf-stat-trend.md +27 -0
  109. package/ai/reference/bf-stat-variant.md +26 -0
  110. package/ai/reference/bf-tab-group-harness.md +44 -0
  111. package/ai/reference/bf-table-align.md +26 -0
  112. package/ai/reference/bf-table-cell-context.md +24 -0
  113. package/ai/reference/bf-table-cell-directive.md +22 -0
  114. package/ai/reference/bf-table-column.md +28 -0
  115. package/ai/reference/bf-table-harness.md +77 -0
  116. package/ai/reference/bf-table-row-key.md +21 -0
  117. package/ai/reference/bf-table-sort-direction.md +26 -0
  118. package/ai/reference/bf-table-sort.md +27 -0
  119. package/ai/reference/bf-table-stack.md +29 -0
  120. package/ai/reference/bf-theme.md +5 -4
  121. package/ai/reference/bf-time-input-harness.md +67 -0
  122. package/ai/reference/bf-time-input-hour-cycle.md +27 -0
  123. package/ai/reference/bf-time-input-picker.md +27 -0
  124. package/ai/reference/bf-tooltip-directive.md +43 -0
  125. package/ai/reference/bf-tooltip-harness.md +43 -0
  126. package/ai/reference/bf-tooltip-placement.md +28 -0
  127. package/ai/reference/bf_color_scheme_storage.md +20 -0
  128. package/ai/reference/bf_side_panel_data.md +17 -0
  129. package/ai/reference/bf_sidebar_state_storage.md +20 -0
  130. package/ai/reference/bf_theme_storage.md +3 -1
  131. package/ai/reference/provide-bf-color-scheme.md +20 -0
  132. package/ai/reference/provide-bf-labels.md +13 -4
  133. package/ai/reference/provide-bf-sidebar-state.md +20 -0
  134. package/ai/reference/slide-in-from-end.md +24 -0
  135. package/ai/reference/slide-out-to-end.md +24 -0
  136. package/bin/bf-ui.js +433 -3
  137. package/fesm2022/bitforgehq-ui-charts.mjs +3045 -0
  138. package/fesm2022/bitforgehq-ui-charts.mjs.map +1 -0
  139. package/fesm2022/bitforgehq-ui-icons.mjs +107 -3
  140. package/fesm2022/bitforgehq-ui-icons.mjs.map +1 -1
  141. package/fesm2022/bitforgehq-ui-mobile.mjs +14 -59
  142. package/fesm2022/bitforgehq-ui-mobile.mjs.map +1 -1
  143. package/fesm2022/bitforgehq-ui-overlay.mjs +6566 -38
  144. package/fesm2022/bitforgehq-ui-overlay.mjs.map +1 -1
  145. package/fesm2022/bitforgehq-ui-testing.mjs +634 -1
  146. package/fesm2022/bitforgehq-ui-testing.mjs.map +1 -1
  147. package/fesm2022/bitforgehq-ui.mjs +5708 -137
  148. package/fesm2022/bitforgehq-ui.mjs.map +1 -1
  149. package/llms-full.txt +26766 -14470
  150. package/llms.txt +106 -1
  151. package/package.json +7 -3
  152. package/theme.css +101 -0
  153. package/types/bitforgehq-ui-charts.d.ts +967 -0
  154. package/types/bitforgehq-ui-icons.d.ts +13 -1
  155. package/types/bitforgehq-ui-mobile.d.ts +25 -18
  156. package/types/bitforgehq-ui-overlay.d.ts +1895 -7
  157. package/types/bitforgehq-ui-testing.d.ts +782 -1
  158. 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)
@@ -23,4 +23,4 @@ type BfEmptyStateHeadingLevel = 2 | 3
23
23
 
24
24
  ## Used by
25
25
 
26
- - [bf-empty-state](../components/empty-state.md)
26
+ - [BfEmptyStateHeading](bf-empty-state-heading.md)