@oxyhq/bloom 0.30.2 → 0.30.4
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/lib/commonjs/activity-heatmap/ActivityHeatmap.js +15 -38
- package/lib/commonjs/activity-heatmap/ActivityHeatmap.js.map +1 -1
- package/lib/commonjs/theme/color-utils.js +65 -0
- package/lib/commonjs/theme/color-utils.js.map +1 -0
- package/lib/commonjs/theme/index.js +13 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/module/activity-heatmap/ActivityHeatmap.js +14 -37
- package/lib/module/activity-heatmap/ActivityHeatmap.js.map +1 -1
- package/lib/module/theme/color-utils.js +60 -0
- package/lib/module/theme/color-utils.js.map +1 -0
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/typescript/commonjs/activity-heatmap/ActivityHeatmap.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-utils.d.ts +28 -0
- package/lib/typescript/commonjs/theme/color-utils.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/index.d.ts +2 -0
- package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
- package/lib/typescript/module/activity-heatmap/ActivityHeatmap.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-utils.d.ts +28 -0
- package/lib/typescript/module/theme/color-utils.d.ts.map +1 -0
- package/lib/typescript/module/theme/index.d.ts +2 -0
- package/lib/typescript/module/theme/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/activity-heatmap/ActivityHeatmap.tsx +11 -31
- package/src/theme/__tests__/color-utils.test.ts +40 -0
- package/src/theme/color-utils.ts +54 -0
- package/src/theme/index.ts +2 -0
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.ActivityHeatmap = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
+
var _colorUtils = require("../theme/color-utils.js");
|
|
9
10
|
var _useTheme = require("../theme/use-theme.js");
|
|
10
11
|
var _index = require("../typography/index.js");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -49,42 +50,6 @@ function levelForCount(count, levels) {
|
|
|
49
50
|
}
|
|
50
51
|
return level;
|
|
51
52
|
}
|
|
52
|
-
function parseRgb(color) {
|
|
53
|
-
const trimmed = color.trim();
|
|
54
|
-
if (trimmed.startsWith('#')) {
|
|
55
|
-
let hex = trimmed.slice(1);
|
|
56
|
-
if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');
|
|
57
|
-
if (hex.length !== 6) return null;
|
|
58
|
-
const r = parseInt(hex.slice(0, 2), 16);
|
|
59
|
-
const g = parseInt(hex.slice(2, 4), 16);
|
|
60
|
-
const b = parseInt(hex.slice(4, 6), 16);
|
|
61
|
-
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
62
|
-
return {
|
|
63
|
-
r,
|
|
64
|
-
g,
|
|
65
|
-
b
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
69
|
-
if (!match || match[1] === undefined) return null;
|
|
70
|
-
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
71
|
-
if (parts.length < 3) return null;
|
|
72
|
-
const [r, g, b] = parts;
|
|
73
|
-
if (r === undefined || g === undefined || b === undefined) return null;
|
|
74
|
-
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
75
|
-
return {
|
|
76
|
-
r,
|
|
77
|
-
g,
|
|
78
|
-
b
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
83
|
-
function withAlpha(color, alpha) {
|
|
84
|
-
const rgb = parseRgb(color);
|
|
85
|
-
if (!rgb) return color;
|
|
86
|
-
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
87
|
-
}
|
|
88
53
|
/**
|
|
89
54
|
* A GitHub-style contribution graph: columns of weeks × 7 weekday rows of
|
|
90
55
|
* rounded square cells, each colored by its day's activity level. Pure `<View>`
|
|
@@ -113,7 +78,7 @@ const ActivityHeatmapComponent = ({
|
|
|
113
78
|
colors
|
|
114
79
|
} = (0, _useTheme.useTheme)();
|
|
115
80
|
const empty = emptyColor ?? colors.backgroundSecondary;
|
|
116
|
-
const scale = (0, _react.useMemo)(() => colorScale ?? DEFAULT_ALPHAS.map(alpha => withAlpha(colors.primary, alpha)), [colorScale, colors.primary]);
|
|
81
|
+
const scale = (0, _react.useMemo)(() => colorScale ?? DEFAULT_ALPHAS.map(alpha => (0, _colorUtils.withAlpha)(colors.primary, alpha)), [colorScale, colors.primary]);
|
|
117
82
|
const sortedLevels = (0, _react.useMemo)(() => [...levels].sort((a, b) => a - b), [levels]);
|
|
118
83
|
const months = monthLabels ?? DEFAULT_MONTHS;
|
|
119
84
|
const grid = (0, _react.useMemo)(() => {
|
|
@@ -192,11 +157,23 @@ const ActivityHeatmapComponent = ({
|
|
|
192
157
|
const weekdayColWidth = hasWeekdayCol ? WEEKDAY_COL_WIDTH : 0;
|
|
193
158
|
const monthRowMarginLeft = hasWeekdayCol ? weekdayColWidth + gap : 0;
|
|
194
159
|
const cellRadius = Math.max(2, Math.round(cellSize * 0.25));
|
|
160
|
+
|
|
161
|
+
// The heatmap is a FIXED-width component: its footprint is exactly the grid's
|
|
162
|
+
// natural size, so it never stretches to fill a wide parent nor squishes in a
|
|
163
|
+
// narrow one (the cells keep `cellSize`). Overflow is the consumer's call —
|
|
164
|
+
// wrap it in a horizontal ScrollView when the viewport is narrower than this.
|
|
165
|
+
const columnCount = columns.length;
|
|
166
|
+
const gridWidth = columnCount * cellSize + Math.max(0, columnCount - 1) * gap;
|
|
167
|
+
const totalWidth = monthRowMarginLeft + gridWidth;
|
|
195
168
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
196
|
-
style:
|
|
169
|
+
style: [{
|
|
170
|
+
width: totalWidth,
|
|
171
|
+
alignSelf: 'flex-start'
|
|
172
|
+
}, style],
|
|
197
173
|
testID: testID,
|
|
198
174
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
199
175
|
style: [styles.monthRow, {
|
|
176
|
+
width: gridWidth,
|
|
200
177
|
marginLeft: monthRowMarginLeft
|
|
201
178
|
}],
|
|
202
179
|
children: monthMarks.map((mark, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DAY_MS","DEFAULT_NUM_DAYS","DEFAULT_LEVELS","DEFAULT_MONTHS","DEFAULT_ALPHAS","LABEL_FONT_SIZE","MONTH_ROW_HEIGHT","WEEKDAY_COL_WIDTH","DATE_KEY_RE","parseDateKey","key","match","exec","year","Number","month","day","ts","Date","UTC","isNaN","parsed","parse","formatUtcKey","d","getUTCFullYear","String","getUTCMonth","padStart","getUTCDate","levelForCount","count","levels","level","threshold","parseRgb","color","trimmed","trim","startsWith","hex","slice","length","split","map","c","join","parseInt","g","b","some","v","undefined","parts","filter","Boolean","withAlpha","alpha","rgb","ActivityHeatmapComponent","data","numDays","endDate","colorScale","emptyColor","cellSize","gap","weekStartsOn","monthLabels","weekdayLabels","onPressDay","style","testID","colors","useTheme","empty","backgroundSecondary","scale","useMemo","primary","sortedLevels","sort","a","months","grid","countByKey","Map","latest","entry","date","providedEnd","endTs","days","Math","max","floor","rawStart","back","getUTCDay","gridStart","columnCount","ceil","maxColor","columns","column","push","min","monthMarks","lastMonth","firstTs","x","label","jsx","View","hasWeekdayCol","Array","isArray","weekdayColWidth","monthRowMarginLeft","cellRadius","round","jsxs","children","styles","monthRow","marginLeft","mark","Text","numberOfLines","left","textTertiary","body","width","marginRight","from","_","dow","height","marginBottom","justifyContent","weekdayLabel","cell","cellStyle","borderRadius","Pressable","onPress","accessibilityRole","accessibilityLabel","backgroundColor","StyleSheet","create","position","top","fontSize","flexDirection","borderCurve","ActivityHeatmap","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["activity-heatmap/ActivityHeatmap.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colorUtils","_useTheme","_index","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DAY_MS","DEFAULT_NUM_DAYS","DEFAULT_LEVELS","DEFAULT_MONTHS","DEFAULT_ALPHAS","LABEL_FONT_SIZE","MONTH_ROW_HEIGHT","WEEKDAY_COL_WIDTH","DATE_KEY_RE","parseDateKey","key","match","exec","year","Number","month","day","ts","Date","UTC","isNaN","parsed","parse","formatUtcKey","d","getUTCFullYear","String","getUTCMonth","padStart","getUTCDate","levelForCount","count","levels","level","threshold","ActivityHeatmapComponent","data","numDays","endDate","colorScale","emptyColor","cellSize","gap","weekStartsOn","monthLabels","weekdayLabels","onPressDay","style","testID","colors","useTheme","empty","backgroundSecondary","scale","useMemo","map","alpha","withAlpha","primary","sortedLevels","sort","a","b","months","grid","countByKey","Map","latest","entry","date","providedEnd","endTs","days","Math","max","floor","rawStart","back","getUTCDay","gridStart","columnCount","ceil","maxColor","length","columns","c","column","push","min","color","monthMarks","lastMonth","firstTs","x","label","jsx","View","hasWeekdayCol","Array","isArray","weekdayColWidth","monthRowMarginLeft","cellRadius","round","gridWidth","totalWidth","jsxs","width","alignSelf","children","styles","monthRow","marginLeft","mark","Text","numberOfLines","left","textTertiary","body","marginRight","from","_","dow","height","marginBottom","justifyContent","weekdayLabel","cell","cellStyle","borderRadius","Pressable","onPress","accessibilityRole","accessibilityLabel","backgroundColor","StyleSheet","create","position","top","fontSize","flexDirection","borderCurve","ActivityHeatmap","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["activity-heatmap/ActivityHeatmap.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseRgb = parseRgb;
|
|
7
|
+
exports.withAlpha = withAlpha;
|
|
8
|
+
/**
|
|
9
|
+
* Graceful color-utility primitives for consumer-facing composition.
|
|
10
|
+
*
|
|
11
|
+
* Unlike `parseRgbString` in `./color-space` (which THROWS on non-rgb input —
|
|
12
|
+
* it is a canonical-pipeline primitive where a bad value signals a real bug),
|
|
13
|
+
* these helpers fall back gracefully: they return `null` / the untouched input
|
|
14
|
+
* when a color string can't be parsed. That makes them safe to point at
|
|
15
|
+
* arbitrary consumer color values (theme tokens, user-supplied colors) — e.g.
|
|
16
|
+
* building `[bg, withAlpha(bg, 0)]` gradient stops for a scroll fade, where the
|
|
17
|
+
* `transparent` keyword would incorrectly fade through black.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/** RGB channels, each 0..255. */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Parse a color string into its RGB channels, or `null` if it can't be parsed.
|
|
24
|
+
*
|
|
25
|
+
* Accepts Bloom's canonical space-separated `rgb(r g b)` output, legacy
|
|
26
|
+
* comma-separated `rgb(r, g, b)` / `rgba(...)`, and `#rgb` / `#rrggbb` hex.
|
|
27
|
+
* Anything else yields `null` so callers can fall back to the original value.
|
|
28
|
+
*/
|
|
29
|
+
function parseRgb(color) {
|
|
30
|
+
const trimmed = color.trim();
|
|
31
|
+
if (trimmed.startsWith('#')) {
|
|
32
|
+
let hex = trimmed.slice(1);
|
|
33
|
+
if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');
|
|
34
|
+
if (hex.length !== 6) return null;
|
|
35
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
36
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
37
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
38
|
+
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
39
|
+
return {
|
|
40
|
+
r,
|
|
41
|
+
g,
|
|
42
|
+
b
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
46
|
+
if (!match || match[1] === undefined) return null;
|
|
47
|
+
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
48
|
+
if (parts.length < 3) return null;
|
|
49
|
+
const [r, g, b] = parts;
|
|
50
|
+
if (r === undefined || g === undefined || b === undefined) return null;
|
|
51
|
+
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
52
|
+
return {
|
|
53
|
+
r,
|
|
54
|
+
g,
|
|
55
|
+
b
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
60
|
+
function withAlpha(color, alpha) {
|
|
61
|
+
const rgb = parseRgb(color);
|
|
62
|
+
if (!rgb) return color;
|
|
63
|
+
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=color-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseRgb","color","trimmed","trim","startsWith","hex","slice","length","split","map","c","join","r","parseInt","g","b","some","v","Number","isNaN","match","exec","undefined","parts","filter","Boolean","withAlpha","alpha","rgb"],"sourceRoot":"../../../src","sources":["theme/color-utils.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,QAAQA,CAACC,KAAa,EAAsB;EAC1D,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAC5B,IAAID,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;IAC3B,IAAIC,GAAG,GAAGH,OAAO,CAACI,KAAK,CAAC,CAAC,CAAC;IAC1B,IAAID,GAAG,CAACE,MAAM,KAAK,CAAC,EAAEF,GAAG,GAAGA,GAAG,CAACG,KAAK,CAAC,EAAE,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAGA,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;IACpE,IAAIN,GAAG,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IACjC,MAAMK,CAAC,GAAGC,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,MAAMQ,CAAC,GAAGD,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,MAAMS,CAAC,GAAGF,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,IAAI,CAACM,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,CAACC,IAAI,CAAEC,CAAC,IAAKC,MAAM,CAACC,KAAK,CAACF,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;IACvD,OAAO;MAAEL,CAAC;MAAEE,CAAC;MAAEC;IAAE,CAAC;EACpB;EACA,MAAMK,KAAK,GAAG,mBAAmB,CAACC,IAAI,CAACnB,OAAO,CAAC;EAC/C,IAAI,CAACkB,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAKE,SAAS,EAAE,OAAO,IAAI;EACjD,MAAMC,KAAK,GAAGH,KAAK,CAAC,CAAC,CAAC,CAACZ,KAAK,CAAC,SAAS,CAAC,CAACgB,MAAM,CAACC,OAAO,CAAC,CAAChB,GAAG,CAACS,MAAM,CAAC;EACnE,IAAIK,KAAK,CAAChB,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;EACjC,MAAM,CAACK,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,GAAGQ,KAAK;EACvB,IAAIX,CAAC,KAAKU,SAAS,IAAIR,CAAC,KAAKQ,SAAS,IAAIP,CAAC,KAAKO,SAAS,EAAE,OAAO,IAAI;EACtE,IAAI,CAACV,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,CAACC,IAAI,CAAEC,CAAC,IAAKC,MAAM,CAACC,KAAK,CAACF,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;EACvD,OAAO;IAAEL,CAAC;IAAEE,CAAC;IAAEC;EAAE,CAAC;AACpB;;AAEA;AACO,SAASW,SAASA,CAACzB,KAAa,EAAE0B,KAAa,EAAU;EAC9D,MAAMC,GAAG,GAAG5B,QAAQ,CAACC,KAAK,CAAC;EAC3B,IAAI,CAAC2B,GAAG,EAAE,OAAO3B,KAAK;EACtB,OAAO,QAAQ2B,GAAG,CAAChB,CAAC,KAAKgB,GAAG,CAACd,CAAC,KAAKc,GAAG,CAACb,CAAC,KAAKY,KAAK,GAAG;AACvD","ignoreList":[]}
|
|
@@ -87,6 +87,12 @@ Object.defineProperty(exports, "initCssInteropDarkMode", {
|
|
|
87
87
|
return _initCssInterop.initCssInteropDarkMode;
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
|
+
Object.defineProperty(exports, "parseRgb", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return _colorUtils.parseRgb;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
90
96
|
Object.defineProperty(exports, "setColorSchemeSafe", {
|
|
91
97
|
enumerable: true,
|
|
92
98
|
get: function () {
|
|
@@ -129,6 +135,12 @@ Object.defineProperty(exports, "webLocalStorage", {
|
|
|
129
135
|
return _persistence.webLocalStorage;
|
|
130
136
|
}
|
|
131
137
|
});
|
|
138
|
+
Object.defineProperty(exports, "withAlpha", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function () {
|
|
141
|
+
return _colorUtils.withAlpha;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
132
144
|
var _BloomThemeProvider = require("./BloomThemeProvider.js");
|
|
133
145
|
var _colorScope = require("./color-scope");
|
|
134
146
|
var _buildTheme = require("./build-theme.js");
|
|
@@ -136,6 +148,7 @@ var _gradients = require("./gradients.js");
|
|
|
136
148
|
var _useTheme = require("./use-theme.js");
|
|
137
149
|
var _useNavigationTheme = require("./use-navigation-theme.js");
|
|
138
150
|
var _colorPresets = require("./color-presets.js");
|
|
151
|
+
var _colorUtils = require("./color-utils.js");
|
|
139
152
|
var _presetVars = require("./preset-vars.js");
|
|
140
153
|
var _applyDarkClass = require("./apply-dark-class.js");
|
|
141
154
|
var _setColorSchemeSafe = require("./set-color-scheme-safe.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_BloomThemeProvider","require","_colorScope","_buildTheme","_gradients","_useTheme","_useNavigationTheme","_colorPresets","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_BloomThemeProvider","require","_colorScope","_buildTheme","_gradients","_useTheme","_useNavigationTheme","_colorPresets","_colorUtils","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AAIA,IAAAM,aAAA,GAAAN,OAAA;AAOA,IAAAO,WAAA,GAAAP,OAAA;AAEA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AACA,IAAAU,mBAAA,GAAAV,OAAA;AACA,IAAAW,eAAA,GAAAX,OAAA;AAEA,IAAAY,YAAA,GAAAZ,OAAA","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { memo, useMemo } from 'react';
|
|
4
4
|
import { View, Pressable, StyleSheet } from 'react-native';
|
|
5
|
+
import { withAlpha } from "../theme/color-utils.js";
|
|
5
6
|
import { useTheme } from "../theme/use-theme.js";
|
|
6
7
|
import { Text } from "../typography/index.js";
|
|
7
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -44,42 +45,6 @@ function levelForCount(count, levels) {
|
|
|
44
45
|
}
|
|
45
46
|
return level;
|
|
46
47
|
}
|
|
47
|
-
function parseRgb(color) {
|
|
48
|
-
const trimmed = color.trim();
|
|
49
|
-
if (trimmed.startsWith('#')) {
|
|
50
|
-
let hex = trimmed.slice(1);
|
|
51
|
-
if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');
|
|
52
|
-
if (hex.length !== 6) return null;
|
|
53
|
-
const r = parseInt(hex.slice(0, 2), 16);
|
|
54
|
-
const g = parseInt(hex.slice(2, 4), 16);
|
|
55
|
-
const b = parseInt(hex.slice(4, 6), 16);
|
|
56
|
-
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
57
|
-
return {
|
|
58
|
-
r,
|
|
59
|
-
g,
|
|
60
|
-
b
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
64
|
-
if (!match || match[1] === undefined) return null;
|
|
65
|
-
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
66
|
-
if (parts.length < 3) return null;
|
|
67
|
-
const [r, g, b] = parts;
|
|
68
|
-
if (r === undefined || g === undefined || b === undefined) return null;
|
|
69
|
-
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
70
|
-
return {
|
|
71
|
-
r,
|
|
72
|
-
g,
|
|
73
|
-
b
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
78
|
-
function withAlpha(color, alpha) {
|
|
79
|
-
const rgb = parseRgb(color);
|
|
80
|
-
if (!rgb) return color;
|
|
81
|
-
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
82
|
-
}
|
|
83
48
|
/**
|
|
84
49
|
* A GitHub-style contribution graph: columns of weeks × 7 weekday rows of
|
|
85
50
|
* rounded square cells, each colored by its day's activity level. Pure `<View>`
|
|
@@ -187,11 +152,23 @@ const ActivityHeatmapComponent = ({
|
|
|
187
152
|
const weekdayColWidth = hasWeekdayCol ? WEEKDAY_COL_WIDTH : 0;
|
|
188
153
|
const monthRowMarginLeft = hasWeekdayCol ? weekdayColWidth + gap : 0;
|
|
189
154
|
const cellRadius = Math.max(2, Math.round(cellSize * 0.25));
|
|
155
|
+
|
|
156
|
+
// The heatmap is a FIXED-width component: its footprint is exactly the grid's
|
|
157
|
+
// natural size, so it never stretches to fill a wide parent nor squishes in a
|
|
158
|
+
// narrow one (the cells keep `cellSize`). Overflow is the consumer's call —
|
|
159
|
+
// wrap it in a horizontal ScrollView when the viewport is narrower than this.
|
|
160
|
+
const columnCount = columns.length;
|
|
161
|
+
const gridWidth = columnCount * cellSize + Math.max(0, columnCount - 1) * gap;
|
|
162
|
+
const totalWidth = monthRowMarginLeft + gridWidth;
|
|
190
163
|
return /*#__PURE__*/_jsxs(View, {
|
|
191
|
-
style:
|
|
164
|
+
style: [{
|
|
165
|
+
width: totalWidth,
|
|
166
|
+
alignSelf: 'flex-start'
|
|
167
|
+
}, style],
|
|
192
168
|
testID: testID,
|
|
193
169
|
children: [/*#__PURE__*/_jsx(View, {
|
|
194
170
|
style: [styles.monthRow, {
|
|
171
|
+
width: gridWidth,
|
|
195
172
|
marginLeft: monthRowMarginLeft
|
|
196
173
|
}],
|
|
197
174
|
children: monthMarks.map((mark, i) => /*#__PURE__*/_jsx(Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useMemo","View","Pressable","StyleSheet","useTheme","Text","jsx","_jsx","jsxs","_jsxs","DAY_MS","DEFAULT_NUM_DAYS","DEFAULT_LEVELS","DEFAULT_MONTHS","DEFAULT_ALPHAS","LABEL_FONT_SIZE","MONTH_ROW_HEIGHT","WEEKDAY_COL_WIDTH","DATE_KEY_RE","parseDateKey","key","match","exec","year","Number","month","day","ts","Date","UTC","isNaN","parsed","parse","formatUtcKey","d","getUTCFullYear","String","getUTCMonth","padStart","getUTCDate","levelForCount","count","levels","level","threshold","parseRgb","color","trimmed","trim","startsWith","hex","slice","length","split","map","c","join","r","parseInt","g","b","some","v","undefined","parts","filter","Boolean","withAlpha","alpha","rgb","ActivityHeatmapComponent","data","numDays","endDate","colorScale","emptyColor","cellSize","gap","weekStartsOn","monthLabels","weekdayLabels","onPressDay","style","testID","colors","empty","backgroundSecondary","scale","primary","sortedLevels","sort","a","months","grid","countByKey","Map","latest","entry","date","set","get","providedEnd","endTs","days","Math","max","floor","rawStart","back","getUTCDay","gridStart","columnCount","ceil","maxColor","columns","column","push","min","monthMarks","lastMonth","firstTs","x","label","hasWeekdayCol","Array","isArray","weekdayColWidth","monthRowMarginLeft","cellRadius","round","children","styles","monthRow","marginLeft","mark","i","numberOfLines","left","textTertiary","body","width","marginRight","from","_","dow","height","marginBottom","justifyContent","weekdayLabel","cell","cellStyle","borderRadius","onPress","accessibilityRole","accessibilityLabel","backgroundColor","create","position","top","fontSize","flexDirection","borderCurve","ActivityHeatmap","displayName"],"sourceRoot":"../../../src","sources":["activity-heatmap/ActivityHeatmap.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","View","Pressable","StyleSheet","withAlpha","useTheme","Text","jsx","_jsx","jsxs","_jsxs","DAY_MS","DEFAULT_NUM_DAYS","DEFAULT_LEVELS","DEFAULT_MONTHS","DEFAULT_ALPHAS","LABEL_FONT_SIZE","MONTH_ROW_HEIGHT","WEEKDAY_COL_WIDTH","DATE_KEY_RE","parseDateKey","key","match","exec","year","Number","month","day","ts","Date","UTC","isNaN","parsed","parse","formatUtcKey","d","getUTCFullYear","String","getUTCMonth","padStart","getUTCDate","levelForCount","count","levels","level","threshold","ActivityHeatmapComponent","data","numDays","endDate","colorScale","emptyColor","cellSize","gap","weekStartsOn","monthLabels","weekdayLabels","onPressDay","style","testID","colors","empty","backgroundSecondary","scale","map","alpha","primary","sortedLevels","sort","a","b","months","grid","countByKey","Map","latest","entry","date","set","get","providedEnd","endTs","days","Math","max","floor","rawStart","back","getUTCDay","gridStart","columnCount","ceil","maxColor","length","columns","c","column","r","push","min","color","monthMarks","lastMonth","firstTs","x","label","hasWeekdayCol","Array","isArray","weekdayColWidth","monthRowMarginLeft","cellRadius","round","gridWidth","totalWidth","width","alignSelf","children","styles","monthRow","marginLeft","mark","i","numberOfLines","left","textTertiary","body","marginRight","from","_","dow","height","marginBottom","justifyContent","weekdayLabel","cell","cellStyle","borderRadius","onPress","accessibilityRole","accessibilityLabel","backgroundColor","create","position","top","fontSize","flexDirection","borderCurve","ActivityHeatmap","displayName"],"sourceRoot":"../../../src","sources":["activity-heatmap/ActivityHeatmap.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,IAAI,EAAEC,SAAS,EAAEC,UAAU,QAAQ,cAAc;AAE1D,SAASC,SAAS,QAAQ,yBAAsB;AAChD,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SAASC,IAAI,QAAQ,wBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGrC,MAAMC,MAAM,GAAG,UAAU;AACzB,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,MAAMC,cAAc,GAAG,CACrB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACxC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CACzC;AACD;AACA,MAAMC,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,MAAMC,eAAe,GAAG,EAAE;AAC1B,MAAMC,gBAAgB,GAAG,EAAE;AAC3B,MAAMC,iBAAiB,GAAG,EAAE;AAE5B,MAAMC,WAAW,GAAG,0BAA0B;AAE9C,SAASC,YAAYA,CAACC,GAAW,EAAiB;EAChD,MAAMC,KAAK,GAAGH,WAAW,CAACI,IAAI,CAACF,GAAG,CAAC;EACnC,IAAIC,KAAK,EAAE;IACT,MAAME,IAAI,GAAGC,MAAM,CAACH,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAMI,KAAK,GAAGD,MAAM,CAACH,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAMK,GAAG,GAAGF,MAAM,CAACH,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAMM,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACN,IAAI,EAAEE,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;IACzC,OAAOF,MAAM,CAACM,KAAK,CAACH,EAAE,CAAC,GAAG,IAAI,GAAGA,EAAE;EACrC;EACA,MAAMI,MAAM,GAAGH,IAAI,CAACI,KAAK,CAACZ,GAAG,CAAC;EAC9B,OAAOI,MAAM,CAACM,KAAK,CAACC,MAAM,CAAC,GAAG,IAAI,GAAGA,MAAM;AAC7C;AAEA,SAASE,YAAYA,CAACN,EAAU,EAAU;EACxC,MAAMO,CAAC,GAAG,IAAIN,IAAI,CAACD,EAAE,CAAC;EACtB,MAAMJ,IAAI,GAAGW,CAAC,CAACC,cAAc,CAAC,CAAC;EAC/B,MAAMV,KAAK,GAAGW,MAAM,CAACF,CAAC,CAACG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,MAAMZ,GAAG,GAAGU,MAAM,CAACF,CAAC,CAACK,UAAU,CAAC,CAAC,CAAC,CAACD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACnD,OAAO,GAAGf,IAAI,IAAIE,KAAK,IAAIC,GAAG,EAAE;AAClC;;AAEA;AACA,SAASc,aAAaA,CAACC,KAAa,EAAEC,MAAgB,EAAU;EAC9D,IAAID,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC;EACxB,IAAIE,KAAK,GAAG,CAAC;EACb,KAAK,MAAMC,SAAS,IAAIF,MAAM,EAAE;IAC9B,IAAID,KAAK,IAAIG,SAAS,EAAED,KAAK,IAAI,CAAC,CAAC,KAC9B;EACP;EACA,OAAOA,KAAK;AACd;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,wBAAwD,GAAGA,CAAC;EAChEC,IAAI;EACJC,OAAO,GAAGpC,gBAAgB;EAC1BqC,OAAO;EACPN,MAAM,GAAG9B,cAAc;EACvBqC,UAAU;EACVC,UAAU;EACVC,QAAQ,GAAG,EAAE;EACbC,GAAG,GAAG,CAAC;EACPC,YAAY,GAAG,CAAC;EAChBC,WAAW;EACXC,aAAa;EACbC,UAAU;EACVC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAO,CAAC,GAAGvD,QAAQ,CAAC,CAAC;EAC7B,MAAMwD,KAAK,GAAGV,UAAU,IAAIS,MAAM,CAACE,mBAAmB;EACtD,MAAMC,KAAK,GAAG/D,OAAO,CACnB,MAAMkD,UAAU,IAAInC,cAAc,CAACiD,GAAG,CAAEC,KAAK,IAAK7D,SAAS,CAACwD,MAAM,CAACM,OAAO,EAAED,KAAK,CAAC,CAAC,EACnF,CAACf,UAAU,EAAEU,MAAM,CAACM,OAAO,CAC7B,CAAC;EACD,MAAMC,YAAY,GAAGnE,OAAO,CAAC,MAAM,CAAC,GAAG2C,MAAM,CAAC,CAACyB,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC,EAAE,CAAC3B,MAAM,CAAC,CAAC;EAC/E,MAAM4B,MAAM,GAAGhB,WAAW,IAAIzC,cAAc;EAE5C,MAAM0D,IAAI,GAAGxE,OAAO,CAAC,MAAM;IACzB;IACA,MAAMyE,UAAU,GAAG,IAAIC,GAAG,CAAiB,CAAC;IAC5C,IAAIC,MAAqB,GAAG,IAAI;IAChC,KAAK,MAAMC,KAAK,IAAI7B,IAAI,EAAE;MACxB,MAAMnB,EAAE,GAAGR,YAAY,CAACwD,KAAK,CAACC,IAAI,CAAC;MACnC,IAAIjD,EAAE,KAAK,IAAI,EAAE;MACjB,MAAMP,GAAG,GAAGa,YAAY,CAACN,EAAE,CAAC;MAC5B6C,UAAU,CAACK,GAAG,CAACzD,GAAG,EAAE,CAACoD,UAAU,CAACM,GAAG,CAAC1D,GAAG,CAAC,IAAI,CAAC,IAAIuD,KAAK,CAAClC,KAAK,CAAC;MAC7D,IAAIiC,MAAM,KAAK,IAAI,IAAI/C,EAAE,GAAG+C,MAAM,EAAEA,MAAM,GAAG/C,EAAE;IACjD;IAEA,MAAMoD,WAAW,GAAG/B,OAAO,GAAG7B,YAAY,CAAC6B,OAAO,CAAC,GAAG,IAAI;IAC1D,MAAMgC,KAAK,GAAGD,WAAW,IAAIL,MAAM;IACnC,IAAIM,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI;IAE/B,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACrC,OAAO,CAAC,CAAC;IAC7C,MAAMsC,QAAQ,GAAGL,KAAK,GAAG,CAACC,IAAI,GAAG,CAAC,IAAIvE,MAAM;IAC5C;IACA,MAAM4E,IAAI,GAAG,CAAC,IAAI1D,IAAI,CAACyD,QAAQ,CAAC,CAACE,SAAS,CAAC,CAAC,GAAGlC,YAAY,GAAG,CAAC,IAAI,CAAC;IACpE,MAAMmC,SAAS,GAAGH,QAAQ,GAAGC,IAAI,GAAG5E,MAAM;IAC1C,MAAM+E,WAAW,GAAGP,IAAI,CAACQ,IAAI,CAAC,CAACR,IAAI,CAACE,KAAK,CAAC,CAACJ,KAAK,GAAGQ,SAAS,IAAI9E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEjF,MAAMiF,QAAQ,GAAG7B,KAAK,CAAC8B,MAAM,GAAG,CAAC;IACjC,MAAMC,OAAkC,GAAG,EAAE;IAC7C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,WAAW,EAAEK,CAAC,EAAE,EAAE;MACpC,MAAMC,MAA0B,GAAG,EAAE;MACrC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QAC1B,MAAMrE,EAAE,GAAG6D,SAAS,GAAG,CAACM,CAAC,GAAG,CAAC,GAAGE,CAAC,IAAItF,MAAM;QAC3C,IAAIiB,EAAE,GAAGqD,KAAK,EAAE;UACde,MAAM,CAACE,IAAI,CAAC,IAAI,CAAC;UACjB;QACF;QACA,MAAM7E,GAAG,GAAGa,YAAY,CAACN,EAAE,CAAC;QAC5B,MAAMc,KAAK,GAAG+B,UAAU,CAACM,GAAG,CAAC1D,GAAG,CAAC,IAAI,CAAC;QACtC,MAAMuB,KAAK,GAAGuC,IAAI,CAACgB,GAAG,CAAC1D,aAAa,CAACC,KAAK,EAAEyB,YAAY,CAAC,EAAEyB,QAAQ,CAAC;QACpE,MAAMQ,KAAK,GAAG1D,KAAK,IAAI,CAAC,GAAGmB,KAAK,GAAGE,KAAK,CAACnB,KAAK,CAAC,IAAIiB,KAAK;QACxDmC,MAAM,CAACE,IAAI,CAAC;UAAE7E,GAAG;UAAEqB,KAAK;UAAE0D;QAAM,CAAC,CAAC;MACpC;MACAN,OAAO,CAACI,IAAI,CAACF,MAAM,CAAC;IACtB;;IAEA;IACA,MAAMK,UAA+C,GAAG,EAAE;IAC1D,IAAIC,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,WAAW,EAAEK,CAAC,EAAE,EAAE;MACpC,MAAMQ,OAAO,GAAGd,SAAS,GAAGM,CAAC,GAAG,CAAC,GAAGpF,MAAM;MAC1C,MAAMe,KAAK,GAAG,IAAIG,IAAI,CAAC0E,OAAO,CAAC,CAACjE,WAAW,CAAC,CAAC;MAC7C,IAAIZ,KAAK,KAAK4E,SAAS,EAAE;QACvBD,UAAU,CAACH,IAAI,CAAC;UAAEM,CAAC,EAAET,CAAC,IAAI3C,QAAQ,GAAGC,GAAG,CAAC;UAAEoD,KAAK,EAAElC,MAAM,CAAC7C,KAAK,CAAC,IAAIZ,cAAc,CAACY,KAAK,CAAC,IAAI;QAAG,CAAC,CAAC;QACjG4E,SAAS,GAAG5E,KAAK;MACnB;IACF;IAEA,OAAO;MAAEoE,OAAO;MAAEO;IAAW,CAAC;EAChC,CAAC,EAAE,CAACtD,IAAI,EAAEE,OAAO,EAAED,OAAO,EAAEM,YAAY,EAAEa,YAAY,EAAEJ,KAAK,EAAEF,KAAK,EAAET,QAAQ,EAAEC,GAAG,EAAEkB,MAAM,CAAC,CAAC;EAE7F,IAAI,CAACC,IAAI,EAAE;IACT,oBAAOhE,IAAA,CAACP,IAAI;MAACyD,KAAK,EAAEA,KAAM;MAACC,MAAM,EAAEA;IAAO,CAAE,CAAC;EAC/C;EAEA,MAAM;IAAEmC,OAAO;IAAEO;EAAW,CAAC,GAAG7B,IAAI;EACpC,MAAMkC,aAAa,GAAGC,KAAK,CAACC,OAAO,CAACpD,aAAa,CAAC;EAClD,MAAMqD,eAAe,GAAGH,aAAa,GAAGxF,iBAAiB,GAAG,CAAC;EAC7D,MAAM4F,kBAAkB,GAAGJ,aAAa,GAAGG,eAAe,GAAGxD,GAAG,GAAG,CAAC;EACpE,MAAM0D,UAAU,GAAG5B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAAC6B,KAAK,CAAC5D,QAAQ,GAAG,IAAI,CAAC,CAAC;;EAE3D;EACA;EACA;EACA;EACA,MAAMsC,WAAW,GAAGI,OAAO,CAACD,MAAM;EAClC,MAAMoB,SAAS,GAAGvB,WAAW,GAAGtC,QAAQ,GAAG+B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEM,WAAW,GAAG,CAAC,CAAC,GAAGrC,GAAG;EAC7E,MAAM6D,UAAU,GAAGJ,kBAAkB,GAAGG,SAAS;EAEjD,oBACEvG,KAAA,CAACT,IAAI;IAACyD,KAAK,EAAE,CAAC;MAAEyD,KAAK,EAAED,UAAU;MAAEE,SAAS,EAAE;IAAa,CAAC,EAAE1D,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAA0D,QAAA,gBACnF7G,IAAA,CAACP,IAAI;MAACyD,KAAK,EAAE,CAAC4D,MAAM,CAACC,QAAQ,EAAE;QAAEJ,KAAK,EAAEF,SAAS;QAAEO,UAAU,EAAEV;MAAmB,CAAC,CAAE;MAAAO,QAAA,EAClFhB,UAAU,CAACrC,GAAG,CAAC,CAACyD,IAAI,EAAEC,CAAC,kBACtBlH,IAAA,CAACF,IAAI;QAEHqH,aAAa,EAAE,CAAE;QACjBjE,KAAK,EAAE,CAAC4D,MAAM,CAACb,KAAK,EAAE;UAAEmB,IAAI,EAAEH,IAAI,CAACjB,CAAC;UAAEJ,KAAK,EAAExC,MAAM,CAACiE;QAAa,CAAC,CAAE;QAAAR,QAAA,EAEnEI,IAAI,CAAChB;MAAK,GAJN,GAAGgB,IAAI,CAAChB,KAAK,IAAIiB,CAAC,EAKnB,CACP;IAAC,CACE,CAAC,eAEPhH,KAAA,CAACT,IAAI;MAACyD,KAAK,EAAE4D,MAAM,CAACQ,IAAK;MAAAT,QAAA,GACtBX,aAAa,iBACZlG,IAAA,CAACP,IAAI;QAACyD,KAAK,EAAE;UAAEyD,KAAK,EAAEN,eAAe;UAAEkB,WAAW,EAAE1E;QAAI,CAAE;QAAAgE,QAAA,EACvDV,KAAK,CAACqB,IAAI,CAAC;UAAEnC,MAAM,EAAE;QAAE,CAAC,EAAE,CAACoC,CAAC,EAAEhC,CAAC,KAAK;UACnC,MAAMiC,GAAG,GAAG,CAAC5E,YAAY,GAAG2C,CAAC,IAAI,CAAC;UAClC,oBACEzF,IAAA,CAACP,IAAI;YAEHyD,KAAK,EAAE;cACLyE,MAAM,EAAE/E,QAAQ;cAChBgF,YAAY,EAAEnC,CAAC,GAAG,CAAC,GAAG5C,GAAG,GAAG,CAAC;cAC7BgF,cAAc,EAAE;YAClB,CAAE;YAAAhB,QAAA,eAEF7G,IAAA,CAACF,IAAI;cAACqH,aAAa,EAAE,CAAE;cAACjE,KAAK,EAAE,CAAC4D,MAAM,CAACgB,YAAY,EAAE;gBAAElC,KAAK,EAAExC,MAAM,CAACiE;cAAa,CAAC,CAAE;cAAAR,QAAA,EAClF7D,aAAa,CAAC0E,GAAG,CAAC,IAAI;YAAE,CACrB;UAAC,GATFjC,CAUD,CAAC;QAEX,CAAC;MAAC,CACE,CACP,eAEDzF,IAAA,CAACP,IAAI;QAACyD,KAAK,EAAE4D,MAAM,CAAC9C,IAAK;QAAA6C,QAAA,EACtBvB,OAAO,CAAC9B,GAAG,CAAC,CAACgC,MAAM,EAAED,CAAC,kBACrBvF,IAAA,CAACP,IAAI;UAASyD,KAAK,EAAE;YAAEqE,WAAW,EAAEhC,CAAC,GAAGD,OAAO,CAACD,MAAM,GAAG,CAAC,GAAGxC,GAAG,GAAG;UAAE,CAAE;UAAAgE,QAAA,EACpErB,MAAM,CAAChC,GAAG,CAAC,CAACuE,IAAI,EAAEtC,CAAC,KAAK;YACvB,MAAMuC,SAAS,GAAG;cAChBrB,KAAK,EAAE/D,QAAQ;cACf+E,MAAM,EAAE/E,QAAQ;cAChBqF,YAAY,EAAE1B,UAAU;cACxBqB,YAAY,EAAEnC,CAAC,GAAG,CAAC,GAAG5C,GAAG,GAAG;YAC9B,CAAC;YACD,IAAI,CAACkF,IAAI,EAAE;cACT,oBAAO/H,IAAA,CAACP,IAAI;gBAASyD,KAAK,EAAE8E;cAAU,GAApBvC,CAAsB,CAAC;YAC3C;YACA,IAAIxC,UAAU,EAAE;cACd,MAAM9B,GAAuB,GAAG;gBAAEkD,IAAI,EAAE0D,IAAI,CAAClH,GAAG;gBAAEqB,KAAK,EAAE6F,IAAI,CAAC7F;cAAM,CAAC;cACrE,oBACElC,IAAA,CAACN,SAAS;gBAERwI,OAAO,EAAEA,CAAA,KAAMjF,UAAU,CAAC9B,GAAG,CAAE;gBAC/BgH,iBAAiB,EAAC,QAAQ;gBAC1BC,kBAAkB,EAAE,GAAGL,IAAI,CAAClH,GAAG,KAAKkH,IAAI,CAAC7F,KAAK,EAAG;gBACjDgB,KAAK,EAAE,CAAC8E,SAAS,EAAElB,MAAM,CAACiB,IAAI,EAAE;kBAAEM,eAAe,EAAEN,IAAI,CAACnC;gBAAM,CAAC;cAAE,GAJ5DH,CAKN,CAAC;YAEN;YACA,oBACEzF,IAAA,CAACP,IAAI;cAASyD,KAAK,EAAE,CAAC8E,SAAS,EAAElB,MAAM,CAACiB,IAAI,EAAE;gBAAEM,eAAe,EAAEN,IAAI,CAACnC;cAAM,CAAC;YAAE,GAApEH,CAAsE,CAAC;UAEtF,CAAC;QAAC,GA1BOF,CA2BL,CACP;MAAC,CACE,CAAC;IAAA,CACH,CAAC;EAAA,CACH,CAAC;AAEX,CAAC;AAED,MAAMuB,MAAM,GAAGnH,UAAU,CAAC2I,MAAM,CAAC;EAC/BvB,QAAQ,EAAE;IACRY,MAAM,EAAElH,gBAAgB;IACxB8H,QAAQ,EAAE;EACZ,CAAC;EACDtC,KAAK,EAAE;IACLsC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,QAAQ,EAAEjI;EACZ,CAAC;EACD8G,IAAI,EAAE;IACJoB,aAAa,EAAE;EACjB,CAAC;EACD1E,IAAI,EAAE;IACJ0E,aAAa,EAAE;EACjB,CAAC;EACDX,IAAI,EAAE;IACJY,WAAW,EAAE;EACf,CAAC;EACDb,YAAY,EAAE;IACZW,QAAQ,EAAEjI;EACZ;AACF,CAAC,CAAC;AAEF,OAAO,MAAMoI,eAAe,gBAAGrJ,IAAI,CAAC+C,wBAAwB,CAAC;AAC7DsG,eAAe,CAACC,WAAW,GAAG,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Graceful color-utility primitives for consumer-facing composition.
|
|
5
|
+
*
|
|
6
|
+
* Unlike `parseRgbString` in `./color-space` (which THROWS on non-rgb input —
|
|
7
|
+
* it is a canonical-pipeline primitive where a bad value signals a real bug),
|
|
8
|
+
* these helpers fall back gracefully: they return `null` / the untouched input
|
|
9
|
+
* when a color string can't be parsed. That makes them safe to point at
|
|
10
|
+
* arbitrary consumer color values (theme tokens, user-supplied colors) — e.g.
|
|
11
|
+
* building `[bg, withAlpha(bg, 0)]` gradient stops for a scroll fade, where the
|
|
12
|
+
* `transparent` keyword would incorrectly fade through black.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** RGB channels, each 0..255. */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Parse a color string into its RGB channels, or `null` if it can't be parsed.
|
|
19
|
+
*
|
|
20
|
+
* Accepts Bloom's canonical space-separated `rgb(r g b)` output, legacy
|
|
21
|
+
* comma-separated `rgb(r, g, b)` / `rgba(...)`, and `#rgb` / `#rrggbb` hex.
|
|
22
|
+
* Anything else yields `null` so callers can fall back to the original value.
|
|
23
|
+
*/
|
|
24
|
+
export function parseRgb(color) {
|
|
25
|
+
const trimmed = color.trim();
|
|
26
|
+
if (trimmed.startsWith('#')) {
|
|
27
|
+
let hex = trimmed.slice(1);
|
|
28
|
+
if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');
|
|
29
|
+
if (hex.length !== 6) return null;
|
|
30
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
31
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
32
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
33
|
+
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
34
|
+
return {
|
|
35
|
+
r,
|
|
36
|
+
g,
|
|
37
|
+
b
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
41
|
+
if (!match || match[1] === undefined) return null;
|
|
42
|
+
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
43
|
+
if (parts.length < 3) return null;
|
|
44
|
+
const [r, g, b] = parts;
|
|
45
|
+
if (r === undefined || g === undefined || b === undefined) return null;
|
|
46
|
+
if ([r, g, b].some(v => Number.isNaN(v))) return null;
|
|
47
|
+
return {
|
|
48
|
+
r,
|
|
49
|
+
g,
|
|
50
|
+
b
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
55
|
+
export function withAlpha(color, alpha) {
|
|
56
|
+
const rgb = parseRgb(color);
|
|
57
|
+
if (!rgb) return color;
|
|
58
|
+
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=color-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseRgb","color","trimmed","trim","startsWith","hex","slice","length","split","map","c","join","r","parseInt","g","b","some","v","Number","isNaN","match","exec","undefined","parts","filter","Boolean","withAlpha","alpha","rgb"],"sourceRoot":"../../../src","sources":["theme/color-utils.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,QAAQA,CAACC,KAAa,EAAsB;EAC1D,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAC5B,IAAID,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;IAC3B,IAAIC,GAAG,GAAGH,OAAO,CAACI,KAAK,CAAC,CAAC,CAAC;IAC1B,IAAID,GAAG,CAACE,MAAM,KAAK,CAAC,EAAEF,GAAG,GAAGA,GAAG,CAACG,KAAK,CAAC,EAAE,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAGA,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;IACpE,IAAIN,GAAG,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IACjC,MAAMK,CAAC,GAAGC,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,MAAMQ,CAAC,GAAGD,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,MAAMS,CAAC,GAAGF,QAAQ,CAACR,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACvC,IAAI,CAACM,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,CAACC,IAAI,CAAEC,CAAC,IAAKC,MAAM,CAACC,KAAK,CAACF,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;IACvD,OAAO;MAAEL,CAAC;MAAEE,CAAC;MAAEC;IAAE,CAAC;EACpB;EACA,MAAMK,KAAK,GAAG,mBAAmB,CAACC,IAAI,CAACnB,OAAO,CAAC;EAC/C,IAAI,CAACkB,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAKE,SAAS,EAAE,OAAO,IAAI;EACjD,MAAMC,KAAK,GAAGH,KAAK,CAAC,CAAC,CAAC,CAACZ,KAAK,CAAC,SAAS,CAAC,CAACgB,MAAM,CAACC,OAAO,CAAC,CAAChB,GAAG,CAACS,MAAM,CAAC;EACnE,IAAIK,KAAK,CAAChB,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;EACjC,MAAM,CAACK,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,GAAGQ,KAAK;EACvB,IAAIX,CAAC,KAAKU,SAAS,IAAIR,CAAC,KAAKQ,SAAS,IAAIP,CAAC,KAAKO,SAAS,EAAE,OAAO,IAAI;EACtE,IAAI,CAACV,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,CAACC,IAAI,CAAEC,CAAC,IAAKC,MAAM,CAACC,KAAK,CAACF,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;EACvD,OAAO;IAAEL,CAAC;IAAEE,CAAC;IAAEC;EAAE,CAAC;AACpB;;AAEA;AACA,OAAO,SAASW,SAASA,CAACzB,KAAa,EAAE0B,KAAa,EAAU;EAC9D,MAAMC,GAAG,GAAG5B,QAAQ,CAACC,KAAK,CAAC;EAC3B,IAAI,CAAC2B,GAAG,EAAE,OAAO3B,KAAK;EACtB,OAAO,QAAQ2B,GAAG,CAAChB,CAAC,KAAKgB,GAAG,CAACd,CAAC,KAAKc,GAAG,CAACb,CAAC,KAAKY,KAAK,GAAG;AACvD","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ export { THEME_GRADIENTS } from "./gradients.js";
|
|
|
7
7
|
export { useTheme, useThemeColor, useBloomTheme } from "./use-theme.js";
|
|
8
8
|
export { useNavigationTheme } from "./use-navigation-theme.js";
|
|
9
9
|
export { APP_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from "./color-presets.js";
|
|
10
|
+
export { parseRgb, withAlpha } from "./color-utils.js";
|
|
10
11
|
export { getPresetVars, applyPresetVarsToDocument } from "./preset-vars.js";
|
|
11
12
|
export { applyDarkClass } from "./apply-dark-class.js";
|
|
12
13
|
export { setColorSchemeSafe } from "./set-color-scheme-safe.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","buildTheme","STATUS_COLORS","THEME_GRADIENTS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,eAAe,QAAQ,gBAAa;AAC7C,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","buildTheme","STATUS_COLORS","THEME_GRADIENTS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","parseRgb","withAlpha","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,eAAe,QAAQ,gBAAa;AAC7C,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,QAAQ,EAAEC,SAAS,QAAQ,kBAAe;AAEnD,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityHeatmap.d.ts","sourceRoot":"","sources":["../../../../src/activity-heatmap/ActivityHeatmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ActivityHeatmap.d.ts","sourceRoot":"","sources":["../../../../src/activity-heatmap/ActivityHeatmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,OAAO,KAAK,EAAsB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAqQxE,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful color-utility primitives for consumer-facing composition.
|
|
3
|
+
*
|
|
4
|
+
* Unlike `parseRgbString` in `./color-space` (which THROWS on non-rgb input —
|
|
5
|
+
* it is a canonical-pipeline primitive where a bad value signals a real bug),
|
|
6
|
+
* these helpers fall back gracefully: they return `null` / the untouched input
|
|
7
|
+
* when a color string can't be parsed. That makes them safe to point at
|
|
8
|
+
* arbitrary consumer color values (theme tokens, user-supplied colors) — e.g.
|
|
9
|
+
* building `[bg, withAlpha(bg, 0)]` gradient stops for a scroll fade, where the
|
|
10
|
+
* `transparent` keyword would incorrectly fade through black.
|
|
11
|
+
*/
|
|
12
|
+
/** RGB channels, each 0..255. */
|
|
13
|
+
export interface RgbChannels {
|
|
14
|
+
r: number;
|
|
15
|
+
g: number;
|
|
16
|
+
b: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parse a color string into its RGB channels, or `null` if it can't be parsed.
|
|
20
|
+
*
|
|
21
|
+
* Accepts Bloom's canonical space-separated `rgb(r g b)` output, legacy
|
|
22
|
+
* comma-separated `rgb(r, g, b)` / `rgba(...)`, and `#rgb` / `#rrggbb` hex.
|
|
23
|
+
* Anything else yields `null` so callers can fall back to the original value.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseRgb(color: string): RgbChannels | null;
|
|
26
|
+
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
27
|
+
export declare function withAlpha(color: string, alpha: number): string;
|
|
28
|
+
//# sourceMappingURL=color-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAoB1D;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI9D"}
|
|
@@ -10,6 +10,8 @@ export type { NavigationTheme, NavigationThemeFont } from './use-navigation-them
|
|
|
10
10
|
export type { Theme, ThemeColors, ThemeMode, ThemeGradient, ThemeGradients } from './types';
|
|
11
11
|
export type { AppColorName, AppColorPreset, PresetTokens } from './color-presets';
|
|
12
12
|
export { APP_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
|
|
13
|
+
export { parseRgb, withAlpha } from './color-utils';
|
|
14
|
+
export type { RgbChannels } from './color-utils';
|
|
13
15
|
export { getPresetVars, applyPresetVarsToDocument } from './preset-vars';
|
|
14
16
|
export { applyDarkClass } from './apply-dark-class';
|
|
15
17
|
export { setColorSchemeSafe } from './set-color-scheme-safe';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityHeatmap.d.ts","sourceRoot":"","sources":["../../../../src/activity-heatmap/ActivityHeatmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ActivityHeatmap.d.ts","sourceRoot":"","sources":["../../../../src/activity-heatmap/ActivityHeatmap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,OAAO,KAAK,EAAsB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAqQxE,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful color-utility primitives for consumer-facing composition.
|
|
3
|
+
*
|
|
4
|
+
* Unlike `parseRgbString` in `./color-space` (which THROWS on non-rgb input —
|
|
5
|
+
* it is a canonical-pipeline primitive where a bad value signals a real bug),
|
|
6
|
+
* these helpers fall back gracefully: they return `null` / the untouched input
|
|
7
|
+
* when a color string can't be parsed. That makes them safe to point at
|
|
8
|
+
* arbitrary consumer color values (theme tokens, user-supplied colors) — e.g.
|
|
9
|
+
* building `[bg, withAlpha(bg, 0)]` gradient stops for a scroll fade, where the
|
|
10
|
+
* `transparent` keyword would incorrectly fade through black.
|
|
11
|
+
*/
|
|
12
|
+
/** RGB channels, each 0..255. */
|
|
13
|
+
export interface RgbChannels {
|
|
14
|
+
r: number;
|
|
15
|
+
g: number;
|
|
16
|
+
b: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parse a color string into its RGB channels, or `null` if it can't be parsed.
|
|
20
|
+
*
|
|
21
|
+
* Accepts Bloom's canonical space-separated `rgb(r g b)` output, legacy
|
|
22
|
+
* comma-separated `rgb(r, g, b)` / `rgba(...)`, and `#rgb` / `#rrggbb` hex.
|
|
23
|
+
* Anything else yields `null` so callers can fall back to the original value.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseRgb(color: string): RgbChannels | null;
|
|
26
|
+
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
27
|
+
export declare function withAlpha(color: string, alpha: number): string;
|
|
28
|
+
//# sourceMappingURL=color-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAoB1D;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI9D"}
|
|
@@ -10,6 +10,8 @@ export type { NavigationTheme, NavigationThemeFont } from './use-navigation-them
|
|
|
10
10
|
export type { Theme, ThemeColors, ThemeMode, ThemeGradient, ThemeGradients } from './types';
|
|
11
11
|
export type { AppColorName, AppColorPreset, PresetTokens } from './color-presets';
|
|
12
12
|
export { APP_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
|
|
13
|
+
export { parseRgb, withAlpha } from './color-utils';
|
|
14
|
+
export type { RgbChannels } from './color-utils';
|
|
13
15
|
export { getPresetVars, applyPresetVarsToDocument } from './preset-vars';
|
|
14
16
|
export { applyDarkClass } from './apply-dark-class';
|
|
15
17
|
export { setColorSchemeSafe } from './set-color-scheme-safe';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { memo, useMemo } from 'react';
|
|
2
2
|
import { View, Pressable, StyleSheet } from 'react-native';
|
|
3
3
|
|
|
4
|
+
import { withAlpha } from '../theme/color-utils';
|
|
4
5
|
import { useTheme } from '../theme/use-theme';
|
|
5
6
|
import { Text } from '../typography';
|
|
6
7
|
import type { ActivityHeatmapDay, ActivityHeatmapProps } from './types';
|
|
@@ -52,35 +53,6 @@ function levelForCount(count: number, levels: number[]): number {
|
|
|
52
53
|
return level;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
function parseRgb(color: string): { r: number; g: number; b: number } | null {
|
|
56
|
-
const trimmed = color.trim();
|
|
57
|
-
if (trimmed.startsWith('#')) {
|
|
58
|
-
let hex = trimmed.slice(1);
|
|
59
|
-
if (hex.length === 3) hex = hex.split('').map((c) => c + c).join('');
|
|
60
|
-
if (hex.length !== 6) return null;
|
|
61
|
-
const r = parseInt(hex.slice(0, 2), 16);
|
|
62
|
-
const g = parseInt(hex.slice(2, 4), 16);
|
|
63
|
-
const b = parseInt(hex.slice(4, 6), 16);
|
|
64
|
-
if ([r, g, b].some((v) => Number.isNaN(v))) return null;
|
|
65
|
-
return { r, g, b };
|
|
66
|
-
}
|
|
67
|
-
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
68
|
-
if (!match || match[1] === undefined) return null;
|
|
69
|
-
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
70
|
-
if (parts.length < 3) return null;
|
|
71
|
-
const [r, g, b] = parts;
|
|
72
|
-
if (r === undefined || g === undefined || b === undefined) return null;
|
|
73
|
-
if ([r, g, b].some((v) => Number.isNaN(v))) return null;
|
|
74
|
-
return { r, g, b };
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
78
|
-
function withAlpha(color: string, alpha: number): string {
|
|
79
|
-
const rgb = parseRgb(color);
|
|
80
|
-
if (!rgb) return color;
|
|
81
|
-
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
56
|
interface Cell {
|
|
85
57
|
key: string;
|
|
86
58
|
count: number;
|
|
@@ -187,9 +159,17 @@ const ActivityHeatmapComponent: React.FC<ActivityHeatmapProps> = ({
|
|
|
187
159
|
const monthRowMarginLeft = hasWeekdayCol ? weekdayColWidth + gap : 0;
|
|
188
160
|
const cellRadius = Math.max(2, Math.round(cellSize * 0.25));
|
|
189
161
|
|
|
162
|
+
// The heatmap is a FIXED-width component: its footprint is exactly the grid's
|
|
163
|
+
// natural size, so it never stretches to fill a wide parent nor squishes in a
|
|
164
|
+
// narrow one (the cells keep `cellSize`). Overflow is the consumer's call —
|
|
165
|
+
// wrap it in a horizontal ScrollView when the viewport is narrower than this.
|
|
166
|
+
const columnCount = columns.length;
|
|
167
|
+
const gridWidth = columnCount * cellSize + Math.max(0, columnCount - 1) * gap;
|
|
168
|
+
const totalWidth = monthRowMarginLeft + gridWidth;
|
|
169
|
+
|
|
190
170
|
return (
|
|
191
|
-
<View style={style} testID={testID}>
|
|
192
|
-
<View style={[styles.monthRow, { marginLeft: monthRowMarginLeft }]}>
|
|
171
|
+
<View style={[{ width: totalWidth, alignSelf: 'flex-start' }, style]} testID={testID}>
|
|
172
|
+
<View style={[styles.monthRow, { width: gridWidth, marginLeft: monthRowMarginLeft }]}>
|
|
193
173
|
{monthMarks.map((mark, i) => (
|
|
194
174
|
<Text
|
|
195
175
|
key={`${mark.label}-${i}`}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseRgb, withAlpha } from '../color-utils';
|
|
2
|
+
|
|
3
|
+
describe('color-utils', () => {
|
|
4
|
+
describe('parseRgb', () => {
|
|
5
|
+
it('parses canonical space-separated rgb', () => {
|
|
6
|
+
expect(parseRgb('rgb(31 153 239)')).toEqual({ r: 31, g: 153, b: 239 });
|
|
7
|
+
});
|
|
8
|
+
it('parses legacy comma-separated rgb / rgba', () => {
|
|
9
|
+
expect(parseRgb('rgb(31, 153, 239)')).toEqual({ r: 31, g: 153, b: 239 });
|
|
10
|
+
expect(parseRgb('rgba(31, 153, 239, 0.5)')).toEqual({ r: 31, g: 153, b: 239 });
|
|
11
|
+
});
|
|
12
|
+
it('parses #rrggbb and #rgb hex', () => {
|
|
13
|
+
expect(parseRgb('#1f99ef')).toEqual({ r: 31, g: 153, b: 239 });
|
|
14
|
+
expect(parseRgb('#abc')).toEqual({ r: 170, g: 187, b: 204 });
|
|
15
|
+
});
|
|
16
|
+
it('returns null on unparseable input', () => {
|
|
17
|
+
expect(parseRgb('hsl(277 50% 5%)')).toBeNull();
|
|
18
|
+
expect(parseRgb('transparent')).toBeNull();
|
|
19
|
+
expect(parseRgb('#12')).toBeNull();
|
|
20
|
+
expect(parseRgb('')).toBeNull();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('withAlpha', () => {
|
|
25
|
+
it('composes canonical space-separated rgb at the given alpha', () => {
|
|
26
|
+
expect(withAlpha('rgb(31 153 239)', 0.5)).toBe('rgba(31, 153, 239, 0.5)');
|
|
27
|
+
});
|
|
28
|
+
it('composes at alpha 0 (fully transparent, not the transparent keyword)', () => {
|
|
29
|
+
expect(withAlpha('rgb(31 153 239)', 0)).toBe('rgba(31, 153, 239, 0)');
|
|
30
|
+
});
|
|
31
|
+
it('handles legacy comma rgb and hex input', () => {
|
|
32
|
+
expect(withAlpha('rgb(31, 153, 239)', 0.5)).toBe('rgba(31, 153, 239, 0.5)');
|
|
33
|
+
expect(withAlpha('#1f99ef', 1)).toBe('rgba(31, 153, 239, 1)');
|
|
34
|
+
});
|
|
35
|
+
it('returns the input unchanged when it cannot be parsed', () => {
|
|
36
|
+
expect(withAlpha('hsl(277 50% 5%)', 0.5)).toBe('hsl(277 50% 5%)');
|
|
37
|
+
expect(withAlpha('transparent', 0)).toBe('transparent');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful color-utility primitives for consumer-facing composition.
|
|
3
|
+
*
|
|
4
|
+
* Unlike `parseRgbString` in `./color-space` (which THROWS on non-rgb input —
|
|
5
|
+
* it is a canonical-pipeline primitive where a bad value signals a real bug),
|
|
6
|
+
* these helpers fall back gracefully: they return `null` / the untouched input
|
|
7
|
+
* when a color string can't be parsed. That makes them safe to point at
|
|
8
|
+
* arbitrary consumer color values (theme tokens, user-supplied colors) — e.g.
|
|
9
|
+
* building `[bg, withAlpha(bg, 0)]` gradient stops for a scroll fade, where the
|
|
10
|
+
* `transparent` keyword would incorrectly fade through black.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** RGB channels, each 0..255. */
|
|
14
|
+
export interface RgbChannels {
|
|
15
|
+
r: number;
|
|
16
|
+
g: number;
|
|
17
|
+
b: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Parse a color string into its RGB channels, or `null` if it can't be parsed.
|
|
22
|
+
*
|
|
23
|
+
* Accepts Bloom's canonical space-separated `rgb(r g b)` output, legacy
|
|
24
|
+
* comma-separated `rgb(r, g, b)` / `rgba(...)`, and `#rgb` / `#rrggbb` hex.
|
|
25
|
+
* Anything else yields `null` so callers can fall back to the original value.
|
|
26
|
+
*/
|
|
27
|
+
export function parseRgb(color: string): RgbChannels | null {
|
|
28
|
+
const trimmed = color.trim();
|
|
29
|
+
if (trimmed.startsWith('#')) {
|
|
30
|
+
let hex = trimmed.slice(1);
|
|
31
|
+
if (hex.length === 3) hex = hex.split('').map((c) => c + c).join('');
|
|
32
|
+
if (hex.length !== 6) return null;
|
|
33
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
34
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
35
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
36
|
+
if ([r, g, b].some((v) => Number.isNaN(v))) return null;
|
|
37
|
+
return { r, g, b };
|
|
38
|
+
}
|
|
39
|
+
const match = /rgba?\(([^)]+)\)/i.exec(trimmed);
|
|
40
|
+
if (!match || match[1] === undefined) return null;
|
|
41
|
+
const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
|
|
42
|
+
if (parts.length < 3) return null;
|
|
43
|
+
const [r, g, b] = parts;
|
|
44
|
+
if (r === undefined || g === undefined || b === undefined) return null;
|
|
45
|
+
if ([r, g, b].some((v) => Number.isNaN(v))) return null;
|
|
46
|
+
return { r, g, b };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Compose `color` at `alpha`; returns the input unchanged if it can't parse. */
|
|
50
|
+
export function withAlpha(color: string, alpha: number): string {
|
|
51
|
+
const rgb = parseRgb(color);
|
|
52
|
+
if (!rgb) return color;
|
|
53
|
+
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;
|
|
54
|
+
}
|
package/src/theme/index.ts
CHANGED
|
@@ -19,6 +19,8 @@ export {
|
|
|
19
19
|
HEX_TO_APP_COLOR,
|
|
20
20
|
hexToAppColorName,
|
|
21
21
|
} from './color-presets';
|
|
22
|
+
export { parseRgb, withAlpha } from './color-utils';
|
|
23
|
+
export type { RgbChannels } from './color-utils';
|
|
22
24
|
export { getPresetVars, applyPresetVarsToDocument } from './preset-vars';
|
|
23
25
|
export { applyDarkClass } from './apply-dark-class';
|
|
24
26
|
export { setColorSchemeSafe } from './set-color-scheme-safe';
|