@santi020k/lumen-core 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,35 @@ Cross-platform foundations originate in `tokens/lumen.tokens.json` and are publi
12
12
  numeric spacing, radius, typography, duration, easing, and elevation values. The legacy
13
13
  `lumenColors` export retains CSS-ready HSL values.
14
14
 
15
+ ## Language Helpers
16
+
17
+ The root entry exports the shared locale contract used by the Astro, React, and Elements language
18
+ controls. `normalizeLumenLocales` trims labels and values, removes duplicate or invalid values, and
19
+ falls back to `lumenDefaultLocales`. `getLumenLocalePair` resolves the current locale and the next
20
+ cyclic option, while `formatLumenLanguageLabel` fills the `{current}` and `{next}` placeholders in
21
+ an accessible-label template.
22
+
23
+ ```ts
24
+ import {
25
+ formatLumenLanguageLabel,
26
+ getLumenLocalePair,
27
+ type LumenLocaleOption,
28
+ normalizeLumenLocales
29
+ } from '@santi020k/lumen-core'
30
+
31
+ const locales: readonly LumenLocaleOption[] = normalizeLumenLocales([
32
+ { label: 'English', value: 'en' },
33
+ { label: 'Español', value: 'es' }
34
+ ])
35
+
36
+ const { current, next } = getLumenLocalePair(locales, 'en')
37
+ const label = formatLumenLanguageLabel(
38
+ 'Change language from {current} to {next}',
39
+ current,
40
+ next
41
+ )
42
+ ```
43
+
15
44
  ## Chart Helpers
16
45
 
17
46
  `@santi020k/lumen-core/charts` exports the shared `LumenChartSeries` contract plus deterministic
@@ -383,7 +383,7 @@ export declare const lumenComponentBehavior: {
383
383
  readonly react: "component";
384
384
  };
385
385
  readonly LanguageToggle: {
386
- readonly astro: "none";
386
+ readonly astro: "ui-primitives";
387
387
  readonly elements: "registered-element";
388
388
  readonly react: "component";
389
389
  };
@@ -229,7 +229,7 @@ export const lumenComponentBehavior = {
229
229
  KanbanColumn: { astro: 'none', elements: 'registered-element', react: 'component' },
230
230
  Kbd: { astro: 'none', elements: 'registered-element', react: 'component' },
231
231
  Label: { astro: 'none', elements: 'registered-element', react: 'component' },
232
- LanguageToggle: { astro: 'none', elements: 'registered-element', react: 'component' },
232
+ LanguageToggle: { astro: 'ui-primitives', elements: 'registered-element', react: 'component' },
233
233
  LineChart: { astro: 'none', elements: 'registered-element', react: 'component' },
234
234
  Link: { astro: 'none', elements: 'registered-element', react: 'component' },
235
235
  ListBox: { astro: 'ui-primitives', elements: 'registered-element', react: 'hook' },
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { createFigmaVariableName, exportThemeDesignTokens, exportThemeFigmaVaria
6
6
  export { createLumenFormFailure, createLumenFormSuccess, getLumenFieldErrors, type LumenFieldError, type LumenFormErrorInput, type LumenFormErrors, type LumenFormFailure, type LumenFormResult, type LumenFormStatus, lumenFormStatuses, type LumenFormSuccess, normalizeLumenFormErrors } from './forms.js';
7
7
  export { getLumenIcon, getLumenIconPack, getRegisteredLumenIconNames, type LumenIconData, type LumenIconName, lumenIconNames, type LumenIconNode, type LumenIconPack, lumenIcons, type LumenIconStyle, registerLumenIconPack, renderLumenIconSvg, resolveLumenIconName } from './icons.js';
8
8
  export { createLumenKanbanMoveDetail, getAdjacentKanbanColumn, type LumenKanbanMoveDetail, type LumenKanbanMoveInput } from './kanban.js';
9
+ export { formatLumenLanguageLabel, getLumenLocalePair, lumenDefaultLocales, type LumenLocaleOption, normalizeLumenLocales } from './language.js';
9
10
  export { type LumenAstroPropsResult, type LumenClassValue, type LumenGlass, resolveLumenAstroProps, resolveLumenGlass } from './props.js';
10
11
  export { getLumenRichTextShortcut, isLumenRichTextToggleCommand, type LumenRichTextChangeDetail, type LumenRichTextCommandDetail, type LumenRichTextShortcutEvent, type LumenRichTextToggleCommand, lumenRichTextToggleCommands } from './rich-text.js';
11
12
  export { canPlaceScheduleEvent, createScheduleSlots, createScheduleStorageKey, expandRecurringScheduleEvent, getScheduleConflicts, loadScheduleEvents, type LumenScheduleConflict, type LumenScheduleEvent, type LumenScheduleKeyValueReader, type LumenScheduleKeyValueStorage, type LumenScheduleKeyValueWriter, type LumenScheduleResizeEdge, type LumenScheduleResizeOptions, type LumenScheduleResource, type LumenScheduleSlot, moveScheduleEvent, parseScheduleEvents, resizeScheduleEvent, resizeScheduleEvents, saveScheduleEvents, scheduleEventsOverlap, serializeScheduleEvents } from './schedule.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export { createFigmaVariableName, exportThemeDesignTokens, exportThemeFigmaVaria
6
6
  export { createLumenFormFailure, createLumenFormSuccess, getLumenFieldErrors, lumenFormStatuses, normalizeLumenFormErrors } from './forms.js';
7
7
  export { getLumenIcon, getLumenIconPack, getRegisteredLumenIconNames, lumenIconNames, lumenIcons, registerLumenIconPack, renderLumenIconSvg, resolveLumenIconName } from './icons.js';
8
8
  export { createLumenKanbanMoveDetail, getAdjacentKanbanColumn } from './kanban.js';
9
+ export { formatLumenLanguageLabel, getLumenLocalePair, lumenDefaultLocales, normalizeLumenLocales } from './language.js';
9
10
  export { resolveLumenAstroProps, resolveLumenGlass } from './props.js';
10
11
  export { getLumenRichTextShortcut, isLumenRichTextToggleCommand, lumenRichTextToggleCommands } from './rich-text.js';
11
12
  export { canPlaceScheduleEvent, createScheduleSlots, createScheduleStorageKey, expandRecurringScheduleEvent, getScheduleConflicts, loadScheduleEvents, moveScheduleEvent, parseScheduleEvents, resizeScheduleEvent, resizeScheduleEvents, saveScheduleEvents, scheduleEventsOverlap, serializeScheduleEvents } from './schedule.js';
@@ -0,0 +1,12 @@
1
+ export interface LumenLocaleOption {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ export declare const lumenDefaultLocales: readonly LumenLocaleOption[];
6
+ export declare const normalizeLumenLocales: (locales: readonly LumenLocaleOption[] | undefined) => readonly LumenLocaleOption[];
7
+ export declare const getLumenLocalePair: (locales: readonly LumenLocaleOption[], value: string | undefined) => {
8
+ current: LumenLocaleOption;
9
+ next: LumenLocaleOption;
10
+ };
11
+ export declare const formatLumenLanguageLabel: (template: string, current: LumenLocaleOption, next: LumenLocaleOption) => string;
12
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../src/language.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAID,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAG3D,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,SAAS,SAAS,iBAAiB,EAAE,GAAG,SAAS,KAChD,SAAS,iBAAiB,EAkB5B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,SAAS,SAAS,iBAAiB,EAAE,EACrC,OAAO,MAAM,GAAG,SAAS,KACxB;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAMvD,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,UAAU,MAAM,EAChB,SAAS,iBAAiB,EAC1B,MAAM,iBAAiB,KACtB,MAEgC,CAAA"}
@@ -0,0 +1,29 @@
1
+ const lumenDefaultLocale = { label: 'English', value: 'en' };
2
+ export const lumenDefaultLocales = [
3
+ lumenDefaultLocale,
4
+ { label: 'Español', value: 'es' }
5
+ ];
6
+ export const normalizeLumenLocales = (locales) => {
7
+ if (!locales?.length)
8
+ return lumenDefaultLocales;
9
+ const normalized = [];
10
+ const values = new Set();
11
+ for (const locale of locales) {
12
+ const label = locale.label.trim();
13
+ const value = locale.value.trim();
14
+ if (!label || !value || values.has(value))
15
+ continue;
16
+ normalized.push({ label, value });
17
+ values.add(value);
18
+ }
19
+ return normalized.length > 0 ? normalized : lumenDefaultLocales;
20
+ };
21
+ export const getLumenLocalePair = (locales, value) => {
22
+ const currentIndex = Math.max(0, locales.findIndex(locale => locale.value === value));
23
+ const current = locales[currentIndex] ?? lumenDefaultLocale;
24
+ const next = locales[(currentIndex + 1) % locales.length] ?? current;
25
+ return { current, next };
26
+ };
27
+ export const formatLumenLanguageLabel = (template, current, next) => template
28
+ .replaceAll('{current}', current.label)
29
+ .replaceAll('{next}', next.label);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@santi020k/lumen-core",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },