/** * Public API of `oxide-icons`. See ADR-0016, amended by ADR-0019. * * Importing this module, as a side effect: * 1. configures `OxIconElement`'s four static dependencies * (`manifest`, `registry`, `renderer`, `isolationPolicy`) against * the generated catalog in `./generated/` (see ADR-0019, * `scripts/generate-catalog.mjs`); * 2. THEN registers the `` custom element — deliberately * last, see the comment above that call below. * * `` is therefore usable immediately after * `npm install oxide-icons`, with no manual wiring, no bundler-specific * glob, and no separate Vite plugin required for the default, * zero-config path. `oxide-icons/vite`'s `createIconSource` remains * available for consumers who want their own icon source instead of * the packaged catalog (e.g. a private in-app icon set) — nothing here * depends on it, and nothing there depends on this. * * It is safe to import this module more than once (module-level code * only runs once, on the first import), and safe to import alongside * code that has already called `customElements.define('ox-icon', ...)` * itself. Advanced consumers can still override any of the four * statics after import, e.g. to swap in their own `IconCatalog` or * `IconLoader` (see ADR-0012); this module only supplies the defaults. * * The named exports below are the same building blocks * `examples/basic/main.ts` used to assemble by hand. Most consumers * only need the side effect above; these remain for consumers * assembling their own strategy, or testing against fakes. */ export { OxIconElement } from './web-component/OxIconElement'; export { Registry } from './core/registry/Registry'; export { MemoryIconCatalog } from './core/catalog/MemoryIconCatalog'; export { IsolationPolicy } from './core/context/IsolationPolicy'; export { SvgIconRenderer } from './core/renderer/SvgIconRenderer'; export type { FamilyId, IconId, IconData, Manifest, ManifestBuilder, IsolationMode, IconContext, ContextResolution, ContextResolver, IconCatalog, IconLoader, IconRegistry, RenderOptions, Renderer, } from './core/domain'; export { toIconId } from './core/domain';