@orioncactuscorp/ui 1.13.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +155 -0
- package/README.md +133 -36
- package/dist/components/BackgroundIconButton/BackgroundIconButton.css +1 -1
- package/dist/components/Button/Button.css +1 -1
- package/dist/components/CheckMark/CheckMark.js +19 -17
- package/dist/components/Checkbox/Checkbox.css +1 -1
- package/dist/components/Checkbox/Checkbox.js +38 -36
- package/dist/components/FloatingWindow/FloatingWindow.css +1 -0
- package/dist/components/FloatingWindow/FloatingWindow.js +693 -0
- package/dist/components/FloatingWindow/FloatingWindow.module.scss.js +17 -0
- package/dist/components/FloatingWindow/FloatingWindowManager.js +36 -0
- package/dist/components/FloatingWindow/contexts.js +25 -0
- package/dist/components/FloatingWindow/geometry.js +222 -0
- package/dist/components/FloatingWindow/stack.js +31 -0
- package/dist/components/FloatingWindow.d.ts +6 -0
- package/dist/components/FloatingWindow.js +18 -0
- package/dist/components/Interaction/Interaction.css +1 -1
- package/dist/components/Menu/Menu.css +1 -1
- package/dist/components/Menu/Menu.js +95 -87
- package/dist/components/Modal/Modal.css +1 -1
- package/dist/components/Modal/Modal.js +558 -723
- package/dist/components/Modal/Modal.module.scss.js +69 -60
- package/dist/components/Modal/initialFocus.js +11 -0
- package/dist/components/Modal/keyboardSession.js +104 -0
- package/dist/components/Modal/snapPoints.js +95 -82
- package/dist/components/Modal/useModalDrag.js +730 -762
- package/dist/components/Modal/useModalKeyboardAvoidance.js +159 -0
- package/dist/components/Modal/useModalViewportGeometry.js +36 -0
- package/dist/components/PositionSnap/PositionSnap.css +1 -0
- package/dist/components/PositionSnap/PositionSnap.js +330 -0
- package/dist/components/PositionSnap/PositionSnap.module.scss.js +9 -0
- package/dist/components/PositionSnap/contexts.js +12 -0
- package/dist/components/PositionSnap/geometry.js +75 -0
- package/dist/components/PositionSnap/gesture.js +7 -0
- package/dist/components/PositionSnap/policy.js +60 -0
- package/dist/components/PositionSnap.d.ts +6 -0
- package/dist/components/PositionSnap.js +7 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.css +1 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.js +45 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.module.scss.js +13 -0
- package/dist/components/ProgressIndicator.d.ts +6 -0
- package/dist/components/ProgressIndicator.js +4 -0
- package/dist/components/Radio/Radio.css +1 -1
- package/dist/components/Radio/Radio.js +26 -24
- package/dist/components/Switch/Switch.css +1 -1
- package/dist/components/Switch/Switch.js +18 -16
- package/dist/components/Tabs/Tabs.css +1 -1
- package/dist/components/Tooltip/Tooltip.css +1 -1
- package/dist/components/Tooltip/Tooltip.js +59 -56
- package/dist/components/Tooltip/Tooltip.module.scss.js +6 -4
- package/dist/components/internal/ModalPresentation.js +361 -0
- package/dist/components/internal/OverlayPortalContext.js +20 -0
- package/dist/index.js +135 -112
- package/dist/styles.css +13 -10
- package/dist/ui/src/components/CheckMark/CheckMark.d.ts +1 -1
- package/dist/ui/src/components/CheckMark/CheckMark.d.ts.map +1 -1
- package/dist/ui/src/components/CheckMark/types.d.ts +2 -1
- package/dist/ui/src/components/CheckMark/types.d.ts.map +1 -1
- package/dist/ui/src/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/ui/src/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/ui/src/components/Checkbox/types.d.ts +2 -1
- package/dist/ui/src/components/Checkbox/types.d.ts.map +1 -1
- package/dist/ui/src/components/FloatingWindow/FloatingWindow.d.ts +32 -0
- package/dist/ui/src/components/FloatingWindow/FloatingWindow.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/FloatingWindowManager.d.ts +4 -0
- package/dist/ui/src/components/FloatingWindow/FloatingWindowManager.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/contexts.d.ts +36 -0
- package/dist/ui/src/components/FloatingWindow/contexts.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/geometry.d.ts +31 -0
- package/dist/ui/src/components/FloatingWindow/geometry.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/index.d.ts +4 -0
- package/dist/ui/src/components/FloatingWindow/index.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/stack.d.ts +9 -0
- package/dist/ui/src/components/FloatingWindow/stack.d.ts.map +1 -0
- package/dist/ui/src/components/FloatingWindow/types.d.ts +121 -0
- package/dist/ui/src/components/FloatingWindow/types.d.ts.map +1 -0
- package/dist/ui/src/components/Interaction/index.d.ts +1 -1
- package/dist/ui/src/components/Interaction/index.d.ts.map +1 -1
- package/dist/ui/src/components/Interaction/types.d.ts +9 -1
- package/dist/ui/src/components/Interaction/types.d.ts.map +1 -1
- package/dist/ui/src/components/Menu/Menu.d.ts +2 -2
- package/dist/ui/src/components/Menu/Menu.d.ts.map +1 -1
- package/dist/ui/src/components/Menu/types.d.ts +9 -2
- package/dist/ui/src/components/Menu/types.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/Modal.d.ts +2 -2
- package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/contexts.d.ts +3 -0
- package/dist/ui/src/components/Modal/contexts.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/initialFocus.d.ts +18 -0
- package/dist/ui/src/components/Modal/initialFocus.d.ts.map +1 -0
- package/dist/ui/src/components/Modal/keyboardSession.d.ts +46 -0
- package/dist/ui/src/components/Modal/keyboardSession.d.ts.map +1 -0
- package/dist/ui/src/components/Modal/snapPoints.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/types.d.ts +17 -2
- package/dist/ui/src/components/Modal/types.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/useModalDrag.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/useModalKeyboardAvoidance.d.ts +17 -0
- package/dist/ui/src/components/Modal/useModalKeyboardAvoidance.d.ts.map +1 -0
- package/dist/ui/src/components/Modal/useModalViewportGeometry.d.ts +9 -0
- package/dist/ui/src/components/Modal/useModalViewportGeometry.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/PositionSnap.d.ts +11 -0
- package/dist/ui/src/components/PositionSnap/PositionSnap.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/contexts.d.ts +17 -0
- package/dist/ui/src/components/PositionSnap/contexts.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/geometry.d.ts +31 -0
- package/dist/ui/src/components/PositionSnap/geometry.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/gesture.d.ts +2 -0
- package/dist/ui/src/components/PositionSnap/gesture.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/index.d.ts +3 -0
- package/dist/ui/src/components/PositionSnap/index.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/policy.d.ts +24 -0
- package/dist/ui/src/components/PositionSnap/policy.d.ts.map +1 -0
- package/dist/ui/src/components/PositionSnap/types.d.ts +31 -0
- package/dist/ui/src/components/PositionSnap/types.d.ts.map +1 -0
- package/dist/ui/src/components/ProgressIndicator/ProgressIndicator.d.ts +4 -0
- package/dist/ui/src/components/ProgressIndicator/ProgressIndicator.d.ts.map +1 -0
- package/dist/ui/src/components/ProgressIndicator/index.d.ts +3 -0
- package/dist/ui/src/components/ProgressIndicator/index.d.ts.map +1 -0
- package/dist/ui/src/components/ProgressIndicator/types.d.ts +17 -0
- package/dist/ui/src/components/ProgressIndicator/types.d.ts.map +1 -0
- package/dist/ui/src/components/Radio/Radio.d.ts +1 -1
- package/dist/ui/src/components/Radio/Radio.d.ts.map +1 -1
- package/dist/ui/src/components/Radio/types.d.ts +2 -1
- package/dist/ui/src/components/Radio/types.d.ts.map +1 -1
- package/dist/ui/src/components/Switch/Switch.d.ts +1 -1
- package/dist/ui/src/components/Switch/Switch.d.ts.map +1 -1
- package/dist/ui/src/components/Switch/types.d.ts +2 -1
- package/dist/ui/src/components/Switch/types.d.ts.map +1 -1
- package/dist/ui/src/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/ui/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/ui/src/components/Tooltip/types.d.ts +6 -0
- package/dist/ui/src/components/Tooltip/types.d.ts.map +1 -1
- package/dist/ui/src/components/internal/ModalPresentation.d.ts +62 -0
- package/dist/ui/src/components/internal/ModalPresentation.d.ts.map +1 -0
- package/dist/ui/src/components/internal/OverlayPortalContext.d.ts +10 -0
- package/dist/ui/src/components/internal/OverlayPortalContext.d.ts.map +1 -0
- package/dist/ui/src/index.d.ts +7 -1
- package/dist/ui/src/index.d.ts.map +1 -1
- package/dist/ui/src/utils/motion.d.ts.map +1 -1
- package/dist/utils/motion.js +194 -135
- package/docs/api-conventions.md +4 -0
- package/docs/motion.md +4 -0
- package/docs/overlay-stacking.md +48 -0
- package/docs/responsive-foundation-profile.md +1 -1
- package/docs/scss-helpers.md +110 -5
- package/docs/selector-contract.md +126 -2
- package/docs/tokens.md +2 -0
- package/package.json +1 -1
- package/src/scss/foundations/atomic.scss +9 -8
- package/src/scss/index.scss +2 -0
- package/src/scss/mixins/_fluid.scss +57 -0
- package/src/scss/mixins/_fluid.test.ts +87 -0
- package/src/scss/mixins/_gradient.scss +99 -0
- package/src/scss/mixins/_gradient.test.ts +111 -0
- package/src/scss/mixins/_responsive.scss +2 -1
- package/src/scss/mixins/_typo.scss +2 -1
- package/src/scss/mixins/_units.scss +14 -0
- package/src/scss/mixins/_utils.scss +3 -22
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { compileString } from 'sass';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
|
|
4
|
+
function compile(source: string) {
|
|
5
|
+
return compileString(
|
|
6
|
+
`
|
|
7
|
+
@use 'gradient' as *;
|
|
8
|
+
|
|
9
|
+
${source}
|
|
10
|
+
`,
|
|
11
|
+
{
|
|
12
|
+
loadPaths: ['src/scss/mixins'],
|
|
13
|
+
style: 'compressed',
|
|
14
|
+
},
|
|
15
|
+
).css;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
describe('gradient helpers', () => {
|
|
19
|
+
it.each(['top', 'right', 'bottom', 'left'] as const)(
|
|
20
|
+
'creates a smooth easing gradient toward %s',
|
|
21
|
+
direction => {
|
|
22
|
+
const css = compile(`
|
|
23
|
+
.sample {
|
|
24
|
+
background-image: oc-easing-gradient(${direction}, red, transparent);
|
|
25
|
+
}
|
|
26
|
+
`);
|
|
27
|
+
|
|
28
|
+
expect(css).toContain(`linear-gradient(to ${direction}, red 0%`);
|
|
29
|
+
expect(css).toContain(
|
|
30
|
+
'color-mix(in srgb, red 95.703125%, transparent) calc(0% + (100% - 0%) * 0.125)',
|
|
31
|
+
);
|
|
32
|
+
expect(css).toContain(
|
|
33
|
+
'color-mix(in srgb, red 50%, transparent) calc(0% + (100% - 0%) * 0.5)',
|
|
34
|
+
);
|
|
35
|
+
expect(css).toContain('transparent 100%');
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
it('applies a two-sided mask with variable fade and content sizes', () => {
|
|
40
|
+
const css = compile(`
|
|
41
|
+
.sample {
|
|
42
|
+
@include oc-gradient-mask(
|
|
43
|
+
right,
|
|
44
|
+
var(--example-start-fade-size),
|
|
45
|
+
var(--example-end-fade-size),
|
|
46
|
+
var(--example-content-size)
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
`);
|
|
50
|
+
|
|
51
|
+
expect(css).toContain('-webkit-mask-image:linear-gradient(to right');
|
|
52
|
+
expect(css).toContain('mask-image:linear-gradient(to right');
|
|
53
|
+
expect(css).toContain('transparent 0px');
|
|
54
|
+
expect(css).toContain('black var(--example-start-fade-size)');
|
|
55
|
+
expect(css).toContain(
|
|
56
|
+
'black calc(var(--example-content-size) - var(--example-end-fade-size))',
|
|
57
|
+
);
|
|
58
|
+
expect(css).toContain('transparent var(--example-content-size)');
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('keeps zero-length fades valid with the default mask sizes', () => {
|
|
62
|
+
const css = compile(`
|
|
63
|
+
.sample {
|
|
64
|
+
@include oc-gradient-mask(bottom);
|
|
65
|
+
}
|
|
66
|
+
`);
|
|
67
|
+
|
|
68
|
+
expect(css).toContain('linear-gradient(to bottom, transparent 0px');
|
|
69
|
+
expect(css).toContain('black 0px');
|
|
70
|
+
expect(css).toContain('black calc(100% - 0px)');
|
|
71
|
+
expect(css).toContain('transparent 100%');
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('intersects block and inline masks for four independently sized edges', () => {
|
|
75
|
+
const css = compile(`
|
|
76
|
+
.sample {
|
|
77
|
+
@include oc-gradient-mask-edges(
|
|
78
|
+
var(--example-top-fade-size),
|
|
79
|
+
var(--example-right-fade-size),
|
|
80
|
+
var(--example-bottom-fade-size),
|
|
81
|
+
var(--example-left-fade-size),
|
|
82
|
+
var(--example-inline-content-size),
|
|
83
|
+
var(--example-block-content-size)
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
`);
|
|
87
|
+
|
|
88
|
+
expect(css).toContain('-webkit-mask-composite:source-in');
|
|
89
|
+
expect(css).toContain('mask-composite:intersect');
|
|
90
|
+
expect(css).toContain('-webkit-mask-image:linear-gradient(to bottom');
|
|
91
|
+
expect(css).toContain('),linear-gradient(to right');
|
|
92
|
+
expect(css).toContain('black var(--example-top-fade-size)');
|
|
93
|
+
expect(css).toContain('black var(--example-left-fade-size)');
|
|
94
|
+
expect(css).toContain(
|
|
95
|
+
'calc(var(--example-block-content-size) - var(--example-bottom-fade-size))',
|
|
96
|
+
);
|
|
97
|
+
expect(css).toContain(
|
|
98
|
+
'calc(var(--example-inline-content-size) - var(--example-right-fade-size))',
|
|
99
|
+
);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('rejects unsupported directions', () => {
|
|
103
|
+
expect(() =>
|
|
104
|
+
compile(`
|
|
105
|
+
.sample {
|
|
106
|
+
background-image: oc-easing-gradient(inline-start, red, blue);
|
|
107
|
+
}
|
|
108
|
+
`),
|
|
109
|
+
).toThrow('Unknown gradient direction: inline-start');
|
|
110
|
+
});
|
|
111
|
+
});
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
@use 'sass:meta';
|
|
5
5
|
@use '../foundations/responsive.config' as *;
|
|
6
6
|
@use './breakpoint' as *;
|
|
7
|
+
@use './fluid' as *;
|
|
7
8
|
@use './utils' as *;
|
|
8
9
|
|
|
9
10
|
$oc-responsive-stop-order: (min, sm, md, lg, xl, hg);
|
|
@@ -155,7 +156,7 @@ $oc-responsive-point-order: (min-sm, min-md, min-lg, min-xl, min-hg);
|
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
@if $oc-responsive-mode == fluid {
|
|
158
|
-
@return
|
|
159
|
+
@return oc-fluid($from, $to, $basis, $anchor);
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
@error "Unknown responsive mode '#{$oc-responsive-mode}'.";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
@use 'sass:list';
|
|
2
2
|
@use 'sass:map';
|
|
3
3
|
@use './breakpoint' as *;
|
|
4
|
+
@use './fluid' as *;
|
|
4
5
|
@use './utils' as *;
|
|
5
6
|
|
|
6
7
|
@mixin typo($variant, $weight: normal) {
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
$anchor: list.nth($value, 4);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
$clamp:
|
|
37
|
+
$clamp: oc-fluid(toRem($from), toRem($to), $basis, $anchor);
|
|
37
38
|
|
|
38
39
|
@if $key == sm {
|
|
39
40
|
@include respond-to(sm) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
|
|
3
|
+
$rem-unit: 16;
|
|
4
|
+
|
|
5
|
+
@function toRem($px) {
|
|
6
|
+
@return math.div($px, $rem-unit) * 1rem;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@function stripUnit($value) {
|
|
10
|
+
@if math.is-unitless($value) {
|
|
11
|
+
@return $value;
|
|
12
|
+
}
|
|
13
|
+
@return math.div($value, ($value * 0 + 1));
|
|
14
|
+
}
|
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
@use '
|
|
1
|
+
@use './fluid' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@function toRem($px) {
|
|
6
|
-
@return math.div($px, $rem-unit) * 1rem;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
@function stripUnit($value) {
|
|
10
|
-
@if math.is-unitless($value) {
|
|
11
|
-
@return $value;
|
|
12
|
-
}
|
|
13
|
-
@return math.div($value, ($value * 0 + 1));
|
|
14
|
-
}
|
|
3
|
+
@forward './units';
|
|
15
4
|
|
|
16
5
|
@function fluidClamp($from, $bp, $anchor: to, $to) {
|
|
17
|
-
$
|
|
18
|
-
@if $anchor == from {
|
|
19
|
-
$basis: $from;
|
|
20
|
-
}
|
|
21
|
-
$basis-num: stripUnit($basis);
|
|
22
|
-
$bp-num: stripUnit($bp);
|
|
23
|
-
$basis-px: $basis-num * $rem-unit;
|
|
24
|
-
|
|
25
|
-
@return clamp(#{$from}, calc(#{$basis-px} / #{$bp-num} * 100vw), #{$to});
|
|
6
|
+
@return oc-fluid($from, $to, $bp, $anchor);
|
|
26
7
|
}
|