@thewrong/ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/README.md +25 -4
  2. package/dist/components/_shared/form-size-tokens.cjs +1 -0
  3. package/dist/{src/components → components}/_shared/form-size-tokens.d.ts +3 -1
  4. package/dist/components/_shared/form-size-tokens.esm.js +26 -21
  5. package/dist/components/action-toast/ActionToast.cjs +1 -0
  6. package/dist/{src/components → components}/action-toast/ActionToast.d.ts +12 -3
  7. package/dist/components/action-toast/ActionToast.esm.js +133 -123
  8. package/dist/{src/components → components}/action-toast/index.d.ts +2 -2
  9. package/dist/components/animated-height/AnimatedHeight.cjs +1 -0
  10. package/dist/components/animated-height/AnimatedHeight.esm.js +14 -14
  11. package/dist/components/animated-height/index.d.ts +2 -0
  12. package/dist/components/badge/Badge.cjs +1 -0
  13. package/dist/{src/components → components}/badge/Badge.d.ts +1 -1
  14. package/dist/components/badge/Badge.esm.js +19 -23
  15. package/dist/components/badge/index.d.ts +2 -0
  16. package/dist/components/badge/utils.cjs +1 -0
  17. package/dist/{src/components → components}/badge/utils.d.ts +1 -1
  18. package/dist/components/badge/utils.esm.js +15 -15
  19. package/dist/components/button/Button.cjs +1 -0
  20. package/dist/{src/components → components}/button/Button.d.ts +2 -1
  21. package/dist/components/button/Button.esm.js +38 -45
  22. package/dist/{src/components → components}/button/index.d.ts +2 -2
  23. package/dist/components/button/utils.cjs +1 -0
  24. package/dist/{src/components → components}/button/utils.d.ts +1 -1
  25. package/dist/components/button/utils.esm.js +21 -21
  26. package/dist/components/checkbox/Checkbox.cjs +1 -0
  27. package/dist/{src/components → components}/checkbox/Checkbox.d.ts +1 -1
  28. package/dist/components/checkbox/Checkbox.esm.js +36 -35
  29. package/dist/components/checkbox/index.d.ts +2 -0
  30. package/dist/components/checkbox/utils.cjs +1 -0
  31. package/dist/{src/components → components}/checkbox/utils.d.ts +1 -1
  32. package/dist/components/checkbox/utils.esm.js +11 -11
  33. package/dist/components/collapsible/Collapsible.cjs +1 -0
  34. package/dist/components/collapsible/Collapsible.esm.js +12 -11
  35. package/dist/components/collapsible/index.d.ts +2 -0
  36. package/dist/components/copyable-text/CopyableText.cjs +1 -0
  37. package/dist/components/copyable-text/CopyableText.d.ts +22 -0
  38. package/dist/components/copyable-text/CopyableText.esm.js +50 -0
  39. package/dist/components/copyable-text/index.d.ts +2 -0
  40. package/dist/components/date-input/DateInput.cjs +1 -0
  41. package/dist/{src/components → components}/date-input/DateInput.d.ts +1 -0
  42. package/dist/components/date-input/DateInput.esm.js +24 -23
  43. package/dist/components/date-input/index.d.ts +1 -0
  44. package/dist/components/date-picker/PickerSheet.cjs +1 -0
  45. package/dist/components/date-picker/PickerSheet.d.ts +22 -0
  46. package/dist/components/date-picker/PickerSheet.esm.js +77 -0
  47. package/dist/components/date-picker/date-picker.cjs +1 -0
  48. package/dist/{src/components → components}/date-picker/date-picker.d.ts +1 -0
  49. package/dist/components/date-picker/date-picker.esm.js +99 -147
  50. package/dist/components/date-picker/date-range-picker.cjs +1 -0
  51. package/dist/{src/components → components}/date-picker/date-range-picker.d.ts +3 -1
  52. package/dist/components/date-picker/date-range-picker.esm.js +117 -166
  53. package/dist/components/date-picker/index.d.ts +5 -0
  54. package/dist/components/date-picker/month-picker.cjs +1 -0
  55. package/dist/{src/components → components}/date-picker/month-picker.d.ts +1 -0
  56. package/dist/components/date-picker/month-picker.esm.js +68 -112
  57. package/dist/components/drawer/Drawer.cjs +1 -0
  58. package/dist/components/drawer/Drawer.d.ts +45 -0
  59. package/dist/components/drawer/Drawer.esm.js +127 -97
  60. package/dist/components/drawer/index.d.ts +2 -0
  61. package/dist/components/error-boundary/ErrorBoundary.cjs +1 -0
  62. package/dist/components/error-boundary/ErrorBoundary.d.ts +23 -0
  63. package/dist/components/error-boundary/ErrorBoundary.esm.js +46 -0
  64. package/dist/components/error-boundary/chunk-reload.cjs +1 -0
  65. package/dist/components/error-boundary/chunk-reload.d.ts +77 -0
  66. package/dist/components/error-boundary/chunk-reload.esm.js +73 -0
  67. package/dist/components/error-boundary/index.d.ts +4 -0
  68. package/dist/components/error-boundary/types.d.ts +23 -0
  69. package/dist/components/field/Field.cjs +1 -0
  70. package/dist/components/field/Field.d.ts +16 -0
  71. package/dist/components/field/Field.esm.js +34 -0
  72. package/dist/components/field/FieldMessage.cjs +1 -0
  73. package/dist/components/field/FieldMessage.d.ts +19 -0
  74. package/dist/components/field/FieldMessage.esm.js +12 -0
  75. package/dist/components/field/index.d.ts +3 -0
  76. package/dist/components/field/types.d.ts +24 -0
  77. package/dist/components/info-tooltip/InfoTooltip.cjs +1 -0
  78. package/dist/components/info-tooltip/InfoTooltip.esm.js +13 -12
  79. package/dist/components/info-tooltip/index.d.ts +2 -0
  80. package/dist/components/input/DecimalInput.cjs +1 -0
  81. package/dist/components/input/DecimalInput.d.ts +18 -0
  82. package/dist/components/input/DecimalInput.esm.js +40 -0
  83. package/dist/components/input/Input.cjs +1 -0
  84. package/dist/{src/components → components}/input/Input.d.ts +1 -1
  85. package/dist/components/input/Input.esm.js +47 -53
  86. package/dist/components/input/PasswordInput.cjs +1 -0
  87. package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
  88. package/dist/components/input/PasswordInput.esm.js +1 -1
  89. package/dist/components/input/decimal-validation.cjs +1 -0
  90. package/dist/components/input/decimal-validation.d.ts +7 -0
  91. package/dist/components/input/decimal-validation.esm.js +66 -0
  92. package/dist/components/input/format.cjs +1 -0
  93. package/dist/{src/components → components}/input/format.d.ts +17 -1
  94. package/dist/components/input/format.esm.js +16 -5
  95. package/dist/components/input/index.d.ts +7 -0
  96. package/dist/{src/components → components}/input/types.d.ts +2 -2
  97. package/dist/components/input/use-input-format.cjs +1 -0
  98. package/dist/components/input/use-input-format.d.ts +43 -0
  99. package/dist/components/input/use-input-format.esm.js +75 -0
  100. package/dist/components/input/utils.cjs +1 -0
  101. package/dist/{src/components → components}/input/utils.d.ts +1 -1
  102. package/dist/components/input/utils.esm.js +19 -18
  103. package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
  104. package/dist/components/loading-spinner/LoadingSpinner.esm.js +19 -18
  105. package/dist/components/loading-spinner/index.d.ts +2 -0
  106. package/dist/components/modal/Modal.cjs +1 -0
  107. package/dist/{src/components → components}/modal/Modal.d.ts +28 -2
  108. package/dist/components/modal/Modal.esm.js +148 -118
  109. package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
  110. package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
  111. package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
  112. package/dist/components/modal/ModalSubView.cjs +1 -0
  113. package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
  114. package/dist/components/modal/ModalSubView.esm.js +65 -45
  115. package/dist/components/modal/StandardModal.cjs +1 -0
  116. package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
  117. package/dist/components/modal/StandardModal.esm.js +18 -15
  118. package/dist/components/modal/index.d.ts +6 -0
  119. package/dist/components/month-range-picker/index.d.ts +2 -0
  120. package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
  121. package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
  122. package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
  123. package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
  124. package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
  125. package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
  126. package/dist/components/page-title/PageTitle.cjs +1 -0
  127. package/dist/components/page-title/PageTitle.esm.js +11 -10
  128. package/dist/components/page-title/index.d.ts +1 -0
  129. package/dist/components/popover/Popover.cjs +1 -0
  130. package/dist/components/popover/Popover.esm.js +2 -2
  131. package/dist/components/popover/index.d.ts +2 -0
  132. package/dist/components/progress/Progress.cjs +1 -0
  133. package/dist/components/progress/Progress.d.ts +13 -0
  134. package/dist/components/progress/Progress.esm.js +24 -0
  135. package/dist/components/progress/index.d.ts +2 -0
  136. package/dist/components/progress/types.d.ts +13 -0
  137. package/dist/components/radio/Radio.cjs +1 -0
  138. package/dist/components/radio/Radio.d.ts +31 -0
  139. package/dist/components/radio/Radio.esm.js +118 -0
  140. package/dist/components/radio/index.d.ts +2 -0
  141. package/dist/components/radio/types.d.ts +24 -0
  142. package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
  143. package/dist/components/search-box/ExactMatchToggle.esm.js +14 -13
  144. package/dist/components/search-box/SearchBox.cjs +1 -0
  145. package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
  146. package/dist/components/search-box/SearchBox.esm.js +94 -93
  147. package/dist/components/search-box/SearchBoxChips.cjs +1 -0
  148. package/dist/components/search-box/SearchBoxChips.esm.js +3 -3
  149. package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
  150. package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
  151. package/dist/components/search-box/SearchBoxDateRange.esm.js +39 -36
  152. package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
  153. package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
  154. package/dist/components/search-box/SearchBoxDateSingle.esm.js +29 -27
  155. package/dist/components/search-box/SearchBoxField.cjs +1 -0
  156. package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
  157. package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
  158. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +29 -24
  159. package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
  160. package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
  161. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +56 -51
  162. package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
  163. package/dist/components/search-box/SearchBoxMonth.esm.js +21 -20
  164. package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
  165. package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
  166. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +60 -55
  167. package/dist/components/search-box/dateRangePresets.cjs +1 -0
  168. package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
  169. package/dist/{src/components → components}/search-box/index.d.ts +5 -5
  170. package/dist/components/search-box/parseSearchValues.cjs +1 -0
  171. package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
  172. package/dist/{src/components → components}/search-box/types.d.ts +1 -1
  173. package/dist/components/search-box/useSearchBoxState.cjs +1 -0
  174. package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
  175. package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
  176. package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
  177. package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
  178. package/dist/components/segmented-code-input/code-utils.cjs +1 -0
  179. package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
  180. package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
  181. package/dist/components/segmented-code-input/index.d.ts +2 -0
  182. package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
  183. package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
  184. package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
  185. package/dist/components/segmented-control/index.d.ts +2 -0
  186. package/dist/components/segmented-control/types.d.ts +30 -0
  187. package/dist/components/select/MultiSelect.cjs +1 -0
  188. package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
  189. package/dist/components/select/MultiSelect.esm.js +179 -177
  190. package/dist/components/select/Select.cjs +1 -0
  191. package/dist/{src/components → components}/select/Select.d.ts +16 -2
  192. package/dist/components/select/Select.esm.js +176 -164
  193. package/dist/components/select/index.d.ts +4 -0
  194. package/dist/components/select/loading-dots.cjs +1 -0
  195. package/dist/components/select/loading-dots.d.ts +3 -0
  196. package/dist/components/select/loading-dots.esm.js +8 -7
  197. package/dist/components/select/panel-width.cjs +1 -0
  198. package/dist/components/select/panel-width.d.ts +2 -0
  199. package/dist/components/select/panel-width.esm.js +7 -0
  200. package/dist/{src/components → components}/select/utils.d.ts +1 -1
  201. package/dist/components/skeleton/Skeleton.cjs +1 -0
  202. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  203. package/dist/components/skeleton/Skeleton.esm.js +12 -0
  204. package/dist/components/skeleton/index.d.ts +2 -0
  205. package/dist/components/skeleton/types.d.ts +2 -0
  206. package/dist/components/stepper/Stepper.cjs +1 -0
  207. package/dist/components/stepper/Stepper.d.ts +51 -0
  208. package/dist/components/stepper/Stepper.esm.js +142 -0
  209. package/dist/components/stepper/index.d.ts +4 -0
  210. package/dist/components/stepper/use-stepper.cjs +1 -0
  211. package/dist/components/stepper/use-stepper.d.ts +43 -0
  212. package/dist/components/stepper/use-stepper.esm.js +57 -0
  213. package/dist/components/switch/Switch.cjs +1 -0
  214. package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
  215. package/dist/components/switch/Switch.esm.js +21 -20
  216. package/dist/components/switch/index.d.ts +2 -0
  217. package/dist/components/switch/utils.cjs +1 -0
  218. package/dist/{src/components → components}/switch/utils.d.ts +2 -2
  219. package/dist/components/switch/utils.esm.js +9 -8
  220. package/dist/components/table/accordion-table.cjs +1 -0
  221. package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
  222. package/dist/components/table/accordion-table.esm.js +204 -204
  223. package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
  224. package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
  225. package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
  226. package/dist/components/table/components/ColumnPresetSelector.esm.js +60 -59
  227. package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
  228. package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
  229. package/dist/components/table/components/ColumnSettingsTable.esm.js +94 -96
  230. package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
  231. package/dist/components/table/components/KeyboardNavButton.esm.js +1 -1
  232. package/dist/components/table/components/PageJumpInput.cjs +1 -0
  233. package/dist/components/table/components/PageJumpInput.esm.js +33 -32
  234. package/dist/components/table/components/Pagination.cjs +1 -0
  235. package/dist/components/table/components/Pagination.esm.js +80 -79
  236. package/dist/components/table/components/PaginationFooter.cjs +1 -0
  237. package/dist/components/table/components/PaginationFooter.esm.js +2 -2
  238. package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
  239. package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
  240. package/dist/components/table/hooks/useColumnResize.cjs +1 -0
  241. package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
  242. package/dist/components/table/hooks/useColumnResize.esm.js +66 -54
  243. package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
  244. package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
  245. package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
  246. package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
  247. package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
  248. package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
  249. package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
  250. package/dist/components/table/hooks/useVirtualTable.esm.js +8 -8
  251. package/dist/components/table/index.d.ts +27 -0
  252. package/dist/components/table/mini-table.cjs +1 -0
  253. package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
  254. package/dist/components/table/mini-table.esm.js +87 -86
  255. package/dist/components/table/paginated-mini-table.cjs +1 -0
  256. package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
  257. package/dist/components/table/paginated-table.cjs +1 -0
  258. package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
  259. package/dist/components/table/table.cjs +1 -0
  260. package/dist/{src/components → components}/table/table.d.ts +2 -1
  261. package/dist/components/table/table.esm.js +190 -189
  262. package/dist/components/table/utils.cjs +35 -0
  263. package/dist/{src/components → components}/table/utils.d.ts +2 -2
  264. package/dist/components/table/utils.esm.js +2 -2
  265. package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
  266. package/dist/components/table-checkbox/TableCheckbox.esm.js +27 -26
  267. package/dist/components/table-checkbox/index.d.ts +1 -0
  268. package/dist/components/table-page-layout/TablePageLayout.cjs +1 -0
  269. package/dist/components/table-page-layout/TablePageLayout.esm.js +3 -3
  270. package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
  271. package/dist/components/textarea/Textarea.cjs +1 -0
  272. package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
  273. package/dist/components/textarea/Textarea.esm.js +49 -47
  274. package/dist/components/textarea/index.d.ts +2 -0
  275. package/dist/components/time-picker/index.d.ts +2 -0
  276. package/dist/components/time-picker/time-picker.cjs +1 -0
  277. package/dist/components/time-picker/time-picker.d.ts +35 -0
  278. package/dist/components/time-picker/time-picker.esm.js +193 -0
  279. package/dist/components/time-picker/time-utils.cjs +1 -0
  280. package/dist/components/time-picker/time-utils.d.ts +12 -0
  281. package/dist/components/time-picker/time-utils.esm.js +56 -0
  282. package/dist/components/toast/ToastProvider.cjs +1 -0
  283. package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
  284. package/dist/components/toast/ToastProvider.esm.js +47 -43
  285. package/dist/components/toast/index.d.ts +3 -0
  286. package/dist/components/toolbar/Toolbar.cjs +1 -0
  287. package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
  288. package/dist/components/toolbar/Toolbar.esm.js +99 -98
  289. package/dist/components/toolbar/index.d.ts +2 -0
  290. package/dist/components/tooltip/{Tooltip.cjs.js → Tooltip.cjs} +1 -1
  291. package/dist/components/tooltip/Tooltip.esm.js +1 -1
  292. package/dist/components/tooltip/index.d.ts +2 -0
  293. package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
  294. package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
  295. package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
  296. package/dist/components/typewriter-text/index.d.ts +2 -0
  297. package/dist/components/typewriter-text/types.d.ts +12 -0
  298. package/dist/components/typing-dots/TypingDots.cjs +1 -0
  299. package/dist/components/typing-dots/TypingDots.d.ts +10 -0
  300. package/dist/components/typing-dots/TypingDots.esm.js +37 -0
  301. package/dist/components/typing-dots/index.d.ts +2 -0
  302. package/dist/components/typing-dots/types.d.ts +4 -0
  303. package/dist/hooks/awaitableOverlayController.cjs +1 -0
  304. package/dist/hooks/awaitableOverlayController.d.ts +6 -0
  305. package/dist/hooks/awaitableOverlayController.esm.js +18 -0
  306. package/dist/hooks/index.d.ts +17 -0
  307. package/dist/hooks/useAwaitableOverlay.cjs +1 -0
  308. package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
  309. package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
  310. package/dist/hooks/useFillEmptyRows.cjs +1 -0
  311. package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
  312. package/dist/hooks/useFillEmptyRows.esm.js +60 -0
  313. package/dist/hooks/useFocusTrap.cjs +1 -0
  314. package/dist/hooks/useFocusTrap.d.ts +47 -0
  315. package/dist/hooks/useFocusTrap.esm.js +210 -0
  316. package/dist/hooks/useInfiniteScroll.cjs +1 -0
  317. package/dist/hooks/useInfiniteScroll.d.ts +36 -0
  318. package/dist/hooks/useInfiniteScroll.esm.js +31 -0
  319. package/dist/hooks/useTableDragSelection.cjs +1 -0
  320. package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
  321. package/dist/{components/table/hooks → hooks}/useTableDragSelection.esm.js +9 -6
  322. package/dist/hooks/useVirtualRows.cjs +1 -0
  323. package/dist/hooks/useVirtualRows.d.ts +56 -0
  324. package/dist/hooks/useVirtualRows.esm.js +20 -0
  325. package/dist/hooks.cjs +1 -0
  326. package/dist/hooks.esm.js +12 -5
  327. package/dist/index.cjs +1 -0
  328. package/dist/index.d.ts +40 -0
  329. package/dist/index.esm.js +81 -58
  330. package/dist/lib/index.d.ts +6 -0
  331. package/dist/lib/utils.cjs +1 -0
  332. package/dist/{src/lib → lib}/utils.d.ts +2 -1
  333. package/dist/lib/utils.esm.js +108 -5
  334. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
  335. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
  336. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
  337. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
  338. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
  339. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
  340. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
  341. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
  342. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
  343. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
  344. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
  345. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
  346. package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
  347. package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
  348. package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
  349. package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
  350. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
  351. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
  352. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
  353. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
  354. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
  355. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
  356. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
  357. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
  358. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
  359. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
  360. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
  361. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
  362. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
  363. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
  364. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
  365. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
  366. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
  367. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +559 -550
  368. package/dist/tokens.css +1085 -0
  369. package/dist/ui.css +1 -1
  370. package/llms.txt +39 -13
  371. package/package.json +11 -8
  372. package/dist/components/_shared/form-size-tokens.cjs.js +0 -1
  373. package/dist/components/action-toast/ActionToast.cjs.js +0 -1
  374. package/dist/components/animated-height/AnimatedHeight.cjs.js +0 -1
  375. package/dist/components/badge/Badge.cjs.js +0 -1
  376. package/dist/components/badge/utils.cjs.js +0 -1
  377. package/dist/components/button/Button.cjs.js +0 -1
  378. package/dist/components/button/utils.cjs.js +0 -1
  379. package/dist/components/checkbox/Checkbox.cjs.js +0 -1
  380. package/dist/components/checkbox/utils.cjs.js +0 -1
  381. package/dist/components/collapsible/Collapsible.cjs.js +0 -1
  382. package/dist/components/date-input/DateInput.cjs.js +0 -1
  383. package/dist/components/date-picker/date-picker.cjs.js +0 -1
  384. package/dist/components/date-picker/date-range-picker.cjs.js +0 -1
  385. package/dist/components/date-picker/month-picker.cjs.js +0 -1
  386. package/dist/components/drawer/Drawer.cjs.js +0 -1
  387. package/dist/components/info-tooltip/InfoTooltip.cjs.js +0 -1
  388. package/dist/components/input/Input.cjs.js +0 -1
  389. package/dist/components/input/PasswordInput.cjs.js +0 -1
  390. package/dist/components/input/format.cjs.js +0 -1
  391. package/dist/components/input/utils.cjs.js +0 -1
  392. package/dist/components/loading-spinner/LoadingSpinner.cjs.js +0 -1
  393. package/dist/components/modal/Modal.cjs.js +0 -1
  394. package/dist/components/modal/ModalSubView.cjs.js +0 -1
  395. package/dist/components/modal/StandardModal.cjs.js +0 -1
  396. package/dist/components/page-title/PageTitle.cjs.js +0 -1
  397. package/dist/components/popover/Popover.cjs.js +0 -1
  398. package/dist/components/search-box/ExactMatchToggle.cjs.js +0 -1
  399. package/dist/components/search-box/SearchBox.cjs.js +0 -1
  400. package/dist/components/search-box/SearchBoxChips.cjs.js +0 -1
  401. package/dist/components/search-box/SearchBoxDateRange.cjs.js +0 -1
  402. package/dist/components/search-box/SearchBoxDateSingle.cjs.js +0 -1
  403. package/dist/components/search-box/SearchBoxField.cjs.js +0 -1
  404. package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +0 -1
  405. package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +0 -1
  406. package/dist/components/search-box/SearchBoxMonth.cjs.js +0 -1
  407. package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +0 -1
  408. package/dist/components/search-box/dateRangePresets.cjs.js +0 -1
  409. package/dist/components/search-box/parseSearchValues.cjs.js +0 -1
  410. package/dist/components/search-box/useSearchBoxState.cjs.js +0 -1
  411. package/dist/components/select/MultiSelect.cjs.js +0 -1
  412. package/dist/components/select/Select.cjs.js +0 -1
  413. package/dist/components/select/loading-dots.cjs.js +0 -1
  414. package/dist/components/switch/Switch.cjs.js +0 -1
  415. package/dist/components/switch/utils.cjs.js +0 -1
  416. package/dist/components/table/accordion-table.cjs.js +0 -1
  417. package/dist/components/table/components/ColumnPresetSelector.cjs.js +0 -1
  418. package/dist/components/table/components/ColumnSettingsTable.cjs.js +0 -4
  419. package/dist/components/table/components/KeyboardNavButton.cjs.js +0 -1
  420. package/dist/components/table/components/PageJumpInput.cjs.js +0 -1
  421. package/dist/components/table/components/Pagination.cjs.js +0 -1
  422. package/dist/components/table/components/PaginationFooter.cjs.js +0 -1
  423. package/dist/components/table/hooks/useColumnPresets.cjs.js +0 -1
  424. package/dist/components/table/hooks/useColumnResize.cjs.js +0 -1
  425. package/dist/components/table/hooks/useFillEmptyRows.cjs.js +0 -1
  426. package/dist/components/table/hooks/useFillEmptyRows.esm.js +0 -49
  427. package/dist/components/table/hooks/useInfiniteScroll.cjs.js +0 -1
  428. package/dist/components/table/hooks/useInfiniteScroll.esm.js +0 -32
  429. package/dist/components/table/hooks/useTableColumnState.cjs.js +0 -1
  430. package/dist/components/table/hooks/useTableDragSelection.cjs.js +0 -1
  431. package/dist/components/table/hooks/useVirtualTable.cjs.js +0 -1
  432. package/dist/components/table/mini-table.cjs.js +0 -1
  433. package/dist/components/table/paginated-mini-table.cjs.js +0 -1
  434. package/dist/components/table/paginated-table.cjs.js +0 -1
  435. package/dist/components/table/table.cjs.js +0 -1
  436. package/dist/components/table/utils.cjs.js +0 -37
  437. package/dist/components/table-checkbox/TableCheckbox.cjs.js +0 -1
  438. package/dist/components/table-page-layout/TablePageLayout.cjs.js +0 -1
  439. package/dist/components/textarea/Textarea.cjs.js +0 -1
  440. package/dist/components/toast/ToastProvider.cjs.js +0 -1
  441. package/dist/components/toolbar/Toolbar.cjs.js +0 -1
  442. package/dist/hooks.cjs.js +0 -1
  443. package/dist/index.cjs.js +0 -1
  444. package/dist/lib/utils.cjs.js +0 -1
  445. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +0 -1
  446. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +0 -1
  447. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +0 -1
  448. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +0 -1
  449. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +0 -1
  450. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +0 -1
  451. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +0 -1
  452. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +0 -1
  453. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +0 -1
  454. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +0 -1
  455. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +0 -1
  456. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +0 -1
  457. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +0 -1
  458. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +0 -1
  459. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +0 -1
  460. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +0 -1
  461. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +0 -1
  462. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +0 -1
  463. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +0 -1
  464. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +0 -1
  465. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +0 -1
  466. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +0 -1
  467. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +0 -1
  468. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +0 -1
  469. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +0 -1
  470. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +0 -1
  471. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +0 -1
  472. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +0 -1
  473. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +0 -1
  474. package/dist/src/components/animated-height/index.d.ts +0 -2
  475. package/dist/src/components/badge/index.d.ts +0 -2
  476. package/dist/src/components/checkbox/index.d.ts +0 -2
  477. package/dist/src/components/collapsible/index.d.ts +0 -2
  478. package/dist/src/components/date-input/index.d.ts +0 -1
  479. package/dist/src/components/date-picker/index.d.ts +0 -5
  480. package/dist/src/components/drawer/Drawer.d.ts +0 -23
  481. package/dist/src/components/drawer/index.d.ts +0 -2
  482. package/dist/src/components/info-tooltip/index.d.ts +0 -2
  483. package/dist/src/components/input/index.d.ts +0 -4
  484. package/dist/src/components/loading-spinner/index.d.ts +0 -2
  485. package/dist/src/components/modal/index.d.ts +0 -6
  486. package/dist/src/components/page-title/index.d.ts +0 -1
  487. package/dist/src/components/popover/index.d.ts +0 -2
  488. package/dist/src/components/select/index.d.ts +0 -4
  489. package/dist/src/components/select/loading-dots.d.ts +0 -9
  490. package/dist/src/components/switch/index.d.ts +0 -2
  491. package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
  492. package/dist/src/components/table/index.d.ts +0 -27
  493. package/dist/src/components/table-checkbox/index.d.ts +0 -1
  494. package/dist/src/components/textarea/index.d.ts +0 -2
  495. package/dist/src/components/toast/index.d.ts +0 -3
  496. package/dist/src/components/toolbar/index.d.ts +0 -2
  497. package/dist/src/components/tooltip/index.d.ts +0 -2
  498. package/dist/src/hooks/index.d.ts +0 -4
  499. package/dist/src/index.d.ts +0 -27
  500. package/dist/src/lib/index.d.ts +0 -6
  501. /package/dist/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
  502. /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
  503. /package/dist/{src/components → components}/badge/types.d.ts +0 -0
  504. /package/dist/{src/components → components}/button/types.d.ts +0 -0
  505. /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
  506. /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
  507. /package/dist/{src/components → components}/info-tooltip/InfoTooltip.d.ts +0 -0
  508. /package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +0 -0
  509. /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
  510. /package/dist/{src/components → components}/popover/Popover.d.ts +0 -0
  511. /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
  512. /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
  513. /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
  514. /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
  515. /package/dist/components/search-box/{SearchBoxSheetContext.cjs.js → SearchBoxSheetContext.cjs} +0 -0
  516. /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
  517. /package/dist/components/search-box/{parseDateRange.cjs.js → parseDateRange.cjs} +0 -0
  518. /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
  519. /package/dist/{src/components → components}/select/types.d.ts +0 -0
  520. /package/dist/{src/components → components}/switch/types.d.ts +0 -0
  521. /package/dist/components/table/{column-group-utils.cjs.js → column-group-utils.cjs} +0 -0
  522. /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
  523. /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
  524. /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
  525. /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
  526. /package/dist/components/table/components/{SortableHeaderCell.cjs.js → SortableHeaderCell.cjs} +0 -0
  527. /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
  528. /package/dist/components/table/hooks/{useTableSort.cjs.js → useTableSort.cjs} +0 -0
  529. /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
  530. /package/dist/{src/components → components}/table/types.d.ts +0 -0
  531. /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
  532. /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
  533. /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
  534. /package/dist/{src/components → components}/tooltip/Tooltip.d.ts +0 -0
  535. /package/dist/hooks/{useBottomSheetDrag.cjs.js → useBottomSheetDrag.cjs} +0 -0
  536. /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
  537. /package/dist/hooks/{useClickOutside.cjs.js → useClickOutside.cjs} +0 -0
  538. /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
  539. /package/dist/hooks/{useMediaQuery.cjs.js → useMediaQuery.cjs} +0 -0
  540. /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
  541. /package/dist/hooks/{useScrollLock.cjs.js → useScrollLock.cjs} +0 -0
  542. /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
  543. /package/dist/lib/{Portal.cjs.js → Portal.cjs} +0 -0
  544. /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
  545. /package/dist/lib/{column-preset-storage.cjs.js → column-preset-storage.cjs} +0 -0
  546. /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
  547. /package/dist/lib/{overlay-stack.cjs.js → overlay-stack.cjs} +0 -0
  548. /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
  549. /package/dist/node_modules/clsx/dist/{clsx.cjs.js → clsx.cjs} +0 -0
  550. /package/dist/node_modules/lucide-react/dist/esm/{context.cjs.js → context.cjs} +0 -0
  551. /package/dist/node_modules/lucide-react/dist/esm/{defaultAttributes.cjs.js → defaultAttributes.cjs} +0 -0
  552. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{hasA11yProp.cjs.js → hasA11yProp.cjs} +0 -0
  553. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{mergeClasses.cjs.js → mergeClasses.cjs} +0 -0
  554. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toCamelCase.cjs.js → toCamelCase.cjs} +0 -0
  555. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toKebabCase.cjs.js → toKebabCase.cjs} +0 -0
  556. /package/dist/node_modules/use-debounce/dist/{index.module.cjs.js → index.module.cjs} +0 -0
@@ -0,0 +1,1085 @@
1
+ /* @thewrong/ui 토큰 소스 — Tailwind v4 빌드에서 @import한다. 생성물: 수정 금지 */
2
+ /* ── primitives.css ── */
3
+ /*
4
+ 1계층 — 프리미티브 토큰 (원료)
5
+ ================================
6
+ • 네이밍: --p-<카테고리>-<스케일> ("p-" = private, 외부 직참조 금지)
7
+ • 컴포넌트 코드는 이 변수를 직접 참조하지 않는다. 시맨틱 토큰(semantic.css)을 경유한다.
8
+ 직참조 금지는 scripts/check-tokens.mjs가 검사한다.
9
+ • --p-* 네임스페이스는 Tailwind 유틸리티를 만들지 않는다(bg-p-* 같은 클래스는 생기지 않음).
10
+ • 취향(색·반경·크기)을 바꿀 때는 이 파일의 값을 바꾼다. 역할 배정은 semantic.css가 맡는다.
11
+ */
12
+
13
+ @theme {
14
+ /* ── 색 팔레트 ─────────────────────────────────────────────────────────── */
15
+
16
+ /* violet — 기본 accent 스케일 (채도를 Tailwind violet의 90%로 낮춘 값) */
17
+ --p-color-violet-50: #f5f4fe;
18
+ --p-color-violet-100: #eeeafd;
19
+ --p-color-violet-200: #ded8fc;
20
+ --p-color-violet-300: #c6b9f9;
21
+ --p-color-violet-400: #aa91f4;
22
+ --p-color-violet-500: #8e64ee;
23
+ --p-color-violet-600: #7e43e4;
24
+ --p-color-violet-700: #6f31d0;
25
+ --p-color-violet-800: #5d28af;
26
+ --p-color-violet-900: #4d238f;
27
+ --p-color-violet-950: #2f1461;
28
+
29
+ /* gray (neutral) — 색조 없는 Tailwind gray 팔레트 */
30
+ --p-color-gray-50: #f9fafb;
31
+ --p-color-gray-100: #f3f4f6;
32
+ --p-color-gray-200: #e5e7eb;
33
+ --p-color-gray-300: #d1d5db;
34
+ --p-color-gray-400: #9ca3af;
35
+ --p-color-gray-500: #6b7280;
36
+ --p-color-gray-600: #4b5563;
37
+ --p-color-gray-700: #374151;
38
+ --p-color-gray-800: #1f2937;
39
+ --p-color-gray-900: #111827;
40
+ --p-color-gray-950: #030712;
41
+
42
+ /* success (green) */
43
+ --p-color-green-50: #f0fdf4;
44
+ --p-color-green-100: #dcfce7;
45
+ --p-color-green-300: #86efac;
46
+ --p-color-green-400: #4ade80;
47
+ --p-color-green-500: #22c55e;
48
+ --p-color-green-600: #16a34a;
49
+ --p-color-green-700: #15803d;
50
+ --p-color-green-800: #166534;
51
+ --p-color-green-900: #14532d;
52
+
53
+ /* error (red 쪽 rose) — 채도를 90%로 낮춘 값 */
54
+ --p-color-rose-50: #fdf3f3;
55
+ --p-color-rose-100: #fde3e3;
56
+ --p-color-rose-300: #f8a9a9;
57
+ --p-color-rose-400: #f17878;
58
+ --p-color-rose-500: #e64d4d;
59
+ --p-color-rose-600: #b12424; /* hover + 약한 텍스트 — white 대비 6.25:1 */
60
+ --p-color-rose-700: #932121; /* active — white 대비 8.03:1 */
61
+ --p-color-rose-950: #4c0519; /* 다크 오류 블록 배경 */
62
+ --p-color-rose-danger: #d32f2f; /* danger 기준값 — white 대비 4.98:1 */
63
+
64
+ /* warning (amber/yellow) */
65
+ --p-color-yellow-50: #fffbeb;
66
+ --p-color-yellow-100: #fef3c7;
67
+ --p-color-yellow-300: #fcd34d;
68
+ --p-color-yellow-400: #fbbf24;
69
+ --p-color-yellow-500: #f59e0b;
70
+ --p-color-yellow-600: #d97706;
71
+ --p-color-yellow-700: #b45309;
72
+ --p-color-yellow-primary: #f0b100;
73
+ --p-color-yellow-secondary: #ffdf20;
74
+ --p-color-yellow-tertiary: #fef9c2;
75
+
76
+ /* 레이블·상태 강조색 */
77
+ --p-color-cyan-500: #00b8db;
78
+ --p-color-violet-label: #8e51ff;
79
+ --p-color-fuchsia-500: #e12afb;
80
+ --p-color-green-label: #00c950;
81
+ --p-color-rose-label: #ff2056;
82
+
83
+ /* white / black */
84
+ --p-color-white: #ffffff;
85
+ --p-color-black: #000000;
86
+
87
+ /* ── 반경 스케일 ────────────────────────────────────────────────────────── */
88
+
89
+ --p-radius-none: 0;
90
+ --p-radius-1: 3px;
91
+ --p-radius-2: 5px;
92
+ --p-radius-3: 7px;
93
+ --p-radius-4: 10px;
94
+ --p-radius-5: 14px;
95
+ --p-radius-6: 18px;
96
+ --p-radius-7: 24px;
97
+ --p-radius-full: 9999px;
98
+
99
+ /* ── 타이포그래피 스케일 (px, 루트 16px 기준) ───────────────────────────── */
100
+
101
+ --p-text-xs: 12px;
102
+ --p-text-xs--line-height: 16px;
103
+ --p-text-sm: 14px;
104
+ --p-text-sm--line-height: 20px;
105
+ --p-text-base: 16px;
106
+ --p-text-base--line-height: 24px;
107
+ --p-text-lg: 18px;
108
+ --p-text-lg--line-height: 28px;
109
+ --p-text-xl: 20px;
110
+ --p-text-xl--line-height: 28px;
111
+ --p-text-2xl: 24px;
112
+ --p-text-2xl--line-height: 32px;
113
+ --p-text-3xl: 30px;
114
+ --p-text-3xl--line-height: 36px;
115
+ --p-text-4xl: 36px;
116
+ --p-text-4xl--line-height: 40px;
117
+ --p-text-5xl: 48px;
118
+ --p-text-5xl--line-height: 1;
119
+
120
+ /* ── 폰트 원료 ──────────────────────────────────────────────────────────── */
121
+
122
+ /* 시스템 스택 — 웹폰트를 번들하지 않는다. Tailwind 기본 sans와 같은 값이다. */
123
+ --p-font-family-sans:
124
+ ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
125
+ "Segoe UI Symbol", "Noto Color Emoji";
126
+ --p-font-weight-regular: 400;
127
+ --p-font-weight-medium: 500;
128
+ --p-font-weight-semibold: 600;
129
+ --p-font-weight-bold: 700;
130
+
131
+ /* ── 컨트롤 측정 원료 ───────────────────────────────────────────────────── */
132
+
133
+ --p-border-width-thin: 1px;
134
+ --p-border-width-strong: 1.5px;
135
+ --p-ring-width-control: 2px;
136
+ --p-space-4: 4px;
137
+ --p-space-6: 6px;
138
+ --p-space-8: 8px;
139
+ --p-size-14: 14px;
140
+ --p-size-16: 16px;
141
+ --p-size-20: 20px;
142
+ --p-alpha-20: 20%;
143
+ --p-alpha-30: 30%;
144
+ --p-alpha-40: 40%;
145
+ --p-alpha-70: 70%;
146
+ --p-opacity-0: 0;
147
+ --p-opacity-25: 0.25;
148
+ --p-opacity-40: 0.4;
149
+ --p-opacity-50: 0.5;
150
+ --p-opacity-60: 0.6;
151
+ --p-opacity-70: 0.7;
152
+ --p-opacity-75: 0.75;
153
+
154
+ /* ── 그림자 스케일 ──────────────────────────────────────────────────────── */
155
+
156
+ --p-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
157
+ --p-shadow-md:
158
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
159
+ --p-shadow-lg:
160
+ 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
161
+ --p-shadow-xl:
162
+ 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
163
+ --p-shadow-e1: 0 1px 2px rgba(0, 0, 0, 0.08);
164
+ --p-shadow-e2: 0 2px 4px rgba(0, 0, 0, 0.08);
165
+ --p-shadow-e3: 0 4px 8px rgba(0, 0, 0, 0.08);
166
+ --p-shadow-e4: 0 8px 16px rgba(0, 0, 0, 0.08);
167
+
168
+ /* ── 트랜지션 타이밍 ────────────────────────────────────────────────────── */
169
+
170
+ --p-duration-fast: 150ms;
171
+ --p-duration-default: 200ms;
172
+ --p-duration-slow: 300ms;
173
+ --p-duration-spinner: 1s;
174
+
175
+ --p-ease-in: cubic-bezier(0.4, 0, 1, 1);
176
+ --p-ease-out: cubic-bezier(0, 0, 0.2, 1);
177
+ --p-ease-inout: cubic-bezier(0.4, 0, 0.2, 1);
178
+ --p-ease-linear: linear;
179
+ }
180
+
181
+ /* ── semantic.css ── */
182
+ /*
183
+ 2계층 — 시맨틱 토큰 (역할)
184
+ ============================
185
+ • 컴포넌트가 참조하는 유일한 토큰 계층. 프리미티브(--p-*)만 참조하고 hex를 직접 쓰지 않는다
186
+ (반투명 rgba처럼 프리미티브로 표현하지 않는 값은 예외).
187
+ • Tailwind v4 @theme — 변수명이 곧 유틸리티 이름이다.
188
+ --color-bg-surface → bg-bg-surface, --color-fg-default → text-fg-default,
189
+ --radius-control-medium → rounded-control-medium, --spacing-control-medium → h-control-medium.
190
+ • 테마 오버라이드: 소비자 CSS에서 이 변수들을 재선언한다. 프리미티브는 건드리지 않는다.
191
+ • 다크: 아래 `.dark` 블록이 시맨틱만 재정의한다. `.dark`는 임의 조상 요소에 붙여도 동작한다.
192
+
193
+ 네이밍:
194
+ --color-{역할} → 단독 역할 (예: --color-primary)
195
+ --color-{대분류}-{역할} → 그룹 (예: --color-fg-default, --color-bg-surface)
196
+ --radius-{용도} / --shadow-{용도} / --text-{scale}
197
+
198
+ ⚠️ cn() 연동 — src/lib/utils.ts:
199
+ 커스텀 유틸리티(rounded-control-*, h-control-*, z-* 등)를 tailwind-merge가 인식하려면
200
+ utils.ts의 extendTailwindMerge 그룹에 등록해야 한다. 여기에 유틸리티를 추가하면
201
+ utils.ts도 같이 고친다.
202
+ */
203
+
204
+ @theme {
205
+ /* ── 브랜드 ─────────────────────────────────────────────────────────────── */
206
+
207
+ --color-primary: var(--p-color-violet-600); /* 버튼·링크 메인 색 */
208
+ --color-primary-hover: var(--p-color-violet-700);
209
+ --color-primary-active: var(--p-color-violet-800);
210
+ --color-primary-fg: var(
211
+ --p-color-violet-600
212
+ ); /* 틴트 배경 위 primary 텍스트 */
213
+ --color-primary-subtle: var(
214
+ --p-color-violet-50
215
+ ); /* 배경 틴트 (선택 상태 등) */
216
+ --color-primary-border: var(--p-color-violet-300);
217
+ /* 키보드 포커스 링 — filled primary와 surface 양쪽에서 3:1 이상. */
218
+ --color-focus-primary: var(--p-color-violet-400);
219
+ /* 약한 포커스 역할. 기본값은 full 링과 같다(AA 포커스 대비). */
220
+ --color-focus-primary-soft: var(--color-focus-primary);
221
+ --color-button-secondary-hover: color-mix(
222
+ in srgb,
223
+ var(--p-color-violet-300) var(--p-alpha-20),
224
+ transparent
225
+ );
226
+ --color-button-secondary-active: color-mix(
227
+ in srgb,
228
+ var(--p-color-violet-300) var(--p-alpha-30),
229
+ transparent
230
+ );
231
+ --color-icon-button-primary-active: color-mix(
232
+ in srgb,
233
+ var(--p-color-violet-50) var(--p-alpha-70),
234
+ transparent
235
+ );
236
+ --color-input-clear-ring: color-mix(
237
+ in srgb,
238
+ var(--p-color-violet-300) var(--p-alpha-40),
239
+ transparent
240
+ );
241
+
242
+ /* ── 전경(텍스트) ───────────────────────────────────────────────────────── */
243
+
244
+ --color-fg-default: var(--p-color-gray-800); /* 본문 */
245
+ /* 무채색 선택 배경(bg-muted) 위 강조 텍스트. [대비쌍] bg-subtle ↔ fg-accent */
246
+ --color-fg-accent: var(--p-color-violet-800);
247
+ --color-fg-muted: var(--p-color-gray-600); /* 보조 */
248
+ --color-fg-subtle: var(--p-color-gray-500); /* 힌트·플레이스홀더 */
249
+ --color-fg-disabled: var(--p-color-gray-500);
250
+ --color-fg-inverse: var(--p-color-white); /* 진한 배경 위 텍스트 */
251
+ --color-fg-danger: var(--p-color-rose-danger);
252
+ --color-fg-danger-placeholder: var(
253
+ --p-color-rose-600
254
+ ); /* white 위 AA 6.47:1 */
255
+
256
+ /* ── 배경(surface) ──────────────────────────────────────────────────────── */
257
+
258
+ --color-bg-page: var(--p-color-white); /* 페이지 최상위 */
259
+ --color-bg-surface: var(--p-color-white); /* 카드·모달·패널 */
260
+ --color-bg-subtle: var(--p-color-gray-100); /* 입력 배경·호버 트랙 */
261
+ /* surface와 subtle 사이의 가장 옅은 면 — 보더 없이 배경만으로 영역을 나눌 때. */
262
+ --color-bg-faint: var(--p-color-gray-50);
263
+ --color-bg-muted: var(--p-color-gray-200); /* 비활성·구분 배경 */
264
+ --color-bg-disabled: var(--p-color-gray-200);
265
+ --color-bg-radio-disabled-indicator: var(--p-color-gray-300);
266
+ --color-bg-overlay: rgba(0, 0, 0, 0.4); /* 모달 백드롭 */
267
+ /* 바텀시트·드로어·date-picker 공용 핸들 바. */
268
+ --color-bg-handle: var(--p-color-gray-300);
269
+
270
+ /* ── 경계선 ─────────────────────────────────────────────────────────────── */
271
+
272
+ --color-border-default: var(--p-color-gray-400);
273
+ --color-border-subtle: var(--p-color-gray-200);
274
+ --color-border-faint: var(--p-color-gray-100);
275
+ --color-border-disabled: var(
276
+ --p-color-black
277
+ ); /* 디자이너 의도 유지 — 의도된 값이다 */
278
+ --color-border-danger: var(--p-color-rose-danger);
279
+ /* danger 재시도·포커스 링. 오류 보더와 분리된 역할이며 값은 error-border를 따른다. */
280
+ --color-focus-danger: var(--color-error-border);
281
+ --color-border-primary: var(--p-color-violet-300); /* 선택·강조 보더 */
282
+
283
+ /* ── 아이콘 ─────────────────────────────────────────────────────────────── */
284
+ /* 아이콘은 텍스트보다 채도가 낮아도 읽히므로 fg-default보다 한 스텝 낮게. */
285
+ --color-icon-primary: var(--p-color-gray-700);
286
+ --color-icon-secondary: var(--p-color-gray-500);
287
+ --color-icon-tertiary: var(--p-color-gray-400);
288
+ --color-icon-disabled: var(--p-color-gray-300);
289
+ --color-icon-inverse: var(--p-color-white);
290
+
291
+ /* ── 상태 색 ────────────────────────────────────────────────────────────── */
292
+
293
+ --color-success: var(--p-color-green-label);
294
+ --color-error: var(--p-color-rose-danger);
295
+ --color-warning: var(--p-color-yellow-primary);
296
+ --color-info: var(--p-color-violet-600);
297
+
298
+ /* error 스케일 (danger 버튼 등) */
299
+ --color-error-hover: var(--p-color-rose-600);
300
+ --color-error-active: var(--p-color-rose-700);
301
+ --color-error-subtle: var(--p-color-rose-50); /* hover 배경 */
302
+ --color-error-surface: var(--p-color-rose-50); /* 정적 경고·오류 블록 배경 */
303
+ --color-error-muted: var(--p-color-rose-100);
304
+ --color-error-border: var(--p-color-rose-300);
305
+ --color-error-fg: var(--p-color-rose-600); /* Badge weak 텍스트 */
306
+
307
+ /* success 스케일 */
308
+ --color-success-subtle: var(--p-color-green-50);
309
+ --color-success-fg: var(--p-color-green-600);
310
+ --color-success-border: var(--p-color-green-300);
311
+
312
+ /* warning 스케일 */
313
+ --color-warning-subtle: var(--p-color-yellow-50);
314
+ --color-warning-fg: var(--p-color-yellow-600);
315
+ --color-warning-border: var(--p-color-yellow-300);
316
+
317
+ /* info 스케일 */
318
+ --color-info-subtle: var(--p-color-violet-50);
319
+ --color-info-fg: var(--p-color-violet-600);
320
+ --color-info-border: var(--p-color-violet-300);
321
+
322
+ /* neutral 스케일 (Badge secondary/neutral) */
323
+ --color-neutral-fill: var(--p-color-gray-500);
324
+ /* gray-50은 bg-page(white)에 묻혀 한 스텝 올린 gray-100을 쓴다. */
325
+ --color-neutral-subtle: var(--p-color-gray-100);
326
+ --color-neutral-fg: var(--p-color-gray-600);
327
+ --color-neutral-border: var(--p-color-gray-300);
328
+
329
+ /* ── 반경 (역할별) ──────────────────────────────────────────────────────── */
330
+ /* 컴포넌트는 raw rounded-md/lg/xl 대신 아래 역할 유틸리티를 쓴다. */
331
+
332
+ --radius-control-mini: var(--p-radius-1); /* 3px */
333
+ --radius-control-small: var(--p-radius-2); /* 5px */
334
+ --radius-control-medium: var(--p-radius-3); /* 7px */
335
+ --radius-control-large: var(--p-radius-3); /* 7px */
336
+
337
+ --radius-surface: var(--p-radius-2); /* 카드·모달·팝오버 (5px) */
338
+ --radius-badge: var(--p-radius-1); /* 뱃지·태그 (3px) */
339
+ --radius-chip: var(--p-radius-full);
340
+ --radius-circle: var(--p-radius-full); /* 원형 아이콘 버튼·상태 점 */
341
+ /* 체크박스 박스 (3px). 뱃지 정책 변경이 체크박스를 끌고 가지 않도록 역할을 분리한다. */
342
+ --radius-checkbox: var(--p-radius-1);
343
+ --radius-toast: var(--p-radius-3); /* 토스트 시트 (7px) */
344
+ --radius-sheet: var(--p-radius-3); /* 바텀시트 상단 (7px) */
345
+ --radius-tooltip: var(--p-radius-1); /* 툴팁 표면 (3px) */
346
+
347
+ /* ── 그림자 (역할별) ────────────────────────────────────────────────────── */
348
+ /*
349
+ * ⚠️ Tailwind v4 @theme flatten 우회 — 중간층 변수 패턴
350
+ *
351
+ * @theme 안에서 `--shadow-control: var(--p-shadow-sm)`처럼 쓰면 Tailwind가 빌드 때
352
+ * var()를 풀어 `.shadow-control { --tw-shadow: <값> }`으로 굳힌다. 그러면 .dark에서
353
+ * --shadow-control을 재정의해도 효과가 없다.
354
+ * 그래서 @theme 밖(:root)의 --shadow-*-src를 참조하게 한다. Tailwind는 @theme 밖 변수를
355
+ * 풀지 못하므로 var() 체인이 런타임까지 남고, .dark에서 -src만 바꾸면 다크 그림자가 된다.
356
+ */
357
+ --shadow-control: var(--shadow-control-src); /* 버튼·인풋 */
358
+ --shadow-surface: var(--shadow-surface-src); /* 카드 */
359
+ --shadow-overlay: var(--shadow-overlay-src); /* 모달·드롭다운 */
360
+ --shadow-tooltip: var(--shadow-tooltip-src);
361
+
362
+ /* ── 타이포그래피 — text-* 유틸리티를 px로 재정의 ───────────────────────── */
363
+
364
+ --text-xs: var(--p-text-xs);
365
+ --text-xs--line-height: var(--p-text-xs--line-height);
366
+ --text-sm: var(--p-text-sm);
367
+ --text-sm--line-height: var(--p-text-sm--line-height);
368
+ --text-base: var(--p-text-base);
369
+ --text-base--line-height: var(--p-text-base--line-height);
370
+ --text-lg: var(--p-text-lg);
371
+ --text-lg--line-height: var(--p-text-lg--line-height);
372
+ --text-xl: var(--p-text-xl);
373
+ --text-xl--line-height: var(--p-text-xl--line-height);
374
+ --text-2xl: var(--p-text-2xl);
375
+ --text-2xl--line-height: var(--p-text-2xl--line-height);
376
+ --text-3xl: var(--p-text-3xl);
377
+ --text-3xl--line-height: var(--p-text-3xl--line-height);
378
+ --text-4xl: var(--p-text-4xl);
379
+ --text-4xl--line-height: var(--p-text-4xl--line-height);
380
+ --text-5xl: var(--p-text-5xl);
381
+ --text-5xl--line-height: var(--p-text-5xl--line-height);
382
+
383
+ /* ── 폰트 역할 — 소비자는 family·weight 역할만 교체 ──────────────────── */
384
+
385
+ --font-body: var(--p-font-family-sans);
386
+ --font-display: var(--p-font-family-sans);
387
+ --font-control: var(--p-font-family-sans);
388
+ --font-weight-body-default: var(--p-font-weight-regular);
389
+ --font-weight-button: var(--p-font-weight-medium);
390
+ --font-weight-control-field: var(--p-font-weight-regular);
391
+ /* 테이블 "굵게" — bold(700)는 촘촘한 표에서 뭉개져 semibold를 쓴다. */
392
+ --font-weight-table-emphasis: var(--p-font-weight-semibold);
393
+
394
+ /* ── 토스트 (모드 불변 — 라이트/다크 모두 진한 회색 시트) ──────────────── */
395
+ /* 의도적으로 .dark 재정의가 없다. */
396
+
397
+ --color-bg-toast: var(--p-color-gray-700);
398
+ --color-fg-toast: var(--p-color-white);
399
+ --color-fg-toast-muted: rgba(255, 255, 255, 0.7); /* 닫기 버튼 기본 */
400
+ --color-fg-toast-hover: var(--p-color-white);
401
+ --color-bg-toast-backdrop: rgba(0, 0, 0, 0.15);
402
+ --color-border-toast: rgba(255, 255, 255, 0.12); /* 시트 내부 구분선 */
403
+ /* 어두운 시트 위 tone 아이콘 — 밝은 채도. */
404
+ --color-toast-tone-warning: var(--p-color-yellow-400);
405
+ --color-toast-tone-info: var(--p-color-violet-400);
406
+ --color-toast-tone-danger: var(--p-color-rose-300);
407
+ --color-toast-tone-success: var(--p-color-green-400);
408
+ /* 시트 안 tertiary filled 버튼 — 시트와 같은 색이 되는 문제 해소 */
409
+ --color-bg-toast-tertiary: rgba(255, 255, 255, 0.1);
410
+ --color-bg-toast-tertiary-hover: rgba(255, 255, 255, 0.15);
411
+ --color-bg-toast-tertiary-active: rgba(255, 255, 255, 0.2);
412
+
413
+ /* ── 툴팁 표면 ──────────────────────────────────────────────────────────── */
414
+ /* 라이트 gray-800 / 다크 gray-700. 텍스트는 모드 불변 white. */
415
+
416
+ --color-bg-tooltip: var(--p-color-gray-800);
417
+ --color-fg-tooltip: var(--p-color-white);
418
+ --color-bg-tooltip-badge: rgba(255, 255, 255, 0.14); /* 툴팁 위 뱃지 */
419
+
420
+ /* ── 테이블 표면 ────────────────────────────────────────────────────────── */
421
+
422
+ --color-bg-table-header: var(--p-color-gray-100);
423
+ --color-bg-table-row-even: var(--p-color-white);
424
+ --color-bg-table-row-odd: var(--p-color-gray-50);
425
+ --color-bg-table-row-hover: var(--p-color-gray-100);
426
+ --color-bg-table-row-selected: var(--p-color-violet-50);
427
+ --color-bg-table-row-selected-hover: var(--p-color-violet-100);
428
+ --color-border-table-cell: var(--p-color-gray-100);
429
+ --color-border-table-header: var(--p-color-gray-200);
430
+ --color-bg-table-row-plain: var(--p-color-white); /* 스트라이프 없는 행 */
431
+ --color-border-table-row-dashed: var(
432
+ --p-color-gray-200
433
+ ); /* plain 행 점선 구분 */
434
+
435
+ /* 테이블 비색상 — 세로 padding·폰트·굵기. 스코프 클래스(component-utils.css)가 재정의한다. */
436
+ --table-cell-pad-y: 4px;
437
+ --table-header-pad-y: 8px;
438
+ --table-cell-font: var(--p-text-sm);
439
+ --table-header-font: var(--table-cell-font);
440
+ --table-cell-font-weight: var(--font-weight-body-default);
441
+
442
+ /* ── 트랜지션 ───────────────────────────────────────────────────────────── */
443
+
444
+ --default-transition-duration: var(--p-duration-default);
445
+ --duration-fast: var(--p-duration-fast);
446
+ --duration-slow: var(--p-duration-slow);
447
+
448
+ /* ── 컨트롤 상태 역할 ───────────────────────────────────────────────────── */
449
+
450
+ --border-width-control: var(--p-border-width-thin);
451
+ --border-width-button: var(--p-border-width-strong);
452
+ --ring-width-control: var(--p-ring-width-control);
453
+ --ring-width-button: var(--p-ring-width-control);
454
+ --ring-width-input-clear: var(--p-ring-width-control);
455
+ --transition-duration-control: var(--p-duration-default);
456
+ --transition-duration-button: var(--p-duration-default);
457
+ /* 포커스가 오버레이에서 트리거로 돌아오는 사이 focus-within이 잠깐 끊겨 깜빡이는 것을 막는 지연. */
458
+ --transition-delay-focus-return: var(--p-duration-default);
459
+ --ease-control: var(--p-ease-out);
460
+ --ease-button: var(--p-ease-out);
461
+
462
+ --spacing-button-mini: var(--p-space-4);
463
+ --spacing-button-small: var(--p-space-6);
464
+ --spacing-button-medium: var(--p-space-8);
465
+ --spacing-button-large: var(--p-space-8);
466
+ --spacing-button-icon-mini: var(--p-size-14);
467
+ --spacing-button-icon-small: var(--p-size-16);
468
+ --spacing-button-icon-medium: var(--p-size-20);
469
+ --spacing-button-icon-large: var(--p-size-20);
470
+ /* 로딩 스피너 — 사이즈별로 아이콘 크기와 맞춘다. */
471
+ --spacing-button-spinner-mini: var(--p-size-14);
472
+ --spacing-button-spinner-small: var(--p-size-16);
473
+ --spacing-button-spinner-medium: var(--p-size-20);
474
+ --spacing-button-spinner-large: var(--p-size-20);
475
+
476
+ --opacity-button-spinner-track: var(--p-opacity-25);
477
+ --opacity-button-spinner-head: var(--p-opacity-75);
478
+ /* 로딩 중 라벨은 폭 예약용으로만 남기고 완전히 숨긴다(짧은 라벨이 스피너와 겹쳐 보임). */
479
+ --opacity-button-loading-label: var(--p-opacity-0);
480
+ --opacity-button-disabled: var(--p-opacity-60);
481
+ --opacity-icon-button-disabled: var(--p-opacity-40);
482
+ --animate-button-spinner: button-spinner var(--p-duration-spinner)
483
+ var(--p-ease-linear) infinite;
484
+
485
+ /*
486
+ * ── 폼 컨트롤 사이즈 ────────────────────────────────────────────────────
487
+ * 값은 직접 px — 전역 --spacing과 무관하게 컨트롤 크기만 따로 바꿀 수 있다.
488
+ * --spacing-control-medium → h-control-medium
489
+ * --spacing-control-pad-medium → px-control-pad-medium
490
+ * --spacing-slot-icon-medium → h-slot-icon-medium / w-slot-icon-medium
491
+ * --spacing-slot-medium → gap-slot-medium
492
+ * --text-control-medium → text-control-medium
493
+ * --text-slot-badge-medium → text-slot-badge-medium
494
+ *
495
+ * | size | height | px | font | 슬롯 아이콘 | 슬롯 gap | 배지 텍스트 |
496
+ * | mini | 28px | 8px | 12px(xs) | 14px | 6px | 10px |
497
+ * | small | 36px | 12px | 14px(sm) | 16px | 8px | 12px(xs) |
498
+ * | medium | 44px | 14px | 14px(sm) | 18px | 12px | 12px(xs) |
499
+ * | large | 48px | 20px | 16px(base) | 20px | 14px | 14px(sm) |
500
+ */
501
+
502
+ --spacing-control-mini: 28px;
503
+ --spacing-control-small: 36px;
504
+ --spacing-control-medium: 44px;
505
+ --spacing-control-large: 48px;
506
+
507
+ --spacing-control-pad-mini: 8px;
508
+ --spacing-control-pad-small: 12px;
509
+ --spacing-control-pad-medium: 14px;
510
+ --spacing-control-pad-large: 20px;
511
+
512
+ --spacing-slot-icon-mini: 14px;
513
+ --spacing-slot-icon-small: 16px;
514
+ --spacing-slot-icon-medium: 18px;
515
+ --spacing-slot-icon-large: 20px;
516
+
517
+ --spacing-slot-mini: 6px;
518
+ --spacing-slot-small: 8px;
519
+ --spacing-slot-medium: 12px;
520
+ --spacing-slot-large: 14px;
521
+
522
+ --text-control-mini: var(--p-text-xs);
523
+ --text-control-mini--line-height: var(--p-text-xs--line-height);
524
+ --text-control-small: var(--p-text-sm);
525
+ --text-control-small--line-height: var(--p-text-sm--line-height);
526
+ --text-control-medium: var(--p-text-sm);
527
+ --text-control-medium--line-height: var(--p-text-sm--line-height);
528
+ --text-control-large: var(--p-text-base);
529
+ --text-control-large--line-height: var(--p-text-base--line-height);
530
+
531
+ /* 배지 텍스트 (mini만 10px — 스케일 밖 값이라 직접 선언) */
532
+ --text-slot-badge-mini: 10px;
533
+ --text-slot-badge-mini--line-height: 14px;
534
+ --text-slot-badge-small: var(--p-text-xs);
535
+ --text-slot-badge-small--line-height: var(--p-text-xs--line-height);
536
+ --text-slot-badge-medium: var(--p-text-xs);
537
+ --text-slot-badge-medium--line-height: var(--p-text-xs--line-height);
538
+ --text-slot-badge-large: var(--p-text-sm);
539
+ --text-slot-badge-large--line-height: var(--p-text-sm--line-height);
540
+ }
541
+
542
+ @utility font-body-default {
543
+ font-family: var(--font-body);
544
+ font-weight: var(--font-weight-body-default);
545
+ }
546
+
547
+ @utility font-control-action {
548
+ font-family: var(--font-control);
549
+ font-weight: var(--font-weight-button);
550
+ }
551
+
552
+ @utility font-control-field {
553
+ font-family: var(--font-control);
554
+ font-weight: var(--font-weight-control-field);
555
+ }
556
+
557
+ @keyframes button-spinner {
558
+ to {
559
+ transform: rotate(360deg);
560
+ }
561
+ }
562
+
563
+ @media (prefers-reduced-motion: reduce) {
564
+ :root {
565
+ --animate-button-spinner: none;
566
+ }
567
+ }
568
+
569
+ /* 그림자 중간층 — 위 @theme 그림자 주석 참조. .dark는 이 -src만 재정의한다. */
570
+ :root {
571
+ --shadow-control-src: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* = --p-shadow-sm */
572
+ --shadow-surface-src: 0 2px 4px rgba(0, 0, 0, 0.08); /* = --p-shadow-e2 */
573
+ --shadow-overlay-src:
574
+ 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); /* = --p-shadow-lg */
575
+ --shadow-tooltip-src:
576
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); /* = --p-shadow-md */
577
+ }
578
+
579
+ /*
580
+ ── z-index 계층 ────────────────────────────────────────────────────────────
581
+ overlay(모달·드로어·바텀시트) < toast-backdrop(액션 토스트 백드롭) < floating(select·popover·
582
+ tooltip·date-picker — 모달 위에서도 떠야 함) < toast(최상위).
583
+ toast > floating 순서를 DOM 순서가 아니라 값으로 보장한다. 같은 계층 안의 겹침은 DOM 순서.
584
+ 컴포넌트 내부의 z-10/20 같은 로컬 스택은 이 정책과 무관하다.
585
+ Tailwind v4에 z-index 테마 네임스페이스가 없어 @utility로 만든다. 다크와 무관하다.
586
+ */
587
+ :root {
588
+ --z-overlay: 50;
589
+ --z-toast-backdrop: 60;
590
+ --z-floating: 100;
591
+ --z-toast: 150;
592
+ }
593
+
594
+ @utility z-overlay {
595
+ z-index: var(--z-overlay);
596
+ }
597
+ @utility z-toast-backdrop {
598
+ z-index: var(--z-toast-backdrop);
599
+ }
600
+ @utility z-floating {
601
+ z-index: var(--z-floating);
602
+ }
603
+ @utility z-toast {
604
+ z-index: var(--z-toast);
605
+ }
606
+
607
+ /*
608
+ ── 다크 — 시맨틱 재매핑 ──────────────────────────────────────────────────
609
+ • 프리미티브는 그대로 두고 시맨틱만 다른 프리미티브로 다시 가리킨다.
610
+ • `.dark`는 임의 조상에 붙여도 동작한다. 여기서 재정의하는 변수는 그 요소에서 다시 계산되기
611
+ 때문이다. 다른 시맨틱을 var()로 참조하는 시맨틱(focus-primary-soft, focus-danger,
612
+ bg-faint)은 :root에서 계산된 값이 상속되므로 여기서 같이 다시 선언한다.
613
+ • 컴포넌트에 dark: variant를 쓰지 않는다 — 토큰이 다크를 흡수한다.
614
+ • 범위: 색·그림자. 반경·크기·타이포·z는 다크와 무관하다.
615
+
616
+ 대비쌍 (함께 뒤집혀야 한다):
617
+ bg-page(gray-900) ↔ fg-default(gray-100)
618
+ bg-surface(gray-800) ↔ fg-muted(gray-400)
619
+ bg-subtle(gray-700) ↔ fg-subtle(gray-300)
620
+ primary(violet-600) ↔ fg-inverse(white)
621
+ error-subtle(gray-700) ↔ error-fg(rose-300)
622
+ success/warning/neutral-subtle(gray-700) ↔ *-fg(400/400/300), info-subtle(violet-950) ↔ info-fg(violet-400)
623
+ border-default(gray-600) ↔ bg-page, border-subtle(gray-700) ↔ bg-surface, border-faint(gray-800) ↔ bg-subtle
624
+ bg-tooltip(gray-700) ↔ fg-tooltip(white)
625
+ */
626
+ .dark {
627
+ /* 브라우저 기본 UI(스크롤바·autofill·date picker)도 다크 톤으로. */
628
+ color-scheme: dark;
629
+
630
+ /* 브랜드 — violet은 600부터 white 대비 AA라 라이트와 같은 상태 순서를 유지한다. */
631
+ --color-primary: var(--p-color-violet-600);
632
+ --color-primary-hover: var(--p-color-violet-700);
633
+ --color-primary-active: var(--p-color-violet-800);
634
+ --color-primary-fg: var(--p-color-violet-300);
635
+ --color-primary-subtle: var(--p-color-violet-950);
636
+ --color-primary-border: var(--p-color-violet-300);
637
+ --color-focus-primary: var(--p-color-gray-100);
638
+ --color-focus-primary-soft: var(--color-focus-primary);
639
+ --color-icon-button-primary-active: color-mix(
640
+ in srgb,
641
+ var(--p-color-violet-950) var(--p-alpha-70),
642
+ transparent
643
+ );
644
+
645
+ /* 전경 */
646
+ --color-fg-default: var(--p-color-gray-100);
647
+ --color-fg-accent: var(--p-color-violet-300);
648
+ --color-fg-muted: var(--p-color-gray-400);
649
+ --color-fg-subtle: var(--p-color-gray-300);
650
+ --color-fg-disabled: var(--p-color-gray-400);
651
+ --color-fg-inverse: var(--p-color-white);
652
+ --color-fg-danger: var(--p-color-rose-300);
653
+ --color-fg-danger-placeholder: var(--p-color-rose-300);
654
+
655
+ /* 배경 */
656
+ --color-bg-page: var(--p-color-gray-900);
657
+ --color-bg-surface: var(--p-color-gray-800);
658
+ --color-bg-subtle: var(--p-color-gray-700);
659
+ /* 다크 팔레트에는 surface와 subtle 사이 값이 없어 subtle을 그대로 가리킨다(역할은 다름). */
660
+ --color-bg-faint: var(--color-bg-subtle);
661
+ --color-bg-muted: var(--p-color-gray-600);
662
+ --color-bg-disabled: var(--p-color-gray-700);
663
+ --color-bg-radio-disabled-indicator: var(--p-color-gray-600);
664
+ --color-bg-overlay: rgba(0, 0, 0, 0.6);
665
+ --color-bg-handle: var(--p-color-gray-600);
666
+
667
+ /* 경계선 */
668
+ --color-border-default: var(--p-color-gray-600);
669
+ --color-border-subtle: var(--p-color-gray-700);
670
+ --color-border-faint: var(--p-color-gray-800);
671
+ --color-border-disabled: var(--p-color-white); /* 디자이너 의도 유지 */
672
+ --color-border-danger: var(--p-color-rose-danger);
673
+ --color-focus-danger: var(--color-error-border);
674
+ --color-border-primary: var(--p-color-violet-300);
675
+
676
+ /* 아이콘 */
677
+ --color-icon-primary: var(--p-color-gray-300);
678
+ --color-icon-secondary: var(--p-color-gray-400);
679
+ --color-icon-tertiary: var(--p-color-gray-300);
680
+ --color-icon-disabled: var(--p-color-gray-600);
681
+ --color-icon-inverse: var(--p-color-white);
682
+
683
+ /* 상태 색 */
684
+ --color-success: var(--p-color-green-label);
685
+ --color-error: var(--p-color-rose-danger);
686
+ --color-warning: var(--p-color-yellow-primary);
687
+ --color-info: var(--p-color-violet-500);
688
+
689
+ --color-error-hover: var(--p-color-rose-600);
690
+ --color-error-active: var(--p-color-rose-700);
691
+ --color-error-subtle: var(
692
+ --p-color-gray-700
693
+ ); /* rose-50은 다크에서 흰색처럼 보인다 */
694
+ --color-error-surface: var(--p-color-rose-950);
695
+ --color-error-muted: var(--p-color-gray-600);
696
+ --color-error-border: var(--p-color-rose-700);
697
+ --color-error-fg: var(--p-color-rose-300);
698
+
699
+ --color-success-subtle: var(--p-color-gray-700);
700
+ --color-success-fg: var(--p-color-green-400);
701
+ --color-success-border: var(--p-color-green-700);
702
+
703
+ --color-warning-subtle: var(--p-color-gray-700);
704
+ --color-warning-fg: var(--p-color-yellow-400);
705
+ --color-warning-border: var(--p-color-yellow-600);
706
+
707
+ --color-info-subtle: var(--p-color-violet-950);
708
+ --color-info-fg: var(--p-color-violet-400);
709
+ --color-info-border: var(--p-color-violet-700);
710
+
711
+ --color-neutral-fill: var(--p-color-gray-600);
712
+ --color-neutral-subtle: var(--p-color-gray-700);
713
+ --color-neutral-fg: var(--p-color-gray-300);
714
+ --color-neutral-border: var(--p-color-gray-600);
715
+
716
+ /* 툴팁 */
717
+ --color-bg-tooltip: var(--p-color-gray-700);
718
+
719
+ /* 테이블 */
720
+ --color-bg-table-header: var(--p-color-gray-800);
721
+ --color-bg-table-row-even: var(--p-color-gray-900);
722
+ --color-bg-table-row-odd: var(--p-color-gray-950);
723
+ --color-bg-table-row-hover: var(--p-color-gray-700);
724
+ --color-bg-table-row-selected: var(--p-color-violet-950);
725
+ --color-bg-table-row-selected-hover: var(--p-color-violet-900);
726
+ --color-border-table-cell: var(--p-color-gray-700);
727
+ --color-border-table-header: var(--p-color-gray-700);
728
+ --color-bg-table-row-plain: var(--p-color-gray-900);
729
+ --color-border-table-row-dashed: var(--p-color-gray-700);
730
+
731
+ /* 그림자 — 어두운 배경에서 보이도록 불투명도를 올린다. -src만 재정의한다. */
732
+ --shadow-control-src: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
733
+ --shadow-surface-src: 0 2px 4px rgba(0, 0, 0, 0.4);
734
+ --shadow-overlay-src:
735
+ 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
736
+ --shadow-tooltip-src:
737
+ 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
738
+ }
739
+
740
+ /* ── component-utils.css ── */
741
+ /*
742
+ 컴포넌트 전용 네이티브 CSS — pseudo-element처럼 Tailwind 유틸·인라인 스타일로
743
+ 표현할 수 없는 규칙만 둔다. 색은 시맨틱 토큰만 참조한다(다크는 토큰이 따라간다).
744
+ */
745
+
746
+ /*
747
+ ── 날짜 입력 — 네이티브 캘린더 indicator 숨김 ───────────────────────────────
748
+ <input type="date">의 브라우저 기본 캘린더 아이콘을 숨긴다. 옆의 커스텀 트리거(DatePicker)가
749
+ 그 역할을 하므로 중복 indicator를 없앤다.
750
+ `.search-box-date-input`은 현재 DateInput이 쓰는 이름이다. `.date-input-native`와 같은 규칙.
751
+ */
752
+ .date-input-native::-webkit-calendar-picker-indicator,
753
+ .search-box-date-input::-webkit-calendar-picker-indicator {
754
+ display: none;
755
+ -webkit-appearance: none;
756
+ }
757
+
758
+ .date-input-native::-webkit-inner-spin-button,
759
+ .search-box-date-input::-webkit-inner-spin-button {
760
+ display: none;
761
+ }
762
+
763
+ /*
764
+ ── 스크롤바 chrome 숨김 (opt-in) ─────────────────────────────────────────────
765
+ overflow는 유지해 터치·휠·키보드 스크롤은 그대로 동작하고 thumb만 감춘다.
766
+ 마우스로 쓰는 화면에서는 thumb가 "더 있다"는 유일한 신호라 일괄 적용하지 않는다.
767
+ */
768
+ .scroll-body-chrome-hidden {
769
+ -ms-overflow-style: none;
770
+ scrollbar-width: none;
771
+ }
772
+
773
+ .scroll-body-chrome-hidden::-webkit-scrollbar {
774
+ display: none;
775
+ }
776
+
777
+ /*
778
+ ── 테이블 스크롤바 — 가운데 얇은 레일 + pill thumb ──────────────────────────
779
+ track: 6px 폭 중 가운데 2px 레일만 그린다. corner는 투명(다크에서 흰 코너가 튀지 않게).
780
+ */
781
+ .scrollbar-table::-webkit-scrollbar {
782
+ width: 6px;
783
+ height: 6px;
784
+ }
785
+
786
+ .scrollbar-table::-webkit-scrollbar-track {
787
+ background: linear-gradient(
788
+ to right,
789
+ transparent calc(50% - 1px),
790
+ var(--color-bg-disabled) calc(50% - 1px),
791
+ var(--color-bg-disabled) calc(50% + 1px),
792
+ transparent calc(50% + 1px)
793
+ );
794
+ border-radius: 9999px;
795
+ }
796
+
797
+ .scrollbar-table::-webkit-scrollbar-track:horizontal {
798
+ background: linear-gradient(
799
+ to bottom,
800
+ transparent calc(50% - 1px),
801
+ var(--color-bg-disabled) calc(50% - 1px),
802
+ var(--color-bg-disabled) calc(50% + 1px),
803
+ transparent calc(50% + 1px)
804
+ );
805
+ }
806
+
807
+ .scrollbar-table::-webkit-scrollbar-thumb {
808
+ background: var(--color-border-default);
809
+ border-radius: 9999px;
810
+ }
811
+
812
+ .scrollbar-table::-webkit-scrollbar-thumb:hover {
813
+ background: var(--color-fg-subtle);
814
+ }
815
+
816
+ .scrollbar-table::-webkit-scrollbar-corner {
817
+ background: transparent;
818
+ }
819
+
820
+ /*
821
+ ── 브랜드 스크롤바 — 드롭다운 목록용 (date-picker 연·월 목록) ────────────────
822
+ 테이블 스크롤바와 같은 레일 구조에 5px 폭, thumb는 브랜드 보더 색.
823
+ */
824
+ .scrollbar-brand::-webkit-scrollbar {
825
+ width: 5px;
826
+ height: 5px;
827
+ }
828
+
829
+ .scrollbar-brand::-webkit-scrollbar-track {
830
+ background: linear-gradient(
831
+ to right,
832
+ transparent calc(50% - 1px),
833
+ var(--color-bg-disabled) calc(50% - 1px),
834
+ var(--color-bg-disabled) calc(50% + 1px),
835
+ transparent calc(50% + 1px)
836
+ );
837
+ border-radius: 9999px;
838
+ }
839
+
840
+ .scrollbar-brand::-webkit-scrollbar-track:horizontal {
841
+ background: linear-gradient(
842
+ to bottom,
843
+ transparent calc(50% - 1px),
844
+ var(--color-bg-disabled) calc(50% - 1px),
845
+ var(--color-bg-disabled) calc(50% + 1px),
846
+ transparent calc(50% + 1px)
847
+ );
848
+ }
849
+
850
+ .scrollbar-brand::-webkit-scrollbar-thumb {
851
+ background: var(--color-primary-border);
852
+ border-radius: 9999px;
853
+ }
854
+
855
+ /*
856
+ ── 테이블 density(2단) — 셀·헤더 세로 padding ───────────────────────────────
857
+ 스코프 클래스가 커스텀 프로퍼티를 재정의한다. 셀의 `paddingBlock: var(--table-cell-pad-y)`는
858
+ 가장 가까운 조상의 값을 받으므로 compact가 이긴다. default는 클래스 없음.
859
+ */
860
+ .table-density-compact {
861
+ --table-cell-pad-y: 2px;
862
+ --table-header-pad-y: 4px;
863
+ }
864
+
865
+ /*
866
+ ── 테이블 size(3단) — 셀·헤더 폰트 크기 ─────────────────────────────────────
867
+ density와 직교하는 축. medium(기본)은 클래스 없음.
868
+ */
869
+ .table-size-small {
870
+ --table-cell-font: var(--text-xs);
871
+ }
872
+
873
+ .table-size-large {
874
+ --table-cell-font: var(--text-base);
875
+ }
876
+
877
+ /*
878
+ ── 테이블 fontWeight(2단) — 본문 셀 굵기 ────────────────────────────────────
879
+ normal(기본)은 클래스 없음.
880
+ */
881
+ .table-weight-bold {
882
+ --table-cell-font-weight: var(--font-weight-table-emphasis);
883
+ }
884
+
885
+ /*
886
+ ── 셀 단위 강조 굵기 ─────────────────────────────────────────────────────────
887
+ 셀 굵기는 인라인 `fontWeight: var(--table-cell-font-weight)`로 들어가 font-semibold 같은
888
+ 클래스로는 덮이지 않는다. 그래서 커스텀 프로퍼티 자체를 재정의한다.
889
+ */
890
+ .table-cell-weight-emphasis {
891
+ --table-cell-font-weight: var(--font-weight-table-emphasis);
892
+ }
893
+
894
+ /* ── themes/quiet.css ── */
895
+ /* 차분한 중립 테마 — 시맨틱 역할만 바꾼다. */
896
+ [data-theme="quiet"] {
897
+ --color-primary: #64748b;
898
+ --color-primary-hover: #334155;
899
+ --color-primary-active: #1e293b;
900
+ --color-primary-fg: #475569;
901
+ --color-primary-subtle: #f1f5f9;
902
+ --color-primary-border: #94a3b8;
903
+ --color-focus-primary: #030712;
904
+ /* 상속된 별칭은 조상에서 계산되므로 테마 스코프에서 다시 연결한다. */
905
+ --color-focus-primary-soft: var(--color-focus-primary);
906
+ --color-info: #64748b;
907
+ --color-border-primary: #94a3b8;
908
+ --color-fg-subtle: #475569;
909
+ }
910
+
911
+ .dark[data-theme="quiet"],
912
+ .dark [data-theme="quiet"],
913
+ [data-theme="quiet"] .dark {
914
+ --color-primary: #475569;
915
+ --color-primary-hover: #334155;
916
+ --color-primary-active: #1e293b;
917
+ --color-primary-fg: #e2e8f0;
918
+ --color-primary-subtle: #1e293b;
919
+ --color-primary-border: #94a3b8;
920
+ --color-focus-primary: #f3f4f6;
921
+ --color-focus-primary-soft: var(--color-focus-primary);
922
+ --color-info: #cbd5e1;
923
+ --color-border-primary: #94a3b8;
924
+ --color-fg-subtle: #cbd5e1;
925
+ }
926
+
927
+ /* ── themes/high-contrast.css ── */
928
+ /*
929
+ avocado 고대비 팔레트가 바꾸는 시맨틱 결과를 직접 선언한다.
930
+ 프리미티브를 교체하지 않아 하위 data-theme 스코프에서도 같은 결과가 난다.
931
+ 라이트와 다크 모두에 역할을 선언해 조상 .dark와 조합해도 유지한다.
932
+ */
933
+ [data-theme="high-contrast"] {
934
+ --color-bg-disabled: #e5e7eb;
935
+ --color-bg-faint: #f9fafb;
936
+ --color-bg-handle: #d1d5db;
937
+ --color-bg-muted: #e5e7eb;
938
+ --color-bg-page: #ffffff;
939
+ --color-bg-radio-disabled-indicator: #d1d5db;
940
+ --color-bg-subtle: #f3f4f6;
941
+ --color-bg-surface: #ffffff;
942
+ --color-bg-table-header: #f3f4f6;
943
+ --color-bg-table-row-even: #ffffff;
944
+ --color-bg-table-row-hover: #f3f4f6;
945
+ --color-bg-table-row-plain: #ffffff;
946
+ --color-bg-table-row-selected: #eff6ff;
947
+ --color-bg-table-row-selected-hover: #dbeafe;
948
+ --color-bg-toast: #1e293b;
949
+ --color-bg-tooltip: #0f172a;
950
+ --color-border-default: #64748b;
951
+ --color-border-faint: #f3f4f6;
952
+ --color-border-primary: #93c5fd;
953
+ --color-border-subtle: #e5e7eb;
954
+ --color-border-table-cell: #f3f4f6;
955
+ --color-border-table-header: #e5e7eb;
956
+ --color-border-table-row-dashed: #e5e7eb;
957
+ --color-button-secondary-active: color-mix(
958
+ in srgb,
959
+ var(--color-primary-border) 30%,
960
+ transparent
961
+ );
962
+ --color-button-secondary-hover: color-mix(
963
+ in srgb,
964
+ var(--color-primary-border) 20%,
965
+ transparent
966
+ );
967
+ --color-error-muted: #fde3e3;
968
+ --color-error-subtle: #fdf3f3;
969
+ --color-fg-accent: #1e3a8a;
970
+ --color-fg-default: #0f172a;
971
+ --color-fg-disabled: #475569;
972
+ --color-fg-muted: #1e293b;
973
+ --color-fg-subtle: #334155;
974
+ --color-focus-primary: #000000;
975
+ --color-focus-primary-soft: var(--color-focus-primary);
976
+ --color-icon-button-primary-active: color-mix(
977
+ in srgb,
978
+ var(--color-primary-subtle) 70%,
979
+ transparent
980
+ );
981
+ --color-icon-disabled: #d1d5db;
982
+ --color-icon-primary: #1e293b;
983
+ --color-icon-secondary: #475569;
984
+ --color-icon-tertiary: #64748b;
985
+ --color-info: #1d4ed8;
986
+ --color-info-border: #93c5fd;
987
+ --color-info-fg: #1d4ed8;
988
+ --color-info-subtle: #eff6ff;
989
+ --color-input-clear-ring: color-mix(
990
+ in srgb,
991
+ var(--color-primary-border) 40%,
992
+ transparent
993
+ );
994
+ --color-neutral-border: #d1d5db;
995
+ --color-neutral-fg: #334155;
996
+ --color-neutral-fill: #475569;
997
+ --color-neutral-subtle: #f3f4f6;
998
+ --color-primary: #1d4ed8;
999
+ --color-primary-active: #1e3a8a;
1000
+ --color-primary-border: #93c5fd;
1001
+ --color-primary-fg: #1d4ed8;
1002
+ --color-primary-hover: #1e40af;
1003
+ --color-primary-subtle: #eff6ff;
1004
+ --color-success-subtle: #f0fdf4;
1005
+ --color-toast-tone-info: #60a5fa;
1006
+ --color-warning-subtle: #fffbeb;
1007
+ }
1008
+
1009
+ .dark[data-theme="high-contrast"],
1010
+ .dark [data-theme="high-contrast"],
1011
+ [data-theme="high-contrast"] .dark {
1012
+ --color-bg-disabled: #1e293b;
1013
+ --color-bg-faint: var(--color-bg-subtle);
1014
+ --color-bg-handle: #334155;
1015
+ --color-bg-muted: #334155;
1016
+ --color-bg-page: #020617;
1017
+ --color-bg-radio-disabled-indicator: #334155;
1018
+ --color-bg-subtle: #1e293b;
1019
+ --color-bg-surface: #0f172a;
1020
+ --color-bg-table-header: #0f172a;
1021
+ --color-bg-table-row-even: #020617;
1022
+ --color-bg-table-row-hover: #1e293b;
1023
+ --color-bg-table-row-plain: #020617;
1024
+ --color-bg-table-row-selected: #0c1b44;
1025
+ --color-bg-table-row-selected-hover: #172554;
1026
+ --color-bg-toast: #1e293b;
1027
+ --color-bg-tooltip: #1e293b;
1028
+ --color-border-default: #334155;
1029
+ --color-border-faint: #0f172a;
1030
+ --color-border-primary: #93c5fd;
1031
+ --color-border-subtle: #1e293b;
1032
+ --color-border-table-cell: #1e293b;
1033
+ --color-border-table-header: #1e293b;
1034
+ --color-border-table-row-dashed: #1e293b;
1035
+ --color-button-secondary-active: color-mix(
1036
+ in srgb,
1037
+ var(--color-primary-border) 30%,
1038
+ transparent
1039
+ );
1040
+ --color-button-secondary-hover: color-mix(
1041
+ in srgb,
1042
+ var(--color-primary-border) 20%,
1043
+ transparent
1044
+ );
1045
+ --color-error-muted: #334155;
1046
+ --color-error-subtle: #1e293b;
1047
+ --color-fg-accent: #93c5fd;
1048
+ --color-fg-default: #f3f4f6;
1049
+ --color-fg-disabled: #64748b;
1050
+ --color-fg-muted: #e5e7eb;
1051
+ --color-fg-subtle: #d1d5db;
1052
+ --color-focus-primary: #ffffff;
1053
+ --color-focus-primary-soft: var(--color-focus-primary);
1054
+ --color-icon-button-primary-active: color-mix(
1055
+ in srgb,
1056
+ var(--color-primary-subtle) 70%,
1057
+ transparent
1058
+ );
1059
+ --color-icon-disabled: #334155;
1060
+ --color-icon-primary: #d1d5db;
1061
+ --color-icon-secondary: #64748b;
1062
+ --color-icon-tertiary: #d1d5db;
1063
+ --color-info: #2563eb;
1064
+ --color-info-border: #1e40af;
1065
+ --color-info-fg: #60a5fa;
1066
+ --color-info-subtle: #0c1b44;
1067
+ --color-input-clear-ring: color-mix(
1068
+ in srgb,
1069
+ var(--color-primary-border) 40%,
1070
+ transparent
1071
+ );
1072
+ --color-neutral-border: #334155;
1073
+ --color-neutral-fg: #d1d5db;
1074
+ --color-neutral-fill: #334155;
1075
+ --color-neutral-subtle: #1e293b;
1076
+ --color-primary: #1d4ed8;
1077
+ --color-primary-active: #1e3a8a;
1078
+ --color-primary-border: #93c5fd;
1079
+ --color-primary-fg: #93c5fd;
1080
+ --color-primary-hover: #1e40af;
1081
+ --color-primary-subtle: #0c1b44;
1082
+ --color-success-subtle: #1e293b;
1083
+ --color-toast-tone-info: #60a5fa;
1084
+ --color-warning-subtle: #1e293b;
1085
+ }