@tylertech/forge 3.14.0-dev.5 → 3.14.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.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+
7
+ var styles = ":host{display:inline-block;vertical-align:bottom}:host([hidden]){display:none}.forge-secret{--_secret-blur:var(--forge-secret-blur, var(--forge-spacing-xsmall, 8px));--_secret-button-background:var(--forge-secret-button-background, var(--forge-theme-surface-inverse, #333333));--_secret-button-color:var(--forge-secret-button-color, var(--forge-theme-on-surface-inverse, #ffffff));--_secret-button-shape:var(--forge-secret-button-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_secret-button-padding:var(--forge-secret-button-padding, var(--forge-spacing-xsmall, 8px));--_secret-icon-size:var(--forge-secret-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1));--_secret-text-button-shape:var(--forge-secret-text-button-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));--_secret-text-decoration-line:var(--forge-secret-text-decoration-line, underline);--_secret-text-decoration-style:var(--forge-secret-text-decoration-style, dotted);--_secret-text-decoration-color:var(--forge-secret-text-decoration-color, inherit);--_secret-text-underline-offset:var(--forge-secret-text-underline-offset, var(--forge-spacing-xxxsmall, 2px));--_secret-transition-duration:var(--forge-secret-transition-duration, var(--forge-animation-duration-short4, 200ms));--_secret-transition-easing:var(--forge-secret-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)))}.forge-secret{display:flex;max-inline-size:fit-content}.reverse{flex-direction:row-reverse}.content{display:inline-block;position:relative;transition:filter var(--_secret-transition-duration) var(--_secret-transition-easing)}.blur{filter:blur(var(--_secret-blur))}.masked::before{content:attr(data-mask)}.masked slot:not([name]){display:none}.noise::before{content:\"\";position:absolute;inset:0;width:100%;height:100%;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"600\" height=\"600\"><filter id=\"noise\"><feTurbulence type=\"fractalNoise\" baseFrequency=\"0.85\" numOctaves=\"8\" stitchTiles=\"stitch\" /><feColorMatrix type=\"matrix\" values=\"0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0 0 0 1 0\" /></filter><rect width=\"100%\" height=\"100%\" filter=\"url(%23noise)\" opacity=\".5\" /></svg>');background-size:600px 600px;background-repeat:repeat;backdrop-filter:blur(24px)}.button{--forge-icon-button-background-color: var(--_secret-button-background);--forge-icon-button-icon-color: var(--_secret-button-color);--forge-icon-button-padding: 0;--forge-icon-button-shape: var(--_secret-button-shape);--forge-icon-button-size: 1lh;--forge-focus-indicator-outward-offset: 2px;block-size:0;padding-inline:var(--_secret-button-padding)}.icon{--forge-icon-font-size: var(--_secret-icon-size)}.text-button{--_button-dense-height:var(--forge-button-dense-height, 24px);--forge-button-background: var(--_secret-button-background);--forge-button-color: var(--_secret-button-color);--forge-button-shape: var(--_secret-text-button-shape);--forge-button-height: var(--_button-dense-height);--forge-focus-indicator-shape: var(--_secret-text-button-shape);padding:var(--_secret-button-padding);position:absolute;place-self:center;inset:0;translate:0;transition-property:inset-block-start,translate;transition-duration:var(--_secret-transition-duration);transition-timing-function:var(--_secret-transition-easing)}.show-on-hover:where(:hover,:has(button:focus-visible)) .content{filter:none}.show-on-hover:where(:hover,:has(button:focus-visible)) .content::before{visibility:hidden}.show-on-hover:where(:hover,:has(button:focus-visible)) .content slot:not([name]){display:initial}.show-on-hover:where(:hover,:has(button:focus-visible)) .masked{display:grid}.show-on-hover:where(:hover,:has(button:focus-visible)) .masked>*,.show-on-hover:where(:hover,:has(button:focus-visible)) .masked::before{grid-row:1;grid-column:1}.show-on-hover:where(:hover,:has(button:focus-visible)) .text-button{inset-block-start:-100%;translate:0 -50%}:host(:state(open)) .text-button{inset-block-start:-100%;translate:0 -50%}:host(:not(:state(open))) .forge-secret{cursor:pointer}:host(:not(:state(block)):state(open)) .content{text-decoration-line:var(--_secret-text-decoration-line);text-decoration-style:var(--_secret-text-decoration-style);text-decoration-color:var(--_secret-text-decoration-color);text-underline-offset:var(--_secret-text-underline-offset)}:host(:state(block)){display:block;vertical-align:initial}:host(:state(block)) .forge-secret{display:block;position:relative}:host(:state(block)) .content{display:block}@media(prefers-reduced-motion: reduce){.forge-secret{--_secret-transition-duration:var(--forge-secret-transition-duration, 0)}}[hidden]{display:none}";
8
+
9
+ export { styles as default };
@@ -4,6 +4,6 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
 
7
- var styles = ".forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));background-color:var(--forge-theme-outline, #e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:none}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width, 8px);width:calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, 8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width, 8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u0p183v;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p183v{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u0p184g;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p184g{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u0p184m;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p184m{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u0p1856;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p1856{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width, 8px);height:calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, 8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width, 8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u0p185b;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p185b{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u0p185d;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p185d{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u0p1868;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p1868{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u0p1877;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes u0p1877{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}:host{z-index:var(--forge-split-view-animating-layer) !important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width: 2px}";
7
+ var styles = ".forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));background-color:var(--forge-theme-outline, #e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:none}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width, 8px);width:calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, 8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width, 8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:ub6135y;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub6135y{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:ub6136m;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub6136m{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:ub6137i;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub6137i{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:ub6138h;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub6138h{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width, 8px);height:calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, 8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width, 8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:ub6138m;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub6138m{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:ub61396;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub61396{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:ub613a1;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub613a1{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:ub613aj;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1))}@keyframes ub613aj{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}:host{z-index:var(--forge-split-view-animating-layer) !important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width: 2px}";
8
8
 
9
9
  export { styles as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
- "version": "3.14.0-dev.5",
3
+ "version": "3.14.0",
4
4
  "description": "Tyler Forge™ Web Components library",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Tyler Technologies, Inc.",
@@ -52,11 +52,11 @@
52
52
  "dependencies": {
53
53
  "@floating-ui/dom": "^1.7.6",
54
54
  "@lit/context": "^1.1.6",
55
- "@tylertech/forge-core": "3.3.0-dev.0",
56
- "@tylertech/tyler-icons": "^2.0.4",
55
+ "@tylertech/tyler-icons": "^2.1.0",
57
56
  "imask": "^7.6.1",
58
57
  "lit": "^3.3.2",
59
- "tslib": "^2.8.1"
58
+ "tslib": "^2.8.1",
59
+ "@tylertech/forge-core": "3.3.0"
60
60
  },
61
- "publishedAt": "2026-03-26T17:42:19.460Z"
61
+ "publishedAt": "2026-04-02T12:09:51.416Z"
62
62
  }
@@ -0,0 +1,27 @@
1
+ @use 'sass:map';
2
+ @use '../../animation';
3
+ @use '../../spacing';
4
+ @use '../../shape';
5
+ @use '../../theme';
6
+ @use '../../typography';
7
+ @use '../../utils';
8
+
9
+ $tokens: (
10
+ blur: utils.module-val(secret, blur, spacing.variable(xsmall)),
11
+ button-background: utils.module-val(secret, button-background, theme.variable(surface-inverse)),
12
+ button-color: utils.module-val(secret, button-color, theme.variable(on-surface-inverse)),
13
+ button-shape: utils.module-val(secret, button-shape, shape.variable(medium)),
14
+ button-padding: utils.module-val(secret, button-padding, spacing.variable(xsmall)),
15
+ icon-size: utils.module-val(secret, icon-size, typography.font-size-relative('1000')),
16
+ text-button-shape: utils.module-val(secret, text-button-shape, shape.variable(full)),
17
+ text-decoration-line: utils.module-val(secret, text-decoration-line, underline),
18
+ text-decoration-style: utils.module-val(secret, text-decoration-style, dotted),
19
+ text-decoration-color: utils.module-val(secret, text-decoration-color, inherit),
20
+ text-underline-offset: utils.module-val(secret, text-underline-offset, spacing.variable(xxxsmall)),
21
+ transition-duration: utils.module-val(secret, transition-duration, animation.variable(duration-short4)),
22
+ transition-easing: utils.module-val(secret, transition-easing, animation.variable(easing-standard))
23
+ ) !default;
24
+
25
+ @function get($key) {
26
+ @return map.get($tokens, $key);
27
+ }
@@ -0,0 +1,169 @@
1
+ @use '../core/styles/typography';
2
+ @use './token-utils' as *;
3
+ @use '../button' as button;
4
+ @use '../focus-indicator' as focus-indicator;
5
+ @use '../icon-button' as icon-button;
6
+ @use '../icon' as icon;
7
+
8
+ @forward './token-utils';
9
+
10
+ @mixin host {
11
+ display: inline-block;
12
+ vertical-align: bottom;
13
+ }
14
+
15
+ @mixin host-block {
16
+ display: block;
17
+ vertical-align: initial;
18
+ }
19
+
20
+ @mixin base {
21
+ display: flex;
22
+ max-inline-size: fit-content;
23
+ }
24
+
25
+ @mixin base-reverse {
26
+ flex-direction: row-reverse;
27
+ }
28
+
29
+ @mixin base-block {
30
+ display: block;
31
+ position: relative;
32
+ }
33
+
34
+ @mixin content {
35
+ display: inline-block;
36
+ position: relative;
37
+ transition: filter #{token(transition-duration)} #{token(transition-easing)};
38
+ }
39
+
40
+ @mixin content-block {
41
+ display: block;
42
+ }
43
+
44
+ @mixin content-inline-open {
45
+ text-decoration-line: #{token(text-decoration-line)};
46
+ text-decoration-style: #{token(text-decoration-style)};
47
+ text-decoration-color: #{token(text-decoration-color)};
48
+ text-underline-offset: #{token(text-underline-offset)};
49
+ }
50
+
51
+ @mixin content-blur {
52
+ filter: blur(#{token(blur)});
53
+ }
54
+
55
+ @mixin content-masked {
56
+ &::before {
57
+ content: attr(data-mask);
58
+ }
59
+
60
+ slot:not([name]) {
61
+ display: none;
62
+ }
63
+ }
64
+
65
+ @mixin content-noise {
66
+ &::before {
67
+ content: '';
68
+ position: absolute;
69
+ inset: 0;
70
+ width: 100%;
71
+ height: 100%;
72
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600"><filter id="noise"><feTurbulence type="fractalNoise" baseFrequency="0.85" numOctaves="8" stitchTiles="stitch" /><feColorMatrix type="matrix" values="0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0 0 0 1 0" /></filter><rect width="100%" height="100%" filter="url(%23noise)" opacity=".5" /></svg>');
73
+ background-size: 600px 600px;
74
+ background-repeat: repeat;
75
+ backdrop-filter: blur(24px);
76
+ }
77
+ }
78
+
79
+ @mixin content-forced-open {
80
+ filter: none;
81
+
82
+ &::before {
83
+ visibility: hidden;
84
+ }
85
+
86
+ slot:not([name]) {
87
+ display: initial;
88
+ }
89
+ }
90
+
91
+ @mixin content-masked-forced-open {
92
+ // Using grid to force the masked and unmasked content into the same space, setting the width of
93
+ // the container to the maximum of the two and preventing layout shift while hovering
94
+ display: grid;
95
+
96
+ & > *,
97
+ &::before {
98
+ grid-row: 1;
99
+ grid-column: 1;
100
+ }
101
+ }
102
+
103
+ @mixin button {
104
+ @include icon-button.provide-theme(
105
+ (
106
+ background-color: #{token(button-background)},
107
+ icon-color: #{token(button-color)},
108
+ padding: 0,
109
+ shape: #{token(button-shape)},
110
+ size: 1lh
111
+ )
112
+ );
113
+ @include focus-indicator.provide-theme(
114
+ (
115
+ outward-offset: 2px
116
+ )
117
+ );
118
+
119
+ // Set the block size to 0 to prevent the button from affecting text layout
120
+ block-size: 0;
121
+ padding-inline: #{token(button-padding)};
122
+ }
123
+
124
+ @mixin text-button {
125
+ @include button.tokens(
126
+ $includes: (
127
+ dense-height
128
+ )
129
+ );
130
+ @include button.provide-theme(
131
+ (
132
+ background: #{token(button-background)},
133
+ color: #{token(button-color)},
134
+ shape: #{token(text-button-shape)},
135
+ height: #{button.token(dense-height)}
136
+ )
137
+ );
138
+ @include focus-indicator.provide-theme(
139
+ (
140
+ shape: #{token(text-button-shape)}
141
+ )
142
+ );
143
+
144
+ padding: #{token(button-padding)};
145
+ position: absolute;
146
+ place-self: center;
147
+ inset: 0;
148
+ translate: 0;
149
+ transition-property: inset-block-start, translate;
150
+ transition-duration: #{token(transition-duration)};
151
+ transition-timing-function: #{token(transition-easing)};
152
+ }
153
+
154
+ @mixin text-button-open {
155
+ inset-block-start: -100%;
156
+ translate: 0 -50%;
157
+ }
158
+
159
+ @mixin icon {
160
+ @include icon.provide-theme(
161
+ (
162
+ font-size: #{token(icon-size)}
163
+ )
164
+ );
165
+ }
166
+
167
+ @mixin closed {
168
+ cursor: pointer;
169
+ }
@@ -0,0 +1,25 @@
1
+ @use '../core/styles/tokens/secret/tokens';
2
+ @use '../core/styles/tokens/token-utils';
3
+
4
+ $_module: secret;
5
+ $_tokens: tokens.$tokens;
6
+
7
+ @mixin provide-theme($theme) {
8
+ @include token-utils.provide-theme($_module, $_tokens, $theme);
9
+ }
10
+
11
+ @function token($name, $type: token) {
12
+ @return token-utils.token($_module, $_tokens, $name, $type);
13
+ }
14
+
15
+ @function declare($token) {
16
+ @return token-utils.declare($_module, $token);
17
+ }
18
+
19
+ @mixin override($token, $token-or-value, $type: token) {
20
+ @include token-utils.override($_module, $_tokens, $token, $token-or-value, $type);
21
+ }
22
+
23
+ @mixin tokens($includes: null, $excludes: null) {
24
+ @include token-utils.tokens($_module, $_tokens, $includes, $excludes);
25
+ }
@@ -0,0 +1,111 @@
1
+ @use './core' as *;
2
+
3
+ .forge-secret {
4
+ @include tokens;
5
+ @include host;
6
+ @include base;
7
+
8
+ &__content {
9
+ @include content;
10
+ }
11
+
12
+ &__button {
13
+ @include button;
14
+ }
15
+
16
+ &__text-button {
17
+ @include text-button;
18
+ }
19
+
20
+ &__icon {
21
+ @include icon;
22
+ }
23
+
24
+ &--show-on-hover:where(:hover, :has(:where(.forge-secret__button, .forge-secret__text-button):focus-visible)) {
25
+ .forge-secret__content {
26
+ filter: none !important;
27
+
28
+ &::before {
29
+ display: none;
30
+ }
31
+ }
32
+
33
+ &.forge-secret--masked:not(.forge-secret--block) {
34
+ .forge-secret__content {
35
+ display: inline-block !important;
36
+ }
37
+
38
+ .forge-secret__masked {
39
+ &::before {
40
+ display: none;
41
+ }
42
+ }
43
+ }
44
+
45
+ .forge-secret__text-button {
46
+ @include text-button-open;
47
+ }
48
+ }
49
+
50
+ &--block {
51
+ @include host-block;
52
+ @include base-block;
53
+
54
+ .forge-secret__content {
55
+ @include content-block;
56
+ }
57
+ }
58
+
59
+ &:has(:where(.forge-secret__button, .forge-secret__text-button):not([aria-expanded='true'])) {
60
+ @include closed;
61
+
62
+ cursor: unset;
63
+
64
+ .forge-secret__content {
65
+ interactivity: inert;
66
+ user-select: none;
67
+ }
68
+
69
+ &:where(.forge-secret--blur, .forge-secret--block.forge-secret--masked) {
70
+ .forge-secret__content {
71
+ @include content-blur;
72
+ }
73
+ }
74
+
75
+ &.forge-secret--masked:not(.forge-secret--block) {
76
+ .forge-secret__content {
77
+ display: none;
78
+ }
79
+
80
+ .forge-secret__masked {
81
+ &::before {
82
+ content: attr(data-mask);
83
+ }
84
+ }
85
+ }
86
+
87
+ &.forge-secret--noise {
88
+ .forge-secret__content {
89
+ @include content-noise;
90
+ }
91
+ }
92
+ }
93
+
94
+ &:has(:where(.forge-secret__button, .forge-secret__text-button)[aria-expanded='true']) {
95
+ .forge-secret__text-button {
96
+ @include text-button-open;
97
+ }
98
+
99
+ &:not(.forge-secret--block) {
100
+ .forge-secret__content {
101
+ @include content-inline-open;
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ @media (prefers-reduced-motion: reduce) {
108
+ .forge-secret {
109
+ @include override(transition-duration, 0, 'value');
110
+ }
111
+ }
@@ -0,0 +1 @@
1
+ @forward './core';
@@ -0,0 +1,104 @@
1
+ @use './core' as *;
2
+ @use '../utils/mixins' as utils;
3
+
4
+ :host {
5
+ @include host;
6
+ }
7
+
8
+ :host([hidden]) {
9
+ display: none;
10
+ }
11
+
12
+ .forge-secret {
13
+ @include tokens;
14
+ }
15
+
16
+ .forge-secret {
17
+ @include base;
18
+ }
19
+
20
+ .reverse {
21
+ @include base-reverse;
22
+ }
23
+
24
+ .content {
25
+ @include content;
26
+ }
27
+
28
+ .blur {
29
+ @include content-blur;
30
+ }
31
+
32
+ .masked {
33
+ @include content-masked;
34
+ }
35
+
36
+ .noise {
37
+ @include content-noise;
38
+ }
39
+
40
+ .button {
41
+ @include button;
42
+ }
43
+
44
+ .icon {
45
+ @include icon;
46
+ }
47
+
48
+ .text-button {
49
+ @include text-button;
50
+ }
51
+
52
+ .show-on-hover:where(:hover, :has(button:focus-visible)) {
53
+ .content {
54
+ @include content-forced-open;
55
+ }
56
+
57
+ .masked {
58
+ @include content-masked-forced-open;
59
+ }
60
+
61
+ .text-button {
62
+ @include text-button-open;
63
+ }
64
+ }
65
+
66
+ :host(:state(open)) {
67
+ .text-button {
68
+ @include text-button-open;
69
+ }
70
+ }
71
+
72
+ :host(:not(:state(open))) {
73
+ .forge-secret {
74
+ @include closed;
75
+ }
76
+ }
77
+
78
+ :host(:not(:state(block)):state(open)) {
79
+ .content {
80
+ @include content-inline-open;
81
+ }
82
+ }
83
+
84
+ :host(:state(block)) {
85
+ @include host-block;
86
+
87
+ .forge-secret {
88
+ @include base-block;
89
+ }
90
+
91
+ .content {
92
+ @include content-block;
93
+ }
94
+ }
95
+
96
+ @media (prefers-reduced-motion: reduce) {
97
+ .forge-secret {
98
+ @include override(transition-duration, 0, 'value');
99
+ }
100
+ }
101
+
102
+ [hidden] {
103
+ display: none;
104
+ }