@ambita/infoland-component-library

Component library with models, views, and API services, for Vue and Riot.js (with Vue wrappers)
9,303
Install
npm install @ambita/infoland-component-library
Latest Version:1.3.11
Vue:3
License:ISC
Last Updated:Aug 20, 2026
Links: npm
Maintainer: ambitadrift

Infoland Component Library

Vue 3 component library with Riot.js wrappers (Vue-mounted).

πŸ“¦ This library replaces infoland-flex-search

If you're migrating from infoland-flex-search, see the Migration Guide.

🎯 Quick Start

Vue 3

npm install @ambita/infoland-component-library
// main.ts
import { initLibraryConfig } from '@ambita/infoland-component-library/vue'
import '@ambita/infoland-component-library/vue/style.css'

initLibraryConfig({
  environment: import.meta.env.VITE_INFOLAND_ENV
})
<script setup lang="ts">
import { SearchComponent } from '@ambita/infoland-component-library/vue'
</script>

<template>
  <SearchComponent />
</template>

Riot.js (recommended lifecycle helper)

import { initLibraryConfig, useOfsInRiot } from '@ambita/infoland-component-library/riot'
import '@ambita/infoland-component-library/riot/style.css'

initLibraryConfig({
  environment: 'beta'
})

this.on('before-mount', () => {
  this.ofs = useOfsInRiot(this, {
    ref: 'container',
    getProps: () => ({ autofocus: true }),
    onSearchResult: (result) => console.log('OFS result', result),
  })
})

For lower-level/manual lifecycle control, createOfsWrapper and createVueWrapper are still available.

πŸ“š Documentation

πŸ› οΈ Development

Available Scripts

npm run dev              # Storybook at http://localhost:6006
npm run build            # Production build (Vue + Riot)
npm run build:vue        # Build Vue only
npm run build:riot       # Build Riot bundle only
npm run build:watch      # Watch mode (Vue + Riot)
npm test                 # Run tests
npm run type-check       # TypeScript check

🎨 Features

  • βœ… Vue 3 components with full TypeScript support
  • βœ… Riot.js wrappers for Vue components
  • βœ… Design System Styling via DS tokens and components
  • βœ… Shared Services for API access
  • βœ… Tested with Vitest

πŸ“¦ What's Included

Components

  • SearchComponent - Multi-step search interface
  • SearchInput - Search input field
  • MapComponent - Map display component

Services

  • userService
  • apiService

Utilities

  • Riot.js event helpers (on, onMany, withData, debounce, throttle)
  • Vue composables (useApi, useConfig)
  • TypeScript types

🧱 Project Structure

src/
β”œβ”€β”€ components/          # Vue 3 components
β”œβ”€β”€ composables/         # Vue composables
β”œβ”€β”€ styles/              # Design system styles and tokens
β”‚   └── components/
β”œβ”€β”€ services/            # API and domain services
β”œβ”€β”€ models/              # Shared models and types
β”œβ”€β”€ config/              # Library configuration
β”œβ”€β”€ utils/               # Shared utilities
└── riot/                # Riot.js wrappers/helpers

πŸ”§ Configuration

Vue and Riot wrappers share the same configuration API:

import { initLibraryConfig } from '@ambita/infoland-component-library/vue'
// or
import { initLibraryConfig } from '@ambita/infoland-component-library/riot'

initLibraryConfig({
  environment: 'beta',
  apiTimeout: 30000,
  enableLogging: true
})

πŸ“¦ Package Exports

{
  "@ambita/infoland-component-library": "Vue components (default)",
  "@ambita/infoland-component-library/vue": "Vue 3 components",
  "@ambita/infoland-component-library/riot": "Riot.js wrappers",
  "@ambita/infoland-component-library/vue/style.css": "Vue styles",
  "@ambita/infoland-component-library/riot/style.css": "Riot styles"
}

πŸš€ Release workflow

Releases are fully automated via semantic-release.

How it works

  1. Merge a PR into main.
  2. The Release & Publish GitHub Actions workflow runs automatically.
  3. semantic-release reads all commits since the last tag and decides the next version:
Commit prefix Version bump
fix: ... patch (1.0.0 β†’ 1.0.1)
feat: ... minor (1.0.0 β†’ 1.1.0)
BREAKING CHANGE: in footer major (1.0.0 β†’ 2.0.0)
chore:, docs:, refactor:, test: no release
  1. If there is something to release: package.json is bumped, docs/changelog.md is updated, the package is published to npm, and a GitHub Release is created.
  2. A Slack message is sent to #infoland-deployment with the version and a list of what changed.

Sending to the #releases channel

Go to GitHub Actions β†’ Release & Publish β†’ Run workflow, tick "Send notification to the #releases channel", and run. This is intended for significant releases you want to announce broadly. Everyday releases only notify #infoland-deployment.

πŸ“ License

MIT .

Related Packages

@yymojo-tec/mojo-ui

Mojo UI 是 YYmojo ζ——δΈ‹η»΄ζŠ€ηš„ UI 组仢库。

9,973
@appsbd/vue3-appsbd-ui

Reusable Vue 3 component library

4,949
@wyxos/vibe

An initializable Vue 3 media feed with virtualized masonry and reel layouts.

29,315 2
@mindvalley/eve-ai-ui

Eve AI - Component Library

14,409
elicitacao-ui-kit

UI Kit de componentes Vue 3 acessΓ­veis e reutilizΓ‘veis para projetos de eLicitaΓ§...

4,494

Version History

Version Released Vue License
1.3.11 ^3.5.32 ISC
1.3.9 ^3.5.32 ISC
1.3.8 ^3.5.32 ISC
1.3.7 ^3.5.32 ISC
1.3.6 ^3.5.32 ISC
Pre-releases (11)
Version Released Vue License
1.3.7-beta.3 ^3.5.32 ISC
1.3.7-beta.1 ^3.5.32 ISC
1.3.4-beta.8 ^3.5.32 ISC
1.3.4-beta.7 ^3.5.32 ISC
1.3.4-beta.6 ^3.5.32 ISC