@alsha-research/picaso-ui 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +20 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +23 -23
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +20 -10
- package/dist/index.js.map +1 -1
- package/package.json +3 -6
package/dist/index.cjs
CHANGED
|
@@ -7868,7 +7868,7 @@ var THEME_SHADES = [
|
|
|
7868
7868
|
900
|
|
7869
7869
|
];
|
|
7870
7870
|
var THEME_ANCHOR_SHADE = 600;
|
|
7871
|
-
var THEME_MODE_ATTRIBUTE = "data-
|
|
7871
|
+
var THEME_MODE_ATTRIBUTE = "data-picaso-ui-mode";
|
|
7872
7872
|
var isThemeMode = (value) => value === "light" || value === "dark" || value === "system";
|
|
7873
7873
|
var themeModeStorageKey = (storageKey) => `${storageKey}-mode`;
|
|
7874
7874
|
var HEX_RE2 = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
@@ -7886,7 +7886,9 @@ var hexToRgb = (hex) => {
|
|
|
7886
7886
|
const n = parseInt(hex.slice(1), 16);
|
|
7887
7887
|
return [n >> 16 & 255, n >> 8 & 255, n & 255];
|
|
7888
7888
|
};
|
|
7889
|
-
var rgbToHex = ([r, g, b]) => `#${[r, g, b].map(
|
|
7889
|
+
var rgbToHex = ([r, g, b]) => `#${[r, g, b].map(
|
|
7890
|
+
(v) => Math.max(0, Math.min(255, Math.round(v))).toString(16).padStart(2, "0")
|
|
7891
|
+
).join("")}`;
|
|
7890
7892
|
var mix = (from, to, amount) => [
|
|
7891
7893
|
from[0] + (to[0] - from[0]) * amount,
|
|
7892
7894
|
from[1] + (to[1] - from[1]) * amount,
|
|
@@ -7910,7 +7912,8 @@ var SHADE_AMOUNT = {
|
|
|
7910
7912
|
};
|
|
7911
7913
|
var generateScale = (hex) => {
|
|
7912
7914
|
const base = normalizeHex2(hex);
|
|
7913
|
-
if (!base)
|
|
7915
|
+
if (!base)
|
|
7916
|
+
throw new Error(`generateScale: "${hex}" is not a valid hex colour`);
|
|
7914
7917
|
const rgb = hexToRgb(base);
|
|
7915
7918
|
const scale = {};
|
|
7916
7919
|
for (const shade of THEME_SHADES) {
|
|
@@ -7963,8 +7966,10 @@ var generateDarkScale = (scale) => {
|
|
|
7963
7966
|
for (const shade of THEME_SHADES) {
|
|
7964
7967
|
const keep = DARK_TINT_KEEP[shade];
|
|
7965
7968
|
const lighten = DARK_LIGHTEN[shade];
|
|
7966
|
-
if (keep !== void 0)
|
|
7967
|
-
|
|
7969
|
+
if (keep !== void 0)
|
|
7970
|
+
out[shade] = rgbToHex(mix(DARK_SURFACE, brand, keep));
|
|
7971
|
+
else if (lighten !== void 0)
|
|
7972
|
+
out[shade] = rgbToHex(mix(brand, WHITE, lighten));
|
|
7968
7973
|
else out[shade] = scale[shade];
|
|
7969
7974
|
}
|
|
7970
7975
|
return out;
|
|
@@ -7990,7 +7995,10 @@ var readStored = (key2) => {
|
|
|
7990
7995
|
const parsed = JSON.parse(raw);
|
|
7991
7996
|
const color = typeof parsed.color === "string" ? normalizeHex2(parsed.color) : null;
|
|
7992
7997
|
if (!color) return null;
|
|
7993
|
-
return {
|
|
7998
|
+
return {
|
|
7999
|
+
color,
|
|
8000
|
+
scale: isThemeScale(parsed.scale) ? parsed.scale : generateScale(color)
|
|
8001
|
+
};
|
|
7994
8002
|
} catch {
|
|
7995
8003
|
return null;
|
|
7996
8004
|
}
|
|
@@ -8005,7 +8013,7 @@ var writeStored = (key2, state) => {
|
|
|
8005
8013
|
var ThemeProvider = ({
|
|
8006
8014
|
children,
|
|
8007
8015
|
defaultColor,
|
|
8008
|
-
storageKey = "
|
|
8016
|
+
storageKey = "picaso-ui-theme",
|
|
8009
8017
|
nonce,
|
|
8010
8018
|
defaultMode = "system"
|
|
8011
8019
|
}) => {
|
|
@@ -8036,7 +8044,9 @@ var ThemeProvider = ({
|
|
|
8036
8044
|
useIsomorphicLayoutEffect(() => {
|
|
8037
8045
|
if (!storageKey) return;
|
|
8038
8046
|
try {
|
|
8039
|
-
const saved = window.localStorage.getItem(
|
|
8047
|
+
const saved = window.localStorage.getItem(
|
|
8048
|
+
themeModeStorageKey(storageKey)
|
|
8049
|
+
);
|
|
8040
8050
|
if (isThemeMode(saved)) setModeState(saved);
|
|
8041
8051
|
} catch {
|
|
8042
8052
|
}
|
|
@@ -8085,7 +8095,7 @@ var ThemeProvider = ({
|
|
|
8085
8095
|
return /* @__PURE__ */ import_react74.default.createElement(ThemeContext.Provider, { value }, state && /* @__PURE__ */ import_react74.default.createElement(
|
|
8086
8096
|
"style",
|
|
8087
8097
|
{
|
|
8088
|
-
"data-
|
|
8098
|
+
"data-picaso-ui-theme": "",
|
|
8089
8099
|
nonce,
|
|
8090
8100
|
dangerouslySetInnerHTML: { __html: themeToCss(state.scale) }
|
|
8091
8101
|
}
|
|
@@ -8265,7 +8275,7 @@ var ThemeModeSwitch_default = ThemeModeSwitch;
|
|
|
8265
8275
|
var import_react79 = __toESM(require("react"), 1);
|
|
8266
8276
|
var ThemeScript = ({
|
|
8267
8277
|
defaultMode = "system",
|
|
8268
|
-
storageKey = "
|
|
8278
|
+
storageKey = "picaso-ui-theme",
|
|
8269
8279
|
nonce
|
|
8270
8280
|
}) => {
|
|
8271
8281
|
const read = storageKey ? `var s=localStorage.getItem(${JSON.stringify(themeModeStorageKey(storageKey))});if(s==="light"||s==="dark"||s==="system")m=s;` : "";
|