@vielzeug/refine 1.3.0 → 1.3.1
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/button.cjs +1 -1
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +3 -3
- package/dist/button.js.map +1 -1
- package/dist/content/card/card.css.cjs +1 -1
- package/dist/content/card/card.css.cjs.map +1 -1
- package/dist/content/card/card.css.js +1 -1
- package/dist/content/card/card.css.js.map +1 -1
- package/dist/content/icon/icon.css.cjs +1 -1
- package/dist/content/icon/icon.css.cjs.map +1 -1
- package/dist/content/icon/icon.css.js +1 -1
- package/dist/content/icon/icon.css.js.map +1 -1
- package/dist/custom-elements.json +2079 -2079
- package/dist/feedback/toast/toast.css.cjs +1 -1
- package/dist/feedback/toast/toast.css.cjs.map +1 -1
- package/dist/feedback/toast/toast.css.js +1 -1
- package/dist/feedback/toast/toast.css.js.map +1 -1
- package/dist/inputs/button/button.css.cjs +1 -1
- package/dist/inputs/button/button.css.cjs.map +1 -1
- package/dist/inputs/button/button.css.js +1 -1
- package/dist/inputs/button/button.css.js.map +1 -1
- package/dist/inputs/checkbox/checkbox.css.cjs +1 -1
- package/dist/inputs/checkbox/checkbox.css.cjs.map +1 -1
- package/dist/inputs/checkbox/checkbox.css.js +1 -1
- package/dist/inputs/checkbox/checkbox.css.js.map +1 -1
- package/dist/inputs/checkbox-group/checkbox-group.css.cjs +1 -1
- package/dist/inputs/checkbox-group/checkbox-group.css.cjs.map +1 -1
- package/dist/inputs/checkbox-group/checkbox-group.css.js +1 -1
- package/dist/inputs/checkbox-group/checkbox-group.css.js.map +1 -1
- package/dist/inputs/file-input/file-input.css.cjs +1 -1
- package/dist/inputs/file-input/file-input.css.cjs.map +1 -1
- package/dist/inputs/file-input/file-input.css.js +1 -1
- package/dist/inputs/file-input/file-input.css.js.map +1 -1
- package/dist/inputs/input/input.css.cjs +1 -1
- package/dist/inputs/input/input.css.cjs.map +1 -1
- package/dist/inputs/input/input.css.js +1 -1
- package/dist/inputs/input/input.css.js.map +1 -1
- package/dist/inputs/otp-input/otp-input.css.cjs +1 -1
- package/dist/inputs/otp-input/otp-input.css.cjs.map +1 -1
- package/dist/inputs/otp-input/otp-input.css.js +1 -1
- package/dist/inputs/otp-input/otp-input.css.js.map +1 -1
- package/dist/inputs/radio/radio.css.cjs +1 -1
- package/dist/inputs/radio/radio.css.cjs.map +1 -1
- package/dist/inputs/radio/radio.css.js +1 -1
- package/dist/inputs/radio/radio.css.js.map +1 -1
- package/dist/inputs/radio-group/radio-group.css.cjs +1 -1
- package/dist/inputs/radio-group/radio-group.css.cjs.map +1 -1
- package/dist/inputs/radio-group/radio-group.css.js +1 -1
- package/dist/inputs/radio-group/radio-group.css.js.map +1 -1
- package/dist/inputs/rating/rating.css.cjs +1 -1
- package/dist/inputs/rating/rating.css.cjs.map +1 -1
- package/dist/inputs/rating/rating.css.js +1 -1
- package/dist/inputs/rating/rating.css.js.map +1 -1
- package/dist/inputs/slider/slider.css.cjs +1 -1
- package/dist/inputs/slider/slider.css.cjs.map +1 -1
- package/dist/inputs/slider/slider.css.js +1 -1
- package/dist/inputs/slider/slider.css.js.map +1 -1
- package/dist/inputs/switch/switch.css.cjs +1 -1
- package/dist/inputs/switch/switch.css.cjs.map +1 -1
- package/dist/inputs/switch/switch.css.js +1 -1
- package/dist/inputs/switch/switch.css.js.map +1 -1
- package/dist/inputs/textarea/textarea.css.cjs +1 -1
- package/dist/inputs/textarea/textarea.css.cjs.map +1 -1
- package/dist/inputs/textarea/textarea.css.js +1 -1
- package/dist/inputs/textarea/textarea.css.js.map +1 -1
- package/dist/layout/navbar/navbar.css.cjs +1 -1
- package/dist/layout/navbar/navbar.css.cjs.map +1 -1
- package/dist/layout/navbar/navbar.css.js +1 -1
- package/dist/layout/navbar/navbar.css.js.map +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
- package/dist/layout/sidebar/sidebar.css.js +1 -1
- package/dist/layout/sidebar/sidebar.css.js.map +1 -1
- package/dist/overlay/menu/menu.css.cjs +1 -1
- package/dist/overlay/menu/menu.css.cjs.map +1 -1
- package/dist/overlay/menu/menu.css.js +1 -1
- package/dist/overlay/menu/menu.css.js.map +1 -1
- package/dist/refine.cjs +19 -22
- package/dist/refine.cjs.map +1 -1
- package/dist/refine.iife.js +19 -22
- package/dist/refine.iife.js.map +1 -1
- package/dist/refine.js +19 -22
- package/dist/refine.js.map +1 -1
- package/dist/styles/mixins/animation.css.cjs +0 -3
- package/dist/styles/mixins/animation.css.cjs.map +1 -1
- package/dist/styles/mixins/animation.css.d.ts +12 -4
- package/dist/styles/mixins/animation.css.d.ts.map +1 -1
- package/dist/styles/mixins/animation.css.js +0 -3
- package/dist/styles/mixins/animation.css.js.map +1 -1
- package/dist/styles/mixins/variants.css.cjs.map +1 -1
- package/dist/styles/mixins/variants.css.d.ts +7 -2
- package/dist/styles/mixins/variants.css.d.ts.map +1 -1
- package/dist/styles/mixins/variants.css.js.map +1 -1
- package/dist/styles/theme.css +341 -132
- package/package.json +11 -7
|
@@ -107,9 +107,6 @@ let e=require("@vielzeug/ore");var t=!1;function n(){if(!t){if(typeof CSS<`u`&&C
|
|
|
107
107
|
conic-gradient(red 0 0) no-clip subtract,
|
|
108
108
|
conic-gradient(red 0 0) padding-box;
|
|
109
109
|
|
|
110
|
-
/* Use the theme's own focus-shadow — color-aware, well-tuned, no artifacts */
|
|
111
|
-
box-shadow: var(--_theme-shadow);
|
|
112
|
-
|
|
113
110
|
pointer-events: none;
|
|
114
111
|
animation: shine-rotate 2.5s linear infinite;
|
|
115
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.css.cjs","names":[],"sources":["../../../src/styles/mixins/animation.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Register the --rainbow-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by rainbowEffectMixin on first use.\n */\nlet rainbowRegistered = false;\n\nexport function registerRainbowProperty() {\n if (rainbowRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--rainbow-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n rainbowRegistered = true;\n}\n\n/**\n * Register the --shine-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by shineEffectMixin on first use.\n */\nlet shineRegistered = false;\n\nexport function registerShineProperty() {\n if (shineRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--shine-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n shineRegistered = true;\n}\n\n/**\n * Rainbow Border Effect Mixin\n *\n * Animated rainbow border with glow effect.\n * Perfect for highlighting call-to-action elements or special features.\n *\n * @param selector - CSS selector for the element
|
|
1
|
+
{"version":3,"file":"animation.css.cjs","names":[],"sources":["../../../src/styles/mixins/animation.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Register the --rainbow-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by rainbowEffectMixin on first use.\n */\nlet rainbowRegistered = false;\n\nexport function registerRainbowProperty() {\n if (rainbowRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--rainbow-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n rainbowRegistered = true;\n}\n\n/**\n * Register the --shine-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by shineEffectMixin on first use.\n */\nlet shineRegistered = false;\n\nexport function registerShineProperty() {\n if (shineRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--shine-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n shineRegistered = true;\n}\n\n/**\n * Rainbow Border Effect Mixin\n *\n * Animated rainbow border with glow effect.\n * Perfect for highlighting call-to-action elements or special features.\n *\n * @param selector - CSS selector for the element carrying the border, matched\n * against the component's actual shadow DOM markup — a bare word like\n * 'button' is a TYPE selector (matches a literal `<button>` tag), not a\n * part/class selector. Use the selector that actually matches your root\n * element, e.g. `'.box'` for a `<div class=\"box\">`, or `'[part=\"button\"]'`\n * for a `<span part=\"button\">`/`<a part=\"button\">` (ore-button's actual\n * markup — it never renders a `<button>` tag).\n * @returns CSSResult with rainbow border animation\n *\n * @example\n * ```ts\n * import { rainbowEffectMixin } from '../../styles/effects/rainbow.css';\n *\n * return {\n * styles: [rainbowEffectMixin('[part=\"button\"]'), componentStyles],\n * template: html`...`\n * };\n * ```\n */\nexport const rainbowEffectMixin = (selector: string) => {\n registerRainbowProperty();\n\n return css`\n /* ========================================\n Rainbow Border Effect\n ======================================== */\n\n :host([effect='rainbow']) ${selector} {\n position: relative;\n border: var(--border-2) solid transparent !important;\n overflow: visible;\n }\n\n /* Rainbow border and glow layers */\n :host([effect='rainbow']) ${selector}::before, :host([effect='rainbow']) ${selector}::after {\n content: '';\n position: absolute;\n inset: calc(-1 * var(--border-2));\n border: inherit;\n border-radius: inherit;\n\n /* Reserve no-clip space for glow */\n box-shadow: 0 0 calc(3 * var(--blur-xl)) rgba(0 0 0 / 0.001);\n\n /* Rainbow gradient — Okabe-Ito colorblind-safe palette */\n background: conic-gradient(\n from var(--rainbow-angle),\n #56b4e9,\n /* Sky Blue */ #0072b2,\n /* Deep Blue */ #009e73,\n /* Bluish Green */ #f0e442,\n /* Yellow */ #e69f00,\n /* Orange */ #d55e00,\n /* Vermillion */ #cc79a7,\n /* Reddish Purple */ #56b4e9 /* Back to Sky Blue */\n )\n border-box;\n\n /* Make everything inside padding-box transparent\n by subtracting padding-box from no-clip box */\n -webkit-mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n\n pointer-events: none;\n animation: rainbow-rotate 4s linear infinite;\n }\n\n /* Turn one pseudo layer into glow halo */\n :host([effect='rainbow']) ${selector}::after {\n filter: blur(var(--blur-xl));\n }\n\n /* ========================================\n Animation\n ======================================== */\n\n @keyframes rainbow-rotate {\n to {\n --rainbow-angle: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host([effect='rainbow']) ${selector}::before, :host([effect='rainbow']) ${selector}::after {\n animation: none;\n }\n }\n `;\n};\n\n/**\n * Shine Border Effect Mixin\n *\n * Animated color-aware border shine. A tight arc of the component's own\n * theme color rotates around the border, producing the glossy \"shimmer\"\n * look seen in modern card and button designs.\n *\n * Respects the `color` attribute via `--_theme-*` tokens — no extra\n * configuration needed. Falls back to the neutral theme when no color\n * is set.\n *\n * @param selector - CSS selector for the inner element, matched against the\n * component's actual shadow DOM markup — see rainbowEffectMixin's\n * `selector` doc above for why a bare word like 'button' is usually wrong.\n * @returns CSSResult with shine border animation\n *\n * @example\n * ```ts\n * styles: [shineEffectMixin('[part=\"button\"]'), componentStyles]\n * ```\n */\nexport const shineEffectMixin = (selector: string) => {\n registerShineProperty();\n\n return css`\n /* ========================================\n Shine Border Effect\n ======================================== */\n\n :host([effect='shine']) ${selector} {\n position: relative;\n overflow: visible;\n --_shine-color: light-dark(\n oklch(from var(--_theme-focus) 0.6 calc(c * 1.2) h),\n oklch(from var(--_theme-focus) 0.85 calc(c * 1.2) h)\n );\n }\n\n /* Shine border — single pseudo, glow via box-shadow (follows border-radius, no artifacts) */\n :host([effect='shine']) ${selector}::before {\n content: '';\n position: absolute;\n inset: calc(-1 * var(--border-2));\n border: var(--border-2) solid transparent;\n border-radius: calc(var(--_radius, 0px) + var(--border-2));\n\n /* Two comet tails 180deg apart, same shape rotating together */\n background:\n conic-gradient(from var(--shine-angle), transparent 0%, transparent 75%, var(--_shine-color) 100%) border-box,\n conic-gradient(\n from calc(var(--shine-angle) + 180deg),\n transparent 0%,\n transparent 75%,\n var(--_shine-color) 100%\n )\n border-box;\n\n -webkit-mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n\n pointer-events: none;\n animation: shine-rotate 2.5s linear infinite;\n }\n\n /* ========================================\n Animation\n ======================================== */\n\n @keyframes shine-rotate {\n to {\n --shine-angle: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host([effect='shine']) ${selector}::before {\n animation: none;\n }\n }\n `;\n};\n"],"mappings":"+BAOA,IAAI,EAAoB,GAExB,SAAgB,GAA0B,CACpC,MAEJ,IAAI,OAAO,IAAQ,KAAe,IAAI,iBACpC,GAAI,CACF,IAAI,iBAAiB,CACnB,SAAU,GACV,aAAc,OACd,KAAM,kBACN,OAAQ,SACV,CAAC,CACH,MAAQ,CAER,CAGF,EAAoB,EAHlB,CAIJ,CAOA,IAAI,EAAkB,GAEtB,SAAgB,GAAwB,CAClC,MAEJ,IAAI,OAAO,IAAQ,KAAe,IAAI,iBACpC,GAAI,CACF,IAAI,iBAAiB,CACnB,SAAU,GACV,aAAc,OACd,KAAM,gBACN,OAAQ,SACV,CAAC,CACH,MAAQ,CAER,CAGF,EAAkB,EAHhB,CAIJ,CA2BA,IAAa,EAAsB,IACjC,EAAwB,EAEjB,EAAA,GAAG;;;;;gCAKoB,EAAS;;;;;;;gCAOT,EAAS,sCAAsC,EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsCxD,EAAS;;;;;;;;;;;;;;;kCAeP,EAAS,sCAAsC,EAAS;;;;KA4B7E,EAAoB,IAC/B,EAAsB,EAEf,EAAA,GAAG;;;;;8BAKkB,EAAS;;;;;;;;;;8BAUT,EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwCP,EAAS"}
|
|
@@ -6,7 +6,13 @@ export declare function registerShineProperty(): void;
|
|
|
6
6
|
* Animated rainbow border with glow effect.
|
|
7
7
|
* Perfect for highlighting call-to-action elements or special features.
|
|
8
8
|
*
|
|
9
|
-
* @param selector - CSS selector for the element
|
|
9
|
+
* @param selector - CSS selector for the element carrying the border, matched
|
|
10
|
+
* against the component's actual shadow DOM markup — a bare word like
|
|
11
|
+
* 'button' is a TYPE selector (matches a literal `<button>` tag), not a
|
|
12
|
+
* part/class selector. Use the selector that actually matches your root
|
|
13
|
+
* element, e.g. `'.box'` for a `<div class="box">`, or `'[part="button"]'`
|
|
14
|
+
* for a `<span part="button">`/`<a part="button">` (ore-button's actual
|
|
15
|
+
* markup — it never renders a `<button>` tag).
|
|
10
16
|
* @returns CSSResult with rainbow border animation
|
|
11
17
|
*
|
|
12
18
|
* @example
|
|
@@ -14,7 +20,7 @@ export declare function registerShineProperty(): void;
|
|
|
14
20
|
* import { rainbowEffectMixin } from '../../styles/effects/rainbow.css';
|
|
15
21
|
*
|
|
16
22
|
* return {
|
|
17
|
-
* styles: [rainbowEffectMixin('button'), componentStyles],
|
|
23
|
+
* styles: [rainbowEffectMixin('[part="button"]'), componentStyles],
|
|
18
24
|
* template: html`...`
|
|
19
25
|
* };
|
|
20
26
|
* ```
|
|
@@ -31,12 +37,14 @@ export declare const rainbowEffectMixin: (selector: string) => import("@vielzeug
|
|
|
31
37
|
* configuration needed. Falls back to the neutral theme when no color
|
|
32
38
|
* is set.
|
|
33
39
|
*
|
|
34
|
-
* @param selector - CSS selector for the inner element
|
|
40
|
+
* @param selector - CSS selector for the inner element, matched against the
|
|
41
|
+
* component's actual shadow DOM markup — see rainbowEffectMixin's
|
|
42
|
+
* `selector` doc above for why a bare word like 'button' is usually wrong.
|
|
35
43
|
* @returns CSSResult with shine border animation
|
|
36
44
|
*
|
|
37
45
|
* @example
|
|
38
46
|
* ```ts
|
|
39
|
-
* styles: [shineEffectMixin('button'), componentStyles]
|
|
47
|
+
* styles: [shineEffectMixin('[part="button"]'), componentStyles]
|
|
40
48
|
* ```
|
|
41
49
|
*/
|
|
42
50
|
export declare const shineEffectMixin: (selector: string) => import("@vielzeug/ore").CSSResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.css.d.ts","sourceRoot":"","sources":["../../../src/styles/mixins/animation.css.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,SAiBtC;AASD,wBAAgB,qBAAqB,SAiBpC;AAED
|
|
1
|
+
{"version":3,"file":"animation.css.d.ts","sourceRoot":"","sources":["../../../src/styles/mixins/animation.css.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,SAiBtC;AASD,wBAAgB,qBAAqB,SAiBpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,sCAyElD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,sCA+DhD,CAAC"}
|
|
@@ -137,9 +137,6 @@ var a = (t) => (n(), e`
|
|
|
137
137
|
conic-gradient(red 0 0) no-clip subtract,
|
|
138
138
|
conic-gradient(red 0 0) padding-box;
|
|
139
139
|
|
|
140
|
-
/* Use the theme's own focus-shadow — color-aware, well-tuned, no artifacts */
|
|
141
|
-
box-shadow: var(--_theme-shadow);
|
|
142
|
-
|
|
143
140
|
pointer-events: none;
|
|
144
141
|
animation: shine-rotate 2.5s linear infinite;
|
|
145
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.css.js","names":[],"sources":["../../../src/styles/mixins/animation.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Register the --rainbow-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by rainbowEffectMixin on first use.\n */\nlet rainbowRegistered = false;\n\nexport function registerRainbowProperty() {\n if (rainbowRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--rainbow-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n rainbowRegistered = true;\n}\n\n/**\n * Register the --shine-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by shineEffectMixin on first use.\n */\nlet shineRegistered = false;\n\nexport function registerShineProperty() {\n if (shineRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--shine-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n shineRegistered = true;\n}\n\n/**\n * Rainbow Border Effect Mixin\n *\n * Animated rainbow border with glow effect.\n * Perfect for highlighting call-to-action elements or special features.\n *\n * @param selector - CSS selector for the element
|
|
1
|
+
{"version":3,"file":"animation.css.js","names":[],"sources":["../../../src/styles/mixins/animation.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Register the --rainbow-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by rainbowEffectMixin on first use.\n */\nlet rainbowRegistered = false;\n\nexport function registerRainbowProperty() {\n if (rainbowRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--rainbow-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n rainbowRegistered = true;\n}\n\n/**\n * Register the --shine-angle CSS custom property so browsers can\n * interpolate it inside conic-gradient().\n * Called automatically by shineEffectMixin on first use.\n */\nlet shineRegistered = false;\n\nexport function registerShineProperty() {\n if (shineRegistered) return;\n\n if (typeof CSS !== 'undefined' && CSS.registerProperty) {\n try {\n CSS.registerProperty({\n inherits: false,\n initialValue: '0deg',\n name: '--shine-angle',\n syntax: '<angle>',\n });\n } catch {\n // Already registered — safe to ignore\n }\n }\n\n shineRegistered = true;\n}\n\n/**\n * Rainbow Border Effect Mixin\n *\n * Animated rainbow border with glow effect.\n * Perfect for highlighting call-to-action elements or special features.\n *\n * @param selector - CSS selector for the element carrying the border, matched\n * against the component's actual shadow DOM markup — a bare word like\n * 'button' is a TYPE selector (matches a literal `<button>` tag), not a\n * part/class selector. Use the selector that actually matches your root\n * element, e.g. `'.box'` for a `<div class=\"box\">`, or `'[part=\"button\"]'`\n * for a `<span part=\"button\">`/`<a part=\"button\">` (ore-button's actual\n * markup — it never renders a `<button>` tag).\n * @returns CSSResult with rainbow border animation\n *\n * @example\n * ```ts\n * import { rainbowEffectMixin } from '../../styles/effects/rainbow.css';\n *\n * return {\n * styles: [rainbowEffectMixin('[part=\"button\"]'), componentStyles],\n * template: html`...`\n * };\n * ```\n */\nexport const rainbowEffectMixin = (selector: string) => {\n registerRainbowProperty();\n\n return css`\n /* ========================================\n Rainbow Border Effect\n ======================================== */\n\n :host([effect='rainbow']) ${selector} {\n position: relative;\n border: var(--border-2) solid transparent !important;\n overflow: visible;\n }\n\n /* Rainbow border and glow layers */\n :host([effect='rainbow']) ${selector}::before, :host([effect='rainbow']) ${selector}::after {\n content: '';\n position: absolute;\n inset: calc(-1 * var(--border-2));\n border: inherit;\n border-radius: inherit;\n\n /* Reserve no-clip space for glow */\n box-shadow: 0 0 calc(3 * var(--blur-xl)) rgba(0 0 0 / 0.001);\n\n /* Rainbow gradient — Okabe-Ito colorblind-safe palette */\n background: conic-gradient(\n from var(--rainbow-angle),\n #56b4e9,\n /* Sky Blue */ #0072b2,\n /* Deep Blue */ #009e73,\n /* Bluish Green */ #f0e442,\n /* Yellow */ #e69f00,\n /* Orange */ #d55e00,\n /* Vermillion */ #cc79a7,\n /* Reddish Purple */ #56b4e9 /* Back to Sky Blue */\n )\n border-box;\n\n /* Make everything inside padding-box transparent\n by subtracting padding-box from no-clip box */\n -webkit-mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n\n pointer-events: none;\n animation: rainbow-rotate 4s linear infinite;\n }\n\n /* Turn one pseudo layer into glow halo */\n :host([effect='rainbow']) ${selector}::after {\n filter: blur(var(--blur-xl));\n }\n\n /* ========================================\n Animation\n ======================================== */\n\n @keyframes rainbow-rotate {\n to {\n --rainbow-angle: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host([effect='rainbow']) ${selector}::before, :host([effect='rainbow']) ${selector}::after {\n animation: none;\n }\n }\n `;\n};\n\n/**\n * Shine Border Effect Mixin\n *\n * Animated color-aware border shine. A tight arc of the component's own\n * theme color rotates around the border, producing the glossy \"shimmer\"\n * look seen in modern card and button designs.\n *\n * Respects the `color` attribute via `--_theme-*` tokens — no extra\n * configuration needed. Falls back to the neutral theme when no color\n * is set.\n *\n * @param selector - CSS selector for the inner element, matched against the\n * component's actual shadow DOM markup — see rainbowEffectMixin's\n * `selector` doc above for why a bare word like 'button' is usually wrong.\n * @returns CSSResult with shine border animation\n *\n * @example\n * ```ts\n * styles: [shineEffectMixin('[part=\"button\"]'), componentStyles]\n * ```\n */\nexport const shineEffectMixin = (selector: string) => {\n registerShineProperty();\n\n return css`\n /* ========================================\n Shine Border Effect\n ======================================== */\n\n :host([effect='shine']) ${selector} {\n position: relative;\n overflow: visible;\n --_shine-color: light-dark(\n oklch(from var(--_theme-focus) 0.6 calc(c * 1.2) h),\n oklch(from var(--_theme-focus) 0.85 calc(c * 1.2) h)\n );\n }\n\n /* Shine border — single pseudo, glow via box-shadow (follows border-radius, no artifacts) */\n :host([effect='shine']) ${selector}::before {\n content: '';\n position: absolute;\n inset: calc(-1 * var(--border-2));\n border: var(--border-2) solid transparent;\n border-radius: calc(var(--_radius, 0px) + var(--border-2));\n\n /* Two comet tails 180deg apart, same shape rotating together */\n background:\n conic-gradient(from var(--shine-angle), transparent 0%, transparent 75%, var(--_shine-color) 100%) border-box,\n conic-gradient(\n from calc(var(--shine-angle) + 180deg),\n transparent 0%,\n transparent 75%,\n var(--_shine-color) 100%\n )\n border-box;\n\n -webkit-mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n mask:\n conic-gradient(red 0 0) no-clip subtract,\n conic-gradient(red 0 0) padding-box;\n\n pointer-events: none;\n animation: shine-rotate 2.5s linear infinite;\n }\n\n /* ========================================\n Animation\n ======================================== */\n\n @keyframes shine-rotate {\n to {\n --shine-angle: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host([effect='shine']) ${selector}::before {\n animation: none;\n }\n }\n `;\n};\n"],"mappings":";;AAOA,IAAI,IAAoB;AAExB,SAAgB,IAA0B;CACpC,QAEJ;MAAI,OAAO,MAAQ,OAAe,IAAI,kBACpC,IAAI;GACF,IAAI,iBAAiB;IACnB,UAAU;IACV,cAAc;IACd,MAAM;IACN,QAAQ;GACV,CAAC;EACH,QAAQ,CAER;EAGF,IAAoB;CAHlB;AAIJ;AAOA,IAAI,IAAkB;AAEtB,SAAgB,IAAwB;CAClC,QAEJ;MAAI,OAAO,MAAQ,OAAe,IAAI,kBACpC,IAAI;GACF,IAAI,iBAAiB;IACnB,UAAU;IACV,cAAc;IACd,MAAM;IACN,QAAQ;GACV,CAAC;EACH,QAAQ,CAER;EAGF,IAAkB;CAHhB;AAIJ;AA2BA,IAAa,KAAsB,OACjC,EAAwB,GAEjB,CAAG;;;;;gCAKoB,EAAS;;;;;;;gCAOT,EAAS,sCAAsC,EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsCxD,EAAS;;;;;;;;;;;;;;;kCAeP,EAAS,sCAAsC,EAAS;;;;MA4B7E,KAAoB,OAC/B,EAAsB,GAEf,CAAG;;;;;8BAKkB,EAAS;;;;;;;;;;8BAUT,EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwCP,EAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variants.css.cjs","names":[],"sources":["../../../src/styles/mixins/variants.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Frost Variant Mixin\n *\n * Shared frost variant styles for components.\n * Provides consistent frosted glass effect with backdrop blur,\n * theme-aware colors, halo shadows, and elevation support.\n *\n * @param selector - CSS selector for the element (e.g., '
|
|
1
|
+
{"version":3,"file":"variants.css.cjs","names":[],"sources":["../../../src/styles/mixins/variants.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Frost Variant Mixin\n *\n * Shared frost variant styles for components.\n * Provides consistent frosted glass effect with backdrop blur,\n * theme-aware colors, halo shadows, and elevation support.\n *\n * @param selector - CSS selector for the element, matched against the\n * component's actual shadow DOM markup (e.g., '.card', '.field') — a bare\n * word like 'button' is a TYPE selector for a literal `<button>` tag, not\n * a part/class selector. Use `'[part=\"button\"]'` for components whose root\n * is a `<span part=\"button\">`/`<a part=\"button\">` (e.g. ore-button, which\n * never renders a `<button>` tag).\n * @returns CSSResult with complete frost variant implementation\n *\n * @example\n * ```ts\n * import { frostVariantMixin } from '../../styles/mixins/frost.css';\n *\n * return {\n * styles: [frostVariantMixin('[part=\"button\"]'), componentStyles],\n * template: html`...`\n * };\n * ```\n */\nexport const frostVariantMixin = (selector: string) => css`\n :host([variant='frost']) ${selector} {\n backdrop-filter: blur(var(--blur-xl)) saturate(200%) brightness(1.1);\n -webkit-backdrop-filter: blur(var(--blur-xl)) saturate(200%) brightness(1.1);\n }\n\n :host([variant='frost']:not([color])) ${selector} {\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n color: var(--color-contrast);\n text-shadow: var(--text-shadow-xs);\n border: var(--border) solid color-mix(in oklch, var(--color-contrast-400) 45%, transparent);\n }\n\n /* Frost neutral without elevation: use halo shadow */\n :host([variant='frost']:not([color]):not([elevation])) ${selector} {\n box-shadow: var(--halo-shadow-neutral);\n }\n\n /* Frost neutral with elevation: combine halo with elevation shadow */\n :host([variant='frost']:not([color])[elevation]) ${selector} {\n box-shadow: var(--halo-shadow-neutral), var(--_shadow);\n }\n\n :host([variant='frost'][color]) ${selector} {\n background: color-mix(in oklch, var(--_theme-base), transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n color: var(--_theme-content);\n border: var(--border) solid color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n -webkit-backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n text-shadow: var(--text-shadow-xs);\n filter: brightness(1.05);\n }\n\n /* Frost color without elevation: use halo shadow */\n :host([variant='frost'][color]:not([elevation])) ${selector} {\n box-shadow: var(--_theme-halo);\n }\n\n /* Frost color with elevation: combine halo with elevation shadow */\n :host([variant='frost'][color][elevation]) ${selector} {\n box-shadow: var(--_theme-halo), var(--_shadow);\n }\n\n :host([variant='frost']:not([color])) ${selector}:hover {\n backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n -webkit-backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n }\n\n :host([variant='frost'][color]) ${selector}:hover {\n backdrop-filter: blur(var(--blur-3xl)) saturate(240%) brightness(1.2);\n -webkit-backdrop-filter: blur(var(--blur-3xl)) saturate(240%) brightness(1.2);\n }\n`;\n"],"mappings":"+BA2BA,IAAa,EAAqB,GAAqB,EAAA,GAAG;6BAC7B,EAAS;;;;;0CAKI,EAAS;;;;;;;;2DAQQ,EAAS;;;;;qDAKf,EAAS;;;;oCAI1B,EAAS;;;;;;;;;;;;qDAYQ,EAAS;;;;;+CAKf,EAAS;;;;0CAId,EAAS;;;;;oCAKf,EAAS"}
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
* Provides consistent frosted glass effect with backdrop blur,
|
|
6
6
|
* theme-aware colors, halo shadows, and elevation support.
|
|
7
7
|
*
|
|
8
|
-
* @param selector - CSS selector for the element
|
|
8
|
+
* @param selector - CSS selector for the element, matched against the
|
|
9
|
+
* component's actual shadow DOM markup (e.g., '.card', '.field') — a bare
|
|
10
|
+
* word like 'button' is a TYPE selector for a literal `<button>` tag, not
|
|
11
|
+
* a part/class selector. Use `'[part="button"]'` for components whose root
|
|
12
|
+
* is a `<span part="button">`/`<a part="button">` (e.g. ore-button, which
|
|
13
|
+
* never renders a `<button>` tag).
|
|
9
14
|
* @returns CSSResult with complete frost variant implementation
|
|
10
15
|
*
|
|
11
16
|
* @example
|
|
@@ -13,7 +18,7 @@
|
|
|
13
18
|
* import { frostVariantMixin } from '../../styles/mixins/frost.css';
|
|
14
19
|
*
|
|
15
20
|
* return {
|
|
16
|
-
* styles: [frostVariantMixin('button'), componentStyles],
|
|
21
|
+
* styles: [frostVariantMixin('[part="button"]'), componentStyles],
|
|
17
22
|
* template: html`...`
|
|
18
23
|
* };
|
|
19
24
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variants.css.d.ts","sourceRoot":"","sources":["../../../src/styles/mixins/variants.css.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"variants.css.d.ts","sourceRoot":"","sources":["../../../src/styles/mixins/variants.css.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,sCAqDjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variants.css.js","names":[],"sources":["../../../src/styles/mixins/variants.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Frost Variant Mixin\n *\n * Shared frost variant styles for components.\n * Provides consistent frosted glass effect with backdrop blur,\n * theme-aware colors, halo shadows, and elevation support.\n *\n * @param selector - CSS selector for the element (e.g., '
|
|
1
|
+
{"version":3,"file":"variants.css.js","names":[],"sources":["../../../src/styles/mixins/variants.css.ts"],"sourcesContent":["import { css } from '@vielzeug/ore';\n\n/**\n * Frost Variant Mixin\n *\n * Shared frost variant styles for components.\n * Provides consistent frosted glass effect with backdrop blur,\n * theme-aware colors, halo shadows, and elevation support.\n *\n * @param selector - CSS selector for the element, matched against the\n * component's actual shadow DOM markup (e.g., '.card', '.field') — a bare\n * word like 'button' is a TYPE selector for a literal `<button>` tag, not\n * a part/class selector. Use `'[part=\"button\"]'` for components whose root\n * is a `<span part=\"button\">`/`<a part=\"button\">` (e.g. ore-button, which\n * never renders a `<button>` tag).\n * @returns CSSResult with complete frost variant implementation\n *\n * @example\n * ```ts\n * import { frostVariantMixin } from '../../styles/mixins/frost.css';\n *\n * return {\n * styles: [frostVariantMixin('[part=\"button\"]'), componentStyles],\n * template: html`...`\n * };\n * ```\n */\nexport const frostVariantMixin = (selector: string) => css`\n :host([variant='frost']) ${selector} {\n backdrop-filter: blur(var(--blur-xl)) saturate(200%) brightness(1.1);\n -webkit-backdrop-filter: blur(var(--blur-xl)) saturate(200%) brightness(1.1);\n }\n\n :host([variant='frost']:not([color])) ${selector} {\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n color: var(--color-contrast);\n text-shadow: var(--text-shadow-xs);\n border: var(--border) solid color-mix(in oklch, var(--color-contrast-400) 45%, transparent);\n }\n\n /* Frost neutral without elevation: use halo shadow */\n :host([variant='frost']:not([color]):not([elevation])) ${selector} {\n box-shadow: var(--halo-shadow-neutral);\n }\n\n /* Frost neutral with elevation: combine halo with elevation shadow */\n :host([variant='frost']:not([color])[elevation]) ${selector} {\n box-shadow: var(--halo-shadow-neutral), var(--_shadow);\n }\n\n :host([variant='frost'][color]) ${selector} {\n background: color-mix(in oklch, var(--_theme-base), transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n color: var(--_theme-content);\n border: var(--border) solid color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n -webkit-backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n text-shadow: var(--text-shadow-xs);\n filter: brightness(1.05);\n }\n\n /* Frost color without elevation: use halo shadow */\n :host([variant='frost'][color]:not([elevation])) ${selector} {\n box-shadow: var(--_theme-halo);\n }\n\n /* Frost color with elevation: combine halo with elevation shadow */\n :host([variant='frost'][color][elevation]) ${selector} {\n box-shadow: var(--_theme-halo), var(--_shadow);\n }\n\n :host([variant='frost']:not([color])) ${selector}:hover {\n backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n -webkit-backdrop-filter: blur(var(--blur-2xl)) saturate(220%) brightness(1.15);\n }\n\n :host([variant='frost'][color]) ${selector}:hover {\n backdrop-filter: blur(var(--blur-3xl)) saturate(240%) brightness(1.2);\n -webkit-backdrop-filter: blur(var(--blur-3xl)) saturate(240%) brightness(1.2);\n }\n`;\n"],"mappings":";;AA2BA,IAAa,KAAqB,MAAqB,CAAG;6BAC7B,EAAS;;;;;0CAKI,EAAS;;;;;;;;2DAQQ,EAAS;;;;;qDAKf,EAAS;;;;oCAI1B,EAAS;;;;;;;;;;;;qDAYQ,EAAS;;;;;+CAKf,EAAS;;;;0CAId,EAAS;;;;;oCAKf,EAAS"}
|