@pathscale/ui 1.1.73 → 1.1.75

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.
@@ -27,6 +27,7 @@ export declare const CLASSES: {
27
27
  readonly ghost: "glass-panel--accent-ghost";
28
28
  };
29
29
  readonly flag: {
30
+ readonly liquid: "glass-panel--liquid";
30
31
  readonly transparent: "glass-panel--transparent";
31
32
  readonly glow: "glass-panel--glow";
32
33
  readonly contentCollapsed: "glass-panel__content--collapsed";
@@ -27,6 +27,7 @@ const CLASSES = {
27
27
  ghost: "glass-panel--accent-ghost"
28
28
  },
29
29
  flag: {
30
+ liquid: "glass-panel--liquid",
30
31
  transparent: "glass-panel--transparent",
31
32
  glow: "glass-panel--glow",
32
33
  contentCollapsed: "glass-panel__content--collapsed",
@@ -1,9 +1,11 @@
1
1
  @layer components {
2
2
  .glass-panel {
3
+ position: relative;
3
4
  border-radius: 0.75rem;
4
5
  transition: all 200ms ease-in-out;
5
6
  background: color-mix(in srgb, var(--color-base-300) 45%, transparent);
6
- border: 1px solid color-mix(in srgb, var(--color-base-content) 12%, transparent);
7
+ border: 1px solid
8
+ color-mix(in srgb, var(--color-base-content) 12%, transparent);
7
9
  }
8
10
 
9
11
  .glass-panel--transparent {
@@ -12,7 +14,44 @@
12
14
  }
13
15
 
14
16
  .glass-panel--glow {
15
- box-shadow: inset 0 1px 0 color-mix(in srgb, var(--color-base-content) 5%, transparent);
17
+ box-shadow: inset 0 1px 0
18
+ color-mix(in srgb, var(--color-base-content) 5%, transparent);
19
+ }
20
+
21
+ .glass-panel--liquid {
22
+ overflow: hidden;
23
+ background: color-mix(in srgb, var(--color-base-100) 4%, transparent);
24
+ border-color: color-mix(in srgb, var(--color-base-content) 9%, transparent);
25
+ box-shadow: inset 0 1px 0 color-mix(in srgb, white 18%, transparent), inset
26
+ 0 -1px 0 color-mix(in srgb, black 7%, transparent);
27
+ backdrop-filter: blur(6px) saturate(1.12);
28
+ -webkit-backdrop-filter: blur(6px) saturate(1.12);
29
+ }
30
+
31
+ .glass-panel--liquid::after {
32
+ position: absolute;
33
+ inset: 0;
34
+ border-radius: inherit;
35
+ pointer-events: none;
36
+ content: "";
37
+ }
38
+
39
+ .glass-panel--liquid::after {
40
+ z-index: 1;
41
+ padding: 1px;
42
+ background: color-mix(in srgb, white 34%, transparent) border-box;
43
+ mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
44
+ mask-composite: exclude;
45
+ -webkit-mask: linear-gradient(#000 0 0) content-box,
46
+ linear-gradient(#000 0 0);
47
+ -webkit-mask-composite: xor;
48
+ opacity: 0.34;
49
+ }
50
+
51
+ .glass-panel--liquid > .glass-panel__header-button,
52
+ .glass-panel--liquid > .glass-panel__content {
53
+ position: relative;
54
+ z-index: 2;
16
55
  }
17
56
 
18
57
  .glass-panel--blur-none {
@@ -99,9 +138,7 @@
99
138
  color: color-mix(in oklab, var(--color-base-content) 50%, transparent);
100
139
  font-size: 0.875rem;
101
140
  font-weight: 500;
102
- transition:
103
- color 150ms ease,
104
- background-color 150ms ease;
141
+ transition: color 150ms ease, background-color 150ms ease;
105
142
  }
106
143
 
107
144
  .glass-panel__header-button:hover {
@@ -131,9 +168,7 @@
131
168
 
132
169
  .glass-panel__content {
133
170
  display: grid;
134
- transition:
135
- grid-template-rows 200ms ease-in-out,
136
- opacity 200ms ease-in-out;
171
+ transition: grid-template-rows 200ms ease-in-out, opacity 200ms ease-in-out;
137
172
  }
138
173
 
139
174
  .glass-panel__content--collapsible {
@@ -1,9 +1,11 @@
1
1
  import "./GlassPanel.css";
2
2
  import { type JSX } from "solid-js";
3
- import type { IComponentBaseProps, ComponentSize, ComponentColor } from "../types";
3
+ import type { ComponentColor, ComponentSize, IComponentBaseProps } from "../types";
4
4
  export type GlassPanelBlur = "none" | "sm" | "md" | "lg" | "xl" | "2xl";
5
+ export type GlassPanelEffect = "default" | "liquid";
5
6
  export type GlassPanelProps = IComponentBaseProps & JSX.HTMLAttributes<HTMLDivElement> & {
6
7
  blur?: GlassPanelBlur;
8
+ effect?: GlassPanelEffect;
7
9
  collapsible?: boolean;
8
10
  open?: boolean;
9
11
  defaultOpen?: boolean;
@@ -7,6 +7,7 @@ var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__
7
7
  const GlassPanel = (props)=>{
8
8
  const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
9
9
  "blur",
10
+ "effect",
10
11
  "collapsible",
11
12
  "open",
12
13
  "defaultOpen",
@@ -28,16 +29,17 @@ const GlassPanel = (props)=>{
28
29
  const contentId = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createUniqueId)();
29
30
  const blur = ()=>local.blur ?? "none";
30
31
  const size = ()=>local.size ?? "md";
32
+ const isLiquid = ()=>"liquid" === local.effect;
31
33
  const isControlled = ()=>void 0 !== local.open;
32
34
  const [internalOpen, setInternalOpen] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(local.defaultOpen ?? true);
33
- const isOpen = ()=>isControlled() ? local.open : internalOpen();
35
+ const isOpen = ()=>isControlled() ? true === local.open : internalOpen();
34
36
  const accentKey = ()=>local.accent ?? "ghost";
35
37
  const handleToggle = ()=>{
36
38
  const next = !isOpen();
37
39
  if (!isControlled()) setInternalOpen(next);
38
40
  local.onToggle?.(next);
39
41
  };
40
- const containerClasses = ()=>(0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.base, !local.transparent && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.blur[blur()], local.transparent && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.transparent, local.glow && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.glow, local.accent && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.accent[accentKey()], local.class, local.className);
42
+ const containerClasses = ()=>(0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.base, !local.transparent && !isLiquid() && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.blur[blur()], !local.transparent && isLiquid() && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.liquid, local.transparent && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.transparent, local.glow && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.glow, local.accent && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.accent[accentKey()], local.class, local.className);
41
43
  const contentClasses = ()=>(0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.slot.content, local.collapsible && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.contentCollapsible, local.collapsible && !isOpen() && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.contentCollapsed, (!local.collapsible || isOpen()) && !(local.paddingX || local.paddingY) && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.size[size()], local.paddingX, local.paddingY);
42
44
  return (()=>{
43
45
  var _el$ = _tmpl$2(), _el$5 = _el$.firstChild, _el$6 = _el$5.firstChild;
@@ -47,6 +49,9 @@ const GlassPanel = (props)=>{
47
49
  get ["data-theme"] () {
48
50
  return local.dataTheme;
49
51
  },
52
+ get ["data-glass-effect"] () {
53
+ return isLiquid() ? "liquid" : void 0;
54
+ },
50
55
  get style () {
51
56
  return local.style;
52
57
  }
@@ -81,6 +86,7 @@ const GlassPanel = (props)=>{
81
86
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$4, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(()=>({
82
87
  class: (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.slot.chevron, isOpen() && __WEBPACK_EXTERNAL_MODULE__GlassPanel_classes_js_5f11fbfd__.CLASSES.flag.chevronOpen)
83
88
  }), {
89
+ "aria-hidden": "true",
84
90
  fill: "none",
85
91
  viewBox: "0 0 24 24",
86
92
  stroke: "currentColor",
@@ -1 +1 @@
1
- export { default, type GlassPanelProps, type GlassPanelBlur } from "./GlassPanel";
1
+ export { default, type GlassPanelBlur, type GlassPanelEffect, type GlassPanelProps, } from "./GlassPanel";