@cairntale/chimeling-react 1.0.0-alpha.4 → 1.0.0-alpha.6
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/CHANGELOG.md +20 -0
- package/dist/components/index.d.ts +2 -2
- package/dist/components/playground/panel.js +143 -11
- package/dist/components/playground/panel.js.map +1 -1
- package/dist/components/playground/playground.d.ts +3 -1
- package/dist/components/playground/playground.js +42 -18
- package/dist/components/playground/playground.js.map +1 -1
- package/dist/components/playground/store.js +49 -8
- package/dist/components/playground/store.js.map +1 -1
- package/dist/components/popover.d.ts +9 -2
- package/dist/components/popover.js +117 -15
- package/dist/components/popover.js.map +1 -1
- package/dist/components/provider.d.ts +8 -1
- package/dist/components/provider.js +38 -8
- package/dist/components/provider.js.map +1 -1
- package/dist/components/root.js +8 -4
- package/dist/components/root.js.map +1 -1
- package/dist/components/trigger.d.ts +7 -2
- package/dist/components/trigger.js +67 -5
- package/dist/components/trigger.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/lib/widget-context.d.ts +3 -1
- package/dist/lib/widget-context.js.map +1 -1
- package/dist/theme/color-system.d.ts +1 -0
- package/dist/theme/color-system.js +96 -0
- package/dist/theme/color-system.js.map +1 -0
- package/dist/theme/context.d.ts +2 -0
- package/dist/theme/context.js +15 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/index.d.ts +4 -0
- package/dist/theme/index.js +4 -0
- package/dist/theme/tokens.d.ts +6 -0
- package/dist/theme/tokens.js +69 -0
- package/dist/theme/tokens.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/theme/context.tsx
|
|
5
|
+
const ThemeContext = createContext(null);
|
|
6
|
+
function ThemeProvider({ value, children }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(ThemeContext.Provider, {
|
|
8
|
+
value,
|
|
9
|
+
children
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ThemeProvider };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../src/theme/context.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, useContext, type ReactNode } from 'react'\nimport type { ThemeContextValue } from './tokens'\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\nexport function ThemeProvider({\n value,\n children,\n}: {\n value: ThemeContextValue\n children: ReactNode\n}) {\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n}\n\nexport function useThemeContext(): ThemeContextValue {\n return useContext(ThemeContext) ?? {}\n}\n"],"mappings":";;;;AAKA,MAAM,eAAe,cAAwC,IAAI;AAEjE,SAAgB,cAAc,EAC5B,OACA,YAIC;CACD,OAAO,oBAAC,aAAa,UAAd;EAA8B;EAAQ;CAAgC,CAAA;AAC/E"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { generateColorFamily, generateContrastColor, lightDarkFamilies } from "./color-system.js";
|
|
2
|
+
//#region src/theme/tokens.ts
|
|
3
|
+
const DEFAULT_ACCENT_COLOR = "oklch(0.57 0.25 256.49)";
|
|
4
|
+
const DEFAULT_ACCENT_CONTRAST_COLOR = generateContrastColor(DEFAULT_ACCENT_COLOR);
|
|
5
|
+
const scaleSpacing = (pixels) => `calc(${pixels}px * var(--chl-spacing-scaling, 1))`;
|
|
6
|
+
const scaleFontSize = (pixels) => `calc(${pixels}px * var(--chl-font-size-scaling, 1))`;
|
|
7
|
+
const scaleBorderRadius = (pixels) => `calc(${pixels}px * var(--chl-border-radius-scaling, 1))`;
|
|
8
|
+
const accentFamily = (accentColor, accentContrastColor) => generateColorFamily("background", "accent", `var(--chl-accent, ${accentColor})`, `var(--chl-accent-contrast, ${accentContrastColor})`);
|
|
9
|
+
const lightColorFamilies = {
|
|
10
|
+
...generateColorFamily("background", "primary", "oklch(1 0 0)", "var(--chl-color-text-primary)"),
|
|
11
|
+
...generateColorFamily("background", "secondary", "oklch(0.985 0 0)", "var(--chl-color-text-secondary)"),
|
|
12
|
+
...generateColorFamily("text", "primary", "oklch(0.25 0 0)"),
|
|
13
|
+
...generateColorFamily("text", "secondary", "oklch(0.46 0 0)"),
|
|
14
|
+
...generateColorFamily("text", "tertiary", "oklch(0.627 0 0)")
|
|
15
|
+
};
|
|
16
|
+
const darkColorFamilies = {
|
|
17
|
+
...generateColorFamily("background", "primary", "oklch(0.134 0 0)", "var(--chl-color-text-primary)", "dark"),
|
|
18
|
+
...generateColorFamily("background", "secondary", "oklch(0.191 0 0)", "var(--chl-color-text-secondary)", "dark"),
|
|
19
|
+
...generateColorFamily("text", "primary", "oklch(0.949 0 0)", false, "dark"),
|
|
20
|
+
...generateColorFamily("text", "secondary", "oklch(0.792 0 0)", false, "dark"),
|
|
21
|
+
...generateColorFamily("text", "tertiary", "oklch(0.627 0 0)", false, "dark")
|
|
22
|
+
};
|
|
23
|
+
const rootTokenFamilies = {
|
|
24
|
+
"--chl-spacing-3xs": scaleSpacing(2),
|
|
25
|
+
"--chl-spacing-2xs": scaleSpacing(4),
|
|
26
|
+
"--chl-spacing-xs": scaleSpacing(8),
|
|
27
|
+
"--chl-spacing-sm": scaleSpacing(12),
|
|
28
|
+
"--chl-spacing-md": scaleSpacing(16),
|
|
29
|
+
"--chl-spacing-lg": scaleSpacing(24),
|
|
30
|
+
"--chl-spacing-xl": scaleSpacing(32),
|
|
31
|
+
"--chl-spacing-2xl": scaleSpacing(40),
|
|
32
|
+
"--chl-spacing-3xl": scaleSpacing(48),
|
|
33
|
+
"--chl-spacing-4xl": scaleSpacing(64),
|
|
34
|
+
"--chl-border-radius-md": scaleBorderRadius(8),
|
|
35
|
+
"--chl-border-radius-lg": scaleBorderRadius(12),
|
|
36
|
+
"--chl-border-radius-full": scaleBorderRadius(999),
|
|
37
|
+
"--chl-font-size-xs": scaleFontSize(12),
|
|
38
|
+
"--chl-font-size-sm": scaleFontSize(14),
|
|
39
|
+
"--chl-font-size-md": scaleFontSize(16),
|
|
40
|
+
"--chl-font-family": "inherit",
|
|
41
|
+
"--chl-ring": "0 0 0 1px color-mix(in srgb, transparent, light-dark(#000, #fff) 7%)",
|
|
42
|
+
"--chl-shadow-subtle": "0 2px 3px -1px rgb(0 0 0 / 0.08), 0 1px 0 0 rgb(0 0 0 / 0.02)",
|
|
43
|
+
"--chl-shadow-elevated": "0 5px 15px 0 color-mix(in srgb, transparent, #000 8%), 0 15px 35px -5px color-mix(in srgb, transparent, #000 20%)",
|
|
44
|
+
...accentFamily(DEFAULT_ACCENT_COLOR, DEFAULT_ACCENT_CONTRAST_COLOR),
|
|
45
|
+
...lightDarkFamilies(lightColorFamilies, darkColorFamilies),
|
|
46
|
+
"--chl-color-border-accent": "oklch(1 0 0 / 0.2)",
|
|
47
|
+
"--chl-color-border-primary": "oklch(0.627 0 0 / 0.133)",
|
|
48
|
+
"--chl-color-border-secondary": "oklch(0.627 0 0 / 0.133)",
|
|
49
|
+
"--chl-border-accent": "1px solid var(--chl-color-border-accent)",
|
|
50
|
+
"--chl-border-primary": "1px solid var(--chl-color-border-primary)",
|
|
51
|
+
"--chl-border-secondary": "1px solid var(--chl-color-border-secondary)"
|
|
52
|
+
};
|
|
53
|
+
function rootStyle(theme) {
|
|
54
|
+
const vars = { ...rootTokenFamilies };
|
|
55
|
+
if (theme.accentColor !== void 0) {
|
|
56
|
+
const accentContrastColor = generateContrastColor(theme.accentColor);
|
|
57
|
+
vars["--chl-accent"] = theme.accentColor;
|
|
58
|
+
vars["--chl-accent-contrast"] = accentContrastColor;
|
|
59
|
+
Object.assign(vars, accentFamily(theme.accentColor, accentContrastColor));
|
|
60
|
+
}
|
|
61
|
+
if (theme.spacingScaling !== void 0) vars["--chl-spacing-scaling"] = String(theme.spacingScaling);
|
|
62
|
+
if (theme.fontSizeScaling !== void 0) vars["--chl-font-size-scaling"] = String(theme.fontSizeScaling);
|
|
63
|
+
if (theme.borderRadiusScaling !== void 0) vars["--chl-border-radius-scaling"] = String(theme.borderRadiusScaling);
|
|
64
|
+
return vars;
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { DEFAULT_ACCENT_COLOR, DEFAULT_ACCENT_CONTRAST_COLOR, rootStyle };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","names":[],"sources":["../../src/theme/tokens.ts"],"sourcesContent":["import type { CSSObject } from '@emotion/react'\nimport { generateColorFamily, generateContrastColor, lightDarkFamilies } from './color-system'\n\nexport const DEFAULT_ACCENT_COLOR = 'oklch(0.57 0.25 256.49)'\nexport const DEFAULT_SPACING_SCALING = 1\nexport const DEFAULT_FONT_SIZE_SCALING = 1\nexport const DEFAULT_BORDER_RADIUS_SCALING = 1\nexport const DEFAULT_ACCENT_CONTRAST_COLOR = generateContrastColor(DEFAULT_ACCENT_COLOR)\n\nconst scaleSpacing = (pixels: number) =>\n `calc(${pixels}px * var(--chl-spacing-scaling, ${DEFAULT_SPACING_SCALING}))`\nconst scaleFontSize = (pixels: number) =>\n `calc(${pixels}px * var(--chl-font-size-scaling, ${DEFAULT_FONT_SIZE_SCALING}))`\nconst scaleBorderRadius = (pixels: number) =>\n `calc(${pixels}px * var(--chl-border-radius-scaling, ${DEFAULT_BORDER_RADIUS_SCALING}))`\n\nconst accentFamily = (accentColor: string, accentContrastColor: string) =>\n generateColorFamily(\n 'background',\n 'accent',\n `var(--chl-accent, ${accentColor})`,\n `var(--chl-accent-contrast, ${accentContrastColor})`,\n )\n\nconst lightColorFamilies = {\n ...generateColorFamily('background', 'primary', 'oklch(1 0 0)', 'var(--chl-color-text-primary)'),\n ...generateColorFamily(\n 'background',\n 'secondary',\n 'oklch(0.985 0 0)',\n 'var(--chl-color-text-secondary)',\n ),\n ...generateColorFamily('text', 'primary', 'oklch(0.25 0 0)'),\n ...generateColorFamily('text', 'secondary', 'oklch(0.46 0 0)'),\n ...generateColorFamily('text', 'tertiary', 'oklch(0.627 0 0)'),\n}\n\nconst darkColorFamilies = {\n ...generateColorFamily(\n 'background',\n 'primary',\n 'oklch(0.134 0 0)',\n 'var(--chl-color-text-primary)',\n 'dark',\n ),\n ...generateColorFamily(\n 'background',\n 'secondary',\n 'oklch(0.191 0 0)',\n 'var(--chl-color-text-secondary)',\n 'dark',\n ),\n ...generateColorFamily('text', 'primary', 'oklch(0.949 0 0)', false, 'dark'),\n ...generateColorFamily('text', 'secondary', 'oklch(0.792 0 0)', false, 'dark'),\n ...generateColorFamily('text', 'tertiary', 'oklch(0.627 0 0)', false, 'dark'),\n}\n\nconst rootTokenFamilies = {\n '--chl-spacing-3xs': scaleSpacing(2),\n '--chl-spacing-2xs': scaleSpacing(4),\n '--chl-spacing-xs': scaleSpacing(8),\n '--chl-spacing-sm': scaleSpacing(12),\n '--chl-spacing-md': scaleSpacing(16),\n '--chl-spacing-lg': scaleSpacing(24),\n '--chl-spacing-xl': scaleSpacing(32),\n '--chl-spacing-2xl': scaleSpacing(40),\n '--chl-spacing-3xl': scaleSpacing(48),\n '--chl-spacing-4xl': scaleSpacing(64),\n\n '--chl-border-radius-md': scaleBorderRadius(8),\n '--chl-border-radius-lg': scaleBorderRadius(12),\n '--chl-border-radius-full': scaleBorderRadius(999),\n\n '--chl-font-size-xs': scaleFontSize(12),\n '--chl-font-size-sm': scaleFontSize(14),\n '--chl-font-size-md': scaleFontSize(16),\n '--chl-font-family': 'inherit',\n\n '--chl-ring': '0 0 0 1px color-mix(in srgb, transparent, light-dark(#000, #fff) 7%)',\n '--chl-shadow-subtle': '0 2px 3px -1px rgb(0 0 0 / 0.08), 0 1px 0 0 rgb(0 0 0 / 0.02)',\n '--chl-shadow-elevated':\n '0 5px 15px 0 color-mix(in srgb, transparent, #000 8%), 0 15px 35px -5px color-mix(in srgb, transparent, #000 20%)',\n\n ...accentFamily(DEFAULT_ACCENT_COLOR, DEFAULT_ACCENT_CONTRAST_COLOR),\n ...lightDarkFamilies(lightColorFamilies, darkColorFamilies),\n\n '--chl-color-border-accent': 'oklch(1 0 0 / 0.2)',\n '--chl-color-border-primary': 'oklch(0.627 0 0 / 0.133)',\n '--chl-color-border-secondary': 'oklch(0.627 0 0 / 0.133)',\n '--chl-border-accent': '1px solid var(--chl-color-border-accent)',\n '--chl-border-primary': '1px solid var(--chl-color-border-primary)',\n '--chl-border-secondary': '1px solid var(--chl-color-border-secondary)',\n} satisfies CSSObject\n\nexport type ChimelingColorScheme = 'inherit' | 'light' | 'dark'\n\nexport type ThemeContextValue = {\n accentColor?: string\n colorScheme?: ChimelingColorScheme\n spacingScaling?: number\n fontSizeScaling?: number\n borderRadiusScaling?: number\n}\n\nexport function rootStyle(theme: ThemeContextValue): CSSObject {\n const vars: CSSObject = { ...rootTokenFamilies }\n\n if (theme.accentColor !== undefined) {\n const accentContrastColor = generateContrastColor(theme.accentColor)\n vars['--chl-accent'] = theme.accentColor\n vars['--chl-accent-contrast'] = accentContrastColor\n Object.assign(vars, accentFamily(theme.accentColor, accentContrastColor))\n }\n if (theme.spacingScaling !== undefined) {\n vars['--chl-spacing-scaling'] = String(theme.spacingScaling)\n }\n if (theme.fontSizeScaling !== undefined) {\n vars['--chl-font-size-scaling'] = String(theme.fontSizeScaling)\n }\n if (theme.borderRadiusScaling !== undefined) {\n vars['--chl-border-radius-scaling'] = String(theme.borderRadiusScaling)\n }\n\n return vars\n}\n"],"mappings":";;AAGA,MAAa,uBAAuB;AAIpC,MAAa,gCAAgC,sBAAsB,oBAAoB;AAEvF,MAAM,gBAAgB,WACpB,QAAQ,OAAO;AACjB,MAAM,iBAAiB,WACrB,QAAQ,OAAO;AACjB,MAAM,qBAAqB,WACzB,QAAQ,OAAO;AAEjB,MAAM,gBAAgB,aAAqB,wBACzC,oBACE,cACA,UACA,qBAAqB,YAAY,IACjC,8BAA8B,oBAAoB,EACpD;AAEF,MAAM,qBAAqB;CACzB,GAAG,oBAAoB,cAAc,WAAW,gBAAgB,+BAA+B;CAC/F,GAAG,oBACD,cACA,aACA,oBACA,iCACF;CACA,GAAG,oBAAoB,QAAQ,WAAW,iBAAiB;CAC3D,GAAG,oBAAoB,QAAQ,aAAa,iBAAiB;CAC7D,GAAG,oBAAoB,QAAQ,YAAY,kBAAkB;AAC/D;AAEA,MAAM,oBAAoB;CACxB,GAAG,oBACD,cACA,WACA,oBACA,iCACA,MACF;CACA,GAAG,oBACD,cACA,aACA,oBACA,mCACA,MACF;CACA,GAAG,oBAAoB,QAAQ,WAAW,oBAAoB,OAAO,MAAM;CAC3E,GAAG,oBAAoB,QAAQ,aAAa,oBAAoB,OAAO,MAAM;CAC7E,GAAG,oBAAoB,QAAQ,YAAY,oBAAoB,OAAO,MAAM;AAC9E;AAEA,MAAM,oBAAoB;CACxB,qBAAqB,aAAa,CAAC;CACnC,qBAAqB,aAAa,CAAC;CACnC,oBAAoB,aAAa,CAAC;CAClC,oBAAoB,aAAa,EAAE;CACnC,oBAAoB,aAAa,EAAE;CACnC,oBAAoB,aAAa,EAAE;CACnC,oBAAoB,aAAa,EAAE;CACnC,qBAAqB,aAAa,EAAE;CACpC,qBAAqB,aAAa,EAAE;CACpC,qBAAqB,aAAa,EAAE;CAEpC,0BAA0B,kBAAkB,CAAC;CAC7C,0BAA0B,kBAAkB,EAAE;CAC9C,4BAA4B,kBAAkB,GAAG;CAEjD,sBAAsB,cAAc,EAAE;CACtC,sBAAsB,cAAc,EAAE;CACtC,sBAAsB,cAAc,EAAE;CACtC,qBAAqB;CAErB,cAAc;CACd,uBAAuB;CACvB,yBACE;CAEF,GAAG,aAAa,sBAAsB,6BAA6B;CACnE,GAAG,kBAAkB,oBAAoB,iBAAiB;CAE1D,6BAA6B;CAC7B,8BAA8B;CAC9B,gCAAgC;CAChC,uBAAuB;CACvB,wBAAwB;CACxB,0BAA0B;AAC5B;AAYA,SAAgB,UAAU,OAAqC;CAC7D,MAAM,OAAkB,EAAE,GAAG,kBAAkB;CAE/C,IAAI,MAAM,gBAAgB,KAAA,GAAW;EACnC,MAAM,sBAAsB,sBAAsB,MAAM,WAAW;EACnE,KAAK,kBAAkB,MAAM;EAC7B,KAAK,2BAA2B;EAChC,OAAO,OAAO,MAAM,aAAa,MAAM,aAAa,mBAAmB,CAAC;CAC1E;CACA,IAAI,MAAM,mBAAmB,KAAA,GAC3B,KAAK,2BAA2B,OAAO,MAAM,cAAc;CAE7D,IAAI,MAAM,oBAAoB,KAAA,GAC5B,KAAK,6BAA6B,OAAO,MAAM,eAAe;CAEhE,IAAI,MAAM,wBAAwB,KAAA,GAChC,KAAK,iCAAiC,OAAO,MAAM,mBAAmB;CAGxE,OAAO;AACT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cairntale/chimeling-react",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Chimeling React library",
|
|
6
6
|
"homepage": "https://chimeling.app/",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@base-ui/react": "^1.7.0",
|
|
28
|
+
"colorjs.io": "^0.7.1",
|
|
28
29
|
"date-fns": "^4.4.0",
|
|
29
30
|
"dialkit": "^2.0.0",
|
|
30
31
|
"es-toolkit": "^1.52.0",
|