@posthog/quill-tokens 0.1.0-alpha.6 → 0.1.2-alpha.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.
- package/dist/color-system.css +9 -9
- package/dist/color-system.scoped.css +119 -0
- package/dist/colors.d.ts +21 -1
- package/dist/colors.d.ts.map +1 -1
- package/dist/index.cjs +53 -19
- package/dist/index.js +181 -132
- package/dist/tailwind-lib.css +2 -2
- package/dist/tailwind-lib.scoped.css +101 -0
- package/dist/tailwind.css +2 -2
- package/dist/tailwind.scoped.css +107 -0
- package/package.json +5 -2
- package/src/build.ts +17 -0
- package/src/colors.ts +118 -22
package/dist/color-system.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
color-scheme: light;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
.dark {
|
|
7
|
+
:is(.dark, [theme="dark"]) {
|
|
8
8
|
color-scheme: dark;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
--ring: oklch(0.446 0.03 257);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.dark {
|
|
42
|
+
:is(.dark, [theme="dark"]) {
|
|
43
43
|
--foreground: oklch(0.967 0.003 265);
|
|
44
44
|
--card-foreground: oklch(0.967 0.003 265);
|
|
45
45
|
--popover-foreground: oklch(0.967 0.003 265);
|
|
@@ -73,12 +73,12 @@
|
|
|
73
73
|
--primary: var(--primary-light);
|
|
74
74
|
--border: oklch(0.9 calc(var(--theme-tint) * 0.8) var(--theme-hue));
|
|
75
75
|
--input: oklch(0.81 calc(var(--theme-tint) * 0.5) var(--theme-hue));
|
|
76
|
-
--fill-
|
|
77
|
-
--fill-
|
|
78
|
-
--fill-
|
|
76
|
+
--fill-expanded: oklch(0.87 0 0 / 60%);
|
|
77
|
+
--fill-selected: oklch(0.87 0 0 / 40%);
|
|
78
|
+
--fill-hover: oklch(0.87 0 0 / 20%);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
:is(.dark, .dark *) {
|
|
81
|
+
:is(:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) *) {
|
|
82
82
|
--background: oklch(0.145 calc(var(--theme-tint) * 1.5) var(--theme-dark-hue));
|
|
83
83
|
--card: oklch(0.2 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
84
84
|
--popover: oklch(0.21 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
--primary: var(--primary-dark);
|
|
88
88
|
--border: oklch(0.27 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
89
89
|
--input: oklch(0.3 calc(var(--theme-tint) * 1.5) var(--theme-dark-hue));
|
|
90
|
-
--fill-
|
|
91
|
-
--fill-
|
|
92
|
-
--fill-
|
|
90
|
+
--fill-expanded: oklch(0.55 0 0 / 35%);
|
|
91
|
+
--fill-selected: oklch(0.55 0 0 / 25%);
|
|
92
|
+
--fill-hover: oklch(0.55 0 0 / 15%);
|
|
93
93
|
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Scoped output — all token vars are gated behind `[data-quill]` so they
|
|
5
|
+
* do not clash with the consumer's existing CSS custom properties.
|
|
6
|
+
* Add the `data-quill` attribute to wrapper elements
|
|
7
|
+
* where quill components are rendered.
|
|
8
|
+
*
|
|
9
|
+
* Dark mode: works when the dark selector is on an ancestor of the scope
|
|
10
|
+
* element (.dark > [data-quill]) OR on the scope element itself
|
|
11
|
+
* ([data-quill].dark).
|
|
12
|
+
*/
|
|
13
|
+
[data-quill] {
|
|
14
|
+
color-scheme: light;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:is(:is(.dark, [theme="dark"]) [data-quill], [data-quill]:is(.dark, [theme="dark"])) {
|
|
18
|
+
color-scheme: dark;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:is([data-quill], [data-quill] *) {
|
|
22
|
+
--radius: 0.625rem;
|
|
23
|
+
--theme-hue: 90;
|
|
24
|
+
--theme-dark-hue: 264;
|
|
25
|
+
--theme-tint: 0.006;
|
|
26
|
+
--primary-light: oklch(0.65 0.21 37.41);
|
|
27
|
+
--primary-dark: oklch(0.83 0.16 84.71);
|
|
28
|
+
--foreground: oklch(0.13 0.028 262);
|
|
29
|
+
--card-foreground: oklch(0.13 0.028 262);
|
|
30
|
+
--popover-foreground: oklch(0.13 0.028 262);
|
|
31
|
+
--muted-foreground: oklch(0.446 0.03 257);
|
|
32
|
+
--accent-foreground: oklch(0.13 0.028 262);
|
|
33
|
+
--primary-foreground: oklch(1 0 0);
|
|
34
|
+
--secondary: oklch(0.31 0 0);
|
|
35
|
+
--secondary-foreground: oklch(1 0 0);
|
|
36
|
+
--destructive: oklch(0.92 0.03 32.22);
|
|
37
|
+
--destructive-foreground: oklch(0.59 0.2 23.61);
|
|
38
|
+
--success: oklch(0.94 0.06 154.03);
|
|
39
|
+
--success-foreground: oklch(0.448 0.119 151.328);
|
|
40
|
+
--warning: oklch(0.93 0.04 74.41);
|
|
41
|
+
--warning-foreground: oklch(0.476 0.114 61.907);
|
|
42
|
+
--info: oklch(0.882 0.059 254.128);
|
|
43
|
+
--info-foreground: oklch(0.49 0.02 254);
|
|
44
|
+
--ring: oklch(0.446 0.03 257);
|
|
45
|
+
--background: oklch(0.97 var(--theme-tint) var(--theme-hue));
|
|
46
|
+
--card: oklch(0.995 calc(var(--theme-tint) * 0.3) var(--theme-hue));
|
|
47
|
+
--popover: oklch(0.995 calc(var(--theme-tint) * 0.3) var(--theme-hue));
|
|
48
|
+
--muted: oklch(0.94 calc(var(--theme-tint) * 1.5) var(--theme-hue));
|
|
49
|
+
--accent: oklch(0.87 calc(var(--theme-tint) * 0.8) var(--theme-hue));
|
|
50
|
+
--primary: var(--primary-light);
|
|
51
|
+
--border: oklch(0.9 calc(var(--theme-tint) * 0.8) var(--theme-hue));
|
|
52
|
+
--input: oklch(0.81 calc(var(--theme-tint) * 0.5) var(--theme-hue));
|
|
53
|
+
--fill-expanded: oklch(0.87 0 0 / 60%);
|
|
54
|
+
--fill-selected: oklch(0.87 0 0 / 40%);
|
|
55
|
+
--fill-hover: oklch(0.87 0 0 / 20%);
|
|
56
|
+
|
|
57
|
+
/* Override Tailwind --color-* theme tokens within scope so utilities
|
|
58
|
+
* like bg-accent, text-foreground, border-border resolve to quill's
|
|
59
|
+
* values instead of the consumer's global theme. */
|
|
60
|
+
--color-background: var(--background);
|
|
61
|
+
--color-foreground: var(--foreground);
|
|
62
|
+
--color-card: var(--card);
|
|
63
|
+
--color-card-foreground: var(--card-foreground);
|
|
64
|
+
--color-popover: var(--popover);
|
|
65
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
66
|
+
--color-muted: var(--muted);
|
|
67
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
68
|
+
--color-accent: var(--accent);
|
|
69
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
70
|
+
--color-primary: var(--primary);
|
|
71
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
72
|
+
--color-secondary: var(--secondary);
|
|
73
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
74
|
+
--color-destructive: var(--destructive);
|
|
75
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
76
|
+
--color-success: var(--success);
|
|
77
|
+
--color-success-foreground: var(--success-foreground);
|
|
78
|
+
--color-warning: var(--warning);
|
|
79
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
80
|
+
--color-info: var(--info);
|
|
81
|
+
--color-info-foreground: var(--info-foreground);
|
|
82
|
+
--color-border: var(--border);
|
|
83
|
+
--color-input: var(--input);
|
|
84
|
+
--color-ring: var(--ring);
|
|
85
|
+
--color-fill-expanded: var(--fill-expanded);
|
|
86
|
+
--color-fill-selected: var(--fill-selected);
|
|
87
|
+
--color-fill-hover: var(--fill-hover);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:is(:is(.dark, [theme="dark"]) [data-quill], [data-quill]:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) [data-quill] *, [data-quill]:is(.dark, [theme="dark"]) *) {
|
|
91
|
+
--foreground: oklch(0.967 0.003 265);
|
|
92
|
+
--card-foreground: oklch(0.967 0.003 265);
|
|
93
|
+
--popover-foreground: oklch(0.967 0.003 265);
|
|
94
|
+
--muted-foreground: oklch(0.709 0 0);
|
|
95
|
+
--accent-foreground: oklch(0.967 0.003 265);
|
|
96
|
+
--primary-foreground: oklch(0.13 0.028 262);
|
|
97
|
+
--secondary: oklch(0.86 0 0);
|
|
98
|
+
--secondary-foreground: oklch(0.13 0.028 262);
|
|
99
|
+
--destructive: oklch(0.24 0.03 2.79);
|
|
100
|
+
--destructive-foreground: oklch(0.6316 0.1927 24.53);
|
|
101
|
+
--success: oklch(0.27 0.04 157.6);
|
|
102
|
+
--success-foreground: oklch(0.925 0.084 155.995);
|
|
103
|
+
--warning: oklch(0.29 0.03 75);
|
|
104
|
+
--warning-foreground: oklch(0.77 0.14 99.29);
|
|
105
|
+
--info: oklch(0.4242 0.1982 265.5 / 40%);
|
|
106
|
+
--info-foreground: oklch(0.882 0.059 254.128);
|
|
107
|
+
--ring: oklch(0.709 0 0);
|
|
108
|
+
--background: oklch(0.145 calc(var(--theme-tint) * 1.5) var(--theme-dark-hue));
|
|
109
|
+
--card: oklch(0.2 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
110
|
+
--popover: oklch(0.21 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
111
|
+
--muted: oklch(0.27 calc(var(--theme-tint) * 1.5) var(--theme-dark-hue));
|
|
112
|
+
--accent: oklch(0.35 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
113
|
+
--primary: var(--primary-dark);
|
|
114
|
+
--border: oklch(0.27 calc(var(--theme-tint) * 1.2) var(--theme-dark-hue));
|
|
115
|
+
--input: oklch(0.3 calc(var(--theme-tint) * 1.5) var(--theme-dark-hue));
|
|
116
|
+
--fill-expanded: oklch(0.55 0 0 / 35%);
|
|
117
|
+
--fill-selected: oklch(0.55 0 0 / 25%);
|
|
118
|
+
--fill-hover: oklch(0.55 0 0 / 15%);
|
|
119
|
+
}
|
package/dist/colors.d.ts
CHANGED
|
@@ -42,11 +42,31 @@ export declare const semanticColors: Record<string, ColorTuple>;
|
|
|
42
42
|
export interface StylesConfig {
|
|
43
43
|
/** Include @layer base reset rules (apps only) */
|
|
44
44
|
includeBaseLayer?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* CSS selector to scope all token CSS vars to. When set, vars are only
|
|
47
|
+
* defined inside elements matching this selector, preventing clashes
|
|
48
|
+
* with the consumer's existing CSS custom properties.
|
|
49
|
+
*
|
|
50
|
+
* Example: `'[data-quill]'` — consumer adds `data-quill` to wrapper
|
|
51
|
+
* elements. During migration the attribute moves up the DOM tree;
|
|
52
|
+
* when it reaches `<html>` the scope is effectively global and can
|
|
53
|
+
* be removed.
|
|
54
|
+
*/
|
|
55
|
+
scope?: string;
|
|
56
|
+
/**
|
|
57
|
+
* CSS selector(s) for dark mode. Accepts a single selector or an
|
|
58
|
+
* array — when multiple are given they are combined with `:is()`
|
|
59
|
+
* so any of them activates dark mode.
|
|
60
|
+
*
|
|
61
|
+
* Default: `['.dark', '[theme="dark"]']` (both `.dark` class and
|
|
62
|
+
* `theme="dark"` attribute work out of the box).
|
|
63
|
+
*/
|
|
64
|
+
darkSelector?: string | string[];
|
|
45
65
|
}
|
|
46
66
|
/** Flat object for one theme */
|
|
47
67
|
export declare function resolveTheme(mode: 'light' | 'dark'): Record<string, string>;
|
|
48
68
|
/** Generate color-system.css (:root light + .dark overrides) */
|
|
49
|
-
export declare function generateColorSystemCSS(theme?: ThemeConfig): string;
|
|
69
|
+
export declare function generateColorSystemCSS(theme?: ThemeConfig, opts?: Pick<StylesConfig, 'scope' | 'darkSelector'>): string;
|
|
50
70
|
/**
|
|
51
71
|
* Generate Tailwind v4 @theme + @custom-variant + optional @layer base.
|
|
52
72
|
*
|
package/dist/colors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,WAAW,WAAW;IACxB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,WAM3B,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AACrC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;AA8BtF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,WAAW,WAAW;IACxB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,WAM3B,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AACrC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;AA8BtF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAuEhE;AAED,eAAO,MAAM,cAAc,4BAAwB,CAAA;AAInD,MAAM,WAAW,YAAY;IACzB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACnC;AAID,gCAAgC;AAChC,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG3E;AAmED,gEAAgE;AAChE,wBAAgB,sBAAsB,CAClC,KAAK,GAAE,WAA2B,EAClC,IAAI,GAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,cAAc,CAAM,GACxD,MAAM,CAqHR;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CAwFnE"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,32 +1,66 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function
|
|
2
|
-
`)}function c(r,
|
|
3
|
-
`)}function x(r){return/\s/.test(r)?`"${r}"`:r}function
|
|
4
|
-
--text-${r}--line-height: ${
|
|
5
|
-
`)}function
|
|
6
|
-
`)}const
|
|
7
|
-
`),e=
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function b(r,n,t=" "){return Object.entries(r).map(([s,l])=>`${t}--${n}-${s}: ${l};`).join(`
|
|
2
|
+
`)}function c(r,n=" "){return Object.entries(r).map(([t,s])=>`${n}--${t}: ${s};`).join(`
|
|
3
|
+
`)}function x(r){return/\s/.test(r)?`"${r}"`:r}function y(r){return r.map(x).join(", ")}const S={sm:"0 1px 2px 0 rgba(0, 0, 0, 0.3)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)"};function _(){return b(S,"shadow")}const m=.25,v=`${m}rem`,j=16;function A(r){return`${m*r}rem`}function H(r){return m*r*j}function D(){return` --spacing: ${v};`}const R=16;function a(r){return`${r/R}rem`}const E={xxs:[a(10),{lineHeight:a(12)}],xs:[a(12),{lineHeight:a(16)}],sm:[a(14),{lineHeight:a(20)}],base:[a(16),{lineHeight:a(24)}],lg:[a(18),{lineHeight:a(28)}],xl:[a(20),{lineHeight:a(28)}],"2xl":[a(24),{lineHeight:a(32)}]},T={sans:["-apple-system","BlinkMacSystemFont","Inter","Segoe UI","Roboto","Helvetica Neue","sans-serif"],mono:["JetBrains Mono","Fira Code","monospace"]};function I(){return Object.entries(E).map(([r,[n,{lineHeight:t}]])=>` --text-${r}: ${n};
|
|
4
|
+
--text-${r}--line-height: ${t};`).join(`
|
|
5
|
+
`)}function M(){return Object.entries(T).map(([r,n])=>` --font-${r}: ${y(n)};`).join(`
|
|
6
|
+
`)}const w={hue:90,darkHue:264,tint:.006,primaryLight:"oklch(0.65 0.21 37.41)",primaryDark:"oklch(0.83 0.16 84.71)"};function i(r,n,t,s){const l=t==="light"?"var(--theme-hue)":"var(--theme-dark-hue)",e=n===1?"var(--theme-tint)":n===0?"0":`calc(var(--theme-tint) * ${n})`;return`oklch(${r} ${e} ${l})`}function o(r,n,t,s){return s!==void 0?`oklch(${r} ${n} ${t} / ${s*100}%)`:`oklch(${r} ${n} ${t})`}function C(){return{background:[i(.97,1,"light"),i(.145,1.5,"dark"),"bg-background"],foreground:[o(.13,.028,262),o(.967,.003,265),"text-foreground"],card:[i(.995,.3,"light"),i(.2,1.2,"dark"),"bg-card"],"card-foreground":[o(.13,.028,262),o(.967,.003,265),"text-card-foreground"],popover:[i(.995,.3,"light"),i(.21,1.2,"dark"),"bg-popover"],"popover-foreground":[o(.13,.028,262),o(.967,.003,265),"text-popover-foreground"],muted:[i(.94,1.5,"light"),i(.27,1.5,"dark"),"bg-muted"],"muted-foreground":[o(.446,.03,257),o(.709,0,0),"text-muted-foreground"],accent:[i(.87,.8,"light"),i(.35,1.2,"dark"),"bg-accent"],"accent-foreground":[o(.13,.028,262),o(.967,.003,265),"text-accent-foreground"],primary:["var(--primary-light)","var(--primary-dark)","bg-primary"],"primary-foreground":[o(1,0,0),o(.13,.028,262),"text-primary-foreground"],secondary:[o(.31,0,0),o(.86,0,0),"bg-secondary"],"secondary-foreground":[o(1,0,0),o(.13,.028,262),"text-secondary-foreground"],destructive:[o(.92,.03,32.22),o(.24,.03,2.79),"bg-destructive"],"destructive-foreground":[o(.59,.2,23.61),o(.6316,.1927,24.53),"text-destructive-foreground"],success:[o(.94,.06,154.03),o(.27,.04,157.6),"bg-success"],"success-foreground":[o(.448,.119,151.328),o(.925,.084,155.995),"text-success-foreground"],warning:[o(.93,.04,74.41),o(.29,.03,75),"bg-warning"],"warning-foreground":[o(.476,.114,61.907),o(.77,.14,99.29),"text-warning-foreground"],info:[o(.882,.059,254.128),o(.4242,.1982,265.5,.4),"bg-info"],"info-foreground":[o(.49,.02,254),o(.882,.059,254.128),"text-info-foreground"],border:[i(.9,.8,"light"),i(.27,1.2,"dark"),"border-border"],input:[i(.81,.5,"light"),i(.3,1.5,"dark"),"border-input"],ring:[o(.446,.03,257),o(.709,0,0),"border-ring"],"fill-expanded":["oklch(0.87 0 0 / 60%)","oklch(0.55 0 0 / 35%)","bg-fill-expanded"],"fill-selected":["oklch(0.87 0 0 / 40%)","oklch(0.55 0 0 / 25%)","bg-fill-selected"],"fill-hover":["oklch(0.87 0 0 / 20%)","oklch(0.55 0 0 / 15%)","bg-fill-hover"]}}const p=C();function N(r){const n=r==="light"?0:1;return Object.fromEntries(Object.entries(p).map(([t,s])=>[t,s[n]]))}const V=new Set(["background","card","popover","muted","accent","primary","border","input","fill-hover","fill-expanded","fill-selected"]);function q(r){const n=["var(--theme-hue)","var(--theme-dark-hue)","var(--theme-tint)","var(--primary-light)","var(--primary-dark)"];for(const[t,[s,l]]of Object.entries(r))if(n.some(h=>s.includes(h)||l.includes(h))&&!V.has(t))throw new Error(`[@posthog/quill-tokens] Token "${t}" references a theme variable but is missing from THEME_DERIVED_TOKENS. Add it to the set in colors.ts or local [--theme-hue:X] overrides will silently fail for this token.`)}q(p);function F(r){const t=r===void 0?[".dark",'[theme="dark"]']:typeof r=="string"?[r]:r;return t.length===1?t[0]:`:is(${t.join(", ")})`}function B(r=w,n={}){const{scope:t}=n,s=F(n.darkSelector),l=(u=" ")=>[`${u}--radius: 0.625rem;`,`${u}--theme-hue: ${r.hue};`,`${u}--theme-dark-hue: ${r.darkHue};`,`${u}--theme-tint: ${r.tint};`,`${u}--primary-light: ${r.primaryLight};`,`${u}--primary-dark: ${r.primaryDark};`].join(`
|
|
7
|
+
`),e=u=>{const g={},$={};for(const[f,k]of Object.entries(p))V.has(f)?$[f]=k[u]:g[f]=k[u];return{staticVars:g,dynamicVars:$}},h=e(0),d=e(1);if(t){const u=`:is(${t}, ${t} *)`,g=`:is(${s} ${t}, ${t}${s}, ${s} ${t} *, ${t}${s} *)`;return`/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Scoped output — all token vars are gated behind \`${t}\` so they
|
|
11
|
+
* do not clash with the consumer's existing CSS custom properties.
|
|
12
|
+
* Add the \`${t.replace(/[[\]]/g,"")}\` attribute to wrapper elements
|
|
13
|
+
* where quill components are rendered.
|
|
14
|
+
*
|
|
15
|
+
* Dark mode: works when the dark selector is on an ancestor of the scope
|
|
16
|
+
* element (.dark > [data-quill]) OR on the scope element itself
|
|
17
|
+
* ([data-quill].dark).
|
|
18
|
+
*/
|
|
19
|
+
${t} {
|
|
20
|
+
color-scheme: light;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:is(${s} ${t}, ${t}${s}) {
|
|
24
|
+
color-scheme: dark;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
${u} {
|
|
28
|
+
${l()}
|
|
29
|
+
${c(h.staticVars)}
|
|
30
|
+
${c(h.dynamicVars)}
|
|
31
|
+
|
|
32
|
+
/* Override Tailwind --color-* theme tokens within scope so utilities
|
|
33
|
+
* like bg-accent, text-foreground, border-border resolve to quill's
|
|
34
|
+
* values instead of the consumer's global theme. */
|
|
35
|
+
${O()}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
${g} {
|
|
39
|
+
${c(d.staticVars)}
|
|
40
|
+
${c(d.dynamicVars)}
|
|
41
|
+
}
|
|
42
|
+
`}return`/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
8
43
|
|
|
9
44
|
:root {
|
|
10
45
|
color-scheme: light;
|
|
11
46
|
}
|
|
12
47
|
|
|
13
|
-
|
|
48
|
+
${s} {
|
|
14
49
|
color-scheme: dark;
|
|
15
50
|
}
|
|
16
51
|
|
|
17
52
|
/* Theme knobs — override these to shift the palette */
|
|
18
53
|
:root {
|
|
19
|
-
|
|
20
|
-
${o()}
|
|
54
|
+
${l()}
|
|
21
55
|
}
|
|
22
56
|
|
|
23
57
|
/* Static colors (no theme-var references, safe on :root) */
|
|
24
58
|
:root {
|
|
25
|
-
${c(
|
|
59
|
+
${c(h.staticVars)}
|
|
26
60
|
}
|
|
27
61
|
|
|
28
|
-
|
|
29
|
-
${c(
|
|
62
|
+
${s} {
|
|
63
|
+
${c(d.staticVars)}
|
|
30
64
|
}
|
|
31
65
|
|
|
32
66
|
/*
|
|
@@ -35,12 +69,12 @@ ${c(u.staticVars)}
|
|
|
35
69
|
* This enables local overrides like [--theme-hue:200] on a container.
|
|
36
70
|
*/
|
|
37
71
|
* {
|
|
38
|
-
${c(
|
|
72
|
+
${c(h.dynamicVars)}
|
|
39
73
|
}
|
|
40
74
|
|
|
41
|
-
:is(
|
|
42
|
-
${c(
|
|
75
|
+
:is(${s}, ${s} *) {
|
|
76
|
+
${c(d.dynamicVars)}
|
|
43
77
|
}
|
|
44
|
-
`}function
|
|
45
|
-
`)}function
|
|
46
|
-
`)}const
|
|
78
|
+
`}function O(){return Object.keys(p).map(r=>` --color-${r}: var(--${r});`).join(`
|
|
79
|
+
`)}function P(r={}){const{includeBaseLayer:n=!1,scope:t}=r,s=F(r.darkSelector),e=["/* Auto-generated by @posthog/quill-tokens — do not edit manually */","",`@custom-variant dark (${`&:is(${s}, ${s} *)`});`];return e.push(""),e.push("@theme inline {"),e.push(" --animate-skeleton: skeleton 2s -1s infinite linear;"),e.push(" --animate-pulse-glow: pulse-glow 2s -1s infinite linear;"),e.push(" --animate-horizontal-shake: horizontal-shake 0.3s ease-out;"),e.push(" --animate-radar: radar 2s ease-out infinite;"),e.push(""),e.push(" /* --- Colors --- */"),e.push(O()),e.push(""),e.push(" /* --- Spacing --- */"),e.push(D()),e.push(""),e.push(" /* --- Font sizes --- */"),e.push(I()),e.push(""),e.push(" /* --- Font families --- */"),e.push(M()),e.push(""),e.push(" /* --- Shadows --- */"),e.push(_()),e.push(""),e.push(" /* --- Radius (derived from --radius base) --- */"),e.push(" --radius-sm: calc(var(--radius) - 4px);"),e.push(" --radius-md: calc(var(--radius) - 2px);"),e.push(" --radius-lg: var(--radius);"),e.push(" --radius-xl: calc(var(--radius) + 4px);"),e.push(" --radius-2xl: calc(var(--radius) + 8px);"),e.push(" --radius-3xl: calc(var(--radius) + 12px);"),e.push(" --radius-4xl: calc(var(--radius) + 16px);"),e.push(""),e.push(" @keyframes skeleton {"),e.push(" to {"),e.push(" background-position: -200% 0;"),e.push(" }"),e.push(" }"),e.push(""),e.push(" @keyframes pulse-glow {"),e.push(" 0%, 100% { box-shadow: 0 0 2px 1px var(--pulse-glow-color, var(--color-accent)) }"),e.push(" 50% { box-shadow: 0 0 6px 2px var(--pulse-glow-color, var(--color-accent)) }"),e.push(" }"),e.push(""),e.push(" @keyframes horizontal-shake {"),e.push(" 0% { transform: translateX(0); }"),e.push(" 25% { transform: translateX(5px); }"),e.push(" 50% { transform: translateX(-5px); }"),e.push(" 75% { transform: translateX(2px); }"),e.push(" 100% { transform: translateX(0); }"),e.push(" }"),e.push(""),e.push(" @keyframes radar {"),e.push(" 0% { transform: scale(1); opacity: 0.5; }"),e.push(" 100% { transform: scale(1.5); opacity: 0; }"),e.push(" }"),e.push("}"),n&&(e.push(""),e.push("@layer base {"),t?(e.push(` ${t}, ${t} * {`),e.push(" @apply border-border outline-ring/50;"),e.push(" }")):(e.push(" * {"),e.push(" @apply border-border outline-ring/50;"),e.push(" }"),e.push(" body {"),e.push(" @apply bg-background text-foreground;"),e.push(" }")),e.push("}")),e.push(""),e.join(`
|
|
80
|
+
`)}const z={none:"0px",sm:"4px",md:"6px",lg:"8px",xl:"12px",full:"9999px"};exports.DEFAULT_THEME=w;exports.SPACING_BASE=v;exports.SPACING_BASE_REM=m;exports.borderRadius=z;exports.buildSemanticColors=C;exports.cssVars=b;exports.cssVarsFlat=c;exports.fontFamily=T;exports.fontFamilyValue=y;exports.fontSize=E;exports.generateColorSystemCSS=B;exports.generateStylesCSS=P;exports.quoteFontName=x;exports.resolveTheme=N;exports.semanticColors=p;exports.shadow=S;exports.spacing=A;exports.spacingPx=H;
|
package/dist/index.js
CHANGED
|
@@ -1,140 +1,147 @@
|
|
|
1
|
-
function
|
|
2
|
-
return Object.entries(r).map(([s,
|
|
1
|
+
function v(r, n, t = " ") {
|
|
2
|
+
return Object.entries(r).map(([s, l]) => `${t}--${n}-${s}: ${l};`).join(`
|
|
3
3
|
`);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
return Object.entries(r).map(([
|
|
5
|
+
function h(r, n = " ") {
|
|
6
|
+
return Object.entries(r).map(([t, s]) => `${n}--${t}: ${s};`).join(`
|
|
7
7
|
`);
|
|
8
8
|
}
|
|
9
|
-
function
|
|
9
|
+
function S(r) {
|
|
10
10
|
return /\s/.test(r) ? `"${r}"` : r;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
return r.map(
|
|
12
|
+
function E(r) {
|
|
13
|
+
return r.map(S).join(", ");
|
|
14
14
|
}
|
|
15
|
-
const
|
|
15
|
+
const w = {
|
|
16
16
|
sm: "0 1px 2px 0 rgba(0, 0, 0, 0.3)",
|
|
17
17
|
md: "0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3)",
|
|
18
18
|
lg: "0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)"
|
|
19
19
|
};
|
|
20
|
-
function
|
|
21
|
-
return
|
|
20
|
+
function T() {
|
|
21
|
+
return v(w, "shadow");
|
|
22
22
|
}
|
|
23
|
-
const
|
|
24
|
-
function
|
|
25
|
-
return `${
|
|
23
|
+
const f = 0.25, V = `${f}rem`, O = 16;
|
|
24
|
+
function I(r) {
|
|
25
|
+
return `${f * r}rem`;
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
return
|
|
27
|
+
function M(r) {
|
|
28
|
+
return f * r * O;
|
|
29
29
|
}
|
|
30
|
-
function
|
|
31
|
-
return ` --spacing: ${
|
|
30
|
+
function j() {
|
|
31
|
+
return ` --spacing: ${V};`;
|
|
32
32
|
}
|
|
33
|
-
const
|
|
34
|
-
function
|
|
35
|
-
return `${r /
|
|
33
|
+
const C = 16;
|
|
34
|
+
function a(r) {
|
|
35
|
+
return `${r / C}rem`;
|
|
36
36
|
}
|
|
37
|
-
const
|
|
38
|
-
xxs: [
|
|
37
|
+
const _ = {
|
|
38
|
+
xxs: [a(10), { lineHeight: a(12) }],
|
|
39
39
|
// 0.625rem (10px), 0.75rem (12px)
|
|
40
|
-
xs: [
|
|
40
|
+
xs: [a(12), { lineHeight: a(16) }],
|
|
41
41
|
// 0.75rem (12px), 1rem (16px)
|
|
42
|
-
sm: [
|
|
42
|
+
sm: [a(14), { lineHeight: a(20) }],
|
|
43
43
|
// 0.875rem (14px), 1.25rem (20px)
|
|
44
|
-
base: [
|
|
44
|
+
base: [a(16), { lineHeight: a(24) }],
|
|
45
45
|
// 1rem (16px), 1.5rem (24px)
|
|
46
|
-
lg: [
|
|
46
|
+
lg: [a(18), { lineHeight: a(28) }],
|
|
47
47
|
// 1.125rem (18px), 1.75rem (28px)
|
|
48
|
-
xl: [
|
|
48
|
+
xl: [a(20), { lineHeight: a(28) }],
|
|
49
49
|
// 1.25rem (20px), 1.75rem (28px)
|
|
50
|
-
"2xl": [
|
|
50
|
+
"2xl": [a(24), { lineHeight: a(32) }]
|
|
51
51
|
// 1.5rem (24px), 2rem (32px)
|
|
52
|
-
},
|
|
52
|
+
}, F = {
|
|
53
53
|
sans: ["-apple-system", "BlinkMacSystemFont", "Inter", "Segoe UI", "Roboto", "Helvetica Neue", "sans-serif"],
|
|
54
54
|
mono: ["JetBrains Mono", "Fira Code", "monospace"]
|
|
55
55
|
};
|
|
56
|
-
function
|
|
57
|
-
return Object.entries(
|
|
58
|
-
--text-${r}--line-height: ${
|
|
56
|
+
function H() {
|
|
57
|
+
return Object.entries(_).map(([r, [n, { lineHeight: t }]]) => ` --text-${r}: ${n};
|
|
58
|
+
--text-${r}--line-height: ${t};`).join(`
|
|
59
59
|
`);
|
|
60
60
|
}
|
|
61
|
-
function
|
|
62
|
-
return Object.entries(
|
|
61
|
+
function A() {
|
|
62
|
+
return Object.entries(F).map(([r, n]) => ` --font-${r}: ${E(n)};`).join(`
|
|
63
63
|
`);
|
|
64
64
|
}
|
|
65
|
-
const
|
|
65
|
+
const D = {
|
|
66
66
|
hue: 90,
|
|
67
67
|
darkHue: 264,
|
|
68
68
|
tint: 6e-3,
|
|
69
69
|
primaryLight: "oklch(0.65 0.21 37.41)",
|
|
70
70
|
primaryDark: "oklch(0.83 0.16 84.71)"
|
|
71
71
|
};
|
|
72
|
-
function
|
|
73
|
-
const
|
|
74
|
-
return `oklch(${r} ${
|
|
72
|
+
function i(r, n, t, s) {
|
|
73
|
+
const l = t === "light" ? "var(--theme-hue)" : "var(--theme-dark-hue)", e = n === 1 ? "var(--theme-tint)" : n === 0 ? "0" : `calc(var(--theme-tint) * ${n})`;
|
|
74
|
+
return `oklch(${r} ${e} ${l})`;
|
|
75
75
|
}
|
|
76
|
-
function
|
|
77
|
-
return s !== void 0 ? `oklch(${r} ${
|
|
76
|
+
function o(r, n, t, s) {
|
|
77
|
+
return s !== void 0 ? `oklch(${r} ${n} ${t} / ${s * 100}%)` : `oklch(${r} ${n} ${t})`;
|
|
78
78
|
}
|
|
79
|
-
function
|
|
79
|
+
function R() {
|
|
80
80
|
return {
|
|
81
81
|
// ── Surfaces (theme-derived) ──────────────────
|
|
82
|
-
background: [
|
|
83
|
-
foreground: [
|
|
84
|
-
card: [
|
|
85
|
-
"card-foreground": [
|
|
86
|
-
popover: [
|
|
87
|
-
"popover-foreground": [
|
|
88
|
-
muted: [
|
|
89
|
-
"muted-foreground": [
|
|
90
|
-
accent: [
|
|
91
|
-
"accent-foreground": [
|
|
82
|
+
background: [i(0.97, 1, "light"), i(0.145, 1.5, "dark"), "bg-background"],
|
|
83
|
+
foreground: [o(0.13, 0.028, 262), o(0.967, 3e-3, 265), "text-foreground"],
|
|
84
|
+
card: [i(0.995, 0.3, "light"), i(0.2, 1.2, "dark"), "bg-card"],
|
|
85
|
+
"card-foreground": [o(0.13, 0.028, 262), o(0.967, 3e-3, 265), "text-card-foreground"],
|
|
86
|
+
popover: [i(0.995, 0.3, "light"), i(0.21, 1.2, "dark"), "bg-popover"],
|
|
87
|
+
"popover-foreground": [o(0.13, 0.028, 262), o(0.967, 3e-3, 265), "text-popover-foreground"],
|
|
88
|
+
muted: [i(0.94, 1.5, "light"), i(0.27, 1.5, "dark"), "bg-muted"],
|
|
89
|
+
"muted-foreground": [o(0.446, 0.03, 257), o(0.709, 0, 0), "text-muted-foreground"],
|
|
90
|
+
accent: [i(0.87, 0.8, "light"), i(0.35, 1.2, "dark"), "bg-accent"],
|
|
91
|
+
"accent-foreground": [o(0.13, 0.028, 262), o(0.967, 3e-3, 265), "text-accent-foreground"],
|
|
92
92
|
// ── Brand (driven by --primary-light / --primary-dark) ─
|
|
93
93
|
primary: ["var(--primary-light)", "var(--primary-dark)", "bg-primary"],
|
|
94
|
-
"primary-foreground": [
|
|
95
|
-
secondary: [
|
|
96
|
-
"secondary-foreground": [
|
|
94
|
+
"primary-foreground": [o(1, 0, 0), o(0.13, 0.028, 262), "text-primary-foreground"],
|
|
95
|
+
secondary: [o(0.31, 0, 0), o(0.86, 0, 0), "bg-secondary"],
|
|
96
|
+
"secondary-foreground": [o(1, 0, 0), o(0.13, 0.028, 262), "text-secondary-foreground"],
|
|
97
97
|
// ── Status (independent of theme hue) ─────────
|
|
98
|
-
destructive: [
|
|
98
|
+
destructive: [o(0.92, 0.03, 32.22), o(0.24, 0.03, 2.79), "bg-destructive"],
|
|
99
99
|
"destructive-foreground": [
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
o(0.59, 0.2, 23.61),
|
|
101
|
+
o(0.6316, 0.1927, 24.53),
|
|
102
102
|
"text-destructive-foreground"
|
|
103
103
|
],
|
|
104
|
-
success: [
|
|
104
|
+
success: [o(0.94, 0.06, 154.03), o(0.27, 0.04, 157.6), "bg-success"],
|
|
105
105
|
"success-foreground": [
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
o(0.448, 0.119, 151.328),
|
|
107
|
+
o(0.925, 0.084, 155.995),
|
|
108
108
|
"text-success-foreground"
|
|
109
109
|
],
|
|
110
|
-
warning: [
|
|
111
|
-
"warning-foreground": [
|
|
112
|
-
info: [
|
|
113
|
-
"info-foreground": [
|
|
110
|
+
warning: [o(0.93, 0.04, 74.41), o(0.29, 0.03, 75), "bg-warning"],
|
|
111
|
+
"warning-foreground": [o(0.476, 0.114, 61.907), o(0.77, 0.14, 99.29), "text-warning-foreground"],
|
|
112
|
+
info: [o(0.882, 0.059, 254.128), o(0.4242, 0.1982, 265.5, 0.4), "bg-info"],
|
|
113
|
+
"info-foreground": [o(0.49, 0.02, 254), o(0.882, 0.059, 254.128), "text-info-foreground"],
|
|
114
114
|
// ── Borders & rings (theme-derived) ───────────
|
|
115
|
-
border: [
|
|
116
|
-
input: [
|
|
117
|
-
ring: [
|
|
118
|
-
// ── Interactive fills
|
|
119
|
-
|
|
115
|
+
border: [i(0.9, 0.8, "light"), i(0.27, 1.2, "dark"), "border-border"],
|
|
116
|
+
input: [i(0.81, 0.5, "light"), i(0.3, 1.5, "dark"), "border-input"],
|
|
117
|
+
ring: [o(0.446, 0.03, 257), o(0.709, 0, 0), "border-ring"],
|
|
118
|
+
// ── Interactive fills for default button/ interactive elements ───────────
|
|
119
|
+
// Darkest fill in light mode, lightest in dark mode
|
|
120
|
+
"fill-expanded": [
|
|
121
|
+
"oklch(0.87 0 0 / 60%)",
|
|
122
|
+
"oklch(0.55 0 0 / 35%)",
|
|
123
|
+
"bg-fill-expanded"
|
|
124
|
+
],
|
|
125
|
+
// Medium fill
|
|
126
|
+
"fill-selected": [
|
|
120
127
|
"oklch(0.87 0 0 / 40%)",
|
|
121
128
|
"oklch(0.55 0 0 / 25%)",
|
|
122
|
-
"bg-fill-
|
|
129
|
+
"bg-fill-selected"
|
|
123
130
|
],
|
|
124
|
-
|
|
125
|
-
"fill-
|
|
131
|
+
// Lightest fill in light mode, darkest in dark mode
|
|
132
|
+
"fill-hover": [
|
|
126
133
|
"oklch(0.87 0 0 / 20%)",
|
|
127
134
|
"oklch(0.55 0 0 / 15%)",
|
|
128
|
-
"bg-fill-
|
|
135
|
+
"bg-fill-hover"
|
|
129
136
|
]
|
|
130
137
|
};
|
|
131
138
|
}
|
|
132
|
-
const
|
|
133
|
-
function
|
|
134
|
-
const
|
|
135
|
-
return Object.fromEntries(Object.entries(
|
|
139
|
+
const g = R();
|
|
140
|
+
function N(r) {
|
|
141
|
+
const n = r === "light" ? 0 : 1;
|
|
142
|
+
return Object.fromEntries(Object.entries(g).map(([t, s]) => [t, s[n]]));
|
|
136
143
|
}
|
|
137
|
-
const
|
|
144
|
+
const x = /* @__PURE__ */ new Set([
|
|
138
145
|
"background",
|
|
139
146
|
"card",
|
|
140
147
|
"popover",
|
|
@@ -146,62 +153,104 @@ const m = /* @__PURE__ */ new Set([
|
|
|
146
153
|
// Transitive: reference var(--accent) / var(--muted) — must also live
|
|
147
154
|
// on `*` to re-evaluate on local overrides.
|
|
148
155
|
"fill-hover",
|
|
149
|
-
"fill-active",
|
|
150
156
|
"fill-expanded",
|
|
151
157
|
"fill-selected"
|
|
152
158
|
]);
|
|
153
|
-
function
|
|
154
|
-
const
|
|
159
|
+
function q(r) {
|
|
160
|
+
const n = [
|
|
155
161
|
"var(--theme-hue)",
|
|
156
162
|
"var(--theme-dark-hue)",
|
|
157
163
|
"var(--theme-tint)",
|
|
158
164
|
"var(--primary-light)",
|
|
159
165
|
"var(--primary-dark)"
|
|
160
166
|
];
|
|
161
|
-
for (const [
|
|
162
|
-
if (
|
|
167
|
+
for (const [t, [s, l]] of Object.entries(r))
|
|
168
|
+
if (n.some((c) => s.includes(c) || l.includes(c)) && !x.has(t))
|
|
163
169
|
throw new Error(
|
|
164
|
-
`[@posthog/quill-tokens] Token "${
|
|
170
|
+
`[@posthog/quill-tokens] Token "${t}" references a theme variable but is missing from THEME_DERIVED_TOKENS. Add it to the set in colors.ts or local [--theme-hue:X] overrides will silently fail for this token.`
|
|
165
171
|
);
|
|
166
172
|
}
|
|
167
|
-
|
|
168
|
-
function
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
`${
|
|
173
|
+
q(g);
|
|
174
|
+
function b(r) {
|
|
175
|
+
const t = r === void 0 ? [".dark", '[theme="dark"]'] : typeof r == "string" ? [r] : r;
|
|
176
|
+
return t.length === 1 ? t[0] : `:is(${t.join(", ")})`;
|
|
177
|
+
}
|
|
178
|
+
function B(r = D, n = {}) {
|
|
179
|
+
const { scope: t } = n, s = b(n.darkSelector), l = (u = " ") => [
|
|
180
|
+
`${u}--radius: 0.625rem;`,
|
|
181
|
+
`${u}--theme-hue: ${r.hue};`,
|
|
182
|
+
`${u}--theme-dark-hue: ${r.darkHue};`,
|
|
183
|
+
`${u}--theme-tint: ${r.tint};`,
|
|
184
|
+
`${u}--primary-light: ${r.primaryLight};`,
|
|
185
|
+
`${u}--primary-dark: ${r.primaryDark};`
|
|
175
186
|
].join(`
|
|
176
|
-
`), e = (
|
|
177
|
-
const
|
|
178
|
-
for (const [
|
|
179
|
-
|
|
180
|
-
return { staticVars:
|
|
181
|
-
},
|
|
187
|
+
`), e = (u) => {
|
|
188
|
+
const d = {}, $ = {};
|
|
189
|
+
for (const [m, k] of Object.entries(g))
|
|
190
|
+
x.has(m) ? $[m] = k[u] : d[m] = k[u];
|
|
191
|
+
return { staticVars: d, dynamicVars: $ };
|
|
192
|
+
}, c = e(0), p = e(1);
|
|
193
|
+
if (t) {
|
|
194
|
+
const u = `:is(${t}, ${t} *)`, d = `:is(${s} ${t}, ${t}${s}, ${s} ${t} *, ${t}${s} *)`;
|
|
195
|
+
return `/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
196
|
+
|
|
197
|
+
/*
|
|
198
|
+
* Scoped output — all token vars are gated behind \`${t}\` so they
|
|
199
|
+
* do not clash with the consumer's existing CSS custom properties.
|
|
200
|
+
* Add the \`${t.replace(/[[\]]/g, "")}\` attribute to wrapper elements
|
|
201
|
+
* where quill components are rendered.
|
|
202
|
+
*
|
|
203
|
+
* Dark mode: works when the dark selector is on an ancestor of the scope
|
|
204
|
+
* element (.dark > [data-quill]) OR on the scope element itself
|
|
205
|
+
* ([data-quill].dark).
|
|
206
|
+
*/
|
|
207
|
+
${t} {
|
|
208
|
+
color-scheme: light;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
:is(${s} ${t}, ${t}${s}) {
|
|
212
|
+
color-scheme: dark;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
${u} {
|
|
216
|
+
${l()}
|
|
217
|
+
${h(c.staticVars)}
|
|
218
|
+
${h(c.dynamicVars)}
|
|
219
|
+
|
|
220
|
+
/* Override Tailwind --color-* theme tokens within scope so utilities
|
|
221
|
+
* like bg-accent, text-foreground, border-border resolve to quill's
|
|
222
|
+
* values instead of the consumer's global theme. */
|
|
223
|
+
${y()}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
${d} {
|
|
227
|
+
${h(p.staticVars)}
|
|
228
|
+
${h(p.dynamicVars)}
|
|
229
|
+
}
|
|
230
|
+
`;
|
|
231
|
+
}
|
|
182
232
|
return `/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
183
233
|
|
|
184
234
|
:root {
|
|
185
235
|
color-scheme: light;
|
|
186
236
|
}
|
|
187
237
|
|
|
188
|
-
|
|
238
|
+
${s} {
|
|
189
239
|
color-scheme: dark;
|
|
190
240
|
}
|
|
191
241
|
|
|
192
242
|
/* Theme knobs — override these to shift the palette */
|
|
193
243
|
:root {
|
|
194
|
-
|
|
195
|
-
${o()}
|
|
244
|
+
${l()}
|
|
196
245
|
}
|
|
197
246
|
|
|
198
247
|
/* Static colors (no theme-var references, safe on :root) */
|
|
199
248
|
:root {
|
|
200
|
-
${c
|
|
249
|
+
${h(c.staticVars)}
|
|
201
250
|
}
|
|
202
251
|
|
|
203
|
-
|
|
204
|
-
${
|
|
252
|
+
${s} {
|
|
253
|
+
${h(p.staticVars)}
|
|
205
254
|
}
|
|
206
255
|
|
|
207
256
|
/*
|
|
@@ -210,28 +259,28 @@ ${c(u.staticVars)}
|
|
|
210
259
|
* This enables local overrides like [--theme-hue:200] on a container.
|
|
211
260
|
*/
|
|
212
261
|
* {
|
|
213
|
-
${c
|
|
262
|
+
${h(c.dynamicVars)}
|
|
214
263
|
}
|
|
215
264
|
|
|
216
|
-
:is(
|
|
217
|
-
${
|
|
265
|
+
:is(${s}, ${s} *) {
|
|
266
|
+
${h(p.dynamicVars)}
|
|
218
267
|
}
|
|
219
268
|
`;
|
|
220
269
|
}
|
|
221
|
-
function
|
|
222
|
-
return Object.keys(
|
|
270
|
+
function y() {
|
|
271
|
+
return Object.keys(g).map((r) => ` --color-${r}: var(--${r});`).join(`
|
|
223
272
|
`);
|
|
224
273
|
}
|
|
225
|
-
function
|
|
226
|
-
const { includeBaseLayer:
|
|
274
|
+
function X(r = {}) {
|
|
275
|
+
const { includeBaseLayer: n = !1, scope: t } = r, s = b(r.darkSelector), e = [
|
|
227
276
|
"/* Auto-generated by @posthog/quill-tokens — do not edit manually */",
|
|
228
277
|
"",
|
|
229
|
-
|
|
278
|
+
`@custom-variant dark (${`&:is(${s}, ${s} *)`});`
|
|
230
279
|
];
|
|
231
|
-
return e.push(""), e.push("@theme inline {"), e.push(" --animate-skeleton: skeleton 2s -1s infinite linear;"), e.push(" --animate-pulse-glow: pulse-glow 2s -1s infinite linear;"), e.push(" --animate-horizontal-shake: horizontal-shake 0.3s ease-out;"), e.push(" --animate-radar: radar 2s ease-out infinite;"), e.push(""), e.push(" /* --- Colors --- */"), e.push(
|
|
280
|
+
return e.push(""), e.push("@theme inline {"), e.push(" --animate-skeleton: skeleton 2s -1s infinite linear;"), e.push(" --animate-pulse-glow: pulse-glow 2s -1s infinite linear;"), e.push(" --animate-horizontal-shake: horizontal-shake 0.3s ease-out;"), e.push(" --animate-radar: radar 2s ease-out infinite;"), e.push(""), e.push(" /* --- Colors --- */"), e.push(y()), e.push(""), e.push(" /* --- Spacing --- */"), e.push(j()), e.push(""), e.push(" /* --- Font sizes --- */"), e.push(H()), e.push(""), e.push(" /* --- Font families --- */"), e.push(A()), e.push(""), e.push(" /* --- Shadows --- */"), e.push(T()), e.push(""), e.push(" /* --- Radius (derived from --radius base) --- */"), e.push(" --radius-sm: calc(var(--radius) - 4px);"), e.push(" --radius-md: calc(var(--radius) - 2px);"), e.push(" --radius-lg: var(--radius);"), e.push(" --radius-xl: calc(var(--radius) + 4px);"), e.push(" --radius-2xl: calc(var(--radius) + 8px);"), e.push(" --radius-3xl: calc(var(--radius) + 12px);"), e.push(" --radius-4xl: calc(var(--radius) + 16px);"), e.push(""), e.push(" @keyframes skeleton {"), e.push(" to {"), e.push(" background-position: -200% 0;"), e.push(" }"), e.push(" }"), e.push(""), e.push(" @keyframes pulse-glow {"), e.push(" 0%, 100% { box-shadow: 0 0 2px 1px var(--pulse-glow-color, var(--color-accent)) }"), e.push(" 50% { box-shadow: 0 0 6px 2px var(--pulse-glow-color, var(--color-accent)) }"), e.push(" }"), e.push(""), e.push(" @keyframes horizontal-shake {"), e.push(" 0% { transform: translateX(0); }"), e.push(" 25% { transform: translateX(5px); }"), e.push(" 50% { transform: translateX(-5px); }"), e.push(" 75% { transform: translateX(2px); }"), e.push(" 100% { transform: translateX(0); }"), e.push(" }"), e.push(""), e.push(" @keyframes radar {"), e.push(" 0% { transform: scale(1); opacity: 0.5; }"), e.push(" 100% { transform: scale(1.5); opacity: 0; }"), e.push(" }"), e.push("}"), n && (e.push(""), e.push("@layer base {"), t ? (e.push(` ${t}, ${t} * {`), e.push(" @apply border-border outline-ring/50;"), e.push(" }")) : (e.push(" * {"), e.push(" @apply border-border outline-ring/50;"), e.push(" }"), e.push(" body {"), e.push(" @apply bg-background text-foreground;"), e.push(" }")), e.push("}")), e.push(""), e.join(`
|
|
232
281
|
`);
|
|
233
282
|
}
|
|
234
|
-
const
|
|
283
|
+
const z = {
|
|
235
284
|
none: "0px",
|
|
236
285
|
sm: "4px",
|
|
237
286
|
md: "6px",
|
|
@@ -240,22 +289,22 @@ const N = {
|
|
|
240
289
|
full: "9999px"
|
|
241
290
|
};
|
|
242
291
|
export {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
292
|
+
D as DEFAULT_THEME,
|
|
293
|
+
V as SPACING_BASE,
|
|
294
|
+
f as SPACING_BASE_REM,
|
|
295
|
+
z as borderRadius,
|
|
296
|
+
R as buildSemanticColors,
|
|
297
|
+
v as cssVars,
|
|
298
|
+
h as cssVarsFlat,
|
|
299
|
+
F as fontFamily,
|
|
300
|
+
E as fontFamilyValue,
|
|
301
|
+
_ as fontSize,
|
|
302
|
+
B as generateColorSystemCSS,
|
|
303
|
+
X as generateStylesCSS,
|
|
304
|
+
S as quoteFontName,
|
|
305
|
+
N as resolveTheme,
|
|
306
|
+
g as semanticColors,
|
|
307
|
+
w as shadow,
|
|
308
|
+
I as spacing,
|
|
309
|
+
M as spacingPx
|
|
261
310
|
};
|
package/dist/tailwind-lib.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
2
2
|
|
|
3
|
-
@custom-variant dark (&:is(.dark, .dark *));
|
|
3
|
+
@custom-variant dark (&:is(:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) *));
|
|
4
4
|
|
|
5
5
|
@theme inline {
|
|
6
6
|
--animate-skeleton: skeleton 2s -1s infinite linear;
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
--color-border: var(--border);
|
|
35
35
|
--color-input: var(--input);
|
|
36
36
|
--color-ring: var(--ring);
|
|
37
|
-
--color-fill-hover: var(--fill-hover);
|
|
38
37
|
--color-fill-expanded: var(--fill-expanded);
|
|
39
38
|
--color-fill-selected: var(--fill-selected);
|
|
39
|
+
--color-fill-hover: var(--fill-hover);
|
|
40
40
|
|
|
41
41
|
/* --- Spacing --- */
|
|
42
42
|
--spacing: 0.25rem;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
2
|
+
|
|
3
|
+
@custom-variant dark (&:is(:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) *));
|
|
4
|
+
|
|
5
|
+
@theme inline {
|
|
6
|
+
--animate-skeleton: skeleton 2s -1s infinite linear;
|
|
7
|
+
--animate-pulse-glow: pulse-glow 2s -1s infinite linear;
|
|
8
|
+
--animate-horizontal-shake: horizontal-shake 0.3s ease-out;
|
|
9
|
+
--animate-radar: radar 2s ease-out infinite;
|
|
10
|
+
|
|
11
|
+
/* --- Colors --- */
|
|
12
|
+
--color-background: var(--background);
|
|
13
|
+
--color-foreground: var(--foreground);
|
|
14
|
+
--color-card: var(--card);
|
|
15
|
+
--color-card-foreground: var(--card-foreground);
|
|
16
|
+
--color-popover: var(--popover);
|
|
17
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
18
|
+
--color-muted: var(--muted);
|
|
19
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
20
|
+
--color-accent: var(--accent);
|
|
21
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
22
|
+
--color-primary: var(--primary);
|
|
23
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
24
|
+
--color-secondary: var(--secondary);
|
|
25
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
26
|
+
--color-destructive: var(--destructive);
|
|
27
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
28
|
+
--color-success: var(--success);
|
|
29
|
+
--color-success-foreground: var(--success-foreground);
|
|
30
|
+
--color-warning: var(--warning);
|
|
31
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
32
|
+
--color-info: var(--info);
|
|
33
|
+
--color-info-foreground: var(--info-foreground);
|
|
34
|
+
--color-border: var(--border);
|
|
35
|
+
--color-input: var(--input);
|
|
36
|
+
--color-ring: var(--ring);
|
|
37
|
+
--color-fill-expanded: var(--fill-expanded);
|
|
38
|
+
--color-fill-selected: var(--fill-selected);
|
|
39
|
+
--color-fill-hover: var(--fill-hover);
|
|
40
|
+
|
|
41
|
+
/* --- Spacing --- */
|
|
42
|
+
--spacing: 0.25rem;
|
|
43
|
+
|
|
44
|
+
/* --- Font sizes --- */
|
|
45
|
+
--text-xxs: 0.625rem;
|
|
46
|
+
--text-xxs--line-height: 0.75rem;
|
|
47
|
+
--text-xs: 0.75rem;
|
|
48
|
+
--text-xs--line-height: 1rem;
|
|
49
|
+
--text-sm: 0.875rem;
|
|
50
|
+
--text-sm--line-height: 1.25rem;
|
|
51
|
+
--text-base: 1rem;
|
|
52
|
+
--text-base--line-height: 1.5rem;
|
|
53
|
+
--text-lg: 1.125rem;
|
|
54
|
+
--text-lg--line-height: 1.75rem;
|
|
55
|
+
--text-xl: 1.25rem;
|
|
56
|
+
--text-xl--line-height: 1.75rem;
|
|
57
|
+
--text-2xl: 1.5rem;
|
|
58
|
+
--text-2xl--line-height: 2rem;
|
|
59
|
+
|
|
60
|
+
/* --- Font families --- */
|
|
61
|
+
--font-sans: -apple-system, BlinkMacSystemFont, Inter, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
|
|
62
|
+
--font-mono: "JetBrains Mono", "Fira Code", monospace;
|
|
63
|
+
|
|
64
|
+
/* --- Shadows --- */
|
|
65
|
+
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
66
|
+
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
|
|
67
|
+
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
|
|
68
|
+
|
|
69
|
+
/* --- Radius (derived from --radius base) --- */
|
|
70
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
71
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
72
|
+
--radius-lg: var(--radius);
|
|
73
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
74
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
75
|
+
--radius-3xl: calc(var(--radius) + 12px);
|
|
76
|
+
--radius-4xl: calc(var(--radius) + 16px);
|
|
77
|
+
|
|
78
|
+
@keyframes skeleton {
|
|
79
|
+
to {
|
|
80
|
+
background-position: -200% 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@keyframes pulse-glow {
|
|
85
|
+
0%, 100% { box-shadow: 0 0 2px 1px var(--pulse-glow-color, var(--color-accent)) }
|
|
86
|
+
50% { box-shadow: 0 0 6px 2px var(--pulse-glow-color, var(--color-accent)) }
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@keyframes horizontal-shake {
|
|
90
|
+
0% { transform: translateX(0); }
|
|
91
|
+
25% { transform: translateX(5px); }
|
|
92
|
+
50% { transform: translateX(-5px); }
|
|
93
|
+
75% { transform: translateX(2px); }
|
|
94
|
+
100% { transform: translateX(0); }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@keyframes radar {
|
|
98
|
+
0% { transform: scale(1); opacity: 0.5; }
|
|
99
|
+
100% { transform: scale(1.5); opacity: 0; }
|
|
100
|
+
}
|
|
101
|
+
}
|
package/dist/tailwind.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
2
2
|
|
|
3
|
-
@custom-variant dark (&:is(.dark, .dark *));
|
|
3
|
+
@custom-variant dark (&:is(:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) *));
|
|
4
4
|
|
|
5
5
|
@theme inline {
|
|
6
6
|
--animate-skeleton: skeleton 2s -1s infinite linear;
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
--color-border: var(--border);
|
|
35
35
|
--color-input: var(--input);
|
|
36
36
|
--color-ring: var(--ring);
|
|
37
|
-
--color-fill-hover: var(--fill-hover);
|
|
38
37
|
--color-fill-expanded: var(--fill-expanded);
|
|
39
38
|
--color-fill-selected: var(--fill-selected);
|
|
39
|
+
--color-fill-hover: var(--fill-hover);
|
|
40
40
|
|
|
41
41
|
/* --- Spacing --- */
|
|
42
42
|
--spacing: 0.25rem;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
2
|
+
|
|
3
|
+
@custom-variant dark (&:is(:is(.dark, [theme="dark"]), :is(.dark, [theme="dark"]) *));
|
|
4
|
+
|
|
5
|
+
@theme inline {
|
|
6
|
+
--animate-skeleton: skeleton 2s -1s infinite linear;
|
|
7
|
+
--animate-pulse-glow: pulse-glow 2s -1s infinite linear;
|
|
8
|
+
--animate-horizontal-shake: horizontal-shake 0.3s ease-out;
|
|
9
|
+
--animate-radar: radar 2s ease-out infinite;
|
|
10
|
+
|
|
11
|
+
/* --- Colors --- */
|
|
12
|
+
--color-background: var(--background);
|
|
13
|
+
--color-foreground: var(--foreground);
|
|
14
|
+
--color-card: var(--card);
|
|
15
|
+
--color-card-foreground: var(--card-foreground);
|
|
16
|
+
--color-popover: var(--popover);
|
|
17
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
18
|
+
--color-muted: var(--muted);
|
|
19
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
20
|
+
--color-accent: var(--accent);
|
|
21
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
22
|
+
--color-primary: var(--primary);
|
|
23
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
24
|
+
--color-secondary: var(--secondary);
|
|
25
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
26
|
+
--color-destructive: var(--destructive);
|
|
27
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
28
|
+
--color-success: var(--success);
|
|
29
|
+
--color-success-foreground: var(--success-foreground);
|
|
30
|
+
--color-warning: var(--warning);
|
|
31
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
32
|
+
--color-info: var(--info);
|
|
33
|
+
--color-info-foreground: var(--info-foreground);
|
|
34
|
+
--color-border: var(--border);
|
|
35
|
+
--color-input: var(--input);
|
|
36
|
+
--color-ring: var(--ring);
|
|
37
|
+
--color-fill-expanded: var(--fill-expanded);
|
|
38
|
+
--color-fill-selected: var(--fill-selected);
|
|
39
|
+
--color-fill-hover: var(--fill-hover);
|
|
40
|
+
|
|
41
|
+
/* --- Spacing --- */
|
|
42
|
+
--spacing: 0.25rem;
|
|
43
|
+
|
|
44
|
+
/* --- Font sizes --- */
|
|
45
|
+
--text-xxs: 0.625rem;
|
|
46
|
+
--text-xxs--line-height: 0.75rem;
|
|
47
|
+
--text-xs: 0.75rem;
|
|
48
|
+
--text-xs--line-height: 1rem;
|
|
49
|
+
--text-sm: 0.875rem;
|
|
50
|
+
--text-sm--line-height: 1.25rem;
|
|
51
|
+
--text-base: 1rem;
|
|
52
|
+
--text-base--line-height: 1.5rem;
|
|
53
|
+
--text-lg: 1.125rem;
|
|
54
|
+
--text-lg--line-height: 1.75rem;
|
|
55
|
+
--text-xl: 1.25rem;
|
|
56
|
+
--text-xl--line-height: 1.75rem;
|
|
57
|
+
--text-2xl: 1.5rem;
|
|
58
|
+
--text-2xl--line-height: 2rem;
|
|
59
|
+
|
|
60
|
+
/* --- Font families --- */
|
|
61
|
+
--font-sans: -apple-system, BlinkMacSystemFont, Inter, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
|
|
62
|
+
--font-mono: "JetBrains Mono", "Fira Code", monospace;
|
|
63
|
+
|
|
64
|
+
/* --- Shadows --- */
|
|
65
|
+
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
66
|
+
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
|
|
67
|
+
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
|
|
68
|
+
|
|
69
|
+
/* --- Radius (derived from --radius base) --- */
|
|
70
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
71
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
72
|
+
--radius-lg: var(--radius);
|
|
73
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
74
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
75
|
+
--radius-3xl: calc(var(--radius) + 12px);
|
|
76
|
+
--radius-4xl: calc(var(--radius) + 16px);
|
|
77
|
+
|
|
78
|
+
@keyframes skeleton {
|
|
79
|
+
to {
|
|
80
|
+
background-position: -200% 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@keyframes pulse-glow {
|
|
85
|
+
0%, 100% { box-shadow: 0 0 2px 1px var(--pulse-glow-color, var(--color-accent)) }
|
|
86
|
+
50% { box-shadow: 0 0 6px 2px var(--pulse-glow-color, var(--color-accent)) }
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@keyframes horizontal-shake {
|
|
90
|
+
0% { transform: translateX(0); }
|
|
91
|
+
25% { transform: translateX(5px); }
|
|
92
|
+
50% { transform: translateX(-5px); }
|
|
93
|
+
75% { transform: translateX(2px); }
|
|
94
|
+
100% { transform: translateX(0); }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@keyframes radar {
|
|
98
|
+
0% { transform: scale(1); opacity: 0.5; }
|
|
99
|
+
100% { transform: scale(1.5); opacity: 0; }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@layer base {
|
|
104
|
+
[data-quill], [data-quill] * {
|
|
105
|
+
@apply border-border outline-ring/50;
|
|
106
|
+
}
|
|
107
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posthog/quill-tokens",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2-alpha.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,7 +24,10 @@
|
|
|
24
24
|
},
|
|
25
25
|
"./tailwind.css": "./dist/tailwind.css",
|
|
26
26
|
"./tailwind-lib.css": "./dist/tailwind-lib.css",
|
|
27
|
-
"./color-system.css": "./dist/color-system.css"
|
|
27
|
+
"./color-system.css": "./dist/color-system.css",
|
|
28
|
+
"./tailwind.scoped.css": "./dist/tailwind.scoped.css",
|
|
29
|
+
"./tailwind-lib.scoped.css": "./dist/tailwind-lib.scoped.css",
|
|
30
|
+
"./color-system.scoped.css": "./dist/color-system.scoped.css"
|
|
28
31
|
},
|
|
29
32
|
"publishConfig": {
|
|
30
33
|
"access": "public"
|
package/src/build.ts
CHANGED
|
@@ -30,3 +30,20 @@ writeFileSync(resolve(distDir, 'tailwind.css'), generateStylesCSS({ includeBaseL
|
|
|
30
30
|
|
|
31
31
|
// 3. Library stylesheet (@theme only, no base layer)
|
|
32
32
|
writeFileSync(resolve(distDir, 'tailwind-lib.css'), generateStylesCSS({ includeBaseLayer: false }))
|
|
33
|
+
|
|
34
|
+
// 4. Scoped variants for consumers with existing design systems.
|
|
35
|
+
// Vars are gated behind [data-quill] so they don't clash with
|
|
36
|
+
// the consumer's CSS custom properties (e.g. --border, --accent).
|
|
37
|
+
const scopedOpts = { scope: '[data-quill]' }
|
|
38
|
+
|
|
39
|
+
writeFileSync(resolve(distDir, 'color-system.scoped.css'), generateColorSystemCSS(undefined, scopedOpts))
|
|
40
|
+
|
|
41
|
+
writeFileSync(
|
|
42
|
+
resolve(distDir, 'tailwind.scoped.css'),
|
|
43
|
+
generateStylesCSS({ includeBaseLayer: true, ...scopedOpts })
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
writeFileSync(
|
|
47
|
+
resolve(distDir, 'tailwind-lib.scoped.css'),
|
|
48
|
+
generateStylesCSS({ includeBaseLayer: false, ...scopedOpts })
|
|
49
|
+
)
|
package/src/colors.ts
CHANGED
|
@@ -135,17 +135,24 @@ export function buildSemanticColors(): Record<string, ColorTuple> {
|
|
|
135
135
|
input: [surface(0.81, 0.5, 'light'), surface(0.30, 1.5, 'dark'), 'border-input'],
|
|
136
136
|
ring: [oklch(0.446, 0.03, 257), oklch(0.709, 0, 0), 'border-ring'],
|
|
137
137
|
|
|
138
|
-
// ── Interactive fills
|
|
139
|
-
|
|
138
|
+
// ── Interactive fills for default button/ interactive elements ───────────
|
|
139
|
+
// Darkest fill in light mode, lightest in dark mode
|
|
140
|
+
'fill-expanded': [
|
|
141
|
+
'oklch(0.87 0 0 / 60%)',
|
|
142
|
+
'oklch(0.55 0 0 / 35%)',
|
|
143
|
+
'bg-fill-expanded',
|
|
144
|
+
],
|
|
145
|
+
// Medium fill
|
|
146
|
+
'fill-selected': [
|
|
140
147
|
'oklch(0.87 0 0 / 40%)',
|
|
141
148
|
'oklch(0.55 0 0 / 25%)',
|
|
142
|
-
'bg-fill-
|
|
149
|
+
'bg-fill-selected',
|
|
143
150
|
],
|
|
144
|
-
|
|
145
|
-
'fill-
|
|
151
|
+
// Lightest fill in light mode, darkest in dark mode
|
|
152
|
+
'fill-hover': [
|
|
146
153
|
'oklch(0.87 0 0 / 20%)',
|
|
147
154
|
'oklch(0.55 0 0 / 15%)',
|
|
148
|
-
'bg-fill-
|
|
155
|
+
'bg-fill-hover',
|
|
149
156
|
],
|
|
150
157
|
} as const
|
|
151
158
|
}
|
|
@@ -157,6 +164,26 @@ export const semanticColors = buildSemanticColors()
|
|
|
157
164
|
export interface StylesConfig {
|
|
158
165
|
/** Include @layer base reset rules (apps only) */
|
|
159
166
|
includeBaseLayer?: boolean
|
|
167
|
+
/**
|
|
168
|
+
* CSS selector to scope all token CSS vars to. When set, vars are only
|
|
169
|
+
* defined inside elements matching this selector, preventing clashes
|
|
170
|
+
* with the consumer's existing CSS custom properties.
|
|
171
|
+
*
|
|
172
|
+
* Example: `'[data-quill]'` — consumer adds `data-quill` to wrapper
|
|
173
|
+
* elements. During migration the attribute moves up the DOM tree;
|
|
174
|
+
* when it reaches `<html>` the scope is effectively global and can
|
|
175
|
+
* be removed.
|
|
176
|
+
*/
|
|
177
|
+
scope?: string
|
|
178
|
+
/**
|
|
179
|
+
* CSS selector(s) for dark mode. Accepts a single selector or an
|
|
180
|
+
* array — when multiple are given they are combined with `:is()`
|
|
181
|
+
* so any of them activates dark mode.
|
|
182
|
+
*
|
|
183
|
+
* Default: `['.dark', '[theme="dark"]']` (both `.dark` class and
|
|
184
|
+
* `theme="dark"` attribute work out of the box).
|
|
185
|
+
*/
|
|
186
|
+
darkSelector?: string | string[]
|
|
160
187
|
}
|
|
161
188
|
|
|
162
189
|
// ── Helpers ───────────────────────────────────────────
|
|
@@ -189,7 +216,6 @@ const THEME_DERIVED_TOKENS: ReadonlySet<string> = new Set([
|
|
|
189
216
|
// Transitive: reference var(--accent) / var(--muted) — must also live
|
|
190
217
|
// on `*` to re-evaluate on local overrides.
|
|
191
218
|
'fill-hover',
|
|
192
|
-
'fill-active',
|
|
193
219
|
'fill-expanded',
|
|
194
220
|
'fill-selected',
|
|
195
221
|
])
|
|
@@ -226,10 +252,24 @@ function assertThemeDerivedSyncedWithColors(colors: Record<string, ColorTuple>):
|
|
|
226
252
|
|
|
227
253
|
assertThemeDerivedSyncedWithColors(semanticColors)
|
|
228
254
|
|
|
255
|
+
/** Normalize darkSelector option into a single CSS selector string. */
|
|
256
|
+
function resolveDarkSelector(raw?: string | string[]): string {
|
|
257
|
+
const defaults = ['.dark', '[theme="dark"]']
|
|
258
|
+
const selectors = raw === undefined ? defaults : typeof raw === 'string' ? [raw] : raw
|
|
259
|
+
return selectors.length === 1 ? selectors[0] : `:is(${selectors.join(', ')})`
|
|
260
|
+
}
|
|
261
|
+
|
|
229
262
|
/** Generate color-system.css (:root light + .dark overrides) */
|
|
230
|
-
export function generateColorSystemCSS(
|
|
231
|
-
|
|
263
|
+
export function generateColorSystemCSS(
|
|
264
|
+
theme: ThemeConfig = DEFAULT_THEME,
|
|
265
|
+
opts: Pick<StylesConfig, 'scope' | 'darkSelector'> = {}
|
|
266
|
+
): string {
|
|
267
|
+
const { scope } = opts
|
|
268
|
+
const darkSelector = resolveDarkSelector(opts.darkSelector)
|
|
269
|
+
|
|
270
|
+
const themeKnobs = (indent = ' '): string =>
|
|
232
271
|
[
|
|
272
|
+
`${indent}--radius: 0.625rem;`,
|
|
233
273
|
`${indent}--theme-hue: ${theme.hue};`,
|
|
234
274
|
`${indent}--theme-dark-hue: ${theme.darkHue};`,
|
|
235
275
|
`${indent}--theme-tint: ${theme.tint};`,
|
|
@@ -254,20 +294,68 @@ export function generateColorSystemCSS(theme: ThemeConfig = DEFAULT_THEME): stri
|
|
|
254
294
|
const light = partition(0)
|
|
255
295
|
const dark = partition(1)
|
|
256
296
|
|
|
297
|
+
// ── Scoped mode ─────────────────────────────────────
|
|
298
|
+
// All vars gated behind the scope selector to avoid clashing
|
|
299
|
+
// with the consumer's existing CSS custom properties.
|
|
300
|
+
if (scope) {
|
|
301
|
+
const scopeSel = `:is(${scope}, ${scope} *)`
|
|
302
|
+
// Handle both ancestor-dark (`.dark [data-quill]`) and same-element
|
|
303
|
+
// dark (`[data-quill].dark`) so dark mode works regardless of where
|
|
304
|
+
// the dark selector lives relative to the scope element.
|
|
305
|
+
const darkScopeSel = `:is(${darkSelector} ${scope}, ${scope}${darkSelector}, ${darkSelector} ${scope} *, ${scope}${darkSelector} *)`
|
|
306
|
+
|
|
307
|
+
return `/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
308
|
+
|
|
309
|
+
/*
|
|
310
|
+
* Scoped output — all token vars are gated behind \`${scope}\` so they
|
|
311
|
+
* do not clash with the consumer's existing CSS custom properties.
|
|
312
|
+
* Add the \`${scope.replace(/[[\]]/g, '')}\` attribute to wrapper elements
|
|
313
|
+
* where quill components are rendered.
|
|
314
|
+
*
|
|
315
|
+
* Dark mode: works when the dark selector is on an ancestor of the scope
|
|
316
|
+
* element (.dark > [data-quill]) OR on the scope element itself
|
|
317
|
+
* ([data-quill].dark).
|
|
318
|
+
*/
|
|
319
|
+
${scope} {
|
|
320
|
+
color-scheme: light;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
:is(${darkSelector} ${scope}, ${scope}${darkSelector}) {
|
|
324
|
+
color-scheme: dark;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
${scopeSel} {
|
|
328
|
+
${themeKnobs()}
|
|
329
|
+
${cssVarsFlat(light.staticVars)}
|
|
330
|
+
${cssVarsFlat(light.dynamicVars)}
|
|
331
|
+
|
|
332
|
+
/* Override Tailwind --color-* theme tokens within scope so utilities
|
|
333
|
+
* like bg-accent, text-foreground, border-border resolve to quill's
|
|
334
|
+
* values instead of the consumer's global theme. */
|
|
335
|
+
${generateColorMappingsCSS()}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
${darkScopeSel} {
|
|
339
|
+
${cssVarsFlat(dark.staticVars)}
|
|
340
|
+
${cssVarsFlat(dark.dynamicVars)}
|
|
341
|
+
}
|
|
342
|
+
`
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// ── Unscoped mode (default) ─────────────────────────
|
|
257
346
|
return `/* Auto-generated by @posthog/quill-tokens — do not edit manually */
|
|
258
347
|
|
|
259
348
|
:root {
|
|
260
349
|
color-scheme: light;
|
|
261
350
|
}
|
|
262
351
|
|
|
263
|
-
|
|
352
|
+
${darkSelector} {
|
|
264
353
|
color-scheme: dark;
|
|
265
354
|
}
|
|
266
355
|
|
|
267
356
|
/* Theme knobs — override these to shift the palette */
|
|
268
357
|
:root {
|
|
269
|
-
|
|
270
|
-
${themeVars()}
|
|
358
|
+
${themeKnobs()}
|
|
271
359
|
}
|
|
272
360
|
|
|
273
361
|
/* Static colors (no theme-var references, safe on :root) */
|
|
@@ -275,7 +363,7 @@ ${themeVars()}
|
|
|
275
363
|
${cssVarsFlat(light.staticVars)}
|
|
276
364
|
}
|
|
277
365
|
|
|
278
|
-
|
|
366
|
+
${darkSelector} {
|
|
279
367
|
${cssVarsFlat(dark.staticVars)}
|
|
280
368
|
}
|
|
281
369
|
|
|
@@ -288,7 +376,7 @@ ${cssVarsFlat(dark.staticVars)}
|
|
|
288
376
|
${cssVarsFlat(light.dynamicVars)}
|
|
289
377
|
}
|
|
290
378
|
|
|
291
|
-
:is(
|
|
379
|
+
:is(${darkSelector}, ${darkSelector} *) {
|
|
292
380
|
${cssVarsFlat(dark.dynamicVars)}
|
|
293
381
|
}
|
|
294
382
|
`
|
|
@@ -316,12 +404,14 @@ function generateColorMappingsCSS(): string {
|
|
|
316
404
|
* Used by apps/web, apps/storybook.
|
|
317
405
|
*/
|
|
318
406
|
export function generateStylesCSS(config: StylesConfig = {}): string {
|
|
319
|
-
const { includeBaseLayer = false } = config
|
|
407
|
+
const { includeBaseLayer = false, scope } = config
|
|
408
|
+
const darkSelector = resolveDarkSelector(config.darkSelector)
|
|
320
409
|
|
|
410
|
+
const darkVariantBody = `&:is(${darkSelector}, ${darkSelector} *)`
|
|
321
411
|
const lines: string[] = [
|
|
322
412
|
'/* Auto-generated by @posthog/quill-tokens — do not edit manually */',
|
|
323
413
|
'',
|
|
324
|
-
|
|
414
|
+
`@custom-variant dark (${darkVariantBody});`,
|
|
325
415
|
]
|
|
326
416
|
lines.push('')
|
|
327
417
|
|
|
@@ -384,12 +474,18 @@ export function generateStylesCSS(config: StylesConfig = {}): string {
|
|
|
384
474
|
if (includeBaseLayer) {
|
|
385
475
|
lines.push('')
|
|
386
476
|
lines.push('@layer base {')
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
477
|
+
if (scope) {
|
|
478
|
+
lines.push(` ${scope}, ${scope} * {`)
|
|
479
|
+
lines.push(' @apply border-border outline-ring/50;')
|
|
480
|
+
lines.push(' }')
|
|
481
|
+
} else {
|
|
482
|
+
lines.push(' * {')
|
|
483
|
+
lines.push(' @apply border-border outline-ring/50;')
|
|
484
|
+
lines.push(' }')
|
|
485
|
+
lines.push(' body {')
|
|
486
|
+
lines.push(' @apply bg-background text-foreground;')
|
|
487
|
+
lines.push(' }')
|
|
488
|
+
}
|
|
393
489
|
lines.push('}')
|
|
394
490
|
}
|
|
395
491
|
|