@lobehub/ui 5.59.0 → 5.60.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.
Files changed (84) hide show
  1. package/es/ActionIcon/style.mjs +8 -2
  2. package/es/ActionIcon/style.mjs.map +1 -1
  3. package/es/awesome/Grainient/Grainient.d.mts +11 -0
  4. package/es/awesome/Grainient/Grainient.mjs +311 -0
  5. package/es/awesome/Grainient/Grainient.mjs.map +1 -0
  6. package/es/awesome/Grainient/index.d.mts +3 -0
  7. package/es/awesome/Grainient/style.mjs +25 -0
  8. package/es/awesome/Grainient/style.mjs.map +1 -0
  9. package/es/awesome/Grainient/type.d.mts +122 -0
  10. package/es/awesome/index.d.mts +4 -1
  11. package/es/awesome/index.mjs +2 -1
  12. package/es/base-ui/ActionIcon/style.mjs +8 -2
  13. package/es/base-ui/ActionIcon/style.mjs.map +1 -1
  14. package/es/dashboard/AuthLayout/Aside.d.mts +10 -0
  15. package/es/dashboard/AuthLayout/Aside.mjs +30 -0
  16. package/es/dashboard/AuthLayout/Aside.mjs.map +1 -0
  17. package/es/dashboard/AuthLayout/AuthLayout.d.mts +3 -1
  18. package/es/dashboard/AuthLayout/AuthLayout.mjs +93 -37
  19. package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
  20. package/es/dashboard/AuthLayout/index.d.mts +3 -2
  21. package/es/dashboard/AuthLayout/style.mjs +120 -1
  22. package/es/dashboard/AuthLayout/style.mjs.map +1 -1
  23. package/es/dashboard/AuthLayout/type.d.mts +39 -3
  24. package/es/dashboard/AuthTools/AuthLocaleSwitch.d.mts +10 -0
  25. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +32 -0
  26. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -0
  27. package/es/dashboard/AuthTools/AuthThemeSwitch.d.mts +10 -0
  28. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +59 -0
  29. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -0
  30. package/es/dashboard/AuthTools/index.d.mts +4 -0
  31. package/es/dashboard/AuthTools/style.mjs +63 -0
  32. package/es/dashboard/AuthTools/style.mjs.map +1 -0
  33. package/es/dashboard/AuthTools/type.d.mts +30 -0
  34. package/es/dashboard/ConsoleNav/Skeleton.d.mts +15 -0
  35. package/es/dashboard/ConsoleNav/Skeleton.mjs +81 -0
  36. package/es/dashboard/ConsoleNav/Skeleton.mjs.map +1 -0
  37. package/es/dashboard/ConsoleNav/index.d.mts +3 -2
  38. package/es/dashboard/ConsoleNav/style.mjs +15 -0
  39. package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
  40. package/es/dashboard/ConsoleNav/type.d.mts +14 -1
  41. package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +1 -1
  42. package/es/dashboard/ConsoleShell/ConsoleShell.mjs +11 -3
  43. package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -1
  44. package/es/dashboard/ConsoleShell/style.mjs +6 -0
  45. package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
  46. package/es/dashboard/ConsoleShell/type.d.mts +9 -0
  47. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +18 -17
  48. package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -1
  49. package/es/dashboard/FilterStrip/FilterStrip.mjs +36 -32
  50. package/es/dashboard/FilterStrip/FilterStrip.mjs.map +1 -1
  51. package/es/dashboard/FilterStrip/style.mjs +2 -1
  52. package/es/dashboard/FilterStrip/style.mjs.map +1 -1
  53. package/es/dashboard/MetricStrip/MetricCell.mjs +81 -0
  54. package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -0
  55. package/es/dashboard/MetricStrip/MetricStrip.d.mts +5 -2
  56. package/es/dashboard/MetricStrip/MetricStrip.mjs +33 -62
  57. package/es/dashboard/MetricStrip/MetricStrip.mjs.map +1 -1
  58. package/es/dashboard/MetricStrip/style.mjs +49 -4
  59. package/es/dashboard/MetricStrip/style.mjs.map +1 -1
  60. package/es/dashboard/MetricStrip/type.d.mts +12 -0
  61. package/es/dashboard/PageSkeleton/PageSkeleton.mjs +20 -18
  62. package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -1
  63. package/es/dashboard/PageSkeleton/style.mjs +1 -1
  64. package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
  65. package/es/dashboard/PanelSurface/PanelSurface.mjs +4 -1
  66. package/es/dashboard/PanelSurface/PanelSurface.mjs.map +1 -1
  67. package/es/dashboard/StatCard/StatCard.d.mts +2 -1
  68. package/es/dashboard/StatCard/StatCard.mjs +24 -72
  69. package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
  70. package/es/dashboard/StatCard/type.d.mts +16 -5
  71. package/es/dashboard/Surface/Surface.mjs +26 -10
  72. package/es/dashboard/Surface/Surface.mjs.map +1 -1
  73. package/es/dashboard/Surface/index.d.mts +2 -2
  74. package/es/dashboard/Surface/link.d.mts +6 -1
  75. package/es/dashboard/Surface/link.mjs +12 -1
  76. package/es/dashboard/Surface/link.mjs.map +1 -1
  77. package/es/dashboard/Surface/style.d.mts +22 -3
  78. package/es/dashboard/Surface/style.mjs +95 -26
  79. package/es/dashboard/Surface/style.mjs.map +1 -1
  80. package/es/dashboard/index.d.mts +10 -4
  81. package/es/dashboard/index.mjs +7 -3
  82. package/package.json +1 -1
  83. package/es/dashboard/StatCard/style.mjs +0 -135
  84. package/es/dashboard/StatCard/style.mjs.map +0 -1
@@ -10,11 +10,17 @@ const styles = createStaticStyles(({ css, cssVar }) => {
10
10
  dangerFilled: staticStylish.variantFilledDanger,
11
11
  dangerOutlined: staticStylish.variantOutlinedDanger,
12
12
  dangerRoot: css`
13
- &:hover {
13
+ /* Mirrors the neutral ladder (colorTextTertiary -> colorTextSecondary -> colorText):
14
+ a softened red at rest, full colorError on hover, colorErrorActive when pressed. */
15
+ && {
16
+ color: color-mix(in srgb, ${cssVar.colorError} 66%, transparent);
17
+ }
18
+
19
+ &&:hover {
14
20
  color: ${cssVar.colorError};
15
21
  }
16
22
 
17
- &:active {
23
+ &&:active {
18
24
  color: ${cssVar.colorErrorActive};
19
25
  }
20
26
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["lobeStaticStylish"],"sources":["../../src/ActionIcon/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: lobeStaticStylish.active,\n borderless: lobeStaticStylish.variantBorderless,\n dangerBorderless: lobeStaticStylish.variantBorderlessDanger,\n dangerFilled: lobeStaticStylish.variantFilledDanger,\n dangerOutlined: lobeStaticStylish.variantOutlinedDanger,\n dangerRoot: css`\n &:hover {\n color: ${cssVar.colorError};\n }\n\n &:active {\n color: ${cssVar.colorErrorActive};\n }\n `,\n disabled: lobeStaticStylish.disabled,\n filled: lobeStaticStylish.variantFilled,\n glass: lobeStaticStylish.blur,\n outlined: lobeStaticStylish.variantOutlined,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n overflow: hidden;\n\n color: ${cssVar.colorTextTertiary};\n\n transition:\n color 400ms ${cssVar.motionEaseOut},\n background 100ms ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n color: ${cssVar.colorText};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n className: styles.dangerFilled,\n danger: true,\n variant: 'filled',\n },\n {\n className: styles.dangerBorderless,\n danger: true,\n variant: 'borderless',\n },\n {\n className: styles.dangerOutlined,\n danger: true,\n variant: 'outlined',\n },\n ],\n defaultVariants: {\n active: false,\n danger: false,\n disabled: false,\n glass: false,\n shadow: false,\n variant: 'borderless',\n },\n\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n active: {\n false: null,\n true: styles.active,\n },\n danger: {\n false: null,\n true: styles.dangerRoot,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,QAAQA,cAAkB;EAC1B,YAAYA,cAAkB;EAC9B,kBAAkBA,cAAkB;EACpC,cAAcA,cAAkB;EAChC,gBAAgBA,cAAkB;EAClC,YAAY,GAAG;;iBAEF,OAAO,WAAW;;;;iBAIlB,OAAO,iBAAiB;;;EAGrC,UAAUA,cAAkB;EAC5B,QAAQA,cAAkB;EAC1B,OAAOA,cAAkB;EACzB,UAAUA,cAAkB;EAC5B,MAAM,GAAG;;;;;;;eAOE,OAAO,kBAAkB;;;sBAGlB,OAAO,cAAc;2BAChB,OAAO,cAAc;;;iBAG/B,OAAO,mBAAmB;;;;iBAI1B,OAAO,UAAU;;;EAG9B,QAAQA,cAAkB;CAC5B;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,kBAAkB;EAChB;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;EACA;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;EACA;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;CACF;CACA,iBAAiB;EACf,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;CACX;CAEA,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;EACrB;EACA,OAAO;GACL,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,UAAU;GACR,OAAO;GACP,MAAM,OAAO;EACf;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["lobeStaticStylish"],"sources":["../../src/ActionIcon/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: lobeStaticStylish.active,\n borderless: lobeStaticStylish.variantBorderless,\n dangerBorderless: lobeStaticStylish.variantBorderlessDanger,\n dangerFilled: lobeStaticStylish.variantFilledDanger,\n dangerOutlined: lobeStaticStylish.variantOutlinedDanger,\n // && outranks `root`, whose plain color is inserted after this rule.\n dangerRoot: css`\n /* Mirrors the neutral ladder (colorTextTertiary -> colorTextSecondary -> colorText):\n a softened red at rest, full colorError on hover, colorErrorActive when pressed. */\n && {\n color: color-mix(in srgb, ${cssVar.colorError} 66%, transparent);\n }\n\n &&:hover {\n color: ${cssVar.colorError};\n }\n\n &&:active {\n color: ${cssVar.colorErrorActive};\n }\n `,\n disabled: lobeStaticStylish.disabled,\n filled: lobeStaticStylish.variantFilled,\n glass: lobeStaticStylish.blur,\n outlined: lobeStaticStylish.variantOutlined,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n overflow: hidden;\n\n color: ${cssVar.colorTextTertiary};\n\n transition:\n color 400ms ${cssVar.motionEaseOut},\n background 100ms ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n color: ${cssVar.colorText};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n className: styles.dangerFilled,\n danger: true,\n variant: 'filled',\n },\n {\n className: styles.dangerBorderless,\n danger: true,\n variant: 'borderless',\n },\n {\n className: styles.dangerOutlined,\n danger: true,\n variant: 'outlined',\n },\n ],\n defaultVariants: {\n active: false,\n danger: false,\n disabled: false,\n glass: false,\n shadow: false,\n variant: 'borderless',\n },\n\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n active: {\n false: null,\n true: styles.active,\n },\n danger: {\n false: null,\n true: styles.dangerRoot,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,QAAQA,cAAkB;EAC1B,YAAYA,cAAkB;EAC9B,kBAAkBA,cAAkB;EACpC,cAAcA,cAAkB;EAChC,gBAAgBA,cAAkB;EAElC,YAAY,GAAG;;;;oCAIiB,OAAO,WAAW;;;;iBAIrC,OAAO,WAAW;;;;iBAIlB,OAAO,iBAAiB;;;EAGrC,UAAUA,cAAkB;EAC5B,QAAQA,cAAkB;EAC1B,OAAOA,cAAkB;EACzB,UAAUA,cAAkB;EAC5B,MAAM,GAAG;;;;;;;eAOE,OAAO,kBAAkB;;;sBAGlB,OAAO,cAAc;2BAChB,OAAO,cAAc;;;iBAG/B,OAAO,mBAAmB;;;;iBAI1B,OAAO,UAAU;;;EAG9B,QAAQA,cAAkB;CAC5B;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,kBAAkB;EAChB;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;EACA;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;EACA;GACE,WAAW,OAAO;GAClB,QAAQ;GACR,SAAS;EACX;CACF;CACA,iBAAiB;EACf,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;CACX;CAEA,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;EACrB;EACA,OAAO;GACL,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,UAAU;GACR,OAAO;GACP,MAAM,OAAO;EACf;CACF;AACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { GrainientProps } from "./type.mjs";
2
+ //#region src/awesome/Grainient/Grainient.d.ts
3
+ /**
4
+ * Animated grainy gradient (WebGL2, no extra dependency). Fills its nearest positioned ancestor,
5
+ * pauses when off-screen or the tab is hidden, and draws one still frame when reduced motion is
6
+ * preferred. Without WebGL2 it renders nothing, so give the parent a fallback background.
7
+ */
8
+ declare const Grainient: import("react").NamedExoticComponent<GrainientProps>;
9
+ //#endregion
10
+ export { Grainient as default };
11
+ //# sourceMappingURL=Grainient.d.mts.map
@@ -0,0 +1,311 @@
1
+ "use client";
2
+ import { styles } from "./style.mjs";
3
+ import { memo, useEffect, useRef } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { cx, useThemeMode } from "antd-style";
6
+ //#region src/awesome/Grainient/Grainient.tsx
7
+ const VERTEX_SHADER = `#version 300 es
8
+ in vec2 position;
9
+ void main() {
10
+ gl_Position = vec4(position, 0.0, 1.0);
11
+ }
12
+ `;
13
+ const FRAGMENT_SHADER = `#version 300 es
14
+ precision highp float;
15
+ uniform vec2 iResolution;
16
+ uniform float iTime;
17
+ uniform float uTimeSpeed;
18
+ uniform float uColorBalance;
19
+ uniform float uWarpStrength;
20
+ uniform float uWarpFrequency;
21
+ uniform float uWarpSpeed;
22
+ uniform float uWarpAmplitude;
23
+ uniform float uBlendAngle;
24
+ uniform float uBlendSoftness;
25
+ uniform float uRotationAmount;
26
+ uniform float uNoiseScale;
27
+ uniform float uGrainAmount;
28
+ uniform float uGrainScale;
29
+ uniform float uGrainAnimated;
30
+ uniform float uContrast;
31
+ uniform float uGamma;
32
+ uniform float uSaturation;
33
+ uniform vec2 uCenterOffset;
34
+ uniform float uZoom;
35
+ uniform vec3 uColor1;
36
+ uniform vec3 uColor2;
37
+ uniform vec3 uColor3;
38
+ uniform float uLightMode;
39
+ out vec4 fragColor;
40
+ #define S(a,b,t) smoothstep(a,b,t)
41
+ mat2 Rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}
42
+ vec2 hash(vec2 p){p=vec2(dot(p,vec2(2127.1,81.17)),dot(p,vec2(1269.5,283.37)));return fract(sin(p)*43758.5453);}
43
+ float noise(vec2 p){vec2 i=floor(p),f=fract(p),u=f*f*(3.0-2.0*f);float n=mix(mix(dot(-1.0+2.0*hash(i+vec2(0.0,0.0)),f-vec2(0.0,0.0)),dot(-1.0+2.0*hash(i+vec2(1.0,0.0)),f-vec2(1.0,0.0)),u.x),mix(dot(-1.0+2.0*hash(i+vec2(0.0,1.0)),f-vec2(0.0,1.0)),dot(-1.0+2.0*hash(i+vec2(1.0,1.0)),f-vec2(1.0,1.0)),u.x),u.y);return 0.5+0.5*n;}
44
+ void mainImage(out vec4 o, vec2 C){
45
+ float t=iTime*uTimeSpeed;
46
+ vec2 uv=C/iResolution.xy;
47
+ float ratio=iResolution.x/iResolution.y;
48
+ vec2 tuv=uv-0.5+uCenterOffset;
49
+ tuv/=max(uZoom,0.001);
50
+
51
+ float degree=noise(vec2(t*0.1,tuv.x*tuv.y)*uNoiseScale);
52
+ tuv.y*=1.0/ratio;
53
+ tuv*=Rot(radians((degree-0.5)*uRotationAmount+180.0));
54
+ tuv.y*=ratio;
55
+
56
+ float frequency=uWarpFrequency;
57
+ float ws=max(uWarpStrength,0.001);
58
+ float amplitude=uWarpAmplitude/ws;
59
+ float warpTime=t*uWarpSpeed;
60
+ tuv.x+=sin(tuv.y*frequency+warpTime)/amplitude;
61
+ tuv.y+=sin(tuv.x*(frequency*1.5)+warpTime)/(amplitude*0.5);
62
+
63
+ vec3 colLav=uColor1;
64
+ vec3 colOrg=uColor2;
65
+ vec3 colDark=uColor3;
66
+ float b=uColorBalance;
67
+ float s=max(uBlendSoftness,0.0);
68
+ mat2 blendRot=Rot(radians(uBlendAngle));
69
+ float blendX=(tuv*blendRot).x;
70
+ float edge0=-0.3-b-s;
71
+ float edge1=0.2-b+s;
72
+ float v0=0.5-b+s;
73
+ float v1=-0.3-b-s;
74
+ vec3 layer1=mix(colDark,colOrg,S(edge0,edge1,blendX));
75
+ vec3 layer2=mix(colOrg,colLav,S(edge0,edge1,blendX));
76
+ vec3 col=mix(layer1,layer2,S(v0,v1,tuv.y));
77
+
78
+ vec2 grainUv=uv*max(uGrainScale,0.001);
79
+ if(uGrainAnimated>0.5){grainUv+=vec2(iTime*0.05);}
80
+ float grain=fract(sin(dot(grainUv,vec2(12.9898,78.233)))*43758.5453);
81
+ col+=(grain-0.5)*uGrainAmount;
82
+
83
+ col=(col-0.5)*uContrast+0.5;
84
+ float luma=dot(col,vec3(0.2126,0.7152,0.0722));
85
+ col=mix(vec3(luma),col,uSaturation);
86
+ col=pow(max(col,0.0),vec3(1.0/max(uGamma,0.001)));
87
+ col=clamp(col,0.0,1.0);
88
+ if(uLightMode>0.5){
89
+ float energy=max(max(col.r,col.g),col.b);
90
+ vec3 hue=col/max(energy,0.001);
91
+ float chroma=length(col-vec3(dot(col,vec3(0.333333))));
92
+ float coverage=clamp(0.12+chroma*1.15+energy*0.18,0.0,0.88);
93
+ col=mix(vec3(1.0),clamp(hue*0.58+col*0.18,0.0,1.0),coverage);
94
+ }
95
+
96
+ o=vec4(col,1.0);
97
+ }
98
+ void main(){
99
+ vec4 o=vec4(0.0);
100
+ mainImage(o,gl_FragCoord.xy);
101
+ fragColor=o;
102
+ }
103
+ `;
104
+ const hexToRgb = (hex) => {
105
+ let value = hex.trim().replace("#", "");
106
+ if (value.length === 3) value = [...value].map((c) => c + c).join("");
107
+ const result = /^([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(value);
108
+ if (!result) return [
109
+ 1,
110
+ 1,
111
+ 1
112
+ ];
113
+ return [
114
+ Number.parseInt(result[1], 16) / 255,
115
+ Number.parseInt(result[2], 16) / 255,
116
+ Number.parseInt(result[3], 16) / 255
117
+ ];
118
+ };
119
+ const compile = (gl, type, source) => {
120
+ const shader = gl.createShader(type);
121
+ if (!shader) return null;
122
+ gl.shaderSource(shader, source);
123
+ gl.compileShader(shader);
124
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
125
+ gl.deleteShader(shader);
126
+ return null;
127
+ }
128
+ return shader;
129
+ };
130
+ /**
131
+ * Animated grainy gradient (WebGL2, no extra dependency). Fills its nearest positioned ancestor,
132
+ * pauses when off-screen or the tab is hidden, and draws one still frame when reduced motion is
133
+ * preferred. Without WebGL2 it renders nothing, so give the parent a fallback background.
134
+ */
135
+ const Grainient = memo(({ timeSpeed = .25, colorBalance = 0, warpStrength = 1, warpFrequency = 5, warpSpeed = 2, warpAmplitude = 50, blendAngle = 0, blendSoftness = .05, rotationAmount = 500, noiseScale = 2, grainAmount = .1, grainScale = 2, contrast = 1.5, gamma = 1, saturation = 1, zoom = .9, centerX = 0, centerY = 0, color1 = "#FF9FFC", color2 = "#5227FF", color3 = "#B497CF", grainAnimated = false, lightMode = false, className, ...rest }) => {
136
+ const containerRef = useRef(null);
137
+ const drawRef = useRef(null);
138
+ const uniformsRef = useRef(null);
139
+ const { isDarkMode } = useThemeMode();
140
+ const light = lightMode === "auto" ? !isDarkMode : lightMode;
141
+ useEffect(() => {
142
+ const container = containerRef.current;
143
+ if (!container) return;
144
+ const canvas = document.createElement("canvas");
145
+ const gl = canvas.getContext("webgl2", {
146
+ alpha: true,
147
+ antialias: false
148
+ });
149
+ if (!gl) return;
150
+ container.append(canvas);
151
+ const vs = compile(gl, gl.VERTEX_SHADER, VERTEX_SHADER);
152
+ const fs = compile(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);
153
+ const program = gl.createProgram();
154
+ if (!vs || !fs || !program) {
155
+ canvas.remove();
156
+ return;
157
+ }
158
+ gl.attachShader(program, vs);
159
+ gl.attachShader(program, fs);
160
+ gl.linkProgram(program);
161
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
162
+ canvas.remove();
163
+ return;
164
+ }
165
+ gl.useProgram(program);
166
+ const buffer = gl.createBuffer();
167
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
168
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
169
+ -1,
170
+ -1,
171
+ 3,
172
+ -1,
173
+ -1,
174
+ 3
175
+ ]), gl.STATIC_DRAW);
176
+ const position = gl.getAttribLocation(program, "position");
177
+ gl.enableVertexAttribArray(position);
178
+ gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);
179
+ const loc = (name) => gl.getUniformLocation(program, name);
180
+ const uTime = loc("iTime");
181
+ const uRes = loc("iResolution");
182
+ const started = performance.now();
183
+ const draw = () => {
184
+ gl.uniform1f(uTime, (performance.now() - started) * .001);
185
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
186
+ };
187
+ drawRef.current = draw;
188
+ uniformsRef.current?.();
189
+ const setSize = () => {
190
+ const rect = container.getBoundingClientRect();
191
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
192
+ canvas.width = Math.max(1, Math.floor(rect.width * dpr));
193
+ canvas.height = Math.max(1, Math.floor(rect.height * dpr));
194
+ gl.viewport(0, 0, canvas.width, canvas.height);
195
+ gl.uniform2f(uRes, canvas.width, canvas.height);
196
+ draw();
197
+ };
198
+ const reducedMotion = window.matchMedia?.("(prefers-reduced-motion: reduce)");
199
+ let raf = 0;
200
+ let inView = true;
201
+ const loop = () => {
202
+ draw();
203
+ raf = requestAnimationFrame(loop);
204
+ };
205
+ const stop = () => {
206
+ if (raf) cancelAnimationFrame(raf);
207
+ raf = 0;
208
+ };
209
+ const sync = () => {
210
+ const run = inView && !document.hidden && !reducedMotion?.matches;
211
+ if (run && !raf) raf = requestAnimationFrame(loop);
212
+ if (!run) {
213
+ stop();
214
+ draw();
215
+ }
216
+ };
217
+ const resizeObserver = new ResizeObserver(setSize);
218
+ resizeObserver.observe(container);
219
+ const intersectionObserver = new IntersectionObserver(([entry]) => {
220
+ inView = entry.isIntersecting;
221
+ sync();
222
+ });
223
+ intersectionObserver.observe(container);
224
+ document.addEventListener("visibilitychange", sync);
225
+ reducedMotion?.addEventListener("change", sync);
226
+ setSize();
227
+ sync();
228
+ return () => {
229
+ stop();
230
+ resizeObserver.disconnect();
231
+ intersectionObserver.disconnect();
232
+ document.removeEventListener("visibilitychange", sync);
233
+ reducedMotion?.removeEventListener("change", sync);
234
+ drawRef.current = null;
235
+ gl.deleteBuffer(buffer);
236
+ gl.deleteProgram(program);
237
+ gl.deleteShader(vs);
238
+ gl.deleteShader(fs);
239
+ canvas.remove();
240
+ };
241
+ }, []);
242
+ useEffect(() => {
243
+ const apply = () => {
244
+ const gl = (containerRef.current?.querySelector("canvas"))?.getContext("webgl2");
245
+ if (!gl) return;
246
+ const program = gl.getParameter(gl.CURRENT_PROGRAM);
247
+ if (!program) return;
248
+ const loc = (name) => gl.getUniformLocation(program, name);
249
+ gl.uniform1f(loc("uTimeSpeed"), timeSpeed);
250
+ gl.uniform1f(loc("uColorBalance"), colorBalance);
251
+ gl.uniform1f(loc("uWarpStrength"), warpStrength);
252
+ gl.uniform1f(loc("uWarpFrequency"), warpFrequency);
253
+ gl.uniform1f(loc("uWarpSpeed"), warpSpeed);
254
+ gl.uniform1f(loc("uWarpAmplitude"), warpAmplitude);
255
+ gl.uniform1f(loc("uBlendAngle"), blendAngle);
256
+ gl.uniform1f(loc("uBlendSoftness"), blendSoftness);
257
+ gl.uniform1f(loc("uRotationAmount"), rotationAmount);
258
+ gl.uniform1f(loc("uNoiseScale"), noiseScale);
259
+ gl.uniform1f(loc("uGrainAmount"), grainAmount);
260
+ gl.uniform1f(loc("uGrainScale"), grainScale);
261
+ gl.uniform1f(loc("uContrast"), contrast);
262
+ gl.uniform1f(loc("uGamma"), gamma);
263
+ gl.uniform1f(loc("uSaturation"), saturation);
264
+ gl.uniform1f(loc("uZoom"), zoom);
265
+ gl.uniform1f(loc("uGrainAnimated"), grainAnimated ? 1 : 0);
266
+ gl.uniform1f(loc("uLightMode"), light ? 1 : 0);
267
+ gl.uniform2f(loc("uCenterOffset"), centerX, centerY);
268
+ gl.uniform3f(loc("uColor1"), ...hexToRgb(color1));
269
+ gl.uniform3f(loc("uColor2"), ...hexToRgb(color2));
270
+ gl.uniform3f(loc("uColor3"), ...hexToRgb(color3));
271
+ drawRef.current?.();
272
+ };
273
+ uniformsRef.current = apply;
274
+ apply();
275
+ }, [
276
+ timeSpeed,
277
+ colorBalance,
278
+ warpStrength,
279
+ warpFrequency,
280
+ warpSpeed,
281
+ warpAmplitude,
282
+ blendAngle,
283
+ blendSoftness,
284
+ rotationAmount,
285
+ noiseScale,
286
+ grainAmount,
287
+ grainScale,
288
+ contrast,
289
+ gamma,
290
+ saturation,
291
+ zoom,
292
+ centerX,
293
+ centerY,
294
+ color1,
295
+ color2,
296
+ color3,
297
+ grainAnimated,
298
+ light
299
+ ]);
300
+ return /* @__PURE__ */ jsx("div", {
301
+ "aria-hidden": true,
302
+ className: cx(styles.root, className),
303
+ ref: containerRef,
304
+ ...rest
305
+ });
306
+ });
307
+ Grainient.displayName = "Grainient";
308
+ //#endregion
309
+ export { Grainient as default, hexToRgb };
310
+
311
+ //# sourceMappingURL=Grainient.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grainient.mjs","names":[],"sources":["../../../src/awesome/Grainient/Grainient.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { memo, useEffect, useRef } from 'react';\n\nimport { styles } from './style';\nimport type { GrainientProps } from './type';\n\nconst VERTEX_SHADER = `#version 300 es\nin vec2 position;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n}\n`;\n\nconst FRAGMENT_SHADER = `#version 300 es\nprecision highp float;\nuniform vec2 iResolution;\nuniform float iTime;\nuniform float uTimeSpeed;\nuniform float uColorBalance;\nuniform float uWarpStrength;\nuniform float uWarpFrequency;\nuniform float uWarpSpeed;\nuniform float uWarpAmplitude;\nuniform float uBlendAngle;\nuniform float uBlendSoftness;\nuniform float uRotationAmount;\nuniform float uNoiseScale;\nuniform float uGrainAmount;\nuniform float uGrainScale;\nuniform float uGrainAnimated;\nuniform float uContrast;\nuniform float uGamma;\nuniform float uSaturation;\nuniform vec2 uCenterOffset;\nuniform float uZoom;\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform vec3 uColor3;\nuniform float uLightMode;\nout vec4 fragColor;\n#define S(a,b,t) smoothstep(a,b,t)\nmat2 Rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}\nvec2 hash(vec2 p){p=vec2(dot(p,vec2(2127.1,81.17)),dot(p,vec2(1269.5,283.37)));return fract(sin(p)*43758.5453);}\nfloat noise(vec2 p){vec2 i=floor(p),f=fract(p),u=f*f*(3.0-2.0*f);float n=mix(mix(dot(-1.0+2.0*hash(i+vec2(0.0,0.0)),f-vec2(0.0,0.0)),dot(-1.0+2.0*hash(i+vec2(1.0,0.0)),f-vec2(1.0,0.0)),u.x),mix(dot(-1.0+2.0*hash(i+vec2(0.0,1.0)),f-vec2(0.0,1.0)),dot(-1.0+2.0*hash(i+vec2(1.0,1.0)),f-vec2(1.0,1.0)),u.x),u.y);return 0.5+0.5*n;}\nvoid mainImage(out vec4 o, vec2 C){\n float t=iTime*uTimeSpeed;\n vec2 uv=C/iResolution.xy;\n float ratio=iResolution.x/iResolution.y;\n vec2 tuv=uv-0.5+uCenterOffset;\n tuv/=max(uZoom,0.001);\n\n float degree=noise(vec2(t*0.1,tuv.x*tuv.y)*uNoiseScale);\n tuv.y*=1.0/ratio;\n tuv*=Rot(radians((degree-0.5)*uRotationAmount+180.0));\n tuv.y*=ratio;\n\n float frequency=uWarpFrequency;\n float ws=max(uWarpStrength,0.001);\n float amplitude=uWarpAmplitude/ws;\n float warpTime=t*uWarpSpeed;\n tuv.x+=sin(tuv.y*frequency+warpTime)/amplitude;\n tuv.y+=sin(tuv.x*(frequency*1.5)+warpTime)/(amplitude*0.5);\n\n vec3 colLav=uColor1;\n vec3 colOrg=uColor2;\n vec3 colDark=uColor3;\n float b=uColorBalance;\n float s=max(uBlendSoftness,0.0);\n mat2 blendRot=Rot(radians(uBlendAngle));\n float blendX=(tuv*blendRot).x;\n float edge0=-0.3-b-s;\n float edge1=0.2-b+s;\n float v0=0.5-b+s;\n float v1=-0.3-b-s;\n vec3 layer1=mix(colDark,colOrg,S(edge0,edge1,blendX));\n vec3 layer2=mix(colOrg,colLav,S(edge0,edge1,blendX));\n vec3 col=mix(layer1,layer2,S(v0,v1,tuv.y));\n\n vec2 grainUv=uv*max(uGrainScale,0.001);\n if(uGrainAnimated>0.5){grainUv+=vec2(iTime*0.05);}\n float grain=fract(sin(dot(grainUv,vec2(12.9898,78.233)))*43758.5453);\n col+=(grain-0.5)*uGrainAmount;\n\n col=(col-0.5)*uContrast+0.5;\n float luma=dot(col,vec3(0.2126,0.7152,0.0722));\n col=mix(vec3(luma),col,uSaturation);\n col=pow(max(col,0.0),vec3(1.0/max(uGamma,0.001)));\n col=clamp(col,0.0,1.0);\n if(uLightMode>0.5){\n float energy=max(max(col.r,col.g),col.b);\n vec3 hue=col/max(energy,0.001);\n float chroma=length(col-vec3(dot(col,vec3(0.333333))));\n float coverage=clamp(0.12+chroma*1.15+energy*0.18,0.0,0.88);\n col=mix(vec3(1.0),clamp(hue*0.58+col*0.18,0.0,1.0),coverage);\n }\n\n o=vec4(col,1.0);\n}\nvoid main(){\n vec4 o=vec4(0.0);\n mainImage(o,gl_FragCoord.xy);\n fragColor=o;\n}\n`;\n\nexport const hexToRgb = (hex: string): [number, number, number] => {\n let value = hex.trim().replace('#', '');\n if (value.length === 3) value = [...value].map((c) => c + c).join('');\n const result = /^([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i.exec(value);\n if (!result) return [1, 1, 1];\n return [\n Number.parseInt(result[1], 16) / 255,\n Number.parseInt(result[2], 16) / 255,\n Number.parseInt(result[3], 16) / 255,\n ];\n};\n\nconst compile = (gl: WebGL2RenderingContext, type: number, source: string) => {\n const shader = gl.createShader(type);\n if (!shader) return null;\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n gl.deleteShader(shader);\n return null;\n }\n return shader;\n};\n\n/**\n * Animated grainy gradient (WebGL2, no extra dependency). Fills its nearest positioned ancestor,\n * pauses when off-screen or the tab is hidden, and draws one still frame when reduced motion is\n * preferred. Without WebGL2 it renders nothing, so give the parent a fallback background.\n */\nconst Grainient = memo<GrainientProps>(\n ({\n timeSpeed = 0.25,\n colorBalance = 0,\n warpStrength = 1,\n warpFrequency = 5,\n warpSpeed = 2,\n warpAmplitude = 50,\n blendAngle = 0,\n blendSoftness = 0.05,\n rotationAmount = 500,\n noiseScale = 2,\n grainAmount = 0.1,\n grainScale = 2,\n contrast = 1.5,\n gamma = 1,\n saturation = 1,\n zoom = 0.9,\n centerX = 0,\n centerY = 0,\n color1 = '#FF9FFC',\n color2 = '#5227FF',\n color3 = '#B497CF',\n grainAnimated = false,\n lightMode = false,\n className,\n ...rest\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const drawRef = useRef<(() => void) | null>(null);\n const uniformsRef = useRef<(() => void) | null>(null);\n const { isDarkMode } = useThemeMode();\n const light = lightMode === 'auto' ? !isDarkMode : lightMode;\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl2', { alpha: true, antialias: false });\n if (!gl) return;\n container.append(canvas);\n\n const vs = compile(gl, gl.VERTEX_SHADER, VERTEX_SHADER);\n const fs = compile(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);\n const program = gl.createProgram();\n if (!vs || !fs || !program) {\n canvas.remove();\n return;\n }\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n canvas.remove();\n return;\n }\n gl.useProgram(program);\n\n // One triangle that covers the viewport.\n const buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW);\n const position = gl.getAttribLocation(program, 'position');\n gl.enableVertexAttribArray(position);\n gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);\n\n const loc = (name: string) => gl.getUniformLocation(program, name);\n const uTime = loc('iTime');\n const uRes = loc('iResolution');\n const started = performance.now();\n\n const draw = () => {\n gl.uniform1f(uTime, (performance.now() - started) * 0.001);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n drawRef.current = draw;\n uniformsRef.current?.();\n\n const setSize = () => {\n const rect = container.getBoundingClientRect();\n const dpr = Math.min(window.devicePixelRatio || 1, 2);\n canvas.width = Math.max(1, Math.floor(rect.width * dpr));\n canvas.height = Math.max(1, Math.floor(rect.height * dpr));\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.uniform2f(uRes, canvas.width, canvas.height);\n draw();\n };\n\n const reducedMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)');\n let raf = 0;\n let inView = true;\n\n const loop = () => {\n draw();\n raf = requestAnimationFrame(loop);\n };\n const stop = () => {\n if (raf) cancelAnimationFrame(raf);\n raf = 0;\n };\n const sync = () => {\n const run = inView && !document.hidden && !reducedMotion?.matches;\n if (run && !raf) raf = requestAnimationFrame(loop);\n if (!run) {\n stop();\n draw();\n }\n };\n\n const resizeObserver = new ResizeObserver(setSize);\n resizeObserver.observe(container);\n const intersectionObserver = new IntersectionObserver(([entry]) => {\n inView = entry.isIntersecting;\n sync();\n });\n intersectionObserver.observe(container);\n document.addEventListener('visibilitychange', sync);\n reducedMotion?.addEventListener('change', sync);\n setSize();\n sync();\n\n return () => {\n stop();\n resizeObserver.disconnect();\n intersectionObserver.disconnect();\n document.removeEventListener('visibilitychange', sync);\n reducedMotion?.removeEventListener('change', sync);\n drawRef.current = null;\n gl.deleteBuffer(buffer);\n gl.deleteProgram(program);\n gl.deleteShader(vs);\n gl.deleteShader(fs);\n canvas.remove();\n };\n }, []);\n\n useEffect(() => {\n const apply = () => {\n const canvas = containerRef.current?.querySelector('canvas');\n const gl = canvas?.getContext('webgl2');\n if (!gl) return;\n const program = gl.getParameter(gl.CURRENT_PROGRAM) as WebGLProgram | null;\n if (!program) return;\n const loc = (name: string) => gl.getUniformLocation(program, name);\n gl.uniform1f(loc('uTimeSpeed'), timeSpeed);\n gl.uniform1f(loc('uColorBalance'), colorBalance);\n gl.uniform1f(loc('uWarpStrength'), warpStrength);\n gl.uniform1f(loc('uWarpFrequency'), warpFrequency);\n gl.uniform1f(loc('uWarpSpeed'), warpSpeed);\n gl.uniform1f(loc('uWarpAmplitude'), warpAmplitude);\n gl.uniform1f(loc('uBlendAngle'), blendAngle);\n gl.uniform1f(loc('uBlendSoftness'), blendSoftness);\n gl.uniform1f(loc('uRotationAmount'), rotationAmount);\n gl.uniform1f(loc('uNoiseScale'), noiseScale);\n gl.uniform1f(loc('uGrainAmount'), grainAmount);\n gl.uniform1f(loc('uGrainScale'), grainScale);\n gl.uniform1f(loc('uContrast'), contrast);\n gl.uniform1f(loc('uGamma'), gamma);\n gl.uniform1f(loc('uSaturation'), saturation);\n gl.uniform1f(loc('uZoom'), zoom);\n gl.uniform1f(loc('uGrainAnimated'), grainAnimated ? 1 : 0);\n gl.uniform1f(loc('uLightMode'), light ? 1 : 0);\n gl.uniform2f(loc('uCenterOffset'), centerX, centerY);\n gl.uniform3f(loc('uColor1'), ...hexToRgb(color1));\n gl.uniform3f(loc('uColor2'), ...hexToRgb(color2));\n gl.uniform3f(loc('uColor3'), ...hexToRgb(color3));\n drawRef.current?.();\n };\n uniformsRef.current = apply;\n apply();\n }, [\n timeSpeed,\n colorBalance,\n warpStrength,\n warpFrequency,\n warpSpeed,\n warpAmplitude,\n blendAngle,\n blendSoftness,\n rotationAmount,\n noiseScale,\n grainAmount,\n grainScale,\n contrast,\n gamma,\n saturation,\n zoom,\n centerX,\n centerY,\n color1,\n color2,\n color3,\n grainAnimated,\n light,\n ]);\n\n return <div aria-hidden className={cx(styles.root, className)} ref={containerRef} {...rest} />;\n },\n);\n\nGrainient.displayName = 'Grainient';\n\nexport default Grainient;\n"],"mappings":";;;;;;AAQA,MAAM,gBAAgB;;;;;;AAOtB,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4FxB,MAAa,YAAY,QAA0C;CACjE,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,QAAQ,KAAK,EAAE;CACtC,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;CACpE,MAAM,SAAS,0CAA0C,KAAK,KAAK;CACnE,IAAI,CAAC,QAAQ,OAAO;EAAC;EAAG;EAAG;CAAC;CAC5B,OAAO;EACL,OAAO,SAAS,OAAO,IAAI,EAAE,IAAI;EACjC,OAAO,SAAS,OAAO,IAAI,EAAE,IAAI;EACjC,OAAO,SAAS,OAAO,IAAI,EAAE,IAAI;CACnC;AACF;AAEA,MAAM,WAAW,IAA4B,MAAc,WAAmB;CAC5E,MAAM,SAAS,GAAG,aAAa,IAAI;CACnC,IAAI,CAAC,QAAQ,OAAO;CACpB,GAAG,aAAa,QAAQ,MAAM;CAC9B,GAAG,cAAc,MAAM;CACvB,IAAI,CAAC,GAAG,mBAAmB,QAAQ,GAAG,cAAc,GAAG;EACrD,GAAG,aAAa,MAAM;EACtB,OAAO;CACT;CACA,OAAO;AACT;;;;;;AAOA,MAAM,YAAY,MACf,EACC,YAAY,KACZ,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,IAChB,aAAa,GACb,gBAAgB,KAChB,iBAAiB,KACjB,aAAa,GACb,cAAc,IACd,aAAa,GACb,WAAW,KACX,QAAQ,GACR,aAAa,GACb,OAAO,IACP,UAAU,GACV,UAAU,GACV,SAAS,WACT,SAAS,WACT,SAAS,WACT,gBAAgB,OAChB,YAAY,OACZ,WACA,GAAG,WACC;CACJ,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,UAAU,OAA4B,IAAI;CAChD,MAAM,cAAc,OAA4B,IAAI;CACpD,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,QAAQ,cAAc,SAAS,CAAC,aAAa;CAEnD,gBAAgB;EACd,MAAM,YAAY,aAAa;EAC/B,IAAI,CAAC,WAAW;EAEhB,MAAM,SAAS,SAAS,cAAc,QAAQ;EAC9C,MAAM,KAAK,OAAO,WAAW,UAAU;GAAE,OAAO;GAAM,WAAW;EAAM,CAAC;EACxE,IAAI,CAAC,IAAI;EACT,UAAU,OAAO,MAAM;EAEvB,MAAM,KAAK,QAAQ,IAAI,GAAG,eAAe,aAAa;EACtD,MAAM,KAAK,QAAQ,IAAI,GAAG,iBAAiB,eAAe;EAC1D,MAAM,UAAU,GAAG,cAAc;EACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;GAC1B,OAAO,OAAO;GACd;EACF;EACA,GAAG,aAAa,SAAS,EAAE;EAC3B,GAAG,aAAa,SAAS,EAAE;EAC3B,GAAG,YAAY,OAAO;EACtB,IAAI,CAAC,GAAG,oBAAoB,SAAS,GAAG,WAAW,GAAG;GACpD,OAAO,OAAO;GACd;EACF;EACA,GAAG,WAAW,OAAO;EAGrB,MAAM,SAAS,GAAG,aAAa;EAC/B,GAAG,WAAW,GAAG,cAAc,MAAM;EACrC,GAAG,WAAW,GAAG,cAAc,IAAI,aAAa;GAAC;GAAI;GAAI;GAAG;GAAI;GAAI;EAAC,CAAC,GAAG,GAAG,WAAW;EACvF,MAAM,WAAW,GAAG,kBAAkB,SAAS,UAAU;EACzD,GAAG,wBAAwB,QAAQ;EACnC,GAAG,oBAAoB,UAAU,GAAG,GAAG,OAAO,OAAO,GAAG,CAAC;EAEzD,MAAM,OAAO,SAAiB,GAAG,mBAAmB,SAAS,IAAI;EACjE,MAAM,QAAQ,IAAI,OAAO;EACzB,MAAM,OAAO,IAAI,aAAa;EAC9B,MAAM,UAAU,YAAY,IAAI;EAEhC,MAAM,aAAa;GACjB,GAAG,UAAU,QAAQ,YAAY,IAAI,IAAI,WAAW,IAAK;GACzD,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC;EAClC;EACA,QAAQ,UAAU;EAClB,YAAY,UAAU;EAEtB,MAAM,gBAAgB;GACpB,MAAM,OAAO,UAAU,sBAAsB;GAC7C,MAAM,MAAM,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC;GACpD,OAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,QAAQ,GAAG,CAAC;GACvD,OAAO,SAAS,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,SAAS,GAAG,CAAC;GACzD,GAAG,SAAS,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;GAC7C,GAAG,UAAU,MAAM,OAAO,OAAO,OAAO,MAAM;GAC9C,KAAK;EACP;EAEA,MAAM,gBAAgB,OAAO,aAAa,kCAAkC;EAC5E,IAAI,MAAM;EACV,IAAI,SAAS;EAEb,MAAM,aAAa;GACjB,KAAK;GACL,MAAM,sBAAsB,IAAI;EAClC;EACA,MAAM,aAAa;GACjB,IAAI,KAAK,qBAAqB,GAAG;GACjC,MAAM;EACR;EACA,MAAM,aAAa;GACjB,MAAM,MAAM,UAAU,CAAC,SAAS,UAAU,CAAC,eAAe;GAC1D,IAAI,OAAO,CAAC,KAAK,MAAM,sBAAsB,IAAI;GACjD,IAAI,CAAC,KAAK;IACR,KAAK;IACL,KAAK;GACP;EACF;EAEA,MAAM,iBAAiB,IAAI,eAAe,OAAO;EACjD,eAAe,QAAQ,SAAS;EAChC,MAAM,uBAAuB,IAAI,sBAAsB,CAAC,WAAW;GACjE,SAAS,MAAM;GACf,KAAK;EACP,CAAC;EACD,qBAAqB,QAAQ,SAAS;EACtC,SAAS,iBAAiB,oBAAoB,IAAI;EAClD,eAAe,iBAAiB,UAAU,IAAI;EAC9C,QAAQ;EACR,KAAK;EAEL,aAAa;GACX,KAAK;GACL,eAAe,WAAW;GAC1B,qBAAqB,WAAW;GAChC,SAAS,oBAAoB,oBAAoB,IAAI;GACrD,eAAe,oBAAoB,UAAU,IAAI;GACjD,QAAQ,UAAU;GAClB,GAAG,aAAa,MAAM;GACtB,GAAG,cAAc,OAAO;GACxB,GAAG,aAAa,EAAE;GAClB,GAAG,aAAa,EAAE;GAClB,OAAO,OAAO;EAChB;CACF,GAAG,CAAC,CAAC;CAEL,gBAAgB;EACd,MAAM,cAAc;GAElB,MAAM,MADS,aAAa,SAAS,cAAc,QAAQ,EAAA,EACxC,WAAW,QAAQ;GACtC,IAAI,CAAC,IAAI;GACT,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe;GAClD,IAAI,CAAC,SAAS;GACd,MAAM,OAAO,SAAiB,GAAG,mBAAmB,SAAS,IAAI;GACjE,GAAG,UAAU,IAAI,YAAY,GAAG,SAAS;GACzC,GAAG,UAAU,IAAI,eAAe,GAAG,YAAY;GAC/C,GAAG,UAAU,IAAI,eAAe,GAAG,YAAY;GAC/C,GAAG,UAAU,IAAI,gBAAgB,GAAG,aAAa;GACjD,GAAG,UAAU,IAAI,YAAY,GAAG,SAAS;GACzC,GAAG,UAAU,IAAI,gBAAgB,GAAG,aAAa;GACjD,GAAG,UAAU,IAAI,aAAa,GAAG,UAAU;GAC3C,GAAG,UAAU,IAAI,gBAAgB,GAAG,aAAa;GACjD,GAAG,UAAU,IAAI,iBAAiB,GAAG,cAAc;GACnD,GAAG,UAAU,IAAI,aAAa,GAAG,UAAU;GAC3C,GAAG,UAAU,IAAI,cAAc,GAAG,WAAW;GAC7C,GAAG,UAAU,IAAI,aAAa,GAAG,UAAU;GAC3C,GAAG,UAAU,IAAI,WAAW,GAAG,QAAQ;GACvC,GAAG,UAAU,IAAI,QAAQ,GAAG,KAAK;GACjC,GAAG,UAAU,IAAI,aAAa,GAAG,UAAU;GAC3C,GAAG,UAAU,IAAI,OAAO,GAAG,IAAI;GAC/B,GAAG,UAAU,IAAI,gBAAgB,GAAG,gBAAgB,IAAI,CAAC;GACzD,GAAG,UAAU,IAAI,YAAY,GAAG,QAAQ,IAAI,CAAC;GAC7C,GAAG,UAAU,IAAI,eAAe,GAAG,SAAS,OAAO;GACnD,GAAG,UAAU,IAAI,SAAS,GAAG,GAAG,SAAS,MAAM,CAAC;GAChD,GAAG,UAAU,IAAI,SAAS,GAAG,GAAG,SAAS,MAAM,CAAC;GAChD,GAAG,UAAU,IAAI,SAAS,GAAG,GAAG,SAAS,MAAM,CAAC;GAChD,QAAQ,UAAU;EACpB;EACA,YAAY,UAAU;EACtB,MAAM;CACR,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO,oBAAC,OAAD;EAAK,eAAA;EAAY,WAAW,GAAG,OAAO,MAAM,SAAS;EAAG,KAAK;EAAc,GAAI;CAAO,CAAA;AAC/F,CACF;AAEA,UAAU,cAAc"}
@@ -0,0 +1,3 @@
1
+ import { GrainientProps } from "./type.mjs";
2
+ import Grainient from "./Grainient.mjs";
3
+ export { type GrainientProps, Grainient as default };
@@ -0,0 +1,25 @@
1
+ import { createStaticStyles } from "antd-style";
2
+ //#region src/awesome/Grainient/style.ts
3
+ const styles = createStaticStyles(({ css }) => ({ root: css`
4
+ pointer-events: none;
5
+
6
+ position: absolute;
7
+ z-index: 0;
8
+ inset: 0;
9
+
10
+ overflow: hidden;
11
+
12
+ canvas {
13
+ position: absolute;
14
+ inset: 0;
15
+
16
+ display: block;
17
+
18
+ inline-size: 100%;
19
+ block-size: 100%;
20
+ }
21
+ ` }));
22
+ //#endregion
23
+ export { styles };
24
+
25
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../../src/awesome/Grainient/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css }) => ({\n root: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 0;\n inset: 0;\n\n overflow: hidden;\n\n canvas {\n position: absolute;\n inset: 0;\n\n display: block;\n\n inline-size: 100%;\n block-size: 100%;\n }\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,WAAW,EACrD,MAAM,GAAG;;;;;;;;;;;;;;;;;;IAmBX,EAAE"}
@@ -0,0 +1,122 @@
1
+ import { DivProps } from "../../types/index.mjs";
2
+ //#region src/awesome/Grainient/type.d.ts
3
+ interface GrainientProps extends DivProps {
4
+ /**
5
+ * Angle of the color blend, in degrees.
6
+ * @default 0
7
+ */
8
+ blendAngle?: number;
9
+ /**
10
+ * Softness of the color edges.
11
+ * @default 0.05
12
+ */
13
+ blendSoftness?: number;
14
+ /**
15
+ * Horizontal offset of the field center.
16
+ * @default 0
17
+ */
18
+ centerX?: number;
19
+ /**
20
+ * Vertical offset of the field center.
21
+ * @default 0
22
+ */
23
+ centerY?: number;
24
+ /**
25
+ * First color stop, as hex.
26
+ * @default '#FF9FFC'
27
+ */
28
+ color1?: string;
29
+ /**
30
+ * Second color stop, as hex.
31
+ * @default '#5227FF'
32
+ */
33
+ color2?: string;
34
+ /**
35
+ * Third color stop, as hex.
36
+ * @default '#B497CF'
37
+ */
38
+ color3?: string;
39
+ /**
40
+ * Shifts the blend toward color1 (negative) or color3 (positive).
41
+ * @default 0
42
+ */
43
+ colorBalance?: number;
44
+ /**
45
+ * Output contrast.
46
+ * @default 1.5
47
+ */
48
+ contrast?: number;
49
+ /**
50
+ * Output gamma.
51
+ * @default 1
52
+ */
53
+ gamma?: number;
54
+ /**
55
+ * Film grain strength. 0 turns it off.
56
+ * @default 0.1
57
+ */
58
+ grainAmount?: number;
59
+ /**
60
+ * Animate the grain with time.
61
+ * @default false
62
+ */
63
+ grainAnimated?: boolean;
64
+ /**
65
+ * Film grain scale.
66
+ * @default 2
67
+ */
68
+ grainScale?: number;
69
+ /**
70
+ * Wash the colors toward white for a light surface. `'auto'` follows the current theme.
71
+ * @default false
72
+ */
73
+ lightMode?: boolean | 'auto';
74
+ /**
75
+ * Scale of the rotation noise.
76
+ * @default 2
77
+ */
78
+ noiseScale?: number;
79
+ /**
80
+ * Noise-driven rotation, in degrees.
81
+ * @default 500
82
+ */
83
+ rotationAmount?: number;
84
+ /**
85
+ * Output saturation.
86
+ * @default 1
87
+ */
88
+ saturation?: number;
89
+ /**
90
+ * Animation speed. A still frame is drawn when reduced motion is preferred.
91
+ * @default 0.25
92
+ */
93
+ timeSpeed?: number;
94
+ /**
95
+ * Warp amplitude divisor; higher is calmer.
96
+ * @default 50
97
+ */
98
+ warpAmplitude?: number;
99
+ /**
100
+ * Frequency of the warp waves.
101
+ * @default 5
102
+ */
103
+ warpFrequency?: number;
104
+ /**
105
+ * Speed of the warp waves.
106
+ * @default 2
107
+ */
108
+ warpSpeed?: number;
109
+ /**
110
+ * How strongly the field is warped.
111
+ * @default 1
112
+ */
113
+ warpStrength?: number;
114
+ /**
115
+ * Zoom of the field.
116
+ * @default 0.9
117
+ */
118
+ zoom?: number;
119
+ }
120
+ //#endregion
121
+ export { GrainientProps };
122
+ //# sourceMappingURL=type.d.mts.map
@@ -35,6 +35,9 @@ import "./Giscus/index.mjs";
35
35
  import { GradientButtonProps } from "./GradientButton/type.mjs";
36
36
  import GradientButton from "./GradientButton/GradientButton.mjs";
37
37
  import "./GradientButton/index.mjs";
38
+ import { GrainientProps } from "./Grainient/type.mjs";
39
+ import Grainient from "./Grainient/Grainient.mjs";
40
+ import "./Grainient/index.mjs";
38
41
  import { GridBackgroundProps, GridShowcaseProps } from "./GridBackground/type.mjs";
39
42
  import GridBackground from "./GridBackground/GridBackground.mjs";
40
43
  import GridShowcase from "./GridBackground/GridShowcase.mjs";
@@ -64,4 +67,4 @@ import "./Spotlight/index.mjs";
64
67
  import { CursorStyle, SegmentMode, TypewriterEffectProps } from "./TypewriterEffect/type.mjs";
65
68
  import TypewriterEffect from "./TypewriterEffect/TypewriterEffect.mjs";
66
69
  import "./TypewriterEffect/index.mjs";
67
- export { AgentSkillCard, type AgentSkillCardAgent, type AgentSkillCardMode, type AgentSkillCardPanel, type AgentSkillCardProps, AuroraBackground, type AuroraBackgroundProps, BentoCard, type BentoCardProps, BentoGrid, type BentoGridProps, BottomGradientButton, type BottomGradientButtonProps, CodeShowcase, type CodeShowcaseItem, type CodeShowcaseProps, type CursorStyle, DEFAULT_SKILL_AGENTS, FeatureGrid, type FeatureGridItem, type FeatureGridProps, type FeatureItemType, Features, type FeaturesProps, FluidGradient, type FluidGradientProps, Giscus, type GiscusProps, GradientButton, type GradientButtonProps, GridBackground, type GridBackgroundProps, GridShowcase, type GridShowcaseProps, Hero, type HeroAction, type HeroProps, InstallBanner, type InstallBannerProps, LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, type LandingAction, LandingHero, type LandingHeroAction, type LandingHeroProps, type LandingLinkProps, type LandingLinkRender, type LandingNavigate, type LandingPalette, LandingSection, type LandingSectionProps, LogoMarquee, type LogoMarqueeItem, type LogoMarqueeProps, type SegmentMode, Spline, type SplineProps, Spotlight, SpotlightCard, type SpotlightCardProps, type SpotlightProps, TypewriterEffect, type TypewriterEffectProps, accentGradient as landingAccentGradient };
70
+ export { AgentSkillCard, type AgentSkillCardAgent, type AgentSkillCardMode, type AgentSkillCardPanel, type AgentSkillCardProps, AuroraBackground, type AuroraBackgroundProps, BentoCard, type BentoCardProps, BentoGrid, type BentoGridProps, BottomGradientButton, type BottomGradientButtonProps, CodeShowcase, type CodeShowcaseItem, type CodeShowcaseProps, type CursorStyle, DEFAULT_SKILL_AGENTS, FeatureGrid, type FeatureGridItem, type FeatureGridProps, type FeatureItemType, Features, type FeaturesProps, FluidGradient, type FluidGradientProps, Giscus, type GiscusProps, GradientButton, type GradientButtonProps, Grainient, type GrainientProps, GridBackground, type GridBackgroundProps, GridShowcase, type GridShowcaseProps, Hero, type HeroAction, type HeroProps, InstallBanner, type InstallBannerProps, LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, type LandingAction, LandingHero, type LandingHeroAction, type LandingHeroProps, type LandingLinkProps, type LandingLinkRender, type LandingNavigate, type LandingPalette, LandingSection, type LandingSectionProps, LogoMarquee, type LogoMarqueeItem, type LogoMarqueeProps, type SegmentMode, Spline, type SplineProps, Spotlight, SpotlightCard, type SpotlightCardProps, type SpotlightProps, TypewriterEffect, type TypewriterEffectProps, accentGradient as landingAccentGradient };
@@ -13,6 +13,7 @@ import { LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, acce
13
13
  import FluidGradient from "./FluidGradient/FluidGradient.mjs";
14
14
  import Giscus from "./Giscus/Giscus.mjs";
15
15
  import GradientButton from "./GradientButton/GradientButton.mjs";
16
+ import Grainient from "./Grainient/Grainient.mjs";
16
17
  import GridBackground from "./GridBackground/GridBackground.mjs";
17
18
  import GridShowcase from "./GridBackground/GridShowcase.mjs";
18
19
  import Hero from "./Hero/Hero.mjs";
@@ -22,4 +23,4 @@ import LandingSection from "./LandingSection/LandingSection.mjs";
22
23
  import LogoMarquee from "./LogoMarquee/LogoMarquee.mjs";
23
24
  import Spline from "./Spline/Spine.mjs";
24
25
  import TypewriterEffect from "./TypewriterEffect/TypewriterEffect.mjs";
25
- export { AgentSkillCard, AuroraBackground, BentoCard, BentoGrid, BottomGradientButton, CodeShowcase, DEFAULT_SKILL_AGENTS, FeatureGrid, Features, FluidGradient, Giscus, GradientButton, GridBackground, GridShowcase, Hero, InstallBanner, LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, LandingHero, LandingSection, LogoMarquee, Spline, Spotlight, SpotlightCard, TypewriterEffect, accentGradient as landingAccentGradient };
26
+ export { AgentSkillCard, AuroraBackground, BentoCard, BentoGrid, BottomGradientButton, CodeShowcase, DEFAULT_SKILL_AGENTS, FeatureGrid, Features, FluidGradient, Giscus, GradientButton, Grainient, GridBackground, GridShowcase, Hero, InstallBanner, LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, LandingHero, LandingSection, LogoMarquee, Spline, Spotlight, SpotlightCard, TypewriterEffect, accentGradient as landingAccentGradient };
@@ -6,11 +6,17 @@ const styles = createStaticStyles(({ css, cssVar }) => {
6
6
  return {
7
7
  active: staticStylish.active,
8
8
  dangerRoot: css`
9
- &&:hover {
9
+ /* Mirrors the neutral ladder (colorTextTertiary -> colorTextSecondary -> colorText):
10
+ a softened red at rest, full colorError on hover, colorErrorActive when pressed. */
11
+ &&& {
12
+ color: color-mix(in srgb, ${cssVar.colorError} 66%, transparent);
13
+ }
14
+
15
+ &&&:hover:not(:disabled, [aria-disabled='true']) {
10
16
  color: ${cssVar.colorError};
11
17
  }
12
18
 
13
- &&:active {
19
+ &&&:active:not(:disabled, [aria-disabled='true']) {
14
20
  color: ${cssVar.colorErrorActive};
15
21
  }
16
22
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["lobeStaticStylish"],"sources":["../../../src/base-ui/ActionIcon/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: lobeStaticStylish.active,\n // && outranks base-ui Button's variant classes regardless of style insertion order\n dangerRoot: css`\n &&:hover {\n color: ${cssVar.colorError};\n }\n\n &&:active {\n color: ${cssVar.colorErrorActive};\n }\n `,\n glass: lobeStaticStylish.blur,\n root: css`\n && {\n color: ${cssVar.colorTextTertiary};\n }\n\n &&:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &&:active {\n color: ${cssVar.colorText};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n active: false,\n danger: false,\n glass: false,\n shadow: false,\n },\n\n variants: {\n active: {\n false: null,\n true: styles.active,\n },\n danger: {\n false: null,\n true: styles.dangerRoot,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,QAAQA,cAAkB;EAE1B,YAAY,GAAG;;iBAEF,OAAO,WAAW;;;;iBAIlB,OAAO,iBAAiB;;;EAGrC,OAAOA,cAAkB;EACzB,MAAM,GAAG;;iBAEI,OAAO,kBAAkB;;;;iBAIzB,OAAO,mBAAmB;;;;iBAI1B,OAAO,UAAU;;;EAG9B,QAAQA,cAAkB;CAC5B;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,QAAQ;CACV;CAEA,UAAU;EACR,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,OAAO;GACL,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["lobeStaticStylish"],"sources":["../../../src/base-ui/ActionIcon/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n active: lobeStaticStylish.active,\n // &&& outranks both base-ui Button's variant classes and this file's own `root` color\n // (same `&&` weight, inserted later), so the icon itself turns red, not just the fill.\n dangerRoot: css`\n /* Mirrors the neutral ladder (colorTextTertiary -> colorTextSecondary -> colorText):\n a softened red at rest, full colorError on hover, colorErrorActive when pressed. */\n &&& {\n color: color-mix(in srgb, ${cssVar.colorError} 66%, transparent);\n }\n\n &&&:hover:not(:disabled, [aria-disabled='true']) {\n color: ${cssVar.colorError};\n }\n\n &&&:active:not(:disabled, [aria-disabled='true']) {\n color: ${cssVar.colorErrorActive};\n }\n `,\n glass: lobeStaticStylish.blur,\n root: css`\n && {\n color: ${cssVar.colorTextTertiary};\n }\n\n &&:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &&:active {\n color: ${cssVar.colorText};\n }\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n active: false,\n danger: false,\n glass: false,\n shadow: false,\n },\n\n variants: {\n active: {\n false: null,\n true: styles.active,\n },\n danger: {\n false: null,\n true: styles.dangerRoot,\n },\n glass: {\n false: null,\n true: styles.glass,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,QAAQA,cAAkB;EAG1B,YAAY,GAAG;;;;oCAIiB,OAAO,WAAW;;;;iBAIrC,OAAO,WAAW;;;;iBAIlB,OAAO,iBAAiB;;;EAGrC,OAAOA,cAAkB;EACzB,MAAM,GAAG;;iBAEI,OAAO,kBAAkB;;;;iBAIzB,OAAO,mBAAmB;;;;iBAI1B,OAAO,UAAU;;;EAG9B,QAAQA,cAAkB;CAC5B;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,QAAQ;CACV;CAEA,UAAU;EACR,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;EACA,OAAO;GACL,OAAO;GACP,MAAM,OAAO;EACf;EACA,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;EACf;CACF;AACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AuthLayoutAsideProps } from "./type.mjs";
2
+ //#region src/dashboard/AuthLayout/Aside.d.ts
3
+ /** Inset art panel for `AuthLayout`'s `aside` slot, with a scrim and copy at the bottom. */
4
+ declare function AuthLayoutAside({ background, className, kicker, line, ...rest }: AuthLayoutAsideProps): import("react").JSX.Element;
5
+ declare namespace AuthLayoutAside {
6
+ var displayName: string;
7
+ }
8
+ //#endregion
9
+ export { AuthLayoutAside as default };
10
+ //# sourceMappingURL=Aside.d.mts.map