@darthrapid/react-native-color-picker 0.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.
Files changed (65) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +160 -0
  3. package/lib/module/components/color-picker.js +214 -0
  4. package/lib/module/components/color-picker.js.map +1 -0
  5. package/lib/module/components/hue-strip.js +113 -0
  6. package/lib/module/components/hue-strip.js.map +1 -0
  7. package/lib/module/components/picker-panel.js +121 -0
  8. package/lib/module/components/picker-panel.js.map +1 -0
  9. package/lib/module/components/picker-tab.js +38 -0
  10. package/lib/module/components/picker-tab.js.map +1 -0
  11. package/lib/module/components/recent-tab.js +89 -0
  12. package/lib/module/components/recent-tab.js.map +1 -0
  13. package/lib/module/components/sat-bright-pad.js +171 -0
  14. package/lib/module/components/sat-bright-pad.js.map +1 -0
  15. package/lib/module/components/tab-bar.js +41 -0
  16. package/lib/module/components/tab-bar.js.map +1 -0
  17. package/lib/module/components/values-tab.js +161 -0
  18. package/lib/module/components/values-tab.js.map +1 -0
  19. package/lib/module/index.js +4 -0
  20. package/lib/module/index.js.map +1 -0
  21. package/lib/module/package.json +1 -0
  22. package/lib/module/shared/const.js +43 -0
  23. package/lib/module/shared/const.js.map +1 -0
  24. package/lib/module/types/misc.js +4 -0
  25. package/lib/module/types/misc.js.map +1 -0
  26. package/lib/module/utils/colors.js +52 -0
  27. package/lib/module/utils/colors.js.map +1 -0
  28. package/lib/typescript/package.json +1 -0
  29. package/lib/typescript/src/components/color-picker.d.ts +37 -0
  30. package/lib/typescript/src/components/color-picker.d.ts.map +1 -0
  31. package/lib/typescript/src/components/hue-strip.d.ts +10 -0
  32. package/lib/typescript/src/components/hue-strip.d.ts.map +1 -0
  33. package/lib/typescript/src/components/picker-panel.d.ts +32 -0
  34. package/lib/typescript/src/components/picker-panel.d.ts.map +1 -0
  35. package/lib/typescript/src/components/picker-tab.d.ts +17 -0
  36. package/lib/typescript/src/components/picker-tab.d.ts.map +1 -0
  37. package/lib/typescript/src/components/recent-tab.d.ts +12 -0
  38. package/lib/typescript/src/components/recent-tab.d.ts.map +1 -0
  39. package/lib/typescript/src/components/sat-bright-pad.d.ts +14 -0
  40. package/lib/typescript/src/components/sat-bright-pad.d.ts.map +1 -0
  41. package/lib/typescript/src/components/tab-bar.d.ts +11 -0
  42. package/lib/typescript/src/components/tab-bar.d.ts.map +1 -0
  43. package/lib/typescript/src/components/values-tab.d.ts +17 -0
  44. package/lib/typescript/src/components/values-tab.d.ts.map +1 -0
  45. package/lib/typescript/src/index.d.ts +3 -0
  46. package/lib/typescript/src/index.d.ts.map +1 -0
  47. package/lib/typescript/src/shared/const.d.ts +33 -0
  48. package/lib/typescript/src/shared/const.d.ts.map +1 -0
  49. package/lib/typescript/src/types/misc.d.ts +21 -0
  50. package/lib/typescript/src/types/misc.d.ts.map +1 -0
  51. package/lib/typescript/src/utils/colors.d.ts +14 -0
  52. package/lib/typescript/src/utils/colors.d.ts.map +1 -0
  53. package/package.json +123 -0
  54. package/src/components/color-picker.tsx +290 -0
  55. package/src/components/hue-strip.tsx +134 -0
  56. package/src/components/picker-panel.tsx +176 -0
  57. package/src/components/picker-tab.tsx +48 -0
  58. package/src/components/recent-tab.tsx +90 -0
  59. package/src/components/sat-bright-pad.tsx +158 -0
  60. package/src/components/tab-bar.tsx +59 -0
  61. package/src/components/values-tab.tsx +166 -0
  62. package/src/index.tsx +2 -0
  63. package/src/shared/const.ts +43 -0
  64. package/src/types/misc.ts +24 -0
  65. package/src/utils/colors.ts +57 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { View } from "react-native";
4
+ import { HueStrip } from "./hue-strip.js";
5
+ import { SatBrightPad } from "./sat-bright-pad.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export function PickerTab({
8
+ hue,
9
+ sat,
10
+ bright,
11
+ hueStripHeight,
12
+ disabled,
13
+ t,
14
+ onHueChange,
15
+ onSatBrightChange
16
+ }) {
17
+ return /*#__PURE__*/_jsxs(View, {
18
+ style: {
19
+ gap: 16,
20
+ padding: 20
21
+ },
22
+ children: [/*#__PURE__*/_jsx(SatBrightPad, {
23
+ hue: hue,
24
+ sat: sat,
25
+ bright: bright,
26
+ disabled: disabled,
27
+ thumbBorder: t.thumbBorder,
28
+ onChange: onSatBrightChange
29
+ }), /*#__PURE__*/_jsx(HueStrip, {
30
+ hue: hue,
31
+ height: hueStripHeight,
32
+ disabled: disabled,
33
+ thumbBorder: t.thumbBorder,
34
+ onChange: onHueChange
35
+ })]
36
+ });
37
+ }
38
+ //# sourceMappingURL=picker-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","HueStrip","SatBrightPad","jsx","_jsx","jsxs","_jsxs","PickerTab","hue","sat","bright","hueStripHeight","disabled","t","onHueChange","onSatBrightChange","style","gap","padding","children","thumbBorder","onChange","height"],"sourceRoot":"../../../src","sources":["components/picker-tab.tsx"],"mappings":";;AAAA,SACEA,IAAI,QACC,cAAc;AAErB,SAASC,QAAQ,QAAQ,gBAAa;AACtC,SAASC,YAAY,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAahD,OAAO,SAASC,SAASA,CAAC;EACxBC,GAAG;EACHC,GAAG;EACHC,MAAM;EACNC,cAAc;EACdC,QAAQ;EACRC,CAAC;EACDC,WAAW;EACXC;AACc,CAAC,EAAE;EACjB,oBACET,KAAA,CAACN,IAAI;IAACgB,KAAK,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,OAAO,EAAE;IAAG,CAAE;IAAAC,QAAA,gBACpCf,IAAA,CAACF,YAAY;MACXM,GAAG,EAAEA,GAAI;MACTC,GAAG,EAAEA,GAAI;MACTC,MAAM,EAAEA,MAAO;MACfE,QAAQ,EAAEA,QAAS;MACnBQ,WAAW,EAAEP,CAAC,CAACO,WAAY;MAC3BC,QAAQ,EAAEN;IAAkB,CAC7B,CAAC,eACFX,IAAA,CAACH,QAAQ;MACPO,GAAG,EAAEA,GAAI;MACTc,MAAM,EAAEX,cAAe;MACvBC,QAAQ,EAAEA,QAAS;MACnBQ,WAAW,EAAEP,CAAC,CAACO,WAAY;MAC3BC,QAAQ,EAAEP;IAAY,CACvB,CAAC;EAAA,CACE,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ import { Pressable, Text, View } from "react-native";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ export function RecentTab({
6
+ recentColors,
7
+ disabled,
8
+ t,
9
+ labels,
10
+ onSelect,
11
+ onClear
12
+ }) {
13
+ if (recentColors.length === 0) {
14
+ return /*#__PURE__*/_jsxs(View, {
15
+ style: {
16
+ padding: 20,
17
+ alignItems: "center",
18
+ justifyContent: "center",
19
+ minHeight: 120
20
+ },
21
+ children: [/*#__PURE__*/_jsx(Text, {
22
+ style: {
23
+ color: t.textDim,
24
+ fontSize: 14
25
+ },
26
+ children: labels.noSavedColors
27
+ }), /*#__PURE__*/_jsx(Text, {
28
+ style: {
29
+ color: t.textDim,
30
+ fontSize: 12,
31
+ marginTop: 4
32
+ },
33
+ children: labels.noSavedColorsHint
34
+ })]
35
+ });
36
+ }
37
+ return /*#__PURE__*/_jsxs(View, {
38
+ style: {
39
+ padding: 20,
40
+ gap: 16
41
+ },
42
+ children: [/*#__PURE__*/_jsxs(View, {
43
+ style: {
44
+ flexDirection: "row",
45
+ justifyContent: "space-between",
46
+ alignItems: "center"
47
+ },
48
+ children: [/*#__PURE__*/_jsx(Text, {
49
+ style: {
50
+ color: t.textMuted,
51
+ fontSize: 11,
52
+ fontWeight: "700",
53
+ letterSpacing: 1,
54
+ textTransform: "uppercase"
55
+ },
56
+ children: labels.savedColors
57
+ }), /*#__PURE__*/_jsx(Pressable, {
58
+ onPress: onClear,
59
+ children: /*#__PURE__*/_jsx(Text, {
60
+ style: {
61
+ color: t.textDim,
62
+ fontSize: 12,
63
+ fontWeight: "600"
64
+ },
65
+ children: labels.clearAll
66
+ })
67
+ })]
68
+ }), /*#__PURE__*/_jsx(View, {
69
+ style: {
70
+ flexDirection: "row",
71
+ flexWrap: "wrap",
72
+ gap: 10
73
+ },
74
+ children: recentColors.map((c, i) => /*#__PURE__*/_jsx(Pressable, {
75
+ onPress: () => onSelect(c),
76
+ disabled: disabled,
77
+ style: {
78
+ width: 44,
79
+ height: 44,
80
+ borderRadius: 10,
81
+ backgroundColor: c,
82
+ borderWidth: 1,
83
+ borderColor: t.border
84
+ }
85
+ }, `${c}-${i}`))
86
+ })]
87
+ });
88
+ }
89
+ //# sourceMappingURL=recent-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Pressable","Text","View","jsx","_jsx","jsxs","_jsxs","RecentTab","recentColors","disabled","t","labels","onSelect","onClear","length","style","padding","alignItems","justifyContent","minHeight","children","color","textDim","fontSize","noSavedColors","marginTop","noSavedColorsHint","gap","flexDirection","textMuted","fontWeight","letterSpacing","textTransform","savedColors","onPress","clearAll","flexWrap","map","c","i","width","height","borderRadius","backgroundColor","borderWidth","borderColor","border"],"sourceRoot":"../../../src","sources":["components/recent-tab.tsx"],"mappings":";;AAAA,SACEA,SAAS,EACTC,IAAI,EACJC,IAAI,QACC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYtB,OAAO,SAASC,SAASA,CAAC;EACxBC,YAAY;EACZC,QAAQ;EACRC,CAAC;EACDC,MAAM;EACNC,QAAQ;EACRC;AACc,CAAC,EAAE;EACjB,IAAIL,YAAY,CAACM,MAAM,KAAK,CAAC,EAAE;IAC7B,oBACER,KAAA,CAACJ,IAAI;MACHa,KAAK,EAAE;QACLC,OAAO,EAAE,EAAE;QACXC,UAAU,EAAE,QAAQ;QACpBC,cAAc,EAAE,QAAQ;QACxBC,SAAS,EAAE;MACb,CAAE;MAAAC,QAAA,gBAEFhB,IAAA,CAACH,IAAI;QAACc,KAAK,EAAE;UAAEM,KAAK,EAAEX,CAAC,CAACY,OAAO;UAAEC,QAAQ,EAAE;QAAG,CAAE;QAAAH,QAAA,EAC7CT,MAAM,CAACa;MAAa,CACjB,CAAC,eACPpB,IAAA,CAACH,IAAI;QAACc,KAAK,EAAE;UAAEM,KAAK,EAAEX,CAAC,CAACY,OAAO;UAAEC,QAAQ,EAAE,EAAE;UAAEE,SAAS,EAAE;QAAE,CAAE;QAAAL,QAAA,EAC3DT,MAAM,CAACe;MAAiB,CACrB,CAAC;IAAA,CACH,CAAC;EAEX;EAEA,oBACEpB,KAAA,CAACJ,IAAI;IAACa,KAAK,EAAE;MAAEC,OAAO,EAAE,EAAE;MAAEW,GAAG,EAAE;IAAG,CAAE;IAAAP,QAAA,gBACpCd,KAAA,CAACJ,IAAI;MACHa,KAAK,EAAE;QACLa,aAAa,EAAE,KAAK;QACpBV,cAAc,EAAE,eAAe;QAC/BD,UAAU,EAAE;MACd,CAAE;MAAAG,QAAA,gBAEFhB,IAAA,CAACH,IAAI;QACHc,KAAK,EAAE;UACLM,KAAK,EAAEX,CAAC,CAACmB,SAAS;UAClBN,QAAQ,EAAE,EAAE;UACZO,UAAU,EAAE,KAAK;UACjBC,aAAa,EAAE,CAAC;UAChBC,aAAa,EAAE;QACjB,CAAE;QAAAZ,QAAA,EAEDT,MAAM,CAACsB;MAAW,CACf,CAAC,eACP7B,IAAA,CAACJ,SAAS;QAACkC,OAAO,EAAErB,OAAQ;QAAAO,QAAA,eAC1BhB,IAAA,CAACH,IAAI;UAACc,KAAK,EAAE;YAAEM,KAAK,EAAEX,CAAC,CAACY,OAAO;YAAEC,QAAQ,EAAE,EAAE;YAAEO,UAAU,EAAE;UAAM,CAAE;UAAAV,QAAA,EAChET,MAAM,CAACwB;QAAQ,CACZ;MAAC,CACE,CAAC;IAAA,CACR,CAAC,eACP/B,IAAA,CAACF,IAAI;MAACa,KAAK,EAAE;QAAEa,aAAa,EAAE,KAAK;QAAEQ,QAAQ,EAAE,MAAM;QAAET,GAAG,EAAE;MAAG,CAAE;MAAAP,QAAA,EAC9DZ,YAAY,CAAC6B,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACrBnC,IAAA,CAACJ,SAAS;QAERkC,OAAO,EAAEA,CAAA,KAAMtB,QAAQ,CAAC0B,CAAC,CAAE;QAC3B7B,QAAQ,EAAEA,QAAS;QACnBM,KAAK,EAAE;UACLyB,KAAK,EAAE,EAAE;UACTC,MAAM,EAAE,EAAE;UACVC,YAAY,EAAE,EAAE;UAChBC,eAAe,EAAEL,CAAC;UAClBM,WAAW,EAAE,CAAC;UACdC,WAAW,EAAEnC,CAAC,CAACoC;QACjB;MAAE,GAVG,GAAGR,CAAC,IAAIC,CAAC,EAWf,CACF;IAAC,CACE,CAAC;EAAA,CACH,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback, useRef, useState } from "react";
4
+ import { PanResponder, View } from "react-native";
5
+ import Svg, { Defs, LinearGradient, Rect, Stop } from "react-native-svg";
6
+ import { hsbToHex } from "../utils/colors.js";
7
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
8
+ export function SatBrightPad({
9
+ hue,
10
+ sat,
11
+ bright,
12
+ disabled,
13
+ thumbBorder,
14
+ onChange
15
+ }) {
16
+ const containerRef = useRef(null);
17
+ const originRef = useRef(null);
18
+ const sizeRef = useRef(0);
19
+ const disabledRef = useRef(disabled);
20
+ const onChangeRef = useRef(onChange);
21
+ disabledRef.current = disabled;
22
+ onChangeRef.current = onChange;
23
+ const [layoutSize, setLayoutSize] = useState(0);
24
+ const calcValues = useCallback((pageX, pageY) => {
25
+ const s = sizeRef.current;
26
+ if (!originRef.current || s === 0) return null;
27
+ const x = Math.max(0, Math.min(pageX - originRef.current.x, s));
28
+ const y = Math.max(0, Math.min(pageY - originRef.current.y, s));
29
+ return {
30
+ s: Math.round(x / s * 100),
31
+ b: Math.round(100 - y / s * 100)
32
+ };
33
+ }, []);
34
+ const panResponder = useRef(PanResponder.create({
35
+ onStartShouldSetPanResponder: () => !disabledRef.current,
36
+ onStartShouldSetPanResponderCapture: () => !disabledRef.current,
37
+ onMoveShouldSetPanResponder: () => !disabledRef.current,
38
+ onMoveShouldSetPanResponderCapture: () => !disabledRef.current,
39
+ onPanResponderTerminationRequest: () => false,
40
+ onPanResponderGrant: evt => {
41
+ const {
42
+ pageX,
43
+ pageY
44
+ } = evt.nativeEvent;
45
+ containerRef.current?.measure((_x, _y, w, _h, ox, oy) => {
46
+ originRef.current = {
47
+ x: ox,
48
+ y: oy
49
+ };
50
+ sizeRef.current = w;
51
+ const vals = calcValues(pageX, pageY);
52
+ if (vals) onChangeRef.current(vals);
53
+ });
54
+ },
55
+ onPanResponderMove: evt => {
56
+ const {
57
+ pageX,
58
+ pageY
59
+ } = evt.nativeEvent;
60
+ const vals = calcValues(pageX, pageY);
61
+ if (vals) onChangeRef.current(vals);
62
+ }
63
+ })).current;
64
+ const thumbX = sat / 100 * layoutSize;
65
+ const thumbY = (100 - bright) / 100 * layoutSize;
66
+ const currentColor = hsbToHex(hue, sat, bright);
67
+ const hueColor = hsbToHex(hue, 100, 100);
68
+ return /*#__PURE__*/_jsx(View, {
69
+ ref: containerRef,
70
+ onLayout: e => {
71
+ const w = e.nativeEvent.layout.width;
72
+ setLayoutSize(w);
73
+ sizeRef.current = w;
74
+ },
75
+ style: {
76
+ width: "100%",
77
+ aspectRatio: 1,
78
+ borderRadius: 12,
79
+ overflow: "hidden"
80
+ },
81
+ ...panResponder.panHandlers,
82
+ children: layoutSize > 0 && /*#__PURE__*/_jsxs(_Fragment, {
83
+ children: [/*#__PURE__*/_jsxs(Svg, {
84
+ width: layoutSize,
85
+ height: layoutSize,
86
+ style: {
87
+ position: "absolute",
88
+ top: 0,
89
+ left: 0
90
+ },
91
+ children: [/*#__PURE__*/_jsx(Defs, {
92
+ children: /*#__PURE__*/_jsxs(LinearGradient, {
93
+ id: "grad_sat",
94
+ x1: "0",
95
+ y1: "0",
96
+ x2: "1",
97
+ y2: "0",
98
+ children: [/*#__PURE__*/_jsx(Stop, {
99
+ offset: "0",
100
+ stopColor: "#FFFFFF",
101
+ stopOpacity: 1
102
+ }), /*#__PURE__*/_jsx(Stop, {
103
+ offset: "1",
104
+ stopColor: hueColor,
105
+ stopOpacity: 1
106
+ })]
107
+ })
108
+ }), /*#__PURE__*/_jsx(Rect, {
109
+ x: "0",
110
+ y: "0",
111
+ width: layoutSize,
112
+ height: layoutSize,
113
+ fill: "url(#grad_sat)"
114
+ })]
115
+ }), /*#__PURE__*/_jsxs(Svg, {
116
+ width: layoutSize,
117
+ height: layoutSize,
118
+ style: {
119
+ position: "absolute",
120
+ top: 0,
121
+ left: 0
122
+ },
123
+ children: [/*#__PURE__*/_jsx(Defs, {
124
+ children: /*#__PURE__*/_jsxs(LinearGradient, {
125
+ id: "grad_bright",
126
+ x1: "0",
127
+ y1: "0",
128
+ x2: "0",
129
+ y2: "1",
130
+ children: [/*#__PURE__*/_jsx(Stop, {
131
+ offset: "0",
132
+ stopColor: "#000000",
133
+ stopOpacity: 0
134
+ }), /*#__PURE__*/_jsx(Stop, {
135
+ offset: "1",
136
+ stopColor: "#000000",
137
+ stopOpacity: 1
138
+ })]
139
+ })
140
+ }), /*#__PURE__*/_jsx(Rect, {
141
+ x: "0",
142
+ y: "0",
143
+ width: layoutSize,
144
+ height: layoutSize,
145
+ fill: "url(#grad_bright)"
146
+ })]
147
+ }), /*#__PURE__*/_jsx(View, {
148
+ style: {
149
+ position: "absolute",
150
+ left: thumbX - 12,
151
+ top: thumbY - 12,
152
+ width: 24,
153
+ height: 24,
154
+ borderRadius: 12,
155
+ borderWidth: 3,
156
+ borderColor: thumbBorder,
157
+ backgroundColor: currentColor,
158
+ shadowColor: "#000",
159
+ shadowOffset: {
160
+ width: 0,
161
+ height: 2
162
+ },
163
+ shadowOpacity: 0.4,
164
+ shadowRadius: 4,
165
+ elevation: 5
166
+ }
167
+ })]
168
+ })
169
+ });
170
+ }
171
+ //# sourceMappingURL=sat-bright-pad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useRef","useState","PanResponder","View","Svg","Defs","LinearGradient","Rect","Stop","hsbToHex","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SatBrightPad","hue","sat","bright","disabled","thumbBorder","onChange","containerRef","originRef","sizeRef","disabledRef","onChangeRef","current","layoutSize","setLayoutSize","calcValues","pageX","pageY","s","x","Math","max","min","y","round","b","panResponder","create","onStartShouldSetPanResponder","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderTerminationRequest","onPanResponderGrant","evt","nativeEvent","measure","_x","_y","w","_h","ox","oy","vals","onPanResponderMove","thumbX","thumbY","currentColor","hueColor","ref","onLayout","e","layout","width","style","aspectRatio","borderRadius","overflow","panHandlers","children","height","position","top","left","id","x1","y1","x2","y2","offset","stopColor","stopOpacity","fill","borderWidth","borderColor","backgroundColor","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation"],"sourceRoot":"../../../src","sources":["components/sat-bright-pad.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SACEC,YAAY,EACZC,IAAI,QACC,cAAc;AACrB,OAAOC,GAAG,IAAIC,IAAI,EAAEC,cAAc,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AACxE,SAASC,QAAQ,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAW3C,OAAO,SAASC,YAAYA,CAAC;EAC3BC,GAAG;EACHC,GAAG;EACHC,MAAM;EACNC,QAAQ;EACRC,WAAW;EACXC;AACiB,CAAC,EAAE;EACpB,MAAMC,YAAY,GAAGvB,MAAM,CAAkC,IAAI,CAAC;EAClE,MAAMwB,SAAS,GAAGxB,MAAM,CAAkC,IAAI,CAAC;EAC/D,MAAMyB,OAAO,GAAGzB,MAAM,CAAC,CAAC,CAAC;EACzB,MAAM0B,WAAW,GAAG1B,MAAM,CAACoB,QAAQ,CAAC;EACpC,MAAMO,WAAW,GAAG3B,MAAM,CAACsB,QAAQ,CAAC;EACpCI,WAAW,CAACE,OAAO,GAAGR,QAAQ;EAC9BO,WAAW,CAACC,OAAO,GAAGN,QAAQ;EAE9B,MAAM,CAACO,UAAU,EAAEC,aAAa,CAAC,GAAG7B,QAAQ,CAAC,CAAC,CAAC;EAE/C,MAAM8B,UAAU,GAAGhC,WAAW,CAAC,CAACiC,KAAa,EAAEC,KAAa,KAAK;IAC/D,MAAMC,CAAC,GAAGT,OAAO,CAACG,OAAO;IACzB,IAAI,CAACJ,SAAS,CAACI,OAAO,IAAIM,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;IAC9C,MAAMC,CAAC,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACN,KAAK,GAAGR,SAAS,CAACI,OAAO,CAACO,CAAC,EAAED,CAAC,CAAC,CAAC;IAC/D,MAAMK,CAAC,GAAGH,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACL,KAAK,GAAGT,SAAS,CAACI,OAAO,CAACW,CAAC,EAAEL,CAAC,CAAC,CAAC;IAC/D,OAAO;MACLA,CAAC,EAAEE,IAAI,CAACI,KAAK,CAAEL,CAAC,GAAGD,CAAC,GAAI,GAAG,CAAC;MAC5BO,CAAC,EAAEL,IAAI,CAACI,KAAK,CAAC,GAAG,GAAID,CAAC,GAAGL,CAAC,GAAI,GAAG;IACnC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMQ,YAAY,GAAG1C,MAAM,CACzBE,YAAY,CAACyC,MAAM,CAAC;IAClBC,4BAA4B,EAAEA,CAAA,KAAM,CAAClB,WAAW,CAACE,OAAO;IACxDiB,mCAAmC,EAAEA,CAAA,KAAM,CAACnB,WAAW,CAACE,OAAO;IAC/DkB,2BAA2B,EAAEA,CAAA,KAAM,CAACpB,WAAW,CAACE,OAAO;IACvDmB,kCAAkC,EAAEA,CAAA,KAAM,CAACrB,WAAW,CAACE,OAAO;IAC9DoB,gCAAgC,EAAEA,CAAA,KAAM,KAAK;IAC7CC,mBAAmB,EAAGC,GAAG,IAAK;MAC5B,MAAM;QAAElB,KAAK;QAAEC;MAAM,CAAC,GAAGiB,GAAG,CAACC,WAAW;MACxC5B,YAAY,CAACK,OAAO,EAAEwB,OAAO,CAAC,CAACC,EAAU,EAAEC,EAAU,EAAEC,CAAS,EAAEC,EAAU,EAAEC,EAAU,EAAEC,EAAU,KAAK;QACvGlC,SAAS,CAACI,OAAO,GAAG;UAAEO,CAAC,EAAEsB,EAAE;UAAElB,CAAC,EAAEmB;QAAG,CAAC;QACpCjC,OAAO,CAACG,OAAO,GAAG2B,CAAC;QACnB,MAAMI,IAAI,GAAG5B,UAAU,CAACC,KAAK,EAAEC,KAAK,CAAC;QACrC,IAAI0B,IAAI,EAAEhC,WAAW,CAACC,OAAO,CAAC+B,IAAI,CAAC;MACrC,CAAC,CAAC;IACJ,CAAC;IACDC,kBAAkB,EAAGV,GAAG,IAAK;MAC3B,MAAM;QAAElB,KAAK;QAAEC;MAAM,CAAC,GAAGiB,GAAG,CAACC,WAAW;MACxC,MAAMQ,IAAI,GAAG5B,UAAU,CAACC,KAAK,EAAEC,KAAK,CAAC;MACrC,IAAI0B,IAAI,EAAEhC,WAAW,CAACC,OAAO,CAAC+B,IAAI,CAAC;IACrC;EACF,CAAC,CACH,CAAC,CAAC/B,OAAO;EAET,MAAMiC,MAAM,GAAI3C,GAAG,GAAG,GAAG,GAAIW,UAAU;EACvC,MAAMiC,MAAM,GAAI,CAAC,GAAG,GAAG3C,MAAM,IAAI,GAAG,GAAIU,UAAU;EAClD,MAAMkC,YAAY,GAAGtD,QAAQ,CAACQ,GAAG,EAAEC,GAAG,EAAEC,MAAM,CAAC;EAC/C,MAAM6C,QAAQ,GAAGvD,QAAQ,CAACQ,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAExC,oBACEN,IAAA,CAACR,IAAI;IACH8D,GAAG,EAAE1C,YAAa;IAClB2C,QAAQ,EAAGC,CAAC,IAAK;MACf,MAAMZ,CAAC,GAAGY,CAAC,CAAChB,WAAW,CAACiB,MAAM,CAACC,KAAK;MACpCvC,aAAa,CAACyB,CAAC,CAAC;MAChB9B,OAAO,CAACG,OAAO,GAAG2B,CAAC;IACrB,CAAE;IACFe,KAAK,EAAE;MACLD,KAAK,EAAE,MAAM;MACbE,WAAW,EAAE,CAAC;MACdC,YAAY,EAAE,EAAE;MAChBC,QAAQ,EAAE;IACZ,CAAE;IAAA,GACE/B,YAAY,CAACgC,WAAW;IAAAC,QAAA,EAE3B9C,UAAU,GAAG,CAAC,iBACbhB,KAAA,CAAAE,SAAA;MAAA4D,QAAA,gBACE9D,KAAA,CAACT,GAAG;QACFiE,KAAK,EAAExC,UAAW;QAClB+C,MAAM,EAAE/C,UAAW;QACnByC,KAAK,EAAE;UAAEO,QAAQ,EAAE,UAAU;UAAEC,GAAG,EAAE,CAAC;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAJ,QAAA,gBAEjDhE,IAAA,CAACN,IAAI;UAAAsE,QAAA,eACH9D,KAAA,CAACP,cAAc;YAAC0E,EAAE,EAAC,UAAU;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAAAT,QAAA,gBACvDhE,IAAA,CAACH,IAAI;cAAC6E,MAAM,EAAC,GAAG;cAACC,SAAS,EAAC,SAAS;cAACC,WAAW,EAAE;YAAE,CAAE,CAAC,eACvD5E,IAAA,CAACH,IAAI;cAAC6E,MAAM,EAAC,GAAG;cAACC,SAAS,EAAEtB,QAAS;cAACuB,WAAW,EAAE;YAAE,CAAE,CAAC;UAAA,CAC1C;QAAC,CACb,CAAC,eACP5E,IAAA,CAACJ,IAAI;UACH4B,CAAC,EAAC,GAAG;UACLI,CAAC,EAAC,GAAG;UACL8B,KAAK,EAAExC,UAAW;UAClB+C,MAAM,EAAE/C,UAAW;UACnB2D,IAAI,EAAC;QAAgB,CACtB,CAAC;MAAA,CACC,CAAC,eACN3E,KAAA,CAACT,GAAG;QACFiE,KAAK,EAAExC,UAAW;QAClB+C,MAAM,EAAE/C,UAAW;QACnByC,KAAK,EAAE;UAAEO,QAAQ,EAAE,UAAU;UAAEC,GAAG,EAAE,CAAC;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAJ,QAAA,gBAEjDhE,IAAA,CAACN,IAAI;UAAAsE,QAAA,eACH9D,KAAA,CAACP,cAAc;YAAC0E,EAAE,EAAC,aAAa;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAAAT,QAAA,gBAC1DhE,IAAA,CAACH,IAAI;cAAC6E,MAAM,EAAC,GAAG;cAACC,SAAS,EAAC,SAAS;cAACC,WAAW,EAAE;YAAE,CAAE,CAAC,eACvD5E,IAAA,CAACH,IAAI;cAAC6E,MAAM,EAAC,GAAG;cAACC,SAAS,EAAC,SAAS;cAACC,WAAW,EAAE;YAAE,CAAE,CAAC;UAAA,CACzC;QAAC,CACb,CAAC,eACP5E,IAAA,CAACJ,IAAI;UACH4B,CAAC,EAAC,GAAG;UACLI,CAAC,EAAC,GAAG;UACL8B,KAAK,EAAExC,UAAW;UAClB+C,MAAM,EAAE/C,UAAW;UACnB2D,IAAI,EAAC;QAAmB,CACzB,CAAC;MAAA,CACC,CAAC,eACN7E,IAAA,CAACR,IAAI;QACHmE,KAAK,EAAE;UACLO,QAAQ,EAAE,UAAU;UACpBE,IAAI,EAAElB,MAAM,GAAG,EAAE;UACjBiB,GAAG,EAAEhB,MAAM,GAAG,EAAE;UAChBO,KAAK,EAAE,EAAE;UACTO,MAAM,EAAE,EAAE;UACVJ,YAAY,EAAE,EAAE;UAChBiB,WAAW,EAAE,CAAC;UACdC,WAAW,EAAErE,WAAW;UACxBsE,eAAe,EAAE5B,YAAY;UAC7B6B,WAAW,EAAE,MAAM;UACnBC,YAAY,EAAE;YAAExB,KAAK,EAAE,CAAC;YAAEO,MAAM,EAAE;UAAE,CAAC;UACrCkB,aAAa,EAAE,GAAG;UAClBC,YAAY,EAAE,CAAC;UACfC,SAAS,EAAE;QACb;MAAE,CACH,CAAC;IAAA,CACF;EACH,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ import { Pressable, Text, View } from "react-native";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export function TabBar({
6
+ tabs,
7
+ active,
8
+ onSelect,
9
+ t,
10
+ labels
11
+ }) {
12
+ return /*#__PURE__*/_jsx(View, {
13
+ style: {
14
+ flexDirection: "row",
15
+ borderBottomWidth: 1,
16
+ borderBottomColor: t.border
17
+ },
18
+ children: tabs.map(tab => {
19
+ const isActive = tab === active;
20
+ return /*#__PURE__*/_jsx(Pressable, {
21
+ onPress: () => onSelect(tab),
22
+ style: {
23
+ flex: 1,
24
+ paddingVertical: 12,
25
+ alignItems: "center",
26
+ borderBottomWidth: 2,
27
+ borderBottomColor: isActive ? t.tabIndicator : "transparent"
28
+ },
29
+ children: /*#__PURE__*/_jsx(Text, {
30
+ style: {
31
+ fontSize: 13,
32
+ fontWeight: "600",
33
+ color: isActive ? t.tabActive : t.tabInactive
34
+ },
35
+ children: labels[tab]
36
+ })
37
+ }, tab);
38
+ })
39
+ });
40
+ }
41
+ //# sourceMappingURL=tab-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Pressable","Text","View","jsx","_jsx","TabBar","tabs","active","onSelect","t","labels","style","flexDirection","borderBottomWidth","borderBottomColor","border","children","map","tab","isActive","onPress","flex","paddingVertical","alignItems","tabIndicator","fontSize","fontWeight","color","tabActive","tabInactive"],"sourceRoot":"../../../src","sources":["components/tab-bar.tsx"],"mappings":";;AAAA,SACEA,SAAS,EACTC,IAAI,EACJC,IAAI,QACC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAWtB,OAAO,SAASC,MAAMA,CAAC;EACrBC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC,CAAC;EACDC;AACW,CAAC,EAAE;EACd,oBACEN,IAAA,CAACF,IAAI;IACHS,KAAK,EAAE;MACLC,aAAa,EAAE,KAAK;MACpBC,iBAAiB,EAAE,CAAC;MACpBC,iBAAiB,EAAEL,CAAC,CAACM;IACvB,CAAE;IAAAC,QAAA,EAEDV,IAAI,CAACW,GAAG,CAAEC,GAAG,IAAK;MACjB,MAAMC,QAAQ,GAAGD,GAAG,KAAKX,MAAM;MAC/B,oBACEH,IAAA,CAACJ,SAAS;QAERoB,OAAO,EAAEA,CAAA,KAAMZ,QAAQ,CAACU,GAAG,CAAE;QAC7BP,KAAK,EAAE;UACLU,IAAI,EAAE,CAAC;UACPC,eAAe,EAAE,EAAE;UACnBC,UAAU,EAAE,QAAQ;UACpBV,iBAAiB,EAAE,CAAC;UACpBC,iBAAiB,EAAEK,QAAQ,GAAGV,CAAC,CAACe,YAAY,GAAG;QACjD,CAAE;QAAAR,QAAA,eAEFZ,IAAA,CAACH,IAAI;UACHU,KAAK,EAAE;YACLc,QAAQ,EAAE,EAAE;YACZC,UAAU,EAAE,KAAK;YACjBC,KAAK,EAAER,QAAQ,GAAGV,CAAC,CAACmB,SAAS,GAAGnB,CAAC,CAACoB;UACpC,CAAE;UAAAb,QAAA,EAEDN,MAAM,CAACQ,GAAG;QAAC,CACR;MAAC,GAlBFA,GAmBI,CAAC;IAEhB,CAAC;EAAC,CACE,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ import { Text, TextInput, View } from "react-native";
4
+ import { hexToRgb } from "../utils/colors.js";
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ export function ValuesTab({
7
+ hue,
8
+ sat,
9
+ bright,
10
+ currentHex,
11
+ hexInput,
12
+ disabled,
13
+ t,
14
+ onHexInputChange,
15
+ onHexSubmit,
16
+ onHexInputFocus,
17
+ onHexInputBlur
18
+ }) {
19
+ const rgb = hexToRgb(currentHex);
20
+ return /*#__PURE__*/_jsxs(View, {
21
+ style: {
22
+ padding: 20,
23
+ gap: 16
24
+ },
25
+ children: [/*#__PURE__*/_jsxs(View, {
26
+ style: {
27
+ flexDirection: "row",
28
+ gap: 8
29
+ },
30
+ children: [/*#__PURE__*/_jsx(TextInput, {
31
+ value: hexInput,
32
+ onChangeText: onHexInputChange,
33
+ onBlur: () => {
34
+ onHexInputBlur();
35
+ onHexSubmit();
36
+ },
37
+ onFocus: onHexInputFocus,
38
+ onSubmitEditing: onHexSubmit,
39
+ maxLength: 7,
40
+ autoCapitalize: "characters",
41
+ autoCorrect: false,
42
+ editable: !disabled,
43
+ style: {
44
+ flex: 1,
45
+ backgroundColor: t.inputBg,
46
+ borderWidth: 1,
47
+ borderColor: t.border,
48
+ borderRadius: 10,
49
+ paddingHorizontal: 14,
50
+ paddingVertical: 12,
51
+ color: t.text,
52
+ fontSize: 16,
53
+ fontWeight: "500",
54
+ fontVariant: ["tabular-nums"]
55
+ }
56
+ }), /*#__PURE__*/_jsx(View, {
57
+ style: {
58
+ width: 48,
59
+ height: 48,
60
+ borderRadius: 10,
61
+ backgroundColor: currentHex,
62
+ borderWidth: 1,
63
+ borderColor: t.border
64
+ }
65
+ })]
66
+ }), /*#__PURE__*/_jsx(View, {
67
+ style: {
68
+ flexDirection: "row",
69
+ gap: 8
70
+ },
71
+ children: [{
72
+ label: "R",
73
+ value: rgb.r,
74
+ color: "#FF6B6B"
75
+ }, {
76
+ label: "G",
77
+ value: rgb.g,
78
+ color: "#51CF66"
79
+ }, {
80
+ label: "B",
81
+ value: rgb.b,
82
+ color: "#339AF0"
83
+ }].map(({
84
+ label,
85
+ value: val,
86
+ color
87
+ }) => /*#__PURE__*/_jsxs(View, {
88
+ style: {
89
+ flex: 1,
90
+ backgroundColor: t.surface,
91
+ borderRadius: 10,
92
+ paddingVertical: 10,
93
+ alignItems: "center"
94
+ },
95
+ children: [/*#__PURE__*/_jsx(Text, {
96
+ style: {
97
+ color,
98
+ fontSize: 10,
99
+ fontWeight: "700",
100
+ letterSpacing: 1
101
+ },
102
+ children: label
103
+ }), /*#__PURE__*/_jsx(Text, {
104
+ style: {
105
+ color: t.text,
106
+ fontSize: 20,
107
+ fontWeight: "600",
108
+ fontVariant: ["tabular-nums"],
109
+ marginTop: 2
110
+ },
111
+ children: val
112
+ })]
113
+ }, label))
114
+ }), /*#__PURE__*/_jsx(View, {
115
+ style: {
116
+ flexDirection: "row",
117
+ gap: 8
118
+ },
119
+ children: [{
120
+ label: "H",
121
+ value: `${hue}°`
122
+ }, {
123
+ label: "S",
124
+ value: `${sat}%`
125
+ }, {
126
+ label: "B",
127
+ value: `${bright}%`
128
+ }].map(({
129
+ label,
130
+ value: val
131
+ }) => /*#__PURE__*/_jsxs(View, {
132
+ style: {
133
+ flex: 1,
134
+ backgroundColor: t.surface,
135
+ borderRadius: 10,
136
+ paddingVertical: 10,
137
+ alignItems: "center"
138
+ },
139
+ children: [/*#__PURE__*/_jsx(Text, {
140
+ style: {
141
+ color: t.textMuted,
142
+ fontSize: 10,
143
+ fontWeight: "700",
144
+ letterSpacing: 1
145
+ },
146
+ children: label
147
+ }), /*#__PURE__*/_jsx(Text, {
148
+ style: {
149
+ color: t.text,
150
+ fontSize: 20,
151
+ fontWeight: "600",
152
+ fontVariant: ["tabular-nums"],
153
+ marginTop: 2
154
+ },
155
+ children: val
156
+ })]
157
+ }, label))
158
+ })]
159
+ });
160
+ }
161
+ //# sourceMappingURL=values-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Text","TextInput","View","hexToRgb","jsx","_jsx","jsxs","_jsxs","ValuesTab","hue","sat","bright","currentHex","hexInput","disabled","t","onHexInputChange","onHexSubmit","onHexInputFocus","onHexInputBlur","rgb","style","padding","gap","children","flexDirection","value","onChangeText","onBlur","onFocus","onSubmitEditing","maxLength","autoCapitalize","autoCorrect","editable","flex","backgroundColor","inputBg","borderWidth","borderColor","border","borderRadius","paddingHorizontal","paddingVertical","color","text","fontSize","fontWeight","fontVariant","width","height","label","r","g","b","map","val","surface","alignItems","letterSpacing","marginTop","textMuted"],"sourceRoot":"../../../src","sources":["components/values-tab.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { ColorPicker } from "./components/color-picker.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ColorPicker"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAA+B,8BAA2B","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ export const DEFAULT_LABELS = {
4
+ picker: "Picker",
5
+ values: "Values",
6
+ recent: "Recent",
7
+ save: "Save",
8
+ savedColors: "Saved Colors",
9
+ clearAll: "Clear All",
10
+ noSavedColors: "No saved colors yet",
11
+ noSavedColorsHint: 'Tap "Save" to add colors here'
12
+ };
13
+ export const themes = {
14
+ dark: {
15
+ background: "#1A1A2E",
16
+ surface: "rgba(255,255,255,0.06)",
17
+ border: "rgba(255,255,255,0.08)",
18
+ text: "#FFFFFF",
19
+ textMuted: "rgba(255,255,255,0.4)",
20
+ textDim: "rgba(255,255,255,0.2)",
21
+ inputBg: "rgba(255,255,255,0.08)",
22
+ thumbBorder: "#FFFFFF",
23
+ overlay: "rgba(0,0,0,0.6)",
24
+ tabActive: "#FFFFFF",
25
+ tabInactive: "rgba(255,255,255,0.3)",
26
+ tabIndicator: "#FFFFFF"
27
+ },
28
+ light: {
29
+ background: "#FFFFFF",
30
+ surface: "rgba(0,0,0,0.04)",
31
+ border: "rgba(0,0,0,0.08)",
32
+ text: "#000000",
33
+ textMuted: "rgba(0,0,0,0.5)",
34
+ textDim: "rgba(0,0,0,0.2)",
35
+ inputBg: "rgba(0,0,0,0.05)",
36
+ thumbBorder: "#FFFFFF",
37
+ overlay: "rgba(0,0,0,0.4)",
38
+ tabActive: "#000000",
39
+ tabInactive: "rgba(0,0,0,0.3)",
40
+ tabIndicator: "#000000"
41
+ }
42
+ };
43
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_LABELS","picker","values","recent","save","savedColors","clearAll","noSavedColors","noSavedColorsHint","themes","dark","background","surface","border","text","textMuted","textDim","inputBg","thumbBorder","overlay","tabActive","tabInactive","tabIndicator","light"],"sourceRoot":"../../../src","sources":["shared/const.ts"],"mappings":";;AAEA,OAAO,MAAMA,cAA2C,GAAG;EACzDC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,MAAM;EACZC,WAAW,EAAE,cAAc;EAC3BC,QAAQ,EAAE,WAAW;EACrBC,aAAa,EAAE,qBAAqB;EACpCC,iBAAiB,EAAE;AACrB,CAAC;AAED,OAAO,MAAMC,MAAM,GAAG;EACpBC,IAAI,EAAE;IACJC,UAAU,EAAE,SAAS;IACrBC,OAAO,EAAE,wBAAwB;IACjCC,MAAM,EAAE,wBAAwB;IAChCC,IAAI,EAAE,SAAS;IACfC,SAAS,EAAE,uBAAuB;IAClCC,OAAO,EAAE,uBAAuB;IAChCC,OAAO,EAAE,wBAAwB;IACjCC,WAAW,EAAE,SAAS;IACtBC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAE,SAAS;IACpBC,WAAW,EAAE,uBAAuB;IACpCC,YAAY,EAAE;EAChB,CAAC;EACDC,KAAK,EAAE;IACLZ,UAAU,EAAE,SAAS;IACrBC,OAAO,EAAE,kBAAkB;IAC3BC,MAAM,EAAE,kBAAkB;IAC1BC,IAAI,EAAE,SAAS;IACfC,SAAS,EAAE,iBAAiB;IAC5BC,OAAO,EAAE,iBAAiB;IAC1BC,OAAO,EAAE,kBAAkB;IAC3BC,WAAW,EAAE,SAAS;IACtBC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAE,SAAS;IACpBC,WAAW,EAAE,iBAAiB;IAC9BC,YAAY,EAAE;EAChB;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/misc.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ export function hsbToHex(h, s, b) {
4
+ const s1 = s / 100;
5
+ const b1 = b / 100;
6
+ const k = n => (n + h / 60) % 6;
7
+ const f = n => b1 * (1 - s1 * Math.max(0, Math.min(k(n), 4 - k(n), 1)));
8
+ const toHex = v => Math.round(v * 255).toString(16).padStart(2, "0");
9
+ return `#${toHex(f(5))}${toHex(f(3))}${toHex(f(1))}`;
10
+ }
11
+ export function hexToHsb(hex) {
12
+ const clean = hex.replace("#", "");
13
+ const full = clean.length === 3 ? clean.split("").map(c => c + c).join("") : clean;
14
+ const r = parseInt(full.slice(0, 2), 16) / 255;
15
+ const g = parseInt(full.slice(2, 4), 16) / 255;
16
+ const b = parseInt(full.slice(4, 6), 16) / 255;
17
+ const max = Math.max(r, g, b);
18
+ const min = Math.min(r, g, b);
19
+ const d = max - min;
20
+ let h = 0;
21
+ if (d !== 0) {
22
+ if (max === r) h = ((g - b) / d + 6) % 6;else if (max === g) h = (b - r) / d + 2;else h = (r - g) / d + 4;
23
+ h *= 60;
24
+ }
25
+ const s = max === 0 ? 0 : d / max * 100;
26
+ return {
27
+ h: Math.round(h),
28
+ s: Math.round(s),
29
+ b: Math.round(max * 100)
30
+ };
31
+ }
32
+ export function hexToRgb(hex) {
33
+ const clean = hex.replace("#", "");
34
+ return {
35
+ r: parseInt(clean.slice(0, 2), 16),
36
+ g: parseInt(clean.slice(2, 4), 16),
37
+ b: parseInt(clean.slice(4, 6), 16)
38
+ };
39
+ }
40
+ export function isValidHex(hex) {
41
+ return /^#?[0-9A-Fa-f]{6}$/.test(hex);
42
+ }
43
+ export function getContrastColor(hex) {
44
+ const {
45
+ r,
46
+ g,
47
+ b
48
+ } = hexToRgb(hex);
49
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
50
+ return luminance > 0.5 ? "#000000" : "#FFFFFF";
51
+ }
52
+ //# sourceMappingURL=colors.js.map