@qijenchen/design-system 0.1.0-beta.3

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 (119) hide show
  1. package/package.json +93 -0
  2. package/src/README.md +32 -0
  3. package/src/components/Accordion/accordion.tsx +104 -0
  4. package/src/components/Alert/alert.tsx +188 -0
  5. package/src/components/AppShell/_demo-helpers.tsx +198 -0
  6. package/src/components/AppShell/app-shell.tsx +364 -0
  7. package/src/components/AspectRatio/aspect-ratio.tsx +58 -0
  8. package/src/components/Avatar/avatar.tsx +368 -0
  9. package/src/components/Badge/badge.tsx +104 -0
  10. package/src/components/Breadcrumb/breadcrumb.tsx +609 -0
  11. package/src/components/BulkActionBar/bulk-action-bar.tsx +156 -0
  12. package/src/components/Button/button-group.tsx +96 -0
  13. package/src/components/Button/button.tsx +539 -0
  14. package/src/components/Calendar/calendar.tsx +411 -0
  15. package/src/components/Carousel/carousel.tsx +371 -0
  16. package/src/components/Chart/chart.tsx +376 -0
  17. package/src/components/Checkbox/checkbox-group.tsx +94 -0
  18. package/src/components/Checkbox/checkbox.tsx +237 -0
  19. package/src/components/Chip/chip.tsx +359 -0
  20. package/src/components/CircularProgress/circular-progress.tsx +204 -0
  21. package/src/components/Coachmark/coachmark.tsx +255 -0
  22. package/src/components/Combobox/combobox.tsx +826 -0
  23. package/src/components/Command/command.tsx +187 -0
  24. package/src/components/DataTable/active-editor-controller.ts +72 -0
  25. package/src/components/DataTable/cell-registry.tsx +520 -0
  26. package/src/components/DataTable/column-types.ts +180 -0
  27. package/src/components/DataTable/data-table-column-visibility-panel.tsx +261 -0
  28. package/src/components/DataTable/data-table-filter-panel.tsx +813 -0
  29. package/src/components/DataTable/data-table-interaction-layer.tsx +483 -0
  30. package/src/components/DataTable/data-table-sort-manager.tsx +210 -0
  31. package/src/components/DataTable/data-table.css +165 -0
  32. package/src/components/DataTable/data-table.tsx +2924 -0
  33. package/src/components/DataTable/filter-operators.ts +225 -0
  34. package/src/components/DataTable/filter-tree.ts +313 -0
  35. package/src/components/DataTable/lib/column-meta.ts +79 -0
  36. package/src/components/DateGrid/date-grid.tsx +209 -0
  37. package/src/components/DatePicker/date-picker.tsx +1114 -0
  38. package/src/components/DescriptionList/description-list.tsx +141 -0
  39. package/src/components/Dialog/dialog.tsx +267 -0
  40. package/src/components/DropdownMenu/dropdown-menu.tsx +475 -0
  41. package/src/components/Empty/empty.tsx +108 -0
  42. package/src/components/Field/field-context.ts +136 -0
  43. package/src/components/Field/field-types.ts +52 -0
  44. package/src/components/Field/field-wrapper.tsx +348 -0
  45. package/src/components/Field/field.tsx +535 -0
  46. package/src/components/FieldControlGroup/field-control-group.tsx +136 -0
  47. package/src/components/FileItem/file-item.tsx +322 -0
  48. package/src/components/FileUpload/file-upload.tsx +326 -0
  49. package/src/components/FileViewer/file-viewer-types.ts +76 -0
  50. package/src/components/FileViewer/file-viewer.tsx +1065 -0
  51. package/src/components/FileViewer/image-renderer.tsx +256 -0
  52. package/src/components/HoverCard/hover-card.tsx +79 -0
  53. package/src/components/Input/input.tsx +233 -0
  54. package/src/components/LinkInput/link-input.tsx +304 -0
  55. package/src/components/Menu/menu-item.tsx +334 -0
  56. package/src/components/NameCard/name-card.tsx +319 -0
  57. package/src/components/Notice/notice.tsx +196 -0
  58. package/src/components/NumberInput/number-input.tsx +203 -0
  59. package/src/components/OverflowIndicator/overflow-indicator.tsx +156 -0
  60. package/src/components/PeoplePicker/avatar-stack-overflow.ts +100 -0
  61. package/src/components/PeoplePicker/people-picker-helpers.ts +76 -0
  62. package/src/components/PeoplePicker/people-picker.tsx +455 -0
  63. package/src/components/PeoplePicker/person-display.tsx +358 -0
  64. package/src/components/Popover/popover.tsx +183 -0
  65. package/src/components/ProgressBar/progress-bar.tsx +157 -0
  66. package/src/components/README.md +58 -0
  67. package/src/components/RadioGroup/radio-group.tsx +261 -0
  68. package/src/components/Rating/rating.tsx +295 -0
  69. package/src/components/ScrollArea/scroll-area.tsx +110 -0
  70. package/src/components/SegmentedControl/segmented-control.tsx +304 -0
  71. package/src/components/Select/select.tsx +658 -0
  72. package/src/components/SelectMenu/select-menu.tsx +430 -0
  73. package/src/components/SelectionControl/selection-item.tsx +261 -0
  74. package/src/components/Separator/separator.tsx +48 -0
  75. package/src/components/Sheet/sheet.tsx +240 -0
  76. package/src/components/Sidebar/sidebar.tsx +1280 -0
  77. package/src/components/Skeleton/skeleton.tsx +35 -0
  78. package/src/components/Slider/slider.tsx +158 -0
  79. package/src/components/Steps/steps.tsx +850 -0
  80. package/src/components/Switch/switch.tsx +285 -0
  81. package/src/components/Tabs/tabs.tsx +515 -0
  82. package/src/components/Tag/tag.tsx +246 -0
  83. package/src/components/Textarea/textarea.tsx +280 -0
  84. package/src/components/TimePicker/time-columns.tsx +260 -0
  85. package/src/components/TimePicker/time-picker.tsx +419 -0
  86. package/src/components/Toast/toast.tsx +129 -0
  87. package/src/components/Tooltip/tooltip.tsx +68 -0
  88. package/src/components/TreeView/tree-view.tsx +1031 -0
  89. package/src/hooks/use-controllable.ts +40 -0
  90. package/src/hooks/use-is-narrow-viewport.ts +19 -0
  91. package/src/hooks/use-is-touch-device.ts +21 -0
  92. package/src/hooks/use-overflow-items.ts +256 -0
  93. package/src/index.ts +85 -0
  94. package/src/lib/README.md +82 -0
  95. package/src/lib/drag-visual.ts +272 -0
  96. package/src/lib/i18n/README.md +60 -0
  97. package/src/lib/i18n/i18n-context.tsx +129 -0
  98. package/src/lib/multi-select-ordering.ts +61 -0
  99. package/src/lib/utils.ts +93 -0
  100. package/src/patterns/README.md +67 -0
  101. package/src/patterns/element-anatomy/item-anatomy.tsx +744 -0
  102. package/src/patterns/header-canonical/chrome-header.tsx +175 -0
  103. package/src/patterns/header-canonical/header-canonical.css +27 -0
  104. package/src/patterns/horizontal-overflow/horizontal-overflow.tsx +217 -0
  105. package/src/patterns/overlay-surface/overlay-surface.tsx +191 -0
  106. package/src/patterns/resize-handle/resize-handle.tsx +188 -0
  107. package/src/stories-helpers/anatomy/anatomy-utils.tsx +64 -0
  108. package/src/tokens/README.md +53 -0
  109. package/src/tokens/color/primitives.css +429 -0
  110. package/src/tokens/color/semantic.css +539 -0
  111. package/src/tokens/elevation/overlay-geometry.ts +13 -0
  112. package/src/tokens/layoutSpace/layoutSpace.css +36 -0
  113. package/src/tokens/motion/motion.css +30 -0
  114. package/src/tokens/motion/motion.ts +17 -0
  115. package/src/tokens/opacity/opacity.css +23 -0
  116. package/src/tokens/radius/radius.css +19 -0
  117. package/src/tokens/typography/typography.css +118 -0
  118. package/src/tokens/uiSize/icon-size.ts +52 -0
  119. package/src/tokens/uiSize/uiSize.css +125 -0
@@ -0,0 +1,23 @@
1
+ /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
2
+ Opacity Tokens
3
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
4
+
5
+ ็ณป็ตฑๅ…งๅ”ฏไธ€็š„ opacity token(disabled ็‹€ๆ…‹)ใ€‚ๅ…ถไป–ๆ‰€ๆœ‰้€ๆ˜Žๅบฆ้œ€ๆฑ‚
6
+ ๆ‡‰้€้Ž alpha ่‰ฒ้šŽ(--white-aN / --black-aN)่งฃๆฑบ,ไธๅฆ้–‹ opacity tokenใ€‚
7
+
8
+ **Drag-and-drop reuse(2026-05-06 v14.5.2 ๅฐ้ฝŠ Atlassian Pragmatic)**:
9
+ - Drag source ๅŠ้€ๆฎ˜ๅฝฑ โ†’ reuse `opacity-disabled`(0.45)ใ€‚Atlassian Pragmatic
10
+ guidelines ไนŸๆ˜ฏ reuse `opacity.disabled`(ไป–ๅ€‘ๅ€ผ 0.40,ๆˆ‘ๅ€‘ 0.45,role ไธ€่‡ด)ใ€‚
11
+ - DragOverlay ghost ไธๅฆ dim,็”จ `opacity:1` + `shadow-[var(--elevation-200)]`
12
+ ่กจ้” "lifted preview"(ๅฐ้ฝŠ dnd-kit / Material / Atlassian canonical)ใ€‚
13
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
14
+
15
+ @theme inline {
16
+ --opacity-disabled: 0.45;
17
+ }
18
+
19
+
20
+ /* โ”€โ”€ Custom Utility โ”€โ”€ */
21
+ @utility opacity-disabled {
22
+ opacity: var(--opacity-disabled);
23
+ }
@@ -0,0 +1,19 @@
1
+ /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
2
+ Radius Tokens
3
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
4
+
5
+ ่ฆ‹ radius.spec.md ็š„ไฝฟ็”จๅŽŸๅ‰‡ใ€‚
6
+
7
+ xs :2px(ๆฅตๅฐ่ฆ–่ฆบ indicator,ๅฆ‚ Chart legend swatch 8ร—8 ่‰ฒๅกŠ)
8
+ sm / md:4px(ๅฐๅ…ƒไปถใ€Tagใ€Badgeใ€Buttonใ€Fieldใ€checkbox ็ญ‰)
9
+ lg :8px(ๅก็‰‡ใ€ๅฝˆ็ช—ใ€ๅฎนๅ™จๅฑค)
10
+ full :9999px(pill / circular,Avatarใ€Switch track ็ญ‰)
11
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
12
+
13
+ @theme inline {
14
+ --radius-xs: 2px;
15
+ --radius-sm: 4px;
16
+ --radius-md: 4px;
17
+ --radius-lg: 8px;
18
+ --radius-full: 9999px;
19
+ }
@@ -0,0 +1,118 @@
1
+ /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
2
+ Typography Tokens
3
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
4
+
5
+ โ”Œโ”€ ่จญ่จˆๅŽŸๅ‰‡ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
6
+ โ”‚ font-size ่ˆ‡้ ่จญ line-height ็ƒค้€ฒ tokenใ€‚ โ”‚
7
+ โ”‚ font-weight ๆฐธ้ ็”ฑไฝฟ็”จ็ซฏ็–ŠๅŠ ๏ผŒไธๅฏซๆญปๅœจ tokenใ€‚ โ”‚
8
+ โ”‚ โ”‚
9
+ โ”‚ line-height ็š„้ธๆ“‡ๅŸบๆ–ผใ€Œๆ˜ฏๅฆ้ฉๅˆๅคš่กŒ้–ฑ่ฎ€ใ€๏ผš โ”‚
10
+ โ”‚ lh 1.5 โ†’ ้ฉๅˆ้–ฑ่ฎ€็š„้€ฃ็บŒๆฎต่ฝ๏ผˆ14px / 16px๏ผ‰ โ”‚
11
+ โ”‚ lh 1.3 โ†’ ๆจ™้กŒใ€็Ÿญๆ–‡ๅญ—ใ€ไธ้œ€้–ฑ่ฎ€่กŒ่ท็š„ๅ ดๆ™ฏ โ”‚
12
+ โ”‚ โ”‚
13
+ โ”‚ 12px ไปฅไธ‹ไธ้ฉๅˆไฝœ็‚บ้€ฃ็บŒ้–ฑ่ฎ€ๅ…งๆ–‡๏ผŒไธ€ๅพ‹ lh 1.3ใ€‚ โ”‚
14
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
15
+
16
+ โ”Œโ”€ Heading scale ๅ…จ้ƒจ lh 1.3 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
17
+ โ”‚ text-h1 48px ้ ้ขไธปๆจ™้กŒ โ”‚
18
+ โ”‚ text-h2 32px ๅ€ๅกŠๆจ™้กŒ โ”‚
19
+ โ”‚ text-h3 24px ๅญๅ€ๅกŠๆจ™้กŒ โ”‚
20
+ โ”‚ text-h4 20px ๅฐ็ฏ€ๆจ™้กŒ โ”‚
21
+ โ”‚ text-h5 16px ๅ…ƒไปถๅฑค็ดšๆจ™้กŒ โ”‚
22
+ โ”‚ text-h6 14px ๆœ€ๅฐๅฑค็ดšๆจ™้กŒ โ”‚
23
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
24
+
25
+ โ”Œโ”€ Body scale lh 1.5๏ผŒๅฏ็”จ leading-compact ่ฆ†่“‹็‚บ 1.3 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
26
+ โ”‚ text-body-lg 16px 16px ็‚บไธป็‰ˆ้ข็š„ๆฎต่ฝๅ…งๆ–‡ โ”‚
27
+ โ”‚ text-body 14px โ˜… ไธป่ฆๅ…งๆ–‡ๅŸบๆบ– โ”‚
28
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
29
+
30
+ โ”Œโ”€ Supplementary scale ๅ…จ้ƒจ lh 1.3 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
31
+ โ”‚ text-caption 12px ๅœ–่กจ้™„่จปใ€ๅ…ƒไปถ helper textใ€ๆจ™็ฑคๆ–‡ๅญ— โ”‚
32
+ โ”‚ text-footnote 10px ๆณ•ๅพ‹ๆ–‡ๅญ—ใ€ไพ†ๆบๆจ™ๆณจ๏ผˆๆฅตๅฐ‘็”จ๏ผ‰ โ”‚
33
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
34
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
35
+
36
+ :root {
37
+ /* Font Size */
38
+ --font-h1-size: 48px;
39
+ --font-h2-size: 32px;
40
+ --font-h3-size: 24px;
41
+ --font-h4-size: 20px;
42
+ --font-h5-size: 16px;
43
+ --font-h6-size: 14px;
44
+
45
+ --font-body-lg-size: 16px;
46
+ --font-body-size: 14px;
47
+
48
+ --font-caption-size: 12px;
49
+ --font-footnote-size: 10px;
50
+
51
+ /* โ”€ Letter-spacing(role-specific only;raw tracking-* utility ็ฆ็”จ)โ”€
52
+ `--tracking-shortcut`:้ต็›คๅฟซๆท้ต้กฏ็คบๅฐˆ็”จ(โŒ˜K / Ctrl+S ็ญ‰)ใ€‚ๅฏฌไธ€้šŽ
53
+ letter-spacing ่ฎ“ glyph ไน‹้–“ๅ‘ผๅธๆ„Ÿๅฐ้ฝŠ้ตๅธฝ visual idiom โ€” ๅฐ้ฝŠ
54
+ Material / GitHub Primer / Polaris KeyboardKey / Tailwindใ€Œwider tracking
55
+ for uppercase buttons + labelsใ€canonicalใ€‚0.1em ่ˆ‡ Tailwind tracking-widest
56
+ ็›ธๅŒๅ€ผไฝ†่ชž็พฉ็‰นๅฎš(ไธๆ”พไปป raw utility ๆผ)ใ€‚ */
57
+ --tracking-shortcut: 0.1em;
58
+ }
59
+
60
+
61
+ /* โ”€โ”€ Tailwind Theme Bridge โ”€โ”€
62
+ font-sans โ€” Roboto ็‚บๅ“็‰Œๅญ—้ซ”๏ผˆๅ‡่จญ็ณป็ตฑๅทฒๆœ‰๏ผŒไธๅฆๅค–่ผ‰ๅ…ฅ web font๏ผ‰
63
+
64
+ โ”Œโ”€ Stack ้ †ๅบ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
65
+ โ”‚ 1. Roboto๏ผˆๅ‡่จญ็ณป็ตฑๆœ‰๏ผ›ๆฒ’ๆœ‰ๅ‰‡ fallback๏ผ‰ โ”‚
66
+ โ”‚ 2. OS ็ณป็ตฑๅญ— fallback๏ผˆmacOS / Windows / generic๏ผ‰ โ”‚
67
+ โ”‚ 3. CJK ๅญ—้ซ” fallback๏ผˆ็€่ฆฝๅ™จ glyph-level fallback ่‡ชๅ‹•่งธ็™ผ๏ผ‰ โ”‚
68
+ โ”‚ 4. generic + emoji โ”‚
69
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
70
+
71
+ ๅŽŸ็†๏ผš็€่ฆฝๅ™จๅš glyph-level fallback๏ผŒ่‡ชๅ‹•ๆฒฟ stack ๆ‰พๆœ‰ๅฐๆ‡‰ๅญ—ๅ…ƒ็š„ๅญ—้ซ” */
72
+ @theme {
73
+ --font-sans:
74
+ /* Brand font โ€” ๅ‡่จญ็ณป็ตฑๅทฒๆœ‰ */
75
+ Roboto,
76
+ /* Latin OS fallback */
77
+ -apple-system, BlinkMacSystemFont,
78
+ "Segoe UI Variable", "Segoe UI",
79
+ system-ui,
80
+ /* Japanese */
81
+ "Hiragino Sans", "Yu Gothic UI", Meiryo, "Noto Sans JP",
82
+ /* Korean */
83
+ "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR",
84
+ /* Chinese (TC) */
85
+ "PingFang TC", "Microsoft JhengHei UI", "Microsoft JhengHei",
86
+ /* generic */
87
+ sans-serif,
88
+ /* emoji */
89
+ "Apple Color Emoji", "Segoe UI Emoji";
90
+ }
91
+
92
+
93
+ /* โ”€โ”€ Tailwind Utility Bridge โ”€โ”€ */
94
+
95
+ @utility text-h1 { font-size: var(--font-h1-size); line-height: 1.3; }
96
+ @utility text-h2 { font-size: var(--font-h2-size); line-height: 1.3; }
97
+ @utility text-h3 { font-size: var(--font-h3-size); line-height: 1.3; }
98
+ @utility text-h4 { font-size: var(--font-h4-size); line-height: 1.3; }
99
+ @utility text-h5 { font-size: var(--font-h5-size); line-height: 1.3; }
100
+ @utility text-h6 { font-size: var(--font-h6-size); line-height: 1.3; }
101
+
102
+ @utility text-body-lg { font-size: var(--font-body-lg-size); line-height: 1.5; }
103
+ @utility text-body { font-size: var(--font-body-size); line-height: 1.5; }
104
+
105
+ @utility text-caption { font-size: var(--font-caption-size); line-height: 1.3; }
106
+ @utility text-footnote { font-size: var(--font-footnote-size); line-height: 1.3; }
107
+
108
+
109
+ /* โ”€โ”€ line-height override
110
+ leading-normal (1.5) ๅทฒๆ˜ฏ Tailwind ๅ…งๅปบ๏ผŒๅช่ฃœ leading-compact โ”€โ”€ */
111
+ @utility leading-compact { line-height: 1.3; }
112
+
113
+
114
+ /* โ”€โ”€ Letter-spacing semantic utility(ๅฐ้ฝŠ single semantic value per role ๅ“ฒๅญธ)โ”€โ”€
115
+ `tracking-shortcut`:้ต็›คๅฟซๆท้ต hint(Command / DropdownMenuShortcut ็ญ‰)ใ€‚
116
+ ็ฆ raw `tracking-(tight|wide|wider|widest|tighter)` per typography.spec.md L91-105
117
+ + utility-registry.json block listใ€‚ๆ–ฐๅขž role ้œ€ๆ–ฐ token + ๆ–ฐ @utilityใ€‚ */
118
+ @utility tracking-shortcut { letter-spacing: var(--tracking-shortcut); }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Icon Size SSOT โ€” cross-domain re-export entry
3
+ *
4
+ * Owner:`packages/design-system/src/patterns/element-anatomy/item-anatomy.tsx:66` `ICON_SIZE`
5
+ * Spec:`packages/design-system/src/tokens/uiSize/uiSize.spec.md` ใ€ŒIcon Size Tierใ€ๆฎต
6
+ *
7
+ * โ”€โ”€ ็‚บไป€้บผ re-export ไธ็›ดๆŽฅๅ‹• owner โ”€โ”€
8
+ * `ICON_SIZE` const codified in `item-anatomy.tsx` ๆ˜ฏ row primitive SSOT(MenuItem / TreeView /
9
+ * Sidebar / DropdownMenu / SelectionItem / Item-anatomy ็ญ‰ row-based primitives ๆถˆ่ฒป)ใ€‚
10
+ *
11
+ * Form control(Button / Input / Combobox / DatePicker / Tabs / Select / SegmentedControl ็ญ‰)
12
+ * ไธ่ฉฒ cross-domain import patterns/element-anatomy(ๆœƒ้€ ๆˆ componentsโ†’patterns ๅๅ‘ dependency
13
+ * ๅขžๅŠ  cycle ้ขจ้šช)ใ€‚้€้Ž `tokens/uiSize/` ไฝœ token home ๆ˜ฏ cross-domain SSOT ็š„ๆ…ฃไพ‹(token ๆ˜ฏ DS
14
+ * ๅ…งๆœ€ๅบ•ๅฑค,ๆ‰€ๆœ‰ layer ้ƒฝๅฏ consume ไธ้•ๅ dependency direction)ใ€‚
15
+ *
16
+ * โ”€โ”€ Tier โ”€โ”€
17
+ * `field-height-xs / sm / md` โ†’ icon **16px**
18
+ * `field-height-lg` โ†’ icon **20px**
19
+ *
20
+ * ่ฉณ spec L132+ Icon Size Tier ๆฎต(stroke ไธ‹้™ 12px / Tag-Field ้…ๅฐ / etc.)
21
+ *
22
+ * โ”€โ”€ Consumer ็”จๆณ• โ”€โ”€
23
+ * ```tsx
24
+ * import { ICON_SIZE } from '@/design-system/tokens/uiSize/icon-size'
25
+ *
26
+ * // sm/md โ†’ 16, lg โ†’ 20
27
+ * <LucideIcon size={ICON_SIZE[size]} />
28
+ *
29
+ * // form control xs(field-height-xs 24)็”จ ICON_SIZE.sm(ๅŒ 16,per spec L132 Tier)
30
+ * <LucideIcon size={size === 'xs' ? ICON_SIZE.sm : ICON_SIZE[size]} />
31
+ * ```
32
+ *
33
+ * โ”€โ”€ ้˜ฒๆผ‚็งป โ”€โ”€
34
+ * 1. uiSize.spec.mdใ€ŒIcon Size Tierใ€ๆฎต codify 16/16/16/20 tier(text-based canonical)
35
+ * 2. ๆœฌ const ็จ‹ๅผๅŒ– SSOT(type-safe Record<RowSize, number>)
36
+ * 3. Hook `check_icon_size_literal.sh`(write-time regex ๆ””้žๆจ™ๆบ– literal)
37
+ * 4. Audit Dimใ€ŒIcon size literal complianceใ€DS-wide audit-time scan
38
+ *
39
+ * โ”€โ”€ Carve-out(ไธ้ฉ็”จๆœฌ SSOT)โ”€โ”€
40
+ * - `rating.spec.md` Rating star 20/24/24(identity scale,cite Ant/Material/Airbnb)
41
+ * - `avatar.spec.md` Avatar ๅ…ง icon `round_even(size ร— 0.6)`(Material/Apple HIG)
42
+ * - `empty.tsx` Empty ็”จ Avatar 48 wrap โ†’ icon 28(Avatar formula derived)
43
+ * - `file-viewer.tsx` thumb 64 โ†’ icon 20(thumbnail file-type indicator,hardcode ็„กๅ…ฌๅผ)
44
+ * - `circular-progress.tsx` `strokeWidth = max(2, size/10)`(stroke ring ๅŽšๅบฆๅ…ฌๅผ,้ž icon)
45
+ * - `steps.tsx` INDICATOR_ICON_SIZE `{sm:0, md:16, lg:20}`(้ƒจๅˆ†ๅฐ้ฝŠ tier,sm ๅ› ๅœ“ๅœˆ 8px ๅคชๅฐ)
46
+ * - `slider.tsx` thumb ๅ›บๅฎšไธ้šจ size ่ฎŠ(่ฆ–่ฆบ single tier)
47
+ * - `checkbox.tsx` + `switch.tsx` check `{sm:12, md:12, lg:16}`(form-control internal,stroke ไธ‹้™)
48
+ *
49
+ * ่ฉณ uiSize.spec.mdใ€Œ่ทจ regime pointer indexใ€ๆฎตใ€‚
50
+ */
51
+ export { ICON_SIZE } from '@/design-system/patterns/element-anatomy/item-anatomy'
52
+ export type { RowSize } from '@/design-system/patterns/element-anatomy/item-anatomy'
@@ -0,0 +1,125 @@
1
+ /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
2
+ Component Size โ€” Semantic Tokens
3
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
4
+
5
+ ๅ…ƒไปถ้ซ˜ๅบฆ็š„่ชž็พฉ tokenใ€‚rem ๅ–ฎไฝ๏ผŒๅฐŠ้‡ไฝฟ็”จ่€…็€่ฆฝๅ™จๅญ—้ซ”่จญๅฎš๏ผˆWCAG๏ผ‰ใ€‚
6
+ ้€้Ž data-density ๅˆ‡ๆ› md / lg ๆจกๅผใ€‚
7
+
8
+ โ”Œโ”€ Field Height โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
9
+ โ”‚ Buttonใ€Inputใ€Checkbox/Radio SelectionItem ็ญ‰ไบ’ๅ‹•ๅ…ƒไปถ โ”‚
10
+ โ”‚ xs ๅ›บๅฎšไธ้šจ density ็ธฎๆ”พ๏ผˆๅฏ†้›† UIใ€Button xs๏ผ‰ โ”‚
11
+ โ”‚ sm / md / lg ้šจ density ้Ÿฟๆ‡‰ โ”‚
12
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
13
+
14
+ โ”Œโ”€ Table Row โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
15
+ โ”‚ DataTable ่กŒ้ซ˜ โ”‚
16
+ โ”‚ sm / md / lg ไธ‰็จฎๅฐบๅฏธ๏ผŒdensity ๅˆ‡ๆ›็ตฑไธ€ +0.5rem (+8px) โ”‚
17
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
18
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
19
+
20
+ :root {
21
+ /* Field Height โ€” Buttonใ€Inputใ€SelectionItemใ€SegmentedControl */
22
+ --field-height-xs: 1.5rem; /* 24px โ€” ๅ›บๅฎš๏ผŒไธ้šจ density ็ธฎๆ”พ */
23
+ --field-height-sm: 1.75rem; /* 28px */
24
+ --field-height-md: 2rem; /* 32px */
25
+ --field-height-lg: 2.25rem; /* 36px */
26
+
27
+ /* Table Row Height โ€” DataTable */
28
+ --table-row-sm: 2rem; /* 32px */
29
+ --table-row-md: 2.5rem; /* 40px */
30
+ --table-row-lg: 3rem; /* 48px */
31
+
32
+ /* Tab Height โ€” Tabs
33
+ ็จ็ซ‹ๆ–ผ field-height ่ˆ‡ table-row๏ผštabs ๆ˜ฏ navigation container๏ผŒ
34
+ ้œ€่ฆๆฏ” form control ๆ›ดๅคง็š„ๅ‘ผๅธๆ„Ÿใ€‚ๆ•ธๅ€ผ็›ฎๅ‰่ˆ‡ table-row ๅฐ้ฝŠ๏ผŒ
35
+ ไฝ†ๆฆ‚ๅฟต็จ็ซ‹๏ผŒไธ็”จ var() alias โ€” ๆœชไพ†ไปปไฝ•ไธ€ๆ–น่ชฟๆ•ด้ƒฝไธ็‰ฝๅ‹•ๅฆไธ€ๆ–นใ€‚ */
36
+ --tab-height-sm: 2rem; /* 32px โ€” โ˜… ้ ่จญ(2026-05-17 ๅพž md ๆ”น),overlay / chrome / dense */
37
+ --tab-height-md: 2.5rem; /* 40px โ€” future tier(็„ก recommended use case,2026-05-17 ๅพž default ้™็ดš) */
38
+ --tab-height-lg: 3rem; /* 48px โ€” ็จ็ซ‹ tabs ๅ–ไปฃ chrome header(= --chrome-header-height) */
39
+
40
+ /* Chrome Header Height โ€” Sidebar / FileViewer Toolbar+InfoPanel / app top bar / page header
41
+ + Overlay family chrome (Dialog/Sheet/Popover/Coachmark header+footer via overlay-surface SurfaceHeader/SurfaceFooter)
42
+ (SSOT,2026-05-23 deep-audit Phase A Decision 1 codify per user verbatimใ€Œๆฑบ็ญ–ไธ€็…งไฝ ๅปบ่ญฐใ€ โ€”
43
+ ๅพž src/globals.css ๆฌๅˆฐ DS tokens ๅ›  npm-package consumer ๆฒ’ src/globals.css ๆœƒๅดฉ header ้ซ˜ๅบฆ,้• M17 SSOT ้ตๅพ‹)
44
+ consumer:patterns/header-canonical/chrome-header.tsxใ€overlay-surface.tsxใ€dialog.tsx ็ญ‰
45
+ ไธ–็•Œ็ดšๅฐ็…ง:Linear 48px / Atlassian 48-56 / Material small AppBar 48-56 / VS Code activity-bar 48
46
+ โ”€โ”€ ็‚บไป€้บผๆ˜ฏ 48 / 56(hardcode,้žๅ…ฌๅผ) โ”€โ”€
47
+ ไธ–็•Œ็ดš app ็š„ header ้ซ˜ๅบฆ้›†ไธญๅœจ 40โ€“64px,็”œ่œœ้ปž 48โ€“56ใ€‚
48
+ ๅ…ฉๅ€‹ๅ€ผ้ƒฝ snap ๅˆฐ 8px gridใ€‚anchor ๆ˜ฏ field-height-md(ๅฎน็ด md Button + ไธŠไธ‹ๅ‘ผๅธ็ฉบ้–“)ใ€‚
49
+ ไธๅฏซๆˆ calc() ๅ…ฌๅผๅ› ็‚บ lg ็„กๆณ•ๅฎŒ็พŽ้ตๅฎˆ(54 โ†’ 56 ็‚บไบ† 8px grid ๅ–ๆ•ด),hardcode ๆฏ”ๅ‡ๅ…ฌๅผ่ช ๅฏฆใ€‚ */
50
+ --chrome-header-height: 3rem; /* 48px */
51
+
52
+ /* Tree Indent โ€” TreeView + DataTable nested rows(SSOT,2026-05-04)
53
+ ๅ…ฌๅผ:chevronSize + gap-2 = 16+8(sm/md)/ 20+8(lg)
54
+ Consumer:TreeView depth indent / DataTable nested row depth indent */
55
+ --tree-indent-sm: 1.5rem; /* 24px */
56
+ --tree-indent-md: 1.5rem; /* 24px */
57
+ --tree-indent-lg: 1.75rem; /* 28px */
58
+
59
+ /* DataTable Panel Widths โ€” Sort manager / Filter panel cells(SSOT,2026-05-23 deep-audit Phase A.4 Decision 2 codify per user verbatimใ€Œๆฑบ็ญ–ไบŒ็…งไฝ ๅปบ่ญฐๅšใ€+ใ€Œ็ขบไฟๆœ€SSOTๆœ€็ฐกๆฝ”ใ€)
60
+ Consumer:data-table-sort-manager.tsx / data-table-filter-panel.tsx
61
+ ไธ density-scale(panels ๆ˜ฏ floating layout,ไธ่ฉฒ่ทŸๅฏ†ๅบฆ่ตฐ)
62
+ Naming aligned to family `--<component>-<part>-<size>`(per --field-height-* / --table-row-* / --tab-height-* precedent)*/
63
+ --data-table-sort-panel-width: 30rem; /* 480px โ€” sort manager root container width */
64
+ --data-table-filter-field-width: 10rem; /* 160px โ€” filter cell column selector(flat + nested ๅŒ width) */
65
+ --data-table-filter-op-width: 7.5rem; /* 120px โ€” filter cell operator selector(when value cell exists) */
66
+ }
67
+
68
+ [data-ui-size="lg"],
69
+ [data-density="lg"] {
70
+ --field-height-sm: 2rem; /* 32px */
71
+ --field-height-md: 2.25rem; /* 36px */
72
+ --field-height-lg: 2.5rem; /* 40px */
73
+
74
+ --table-row-sm: 2.5rem; /* 40px */
75
+ --table-row-md: 3rem; /* 48px */
76
+ --table-row-lg: 3.5rem; /* 56px */
77
+
78
+ --tab-height-sm: 2.5rem; /* 40px */
79
+ --tab-height-md: 3rem; /* 48px */
80
+ --tab-height-lg: 3.5rem; /* 56px */
81
+
82
+ --chrome-header-height: 3.5rem; /* 56px(lg density) */
83
+ }
84
+
85
+ /* 2026-04-22:md reset selector โ€” ็•ถ็ฅ–ๅ…ˆๅฑค็ดš(e.g. html[data-density="lg"])ๅทฒ cascading
86
+ lg overrides ไธ‹ไพ†,subtree ๅ…ƒไปถ(Popover / DropdownMenu / Tooltip ็ญ‰)ๅฎฃๅ‘Š `data-density="md"`
87
+ ๆˆ– `data-ui-size="md"` ๆ™‚ๅฟ…้ ˆ่ƒฝ reset ๅ›ž md default,ๅฆๅ‰‡ Portal ้€ƒ้€ธ + cascading
88
+ ๆœƒ่ฎ“ lock md ๅคฑๆ•ˆ(Meta-Pattern M3 Portal subtree context drift ้กž)ใ€‚ */
89
+ [data-ui-size="md"],
90
+ [data-density="md"] {
91
+ --field-height-sm: 1.75rem; /* 28px โ€” md default */
92
+ --field-height-md: 2rem; /* 32px โ€” md default */
93
+ --field-height-lg: 2.25rem; /* 36px โ€” md default */
94
+
95
+ --table-row-sm: 2rem; /* 32px */
96
+ --table-row-md: 2.5rem; /* 40px */
97
+ --table-row-lg: 3rem; /* 48px */
98
+
99
+ --tab-height-sm: 2rem; /* 32px */
100
+ --tab-height-md: 2.5rem; /* 40px */
101
+ --tab-height-lg: 3rem; /* 48px */
102
+
103
+ --tree-indent-sm: 1.5rem; /* 24px โ€” md default */
104
+ --tree-indent-md: 1.5rem; /* 24px โ€” md default */
105
+ --tree-indent-lg: 1.75rem; /* 28px โ€” md default */
106
+ }
107
+
108
+
109
+ /* โ”€โ”€ Tailwind Theme Bridge โ”€โ”€
110
+ ๆฉ‹ๆŽฅๆˆ spacing utility๏ผŒ่ฎ“ h-field-md / h-table-row-lg ็ญ‰ class ๅฏ็”จ */
111
+ @theme inline {
112
+ --spacing-field-xs: var(--field-height-xs);
113
+ --spacing-field-sm: var(--field-height-sm);
114
+ --spacing-field-md: var(--field-height-md);
115
+ --spacing-field-lg: var(--field-height-lg);
116
+ --spacing-table-row-sm: var(--table-row-sm);
117
+ --spacing-table-row-md: var(--table-row-md);
118
+ --spacing-table-row-lg: var(--table-row-lg);
119
+ --spacing-tab-sm: var(--tab-height-sm);
120
+ --spacing-tab-md: var(--tab-height-md);
121
+ --spacing-tab-lg: var(--tab-height-lg);
122
+ --spacing-tree-indent-sm: var(--tree-indent-sm);
123
+ --spacing-tree-indent-md: var(--tree-indent-md);
124
+ --spacing-tree-indent-lg: var(--tree-indent-lg);
125
+ }