@dset/utils
v1.0.0
Published
DSET platform utilities (Layer: utils) — pure, framework-agnostic formatting, status-mapping, chart and CSV helpers. Zero React, zero UI, zero business logic.
Downloads
62
Readme
@dset/utils
Pure, framework-agnostic platform utilities. Zero React, zero UI, zero business
logic — every export is a deterministic function (the one exception, a CSV
download, is a clearly-marked browser side-effect wrapper around a pure toCsv).
Layer rule: utils may import no other @dset/* package. It is the leaf of
the dependency graph, alongside @dset/tokens.
What's here
| Area | Exports | Source pattern |
| -------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Currency | formatCurrency, formatLakh | i3MS formatters.js |
| Number | formatNumber, formatPercent, formatWeight | i3MS inline WT/% patterns (consolidated) |
| Date | formatDate, formatDateShort, formatDateTime, formatDateRange, normalizeDates | i3MS formatters.js + dates.js |
| Financial year | currentFY, fyToDateRange | i3MS formatters.js (Indian Apr–Mar FY) |
| Status mapping | mapStatus, createStatusMapper | i3MS inline STATUS_LABEL/STATUS_VARIANT (pattern only — domain map injected) |
| Charts | CHART_COLORS, CHART_SERIES, chartColor | i3MS chartColors.js |
| CSV | toCsv, csvCell, downloadRowsAsCsv | i3MS csv.js |
Usage
import { formatCurrency, mapStatus, chartColor } from '@dset/utils';
formatCurrency(1234567); // "₹12,34,567"
formatCurrency(1234567, { lakh: true }); // "₹12.35 L"
const STATUS = { paid: { label: 'Paid', variant: 'success' } };
mapStatus('paid', STATUS).variant; // "success" (feed to @dset/ui <Badge>)
chartColor(0); // "#0ea5e9"Design notes
- Locale is injectable. Formatters default to
en-IN(DSET's first market) but accept alocale/currencyso they generalize to any product. - Status mapping is pattern, not data. The domain status map stays in the product; this package only resolves a value against it with a typed fallback.
- Chart hex lives here, deliberately.
<canvas>cannot read CSS custom properties, so the chart palette ships as literal hex — the source-of-truth that--dset-color-chart-*tokens mirror. Keep them in sync.
Deferred (audited, not yet proven)
formatINR (covered by formatCurrency), per-route status enums (domain-specific,
stay in product), handleCsvDownload (coupled to i3MS extraction service).
