@pathscale/ui 1.1.42 → 1.1.43
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/components/disclosure/Disclosure.classes.d.ts +15 -0
- package/dist/components/disclosure/Disclosure.classes.js +16 -0
- package/dist/components/disclosure/Disclosure.css +84 -0
- package/dist/components/disclosure/Disclosure.d.ts +45 -0
- package/dist/components/disclosure/Disclosure.js +302 -0
- package/dist/components/disclosure/index.d.ts +11 -0
- package/dist/components/disclosure/index.js +9 -0
- package/dist/components/disclosure-group/DisclosureGroup.classes.d.ts +3 -0
- package/dist/components/disclosure-group/DisclosureGroup.classes.js +4 -0
- package/dist/components/disclosure-group/DisclosureGroup.css +9 -0
- package/dist/components/disclosure-group/DisclosureGroup.d.ts +25 -0
- package/dist/components/disclosure-group/DisclosureGroup.js +73 -0
- package/dist/components/disclosure-group/index.d.ts +9 -0
- package/dist/components/disclosure-group/index.js +6 -0
- package/dist/components/disclosure-group/useDisclosureGroupNavigation.d.ts +14 -0
- package/dist/components/disclosure-group/useDisclosureGroupNavigation.js +54 -0
- package/dist/components/immersive-landing/ImmersiveLanding.css +1 -1
- package/dist/components/meter/Meter.classes.d.ts +21 -0
- package/dist/components/meter/Meter.classes.js +22 -0
- package/dist/components/meter/Meter.css +89 -0
- package/dist/components/meter/Meter.d.ts +43 -0
- package/dist/components/meter/Meter.js +212 -0
- package/dist/components/meter/index.d.ts +1 -0
- package/dist/components/meter/index.js +8 -0
- package/dist/components/popover/Popover.classes.d.ts +10 -0
- package/dist/components/popover/Popover.classes.js +11 -0
- package/dist/components/popover/Popover.css +125 -0
- package/dist/components/popover/Popover.d.ts +47 -0
- package/dist/components/popover/Popover.js +310 -0
- package/dist/components/popover/index.d.ts +11 -0
- package/dist/components/popover/index.js +9 -0
- package/dist/components/range-calendar/RangeCalendar.classes.d.ts +11 -0
- package/dist/components/range-calendar/RangeCalendar.classes.js +12 -0
- package/dist/components/range-calendar/RangeCalendar.css +51 -0
- package/dist/components/range-calendar/RangeCalendar.d.ts +24 -0
- package/dist/components/range-calendar/RangeCalendar.js +110 -0
- package/dist/components/range-calendar/index.d.ts +1 -0
- package/dist/components/range-calendar/index.js +3 -0
- package/dist/components/scroll-shadow/ScrollShadow.classes.d.ts +13 -0
- package/dist/components/scroll-shadow/ScrollShadow.classes.js +14 -0
- package/dist/components/scroll-shadow/ScrollShadow.css +93 -0
- package/dist/components/scroll-shadow/ScrollShadow.d.ts +18 -0
- package/dist/components/scroll-shadow/ScrollShadow.js +87 -0
- package/dist/components/scroll-shadow/index.d.ts +2 -0
- package/dist/components/scroll-shadow/index.js +3 -0
- package/dist/components/scroll-shadow/useScrollShadow.d.ts +13 -0
- package/dist/components/scroll-shadow/useScrollShadow.js +97 -0
- package/dist/components/toolbar/Toolbar.classes.d.ts +10 -0
- package/dist/components/toolbar/Toolbar.classes.js +11 -0
- package/dist/components/toolbar/Toolbar.css +55 -0
- package/dist/components/toolbar/Toolbar.d.ts +15 -0
- package/dist/components/toolbar/Toolbar.js +96 -0
- package/dist/components/toolbar/index.d.ts +1 -0
- package/dist/components/toolbar/index.js +5 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +21 -1
- package/dist/purge-manifest.json +176 -0
- package/package.json +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
2
|
+
const normalizeKeys = (keys)=>new Set(Array.from(keys).map((key)=>String(key)));
|
|
3
|
+
const useDisclosureGroupNavigation = (props)=>{
|
|
4
|
+
const currentIndex = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
5
|
+
const ids = props.itemIds();
|
|
6
|
+
const expanded = Array.from(normalizeKeys(props.expandedKeys())).filter((id)=>ids.includes(id));
|
|
7
|
+
const current = expanded.length > 0 ? expanded[0] : ids[0];
|
|
8
|
+
if (!current) return -1;
|
|
9
|
+
return ids.indexOf(current);
|
|
10
|
+
});
|
|
11
|
+
const setExpanded = (id)=>{
|
|
12
|
+
if (!id) return;
|
|
13
|
+
const allowsMultiple = Boolean(props.allowsMultipleExpanded);
|
|
14
|
+
if (allowsMultiple) {
|
|
15
|
+
const next = new Set(props.expandedKeys());
|
|
16
|
+
next.add(id);
|
|
17
|
+
props.onExpandedChange(next);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
props.onExpandedChange(new Set([
|
|
21
|
+
id
|
|
22
|
+
]));
|
|
23
|
+
};
|
|
24
|
+
const onPrevious = ()=>{
|
|
25
|
+
const ids = props.itemIds();
|
|
26
|
+
const index = currentIndex();
|
|
27
|
+
if (index <= 0) return;
|
|
28
|
+
const prev = ids[index - 1];
|
|
29
|
+
if (!prev) return;
|
|
30
|
+
setExpanded(prev);
|
|
31
|
+
};
|
|
32
|
+
const onNext = ()=>{
|
|
33
|
+
const ids = props.itemIds();
|
|
34
|
+
const index = currentIndex();
|
|
35
|
+
if (index >= ids.length - 1) return;
|
|
36
|
+
const next = ids[index + 1];
|
|
37
|
+
if (!next) return;
|
|
38
|
+
setExpanded(next);
|
|
39
|
+
};
|
|
40
|
+
const isPrevDisabled = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>currentIndex() <= 0);
|
|
41
|
+
const isNextDisabled = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
42
|
+
const index = currentIndex();
|
|
43
|
+
const ids = props.itemIds();
|
|
44
|
+
return index < 0 || index >= ids.length - 1;
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
currentIndex,
|
|
48
|
+
isPrevDisabled,
|
|
49
|
+
isNextDisabled,
|
|
50
|
+
onPrevious,
|
|
51
|
+
onNext
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export { useDisclosureGroupNavigation };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const CLASSES: {
|
|
2
|
+
readonly base: "meter";
|
|
3
|
+
readonly output: "meter__output";
|
|
4
|
+
readonly track: "meter__track";
|
|
5
|
+
readonly fill: "meter__fill";
|
|
6
|
+
readonly size: {
|
|
7
|
+
readonly sm: "meter--sm";
|
|
8
|
+
readonly md: "meter--md";
|
|
9
|
+
readonly lg: "meter--lg";
|
|
10
|
+
};
|
|
11
|
+
readonly color: {
|
|
12
|
+
readonly default: "meter--default";
|
|
13
|
+
readonly accent: "meter--accent";
|
|
14
|
+
readonly success: "meter--success";
|
|
15
|
+
readonly warning: "meter--warning";
|
|
16
|
+
readonly danger: "meter--danger";
|
|
17
|
+
};
|
|
18
|
+
readonly state: {
|
|
19
|
+
readonly disabled: "meter--disabled";
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const CLASSES = {
|
|
2
|
+
base: "meter",
|
|
3
|
+
output: "meter__output",
|
|
4
|
+
track: "meter__track",
|
|
5
|
+
fill: "meter__fill",
|
|
6
|
+
size: {
|
|
7
|
+
sm: "meter--sm",
|
|
8
|
+
md: "meter--md",
|
|
9
|
+
lg: "meter--lg"
|
|
10
|
+
},
|
|
11
|
+
color: {
|
|
12
|
+
default: "meter--default",
|
|
13
|
+
accent: "meter--accent",
|
|
14
|
+
success: "meter--success",
|
|
15
|
+
warning: "meter--warning",
|
|
16
|
+
danger: "meter--danger"
|
|
17
|
+
},
|
|
18
|
+
state: {
|
|
19
|
+
disabled: "meter--disabled"
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export { CLASSES };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.meter {
|
|
3
|
+
display: grid;
|
|
4
|
+
width: 100%;
|
|
5
|
+
gap: 0.25rem;
|
|
6
|
+
grid-template-areas:
|
|
7
|
+
"label output"
|
|
8
|
+
"track track";
|
|
9
|
+
grid-template-columns: 1fr auto;
|
|
10
|
+
|
|
11
|
+
--meter-fill: var(--color-accent);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.meter [data-slot="label"] {
|
|
15
|
+
grid-area: label;
|
|
16
|
+
width: fit-content;
|
|
17
|
+
font-size: 0.875rem;
|
|
18
|
+
line-height: 1.25rem;
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.meter__output {
|
|
23
|
+
grid-area: output;
|
|
24
|
+
font-size: 0.875rem;
|
|
25
|
+
line-height: 1.25rem;
|
|
26
|
+
font-weight: 500;
|
|
27
|
+
font-variant-numeric: tabular-nums;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.meter__track {
|
|
31
|
+
grid-area: track;
|
|
32
|
+
position: relative;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
border-radius: 9999px;
|
|
35
|
+
background: var(--color-base-200);
|
|
36
|
+
height: 0.5rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.meter__fill {
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: 0;
|
|
42
|
+
left: 0;
|
|
43
|
+
height: 100%;
|
|
44
|
+
border-radius: 9999px;
|
|
45
|
+
background-color: var(--meter-fill);
|
|
46
|
+
transition: width 300ms var(--ease-out);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.meter--sm .meter__track {
|
|
50
|
+
height: 0.25rem;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.meter--lg .meter__track {
|
|
54
|
+
height: 0.75rem;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.meter--default {
|
|
58
|
+
--meter-fill: var(--color-base-content);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.meter--accent {
|
|
62
|
+
--meter-fill: var(--color-accent);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.meter--success {
|
|
66
|
+
--meter-fill: var(--color-success);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.meter--warning {
|
|
70
|
+
--meter-fill: var(--color-warning);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.meter--danger {
|
|
74
|
+
--meter-fill: var(--color-danger);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.meter--disabled,
|
|
78
|
+
.meter[aria-disabled="true"],
|
|
79
|
+
.meter[data-disabled="true"] {
|
|
80
|
+
opacity: 0.6;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@media (prefers-reduced-motion: reduce) {
|
|
84
|
+
.meter__fill {
|
|
85
|
+
transition: none;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./Meter.css";
|
|
2
|
+
import { type Component, type JSX } from "solid-js";
|
|
3
|
+
import type { IComponentBaseProps } from "../types";
|
|
4
|
+
export type MeterSize = "sm" | "md" | "lg";
|
|
5
|
+
export type MeterColor = "default" | "accent" | "success" | "warning" | "danger";
|
|
6
|
+
export type MeterRenderState = {
|
|
7
|
+
value: number;
|
|
8
|
+
minValue: number;
|
|
9
|
+
maxValue: number;
|
|
10
|
+
percentage: number;
|
|
11
|
+
valueText: string;
|
|
12
|
+
isDisabled: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type MeterRootProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
15
|
+
children?: JSX.Element | ((state: MeterRenderState) => JSX.Element);
|
|
16
|
+
value?: number;
|
|
17
|
+
minValue?: number;
|
|
18
|
+
maxValue?: number;
|
|
19
|
+
lowValue?: number;
|
|
20
|
+
highValue?: number;
|
|
21
|
+
optimumValue?: number;
|
|
22
|
+
isDisabled?: boolean;
|
|
23
|
+
size?: MeterSize;
|
|
24
|
+
color?: MeterColor;
|
|
25
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
26
|
+
formatValue?: (value: number, state: Omit<MeterRenderState, "valueText">) => string;
|
|
27
|
+
};
|
|
28
|
+
export type MeterOutputProps = IComponentBaseProps & JSX.HTMLAttributes<HTMLSpanElement>;
|
|
29
|
+
export type MeterTrackProps = IComponentBaseProps & JSX.HTMLAttributes<HTMLDivElement>;
|
|
30
|
+
export type MeterFillProps = IComponentBaseProps & JSX.HTMLAttributes<HTMLDivElement>;
|
|
31
|
+
declare const MeterRoot: Component<MeterRootProps>;
|
|
32
|
+
declare const MeterOutput: Component<MeterOutputProps>;
|
|
33
|
+
declare const MeterTrack: Component<MeterTrackProps>;
|
|
34
|
+
declare const MeterFill: Component<MeterFillProps>;
|
|
35
|
+
declare const Meter: Component<MeterRootProps> & {
|
|
36
|
+
Root: Component<MeterRootProps>;
|
|
37
|
+
Output: Component<MeterOutputProps>;
|
|
38
|
+
Track: Component<MeterTrackProps>;
|
|
39
|
+
Fill: Component<MeterFillProps>;
|
|
40
|
+
};
|
|
41
|
+
export default Meter;
|
|
42
|
+
export { Meter, MeterRoot, MeterOutput, MeterTrack, MeterFill };
|
|
43
|
+
export type { MeterRootProps as MeterProps };
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
+
import "./Meter.css";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__ from "./Meter.classes.js";
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<span>");
|
|
7
|
+
const MeterContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
8
|
+
const useMeterContext = ()=>{
|
|
9
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(MeterContext);
|
|
10
|
+
if (!context) throw new Error("Meter compound components must be used within <Meter>");
|
|
11
|
+
return context;
|
|
12
|
+
};
|
|
13
|
+
const clamp = (value, min, max)=>Math.min(Math.max(value, min), max);
|
|
14
|
+
const MeterRoot = (props)=>{
|
|
15
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
16
|
+
"children",
|
|
17
|
+
"class",
|
|
18
|
+
"className",
|
|
19
|
+
"dataTheme",
|
|
20
|
+
"style",
|
|
21
|
+
"value",
|
|
22
|
+
"minValue",
|
|
23
|
+
"maxValue",
|
|
24
|
+
"lowValue",
|
|
25
|
+
"highValue",
|
|
26
|
+
"optimumValue",
|
|
27
|
+
"isDisabled",
|
|
28
|
+
"size",
|
|
29
|
+
"color",
|
|
30
|
+
"formatOptions",
|
|
31
|
+
"formatValue"
|
|
32
|
+
]);
|
|
33
|
+
const minValue = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>local.minValue ?? 0);
|
|
34
|
+
const maxValue = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
35
|
+
const resolvedMin = minValue();
|
|
36
|
+
const resolvedMax = local.maxValue ?? 100;
|
|
37
|
+
return resolvedMax > resolvedMin ? resolvedMax : resolvedMin + 1;
|
|
38
|
+
});
|
|
39
|
+
const clampedValue = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>clamp(local.value ?? minValue(), minValue(), maxValue()));
|
|
40
|
+
const percentage = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>(clampedValue() - minValue()) / (maxValue() - minValue()) * 100);
|
|
41
|
+
const formatter = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
42
|
+
if (!local.formatOptions) return;
|
|
43
|
+
try {
|
|
44
|
+
return new Intl.NumberFormat(void 0, local.formatOptions);
|
|
45
|
+
} catch {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const state = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
50
|
+
const base = {
|
|
51
|
+
value: clampedValue(),
|
|
52
|
+
minValue: minValue(),
|
|
53
|
+
maxValue: maxValue(),
|
|
54
|
+
percentage: percentage(),
|
|
55
|
+
isDisabled: Boolean(local.isDisabled)
|
|
56
|
+
};
|
|
57
|
+
const valueText = local.formatValue ? local.formatValue(base.value, base) : formatter()?.format(base.value) ?? `${Math.round(base.percentage)}%`;
|
|
58
|
+
return {
|
|
59
|
+
...base,
|
|
60
|
+
valueText
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
const rootClasses = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>(0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.base, __WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.size[local.size ?? "md"], __WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.color[local.color ?? "accent"], local.isDisabled && __WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.state.disabled, local.class, local.className));
|
|
64
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(MeterContext.Provider, {
|
|
65
|
+
value: {
|
|
66
|
+
state
|
|
67
|
+
},
|
|
68
|
+
get children () {
|
|
69
|
+
var _el$ = _tmpl$();
|
|
70
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
71
|
+
get role () {
|
|
72
|
+
return others.role ?? "meter";
|
|
73
|
+
},
|
|
74
|
+
get ["aria-valuemin"] () {
|
|
75
|
+
return minValue();
|
|
76
|
+
},
|
|
77
|
+
get ["aria-valuemax"] () {
|
|
78
|
+
return maxValue();
|
|
79
|
+
},
|
|
80
|
+
get ["aria-valuenow"] () {
|
|
81
|
+
return state().value;
|
|
82
|
+
},
|
|
83
|
+
get ["aria-valuetext"] () {
|
|
84
|
+
return state().valueText;
|
|
85
|
+
},
|
|
86
|
+
get ["aria-disabled"] () {
|
|
87
|
+
return local.isDisabled ? "true" : void 0;
|
|
88
|
+
},
|
|
89
|
+
get ["data-disabled"] () {
|
|
90
|
+
return local.isDisabled ? "true" : void 0;
|
|
91
|
+
},
|
|
92
|
+
"data-slot": "meter",
|
|
93
|
+
get ["data-theme"] () {
|
|
94
|
+
return local.dataTheme;
|
|
95
|
+
},
|
|
96
|
+
get ["data-low-value"] () {
|
|
97
|
+
return local.lowValue;
|
|
98
|
+
},
|
|
99
|
+
get ["data-high-value"] () {
|
|
100
|
+
return local.highValue;
|
|
101
|
+
},
|
|
102
|
+
get ["data-optimum-value"] () {
|
|
103
|
+
return local.optimumValue;
|
|
104
|
+
},
|
|
105
|
+
get style () {
|
|
106
|
+
return local.style;
|
|
107
|
+
}
|
|
108
|
+
}, ()=>({
|
|
109
|
+
class: rootClasses()
|
|
110
|
+
})), false, true);
|
|
111
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (()=>{
|
|
112
|
+
var _c$ = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"function" == typeof local.children);
|
|
113
|
+
return ()=>_c$() ? local.children(state()) : local.children;
|
|
114
|
+
})());
|
|
115
|
+
return _el$;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
const MeterOutput = (props)=>{
|
|
120
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
121
|
+
"children",
|
|
122
|
+
"class",
|
|
123
|
+
"className",
|
|
124
|
+
"dataTheme",
|
|
125
|
+
"style"
|
|
126
|
+
]);
|
|
127
|
+
const { state } = useMeterContext();
|
|
128
|
+
return (()=>{
|
|
129
|
+
var _el$2 = _tmpl$2();
|
|
130
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
131
|
+
"data-slot": "meter-output",
|
|
132
|
+
get ["data-theme"] () {
|
|
133
|
+
return local.dataTheme;
|
|
134
|
+
},
|
|
135
|
+
get style () {
|
|
136
|
+
return local.style;
|
|
137
|
+
}
|
|
138
|
+
}, ()=>({
|
|
139
|
+
class: (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.output, local.class, local.className)
|
|
140
|
+
})), false, true);
|
|
141
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.children ?? state().valueText);
|
|
142
|
+
return _el$2;
|
|
143
|
+
})();
|
|
144
|
+
};
|
|
145
|
+
const MeterTrack = (props)=>{
|
|
146
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
147
|
+
"children",
|
|
148
|
+
"class",
|
|
149
|
+
"className",
|
|
150
|
+
"dataTheme",
|
|
151
|
+
"style"
|
|
152
|
+
]);
|
|
153
|
+
return (()=>{
|
|
154
|
+
var _el$3 = _tmpl$();
|
|
155
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$3, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
156
|
+
"data-slot": "meter-track",
|
|
157
|
+
get ["data-theme"] () {
|
|
158
|
+
return local.dataTheme;
|
|
159
|
+
},
|
|
160
|
+
get style () {
|
|
161
|
+
return local.style;
|
|
162
|
+
}
|
|
163
|
+
}, ()=>({
|
|
164
|
+
class: (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.track, local.class, local.className)
|
|
165
|
+
})), false, true);
|
|
166
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.children);
|
|
167
|
+
return _el$3;
|
|
168
|
+
})();
|
|
169
|
+
};
|
|
170
|
+
const MeterFill = (props)=>{
|
|
171
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
172
|
+
"class",
|
|
173
|
+
"className",
|
|
174
|
+
"dataTheme",
|
|
175
|
+
"style"
|
|
176
|
+
]);
|
|
177
|
+
const { state } = useMeterContext();
|
|
178
|
+
const style = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
179
|
+
if ("string" == typeof local.style) {
|
|
180
|
+
const trimmed = local.style.trim();
|
|
181
|
+
const suffix = trimmed.length > 0 && !trimmed.endsWith(";") ? ";" : "";
|
|
182
|
+
return `${trimmed}${suffix} width: ${state().percentage}%;`;
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
...local.style ?? {},
|
|
186
|
+
width: `${state().percentage}%`
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
return (()=>{
|
|
190
|
+
var _el$4 = _tmpl$();
|
|
191
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$4, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
192
|
+
"data-slot": "meter-fill",
|
|
193
|
+
get ["data-theme"] () {
|
|
194
|
+
return local.dataTheme;
|
|
195
|
+
},
|
|
196
|
+
get style () {
|
|
197
|
+
return style();
|
|
198
|
+
}
|
|
199
|
+
}, ()=>({
|
|
200
|
+
class: (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Meter_classes_js_21fc494c__.CLASSES.fill, local.class, local.className)
|
|
201
|
+
})), false, false);
|
|
202
|
+
return _el$4;
|
|
203
|
+
})();
|
|
204
|
+
};
|
|
205
|
+
const Meter_Meter = Object.assign(MeterRoot, {
|
|
206
|
+
Root: MeterRoot,
|
|
207
|
+
Output: MeterOutput,
|
|
208
|
+
Track: MeterTrack,
|
|
209
|
+
Fill: MeterFill
|
|
210
|
+
});
|
|
211
|
+
const Meter = Meter_Meter;
|
|
212
|
+
export { Meter_Meter as Meter, MeterFill, MeterOutput, MeterRoot, MeterTrack, Meter as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default, Meter, MeterRoot, MeterOutput, MeterTrack, MeterFill, type MeterProps, type MeterRootProps, type MeterOutputProps, type MeterTrackProps, type MeterFillProps, type MeterSize, type MeterColor, type MeterRenderState, } from "./Meter";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__ from "./Meter.js";
|
|
2
|
+
var __webpack_exports__Meter = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__.Meter;
|
|
3
|
+
var __webpack_exports__MeterFill = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__.MeterFill;
|
|
4
|
+
var __webpack_exports__MeterOutput = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__.MeterOutput;
|
|
5
|
+
var __webpack_exports__MeterRoot = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__.MeterRoot;
|
|
6
|
+
var __webpack_exports__MeterTrack = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__.MeterTrack;
|
|
7
|
+
var __webpack_exports__default = __WEBPACK_EXTERNAL_MODULE__Meter_js_d9647ac6__["default"];
|
|
8
|
+
export { __webpack_exports__Meter as Meter, __webpack_exports__MeterFill as MeterFill, __webpack_exports__MeterOutput as MeterOutput, __webpack_exports__MeterRoot as MeterRoot, __webpack_exports__MeterTrack as MeterTrack, __webpack_exports__default as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const CLASSES: {
|
|
2
|
+
readonly base: "popover";
|
|
3
|
+
readonly slot: {
|
|
4
|
+
readonly root: "popover-root";
|
|
5
|
+
readonly trigger: "popover__trigger";
|
|
6
|
+
readonly dialog: "popover__dialog";
|
|
7
|
+
readonly arrow: "popover__arrow";
|
|
8
|
+
readonly heading: "popover__heading";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.popover-root {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.popover {
|
|
8
|
+
position: absolute;
|
|
9
|
+
z-index: var(--z-overlay, 70);
|
|
10
|
+
border-radius: 1.5rem;
|
|
11
|
+
padding: 0;
|
|
12
|
+
font-size: 0.875rem;
|
|
13
|
+
line-height: 1.25rem;
|
|
14
|
+
background-color: var(--color-overlay, var(--color-base-100));
|
|
15
|
+
color: var(--color-overlay-foreground, var(--color-base-content));
|
|
16
|
+
box-shadow: var(--shadow-overlay, 0 24px 48px color-mix(in oklab, black 20%, transparent));
|
|
17
|
+
opacity: 0;
|
|
18
|
+
pointer-events: none;
|
|
19
|
+
transform: translateY(-4px) scale(0.96);
|
|
20
|
+
transform-origin: center;
|
|
21
|
+
transition:
|
|
22
|
+
opacity 150ms var(--ease-smooth, ease),
|
|
23
|
+
transform 150ms var(--ease-smooth, ease);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.popover[data-open="true"] {
|
|
27
|
+
opacity: 1;
|
|
28
|
+
pointer-events: auto;
|
|
29
|
+
transform: translateY(0) scale(1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.popover[data-placement="top"] {
|
|
33
|
+
bottom: calc(100% + var(--popover-offset, 8px));
|
|
34
|
+
left: 50%;
|
|
35
|
+
transform: translateX(-50%) translateY(4px) scale(0.96);
|
|
36
|
+
transform-origin: bottom;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.popover[data-placement="top"][data-open="true"] {
|
|
40
|
+
transform: translateX(-50%) translateY(0) scale(1);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.popover[data-placement="bottom"] {
|
|
44
|
+
top: calc(100% + var(--popover-offset, 8px));
|
|
45
|
+
left: 50%;
|
|
46
|
+
transform: translateX(-50%) translateY(-4px) scale(0.96);
|
|
47
|
+
transform-origin: top;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.popover[data-placement="bottom"][data-open="true"] {
|
|
51
|
+
transform: translateX(-50%) translateY(0) scale(1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.popover[data-placement="left"] {
|
|
55
|
+
right: calc(100% + var(--popover-offset, 8px));
|
|
56
|
+
top: 50%;
|
|
57
|
+
transform: translateX(4px) translateY(-50%) scale(0.96);
|
|
58
|
+
transform-origin: right;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.popover[data-placement="left"][data-open="true"] {
|
|
62
|
+
transform: translateX(0) translateY(-50%) scale(1);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.popover[data-placement="right"] {
|
|
66
|
+
left: calc(100% + var(--popover-offset, 8px));
|
|
67
|
+
top: 50%;
|
|
68
|
+
transform: translateX(-4px) translateY(-50%) scale(0.96);
|
|
69
|
+
transform-origin: left;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.popover[data-placement="right"][data-open="true"] {
|
|
73
|
+
transform: translateX(0) translateY(-50%) scale(1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.popover__dialog {
|
|
77
|
+
padding: 1rem;
|
|
78
|
+
outline: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.popover__heading {
|
|
82
|
+
font-weight: 600;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.popover__trigger {
|
|
86
|
+
display: inline-flex;
|
|
87
|
+
cursor: pointer;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.popover__trigger:focus-visible,
|
|
91
|
+
.popover__trigger[data-focus-visible="true"] {
|
|
92
|
+
outline: 2px solid var(--color-accent);
|
|
93
|
+
outline-offset: 2px;
|
|
94
|
+
border-radius: var(--radius-field, 0.375rem);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.popover__arrow {
|
|
98
|
+
position: absolute;
|
|
99
|
+
color: var(--color-overlay, var(--color-base-100));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.popover[data-placement="top"] .popover__arrow {
|
|
103
|
+
top: calc(100% - 1px);
|
|
104
|
+
left: 50%;
|
|
105
|
+
transform: translateX(-50%);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.popover[data-placement="bottom"] .popover__arrow {
|
|
109
|
+
bottom: calc(100% - 1px);
|
|
110
|
+
left: 50%;
|
|
111
|
+
transform: translateX(-50%) rotate(180deg);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.popover[data-placement="left"] .popover__arrow {
|
|
115
|
+
left: calc(100% - 1px);
|
|
116
|
+
top: 50%;
|
|
117
|
+
transform: translateY(-50%) rotate(-90deg);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.popover[data-placement="right"] .popover__arrow {
|
|
121
|
+
right: calc(100% - 1px);
|
|
122
|
+
top: 50%;
|
|
123
|
+
transform: translateY(-50%) rotate(90deg);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import "./Popover.css";
|
|
2
|
+
import { type Component, type JSX, type ParentComponent } from "solid-js";
|
|
3
|
+
import type { IComponentBaseProps } from "../types";
|
|
4
|
+
export type PopoverPlacement = "top" | "bottom" | "left" | "right";
|
|
5
|
+
export type PopoverRootProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
6
|
+
children: JSX.Element;
|
|
7
|
+
isOpen?: boolean;
|
|
8
|
+
defaultOpen?: boolean;
|
|
9
|
+
onOpenChange?: (open: boolean) => void;
|
|
10
|
+
placement?: PopoverPlacement;
|
|
11
|
+
offset?: number;
|
|
12
|
+
closeOnOutsideClick?: boolean;
|
|
13
|
+
closeOnEscape?: boolean;
|
|
14
|
+
onInteractOutside?: (event: Event) => void;
|
|
15
|
+
};
|
|
16
|
+
declare const PopoverRoot: ParentComponent<PopoverRootProps>;
|
|
17
|
+
export type PopoverTriggerProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
18
|
+
children: JSX.Element;
|
|
19
|
+
};
|
|
20
|
+
declare const PopoverTrigger: Component<PopoverTriggerProps>;
|
|
21
|
+
export type PopoverContentProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
22
|
+
children: JSX.Element;
|
|
23
|
+
sideOffset?: number;
|
|
24
|
+
};
|
|
25
|
+
declare const PopoverContent: Component<PopoverContentProps>;
|
|
26
|
+
export type PopoverDialogProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
27
|
+
children: JSX.Element;
|
|
28
|
+
};
|
|
29
|
+
declare const PopoverDialog: Component<PopoverDialogProps>;
|
|
30
|
+
export type PopoverArrowProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLSpanElement>, "children"> & {
|
|
31
|
+
children?: JSX.Element;
|
|
32
|
+
};
|
|
33
|
+
declare const PopoverArrow: Component<PopoverArrowProps>;
|
|
34
|
+
export type PopoverHeadingProps = IComponentBaseProps & Omit<JSX.HTMLAttributes<HTMLHeadingElement>, "children"> & {
|
|
35
|
+
children: JSX.Element;
|
|
36
|
+
};
|
|
37
|
+
declare const PopoverHeading: Component<PopoverHeadingProps>;
|
|
38
|
+
declare const Popover: ParentComponent<PopoverRootProps> & {
|
|
39
|
+
Root: ParentComponent<PopoverRootProps>;
|
|
40
|
+
Trigger: Component<PopoverTriggerProps>;
|
|
41
|
+
Content: Component<PopoverContentProps>;
|
|
42
|
+
Dialog: Component<PopoverDialogProps>;
|
|
43
|
+
Arrow: Component<PopoverArrowProps>;
|
|
44
|
+
Heading: Component<PopoverHeadingProps>;
|
|
45
|
+
};
|
|
46
|
+
export default Popover;
|
|
47
|
+
export { PopoverRoot, PopoverTrigger, PopoverContent, PopoverDialog, PopoverArrow, PopoverHeading, };
|