@jsenv/navi 0.2.0 → 0.3.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.
@@ -23,7 +23,6 @@ import {
23
23
  ReportDisabledOnLabelContext,
24
24
  ReportReadOnlyOnLabelContext,
25
25
  } from "./label.jsx";
26
- import "./navi_css_vars.js";
27
26
  import { useActionEvents } from "./use_action_events.js";
28
27
  import {
29
28
  DisabledContext,
@@ -39,121 +38,131 @@ import {
39
38
  } from "./use_ui_state_controller.js";
40
39
 
41
40
  import.meta.css = /* css */ `
42
- :root {
43
- --navi-checkmark-color-light: white;
44
- --navi-checkmark-color-dark: rgb(55, 55, 55);
45
- --navi-checkmark-color: var(--navi-checkmark-light-color);
46
- }
41
+ @layer navi {
42
+ :root {
43
+ --navi-checkmark-color-light: white;
44
+ --navi-checkmark-color-dark: rgb(55, 55, 55);
45
+ --navi-checkmark-color: var(--navi-checkmark-light-color);
46
+ }
47
47
 
48
- .navi_checkbox {
49
- position: relative;
50
- display: inline-flex;
51
- box-sizing: content-box;
48
+ .navi_checkbox {
49
+ position: relative;
50
+ display: inline-flex;
51
+ box-sizing: content-box;
52
52
 
53
- --outline-offset: 1px;
54
- --outline-width: 2px;
55
- --border-width: 1px;
56
- --border-radius: 2px;
57
- --width: 13px;
58
- --height: 13px;
53
+ --outline-offset: 1px;
54
+ --outline-width: 2px;
55
+ --border-width: 1px;
56
+ --border-radius: 2px;
57
+ --width: 13px;
58
+ --height: 13px;
59
59
 
60
- --outline-color: light-dark(#4476ff, #3b82f6);
61
- --border-color: light-dark(#767676, #8e8e93);
62
- --background-color: white;
63
- --accent-color: light-dark(#4476ff, #3b82f6);
64
- /* --color: currentColor; */
65
- --checkmark-color: var(--navi-checkmark-color);
60
+ --outline-color: light-dark(#4476ff, #3b82f6);
61
+ --border-color: light-dark(#767676, #8e8e93);
62
+ --background-color: white;
63
+ --accent-color: light-dark(#4476ff, #3b82f6);
64
+ /* --color: currentColor; */
65
+ --checkmark-color: var(--navi-checkmark-color);
66
66
 
67
- --border-color-readonly: color-mix(in srgb, var(--border-color) 30%, white);
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-readonly: #d3d3d3;
71
- --border-color-checked-disabled: #d3d3d3;
72
- --background-color-checked-readonly: var(--navi-background-color-readonly);
73
- --background-color-checked-disabled: var(--navi-background-color-disabled);
74
- --checkmark-color-readonly: var(--navi-color-readonly);
75
- --checkmark-color-disabled: var(--navi-color-disabled);
76
- }
77
- .navi_checkbox input {
78
- position: absolute;
79
- inset: 0;
80
- margin: 0;
81
- padding: 0;
82
- border: none;
83
- opacity: 0;
84
- cursor: inherit;
85
- }
86
- .navi_checkbox_field {
87
- display: inline-flex;
88
- box-sizing: border-box;
89
- width: var(--width);
90
- height: var(--height);
91
- margin: 3px 3px 3px 4px;
92
- background-color: var(--background-color);
93
- border-width: var(--border-width);
94
- border-style: solid;
95
- border-color: var(--border-color);
96
- border-radius: var(--border-radius);
97
- outline-width: var(--outline-width);
67
+ --border-color-readonly: color-mix(
68
+ in srgb,
69
+ var(--border-color) 30%,
70
+ white
71
+ );
72
+ --border-color-disabled: var(--border-color-readonly);
73
+ --border-color-hover: color-mix(in srgb, var(--border-color) 70%, black);
74
+ --border-color-checked-readonly: #d3d3d3;
75
+ --border-color-checked-disabled: #d3d3d3;
76
+ --background-color-checked-readonly: var(
77
+ --navi-background-color-readonly
78
+ );
79
+ --background-color-checked-disabled: var(
80
+ --navi-background-color-disabled
81
+ );
82
+ --checkmark-color-readonly: var(--navi-color-readonly);
83
+ --checkmark-color-disabled: var(--navi-color-disabled);
84
+ }
85
+ .navi_checkbox input {
86
+ position: absolute;
87
+ inset: 0;
88
+ margin: 0;
89
+ padding: 0;
90
+ border: none;
91
+ opacity: 0;
92
+ cursor: inherit;
93
+ }
94
+ .navi_checkbox_field {
95
+ display: inline-flex;
96
+ box-sizing: border-box;
97
+ width: var(--width);
98
+ height: var(--height);
99
+ margin: 3px 3px 3px 4px;
100
+ background-color: var(--background-color);
101
+ border-width: var(--border-width);
102
+ border-style: solid;
103
+ border-color: var(--border-color);
104
+ border-radius: var(--border-radius);
105
+ outline-width: var(--outline-width);
98
106
 
99
- outline-style: none;
107
+ outline-style: none;
100
108
 
101
- outline-color: var(--outline-color);
102
- outline-offset: var(--outline-offset);
103
- /* color: var(--color); */
104
- }
105
- .navi_checkbox_marker {
106
- width: 100%;
107
- height: 100%;
108
- opacity: 0;
109
- transform: scale(0.5);
110
- transition: all 0.15s ease;
111
- pointer-events: none;
112
- }
109
+ outline-color: var(--outline-color);
110
+ outline-offset: var(--outline-offset);
111
+ /* color: var(--color); */
112
+ }
113
+ .navi_checkbox_marker {
114
+ width: 100%;
115
+ height: 100%;
116
+ opacity: 0;
117
+ transform: scale(0.5);
118
+ transition: all 0.15s ease;
119
+ pointer-events: none;
120
+ }
113
121
 
114
- /* Focus */
115
- .navi_checkbox[data-focus-visible] .navi_checkbox_field {
116
- outline-style: solid;
117
- }
118
- /* Hover */
119
- .navi_checkbox[data-hover] .navi_checkbox_field {
120
- --border-color: var(--border-color-hover);
121
- }
122
- /* Checked */
123
- .navi_checkbox[data-checked] .navi_checkbox_field {
124
- --background-color: var(--accent-color);
125
- --border-color: var(--accent-color);
126
- }
127
- .navi_checkbox[data-checked] .navi_checkbox_marker {
128
- opacity: 1;
129
- stroke: var(--checkmark-color);
130
- transform: scale(1);
131
- }
132
- /* Readonly */
133
- .navi_checkbox[data-readonly] .navi_checkbox_field,
134
- .navi_checkbox[data-readonly][data-hover] .navi_checkbox_field {
135
- --border-color: var(--border-color-readonly);
136
- --background-color: var(--background-color-readonly);
137
- }
138
- .navi_checkbox[data-checked][data-readonly] .navi_checkbox_field {
139
- --background-color: var(--background-color-checked-readonly);
140
- --border-color: var(--border-color-checked-readonly);
141
- }
142
- .navi_checkbox[data-checked][data-readonly] .navi_checkbox_marker {
143
- stroke: var(--checkmark-color-readonly);
144
- }
145
- /* Disabled */
146
- .navi_checkbox[data-disabled] .navi_checkbox_field {
147
- --background-color: var(--background-color-disabled);
148
- --border-color: var(--border-color-disabled);
149
- }
150
- .navi_checkbox[data-checked][data-disabled] .navi_checkbox_field {
151
- --border-color: var(--border-color-checked-disabled);
152
- --background-color: var(--background-color-checked-disabled);
153
- }
122
+ /* Focus */
123
+ .navi_checkbox[data-focus-visible] .navi_checkbox_field {
124
+ outline-style: solid;
125
+ }
126
+ /* Hover */
127
+ .navi_checkbox[data-hover] .navi_checkbox_field {
128
+ --border-color: var(--border-color-hover);
129
+ }
130
+ /* Checked */
131
+ .navi_checkbox[data-checked] .navi_checkbox_field {
132
+ --background-color: var(--accent-color);
133
+ --border-color: var(--accent-color);
134
+ }
135
+ .navi_checkbox[data-checked] .navi_checkbox_marker {
136
+ opacity: 1;
137
+ stroke: var(--checkmark-color);
138
+ transform: scale(1);
139
+ }
140
+ /* Readonly */
141
+ .navi_checkbox[data-readonly] .navi_checkbox_field,
142
+ .navi_checkbox[data-readonly][data-hover] .navi_checkbox_field {
143
+ --border-color: var(--border-color-readonly);
144
+ --background-color: var(--background-color-readonly);
145
+ }
146
+ .navi_checkbox[data-checked][data-readonly] .navi_checkbox_field {
147
+ --background-color: var(--background-color-checked-readonly);
148
+ --border-color: var(--border-color-checked-readonly);
149
+ }
150
+ .navi_checkbox[data-checked][data-readonly] .navi_checkbox_marker {
151
+ stroke: var(--checkmark-color-readonly);
152
+ }
153
+ /* Disabled */
154
+ .navi_checkbox[data-disabled] .navi_checkbox_field {
155
+ --background-color: var(--background-color-disabled);
156
+ --border-color: var(--border-color-disabled);
157
+ }
158
+ .navi_checkbox[data-checked][data-disabled] .navi_checkbox_field {
159
+ --border-color: var(--border-color-checked-disabled);
160
+ --background-color: var(--background-color-checked-disabled);
161
+ }
154
162
 
155
- .navi_checkbox[data-checked][data-disabled] .navi_checkbox_marker {
156
- stroke: var(--checkmark-color-disabled);
163
+ .navi_checkbox[data-checked][data-disabled] .navi_checkbox_marker {
164
+ stroke: var(--checkmark-color-disabled);
165
+ }
157
166
  }
158
167
  `;
159
168
 
@@ -240,7 +249,7 @@ const InputCheckboxBasic = forwardRef((props, ref) => {
240
249
  readOnly={innerReadOnly}
241
250
  disabled={innerDisabled}
242
251
  required={innerRequired}
243
- data-validation-message-arrow-x="center"
252
+ data-callout-arrow-x="center"
244
253
  onClick={(e) => {
245
254
  if (innerReadOnly) {
246
255
  e.preventDefault();
@@ -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
 
@@ -289,7 +299,7 @@ const InputRadioBasic = forwardRef((props, ref) => {
289
299
  checked={checked}
290
300
  disabled={innerDisabled}
291
301
  required={innerRequired}
292
- data-validation-message-arrow-x="center"
302
+ data-callout-arrow-x="center"
293
303
  onClick={(e) => {
294
304
  if (innerReadOnly) {
295
305
  e.preventDefault();