@comitor/ui 0.5.0 → 0.6.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 (39) hide show
  1. package/README.md +6 -5
  2. package/dist/components/composite/data-table.d.ts +16 -1
  3. package/dist/components/composite/data-table.js +41 -7
  4. package/dist/components/composite/data-table.js.map +1 -1
  5. package/dist/components/composite/status-config.d.ts +9 -1
  6. package/dist/components/composite/status-config.js.map +1 -1
  7. package/dist/components/ui/command.js +1 -1
  8. package/dist/components/ui/command.js.map +1 -1
  9. package/dist/components/ui/context-menu.js +4 -4
  10. package/dist/components/ui/context-menu.js.map +1 -1
  11. package/dist/components/ui/dropdown-menu.js +4 -4
  12. package/dist/components/ui/dropdown-menu.js.map +1 -1
  13. package/dist/components/ui/item.js +1 -1
  14. package/dist/components/ui/item.js.map +1 -1
  15. package/dist/components/ui/menubar.js +4 -4
  16. package/dist/components/ui/menubar.js.map +1 -1
  17. package/dist/components/ui/select.js +1 -1
  18. package/dist/components/ui/select.js.map +1 -1
  19. package/dist/components/ui/table.js +2 -2
  20. package/dist/components/ui/table.js.map +1 -1
  21. package/dist/shell/display-axis-constants.d.ts +35 -0
  22. package/dist/shell/display-axis-constants.js +27 -0
  23. package/dist/shell/display-axis-constants.js.map +1 -0
  24. package/dist/shell/display-axis-controls.d.ts +51 -0
  25. package/dist/shell/display-axis-controls.js +70 -0
  26. package/dist/shell/display-axis-controls.js.map +1 -0
  27. package/dist/shell/display-axis-provider.d.ts +40 -0
  28. package/dist/shell/display-axis-provider.js +101 -0
  29. package/dist/shell/display-axis-provider.js.map +1 -0
  30. package/dist/shell/index.d.ts +3 -0
  31. package/dist/shell/index.js +3 -0
  32. package/dist/shell/index.js.map +1 -1
  33. package/dist/shell/shell-context.d.ts +9 -1
  34. package/dist/shell/shell-context.js +14 -4
  35. package/dist/shell/shell-context.js.map +1 -1
  36. package/dist/shell/sidebar-menu-item.js +1 -1
  37. package/dist/shell/sidebar-menu-item.js.map +1 -1
  38. package/package.json +4 -4
  39. package/styles.css +83 -2
package/styles.css CHANGED
@@ -450,6 +450,20 @@
450
450
  --sidebar-width-icon: 3.5rem; /* 56px, sidebar thu gọn */
451
451
  --header-height: 3.5rem; /* 56px */
452
452
 
453
+ /* ─ Thang MẬT ĐỘ — giá trị lúc THOẢI MÁI (mặc định) ─
454
+ Bốn token này là toàn bộ đường bật của "bố cục gọn"; khối 5d ghi đè chúng và không đụng gì
455
+ khác. Chỉ trục DỌC: gọn nghĩa là thấy nhiều dòng hơn, không phải chữ dính vào mép.
456
+
457
+ ⚠ PHẢI khai ở đây kể cả khi giá trị bằng đúng literal cũ. Cổng tương phản chỉ đọc bốn khối
458
+ (:root · .dark · hai khối tương phản cao); token nào vắng mặt ở :root thì với cổng nó là
459
+ chuỗi rỗng, `parseLength` trả null và `measureShape` mất khả năng phân loại hình — hỏng ÂM
460
+ THẦM chứ không đỏ. */
461
+ --row-py: 0.75rem; /* 12px — py-3 của ô bảng */
462
+ --menu-item-py: 0.375rem; /* 6px — py-1.5 của mục menu */
463
+ --list-item-py: 0.75rem; /* 12px — py-3 của mục danh sách */
464
+ --nav-item-py: 0.375rem; /* 6px — py-1.5 của mục thanh bên */
465
+ --table-head-h: 2.5rem; /* 40px — h-10 của hàng tiêu đề bảng */
466
+
453
467
  /* ─ Thang ĐỔ BÓNG (elevation) ─
454
468
  Giá trị THÔ nằm ở đây chứ không nằm trong @theme, vì bóng phải đổi theo light/dark:
455
469
  @theme thường "đóng băng" giá trị lúc build, chỉ biến CSS thật mới được khối .dark
@@ -469,7 +483,12 @@
469
483
  --elevation-card: 0 1px 2px rgba(14, 17, 22, 0.04), 0 8px 24px rgba(14, 17, 22, 0.06);
470
484
  --elevation-overlay: 0 8px 32px rgba(14, 17, 22, 0.16);
471
485
 
472
- --radius: 0.375rem; /* 6px — chữ ký thị giác của Comitor */
486
+ /* 6px — chữ ký thị giác của Comitor, docs/spec-package.md §2 quy tắc 2 khoá cứng.
487
+ Viết bằng px chứ KHÔNG phải 0.375rem, và đó là điều kiện để trục CỠ CHỮ (khối 5c) đúng: cỡ
488
+ chữ phóng theo tỉ lệ nên mọi giá trị tính bằng rem đi theo — bo góc mà đi theo thì ở mức
489
+ `lg` nó thành 6,75px, tức chữ ký thị giác đổi theo tuỳ chọn của người dùng. Ở mức mặc định
490
+ hai cách cho ra cùng một con số nên đây không phải thay đổi hình thức. */
491
+ --radius: 6px;
473
492
  }
474
493
 
475
494
  /* ────────────────────────────────────────────────────────────────────────────
@@ -604,7 +623,7 @@
604
623
  phân cấp "cái này thao tác được" ⇄ "cái này chỉ là đường kẻ", và cả trang thành lưới ô.
605
624
  · Giữ nó dưới 3:1 cũng giữ đúng tiền đề của hợp đồng: --border là token KHÔNG chịu ngưỡng.
606
625
  Cổng tương phản dựa vào đúng tiền đề đó để bắt lỗi "vẽ hình control bằng token trang trí"
607
- (4 ca trong `test:cong-a11y`) — nâng --border lên 3,83:1 là bốn ca đó hết bắt được. */
626
+ (4 ca trong `test:a11y-gate`) — nâng --border lên 3,83:1 là bốn ca đó hết bắt được. */
608
627
  --border: #a4a4a6;
609
628
  --sidebar-border: #a4a4a6;
610
629
  /* Ở bảng này viền ô nhập và viền checkbox/radio CÙNG một bậc — trỏ bằng var() để đổi --input
@@ -667,6 +686,68 @@
667
686
  --yellow: #facc15;
668
687
  }
669
688
 
689
+ /* ────────────────────────────────────────────────────────────────────────────
690
+ 5c. TRỤC THỨ TƯ — CỠ CHỮ `<html data-font-size="sm|lg">`
691
+
692
+ Đây là PHÓNG THEO TỈ LỆ, không phải "chỉ đổi cỡ chữ" — và đó là chủ ý.
693
+
694
+ Icon trong gói lấy cỡ từ thang KHOẢNG CÁCH chứ không phải thang chữ: 128 chỗ `size-3/4/5`
695
+ cộng 21 chỗ tự-động-cỡ `[&_svg:not([class*='size-'])]:size-4`, tất cả compile ra
696
+ `calc(var(--spacing) * n)`. Chiều cao control cũng vậy (`h-9`, `h-10`). Nếu chỉ ghi đè
697
+ `--text-*` thì ở mức `lg`: chữ 16px nằm cạnh icon vẫn 16px trong mọi hàng menu, nhãn
698
+ checkbox to ra trong khi ô `size-4` đứng yên, và `Kbd` (hộp 20px chứa chữ 12px) vỡ trước
699
+ tiên. Đổi `font-size` ở gốc thì mọi thứ tính bằng rem đi theo cùng nhau, tỉ lệ icon⇄chữ giữ
700
+ nguyên, và không phải sửa ~149 chỗ icon.
701
+
702
+ ⚠ PHẢI LÀ PHẦN TRĂM, KHÔNG ĐƯỢC LÀ px. Người dùng có thể đã tăng cỡ chữ mặc định của trình
703
+ duyệt; khai `font-size: 16px` ở <html> là XOÁ lựa chọn đó — tự tay vi phạm WCAG 1.4.4 ngay
704
+ bên trong một tính năng trợ năng. Phần trăm là phần trăm CỦA CHÍNH cỡ đó nên vẫn tôn trọng.
705
+
706
+ ⚠ Mức `md` KHÔNG có khối nào. Provider gỡ hẳn thuộc tính thay vì ghi `data-font-size="md"`,
707
+ nên ở mức mặc định không có một dòng CSS nào can thiệp vào cỡ gốc của trình duyệt.
708
+
709
+ Vì sao KHÔNG cần khai `--text-*` trong @theme: đã biên dịch thử bằng đúng tailwindcss 4.3.3
710
+ của repo — `text-sm` sinh ra `font-size: var(--text-sm); line-height: var(--tw-leading,
711
+ var(--text-sm--line-height))` dù gói có khai token hay không, và mặc định nằm trong
712
+ `@layer theme`. Ta không đụng tới chúng; ta đổi cỡ GỐC mà chúng quy chiếu.
713
+ ──────────────────────────────────────────────────────────────────────────── */
714
+ [data-font-size="sm"] {
715
+ font-size: 87.5%;
716
+ }
717
+
718
+ [data-font-size="lg"] {
719
+ font-size: 112.5%;
720
+ }
721
+
722
+ /* ────────────────────────────────────────────────────────────────────────────
723
+ 5d. TRỤC THỨ BA — MẬT ĐỘ `<html data-density="compact">`
724
+
725
+ Bố cục gọn KHÔNG ghi đè `--spacing` toàn cục. Đã cân nhắc và loại: một dòng là xong, nhưng
726
+ nó co CẢ chiều ngang lẫn icon — `size-4` tụt còn ~12,8px, padding trái/phải hụt theo, và cả
727
+ quãng trượt của tw-animate cũng ngắn lại. Gọn về mã, xấu về kết quả.
728
+
729
+ Thay vào đó là một nhóm token nhắm đúng những bề mặt người dùng thấy CHẬT: hàng bảng, mục
730
+ menu, mục danh sách, mục thanh bên. Chỉ trục DỌC — chiều ngang giữ nguyên, vì "gọn" nghĩa là
731
+ thấy nhiều dòng hơn chứ không phải chữ dính vào mép.
732
+
733
+ ⚠ Mỗi token PHẢI có giá trị mặc định ở `:root` (khối 4). Cổng tương phản chỉ đọc bốn khối
734
+ `:root` · `.dark` · `[data-contrast="high"]` · `.dark[data-contrast="high"]`; token nào chỉ
735
+ khai trong khối này thì với cổng nó là chuỗi rỗng — `parseLength` trả null, `measureShape`
736
+ mất `isBar`/`isBox`/`isTinyAxis`, và nền theo token BỀ MẶT thôi không còn chịu ngưỡng 3:1.
737
+ Hỏng ÂM THẦM, không đỏ. (Với token MÀU thì lỗi này nổ ra thành phát hiện, với token ĐỘ DÀI
738
+ thì không.)
739
+
740
+ Đây cũng là khoản mà docs/spec-package.md §2 quy tắc 1 đã đòi từ đầu ("mọi khoảng cách là CSS
741
+ variable"), nên nó là TRẢ NỢ chứ không phải thêm ý tưởng mới.
742
+ ──────────────────────────────────────────────────────────────────────────── */
743
+ [data-density="compact"] {
744
+ --row-py: 0.375rem;
745
+ --menu-item-py: 0.25rem;
746
+ --list-item-py: 0.5rem;
747
+ --nav-item-py: 0.25rem;
748
+ --table-head-h: 2rem;
749
+ }
750
+
670
751
  /* ────────────────────────────────────────────────────────────────────────────
671
752
  6. MAP BIẾN → NAMESPACE TAILWIND (sinh bg-*, text-*, border-*, rounded-*…)
672
753