@bitforgehq/ui 0.3.0 → 0.3.1

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 (144) hide show
  1. package/CHANGELOG.md +482 -0
  2. package/README.md +17 -11
  3. package/ai/MANIFEST.index.json +288 -0
  4. package/ai/MANIFEST.json +8716 -3926
  5. package/ai/REFERENCE.index.json +413 -0
  6. package/ai/REFERENCE.json +4710 -2047
  7. package/ai/UI_GUIDE.md +185 -57
  8. package/ai/components/back-button.md +42 -2
  9. package/ai/components/badge.md +17 -7
  10. package/ai/components/bar-chart.md +188 -0
  11. package/ai/components/breadcrumb-item.md +121 -0
  12. package/ai/components/breadcrumb.md +277 -0
  13. package/ai/components/button.md +82 -15
  14. package/ai/components/calendar.md +300 -0
  15. package/ai/components/card.md +63 -2
  16. package/ai/components/chart-card.md +283 -0
  17. package/ai/components/combobox.md +411 -0
  18. package/ai/components/date-input.md +396 -0
  19. package/ai/components/datetime-input.md +215 -0
  20. package/ai/components/description-item.md +111 -0
  21. package/ai/components/description-list.md +160 -0
  22. package/ai/components/donut-chart.md +169 -0
  23. package/ai/components/header.md +67 -2
  24. package/ai/components/icon-button.md +74 -16
  25. package/ai/components/icon.md +63 -7
  26. package/ai/components/line-chart.md +234 -0
  27. package/ai/components/list.md +70 -6
  28. package/ai/components/menu.md +5 -0
  29. package/ai/components/multi-combobox.md +257 -0
  30. package/ai/components/nav-group.md +178 -0
  31. package/ai/components/nav-item.md +210 -0
  32. package/ai/components/page-header.md +237 -0
  33. package/ai/components/pagination.md +173 -0
  34. package/ai/components/popover.md +250 -0
  35. package/ai/components/side-panel.md +391 -0
  36. package/ai/components/sidebar.md +363 -0
  37. package/ai/components/skeleton.md +215 -0
  38. package/ai/components/sparkline.md +188 -0
  39. package/ai/components/stat.md +233 -0
  40. package/ai/components/tab-group.md +226 -0
  41. package/ai/components/tab-panel.md +163 -0
  42. package/ai/components/table.md +568 -0
  43. package/ai/components/tabs.md +42 -2
  44. package/ai/components/theme-menu-button.md +182 -0
  45. package/ai/components/theme-switch.md +170 -0
  46. package/ai/components/time-input.md +240 -0
  47. package/ai/components/toolbar.md +289 -0
  48. package/ai/components/tooltip.md +230 -0
  49. package/ai/components/top-nav.md +159 -0
  50. package/ai/reference/bf-badge-appearance.md +36 -0
  51. package/ai/reference/bf-badge-variant.md +1 -1
  52. package/ai/reference/bf-bar-chart-orientation.md +27 -0
  53. package/ai/reference/bf-button-appearance.md +36 -0
  54. package/ai/reference/bf-button-variant.md +1 -1
  55. package/ai/reference/bf-calendar-disabled-date.md +23 -0
  56. package/ai/reference/bf-calendar-harness.md +51 -0
  57. package/ai/reference/bf-calendar-weekday.md +31 -0
  58. package/ai/reference/bf-chart-card-heading-level.md +26 -0
  59. package/ai/reference/bf-chart-curve.md +28 -0
  60. package/ai/reference/bf-chart-harness.md +51 -0
  61. package/ai/reference/bf-chart-legend-position.md +30 -0
  62. package/ai/reference/bf-chart-series.md +23 -0
  63. package/ai/reference/bf-chart-value-format.md +23 -0
  64. package/ai/reference/bf-color-scheme-service.md +30 -0
  65. package/ai/reference/bf-color-scheme.md +31 -0
  66. package/ai/reference/bf-combobox-filter.md +27 -0
  67. package/ai/reference/bf-combobox-harness.md +89 -0
  68. package/ai/reference/bf-combobox-option.md +33 -0
  69. package/ai/reference/bf-compare-with.md +2 -0
  70. package/ai/reference/bf-date-input-harness.md +67 -0
  71. package/ai/reference/bf-date-input-picker.md +27 -0
  72. package/ai/reference/bf-date-time-input-harness.md +76 -0
  73. package/ai/reference/bf-date-time-input-picker.md +27 -0
  74. package/ai/reference/bf-description-list-layout.md +26 -0
  75. package/ai/reference/bf-donut-slice.md +22 -0
  76. package/ai/reference/bf-labels.md +67 -20
  77. package/ai/reference/bf-menu-button-variant.md +1 -0
  78. package/ai/reference/bf-menu-placement.md +1 -0
  79. package/ai/reference/bf-overlay-options.md +28 -27
  80. package/ai/reference/bf-overlay-placement.md +34 -0
  81. package/ai/reference/bf-overlay-position.md +1 -1
  82. package/ai/reference/bf-overlay-service.md +5 -3
  83. package/ai/reference/bf-page-header-heading-level.md +26 -0
  84. package/ai/reference/bf-pagination-harness.md +61 -0
  85. package/ai/reference/bf-platform-service.md +17 -15
  86. package/ai/reference/bf-popover-harness.md +42 -0
  87. package/ai/reference/bf-popover-placement.md +28 -0
  88. package/ai/reference/bf-popover-trigger-directive.md +56 -0
  89. package/ai/reference/bf-side-panel-config.md +35 -0
  90. package/ai/reference/bf-side-panel-harness.md +34 -0
  91. package/ai/reference/bf-side-panel-ref.md +44 -0
  92. package/ai/reference/bf-side-panel-service.md +43 -0
  93. package/ai/reference/bf-side-panel-template-context.md +32 -0
  94. package/ai/reference/bf-side-panel-width.md +28 -0
  95. package/ai/reference/bf-size.md +12 -0
  96. package/ai/reference/bf-skeleton-shape.md +28 -0
  97. package/ai/reference/bf-stat-trend-intent.md +27 -0
  98. package/ai/reference/bf-stat-trend.md +27 -0
  99. package/ai/reference/bf-stat-variant.md +26 -0
  100. package/ai/reference/bf-tab-group-harness.md +44 -0
  101. package/ai/reference/bf-table-align.md +26 -0
  102. package/ai/reference/bf-table-cell-context.md +24 -0
  103. package/ai/reference/bf-table-cell-directive.md +22 -0
  104. package/ai/reference/bf-table-column.md +28 -0
  105. package/ai/reference/bf-table-harness.md +77 -0
  106. package/ai/reference/bf-table-row-key.md +21 -0
  107. package/ai/reference/bf-table-sort-direction.md +26 -0
  108. package/ai/reference/bf-table-sort.md +27 -0
  109. package/ai/reference/bf-theme.md +5 -4
  110. package/ai/reference/bf-time-input-harness.md +67 -0
  111. package/ai/reference/bf-time-input-hour-cycle.md +27 -0
  112. package/ai/reference/bf-time-input-picker.md +27 -0
  113. package/ai/reference/bf-tooltip-directive.md +43 -0
  114. package/ai/reference/bf-tooltip-harness.md +43 -0
  115. package/ai/reference/bf-tooltip-placement.md +28 -0
  116. package/ai/reference/bf_color_scheme_storage.md +20 -0
  117. package/ai/reference/bf_side_panel_data.md +17 -0
  118. package/ai/reference/bf_theme_storage.md +3 -1
  119. package/ai/reference/provide-bf-color-scheme.md +20 -0
  120. package/ai/reference/provide-bf-labels.md +12 -4
  121. package/ai/reference/slide-in-from-end.md +24 -0
  122. package/ai/reference/slide-out-to-end.md +24 -0
  123. package/fesm2022/bitforgehq-ui-charts.mjs +3045 -0
  124. package/fesm2022/bitforgehq-ui-charts.mjs.map +1 -0
  125. package/fesm2022/bitforgehq-ui-icons.mjs +107 -3
  126. package/fesm2022/bitforgehq-ui-icons.mjs.map +1 -1
  127. package/fesm2022/bitforgehq-ui-mobile.mjs +14 -59
  128. package/fesm2022/bitforgehq-ui-mobile.mjs.map +1 -1
  129. package/fesm2022/bitforgehq-ui-overlay.mjs +6436 -33
  130. package/fesm2022/bitforgehq-ui-overlay.mjs.map +1 -1
  131. package/fesm2022/bitforgehq-ui-testing.mjs +618 -1
  132. package/fesm2022/bitforgehq-ui-testing.mjs.map +1 -1
  133. package/fesm2022/bitforgehq-ui.mjs +5092 -153
  134. package/fesm2022/bitforgehq-ui.mjs.map +1 -1
  135. package/llms-full.txt +25177 -14398
  136. package/llms.txt +95 -1
  137. package/package.json +7 -3
  138. package/theme.css +101 -0
  139. package/types/bitforgehq-ui-charts.d.ts +967 -0
  140. package/types/bitforgehq-ui-icons.d.ts +13 -1
  141. package/types/bitforgehq-ui-mobile.d.ts +25 -18
  142. package/types/bitforgehq-ui-overlay.d.ts +1844 -7
  143. package/types/bitforgehq-ui-testing.d.ts +748 -1
  144. package/types/bitforgehq-ui.d.ts +2136 -44
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # @bitforgehq/ui
2
2
 
3
- > Bitforge's Angular 22 component library (Meadow Sage design, Tailwind v4, signals-first) and Capacitor app shell.
3
+ > Bitforge's Angular 22 component library (Meadow Sage palette with an indigo default primary to override, Tailwind v4, signals-first) and Capacitor app shell.
4
4
 
5
5
  - [Guide for agents](https://bitforge-ui.web.app/ai/UI_GUIDE.md)
6
6
 
@@ -30,47 +30,75 @@
30
30
  - [bf-action-bar](https://bitforge-ui.web.app/ai/components/action-bar.md): Floating pill of contextual actions that appears while items are selected ([docs](https://bitforge-ui.web.app/components/action-bar))
31
31
  - [bf-button](https://bitforge-ui.web.app/ai/components/button.md): Pill-shaped action button with five variants, three sizes and a loading state ([docs](https://bitforge-ui.web.app/components/button))
32
32
  - [bf-icon-button](https://bitforge-ui.web.app/ai/components/icon-button.md): Round icon-only button for toolbars and rows, with a required accessible label ([docs](https://bitforge-ui.web.app/components/icon-button))
33
+ - [bf-toolbar](https://bitforge-ui.web.app/ai/components/toolbar.md): Dense row of search, filters, view switch, result count and actions ([docs](https://bitforge-ui.web.app/components/toolbar))
33
34
 
34
35
  ### Forms
35
36
 
37
+ - [bf-calendar](https://bitforge-ui.web.app/ai/components/calendar.md): Inline month calendar for picking one date, with month and year jumps ([docs](https://bitforge-ui.web.app/components/calendar))
36
38
  - [bf-checkbox](https://bitforge-ui.web.app/ai/components/checkbox.md): Rounded checkbox with an optional label that binds to Signal Forms ([docs](https://bitforge-ui.web.app/components/checkbox))
37
39
  - [bf-chip](https://bitforge-ui.web.app/ai/components/chip.md): Toggleable filter chip with a check mark when selected, in tonal or ink style ([docs](https://bitforge-ui.web.app/components/chip))
38
40
  - [bf-chip-group](https://bitforge-ui.web.app/ai/components/chip-group.md): Named row of chips that picks one like radios, or groups independent toggles ([docs](https://bitforge-ui.web.app/components/chip-group))
41
+ - [bf-combobox](https://bitforge-ui.web.app/ai/components/combobox.md): Text field that filters a list of options as you type and picks one ([docs](https://bitforge-ui.web.app/components/combobox))
42
+ - [bf-date-input](https://bitforge-ui.web.app/ai/components/date-input.md): Typed date field with a calendar popover, valued as an ISO date string ([docs](https://bitforge-ui.web.app/components/date-input))
43
+ - [bf-datetime-input](https://bitforge-ui.web.app/ai/components/datetime-input.md): Typed date and time field with a calendar and time list in one popover ([docs](https://bitforge-ui.web.app/components/datetime-input))
39
44
  - [bf-field](https://bitforge-ui.web.app/ai/components/field.md): Label, help text and error text wrapper that wires ids for assistive tech ([docs](https://bitforge-ui.web.app/components/field))
40
45
  - [bf-input](https://bitforge-ui.web.app/ai/components/input.md): Single-line text field with label, help and error text, icon slots and Signal Forms binding ([docs](https://bitforge-ui.web.app/components/input))
46
+ - [bf-multi-combobox](https://bitforge-ui.web.app/ai/components/multi-combobox.md): Text field that filters options as you type and picks several as tags ([docs](https://bitforge-ui.web.app/components/multi-combobox))
41
47
  - [bf-number-input](https://bitforge-ui.web.app/ai/components/number-input.md): Number field that binds number or null, with native min, max and step ([docs](https://bitforge-ui.web.app/components/number-input))
42
48
  - [bf-radio-group](https://bitforge-ui.web.app/ai/components/radio-group.md): Group of radio buttons for choosing one option, with optional per-option descriptions ([docs](https://bitforge-ui.web.app/components/radio-group))
43
49
  - [bf-segmented](https://bitforge-ui.web.app/ai/components/segmented.md): Segmented control for switching between two to four views, keyboard-navigable like radios ([docs](https://bitforge-ui.web.app/components/segmented))
44
50
  - [bf-select](https://bitforge-ui.web.app/ai/components/select.md): Native single-choice dropdown styled like the text field, with Signal Forms binding ([docs](https://bitforge-ui.web.app/components/select))
45
51
  - [bf-textarea](https://bitforge-ui.web.app/ai/components/textarea.md): Multi-line text field with label, help and error text, and Signal Forms binding ([docs](https://bitforge-ui.web.app/components/textarea))
52
+ - [bf-theme-switch](https://bitforge-ui.web.app/ai/components/theme-switch.md): Segmented System, Light and Dark switch bound two-way to the app colour scheme ([docs](https://bitforge-ui.web.app/components/theme-switch))
53
+ - [bf-time-input](https://bitforge-ui.web.app/ai/components/time-input.md): Typed time-of-day field with a popover list of times, valued as an ISO string ([docs](https://bitforge-ui.web.app/components/time-input))
46
54
  - [bf-toggle](https://bitforge-ui.web.app/ai/components/toggle.md): On/off switch for settings that apply immediately, with Signal Forms binding ([docs](https://bitforge-ui.web.app/components/toggle))
47
55
 
48
56
  ### Data display
49
57
 
50
58
  - [bf-avatar](https://bitforge-ui.web.app/ai/components/avatar.md): Round avatar showing a photo or initials, in three sizes and four color variants ([docs](https://bitforge-ui.web.app/components/avatar))
51
59
  - [bf-badge](https://bitforge-ui.web.app/ai/components/badge.md): Small status label in semantic tones, or a compact numeric pill for counts ([docs](https://bitforge-ui.web.app/components/badge))
60
+ - [bf-bar-chart](https://bitforge-ui.web.app/ai/components/bar-chart.md): Bar chart of series over categories, grouped or stacked, vertical or horizontal ([docs](https://bitforge-ui.web.app/components/bar-chart))
52
61
  - [bf-card](https://bitforge-ui.web.app/ai/components/card.md): Content surface with an optional header slot, in four visual styles from raised to flat ([docs](https://bitforge-ui.web.app/components/card))
62
+ - [bf-chart-card](https://bitforge-ui.web.app/ai/components/chart-card.md): Card around one chart with a title, period control and loading, empty and error states ([docs](https://bitforge-ui.web.app/components/chart-card))
63
+ - [div[bfDescriptionItem]](https://bitforge-ui.web.app/ai/components/description-item.md): One label and value pair of a description list, label as term, content as value ([docs](https://bitforge-ui.web.app/components/description-item))
64
+ - [bf-description-list](https://bitforge-ui.web.app/ai/components/description-list.md): Native description list of label-value pairs, as divided rows or a tile grid ([docs](https://bitforge-ui.web.app/components/description-list))
65
+ - [bf-donut-chart](https://bitforge-ui.web.app/ai/components/donut-chart.md): Donut chart of the parts of a whole, with a legend, tooltip and centre slot ([docs](https://bitforge-ui.web.app/components/donut-chart))
66
+ - [bf-line-chart](https://bitforge-ui.web.app/ai/components/line-chart.md): Line chart of series over categories, with tooltip, legend and data table ([docs](https://bitforge-ui.web.app/components/line-chart))
53
67
  - [bf-list](https://bitforge-ui.web.app/ai/components/list.md): Container for list rows, inset by default with rounded corners on a warm background ([docs](https://bitforge-ui.web.app/components/list))
54
68
  - [bf-list-item](https://bitforge-ui.web.app/ai/components/list-item.md): List row with leading slot, title, subtitle, trailing slot and an optional chevron ([docs](https://bitforge-ui.web.app/components/list-item))
55
69
  - [bf-progress](https://bitforge-ui.web.app/ai/components/progress.md): Progress bar in two sizes and four tones for completion, quotas and unknown waits ([docs](https://bitforge-ui.web.app/components/progress))
70
+ - [bf-sparkline](https://bitforge-ui.web.app/ai/components/sparkline.md): Tiny trend line with no axes or legend, for stats and table cells ([docs](https://bitforge-ui.web.app/components/sparkline))
71
+ - [bf-stat](https://bitforge-ui.web.app/ai/components/stat.md): One labelled figure with an optional icon tile and a supporting line ([docs](https://bitforge-ui.web.app/components/stat))
72
+ - [bf-table](https://bitforge-ui.web.app/ai/components/table.md): Desktop data table with sortable headers, row selection, custom cells and an empty slot ([docs](https://bitforge-ui.web.app/components/table))
56
73
 
57
74
  ### Feedback
58
75
 
59
76
  - [bf-alert](https://bitforge-ui.web.app/ai/components/alert.md): Inline status message in four tones with a title and an optional dismiss button ([docs](https://bitforge-ui.web.app/components/alert))
60
77
  - [bf-empty-state](https://bitforge-ui.web.app/ai/components/empty-state.md): Placeholder for an empty screen or list with icon, title, message and action ([docs](https://bitforge-ui.web.app/components/empty-state))
78
+ - [bf-skeleton](https://bitforge-ui.web.app/ai/components/skeleton.md): Loading placeholder shaped as text lines, a rectangle or a circle, with a shimmer ([docs](https://bitforge-ui.web.app/components/skeleton))
61
79
  - [bf-spinner](https://bitforge-ui.web.app/ai/components/spinner.md): Indeterminate loading spinner in three sizes that inherits its parent's text color ([docs](https://bitforge-ui.web.app/components/spinner))
62
80
 
63
81
  ### Navigation
64
82
 
65
83
  - [bf-back-button](https://bitforge-ui.web.app/ai/components/back-button.md): Header back button that pops the page stack or falls back to a default route ([docs](https://bitforge-ui.web.app/components/back-button))
84
+ - [bf-breadcrumb](https://bitforge-ui.web.app/ai/components/breadcrumb.md): Desktop breadcrumb trail of links to the current page, with optional collapsing ([docs](https://bitforge-ui.web.app/components/breadcrumb))
85
+ - [li[bfBreadcrumbItem]](https://bitforge-ui.web.app/ai/components/breadcrumb-item.md): One level of a breadcrumb trail: a link, or the current page as text ([docs](https://bitforge-ui.web.app/components/breadcrumb-item))
66
86
  - [bf-content](https://bitforge-ui.web.app/ai/components/content.md): Page's single scroll container that keeps focused fields clear of the soft keyboard ([docs](https://bitforge-ui.web.app/components/content))
67
87
  - [bf-header](https://bitforge-ui.web.app/ai/components/header.md): Page header toolbar with a large title that collapses into the toolbar on scroll ([docs](https://bitforge-ui.web.app/components/header))
88
+ - [bf-nav-group](https://bitforge-ui.web.app/ai/components/nav-group.md): A titled group of sidebar links with a small heading that names it ([docs](https://bitforge-ui.web.app/components/nav-group))
89
+ - [a[bfNavItem]](https://bitforge-ui.web.app/ai/components/nav-item.md): Navigation link for a sidebar or top nav, with icon, label and count ([docs](https://bitforge-ui.web.app/components/nav-item))
68
90
  - [bf-page](https://bitforge-ui.web.app/ai/components/page.md): Frame for one stacked mobile screen that supplies lifecycle events and shared page state ([docs](https://bitforge-ui.web.app/components/page))
91
+ - [bf-page-header](https://bitforge-ui.web.app/ai/components/page-header.md): Desktop page header with breadcrumb, title, subtitle, badges and a row of actions ([docs](https://bitforge-ui.web.app/components/page-header))
92
+ - [bf-pagination](https://bitforge-ui.web.app/ai/components/pagination.md): Previous, next and numbered page buttons for a long list or table ([docs](https://bitforge-ui.web.app/components/pagination))
69
93
  - [bf-refresher](https://bitforge-ui.web.app/ai/components/refresher.md): Pull-to-refresh indicator with haptic feedback, native iOS bounce and an Android-style pull ([docs](https://bitforge-ui.web.app/components/refresher))
94
+ - [bf-sidebar](https://bitforge-ui.web.app/ai/components/sidebar.md): Vertical app navigation with brand, grouped links, footer and an icon rail mode ([docs](https://bitforge-ui.web.app/components/sidebar))
70
95
  - [bf-stack-outlet](https://bitforge-ui.web.app/ai/components/stack-outlet.md): Router outlet keeping a live page stack with slide transitions and iOS swipe back ([docs](https://bitforge-ui.web.app/components/stack-outlet))
71
96
  - [bf-tab](https://bitforge-ui.web.app/ai/components/tab.md): One tab bar destination with an icon, a label and an optional count badge ([docs](https://bitforge-ui.web.app/components/tab))
72
97
  - [bf-tab-bar](https://bitforge-ui.web.app/ai/components/tab-bar.md): Floating pill tab bar for mobile apps with arrow-key selection and count badges ([docs](https://bitforge-ui.web.app/components/tab-bar))
98
+ - [bf-tab-group](https://bitforge-ui.web.app/ai/components/tab-group.md): In-page tabs that switch between content panels, with keyboard navigation and badges ([docs](https://bitforge-ui.web.app/components/tab-group))
99
+ - [bf-tab-panel](https://bitforge-ui.web.app/ai/components/tab-panel.md): One tab of a tab group with its label, badge, icon and lazy content ([docs](https://bitforge-ui.web.app/components/tab-panel))
73
100
  - [bf-tabs](https://bitforge-ui.web.app/ai/components/tabs.md): Tabs page with one navigation stack per tab, wiring the tab bar to the router ([docs](https://bitforge-ui.web.app/components/tabs))
101
+ - [bf-top-nav](https://bitforge-ui.web.app/ai/components/top-nav.md): Horizontal app navigation, a wrapping row of links for apps with few sections ([docs](https://bitforge-ui.web.app/components/top-nav))
74
102
 
75
103
  ### Overlays
76
104
 
@@ -81,8 +109,12 @@
81
109
  - [bf-menu](https://bitforge-ui.web.app/ai/components/menu.md): Keyboard-operable menu panel with items, checkbox and radio items, groups and submenus ([docs](https://bitforge-ui.web.app/components/menu))
82
110
  - [bf-menu-button](https://bitforge-ui.web.app/ai/components/menu-button.md): Styled button that opens a menu, with outline, text, tonal and icon-only looks ([docs](https://bitforge-ui.web.app/components/menu-button))
83
111
  - [bf-modal](https://bitforge-ui.web.app/ai/components/modal.md): Modal overlay shown as an inset card over the scaled-down page, or full screen ([docs](https://bitforge-ui.web.app/components/modal))
112
+ - [bf-popover](https://bitforge-ui.web.app/ai/components/popover.md): Anchored, non-modal panel for filters, details or a small form ([docs](https://bitforge-ui.web.app/components/popover))
84
113
  - [bf-sheet](https://bitforge-ui.web.app/ai/components/sheet.md): Bottom sheet with snap points, drag to dismiss and a backdrop ([docs](https://bitforge-ui.web.app/components/sheet))
114
+ - [bf-side-panel](https://bitforge-ui.web.app/ai/components/side-panel.md): Desktop panel sliding in from the end edge, with a title, body and footer actions ([docs](https://bitforge-ui.web.app/components/side-panel))
115
+ - [bf-theme-menu-button](https://bitforge-ui.web.app/ai/components/theme-menu-button.md): Menu button with System, Light and Dark radio items bound to the colour scheme ([docs](https://bitforge-ui.web.app/components/theme-menu-button))
85
116
  - [bf-toast](https://bitforge-ui.web.app/ai/components/toast.md): Passive status pill with an optional action that never steals focus ([docs](https://bitforge-ui.web.app/components/toast))
117
+ - [bf-tooltip](https://bitforge-ui.web.app/ai/components/tooltip.md): Short hint beside a control on hover or keyboard focus, for desktop ([docs](https://bitforge-ui.web.app/components/tooltip))
86
118
 
87
119
  ### Icons
88
120
 
@@ -100,6 +132,7 @@
100
132
 
101
133
  ### @bitforgehq/ui
102
134
 
135
+ - [BF_COLOR_SCHEME_STORAGE](https://bitforge-ui.web.app/ai/reference/bf_color_scheme_storage.md): Injection token for the store that keeps the colour scheme choice between visits ([docs](https://bitforge-ui.web.app/api/bf_color_scheme_storage))
103
136
  - [BF_DEFAULT_LABELS](https://bitforge-ui.web.app/ai/reference/bf_default_labels.md): The library's built-in English strings, the labels every widget starts from ([docs](https://bitforge-ui.web.app/api/bf_default_labels))
104
137
  - [BF_DEFAULT_VALUES](https://bitforge-ui.web.app/ai/reference/bf_default_values.md): The library's built-in widget defaults, the compact md step everywhere ([docs](https://bitforge-ui.web.app/api/bf_default_values))
105
138
  - [BF_DEFAULTS](https://bitforge-ui.web.app/ai/reference/bf_defaults.md): Injection token holding the widget defaults in effect for an injector ([docs](https://bitforge-ui.web.app/api/bf_defaults))
@@ -112,17 +145,24 @@
112
145
  - [BfAutocapitalize](https://bitforge-ui.web.app/ai/reference/bf-autocapitalize.md): How a phone keyboard capitalises the text typed into a field ([docs](https://bitforge-ui.web.app/api/bf-autocapitalize))
113
146
  - [BfAvatarSize](https://bitforge-ui.web.app/ai/reference/bf-avatar-size.md): The three sizes of an avatar, from a list row to a profile header ([docs](https://bitforge-ui.web.app/api/bf-avatar-size))
114
147
  - [BfAvatarVariant](https://bitforge-ui.web.app/ai/reference/bf-avatar-variant.md): The four colour schemes of an avatar behind its initials or icon ([docs](https://bitforge-ui.web.app/api/bf-avatar-variant))
148
+ - [BfBadgeAppearance](https://bitforge-ui.web.app/ai/reference/bf-badge-appearance.md): Every badge tone, the five variants plus the informational info tone ([docs](https://bitforge-ui.web.app/api/bf-badge-appearance))
115
149
  - [BfBadgeVariant](https://bitforge-ui.web.app/ai/reference/bf-badge-variant.md): The five tones of a badge, from neutral counts to danger states ([docs](https://bitforge-ui.web.app/api/bf-badge-variant))
150
+ - [BfButtonAppearance](https://bitforge-ui.web.app/ai/reference/bf-button-appearance.md): Every button style, the five variants plus the quiet neutral ghost ([docs](https://bitforge-ui.web.app/api/bf-button-appearance))
116
151
  - [BfButtonSize](https://bitforge-ui.web.app/ai/reference/bf-button-size.md): Former name of the shared size scale for buttons, kept until 1.0.0 ([docs](https://bitforge-ui.web.app/api/bf-button-size))
117
152
  - [BfButtonType](https://bitforge-ui.web.app/ai/reference/bf-button-type.md): The native button types, for a plain action, a form submit or reset ([docs](https://bitforge-ui.web.app/api/bf-button-type))
118
153
  - [BfButtonVariant](https://bitforge-ui.web.app/ai/reference/bf-button-variant.md): The five visual styles of a button, from filled primary to plain text ([docs](https://bitforge-ui.web.app/api/bf-button-variant))
154
+ - [BfCalendarDisabledDate](https://bitforge-ui.web.app/ai/reference/bf-calendar-disabled-date.md): A function that marks an ISO date as not pickable in a calendar ([docs](https://bitforge-ui.web.app/api/bf-calendar-disabled-date))
155
+ - [BfCalendarWeekday](https://bitforge-ui.web.app/ai/reference/bf-calendar-weekday.md): A weekday number from 0 for Sunday to 6 for Saturday, as Date counts ([docs](https://bitforge-ui.web.app/api/bf-calendar-weekday))
119
156
  - [BfCardPadding](https://bitforge-ui.web.app/ai/reference/bf-card-padding.md): The two inner paddings of a card, regular and roomy ([docs](https://bitforge-ui.web.app/api/bf-card-padding))
120
157
  - [BfCardVariant](https://bitforge-ui.web.app/ai/reference/bf-card-variant.md): The four card surfaces, from a raised panel to a flat outline ([docs](https://bitforge-ui.web.app/api/bf-card-variant))
121
158
  - [BfChipGroupMode](https://bitforge-ui.web.app/ai/reference/bf-chip-group-mode.md): Whether a chip group picks exactly one chip or lets each chip toggle alone ([docs](https://bitforge-ui.web.app/api/bf-chip-group-mode))
122
159
  - [BfChipVariant](https://bitforge-ui.web.app/ai/reference/bf-chip-variant.md): The two chip colours, a soft tonal tint or a dark ink fill ([docs](https://bitforge-ui.web.app/api/bf-chip-variant))
160
+ - [BfColorScheme](https://bitforge-ui.web.app/ai/reference/bf-color-scheme.md): The colour scheme choice, following the system or forcing light or dark ([docs](https://bitforge-ui.web.app/api/bf-color-scheme))
161
+ - [BfColorSchemeService](https://bitforge-ui.web.app/ai/reference/bf-color-scheme-service.md): The app colour scheme choice and dark state, applied to html and stored ([docs](https://bitforge-ui.web.app/api/bf-color-scheme-service))
123
162
  - [BfCompareWith](https://bitforge-ui.web.app/ai/reference/bf-compare-with.md): Equality of choice values, for options that are objects rather than primitives ([docs](https://bitforge-ui.web.app/api/bf-compare-with))
124
163
  - [BfDefaults](https://bitforge-ui.web.app/ai/reference/bf-defaults.md): The default height steps of text fields and of actions and choice controls ([docs](https://bitforge-ui.web.app/api/bf-defaults))
125
164
  - [BfDefaultsOptions](https://bitforge-ui.web.app/ai/reference/bf-defaults-options.md): The size steps provideBfDefaults sets, each one falling back to the parent ([docs](https://bitforge-ui.web.app/api/bf-defaults-options))
165
+ - [BfDescriptionListLayout](https://bitforge-ui.web.app/ai/reference/bf-description-list-layout.md): The two description list layouts, divided label-value rows or a grid of tiles ([docs](https://bitforge-ui.web.app/api/bf-description-list-layout))
126
166
  - [BfEmptyStateHeadingLevel](https://bitforge-ui.web.app/ai/reference/bf-empty-state-heading-level.md): The heading level of an empty state title, two for a screen or three ([docs](https://bitforge-ui.web.app/api/bf-empty-state-heading-level))
127
167
  - [BfEnterKeyHint](https://bitforge-ui.web.app/ai/reference/bf-enter-key-hint.md): The labels a phone keyboard can put on its Enter key ([docs](https://bitforge-ui.web.app/api/bf-enter-key-hint))
128
168
  - [bfFieldControlClass](https://bitforge-ui.web.app/ai/reference/bf-field-control-class.md): The class list that makes a custom control look like a library text field ([docs](https://bitforge-ui.web.app/api/bf-field-control-class))
@@ -136,6 +176,7 @@
136
176
  - [BfInputType](https://bitforge-ui.web.app/ai/reference/bf-input-type.md): The native input types a text field supports, all bound as strings ([docs](https://bitforge-ui.web.app/api/bf-input-type))
137
177
  - [BfLabels](https://bitforge-ui.web.app/ai/reference/bf-labels.md): Every built-in user-facing string of the library, one key per string ([docs](https://bitforge-ui.web.app/api/bf-labels))
138
178
  - [BfLabelsOverrides](https://bitforge-ui.web.app/ai/reference/bf-labels-overrides.md): The strings provideBfLabels replaces, each one falling back to the parent ([docs](https://bitforge-ui.web.app/api/bf-labels-overrides))
179
+ - [BfPageHeaderHeadingLevel](https://bitforge-ui.web.app/ai/reference/bf-page-header-heading-level.md): The heading level of a page header title, one for a page or two ([docs](https://bitforge-ui.web.app/api/bf-page-header-heading-level))
139
180
  - [BfProgressSize](https://bitforge-ui.web.app/ai/reference/bf-progress-size.md): The two track heights of a progress bar, thin and regular ([docs](https://bitforge-ui.web.app/api/bf-progress-size))
140
181
  - [BfProgressTone](https://bitforge-ui.web.app/ai/reference/bf-progress-tone.md): The four fill colours of a progress bar, from primary to danger ([docs](https://bitforge-ui.web.app/api/bf-progress-tone))
141
182
  - [BfRadioGroupOrientation](https://bitforge-ui.web.app/ai/reference/bf-radio-group-orientation.md): Whether a radio group stacks its options or sets them in a row ([docs](https://bitforge-ui.web.app/api/bf-radio-group-orientation))
@@ -144,13 +185,25 @@
144
185
  - [BfSegmentOption](https://bitforge-ui.web.app/ai/reference/bf-segment-option.md): One segment of a segmented control with its value, its label and a disabled flag ([docs](https://bitforge-ui.web.app/api/bf-segment-option))
145
186
  - [BfSelectOption](https://bitforge-ui.web.app/ai/reference/bf-select-option.md): One choice of a select with its value, its label and a disabled flag ([docs](https://bitforge-ui.web.app/api/bf-select-option))
146
187
  - [BfSize](https://bitforge-ui.web.app/ai/reference/bf-size.md): The three height steps every sized field and control shares ([docs](https://bitforge-ui.web.app/api/bf-size))
188
+ - [BfSkeletonShape](https://bitforge-ui.web.app/ai/reference/bf-skeleton-shape.md): The three skeleton shapes, text lines, a rectangle or a circle ([docs](https://bitforge-ui.web.app/api/bf-skeleton-shape))
147
189
  - [BfSpinnerSize](https://bitforge-ui.web.app/ai/reference/bf-spinner-size.md): The three spinner diameters, from inline text to a page loading state ([docs](https://bitforge-ui.web.app/api/bf-spinner-size))
190
+ - [BfStatTrend](https://bitforge-ui.web.app/ai/reference/bf-stat-trend.md): The three directions of a stat's delta pill, up, down or no change ([docs](https://bitforge-ui.web.app/api/bf-stat-trend))
191
+ - [BfStatTrendIntent](https://bitforge-ui.web.app/ai/reference/bf-stat-trend-intent.md): Whether a rising or a falling figure is the good news for a stat ([docs](https://bitforge-ui.web.app/api/bf-stat-trend-intent))
192
+ - [BfStatVariant](https://bitforge-ui.web.app/ai/reference/bf-stat-variant.md): The two stat surfaces, plain on its container or an outlined card tile ([docs](https://bitforge-ui.web.app/api/bf-stat-variant))
148
193
  - [BfTabBarController](https://bitforge-ui.web.app/ai/reference/bf-tab-bar-controller.md): The state a parent that drives a projected tab bar gives it to derive from ([docs](https://bitforge-ui.web.app/api/bf-tab-bar-controller))
149
194
  - [BfTabBarHost](https://bitforge-ui.web.app/ai/reference/bf-tab-bar-host.md): What each tab reads from its tab bar: the selection, tab stop and link mode ([docs](https://bitforge-ui.web.app/api/bf-tab-bar-host))
195
+ - [BfTableAlign](https://bitforge-ui.web.app/ai/reference/bf-table-align.md): The inline alignment of a table column, start for text or end for numbers ([docs](https://bitforge-ui.web.app/api/bf-table-align))
196
+ - [BfTableCellContext](https://bitforge-ui.web.app/ai/reference/bf-table-cell-context.md): The row and its index that a custom table cell template receives ([docs](https://bitforge-ui.web.app/api/bf-table-cell-context))
197
+ - [BfTableCellDirective](https://bitforge-ui.web.app/ai/reference/bf-table-cell-directive.md): Custom template for the cells of one table column, with the row typed ([docs](https://bitforge-ui.web.app/api/bf-table-cell-directive))
198
+ - [BfTableColumn](https://bitforge-ui.web.app/ai/reference/bf-table-column.md): One table column with its row key, header label, sorting and alignment ([docs](https://bitforge-ui.web.app/api/bf-table-column))
199
+ - [BfTableRowKey](https://bitforge-ui.web.app/ai/reference/bf-table-row-key.md): Function that returns the unique string key of one table row ([docs](https://bitforge-ui.web.app/api/bf-table-row-key))
200
+ - [BfTableSort](https://bitforge-ui.web.app/ai/reference/bf-table-sort.md): The column key and direction a table is sorted by, set by its headers ([docs](https://bitforge-ui.web.app/api/bf-table-sort))
201
+ - [BfTableSortDirection](https://bitforge-ui.web.app/ai/reference/bf-table-sort-direction.md): The direction a sorted table column is in, ascending or descending ([docs](https://bitforge-ui.web.app/api/bf-table-sort-direction))
150
202
  - [BfTabLinks](https://bitforge-ui.web.app/ai/reference/bf-tab-links.md): The URLs a router-aware parent gives a tab bar to render its tabs as links ([docs](https://bitforge-ui.web.app/api/bf-tab-links))
151
203
  - [BfToggleLabelPosition](https://bitforge-ui.web.app/ai/reference/bf-toggle-label-position.md): Whether a toggle's label sits after or before its switch ([docs](https://bitforge-ui.web.app/api/bf-toggle-label-position))
152
204
  - [bfValidationMessage](https://bitforge-ui.web.app/ai/reference/bf-validation-message.md): Turns one validation error into the text a form field shows under it ([docs](https://bitforge-ui.web.app/api/bf-validation-message))
153
205
  - [BfValidationMessages](https://bitforge-ui.web.app/ai/reference/bf-validation-messages.md): The default error text of each validator kind, shown under a form field ([docs](https://bitforge-ui.web.app/api/bf-validation-messages))
206
+ - [provideBfColorScheme](https://bitforge-ui.web.app/ai/reference/provide-bf-color-scheme.md): Applies the stored colour scheme choice to html, for desktop web apps ([docs](https://bitforge-ui.web.app/api/provide-bf-color-scheme))
154
207
  - [provideBfDefaults](https://bitforge-ui.web.app/ai/reference/provide-bf-defaults.md): Sets the default field and control sizes for an app or a sub-tree ([docs](https://bitforge-ui.web.app/api/provide-bf-defaults))
155
208
  - [provideBfLabels](https://bitforge-ui.web.app/ai/reference/provide-bf-labels.md): Replaces built-in strings for an app or a sub-tree, such as a translation ([docs](https://bitforge-ui.web.app/api/provide-bf-labels))
156
209
 
@@ -160,11 +213,16 @@
160
213
  - [BF_DIALOG_DATA](https://bitforge-ui.web.app/ai/reference/bf_dialog_data.md): Injection token carrying the data a dialog was opened with, for its content ([docs](https://bitforge-ui.web.app/api/bf_dialog_data))
161
214
  - [BF_OVERLAY_DATA](https://bitforge-ui.web.app/ai/reference/bf_overlay_data.md): Injection token carrying the data an overlay was opened with, for its content ([docs](https://bitforge-ui.web.app/api/bf_overlay_data))
162
215
  - [BF_OVERLAY_HOST](https://bitforge-ui.web.app/ai/reference/bf_overlay_host.md): Optional injection token through which a host shell plugs into the overlay core ([docs](https://bitforge-ui.web.app/api/bf_overlay_host))
216
+ - [BF_SIDE_PANEL_DATA](https://bitforge-ui.web.app/ai/reference/bf_side_panel_data.md): Injection token carrying the data a side panel was opened with, for its content ([docs](https://bitforge-ui.web.app/api/bf_side_panel_data))
217
+ - [BfComboboxFilter](https://bitforge-ui.web.app/ai/reference/bf-combobox-filter.md): Decides whether a combobox option matches the text typed into the field ([docs](https://bitforge-ui.web.app/api/bf-combobox-filter))
218
+ - [BfComboboxOption](https://bitforge-ui.web.app/ai/reference/bf-combobox-option.md): One combobox choice with its value, label, description, group and disabled flag ([docs](https://bitforge-ui.web.app/api/bf-combobox-option))
163
219
  - [BfComponentOverlayRef](https://bitforge-ui.web.app/ai/reference/bf-component-overlay-ref.md): Overlay handle whose content is a component, with access to its ComponentRef ([docs](https://bitforge-ui.web.app/api/bf-component-overlay-ref))
164
220
  - [BfConfirmButton](https://bitforge-ui.web.app/ai/reference/bf-confirm-button.md): One button of a confirm dialog: its answer, its label and its role ([docs](https://bitforge-ui.web.app/api/bf-confirm-button))
165
221
  - [BfConfirmButtonRole](https://bitforge-ui.web.app/ai/reference/bf-confirm-button-role.md): The role of a confirm dialog button, the cancel answer or a destructive action ([docs](https://bitforge-ui.web.app/api/bf-confirm-button-role))
166
222
  - [BfConfirmOptions](https://bitforge-ui.web.app/ai/reference/bf-confirm-options.md): Options of a confirm dialog: its title, message, buttons and width ([docs](https://bitforge-ui.web.app/api/bf-confirm-options))
167
223
  - [BfConfirmSize](https://bitforge-ui.web.app/ai/reference/bf-confirm-size.md): The two widths a confirm dialog comes in, small or medium ([docs](https://bitforge-ui.web.app/api/bf-confirm-size))
224
+ - [BfDateInputPicker](https://bitforge-ui.web.app/ai/reference/bf-date-input-picker.md): Whether a date input offers a calendar popover besides typing ([docs](https://bitforge-ui.web.app/api/bf-date-input-picker))
225
+ - [BfDateTimeInputPicker](https://bitforge-ui.web.app/ai/reference/bf-date-time-input-picker.md): Whether a date and time input offers a calendar and time list popover ([docs](https://bitforge-ui.web.app/api/bf-date-time-input-picker))
168
226
  - [BfDesktopToastConfig](https://bitforge-ui.web.app/ai/reference/bf-desktop-toast-config.md): App-wide settings of desktop toasts: where they sit and how many show at once ([docs](https://bitforge-ui.web.app/api/bf-desktop-toast-config))
169
227
  - [BfDesktopToastOptions](https://bitforge-ui.web.app/ai/reference/bf-desktop-toast-options.md): Options of one desktop toast: its message, an action and its duration ([docs](https://bitforge-ui.web.app/api/bf-desktop-toast-options))
170
228
  - [BfDesktopToastPosition](https://bitforge-ui.web.app/ai/reference/bf-desktop-toast-position.md): The viewport corners and edges a desktop toast stack can anchor to ([docs](https://bitforge-ui.web.app/api/bf-desktop-toast-position))
@@ -187,6 +245,7 @@
187
245
  - [BfOverlayController](https://bitforge-ui.web.app/ai/reference/bf-overlay-controller.md): What the overlay service does for a ref: close it and re-apply its position ([docs](https://bitforge-ui.web.app/api/bf-overlay-controller))
188
246
  - [BfOverlayHost](https://bitforge-ui.web.app/ai/reference/bf-overlay-host.md): What a host shell tells the overlay core: back handling and document scroll ([docs](https://bitforge-ui.web.app/api/bf-overlay-host))
189
247
  - [BfOverlayOptions](https://bitforge-ui.web.app/ai/reference/bf-overlay-options.md): Options of an overlay: its data, backdrop, focus, dismissal, position and motion ([docs](https://bitforge-ui.web.app/api/bf-overlay-options))
248
+ - [BfOverlayPlacement](https://bitforge-ui.web.app/ai/reference/bf-overlay-placement.md): Where an overlay panel sits: a viewport position or full height at the end ([docs](https://bitforge-ui.web.app/api/bf-overlay-placement))
190
249
  - [BfOverlayPosition](https://bitforge-ui.web.app/ai/reference/bf-overlay-position.md): Where an overlay panel sits in the viewport: bottom, centre, top or fullscreen ([docs](https://bitforge-ui.web.app/api/bf-overlay-position))
191
250
  - [BfOverlayRef](https://bitforge-ui.web.app/ai/reference/bf-overlay-ref.md): Handle on an open overlay that closes it and resolves with its result ([docs](https://bitforge-ui.web.app/api/bf-overlay-ref))
192
251
  - [BfOverlayRole](https://bitforge-ui.web.app/ai/reference/bf-overlay-role.md): The role an overlay panel carries: a dialog, an alert dialog or a status ([docs](https://bitforge-ui.web.app/api/bf-overlay-role))
@@ -194,11 +253,22 @@
194
253
  - [BfOverlayStack](https://bitforge-ui.web.app/ai/reference/bf-overlay-stack.md): Keeps the open overlays in order and makes the page behind them inert ([docs](https://bitforge-ui.web.app/api/bf-overlay-stack))
195
254
  - [BfOverlayStackOptions](https://bitforge-ui.web.app/ai/reference/bf-overlay-stack-options.md): How an overlay takes part in the stack: its back priority and modal depth ([docs](https://bitforge-ui.web.app/api/bf-overlay-stack-options))
196
255
  - [BfOverlayTemplateContext](https://bitforge-ui.web.app/ai/reference/bf-overlay-template-context.md): The context a template opened as an overlay receives: its ref and data ([docs](https://bitforge-ui.web.app/api/bf-overlay-template-context))
256
+ - [BfPopoverPlacement](https://bitforge-ui.web.app/ai/reference/bf-popover-placement.md): Where a popover opens against its trigger, above or below, at either end ([docs](https://bitforge-ui.web.app/api/bf-popover-placement))
257
+ - [BfPopoverTriggerDirective](https://bitforge-ui.web.app/ai/reference/bf-popover-trigger-directive.md): Opens an anchored, non-modal popover panel from any element or button ([docs](https://bitforge-ui.web.app/api/bf-popover-trigger-directive))
258
+ - [BfSidePanelConfig](https://bitforge-ui.web.app/ai/reference/bf-side-panel-config.md): Options of a side panel: its data, width, modality, name and injector ([docs](https://bitforge-ui.web.app/api/bf-side-panel-config))
259
+ - [BfSidePanelRef](https://bitforge-ui.web.app/ai/reference/bf-side-panel-ref.md): Handle on an open side panel that closes it and resolves with its result ([docs](https://bitforge-ui.web.app/api/bf-side-panel-ref))
260
+ - [BfSidePanelService](https://bitforge-ui.web.app/ai/reference/bf-side-panel-service.md): Opens a full-height panel from the end edge, modal or beside the page ([docs](https://bitforge-ui.web.app/api/bf-side-panel-service))
261
+ - [BfSidePanelTemplateContext](https://bitforge-ui.web.app/ai/reference/bf-side-panel-template-context.md): The context a template opened as a side panel receives: its ref and its data ([docs](https://bitforge-ui.web.app/api/bf-side-panel-template-context))
262
+ - [BfSidePanelWidth](https://bitforge-ui.web.app/ai/reference/bf-side-panel-width.md): The side panel widths, from a 360 px detail list to a 640 px form ([docs](https://bitforge-ui.web.app/api/bf-side-panel-width))
197
263
  - [BfStackedOverlay](https://bitforge-ui.web.app/ai/reference/bf-stacked-overlay.md): What the overlay stack needs of an overlay: a way to close it ([docs](https://bitforge-ui.web.app/api/bf-stacked-overlay))
264
+ - [BfTimeInputHourCycle](https://bitforge-ui.web.app/ai/reference/bf-time-input-hour-cycle.md): A twelve-hour clock with AM and PM, or a twenty-four-hour clock ([docs](https://bitforge-ui.web.app/api/bf-time-input-hour-cycle))
265
+ - [BfTimeInputPicker](https://bitforge-ui.web.app/ai/reference/bf-time-input-picker.md): Whether a time input offers a popover list of times besides typing ([docs](https://bitforge-ui.web.app/api/bf-time-input-picker))
198
266
  - [BfToastAction](https://bitforge-ui.web.app/ai/reference/bf-toast-action.md): The action button of a toast: its label and what it runs when clicked ([docs](https://bitforge-ui.web.app/api/bf-toast-action))
199
267
  - [BfToastController](https://bitforge-ui.web.app/ai/reference/bf-toast-controller.md): What the toast queue does for a toast ref: dismiss the toast now ([docs](https://bitforge-ui.web.app/api/bf-toast-controller))
200
268
  - [BfToastDismissReason](https://bitforge-ui.web.app/ai/reference/bf-toast-dismiss-reason.md): Why a toast ended: its time ran out, its action fired or it was dismissed ([docs](https://bitforge-ui.web.app/api/bf-toast-dismiss-reason))
201
269
  - [BfToastRef](https://bitforge-ui.web.app/ai/reference/bf-toast-ref.md): Handle on a shown or queued toast that dismisses it and reports why it ended ([docs](https://bitforge-ui.web.app/api/bf-toast-ref))
270
+ - [BfTooltipDirective](https://bitforge-ui.web.app/ai/reference/bf-tooltip-directive.md): Adds a hover and keyboard-focus tooltip to any control on desktop ([docs](https://bitforge-ui.web.app/api/bf-tooltip-directive))
271
+ - [BfTooltipPlacement](https://bitforge-ui.web.app/ai/reference/bf-tooltip-placement.md): Which side of its element a tooltip sits on: top, bottom, start or end ([docs](https://bitforge-ui.web.app/api/bf-tooltip-placement))
202
272
  - [fadeDown](https://bitforge-ui.web.app/ai/reference/fade-down.md): Fades an element out while it sinks, the reverse of the fadeUp animation ([docs](https://bitforge-ui.web.app/api/fade-down))
203
273
  - [fadeIn](https://bitforge-ui.web.app/ai/reference/fade-in.md): Fades an element in, the default enter animation of an overlay ([docs](https://bitforge-ui.web.app/api/fade-in))
204
274
  - [fadeOut](https://bitforge-ui.web.app/ai/reference/fade-out.md): Fades an element out, the default exit animation of an overlay ([docs](https://bitforge-ui.web.app/api/fade-out))
@@ -210,6 +280,8 @@
210
280
  - [provideBfDesktopToast](https://bitforge-ui.web.app/ai/reference/provide-bf-desktop-toast.md): Sets where desktop toasts appear and how many show at once, app-wide ([docs](https://bitforge-ui.web.app/api/provide-bf-desktop-toast))
211
281
  - [scaleIn](https://bitforge-ui.web.app/ai/reference/scale-in.md): Scales an element up while fading it in, the enter animation of centred dialogs ([docs](https://bitforge-ui.web.app/api/scale-in))
212
282
  - [slideDown](https://bitforge-ui.web.app/ai/reference/slide-down.md): Slides an element down out of place, the exit animation of a bottom sheet ([docs](https://bitforge-ui.web.app/api/slide-down))
283
+ - [slideInFromEnd](https://bitforge-ui.web.app/ai/reference/slide-in-from-end.md): Slides an element in from the inline end, the enter animation of a side panel ([docs](https://bitforge-ui.web.app/api/slide-in-from-end))
284
+ - [slideOutToEnd](https://bitforge-ui.web.app/ai/reference/slide-out-to-end.md): Slides an element out past the inline end, the exit animation of a side panel ([docs](https://bitforge-ui.web.app/api/slide-out-to-end))
213
285
  - [slideUp](https://bitforge-ui.web.app/ai/reference/slide-up.md): Slides an element up into place, the enter animation of a bottom sheet ([docs](https://bitforge-ui.web.app/api/slide-up))
214
286
 
215
287
  ### @bitforgehq/ui/icons
@@ -308,8 +380,23 @@
308
380
  - [shouldCompletePop](https://bitforge-ui.web.app/ai/reference/should-complete-pop.md): Decides whether a released swipe-back completes the pop or settles back ([docs](https://bitforge-ui.web.app/api/should-complete-pop))
309
381
  - [withBfShellRouting](https://bitforge-ui.web.app/ai/reference/with-bf-shell-routing.md): The router setting the mobile shell's stack needs, passed to provideRouter ([docs](https://bitforge-ui.web.app/api/with-bf-shell-routing))
310
382
 
383
+ ### @bitforgehq/ui/charts
384
+
385
+ - [BfBarChartOrientation](https://bitforge-ui.web.app/ai/reference/bf-bar-chart-orientation.md): The two bar directions, vertical columns or horizontal bars ([docs](https://bitforge-ui.web.app/api/bf-bar-chart-orientation))
386
+ - [BfChartCardHeadingLevel](https://bitforge-ui.web.app/ai/reference/bf-chart-card-heading-level.md): Heading level of a chart card title, two on a page or three inside ([docs](https://bitforge-ui.web.app/api/bf-chart-card-heading-level))
387
+ - [BfChartCurve](https://bitforge-ui.web.app/ai/reference/bf-chart-curve.md): The two line shapes, straight segments or a smooth monotone curve ([docs](https://bitforge-ui.web.app/api/bf-chart-curve))
388
+ - [BfChartLegendPosition](https://bitforge-ui.web.app/ai/reference/bf-chart-legend-position.md): The legend positions of a chart, above or below the plot, or none ([docs](https://bitforge-ui.web.app/api/bf-chart-legend-position))
389
+ - [BfChartSeries](https://bitforge-ui.web.app/ai/reference/bf-chart-series.md): One named series of chart values, one per category, null for a gap ([docs](https://bitforge-ui.web.app/api/bf-chart-series))
390
+ - [BfChartValueFormat](https://bitforge-ui.web.app/ai/reference/bf-chart-value-format.md): Function that formats one chart value for axes, tooltips and the table ([docs](https://bitforge-ui.web.app/api/bf-chart-value-format))
391
+ - [BfDonutSlice](https://bitforge-ui.web.app/ai/reference/bf-donut-slice.md): One labelled slice of a donut chart with its value ([docs](https://bitforge-ui.web.app/api/bf-donut-slice))
392
+
311
393
  ### @bitforgehq/ui/testing
312
394
 
395
+ - [BfCalendarHarness](https://bitforge-ui.web.app/ai/reference/bf-calendar-harness.md): Test harness for the calendar: reads the month and picks a date by ISO string ([docs](https://bitforge-ui.web.app/api/bf-calendar-harness))
396
+ - [BfChartHarness](https://bitforge-ui.web.app/ai/reference/bf-chart-harness.md): Test harness for the charts: reads the series, toggles one and reads the data table ([docs](https://bitforge-ui.web.app/api/bf-chart-harness))
397
+ - [BfComboboxHarness](https://bitforge-ui.web.app/ai/reference/bf-combobox-harness.md): Test harness for the comboboxes: types, reads and picks options and tags ([docs](https://bitforge-ui.web.app/api/bf-combobox-harness))
398
+ - [BfDateInputHarness](https://bitforge-ui.web.app/ai/reference/bf-date-input-harness.md): Test harness for the date input: types a date or picks one in its calendar ([docs](https://bitforge-ui.web.app/api/bf-date-input-harness))
399
+ - [BfDateTimeInputHarness](https://bitforge-ui.web.app/ai/reference/bf-date-time-input-harness.md): Test harness for the date and time input: types or picks a date and time ([docs](https://bitforge-ui.web.app/api/bf-date-time-input-harness))
313
400
  - [BfDesktopToastHarness](https://bitforge-ui.web.app/ai/reference/bf-desktop-toast-harness.md): Test harness for a desktop toast: its message, its action and Escape ([docs](https://bitforge-ui.web.app/api/bf-desktop-toast-harness))
314
401
  - [BfDialogHarness](https://bitforge-ui.web.app/ai/reference/bf-dialog-harness.md): Test harness for a dialog: its title, text and role, its buttons and Escape ([docs](https://bitforge-ui.web.app/api/bf-dialog-harness))
315
402
  - [BfHarnessFilters](https://bitforge-ui.web.app/ai/reference/bf-harness-filters.md): Filters a library harness query by selector, ancestor and the widget label ([docs](https://bitforge-ui.web.app/api/bf-harness-filters))
@@ -317,10 +404,17 @@
317
404
  - [BfMenuButtonHarness](https://bitforge-ui.web.app/ai/reference/bf-menu-button-harness.md): Test harness for a menu button: opens it and hands out the menu it opened ([docs](https://bitforge-ui.web.app/api/bf-menu-button-harness))
318
405
  - [BfMenuHarness](https://bitforge-ui.web.app/ai/reference/bf-menu-harness.md): Test harness for a menu: lists its items and clicks one, through submenus ([docs](https://bitforge-ui.web.app/api/bf-menu-harness))
319
406
  - [BfMenuItemHarness](https://bitforge-ui.web.app/ai/reference/bf-menu-item-harness.md): Test harness for a menu row: its text, disabled, checked and submenu state ([docs](https://bitforge-ui.web.app/api/bf-menu-item-harness))
407
+ - [BfPaginationHarness](https://bitforge-ui.web.app/ai/reference/bf-pagination-harness.md): Test harness for pagination: reads the current page and moves between pages ([docs](https://bitforge-ui.web.app/api/bf-pagination-harness))
408
+ - [BfPopoverHarness](https://bitforge-ui.web.app/ai/reference/bf-popover-harness.md): Test harness for a popover: opens and closes it and reads its panel ([docs](https://bitforge-ui.web.app/api/bf-popover-harness))
320
409
  - [BfRadioGroupHarness](https://bitforge-ui.web.app/ai/reference/bf-radio-group-harness.md): Test harness for the radio group: reads its options and selects one by label ([docs](https://bitforge-ui.web.app/api/bf-radio-group-harness))
321
410
  - [BfSegmentedHarness](https://bitforge-ui.web.app/ai/reference/bf-segmented-harness.md): Test harness for the segmented control: reads its segments and selects one ([docs](https://bitforge-ui.web.app/api/bf-segmented-harness))
322
411
  - [BfSelectHarness](https://bitforge-ui.web.app/ai/reference/bf-select-harness.md): Test harness for the select: reads its label and options and picks one ([docs](https://bitforge-ui.web.app/api/bf-select-harness))
412
+ - [BfSidePanelHarness](https://bitforge-ui.web.app/ai/reference/bf-side-panel-harness.md): Test harness for a side panel: its title, its close button and its state ([docs](https://bitforge-ui.web.app/api/bf-side-panel-harness))
413
+ - [BfTabGroupHarness](https://bitforge-ui.web.app/ai/reference/bf-tab-group-harness.md): Test harness for the tab group: reads its tabs and panel and selects a tab ([docs](https://bitforge-ui.web.app/api/bf-tab-group-harness))
414
+ - [BfTableHarness](https://bitforge-ui.web.app/ai/reference/bf-table-harness.md): Test harness for the data table: reads rows and cells, sorts and selects rows ([docs](https://bitforge-ui.web.app/api/bf-table-harness))
323
415
  - [BfTestingOptions](https://bitforge-ui.web.app/ai/reference/bf-testing-options.md): Options of the test providers: the size defaults and labels a spec runs with ([docs](https://bitforge-ui.web.app/api/bf-testing-options))
416
+ - [BfTimeInputHarness](https://bitforge-ui.web.app/ai/reference/bf-time-input-harness.md): Test harness for the time input: types a time or picks one from its list ([docs](https://bitforge-ui.web.app/api/bf-time-input-harness))
417
+ - [BfTooltipHarness](https://bitforge-ui.web.app/ai/reference/bf-tooltip-harness.md): Test harness for a tooltip: shows it, reads its text and whether it shows ([docs](https://bitforge-ui.web.app/api/bf-tooltip-harness))
324
418
  - [installBfJsdomShims](https://bitforge-ui.web.app/ai/reference/install-bf-jsdom-shims.md): Installs the browser APIs jsdom lacks and the library needs, only where missing ([docs](https://bitforge-ui.web.app/api/install-bf-jsdom-shims))
325
419
  - [provideBfTesting](https://bitforge-ui.web.app/ai/reference/provide-bf-testing.md): Test providers for the widgets and overlays, with document cleanup after each test ([docs](https://bitforge-ui.web.app/api/provide-bf-testing))
326
420
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bitforgehq/ui",
3
- "version": "0.3.0",
4
- "description": "Bitforge UI: Angular 22 widgets (Meadow Sage design, Tailwind v4, signals-first) and, from v0.2, a Capacitor app shell.",
3
+ "version": "0.3.1",
4
+ "description": "Bitforge UI: Angular 22 widgets (Meadow Sage palette with an indigo default primary to override, Tailwind v4, signals-first) and, from v0.2, a Capacitor app shell.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "provenance": false
13
13
  },
14
14
  "bin": {
15
- "bf-ui": "./bin/bf-ui.js"
15
+ "bf-ui": "bin/bf-ui.js"
16
16
  },
17
17
  "peerDependencies": {
18
18
  "@angular/cdk": "^22.0.0",
@@ -67,6 +67,10 @@
67
67
  "types": "./types/bitforgehq-ui.d.ts",
68
68
  "default": "./fesm2022/bitforgehq-ui.mjs"
69
69
  },
70
+ "./charts": {
71
+ "types": "./types/bitforgehq-ui-charts.d.ts",
72
+ "default": "./fesm2022/bitforgehq-ui-charts.mjs"
73
+ },
70
74
  "./icons": {
71
75
  "types": "./types/bitforgehq-ui-icons.d.ts",
72
76
  "default": "./fesm2022/bitforgehq-ui-icons.mjs"
package/theme.css CHANGED
@@ -2,6 +2,10 @@
2
2
  * @bitforgehq/ui — Meadow Sage design tokens.
3
3
  * Source: docs/design/foundations.md (extracted from docs/design/meadow-sage.dc.html).
4
4
  *
5
+ * The palette is Meadow Sage; the default primary is a neutral indigo (#2b26ba), not the design's
6
+ * sage green, because it is meant to be overridden with the app's brand colour (below). An indigo
7
+ * primary after install is expected.
8
+ *
5
9
  * Usage (web and mobile apps alike):
6
10
  * @import 'tailwindcss';
7
11
  * @import '@bitforgehq/ui/theme.css';
@@ -92,6 +96,26 @@
92
96
  --color-danger-border: #c8452f;
93
97
  --color-neutral: #4a5347;
94
98
  --color-neutral-soft: #efece3;
99
+ --color-info: #0f4c6b; /* informational badge: 7.7:1 on info-soft */
100
+ --color-info-soft: #dcecf5;
101
+
102
+ /* Tooltip: a dark pill in light mode, inverted (light) in dark mode */
103
+ --color-tooltip: #1f2a22;
104
+ --color-on-tooltip: #ffffff; /* 14.9:1 on tooltip */
105
+
106
+ /* Charts (@bitforgehq/ui/charts): a categorical palette in a fixed order (series 1 takes chart-1,
107
+ never cycled by rank), each >= 3:1 on surface and bg, adjacent pairs distinct under colour
108
+ vision deficiency; recessive grid lines and a >= 3:1 axis line. */
109
+ --color-chart-1: #2f7d4f; /* sage green */
110
+ --color-chart-2: #4a55d0; /* indigo */
111
+ --color-chart-3: #c4561f; /* terracotta */
112
+ --color-chart-4: #00809a; /* teal */
113
+ --color-chart-5: #8a6a00; /* ochre */
114
+ --color-chart-6: #c2387a; /* berry */
115
+ --color-chart-7: #8045c4; /* violet */
116
+ --color-chart-8: #5f7d10; /* olive */
117
+ --color-chart-grid: #ebe8df; /* grid lines: decorative */
118
+ --color-chart-axis: #8e8e82; /* axis baseline: >= 3:1 on surface */
95
119
 
96
120
  /* Lines */
97
121
  --color-border: #e4e0d4; /* decorative lines only (dividers, card edges) */
@@ -164,6 +188,68 @@
164
188
  }
165
189
  }
166
190
 
191
+ /* bf-skeleton shimmer: a soft highlight sweeps across the placeholder from the inline start
192
+ (hidden under reduced motion); the -rtl pair sweeps it the other way under dir="rtl". */
193
+ --animate-skeleton-shimmer: bf-skeleton-shimmer 1.6s ease-in-out infinite;
194
+ --animate-skeleton-shimmer-rtl: bf-skeleton-shimmer-rtl 1.6s ease-in-out infinite;
195
+ @keyframes bf-skeleton-shimmer {
196
+ from {
197
+ transform: translateX(-100%);
198
+ }
199
+ to {
200
+ transform: translateX(100%);
201
+ }
202
+ }
203
+ @keyframes bf-skeleton-shimmer-rtl {
204
+ from {
205
+ transform: translateX(100%);
206
+ }
207
+ to {
208
+ transform: translateX(-100%);
209
+ }
210
+ }
211
+
212
+ /* @bitforgehq/ui/charts enter motion, on the first render and on every data change (the marks
213
+ are re-created): a line draws along its path (pathLength 1, so the dash is the whole line),
214
+ bars grow from the baseline (scale on the fill box, origin at the baseline), areas and
215
+ markers fade in. Charts drop every one under reduced motion (motion-reduce:animate-none). */
216
+ --animate-chart-draw: bf-chart-draw 700ms var(--ease-md) both;
217
+ --animate-chart-grow-y: bf-chart-grow-y 600ms var(--ease-md) both;
218
+ --animate-chart-grow-x: bf-chart-grow-x 600ms var(--ease-md) both;
219
+ --animate-chart-fade: bf-chart-fade 700ms var(--ease-md) both;
220
+ @keyframes bf-chart-draw {
221
+ from {
222
+ stroke-dashoffset: 1;
223
+ }
224
+ to {
225
+ stroke-dashoffset: 0;
226
+ }
227
+ }
228
+ @keyframes bf-chart-grow-y {
229
+ from {
230
+ transform: scaleY(0);
231
+ }
232
+ to {
233
+ transform: scaleY(1);
234
+ }
235
+ }
236
+ @keyframes bf-chart-grow-x {
237
+ from {
238
+ transform: scaleX(0);
239
+ }
240
+ to {
241
+ transform: scaleX(1);
242
+ }
243
+ }
244
+ @keyframes bf-chart-fade {
245
+ from {
246
+ opacity: 0;
247
+ }
248
+ to {
249
+ opacity: 1;
250
+ }
251
+ }
252
+
167
253
  /* Safe areas: Capacitor 8.3+ injects --safe-area-inset-* on Android; env() covers iOS and web. */
168
254
  --spacing-safe-top: var(--safe-area-inset-top, env(safe-area-inset-top, 0px));
169
255
  --spacing-safe-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));
@@ -213,6 +299,21 @@
213
299
  --color-danger-soft: #3d1f1a;
214
300
  --color-danger-pressed: #f4a497;
215
301
  --color-danger-border: #d3563f;
302
+ --color-info: #7cc4ea; /* 7.2:1 on info-soft */
303
+ --color-info-soft: #14303e;
304
+ --color-tooltip: #ececee;
305
+ --color-on-tooltip: #1e2024; /* 13.8:1 on tooltip */
306
+
307
+ --color-chart-1: #3e9e66;
308
+ --color-chart-2: #7479ee;
309
+ --color-chart-3: #d8692f;
310
+ --color-chart-4: #1f9cb8;
311
+ --color-chart-5: #b08a1c;
312
+ --color-chart-6: #dc5893;
313
+ --color-chart-7: #a072e6;
314
+ --color-chart-8: #7f9c2c;
315
+ --color-chart-grid: #2a2c31;
316
+ --color-chart-axis: #75777e;
216
317
  --color-neutral: #b8bbc2;
217
318
  --color-neutral-soft: #24262b;
218
319