@godxjp/ui 22.0.0 → 23.0.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.
Files changed (83) hide show
  1. package/README.md +4 -4
  2. package/dist/components/data-display/scroll-area.d.ts +24 -4
  3. package/dist/components/data-display/scroll-area.js +34 -72
  4. package/dist/components/data-entry/cascader.js +8 -6
  5. package/dist/components/data-entry/checkbox.js +2 -0
  6. package/dist/components/data-entry/choice-hit-target.d.ts +24 -0
  7. package/dist/components/data-entry/choice-hit-target.js +12 -0
  8. package/dist/components/data-entry/control-surface.d.ts +8 -0
  9. package/dist/components/data-entry/control-surface.js +10 -1
  10. package/dist/components/data-entry/form-field.js +3 -2
  11. package/dist/components/data-entry/radio.js +3 -2
  12. package/dist/components/data-entry/search-select.js +225 -95
  13. package/dist/components/data-entry/select.d.ts +76 -14
  14. package/dist/components/data-entry/select.js +495 -163
  15. package/dist/components/data-entry/slider.d.ts +3 -11
  16. package/dist/components/data-entry/slider.js +582 -93
  17. package/dist/components/data-entry/switch.js +2 -0
  18. package/dist/components/navigation/dropdown-menu.d.ts +11 -3
  19. package/dist/components/navigation/dropdown-menu.js +190 -15
  20. package/dist/components/navigation/index.d.ts +0 -3
  21. package/dist/components/navigation/index.js +0 -78
  22. package/dist/components/ui/index.d.ts +0 -3
  23. package/dist/components/ui/index.js +0 -3
  24. package/dist/components/ui/input-otp.d.ts +1 -1
  25. package/dist/components/ui/segmented.js +3 -1
  26. package/dist/components/ui/tag-input.js +3 -5
  27. package/dist/lib/select-options.d.ts +21 -0
  28. package/dist/lib/select-options.js +46 -0
  29. package/dist/props/components/data-display.prop.d.ts +9 -6
  30. package/dist/props/components/data-entry.prop.d.ts +323 -30
  31. package/dist/props/components/index.d.ts +1 -1
  32. package/dist/props/components/navigation.prop.d.ts +17 -0
  33. package/dist/props/registry.d.ts +63 -0
  34. package/dist/props/registry.js +69 -0
  35. package/dist/styles/control.css +205 -23
  36. package/dist/styles/data-display-layout.css +18 -10
  37. package/dist/styles/focus-ring.css +2 -2
  38. package/dist/styles/fonts.css +88 -4
  39. package/dist/styles/navigation-layout.css +11 -236
  40. package/dist/styles/shell-layout.css +144 -139
  41. package/dist/styles/table-layout.css +7 -3
  42. package/dist/tokens/components/control.css +4 -0
  43. package/dist/tokens/components/data-display.css +0 -5
  44. package/dist/tokens/components/navigation.css +3 -5
  45. package/dist/tokens/components/scroll-area.css +7 -0
  46. package/docs/CUSTOMER-THEMING.md +7 -1
  47. package/docs/FRAME-COVERAGE-REPORT.md +4 -7
  48. package/docs/data-display/data-table/index.tsx +27 -1
  49. package/docs/data-display/popover.tsx +4 -6
  50. package/docs/data-display/scroll-area.tsx +51 -45
  51. package/docs/data-entry/date-picker.tsx +2 -3
  52. package/docs/data-entry/input-otp.tsx +5 -2
  53. package/docs/data-entry/segmented.tsx +40 -1
  54. package/docs/data-entry/select-matrix.tsx +1 -2
  55. package/docs/data-entry/select.tsx +108 -3
  56. package/docs/data-entry/slider.tsx +125 -47
  57. package/docs/feedback/dialog.tsx +1 -2
  58. package/docs/feedback/sheet.tsx +1 -2
  59. package/docs/layout/app-shell-states.tsx +143 -0
  60. package/docs/navigation/dropdown-menu.tsx +75 -4
  61. package/docs/roadmap/parity-audit-data-entry.md +44 -33
  62. package/docs/roadmap/parity-audit-layout-navigation-general.md +304 -310
  63. package/docs/roadmap/parity-backlog.md +2 -3
  64. package/package.json +20 -44
  65. package/scripts/ui-audit.mjs +1 -1
  66. package/scripts/visual-audit-rules.mjs +0 -7
  67. package/scripts/visual-audit.mjs +6 -27
  68. package/dist/components/navigation/context-menu.d.ts +0 -21
  69. package/dist/components/navigation/context-menu.js +0 -149
  70. package/dist/components/navigation/menubar.d.ts +0 -28
  71. package/dist/components/navigation/menubar.js +0 -136
  72. package/dist/components/navigation/navigation-menu.d.ts +0 -10
  73. package/dist/components/navigation/navigation-menu.js +0 -91
  74. package/dist/components/ui/context-menu.d.ts +0 -1
  75. package/dist/components/ui/context-menu.js +0 -2
  76. package/dist/components/ui/menubar.d.ts +0 -1
  77. package/dist/components/ui/menubar.js +0 -2
  78. package/dist/components/ui/navigation-menu.d.ts +0 -1
  79. package/dist/components/ui/navigation-menu.js +0 -2
  80. package/docs/FRAME-A11Y-CI.md +0 -349
  81. package/docs/navigation/context-menu.tsx +0 -128
  82. package/docs/navigation/menubar.tsx +0 -141
  83. package/docs/navigation/navigation-menu.tsx +0 -158
@@ -375,6 +375,22 @@
375
375
  line-height: 0;
376
376
  }
377
377
 
378
+ .ui-choice-input {
379
+ position: absolute;
380
+ inset: 0;
381
+ display: block;
382
+ }
383
+
384
+ .ui-choice-input > input {
385
+ position: absolute;
386
+ inset: 0;
387
+ inline-size: 100%;
388
+ block-size: 100%;
389
+ margin: 0;
390
+ cursor: inherit;
391
+ opacity: 0;
392
+ }
393
+
378
394
  .ui-choice-content {
379
395
  display: grid;
380
396
  gap: var(--choice-description-gap);
@@ -402,6 +418,8 @@
402
418
 
403
419
  .ui-checkbox,
404
420
  .ui-radio {
421
+
422
+ position: relative;
405
423
  width: var(--checkbox-size);
406
424
  height: var(--checkbox-size);
407
425
  flex-shrink: 0;
@@ -420,7 +438,7 @@
420
438
 
421
439
  .ui-checkbox:disabled,
422
440
  .ui-radio:disabled,
423
- .ui-slider-thumb:disabled,
441
+ .ui-slider-thumb[data-disabled],
424
442
  .ui-switch:disabled,
425
443
  .ui-checkbox[data-disabled],
426
444
  .ui-radio[data-disabled],
@@ -463,6 +481,8 @@
463
481
  }
464
482
 
465
483
  .ui-switch {
484
+
485
+ position: relative;
466
486
  display: inline-flex;
467
487
  width: var(--switch-width);
468
488
  height: var(--switch-height);
@@ -502,32 +522,80 @@
502
522
  .ui-slider {
503
523
  position: relative;
504
524
  display: flex;
505
- width: 100%;
525
+ inline-size: 100%;
506
526
  touch-action: none;
507
527
  user-select: none;
508
528
  align-items: center;
509
529
  }
510
530
 
531
+ .ui-slider[data-orientation="vertical"] {
532
+
533
+ inline-size: fit-content;
534
+ block-size: 100%;
535
+ min-block-size: var(--slider-vertical-min-block-size);
536
+ flex-direction: column;
537
+ }
538
+
539
+ .ui-slider-control {
540
+ position: relative;
541
+ display: flex;
542
+ flex-grow: 1;
543
+ align-self: stretch;
544
+ align-items: center;
545
+ block-size: var(--slider-thumb-size);
546
+ }
547
+
548
+ .ui-slider[data-orientation="vertical"] .ui-slider-control {
549
+ flex-direction: column;
550
+ align-self: center;
551
+ inline-size: var(--slider-thumb-size);
552
+ block-size: auto;
553
+ }
554
+
511
555
  .ui-slider-track {
512
556
  position: relative;
513
- height: var(--slider-track-height);
514
- width: 100%;
515
557
  flex-grow: 1;
516
- overflow: hidden;
558
+ align-self: center;
559
+ block-size: var(--slider-track-height);
517
560
  border-radius: var(--radius-pill);
518
561
  background: var(--slider-track-background, hsl(var(--primary) / 0.2));
519
562
  }
520
563
 
564
+ .ui-slider[data-orientation="vertical"] .ui-slider-track {
565
+ inline-size: var(--slider-track-height);
566
+ block-size: auto;
567
+ }
568
+
521
569
  .ui-slider-range {
522
570
  position: absolute;
523
- height: 100%;
571
+ inset-block: 0;
572
+ inset-inline-start: var(--slider-range-start, 0%);
573
+ inline-size: var(--slider-range-size, 0%);
574
+ border-radius: inherit;
524
575
  background: var(--slider-range-background, hsl(var(--primary)));
525
576
  }
526
577
 
578
+ .ui-slider[data-orientation="vertical"] .ui-slider-range {
579
+ inset-block-start: auto;
580
+ inset-block-end: var(--slider-range-start, 0%);
581
+ inset-inline: 0;
582
+ inline-size: auto;
583
+ block-size: var(--slider-range-size, 0%);
584
+ }
585
+
586
+ .ui-slider-range[data-draggable="true"] {
587
+ cursor: grab;
588
+ }
589
+
527
590
  .ui-slider-thumb {
591
+ position: absolute;
592
+ inset-block-start: 50%;
593
+ inset-inline-start: var(--slider-thumb-offset, 0%);
528
594
  display: block;
529
- width: var(--slider-thumb-size);
530
- height: var(--slider-thumb-size);
595
+ inline-size: var(--slider-thumb-size);
596
+ block-size: var(--slider-thumb-size);
597
+ margin-block-start: calc(var(--slider-thumb-size) / -2);
598
+ margin-inline-start: calc(var(--slider-thumb-size) / -2);
531
599
  border: 1px solid hsl(var(--primary) / 0.5);
532
600
  border-radius: var(--radius-pill);
533
601
  background: hsl(var(--background));
@@ -539,6 +607,14 @@
539
607
  box-shadow 150ms;
540
608
  }
541
609
 
610
+ .ui-slider[data-orientation="vertical"] .ui-slider-thumb {
611
+ inset-block-start: auto;
612
+ inset-block-end: var(--slider-thumb-offset, 0%);
613
+ inset-inline-start: 50%;
614
+ margin-block-start: 0;
615
+ margin-block-end: calc(var(--slider-thumb-size) / -2);
616
+ }
617
+
542
618
  .ui-color-picker {
543
619
  display: flex;
544
620
  align-items: center;
@@ -992,6 +1068,8 @@
992
1068
  --segmented-item-height: calc(var(--control-height) - var(--segmented-track-padding) * 2);
993
1069
  display: inline-flex;
994
1070
  max-width: 100%;
1071
+
1072
+ flex-wrap: wrap;
995
1073
  align-items: stretch;
996
1074
  padding: var(--segmented-track-padding);
997
1075
  border-radius: var(--segmented-track-radius);
@@ -1001,6 +1079,8 @@
1001
1079
  }
1002
1080
 
1003
1081
  .ui-segmented-item {
1082
+
1083
+ position: relative;
1004
1084
  display: inline-flex;
1005
1085
  min-width: 0;
1006
1086
  height: var(--segmented-item-height);
@@ -1093,7 +1173,8 @@
1093
1173
  background: hsl(var(--secondary));
1094
1174
  color: hsl(var(--secondary-foreground));
1095
1175
  }
1096
- .ui-tag-input-remove {
1176
+ .ui-tag-input-remove,
1177
+ .ui-search-select-value-remove {
1097
1178
 
1098
1179
  display: inline-flex;
1099
1180
  align-items: center;
@@ -1108,10 +1189,12 @@
1108
1189
  color: inherit;
1109
1190
  opacity: 0.7;
1110
1191
  }
1111
- .ui-tag-input-remove:hover {
1192
+ .ui-tag-input-remove:hover,
1193
+ .ui-search-select-value-remove:hover {
1112
1194
  opacity: 1;
1113
1195
  }
1114
- .ui-tag-input-remove svg {
1196
+ .ui-tag-input-remove svg,
1197
+ .ui-search-select-value-remove svg {
1115
1198
  width: 0.75rem;
1116
1199
  height: 0.75rem;
1117
1200
  }
@@ -1349,6 +1432,7 @@
1349
1432
  }
1350
1433
 
1351
1434
  .ui-search-select-list {
1435
+ max-block-size: var(--search-select-list-max-height);
1352
1436
  max-block-size: none;
1353
1437
  min-block-size: 0;
1354
1438
  flex: 1 1 0%;
@@ -1545,11 +1629,21 @@
1545
1629
 
1546
1630
  @layer components {
1547
1631
 
1632
+ .ui-select-root {
1633
+ display: contents;
1634
+ }
1635
+
1548
1636
  .ui-select-content {
1549
1637
  position: relative;
1550
1638
  z-index: var(--overlay-z-index);
1639
+ display: flex;
1640
+ flex-direction: column;
1551
1641
  max-height: var(--select-content-max-height);
1552
- min-width: var(--menu-content-min-width);
1642
+
1643
+ min-width: max(
1644
+ var(--menu-content-min-width),
1645
+ var(--trigger-width, var(--menu-content-min-width))
1646
+ );
1553
1647
  overflow: hidden;
1554
1648
  border-radius: var(--radius-md);
1555
1649
  border: 1px solid hsl(var(--border));
@@ -1558,13 +1652,21 @@
1558
1652
  box-shadow: var(--shadow-md);
1559
1653
  }
1560
1654
 
1655
+ .ui-select-content[data-popup-match="content"] {
1656
+ min-width: var(--menu-content-min-width);
1657
+ }
1658
+
1561
1659
  .ui-select-content[data-popup-match="fixed"] {
1562
1660
  min-width: var(--select-content-inline-size);
1563
1661
  width: var(--select-content-inline-size);
1564
1662
  }
1565
1663
 
1566
1664
  .ui-select-viewport {
1665
+ min-block-size: 0;
1666
+ max-block-size: var(--select-content-max-height);
1667
+ overflow-y: auto;
1567
1668
  padding: var(--menu-content-space-inset);
1669
+ outline: none;
1568
1670
  }
1569
1671
 
1570
1672
  .ui-select-empty {
@@ -1649,6 +1751,19 @@
1649
1751
  flex-shrink: 0;
1650
1752
  opacity: var(--control-affix-rest-alpha);
1651
1753
  }
1754
+
1755
+ .ui-select-prefix,
1756
+ .ui-select-suffix {
1757
+ display: inline-flex;
1758
+ flex-shrink: 0;
1759
+ align-items: center;
1760
+ color: hsl(var(--muted-foreground));
1761
+ }
1762
+
1763
+ .ui-select-trigger-prefixed > [data-slot="select-value"] {
1764
+ flex: 1 1 auto;
1765
+ text-align: start;
1766
+ }
1652
1767
  }
1653
1768
 
1654
1769
  @layer components {
@@ -2668,7 +2783,7 @@
2668
2783
  order: 1;
2669
2784
  }
2670
2785
 
2671
- .ui-slider[data-has-marks="true"] {
2786
+ .ui-slider[data-has-marks="true"]:not([data-orientation="vertical"]) {
2672
2787
  margin-block-end: calc(var(--slider-mark-space-block-start) + var(--font-size-lg));
2673
2788
  }
2674
2789
 
@@ -2680,13 +2795,35 @@
2680
2795
  block-size: 0;
2681
2796
  }
2682
2797
 
2798
+ .ui-slider[data-orientation="vertical"] .ui-slider-marks {
2799
+ inset-block: 0;
2800
+ inset-inline-start: 100%;
2801
+ inset-inline-end: auto;
2802
+ margin-block-start: 0;
2803
+ margin-inline-start: var(--slider-mark-space-block-start);
2804
+ inline-size: 0;
2805
+ block-size: auto;
2806
+ }
2807
+
2683
2808
  .ui-slider-mark {
2684
2809
  position: absolute;
2685
2810
  inset-inline-start: var(--slider-mark-offset-inline, 0%);
2686
- transform: translateX(-50%);
2811
+ display: flex;
2812
+ justify-content: center;
2813
+ inline-size: 0;
2687
2814
  font-size: var(--slider-mark-font-size);
2688
2815
  color: hsl(var(--slider-mark-color));
2689
2816
  white-space: nowrap;
2817
+ cursor: pointer;
2818
+ }
2819
+
2820
+ .ui-slider[data-orientation="vertical"] .ui-slider-mark {
2821
+ inset-inline-start: 0;
2822
+ inset-block-end: var(--slider-mark-offset-block, 0%);
2823
+ align-items: center;
2824
+ justify-content: flex-start;
2825
+ inline-size: auto;
2826
+ block-size: 0;
2690
2827
  }
2691
2828
 
2692
2829
  .ui-slider-dot {
@@ -2695,35 +2832,78 @@
2695
2832
  inset-inline-start: var(--slider-mark-offset-inline, 0%);
2696
2833
  inline-size: var(--slider-dot-size);
2697
2834
  block-size: var(--slider-dot-size);
2698
- transform: translate(-50%, -50%);
2835
+ margin-block-start: calc(var(--slider-dot-size) / -2);
2836
+ margin-inline-start: calc(var(--slider-dot-size) / -2);
2699
2837
  border-radius: var(--radius-pill);
2700
2838
  background: hsl(var(--slider-dot-background));
2701
2839
  border: var(--control-border-width) solid hsl(var(--slider-dot-border-color));
2702
2840
  }
2703
2841
 
2842
+ .ui-slider[data-orientation="vertical"] .ui-slider-dot {
2843
+ inset-block-start: auto;
2844
+ inset-block-end: var(--slider-mark-offset-block, 0%);
2845
+ inset-inline-start: 50%;
2846
+ margin-block-start: 0;
2847
+ margin-block-end: calc(var(--slider-dot-size) / -2);
2848
+ }
2849
+
2704
2850
  .ui-slider-dot[data-active="true"] {
2705
2851
  border-color: hsl(var(--slider-dot-active-border-color));
2706
2852
  }
2707
2853
 
2708
2854
  .ui-slider-tooltip {
2709
2855
  position: absolute;
2710
- inset-block-end: 100%;
2856
+ display: flex;
2857
+ align-items: center;
2858
+ justify-content: center;
2859
+ pointer-events: none;
2860
+ opacity: 0;
2861
+ transition: opacity 150ms;
2862
+ }
2863
+
2864
+ .ui-slider-tooltip[data-placement="top"],
2865
+ .ui-slider-tooltip[data-placement="bottom"] {
2711
2866
  inset-inline-start: 50%;
2712
- transform: translateX(-50%);
2713
- margin-block-end: var(--slider-tooltip-offset-block);
2867
+ inline-size: 0;
2868
+ }
2869
+
2870
+ .ui-slider-tooltip[data-placement="top"] {
2871
+ inset-block-end: 100%;
2872
+ padding-block-end: var(--slider-tooltip-offset-block);
2873
+ }
2874
+
2875
+ .ui-slider-tooltip[data-placement="bottom"] {
2876
+ inset-block-start: 100%;
2877
+ padding-block-start: var(--slider-tooltip-offset-block);
2878
+ }
2879
+
2880
+ .ui-slider-tooltip[data-placement="left"],
2881
+ .ui-slider-tooltip[data-placement="right"] {
2882
+ inset-block-start: 50%;
2883
+ block-size: 0;
2884
+ }
2885
+
2886
+ .ui-slider-tooltip[data-placement="left"] {
2887
+ inset-inline-end: 100%;
2888
+ padding-inline-end: var(--slider-tooltip-offset-block);
2889
+ }
2890
+
2891
+ .ui-slider-tooltip[data-placement="right"] {
2892
+ inset-inline-start: 100%;
2893
+ padding-inline-start: var(--slider-tooltip-offset-block);
2894
+ }
2895
+
2896
+ .ui-slider-tooltip-content {
2714
2897
  padding-inline: var(--slider-tooltip-padding-inline);
2715
2898
  border-radius: var(--slider-tooltip-radius);
2716
2899
  background: hsl(var(--slider-tooltip-background));
2717
2900
  color: hsl(var(--slider-tooltip-color));
2718
2901
  font-size: var(--slider-tooltip-font-size);
2719
2902
  white-space: nowrap;
2720
- opacity: 0;
2721
- pointer-events: none;
2722
- transition: opacity 150ms;
2723
2903
  }
2724
2904
 
2725
- .ui-slider-thumb:hover .ui-slider-tooltip,
2726
- .ui-slider-thumb:focus-visible .ui-slider-tooltip,
2905
+ .ui-slider-thumb:is([data-hovered], [data-focus-visible], [data-dragging])
2906
+ .ui-slider-tooltip:not([data-open="false"]),
2727
2907
  .ui-slider-tooltip[data-open="true"] {
2728
2908
  opacity: 1;
2729
2909
  }
@@ -2755,6 +2935,8 @@
2755
2935
  }
2756
2936
 
2757
2937
  .ui-radio-button {
2938
+
2939
+ position: relative;
2758
2940
  display: inline-flex;
2759
2941
  align-items: center;
2760
2942
  justify-content: center;
@@ -807,24 +807,32 @@
807
807
 
808
808
  @layer components {
809
809
 
810
- [data-slot="scroll-area-viewport"][data-orientation="vertical"] > * {
811
- display: block !important;
810
+ .ui-scroll-area {
811
+ position: relative;
812
+ scrollbar-width: var(--scroll-area-scrollbar-width);
813
+ scrollbar-color: var(--scroll-area-thumb-color, hsl(var(--border)))
814
+ var(--scroll-area-track-color, transparent);
815
+ scrollbar-gutter: var(--scroll-area-scrollbar-space);
812
816
  }
813
817
 
814
- .ui-scroll-area-bar {
815
- padding: var(--scroll-area-bar-padding);
818
+ .ui-scroll-area[data-orientation="vertical"] {
819
+ overflow-x: hidden;
820
+ overflow-y: auto;
816
821
  }
817
822
 
818
- .ui-scroll-area-bar--vertical {
819
- inline-size: var(--scroll-area-bar-size);
823
+ .ui-scroll-area[data-orientation="horizontal"] {
824
+ overflow-x: auto;
825
+ overflow-y: hidden;
820
826
  }
821
827
 
822
- .ui-scroll-area-bar--horizontal {
823
- block-size: var(--scroll-area-bar-size);
828
+ .ui-scroll-area[data-orientation="both"] {
829
+ overflow: auto;
824
830
  }
825
831
 
826
- .ui-scroll-area-thumb {
827
- border-radius: var(--scroll-area-thumb-radius);
832
+ .ui-scroll-area:is([data-orientation="horizontal"], [data-orientation="both"])
833
+ > .ui-scroll-area-content {
834
+ inline-size: max-content;
835
+ min-inline-size: 100%;
828
836
  }
829
837
  }
830
838
 
@@ -13,7 +13,6 @@
13
13
  .ui-toggle,
14
14
  .ui-checkbox,
15
15
  .ui-radio,
16
- .ui-slider-thumb,
17
16
  .ui-steps-inline-control,
18
17
  .ui-pagination-link,
19
18
  .ui-legal-document-toc-link,
@@ -30,6 +29,7 @@
30
29
 
31
30
  .ui-checkbox[data-focus-visible],
32
31
  .ui-switch[data-focus-visible],
32
+ .ui-slider-thumb[data-focus-visible],
33
33
  .ui-focus-ring[data-focus-visible],
34
34
  .ui-control-trigger[data-state="open"],
35
35
  .ui-tag-input:focus-within,
@@ -59,7 +59,6 @@
59
59
  .ui-toggle,
60
60
  .ui-checkbox,
61
61
  .ui-radio,
62
- .ui-slider-thumb,
63
62
  .ui-steps-inline-control,
64
63
  .ui-pagination-link,
65
64
  .ui-legal-document-toc-link,
@@ -76,6 +75,7 @@
76
75
 
77
76
  :root[data-focus-outline="on"] .ui-checkbox[data-focus-visible],
78
77
  :root[data-focus-outline="on"] .ui-switch[data-focus-visible],
78
+ :root[data-focus-outline="on"] .ui-slider-thumb[data-focus-visible],
79
79
  :root[data-focus-outline="on"] .ui-focus-ring[data-focus-visible],
80
80
  :root[data-focus-outline="on"] .ui-control-trigger[data-state="open"],
81
81
  :root[data-focus-outline="on"] .ui-tag-input:focus-within,
@@ -6,11 +6,95 @@
6
6
  @import "@fontsource/noto-sans-jp/500.css";
7
7
  @import "@fontsource/noto-sans-jp/700.css";
8
8
 
9
+ @font-face {
10
+ font-family: "Noto Sans JP Fallback";
11
+ font-weight: 400;
12
+ src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans");
13
+ size-adjust: 103.02%;
14
+ ascent-override: 112.6%;
15
+ descent-override: 27.96%;
16
+ line-gap-override: 0%;
17
+ unicode-range:
18
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
19
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
20
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
21
+ }
22
+ @font-face {
23
+ font-family: "Noto Sans JP Fallback";
24
+ font-weight: 500;
25
+ src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans");
26
+ size-adjust: 105.5%;
27
+ ascent-override: 109.95%;
28
+ descent-override: 27.3%;
29
+ line-gap-override: 0%;
30
+ unicode-range:
31
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
32
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
33
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
34
+ }
35
+ @font-face {
36
+ font-family: "Noto Sans JP Fallback";
37
+ font-weight: 700;
38
+ src:
39
+ local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"),
40
+ local("LiberationSans-Bold");
41
+ size-adjust: 101.5%;
42
+ ascent-override: 114.29%;
43
+ descent-override: 28.37%;
44
+ line-gap-override: 0%;
45
+ unicode-range:
46
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
47
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
48
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
49
+ }
50
+ @font-face {
51
+ font-family: "Noto Sans JP Fallback";
52
+ font-weight: 400;
53
+ src:
54
+ local("Hiragino Sans W3"), local("HiraginoSans-W3"), local("Hiragino Kaku Gothic ProN W3"),
55
+ local("HiraKakuProN-W3"), local("Yu Gothic Medium"), local("YuGothic-Medium"), local("Meiryo"),
56
+ local("Noto Sans CJK JP"), local("NotoSansCJKjp-Regular"), local("IPAGothic");
57
+ ascent-override: 116%;
58
+ descent-override: 28.8%;
59
+ line-gap-override: 0%;
60
+ unicode-range:
61
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
62
+ }
63
+ @font-face {
64
+ font-family: "Noto Sans JP Fallback";
65
+ font-weight: 500;
66
+ src:
67
+ local("Hiragino Sans W5"), local("HiraginoSans-W5"), local("Hiragino Kaku Gothic ProN W3"),
68
+ local("HiraKakuProN-W3"), local("Yu Gothic Medium"), local("YuGothic-Medium"), local("Meiryo"),
69
+ local("Noto Sans CJK JP Medium"), local("NotoSansCJKjp-Medium"), local("Noto Sans CJK JP"),
70
+ local("NotoSansCJKjp-Regular"), local("IPAGothic");
71
+ ascent-override: 116%;
72
+ descent-override: 28.8%;
73
+ line-gap-override: 0%;
74
+ unicode-range:
75
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
76
+ }
77
+ @font-face {
78
+ font-family: "Noto Sans JP Fallback";
79
+ font-weight: 700;
80
+ src:
81
+ local("Hiragino Sans W6"), local("HiraginoSans-W6"), local("Hiragino Kaku Gothic ProN W6"),
82
+ local("HiraKakuProN-W6"), local("Yu Gothic Bold"), local("YuGothic-Bold"), local("Meiryo Bold"),
83
+ local("Meiryo-Bold"), local("Noto Sans CJK JP Bold"), local("NotoSansCJKjp-Bold"),
84
+ local("IPAGothic");
85
+ ascent-override: 116%;
86
+ descent-override: 28.8%;
87
+ line-gap-override: 0%;
88
+ unicode-range:
89
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
90
+ }
91
+
9
92
  :root {
10
93
  --font-sans-base:
11
- "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", YuGothic,
12
- "M PLUS 2", Meiryo, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
94
+ "Noto Sans JP", "Noto Sans JP Fallback", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
95
+ "Yu Gothic Medium", YuGothic, "M PLUS 2", Meiryo, -apple-system, BlinkMacSystemFont, "Segoe UI",
96
+ Roboto, system-ui, sans-serif;
13
97
  --font-sans-vi:
14
- "Noto Sans JP", "M PLUS 2", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui,
15
- sans-serif;
98
+ "Noto Sans JP", "Noto Sans JP Fallback", "M PLUS 2", -apple-system, BlinkMacSystemFont,
99
+ "Segoe UI", Roboto, system-ui, sans-serif;
16
100
  }