Skip to content

Shared Components

  • Package: @rkosafo/cai.components (v0.0.x)

Overview

The portal shares one UI kit across all features. It provides the low-level components (buttons, modals, forms, tables, alerts, dropdowns, toasts) as well as the Keycloak auth service and utility helpers. It is a published npm package (node_modules/@rkosafo/cai.components, source type definitions in dist/index.d.ts).

UI primitives

ComponentPurpose
ModalGeneric modal dialog (sizes, outside-close, buttons)
DrawerSlide-in side panel (used for the chat drawer)
Alert / AlertDialogBanners and confirm dialogs
Dropdown, DropdownItem, DropdownDivider, DropdownGroup, DropdownHeaderMenu system
Button, ActionButton, GradientButtonButton variants
Avatar, IndicatorAvatars + online indicators
Tooltip, PopperHover/popover helpers
Table, Datatable, Paginate, TableLoaderTabular data
Tabs, Accordion, Breadcrumb, Box, ToolbarLayout primitives
PageLoader / PageLoader2Loading states
SpeedDial, SpeedDialButton, SpeedDialTriggerFloating action buttons
NotificationList, Heading, Footer*Misc

Forms

Felte-based form suite (used via the portal's feature Forms):

ComponentPurpose
FormFelte form wrapper + key
Input / FormInputText/number inputs
Select / FormSelectDropdowns
Textarea / FormTextarea, Radio / FormRadio, Checkbox / FormCheckboxInputs
Datepicker / FormDatepickerDate pickers
Toggle, ButtonToggleSwitch/segmented controls
Label, FormClEditor (Tiptap), FormFileUploadLabel, rich text, file upload
FilterBuilderDynamic filters

Auth & utilities

  • KeycloakService / createAuthStore() — the OIDC/Keycloak SPA service the portal uses for login, token refresh, and logout (see Auth).
  • Toaster / toast / updateToastConfig — global toasts.
  • getTheme / ThemeProvider, clickOutsideAction, trapFocus, cn, getInitials, saveToLocalStorage / loadFromLocalStorage, createTableHeightStore.

Usage

svelte
<script lang="ts">
  import { Button, Modal, Form, FormInput, Datatable, toast } from '@rkosafo/cai.components';
</script>

Released under the MIT License.