@santi020k/lumen-core 0.4.0 → 1.1.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/dist/props.d.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  export type LumenClassValue = boolean | null | string | undefined;
2
2
  export type LumenGlass = boolean | 'strong' | 'subtle';
3
- export type LumenSurfaceAlias = 'default' | 'glass';
4
3
  export interface LumenAstroPropsResult {
5
4
  classList: LumenClassValue[];
6
5
  passthrough: Record<string, unknown>;
7
6
  }
8
7
  export declare const resolveLumenAstroProps: (rest: Record<string, unknown>, classList: LumenClassValue[], classProp?: string, className?: string) => LumenAstroPropsResult;
9
- export declare const resolveLumenGlass: (glass?: LumenGlass, surface?: LumenSurfaceAlias) => LumenGlass;
8
+ export declare const resolveLumenGlass: (glass?: LumenGlass) => LumenGlass;
10
9
  //# sourceMappingURL=props.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../src/props.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;AAEjE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAA;AAEnD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,eAAe,EAAE,EAC5B,kBAAc,EACd,kBAAc,KACb,qBAGD,CAAA;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAO,UAAkB,EACzB,UAAS,iBAA6B,KACrC,UAA0C,CAAA"}
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../src/props.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;AAEjE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,eAAe,EAAE,EAC5B,kBAAc,EACd,kBAAc,KACb,qBAGD,CAAA;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAO,UAAkB,KACxB,UAAmB,CAAA"}
package/dist/props.js CHANGED
@@ -2,4 +2,4 @@ export const resolveLumenAstroProps = (rest, classList, classProp = '', classNam
2
2
  classList: [...classList, classProp, className],
3
3
  passthrough: rest
4
4
  });
5
- export const resolveLumenGlass = (glass = false, surface = 'default') => glass || surface === 'glass';
5
+ export const resolveLumenGlass = (glass = false) => glass;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"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"}
package/dist/schedule.js CHANGED
@@ -7,14 +7,14 @@ export const createScheduleSlots = (dates, events, resources = []) => {
7
7
  ...(resource ? { resource } : {})
8
8
  })));
9
9
  };
10
- export const moveScheduleEvent = (events, eventId, nextStart, nextEnd, resourceId) => events.map(event => event.id === eventId
11
- ? {
10
+ export const moveScheduleEvent = (events, eventId, nextStart, nextEnd, resourceId) => events.map(event => event.id === eventId ?
11
+ {
12
12
  ...event,
13
13
  end: nextEnd,
14
14
  ...(resourceId ? { resourceId } : {}),
15
15
  start: nextStart
16
- }
17
- : event);
16
+ } :
17
+ event);
18
18
  export const expandRecurringScheduleEvent = (event, count, intervalDays = 7) => Array.from({ length: count }, (_, index) => {
19
19
  const start = new Date(event.start);
20
20
  const end = new Date(event.end);
@@ -65,9 +65,9 @@ export const resizeScheduleEvent = (event, nextDateTime, options = {}) => {
65
65
  start: new Date(nextStart).toISOString()
66
66
  };
67
67
  };
68
- export const resizeScheduleEvents = (events, eventId, nextDateTime, options = {}) => events.map(event => event.id === eventId
69
- ? resizeScheduleEvent(event, nextDateTime, options)
70
- : event);
68
+ export const resizeScheduleEvents = (events, eventId, nextDateTime, options = {}) => events.map(event => event.id === eventId ?
69
+ resizeScheduleEvent(event, nextDateTime, options) :
70
+ event);
71
71
  const isScheduleEvent = (value) => {
72
72
  if (!value || typeof value !== 'object')
73
73
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"theme-builder.d.ts","sourceRoot":"","sources":["../src/theme-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,6BAA6B,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEtE,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,QAAQ,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,qBAAqB,CAAA;IAC3B,MAAM,EAAE,uBAAuB,CAAA;IAC/B,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,GAAG,IAAI,KACpB,6BAIF,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,GAAG,IAAI,KACpB,qBAC0C,CAAA;AAE7C,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,GAAG,IAAI,KACpB,uBACkC,CAAA;AAErC,eAAO,MAAM,wBAAwB,GACnC,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,iBAAY,KACX,MAMF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAQjE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,KACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAiCnC,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,UAAS,wBAA6B,KACrC,uBAuCF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,EACxB,QAAQ,uBAAuB,KAC9B,MAA8E,CAAA;AAEjF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,gBAAgB,EACxB,QAAQ,uBAAuB,EAC/B,QAAQ,6BAA6B,KACpC,MAaF,CAAA"}
1
+ {"version":3,"file":"theme-builder.d.ts","sourceRoot":"","sources":["../src/theme-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,6BAA6B,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEtE,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,QAAQ,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,qBAAqB,CAAA;IAC3B,MAAM,EAAE,uBAAuB,CAAA;IAC/B,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,GAAG,IAAI,KACpB,6BAIF,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,GAAG,IAAI,KACpB,qBAAsE,CAAA;AAEzE,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,GAAG,IAAI,KACpB,uBAAgE,CAAA;AAEnE,eAAO,MAAM,wBAAwB,GACnC,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,iBAAY,KACX,MAMF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAcjE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,KACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAiCnC,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,UAAS,wBAA6B,KACrC,uBA+CF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,EACxB,QAAQ,uBAAuB,KAC9B,MAOF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,gBAAgB,EACxB,QAAQ,uBAAuB,EAC/B,QAAQ,6BAA6B,KACpC,MAeF,CAAA"}
@@ -6,8 +6,8 @@ export const coerceThemeBuilderExportFormat = (value) => {
6
6
  return value;
7
7
  return 'css';
8
8
  };
9
- export const coerceThemeBuilderMode = (value) => value === 'manual' ? 'manual' : 'generated';
10
- export const coerceThemeBuilderScheme = (value) => value === 'dark' ? 'dark' : 'light';
9
+ export const coerceThemeBuilderMode = (value) => (value === 'manual' ? 'manual' : 'generated');
10
+ export const coerceThemeBuilderScheme = (value) => (value === 'dark' ? 'dark' : 'light');
11
11
  export const normalizeThemeBuilderHue = (value, fallback = 0) => {
12
12
  const parsed = Number(value);
13
13
  if (!Number.isFinite(parsed))
@@ -17,7 +17,12 @@ export const normalizeThemeBuilderHue = (value, fallback = 0) => {
17
17
  export const normalizeThemeBuilderHex = (value) => {
18
18
  const hex = value.trim().replace(/^#/, '');
19
19
  if (/^[\da-f]{3}$/i.test(hex)) {
20
- return `#${hex.charAt(0)}${hex.charAt(0)}${hex.charAt(1)}${hex.charAt(1)}${hex.charAt(2)}${hex.charAt(2)}`.toLowerCase();
20
+ const expanded = [
21
+ hex.charAt(0),
22
+ hex.charAt(1),
23
+ hex.charAt(2)
24
+ ].map(character => character.repeat(2)).join('');
25
+ return `#${expanded}`.toLowerCase();
21
26
  }
22
27
  return /^[\da-f]{6}$/i.test(hex) ? `#${hex.toLowerCase()}` : null;
23
28
  };
@@ -57,10 +62,14 @@ export const createThemeBuilderTokens = (options = {}) => {
57
62
  const accentHue = normalizeThemeBuilderHue(options.accentHue, normalizeThemeBuilderHue(hue + 150));
58
63
  const mode = coerceThemeBuilderMode(options.mode);
59
64
  const scheme = coerceThemeBuilderScheme(options.scheme);
60
- const primary = options.primaryColor ? themeBuilderHexToHsl(options.primaryColor) : null;
61
- const secondary = options.secondaryColor ? themeBuilderHexToHsl(options.secondaryColor) : null;
62
- const baseHue = mode === 'manual' ? primary?.hue ?? hue : hue;
63
- const baseAccentHue = mode === 'manual' ? secondary?.hue ?? accentHue : accentHue;
65
+ const primary = options.primaryColor ?
66
+ themeBuilderHexToHsl(options.primaryColor) :
67
+ null;
68
+ const secondary = options.secondaryColor ?
69
+ themeBuilderHexToHsl(options.secondaryColor) :
70
+ null;
71
+ const baseHue = mode === 'manual' ? (primary?.hue ?? hue) : hue;
72
+ const baseAccentHue = mode === 'manual' ? (secondary?.hue ?? accentHue) : accentHue;
64
73
  const tokens = createThemeFromHue(baseHue, {
65
74
  accentHue: baseAccentHue,
66
75
  scheme
@@ -82,7 +91,13 @@ export const createThemeBuilderTokens = (options = {}) => {
82
91
  tokens
83
92
  };
84
93
  };
85
- export const exportThemeBuilderCss = (tokens, scheme) => exportThemeCss(tokens).replace('{', `{\n color-scheme: ${scheme};`);
94
+ export const exportThemeBuilderCss = (tokens, scheme) => {
95
+ const css = exportThemeCss(tokens);
96
+ const firstLineEnd = css.indexOf('\n');
97
+ if (firstLineEnd === -1)
98
+ return css;
99
+ return `${css.slice(0, firstLineEnd + 1)} color-scheme: ${scheme};\n${css.slice(firstLineEnd + 1)}`;
100
+ };
86
101
  export const exportThemeBuilderValue = (tokens, scheme, format) => {
87
102
  if (format === 'figma') {
88
103
  return JSON.stringify(exportThemeFigmaVariables(tokens, {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
package/dist/theme.js CHANGED
@@ -102,6 +102,21 @@ export const parseThemeCss = (css) => {
102
102
  return tokens;
103
103
  };
104
104
  const normalizeHue = (hue) => ((Math.round(hue) % 360) + 360) % 360;
105
+ const replaceTrailingIntegerPercentage = (value, replacement) => {
106
+ if (!value.endsWith('%'))
107
+ return value;
108
+ let digitStart = value.length - 2;
109
+ while (digitStart >= 0) {
110
+ const character = value[digitStart];
111
+ if (character === undefined || character < '0' || character > '9')
112
+ break;
113
+ digitStart -= 1;
114
+ }
115
+ const percentageStart = digitStart + 1;
116
+ if (percentageStart === value.length - 1)
117
+ return value;
118
+ return `${value.slice(0, percentageStart)}${replacement}%`;
119
+ };
105
120
  const getHueFromToken = (value) => {
106
121
  const hue = Number(value.trim().split(/\s+/)[0]);
107
122
  return Number.isFinite(hue) ? normalizeHue(hue) : 221;
@@ -180,7 +195,7 @@ const createStructureTokens = (hue, scheme = 'light') => ({
180
195
  export const createThemePalette = (brand, accent = brand) => ({
181
196
  accent,
182
197
  brand,
183
- 'brand-soft': brand.replace(/(\d+)%$/, '96%'),
198
+ 'brand-soft': replaceTrailingIntegerPercentage(brand, 96),
184
199
  'brand-solid': brand,
185
200
  canvas: '0 0% 100%',
186
201
  danger: '0 84% 60%',
@@ -282,9 +297,9 @@ const hslToRgb = (value) => {
282
297
  const getRelativeLuminance = ([r, g, b]) => {
283
298
  const [red, green, blue] = [r, g, b].map(channel => {
284
299
  const value = channel / 255;
285
- return value <= 0.03928
286
- ? value / 12.92
287
- : ((value + 0.055) / 1.055) ** 2.4;
300
+ return value <= 0.03928 ?
301
+ value / 12.92 :
302
+ ((value + 0.055) / 1.055) ** 2.4;
288
303
  });
289
304
  return 0.2126 * (red ?? 0) + 0.7152 * (green ?? 0) + 0.0722 * (blue ?? 0);
290
305
  };
@@ -312,9 +327,9 @@ export const suggestReadableInk = (background) => {
312
327
  const lightForeground = '0 0% 100%';
313
328
  const darkRatio = getContrastRatio(darkForeground, background);
314
329
  const lightRatio = getContrastRatio(lightForeground, background);
315
- return darkRatio >= lightRatio
316
- ? { background, foreground: darkForeground, ratio: darkRatio }
317
- : { background, foreground: lightForeground, ratio: lightRatio };
330
+ return darkRatio >= lightRatio ?
331
+ { background, foreground: darkForeground, ratio: darkRatio } :
332
+ { background, foreground: lightForeground, ratio: lightRatio };
318
333
  };
319
334
  export const tuneThemeContrast = (tokens, foreground = 'ink', background = 'canvas') => {
320
335
  const current = scoreThemeContrast(tokens, foreground, background);
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,eAAe,CAAA;AAC/C,eAAO,MAAM,cAAc,SAAS,CAAA;AACpC,eAAO,MAAM,eAAe,UAAU,CAAA;AAEtC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;CAgBd,CAAA;AAEV,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBb,CAAA;AAEV,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAcb,CAAA;AAEV,eAAO,MAAM,WAAW;;;;CAId,CAAA;AAEV,eAAO,MAAM,WAAW;;;;CAId,CAAA;AAEV,eAAO,MAAM,SAAS,EACpB,2DAA8D,CAAA;AAEhE,eAAO,MAAM,WAAW;;;;;;CAMd,CAAA;AAEV,eAAO,MAAM,gBAAgB,GAAI,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,WACjD,CAAA"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,eAAe,CAAA;AAC/C,eAAO,MAAM,cAAc,SAAS,CAAA;AACpC,eAAO,MAAM,eAAe,UAAU,CAAA;AAEtC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;CAgBd,CAAA;AAEV,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBb,CAAA;AAEV,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAcb,CAAA;AAEV,eAAO,MAAM,WAAW;;;;CAId,CAAA;AAEV,eAAO,MAAM,WAAW;;;;CAId,CAAA;AAEV,eAAO,MAAM,SAAS,EACpB,2DAA8D,CAAA;AAEhE,eAAO,MAAM,WAAW;;;;;;CAMd,CAAA;AAEV,eAAO,MAAM,gBAAgB,GAAI,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,WAAsC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@santi020k/lumen-core",
3
- "version": "0.4.0",
3
+ "version": "1.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -94,8 +94,8 @@
94
94
  "typecheck": "tsc -p tsconfig.json --noEmit",
95
95
  "test": "vitest run --config ../../vitest.config.ts --project core",
96
96
  "test:coverage": "vitest run --config ../../vitest.config.ts --project core --coverage",
97
- "lint": "eslint . --no-warn-ignored",
98
- "lint:fix": "eslint . --fix --no-warn-ignored",
97
+ "lint": "eslint . --no-warn-ignored --max-warnings=0",
98
+ "lint:fix": "eslint . --fix --no-warn-ignored --max-warnings=0",
99
99
  "clean": "rm -rf dist coverage"
100
100
  }
101
101
  }