@yuneta/gobj-ui 7.23.93 → 7.23.94

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/README.md CHANGED
@@ -2245,6 +2245,14 @@ against the scheme background, the raw tokens as ink are
2245
2245
  Bulma computes `-on-scheme` per scheme: the same hue, darkened on a light
2246
2246
  page (`warning` goes to 23% lightness), unchanged on a dark one.
2247
2247
 
2248
+ **Quiet text**: `.yui-text-quiet` (the text colour at 75%), never Bulma's
2249
+ `has-text-grey` — one mid grey for both schemes, 3.86:1 on the dark one, and
2250
+ what the library writes in grey is an empty state, a timestamp, a topic id, a
2251
+ notice's detail: text somebody has to read. And a **placeholder** is text
2252
+ too; the shell's stylesheet raises Bulma's 30% alpha to 70% (2.47:1 → 7.96 in
2253
+ dark) where Bulma declares the variable, since a `:root` override does not
2254
+ reach it.
2255
+
2248
2256
  ### i18n: a string must be able to CHANGE language, not just be translated once
2249
2257
 
2250
2258
  Passing a string through `t()` is **not** enough. `refresh_language()` only
@@ -10651,7 +10651,7 @@ function yui_graph_camera_items(gobj, graph, wide) {
10651
10651
  [
10652
10652
  "span",
10653
10653
  {
10654
- class: "GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 has-text-grey",
10654
+ class: "GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 yui-text-quiet",
10655
10655
  style: "font-size:.85rem; min-width:3.5em; justify-content:center;",
10656
10656
  title: (0, i18next.t)("zoom level"),
10657
10657
  "data-i18n-title": "zoom level"
@@ -13427,7 +13427,7 @@ function render_graph(gobj) {
13427
13427
  $graph.appendChild((0, _yuneta_gobj_js.createElement2)([
13428
13428
  "div",
13429
13429
  {
13430
- class: "JSON_EMPTY has-text-grey p-3",
13430
+ class: "JSON_EMPTY yui-text-quiet p-3",
13431
13431
  "data-i18n": "no data"
13432
13432
  },
13433
13433
  "no data"
@@ -13496,7 +13496,7 @@ function render_text(gobj) {
13496
13496
  $text.appendChild((0, _yuneta_gobj_js.createElement2)([
13497
13497
  "div",
13498
13498
  {
13499
- class: "JSON_EMPTY has-text-grey p-3",
13499
+ class: "JSON_EMPTY yui-text-quiet p-3",
13500
13500
  "data-i18n": "no data"
13501
13501
  },
13502
13502
  "no data"
@@ -13540,7 +13540,7 @@ function render_tree(gobj) {
13540
13540
  $tree.appendChild((0, _yuneta_gobj_js.createElement2)([
13541
13541
  "div",
13542
13542
  {
13543
- class: "JSON_EMPTY has-text-grey p-3",
13543
+ class: "JSON_EMPTY yui-text-quiet p-3",
13544
13544
  "data-i18n": "no data"
13545
13545
  },
13546
13546
  "no data"
@@ -13716,7 +13716,7 @@ function toggle_row(gobj, key, size, is_object, depth, path, open, value) {
13716
13716
  }
13717
13717
  body.push([
13718
13718
  "span",
13719
- { class: "JSON_SUMMARY has-text-grey" },
13719
+ { class: "JSON_SUMMARY yui-text-quiet" },
13720
13720
  summary
13721
13721
  ]);
13722
13722
  let label = container_label(value, MAX_LABEL_CHARS);
@@ -13786,7 +13786,7 @@ function leaf_row(key, value, depth) {
13786
13786
  let wall = format_epoch(value);
13787
13787
  if (wall) body.push([
13788
13788
  "span",
13789
- { class: "JSON_TIME is-size-7 has-text-grey ml-2" },
13789
+ { class: "JSON_TIME is-size-7 yui-text-quiet ml-2" },
13790
13790
  wall
13791
13791
  ]);
13792
13792
  }
@@ -15723,7 +15723,7 @@ function render_raw(gobj) {
15723
15723
  $raw.appendChild((0, _yuneta_gobj_js.createElement2)([
15724
15724
  "div",
15725
15725
  {
15726
- class: "GCLASS_EMPTY p-4 has-text-grey",
15726
+ class: "GCLASS_EMPTY p-4 yui-text-quiet",
15727
15727
  i18n: "no data"
15728
15728
  },
15729
15729
  (0, i18next.t)("no data")
@@ -15739,7 +15739,7 @@ function render_raw(gobj) {
15739
15739
  if (dump.capped) children.push([
15740
15740
  "div",
15741
15741
  {
15742
- class: "GCLASS_RAW_CAPPED has-text-grey is-size-7 p-2",
15742
+ class: "GCLASS_RAW_CAPPED yui-text-quiet is-size-7 p-2",
15743
15743
  i18n: "text truncated"
15744
15744
  },
15745
15745
  (0, i18next.t)("text truncated")
@@ -15772,7 +15772,7 @@ function render_zones(gobj) {
15772
15772
  $zones.appendChild((0, _yuneta_gobj_js.createElement2)([
15773
15773
  "div",
15774
15774
  {
15775
- class: "GCLASS_EMPTY p-4 has-text-grey",
15775
+ class: "GCLASS_EMPTY p-4 yui-text-quiet",
15776
15776
  i18n: "no data"
15777
15777
  },
15778
15778
  (0, i18next.t)("no data")
@@ -20959,7 +20959,7 @@ function build_body(shell, t) {
20959
20959
  ]);
20960
20960
  let $count = (0, _yuneta_gobj_js.createElement2)([
20961
20961
  "span",
20962
- { class: "ROUTEMAP_COUNT is-size-7 has-text-grey is-hidden" },
20962
+ { class: "ROUTEMAP_COUNT is-size-7 yui-text-quiet is-hidden" },
20963
20963
  [$count_n]
20964
20964
  ]);
20965
20965
  let $refs_input = (0, _yuneta_gobj_js.createElement2)(["input", {
@@ -24751,7 +24751,7 @@ function create_tabulator(gobj) {
24751
24751
  index: pkey,
24752
24752
  columns,
24753
24753
  selectableRows: selectable,
24754
- footerElement: "<span class='yui-tabulator-rowcount' style='display:block;text-align:right;font-size:0.8rem;color:#6b7280;padding:0 0.6rem;'></span>"
24754
+ footerElement: "<span class='yui-tabulator-rowcount yui-text-quiet' style='display:block;text-align:right;font-size:0.8rem;padding:0 0.6rem;'></span>"
24755
24755
  });
24756
24756
  let $view_container = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container");
24757
24757
  let $table_el = $view_container ? $view_container.querySelector(`#${table_id}`) : null;
@@ -24911,7 +24911,7 @@ function icon_formatter(cell) {
24911
24911
  if (!/^[a-z0-9-]+$/.test(name) || !yui_icon_is_defined(name)) return (0, _yuneta_gobj_js.createElement2)([
24912
24912
  "span",
24913
24913
  {
24914
- class: "ICON_CELL_UNKNOWN is-size-7 has-text-grey",
24914
+ class: "ICON_CELL_UNKNOWN is-size-7 yui-text-quiet",
24915
24915
  title: name
24916
24916
  },
24917
24917
  name
@@ -64451,7 +64451,7 @@ function build_graph(gobj) {
64451
64451
  let $empty = (0, _yuneta_gobj_js.createElement2)([
64452
64452
  "div",
64453
64453
  {
64454
- class: "TREEDB_SCHEMA_EMPTY p-4 has-text-grey",
64454
+ class: "TREEDB_SCHEMA_EMPTY p-4 yui-text-quiet",
64455
64455
  i18n: "no topics"
64456
64456
  },
64457
64457
  (0, i18next.t)("no topics", { defaultValue: "No topics" })
@@ -66525,7 +66525,7 @@ function build_ui$1(gobj) {
66525
66525
  ],
66526
66526
  [
66527
66527
  "div",
66528
- { class: "SCHEMA_NOTICE p-4 has-text-grey is-hidden" },
66528
+ { class: "SCHEMA_NOTICE p-4 yui-text-quiet is-hidden" },
66529
66529
  []
66530
66530
  ],
66531
66531
  [
@@ -66825,7 +66825,7 @@ function show_notice(gobj, key, detail) {
66825
66825
  ]));
66826
66826
  if (detail) $notice.appendChild((0, _yuneta_gobj_js.createElement2)([
66827
66827
  "span",
66828
- { class: "SCHEMA_NOTICE_DETAIL has-text-grey ml-2" },
66828
+ { class: "SCHEMA_NOTICE_DETAIL yui-text-quiet ml-2" },
66829
66829
  `${detail}`
66830
66830
  ]));
66831
66831
  }
@@ -66947,7 +66947,7 @@ function render_toolbar(gobj) {
66947
66947
  }
66948
66948
  $left.push([
66949
66949
  "nav",
66950
- { class: "SCHEMA_CRUMBS is-size-7 has-text-grey ml-1" },
66950
+ { class: "SCHEMA_CRUMBS is-size-7 yui-text-quiet ml-1" },
66951
66951
  $trail
66952
66952
  ]);
66953
66953
  let $right = [];
@@ -67203,7 +67203,7 @@ function render_topics(gobj, $body) {
67203
67203
  ],
67204
67204
  ambiguous ? [
67205
67205
  "div",
67206
- { class: "SCHEMA_TOPIC_ID is-size-7 has-text-grey" },
67206
+ { class: "SCHEMA_TOPIC_ID is-size-7 yui-text-quiet" },
67207
67207
  [[
67208
67208
  "code",
67209
67209
  {},
@@ -67454,7 +67454,7 @@ function render_columns(gobj, $body) {
67454
67454
  if (topic.cols.length === 0) $wrap.appendChild((0, _yuneta_gobj_js.createElement2)([
67455
67455
  "p",
67456
67456
  {
67457
- class: "SCHEMA_COLUMNS_EMPTY has-text-grey p-3",
67457
+ class: "SCHEMA_COLUMNS_EMPTY yui-text-quiet p-3",
67458
67458
  i18n: "this topic has no column"
67459
67459
  },
67460
67460
  (0, i18next.t)("this topic has no column")
@@ -67566,7 +67566,7 @@ function column_row(gobj, topic, col, index, readonly, twice) {
67566
67566
  { class: "SCHEMA_COL_HANDLE" },
67567
67567
  readonly ? [] : [[
67568
67568
  "span",
67569
- { class: "icon has-text-grey" },
67569
+ { class: "icon yui-text-quiet" },
67570
67570
  [["i", { class: "yi-grip-vertical" }]]
67571
67571
  ]]
67572
67572
  ],
@@ -67581,7 +67581,7 @@ function column_row(gobj, topic, col, index, readonly, twice) {
67581
67581
  ],
67582
67582
  ambiguous ? [
67583
67583
  "span",
67584
- { class: "SCHEMA_COL_ID is-size-7 has-text-grey ml-2" },
67584
+ { class: "SCHEMA_COL_ID is-size-7 yui-text-quiet ml-2" },
67585
67585
  [[
67586
67586
  "code",
67587
67587
  {},
@@ -67923,7 +67923,7 @@ function flags_field(gobj, type, current) {
67923
67923
  return [
67924
67924
  "label",
67925
67925
  el_attrs({
67926
- class: "SCHEMA_FLAG checkbox " + (flag.meaningful ? "" : "SCHEMA_FLAG_DIM has-text-grey-light"),
67926
+ class: "SCHEMA_FLAG checkbox " + (flag.meaningful ? "" : "SCHEMA_FLAG_DIM yui-text-quiet-light"),
67927
67927
  title: flag.desc ? (0, i18next.t)(flag.desc) : "",
67928
67928
  "data-i18n-title": flag.desc || void 0
67929
67929
  }),
@@ -67945,7 +67945,7 @@ function flags_field(gobj, type, current) {
67945
67945
  [[
67946
67946
  "p",
67947
67947
  {
67948
- class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold has-text-grey",
67948
+ class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold yui-text-quiet",
67949
67949
  i18n: group.group
67950
67950
  },
67951
67951
  (0, i18next.t)(group.group)
@@ -68639,7 +68639,7 @@ function render_import_plan(gobj, plan) {
68639
68639
  { class: "SCHEMA_IMPORT_SUMMARY" },
68640
68640
  [[
68641
68641
  "p",
68642
- { class: "SCHEMA_IMPORT_COUNT is-size-7 has-text-grey mb-2" },
68642
+ { class: "SCHEMA_IMPORT_COUNT is-size-7 yui-text-quiet mb-2" },
68643
68643
  [
68644
68644
  [
68645
68645
  "span",
@@ -71174,7 +71174,7 @@ function build_days_grid(gobj, view, locale) {
71174
71174
  let d = new Date(start.getFullYear(), start.getMonth(), start.getDate() + i);
71175
71175
  $dow.push([
71176
71176
  "div",
71177
- { class: "has-text-centered is-size-7 has-text-grey YUI_PERIOD_CAL_DOW" },
71177
+ { class: "has-text-centered is-size-7 yui-text-quiet YUI_PERIOD_CAL_DOW" },
71178
71178
  new Intl.DateTimeFormat(locale, { weekday: "narrow" }).format(d)
71179
71179
  ]);
71180
71180
  }
@@ -71200,7 +71200,7 @@ function build_days_grid(gobj, view, locale) {
71200
71200
  let $wk = (0, _yuneta_gobj_js.createElement2)([
71201
71201
  "button",
71202
71202
  {
71203
- class: "button is-small is-ghost is-size-7 has-text-grey YUI_PERIOD_CAL_WEEKNUM",
71203
+ class: "button is-small is-ghost is-size-7 yui-text-quiet YUI_PERIOD_CAL_WEEKNUM",
71204
71204
  type: "button",
71205
71205
  style: "width:100%;",
71206
71206
  title: wk_name,
@@ -71218,7 +71218,7 @@ function build_days_grid(gobj, view, locale) {
71218
71218
  let ts = d.getTime();
71219
71219
  let selected = ts >= sel.from && ts <= sel.to;
71220
71220
  let $btn = cell_button(gobj, d.getDate(), ts, selected, "YUI_PERIOD_CAL_DAY", day_name.format(d));
71221
- if (d.getMonth() !== view.getMonth()) $btn.classList.add("has-text-grey-light");
71221
+ if (d.getMonth() !== view.getMonth()) $btn.classList.add("yui-text-quiet-light");
71222
71222
  if (day_number(d) === today) $btn.classList.add("has-text-weight-bold", "YUI_PERIOD_CAL_TODAY_CELL");
71223
71223
  cells.push({
71224
71224
  ts,
@@ -10646,7 +10646,7 @@ function yui_graph_camera_items(gobj, graph, wide) {
10646
10646
  [
10647
10647
  "span",
10648
10648
  {
10649
- class: "GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 has-text-grey",
10649
+ class: "GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 yui-text-quiet",
10650
10650
  style: "font-size:.85rem; min-width:3.5em; justify-content:center;",
10651
10651
  title: t("zoom level"),
10652
10652
  "data-i18n-title": "zoom level"
@@ -13422,7 +13422,7 @@ function render_graph(gobj) {
13422
13422
  $graph.appendChild(createElement2([
13423
13423
  "div",
13424
13424
  {
13425
- class: "JSON_EMPTY has-text-grey p-3",
13425
+ class: "JSON_EMPTY yui-text-quiet p-3",
13426
13426
  "data-i18n": "no data"
13427
13427
  },
13428
13428
  "no data"
@@ -13491,7 +13491,7 @@ function render_text(gobj) {
13491
13491
  $text.appendChild(createElement2([
13492
13492
  "div",
13493
13493
  {
13494
- class: "JSON_EMPTY has-text-grey p-3",
13494
+ class: "JSON_EMPTY yui-text-quiet p-3",
13495
13495
  "data-i18n": "no data"
13496
13496
  },
13497
13497
  "no data"
@@ -13535,7 +13535,7 @@ function render_tree(gobj) {
13535
13535
  $tree.appendChild(createElement2([
13536
13536
  "div",
13537
13537
  {
13538
- class: "JSON_EMPTY has-text-grey p-3",
13538
+ class: "JSON_EMPTY yui-text-quiet p-3",
13539
13539
  "data-i18n": "no data"
13540
13540
  },
13541
13541
  "no data"
@@ -13711,7 +13711,7 @@ function toggle_row(gobj, key, size, is_object, depth, path, open, value) {
13711
13711
  }
13712
13712
  body.push([
13713
13713
  "span",
13714
- { class: "JSON_SUMMARY has-text-grey" },
13714
+ { class: "JSON_SUMMARY yui-text-quiet" },
13715
13715
  summary
13716
13716
  ]);
13717
13717
  let label = container_label(value, MAX_LABEL_CHARS);
@@ -13781,7 +13781,7 @@ function leaf_row(key, value, depth) {
13781
13781
  let wall = format_epoch(value);
13782
13782
  if (wall) body.push([
13783
13783
  "span",
13784
- { class: "JSON_TIME is-size-7 has-text-grey ml-2" },
13784
+ { class: "JSON_TIME is-size-7 yui-text-quiet ml-2" },
13785
13785
  wall
13786
13786
  ]);
13787
13787
  }
@@ -15718,7 +15718,7 @@ function render_raw(gobj) {
15718
15718
  $raw.appendChild(createElement2([
15719
15719
  "div",
15720
15720
  {
15721
- class: "GCLASS_EMPTY p-4 has-text-grey",
15721
+ class: "GCLASS_EMPTY p-4 yui-text-quiet",
15722
15722
  i18n: "no data"
15723
15723
  },
15724
15724
  t("no data")
@@ -15734,7 +15734,7 @@ function render_raw(gobj) {
15734
15734
  if (dump.capped) children.push([
15735
15735
  "div",
15736
15736
  {
15737
- class: "GCLASS_RAW_CAPPED has-text-grey is-size-7 p-2",
15737
+ class: "GCLASS_RAW_CAPPED yui-text-quiet is-size-7 p-2",
15738
15738
  i18n: "text truncated"
15739
15739
  },
15740
15740
  t("text truncated")
@@ -15767,7 +15767,7 @@ function render_zones(gobj) {
15767
15767
  $zones.appendChild(createElement2([
15768
15768
  "div",
15769
15769
  {
15770
- class: "GCLASS_EMPTY p-4 has-text-grey",
15770
+ class: "GCLASS_EMPTY p-4 yui-text-quiet",
15771
15771
  i18n: "no data"
15772
15772
  },
15773
15773
  t("no data")
@@ -20954,7 +20954,7 @@ function build_body(shell, t) {
20954
20954
  ]);
20955
20955
  let $count = createElement2([
20956
20956
  "span",
20957
- { class: "ROUTEMAP_COUNT is-size-7 has-text-grey is-hidden" },
20957
+ { class: "ROUTEMAP_COUNT is-size-7 yui-text-quiet is-hidden" },
20958
20958
  [$count_n]
20959
20959
  ]);
20960
20960
  let $refs_input = createElement2(["input", {
@@ -24746,7 +24746,7 @@ function create_tabulator(gobj) {
24746
24746
  index: pkey,
24747
24747
  columns,
24748
24748
  selectableRows: selectable,
24749
- footerElement: "<span class='yui-tabulator-rowcount' style='display:block;text-align:right;font-size:0.8rem;color:#6b7280;padding:0 0.6rem;'></span>"
24749
+ footerElement: "<span class='yui-tabulator-rowcount yui-text-quiet' style='display:block;text-align:right;font-size:0.8rem;padding:0 0.6rem;'></span>"
24750
24750
  });
24751
24751
  let $view_container = gobj_read_attr(gobj, "$container");
24752
24752
  let $table_el = $view_container ? $view_container.querySelector(`#${table_id}`) : null;
@@ -24906,7 +24906,7 @@ function icon_formatter(cell) {
24906
24906
  if (!/^[a-z0-9-]+$/.test(name) || !yui_icon_is_defined(name)) return createElement2([
24907
24907
  "span",
24908
24908
  {
24909
- class: "ICON_CELL_UNKNOWN is-size-7 has-text-grey",
24909
+ class: "ICON_CELL_UNKNOWN is-size-7 yui-text-quiet",
24910
24910
  title: name
24911
24911
  },
24912
24912
  name
@@ -64446,7 +64446,7 @@ function build_graph(gobj) {
64446
64446
  let $empty = createElement2([
64447
64447
  "div",
64448
64448
  {
64449
- class: "TREEDB_SCHEMA_EMPTY p-4 has-text-grey",
64449
+ class: "TREEDB_SCHEMA_EMPTY p-4 yui-text-quiet",
64450
64450
  i18n: "no topics"
64451
64451
  },
64452
64452
  t("no topics", { defaultValue: "No topics" })
@@ -66520,7 +66520,7 @@ function build_ui$1(gobj) {
66520
66520
  ],
66521
66521
  [
66522
66522
  "div",
66523
- { class: "SCHEMA_NOTICE p-4 has-text-grey is-hidden" },
66523
+ { class: "SCHEMA_NOTICE p-4 yui-text-quiet is-hidden" },
66524
66524
  []
66525
66525
  ],
66526
66526
  [
@@ -66820,7 +66820,7 @@ function show_notice(gobj, key, detail) {
66820
66820
  ]));
66821
66821
  if (detail) $notice.appendChild(createElement2([
66822
66822
  "span",
66823
- { class: "SCHEMA_NOTICE_DETAIL has-text-grey ml-2" },
66823
+ { class: "SCHEMA_NOTICE_DETAIL yui-text-quiet ml-2" },
66824
66824
  `${detail}`
66825
66825
  ]));
66826
66826
  }
@@ -66942,7 +66942,7 @@ function render_toolbar(gobj) {
66942
66942
  }
66943
66943
  $left.push([
66944
66944
  "nav",
66945
- { class: "SCHEMA_CRUMBS is-size-7 has-text-grey ml-1" },
66945
+ { class: "SCHEMA_CRUMBS is-size-7 yui-text-quiet ml-1" },
66946
66946
  $trail
66947
66947
  ]);
66948
66948
  let $right = [];
@@ -67198,7 +67198,7 @@ function render_topics(gobj, $body) {
67198
67198
  ],
67199
67199
  ambiguous ? [
67200
67200
  "div",
67201
- { class: "SCHEMA_TOPIC_ID is-size-7 has-text-grey" },
67201
+ { class: "SCHEMA_TOPIC_ID is-size-7 yui-text-quiet" },
67202
67202
  [[
67203
67203
  "code",
67204
67204
  {},
@@ -67449,7 +67449,7 @@ function render_columns(gobj, $body) {
67449
67449
  if (topic.cols.length === 0) $wrap.appendChild(createElement2([
67450
67450
  "p",
67451
67451
  {
67452
- class: "SCHEMA_COLUMNS_EMPTY has-text-grey p-3",
67452
+ class: "SCHEMA_COLUMNS_EMPTY yui-text-quiet p-3",
67453
67453
  i18n: "this topic has no column"
67454
67454
  },
67455
67455
  t("this topic has no column")
@@ -67561,7 +67561,7 @@ function column_row(gobj, topic, col, index, readonly, twice) {
67561
67561
  { class: "SCHEMA_COL_HANDLE" },
67562
67562
  readonly ? [] : [[
67563
67563
  "span",
67564
- { class: "icon has-text-grey" },
67564
+ { class: "icon yui-text-quiet" },
67565
67565
  [["i", { class: "yi-grip-vertical" }]]
67566
67566
  ]]
67567
67567
  ],
@@ -67576,7 +67576,7 @@ function column_row(gobj, topic, col, index, readonly, twice) {
67576
67576
  ],
67577
67577
  ambiguous ? [
67578
67578
  "span",
67579
- { class: "SCHEMA_COL_ID is-size-7 has-text-grey ml-2" },
67579
+ { class: "SCHEMA_COL_ID is-size-7 yui-text-quiet ml-2" },
67580
67580
  [[
67581
67581
  "code",
67582
67582
  {},
@@ -67918,7 +67918,7 @@ function flags_field(gobj, type, current) {
67918
67918
  return [
67919
67919
  "label",
67920
67920
  el_attrs({
67921
- class: "SCHEMA_FLAG checkbox " + (flag.meaningful ? "" : "SCHEMA_FLAG_DIM has-text-grey-light"),
67921
+ class: "SCHEMA_FLAG checkbox " + (flag.meaningful ? "" : "SCHEMA_FLAG_DIM yui-text-quiet-light"),
67922
67922
  title: flag.desc ? t(flag.desc) : "",
67923
67923
  "data-i18n-title": flag.desc || void 0
67924
67924
  }),
@@ -67940,7 +67940,7 @@ function flags_field(gobj, type, current) {
67940
67940
  [[
67941
67941
  "p",
67942
67942
  {
67943
- class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold has-text-grey",
67943
+ class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold yui-text-quiet",
67944
67944
  i18n: group.group
67945
67945
  },
67946
67946
  t(group.group)
@@ -68634,7 +68634,7 @@ function render_import_plan(gobj, plan) {
68634
68634
  { class: "SCHEMA_IMPORT_SUMMARY" },
68635
68635
  [[
68636
68636
  "p",
68637
- { class: "SCHEMA_IMPORT_COUNT is-size-7 has-text-grey mb-2" },
68637
+ { class: "SCHEMA_IMPORT_COUNT is-size-7 yui-text-quiet mb-2" },
68638
68638
  [
68639
68639
  [
68640
68640
  "span",
@@ -71169,7 +71169,7 @@ function build_days_grid(gobj, view, locale) {
71169
71169
  let d = new Date(start.getFullYear(), start.getMonth(), start.getDate() + i);
71170
71170
  $dow.push([
71171
71171
  "div",
71172
- { class: "has-text-centered is-size-7 has-text-grey YUI_PERIOD_CAL_DOW" },
71172
+ { class: "has-text-centered is-size-7 yui-text-quiet YUI_PERIOD_CAL_DOW" },
71173
71173
  new Intl.DateTimeFormat(locale, { weekday: "narrow" }).format(d)
71174
71174
  ]);
71175
71175
  }
@@ -71195,7 +71195,7 @@ function build_days_grid(gobj, view, locale) {
71195
71195
  let $wk = createElement2([
71196
71196
  "button",
71197
71197
  {
71198
- class: "button is-small is-ghost is-size-7 has-text-grey YUI_PERIOD_CAL_WEEKNUM",
71198
+ class: "button is-small is-ghost is-size-7 yui-text-quiet YUI_PERIOD_CAL_WEEKNUM",
71199
71199
  type: "button",
71200
71200
  style: "width:100%;",
71201
71201
  title: wk_name,
@@ -71213,7 +71213,7 @@ function build_days_grid(gobj, view, locale) {
71213
71213
  let ts = d.getTime();
71214
71214
  let selected = ts >= sel.from && ts <= sel.to;
71215
71215
  let $btn = cell_button(gobj, d.getDate(), ts, selected, "YUI_PERIOD_CAL_DAY", day_name.format(d));
71216
- if (d.getMonth() !== view.getMonth()) $btn.classList.add("has-text-grey-light");
71216
+ if (d.getMonth() !== view.getMonth()) $btn.classList.add("yui-text-quiet-light");
71217
71217
  if (day_number(d) === today) $btn.classList.add("has-text-weight-bold", "YUI_PERIOD_CAL_TODAY_CELL");
71218
71218
  cells.push({
71219
71219
  ts,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuneta/gobj-ui",
3
- "version": "7.23.93",
3
+ "version": "7.23.94",
4
4
  "type": "module",
5
5
  "main": "dist/gobj-ui.cjs.js",
6
6
  "module": "dist/gobj-ui.es.js",
@@ -42,9 +42,13 @@
42
42
  }
43
43
 
44
44
  /*--- readonly fields (e.g. the pkey in update mode) look readonly ---*/
45
+ /* The BACKGROUND and the cursor are what say "not editable"; the text
46
+ * is not dimmed for it. `--bulma-text-weak` on that background reads
47
+ * 4.07:1 in dark, under the 4.5 of small text -- and a value you may
48
+ * read but not change is exactly a value you have to be able to read. */
45
49
  .C_YUI_FORM input.input[readonly] {
46
50
  background-color: var(--bulma-background, #f5f5f5);
47
- color: var(--bulma-text-weak, #7a7a7a);
51
+ color: var(--bulma-text, #2e333d);
48
52
  border-color: var(--bulma-border, #dbdbdb);
49
53
  cursor: default;
50
54
  }
@@ -439,7 +439,7 @@ function render_raw(gobj)
439
439
  let description = gobj_read_attr(gobj, "description");
440
440
  if(description === null || description === undefined) {
441
441
  $raw.appendChild(createElement2(
442
- ['div', {class: 'GCLASS_EMPTY p-4 has-text-grey',
442
+ ['div', {class: 'GCLASS_EMPTY p-4 yui-text-quiet',
443
443
  i18n: 'no data'}, t("no data")]));
444
444
  return;
445
445
  }
@@ -450,7 +450,7 @@ function render_raw(gobj)
450
450
  ];
451
451
  if(dump.capped) {
452
452
  children.push(
453
- ['div', {class: 'GCLASS_RAW_CAPPED has-text-grey is-size-7 p-2',
453
+ ['div', {class: 'GCLASS_RAW_CAPPED yui-text-quiet is-size-7 p-2',
454
454
  i18n: 'text truncated'}, t("text truncated")]);
455
455
  }
456
456
  if(dump.error) {
@@ -484,7 +484,7 @@ function render_zones(gobj)
484
484
  let model = priv.model;
485
485
  if(!model) {
486
486
  $zones.appendChild(createElement2(
487
- ['div', {class: 'GCLASS_EMPTY p-4 has-text-grey',
487
+ ['div', {class: 'GCLASS_EMPTY p-4 yui-text-quiet',
488
488
  i18n: 'no data'}, t("no data")]));
489
489
  return;
490
490
  }
package/src/c_yui_json.js CHANGED
@@ -597,7 +597,7 @@ function render_graph(gobj)
597
597
  teardown_graph_child(gobj);
598
598
  $graph.textContent = "";
599
599
  $graph.appendChild(createElement2(
600
- ['div', {class: 'JSON_EMPTY has-text-grey p-3', 'data-i18n': 'no data'}, 'no data']
600
+ ['div', {class: 'JSON_EMPTY yui-text-quiet p-3', 'data-i18n': 'no data'}, 'no data']
601
601
  ));
602
602
  refresh_language($graph, t);
603
603
  return;
@@ -687,7 +687,7 @@ function render_text(gobj)
687
687
 
688
688
  if(priv.root === null || priv.root === undefined) {
689
689
  $text.appendChild(createElement2(
690
- ['div', {class: 'JSON_EMPTY has-text-grey p-3', 'data-i18n': 'no data'}, 'no data']
690
+ ['div', {class: 'JSON_EMPTY yui-text-quiet p-3', 'data-i18n': 'no data'}, 'no data']
691
691
  ));
692
692
  return;
693
693
  }
@@ -736,7 +736,7 @@ function render_tree(gobj)
736
736
 
737
737
  if(priv.root === null || priv.root === undefined) {
738
738
  $tree.appendChild(createElement2(
739
- ['div', {class: 'JSON_EMPTY has-text-grey p-3', 'data-i18n': 'no data'}, 'no data']
739
+ ['div', {class: 'JSON_EMPTY yui-text-quiet p-3', 'data-i18n': 'no data'}, 'no data']
740
740
  ));
741
741
  return;
742
742
  }
@@ -915,7 +915,7 @@ function toggle_row(gobj, key, size, is_object, depth, path, open, value)
915
915
  body.push(['span', {class: 'JSON_KEY'}, String(key)]);
916
916
  body.push(['span', {class: 'JSON_PUNCT'}, ': ']);
917
917
  }
918
- body.push(['span', {class: 'JSON_SUMMARY has-text-grey'}, summary]);
918
+ body.push(['span', {class: 'JSON_SUMMARY yui-text-quiet'}, summary]);
919
919
 
920
920
  /*
921
921
  * A dict that carries an id says WHICH one it is, right here.
@@ -977,7 +977,7 @@ function leaf_row(key, value, depth)
977
977
  if(key !== null && is_time_field(String(key))) {
978
978
  let wall = format_epoch(value);
979
979
  if(wall) {
980
- body.push(['span', {class: 'JSON_TIME is-size-7 has-text-grey ml-2'}, wall]);
980
+ body.push(['span', {class: 'JSON_TIME is-size-7 yui-text-quiet ml-2'}, wall]);
981
981
  }
982
982
  }
983
983
 
@@ -1055,7 +1055,7 @@ function build_days_grid(gobj, view, locale)
1055
1055
  }
1056
1056
  for(let i = 0; i < 7; i++) {
1057
1057
  let d = new Date(start.getFullYear(), start.getMonth(), start.getDate() + i);
1058
- $dow.push(["div", {class: "has-text-centered is-size-7 has-text-grey YUI_PERIOD_CAL_DOW"},
1058
+ $dow.push(["div", {class: "has-text-centered is-size-7 yui-text-quiet YUI_PERIOD_CAL_DOW"},
1059
1059
  new Intl.DateTimeFormat(locale, {weekday: "narrow"}).format(d)]);
1060
1060
  }
1061
1061
  $rows.push(["div", {class: "YUI_PERIOD_CAL_WEEK",
@@ -1073,7 +1073,7 @@ function build_days_grid(gobj, view, locale)
1073
1073
  let wk = iso_week(monday).week;
1074
1074
  let wk_name = t("week {{n}}", {n: wk});
1075
1075
  let $wk = createElement2(
1076
- ["button", {class: "button is-small is-ghost is-size-7 has-text-grey " +
1076
+ ["button", {class: "button is-small is-ghost is-size-7 yui-text-quiet " +
1077
1077
  "YUI_PERIOD_CAL_WEEKNUM",
1078
1078
  type: "button", style: "width:100%;",
1079
1079
  title: wk_name, "aria-label": wk_name}, String(wk)]);
@@ -1093,7 +1093,7 @@ function build_days_grid(gobj, view, locale)
1093
1093
  let $btn = cell_button(gobj, d.getDate(), ts, selected, "YUI_PERIOD_CAL_DAY",
1094
1094
  day_name.format(d));
1095
1095
  if(d.getMonth() !== view.getMonth()) {
1096
- $btn.classList.add("has-text-grey-light");
1096
+ $btn.classList.add("yui-text-quiet-light");
1097
1097
  }
1098
1098
  if(day_number(d) === today) {
1099
1099
  $btn.classList.add("has-text-weight-bold", "YUI_PERIOD_CAL_TODAY_CELL");
@@ -319,7 +319,7 @@ function build_ui(gobj)
319
319
  style: "height:100%; display:flex; flex-direction:column; min-height:0;"}, [
320
320
  ["div", {class: "SCHEMA_TOOLBAR is-flex is-align-items-center",
321
321
  style: "gap:.25rem; padding:.25rem;"}, []],
322
- ["div", {class: "SCHEMA_NOTICE p-4 has-text-grey is-hidden"}, []],
322
+ ["div", {class: "SCHEMA_NOTICE p-4 yui-text-quiet is-hidden"}, []],
323
323
  ["div", {class: "SCHEMA_BODY", style: "flex:1 1 auto; min-height:0; overflow:auto;"}, []]
324
324
  ]]
325
325
  );
@@ -721,7 +721,7 @@ function show_notice(gobj, key, detail)
721
721
  ));
722
722
  if(detail) {
723
723
  $notice.appendChild(createElement2(
724
- ["span", {class: "SCHEMA_NOTICE_DETAIL has-text-grey ml-2"}, `${detail}`]
724
+ ["span", {class: "SCHEMA_NOTICE_DETAIL yui-text-quiet ml-2"}, `${detail}`]
725
725
  ));
726
726
  }
727
727
  }
@@ -800,7 +800,7 @@ function render_toolbar(gobj)
800
800
  $trail.push(["span", {class: "SCHEMA_CRUMB_SEP"}, "/"]);
801
801
  $trail.push(["span", {class: "SCHEMA_CRUMB_DIAGRAM", i18n: "diagram"}, t("diagram")]);
802
802
  }
803
- $left.push(["nav", {class: "SCHEMA_CRUMBS is-size-7 has-text-grey ml-1"}, $trail]);
803
+ $left.push(["nav", {class: "SCHEMA_CRUMBS is-size-7 yui-text-quiet ml-1"}, $trail]);
804
804
 
805
805
  /*----------------------------------------------*
806
806
  * Right: what is legal HERE. A button that is not
@@ -1061,7 +1061,7 @@ function render_topics(gobj, $body)
1061
1061
  i18n: "system"}, t("system")]
1062
1062
  : ["span", {}, ""],
1063
1063
  ambiguous
1064
- ? ["div", {class: "SCHEMA_TOPIC_ID is-size-7 has-text-grey"},
1064
+ ? ["div", {class: "SCHEMA_TOPIC_ID is-size-7 yui-text-quiet"},
1065
1065
  [["code", {}, `${topic.id}`]]]
1066
1066
  : ["span", {}, ""]
1067
1067
  ]],
@@ -1215,7 +1215,7 @@ function render_columns(gobj, $body)
1215
1215
 
1216
1216
  if(topic.cols.length === 0) {
1217
1217
  $wrap.appendChild(createElement2(
1218
- ["p", {class: "SCHEMA_COLUMNS_EMPTY has-text-grey p-3",
1218
+ ["p", {class: "SCHEMA_COLUMNS_EMPTY yui-text-quiet p-3",
1219
1219
  i18n: "this topic has no column"}, t("this topic has no column")]
1220
1220
  ));
1221
1221
  }
@@ -1320,12 +1320,12 @@ function column_row(gobj, topic, col, index, readonly, twice)
1320
1320
  ["tr", {class: "SCHEMA_COL_ROW", "data-index": `${index}`,
1321
1321
  draggable: readonly ? "false" : "true"}, [
1322
1322
  ["td", {class: "SCHEMA_COL_HANDLE"},
1323
- readonly ? [] : [["span", {class: "icon has-text-grey"},
1323
+ readonly ? [] : [["span", {class: "icon yui-text-quiet"},
1324
1324
  [["i", {class: "yi-grip-vertical"}]]]]],
1325
1325
  ["td", {class: "SCHEMA_COL_NAME"}, [
1326
1326
  ["code", {}, `${col.name}`],
1327
1327
  ambiguous
1328
- ? ["span", {class: "SCHEMA_COL_ID is-size-7 has-text-grey ml-2"},
1328
+ ? ["span", {class: "SCHEMA_COL_ID is-size-7 yui-text-quiet ml-2"},
1329
1329
  [["code", {}, `${col.id}`]]]
1330
1330
  : ["span", {}, ""],
1331
1331
  is_pkey
@@ -1640,7 +1640,7 @@ function flags_field(gobj, type, current)
1640
1640
  for(let group of grouped_flags(type, current)) {
1641
1641
  let $boxes = group.flags.map((flag) => {
1642
1642
  return ["label", el_attrs({class: "SCHEMA_FLAG checkbox " +
1643
- (flag.meaningful ? "" : "SCHEMA_FLAG_DIM has-text-grey-light"),
1643
+ (flag.meaningful ? "" : "SCHEMA_FLAG_DIM yui-text-quiet-light"),
1644
1644
  title: flag.desc ? t(flag.desc) : "",
1645
1645
  "data-i18n-title": flag.desc || undefined}), [
1646
1646
  ["input", el_attrs({type: "checkbox", class: "SCHEMA_FLAG_BOX",
@@ -1651,7 +1651,7 @@ function flags_field(gobj, type, current)
1651
1651
  });
1652
1652
 
1653
1653
  $groups.push(["div", {class: "SCHEMA_FLAG_GROUP mb-2"}, [
1654
- ["p", {class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold has-text-grey",
1654
+ ["p", {class: "SCHEMA_FLAG_GROUP_NAME has-text-weight-semibold yui-text-quiet",
1655
1655
  i18n: group.group}, t(group.group)],
1656
1656
  ["div", {class: "SCHEMA_FLAG_LIST"}, $boxes]
1657
1657
  ]]);
@@ -2109,7 +2109,7 @@ function render_import_plan(gobj, plan)
2109
2109
 
2110
2110
  $pane.appendChild(createElement2(
2111
2111
  ["div", {class: "SCHEMA_IMPORT_SUMMARY"}, [
2112
- ["p", {class: "SCHEMA_IMPORT_COUNT is-size-7 has-text-grey mb-2"}, [
2112
+ ["p", {class: "SCHEMA_IMPORT_COUNT is-size-7 yui-text-quiet mb-2"}, [
2113
2113
  ["span", {i18n: "writes"}, t("writes")],
2114
2114
  ["span", {class: "ml-1"}, `${plan.writes.length}`],
2115
2115
  ["span", {class: "ml-3", i18n: "deletions"}, t("deletions")],
@@ -521,6 +521,46 @@
521
521
  white-space: nowrap;
522
522
  }
523
523
 
524
+ /*============================================================
525
+ * Legibility: two rules the whole library leans on
526
+ *
527
+ * A PLACEHOLDER is text, and Bulma paints it with the text
528
+ * colour at 30% alpha: 2.47:1 on the dark scheme, 1.79 on
529
+ * the light one. It is what says what a box is FOR -- the
530
+ * graph's `search`, a form's hint -- so it is written at
531
+ * 70%: 7.96 and 4.95, and plainly still secondary. The
532
+ * `opacity: 1` is for Firefox, which dims a placeholder
533
+ * again on top of its colour.
534
+ *
535
+ * And `.yui-text-quiet` is what the library uses where it
536
+ * used to say `has-text-grey`: Bulma's grey is ONE mid tone
537
+ * for both schemes (3.86:1 on the dark one), and every use
538
+ * of it in here is text somebody has to read -- an empty
539
+ * state, a timestamp, a topic id, the detail of a notice.
540
+ * The text colour at 75% is the same intent, legible.
541
+ *============================================================*/
542
+ /* Bulma declares `--bulma-input-placeholder-color` INSIDE the
543
+ * `.input, .textarea, .select` block (its `.input::placeholder` rule
544
+ * reads it there), so a `:root` override never reaches it and a bare
545
+ * `input::placeholder` loses to Bulma's class selector. The variable
546
+ * is redefined where Bulma defines it, with the alpha it should have
547
+ * had: same hue, same lightness, 0.7 instead of 0.3. */
548
+ .input,
549
+ .textarea,
550
+ .select select {
551
+ --bulma-input-placeholder-color:
552
+ hsla(var(--bulma-text-h), var(--bulma-text-s), var(--bulma-text-strong-l), 0.7);
553
+ }
554
+
555
+ input::placeholder,
556
+ textarea::placeholder {
557
+ opacity: 1; /* Firefox dims a placeholder again, on top of its colour */
558
+ }
559
+
560
+ .yui-text-quiet {
561
+ opacity: 0.75;
562
+ }
563
+
524
564
  /*============================================================
525
565
  * Toolbar — type:"avatar"
526
566
  * Circular badge populated by the host-registered provider
@@ -547,7 +547,7 @@ function build_graph(gobj)
547
547
  let data = schema_to_graph(gobj);
548
548
  if(data.nodes.length === 0) {
549
549
  let $empty = createElement2(
550
- ['div', {class: 'TREEDB_SCHEMA_EMPTY p-4 has-text-grey',
550
+ ['div', {class: 'TREEDB_SCHEMA_EMPTY p-4 yui-text-quiet',
551
551
  i18n: 'no topics'}, t('no topics', {defaultValue: 'No topics'})]
552
552
  );
553
553
  $container.appendChild($empty);
@@ -1503,9 +1503,13 @@ function create_tabulator(gobj)
1503
1503
  columns: columns,
1504
1504
  selectableRows: selectable,
1505
1505
  /* Row-count footer (updated on every data change below). */
1506
- footerElement: "<span class='yui-tabulator-rowcount' " +
1506
+ /* No colour of its own: `#6b7280` was one grey written into
1507
+ * the html for both schemes, and on the dark footer it read
1508
+ * 3.29:1. It inherits the footer's, which tabulator.css
1509
+ * themes. */
1510
+ footerElement: "<span class='yui-tabulator-rowcount yui-text-quiet' " +
1507
1511
  "style='display:block;text-align:right;font-size:0.8rem;" +
1508
- "color:#6b7280;padding:0 0.6rem;'></span>",
1512
+ "padding:0 0.6rem;'></span>",
1509
1513
  });
1510
1514
 
1511
1515
  /*
@@ -1799,7 +1803,7 @@ function icon_formatter(cell)
1799
1803
  * that mounts this table. */
1800
1804
  return createElement2([
1801
1805
  "span",
1802
- {class: "ICON_CELL_UNKNOWN is-size-7 has-text-grey", title: name},
1806
+ {class: "ICON_CELL_UNKNOWN is-size-7 yui-text-quiet", title: name},
1803
1807
  name
1804
1808
  ]);
1805
1809
  }
@@ -268,7 +268,7 @@ function build_body(shell, t)
268
268
  * every keystroke, is what repaints it. */
269
269
  let $count_n = createElement2(["span", {class: "ROUTEMAP_COUNT_N"}, ""]);
270
270
  let $count = createElement2(
271
- ["span", {class: "ROUTEMAP_COUNT is-size-7 has-text-grey is-hidden"},
271
+ ["span", {class: "ROUTEMAP_COUNT is-size-7 yui-text-quiet is-hidden"},
272
272
  [$count_n]]
273
273
  );
274
274
  /* References are hidden by default and revealed by this toggle.
package/src/tabulator.css CHANGED
@@ -227,9 +227,16 @@
227
227
  border-color: var(--bulma-link-on-scheme, var(--bulma-link, #4a9eff));
228
228
  }
229
229
 
230
- [data-theme=dark] .tabulator-row .tabulator-cell.tabulator-editing input::placeholder,
231
- [data-theme=dark] .tabulator .tabulator-header .tabulator-header-filter input::placeholder {
232
- color: var(--bulma-text-weak, #8a8f98);
230
+ /* Tabulator's inputs are bare `input`s, so Bulma's placeholder colour
231
+ * never reaches them: in the light scheme they were left at the
232
+ * BROWSER's default (3.09:1) and in the dark one they were painted
233
+ * with `--bulma-text-weak` (4.07). One rule for every scheme, the same
234
+ * 70% of the text colour the rest of the library uses -- `filter
235
+ * column…` is what says what that box does. */
236
+ .tabulator-row .tabulator-cell.tabulator-editing input::placeholder,
237
+ .tabulator .tabulator-header .tabulator-header-filter input::placeholder {
238
+ color: hsla(var(--bulma-text-h), var(--bulma-text-s), var(--bulma-text-strong-l), 0.7);
239
+ opacity: 1;
233
240
  }
234
241
 
235
242
  /* ====================================================================
@@ -375,10 +382,6 @@
375
382
  caret-color: var(--bulma-text-strong, #f5f6f7);
376
383
  border-color: var(--bulma-link-on-scheme, var(--bulma-link, #4a9eff));
377
384
  }
378
- [data-theme=system] .tabulator-row .tabulator-cell.tabulator-editing input::placeholder,
379
- [data-theme=system] .tabulator .tabulator-header .tabulator-header-filter input::placeholder {
380
- color: var(--bulma-text-weak, #8a8f98);
381
- }
382
385
  /* same furniture-not-editor rule as [data-theme=dark] above */
383
386
  [data-theme=system] .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,
384
387
  [data-theme=system] .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {
@@ -110,7 +110,7 @@ export function yui_graph_camera_items(gobj, graph, wide)
110
110
  return [
111
111
  camera_button(gobj, "yi-magnifying-glass-plus", "EV_ZOOM_IN", "zoom in", wide),
112
112
  camera_button(gobj, "yi-magnifying-glass-minus", "EV_ZOOM_OUT", "zoom out", wide),
113
- ['span', {class: 'GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 has-text-grey',
113
+ ['span', {class: 'GRAPH_ZOOM_LEVEL is-flex is-align-items-center px-2 yui-text-quiet',
114
114
  style: 'font-size:.85rem; min-width:3.5em; justify-content:center;',
115
115
  title: t('zoom level'), 'data-i18n-title': 'zoom level'},
116
116
  yui_graph_zoom_text(graph)],