@orangecheck/design 0.26.0 → 0.28.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/chrome.js.map +1 -1
- package/dist/chrome.mjs.map +1 -1
- package/dist/components.js.map +1 -1
- package/dist/components.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +556 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +552 -8
- package/dist/index.mjs.map +1 -1
- package/dist/primitives.d.mts +1 -1
- package/dist/primitives.d.ts +1 -1
- package/dist/styles/aurora.css +29 -0
- package/dist/styles/sigil.css +161 -0
- package/dist/styles.css +1 -0
- package/dist/tokens.d.mts +31 -2
- package/dist/tokens.d.ts +31 -2
- package/dist/tokens.js +554 -4
- package/dist/tokens.js.map +1 -1
- package/dist/tokens.mjs +550 -6
- package/dist/tokens.mjs.map +1 -1
- package/package.json +2 -2
package/dist/primitives.d.mts
CHANGED
|
@@ -17,7 +17,7 @@ import { ToasterProps } from 'sonner';
|
|
|
17
17
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
18
18
|
|
|
19
19
|
declare const buttonVariants: (props?: ({
|
|
20
|
-
variant?: "
|
|
20
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "onBrand" | "onBrandOutline" | null | undefined;
|
|
21
21
|
size?: "default" | "icon" | "sm" | "lg" | null | undefined;
|
|
22
22
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
23
23
|
declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
package/dist/primitives.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ import { ToasterProps } from 'sonner';
|
|
|
17
17
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
18
18
|
|
|
19
19
|
declare const buttonVariants: (props?: ({
|
|
20
|
-
variant?: "
|
|
20
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "onBrand" | "onBrandOutline" | null | undefined;
|
|
21
21
|
size?: "default" | "icon" | "sm" | "lg" | null | undefined;
|
|
22
22
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
23
23
|
declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
package/dist/styles/aurora.css
CHANGED
|
@@ -258,3 +258,32 @@
|
|
|
258
258
|
:root[data-oc-motion='off'] .oc-ambient {
|
|
259
259
|
animation-play-state: paused !important;
|
|
260
260
|
}
|
|
261
|
+
|
|
262
|
+
/* ── OcAuroraGL (aurora depth R2) ─────────────────────────────────────
|
|
263
|
+
The lazy WebGL2 silk field renders inside the same container, so the radial
|
|
264
|
+
mask, the mode-op × intensity opacity, and ember's --au-* re-hue all govern
|
|
265
|
+
it for free. Once the first GL frame lands (`--gl-live`), the CSS blobs
|
|
266
|
+
pause AND hide — dimming alone does not stop blur rasterization; the page
|
|
267
|
+
pays for exactly one aurora at any moment. Any demotion removes the class
|
|
268
|
+
and the blobs resume, invisibly. */
|
|
269
|
+
.oc-aurora__gl {
|
|
270
|
+
position: absolute;
|
|
271
|
+
inset: 0;
|
|
272
|
+
width: 100%;
|
|
273
|
+
height: 100%;
|
|
274
|
+
opacity: 0;
|
|
275
|
+
transition: opacity 0.5s ease;
|
|
276
|
+
}
|
|
277
|
+
.oc-aurora--gl-live .oc-aurora__gl {
|
|
278
|
+
opacity: 1;
|
|
279
|
+
}
|
|
280
|
+
.oc-aurora--gl-live .oc-aurora__blob {
|
|
281
|
+
visibility: hidden;
|
|
282
|
+
animation-play-state: paused;
|
|
283
|
+
}
|
|
284
|
+
/* Canvas raster is NOT stripped by forced colors the way gradients are. */
|
|
285
|
+
@media (forced-colors: active) {
|
|
286
|
+
.oc-aurora__gl {
|
|
287
|
+
display: none;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* oc-sigil — the brand mark as a deep-set 3D emboss (aurora depth R3).
|
|
3
|
+
*
|
|
4
|
+
* Tier A is pure CSS: 6 stacked <use> copies of the normalized glyph under
|
|
5
|
+
* perspective + translateZ, each an OPAQUE color-mix toward --background
|
|
6
|
+
* (occlusion, not translucency — enclosed counters never moiré, and the
|
|
7
|
+
* contrast ceiling is compiled in: the loudest layer sits 52% toward the
|
|
8
|
+
* background, so worst-frame text contrast holds by construction). The drift
|
|
9
|
+
* is compositor-only transform at aurora energy, carries `.oc-ambient`
|
|
10
|
+
* (inherits the family oc_motion pause), and freezes under
|
|
11
|
+
* prefers-reduced-motion.
|
|
12
|
+
*
|
|
13
|
+
* PRESERVE-3D FOOTGUN: never put mask / filter / opacity<1 / overflow on
|
|
14
|
+
* .oc-sigil__drift or .oc-sigil__par — any of them silently flattens the
|
|
15
|
+
* stack. The edge fade lives on the OUTER .oc-sigil wrapper, which is safe.
|
|
16
|
+
*
|
|
17
|
+
* Two registers, one geometry, switched here in CSS (zero hydration flash):
|
|
18
|
+
* ember (default root) shows the filled letterpress stack; the cypherpunk
|
|
19
|
+
* skins show the wireframe stack instead.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
.oc-sigil {
|
|
23
|
+
position: absolute;
|
|
24
|
+
pointer-events: none;
|
|
25
|
+
contain: layout paint;
|
|
26
|
+
perspective: 1100px;
|
|
27
|
+
/* edge fade on the wrapper (NOT the 3D stack) so the emboss dissolves
|
|
28
|
+
into the aurora field instead of ending in a hard box */
|
|
29
|
+
-webkit-mask-image: radial-gradient(120% 120% at 55% 42%, #000 45%, transparent 92%);
|
|
30
|
+
mask-image: radial-gradient(120% 120% at 55% 42%, #000 45%, transparent 92%);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* corner anchors — the bleed crops against the hero's overflow-hidden */
|
|
34
|
+
.oc-sigil--bottom-left {
|
|
35
|
+
left: -8%;
|
|
36
|
+
bottom: -16%;
|
|
37
|
+
}
|
|
38
|
+
.oc-sigil--bottom-right {
|
|
39
|
+
right: -8%;
|
|
40
|
+
bottom: -16%;
|
|
41
|
+
}
|
|
42
|
+
.oc-sigil--top-left {
|
|
43
|
+
left: -8%;
|
|
44
|
+
top: -14%;
|
|
45
|
+
}
|
|
46
|
+
.oc-sigil--top-right {
|
|
47
|
+
right: -8%;
|
|
48
|
+
top: -14%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.oc-sigil__drift {
|
|
52
|
+
width: 100%;
|
|
53
|
+
height: 100%;
|
|
54
|
+
transform-style: preserve-3d;
|
|
55
|
+
animation: oc-sigil-drift 30s ease-in-out infinite;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.oc-sigil__par {
|
|
59
|
+
width: 100%;
|
|
60
|
+
height: 100%;
|
|
61
|
+
transform-style: preserve-3d;
|
|
62
|
+
transform: rotateX(var(--oc-sigil-rx, 0deg)) rotateY(var(--oc-sigil-ry, 0deg));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@keyframes oc-sigil-drift {
|
|
66
|
+
0%,
|
|
67
|
+
100% {
|
|
68
|
+
transform: rotateX(14deg) rotateY(calc(-8deg + var(--oc-sigil-seed, 0deg)));
|
|
69
|
+
}
|
|
70
|
+
50% {
|
|
71
|
+
transform: rotateX(17deg) rotateY(calc(-4deg + var(--oc-sigil-seed, 0deg)));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.oc-sigil__layer {
|
|
76
|
+
position: absolute;
|
|
77
|
+
inset: 0;
|
|
78
|
+
width: 100%;
|
|
79
|
+
height: 100%;
|
|
80
|
+
}
|
|
81
|
+
/* opaque extrusion ramp — deep layers dissolve toward the page background;
|
|
82
|
+
the ramp endpoints ARE the compiled-in visibility floor + contrast ceiling */
|
|
83
|
+
.oc-sigil__layer-0 {
|
|
84
|
+
transform: translateZ(0px);
|
|
85
|
+
color: color-mix(in oklab, var(--primary), var(--background) 88%);
|
|
86
|
+
}
|
|
87
|
+
.oc-sigil__layer-1 {
|
|
88
|
+
transform: translateZ(3px);
|
|
89
|
+
color: color-mix(in oklab, var(--primary), var(--background) 82%);
|
|
90
|
+
}
|
|
91
|
+
.oc-sigil__layer-2 {
|
|
92
|
+
transform: translateZ(6px);
|
|
93
|
+
color: color-mix(in oklab, var(--primary), var(--background) 76%);
|
|
94
|
+
}
|
|
95
|
+
.oc-sigil__layer-3 {
|
|
96
|
+
transform: translateZ(9px);
|
|
97
|
+
color: color-mix(in oklab, var(--primary), var(--background) 70%);
|
|
98
|
+
}
|
|
99
|
+
.oc-sigil__layer-4 {
|
|
100
|
+
transform: translateZ(12px);
|
|
101
|
+
color: color-mix(in oklab, var(--primary), var(--background) 62%);
|
|
102
|
+
}
|
|
103
|
+
.oc-sigil__layer-5 {
|
|
104
|
+
transform: translateZ(15px);
|
|
105
|
+
color: color-mix(in oklab, var(--primary), var(--background) 52%);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* register switch — filled letterpress under ember (the bare-root default),
|
|
109
|
+
wireframe under the four cypherpunk skins; both stacks are in the markup so
|
|
110
|
+
the swap is pure CSS (no hydration flash, no JS) */
|
|
111
|
+
.oc-sigil__use-wire {
|
|
112
|
+
display: none;
|
|
113
|
+
}
|
|
114
|
+
:root[data-oc-theme='orangecheck'] .oc-sigil__use-filled,
|
|
115
|
+
:root[data-oc-theme='phosphor'] .oc-sigil__use-filled,
|
|
116
|
+
:root[data-oc-theme='lightning'] .oc-sigil__use-filled,
|
|
117
|
+
:root[data-oc-theme='gold'] .oc-sigil__use-filled {
|
|
118
|
+
display: none;
|
|
119
|
+
}
|
|
120
|
+
:root[data-oc-theme='orangecheck'] .oc-sigil__use-wire,
|
|
121
|
+
:root[data-oc-theme='phosphor'] .oc-sigil__use-wire,
|
|
122
|
+
:root[data-oc-theme='lightning'] .oc-sigil__use-wire,
|
|
123
|
+
:root[data-oc-theme='gold'] .oc-sigil__use-wire {
|
|
124
|
+
display: inline;
|
|
125
|
+
}
|
|
126
|
+
/* wireframe stack thins to fewer visible planes — terminal register */
|
|
127
|
+
:root[data-oc-theme='orangecheck'] .oc-sigil__layer-1,
|
|
128
|
+
:root[data-oc-theme='orangecheck'] .oc-sigil__layer-3,
|
|
129
|
+
:root[data-oc-theme='phosphor'] .oc-sigil__layer-1,
|
|
130
|
+
:root[data-oc-theme='phosphor'] .oc-sigil__layer-3,
|
|
131
|
+
:root[data-oc-theme='lightning'] .oc-sigil__layer-1,
|
|
132
|
+
:root[data-oc-theme='lightning'] .oc-sigil__layer-3,
|
|
133
|
+
:root[data-oc-theme='gold'] .oc-sigil__layer-1,
|
|
134
|
+
:root[data-oc-theme='gold'] .oc-sigil__layer-3 {
|
|
135
|
+
display: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* mobile = hidden, full stop — decoration never spends phone-fold real estate */
|
|
139
|
+
@media (max-width: 640px) {
|
|
140
|
+
.oc-sigil {
|
|
141
|
+
display: none;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* SVG fills are NOT auto-stripped by forced colors the way gradients are */
|
|
146
|
+
@media (forced-colors: active) {
|
|
147
|
+
.oc-sigil {
|
|
148
|
+
display: none;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* OS-level reduced motion: freeze at the designed resting pose (the 0% frame
|
|
153
|
+
IS the art-directed composition) — the oc_motion pause rides .oc-ambient */
|
|
154
|
+
@media (prefers-reduced-motion: reduce) {
|
|
155
|
+
.oc-sigil__drift {
|
|
156
|
+
animation: none !important;
|
|
157
|
+
}
|
|
158
|
+
.oc-sigil__par {
|
|
159
|
+
transform: none !important;
|
|
160
|
+
}
|
|
161
|
+
}
|
package/dist/styles.css
CHANGED
package/dist/tokens.d.mts
CHANGED
|
@@ -38,6 +38,7 @@ interface OcThemeProviderProps {
|
|
|
38
38
|
defaultSkin?: string;
|
|
39
39
|
aurora?: boolean | {
|
|
40
40
|
intensity?: number;
|
|
41
|
+
gl?: boolean;
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
declare function OcThemeProvider({ children, defaultSkin, aurora, }: OcThemeProviderProps): react_jsx_runtime.JSX.Element;
|
|
@@ -69,8 +70,36 @@ declare function OcAppearanceMenu({ className, triggerClassName, popoverClassNam
|
|
|
69
70
|
|
|
70
71
|
interface OcAuroraProps {
|
|
71
72
|
intensity?: number;
|
|
73
|
+
gl?: boolean;
|
|
72
74
|
className?: string;
|
|
73
75
|
}
|
|
74
|
-
declare function OcAurora({ intensity, className }: OcAuroraProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
declare function OcAurora({ intensity, gl, className }: OcAuroraProps): react_jsx_runtime.JSX.Element;
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
interface OcSceneRGB {
|
|
79
|
+
r: number;
|
|
80
|
+
g: number;
|
|
81
|
+
b: number;
|
|
82
|
+
}
|
|
83
|
+
interface OcSceneTokens {
|
|
84
|
+
palette: [OcSceneRGB, OcSceneRGB, OcSceneRGB, OcSceneRGB];
|
|
85
|
+
background: OcSceneRGB;
|
|
86
|
+
isDark: boolean;
|
|
87
|
+
motionOff: boolean;
|
|
88
|
+
}
|
|
89
|
+
declare function normalizeHue(c: OcSceneRGB, isDark: boolean): OcSceneRGB;
|
|
90
|
+
declare function readOcSceneTokens(host: HTMLElement): OcSceneTokens | null;
|
|
91
|
+
declare function subscribeOcTheme(cb: () => void): () => void;
|
|
92
|
+
|
|
93
|
+
type OcGlyphSlug = 'orangecheck' | 'attest' | 'docs' | 'me' | 'vault' | 'fleet' | 'chat' | 'cosign' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge' | 'analytics' | 'btc';
|
|
94
|
+
declare const OC_GLYPH_CANVAS = 1024;
|
|
95
|
+
declare const OC_GLYPHS: Record<OcGlyphSlug, string>;
|
|
96
|
+
|
|
97
|
+
interface OcSigilProps {
|
|
98
|
+
glyph: OcGlyphSlug;
|
|
99
|
+
corner?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
100
|
+
parallax?: boolean;
|
|
101
|
+
className?: string;
|
|
102
|
+
}
|
|
103
|
+
declare function OcSigil({ glyph, corner, parallax, className }: OcSigilProps): react_jsx_runtime.JSX.Element;
|
|
104
|
+
|
|
105
|
+
export { AppearanceControls, DEFAULT_OC_THEME, OC_DEFAULT_ACCENT, OC_GLYPHS, OC_GLYPH_CANVAS, OC_MOTION_COOKIE, OC_SKIN_COOKIE, OC_THEMES, OcAppearanceMenu, type OcAppearanceMenuProps, OcAurora, type OcAuroraProps, type OcGlyphSlug, type OcMotion, type OcSceneRGB, type OcSceneTokens, OcSigil, type OcSigilProps, type OcTheme, OcThemeBridge, type OcThemeId, OcThemePicker, type OcThemePickerProps, OcThemeProvider, type OcThemeProviderProps, accentFor, cn, getOcThemeInitScript, isKnownTheme, normalizeHue, readOcSceneTokens, resolveTheme, subscribeOcTheme, useOcMotion, useOcSkin };
|
package/dist/tokens.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ interface OcThemeProviderProps {
|
|
|
38
38
|
defaultSkin?: string;
|
|
39
39
|
aurora?: boolean | {
|
|
40
40
|
intensity?: number;
|
|
41
|
+
gl?: boolean;
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
declare function OcThemeProvider({ children, defaultSkin, aurora, }: OcThemeProviderProps): react_jsx_runtime.JSX.Element;
|
|
@@ -69,8 +70,36 @@ declare function OcAppearanceMenu({ className, triggerClassName, popoverClassNam
|
|
|
69
70
|
|
|
70
71
|
interface OcAuroraProps {
|
|
71
72
|
intensity?: number;
|
|
73
|
+
gl?: boolean;
|
|
72
74
|
className?: string;
|
|
73
75
|
}
|
|
74
|
-
declare function OcAurora({ intensity, className }: OcAuroraProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
declare function OcAurora({ intensity, gl, className }: OcAuroraProps): react_jsx_runtime.JSX.Element;
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
interface OcSceneRGB {
|
|
79
|
+
r: number;
|
|
80
|
+
g: number;
|
|
81
|
+
b: number;
|
|
82
|
+
}
|
|
83
|
+
interface OcSceneTokens {
|
|
84
|
+
palette: [OcSceneRGB, OcSceneRGB, OcSceneRGB, OcSceneRGB];
|
|
85
|
+
background: OcSceneRGB;
|
|
86
|
+
isDark: boolean;
|
|
87
|
+
motionOff: boolean;
|
|
88
|
+
}
|
|
89
|
+
declare function normalizeHue(c: OcSceneRGB, isDark: boolean): OcSceneRGB;
|
|
90
|
+
declare function readOcSceneTokens(host: HTMLElement): OcSceneTokens | null;
|
|
91
|
+
declare function subscribeOcTheme(cb: () => void): () => void;
|
|
92
|
+
|
|
93
|
+
type OcGlyphSlug = 'orangecheck' | 'attest' | 'docs' | 'me' | 'vault' | 'fleet' | 'chat' | 'cosign' | 'lock' | 'vote' | 'stamp' | 'agent' | 'pledge' | 'analytics' | 'btc';
|
|
94
|
+
declare const OC_GLYPH_CANVAS = 1024;
|
|
95
|
+
declare const OC_GLYPHS: Record<OcGlyphSlug, string>;
|
|
96
|
+
|
|
97
|
+
interface OcSigilProps {
|
|
98
|
+
glyph: OcGlyphSlug;
|
|
99
|
+
corner?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
100
|
+
parallax?: boolean;
|
|
101
|
+
className?: string;
|
|
102
|
+
}
|
|
103
|
+
declare function OcSigil({ glyph, corner, parallax, className }: OcSigilProps): react_jsx_runtime.JSX.Element;
|
|
104
|
+
|
|
105
|
+
export { AppearanceControls, DEFAULT_OC_THEME, OC_DEFAULT_ACCENT, OC_GLYPHS, OC_GLYPH_CANVAS, OC_MOTION_COOKIE, OC_SKIN_COOKIE, OC_THEMES, OcAppearanceMenu, type OcAppearanceMenuProps, OcAurora, type OcAuroraProps, type OcGlyphSlug, type OcMotion, type OcSceneRGB, type OcSceneTokens, OcSigil, type OcSigilProps, type OcTheme, OcThemeBridge, type OcThemeId, OcThemePicker, type OcThemePickerProps, OcThemeProvider, type OcThemeProviderProps, accentFor, cn, getOcThemeInitScript, isKnownTheme, normalizeHue, readOcSceneTokens, resolveTheme, subscribeOcTheme, useOcMotion, useOcSkin };
|