@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"africanies-africanies-icons.mjs","sources":["../../../../libs/africanies-icons/src/lib/icon-registry.service.ts","../../../../libs/africanies-icons/src/lib/africanies-icon.component.ts","../../../../libs/africanies-icons/src/lib/icon-name.ts","../../../../libs/africanies-icons/src/africanies-africanies-icons.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n inject,\n Injectable,\n InjectionToken,\n} from '@angular/core';\n\n/**\n * URL of the SVG sprite served by the host application.\n *\n * Default assumes the published asset is copied to\n * `/assets/africanies-icons/icons.sprite.svg` (see package README). The leading\n * slash is required: Angular `[src]` / `fetch()` resolve relative URLs\n * against the current route (`/login/assets/…`), not `<base href=\"/\">`.\n * Override when the host uses a CDN or a different assets path.\n */\nexport const AFRICANIES_ICON_SPRITE_URL = new InjectionToken<string>(\n 'AFRICANIES_ICON_SPRITE_URL',\n {\n providedIn: 'root',\n factory: () => '/assets/africanies-icons/icons.sprite.svg',\n },\n);\n\n/**\n * Fetches and inlines the icon sprite once into `document.body`.\n *\n * WHY inline (not external `<use href=\"sprite.svg#id\">`):\n * - External fragment references break under some CSP / cross-origin setups.\n * - Inlining once lets every `<africanies-icon>` use cheap `#symbol-id` hrefs and\n * keeps a single network request for 600+ icons.\n *\n * Call {@link ensureLoaded} from `AfricaniesIconComponent` (or app bootstrap). Safe\n * to invoke repeatedly — concurrent callers share one in-flight promise.\n */\n@Injectable({ providedIn: 'root' })\nexport class IconRegistryService {\n private readonly document = inject(DOCUMENT);\n private readonly spriteUrl = inject(AFRICANIES_ICON_SPRITE_URL);\n\n private loadPromise: Promise<void> | null = null;\n private loaded = false;\n\n /**\n * Ensures the sprite `<svg>` is present in the DOM.\n *\n * @returns Resolves when the sprite is inlined (or already present).\n * @throws {Error} When the sprite URL cannot be fetched.\n */\n ensureLoaded(): Promise<void> {\n if (this.loaded) {\n return Promise.resolve();\n }\n if (this.loadPromise) {\n return this.loadPromise;\n }\n\n this.loadPromise = this.fetchAndInline().finally(() => {\n this.loadPromise = null;\n });\n return this.loadPromise;\n }\n\n /**\n * Whether the sprite has been successfully inlined.\n *\n * @returns `true` after a successful {@link ensureLoaded}.\n */\n isLoaded(): boolean {\n return this.loaded;\n }\n\n private async fetchAndInline(): Promise<void> {\n if (this.document.getElementById('africanies-icon-sprite')) {\n this.loaded = true;\n return;\n }\n\n const response = await fetch(this.spriteUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to load AFRICANIES icon sprite from \"${this.spriteUrl}\" (${response.status})`,\n );\n }\n\n const markup = await response.text();\n const container = this.document.createElement('div');\n container.id = 'africanies-icon-sprite';\n container.setAttribute('hidden', '');\n container.setAttribute('aria-hidden', 'true');\n // WHY innerHTML: sprite is trusted first-party SVG from this package.\n container.innerHTML = markup;\n this.document.body.prepend(container);\n this.loaded = true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport type { IconName } from './icon-name';\nimport { IconRegistryService } from './icon-registry.service';\n\n/**\n * Renders a single icon from the shared SVG sprite.\n *\n * WHY sprite + `<use>`: one network fetch (via {@link IconRegistryService})\n * serves every icon instead of shipping hundreds of Angular components or\n * individual SVG HTTP requests.\n *\n * Host apps must serve `icons.sprite.svg` (see package README) or override\n * {@link AFRICANIES_ICON_SPRITE_URL}.\n *\n * @example\n * ```html\n * <africanies-icon name=\"truck\" />\n * <africanies-icon name=\"search\" [size]=\"32\" />\n * ```\n */\n@Component({\n selector: 'africanies-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.width]=\"resolvedSize()\"\n [attr.height]=\"resolvedSize()\"\n [attr.aria-hidden]=\"true\"\n focusable=\"false\"\n part=\"svg\"\n >\n <use [attr.href]=\"href()\" />\n </svg>\n `,\n styles: `\n :host {\n display: inline-flex;\n line-height: 0;\n vertical-align: middle;\n /* Inherit surrounding text so dark:text-white / mode accents paint the glyph. */\n color: inherit;\n }\n\n svg {\n display: block;\n fill: currentColor;\n color: inherit;\n }\n `,\n host: {\n '[attr.data-icon]': 'name()',\n },\n})\nexport class AfricaniesIconComponent {\n private readonly registry = inject(IconRegistryService);\n\n /**\n * Icon id matching a `<symbol>` in the sprite / {@link IconName} union.\n */\n readonly name = input.required<IconName>();\n\n /**\n * CSS pixel size for width and height. Accepts a number (`24`) or CSS length\n * (`'1.5rem'`). Defaults to `24`.\n */\n readonly size = input<number | string>(24);\n\n constructor() {\n // Kick off sprite load on first icon render; failures surface as rejected\n // promises / console errors rather than blanking the whole app.\n effect(() => {\n // Track name so HMR / late registry overrides still trigger ensureLoaded.\n void this.name();\n void this.registry.ensureLoaded().catch((err: unknown) => {\n console.error('[africanies-icon] sprite load failed', err);\n });\n });\n }\n\n /**\n * Fragment href into the inlined sprite (`#truck`).\n *\n * @returns Hash fragment pointing at the named symbol.\n */\n protected href(): string {\n return `#${this.name()}`;\n }\n\n /**\n * Normalized size attribute value.\n *\n * @returns Size as a string suitable for the SVG `width`/`height` attrs.\n */\n protected resolvedSize(): string {\n const value = this.size();\n return typeof value === 'number' ? String(value) : value;\n }\n}\n","/**\n * Generated by `tools/build-icon-sprite.mjs` — do not edit by hand.\n *\n * Closed list of every symbol id in `icons.sprite.svg` so typos fail at\n * compile time, editors autocomplete valid names, and the playground gallery\n * can iterate without maintaining a second list.\n *\n * To add an icon: drop an SVG into `/svg`, then run `npm run icons:build`.\n */\nexport const ICON_NAMES = [\n 'abacus',\n 'absolute-position',\n 'academy-cap',\n 'accessibility',\n 'accordion-menu',\n 'add-dock',\n 'adjust',\n 'adobe-flash',\n 'airplane',\n 'alarm',\n 'align-center',\n 'align-justify',\n 'align-left',\n 'align-right',\n 'alt-a',\n 'alt',\n 'ambulance',\n 'anchor',\n 'angle-double-down',\n 'angle-double-left',\n 'angle-double-right',\n 'angle-double-up',\n 'angle-down',\n 'angle-left',\n 'angle-right',\n 'angle-up',\n 'archive',\n 'archives',\n 'area-select',\n 'arrow-backward',\n 'arrow-circle-down-o',\n 'arrow-circle-down',\n 'arrow-circle-left-o',\n 'arrow-circle-left',\n 'arrow-circle-right-o',\n 'arrow-circle-right',\n 'arrow-circle-up-o',\n 'arrow-circle-up',\n 'arrow-down',\n 'arrow-forward',\n 'arrow-left',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-right',\n 'arrow-up',\n 'arrows-cross',\n 'arrows-long-h',\n 'arrows-long-right',\n 'arrows-long-up',\n 'arrows-long-v',\n 'arrows',\n 'asterisk',\n 'at',\n 'automation',\n 'backspace-a',\n 'backspace',\n 'backwards',\n 'ban',\n 'bar-chart-h',\n 'bar-chart-v',\n 'bar-chart',\n 'barcode',\n 'bed',\n 'bell-o',\n 'bell-slash-o',\n 'bell-slash',\n 'bell',\n 'boat',\n 'bold',\n 'bolt',\n 'bomb',\n 'book-dollar',\n 'book-percent',\n 'book',\n 'bookmark-o',\n 'bookmark',\n 'briefcase',\n 'browser',\n 'bug-o',\n 'bug',\n 'building-o',\n 'building',\n 'bullets',\n 'bullseye',\n 'bus',\n 'button',\n 'calc-book',\n 'calc',\n 'calendar-briefcase',\n 'calendar-clock',\n 'calendar-envelope',\n 'calendar-o',\n 'calendar-user',\n 'calendar',\n 'camera',\n 'car',\n 'caret-down',\n 'caret-left',\n 'caret-right',\n 'caret-square-down-o',\n 'caret-square-left-o',\n 'caret-square-right-o',\n 'caret-square-up-o',\n 'caret-up',\n 'cart-o',\n 'cart',\n 'cash',\n 'chart-3d',\n 'chart-grid',\n 'chart-line',\n 'chart-timeline',\n 'chart',\n 'chat',\n 'check-circle-o',\n 'check-circle',\n 'check-square-o',\n 'check-square',\n 'check',\n 'chevron-circle-down-o',\n 'chevron-circle-down',\n 'chevron-circle-left-o',\n 'chevron-circle-left',\n 'chevron-circle-right-o',\n 'chevron-circle-right',\n 'chevron-circle-up-o',\n 'chevron-circle-up',\n 'chevron-down-small',\n 'chevron-down',\n 'chevron-left-small',\n 'chevron-left',\n 'chevron-right-small',\n 'chevron-right',\n 'chevron-up-small',\n 'chevron-up',\n 'child',\n 'circle-thin',\n 'circle',\n 'clipboard-check',\n 'clipboard-cross',\n 'clipboard-heart',\n 'clipboard-pulse',\n 'clipboard-text',\n 'clipboard-user',\n 'clipboard',\n 'clock',\n 'close-big',\n 'close-circle-o',\n 'close-circle',\n 'close-small',\n 'close',\n 'cloud-download-o',\n 'cloud-download',\n 'cloud-o',\n 'cloud-upload-o',\n 'cloud-upload',\n 'cloud',\n 'cluster',\n 'code',\n 'coffee',\n 'cog-o',\n 'cog',\n 'cogs',\n 'coin-piles',\n 'coins',\n 'combobox',\n 'comment-ellipsis-o',\n 'comment-ellipsis',\n 'comment-o',\n 'comment',\n 'comments-o',\n 'comments',\n 'compile',\n 'compress-square',\n 'compress',\n 'connect-o',\n 'connect',\n 'controller',\n 'copy-o',\n 'copy',\n 'copyright',\n 'corner-lower-left',\n 'corner-lower-right',\n 'corner-upper-left',\n 'corner-upper-right',\n 'credit-card',\n 'crop',\n 'cross-cutlery',\n 'crosshairs',\n 'css',\n 'ctrl-a',\n 'ctrl',\n 'cube',\n 'cubes',\n 'curly-brackets',\n 'cursor-o',\n 'cursor',\n 'cutlery',\n 'dashboard',\n 'database',\n 'date-input',\n 'deindent',\n 'del-a',\n 'del',\n 'dental-chair',\n 'desktop',\n 'diamond-o',\n 'diamond',\n 'diasporan-partner',\n 'diploma-scroll',\n 'diploma',\n 'disc',\n 'doctor-briefcase',\n 'doctor',\n 'dollar',\n 'dot-circle',\n 'download-alt',\n 'download',\n 'drop',\n 'edit',\n 'eject',\n 'elastic',\n 'ellipsis-circle-o',\n 'ellipsis-circle',\n 'ellipsis-dots-h',\n 'ellipsis-dots-v',\n 'ellipsis-h',\n 'ellipsis-v',\n 'enter-arrow',\n 'enter',\n 'envelope-o',\n 'envelope-open-o',\n 'envelope-open',\n 'envelope',\n 'envelopes-o',\n 'envelopes',\n 'eraser',\n 'esc-a',\n 'esc',\n 'euro',\n 'exchange',\n 'exclamation-circle-o',\n 'exclamation-circle',\n 'exclamation',\n 'exit-o',\n 'exit',\n 'expand-full',\n 'expand-square',\n 'expand',\n 'external-browser',\n 'external-link',\n 'eye-slash',\n 'eye',\n 'eyedropper',\n 'facebook-square',\n 'facebook',\n 'factory',\n 'family',\n 'fast-backward',\n 'fast-forward',\n 'female',\n 'file-add',\n 'file-code',\n 'file-font',\n 'file-movie',\n 'file-o',\n 'file-picture',\n 'file-presentation',\n 'file-process',\n 'file-refresh',\n 'file-remove',\n 'file-search',\n 'file-sound',\n 'file-start',\n 'file-table',\n 'file-text-o',\n 'file-text',\n 'file-tree-small',\n 'file-tree-sub',\n 'file-tree',\n 'file-zip',\n 'file',\n 'fill',\n 'film',\n 'filter',\n 'fire',\n 'flag-checkered',\n 'flag-o',\n 'flag',\n 'flash',\n 'flask',\n 'flight-landing',\n 'flight-takeoff',\n 'flip-h',\n 'flip-v',\n 'folder-add',\n 'folder-o',\n 'folder-open-o',\n 'folder-open',\n 'folder-remove',\n 'folder-search',\n 'folder',\n 'font',\n 'form',\n 'forward',\n 'frown-o',\n 'funcion',\n 'funnel',\n 'gamepad',\n 'gavel',\n 'gift',\n 'glass',\n 'glasses',\n 'globe-wire',\n 'globe',\n 'golf',\n 'google-plus-square',\n 'google-plus',\n 'grab',\n 'grid-bevel',\n 'grid-big-o',\n 'grid-big',\n 'grid-h',\n 'grid-small-o',\n 'grid-small',\n 'grid-v',\n 'grid',\n 'group',\n 'hammer',\n 'hand-coins',\n 'hand',\n 'handle-corner',\n 'hands-up',\n 'handshake',\n 'harddrive-o',\n 'harddrive',\n 'hash',\n 'header',\n 'headphones',\n 'headset',\n 'health-card',\n 'heart-o',\n 'heart',\n 'home-o',\n 'home',\n 'hospital',\n 'hourglass-empty',\n 'hourglass-end',\n 'hourglass-start',\n 'hourglass',\n 'inbox',\n 'indent',\n 'info-circle-o',\n 'info-circle',\n 'info',\n 'input',\n 'insert',\n 'institution',\n 'invoice',\n 'italic',\n 'key-o',\n 'key',\n 'keyboard-o',\n 'keyboard',\n 'laptop',\n 'layout',\n 'level-down-bold',\n 'level-down',\n 'level-left-bold',\n 'level-left',\n 'level-right-bold',\n 'level-right',\n 'level-up-bold',\n 'level-up',\n 'lifebuoy',\n 'lightbulb',\n 'line-bar-chart',\n 'line-chart',\n 'line-h',\n 'line-v',\n 'lines-list',\n 'lines',\n 'link',\n 'list-ol',\n 'list-select',\n 'list-ul',\n 'list',\n 'location-arrow-circle-o',\n 'location-arrow-circle',\n 'location-arrow',\n 'lock',\n 'magic',\n 'magnet',\n 'mailbox',\n 'male',\n 'map-marker',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin',\n 'medal',\n 'megaphone',\n 'meh-o',\n 'menu',\n 'microphone',\n 'mini-partner',\n 'minus-circle-o',\n 'minus-circle',\n 'minus-square-o',\n 'minus',\n 'mobile-browser',\n 'mobile-retro',\n 'mobile',\n 'modal-list',\n 'modal',\n 'money-deposit',\n 'money-exchange',\n 'money-withdraw',\n 'money',\n 'moon-o',\n 'moon',\n 'morning',\n 'movie',\n 'music',\n 'mute',\n 'native-button',\n 'newspaper',\n 'notebook',\n 'number-count',\n 'nurse',\n 'office',\n 'open-book',\n 'option-a',\n 'option',\n 'options',\n 'orientation',\n 'out',\n 'outbox',\n 'package',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'padding',\n 'paint-roll',\n 'paintbrush',\n 'palette',\n 'panel',\n 'paperclip',\n 'paperplane-o',\n 'paperplane',\n 'paragraph',\n 'partner',\n 'password',\n 'paste',\n 'pause',\n 'pencil',\n 'phone-landline',\n 'phone',\n 'picture',\n 'pie-bar-chart',\n 'pie-chart',\n 'piggy-bank-coin',\n 'piggy-bank',\n 'pill',\n 'pills',\n 'pin-post',\n 'pin',\n 'play-circle-o',\n 'play-circle',\n 'play',\n 'plug',\n 'plus-circle-o',\n 'plus-circle',\n 'plus-minus',\n 'plus-square-o',\n 'plus',\n 'pointer',\n 'power-off',\n 'presentation',\n 'print',\n 'progressbar',\n 'puzzle-piece',\n 'pyramid-chart',\n 'qrcode',\n 'question-circle-o',\n 'question-circle',\n 'question',\n 'quote-left',\n 'quote-right',\n 'random',\n 'raster-lower-left',\n 'raster',\n 'records',\n 'recycle',\n 'refresh',\n 'reply-all',\n 'reply',\n 'resize-h',\n 'resize-v',\n 'retweet',\n 'rhombus',\n 'road-branch',\n 'road-branches',\n 'road-split',\n 'road',\n 'rocket',\n 'rotate-left',\n 'rotate-right',\n 'rss-square',\n 'rss',\n 'safe-lock',\n 'safe',\n 'scale-unbalance',\n 'scale',\n 'scatter-chart',\n 'scissors',\n 'screwdriver',\n 'search-minus',\n 'search-plus',\n 'search',\n 'select',\n 'server',\n 'share-square',\n 'share',\n 'shield',\n 'shift-arrow',\n 'shift',\n 'shop',\n 'sign-in-alt',\n 'sign-in',\n 'sign-out-alt',\n 'sign-out',\n 'signal',\n 'sitemap',\n 'slider',\n 'sliders',\n 'smiley-o',\n 'sort',\n 'sound-disable',\n 'spark-line',\n 'specialist',\n 'spinner-arc',\n 'spinner-third',\n 'spinner',\n 'spline-area-chart',\n 'spline-chart',\n 'split-h',\n 'split-v',\n 'split',\n 'spoon',\n 'square-shadow',\n 'star-half-left-o',\n 'star-half-left',\n 'star-half-right-o',\n 'star-half-right',\n 'star-o',\n 'star',\n 'start-cog',\n 'step-backward',\n 'step-forward',\n 'stethoscope',\n 'stock',\n 'stop-cog',\n 'stop',\n 'stopwatch',\n 'storage',\n 'strikethrough',\n 'subscript',\n 'suitcase',\n 'sun-down',\n 'sun-o',\n 'sun-rise',\n 'superscript',\n 'sword',\n 'tab-a',\n 'tab',\n 'table',\n 'tablet',\n 'tabs',\n 'tag',\n 'tags',\n 'tasks',\n 'taxi',\n 'teeth',\n 'terminal',\n 'text-height',\n 'text-input',\n 'text-label',\n 'text-width',\n 'thin-square',\n 'thumbs-down-o',\n 'thumbs-down',\n 'thumbs-up-o',\n 'thumbs-up',\n 'ticket',\n 'time-backward',\n 'time-forward',\n 'timer',\n 'toolbox',\n 'tools',\n 'tooth',\n 'touch',\n 'train',\n 'trash',\n 'tree-table',\n 'trending-down',\n 'trending-up',\n 'trophy',\n 'truck',\n 'twin-col-select',\n 'twitter-square',\n 'twitter',\n 'umbrella',\n 'underline',\n 'unlink',\n 'unlock',\n 'upload-alt',\n 'upload',\n 'user-card',\n 'user-check',\n 'user-clock',\n 'user-heart',\n 'user-star',\n 'user',\n 'users',\n 'vaadin-h',\n 'vaadin-v',\n 'viewport',\n 'vimeo-square',\n 'vimeo',\n 'volume-down',\n 'volume-off',\n 'volume-up',\n 'volume',\n 'wallet',\n 'warehouse',\n 'warning',\n 'workplace',\n 'wrench',\n 'youtube-square',\n 'youtube',\n] as const;\n\n/**\n * Union of every icon id in {@link ICON_NAMES}.\n */\nexport type IconName = (typeof ICON_NAMES)[number];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@africanies/africanies-icons",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^22.0.0",
6
+ "@angular/core": "^22.0.0"
7
+ },
8
+ "sideEffects": false,
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "files": [
13
+ "**/*"
14
+ ],
15
+ "module": "fesm2022/africanies-africanies-icons.mjs",
16
+ "typings": "types/africanies-africanies-icons.d.ts",
17
+ "exports": {
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./types/africanies-africanies-icons.d.ts",
23
+ "default": "./fesm2022/africanies-africanies-icons.mjs"
24
+ }
25
+ },
26
+ "type": "module",
27
+ "dependencies": {
28
+ "tslib": "^2.3.0"
29
+ }
30
+ }
@@ -0,0 +1,108 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken } from '@angular/core';
3
+
4
+ /**
5
+ * Renders a single icon from the shared SVG sprite.
6
+ *
7
+ * WHY sprite + `<use>`: one network fetch (via {@link IconRegistryService})
8
+ * serves every icon instead of shipping hundreds of Angular components or
9
+ * individual SVG HTTP requests.
10
+ *
11
+ * Host apps must serve `icons.sprite.svg` (see package README) or override
12
+ * {@link AFRICANIES_ICON_SPRITE_URL}.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <africanies-icon name="truck" />
17
+ * <africanies-icon name="search" [size]="32" />
18
+ * ```
19
+ */
20
+ declare class AfricaniesIconComponent {
21
+ private readonly registry;
22
+ /**
23
+ * Icon id matching a `<symbol>` in the sprite / {@link IconName} union.
24
+ */
25
+ readonly name: i0.InputSignal<"abacus" | "absolute-position" | "academy-cap" | "accessibility" | "accordion-menu" | "add-dock" | "adjust" | "adobe-flash" | "airplane" | "alarm" | "align-center" | "align-justify" | "align-left" | "align-right" | "alt-a" | "alt" | "ambulance" | "anchor" | "angle-double-down" | "angle-double-left" | "angle-double-right" | "angle-double-up" | "angle-down" | "angle-left" | "angle-right" | "angle-up" | "archive" | "archives" | "area-select" | "arrow-backward" | "arrow-circle-down-o" | "arrow-circle-down" | "arrow-circle-left-o" | "arrow-circle-left" | "arrow-circle-right-o" | "arrow-circle-right" | "arrow-circle-up-o" | "arrow-circle-up" | "arrow-down" | "arrow-forward" | "arrow-left" | "arrow-long-down" | "arrow-long-left" | "arrow-right" | "arrow-up" | "arrows-cross" | "arrows-long-h" | "arrows-long-right" | "arrows-long-up" | "arrows-long-v" | "arrows" | "asterisk" | "at" | "automation" | "backspace-a" | "backspace" | "backwards" | "ban" | "bar-chart-h" | "bar-chart-v" | "bar-chart" | "barcode" | "bed" | "bell-o" | "bell-slash-o" | "bell-slash" | "bell" | "boat" | "bold" | "bolt" | "bomb" | "book-dollar" | "book-percent" | "book" | "bookmark-o" | "bookmark" | "briefcase" | "browser" | "bug-o" | "bug" | "building-o" | "building" | "bullets" | "bullseye" | "bus" | "button" | "calc-book" | "calc" | "calendar-briefcase" | "calendar-clock" | "calendar-envelope" | "calendar-o" | "calendar-user" | "calendar" | "camera" | "car" | "caret-down" | "caret-left" | "caret-right" | "caret-square-down-o" | "caret-square-left-o" | "caret-square-right-o" | "caret-square-up-o" | "caret-up" | "cart-o" | "cart" | "cash" | "chart-3d" | "chart-grid" | "chart-line" | "chart-timeline" | "chart" | "chat" | "check-circle-o" | "check-circle" | "check-square-o" | "check-square" | "check" | "chevron-circle-down-o" | "chevron-circle-down" | "chevron-circle-left-o" | "chevron-circle-left" | "chevron-circle-right-o" | "chevron-circle-right" | "chevron-circle-up-o" | "chevron-circle-up" | "chevron-down-small" | "chevron-down" | "chevron-left-small" | "chevron-left" | "chevron-right-small" | "chevron-right" | "chevron-up-small" | "chevron-up" | "child" | "circle-thin" | "circle" | "clipboard-check" | "clipboard-cross" | "clipboard-heart" | "clipboard-pulse" | "clipboard-text" | "clipboard-user" | "clipboard" | "clock" | "close-big" | "close-circle-o" | "close-circle" | "close-small" | "close" | "cloud-download-o" | "cloud-download" | "cloud-o" | "cloud-upload-o" | "cloud-upload" | "cloud" | "cluster" | "code" | "coffee" | "cog-o" | "cog" | "cogs" | "coin-piles" | "coins" | "combobox" | "comment-ellipsis-o" | "comment-ellipsis" | "comment-o" | "comment" | "comments-o" | "comments" | "compile" | "compress-square" | "compress" | "connect-o" | "connect" | "controller" | "copy-o" | "copy" | "copyright" | "corner-lower-left" | "corner-lower-right" | "corner-upper-left" | "corner-upper-right" | "credit-card" | "crop" | "cross-cutlery" | "crosshairs" | "css" | "ctrl-a" | "ctrl" | "cube" | "cubes" | "curly-brackets" | "cursor-o" | "cursor" | "cutlery" | "dashboard" | "database" | "date-input" | "deindent" | "del-a" | "del" | "dental-chair" | "desktop" | "diamond-o" | "diamond" | "diasporan-partner" | "diploma-scroll" | "diploma" | "disc" | "doctor-briefcase" | "doctor" | "dollar" | "dot-circle" | "download-alt" | "download" | "drop" | "edit" | "eject" | "elastic" | "ellipsis-circle-o" | "ellipsis-circle" | "ellipsis-dots-h" | "ellipsis-dots-v" | "ellipsis-h" | "ellipsis-v" | "enter-arrow" | "enter" | "envelope-o" | "envelope-open-o" | "envelope-open" | "envelope" | "envelopes-o" | "envelopes" | "eraser" | "esc-a" | "esc" | "euro" | "exchange" | "exclamation-circle-o" | "exclamation-circle" | "exclamation" | "exit-o" | "exit" | "expand-full" | "expand-square" | "expand" | "external-browser" | "external-link" | "eye-slash" | "eye" | "eyedropper" | "facebook-square" | "facebook" | "factory" | "family" | "fast-backward" | "fast-forward" | "female" | "file-add" | "file-code" | "file-font" | "file-movie" | "file-o" | "file-picture" | "file-presentation" | "file-process" | "file-refresh" | "file-remove" | "file-search" | "file-sound" | "file-start" | "file-table" | "file-text-o" | "file-text" | "file-tree-small" | "file-tree-sub" | "file-tree" | "file-zip" | "file" | "fill" | "film" | "filter" | "fire" | "flag-checkered" | "flag-o" | "flag" | "flash" | "flask" | "flight-landing" | "flight-takeoff" | "flip-h" | "flip-v" | "folder-add" | "folder-o" | "folder-open-o" | "folder-open" | "folder-remove" | "folder-search" | "folder" | "font" | "form" | "forward" | "frown-o" | "funcion" | "funnel" | "gamepad" | "gavel" | "gift" | "glass" | "glasses" | "globe-wire" | "globe" | "golf" | "google-plus-square" | "google-plus" | "grab" | "grid-bevel" | "grid-big-o" | "grid-big" | "grid-h" | "grid-small-o" | "grid-small" | "grid-v" | "grid" | "group" | "hammer" | "hand-coins" | "hand" | "handle-corner" | "hands-up" | "handshake" | "harddrive-o" | "harddrive" | "hash" | "header" | "headphones" | "headset" | "health-card" | "heart-o" | "heart" | "home-o" | "home" | "hospital" | "hourglass-empty" | "hourglass-end" | "hourglass-start" | "hourglass" | "inbox" | "indent" | "info-circle-o" | "info-circle" | "info" | "input" | "insert" | "institution" | "invoice" | "italic" | "key-o" | "key" | "keyboard-o" | "keyboard" | "laptop" | "layout" | "level-down-bold" | "level-down" | "level-left-bold" | "level-left" | "level-right-bold" | "level-right" | "level-up-bold" | "level-up" | "lifebuoy" | "lightbulb" | "line-bar-chart" | "line-chart" | "line-h" | "line-v" | "lines-list" | "lines" | "link" | "list-ol" | "list-select" | "list-ul" | "list" | "location-arrow-circle-o" | "location-arrow-circle" | "location-arrow" | "lock" | "magic" | "magnet" | "mailbox" | "male" | "map-marker" | "margin-bottom" | "margin-left" | "margin-right" | "margin-top" | "margin" | "medal" | "megaphone" | "meh-o" | "menu" | "microphone" | "mini-partner" | "minus-circle-o" | "minus-circle" | "minus-square-o" | "minus" | "mobile-browser" | "mobile-retro" | "mobile" | "modal-list" | "modal" | "money-deposit" | "money-exchange" | "money-withdraw" | "money" | "moon-o" | "moon" | "morning" | "movie" | "music" | "mute" | "native-button" | "newspaper" | "notebook" | "number-count" | "nurse" | "office" | "open-book" | "option-a" | "option" | "options" | "orientation" | "out" | "outbox" | "package" | "padding-bottom" | "padding-left" | "padding-right" | "padding-top" | "padding" | "paint-roll" | "paintbrush" | "palette" | "panel" | "paperclip" | "paperplane-o" | "paperplane" | "paragraph" | "partner" | "password" | "paste" | "pause" | "pencil" | "phone-landline" | "phone" | "picture" | "pie-bar-chart" | "pie-chart" | "piggy-bank-coin" | "piggy-bank" | "pill" | "pills" | "pin-post" | "pin" | "play-circle-o" | "play-circle" | "play" | "plug" | "plus-circle-o" | "plus-circle" | "plus-minus" | "plus-square-o" | "plus" | "pointer" | "power-off" | "presentation" | "print" | "progressbar" | "puzzle-piece" | "pyramid-chart" | "qrcode" | "question-circle-o" | "question-circle" | "question" | "quote-left" | "quote-right" | "random" | "raster-lower-left" | "raster" | "records" | "recycle" | "refresh" | "reply-all" | "reply" | "resize-h" | "resize-v" | "retweet" | "rhombus" | "road-branch" | "road-branches" | "road-split" | "road" | "rocket" | "rotate-left" | "rotate-right" | "rss-square" | "rss" | "safe-lock" | "safe" | "scale-unbalance" | "scale" | "scatter-chart" | "scissors" | "screwdriver" | "search-minus" | "search-plus" | "search" | "select" | "server" | "share-square" | "share" | "shield" | "shift-arrow" | "shift" | "shop" | "sign-in-alt" | "sign-in" | "sign-out-alt" | "sign-out" | "signal" | "sitemap" | "slider" | "sliders" | "smiley-o" | "sort" | "sound-disable" | "spark-line" | "specialist" | "spinner-arc" | "spinner-third" | "spinner" | "spline-area-chart" | "spline-chart" | "split-h" | "split-v" | "split" | "spoon" | "square-shadow" | "star-half-left-o" | "star-half-left" | "star-half-right-o" | "star-half-right" | "star-o" | "star" | "start-cog" | "step-backward" | "step-forward" | "stethoscope" | "stock" | "stop-cog" | "stop" | "stopwatch" | "storage" | "strikethrough" | "subscript" | "suitcase" | "sun-down" | "sun-o" | "sun-rise" | "superscript" | "sword" | "tab-a" | "tab" | "table" | "tablet" | "tabs" | "tag" | "tags" | "tasks" | "taxi" | "teeth" | "terminal" | "text-height" | "text-input" | "text-label" | "text-width" | "thin-square" | "thumbs-down-o" | "thumbs-down" | "thumbs-up-o" | "thumbs-up" | "ticket" | "time-backward" | "time-forward" | "timer" | "toolbox" | "tools" | "tooth" | "touch" | "train" | "trash" | "tree-table" | "trending-down" | "trending-up" | "trophy" | "truck" | "twin-col-select" | "twitter-square" | "twitter" | "umbrella" | "underline" | "unlink" | "unlock" | "upload-alt" | "upload" | "user-card" | "user-check" | "user-clock" | "user-heart" | "user-star" | "user" | "users" | "vaadin-h" | "vaadin-v" | "viewport" | "vimeo-square" | "vimeo" | "volume-down" | "volume-off" | "volume-up" | "volume" | "wallet" | "warehouse" | "warning" | "workplace" | "wrench" | "youtube-square" | "youtube">;
26
+ /**
27
+ * CSS pixel size for width and height. Accepts a number (`24`) or CSS length
28
+ * (`'1.5rem'`). Defaults to `24`.
29
+ */
30
+ readonly size: i0.InputSignal<string | number>;
31
+ constructor();
32
+ /**
33
+ * Fragment href into the inlined sprite (`#truck`).
34
+ *
35
+ * @returns Hash fragment pointing at the named symbol.
36
+ */
37
+ protected href(): string;
38
+ /**
39
+ * Normalized size attribute value.
40
+ *
41
+ * @returns Size as a string suitable for the SVG `width`/`height` attrs.
42
+ */
43
+ protected resolvedSize(): string;
44
+ static ɵfac: i0.ɵɵFactoryDeclaration<AfricaniesIconComponent, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<AfricaniesIconComponent, "africanies-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
46
+ }
47
+
48
+ /**
49
+ * Generated by `tools/build-icon-sprite.mjs` — do not edit by hand.
50
+ *
51
+ * Closed list of every symbol id in `icons.sprite.svg` so typos fail at
52
+ * compile time, editors autocomplete valid names, and the playground gallery
53
+ * can iterate without maintaining a second list.
54
+ *
55
+ * To add an icon: drop an SVG into `/svg`, then run `npm run icons:build`.
56
+ */
57
+ declare const ICON_NAMES: readonly ["abacus", "absolute-position", "academy-cap", "accessibility", "accordion-menu", "add-dock", "adjust", "adobe-flash", "airplane", "alarm", "align-center", "align-justify", "align-left", "align-right", "alt-a", "alt", "ambulance", "anchor", "angle-double-down", "angle-double-left", "angle-double-right", "angle-double-up", "angle-down", "angle-left", "angle-right", "angle-up", "archive", "archives", "area-select", "arrow-backward", "arrow-circle-down-o", "arrow-circle-down", "arrow-circle-left-o", "arrow-circle-left", "arrow-circle-right-o", "arrow-circle-right", "arrow-circle-up-o", "arrow-circle-up", "arrow-down", "arrow-forward", "arrow-left", "arrow-long-down", "arrow-long-left", "arrow-right", "arrow-up", "arrows-cross", "arrows-long-h", "arrows-long-right", "arrows-long-up", "arrows-long-v", "arrows", "asterisk", "at", "automation", "backspace-a", "backspace", "backwards", "ban", "bar-chart-h", "bar-chart-v", "bar-chart", "barcode", "bed", "bell-o", "bell-slash-o", "bell-slash", "bell", "boat", "bold", "bolt", "bomb", "book-dollar", "book-percent", "book", "bookmark-o", "bookmark", "briefcase", "browser", "bug-o", "bug", "building-o", "building", "bullets", "bullseye", "bus", "button", "calc-book", "calc", "calendar-briefcase", "calendar-clock", "calendar-envelope", "calendar-o", "calendar-user", "calendar", "camera", "car", "caret-down", "caret-left", "caret-right", "caret-square-down-o", "caret-square-left-o", "caret-square-right-o", "caret-square-up-o", "caret-up", "cart-o", "cart", "cash", "chart-3d", "chart-grid", "chart-line", "chart-timeline", "chart", "chat", "check-circle-o", "check-circle", "check-square-o", "check-square", "check", "chevron-circle-down-o", "chevron-circle-down", "chevron-circle-left-o", "chevron-circle-left", "chevron-circle-right-o", "chevron-circle-right", "chevron-circle-up-o", "chevron-circle-up", "chevron-down-small", "chevron-down", "chevron-left-small", "chevron-left", "chevron-right-small", "chevron-right", "chevron-up-small", "chevron-up", "child", "circle-thin", "circle", "clipboard-check", "clipboard-cross", "clipboard-heart", "clipboard-pulse", "clipboard-text", "clipboard-user", "clipboard", "clock", "close-big", "close-circle-o", "close-circle", "close-small", "close", "cloud-download-o", "cloud-download", "cloud-o", "cloud-upload-o", "cloud-upload", "cloud", "cluster", "code", "coffee", "cog-o", "cog", "cogs", "coin-piles", "coins", "combobox", "comment-ellipsis-o", "comment-ellipsis", "comment-o", "comment", "comments-o", "comments", "compile", "compress-square", "compress", "connect-o", "connect", "controller", "copy-o", "copy", "copyright", "corner-lower-left", "corner-lower-right", "corner-upper-left", "corner-upper-right", "credit-card", "crop", "cross-cutlery", "crosshairs", "css", "ctrl-a", "ctrl", "cube", "cubes", "curly-brackets", "cursor-o", "cursor", "cutlery", "dashboard", "database", "date-input", "deindent", "del-a", "del", "dental-chair", "desktop", "diamond-o", "diamond", "diasporan-partner", "diploma-scroll", "diploma", "disc", "doctor-briefcase", "doctor", "dollar", "dot-circle", "download-alt", "download", "drop", "edit", "eject", "elastic", "ellipsis-circle-o", "ellipsis-circle", "ellipsis-dots-h", "ellipsis-dots-v", "ellipsis-h", "ellipsis-v", "enter-arrow", "enter", "envelope-o", "envelope-open-o", "envelope-open", "envelope", "envelopes-o", "envelopes", "eraser", "esc-a", "esc", "euro", "exchange", "exclamation-circle-o", "exclamation-circle", "exclamation", "exit-o", "exit", "expand-full", "expand-square", "expand", "external-browser", "external-link", "eye-slash", "eye", "eyedropper", "facebook-square", "facebook", "factory", "family", "fast-backward", "fast-forward", "female", "file-add", "file-code", "file-font", "file-movie", "file-o", "file-picture", "file-presentation", "file-process", "file-refresh", "file-remove", "file-search", "file-sound", "file-start", "file-table", "file-text-o", "file-text", "file-tree-small", "file-tree-sub", "file-tree", "file-zip", "file", "fill", "film", "filter", "fire", "flag-checkered", "flag-o", "flag", "flash", "flask", "flight-landing", "flight-takeoff", "flip-h", "flip-v", "folder-add", "folder-o", "folder-open-o", "folder-open", "folder-remove", "folder-search", "folder", "font", "form", "forward", "frown-o", "funcion", "funnel", "gamepad", "gavel", "gift", "glass", "glasses", "globe-wire", "globe", "golf", "google-plus-square", "google-plus", "grab", "grid-bevel", "grid-big-o", "grid-big", "grid-h", "grid-small-o", "grid-small", "grid-v", "grid", "group", "hammer", "hand-coins", "hand", "handle-corner", "hands-up", "handshake", "harddrive-o", "harddrive", "hash", "header", "headphones", "headset", "health-card", "heart-o", "heart", "home-o", "home", "hospital", "hourglass-empty", "hourglass-end", "hourglass-start", "hourglass", "inbox", "indent", "info-circle-o", "info-circle", "info", "input", "insert", "institution", "invoice", "italic", "key-o", "key", "keyboard-o", "keyboard", "laptop", "layout", "level-down-bold", "level-down", "level-left-bold", "level-left", "level-right-bold", "level-right", "level-up-bold", "level-up", "lifebuoy", "lightbulb", "line-bar-chart", "line-chart", "line-h", "line-v", "lines-list", "lines", "link", "list-ol", "list-select", "list-ul", "list", "location-arrow-circle-o", "location-arrow-circle", "location-arrow", "lock", "magic", "magnet", "mailbox", "male", "map-marker", "margin-bottom", "margin-left", "margin-right", "margin-top", "margin", "medal", "megaphone", "meh-o", "menu", "microphone", "mini-partner", "minus-circle-o", "minus-circle", "minus-square-o", "minus", "mobile-browser", "mobile-retro", "mobile", "modal-list", "modal", "money-deposit", "money-exchange", "money-withdraw", "money", "moon-o", "moon", "morning", "movie", "music", "mute", "native-button", "newspaper", "notebook", "number-count", "nurse", "office", "open-book", "option-a", "option", "options", "orientation", "out", "outbox", "package", "padding-bottom", "padding-left", "padding-right", "padding-top", "padding", "paint-roll", "paintbrush", "palette", "panel", "paperclip", "paperplane-o", "paperplane", "paragraph", "partner", "password", "paste", "pause", "pencil", "phone-landline", "phone", "picture", "pie-bar-chart", "pie-chart", "piggy-bank-coin", "piggy-bank", "pill", "pills", "pin-post", "pin", "play-circle-o", "play-circle", "play", "plug", "plus-circle-o", "plus-circle", "plus-minus", "plus-square-o", "plus", "pointer", "power-off", "presentation", "print", "progressbar", "puzzle-piece", "pyramid-chart", "qrcode", "question-circle-o", "question-circle", "question", "quote-left", "quote-right", "random", "raster-lower-left", "raster", "records", "recycle", "refresh", "reply-all", "reply", "resize-h", "resize-v", "retweet", "rhombus", "road-branch", "road-branches", "road-split", "road", "rocket", "rotate-left", "rotate-right", "rss-square", "rss", "safe-lock", "safe", "scale-unbalance", "scale", "scatter-chart", "scissors", "screwdriver", "search-minus", "search-plus", "search", "select", "server", "share-square", "share", "shield", "shift-arrow", "shift", "shop", "sign-in-alt", "sign-in", "sign-out-alt", "sign-out", "signal", "sitemap", "slider", "sliders", "smiley-o", "sort", "sound-disable", "spark-line", "specialist", "spinner-arc", "spinner-third", "spinner", "spline-area-chart", "spline-chart", "split-h", "split-v", "split", "spoon", "square-shadow", "star-half-left-o", "star-half-left", "star-half-right-o", "star-half-right", "star-o", "star", "start-cog", "step-backward", "step-forward", "stethoscope", "stock", "stop-cog", "stop", "stopwatch", "storage", "strikethrough", "subscript", "suitcase", "sun-down", "sun-o", "sun-rise", "superscript", "sword", "tab-a", "tab", "table", "tablet", "tabs", "tag", "tags", "tasks", "taxi", "teeth", "terminal", "text-height", "text-input", "text-label", "text-width", "thin-square", "thumbs-down-o", "thumbs-down", "thumbs-up-o", "thumbs-up", "ticket", "time-backward", "time-forward", "timer", "toolbox", "tools", "tooth", "touch", "train", "trash", "tree-table", "trending-down", "trending-up", "trophy", "truck", "twin-col-select", "twitter-square", "twitter", "umbrella", "underline", "unlink", "unlock", "upload-alt", "upload", "user-card", "user-check", "user-clock", "user-heart", "user-star", "user", "users", "vaadin-h", "vaadin-v", "viewport", "vimeo-square", "vimeo", "volume-down", "volume-off", "volume-up", "volume", "wallet", "warehouse", "warning", "workplace", "wrench", "youtube-square", "youtube"];
58
+ /**
59
+ * Union of every icon id in {@link ICON_NAMES}.
60
+ */
61
+ type IconName = (typeof ICON_NAMES)[number];
62
+
63
+ /**
64
+ * URL of the SVG sprite served by the host application.
65
+ *
66
+ * Default assumes the published asset is copied to
67
+ * `/assets/africanies-icons/icons.sprite.svg` (see package README). The leading
68
+ * slash is required: Angular `[src]` / `fetch()` resolve relative URLs
69
+ * against the current route (`/login/assets/…`), not `<base href="/">`.
70
+ * Override when the host uses a CDN or a different assets path.
71
+ */
72
+ declare const AFRICANIES_ICON_SPRITE_URL: InjectionToken<string>;
73
+ /**
74
+ * Fetches and inlines the icon sprite once into `document.body`.
75
+ *
76
+ * WHY inline (not external `<use href="sprite.svg#id">`):
77
+ * - External fragment references break under some CSP / cross-origin setups.
78
+ * - Inlining once lets every `<africanies-icon>` use cheap `#symbol-id` hrefs and
79
+ * keeps a single network request for 600+ icons.
80
+ *
81
+ * Call {@link ensureLoaded} from `AfricaniesIconComponent` (or app bootstrap). Safe
82
+ * to invoke repeatedly — concurrent callers share one in-flight promise.
83
+ */
84
+ declare class IconRegistryService {
85
+ private readonly document;
86
+ private readonly spriteUrl;
87
+ private loadPromise;
88
+ private loaded;
89
+ /**
90
+ * Ensures the sprite `<svg>` is present in the DOM.
91
+ *
92
+ * @returns Resolves when the sprite is inlined (or already present).
93
+ * @throws {Error} When the sprite URL cannot be fetched.
94
+ */
95
+ ensureLoaded(): Promise<void>;
96
+ /**
97
+ * Whether the sprite has been successfully inlined.
98
+ *
99
+ * @returns `true` after a successful {@link ensureLoaded}.
100
+ */
101
+ isLoaded(): boolean;
102
+ private fetchAndInline;
103
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconRegistryService, never>;
104
+ static ɵprov: i0.ɵɵInjectableDeclaration<IconRegistryService>;
105
+ }
106
+
107
+ export { AFRICANIES_ICON_SPRITE_URL, AfricaniesIconComponent, ICON_NAMES, IconRegistryService };
108
+ export type { IconName };
@@ -17,12 +17,12 @@ import { STORAGE_TOKEN, AFRICANIES_THEME_KEY } from '@africanies/africanies-stor
17
17
  * SFN (export / green):
18
18
  * text-export bg-export bg-export-subtle bg-export-light border-export
19
19
  * hover:bg-export-light hover:bg-export-subtle dark:bg-export/15 dark:hover:bg-export/15
20
- * dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]
20
+ * dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)] dark:bg-export dark:text-export dark:border-export
21
21
  *
22
22
  * STN (import / orange):
23
23
  * text-import bg-import bg-import-subtle bg-import-light border-import
24
24
  * hover:bg-import-light hover:bg-import-subtle dark:bg-import/15 dark:hover:bg-import/15
25
- * dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]
25
+ * dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)] dark:bg-import dark:text-import dark:border-import
26
26
  */
27
27
  const MODE_COLOR_SAFELIST = [
28
28
  'text-export',
@@ -35,6 +35,9 @@ const MODE_COLOR_SAFELIST = [
35
35
  'dark:bg-export/15',
36
36
  'dark:hover:bg-export/15',
37
37
  'dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]',
38
+ 'dark:bg-export',
39
+ 'dark:text-export',
40
+ 'dark:border-export',
38
41
  'text-import',
39
42
  'bg-import',
40
43
  'bg-import-subtle',
@@ -45,6 +48,9 @@ const MODE_COLOR_SAFELIST = [
45
48
  'dark:bg-import/15',
46
49
  'dark:hover:bg-import/15',
47
50
  'dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]',
51
+ 'dark:bg-import',
52
+ 'dark:text-import',
53
+ 'dark:border-import',
48
54
  ];
49
55
 
50
56
  /**
@@ -82,6 +88,8 @@ class ModeColorService {
82
88
  soft: 'bg-export-subtle dark:bg-export/15',
83
89
  softSolid: 'bg-export-subtle dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]',
84
90
  softHover: 'hover:bg-export-subtle dark:hover:bg-export/15',
91
+ activeFill: 'bg-export text-white border-transparent dark:bg-export dark:text-white',
92
+ stroked: 'bg-white text-export border-export hover:bg-export-subtle dark:bg-ink-950 dark:text-export dark:border-export dark:hover:bg-export/15',
85
93
  };
86
94
  }
87
95
  return {
@@ -94,6 +102,8 @@ class ModeColorService {
94
102
  soft: 'bg-import-subtle dark:bg-import/15',
95
103
  softSolid: 'bg-import-subtle dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]',
96
104
  softHover: 'hover:bg-import-subtle dark:hover:bg-import/15',
105
+ activeFill: 'bg-import text-white border-transparent dark:bg-import dark:text-white',
106
+ stroked: 'bg-white text-import border-import hover:bg-import-subtle dark:bg-ink-950 dark:text-import dark:border-import dark:hover:bg-import/15',
97
107
  };
98
108
  }, /* @ts-ignore */
99
109
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"africanies-africanies-theme.mjs","sources":["../../../../libs/africanies-theme/src/lib/mode-color.safelist.ts","../../../../libs/africanies-theme/src/lib/mode-color.service.ts","../../../../libs/africanies-theme/src/lib/theme.service.ts","../../../../libs/africanies-theme/src/africanies-africanies-theme.ts"],"sourcesContent":["/**\n * Tailwind safelist side-effect for shipping-mode color utilities.\n *\n * WHY this file exists: JIT/content scanning only keeps class names that appear\n * as *literal strings* in scanned sources. {@link ModeColorService} already\n * returns these literals, but keeping a dedicated comment list makes the\n * contract obvious for consumers who configure `safelist` or purge plugins.\n *\n * Do not rename these strings without updating ModeColorService and THEME.md.\n *\n * SFN (export / green):\n * text-export bg-export bg-export-subtle bg-export-light border-export\n * hover:bg-export-light hover:bg-export-subtle dark:bg-export/15 dark:hover:bg-export/15\n * dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)] dark:bg-export dark:text-export dark:border-export\n *\n * STN (import / orange):\n * text-import bg-import bg-import-subtle bg-import-light border-import\n * hover:bg-import-light hover:bg-import-subtle dark:bg-import/15 dark:hover:bg-import/15\n * dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)] dark:bg-import dark:text-import dark:border-import\n */\nexport const MODE_COLOR_SAFELIST = [\n 'text-export',\n 'bg-export',\n 'bg-export-subtle',\n 'bg-export-light',\n 'border-export',\n 'hover:bg-export-light',\n 'hover:bg-export-subtle',\n 'dark:bg-export/15',\n 'dark:hover:bg-export/15',\n 'dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]',\n 'dark:bg-export',\n 'dark:text-export',\n 'dark:border-export',\n 'text-import',\n 'bg-import',\n 'bg-import-subtle',\n 'bg-import-light',\n 'border-import',\n 'hover:bg-import-light',\n 'hover:bg-import-subtle',\n 'dark:bg-import/15',\n 'dark:hover:bg-import/15',\n 'dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]',\n 'dark:bg-import',\n 'dark:text-import',\n 'dark:border-import',\n] as const;\n","import { computed, inject, Injectable } from '@angular/core';\n\nimport { ShippingModeService } from '@africanies/africanies-core';\n\n/**\n * Tailwind class bundle for the active shipping mode (SFN export / STN import).\n *\n * Use these for **primary** product chrome: CTAs, selected controls, progress,\n * and accent text. Semantic colors (danger / warning) stay mode-independent.\n */\nexport interface ModeColorClasses {\n /** Text color utility, e.g. `text-export`. */\n text: string;\n /** Solid background utility, e.g. `bg-export`. */\n bg: string;\n /** Soft background utility, e.g. `bg-export-subtle`. */\n bgSubtle: string;\n /** Border matching the mode accent, e.g. `border-export`. */\n border: string;\n /**\n * Filled primary CTA — `variant=\"primary\"` on buttons.\n * Includes hover utility as a literal so Tailwind keeps it.\n */\n primary: string;\n /**\n * Transparent / text-only CTA — `variant=\"ghost-primary\"` on buttons.\n * Mode accent text + soft hover fill.\n */\n ghostPrimary: string;\n /**\n * Soft highlight for selected / active rows (works in dark mode).\n * Dark uses a translucent tint — fine over solid surfaces, not for\n * sticky overlays (see {@link softSolid}).\n */\n soft: string;\n /**\n * Opaque soft fill — same tint as {@link soft}, but dark mode mixes into\n * ink so scrolled content cannot show through (sticky table headers/cells).\n */\n softSolid: string;\n /**\n * Soft hover highlight for menus and lists.\n */\n softHover: string;\n /**\n * Active nav leaf / collapsed rail — solid mode fill + white text.\n */\n activeFill: string;\n /**\n * Stroked secondary CTA — white fill, mode border + text (portal `.btn-stroked`).\n */\n stroked: string;\n}\n\n/**\n * Maps {@link ShippingModeService} to mode-accent Tailwind classes.\n *\n * - **SFN** → export green is primary\n * - **STN** → import orange is primary\n *\n * WHY literal class strings: Tailwind's scanner cannot see dynamically built\n * names like `` `text-${token}` ``. Returning full literals (`text-export`, …)\n * keeps utilities in the compiled CSS. See {@link MODE_COLOR_SAFELIST}.\n *\n * @example\n * ```html\n * @let colors = modeColor.classes();\n * <button type=\"button\" [class]=\"colors.primary\">Save</button>\n * <span [class]=\"colors.text\">Mode accent</span>\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ModeColorService {\n private readonly shippingMode = inject(ShippingModeService);\n\n /**\n * Mode-dependent utility classes. Recomputes when shipping mode changes.\n */\n readonly classes = computed<ModeColorClasses>(() => {\n // Literal strings required for Tailwind content detection — do not interpolate.\n if (this.shippingMode.mode() === 'sfn') {\n return {\n text: 'text-export',\n bg: 'bg-export',\n bgSubtle: 'bg-export-subtle',\n border: 'border-export',\n primary:\n 'bg-export text-white border-transparent hover:bg-export-light',\n ghostPrimary:\n 'bg-transparent text-export border-transparent hover:bg-export-subtle dark:hover:bg-export/15',\n soft: 'bg-export-subtle dark:bg-export/15',\n softSolid:\n 'bg-export-subtle dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]',\n softHover: 'hover:bg-export-subtle dark:hover:bg-export/15',\n activeFill:\n 'bg-export text-white border-transparent dark:bg-export dark:text-white',\n stroked:\n 'bg-white text-export border-export hover:bg-export-subtle dark:bg-ink-950 dark:text-export dark:border-export dark:hover:bg-export/15',\n };\n }\n return {\n text: 'text-import',\n bg: 'bg-import',\n bgSubtle: 'bg-import-subtle',\n border: 'border-import',\n primary:\n 'bg-import text-white border-transparent hover:bg-import-light',\n ghostPrimary:\n 'bg-transparent text-import border-transparent hover:bg-import-subtle dark:hover:bg-import/15',\n soft: 'bg-import-subtle dark:bg-import/15',\n softSolid:\n 'bg-import-subtle dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]',\n softHover: 'hover:bg-import-subtle dark:hover:bg-import/15',\n activeFill:\n 'bg-import text-white border-transparent dark:bg-import dark:text-white',\n stroked:\n 'bg-white text-import border-import hover:bg-import-subtle dark:bg-ink-950 dark:text-import dark:border-import dark:hover:bg-import/15',\n };\n });\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, signal } from '@angular/core';\n\nimport { AFRICANIES_THEME_KEY, STORAGE_TOKEN } from '@africanies/africanies-storage';\n\nimport type { Theme } from './theme.types';\n\n/**\n * Application light/dark theme preference.\n *\n * WHY signals (not BehaviorSubject): theme is synchronous UI state read from\n * templates and other services; a signal avoids RxJS subscription boilerplate\n * and matches Angular 22 change detection. Persistence goes through\n * {@link STORAGE_TOKEN} so tests can swap storage without touching `localStorage`.\n *\n * Applies the Tailwind `darkMode: 'class'` contract by toggling `dark` on\n * `document.documentElement`, and sets `color-scheme` so native UI (date\n * pickers, scrollbars, form controls) matches the app theme — class-based\n * dark mode alone does not restyle browser chrome.\n *\n * @example\n * ```ts\n * // app.config.ts\n * import { inject, provideAppInitializer } from '@angular/core';\n * import { ThemeService } from '@africanies/africanies-theme';\n *\n * export const appConfig = {\n * providers: [\n * provideAppInitializer(() => {\n * inject(ThemeService); // applies stored / system theme once\n * }),\n * ],\n * };\n *\n * // In a component\n * const theme = inject(ThemeService);\n * theme.toggle();\n * theme.setTheme('dark');\n * const current = theme.theme(); // 'light' | 'dark'\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private readonly storage = inject(STORAGE_TOKEN);\n private readonly document = inject(DOCUMENT);\n\n /**\n * Current theme. Prefer reading via `theme()` in templates / computed values\n * rather than caching the string, so dark-class consumers stay in sync.\n */\n readonly theme = signal<Theme>(this.resolveInitialTheme());\n\n constructor() {\n this.applyToDocument(this.theme());\n }\n\n /**\n * Sets and persists the theme, updating the `dark` class and `color-scheme`\n * on `<html>`.\n *\n * @param theme - Absolute preference to store.\n */\n setTheme(theme: Theme): void {\n this.theme.set(theme);\n this.applyToDocument(theme);\n try {\n this.storage.set(AFRICANIES_THEME_KEY, theme);\n } catch {\n // Persistence failure must not block the in-session visual toggle —\n // private browsing / quota issues are transient for theme preference.\n }\n }\n\n /**\n * Flips between light and dark.\n *\n * @returns The theme after the toggle.\n */\n toggle(): Theme {\n const next: Theme = this.theme() === 'light' ? 'dark' : 'light';\n this.setTheme(next);\n return next;\n }\n\n private resolveInitialTheme(): Theme {\n try {\n const stored = this.storage.get<Theme>(AFRICANIES_THEME_KEY);\n if (stored === 'light' || stored === 'dark') {\n return stored;\n }\n } catch {\n // Fall through to system preference when storage is unavailable.\n }\n return this.prefersDark() ? 'dark' : 'light';\n }\n\n private prefersDark(): boolean {\n const win = this.document.defaultView;\n return !!win?.matchMedia?.('(prefers-color-scheme: dark)').matches;\n }\n\n private applyToDocument(theme: Theme): void {\n const root = this.document.documentElement;\n if (theme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n // Native date/time pickers follow `color-scheme`, not Tailwind's `dark` class.\n root.style.colorScheme = theme;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;;AAmBG;AACI,MAAM,mBAAmB,GAAG;IACjC,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,wBAAwB;IACxB,mBAAmB;IACnB,yBAAyB;IACzB,kDAAkD;IAClD,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,wBAAwB;IACxB,mBAAmB;IACnB,yBAAyB;IACzB,kDAAkD;IAClD,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;;;ACQtB;;;;;;;;;;;;;;;;AAgBG;MAEU,gBAAgB,CAAA;AACV,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE3D;;AAEG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAmB,MAAK;;QAEjD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE;YACtC,OAAO;AACL,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,EAAE,EAAE,WAAW;AACf,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,OAAO,EACL,+DAA+D;AACjE,gBAAA,YAAY,EACV,8FAA8F;AAChG,gBAAA,IAAI,EAAE,oCAAoC;AAC1C,gBAAA,SAAS,EACP,mEAAmE;AACrE,gBAAA,SAAS,EAAE,gDAAgD;AAC3D,gBAAA,UAAU,EACR,wEAAwE;AAC1E,gBAAA,OAAO,EACL,uIAAuI;aAC1I;QACH;QACA,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,OAAO,EACL,+DAA+D;AACjE,YAAA,YAAY,EACV,8FAA8F;AAChG,YAAA,IAAI,EAAE,oCAAoC;AAC1C,YAAA,SAAS,EACP,mEAAmE;AACrE,YAAA,SAAS,EAAE,gDAAgD;AAC3D,YAAA,UAAU,EACR,wEAAwE;AAC1E,YAAA,OAAO,EACL,uIAAuI;SAC1I;IACH,CAAC;gFAAC;uGA9CS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AChElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;MAEU,YAAY,CAAA;AACN,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C;;;AAGG;AACM,IAAA,KAAK,GAAG,MAAM,CAAQ,IAAI,CAAC,mBAAmB,EAAE;8EAAC;AAE1D,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpC;AAEA;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC;QAC/C;AAAE,QAAA,MAAM;;;QAGR;IACF;AAEA;;;;AAIG;IACH,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAU,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,QAAA,OAAO,IAAI;IACb;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAQ,oBAAoB,CAAC;YAC5D,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE;AAC3C,gBAAA,OAAO,MAAM;YACf;QACF;AAAE,QAAA,MAAM;;QAER;AACA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,GAAG,OAAO;IAC9C;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QACrC,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,8BAA8B,CAAC,CAAC,OAAO;IACpE;AAEQ,IAAA,eAAe,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC1C,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B;;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK;IAChC;uGApEW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACzClC;;AAEG;;;;"}
@@ -92,8 +92,8 @@ function africaniesAutofillPlugin({ addBase }) {
92
92
  const rules = {};
93
93
  for (const selector of autofillSelectors) {
94
94
  rules[selector] = {
95
- WebkitTextFillColor: '#212529',
96
- caretColor: '#212529',
95
+ WebkitTextFillColor: '#1c2b3f',
96
+ caretColor: '#1c2b3f',
97
97
  boxShadow: '0 0 0 1000px #ffffff inset',
98
98
  transition: 'background-color 99999s ease-in-out 0s',
99
99
  };
@@ -194,9 +194,12 @@ module.exports = {
194
194
  black: '#000000',
195
195
  white: '#ffffff',
196
196
  ink: {
197
- DEFAULT: '#212529',
197
+ // Portal `.txt-primary` navy — primary body / heading text (light).
198
+ DEFAULT: '#1c2b3f',
198
199
  blue: '#192a3e',
199
200
  brand: '#1c2b3f',
201
+ // Previous ink DEFAULT — dark elevated cards / panels (`dark:bg-ink-surface`).
202
+ surface: '#212529',
200
203
  950: '#272729',
201
204
  },
202
205
  neutral: {
@@ -205,11 +208,17 @@ module.exports = {
205
208
  600: '#667185',
206
209
  },
207
210
  border: {
208
- // Light chrome on white match form field borders (`neutral-300`).
209
- // Previous `#f0f2f5` was too close to white and washed out.
210
- DEFAULT: '#c9d5e1',
211
+ // Soft hairline on white (portal `$border-bottom-gray`).
212
+ DEFAULT: '#f0f2f5',
213
+ // Nav pins / stronger chrome dividers.
214
+ strong: '#e0e6f0',
211
215
  },
212
216
  background: {
217
+ // Portal page shell (`container-wrap`).
218
+ chrome: '#f6f7f9',
219
+ // Nested wells inside white cards.
220
+ well: '#f3f3f3',
221
+ // Auth / welcome / soft hover.
213
222
  welcome: '#f9fafb',
214
223
  },
215
224
  export: {
@@ -236,7 +245,7 @@ module.exports = {
236
245
  },
237
246
  },
238
247
  fontFamily: {
239
- sans: ['Arial', 'sans-serif'],
248
+ sans: ['Inter', 'system-ui', 'sans-serif'],
240
249
  },
241
250
  fontSize: {
242
251
  // PROVISIONAL — see THEME.md; sizes may tighten after design QA.
@@ -13,14 +13,14 @@ import * as i0 from '@angular/core';
13
13
  * SFN (export / green):
14
14
  * text-export bg-export bg-export-subtle bg-export-light border-export
15
15
  * hover:bg-export-light hover:bg-export-subtle dark:bg-export/15 dark:hover:bg-export/15
16
- * dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]
16
+ * dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)] dark:bg-export dark:text-export dark:border-export
17
17
  *
18
18
  * STN (import / orange):
19
19
  * text-import bg-import bg-import-subtle bg-import-light border-import
20
20
  * hover:bg-import-light hover:bg-import-subtle dark:bg-import/15 dark:hover:bg-import/15
21
- * dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]
21
+ * dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)] dark:bg-import dark:text-import dark:border-import
22
22
  */
23
- declare const MODE_COLOR_SAFELIST: readonly ["text-export", "bg-export", "bg-export-subtle", "bg-export-light", "border-export", "hover:bg-export-light", "hover:bg-export-subtle", "dark:bg-export/15", "dark:hover:bg-export/15", "dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]", "text-import", "bg-import", "bg-import-subtle", "bg-import-light", "border-import", "hover:bg-import-light", "hover:bg-import-subtle", "dark:bg-import/15", "dark:hover:bg-import/15", "dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]"];
23
+ declare const MODE_COLOR_SAFELIST: readonly ["text-export", "bg-export", "bg-export-subtle", "bg-export-light", "border-export", "hover:bg-export-light", "hover:bg-export-subtle", "dark:bg-export/15", "dark:hover:bg-export/15", "dark:bg-[color-mix(in_srgb,#1cbd5d_15%,#212529)]", "dark:bg-export", "dark:text-export", "dark:border-export", "text-import", "bg-import", "bg-import-subtle", "bg-import-light", "border-import", "hover:bg-import-light", "hover:bg-import-subtle", "dark:bg-import/15", "dark:hover:bg-import/15", "dark:bg-[color-mix(in_srgb,#f08829_15%,#212529)]", "dark:bg-import", "dark:text-import", "dark:border-import"];
24
24
 
25
25
  /**
26
26
  * Tailwind class bundle for the active shipping mode (SFN export / STN import).
@@ -62,6 +62,14 @@ interface ModeColorClasses {
62
62
  * Soft hover highlight for menus and lists.
63
63
  */
64
64
  softHover: string;
65
+ /**
66
+ * Active nav leaf / collapsed rail — solid mode fill + white text.
67
+ */
68
+ activeFill: string;
69
+ /**
70
+ * Stroked secondary CTA — white fill, mode border + text (portal `.btn-stroked`).
71
+ */
72
+ stroked: string;
65
73
  }
66
74
  /**
67
75
  * Maps {@link ShippingModeService} to mode-accent Tailwind classes.
@@ -0,0 +1,60 @@
1
+ # @africanies/africanies-models
2
+
3
+ Shared TypeScript **domain models** for the AFRICANIES Web SDK — API envelopes,
4
+ utility payloads (countries, shipment methods), shipping/mode config, filters,
5
+ and async UI snapshots. Types only: no Angular runtime, so apps and tooling can
6
+ import them safely.
7
+
8
+ ## Naming
9
+
10
+ Domain interfaces use a `*Model` suffix (`CountryModel`, `ApiResponseModel`,
11
+ `ModeConfigDataModel`, `FilterStateModel`, …). Literal unions and small helper
12
+ types (e.g. `ShippingMode`, `ResourceId`, `FilterFieldType`) stay without the
13
+ suffix.
14
+
15
+ ## Domains
16
+
17
+ - **api** — `ApiResponseModel`, `PaginationMetaModel`, `PaginationQueryParamsModel`, `ResourceId`, `ApiJsonValue`
18
+ - **country** — `CountryModel`, `CountryStateModel` for public country utility reads
19
+ - **service** — `ServiceModel` for `GET /public/service/read` (App Settings catalog)
20
+ - **document** — `DocumentModel` for `GET /public/document/read` (by-id preview on nested `file_ref`)
21
+ - **plan** — `PlanModel`, `PlanPackageModel` for `GET /public/plan/read`
22
+ - **currency** — `CurrencyModel`, `CurrencyPaymentMethodModel` for `/currency/read`; `CurrencyCreateRequestModel` / `CurrencyUpdateRequestModel` / `CurrencyDeleteRequestModel` for App Settings writes
23
+ - **payment-method** — `PaymentMethodModel`, `PaymentMethodCurrencyModel` for `/payment_method/read`; `PaymentMethodUpdateRequestModel` for App Settings active toggle (`PUT /payment_method/update`). No create/delete models.
24
+ - **shipment-method** — `ShipmentMethodModel`, zone link/page models for carriers
25
+ - **warehouse** — `WarehouseModel`, `WarehouseStateModel` (nested `CountryModel`)
26
+ - **zone** — `ZoneModel` for `/zone/read/records` utility reads
27
+ - **auth** — `ForgotPasswordRequestModel` for email-only `POST /auth/forgot/password`
28
+ - **user** — `UserModel` (+ nested business account / plan / subscription) for bare `GET /user` (auth); `ChangePasswordRequestModel` for first-login `POST /user/change/password`
29
+ - **notification** — `NotificationModel`, `NotificationPayloadModel`, inbox helpers for `GET /user/notifications/read/{id?}`
30
+ - **filters** — `ModuleFilterConfigModel`, `FilterStateModel`, `FilterTransport`, `toFilterParams` / `fromFilterParams` / `hasFilterParams`
31
+ - **mode** — `ModeConfigDataModel`, region/currency/unit config for STN and SFN
32
+ - **shipping** — `ShippingMode` (`'stn' | 'sfn'`)
33
+ - **async** — `AsyncQueryStateModel` for UI async wrappers
34
+
35
+ API wire models use **snake_case** field names to match server payloads. Filter/async
36
+ UI models stay camelCase.
37
+
38
+ ## Usage
39
+
40
+ ```ts
41
+ import type {
42
+ ApiResponseModel,
43
+ CountryModel,
44
+ CurrencyModel,
45
+ DocumentModel,
46
+ ModeConfigDataModel,
47
+ PaymentMethodModel,
48
+ PlanModel,
49
+ ServiceModel,
50
+ ShipmentMethodModel,
51
+ ShippingMode,
52
+ WarehouseModel,
53
+ ZoneModel,
54
+ UserModel,
55
+ } from '@africanies/africanies-models';
56
+ ```
57
+
58
+ ## Tests
59
+
60
+ Run `nx test africanies-models` (type-only library; specs optional).