@africanies/angular-web-sdk 0.1.12 → 0.1.13

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 (181) hide show
  1. package/.nx/cache/13293303228070520113/dist/libs/africanies-core/README.md +85 -0
  2. package/.nx/cache/13293303228070520113/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs +4699 -0
  3. package/.nx/cache/13293303228070520113/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +1 -0
  4. package/.nx/cache/13293303228070520113/dist/libs/africanies-core/package.json +31 -0
  5. package/.nx/cache/13293303228070520113/dist/libs/africanies-core/types/africanies-africanies-core.d.ts +2748 -0
  6. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/README.md +46 -0
  7. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs +249 -0
  8. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +1 -0
  9. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/package.json +35 -0
  10. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/tailwind-preset.cjs +330 -0
  11. package/.nx/cache/13387631073062967069/dist/libs/africanies-theme/types/africanies-africanies-theme.d.ts +178 -0
  12. package/.nx/cache/16704640000606796352/dist/libs/africanies-storage/README.md +31 -0
  13. package/.nx/cache/16704640000606796352/dist/libs/africanies-storage/fesm2022/africanies-africanies-storage.mjs +249 -0
  14. package/.nx/cache/16704640000606796352/dist/libs/africanies-storage/fesm2022/africanies-africanies-storage.mjs.map +1 -0
  15. package/.nx/cache/16704640000606796352/dist/libs/africanies-storage/package.json +26 -0
  16. package/.nx/cache/16704640000606796352/dist/libs/africanies-storage/types/africanies-africanies-storage.d.ts +210 -0
  17. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/README.md +68 -0
  18. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/assets/brand/africanies-logo-mini.png +0 -0
  19. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/assets/brand/africanies-logo.png +0 -0
  20. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/assets/brand/africanies-logo.svg +5 -0
  21. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/assets/carriers/dhl.svg +7 -0
  22. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs +21251 -0
  23. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +1 -0
  24. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/package.json +35 -0
  25. package/.nx/cache/2427575433215940812/dist/libs/africanies-ui/types/africanies-africanies-ui.d.ts +5803 -0
  26. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/README.md +69 -0
  27. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/assets/icons.sprite.svg +1851 -0
  28. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs +839 -0
  29. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs.map +1 -0
  30. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/package.json +30 -0
  31. package/.nx/cache/7730350229628359718/dist/libs/africanies-icons/types/africanies-africanies-icons.d.ts +108 -0
  32. package/.nx/cache/run.json +35 -35
  33. package/.nx/cache/terminalOutputs/10603154579345867998 +397 -0
  34. package/.nx/cache/terminalOutputs/12354163057083828162 +80 -0
  35. package/.nx/cache/terminalOutputs/13293303228070520113 +21 -0
  36. package/.nx/cache/terminalOutputs/13387631073062967069 +21 -0
  37. package/.nx/cache/terminalOutputs/14876351543379349919 +176 -0
  38. package/.nx/cache/terminalOutputs/15336883221450327589 +21 -0
  39. package/.nx/cache/terminalOutputs/16208231681037145050 +86 -84
  40. package/.nx/cache/terminalOutputs/16704640000606796352 +21 -0
  41. package/.nx/cache/terminalOutputs/1811006905937373707 +74 -0
  42. package/.nx/cache/terminalOutputs/2005781115771702035 +8 -0
  43. package/.nx/cache/terminalOutputs/2360743690449633551 +21 -0
  44. package/.nx/cache/terminalOutputs/2427575433215940812 +21 -0
  45. package/.nx/cache/terminalOutputs/2981230413857865352 +8 -0
  46. package/.nx/cache/terminalOutputs/3243550283886864639 +8 -0
  47. package/.nx/cache/terminalOutputs/3380188914363501109 +231 -0
  48. package/.nx/cache/terminalOutputs/3699068646900552690 +8 -0
  49. package/.nx/cache/terminalOutputs/5175669339257931410 +8 -0
  50. package/.nx/cache/terminalOutputs/6040230831125637867 +8 -0
  51. package/.nx/cache/terminalOutputs/7730350229628359718 +21 -0
  52. package/.nx/cache/terminalOutputs/8098730470212963224 +87 -0
  53. package/.nx/cache/terminalOutputs/8928690901537686687 +21 -0
  54. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db +0 -0
  55. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db-shm +0 -0
  56. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db-wal +0 -0
  57. package/.nx/workspace-data/d/daemon.log +2859 -0
  58. package/.nx/workspace-data/d/server-process.json +2 -2
  59. package/.nx/workspace-data/file-map.json +2155 -2183
  60. package/.nx/workspace-data/nx_files.nxt +0 -0
  61. package/.nx/workspace-data/project-graph.json +2 -2
  62. package/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs +60 -0
  63. package/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +1 -1
  64. package/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs +6 -0
  65. package/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs.map +1 -1
  66. package/dist/libs/africanies-storage/fesm2022/africanies-africanies-storage.mjs +6 -0
  67. package/dist/libs/africanies-storage/fesm2022/africanies-africanies-storage.mjs.map +1 -1
  68. package/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs +6 -0
  69. package/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +1 -1
  70. package/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs +297 -51
  71. package/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +1 -1
  72. package/dist/libs/africanies-ui/types/africanies-africanies-ui.d.ts +12 -12
  73. package/libs/africanies-core/src/lib/auth/auth-token.service.ts +3 -0
  74. package/libs/africanies-core/src/lib/auth/auth.service.ts +3 -0
  75. package/libs/africanies-core/src/lib/country/country.service.ts +3 -0
  76. package/libs/africanies-core/src/lib/currency/currency.service.ts +3 -0
  77. package/libs/africanies-core/src/lib/document/document.service.ts +3 -0
  78. package/libs/africanies-core/src/lib/file/file.service.ts +3 -0
  79. package/libs/africanies-core/src/lib/filters/filter-options.resolver.ts +3 -0
  80. package/libs/africanies-core/src/lib/http/api-client.ts +3 -0
  81. package/libs/africanies-core/src/lib/mode/mode-config.service.ts +3 -0
  82. package/libs/africanies-core/src/lib/notification/notification.service.ts +3 -0
  83. package/libs/africanies-core/src/lib/overlay/route-overlay.service.ts +3 -0
  84. package/libs/africanies-core/src/lib/payment-method/payment-method.service.ts +3 -0
  85. package/libs/africanies-core/src/lib/plan/plan.service.ts +3 -0
  86. package/libs/africanies-core/src/lib/product/product.service.ts +3 -0
  87. package/libs/africanies-core/src/lib/service/service.service.ts +3 -0
  88. package/libs/africanies-core/src/lib/shipment-method/shipment-method.service.ts +3 -0
  89. package/libs/africanies-core/src/lib/shipping/shipping-mode.service.ts +3 -0
  90. package/libs/africanies-core/src/lib/user/user.service.ts +3 -0
  91. package/libs/africanies-core/src/lib/warehouse/warehouse.service.ts +3 -0
  92. package/libs/africanies-core/src/lib/zone/zone.service.ts +3 -0
  93. package/libs/africanies-icons/src/lib/africanies-icon.component.ts +3 -0
  94. package/libs/africanies-icons/src/lib/icon-registry.service.ts +3 -0
  95. package/libs/africanies-storage/src/lib/local-storage.service.ts +3 -0
  96. package/libs/africanies-storage/src/lib/session-storage.service.ts +3 -0
  97. package/libs/africanies-theme/src/lib/mode-color.service.ts +3 -0
  98. package/libs/africanies-theme/src/lib/theme.service.ts +3 -0
  99. package/libs/africanies-ui/src/index.ts +11 -11
  100. package/libs/africanies-ui/src/lib/accordion/accordion.component.ts +3 -0
  101. package/libs/africanies-ui/src/lib/action-menu/action-menu-trigger.directive.ts +3 -0
  102. package/libs/africanies-ui/src/lib/action-menu/action-menu.component.ts +3 -0
  103. package/libs/africanies-ui/src/lib/alert/alert.component.ts +3 -0
  104. package/libs/africanies-ui/src/lib/avatar/avatar-menu.component.ts +3 -0
  105. package/libs/africanies-ui/src/lib/avatar/avatar.component.ts +3 -0
  106. package/libs/africanies-ui/src/lib/brand/brand-logo.component.ts +3 -0
  107. package/libs/africanies-ui/src/lib/button/button.component.ts +3 -0
  108. package/libs/africanies-ui/src/lib/carrier/carrier-logo.component.ts +3 -0
  109. package/libs/africanies-ui/src/lib/chip/chip.component.ts +3 -0
  110. package/libs/africanies-ui/src/lib/content-stack/content-stack.component.ts +3 -0
  111. package/libs/africanies-ui/src/lib/copy-button/copy-button.component.ts +3 -0
  112. package/libs/africanies-ui/src/lib/feedback/async-state.component.ts +3 -0
  113. package/libs/africanies-ui/src/lib/feedback/empty-state.component.ts +3 -0
  114. package/libs/africanies-ui/src/lib/feedback/error-indicator.component.ts +3 -0
  115. package/libs/africanies-ui/src/lib/feedback/error-state.component.ts +3 -0
  116. package/libs/africanies-ui/src/lib/feedback/loading-state.component.ts +3 -0
  117. package/libs/africanies-ui/src/lib/filters/filter-drawer.panel.ts +3 -0
  118. package/libs/africanies-ui/src/lib/filters/filter-drawer.service.ts +3 -0
  119. package/libs/africanies-ui/src/lib/filters/filter-query.service.ts +3 -0
  120. package/libs/africanies-ui/src/lib/forms/address-input/address-input.component.ts +3 -0
  121. package/libs/africanies-ui/src/lib/forms/address-input/google-places.service.ts +3 -0
  122. package/libs/africanies-ui/src/lib/forms/checkbox/checkbox.component.ts +3 -0
  123. package/libs/africanies-ui/src/lib/forms/date-picker/date-picker.component.ts +3 -0
  124. package/libs/africanies-ui/src/lib/forms/file-upload/camera-capture.dialog.ts +3 -0
  125. package/libs/africanies-ui/src/lib/forms/file-upload/file-preview.dialog.ts +3 -0
  126. package/libs/africanies-ui/src/lib/forms/file-upload/file-upload.component.ts +3 -0
  127. package/libs/africanies-ui/src/lib/forms/index.ts +3 -3
  128. package/libs/africanies-ui/src/lib/forms/number-input/number-input.component.ts +3 -0
  129. package/libs/africanies-ui/src/lib/forms/otp-input/otp-input.component.ts +3 -0
  130. package/libs/africanies-ui/src/lib/forms/phone-input/phone-input.component.ts +9 -6
  131. package/libs/africanies-ui/src/lib/forms/radio/radio.component.ts +3 -0
  132. package/libs/africanies-ui/src/lib/forms/search-combobox/search-combobox.component.ts +3 -0
  133. package/libs/africanies-ui/src/lib/forms/select/select.component.ts +3 -0
  134. package/libs/africanies-ui/src/lib/forms/text-input/text-input.component.ts +3 -0
  135. package/libs/africanies-ui/src/lib/forms/textarea/textarea.component.ts +3 -0
  136. package/libs/africanies-ui/src/lib/forms/toggle/toggle.component.ts +3 -0
  137. package/libs/africanies-ui/src/lib/image/image.component.ts +3 -0
  138. package/libs/africanies-ui/src/lib/info-popover/info-popover-content.directive.ts +3 -0
  139. package/libs/africanies-ui/src/lib/info-popover/info-popover-trigger.directive.ts +3 -0
  140. package/libs/africanies-ui/src/lib/info-popover/info-popover.component.ts +3 -0
  141. package/libs/africanies-ui/src/lib/layout/app-shell-content-header.component.ts +3 -0
  142. package/libs/africanies-ui/src/lib/layout/app-shell-header-slot.directive.ts +3 -0
  143. package/libs/africanies-ui/src/lib/layout/app-shell-header.component.ts +9 -0
  144. package/libs/africanies-ui/src/lib/layout/app-shell.component.ts +3 -0
  145. package/libs/africanies-ui/src/lib/layout/header-weather.spec.ts +62 -94
  146. package/libs/africanies-ui/src/lib/layout/header-weather.ts +54 -61
  147. package/libs/africanies-ui/src/lib/layout/page-header.component.ts +3 -0
  148. package/libs/africanies-ui/src/lib/modules/africanies-actions.module.ts +3 -0
  149. package/libs/africanies-ui/src/lib/modules/africanies-feedback.module.ts +3 -0
  150. package/libs/africanies-ui/src/lib/modules/africanies-forms.module.ts +3 -0
  151. package/libs/africanies-ui/src/lib/modules/africanies-info-popover.module.ts +3 -0
  152. package/libs/africanies-ui/src/lib/modules/africanies-navigation.module.ts +3 -0
  153. package/libs/africanies-ui/src/lib/modules/africanies-stepper.module.ts +3 -0
  154. package/libs/africanies-ui/src/lib/modules/africanies-table.module.ts +3 -0
  155. package/libs/africanies-ui/src/lib/modules/africanies-tooltip.module.ts +3 -0
  156. package/libs/africanies-ui/src/lib/navigation/breadcrumb/breadcrumb.component.ts +3 -0
  157. package/libs/africanies-ui/src/lib/navigation/segment/segment.component.ts +3 -0
  158. package/libs/africanies-ui/src/lib/navigation/shipping-mode-switch/shipping-mode-switch.component.ts +3 -0
  159. package/libs/africanies-ui/src/lib/navigation/side-nav/africanies-side-nav.component.ts +3 -0
  160. package/libs/africanies-ui/src/lib/navigation/tabs/tab-def.directive.ts +3 -0
  161. package/libs/africanies-ui/src/lib/navigation/tabs/tabs.component.ts +3 -0
  162. package/libs/africanies-ui/src/lib/notifications/notification-drawer.panel.ts +3 -0
  163. package/libs/africanies-ui/src/lib/notifications/notification-drawer.service.ts +3 -0
  164. package/libs/africanies-ui/src/lib/overlay/confirm-dialog.component.ts +3 -0
  165. package/libs/africanies-ui/src/lib/overlay/confirm.service.ts +3 -0
  166. package/libs/africanies-ui/src/lib/overlay/drawer.service.ts +3 -0
  167. package/libs/africanies-ui/src/lib/overlay/modal.service.ts +3 -0
  168. package/libs/africanies-ui/src/lib/overlay/overlay-frame.component.ts +9 -0
  169. package/libs/africanies-ui/src/lib/pagination/pagination.component.ts +3 -0
  170. package/libs/africanies-ui/src/lib/stepper/step-def.directive.ts +3 -0
  171. package/libs/africanies-ui/src/lib/stepper/stepper.component.ts +3 -0
  172. package/libs/africanies-ui/src/lib/table/cell-def.directive.ts +3 -0
  173. package/libs/africanies-ui/src/lib/table/header-cell-def.directive.ts +3 -0
  174. package/libs/africanies-ui/src/lib/table/row-detail-def.directive.ts +3 -0
  175. package/libs/africanies-ui/src/lib/table/table.component.ts +3 -0
  176. package/libs/africanies-ui/src/lib/toast/toast-host.component.ts +4 -1
  177. package/libs/africanies-ui/src/lib/toast/toast-item.component.ts +3 -0
  178. package/libs/africanies-ui/src/lib/toast/toast.service.ts +3 -0
  179. package/libs/africanies-ui/src/lib/tooltip/tooltip-trigger.directive.ts +3 -0
  180. package/libs/africanies-ui/src/lib/tooltip/tooltip.component.ts +3 -0
  181. package/package.json +1 -1
@@ -46,6 +46,9 @@ import { NgTemplateOutlet, NgClass, DatePipe } from '@angular/common';
46
46
  * </button>
47
47
  * ```
48
48
  */
49
+ /**
50
+ * Theme-token button used across AFRICANIES surfaces.
51
+ */
49
52
  class ButtonComponent {
50
53
  modeColor = inject(ModeColorService);
51
54
  /**
@@ -239,6 +242,9 @@ function toastFingerprint(variant, title, message) {
239
242
  * Single toast card — dense, token-based, with optional countdown rail.
240
243
  * Stacked identical toasts can expand; close peels the outermost copy.
241
244
  */
245
+ /**
246
+ * Single toast card — dense, token-based, with optional countdown rail. Stacked identical toasts can expand; close peels the outermost copy.
247
+ */
242
248
  class ToastItemComponent {
243
249
  /** Stack entry to render. */
244
250
  item = input.required(/* @ts-ignore */
@@ -667,6 +673,9 @@ function railFill(variant) {
667
673
  * Caps to the viewport and scrolls when the stack (or an expanded group)
668
674
  * would otherwise run off-screen.
669
675
  */
676
+ /**
677
+ * Fixed stack host attached once by {@link ToastService.ensureHost}. Caps to the viewport and scrolls when the stack (or an expanded group) would otherwise run off-screen.
678
+ */
670
679
  class ToastHostComponent {
671
680
  toastService = inject(ToastService);
672
681
  toasts = this.toastService.items;
@@ -684,7 +693,7 @@ class ToastHostComponent {
684
693
  <div class="flex w-full flex-col gap-2">
685
694
  @if (toastService.showHostActions()) {
686
695
  <div
687
- class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-white/80 pb-1 backdrop-blur-sm dark:bg-ink-surface/80"
696
+ class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-transparent pb-1 backdrop-blur-sm dark:bg-transparent"
688
697
  >
689
698
  @if (toastService.hasStacks()) {
690
699
  @if (toastService.allStacksExpanded()) {
@@ -753,7 +762,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
753
762
  <div class="flex w-full flex-col gap-2">
754
763
  @if (toastService.showHostActions()) {
755
764
  <div
756
- class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-white/80 pb-1 backdrop-blur-sm dark:bg-ink-surface/80"
765
+ class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-transparent pb-1 backdrop-blur-sm dark:bg-transparent"
757
766
  >
758
767
  @if (toastService.hasStacks()) {
759
768
  @if (toastService.allStacksExpanded()) {
@@ -827,6 +836,9 @@ const TOAST_OVERLAY_Z_INDEX = '1100';
827
836
  *
828
837
  * Prefer {@link provideAfricaniesToasts} at bootstrap so the host overlay mounts once.
829
838
  */
839
+ /**
840
+ * Imperative toast stack for AFRICANIES apps.
841
+ */
830
842
  class ToastService {
831
843
  overlay = inject(Overlay);
832
844
  injector = inject(Injector);
@@ -1161,6 +1173,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1161
1173
  * <africanies-copy [value]="ref" ariaLabel="Copy reference" [announce]="true" />
1162
1174
  * ```
1163
1175
  */
1176
+ /**
1177
+ * Icon button that copies {@link value} to the clipboard.
1178
+ */
1164
1179
  class CopyButtonComponent {
1165
1180
  toastService = inject(ToastService, { optional: true });
1166
1181
  /** Plain text written to the clipboard. */
@@ -1396,6 +1411,9 @@ function navigateNavItem(router, item, keepScroll = true) {
1396
1411
  * </africanies-action-menu>
1397
1412
  * ```
1398
1413
  */
1414
+ /**
1415
+ * Marks projected content as the custom trigger for {@link ActionMenuComponent}.
1416
+ */
1399
1417
  class ActionMenuTriggerDirective {
1400
1418
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActionMenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1401
1419
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ActionMenuTriggerDirective, isStandalone: true, selector: "[africaniesActionMenuTrigger]", ngImport: i0 });
@@ -1475,6 +1493,9 @@ const MENU_PANEL_POSITIONS = [
1475
1493
  * }
1476
1494
  * ```
1477
1495
  */
1496
+ /**
1497
+ * Compact overflow menu for row and toolbar actions.
1498
+ */
1478
1499
  class ActionMenuComponent {
1479
1500
  router = inject(Router);
1480
1501
  panelPositions = MENU_PANEL_POSITIONS;
@@ -1902,6 +1923,9 @@ let nextMenuId = 0;
1902
1923
  * />
1903
1924
  * ```
1904
1925
  */
1926
+ /**
1927
+ * Blocking empty state when a fetch succeeded but produced no rows / value.
1928
+ */
1905
1929
  class EmptyStateComponent {
1906
1930
  /**
1907
1931
  * Empty-copy. Defaults to a generic phrase; override for filter-specific help.
@@ -2001,6 +2025,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2001
2025
  * </div>
2002
2026
  * ```
2003
2027
  */
2028
+ /**
2029
+ * Compact error pill for non-blocking failures while stale data stays visible — distinct from {@link ErrorStateComponent} (full-section blocking).
2030
+ */
2004
2031
  class ErrorIndicatorComponent {
2005
2032
  /**
2006
2033
  * Error copy. When empty, the indicator is not shown.
@@ -2146,6 +2173,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2146
2173
  * />
2147
2174
  * ```
2148
2175
  */
2176
+ /**
2177
+ * Blocking error state for failed async fetches (not field validation).
2178
+ */
2149
2179
  class ErrorStateComponent {
2150
2180
  /**
2151
2181
  * Human-readable failure reason. Required so the alert is never an empty
@@ -2233,6 +2263,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2233
2263
  * <africanies-loading-state mode="inline" message="Refreshing…" />
2234
2264
  * ```
2235
2265
  */
2266
+ /**
2267
+ * Blocking / inline loading indicator for async surfaces.
2268
+ */
2236
2269
  class LoadingStateComponent {
2237
2270
  modeColor = inject(ModeColorService);
2238
2271
  /**
@@ -2344,6 +2377,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2344
2377
  * </africanies-async-state>
2345
2378
  * ```
2346
2379
  */
2380
+ /**
2381
+ * Async query wrapper that maps {@link AsyncQueryStateModel} into loading / error / empty / success with non-blocking badges for background activity.
2382
+ */
2347
2383
  class AsyncStateComponent {
2348
2384
  /**
2349
2385
  * Snapshot from the app's query layer (e.g. mapped `injectQuery()` signals).
@@ -2560,6 +2596,9 @@ function isEmptyData(data) {
2560
2596
  * </africanies-accordion>
2561
2597
  * ```
2562
2598
  */
2599
+ /**
2600
+ * Bordered expandable panel with animated fold — the pattern used on Manifest detail and Make Payment review.
2601
+ */
2563
2602
  class AccordionComponent {
2564
2603
  /** Plain-text header. Prefer projected `[africaniesAccordionTitle]` for rich titles. */
2565
2604
  title = input('', /* @ts-ignore */
@@ -2690,6 +2729,9 @@ const DEFAULT_ICONS = {
2690
2729
  * }
2691
2730
  * ```
2692
2731
  */
2732
+ /**
2733
+ * Inline page/section banner — distinct from {@link ErrorStateComponent} (full-section async failure + Retry).
2734
+ */
2693
2735
  class AlertComponent {
2694
2736
  /** Semantic tone. Defaults to `info`. */
2695
2737
  variant = input('info', /* @ts-ignore */
@@ -2871,6 +2913,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2871
2913
  * <africanies-chip variant="warning" [removable]="true" (removed)="clear()">Pending</africanies-chip>
2872
2914
  * ```
2873
2915
  */
2916
+ /**
2917
+ * Compact status / category label.
2918
+ */
2874
2919
  class ChipComponent {
2875
2920
  /** Semantic tone. Defaults to `neutral`. Ignored when {@link color} is set. */
2876
2921
  variant = input('neutral', /* @ts-ignore */
@@ -3026,6 +3071,9 @@ function normalizeCarrierLogoSlug(value) {
3026
3071
  * <africanies-carrier-logo [carrier]="item.delivery_vendor" />
3027
3072
  * ```
3028
3073
  */
3074
+ /**
3075
+ * Inline carrier marks for delivery vendor cells.
3076
+ */
3029
3077
  class CarrierLogoComponent {
3030
3078
  /** Raw carrier slug or label from the API. */
3031
3079
  carrier = input('', /* @ts-ignore */
@@ -3178,6 +3226,9 @@ function deliveryVendorSelected(storedValue, baseOptions = deliveryVendorSelectO
3178
3226
  * />
3179
3227
  * ```
3180
3228
  */
3229
+ /**
3230
+ * Compact stacked text for table cells and detail panels.
3231
+ */
3181
3232
  class ContentStackComponent {
3182
3233
  /** Primary line — usually a person or entity name. */
3183
3234
  title = input('', /* @ts-ignore */
@@ -3290,6 +3341,9 @@ function provideAfricaniesToasts() {
3290
3341
  * </africanies-tooltip>
3291
3342
  * ```
3292
3343
  */
3344
+ /**
3345
+ * Marks projected content as the custom trigger for {@link TooltipComponent}.
3346
+ */
3293
3347
  class TooltipTriggerDirective {
3294
3348
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TooltipTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3295
3349
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: TooltipTriggerDirective, isStandalone: true, selector: "[africaniesTooltipTrigger]", ngImport: i0 });
@@ -3389,6 +3443,9 @@ const PLACEMENT_POSITIONS$1 = {
3389
3443
  * </africanies-tooltip>
3390
3444
  * ```
3391
3445
  */
3446
+ /**
3447
+ * Contextual help tip — default info icon or a custom projected trigger.
3448
+ */
3392
3449
  class TooltipComponent {
3393
3450
  tooltipId = `africanies-tooltip-${++nextTooltipId}`;
3394
3451
  customTrigger = contentChild(TooltipTriggerDirective, /* @ts-ignore */
@@ -3666,6 +3723,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3666
3723
  * </africanies-info-popover>
3667
3724
  * ```
3668
3725
  */
3726
+ /**
3727
+ * Marks projected content as the custom trigger for {@link InfoPopoverComponent}.
3728
+ */
3669
3729
  class InfoPopoverTriggerDirective {
3670
3730
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InfoPopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3671
3731
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: InfoPopoverTriggerDirective, isStandalone: true, selector: "[africaniesInfoPopoverTrigger]", ngImport: i0 });
@@ -3771,6 +3831,9 @@ const PLACEMENT_POSITIONS = {
3771
3831
  * </africanies-info-popover>
3772
3832
  * ```
3773
3833
  */
3834
+ /**
3835
+ * Hover / focus / click info panel with a white card, optional title, and fully projected body content (any child component or markup).
3836
+ */
3774
3837
  class InfoPopoverComponent {
3775
3838
  panelId = `africanies-info-popover-${++nextInfoPopoverId}`;
3776
3839
  customTrigger = contentChild(InfoPopoverTriggerDirective, /* @ts-ignore */
@@ -4086,6 +4149,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
4086
4149
  * </africanies-info-popover>
4087
4150
  * ```
4088
4151
  */
4152
+ /**
4153
+ * Marks projected content as the panel body for {@link InfoPopoverComponent}.
4154
+ */
4089
4155
  class InfoPopoverContentDirective {
4090
4156
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InfoPopoverContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4091
4157
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: InfoPopoverContentDirective, isStandalone: true, selector: "[africaniesInfoPopoverContent]", ngImport: i0 });
@@ -4186,6 +4252,9 @@ let nextDatePickerId = 0;
4186
4252
  * </africanies-date-picker>
4187
4253
  * ```
4188
4254
  */
4255
+ /**
4256
+ * Date field wrapping native `input[type=date]`, following shared AFRICANIES form field pattern.
4257
+ */
4189
4258
  class DatePickerComponent {
4190
4259
  theme = inject(ThemeService, { optional: true });
4191
4260
  controlId = `africanies-date-picker-${++nextDatePickerId}`;
@@ -4632,6 +4701,9 @@ function attachOverlayContent(overlay, parentInjector, component, overlayConfig,
4632
4701
  * });
4633
4702
  * ```
4634
4703
  */
4704
+ /**
4705
+ * Opens centered modal dialogs via Angular CDK Overlay.
4706
+ */
4635
4707
  class ModalService {
4636
4708
  overlay = inject(Overlay);
4637
4709
  injector = inject(Injector);
@@ -4817,6 +4889,9 @@ const SELECT_PANEL_POSITIONS = [
4817
4889
  * ]);
4818
4890
  * ```
4819
4891
  */
4892
+ /**
4893
+ * Option select following the shared AFRICANIES form field pattern.
4894
+ */
4820
4895
  class SelectComponent {
4821
4896
  modal = inject(ModalService, { optional: true });
4822
4897
  modeColor = inject(ModeColorService);
@@ -6133,6 +6208,9 @@ let nextTextInputId = 0;
6133
6208
  * </africanies-text-input>
6134
6209
  * ```
6135
6210
  */
6211
+ /**
6212
+ * Single-line text field — **reference** form control for `@africanies/africanies-ui`.
6213
+ */
6136
6214
  class TextInputComponent {
6137
6215
  /** Stable ids so label / aria-describedby stay paired across re-renders. */
6138
6216
  controlId = `africanies-text-input-${++nextTextInputId}`;
@@ -6341,6 +6419,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
6341
6419
  * No-ops when Angular Router is not in the injector (unit tests without
6342
6420
  * `provideRouter`).
6343
6421
  */
6422
+ /**
6423
+ * Bidirectional list-query sync with the browser URL.
6424
+ */
6344
6425
  class FilterQueryService {
6345
6426
  route = inject(ActivatedRoute, { optional: true });
6346
6427
  router = inject(Router, { optional: true });
@@ -6475,6 +6556,9 @@ function paramMapToRecord(map) {
6475
6556
  * {@link FilterDrawerResult}. Successful Apply also writes the query bag to
6476
6557
  * the browser URL via {@link FilterQueryService} (page resets to 1).
6477
6558
  */
6559
+ /**
6560
+ * Schema-driven filter drawer body.
6561
+ */
6478
6562
  class FilterDrawerPanel {
6479
6563
  data = inject(OVERLAY_DATA);
6480
6564
  ref = inject((AfricaniesOverlayRef));
@@ -7455,6 +7539,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7455
7539
  * drawer.open(FiltersPanel, { data: { facet: 'status' } });
7456
7540
  * ```
7457
7541
  */
7542
+ /**
7543
+ * Opens edge-anchored drawer panels via Angular CDK Overlay.
7544
+ */
7458
7545
  class DrawerService {
7459
7546
  overlay = inject(Overlay);
7460
7547
  injector = inject(Injector);
@@ -7554,6 +7641,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7554
7641
  * });
7555
7642
  * ```
7556
7643
  */
7644
+ /**
7645
+ * Opens the schema-driven {@link FilterDrawerPanel} via {@link DrawerService}.
7646
+ */
7557
7647
  class FilterDrawerService {
7558
7648
  drawer = inject(DrawerService);
7559
7649
  filterQuery = inject(FilterQueryService);
@@ -7590,6 +7680,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7590
7680
  * primary button shows {@link ButtonComponent} loading until the work
7591
7681
  * settles. Errors leave the dialog open.
7592
7682
  */
7683
+ /**
7684
+ * Built-in confirm dialog hosted by {@link ConfirmService} / {@link ModalService}.
7685
+ */
7593
7686
  class ConfirmDialogComponent {
7594
7687
  /** Stable ids so aria-labelledby / aria-describedby stay unique per instance. */
7595
7688
  titleId = `africanies-confirm-title-${cryptoRandom()}`;
@@ -7890,6 +7983,9 @@ function cryptoRandom() {
7890
7983
  * });
7891
7984
  * ```
7892
7985
  */
7986
+ /**
7987
+ * One-line confirm flow built on {@link ModalService}.
7988
+ */
7893
7989
  class ConfirmService {
7894
7990
  modal = inject(ModalService);
7895
7991
  /**
@@ -7937,6 +8033,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7937
8033
  * </africanies-overlay-frame>
7938
8034
  * ```
7939
8035
  */
8036
+ /**
8037
+ * Marks projected chrome as the non-scrolling overlay header (title + close).
8038
+ */
7940
8039
  class OverlayHeaderDirective {
7941
8040
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: OverlayHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7942
8041
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: OverlayHeaderDirective, isStandalone: true, selector: "[africaniesOverlayHeader]", ngImport: i0 });
@@ -7962,6 +8061,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
7962
8061
  * </africanies-overlay-frame>
7963
8062
  * ```
7964
8063
  */
8064
+ /**
8065
+ * Marks projected chrome as the non-scrolling overlay footer (actions).
8066
+ */
7965
8067
  class OverlayFooterDirective {
7966
8068
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: OverlayFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7967
8069
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: OverlayFooterDirective, isStandalone: true, selector: "[africaniesOverlayFooter]", ngImport: i0 });
@@ -8004,6 +8106,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8004
8106
  * export class EditModal {}
8005
8107
  * ```
8006
8108
  */
8109
+ /**
8110
+ * Header / scroll body / footer shell for {@link ModalService} and {@link DrawerService} panels.
8111
+ */
8007
8112
  class OverlayFrameComponent {
8008
8113
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: OverlayFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8009
8114
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: OverlayFrameComponent, isStandalone: true, selector: "africanies-overlay-frame", host: { classAttribute: "flex min-h-0 w-full flex-1 flex-col overflow-hidden" }, ngImport: i0, template: `
@@ -8113,6 +8218,9 @@ const PLACE_DETAILS_FIELD_MASK = 'id,displayName,formattedAddress,addressCompone
8113
8218
  * No Maps JavaScript widget, AutocompleteService, or PlacesService.
8114
8219
  * Register {@link provideGooglePlaces} with a key that has Places API (New).
8115
8220
  */
8221
+ /**
8222
+ * Places API (New) over REST — same contract as the working React autocomplete (`POST …/places:autocomplete`, `GET …/places/{id}`).
8223
+ */
8116
8224
  class GooglePlacesService {
8117
8225
  config = inject(GOOGLE_PLACES_CONFIG, { optional: true });
8118
8226
  /**
@@ -8312,6 +8420,9 @@ const ADDRESS_PANEL_POSITIONS = [
8312
8420
  * </africanies-address-input>
8313
8421
  * ```
8314
8422
  */
8423
+ /**
8424
+ * Google Places address field with suggestion dropdown.
8425
+ */
8315
8426
  class AddressInputComponent {
8316
8427
  places = inject(GooglePlacesService);
8317
8428
  destroyRef = inject(DestroyRef);
@@ -8898,6 +9009,9 @@ let nextCheckboxId = 0;
8898
9009
  * />
8899
9010
  * ```
8900
9011
  */
9012
+ /**
9013
+ * Boolean checkbox following the shared AFRICANIES form field pattern.
9014
+ */
8901
9015
  class CheckboxComponent {
8902
9016
  modeColor = inject(ModeColorService);
8903
9017
  controlId = `africanies-checkbox-${++nextCheckboxId}`;
@@ -9208,6 +9322,9 @@ function fileExtensionLabel(fileName) {
9208
9322
  * Prefer opening via {@link ModalService} so the stream is owned by this
9209
9323
  * dialog and torn down on close / destroy.
9210
9324
  */
9325
+ /**
9326
+ * Live webcam capture dialog for {@link FileUploadComponent}.
9327
+ */
9211
9328
  class CameraCaptureDialogComponent {
9212
9329
  destroyRef = inject(DestroyRef);
9213
9330
  ref = inject((AfricaniesOverlayRef));
@@ -9514,6 +9631,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
9514
9631
  * Object URLs created here are revoked on destroy; the list’s image
9515
9632
  * `previewUrl` is left alone.
9516
9633
  */
9634
+ /**
9635
+ * Large-file preview modal for {@link FileUploadComponent}.
9636
+ */
9517
9637
  class FilePreviewDialogComponent {
9518
9638
  data = inject(OVERLAY_DATA);
9519
9639
  ref = inject((AfricaniesOverlayRef));
@@ -9713,6 +9833,9 @@ let nextFileUploadId = 0;
9713
9833
  * />
9714
9834
  * ```
9715
9835
  */
9836
+ /**
9837
+ * File / camera / drag-and-drop picker following the shared AFRICANIES form field pattern.
9838
+ */
9716
9839
  class FileUploadComponent {
9717
9840
  destroyRef = inject(DestroyRef);
9718
9841
  /** Optional so the control still works when overlays are not registered. */
@@ -10781,6 +10904,9 @@ function formatWhileTyping(raw) {
10781
10904
  * amount = signal<number | null>(1250); // UI shows "1,250"
10782
10905
  * ```
10783
10906
  */
10907
+ /**
10908
+ * Numeric field following the shared AFRICANIES form field pattern.
10909
+ */
10784
10910
  class NumberInputComponent {
10785
10911
  controlId = `africanies-number-input-${++nextNumberInputId}`;
10786
10912
  hintId = `${this.controlId}-hint`;
@@ -11064,6 +11190,9 @@ let nextOtpId = 0;
11064
11190
  * />
11065
11191
  * ```
11066
11192
  */
11193
+ /**
11194
+ * One-time-passcode field — discrete digit cells, single string model.
11195
+ */
11067
11196
  class OtpInputComponent {
11068
11197
  destroyRef = inject(DestroyRef);
11069
11198
  cellInputs = viewChildren('cellInput', /* @ts-ignore */
@@ -12006,6 +12135,9 @@ const PANEL_POSITIONS$1 = [
12006
12135
  * />
12007
12136
  * ```
12008
12137
  */
12138
+ /**
12139
+ * International phone field — flag + dial code + national number.
12140
+ */
12009
12141
  class PhoneInputComponent {
12010
12142
  controlId = `africanies-phone-input-${++nextPhoneInputId}`;
12011
12143
  hintId = `${this.controlId}-hint`;
@@ -12496,6 +12628,9 @@ let nextRadioId = 0;
12496
12628
  * />
12497
12629
  * ```
12498
12630
  */
12631
+ /**
12632
+ * Radio group following the shared AFRICANIES form field pattern.
12633
+ */
12499
12634
  class RadioComponent {
12500
12635
  modeColor = inject(ModeColorService);
12501
12636
  groupName = `africanies-radio-${++nextRadioId}`;
@@ -12741,6 +12876,9 @@ const PANEL_POSITIONS = [
12741
12876
  * />
12742
12877
  * ```
12743
12878
  */
12879
+ /**
12880
+ * Generic type-as-you-search combobox with a debounced async lookup and overlay result list.
12881
+ */
12744
12882
  class SearchComboboxComponent {
12745
12883
  destroyRef = inject(DestroyRef);
12746
12884
  controlId = `africanies-search-combobox-${++nextSearchComboboxId}`;
@@ -13370,6 +13508,9 @@ let nextTextareaId = 0;
13370
13508
  * />
13371
13509
  * ```
13372
13510
  */
13511
+ /**
13512
+ * Multi-line text field following the shared form-control pattern (`shared AFRICANIES form field pattern`). Supports prefix/suffix slots, field-level `error`, and {@link ControlValueAccessor}.
13513
+ */
13373
13514
  class TextareaComponent {
13374
13515
  controlId = `africanies-textarea-${++nextTextareaId}`;
13375
13516
  hintId = `${this.controlId}-hint`;
@@ -13565,6 +13706,9 @@ let nextToggleId = 0;
13565
13706
  * />
13566
13707
  * ```
13567
13708
  */
13709
+ /**
13710
+ * Boolean switch following the shared AFRICANIES form field pattern.
13711
+ */
13568
13712
  class ToggleComponent {
13569
13713
  modeColor = inject(ModeColorService);
13570
13714
  controlId = `africanies-toggle-${++nextToggleId}`;
@@ -13812,6 +13956,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
13812
13956
  * <africanies-breadcrumb [items]="staticCrumbs" />
13813
13957
  * ```
13814
13958
  */
13959
+ /**
13960
+ * Breadcrumb trail for hierarchical navigation.
13961
+ */
13815
13962
  class BreadcrumbComponent {
13816
13963
  modeColor = inject(ModeColorService);
13817
13964
  /** Ordered crumbs; the last entry is the current page. */
@@ -14322,6 +14469,9 @@ const DEFAULT_LINK_ACTIVE$2 = {
14322
14469
  * ]" />
14323
14470
  * ```
14324
14471
  */
14472
+ /**
14473
+ * Compact segmented control for view modes and filters.
14474
+ */
14325
14475
  class SegmentComponent {
14326
14476
  router = inject(Router);
14327
14477
  modeColor = inject(ModeColorService);
@@ -14631,6 +14781,9 @@ const SHIPPING_MODE_GLYPH = `M88.42,68.75a48.8,48.8,0,0,1-4.74,11.1h9.89a7.67,7.
14631
14781
  * </africanies-side-nav>
14632
14782
  * ```
14633
14783
  */
14784
+ /**
14785
+ * Two-up shipping mode switcher for app-shell side navs.
14786
+ */
14634
14787
  class ShippingModeSwitchComponent {
14635
14788
  shipping = inject(ShippingModeService);
14636
14789
  /**
@@ -15026,6 +15179,9 @@ const AFRICANIES_BRAND_LOGO_MINI_URL = new InjectionToken('AFRICANIES_BRAND_LOGO
15026
15179
  * Override with a custom `logoSrc` on {@link SideNavComponent} when the host
15027
15180
  * ships its own mark.
15028
15181
  */
15182
+ /**
15183
+ * Default AFRICANIES wordmark — inlined so it works without copying static assets.
15184
+ */
15029
15185
  class BrandLogoComponent {
15030
15186
  size = input('md', /* @ts-ignore */
15031
15187
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
@@ -15159,6 +15315,9 @@ const DEFAULT_LINK_ACTIVE$1 = {
15159
15315
  * />
15160
15316
  * ```
15161
15317
  */
15318
+ /**
15319
+ * App shell side navigation with icons, nested items, and a collapsible rail.
15320
+ */
15162
15321
  class SideNavComponent {
15163
15322
  modeColor = inject(ModeColorService);
15164
15323
  defaultLogoUrl = inject(AFRICANIES_BRAND_LOGO_URL);
@@ -15478,6 +15637,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
15478
15637
  * </ng-template>
15479
15638
  * ```
15480
15639
  */
15640
+ /**
15641
+ * Registers projected tab panel content against a tab id for {@link TabsComponent} (local / non-router mode).
15642
+ */
15481
15643
  class TabDefDirective {
15482
15644
  /** Template projected as the active tab panel. */
15483
15645
  template = inject((TemplateRef));
@@ -15531,6 +15693,9 @@ const DEFAULT_LINK_ACTIVE = {
15531
15693
  * <router-outlet />
15532
15694
  * ```
15533
15695
  */
15696
+ /**
15697
+ * Tab list for page / section navigation.
15698
+ */
15534
15699
  class TabsComponent {
15535
15700
  router = inject(Router);
15536
15701
  modeColor = inject(ModeColorService);
@@ -15880,6 +16045,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
15880
16045
  * </africanies-page-header>
15881
16046
  * ```
15882
16047
  */
16048
+ /**
16049
+ * Page title + subtitle for product screens.
16050
+ */
15883
16051
  class PageHeaderComponent {
15884
16052
  /** Page heading. Omit when the shell already rendered a title. */
15885
16053
  title = input('', /* @ts-ignore */
@@ -15955,6 +16123,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
15955
16123
  * Content chrome above the app-shell body: Back, breadcrumbs, then the page
15956
16124
  * title and optional subtitle.
15957
16125
  */
16126
+ /**
16127
+ * Content chrome above the app-shell body: Back, breadcrumbs, then the page title and optional subtitle.
16128
+ */
15958
16129
  class AppShellContentHeaderComponent {
15959
16130
  router = inject(Router);
15960
16131
  breadcrumbs = input([], /* @ts-ignore */
@@ -16078,6 +16249,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
16078
16249
  * <africanies-avatar name="Ops Team" />
16079
16250
  * ```
16080
16251
  */
16252
+ /**
16253
+ * Circular avatar with image or initials fallback.
16254
+ */
16081
16255
  class AvatarComponent {
16082
16256
  /** Display name — used for initials when no image loads. */
16083
16257
  name = input('', /* @ts-ignore */
@@ -16184,6 +16358,9 @@ function initialsFromName(name) {
16184
16358
  * />
16185
16359
  * ```
16186
16360
  */
16361
+ /**
16362
+ * Avatar trigger with an attached overflow menu — profile / account actions.
16363
+ */
16187
16364
  class AvatarMenuComponent {
16188
16365
  name = input.required(/* @ts-ignore */
16189
16366
  ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
@@ -16280,6 +16457,9 @@ const MARK_ALL_CONFIRM_MS = 4000;
16280
16457
  *
16281
16458
  * Opened via {@link NotificationDrawerService}.
16282
16459
  */
16460
+ /**
16461
+ * Right-edge drawer listing in-app notifications.
16462
+ */
16283
16463
  class NotificationDrawerPanel {
16284
16464
  ref = inject(AfricaniesOverlayRef);
16285
16465
  data = inject(OVERLAY_DATA);
@@ -17086,6 +17266,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17086
17266
  *
17087
17267
  * Requires {@link provideAfricaniesUiOverlays} at bootstrap.
17088
17268
  */
17269
+ /**
17270
+ * Opens {@link NotificationDrawerPanel} via {@link DrawerService}.
17271
+ */
17089
17272
  class NotificationDrawerService {
17090
17273
  drawer = inject(DrawerService);
17091
17274
  /**
@@ -17369,13 +17552,14 @@ function hashString(value) {
17369
17552
  }
17370
17553
 
17371
17554
  /** Bump when cache shape or city resolution strategy changes. */
17372
- const CACHE_KEY = 'africanies-header-weather-v7';
17373
- const FETCH_MS = 4_000;
17374
- const BROWSER_GEO_MS = 3_500;
17375
- /** IP fallback — city string is used only when reverse-geocode is empty. */
17555
+ const CACHE_KEY = 'africanies-header-weather-v8';
17556
+ const FETCH_MS = 8_000;
17557
+ /** After Allow, wait for a GPS/Wi-Fi fix. A short timeout loses the prompt and falls through to IP. */
17558
+ const DEVICE_GEO_MS = 15_000;
17559
+ const DEVICE_GEO_PROMPT_MS = 25_000;
17560
+ /** IP city is the office egress (often Lagos) and must not label the device. */
17376
17561
  const GEO_URL = 'https://get.geojs.io/v1/ip/geo.json';
17377
- /** Client reverse-geocode so the label matches the forecast coordinates. */
17378
- const REVERSE_GEO_URL = 'https://api.bigdatacloud.net/data/reverse-geocode-client';
17562
+ const REVERSE_GEO_URL = 'https://geocoding-api.open-meteo.com/v1/reverse';
17379
17563
  const WEATHER_LABELS = {
17380
17564
  clear: 'Clear',
17381
17565
  cloudy: 'Cloudy',
@@ -17445,15 +17629,16 @@ function headerWeatherIcon(kind, hour) {
17445
17629
  return 'cloud-o';
17446
17630
  }
17447
17631
  /**
17448
- * City-level forecast via browser / IP geolocation + Open-Meteo (no API key).
17632
+ * City-level forecast. The label is the device location only.
17449
17633
  *
17450
- * Coordinates prefer the browser Geolocation API (accurate for travellers;
17451
- * may prompt once). Otherwise IP geo is used. The city label is reverse-
17452
- * geocoded from those coordinates, with the IP city as a fallback.
17634
+ * The Geolocation API (GPS / nearby Wi-Fi) is reverse-geocoded. IP lookup is
17635
+ * not used for the city a shared office egress makes every colleague "Lagos".
17636
+ * If the device fix is refused, weather still loads from IP coordinates with
17637
+ * no city.
17453
17638
  *
17454
17639
  * Fails closed: missing browser APIs, timeouts, and HTTP errors all return
17455
- * `null` so the greeting can stay time-of-day only. Cached per local hour
17456
- * in `sessionStorage`.
17640
+ * `null` so the greeting can stay time-of-day only. A snapshot with a city
17641
+ * is cached per local hour in `sessionStorage`.
17457
17642
  *
17458
17643
  * @param fetchFn - Injected `fetch` for tests.
17459
17644
  * @returns Forecast snapshot, or `null` when lookup fails.
@@ -17469,7 +17654,8 @@ async function loadHeaderWeather(fetchFn) {
17469
17654
  return cached;
17470
17655
  }
17471
17656
  try {
17472
- const coords = await resolveCoordinates(run);
17657
+ const device = await tryDeviceCoordinates();
17658
+ const coords = device ?? (await ipCoordinates(run));
17473
17659
  if (!coords) {
17474
17660
  return null;
17475
17661
  }
@@ -17486,10 +17672,13 @@ async function loadHeaderWeather(fetchFn) {
17486
17672
  return null;
17487
17673
  }
17488
17674
  const temperatureC = asNumber(forecast?.current?.temperature_2m) ?? undefined;
17489
- const city = (await reverseGeocodeCity(run, coords.latitude, coords.longitude)) ??
17490
- coords.fallbackCity;
17675
+ const city = device
17676
+ ? await reverseGeocodeCity(run, device.latitude, device.longitude)
17677
+ : undefined;
17491
17678
  const weather = { kind, temperatureC, city };
17492
- writeCache({ hour, kind, temperatureC, city });
17679
+ if (city) {
17680
+ writeCache({ hour, kind, temperatureC, city });
17681
+ }
17493
17682
  return weather;
17494
17683
  }
17495
17684
  catch {
@@ -17536,41 +17725,27 @@ function writeCache(value) {
17536
17725
  // Private mode / quota — greeting still works without cache.
17537
17726
  }
17538
17727
  }
17539
- /**
17540
- * Prefer device coordinates when available (may prompt once); otherwise fall
17541
- * back to IP geo. IP is always fetched in parallel so its city can backfill
17542
- * the label when reverse-geocode is empty (browser geo has no city string).
17543
- */
17544
- async function resolveCoordinates(fetchFn) {
17545
- const [browser, ipGeo] = await Promise.all([
17546
- tryBrowserGeolocation(),
17547
- fetchIpGeo(fetchFn),
17548
- ]);
17549
- const ipCity = asCity(ipGeo?.city);
17550
- if (browser) {
17551
- return { ...browser, fallbackCity: ipCity };
17552
- }
17553
- const latitude = asNumber(ipGeo?.latitude);
17554
- const longitude = asNumber(ipGeo?.longitude);
17728
+ async function ipCoordinates(fetchFn) {
17729
+ const payload = (await fetchJson(fetchFn, GEO_URL));
17730
+ const latitude = asNumber(payload?.latitude);
17731
+ const longitude = asNumber(payload?.longitude);
17555
17732
  if (latitude === null || longitude === null) {
17556
17733
  return null;
17557
17734
  }
17558
- return {
17559
- latitude,
17560
- longitude,
17561
- fallbackCity: ipCity,
17562
- };
17563
- }
17564
- async function fetchIpGeo(fetchFn) {
17565
- return (await fetchJson(fetchFn, GEO_URL));
17735
+ return { latitude, longitude };
17566
17736
  }
17567
- async function tryBrowserGeolocation() {
17737
+ async function tryDeviceCoordinates() {
17568
17738
  if (typeof navigator === 'undefined' ||
17569
17739
  typeof navigator.geolocation?.getCurrentPosition !== 'function') {
17570
17740
  return null;
17571
17741
  }
17742
+ const permission = await geolocationPermission();
17743
+ if (permission === 'denied') {
17744
+ return null;
17745
+ }
17746
+ const timeout = permission === 'granted' ? DEVICE_GEO_MS : DEVICE_GEO_PROMPT_MS;
17572
17747
  return await new Promise((resolve) => {
17573
- const timer = setTimeout(() => resolve(null), BROWSER_GEO_MS);
17748
+ const timer = setTimeout(() => resolve(null), timeout);
17574
17749
  navigator.geolocation.getCurrentPosition((position) => {
17575
17750
  clearTimeout(timer);
17576
17751
  resolve({
@@ -17581,20 +17756,28 @@ async function tryBrowserGeolocation() {
17581
17756
  clearTimeout(timer);
17582
17757
  resolve(null);
17583
17758
  }, {
17584
- enableHighAccuracy: false,
17585
- maximumAge: 600_000,
17586
- timeout: BROWSER_GEO_MS,
17759
+ enableHighAccuracy: true,
17760
+ maximumAge: 0,
17761
+ timeout,
17587
17762
  });
17588
17763
  });
17589
17764
  }
17765
+ async function geolocationPermission() {
17766
+ try {
17767
+ const status = await navigator.permissions?.query({ name: 'geolocation' });
17768
+ return status?.state ?? 'unknown';
17769
+ }
17770
+ catch {
17771
+ return 'unknown';
17772
+ }
17773
+ }
17590
17774
  async function reverseGeocodeCity(fetchFn, latitude, longitude) {
17591
17775
  const url = `${REVERSE_GEO_URL}?latitude=${encodeURIComponent(String(latitude))}` +
17592
17776
  `&longitude=${encodeURIComponent(String(longitude))}` +
17593
- `&localityLanguage=en`;
17777
+ `&language=en&count=1`;
17594
17778
  const payload = (await fetchJson(fetchFn, url));
17595
- return (asCity(payload?.city) ??
17596
- asCity(payload?.locality) ??
17597
- asCity(payload?.principalSubdivision));
17779
+ const place = payload?.results?.[0];
17780
+ return asCity(place?.name) ?? asCity(place?.admin1);
17598
17781
  }
17599
17782
  function asNumber(value) {
17600
17783
  if (typeof value === 'number' && Number.isFinite(value)) {
@@ -17634,6 +17817,9 @@ async function fetchJson(fetchFn, url) {
17634
17817
  }
17635
17818
  }
17636
17819
 
17820
+ /**
17821
+ * Marks projected content as extra leading chrome in {@link AppShellHeaderComponent}.
17822
+ */
17637
17823
  /**
17638
17824
  * Marks projected content as extra leading chrome in {@link AppShellHeaderComponent}.
17639
17825
  */
@@ -17651,6 +17837,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17651
17837
  /**
17652
17838
  * Marks projected content as extra trailing chrome in {@link AppShellHeaderComponent}.
17653
17839
  */
17840
+ /**
17841
+ * Marks projected content as extra trailing chrome in {@link AppShellHeaderComponent}.
17842
+ */
17654
17843
  class AppShellHeaderEndDirective {
17655
17844
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AppShellHeaderEndDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17656
17845
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: AppShellHeaderEndDirective, isStandalone: true, selector: "[africaniesAppShellHeaderEnd]", ngImport: i0 });
@@ -17679,6 +17868,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17679
17868
  * />
17680
17869
  * ```
17681
17870
  */
17871
+ /**
17872
+ * Product header bar for {@link AppShellComponent}: a short time-of-day kicker plus the given name, local weather, live clock, notification inbox drawer, and avatar menu. Breadcrumbs and Back belong in the content column via {@link AppShellContentHeaderComponent}.
17873
+ */
17682
17874
  class AppShellHeaderComponent {
17683
17875
  notificationsDrawer = inject(NotificationDrawerService);
17684
17876
  destroyRef = inject(DestroyRef);
@@ -18113,6 +18305,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18113
18305
  *
18114
18306
  * When present, the built-in {@link AppShellHeaderComponent} is skipped.
18115
18307
  */
18308
+ /**
18309
+ * Marks projected content as the custom header for {@link AppShellComponent}.
18310
+ */
18116
18311
  class AppShellHeaderSlotDirective {
18117
18312
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AppShellHeaderSlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
18118
18313
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: AppShellHeaderSlotDirective, isStandalone: true, selector: "[africaniesAppShellHeader]", ngImport: i0 });
@@ -18154,6 +18349,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18154
18349
  * </africanies-app-shell>
18155
18350
  * ```
18156
18351
  */
18352
+ /**
18353
+ * Application chrome scaffold: side nav + sticky header + constrained content.
18354
+ */
18157
18355
  class AppShellComponent {
18158
18356
  modeColor = inject(ModeColorService);
18159
18357
  logoMiniUrl = inject(AFRICANIES_BRAND_LOGO_MINI_URL);
@@ -18352,6 +18550,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18352
18550
  * />
18353
18551
  * ```
18354
18552
  */
18553
+ /**
18554
+ * Image with a shaped loading frame and fallback while the asset fetches or if it fails to render.
18555
+ */
18355
18556
  class ImageComponent {
18356
18557
  imgRef = viewChild('img', /* @ts-ignore */
18357
18558
  ...(ngDevMode ? [{ debugName: "imgRef" }] : /* istanbul ignore next */ []));
@@ -18550,6 +18751,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18550
18751
  * </ng-template>
18551
18752
  * ```
18552
18753
  */
18754
+ /**
18755
+ * Registers a projected cell template against a column key for {@link TableComponent}.
18756
+ */
18553
18757
  class CellDefDirective {
18554
18758
  /** Template projected into matching column body cells. */
18555
18759
  template = inject((TemplateRef));
@@ -18583,6 +18787,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18583
18787
  * </ng-template>
18584
18788
  * ```
18585
18789
  */
18790
+ /**
18791
+ * Registers a projected header cell template against a column key for {@link TableComponent}.
18792
+ */
18586
18793
  class HeaderCellDefDirective {
18587
18794
  /** Template projected into the matching column header cell. */
18588
18795
  template = inject(TemplateRef);
@@ -18615,6 +18822,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18615
18822
  * </ng-template>
18616
18823
  * ```
18617
18824
  */
18825
+ /**
18826
+ * Registers a label / value pair inside an expanded table row.
18827
+ */
18618
18828
  class RowDetailDefDirective {
18619
18829
  /** Template rendered as the detail value. */
18620
18830
  template = inject((TemplateRef));
@@ -18689,6 +18899,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18689
18899
  *
18690
18900
  * Page controls for server-style lists (bind to {@link PaginationMetaModel}).
18691
18901
  */
18902
+ /**
18903
+ * Page-size select, numbered pager, and prev/next — driven by {@link PaginationMetaModel} from the API envelope.
18904
+ */
18692
18905
  class PaginationComponent {
18693
18906
  filterQuery = inject(FilterQueryService);
18694
18907
  modeColor = inject(ModeColorService);
@@ -19085,6 +19298,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
19085
19298
  * to the top of that scrollport. Mobile keeps horizontal-only overflow so
19086
19299
  * page scroll is unchanged.
19087
19300
  */
19301
+ /**
19302
+ * Presentational data table with template-based cells.
19303
+ */
19088
19304
  class TableComponent {
19089
19305
  destroyRef = inject(DestroyRef);
19090
19306
  shipping = inject(ShippingModeService);
@@ -20321,6 +20537,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
20321
20537
  * </ng-template>
20322
20538
  * ```
20323
20539
  */
20540
+ /**
20541
+ * Registers projected step body content against a step key for {@link StepperComponent}.
20542
+ */
20324
20543
  class StepDefDirective {
20325
20544
  /** Template projected as the active step body. */
20326
20545
  template = inject((TemplateRef));
@@ -20357,6 +20576,9 @@ function prefersReducedMotion() {
20357
20576
  * When `animateSteps` is true (default), the step body fades/slides via the
20358
20577
  * Web Animations API (skipped when the user prefers reduced motion).
20359
20578
  */
20579
+ /**
20580
+ * Multi-step wizard for form flows (e.g. shipment creation).
20581
+ */
20360
20582
  class StepperComponent {
20361
20583
  modeColor = inject(ModeColorService);
20362
20584
  steps = input.required(/* @ts-ignore */
@@ -20645,6 +20867,9 @@ const ACTIONS = [
20645
20867
  * export class ToolbarModule {}
20646
20868
  * ```
20647
20869
  */
20870
+ /**
20871
+ * Button, copy-to-clipboard control, overflow action menu, and avatar menu.
20872
+ */
20648
20873
  class AfricaniesActionsModule {
20649
20874
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20650
20875
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesActionsModule, imports: [ButtonComponent,
@@ -20694,6 +20919,9 @@ const FEEDBACK = [
20694
20919
  * export class ListPageModule {}
20695
20920
  * ```
20696
20921
  */
20922
+ /**
20923
+ * Async feedback states, accordion panels, inline alert, and status chips.
20924
+ */
20697
20925
  class AfricaniesFeedbackModule {
20698
20926
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesFeedbackModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20699
20927
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesFeedbackModule, imports: [AccordionComponent,
@@ -20748,6 +20976,9 @@ const FORM_CONTROLS = [
20748
20976
  * export class ShipmentFormsModule {}
20749
20977
  * ```
20750
20978
  */
20979
+ /**
20980
+ * All form controls in one import for apps that prefer NgModules.
20981
+ */
20751
20982
  class AfricaniesFormsModule {
20752
20983
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20753
20984
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesFormsModule, imports: [TextInputComponent,
@@ -20796,6 +21027,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
20796
21027
  * imports: [InfoPopoverComponent, InfoPopoverContentDirective, InfoPopoverTriggerDirective],
20797
21028
  * ```
20798
21029
  */
21030
+ /**
21031
+ * NgModule facade for {@link InfoPopoverComponent} and its trigger/content markers.
21032
+ */
20799
21033
  class AfricaniesInfoPopoverModule {
20800
21034
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesInfoPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20801
21035
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesInfoPopoverModule, imports: [InfoPopoverComponent,
@@ -20849,6 +21083,9 @@ const NAV = [
20849
21083
  * export class ShellModule {}
20850
21084
  * ```
20851
21085
  */
21086
+ /**
21087
+ * App shell, breadcrumb, tabs (+ `africaniesTabDef`), segment, side nav, shipping mode switch, brand logo, avatar menu, and shell header chrome.
21088
+ */
20852
21089
  class AfricaniesNavigationModule {
20853
21090
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20854
21091
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesNavigationModule, imports: [AppShellComponent,
@@ -20907,6 +21144,9 @@ const STEPPER = [StepperComponent, StepDefDirective];
20907
21144
  * export class WizardModule {}
20908
21145
  * ```
20909
21146
  */
21147
+ /**
21148
+ * Stepper (+ `africaniesStepDef`).
21149
+ */
20910
21150
  class AfricaniesStepperModule {
20911
21151
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20912
21152
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesStepperModule, imports: [StepperComponent, StepDefDirective], exports: [StepperComponent, StepDefDirective] });
@@ -20937,6 +21177,9 @@ const DATA = [
20937
21177
  * export class ShipmentsListModule {}
20938
21178
  * ```
20939
21179
  */
21180
+ /**
21181
+ * Table (+ `africaniesCellDef`) and pagination.
21182
+ */
20940
21183
  class AfricaniesTableModule {
20941
21184
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20942
21185
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesTableModule, imports: [TableComponent,
@@ -20969,6 +21212,9 @@ const TOOLTIP = [TooltipComponent, TooltipTriggerDirective];
20969
21212
  * export class FormHintsModule {}
20970
21213
  * ```
20971
21214
  */
21215
+ /**
21216
+ * Tooltip (+ `africaniesTooltipTrigger`).
21217
+ */
20972
21218
  class AfricaniesTooltipModule {
20973
21219
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20974
21220
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AfricaniesTooltipModule, imports: [TooltipComponent, TooltipTriggerDirective], exports: [TooltipComponent, TooltipTriggerDirective] });