@africanies/angular-web-sdk 0.1.6 → 0.1.8

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 (167) hide show
  1. package/.nx/cache/{17491371155400585077 → 13466509747676776487}/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs +139 -51
  2. package/.nx/cache/13466509747676776487/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +1 -0
  3. package/.nx/cache/{17491371155400585077 → 13466509747676776487}/dist/libs/africanies-core/types/africanies-africanies-core.d.ts +14 -11
  4. package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs +83 -63
  5. package/.nx/cache/14995846848874973576/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +1 -0
  6. package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/types/africanies-africanies-ui.d.ts +22 -19
  7. package/.nx/cache/{12276756491762927325 → 15302120112746851896}/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs +34 -6
  8. package/.nx/cache/15302120112746851896/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +1 -0
  9. package/.nx/cache/{12276756491762927325 → 15302120112746851896}/dist/libs/africanies-theme/tailwind-preset.cjs +104 -19
  10. package/.nx/cache/{12276756491762927325 → 15302120112746851896}/dist/libs/africanies-theme/types/africanies-africanies-theme.d.ts +21 -2
  11. package/.nx/cache/18393832731522001121/dist/libs/africanies-core/README.md +85 -0
  12. package/.nx/cache/18393832731522001121/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs +4634 -0
  13. package/.nx/cache/18393832731522001121/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +1 -0
  14. package/.nx/cache/18393832731522001121/dist/libs/africanies-core/package.json +31 -0
  15. package/.nx/cache/18393832731522001121/dist/libs/africanies-core/types/africanies-africanies-core.d.ts +2743 -0
  16. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/README.md +69 -0
  17. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/assets/icons.sprite.svg +1851 -0
  18. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs +833 -0
  19. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs.map +1 -0
  20. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/package.json +30 -0
  21. package/.nx/cache/5151121439688073678/dist/libs/africanies-icons/types/africanies-africanies-icons.d.ts +108 -0
  22. package/.nx/cache/{4082520855419352840 → 6673686859704879504}/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs +12 -2
  23. package/.nx/cache/6673686859704879504/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +1 -0
  24. package/.nx/cache/{4082520855419352840 → 6673686859704879504}/dist/libs/africanies-theme/tailwind-preset.cjs +16 -7
  25. package/.nx/cache/{4082520855419352840 → 6673686859704879504}/dist/libs/africanies-theme/types/africanies-africanies-theme.d.ts +11 -3
  26. package/.nx/cache/877026836685850193/dist/libs/africanies-models/README.md +60 -0
  27. package/.nx/cache/877026836685850193/dist/libs/africanies-models/fesm2022/africanies-africanies-models.mjs +613 -0
  28. package/.nx/cache/877026836685850193/dist/libs/africanies-models/fesm2022/africanies-africanies-models.mjs.map +1 -0
  29. package/.nx/cache/877026836685850193/dist/libs/africanies-models/package.json +23 -0
  30. package/.nx/cache/877026836685850193/dist/libs/africanies-models/types/africanies-africanies-models.d.ts +1452 -0
  31. package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs +866 -632
  32. package/.nx/cache/9406544675747598148/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +1 -0
  33. package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/types/africanies-africanies-ui.d.ts +170 -130
  34. package/.nx/cache/run.json +42 -42
  35. package/.nx/cache/terminalOutputs/{17491371155400585077 → 13466509747676776487} +1 -1
  36. package/.nx/cache/terminalOutputs/14995846848874973576 +21 -0
  37. package/.nx/cache/terminalOutputs/{3017748574492080228 → 15149466893522345489} +16 -7
  38. package/.nx/cache/terminalOutputs/{4082520855419352840 → 15302120112746851896} +1 -1
  39. package/.nx/cache/terminalOutputs/{8648260256613557249 → 15835338512221847842} +18 -8
  40. package/.nx/cache/terminalOutputs/17960163310445607219 +6 -0
  41. package/.nx/cache/terminalOutputs/18393832731522001121 +21 -0
  42. package/.nx/cache/terminalOutputs/{3314955264390318442 → 5151121439688073678} +6 -6
  43. package/.nx/cache/terminalOutputs/{12276756491762927325 → 6673686859704879504} +2 -2
  44. package/.nx/cache/terminalOutputs/7462873189468732296 +17 -0
  45. package/.nx/cache/terminalOutputs/8032148447904822353 +185 -0
  46. package/.nx/cache/terminalOutputs/877026836685850193 +21 -0
  47. package/.nx/cache/terminalOutputs/9406544675747598148 +21 -0
  48. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db +0 -0
  49. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db-shm +0 -0
  50. package/.nx/workspace-data/0091ABA9-5C90-580D-953C-8C94E763ADB5-v3.db-wal +0 -0
  51. package/.nx/workspace-data/d/daemon.log +3962 -0
  52. package/.nx/workspace-data/d/server-process.json +2 -2
  53. package/.nx/workspace-data/file-map.json +3102 -3036
  54. package/.nx/workspace-data/nx_files.nxt +0 -0
  55. package/.nx/workspace-data/project-graph.json +7 -2
  56. package/apps/playground/src/app/pages/button-page.ts +5 -3
  57. package/apps/playground/src/app/pages/feedback-page.ts +1 -1
  58. package/apps/playground/src/app/pages/home-page.ts +1 -1
  59. package/apps/playground/src/app/pages/icons-page.ts +3 -3
  60. package/apps/playground/src/app/pages/lecture-page.ts +3 -3
  61. package/apps/playground/src/app/pages/models-page.ts +1 -1
  62. package/apps/playground/src/app/pages/overlay-demos.ts +1 -1
  63. package/apps/playground/src/app/pages/tokens-page.ts +29 -11
  64. package/apps/playground/src/app/pages/usecases/onboarding-login.page.ts +1 -1
  65. package/apps/playground/src/app/pages/usecases/onboarding-reset-password.page.ts +1 -1
  66. package/apps/playground/src/app/pages/usecases/shipment-detail.page.ts +1 -1
  67. package/apps/playground/src/app/pages/viewport-preview.component.ts +1 -1
  68. package/apps/playground/src/app/snippets/button.snippets.ts +4 -3
  69. package/apps/playground/src/app/snippets/filters.snippets.ts +10 -0
  70. package/apps/playground/src/index.html +6 -0
  71. package/apps/playground/src/styles.css +4 -5
  72. package/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs +131 -8
  73. package/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +1 -1
  74. package/dist/libs/africanies-core/types/africanies-africanies-core.d.ts +8 -6
  75. package/dist/libs/africanies-icons/assets/icons.sprite.svg +7 -0
  76. package/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs +1 -0
  77. package/dist/libs/africanies-icons/fesm2022/africanies-africanies-icons.mjs.map +1 -1
  78. package/dist/libs/africanies-icons/types/africanies-africanies-icons.d.ts +2 -2
  79. package/dist/libs/africanies-models/fesm2022/africanies-africanies-models.mjs +22 -8
  80. package/dist/libs/africanies-models/fesm2022/africanies-africanies-models.mjs.map +1 -1
  81. package/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs +30 -8
  82. package/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +1 -1
  83. package/dist/libs/africanies-theme/tailwind-preset.cjs +89 -12
  84. package/dist/libs/africanies-theme/types/africanies-africanies-theme.d.ts +14 -4
  85. package/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs +765 -615
  86. package/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +1 -1
  87. package/dist/libs/africanies-ui/types/africanies-africanies-ui.d.ts +148 -115
  88. package/libs/africanies-core/src/index.ts +1 -0
  89. package/libs/africanies-core/src/lib/notification/index.ts +1 -1
  90. package/libs/africanies-core/src/lib/notification/notification-link.spec.ts +40 -7
  91. package/libs/africanies-core/src/lib/notification/notification-link.ts +143 -7
  92. package/libs/africanies-icons/src/assets/icons.sprite.svg +7 -0
  93. package/libs/africanies-icons/src/lib/icon-name.ts +1 -0
  94. package/libs/africanies-models/src/lib/filters/configs/seed-configs.ts +22 -8
  95. package/libs/africanies-theme/src/lib/mode-color.safelist.ts +20 -2
  96. package/libs/africanies-theme/src/lib/mode-color.service.spec.ts +55 -0
  97. package/libs/africanies-theme/src/lib/mode-color.service.ts +23 -7
  98. package/libs/africanies-theme/tailwind-preset.cjs +89 -12
  99. package/libs/africanies-ui/src/lib/action-menu/action-menu.component.ts +3 -3
  100. package/libs/africanies-ui/src/lib/alert/alert.component.ts +4 -4
  101. package/libs/africanies-ui/src/lib/avatar/avatar-menu.component.ts +2 -2
  102. package/libs/africanies-ui/src/lib/button/button.component.spec.ts +7 -7
  103. package/libs/africanies-ui/src/lib/button/button.component.ts +10 -6
  104. package/libs/africanies-ui/src/lib/chip/chip.component.ts +4 -4
  105. package/libs/africanies-ui/src/lib/content-stack/content-stack.component.ts +1 -1
  106. package/libs/africanies-ui/src/lib/feedback/empty-state.component.ts +1 -1
  107. package/libs/africanies-ui/src/lib/feedback/error-indicator.component.ts +3 -3
  108. package/libs/africanies-ui/src/lib/feedback/error-state.component.ts +3 -3
  109. package/libs/africanies-ui/src/lib/filters/filter-drawer.panel.ts +44 -27
  110. package/libs/africanies-ui/src/lib/forms/checkbox/checkbox.component.ts +2 -1
  111. package/libs/africanies-ui/src/lib/forms/file-upload/file-preview.dialog.ts +2 -2
  112. package/libs/africanies-ui/src/lib/forms/file-upload/file-upload.component.ts +5 -5
  113. package/libs/africanies-ui/src/lib/forms/form-field.classes.ts +37 -7
  114. package/libs/africanies-ui/src/lib/forms/otp-input/otp-input.component.ts +2 -1
  115. package/libs/africanies-ui/src/lib/forms/radio/radio.component.ts +2 -1
  116. package/libs/africanies-ui/src/lib/forms/select/select.component.ts +2 -2
  117. package/libs/africanies-ui/src/lib/forms/toggle/toggle.component.ts +1 -1
  118. package/libs/africanies-ui/src/lib/image/image.component.ts +1 -1
  119. package/libs/africanies-ui/src/lib/info-popover/info-popover.component.ts +2 -2
  120. package/libs/africanies-ui/src/lib/layout/app-shell-content-header.component.ts +1 -1
  121. package/libs/africanies-ui/src/lib/layout/app-shell-header.component.ts +6 -6
  122. package/libs/africanies-ui/src/lib/layout/app-shell.component.html +2 -2
  123. package/libs/africanies-ui/src/lib/layout/app-shell.component.ts +5 -5
  124. package/libs/africanies-ui/src/lib/navigation/shipping-mode-switch/shipping-mode-switch.component.ts +4 -4
  125. package/libs/africanies-ui/src/lib/navigation/side-nav/africanies-side-nav.component.html +21 -13
  126. package/libs/africanies-ui/src/lib/navigation/side-nav/africanies-side-nav.component.ts +23 -13
  127. package/libs/africanies-ui/src/lib/notifications/notification-drawer.panel.ts +27 -14
  128. package/libs/africanies-ui/src/lib/overlay/confirm-dialog.component.ts +2 -2
  129. package/libs/africanies-ui/src/lib/overlay/drawer.service.ts +3 -3
  130. package/libs/africanies-ui/src/lib/overlay/modal.service.ts +4 -4
  131. package/libs/africanies-ui/src/lib/overlay/overlay-frame.component.ts +1 -1
  132. package/libs/africanies-ui/src/lib/pagination/pagination.component.ts +4 -4
  133. package/libs/africanies-ui/src/lib/stepper/stepper.component.ts +7 -7
  134. package/libs/africanies-ui/src/lib/table/table-column.ts +9 -0
  135. package/libs/africanies-ui/src/lib/table/table.component.spec.ts +99 -0
  136. package/libs/africanies-ui/src/lib/table/table.component.ts +75 -33
  137. package/libs/africanies-ui/src/lib/toast/toast-host.component.ts +4 -4
  138. package/libs/africanies-ui/src/lib/toast/toast-item.component.ts +7 -7
  139. package/package.json +1 -1
  140. package/svg/hand-coins.svg +9 -0
  141. package/.nx/cache/12276756491762927325/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +0 -1
  142. package/.nx/cache/17491371155400585077/dist/libs/africanies-core/fesm2022/africanies-africanies-core.mjs.map +0 -1
  143. package/.nx/cache/17499961385238663835/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +0 -1
  144. package/.nx/cache/3314955264390318442/dist/libs/africanies-ui/fesm2022/africanies-africanies-ui.mjs.map +0 -1
  145. package/.nx/cache/4082520855419352840/dist/libs/africanies-theme/fesm2022/africanies-africanies-theme.mjs.map +0 -1
  146. package/.nx/cache/terminalOutputs/17499961385238663835 +0 -21
  147. /package/.nx/cache/{17491371155400585077 → 13466509747676776487}/dist/libs/africanies-core/README.md +0 -0
  148. /package/.nx/cache/{17491371155400585077 → 13466509747676776487}/dist/libs/africanies-core/package.json +0 -0
  149. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/README.md +0 -0
  150. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/assets/brand/africanies-logo-mini.png +0 -0
  151. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/assets/brand/africanies-logo.png +0 -0
  152. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/assets/brand/africanies-logo.svg +0 -0
  153. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/assets/carriers/dhl.svg +0 -0
  154. /package/.nx/cache/{17499961385238663835 → 14995846848874973576}/dist/libs/africanies-ui/package.json +0 -0
  155. /package/.nx/cache/{12276756491762927325 → 15302120112746851896}/dist/libs/africanies-theme/README.md +0 -0
  156. /package/.nx/cache/{12276756491762927325 → 15302120112746851896}/dist/libs/africanies-theme/package.json +0 -0
  157. /package/.nx/cache/{4082520855419352840 → 6673686859704879504}/dist/libs/africanies-theme/README.md +0 -0
  158. /package/.nx/cache/{4082520855419352840 → 6673686859704879504}/dist/libs/africanies-theme/package.json +0 -0
  159. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/README.md +0 -0
  160. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/assets/brand/africanies-logo-mini.png +0 -0
  161. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/assets/brand/africanies-logo.png +0 -0
  162. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/assets/brand/africanies-logo.svg +0 -0
  163. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/assets/carriers/dhl.svg +0 -0
  164. /package/.nx/cache/{3314955264390318442 → 9406544675747598148}/dist/libs/africanies-ui/package.json +0 -0
  165. /package/.nx/cache/terminalOutputs/{16279119293212733518 → 14005735098959303198} +0 -0
  166. /package/.nx/cache/terminalOutputs/{7126777490381568487 → 1446890025183346611} +0 -0
  167. /package/.nx/cache/terminalOutputs/{9408529484792607601 → 6337357866566791975} +0 -0
@@ -108,6 +108,9 @@ class ButtonComponent {
108
108
  variantClass = this.modeColor.classes().ghostPrimary;
109
109
  }
110
110
  else if (variant === 'secondary') {
111
+ variantClass = this.modeColor.classes().stroked;
112
+ }
113
+ else if (variant === 'flat') {
111
114
  variantClass =
112
115
  'bg-white dark:bg-ink-950 text-ink dark:text-white border-border dark:border-white/15 hover:bg-background-welcome dark:hover:bg-white/10';
113
116
  }
@@ -270,7 +273,7 @@ class ToastItemComponent {
270
273
  ...(ngDevMode ? [{ debugName: "a11yLive" }] : /* istanbul ignore next */ []));
271
274
  shellClass = computed(() => 'africanies-toast-enter relative flex w-full overflow-hidden rounded-lg border border-border ' +
272
275
  'bg-white/95 text-ink shadow-lg backdrop-blur-md ' +
273
- 'dark:border-white/15 dark:bg-ink/95 dark:text-white', /* @ts-ignore */
276
+ 'dark:border-white/15 dark:bg-ink-950/95 dark:text-white', /* @ts-ignore */
274
277
  ...(ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []));
275
278
  accentClass = computed(() => `w-1 shrink-0 self-stretch ${accentFill(this.item().variant)}`, /* @ts-ignore */
276
279
  ...(ngDevMode ? [{ debugName: "accentClass" }] : /* istanbul ignore next */ []));
@@ -681,14 +684,14 @@ class ToastHostComponent {
681
684
  <div class="flex w-full flex-col gap-2">
682
685
  @if (toastService.showHostActions()) {
683
686
  <div
684
- class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-white/80 pb-1 backdrop-blur-sm dark:bg-ink/80"
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"
685
688
  >
686
689
  @if (toastService.hasStacks()) {
687
690
  @if (toastService.allStacksExpanded()) {
688
691
  <button
689
692
  africanies-button
690
693
  type="button"
691
- variant="secondary"
694
+ variant="flat"
692
695
  size="sm"
693
696
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
694
697
  (click)="toastService.collapseAll()"
@@ -699,7 +702,7 @@ class ToastHostComponent {
699
702
  <button
700
703
  africanies-button
701
704
  type="button"
702
- variant="secondary"
705
+ variant="flat"
703
706
  size="sm"
704
707
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
705
708
  (click)="toastService.expandAll()"
@@ -711,7 +714,7 @@ class ToastHostComponent {
711
714
  <button
712
715
  africanies-button
713
716
  type="button"
714
- variant="secondary"
717
+ variant="flat"
715
718
  size="sm"
716
719
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
717
720
  (click)="toastService.clear()"
@@ -750,14 +753,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
750
753
  <div class="flex w-full flex-col gap-2">
751
754
  @if (toastService.showHostActions()) {
752
755
  <div
753
- class="sticky top-0 z-10 flex flex-wrap justify-end gap-2 bg-white/80 pb-1 backdrop-blur-sm dark:bg-ink/80"
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"
754
757
  >
755
758
  @if (toastService.hasStacks()) {
756
759
  @if (toastService.allStacksExpanded()) {
757
760
  <button
758
761
  africanies-button
759
762
  type="button"
760
- variant="secondary"
763
+ variant="flat"
761
764
  size="sm"
762
765
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
763
766
  (click)="toastService.collapseAll()"
@@ -768,7 +771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
768
771
  <button
769
772
  africanies-button
770
773
  type="button"
771
- variant="secondary"
774
+ variant="flat"
772
775
  size="sm"
773
776
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
774
777
  (click)="toastService.expandAll()"
@@ -780,7 +783,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
780
783
  <button
781
784
  africanies-button
782
785
  type="button"
783
- variant="secondary"
786
+ variant="flat"
784
787
  size="sm"
785
788
  class="!min-h-0 !rounded-full !bg-white !px-2.5 !py-1 !text-caption dark:!bg-ink"
786
789
  (click)="toastService.clear()"
@@ -1927,7 +1930,7 @@ class EmptyStateComponent {
1927
1930
  <button
1928
1931
  africanies-button
1929
1932
  type="button"
1930
- variant="secondary"
1933
+ variant="flat"
1931
1934
  [disabled]="refreshing()"
1932
1935
  (click)="retry.emit()"
1933
1936
  >
@@ -1958,7 +1961,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1958
1961
  <button
1959
1962
  africanies-button
1960
1963
  type="button"
1961
- variant="secondary"
1964
+ variant="flat"
1962
1965
  [disabled]="refreshing()"
1963
1966
  (click)="retry.emit()"
1964
1967
  >
@@ -2172,7 +2175,7 @@ class ErrorStateComponent {
2172
2175
  <button
2173
2176
  africanies-button
2174
2177
  type="button"
2175
- variant="secondary"
2178
+ variant="flat"
2176
2179
  [disabled]="refreshing()"
2177
2180
  (click)="retry.emit()"
2178
2181
  >
@@ -2203,7 +2206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2203
2206
  <button
2204
2207
  africanies-button
2205
2208
  type="button"
2206
- variant="secondary"
2209
+ variant="flat"
2207
2210
  [disabled]="refreshing()"
2208
2211
  (click)="retry.emit()"
2209
2212
  >
@@ -4083,10 +4086,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
4083
4086
  /** Label above the control. Hidden when empty so callers can omit a label. */
4084
4087
  const FORM_LABEL_CLASS = 'block text-body-sm font-medium text-ink dark:text-white mb-1.5 empty:hidden';
4085
4088
  /** Default control shell — `h-10` matches md `africanies-button`. */
4086
- const FORM_FIELD_CLASS = 'flex items-center w-full h-10 box-border rounded-md border border-neutral-300 bg-white dark:bg-ink-950 text-ink dark:text-white dark:border-white/25 ' +
4089
+ const FORM_FIELD_CLASS = 'flex items-center w-full h-10 box-border rounded-md border border-border bg-white dark:bg-ink-950 text-ink dark:text-white dark:border-white/25 ' +
4087
4090
  'focus-within:outline focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-ink';
4088
4091
  /**
4089
- * Error border — `!` so it wins over shell `border-neutral-300` /
4092
+ * Error border — `!` so it wins over shell `border-border` /
4090
4093
  * `dark:border-white/25` (same specificity; those utilities sort later in the
4091
4094
  * generated CSS and otherwise paint over `border-danger`).
4092
4095
  *
@@ -4873,7 +4876,7 @@ class ModalService {
4873
4876
  'africanies-overlay-backdrop',
4874
4877
  'bg-ink/45',
4875
4878
  'backdrop-blur-sm',
4876
- 'dark:bg-ink/60',
4879
+ 'dark:bg-ink-950/60',
4877
4880
  ],
4878
4881
  panelClass: [
4879
4882
  'africanies-modal-panel',
@@ -5687,7 +5690,7 @@ class SelectComponent {
5687
5690
  @if (multiple() && selectedList().length) {
5688
5691
  @for (chip of selectedList(); track trackOption(chip)) {
5689
5692
  <span
5690
- class="inline-flex items-center gap-1 rounded-md border border-neutral-300 bg-background-welcome dark:border-white/20 dark:bg-ink text-body-sm text-ink dark:text-white px-2 py-0.5"
5693
+ class="inline-flex items-center gap-1 rounded-md border border-neutral-300 bg-background-welcome dark:border-white/20 dark:bg-ink-950 text-body-sm text-ink dark:text-white px-2 py-0.5"
5691
5694
  >
5692
5695
  @if (chip.prefix; as prefixIcon) {
5693
5696
  <africanies-icon [name]="prefixIcon" [size]="14" class="shrink-0" />
@@ -6015,7 +6018,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
6015
6018
  @if (multiple() && selectedList().length) {
6016
6019
  @for (chip of selectedList(); track trackOption(chip)) {
6017
6020
  <span
6018
- class="inline-flex items-center gap-1 rounded-md border border-neutral-300 bg-background-welcome dark:border-white/20 dark:bg-ink text-body-sm text-ink dark:text-white px-2 py-0.5"
6021
+ class="inline-flex items-center gap-1 rounded-md border border-neutral-300 bg-background-welcome dark:border-white/20 dark:bg-ink-950 text-body-sm text-ink dark:text-white px-2 py-0.5"
6019
6022
  >
6020
6023
  @if (chip.prefix; as prefixIcon) {
6021
6024
  <africanies-icon [name]="prefixIcon" [size]="14" class="shrink-0" />
@@ -7610,7 +7613,7 @@ class DrawerService {
7610
7613
  'africanies-overlay-backdrop',
7611
7614
  'bg-ink/45',
7612
7615
  'backdrop-blur-sm',
7613
- 'dark:bg-ink/60',
7616
+ 'dark:bg-ink-950/60',
7614
7617
  ],
7615
7618
  panelClass: [
7616
7619
  'africanies-drawer-panel',
@@ -9722,7 +9725,7 @@ class FilePreviewDialogComponent {
9722
9725
  <img
9723
9726
  [src]="src()"
9724
9727
  [alt]="data.file.name"
9725
- class="max-h-[min(70vh,40rem)] w-full rounded-md object-contain bg-background-welcome ring-1 ring-border dark:bg-ink dark:ring-white/15"
9728
+ class="max-h-[min(70vh,40rem)] w-full rounded-md object-contain bg-background-welcome ring-1 ring-border dark:bg-ink-950 dark:ring-white/15"
9726
9729
  />
9727
9730
  } @else {
9728
9731
  <div
@@ -9792,7 +9795,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
9792
9795
  <img
9793
9796
  [src]="src()"
9794
9797
  [alt]="data.file.name"
9795
- class="max-h-[min(70vh,40rem)] w-full rounded-md object-contain bg-background-welcome ring-1 ring-border dark:bg-ink dark:ring-white/15"
9798
+ class="max-h-[min(70vh,40rem)] w-full rounded-md object-contain bg-background-welcome ring-1 ring-border dark:bg-ink-950 dark:ring-white/15"
9796
9799
  />
9797
9800
  } @else {
9798
9801
  <div
@@ -10275,7 +10278,7 @@ class FileUploadComponent {
10275
10278
  <button
10276
10279
  africanies-button
10277
10280
  type="button"
10278
- variant="secondary"
10281
+ variant="flat"
10279
10282
  size="sm"
10280
10283
  [disabled]="disabled()"
10281
10284
  (click)="openFilePicker()"
@@ -10288,7 +10291,7 @@ class FileUploadComponent {
10288
10291
  <button
10289
10292
  africanies-button
10290
10293
  type="button"
10291
- variant="secondary"
10294
+ variant="flat"
10292
10295
  size="sm"
10293
10296
  [disabled]="disabled()"
10294
10297
  (click)="openCamera()"
@@ -10343,7 +10346,7 @@ class FileUploadComponent {
10343
10346
  <button
10344
10347
  africanies-button
10345
10348
  type="button"
10346
- variant="secondary"
10349
+ variant="flat"
10347
10350
  size="sm"
10348
10351
  [disabled]="disabled()"
10349
10352
  (click)="openFilePicker()"
@@ -10412,7 +10415,7 @@ class FileUploadComponent {
10412
10415
  <button
10413
10416
  africanies-button
10414
10417
  type="button"
10415
- variant="secondary"
10418
+ variant="flat"
10416
10419
  size="sm"
10417
10420
  [disabled]="disabled()"
10418
10421
  (click)="openFilePicker(); $event.stopPropagation()"
@@ -10575,7 +10578,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
10575
10578
  <button
10576
10579
  africanies-button
10577
10580
  type="button"
10578
- variant="secondary"
10581
+ variant="flat"
10579
10582
  size="sm"
10580
10583
  [disabled]="disabled()"
10581
10584
  (click)="openFilePicker()"
@@ -10588,7 +10591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
10588
10591
  <button
10589
10592
  africanies-button
10590
10593
  type="button"
10591
- variant="secondary"
10594
+ variant="flat"
10592
10595
  size="sm"
10593
10596
  [disabled]="disabled()"
10594
10597
  (click)="openCamera()"
@@ -10643,7 +10646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
10643
10646
  <button
10644
10647
  africanies-button
10645
10648
  type="button"
10646
- variant="secondary"
10649
+ variant="flat"
10647
10650
  size="sm"
10648
10651
  [disabled]="disabled()"
10649
10652
  (click)="openFilePicker()"
@@ -10712,7 +10715,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
10712
10715
  <button
10713
10716
  africanies-button
10714
10717
  type="button"
10715
- variant="secondary"
10718
+ variant="flat"
10716
10719
  size="sm"
10717
10720
  [disabled]="disabled()"
10718
10721
  (click)="openFilePicker(); $event.stopPropagation()"
@@ -13473,8 +13476,8 @@ class ShippingModeSwitchComponent {
13473
13476
  mode = this.shipping.mode;
13474
13477
  /** Host padding / divider — tighter when the rail is collapsed. */
13475
13478
  hostClass = computed(() => this.collapsed()
13476
- ? 'block shrink-0 border-t border-border px-1.5 py-3 dark:border-white/10'
13477
- : 'block shrink-0 border-t border-border px-2 py-3 dark:border-white/10', /* @ts-ignore */
13479
+ ? 'block shrink-0 border-t border-strong px-1.5 py-3 dark:border-white/10'
13480
+ : 'block shrink-0 border-t border-strong px-2 py-3 dark:border-white/10', /* @ts-ignore */
13478
13481
  ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
13479
13482
  /**
13480
13483
  * Requests a mode change through {@link ShippingModeService.requestModeChange}
@@ -13786,9 +13789,10 @@ const DEFAULT_LINK_ACTIVE$1 = {
13786
13789
  /**
13787
13790
  * App shell side navigation with icons, nested items, and a collapsible rail.
13788
13791
  *
13789
- * **Design - ink spine:** a continuous mode-accent edge with soft active
13790
- * highlights. Collapsed mode keeps icons; hover opens a floating label blade
13791
- * (name + children) instead of a plain tooltip.
13792
+ * **Design - ink spine:** a continuous mode-accent edge; active leaves use
13793
+ * primary fill + white text (portal parity); expanded parents of an active
13794
+ * child use primary text on white. Collapsed mode keeps icons; hover opens a
13795
+ * floating label blade (name + children) instead of a plain tooltip.
13792
13796
  *
13793
13797
  * ## Parent items with children
13794
13798
  * **Expanded rail:** branches start open by default (`expandBranchesByDefault`).
@@ -13943,11 +13947,14 @@ class SideNavComponent {
13943
13947
  (item.disabled ? ' cursor-not-allowed opacity-50' : ' cursor-pointer');
13944
13948
  const leaf = this.isLeafActive(item);
13945
13949
  const ancestor = !leaf && this.isItemActive(item);
13950
+ const colors = this.modeColor.classes();
13951
+ // Portal: active leaf / collapsed rail = primary fill + white text.
13946
13952
  if (leaf) {
13947
- return `${base} ${this.modeColor.classes().soft} ${this.modeColor.classes().text} font-semibold`;
13953
+ return `${base} ${colors.activeFill} font-semibold`;
13948
13954
  }
13955
+ // Portal: expanded parent of active child = primary text on white.
13949
13956
  if (ancestor) {
13950
- return `${base} ${this.modeColor.classes().soft} ${this.modeColor.classes().text} font-semibold`;
13957
+ return `${base} bg-transparent ${colors.text} font-semibold`;
13951
13958
  }
13952
13959
  return (`${base} font-medium text-neutral-600 hover:bg-background-welcome hover:text-ink ` +
13953
13960
  'dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white');
@@ -13957,7 +13964,7 @@ class SideNavComponent {
13957
13964
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink ' +
13958
13965
  (item.disabled ? 'cursor-not-allowed opacity-50 ' : 'cursor-pointer ');
13959
13966
  if (this.isLeafActive(item)) {
13960
- return `${base} ${this.modeColor.classes().soft} ${this.modeColor.classes().text} font-semibold`;
13967
+ return `${base} ${this.modeColor.classes().activeFill} font-semibold`;
13961
13968
  }
13962
13969
  return (`${base} font-medium text-neutral-600 hover:bg-background-welcome hover:text-ink ` +
13963
13970
  'dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white');
@@ -14102,13 +14109,13 @@ class SideNavComponent {
14102
14109
  return null;
14103
14110
  }
14104
14111
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SideNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14105
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SideNavComponent, isStandalone: true, selector: "africanies-side-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, activeId: { classPropertyName: "activeId", publicName: "activeId", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandParents: { classPropertyName: "expandParents", publicName: "expandParents", isSignal: true, isRequired: false, transformFunction: null }, expandBranchesByDefault: { classPropertyName: "expandBranchesByDefault", publicName: "expandBranchesByDefault", isSignal: true, isRequired: false, transformFunction: null }, linkActiveOptions: { classPropertyName: "linkActiveOptions", publicName: "linkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, showLogo: { classPropertyName: "showLogo", publicName: "showLogo", isSignal: true, isRequired: false, transformFunction: null }, logoSrc: { classPropertyName: "logoSrc", publicName: "logoSrc", isSignal: true, isRequired: false, transformFunction: null }, logoMiniSrc: { classPropertyName: "logoMiniSrc", publicName: "logoMiniSrc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", activeId: "activeIdChange" }, host: { classAttribute: "relative z-20 block h-full" }, ngImport: i0, template: " <aside\n class=\"relative flex h-full flex-col overflow-visible border-r border-border bg-white transition-[width] duration-200 ease-out dark:border-white/10 dark:bg-ink\"\n [style.width]=\"collapsed() ? '3.75rem' : '15rem'\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div\n class=\"pointer-events-none absolute inset-y-0 left-0 w-[3px] transition-colors\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n class=\"flex shrink-0 items-center gap-2 border-b border-border py-3 dark:border-white/10\"\n [class.flex-col]=\"collapsed()\"\n [class.px-3]=\"collapsed()\"\n [class.pl-4]=\"!collapsed()\"\n [class.pr-2]=\"!collapsed()\"\n >\n @if (collapsed()) {\n @if (showLogo()) {\n <img\n [src]=\"resolvedMiniLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"size-8 shrink-0 object-contain\"\n />\n }\n } @else {\n @if (showLogo()) {\n <div class=\"min-w-0 flex-1\">\n <img\n [src]=\"resolvedFullLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"h-9 max-w-full object-contain object-left\"\n />\n </div>\n } @else {\n <div\n class=\"min-w-0 flex-1 truncate text-body-sm font-semibold text-ink dark:text-white\"\n >\n <ng-content select=\"[brand]\" />\n </div>\n }\n }\n <button\n type=\"button\"\n class=\"inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-neutral-600 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white\"\n [attr.aria-label]=\"\n collapsed() ? 'Expand navigation' : 'Collapse navigation'\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapsed()\"\n >\n <africanies-icon\n [name]=\"collapsed() ? 'angle-double-right' : 'angle-double-left'\"\n [size]=\"16\"\n />\n </button>\n </div>\n\n <nav class=\"africanies-overlay-scroll relative flex-1 overflow-y-auto overflow-x-visible px-3 py-3\">\n @if (!collapsed() && expandParents() && hasOpenBranches()) {\n <button\n type=\"button\"\n class=\"absolute right-1.5 top-1.5 z-10 inline-flex size-7 cursor-pointer items-center justify-center rounded-md bg-white text-neutral-500 shadow-sm ring-1 ring-border/80 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:bg-ink dark:text-neutral-400 dark:ring-white/15 dark:hover:bg-white/10 dark:hover:text-white\"\n aria-label=\"Collapse all\"\n (click)=\"collapseAllBranches()\"\n >\n <africanies-icon name=\"compress\" [size]=\"14\" />\n </button>\n }\n <ul class=\"m-0 flex list-none flex-col gap-0.5 p-0\">\n @for (item of items(); track item.id) {\n <li\n class=\"relative overflow-visible\"\n (mouseenter)=\"onItemEnter(item.id)\"\n (mouseleave)=\"onItemLeave(item.id)\"\n >\n @if (item.routerLink !== null && item.routerLink !== undefined) {\n <a\n [routerLink]=\"item.disabled ? null : item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [class]=\"rowClass(item)\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"rowClass(item)\"\n [disabled]=\"!!item.disabled\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </button>\n }\n\n @if (!collapsed() && item.children?.length) {\n <div\n class=\"grid transition-[grid-template-rows] duration-200 ease-out\"\n [style.grid-template-rows]=\"\n isBranchOpen(item.id) ? '1fr' : '0fr'\n \"\n [attr.aria-hidden]=\"!isBranchOpen(item.id)\"\n [class.pointer-events-none]=\"!isBranchOpen(item.id)\"\n >\n <ul\n class=\"relative m-0 mt-0.5 min-h-0 list-none space-y-0.5 overflow-hidden py-1 pl-4 before:absolute before:bottom-1 before:left-[1.35rem] before:top-0 before:w-px before:bg-border dark:before:bg-white/15\"\n >\n @for (child of item.children; track child.id) {\n <li\n class=\"transition-opacity duration-200 ease-out\"\n [class.opacity-0]=\"!isBranchOpen(item.id)\"\n [class.opacity-100]=\"isBranchOpen(item.id)\"\n >\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"child.disabled ? null : child.routerLink\"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n [class]=\"childRowClass(child)\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"childRowClass(child)\"\n [disabled]=\"!!child.disabled\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (collapsed() && hoverId() === item.id) {\n <div\n class=\"absolute left-full top-0 z-50 ml-2 min-w-[11rem] overflow-hidden rounded-md border border-border bg-ink text-white shadow-lg dark:border-white/15\"\n role=\"tooltip\"\n >\n <div\n class=\"absolute inset-y-0 left-0 w-1\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n <div class=\"border-b border-white/10 px-3 py-2 pl-4\">\n <p class=\"m-0 text-body-sm font-semibold\">{{ item.label }}</p>\n </div>\n @if (item.children?.length) {\n <ul class=\"m-0 list-none space-y-0.5 p-1.5\">\n @for (child of item.children; track child.id) {\n <li>\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"\n child.disabled ? null : child.routerLink\n \"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n class=\"relative flex items-center gap-2 rounded px-2.5 py-1.5 text-body-sm text-white/85 no-underline transition-colors hover:bg-white/10 hover:text-white\"\n [class.opacity-50]=\"child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"relative flex w-full items-center gap-2 rounded px-2.5 py-1.5 text-left text-body-sm text-white/85 transition-colors hover:bg-white/10 hover:text-white\"\n [disabled]=\"!!child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n }\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n\n <ng-content select=\"[footer]\" />\n </aside>\n\n <ng-template #rowInner let-item>\n <span class=\"inline-flex size-5 shrink-0 items-center justify-center\">\n @if (item.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"16\" />\n } @else {\n <span\n class=\"size-1.5 rounded-full bg-current opacity-70\"\n aria-hidden=\"true\"\n ></span>\n }\n </span>\n @if (!collapsed()) {\n <span class=\"min-w-0 flex-1 truncate text-left\">{{ item.label }}</span>\n @if (item.children?.length) {\n <africanies-icon\n name=\"chevron-down\"\n [size]=\"14\"\n class=\"shrink-0 opacity-70 transition-transform duration-200 ease-out\"\n [class.rotate-180]=\"isBranchOpen(item.id)\"\n />\n }\n }\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: item.badge,\n compact: collapsed(),\n }\"\n />\n </ng-template>\n\n <ng-template #navBadge let-visible=\"visible\" let-compact=\"compact\">\n @if (visible) {\n <span\n class=\"pointer-events-none absolute z-10 overflow-visible\"\n [class]=\"compact ? 'right-0.5 top-0.5 h-2 w-2' : 'right-1.5 top-1 h-2 w-2'\"\n aria-hidden=\"true\"\n >\n <span\n class=\"africanies-side-nav-badge-ping absolute left-1/2 top-1/2 size-2 rounded-full bg-danger\"\n ></span>\n <span\n class=\"absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-danger ring-2 ring-white dark:ring-ink\"\n ></span>\n </span>\n }\n </ng-template>", styles: ["@keyframes africanies-side-nav-badge-pulse{0%{transform:translate(-50%,-50%) scale(.85);opacity:.9}70%{transform:translate(-50%,-50%) scale(2.4);opacity:0}to{transform:translate(-50%,-50%) scale(2.4);opacity:0}}.africanies-side-nav-badge-ping{animation:africanies-side-nav-badge-pulse 1.4s cubic-bezier(0,0,.2,1) infinite}@media(prefers-reduced-motion:reduce){.africanies-side-nav-badge-ping{animation:none;opacity:.5}}\n"], dependencies: [{ kind: "component", type: AfricaniesIconComponent, selector: "africanies-icon", inputs: ["name", "size"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SideNavComponent, isStandalone: true, selector: "africanies-side-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, activeId: { classPropertyName: "activeId", publicName: "activeId", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandParents: { classPropertyName: "expandParents", publicName: "expandParents", isSignal: true, isRequired: false, transformFunction: null }, expandBranchesByDefault: { classPropertyName: "expandBranchesByDefault", publicName: "expandBranchesByDefault", isSignal: true, isRequired: false, transformFunction: null }, linkActiveOptions: { classPropertyName: "linkActiveOptions", publicName: "linkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, showLogo: { classPropertyName: "showLogo", publicName: "showLogo", isSignal: true, isRequired: false, transformFunction: null }, logoSrc: { classPropertyName: "logoSrc", publicName: "logoSrc", isSignal: true, isRequired: false, transformFunction: null }, logoMiniSrc: { classPropertyName: "logoMiniSrc", publicName: "logoMiniSrc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", activeId: "activeIdChange" }, host: { classAttribute: "relative z-20 block h-full" }, ngImport: i0, template: " <aside\n class=\"relative flex h-full flex-col overflow-visible border-r border-border bg-white transition-[width] duration-200 ease-out dark:border-white/10 dark:bg-ink-950\"\n [style.width]=\"collapsed() ? '3.75rem' : '15rem'\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div\n class=\"pointer-events-none absolute inset-y-0 left-0 w-[3px] transition-colors\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n class=\"flex shrink-0 items-center gap-2 border-b border-border py-3 dark:border-white/10\"\n [class.flex-col]=\"collapsed()\"\n [class.px-3]=\"collapsed()\"\n [class.pl-4]=\"!collapsed()\"\n [class.pr-2]=\"!collapsed()\"\n >\n @if (collapsed()) {\n @if (showLogo()) {\n <img\n [src]=\"resolvedMiniLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"size-8 shrink-0 object-contain\"\n />\n }\n } @else {\n @if (showLogo()) {\n <div class=\"min-w-0 flex-1\">\n <img\n [src]=\"resolvedFullLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"h-9 max-w-full object-contain object-left\"\n />\n </div>\n } @else {\n <div\n class=\"min-w-0 flex-1 truncate text-body-sm font-semibold text-ink dark:text-white\"\n >\n <ng-content select=\"[brand]\" />\n </div>\n }\n }\n <button\n type=\"button\"\n class=\"inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-neutral-600 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white\"\n [attr.aria-label]=\"\n collapsed() ? 'Expand navigation' : 'Collapse navigation'\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapsed()\"\n >\n <africanies-icon\n [name]=\"collapsed() ? 'angle-double-right' : 'angle-double-left'\"\n [size]=\"16\"\n />\n </button>\n </div>\n\n <nav class=\"africanies-overlay-scroll relative flex-1 overflow-y-auto overflow-x-visible px-3 py-3\">\n @if (!collapsed() && expandParents() && hasOpenBranches()) {\n <button\n type=\"button\"\n class=\"absolute right-1.5 top-1.5 z-10 inline-flex size-7 cursor-pointer items-center justify-center rounded-md bg-white text-neutral-500 shadow-sm ring-1 ring-border/80 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:bg-ink-950 dark:text-neutral-400 dark:ring-white/15 dark:hover:bg-white/10 dark:hover:text-white\"\n aria-label=\"Collapse all\"\n (click)=\"collapseAllBranches()\"\n >\n <africanies-icon name=\"compress\" [size]=\"14\" />\n </button>\n }\n <ul class=\"m-0 flex list-none flex-col gap-0.5 p-0\">\n @for (item of items(); track item.id) {\n <li\n class=\"relative overflow-visible\"\n (mouseenter)=\"onItemEnter(item.id)\"\n (mouseleave)=\"onItemLeave(item.id)\"\n >\n @if (item.routerLink !== null && item.routerLink !== undefined) {\n <a\n [routerLink]=\"item.disabled ? null : item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [class]=\"rowClass(item)\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"rowClass(item)\"\n [disabled]=\"!!item.disabled\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </button>\n }\n\n @if (!collapsed() && item.children?.length) {\n <div\n class=\"grid transition-[grid-template-rows] duration-200 ease-out\"\n [style.grid-template-rows]=\"\n isBranchOpen(item.id) ? '1fr' : '0fr'\n \"\n [attr.aria-hidden]=\"!isBranchOpen(item.id)\"\n [class.pointer-events-none]=\"!isBranchOpen(item.id)\"\n >\n <ul\n class=\"relative m-0 mt-0.5 min-h-0 list-none space-y-0.5 overflow-hidden py-1 pl-4 before:absolute before:bottom-1 before:left-[1.35rem] before:top-0 before:w-px before:bg-border dark:before:bg-white/15\"\n >\n @for (child of item.children; track child.id) {\n <li\n class=\"transition-opacity duration-200 ease-out\"\n [class.opacity-0]=\"!isBranchOpen(item.id)\"\n [class.opacity-100]=\"isBranchOpen(item.id)\"\n >\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"child.disabled ? null : child.routerLink\"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n [class]=\"childRowClass(child)\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"childRowClass(child)\"\n [disabled]=\"!!child.disabled\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (collapsed() && hoverId() === item.id) {\n <div\n class=\"absolute left-full top-0 z-50 ml-2 min-w-[11rem] overflow-hidden rounded-md border border-border bg-ink text-white shadow-lg dark:border-white/15\"\n role=\"tooltip\"\n >\n <div\n class=\"absolute inset-y-0 left-0 w-1\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n <div class=\"border-b border-white/10 px-3 py-2 pl-4\">\n <p class=\"m-0 text-body-sm font-semibold\">{{ item.label }}</p>\n </div>\n @if (item.children?.length) {\n <ul class=\"m-0 list-none space-y-0.5 p-1.5\">\n @for (child of item.children; track child.id) {\n <li>\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"\n child.disabled ? null : child.routerLink\n \"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n class=\"relative flex items-center gap-2 rounded px-2.5 py-1.5 text-body-sm text-white/85 no-underline transition-colors hover:bg-white/10 hover:text-white\"\n [class.opacity-50]=\"child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"relative flex w-full items-center gap-2 rounded px-2.5 py-1.5 text-left text-body-sm text-white/85 transition-colors hover:bg-white/10 hover:text-white\"\n [disabled]=\"!!child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n }\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n\n <ng-content select=\"[footer]\" />\n </aside>\n\n <ng-template #rowInner let-item>\n <span class=\"inline-flex size-5 shrink-0 items-center justify-center\">\n @if (item.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"16\" />\n } @else {\n <span\n class=\"size-1.5 rounded-full bg-current opacity-70\"\n aria-hidden=\"true\"\n ></span>\n }\n </span>\n @if (!collapsed()) {\n <span class=\"min-w-0 flex-1 truncate text-left\">{{ item.label }}</span>\n @if (item.children?.length) {\n <africanies-icon\n name=\"chevron-down\"\n [size]=\"14\"\n class=\"shrink-0 opacity-70 transition-transform duration-200 ease-out\"\n [class.rotate-180]=\"isBranchOpen(item.id)\"\n />\n }\n }\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: item.badge,\n compact: collapsed(),\n }\"\n />\n </ng-template>\n\n <ng-template #navBadge let-visible=\"visible\" let-compact=\"compact\">\n @if (visible) {\n <span\n class=\"pointer-events-none absolute z-10 overflow-visible\"\n [class]=\"compact ? 'right-0.5 top-0.5 h-2 w-2' : 'right-1.5 top-1 h-2 w-2'\"\n aria-hidden=\"true\"\n >\n <span\n class=\"africanies-side-nav-badge-ping absolute left-1/2 top-1/2 size-2 rounded-full bg-danger\"\n ></span>\n <span\n class=\"absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-danger ring-2 ring-white dark:ring-ink\"\n ></span>\n </span>\n }\n </ng-template>", styles: ["@keyframes africanies-side-nav-badge-pulse{0%{transform:translate(-50%,-50%) scale(.85);opacity:.9}70%{transform:translate(-50%,-50%) scale(2.4);opacity:0}to{transform:translate(-50%,-50%) scale(2.4);opacity:0}}.africanies-side-nav-badge-ping{animation:africanies-side-nav-badge-pulse 1.4s cubic-bezier(0,0,.2,1) infinite}@media(prefers-reduced-motion:reduce){.africanies-side-nav-badge-ping{animation:none;opacity:.5}}\n"], dependencies: [{ kind: "component", type: AfricaniesIconComponent, selector: "africanies-icon", inputs: ["name", "size"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14106
14113
  }
14107
14114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SideNavComponent, decorators: [{
14108
14115
  type: Component,
14109
14116
  args: [{ selector: 'africanies-side-nav', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AfricaniesIconComponent, RouterLink, NgTemplateOutlet], host: {
14110
14117
  class: 'relative z-20 block h-full',
14111
- }, template: " <aside\n class=\"relative flex h-full flex-col overflow-visible border-r border-border bg-white transition-[width] duration-200 ease-out dark:border-white/10 dark:bg-ink\"\n [style.width]=\"collapsed() ? '3.75rem' : '15rem'\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div\n class=\"pointer-events-none absolute inset-y-0 left-0 w-[3px] transition-colors\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n class=\"flex shrink-0 items-center gap-2 border-b border-border py-3 dark:border-white/10\"\n [class.flex-col]=\"collapsed()\"\n [class.px-3]=\"collapsed()\"\n [class.pl-4]=\"!collapsed()\"\n [class.pr-2]=\"!collapsed()\"\n >\n @if (collapsed()) {\n @if (showLogo()) {\n <img\n [src]=\"resolvedMiniLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"size-8 shrink-0 object-contain\"\n />\n }\n } @else {\n @if (showLogo()) {\n <div class=\"min-w-0 flex-1\">\n <img\n [src]=\"resolvedFullLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"h-9 max-w-full object-contain object-left\"\n />\n </div>\n } @else {\n <div\n class=\"min-w-0 flex-1 truncate text-body-sm font-semibold text-ink dark:text-white\"\n >\n <ng-content select=\"[brand]\" />\n </div>\n }\n }\n <button\n type=\"button\"\n class=\"inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-neutral-600 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white\"\n [attr.aria-label]=\"\n collapsed() ? 'Expand navigation' : 'Collapse navigation'\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapsed()\"\n >\n <africanies-icon\n [name]=\"collapsed() ? 'angle-double-right' : 'angle-double-left'\"\n [size]=\"16\"\n />\n </button>\n </div>\n\n <nav class=\"africanies-overlay-scroll relative flex-1 overflow-y-auto overflow-x-visible px-3 py-3\">\n @if (!collapsed() && expandParents() && hasOpenBranches()) {\n <button\n type=\"button\"\n class=\"absolute right-1.5 top-1.5 z-10 inline-flex size-7 cursor-pointer items-center justify-center rounded-md bg-white text-neutral-500 shadow-sm ring-1 ring-border/80 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:bg-ink dark:text-neutral-400 dark:ring-white/15 dark:hover:bg-white/10 dark:hover:text-white\"\n aria-label=\"Collapse all\"\n (click)=\"collapseAllBranches()\"\n >\n <africanies-icon name=\"compress\" [size]=\"14\" />\n </button>\n }\n <ul class=\"m-0 flex list-none flex-col gap-0.5 p-0\">\n @for (item of items(); track item.id) {\n <li\n class=\"relative overflow-visible\"\n (mouseenter)=\"onItemEnter(item.id)\"\n (mouseleave)=\"onItemLeave(item.id)\"\n >\n @if (item.routerLink !== null && item.routerLink !== undefined) {\n <a\n [routerLink]=\"item.disabled ? null : item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [class]=\"rowClass(item)\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"rowClass(item)\"\n [disabled]=\"!!item.disabled\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </button>\n }\n\n @if (!collapsed() && item.children?.length) {\n <div\n class=\"grid transition-[grid-template-rows] duration-200 ease-out\"\n [style.grid-template-rows]=\"\n isBranchOpen(item.id) ? '1fr' : '0fr'\n \"\n [attr.aria-hidden]=\"!isBranchOpen(item.id)\"\n [class.pointer-events-none]=\"!isBranchOpen(item.id)\"\n >\n <ul\n class=\"relative m-0 mt-0.5 min-h-0 list-none space-y-0.5 overflow-hidden py-1 pl-4 before:absolute before:bottom-1 before:left-[1.35rem] before:top-0 before:w-px before:bg-border dark:before:bg-white/15\"\n >\n @for (child of item.children; track child.id) {\n <li\n class=\"transition-opacity duration-200 ease-out\"\n [class.opacity-0]=\"!isBranchOpen(item.id)\"\n [class.opacity-100]=\"isBranchOpen(item.id)\"\n >\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"child.disabled ? null : child.routerLink\"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n [class]=\"childRowClass(child)\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"childRowClass(child)\"\n [disabled]=\"!!child.disabled\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (collapsed() && hoverId() === item.id) {\n <div\n class=\"absolute left-full top-0 z-50 ml-2 min-w-[11rem] overflow-hidden rounded-md border border-border bg-ink text-white shadow-lg dark:border-white/15\"\n role=\"tooltip\"\n >\n <div\n class=\"absolute inset-y-0 left-0 w-1\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n <div class=\"border-b border-white/10 px-3 py-2 pl-4\">\n <p class=\"m-0 text-body-sm font-semibold\">{{ item.label }}</p>\n </div>\n @if (item.children?.length) {\n <ul class=\"m-0 list-none space-y-0.5 p-1.5\">\n @for (child of item.children; track child.id) {\n <li>\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"\n child.disabled ? null : child.routerLink\n \"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n class=\"relative flex items-center gap-2 rounded px-2.5 py-1.5 text-body-sm text-white/85 no-underline transition-colors hover:bg-white/10 hover:text-white\"\n [class.opacity-50]=\"child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"relative flex w-full items-center gap-2 rounded px-2.5 py-1.5 text-left text-body-sm text-white/85 transition-colors hover:bg-white/10 hover:text-white\"\n [disabled]=\"!!child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n }\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n\n <ng-content select=\"[footer]\" />\n </aside>\n\n <ng-template #rowInner let-item>\n <span class=\"inline-flex size-5 shrink-0 items-center justify-center\">\n @if (item.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"16\" />\n } @else {\n <span\n class=\"size-1.5 rounded-full bg-current opacity-70\"\n aria-hidden=\"true\"\n ></span>\n }\n </span>\n @if (!collapsed()) {\n <span class=\"min-w-0 flex-1 truncate text-left\">{{ item.label }}</span>\n @if (item.children?.length) {\n <africanies-icon\n name=\"chevron-down\"\n [size]=\"14\"\n class=\"shrink-0 opacity-70 transition-transform duration-200 ease-out\"\n [class.rotate-180]=\"isBranchOpen(item.id)\"\n />\n }\n }\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: item.badge,\n compact: collapsed(),\n }\"\n />\n </ng-template>\n\n <ng-template #navBadge let-visible=\"visible\" let-compact=\"compact\">\n @if (visible) {\n <span\n class=\"pointer-events-none absolute z-10 overflow-visible\"\n [class]=\"compact ? 'right-0.5 top-0.5 h-2 w-2' : 'right-1.5 top-1 h-2 w-2'\"\n aria-hidden=\"true\"\n >\n <span\n class=\"africanies-side-nav-badge-ping absolute left-1/2 top-1/2 size-2 rounded-full bg-danger\"\n ></span>\n <span\n class=\"absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-danger ring-2 ring-white dark:ring-ink\"\n ></span>\n </span>\n }\n </ng-template>", styles: ["@keyframes africanies-side-nav-badge-pulse{0%{transform:translate(-50%,-50%) scale(.85);opacity:.9}70%{transform:translate(-50%,-50%) scale(2.4);opacity:0}to{transform:translate(-50%,-50%) scale(2.4);opacity:0}}.africanies-side-nav-badge-ping{animation:africanies-side-nav-badge-pulse 1.4s cubic-bezier(0,0,.2,1) infinite}@media(prefers-reduced-motion:reduce){.africanies-side-nav-badge-ping{animation:none;opacity:.5}}\n"] }]
14118
+ }, template: " <aside\n class=\"relative flex h-full flex-col overflow-visible border-r border-border bg-white transition-[width] duration-200 ease-out dark:border-white/10 dark:bg-ink-950\"\n [style.width]=\"collapsed() ? '3.75rem' : '15rem'\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div\n class=\"pointer-events-none absolute inset-y-0 left-0 w-[3px] transition-colors\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n class=\"flex shrink-0 items-center gap-2 border-b border-border py-3 dark:border-white/10\"\n [class.flex-col]=\"collapsed()\"\n [class.px-3]=\"collapsed()\"\n [class.pl-4]=\"!collapsed()\"\n [class.pr-2]=\"!collapsed()\"\n >\n @if (collapsed()) {\n @if (showLogo()) {\n <img\n [src]=\"resolvedMiniLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"size-8 shrink-0 object-contain\"\n />\n }\n } @else {\n @if (showLogo()) {\n <div class=\"min-w-0 flex-1\">\n <img\n [src]=\"resolvedFullLogo()\"\n alt=\"African Import Export Solutions\"\n class=\"h-9 max-w-full object-contain object-left\"\n />\n </div>\n } @else {\n <div\n class=\"min-w-0 flex-1 truncate text-body-sm font-semibold text-ink dark:text-white\"\n >\n <ng-content select=\"[brand]\" />\n </div>\n }\n }\n <button\n type=\"button\"\n class=\"inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-neutral-600 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:text-neutral-400 dark:hover:bg-white/10 dark:hover:text-white\"\n [attr.aria-label]=\"\n collapsed() ? 'Expand navigation' : 'Collapse navigation'\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapsed()\"\n >\n <africanies-icon\n [name]=\"collapsed() ? 'angle-double-right' : 'angle-double-left'\"\n [size]=\"16\"\n />\n </button>\n </div>\n\n <nav class=\"africanies-overlay-scroll relative flex-1 overflow-y-auto overflow-x-visible px-3 py-3\">\n @if (!collapsed() && expandParents() && hasOpenBranches()) {\n <button\n type=\"button\"\n class=\"absolute right-1.5 top-1.5 z-10 inline-flex size-7 cursor-pointer items-center justify-center rounded-md bg-white text-neutral-500 shadow-sm ring-1 ring-border/80 transition-colors hover:bg-background-welcome hover:text-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink dark:bg-ink-950 dark:text-neutral-400 dark:ring-white/15 dark:hover:bg-white/10 dark:hover:text-white\"\n aria-label=\"Collapse all\"\n (click)=\"collapseAllBranches()\"\n >\n <africanies-icon name=\"compress\" [size]=\"14\" />\n </button>\n }\n <ul class=\"m-0 flex list-none flex-col gap-0.5 p-0\">\n @for (item of items(); track item.id) {\n <li\n class=\"relative overflow-visible\"\n (mouseenter)=\"onItemEnter(item.id)\"\n (mouseleave)=\"onItemLeave(item.id)\"\n >\n @if (item.routerLink !== null && item.routerLink !== undefined) {\n <a\n [routerLink]=\"item.disabled ? null : item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [class]=\"rowClass(item)\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"rowClass(item)\"\n [disabled]=\"!!item.disabled\"\n [attr.aria-current]=\"isLeafActive(item) ? 'page' : null\"\n [attr.aria-expanded]=\"\n item.children?.length ? isBranchOpen(item.id) : null\n \"\n (click)=\"onActivate(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"rowInner\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </button>\n }\n\n @if (!collapsed() && item.children?.length) {\n <div\n class=\"grid transition-[grid-template-rows] duration-200 ease-out\"\n [style.grid-template-rows]=\"\n isBranchOpen(item.id) ? '1fr' : '0fr'\n \"\n [attr.aria-hidden]=\"!isBranchOpen(item.id)\"\n [class.pointer-events-none]=\"!isBranchOpen(item.id)\"\n >\n <ul\n class=\"relative m-0 mt-0.5 min-h-0 list-none space-y-0.5 overflow-hidden py-1 pl-4 before:absolute before:bottom-1 before:left-[1.35rem] before:top-0 before:w-px before:bg-border dark:before:bg-white/15\"\n >\n @for (child of item.children; track child.id) {\n <li\n class=\"transition-opacity duration-200 ease-out\"\n [class.opacity-0]=\"!isBranchOpen(item.id)\"\n [class.opacity-100]=\"isBranchOpen(item.id)\"\n >\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"child.disabled ? null : child.routerLink\"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n [class]=\"childRowClass(child)\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"childRowClass(child)\"\n [disabled]=\"!!child.disabled\"\n [attr.aria-current]=\"\n isLeafActive(child) ? 'page' : null\n \"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon\n [name]=\"icon\"\n [size]=\"14\"\n class=\"shrink-0 opacity-80\"\n />\n }\n <span class=\"truncate\">{{ child.label }}</span>\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: false,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (collapsed() && hoverId() === item.id) {\n <div\n class=\"absolute left-full top-0 z-50 ml-2 min-w-[11rem] overflow-hidden rounded-md border border-border bg-ink text-white shadow-lg dark:border-white/15\"\n role=\"tooltip\"\n >\n <div\n class=\"absolute inset-y-0 left-0 w-1\"\n [class]=\"modeColor.classes().bg\"\n aria-hidden=\"true\"\n ></div>\n <div class=\"border-b border-white/10 px-3 py-2 pl-4\">\n <p class=\"m-0 text-body-sm font-semibold\">{{ item.label }}</p>\n </div>\n @if (item.children?.length) {\n <ul class=\"m-0 list-none space-y-0.5 p-1.5\">\n @for (child of item.children; track child.id) {\n <li>\n @if (\n child.routerLink !== null &&\n child.routerLink !== undefined\n ) {\n <a\n [routerLink]=\"\n child.disabled ? null : child.routerLink\n \"\n [queryParams]=\"child.queryParams\"\n [fragment]=\"child.fragment\"\n class=\"relative flex items-center gap-2 rounded px-2.5 py-1.5 text-body-sm text-white/85 no-underline transition-colors hover:bg-white/10 hover:text-white\"\n [class.opacity-50]=\"child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"relative flex w-full items-center gap-2 rounded px-2.5 py-1.5 text-left text-body-sm text-white/85 transition-colors hover:bg-white/10 hover:text-white\"\n [disabled]=\"!!child.disabled\"\n (click)=\"onActivate(child, $event)\"\n >\n @if (child.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"14\" />\n }\n {{ child.label }}\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: child.badge,\n compact: true,\n }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n }\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n\n <ng-content select=\"[footer]\" />\n </aside>\n\n <ng-template #rowInner let-item>\n <span class=\"inline-flex size-5 shrink-0 items-center justify-center\">\n @if (item.icon; as icon) {\n <africanies-icon [name]=\"icon\" [size]=\"16\" />\n } @else {\n <span\n class=\"size-1.5 rounded-full bg-current opacity-70\"\n aria-hidden=\"true\"\n ></span>\n }\n </span>\n @if (!collapsed()) {\n <span class=\"min-w-0 flex-1 truncate text-left\">{{ item.label }}</span>\n @if (item.children?.length) {\n <africanies-icon\n name=\"chevron-down\"\n [size]=\"14\"\n class=\"shrink-0 opacity-70 transition-transform duration-200 ease-out\"\n [class.rotate-180]=\"isBranchOpen(item.id)\"\n />\n }\n }\n <ng-container\n [ngTemplateOutlet]=\"navBadge\"\n [ngTemplateOutletContext]=\"{\n visible: item.badge,\n compact: collapsed(),\n }\"\n />\n </ng-template>\n\n <ng-template #navBadge let-visible=\"visible\" let-compact=\"compact\">\n @if (visible) {\n <span\n class=\"pointer-events-none absolute z-10 overflow-visible\"\n [class]=\"compact ? 'right-0.5 top-0.5 h-2 w-2' : 'right-1.5 top-1 h-2 w-2'\"\n aria-hidden=\"true\"\n >\n <span\n class=\"africanies-side-nav-badge-ping absolute left-1/2 top-1/2 size-2 rounded-full bg-danger\"\n ></span>\n <span\n class=\"absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-danger ring-2 ring-white dark:ring-ink\"\n ></span>\n </span>\n }\n </ng-template>", styles: ["@keyframes africanies-side-nav-badge-pulse{0%{transform:translate(-50%,-50%) scale(.85);opacity:.9}70%{transform:translate(-50%,-50%) scale(2.4);opacity:0}to{transform:translate(-50%,-50%) scale(2.4);opacity:0}}.africanies-side-nav-badge-ping{animation:africanies-side-nav-badge-pulse 1.4s cubic-bezier(0,0,.2,1) infinite}@media(prefers-reduced-motion:reduce){.africanies-side-nav-badge-ping{animation:none;opacity:.5}}\n"] }]
14112
14119
  }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], activeId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeId", required: false }] }, { type: i0.Output, args: ["activeIdChange"] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], expandParents: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandParents", required: false }] }], expandBranchesByDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandBranchesByDefault", required: false }] }], linkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkActiveOptions", required: false }] }], showLogo: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLogo", required: false }] }], logoSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoSrc", required: false }] }], logoMiniSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoMiniSrc", required: false }] }] } });
14113
14120
 
14114
14121
  /**
@@ -14941,7 +14948,8 @@ class NotificationDrawerPanel {
14941
14948
  ...(ngDevMode ? [{ debugName: "viewLinkClass" }] : /* istanbul ignore next */ []));
14942
14949
  title = computed(() => this.data.title ?? 'Notifications', /* @ts-ignore */
14943
14950
  ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
14944
- items = signal(this.data.onLoadPage ? [] : (this.data.notifications ?? []), /* @ts-ignore */
14951
+ seededItems = this.data.notifications ?? [];
14952
+ items = signal(this.seededItems, /* @ts-ignore */
14945
14953
  ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
14946
14954
  markingId = signal(null, /* @ts-ignore */
14947
14955
  ...(ngDevMode ? [{ debugName: "markingId" }] : /* istanbul ignore next */ []));
@@ -14949,7 +14957,7 @@ class NotificationDrawerPanel {
14949
14957
  ...(ngDevMode ? [{ debugName: "markingAll" }] : /* istanbul ignore next */ []));
14950
14958
  confirmingMarkAll = signal(false, /* @ts-ignore */
14951
14959
  ...(ngDevMode ? [{ debugName: "confirmingMarkAll" }] : /* istanbul ignore next */ []));
14952
- loadingInitial = signal(!!this.data.onLoadPage, /* @ts-ignore */
14960
+ loadingInitial = signal(!!this.data.onLoadPage && this.seededItems.length === 0, /* @ts-ignore */
14953
14961
  ...(ngDevMode ? [{ debugName: "loadingInitial" }] : /* istanbul ignore next */ []));
14954
14962
  loadingMore = signal(false, /* @ts-ignore */
14955
14963
  ...(ngDevMode ? [{ debugName: "loadingMore" }] : /* istanbul ignore next */ []));
@@ -14983,7 +14991,13 @@ class NotificationDrawerPanel {
14983
14991
  markAllConfirmTimer = null;
14984
14992
  constructor() {
14985
14993
  if (this.data.onLoadPage) {
14986
- this.fetchPage(1, 'replace');
14994
+ if (this.seededItems.length > 0) {
14995
+ this.currentPage.set(1);
14996
+ this.fetchPage(1, 'refresh');
14997
+ }
14998
+ else {
14999
+ this.fetchPage(1, 'replace');
15000
+ }
14987
15001
  }
14988
15002
  effect(() => {
14989
15003
  if (this.loadingInitial() ||
@@ -15177,11 +15191,14 @@ class NotificationDrawerPanel {
15177
15191
  this.loadingInitial.set(true);
15178
15192
  this.loadError.set(null);
15179
15193
  }
15194
+ else if (mode === 'refresh') {
15195
+ this.loadError.set(null);
15196
+ }
15180
15197
  else {
15181
15198
  this.loadingMore.set(true);
15182
15199
  }
15183
15200
  this.runPageLoad(() => loadPage(page), (result) => {
15184
- if (mode === 'replace') {
15201
+ if (mode === 'replace' || mode === 'refresh') {
15185
15202
  this.items.set(result.items ?? []);
15186
15203
  }
15187
15204
  else {
@@ -15196,6 +15213,9 @@ class NotificationDrawerPanel {
15196
15213
  this.loadError.set('Could not load notifications. Try again.');
15197
15214
  this.loadingInitial.set(false);
15198
15215
  }
15216
+ else if (mode === 'refresh' && this.items().length === 0) {
15217
+ this.loadError.set('Could not load notifications. Try again.');
15218
+ }
15199
15219
  this.loadingMore.set(false);
15200
15220
  });
15201
15221
  }
@@ -15330,7 +15350,7 @@ class NotificationDrawerPanel {
15330
15350
  <button
15331
15351
  africanies-button
15332
15352
  type="button"
15333
- variant="secondary"
15353
+ variant="flat"
15334
15354
  size="sm"
15335
15355
  (click)="retryInitialLoad()"
15336
15356
  >
@@ -15561,7 +15581,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
15561
15581
  <button
15562
15582
  africanies-button
15563
15583
  type="button"
15564
- variant="secondary"
15584
+ variant="flat"
15565
15585
  size="sm"
15566
15586
  (click)="retryInitialLoad()"
15567
15587
  >
@@ -16429,7 +16449,7 @@ class AppShellHeaderComponent {
16429
16449
  this.notificationsDrawer
16430
16450
  .open({
16431
16451
  title: this.notificationsTitle(),
16432
- notifications: onLoadPage ? undefined : this.notifications(),
16452
+ notifications: this.notifications(),
16433
16453
  onLoadPage,
16434
16454
  onMarkRead,
16435
16455
  onMarkAllRead,
@@ -16826,8 +16846,8 @@ class AppShellComponent {
16826
16846
  hostClass = computed(() => this.layoutPreview() ? 'block h-full' : 'block min-h-full', /* @ts-ignore */
16827
16847
  ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
16828
16848
  shellRootClass = computed(() => this.layoutPreview()
16829
- ? 'relative flex h-full min-h-0'
16830
- : 'relative flex min-h-full', /* @ts-ignore */
16849
+ ? 'relative flex h-full min-h-0 bg-background-chrome dark:bg-ink-950'
16850
+ : 'relative flex min-h-full bg-background-chrome dark:bg-ink-950', /* @ts-ignore */
16831
16851
  ...(ngDevMode ? [{ debugName: "shellRootClass" }] : /* istanbul ignore next */ []));
16832
16852
  headerDensity = computed(() => {
16833
16853
  const preview = this.layoutPreview();
@@ -17431,7 +17451,7 @@ class PaginationComponent {
17431
17451
  <button
17432
17452
  africanies-button
17433
17453
  type="button"
17434
- variant="secondary"
17454
+ variant="flat"
17435
17455
  size="sm"
17436
17456
  [disabled]="controlsDisabled() || !meta().has_previous_page"
17437
17457
  (click)="emitPage(meta().current_page - 1)"
@@ -17452,7 +17472,7 @@ class PaginationComponent {
17452
17472
  type="button"
17453
17473
  size="sm"
17454
17474
  class="min-w-8"
17455
- [variant]="item === meta().current_page ? 'primary' : 'secondary'"
17475
+ [variant]="item === meta().current_page ? 'primary' : 'flat'"
17456
17476
  [disabled]="controlsDisabled()"
17457
17477
  [attr.aria-label]="'Page ' + item"
17458
17478
  [attr.aria-current]="
@@ -17467,7 +17487,7 @@ class PaginationComponent {
17467
17487
  <button
17468
17488
  africanies-button
17469
17489
  type="button"
17470
- variant="secondary"
17490
+ variant="flat"
17471
17491
  size="sm"
17472
17492
  [disabled]="controlsDisabled() || !meta().has_next_page"
17473
17493
  (click)="emitPage(meta().current_page + 1)"
@@ -17532,7 +17552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17532
17552
  <button
17533
17553
  africanies-button
17534
17554
  type="button"
17535
- variant="secondary"
17555
+ variant="flat"
17536
17556
  size="sm"
17537
17557
  [disabled]="controlsDisabled() || !meta().has_previous_page"
17538
17558
  (click)="emitPage(meta().current_page - 1)"
@@ -17553,7 +17573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17553
17573
  type="button"
17554
17574
  size="sm"
17555
17575
  class="min-w-8"
17556
- [variant]="item === meta().current_page ? 'primary' : 'secondary'"
17576
+ [variant]="item === meta().current_page ? 'primary' : 'flat'"
17557
17577
  [disabled]="controlsDisabled()"
17558
17578
  [attr.aria-label]="'Page ' + item"
17559
17579
  [attr.aria-current]="
@@ -17568,7 +17588,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17568
17588
  <button
17569
17589
  africanies-button
17570
17590
  type="button"
17571
- variant="secondary"
17591
+ variant="flat"
17572
17592
  size="sm"
17573
17593
  [disabled]="controlsDisabled() || !meta().has_next_page"
17574
17594
  (click)="emitPage(meta().current_page + 1)"
@@ -17995,7 +18015,7 @@ class TableComponent {
17995
18015
  // Fill comes from {@link headerSoftClass} on the cell — do not re-tint.
17996
18016
  return `${side} z-[2]`;
17997
18017
  }
17998
- const fill = 'bg-white dark:bg-ink';
18018
+ const fill = 'bg-white dark:bg-ink-surface';
17999
18019
  return `${side} ${fill}`;
18000
18020
  }
18001
18021
  /**
@@ -18113,7 +18133,7 @@ class TableComponent {
18113
18133
  <button
18114
18134
  africanies-button
18115
18135
  type="button"
18116
- variant="secondary"
18136
+ variant="flat"
18117
18137
  size="sm"
18118
18138
  [disabled]="loading() || refreshing()"
18119
18139
  [attr.aria-label]="refreshLabel()"
@@ -18133,7 +18153,7 @@ class TableComponent {
18133
18153
  <button
18134
18154
  africanies-button
18135
18155
  type="button"
18136
- variant="secondary"
18156
+ variant="flat"
18137
18157
  size="sm"
18138
18158
  [attr.aria-label]="filterLabel()"
18139
18159
  (click)="filterClick.emit()"
@@ -18153,7 +18173,7 @@ class TableComponent {
18153
18173
  <button
18154
18174
  africanies-button
18155
18175
  type="button"
18156
- variant="secondary"
18176
+ variant="flat"
18157
18177
  size="sm"
18158
18178
  [attr.aria-label]="exportLabel()"
18159
18179
  (click)="exportClick.emit()"
@@ -18179,7 +18199,7 @@ class TableComponent {
18179
18199
  }
18180
18200
 
18181
18201
  <div
18182
- class="min-w-0 w-full overflow-x-auto rounded-md border border-border bg-white dark:border-white/10 dark:bg-ink"
18202
+ class="min-w-0 w-full overflow-x-auto rounded-md border border-border bg-white dark:border-white/10 dark:bg-ink-surface"
18183
18203
  >
18184
18204
  <table
18185
18205
  class="w-max min-w-full table-auto border-separate border-spacing-0 bg-inherit text-left text-body text-ink dark:text-white"
@@ -18405,7 +18425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18405
18425
  <button
18406
18426
  africanies-button
18407
18427
  type="button"
18408
- variant="secondary"
18428
+ variant="flat"
18409
18429
  size="sm"
18410
18430
  [disabled]="loading() || refreshing()"
18411
18431
  [attr.aria-label]="refreshLabel()"
@@ -18425,7 +18445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18425
18445
  <button
18426
18446
  africanies-button
18427
18447
  type="button"
18428
- variant="secondary"
18448
+ variant="flat"
18429
18449
  size="sm"
18430
18450
  [attr.aria-label]="filterLabel()"
18431
18451
  (click)="filterClick.emit()"
@@ -18445,7 +18465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18445
18465
  <button
18446
18466
  africanies-button
18447
18467
  type="button"
18448
- variant="secondary"
18468
+ variant="flat"
18449
18469
  size="sm"
18450
18470
  [attr.aria-label]="exportLabel()"
18451
18471
  (click)="exportClick.emit()"
@@ -18471,7 +18491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18471
18491
  }
18472
18492
 
18473
18493
  <div
18474
- class="min-w-0 w-full overflow-x-auto rounded-md border border-border bg-white dark:border-white/10 dark:bg-ink"
18494
+ class="min-w-0 w-full overflow-x-auto rounded-md border border-border bg-white dark:border-white/10 dark:bg-ink-surface"
18475
18495
  >
18476
18496
  <table
18477
18497
  class="w-max min-w-full table-auto border-separate border-spacing-0 bg-inherit text-left text-body text-ink dark:text-white"