JSPM

@rokkit/core

1.0.0-next.138
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 526
  • Score
    100M100P100Q100652F
  • License MIT

Contains core utility functions and classes that can be used in various components.

Package Exports

  • @rokkit/core
  • @rokkit/core/package.json
  • @rokkit/core/src
  • @rokkit/core/vite

Readme

@rokkit/core

Core utilities for the Rokkit design system — field mapping, constants, calendar, color palette, and event utilities.

Install

npm install @rokkit/core
# or
bun add @rokkit/core

Overview

@rokkit/core is the foundation layer shared across all Rokkit packages. It provides:

  • Field mapping — map arbitrary data object shapes to semantic field names
  • ConstantsBASE_FIELDS, DEFAULT_STATE_ICONS, DEFAULT_KEYMAP, and more
  • Color palette — default colors, shades, and theme color mapping
  • Calendar utilities — calendar day generation and weekday labels
  • Event utilities — lightweight emitter factory
  • Direction detection — RTL/LTR helpers
  • Tick generation — axis tick utilities for chart packages

No runtime dependencies on other @rokkit/* packages.

Usage

Field mapping

FieldMapper maps semantic field names (label, value, icon, etc.) to the actual keys present in your data objects. Pass a fields override to adapt any data shape.

import { FieldMapper } from '@rokkit/core'

const mapper = new FieldMapper({ label: 'name', value: 'id', icon: 'iconClass' })

const item = { id: 42, name: 'Settings', iconClass: 'i-settings' }

mapper.get('label', item) // 'Settings'
mapper.get('value', item) // 42
mapper.get('icon', item) // 'i-settings'

normalizeFields

Merge user-supplied field overrides with BASE_FIELDS defaults, remapping any legacy key names automatically.

import { normalizeFields, BASE_FIELDS } from '@rokkit/core'

const fields = normalizeFields({ label: 'title', value: 'slug' })
// { label: 'title', value: 'slug', icon: 'icon', children: 'children', ... }

BASE_FIELDS reference

import { BASE_FIELDS } from '@rokkit/core'

// {
//   id: 'id',         value: 'value',       label: 'label',
//   icon: 'icon',     avatar: 'image',       subtext: 'description',
//   tooltip: 'title', badge: 'badge',        shortcut: 'shortcut',
//   children: 'children',  type: 'type',    snippet: 'snippet',
//   href: 'href',     hrefTarget: 'target',
//   disabled: 'disabled',  expanded: 'expanded', selected: 'selected'
// }

Event emitter

import { createEmitter } from '@rokkit/core'

const emitter = createEmitter()
emitter.on('select', (item) => console.log('selected', item))
emitter.emit('select', myItem)

Calendar utilities

import { getCalendarDays, weekdays } from '@rokkit/core'

const days = getCalendarDays(2025, 2) // February 2025
// weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

Tick generation

import { generateTicks } from '@rokkit/core'

const ticks = generateTicks(0, 100, 5)
// [0, 25, 50, 75, 100]

API

Export Description
BASE_FIELDS Canonical semantic-to-data-key field mapping
normalizeFields(fields) Merge overrides with BASE_FIELDS defaults
FieldMapper Class that resolves semantic field reads from data objects
DEFAULT_STATE_ICONS Icon name map grouped by category (action, state, sort, etc.)
DEFAULT_KEYMAP Default keyboard navigation key mapping
DEFAULT_THEME_MAPPING Default semantic color → palette color mapping
createEmitter() Lightweight event emitter factory
getCalendarDays(year, month) Calendar day array for a given month
weekdays Localized weekday label array
generateTicks(min, max, count) Evenly spaced axis tick values
defaultColors Default color palette array
shades Available shade scale values
ITEM_SNIPPET Constant: default item snippet key ('itemContent')
GROUP_SNIPPET Constant: default group snippet key ('groupContent')
stateIconsFromNames(names) Build a state icon map from an array of icon name strings

Part of Rokkit — a Svelte 5 component library and design system.