@jsenv/navi 0.2.0 → 0.2.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.
@@ -32,152 +32,162 @@ import {
32
32
  } from "./use_ui_state_controller.js";
33
33
 
34
34
  import.meta.css = /* css */ `
35
- :root {
36
- --navi-radiomark-color: light-dark(#4476ff, #3b82f6);
37
- }
35
+ @layer navi {
36
+ :root {
37
+ --navi-radiomark-color: light-dark(#4476ff, #3b82f6);
38
+ }
38
39
 
39
- .navi_radio {
40
- position: relative;
41
- display: inline-flex;
42
- box-sizing: content-box;
40
+ .navi_radio {
41
+ position: relative;
42
+ display: inline-flex;
43
+ box-sizing: content-box;
43
44
 
44
- --outline-offset: 1px;
45
- --outline-width: 2px;
46
- --width: 13px;
47
- --height: 13px;
45
+ --outline-offset: 1px;
46
+ --outline-width: 2px;
47
+ --width: 13px;
48
+ --height: 13px;
48
49
 
49
- --outline-color: light-dark(#4476ff, #3b82f6);
50
- --border-color: light-dark(#767676, #8e8e93);
51
- --background-color: white;
52
- --accent-color: var(--navi-radiomark-color);
53
- --mark-color: var(--accent-color);
50
+ --outline-color: light-dark(#4476ff, #3b82f6);
51
+ --border-color: light-dark(#767676, #8e8e93);
52
+ --background-color: white;
53
+ --accent-color: var(--navi-radiomark-color);
54
+ --mark-color: var(--accent-color);
54
55
 
55
- /* light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3)); */
56
- --accent-color-checked: color-mix(in srgb, var(--accent-color) 70%, black);
56
+ /* light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3)); */
57
+ --accent-color-checked: color-mix(
58
+ in srgb,
59
+ var(--accent-color) 70%,
60
+ black
61
+ );
57
62
 
58
- --border-color-readonly: color-mix(in srgb, var(--border-color) 30%, white);
59
- --border-color-disabled: var(--border-color-readonly);
60
- --border-color-hover: color-mix(in srgb, var(--border-color) 70%, black);
61
- --border-color-checked: var(--accent-color);
62
- --border-color-checked-hover: var(--accent-color-checked);
63
- --border-color-checked-readonly: #d3d3d3;
64
- --border-color-checked-disabled: #d3d3d3;
65
- --background-color-readonly: var(--background-color);
66
- --background-color-disabled: var(--background-color);
67
- --background-color-checked-readonly: #d3d3d3;
68
- --background-color-checked-disabled: var(--background-color);
69
- --mark-color-hover: var(--accent-color-checked);
70
- --mark-color-readonly: grey;
71
- --mark-color-disabled: #eeeeee;
72
- }
73
- .navi_radio input {
74
- position: absolute;
75
- inset: 0;
76
- margin: 0;
77
- padding: 0;
78
- opacity: 0;
79
- cursor: inherit;
80
- }
81
- .navi_radio_field {
82
- display: inline-flex;
83
- width: var(--width);
84
- height: var(--height);
85
- margin-top: 3px;
86
- margin-right: 3px;
87
- margin-left: 5px;
88
- align-items: center;
89
- justify-content: center;
90
- border-radius: 50%;
91
- outline-width: var(--outline-width);
63
+ --border-color-readonly: color-mix(
64
+ in srgb,
65
+ var(--border-color) 30%,
66
+ white
67
+ );
68
+ --border-color-disabled: var(--border-color-readonly);
69
+ --border-color-hover: color-mix(in srgb, var(--border-color) 70%, black);
70
+ --border-color-checked: var(--accent-color);
71
+ --border-color-checked-hover: var(--accent-color-checked);
72
+ --border-color-checked-readonly: #d3d3d3;
73
+ --border-color-checked-disabled: #d3d3d3;
74
+ --background-color-readonly: var(--background-color);
75
+ --background-color-disabled: var(--background-color);
76
+ --background-color-checked-readonly: #d3d3d3;
77
+ --background-color-checked-disabled: var(--background-color);
78
+ --mark-color-hover: var(--accent-color-checked);
79
+ --mark-color-readonly: grey;
80
+ --mark-color-disabled: #eeeeee;
81
+ }
82
+ .navi_radio input {
83
+ position: absolute;
84
+ inset: 0;
85
+ margin: 0;
86
+ padding: 0;
87
+ opacity: 0;
88
+ cursor: inherit;
89
+ }
90
+ .navi_radio_field {
91
+ display: inline-flex;
92
+ width: var(--width);
93
+ height: var(--height);
94
+ margin-top: 3px;
95
+ margin-right: 3px;
96
+ margin-left: 5px;
97
+ align-items: center;
98
+ justify-content: center;
99
+ border-radius: 50%;
100
+ outline-width: var(--outline-width);
92
101
 
93
- outline-style: none;
102
+ outline-style: none;
94
103
 
95
- outline-color: var(--outline-color);
104
+ outline-color: var(--outline-color);
96
105
 
97
- outline-offset: var(--outline-offset);
98
- }
99
- .navi_radio_field svg {
100
- overflow: visible;
101
- }
102
- .navi_radio_border {
103
- fill: var(--background-color);
104
- stroke: var(--border-color);
105
- }
106
- .navi_radio_marker {
107
- width: 100%;
108
- height: 100%;
109
- opacity: 0;
110
- fill: var(--mark-color);
111
- transform: scale(0.3);
112
- transform-origin: center;
113
- pointer-events: none;
114
- }
115
- .navi_radio_dashed_border {
116
- display: none;
117
- }
118
- .navi_radio[data-transition] .navi_radio_marker {
119
- transition: all 0.15s ease;
120
- }
121
- .navi_radio[data-transition] .navi_radio_dashed_border {
122
- transition: all 0.15s ease;
123
- }
124
- .navi_radio[data-transition] .navi_radio_border {
125
- transition: all 0.15s ease;
126
- }
106
+ outline-offset: var(--outline-offset);
107
+ }
108
+ .navi_radio_field svg {
109
+ overflow: visible;
110
+ }
111
+ .navi_radio_border {
112
+ fill: var(--background-color);
113
+ stroke: var(--border-color);
114
+ }
115
+ .navi_radio_marker {
116
+ width: 100%;
117
+ height: 100%;
118
+ opacity: 0;
119
+ fill: var(--mark-color);
120
+ transform: scale(0.3);
121
+ transform-origin: center;
122
+ pointer-events: none;
123
+ }
124
+ .navi_radio_dashed_border {
125
+ display: none;
126
+ }
127
+ .navi_radio[data-transition] .navi_radio_marker {
128
+ transition: all 0.15s ease;
129
+ }
130
+ .navi_radio[data-transition] .navi_radio_dashed_border {
131
+ transition: all 0.15s ease;
132
+ }
133
+ .navi_radio[data-transition] .navi_radio_border {
134
+ transition: all 0.15s ease;
135
+ }
127
136
 
128
- /* Focus */
129
- .navi_radio[data-focus-visible] .navi_radio_field {
130
- outline-style: solid;
131
- }
132
- /* Hover */
133
- .navi_radio[data-hover] .navi_radio_border {
134
- stroke: var(--border-color-hover);
135
- }
136
- .navi_radio[data-hover] .navi_radio_marker {
137
- fill: var(--mark-color-hover);
138
- }
139
- /* Checked */
140
- .navi_radio[data-checked] .navi_radio_border {
141
- stroke: var(--border-color-checked);
142
- }
143
- .navi_radio[data-checked] .navi_radio_marker {
144
- opacity: 1;
145
- transform: scale(1);
146
- }
147
- .navi_radio[data-hover][data-checked] .navi_radio_border {
148
- stroke: var(--border-color-checked-hover);
149
- }
150
- /* Readonly */
151
- .navi_radio[data-readonly] .navi_radio_border {
152
- fill: var(--background-color-readonly);
153
- stroke: var(--border-color-readonly);
154
- }
155
- .navi_radio[data-readonly] .navi_radio_marker {
156
- fill: var(--mark-color-readonly);
157
- }
158
- .navi_radio[data-readonly] .navi_radio_dashed_border {
159
- display: none;
160
- }
161
- .navi_radio[data-checked][data-readonly] .navi_radio_border {
162
- fill: var(--background-color-checked-readonly);
163
- stroke: var(--border-color-checked-readonly);
164
- }
165
- .navi_radio[data-checked][data-readonly] .navi_radio_marker {
166
- fill: var(--mark-color-readonly);
167
- }
168
- /* Disabled */
169
- .navi_radio[data-disabled] .navi_radio_border {
170
- fill: var(--background-color-disabled);
171
- stroke: var(--border-color-disabled);
172
- }
173
- .navi_radio[data-disabled] .navi_radio_marker {
174
- fill: var(--mark-color-disabled);
175
- }
176
- .navi_radio[data-hover][data-checked][data-disabled] .navi_radio_border {
177
- stroke: var(--border-color-disabled);
178
- }
179
- .navi_radio[data-checked][data-disabled] .navi_radio_marker {
180
- fill: var(--mark-color-disabled);
137
+ /* Focus */
138
+ .navi_radio[data-focus-visible] .navi_radio_field {
139
+ outline-style: solid;
140
+ }
141
+ /* Hover */
142
+ .navi_radio[data-hover] .navi_radio_border {
143
+ stroke: var(--border-color-hover);
144
+ }
145
+ .navi_radio[data-hover] .navi_radio_marker {
146
+ fill: var(--mark-color-hover);
147
+ }
148
+ /* Checked */
149
+ .navi_radio[data-checked] .navi_radio_border {
150
+ stroke: var(--border-color-checked);
151
+ }
152
+ .navi_radio[data-checked] .navi_radio_marker {
153
+ opacity: 1;
154
+ transform: scale(1);
155
+ }
156
+ .navi_radio[data-hover][data-checked] .navi_radio_border {
157
+ stroke: var(--border-color-checked-hover);
158
+ }
159
+ /* Readonly */
160
+ .navi_radio[data-readonly] .navi_radio_border {
161
+ fill: var(--background-color-readonly);
162
+ stroke: var(--border-color-readonly);
163
+ }
164
+ .navi_radio[data-readonly] .navi_radio_marker {
165
+ fill: var(--mark-color-readonly);
166
+ }
167
+ .navi_radio[data-readonly] .navi_radio_dashed_border {
168
+ display: none;
169
+ }
170
+ .navi_radio[data-checked][data-readonly] .navi_radio_border {
171
+ fill: var(--background-color-checked-readonly);
172
+ stroke: var(--border-color-checked-readonly);
173
+ }
174
+ .navi_radio[data-checked][data-readonly] .navi_radio_marker {
175
+ fill: var(--mark-color-readonly);
176
+ }
177
+ /* Disabled */
178
+ .navi_radio[data-disabled] .navi_radio_border {
179
+ fill: var(--background-color-disabled);
180
+ stroke: var(--border-color-disabled);
181
+ }
182
+ .navi_radio[data-disabled] .navi_radio_marker {
183
+ fill: var(--mark-color-disabled);
184
+ }
185
+ .navi_radio[data-hover][data-checked][data-disabled] .navi_radio_border {
186
+ stroke: var(--border-color-disabled);
187
+ }
188
+ .navi_radio[data-checked][data-disabled] .navi_radio_marker {
189
+ fill: var(--mark-color-disabled);
190
+ }
181
191
  }
182
192
  `;
183
193
 
@@ -34,7 +34,6 @@ import { useExecuteAction } from "../action_execution/use_execute_action.js";
34
34
  import { LoadableInlineElement } from "../loader/loader_background.jsx";
35
35
  import { useAutoFocus } from "../use_auto_focus.js";
36
36
  import { initCustomField } from "./custom_field.js";
37
- import "./field_css.js";
38
37
  import { ReportReadOnlyOnLabelContext } from "./label.jsx";
39
38
  import { useActionEvents } from "./use_action_events.js";
40
39
  import {
@@ -49,80 +48,82 @@ import {
49
48
  } from "./use_ui_state_controller.js";
50
49
 
51
50
  import.meta.css = /* css */ `
52
- .navi_input {
53
- --border-width: 1px;
54
- --outline-width: 1px;
55
- --outer-width: calc(var(--border-width) + var(--outline-width));
56
- --padding-x: 6px;
57
- --padding-y: 1px;
58
-
59
- --outline-color: light-dark(#4476ff, #3b82f6);
60
-
61
- --border-radius: 2px;
62
- --border-color: light-dark(#767676, #8e8e93);
63
- --border-color-hover: color-mix(in srgb, var(--border-color) 70%, black);
64
- --border-color-active: color-mix(in srgb, var(--border-color) 90%, black);
65
- --border-color-readonly: color-mix(
66
- in srgb,
67
- var(--border-color) 45%,
68
- transparent
69
- );
70
- --border-color-disabled: var(--border-color-readonly);
71
-
72
- --background-color: white;
73
- --background-color-hover: color-mix(
74
- in srgb,
75
- var(--background-color) 95%,
76
- black
77
- );
78
- --background-color-readonly: var(--background-color);
79
- --background-color-disabled: color-mix(
80
- in srgb,
81
- var(--background-color) 60%,
82
- transparent
83
- );
84
-
85
- --color: currentColor;
86
- --color-readonly: color-mix(in srgb, currentColor 60%, transparent);
87
- --color-disabled: var(--color-readonly);
88
- color: var(--color);
89
-
90
- background-color: var(--background-color);
91
- border-width: var(--outer-width);
92
- border-width: var(--outer-width);
93
- border-style: solid;
94
- border-color: transparent;
95
- border-radius: var(--border-radius);
96
- outline-width: var(--border-width);
97
- outline-style: solid;
98
- outline-color: var(--border-color);
99
- outline-offset: calc(-1 * (var(--border-width)));
100
- }
101
- /* Focus */
102
- .navi_input[data-focus] {
103
- border-color: var(--outline-color);
104
- outline-width: var(--outer-width);
105
- outline-color: var(--outline-color);
106
- outline-offset: calc(-1 * var(--outer-width));
107
- }
108
- /* Readonly */
109
- .navi_input[data-readonly] {
110
- color: var(--color-readonly);
111
- background-color: var(--background-color-readonly);
112
- outline-color: var(--border-color-readonly);
113
- }
114
- .navi_input[data-readonly]::placeholder {
115
- color: var(--color-readonly);
116
- }
117
- /* Disabled */
118
- .navi_input[data-disabled] {
119
- color: var(--color-disabled);
120
- background-color: var(--background-color-disabled);
121
- outline-color: var(--border-color-disabled);
122
- }
123
- /* Invalid */
124
- .navi_input[aria-invalid="true"] {
125
- border-color: var(--invalid-color);
51
+ @layer navi {
52
+ .navi_input {
53
+ --border-width: 1px;
54
+ --outline-width: 1px;
55
+ --outer-width: calc(var(--border-width) + var(--outline-width));
56
+ --padding-x: 6px;
57
+ --padding-y: 1px;
58
+
59
+ --outline-color: light-dark(#4476ff, #3b82f6);
60
+
61
+ --border-radius: 2px;
62
+ --border-color: light-dark(#767676, #8e8e93);
63
+ --border-color-hover: color-mix(in srgb, var(--border-color) 70%, black);
64
+ --border-color-active: color-mix(in srgb, var(--border-color) 90%, black);
65
+ --border-color-readonly: color-mix(
66
+ in srgb,
67
+ var(--border-color) 45%,
68
+ transparent
69
+ );
70
+ --border-color-disabled: var(--border-color-readonly);
71
+
72
+ --background-color: white;
73
+ --background-color-hover: color-mix(
74
+ in srgb,
75
+ var(--background-color) 95%,
76
+ black
77
+ );
78
+ --background-color-readonly: var(--background-color);
79
+ --background-color-disabled: color-mix(
80
+ in srgb,
81
+ var(--background-color) 60%,
82
+ transparent
83
+ );
84
+
85
+ --color: currentColor;
86
+ --color-readonly: color-mix(in srgb, currentColor 60%, transparent);
87
+ --color-disabled: var(--color-readonly);
88
+ color: var(--color);
89
+
90
+ background-color: var(--background-color);
91
+ border-width: var(--outer-width);
92
+ border-width: var(--outer-width);
93
+ border-style: solid;
94
+ border-color: transparent;
95
+ border-radius: var(--border-radius);
96
+ outline-width: var(--border-width);
97
+ outline-style: solid;
98
+ outline-color: var(--border-color);
99
+ outline-offset: calc(-1 * (var(--border-width)));
100
+ }
101
+ /* Focus */
102
+ .navi_input[data-focus] {
103
+ border-color: var(--outline-color);
104
+ outline-width: var(--outer-width);
105
+ outline-color: var(--outline-color);
106
+ outline-offset: calc(-1 * var(--outer-width));
107
+ }
108
+ /* Readonly */
109
+ .navi_input[data-readonly] {
110
+ color: var(--color-readonly);
111
+ background-color: var(--background-color-readonly);
112
+ outline-color: var(--border-color-readonly);
113
+ }
114
+ .navi_input[data-readonly]::placeholder {
115
+ color: var(--color-readonly);
116
+ }
117
+ /* Disabled */
118
+ .navi_input[data-disabled] {
119
+ color: var(--color-disabled);
120
+ background-color: var(--background-color-disabled);
121
+ outline-color: var(--border-color-disabled);
122
+ }
123
+ /* Invalid */
124
+ .navi_input[aria-invalid="true"] {
125
+ border-color: var(--invalid-color);
126
+ }
126
127
  }
127
128
  `;
128
129
 
@@ -3,14 +3,16 @@ import { forwardRef } from "preact/compat";
3
3
  import { useImperativeHandle, useRef, useState } from "preact/hooks";
4
4
 
5
5
  import.meta.css = /* css */ `
6
- label {
7
- cursor: pointer;
8
- }
6
+ @layer navi {
7
+ label {
8
+ cursor: pointer;
9
+ }
9
10
 
10
- label[data-readonly],
11
- label[data-disabled] {
12
- color: rgba(0, 0, 0, 0.5);
13
- cursor: default;
11
+ label[data-readonly],
12
+ label[data-disabled] {
13
+ color: rgba(0, 0, 0, 0.5);
14
+ cursor: default;
15
+ }
14
16
  }
15
17
  `;
16
18
 
@@ -1,8 +1,10 @@
1
1
  import.meta.css = /* css */ `
2
- :root {
3
- --navi-background-color-readonly: #d3d3d3;
4
- --navi-color-readonly: grey;
5
- --navi-background-color-disabled: #d3d3d3;
6
- --navi-color-disabled: #eeeeee;
2
+ @layer navi {
3
+ :root {
4
+ --navi-background-color-readonly: #d3d3d3;
5
+ --navi-color-readonly: grey;
6
+ --navi-background-color-disabled: #d3d3d3;
7
+ --navi-color-disabled: #eeeeee;
8
+ }
7
9
  }
8
10
  `;
@@ -28,9 +28,11 @@ import {
28
28
  } from "./use_ui_state_controller.js";
29
29
 
30
30
  import.meta.css = /* css */ `
31
- .navi_radio_list {
32
- display: flex;
33
- flex-direction: column;
31
+ @layer navi {
32
+ .navi_radio_list {
33
+ display: flex;
34
+ flex-direction: column;
35
+ }
34
36
  }
35
37
  `;
36
38