@xanui/core 1.3.11 → 1.3.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xanui/core",
3
- "version": "1.3.11",
3
+ "version": "1.3.12",
4
4
  "description": "Xanui Core Library",
5
5
  "private": false,
6
6
  "main": "./index.cjs",
@@ -109,7 +109,7 @@ const ThemeProvider = (_a) => {
109
109
  if (noScrollbarCss)
110
110
  return;
111
111
  const cls = (cls) => `${index$2.themeRootClass(theme.name)} ${cls}`;
112
- let thumbSize = (_a = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.size) !== null && _a !== void 0 ? _a : 8;
112
+ let thumbSize = (_a = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.size) !== null && _a !== void 0 ? _a : 7;
113
113
  let thumbColor = (_b = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.thumbColor) !== null && _b !== void 0 ? _b : "var(--color-surface-muted)";
114
114
  let trackColor = (_c = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.trackColor) !== null && _c !== void 0 ? _c : "var(--color-surface-divider)";
115
115
  return index$1.css({
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.cjs","sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\"\nimport { ThemeOptionInput, ThemeOptions } from \"./types\"\nimport Tag from \"../Tag\"\nimport { TagComponentType, TagProps } from \"../Tag/types\"\nimport { createTheme, ThemeContex } from \"./core\"\nimport ThemeCssVars from \"./ThemeCssVars\"\nimport { css } from \"../css\"\nimport ServerStyleTag from \"../Tag/ServerStyleTag\"\nimport { useDocument } from \"../Document\";\nimport { themeRootClass } from \".\";\nimport { useCSSCacheId } from \"../css/CSSCacheProvider\";\n\nexport type ThemeProviderProps<T extends TagComponentType = 'div'> = TagProps<T> & {\n theme: ThemeOptionInput;\n onThemeChange?: (theme: ThemeOptions) => void\n isRoot?: boolean;\n noScrollbarCss?: boolean;\n scrollbar?: {\n size?: number;\n thumbColor?: string;\n trackColor?: string;\n }\n}\n\nconst ThemeProvider = <T extends TagComponentType = 'div'>({ children, theme: THEME, scrollbar, onThemeChange, isRoot, noScrollbarCss, ...props }: ThemeProviderProps<T>) => {\n const doc = useDocument()\n const cacheId = useCSSCacheId()\n\n const theme = React.useMemo(() => createTheme(THEME), [THEME])\n\n const themeGlobalStyle: any = React.useMemo(() => {\n const root_cls = `.xui-${theme.name}-theme-root`\n let gkeys = Object.keys(theme.globalStyle || {})\n let gstyles: any = {}\n gkeys.forEach((key) => {\n gstyles[`${root_cls} ${key}`] = theme.globalStyle[key as any]\n })\n\n return css({\n \"@global\": {\n ...gstyles,\n [root_cls]: ThemeCssVars(theme)\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [theme, doc])\n\n const resetCss = React.useMemo(() => {\n if (!isRoot) return\n return css({\n \"@global\": {\n \"*\": {\n m: 0,\n p: 0,\n outline: \"none\",\n boxSizing: \"border-box\",\n verticalAlign: \"baseline\",\n },\n \"html, body\": {\n height: \"100%\",\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n } as any,\n \"img, picture, video, canvas, svg\": {\n maxWidth: \"100%\",\n display: \"block\"\n },\n \"input, button, textarea, select\": {\n font: \"inherit\"\n },\n \"table\": {\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n },\n \"ol, ul\": {\n listStyle: \"none\",\n padding: 0,\n margin: 0,\n },\n \"a\": {\n display: \"inline-block\",\n color: \"inherit\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n \"&:hover\": {\n textDecoration: \"underline\"\n }\n },\n \"p, h1, h2, h3, h4, h5, h6\": {\n overflowWrap: \"break-word\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [])\n\n const scrollbarCss: any = React.useMemo(() => {\n if (noScrollbarCss) return;\n const cls = (cls: string) => `${themeRootClass(theme.name)} ${cls}`\n let thumbSize = scrollbar?.size ?? 8\n let thumbColor = scrollbar?.thumbColor ?? \"var(--color-surface-muted)\"\n let trackColor = scrollbar?.trackColor ?? \"var(--color-surface-divider)\"\n\n return css({\n \"@global\": {\n [cls('*::-webkit-scrollbar')]: {\n width: thumbSize,\n height: thumbSize,\n },\n [cls(\"*::-webkit-scrollbar-thumb\")]: {\n backgroundColor: thumbColor,\n borderRadius: \"6px\",\n },\n [cls(\"*::-webkit-scrollbar-thumb:hover\")]: {\n backgroundColor: thumbColor,\n },\n [cls(\"*::-webkit-scrollbar-track\")]: {\n backgroundColor: trackColor,\n borderRadius: \"6px\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n }) as any\n }, [noScrollbarCss, theme])\n\n return (\n <ThemeContex.Provider\n value={{\n theme,\n onChange: (t) => {\n onThemeChange && onThemeChange(t)\n }\n }}\n >\n {\n isRoot && <>\n <ServerStyleTag factory={resetCss as any} />\n {\n !noScrollbarCss && <ServerStyleTag factory={scrollbarCss} />\n }\n </>\n }\n <ServerStyleTag factory={themeGlobalStyle} />\n <Tag\n minHeight=\"100%\"\n bgcolor=\"surface.main\"\n color=\"surface.contrast\"\n fontSize=\"text\"\n fontWeight=\"text\"\n lineHeight=\"text\"\n fontFamily={`system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif`}\n {...props}\n sxr={{\n \"& a\": {\n color: \"primary.main\",\n },\n }}\n baseClass={`${theme.name}-theme-root`}\n direction={theme.rtl ? \"rtl\" : \"ltr\"}\n >\n {children}\n </Tag>\n </ThemeContex.Provider>\n )\n}\n\nexport default ThemeProvider"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;AAA2D;AACxD;AACA;AAEA;AAEA;AACG;AACA;;AAEA;AACG;AACH;AAEA;;;AAMG;AACA;;AAEF;AACJ;AAEA;AACG;;AACA;AACG;AACG;AACG;AACA;AACA;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACK;AACR;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACA;AACA;AACG;AACF;AACH;AACD;AACG;AACF;AACH;;AAED;AACA;;AAEF;;AAGJ;;AACG;;AACA;AACA;AACA;AACA;AAEA;AACG;AACG;AACG;AACA;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACH;;AAED;AACA;;AAEF;AACJ;AAEA;;AAIS;AACG;;AAEL;AAqBK;AACG;AACF;;AAShB;;"}
1
+ {"version":3,"file":"ThemeProvider.cjs","sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\"\nimport { ThemeOptionInput, ThemeOptions } from \"./types\"\nimport Tag from \"../Tag\"\nimport { TagComponentType, TagProps } from \"../Tag/types\"\nimport { createTheme, ThemeContex } from \"./core\"\nimport ThemeCssVars from \"./ThemeCssVars\"\nimport { css } from \"../css\"\nimport ServerStyleTag from \"../Tag/ServerStyleTag\"\nimport { useDocument } from \"../Document\";\nimport { themeRootClass } from \".\";\nimport { useCSSCacheId } from \"../css/CSSCacheProvider\";\n\nexport type ThemeProviderProps<T extends TagComponentType = 'div'> = TagProps<T> & {\n theme: ThemeOptionInput;\n onThemeChange?: (theme: ThemeOptions) => void\n isRoot?: boolean;\n noScrollbarCss?: boolean;\n scrollbar?: {\n size?: number;\n thumbColor?: string;\n trackColor?: string;\n }\n}\n\nconst ThemeProvider = <T extends TagComponentType = 'div'>({ children, theme: THEME, scrollbar, onThemeChange, isRoot, noScrollbarCss, ...props }: ThemeProviderProps<T>) => {\n const doc = useDocument()\n const cacheId = useCSSCacheId()\n\n const theme = React.useMemo(() => createTheme(THEME), [THEME])\n\n const themeGlobalStyle: any = React.useMemo(() => {\n const root_cls = `.xui-${theme.name}-theme-root`\n let gkeys = Object.keys(theme.globalStyle || {})\n let gstyles: any = {}\n gkeys.forEach((key) => {\n gstyles[`${root_cls} ${key}`] = theme.globalStyle[key as any]\n })\n\n return css({\n \"@global\": {\n ...gstyles,\n [root_cls]: ThemeCssVars(theme)\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [theme, doc])\n\n const resetCss = React.useMemo(() => {\n if (!isRoot) return\n return css({\n \"@global\": {\n \"*\": {\n m: 0,\n p: 0,\n outline: \"none\",\n boxSizing: \"border-box\",\n verticalAlign: \"baseline\",\n },\n \"html, body\": {\n height: \"100%\",\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n } as any,\n \"img, picture, video, canvas, svg\": {\n maxWidth: \"100%\",\n display: \"block\"\n },\n \"input, button, textarea, select\": {\n font: \"inherit\"\n },\n \"table\": {\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n },\n \"ol, ul\": {\n listStyle: \"none\",\n padding: 0,\n margin: 0,\n },\n \"a\": {\n display: \"inline-block\",\n color: \"inherit\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n \"&:hover\": {\n textDecoration: \"underline\"\n }\n },\n \"p, h1, h2, h3, h4, h5, h6\": {\n overflowWrap: \"break-word\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [])\n\n const scrollbarCss: any = React.useMemo(() => {\n if (noScrollbarCss) return;\n const cls = (cls: string) => `${themeRootClass(theme.name)} ${cls}`\n let thumbSize = scrollbar?.size ?? 7\n let thumbColor = scrollbar?.thumbColor ?? \"var(--color-surface-muted)\"\n let trackColor = scrollbar?.trackColor ?? \"var(--color-surface-divider)\"\n\n return css({\n \"@global\": {\n [cls('*::-webkit-scrollbar')]: {\n width: thumbSize,\n height: thumbSize,\n },\n [cls(\"*::-webkit-scrollbar-thumb\")]: {\n backgroundColor: thumbColor,\n borderRadius: \"6px\",\n },\n [cls(\"*::-webkit-scrollbar-thumb:hover\")]: {\n backgroundColor: thumbColor,\n },\n [cls(\"*::-webkit-scrollbar-track\")]: {\n backgroundColor: trackColor,\n borderRadius: \"6px\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n }) as any\n }, [noScrollbarCss, theme])\n\n return (\n <ThemeContex.Provider\n value={{\n theme,\n onChange: (t) => {\n onThemeChange && onThemeChange(t)\n }\n }}\n >\n {\n isRoot && <>\n <ServerStyleTag factory={resetCss as any} />\n {\n !noScrollbarCss && <ServerStyleTag factory={scrollbarCss} />\n }\n </>\n }\n <ServerStyleTag factory={themeGlobalStyle} />\n <Tag\n minHeight=\"100%\"\n bgcolor=\"surface.main\"\n color=\"surface.contrast\"\n fontSize=\"text\"\n fontWeight=\"text\"\n lineHeight=\"text\"\n fontFamily={`system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif`}\n {...props}\n sxr={{\n \"& a\": {\n color: \"primary.main\",\n },\n }}\n baseClass={`${theme.name}-theme-root`}\n direction={theme.rtl ? \"rtl\" : \"ltr\"}\n >\n {children}\n </Tag>\n </ThemeContex.Provider>\n )\n}\n\nexport default ThemeProvider"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;AAA2D;AACxD;AACA;AAEA;AAEA;AACG;AACA;;AAEA;AACG;AACH;AAEA;;;AAMG;AACA;;AAEF;AACJ;AAEA;AACG;;AACA;AACG;AACG;AACG;AACA;AACA;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACK;AACR;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACA;AACA;AACG;AACF;AACH;AACD;AACG;AACF;AACH;;AAED;AACA;;AAEF;;AAGJ;;AACG;;AACA;AACA;AACA;AACA;AAEA;AACG;AACG;AACG;AACA;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACH;;AAED;AACA;;AAEF;AACJ;AAEA;;AAIS;AACG;;AAEL;AAqBK;AACG;AACF;;AAShB;;"}
@@ -88,7 +88,7 @@ const ThemeProvider = (_a) => {
88
88
  if (noScrollbarCss)
89
89
  return;
90
90
  const cls = (cls) => `${themeRootClass(theme.name)} ${cls}`;
91
- let thumbSize = (_a = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.size) !== null && _a !== void 0 ? _a : 8;
91
+ let thumbSize = (_a = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.size) !== null && _a !== void 0 ? _a : 7;
92
92
  let thumbColor = (_b = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.thumbColor) !== null && _b !== void 0 ? _b : "var(--color-surface-muted)";
93
93
  let trackColor = (_c = scrollbar === null || scrollbar === void 0 ? void 0 : scrollbar.trackColor) !== null && _c !== void 0 ? _c : "var(--color-surface-divider)";
94
94
  return css({
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\"\nimport { ThemeOptionInput, ThemeOptions } from \"./types\"\nimport Tag from \"../Tag\"\nimport { TagComponentType, TagProps } from \"../Tag/types\"\nimport { createTheme, ThemeContex } from \"./core\"\nimport ThemeCssVars from \"./ThemeCssVars\"\nimport { css } from \"../css\"\nimport ServerStyleTag from \"../Tag/ServerStyleTag\"\nimport { useDocument } from \"../Document\";\nimport { themeRootClass } from \".\";\nimport { useCSSCacheId } from \"../css/CSSCacheProvider\";\n\nexport type ThemeProviderProps<T extends TagComponentType = 'div'> = TagProps<T> & {\n theme: ThemeOptionInput;\n onThemeChange?: (theme: ThemeOptions) => void\n isRoot?: boolean;\n noScrollbarCss?: boolean;\n scrollbar?: {\n size?: number;\n thumbColor?: string;\n trackColor?: string;\n }\n}\n\nconst ThemeProvider = <T extends TagComponentType = 'div'>({ children, theme: THEME, scrollbar, onThemeChange, isRoot, noScrollbarCss, ...props }: ThemeProviderProps<T>) => {\n const doc = useDocument()\n const cacheId = useCSSCacheId()\n\n const theme = React.useMemo(() => createTheme(THEME), [THEME])\n\n const themeGlobalStyle: any = React.useMemo(() => {\n const root_cls = `.xui-${theme.name}-theme-root`\n let gkeys = Object.keys(theme.globalStyle || {})\n let gstyles: any = {}\n gkeys.forEach((key) => {\n gstyles[`${root_cls} ${key}`] = theme.globalStyle[key as any]\n })\n\n return css({\n \"@global\": {\n ...gstyles,\n [root_cls]: ThemeCssVars(theme)\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [theme, doc])\n\n const resetCss = React.useMemo(() => {\n if (!isRoot) return\n return css({\n \"@global\": {\n \"*\": {\n m: 0,\n p: 0,\n outline: \"none\",\n boxSizing: \"border-box\",\n verticalAlign: \"baseline\",\n },\n \"html, body\": {\n height: \"100%\",\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n } as any,\n \"img, picture, video, canvas, svg\": {\n maxWidth: \"100%\",\n display: \"block\"\n },\n \"input, button, textarea, select\": {\n font: \"inherit\"\n },\n \"table\": {\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n },\n \"ol, ul\": {\n listStyle: \"none\",\n padding: 0,\n margin: 0,\n },\n \"a\": {\n display: \"inline-block\",\n color: \"inherit\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n \"&:hover\": {\n textDecoration: \"underline\"\n }\n },\n \"p, h1, h2, h3, h4, h5, h6\": {\n overflowWrap: \"break-word\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [])\n\n const scrollbarCss: any = React.useMemo(() => {\n if (noScrollbarCss) return;\n const cls = (cls: string) => `${themeRootClass(theme.name)} ${cls}`\n let thumbSize = scrollbar?.size ?? 8\n let thumbColor = scrollbar?.thumbColor ?? \"var(--color-surface-muted)\"\n let trackColor = scrollbar?.trackColor ?? \"var(--color-surface-divider)\"\n\n return css({\n \"@global\": {\n [cls('*::-webkit-scrollbar')]: {\n width: thumbSize,\n height: thumbSize,\n },\n [cls(\"*::-webkit-scrollbar-thumb\")]: {\n backgroundColor: thumbColor,\n borderRadius: \"6px\",\n },\n [cls(\"*::-webkit-scrollbar-thumb:hover\")]: {\n backgroundColor: thumbColor,\n },\n [cls(\"*::-webkit-scrollbar-track\")]: {\n backgroundColor: trackColor,\n borderRadius: \"6px\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n }) as any\n }, [noScrollbarCss, theme])\n\n return (\n <ThemeContex.Provider\n value={{\n theme,\n onChange: (t) => {\n onThemeChange && onThemeChange(t)\n }\n }}\n >\n {\n isRoot && <>\n <ServerStyleTag factory={resetCss as any} />\n {\n !noScrollbarCss && <ServerStyleTag factory={scrollbarCss} />\n }\n </>\n }\n <ServerStyleTag factory={themeGlobalStyle} />\n <Tag\n minHeight=\"100%\"\n bgcolor=\"surface.main\"\n color=\"surface.contrast\"\n fontSize=\"text\"\n fontWeight=\"text\"\n lineHeight=\"text\"\n fontFamily={`system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif`}\n {...props}\n sxr={{\n \"& a\": {\n color: \"primary.main\",\n },\n }}\n baseClass={`${theme.name}-theme-root`}\n direction={theme.rtl ? \"rtl\" : \"ltr\"}\n >\n {children}\n </Tag>\n </ThemeContex.Provider>\n )\n}\n\nexport default ThemeProvider"],"names":[],"mappings":";;;;;;;;;;;;;AAyBA;AAA2D;AACxD;AACA;AAEA;AAEA;AACG;AACA;;AAEA;AACG;AACH;AAEA;;;AAMG;AACA;;AAEF;AACJ;AAEA;AACG;;AACA;AACG;AACG;AACG;AACA;AACA;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACK;AACR;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACA;AACA;AACG;AACF;AACH;AACD;AACG;AACF;AACH;;AAED;AACA;;AAEF;;AAGJ;;AACG;;AACA;AACA;AACA;AACA;AAEA;AACG;AACG;AACG;AACA;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACH;;AAED;AACA;;AAEF;AACJ;AAEA;;AAIS;AACG;;AAEL;AAqBK;AACG;AACF;;AAShB;;"}
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\"\nimport { ThemeOptionInput, ThemeOptions } from \"./types\"\nimport Tag from \"../Tag\"\nimport { TagComponentType, TagProps } from \"../Tag/types\"\nimport { createTheme, ThemeContex } from \"./core\"\nimport ThemeCssVars from \"./ThemeCssVars\"\nimport { css } from \"../css\"\nimport ServerStyleTag from \"../Tag/ServerStyleTag\"\nimport { useDocument } from \"../Document\";\nimport { themeRootClass } from \".\";\nimport { useCSSCacheId } from \"../css/CSSCacheProvider\";\n\nexport type ThemeProviderProps<T extends TagComponentType = 'div'> = TagProps<T> & {\n theme: ThemeOptionInput;\n onThemeChange?: (theme: ThemeOptions) => void\n isRoot?: boolean;\n noScrollbarCss?: boolean;\n scrollbar?: {\n size?: number;\n thumbColor?: string;\n trackColor?: string;\n }\n}\n\nconst ThemeProvider = <T extends TagComponentType = 'div'>({ children, theme: THEME, scrollbar, onThemeChange, isRoot, noScrollbarCss, ...props }: ThemeProviderProps<T>) => {\n const doc = useDocument()\n const cacheId = useCSSCacheId()\n\n const theme = React.useMemo(() => createTheme(THEME), [THEME])\n\n const themeGlobalStyle: any = React.useMemo(() => {\n const root_cls = `.xui-${theme.name}-theme-root`\n let gkeys = Object.keys(theme.globalStyle || {})\n let gstyles: any = {}\n gkeys.forEach((key) => {\n gstyles[`${root_cls} ${key}`] = theme.globalStyle[key as any]\n })\n\n return css({\n \"@global\": {\n ...gstyles,\n [root_cls]: ThemeCssVars(theme)\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [theme, doc])\n\n const resetCss = React.useMemo(() => {\n if (!isRoot) return\n return css({\n \"@global\": {\n \"*\": {\n m: 0,\n p: 0,\n outline: \"none\",\n boxSizing: \"border-box\",\n verticalAlign: \"baseline\",\n },\n \"html, body\": {\n height: \"100%\",\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n } as any,\n \"img, picture, video, canvas, svg\": {\n maxWidth: \"100%\",\n display: \"block\"\n },\n \"input, button, textarea, select\": {\n font: \"inherit\"\n },\n \"table\": {\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n },\n \"ol, ul\": {\n listStyle: \"none\",\n padding: 0,\n margin: 0,\n },\n \"a\": {\n display: \"inline-block\",\n color: \"inherit\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n \"&:hover\": {\n textDecoration: \"underline\"\n }\n },\n \"p, h1, h2, h3, h4, h5, h6\": {\n overflowWrap: \"break-word\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n })\n }, [])\n\n const scrollbarCss: any = React.useMemo(() => {\n if (noScrollbarCss) return;\n const cls = (cls: string) => `${themeRootClass(theme.name)} ${cls}`\n let thumbSize = scrollbar?.size ?? 7\n let thumbColor = scrollbar?.thumbColor ?? \"var(--color-surface-muted)\"\n let trackColor = scrollbar?.trackColor ?? \"var(--color-surface-divider)\"\n\n return css({\n \"@global\": {\n [cls('*::-webkit-scrollbar')]: {\n width: thumbSize,\n height: thumbSize,\n },\n [cls(\"*::-webkit-scrollbar-thumb\")]: {\n backgroundColor: thumbColor,\n borderRadius: \"6px\",\n },\n [cls(\"*::-webkit-scrollbar-thumb:hover\")]: {\n backgroundColor: thumbColor,\n },\n [cls(\"*::-webkit-scrollbar-track\")]: {\n backgroundColor: trackColor,\n borderRadius: \"6px\",\n },\n }\n }, {\n injectStyle: typeof window !== 'undefined',\n container: doc?.document,\n cacheId\n }) as any\n }, [noScrollbarCss, theme])\n\n return (\n <ThemeContex.Provider\n value={{\n theme,\n onChange: (t) => {\n onThemeChange && onThemeChange(t)\n }\n }}\n >\n {\n isRoot && <>\n <ServerStyleTag factory={resetCss as any} />\n {\n !noScrollbarCss && <ServerStyleTag factory={scrollbarCss} />\n }\n </>\n }\n <ServerStyleTag factory={themeGlobalStyle} />\n <Tag\n minHeight=\"100%\"\n bgcolor=\"surface.main\"\n color=\"surface.contrast\"\n fontSize=\"text\"\n fontWeight=\"text\"\n lineHeight=\"text\"\n fontFamily={`system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif`}\n {...props}\n sxr={{\n \"& a\": {\n color: \"primary.main\",\n },\n }}\n baseClass={`${theme.name}-theme-root`}\n direction={theme.rtl ? \"rtl\" : \"ltr\"}\n >\n {children}\n </Tag>\n </ThemeContex.Provider>\n )\n}\n\nexport default ThemeProvider"],"names":[],"mappings":";;;;;;;;;;;;;AAyBA;AAA2D;AACxD;AACA;AAEA;AAEA;AACG;AACA;;AAEA;AACG;AACH;AAEA;;;AAMG;AACA;;AAEF;AACJ;AAEA;AACG;;AACA;AACG;AACG;AACG;AACA;AACA;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACK;AACR;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACA;AACA;AACF;AACD;AACG;AACA;AACA;AACA;AACA;AACG;AACF;AACH;AACD;AACG;AACF;AACH;;AAED;AACA;;AAEF;;AAGJ;;AACG;;AACA;AACA;AACA;AACA;AAEA;AACG;AACG;AACG;AACA;AACF;AACD;AACG;AACA;AACF;AACD;AACG;AACF;AACD;AACG;AACA;AACF;AACH;;AAED;AACA;;AAEF;AACJ;AAEA;;AAIS;AACG;;AAEL;AAqBK;AACG;AACF;;AAShB;;"}
package/theme/oklch.cjs CHANGED
@@ -96,7 +96,7 @@ function createDarkThemePalette(input) {
96
96
  contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),
97
97
  muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),
98
98
  divider: formatOklch({
99
- l: 0.43,
99
+ l: 0.3,
100
100
  c: 0,
101
101
  h: 0
102
102
  }),
@@ -134,7 +134,7 @@ function createLightThemePalette(input) {
134
134
  h: neutralHue
135
135
  }),
136
136
  divider: formatOklch({
137
- l: 0.75,
137
+ l: 0.80,
138
138
  c: 0,
139
139
  h: neutralHue
140
140
  }),
@@ -177,8 +177,8 @@ function createPalette(input, mode = "light") {
177
177
  h: contrast.h
178
178
  }),
179
179
  divider: formatOklch({
180
- l: clamp(contrast.l - (isDark ? 0.4 : 0.35)),
181
- c: clamp(contrast.c + (isDark ? .03 : .08)),
180
+ l: clamp(contrast.l - (isDark ? 0.65 : 0.2)),
181
+ c: clamp(contrast.c + (isDark ? 0 : .02)),
182
182
  h: contrast.h
183
183
  }),
184
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"oklch.cjs","sources":["../../src/theme/oklch.ts"],"sourcesContent":["type OKLCH = {\n l: number;\n c: number;\n h: number;\n};\n\ntype ColorRole = {\n main: string;\n light: string;\n lighter: string;\n dark: string;\n darker: string;\n contrast: string;\n muted: string;\n divider: string;\n ghost: string;\n};\n\n/* ---------------- PARSERS ---------------- */\n\nexport function toOKLCH(input: string): OKLCH {\n if (input.startsWith(\"oklch\")) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid OKLCH format\");\n }\n\n let [l, c, h] = values.map(Number);\n\n return {\n l: l > 1 ? l / 100 : l,\n c,\n h,\n };\n }\n\n const rgb = parseToRgb(input);\n const lab = rgbToOklab(rgb.r, rgb.g, rgb.b);\n return oklabToOklch(lab.L, lab.a, lab.b);\n}\n\nfunction parseToRgb(input: string) {\n input = input.trim().toLowerCase();\n\n if (input.startsWith(\"#\")) return parseHex(input);\n if (input.startsWith(\"rgb\")) return parseRgb(input);\n if (input.startsWith(\"hsl\")) return parseHsl(input);\n\n throw new Error(\"Unsupported format\");\n}\n\n/* ---------------- CORE MATH ---------------- */\n\nfunction srgbToLinear(c: number) {\n return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n}\n\nfunction rgbToOklab(r: number, g: number, b: number) {\n r = srgbToLinear(r);\n g = srgbToLinear(g);\n b = srgbToLinear(b);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m);\n const s_ = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n a: 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n b: 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_,\n };\n}\n\nfunction oklabToOklch(L: number, a: number, b: number): OKLCH {\n const c = Math.sqrt(a * a + b * b);\n let h = Math.atan2(b, a) * (180 / Math.PI);\n\n if (h < 0) h += 360;\n\n return { l: L, c, h };\n}\n\n/* ---------------- FORMAT ---------------- */\n\nfunction formatOklch(color: OKLCH, alpha = 1): string {\n const l = (color.l * 100).toFixed(2) + \"%\";\n const c = color.c.toFixed(4);\n const h = color.h.toFixed(2);\n\n return alpha === 1\n ? `oklch(${l} ${c} ${h})`\n : `oklch(${l} ${c} ${h} / ${alpha})`;\n}\n\n/* ---------------- UTILS ---------------- */\n\nfunction clamp(v: number, min = 0, max = 1) {\n return Math.min(max, Math.max(min, v));\n}\n\nexport function createDarkThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNeutral = base.c < 0.03;\n const isDarkEnough = base.l < 0.2;\n const isNearBlack = isNeutral && isDarkEnough;\n const safeC = Math.min(base.c, 0.22);\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n if (isNearBlack) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l + offset)\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(3.5)),\n lighter: formatOklch(step(4.5)),\n dark: formatOklch(step(2.5)),\n darker: formatOklch(step(1.5)),\n contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),\n muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),\n divider: formatOklch({\n l: 0.43,\n c: 0,\n h: 0\n }),\n ghost: formatOklch({ l: 0.96, c: 0, h: neutralHue }, 0.16)\n };\n }\n\n return createPalette(input, \"dark\")\n}\n\nexport function createLightThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNearWhite = base.l > 0.98 && base.c < 0.01;\n const main = formatOklch(base);\n if (isNearWhite) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main,\n light: formatOklch(step(4)),\n lighter: formatOklch(step(3.5)),\n dark: formatOklch(step(5.5)),\n darker: formatOklch(step(6.5)),\n contrast: formatOklch({\n l: 0.12,\n c: 0,\n h: neutralHue\n }),\n muted: formatOklch({\n l: 0.50,\n c: 0,\n h: neutralHue\n }),\n divider: formatOklch({\n l: 0.75,\n c: 0,\n h: neutralHue\n }),\n ghost: formatOklch(\n { l: 0.12, c: 0, h: neutralHue },\n 0.12\n )\n };\n }\n\n return createPalette(input, \"light\");\n}\n\nexport function createPalette(input: string, mode: \"light\" | \"dark\" = \"light\"): ColorRole {\n const base = toOKLCH(input);\n const isDark = mode === \"dark\";\n const isLightColor = base.l > 0.75;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = isDark ? clamp(base.l + offset) : clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n const contrast = {\n l: !isLightColor ? 0.96 : 0.12,\n c: 0.02,\n h: base.h\n }\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(isDark ? 4 : 2)),\n lighter: formatOklch(step(isDark ? 5 : 1)),\n dark: formatOklch(step(isDark ? 2 : 4)),\n darker: formatOklch(step(isDark ? 1 : 5)),\n ghost: formatOklch(main, isDark ? 0.12 : 0.18),\n\n contrast: formatOklch(contrast),\n\n muted: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.05 : 0.025)),\n c: clamp(contrast.c - 0.01),\n h: contrast.h\n }),\n\n divider: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.4 : 0.35)),\n c: clamp(contrast.c + (isDark ? .03 : .08)),\n h: contrast.h\n }),\n };\n}\n/* ---------------- PARSERS ---------------- */\n\nfunction parseHex(hex: string) {\n hex = hex.replace(\"#\", \"\").trim();\n\n if (hex.length === 3) {\n hex = hex.split(\"\").map(c => c + c).join(\"\");\n }\n\n const num = parseInt(hex, 16);\n\n return {\n r: ((num >> 16) & 255) / 255,\n g: ((num >> 8) & 255) / 255,\n b: (num & 255) / 255,\n };\n}\n\nfunction parseRgb(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid RGB format\");\n }\n\n const [r, g, b] = values.map(Number);\n\n return {\n r: r / 255,\n g: g / 255,\n b: b / 255,\n };\n}\n\nfunction parseHsl(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid HSL format\");\n }\n\n let [h, s, l] = values.map(Number);\n\n h /= 360;\n s /= 100;\n l /= 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: hue2rgb(p, q, h + 1 / 3),\n g: hue2rgb(p, q, h),\n b: hue2rgb(p, q, h - 1 / 3),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oklch.cjs","sources":["../../src/theme/oklch.ts"],"sourcesContent":["type OKLCH = {\n l: number;\n c: number;\n h: number;\n};\n\ntype ColorRole = {\n main: string;\n light: string;\n lighter: string;\n dark: string;\n darker: string;\n contrast: string;\n muted: string;\n divider: string;\n ghost: string;\n};\n\n/* ---------------- PARSERS ---------------- */\n\nexport function toOKLCH(input: string): OKLCH {\n if (input.startsWith(\"oklch\")) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid OKLCH format\");\n }\n\n let [l, c, h] = values.map(Number);\n\n return {\n l: l > 1 ? l / 100 : l,\n c,\n h,\n };\n }\n\n const rgb = parseToRgb(input);\n const lab = rgbToOklab(rgb.r, rgb.g, rgb.b);\n return oklabToOklch(lab.L, lab.a, lab.b);\n}\n\nfunction parseToRgb(input: string) {\n input = input.trim().toLowerCase();\n\n if (input.startsWith(\"#\")) return parseHex(input);\n if (input.startsWith(\"rgb\")) return parseRgb(input);\n if (input.startsWith(\"hsl\")) return parseHsl(input);\n\n throw new Error(\"Unsupported format\");\n}\n\n/* ---------------- CORE MATH ---------------- */\n\nfunction srgbToLinear(c: number) {\n return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n}\n\nfunction rgbToOklab(r: number, g: number, b: number) {\n r = srgbToLinear(r);\n g = srgbToLinear(g);\n b = srgbToLinear(b);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m);\n const s_ = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n a: 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n b: 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_,\n };\n}\n\nfunction oklabToOklch(L: number, a: number, b: number): OKLCH {\n const c = Math.sqrt(a * a + b * b);\n let h = Math.atan2(b, a) * (180 / Math.PI);\n\n if (h < 0) h += 360;\n\n return { l: L, c, h };\n}\n\n/* ---------------- FORMAT ---------------- */\n\nfunction formatOklch(color: OKLCH, alpha = 1): string {\n const l = (color.l * 100).toFixed(2) + \"%\";\n const c = color.c.toFixed(4);\n const h = color.h.toFixed(2);\n\n return alpha === 1\n ? `oklch(${l} ${c} ${h})`\n : `oklch(${l} ${c} ${h} / ${alpha})`;\n}\n\n/* ---------------- UTILS ---------------- */\n\nfunction clamp(v: number, min = 0, max = 1) {\n return Math.min(max, Math.max(min, v));\n}\n\nexport function createDarkThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNeutral = base.c < 0.03;\n const isDarkEnough = base.l < 0.2;\n const isNearBlack = isNeutral && isDarkEnough;\n const safeC = Math.min(base.c, 0.22);\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n if (isNearBlack) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l + offset)\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(3.5)),\n lighter: formatOklch(step(4.5)),\n dark: formatOklch(step(2.5)),\n darker: formatOklch(step(1.5)),\n contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),\n muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),\n divider: formatOklch({\n l: 0.3,\n c: 0,\n h: 0\n }),\n ghost: formatOklch({ l: 0.96, c: 0, h: neutralHue }, 0.16)\n };\n }\n\n return createPalette(input, \"dark\")\n}\n\nexport function createLightThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNearWhite = base.l > 0.98 && base.c < 0.01;\n const main = formatOklch(base);\n if (isNearWhite) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main,\n light: formatOklch(step(4)),\n lighter: formatOklch(step(3.5)),\n dark: formatOklch(step(5.5)),\n darker: formatOklch(step(6.5)),\n contrast: formatOklch({\n l: 0.12,\n c: 0,\n h: neutralHue\n }),\n muted: formatOklch({\n l: 0.50,\n c: 0,\n h: neutralHue\n }),\n divider: formatOklch({\n l: 0.80,\n c: 0,\n h: neutralHue\n }),\n ghost: formatOklch(\n { l: 0.12, c: 0, h: neutralHue },\n 0.12\n )\n };\n }\n\n return createPalette(input, \"light\");\n}\n\nexport function createPalette(input: string, mode: \"light\" | \"dark\" = \"light\"): ColorRole {\n const base = toOKLCH(input);\n const isDark = mode === \"dark\";\n const isLightColor = base.l > 0.75;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = isDark ? clamp(base.l + offset) : clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n const contrast = {\n l: !isLightColor ? 0.96 : 0.12,\n c: 0.02,\n h: base.h\n }\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(isDark ? 4 : 2)),\n lighter: formatOklch(step(isDark ? 5 : 1)),\n dark: formatOklch(step(isDark ? 2 : 4)),\n darker: formatOklch(step(isDark ? 1 : 5)),\n ghost: formatOklch(main, isDark ? 0.12 : 0.18),\n\n contrast: formatOklch(contrast),\n\n muted: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.05 : 0.025)),\n c: clamp(contrast.c - 0.01),\n h: contrast.h\n }),\n\n divider: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.65 : 0.2)),\n c: clamp(contrast.c + (isDark ? 0 : .02)),\n h: contrast.h\n }),\n };\n}\n/* ---------------- PARSERS ---------------- */\n\nfunction parseHex(hex: string) {\n hex = hex.replace(\"#\", \"\").trim();\n\n if (hex.length === 3) {\n hex = hex.split(\"\").map(c => c + c).join(\"\");\n }\n\n const num = parseInt(hex, 16);\n\n return {\n r: ((num >> 16) & 255) / 255,\n g: ((num >> 8) & 255) / 255,\n b: (num & 255) / 255,\n };\n}\n\nfunction parseRgb(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid RGB format\");\n }\n\n const [r, g, b] = values.map(Number);\n\n return {\n r: r / 255,\n g: g / 255,\n b: b / 255,\n };\n}\n\nfunction parseHsl(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid HSL format\");\n }\n\n let [h, s, l] = values.map(Number);\n\n h /= 360;\n s /= 100;\n l /= 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: hue2rgb(p, q, h + 1 / 3),\n g: hue2rgb(p, q, h),\n b: hue2rgb(p, q, h - 1 / 3),\n };\n}\n"],"names":[],"mappings":";;AAkBA;AAEM,SAAU,OAAO,CAAC,KAAa,EAAA;AAClC,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QAC1C;AAEA,QAAA,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAElC,OAAO;AACJ,YAAA,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;YACtB,CAAC;YACD,CAAC;SACH;IACJ;AAEA,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C;AAEA,SAAS,UAAU,CAAC,KAAa,EAAA;IAC9B,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAElC,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AAEnD,IAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACxC;AAEA;AAEA,SAAS,YAAY,CAAC,CAAS,EAAA;IAC5B,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;AACvE;AAEA,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAChD,IAAA,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACnB,IAAA,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACnB,IAAA,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAChE,IAAA,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAChE,IAAA,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;IAEhE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvB,OAAO;QACJ,CAAC,EAAE,YAAY,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,YAAY,GAAG,EAAE;QAC3D,CAAC,EAAE,YAAY,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,YAAY,GAAG,EAAE;QAC3D,CAAC,EAAE,YAAY,GAAG,EAAE,GAAG,YAAY,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE;KAC7D;AACJ;AAEA,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAClD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC;QAAE,CAAC,IAAI,GAAG;IAEnB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxB;AAEA;AAEA,SAAS,WAAW,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC,EAAA;AACzC,IAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5B,OAAO,KAAK,KAAK;AACd,UAAE,CAAA,MAAA,EAAS,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;UACpB,CAAA,MAAA,EAAS,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG;AAC1C;AAEA;AAEA,SAAS,KAAK,CAAC,CAAS,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC;AAEM,SAAU,sBAAsB,CAAC,KAAa,EAAA;AACjD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;AAC/B,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG;AACjC,IAAA,MAAM,WAAW,GAAG,SAAS,IAAI,YAAY;AAC7C,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAEpC,IAAA,MAAM,IAAI,GAAU;QACjB,CAAC,EAAE,IAAI,CAAC,CAAC;AACT,QAAA,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI,CAAC;KACV;IAED,IAAI,WAAW,EAAE;QACd,MAAM,UAAU,GAAG,CAAC;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAEpC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAW;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;YAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AAChC,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AACpC,QAAA,CAAC;QAED,OAAO;AACJ,YAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;AACvB,YAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,YAAA,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AACvD,YAAA,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YACpD,OAAO,EAAE,WAAW,CAAC;AAClB,gBAAA,CAAC,EAAE,GAAG;AACN,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,CAAC,EAAE;aACL,CAAC;AACF,YAAA,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI;SAC3D;IACJ;AAEA,IAAA,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC;AAEM,SAAU,uBAAuB,CAAC,KAAa,EAAA;AAClD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAE3B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI;AAClD,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,IAAI,WAAW,EAAE;QACd,MAAM,UAAU,GAAG,CAAC;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAEpC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAW;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;YAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AAChC,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AACpC,QAAA,CAAC;QAED,OAAO;YACJ,IAAI;AACJ,YAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,QAAQ,EAAE,WAAW,CAAC;AACnB,gBAAA,CAAC,EAAE,IAAI;AACP,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,CAAC,EAAE;aACL,CAAC;YACF,KAAK,EAAE,WAAW,CAAC;AAChB,gBAAA,CAAC,EAAE,IAAI;AACP,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,CAAC,EAAE;aACL,CAAC;YACF,OAAO,EAAE,WAAW,CAAC;AAClB,gBAAA,CAAC,EAAE,IAAI;AACP,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,CAAC,EAAE;aACL,CAAC;AACF,YAAA,KAAK,EAAE,WAAW,CACf,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAChC,IAAI;SAET;IACJ;AAEA,IAAA,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC;SAEgB,aAAa,CAAC,KAAa,EAAE,OAAyB,OAAO,EAAA;AAC1E,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,IAAA,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM;AAC9B,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;AAClC,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAEpC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAW;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;QAC7B,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AAClE,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AACpC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAU;QACjB,CAAC,EAAE,IAAI,CAAC,CAAC;AACT,QAAA,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI,CAAC;KACV;AAED,IAAA,MAAM,QAAQ,GAAG;QACd,CAAC,EAAE,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI;AAC9B,QAAA,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI,CAAC;KACV;IAED,OAAO;AACJ,QAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;AACvB,QAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAA,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,QAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAA,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,QAAA,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;QAE/B,KAAK,EAAE,WAAW,CAAC;AAChB,YAAA,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;YAC9C,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B,CAAC,EAAE,QAAQ,CAAC;SACd,CAAC;QAEF,OAAO,EAAE,WAAW,CAAC;AAClB,YAAA,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAC5C,YAAA,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACzC,CAAC,EAAE,QAAQ,CAAC;SACd,CAAC;KACJ;AACJ;AACA;AAEA,SAAS,QAAQ,CAAC,GAAW,EAAA;AAC1B,IAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AAEjC,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C;IAEA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IAE7B,OAAO;QACJ,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;QAC5B,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;AAC3B,QAAA,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG;KACtB;AACJ;AAEA,SAAS,QAAQ,CAAC,KAAa,EAAA;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;IACxC;AAEA,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAEpC,OAAO;QACJ,CAAC,EAAE,CAAC,GAAG,GAAG;QACV,CAAC,EAAE,CAAC,GAAG,GAAG;QACV,CAAC,EAAE,CAAC,GAAG,GAAG;KACZ;AACJ;AAEA,SAAS,QAAQ,CAAC,KAAa,EAAA;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;IACxC;AAEA,IAAA,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAElC,CAAC,IAAI,GAAG;IACR,CAAC,IAAI,GAAG;IACR,CAAC,IAAI,GAAG;IAER,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAI;QACjD,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACnD,QAAA,OAAO,CAAC;AACX,IAAA,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAEnB,OAAO;AACJ,QAAA,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,QAAA,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;AACJ;;;;;;;"}
package/theme/oklch.js CHANGED
@@ -94,7 +94,7 @@ function createDarkThemePalette(input) {
94
94
  contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),
95
95
  muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),
96
96
  divider: formatOklch({
97
- l: 0.43,
97
+ l: 0.3,
98
98
  c: 0,
99
99
  h: 0
100
100
  }),
@@ -132,7 +132,7 @@ function createLightThemePalette(input) {
132
132
  h: neutralHue
133
133
  }),
134
134
  divider: formatOklch({
135
- l: 0.75,
135
+ l: 0.80,
136
136
  c: 0,
137
137
  h: neutralHue
138
138
  }),
@@ -175,8 +175,8 @@ function createPalette(input, mode = "light") {
175
175
  h: contrast.h
176
176
  }),
177
177
  divider: formatOklch({
178
- l: clamp(contrast.l - (isDark ? 0.4 : 0.35)),
179
- c: clamp(contrast.c + (isDark ? .03 : .08)),
178
+ l: clamp(contrast.l - (isDark ? 0.65 : 0.2)),
179
+ c: clamp(contrast.c + (isDark ? 0 : .02)),
180
180
  h: contrast.h
181
181
  }),
182
182
  };
@@ -1 +1 @@
1
- {"version":3,"file":"oklch.js","sources":["../../src/theme/oklch.ts"],"sourcesContent":["type OKLCH = {\n l: number;\n c: number;\n h: number;\n};\n\ntype ColorRole = {\n main: string;\n light: string;\n lighter: string;\n dark: string;\n darker: string;\n contrast: string;\n muted: string;\n divider: string;\n ghost: string;\n};\n\n/* ---------------- PARSERS ---------------- */\n\nexport function toOKLCH(input: string): OKLCH {\n if (input.startsWith(\"oklch\")) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid OKLCH format\");\n }\n\n let [l, c, h] = values.map(Number);\n\n return {\n l: l > 1 ? l / 100 : l,\n c,\n h,\n };\n }\n\n const rgb = parseToRgb(input);\n const lab = rgbToOklab(rgb.r, rgb.g, rgb.b);\n return oklabToOklch(lab.L, lab.a, lab.b);\n}\n\nfunction parseToRgb(input: string) {\n input = input.trim().toLowerCase();\n\n if (input.startsWith(\"#\")) return parseHex(input);\n if (input.startsWith(\"rgb\")) return parseRgb(input);\n if (input.startsWith(\"hsl\")) return parseHsl(input);\n\n throw new Error(\"Unsupported format\");\n}\n\n/* ---------------- CORE MATH ---------------- */\n\nfunction srgbToLinear(c: number) {\n return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n}\n\nfunction rgbToOklab(r: number, g: number, b: number) {\n r = srgbToLinear(r);\n g = srgbToLinear(g);\n b = srgbToLinear(b);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m);\n const s_ = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n a: 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n b: 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_,\n };\n}\n\nfunction oklabToOklch(L: number, a: number, b: number): OKLCH {\n const c = Math.sqrt(a * a + b * b);\n let h = Math.atan2(b, a) * (180 / Math.PI);\n\n if (h < 0) h += 360;\n\n return { l: L, c, h };\n}\n\n/* ---------------- FORMAT ---------------- */\n\nfunction formatOklch(color: OKLCH, alpha = 1): string {\n const l = (color.l * 100).toFixed(2) + \"%\";\n const c = color.c.toFixed(4);\n const h = color.h.toFixed(2);\n\n return alpha === 1\n ? `oklch(${l} ${c} ${h})`\n : `oklch(${l} ${c} ${h} / ${alpha})`;\n}\n\n/* ---------------- UTILS ---------------- */\n\nfunction clamp(v: number, min = 0, max = 1) {\n return Math.min(max, Math.max(min, v));\n}\n\nexport function createDarkThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNeutral = base.c < 0.03;\n const isDarkEnough = base.l < 0.2;\n const isNearBlack = isNeutral && isDarkEnough;\n const safeC = Math.min(base.c, 0.22);\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n if (isNearBlack) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l + offset)\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(3.5)),\n lighter: formatOklch(step(4.5)),\n dark: formatOklch(step(2.5)),\n darker: formatOklch(step(1.5)),\n contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),\n muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),\n divider: formatOklch({\n l: 0.43,\n c: 0,\n h: 0\n }),\n ghost: formatOklch({ l: 0.96, c: 0, h: neutralHue }, 0.16)\n };\n }\n\n return createPalette(input, \"dark\")\n}\n\nexport function createLightThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNearWhite = base.l > 0.98 && base.c < 0.01;\n const main = formatOklch(base);\n if (isNearWhite) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main,\n light: formatOklch(step(4)),\n lighter: formatOklch(step(3.5)),\n dark: formatOklch(step(5.5)),\n darker: formatOklch(step(6.5)),\n contrast: formatOklch({\n l: 0.12,\n c: 0,\n h: neutralHue\n }),\n muted: formatOklch({\n l: 0.50,\n c: 0,\n h: neutralHue\n }),\n divider: formatOklch({\n l: 0.75,\n c: 0,\n h: neutralHue\n }),\n ghost: formatOklch(\n { l: 0.12, c: 0, h: neutralHue },\n 0.12\n )\n };\n }\n\n return createPalette(input, \"light\");\n}\n\nexport function createPalette(input: string, mode: \"light\" | \"dark\" = \"light\"): ColorRole {\n const base = toOKLCH(input);\n const isDark = mode === \"dark\";\n const isLightColor = base.l > 0.75;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = isDark ? clamp(base.l + offset) : clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n const contrast = {\n l: !isLightColor ? 0.96 : 0.12,\n c: 0.02,\n h: base.h\n }\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(isDark ? 4 : 2)),\n lighter: formatOklch(step(isDark ? 5 : 1)),\n dark: formatOklch(step(isDark ? 2 : 4)),\n darker: formatOklch(step(isDark ? 1 : 5)),\n ghost: formatOklch(main, isDark ? 0.12 : 0.18),\n\n contrast: formatOklch(contrast),\n\n muted: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.05 : 0.025)),\n c: clamp(contrast.c - 0.01),\n h: contrast.h\n }),\n\n divider: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.4 : 0.35)),\n c: clamp(contrast.c + (isDark ? .03 : .08)),\n h: contrast.h\n }),\n };\n}\n/* ---------------- PARSERS ---------------- */\n\nfunction parseHex(hex: string) {\n hex = hex.replace(\"#\", \"\").trim();\n\n if (hex.length === 3) {\n hex = hex.split(\"\").map(c => c + c).join(\"\");\n }\n\n const num = parseInt(hex, 16);\n\n return {\n r: ((num >> 16) & 255) / 255,\n g: ((num >> 8) & 255) / 255,\n b: (num & 255) / 255,\n };\n}\n\nfunction parseRgb(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid RGB format\");\n }\n\n const [r, g, b] = values.map(Number);\n\n return {\n r: r / 255,\n g: g / 255,\n b: b / 255,\n };\n}\n\nfunction parseHsl(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid HSL format\");\n }\n\n let [h, s, l] = values.map(Number);\n\n h /= 360;\n s /= 100;\n l /= 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: hue2rgb(p, q, h + 1 / 3),\n g: hue2rgb(p, q, h),\n b: hue2rgb(p, q, h - 1 / 3),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oklch.js","sources":["../../src/theme/oklch.ts"],"sourcesContent":["type OKLCH = {\n l: number;\n c: number;\n h: number;\n};\n\ntype ColorRole = {\n main: string;\n light: string;\n lighter: string;\n dark: string;\n darker: string;\n contrast: string;\n muted: string;\n divider: string;\n ghost: string;\n};\n\n/* ---------------- PARSERS ---------------- */\n\nexport function toOKLCH(input: string): OKLCH {\n if (input.startsWith(\"oklch\")) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid OKLCH format\");\n }\n\n let [l, c, h] = values.map(Number);\n\n return {\n l: l > 1 ? l / 100 : l,\n c,\n h,\n };\n }\n\n const rgb = parseToRgb(input);\n const lab = rgbToOklab(rgb.r, rgb.g, rgb.b);\n return oklabToOklch(lab.L, lab.a, lab.b);\n}\n\nfunction parseToRgb(input: string) {\n input = input.trim().toLowerCase();\n\n if (input.startsWith(\"#\")) return parseHex(input);\n if (input.startsWith(\"rgb\")) return parseRgb(input);\n if (input.startsWith(\"hsl\")) return parseHsl(input);\n\n throw new Error(\"Unsupported format\");\n}\n\n/* ---------------- CORE MATH ---------------- */\n\nfunction srgbToLinear(c: number) {\n return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n}\n\nfunction rgbToOklab(r: number, g: number, b: number) {\n r = srgbToLinear(r);\n g = srgbToLinear(g);\n b = srgbToLinear(b);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m);\n const s_ = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n a: 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n b: 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_,\n };\n}\n\nfunction oklabToOklch(L: number, a: number, b: number): OKLCH {\n const c = Math.sqrt(a * a + b * b);\n let h = Math.atan2(b, a) * (180 / Math.PI);\n\n if (h < 0) h += 360;\n\n return { l: L, c, h };\n}\n\n/* ---------------- FORMAT ---------------- */\n\nfunction formatOklch(color: OKLCH, alpha = 1): string {\n const l = (color.l * 100).toFixed(2) + \"%\";\n const c = color.c.toFixed(4);\n const h = color.h.toFixed(2);\n\n return alpha === 1\n ? `oklch(${l} ${c} ${h})`\n : `oklch(${l} ${c} ${h} / ${alpha})`;\n}\n\n/* ---------------- UTILS ---------------- */\n\nfunction clamp(v: number, min = 0, max = 1) {\n return Math.min(max, Math.max(min, v));\n}\n\nexport function createDarkThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNeutral = base.c < 0.03;\n const isDarkEnough = base.l < 0.2;\n const isNearBlack = isNeutral && isDarkEnough;\n const safeC = Math.min(base.c, 0.22);\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n if (isNearBlack) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l + offset)\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(3.5)),\n lighter: formatOklch(step(4.5)),\n dark: formatOklch(step(2.5)),\n darker: formatOklch(step(1.5)),\n contrast: formatOklch({ l: 0.96, c: 0, h: neutralHue }),\n muted: formatOklch({ l: 0.85, c: 0, h: neutralHue }),\n divider: formatOklch({\n l: 0.3,\n c: 0,\n h: 0\n }),\n ghost: formatOklch({ l: 0.96, c: 0, h: neutralHue }, 0.16)\n };\n }\n\n return createPalette(input, \"dark\")\n}\n\nexport function createLightThemePalette(input: string): ColorRole {\n const base = toOKLCH(input);\n\n const isNearWhite = base.l > 0.98 && base.c < 0.01;\n const main = formatOklch(base);\n if (isNearWhite) {\n const neutralHue = 0;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n return {\n main,\n light: formatOklch(step(4)),\n lighter: formatOklch(step(3.5)),\n dark: formatOklch(step(5.5)),\n darker: formatOklch(step(6.5)),\n contrast: formatOklch({\n l: 0.12,\n c: 0,\n h: neutralHue\n }),\n muted: formatOklch({\n l: 0.50,\n c: 0,\n h: neutralHue\n }),\n divider: formatOklch({\n l: 0.80,\n c: 0,\n h: neutralHue\n }),\n ghost: formatOklch(\n { l: 0.12, c: 0, h: neutralHue },\n 0.12\n )\n };\n }\n\n return createPalette(input, \"light\");\n}\n\nexport function createPalette(input: string, mode: \"light\" | \"dark\" = \"light\"): ColorRole {\n const base = toOKLCH(input);\n const isDark = mode === \"dark\";\n const isLightColor = base.l > 0.75;\n const safeC = Math.min(base.c, 0.25);\n\n const step = (i: number): OKLCH => {\n const offset = (i - 3) * 0.09;\n const l = isDark ? clamp(base.l + offset) : clamp(base.l - offset);\n return { l, c: safeC, h: base.h };\n };\n\n const main: OKLCH = {\n l: base.l,\n c: safeC,\n h: base.h\n };\n\n const contrast = {\n l: !isLightColor ? 0.96 : 0.12,\n c: 0.02,\n h: base.h\n }\n\n return {\n main: formatOklch(main),\n light: formatOklch(step(isDark ? 4 : 2)),\n lighter: formatOklch(step(isDark ? 5 : 1)),\n dark: formatOklch(step(isDark ? 2 : 4)),\n darker: formatOklch(step(isDark ? 1 : 5)),\n ghost: formatOklch(main, isDark ? 0.12 : 0.18),\n\n contrast: formatOklch(contrast),\n\n muted: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.05 : 0.025)),\n c: clamp(contrast.c - 0.01),\n h: contrast.h\n }),\n\n divider: formatOklch({\n l: clamp(contrast.l - (isDark ? 0.65 : 0.2)),\n c: clamp(contrast.c + (isDark ? 0 : .02)),\n h: contrast.h\n }),\n };\n}\n/* ---------------- PARSERS ---------------- */\n\nfunction parseHex(hex: string) {\n hex = hex.replace(\"#\", \"\").trim();\n\n if (hex.length === 3) {\n hex = hex.split(\"\").map(c => c + c).join(\"\");\n }\n\n const num = parseInt(hex, 16);\n\n return {\n r: ((num >> 16) & 255) / 255,\n g: ((num >> 8) & 255) / 255,\n b: (num & 255) / 255,\n };\n}\n\nfunction parseRgb(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid RGB format\");\n }\n\n const [r, g, b] = values.map(Number);\n\n return {\n r: r / 255,\n g: g / 255,\n b: b / 255,\n };\n}\n\nfunction parseHsl(input: string) {\n const values = input.match(/[\\d.]+/g);\n if (!values || values.length < 3) {\n throw new Error(\"Invalid HSL format\");\n }\n\n let [h, s, l] = values.map(Number);\n\n h /= 360;\n s /= 100;\n l /= 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: hue2rgb(p, q, h + 1 / 3),\n g: hue2rgb(p, q, h),\n b: hue2rgb(p, q, h - 1 / 3),\n };\n}\n"],"names":[],"mappings":"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"}