@nexus-cross/design-system 1.0.6-beta.2 → 1.0.7

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 (403) hide show
  1. package/DESIGN.md +185 -0
  2. package/cursor-rules/nexus-ui-api.mdc +223 -7
  3. package/cursor-rules/nexus-ui-components.mdc +44 -17
  4. package/dist/alert.js +16 -0
  5. package/dist/alert.mjs +3 -0
  6. package/dist/badge.js +16 -0
  7. package/dist/badge.mjs +3 -0
  8. package/dist/breadcrumb.js +12 -0
  9. package/dist/breadcrumb.mjs +3 -0
  10. package/dist/chunks/chunk-22O6YUYH.mjs +5 -0
  11. package/dist/chunks/chunk-2N2EPBO4.js +120 -0
  12. package/dist/chunks/{chunk-AFSEYJZT.js → chunk-2T7RUYEK.js} +175 -50
  13. package/dist/chunks/chunk-2UPGFY6E.mjs +76 -0
  14. package/dist/chunks/{chunk-VGO4Z2WH.js → chunk-3RK3UT2O.js} +50 -12
  15. package/dist/chunks/chunk-3ZWN66YH.js +53 -0
  16. package/dist/chunks/chunk-5PQ3UCKF.js +99 -0
  17. package/dist/chunks/chunk-6BWOKTVQ.mjs +87 -0
  18. package/dist/chunks/chunk-6DBRL6NA.mjs +81 -0
  19. package/dist/chunks/{chunk-HNLI646G.mjs → chunk-AAITRHED.mjs} +51 -13
  20. package/dist/chunks/chunk-B5O6W3Z4.mjs +73 -0
  21. package/dist/chunks/chunk-BJM3NDT2.mjs +368 -0
  22. package/dist/chunks/chunk-C2DSAJTL.js +109 -0
  23. package/dist/chunks/chunk-CUTMLBC3.mjs +86 -0
  24. package/dist/chunks/chunk-CV4GMFWP.js +174 -0
  25. package/dist/chunks/chunk-DICN6GKE.js +99 -0
  26. package/dist/chunks/chunk-DYPPVXQF.js +143 -0
  27. package/dist/chunks/chunk-EJY7IVSK.mjs +31 -0
  28. package/dist/chunks/chunk-FUIBYZZ4.mjs +98 -0
  29. package/dist/chunks/chunk-H2G5FMRN.mjs +75 -0
  30. package/dist/chunks/chunk-H2V7RHYV.mjs +120 -0
  31. package/dist/chunks/chunk-MMCA33FW.mjs +85 -0
  32. package/dist/chunks/chunk-NZHK76R3.js +109 -0
  33. package/dist/chunks/chunk-OE5BAEBE.js +7 -0
  34. package/dist/chunks/chunk-P73MEU7N.mjs +150 -0
  35. package/dist/chunks/chunk-PDJTSQOC.js +59 -0
  36. package/dist/chunks/chunk-S2GMEC43.js +109 -0
  37. package/dist/chunks/chunk-X3CTJ7TD.js +108 -0
  38. package/dist/chunks/chunk-XGIJZ3NZ.js +160 -0
  39. package/dist/chunks/chunk-YO5MSDPX.mjs +36 -0
  40. package/dist/chunks/chunk-ZI4LN2B2.js +96 -0
  41. package/dist/chunks/chunk-ZU4AWAFT.mjs +137 -0
  42. package/dist/component-tokens/button.d.ts +3 -0
  43. package/dist/component-tokens/button.d.ts.map +1 -0
  44. package/dist/component-tokens/index.d.ts +3 -0
  45. package/dist/component-tokens/index.d.ts.map +1 -0
  46. package/dist/component-tokens/types.d.ts +19 -0
  47. package/dist/component-tokens/types.d.ts.map +1 -0
  48. package/dist/{accordion.d.mts → components/Accordion.d.ts} +2 -3
  49. package/dist/components/Accordion.d.ts.map +1 -0
  50. package/dist/components/Alert.d.ts +16 -0
  51. package/dist/components/Alert.d.ts.map +1 -0
  52. package/dist/{avatar.d.mts → components/Avatar.d.ts} +5 -6
  53. package/dist/components/Avatar.d.ts.map +1 -0
  54. package/dist/components/Badge.d.ts +17 -0
  55. package/dist/components/Badge.d.ts.map +1 -0
  56. package/dist/components/Breadcrumb.d.ts +15 -0
  57. package/dist/components/Breadcrumb.d.ts.map +1 -0
  58. package/dist/{button.d.mts → components/Button.d.ts} +5 -6
  59. package/dist/components/Button.d.ts.map +1 -0
  60. package/dist/{carousel.d.mts → components/Carousel.d.ts} +5 -6
  61. package/dist/components/Carousel.d.ts.map +1 -0
  62. package/dist/{checkbox.d.mts → components/CheckBox.d.ts} +6 -7
  63. package/dist/components/CheckBox.d.ts.map +1 -0
  64. package/dist/{chip.d.mts → components/Chip.d.ts} +6 -7
  65. package/dist/components/Chip.d.ts.map +1 -0
  66. package/dist/{client-only.d.mts → components/ClientOnly.d.ts} +4 -5
  67. package/dist/components/ClientOnly.d.ts.map +1 -0
  68. package/dist/{countdown.d.mts → components/Countdown.d.ts} +3 -3
  69. package/dist/components/Countdown.d.ts.map +1 -0
  70. package/dist/{counter.d.mts → components/Counter.d.ts} +3 -3
  71. package/dist/components/Counter.d.ts.map +1 -0
  72. package/dist/{data-list.d.mts → components/DataList.d.ts} +4 -5
  73. package/dist/components/DataList.d.ts.map +1 -0
  74. package/dist/components/DatePicker.d.ts +17 -0
  75. package/dist/components/DatePicker.d.ts.map +1 -0
  76. package/dist/{divider.d.mts → components/Divider.d.ts} +5 -6
  77. package/dist/components/Divider.d.ts.map +1 -0
  78. package/dist/{drawer.d.mts → components/Drawer.d.ts} +13 -15
  79. package/dist/components/Drawer.d.ts.map +1 -0
  80. package/dist/components/DropdownMenu.d.ts +30 -0
  81. package/dist/components/DropdownMenu.d.ts.map +1 -0
  82. package/dist/{ellipsis.d.mts → components/Ellipsis.d.ts} +4 -5
  83. package/dist/components/Ellipsis.d.ts.map +1 -0
  84. package/dist/components/EmptyState.d.ts +15 -0
  85. package/dist/components/EmptyState.d.ts.map +1 -0
  86. package/dist/{error-boundary.d.mts → components/ErrorBoundary.d.ts} +4 -5
  87. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  88. package/dist/{infinite-scroll.d.mts → components/InfiniteScroll.d.ts} +5 -6
  89. package/dist/components/InfiniteScroll.d.ts.map +1 -0
  90. package/dist/{marquee.d.mts → components/Marquee.d.ts} +3 -3
  91. package/dist/components/Marquee.d.ts.map +1 -0
  92. package/dist/{number-input.d.mts → components/NumberInput.d.ts} +10 -12
  93. package/dist/components/NumberInput.d.ts.map +1 -0
  94. package/dist/components/NxImage.d.ts +13 -0
  95. package/dist/components/NxImage.d.ts.map +1 -0
  96. package/dist/{pagination.d.mts → components/Pagination.d.ts} +6 -7
  97. package/dist/components/Pagination.d.ts.map +1 -0
  98. package/dist/components/Popover.d.ts +23 -0
  99. package/dist/components/Popover.d.ts.map +1 -0
  100. package/dist/{price-input.d.mts → components/PriceInput.d.ts} +5 -6
  101. package/dist/components/PriceInput.d.ts.map +1 -0
  102. package/dist/components/Progress.d.ts +17 -0
  103. package/dist/components/Progress.d.ts.map +1 -0
  104. package/dist/{radio-group.d.mts → components/RadioGroup.d.ts} +6 -7
  105. package/dist/components/RadioGroup.d.ts.map +1 -0
  106. package/dist/{select.d.mts → components/Select.d.ts} +7 -10
  107. package/dist/components/Select.d.ts.map +1 -0
  108. package/dist/{skeleton.d.mts → components/Skeleton.d.ts} +3 -3
  109. package/dist/components/Skeleton.d.ts.map +1 -0
  110. package/dist/components/Slider.d.ts +19 -0
  111. package/dist/components/Slider.d.ts.map +1 -0
  112. package/dist/{spinner.d.mts → components/Spinner.d.ts} +3 -3
  113. package/dist/components/Spinner.d.ts.map +1 -0
  114. package/dist/components/Stepper.d.ts +19 -0
  115. package/dist/components/Stepper.d.ts.map +1 -0
  116. package/dist/{switch.d.mts → components/Switch.d.ts} +5 -6
  117. package/dist/components/Switch.d.ts.map +1 -0
  118. package/dist/{tab.d.mts → components/Tab.d.ts} +7 -9
  119. package/dist/components/Tab.d.ts.map +1 -0
  120. package/dist/components/TagInput.d.ts +20 -0
  121. package/dist/components/TagInput.d.ts.map +1 -0
  122. package/dist/components/TextArea.d.ts +18 -0
  123. package/dist/components/TextArea.d.ts.map +1 -0
  124. package/dist/{text-input.d.mts → components/TextInput.d.ts} +5 -6
  125. package/dist/components/TextInput.d.ts.map +1 -0
  126. package/dist/{theme-provider.d.mts → components/ThemeProvider.d.ts} +3 -3
  127. package/dist/components/ThemeProvider.d.ts.map +1 -0
  128. package/dist/components/ToggleGroup.d.ts +35 -0
  129. package/dist/components/ToggleGroup.d.ts.map +1 -0
  130. package/dist/{tooltip.d.mts → components/Tooltip.d.ts} +6 -10
  131. package/dist/components/Tooltip.d.ts.map +1 -0
  132. package/dist/{virtual-scroll.d.mts → components/VirtualScroll.d.ts} +4 -4
  133. package/dist/components/VirtualScroll.d.ts.map +1 -0
  134. package/dist/date-picker.js +12 -0
  135. package/dist/date-picker.mjs +3 -0
  136. package/dist/dropdown-menu.js +32 -0
  137. package/dist/dropdown-menu.mjs +3 -0
  138. package/dist/empty-state.js +16 -0
  139. package/dist/empty-state.mjs +3 -0
  140. package/dist/hooks/useCheckDevice.d.ts +4 -4
  141. package/dist/hooks/useCheckDevice.d.ts.map +1 -0
  142. package/dist/hooks/useClickOutside.d.ts +2 -2
  143. package/dist/hooks/useClickOutside.d.ts.map +1 -0
  144. package/dist/hooks/useDraggableBottomSheet.d.ts +3 -3
  145. package/dist/hooks/useDraggableBottomSheet.d.ts.map +1 -0
  146. package/dist/hooks/useDraggableWindow.d.ts +5 -7
  147. package/dist/hooks/useDraggableWindow.d.ts.map +1 -0
  148. package/dist/hooks/useInView.d.ts +3 -3
  149. package/dist/hooks/useInView.d.ts.map +1 -0
  150. package/dist/hooks/useModal.d.ts +48 -2
  151. package/dist/hooks/useModal.d.ts.map +1 -0
  152. package/dist/index.d.ts +100 -77
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +269 -157
  155. package/dist/index.mjs +30 -18
  156. package/dist/modal/Modal.d.ts +52 -0
  157. package/dist/modal/Modal.d.ts.map +1 -0
  158. package/dist/modal/components/ModalComponent.d.ts +22 -0
  159. package/dist/modal/components/ModalComponent.d.ts.map +1 -0
  160. package/dist/modal/components/ModalContainer.d.ts +9 -0
  161. package/dist/modal/components/ModalContainer.d.ts.map +1 -0
  162. package/dist/modal/components/ModalPortal.d.ts +8 -0
  163. package/dist/modal/components/ModalPortal.d.ts.map +1 -0
  164. package/dist/modal/components/ModalPortalTarget.d.ts +7 -0
  165. package/dist/modal/components/ModalPortalTarget.d.ts.map +1 -0
  166. package/dist/modal/components/ModalTemplate.d.ts +20 -0
  167. package/dist/modal/components/ModalTemplate.d.ts.map +1 -0
  168. package/dist/modal/components/ModalTemplate.variants.d.ts +29 -0
  169. package/dist/modal/components/ModalTemplate.variants.d.ts.map +1 -0
  170. package/dist/modal/constants.d.ts +3 -0
  171. package/dist/modal/constants.d.ts.map +1 -0
  172. package/dist/modal/index.d.ts +11 -82
  173. package/dist/modal/index.d.ts.map +1 -0
  174. package/dist/modal/index.js +12 -12
  175. package/dist/modal/index.mjs +3 -3
  176. package/dist/modal/types.d.ts +90 -0
  177. package/dist/modal/types.d.ts.map +1 -0
  178. package/dist/number-input.js +4 -4
  179. package/dist/number-input.mjs +1 -1
  180. package/dist/nx-image.js +12 -0
  181. package/dist/nx-image.mjs +3 -0
  182. package/dist/progress.js +16 -0
  183. package/dist/progress.mjs +3 -0
  184. package/dist/schemas/_all.json +840 -13
  185. package/dist/schemas/accordion.d.ts +67 -0
  186. package/dist/schemas/accordion.d.ts.map +1 -0
  187. package/dist/schemas/alert.d.ts +30 -0
  188. package/dist/schemas/alert.d.ts.map +1 -0
  189. package/dist/schemas/alert.json +49 -0
  190. package/dist/schemas/avatar.d.ts +30 -0
  191. package/dist/schemas/avatar.d.ts.map +1 -0
  192. package/dist/schemas/badge.d.ts +33 -0
  193. package/dist/schemas/badge.d.ts.map +1 -0
  194. package/dist/schemas/badge.json +76 -0
  195. package/dist/schemas/breadcrumb.d.ts +38 -0
  196. package/dist/schemas/breadcrumb.d.ts.map +1 -0
  197. package/dist/schemas/breadcrumb.json +47 -0
  198. package/dist/schemas/button.d.ts +42 -0
  199. package/dist/schemas/button.d.ts.map +1 -0
  200. package/dist/schemas/carousel.d.ts +48 -0
  201. package/dist/schemas/carousel.d.ts.map +1 -0
  202. package/dist/schemas/checkbox.d.ts +48 -0
  203. package/dist/schemas/checkbox.d.ts.map +1 -0
  204. package/dist/schemas/chip.d.ts +30 -0
  205. package/dist/schemas/chip.d.ts.map +1 -0
  206. package/dist/schemas/client-only.d.ts +12 -0
  207. package/dist/schemas/client-only.d.ts.map +1 -0
  208. package/dist/schemas/countdown.d.ts +52 -0
  209. package/dist/schemas/countdown.d.ts.map +1 -0
  210. package/dist/schemas/counter.d.ts +36 -0
  211. package/dist/schemas/counter.d.ts.map +1 -0
  212. package/dist/schemas/data-list.d.ts +33 -0
  213. package/dist/schemas/data-list.d.ts.map +1 -0
  214. package/dist/schemas/date-picker.d.ts +36 -0
  215. package/dist/schemas/date-picker.d.ts.map +1 -0
  216. package/dist/schemas/datePicker.json +56 -0
  217. package/dist/schemas/divider.d.ts +21 -0
  218. package/dist/schemas/divider.d.ts.map +1 -0
  219. package/dist/schemas/drawer.d.ts +95 -0
  220. package/dist/schemas/drawer.d.ts.map +1 -0
  221. package/dist/schemas/dropdown-menu.d.ts +64 -0
  222. package/dist/schemas/dropdown-menu.d.ts.map +1 -0
  223. package/dist/schemas/dropdownMenu.json +83 -0
  224. package/dist/schemas/ellipsis.d.ts +30 -0
  225. package/dist/schemas/ellipsis.d.ts.map +1 -0
  226. package/dist/schemas/empty-state.d.ts +27 -0
  227. package/dist/schemas/empty-state.d.ts.map +1 -0
  228. package/dist/schemas/emptyState.json +44 -0
  229. package/dist/schemas/error-boundary.d.ts +15 -0
  230. package/dist/schemas/error-boundary.d.ts.map +1 -0
  231. package/dist/schemas/index.d.ts +47 -0
  232. package/dist/schemas/index.d.ts.map +1 -0
  233. package/dist/schemas/infinite-scroll.d.ts +39 -0
  234. package/dist/schemas/infinite-scroll.d.ts.map +1 -0
  235. package/dist/schemas/marquee.d.ts +27 -0
  236. package/dist/schemas/marquee.d.ts.map +1 -0
  237. package/dist/schemas/modal.d.ts +176 -0
  238. package/dist/schemas/modal.d.ts.map +1 -0
  239. package/dist/schemas/number-input.d.ts +72 -0
  240. package/dist/schemas/number-input.d.ts.map +1 -0
  241. package/dist/schemas/numberInput.json +27 -8
  242. package/dist/schemas/nx-image.d.ts +33 -0
  243. package/dist/schemas/nx-image.d.ts.map +1 -0
  244. package/dist/schemas/nxImage.json +56 -0
  245. package/dist/schemas/pagination.d.ts +27 -0
  246. package/dist/schemas/pagination.d.ts.map +1 -0
  247. package/dist/schemas/popover.d.ts +39 -0
  248. package/dist/schemas/popover.d.ts.map +1 -0
  249. package/dist/schemas/price-input.d.ts +63 -0
  250. package/dist/schemas/price-input.d.ts.map +1 -0
  251. package/dist/schemas/progress.d.ts +30 -0
  252. package/dist/schemas/progress.d.ts.map +1 -0
  253. package/dist/schemas/progress.json +63 -0
  254. package/dist/schemas/radio-group.d.ts +61 -0
  255. package/dist/schemas/radio-group.d.ts.map +1 -0
  256. package/dist/schemas/select.d.ts +52 -0
  257. package/dist/schemas/select.d.ts.map +1 -0
  258. package/dist/schemas/skeleton.d.ts +27 -0
  259. package/dist/schemas/skeleton.d.ts.map +1 -0
  260. package/dist/schemas/slider.d.ts +45 -0
  261. package/dist/schemas/slider.d.ts.map +1 -0
  262. package/dist/schemas/slider.json +78 -0
  263. package/dist/schemas/spinner.d.ts +21 -0
  264. package/dist/schemas/spinner.d.ts.map +1 -0
  265. package/dist/schemas/stepper.d.ts +39 -0
  266. package/dist/schemas/stepper.d.ts.map +1 -0
  267. package/dist/schemas/stepper.json +73 -0
  268. package/dist/schemas/switch.d.ts +33 -0
  269. package/dist/schemas/switch.d.ts.map +1 -0
  270. package/dist/schemas/tab.d.ts +61 -0
  271. package/dist/schemas/tab.d.ts.map +1 -0
  272. package/dist/schemas/table.d.ts +113 -0
  273. package/dist/schemas/table.d.ts.map +1 -0
  274. package/dist/schemas/tag-input.d.ts +39 -0
  275. package/dist/schemas/tag-input.d.ts.map +1 -0
  276. package/dist/schemas/tagInput.json +70 -0
  277. package/dist/schemas/text-area.d.ts +69 -0
  278. package/dist/schemas/text-area.d.ts.map +1 -0
  279. package/dist/schemas/text-input.d.ts +78 -0
  280. package/dist/schemas/text-input.d.ts.map +1 -0
  281. package/dist/schemas/textArea.json +26 -1
  282. package/dist/schemas/theme-provider.d.ts +36 -0
  283. package/dist/schemas/theme-provider.d.ts.map +1 -0
  284. package/dist/schemas/toast.d.ts +91 -0
  285. package/dist/schemas/toast.d.ts.map +1 -0
  286. package/dist/schemas/toggle-group.d.ts +58 -0
  287. package/dist/schemas/toggle-group.d.ts.map +1 -0
  288. package/dist/schemas/toggleGroup.json +88 -0
  289. package/dist/schemas/tooltip.d.ts +33 -0
  290. package/dist/schemas/tooltip.d.ts.map +1 -0
  291. package/dist/schemas/virtual-scroll.d.ts +67 -0
  292. package/dist/schemas/virtual-scroll.d.ts.map +1 -0
  293. package/dist/schemas.js +177 -7
  294. package/dist/schemas.mjs +166 -8
  295. package/dist/slider.js +16 -0
  296. package/dist/slider.mjs +3 -0
  297. package/dist/stepper.js +16 -0
  298. package/dist/stepper.mjs +3 -0
  299. package/dist/styles/.generated/built.d.ts +3 -0
  300. package/dist/styles/.generated/built.d.ts.map +1 -0
  301. package/dist/styles/inject-layer.d.ts +2 -0
  302. package/dist/styles/inject-layer.d.ts.map +1 -0
  303. package/dist/styles/inject.d.ts +2 -0
  304. package/dist/styles/inject.d.ts.map +1 -0
  305. package/dist/styles/layer.js +2 -2
  306. package/dist/styles/layer.mjs +1 -1
  307. package/dist/styles.css +1655 -162
  308. package/dist/styles.js +2 -2
  309. package/dist/styles.layered.css +1655 -162
  310. package/dist/styles.mjs +1 -1
  311. package/dist/table/Table.d.ts +20 -0
  312. package/dist/table/Table.d.ts.map +1 -0
  313. package/dist/table/TableHighlightContext.d.ts +11 -0
  314. package/dist/table/TableHighlightContext.d.ts.map +1 -0
  315. package/dist/table/TableRow.d.ts +17 -0
  316. package/dist/table/TableRow.d.ts.map +1 -0
  317. package/dist/table/TdColumn.d.ts +14 -0
  318. package/dist/table/TdColumn.d.ts.map +1 -0
  319. package/dist/table/index.d.ts +23 -0
  320. package/dist/table/index.d.ts.map +1 -0
  321. package/dist/table/types.d.ts +27 -0
  322. package/dist/table/types.d.ts.map +1 -0
  323. package/dist/table.js +7 -7
  324. package/dist/table.mjs +1 -1
  325. package/dist/tag-input.js +16 -0
  326. package/dist/tag-input.mjs +3 -0
  327. package/dist/text-area.js +3 -3
  328. package/dist/text-area.mjs +1 -1
  329. package/dist/toast/Toast.d.ts +8 -0
  330. package/dist/toast/Toast.d.ts.map +1 -0
  331. package/dist/toast/index.d.ts +6 -0
  332. package/dist/toast/index.d.ts.map +1 -0
  333. package/dist/{toast.d.ts → toast/useToast.d.ts} +4 -14
  334. package/dist/toast/useToast.d.ts.map +1 -0
  335. package/dist/toggle-group.js +16 -0
  336. package/dist/toggle-group.mjs +3 -0
  337. package/dist/utils/cn.d.ts +3 -5
  338. package/dist/utils/cn.d.ts.map +1 -0
  339. package/dist/utils/scroll.d.ts +3 -4
  340. package/dist/utils/scroll.d.ts.map +1 -0
  341. package/package.json +104 -38
  342. package/scripts/setup-cursor-rules.cjs +15 -1
  343. package/dist/accordion.d.ts +0 -28
  344. package/dist/avatar.d.ts +0 -17
  345. package/dist/button.d.ts +0 -17
  346. package/dist/carousel.d.ts +0 -36
  347. package/dist/checkbox.d.ts +0 -21
  348. package/dist/chip.d.ts +0 -16
  349. package/dist/chunks/chunk-26BUGBOY.mjs +0 -57
  350. package/dist/chunks/chunk-CLGH2RTS.js +0 -7
  351. package/dist/chunks/chunk-ECVAVQUY.mjs +0 -243
  352. package/dist/chunks/chunk-UPCWJWXR.mjs +0 -5
  353. package/dist/chunks/chunk-WR55D4ZS.js +0 -80
  354. package/dist/client-only.d.ts +0 -13
  355. package/dist/countdown.d.ts +0 -27
  356. package/dist/counter.d.ts +0 -15
  357. package/dist/data-list.d.ts +0 -33
  358. package/dist/divider.d.ts +0 -14
  359. package/dist/drawer.d.ts +0 -42
  360. package/dist/ellipsis.d.ts +0 -16
  361. package/dist/error-boundary.d.ts +0 -20
  362. package/dist/hooks/useCheckDevice.d.mts +0 -47
  363. package/dist/hooks/useClickOutside.d.mts +0 -12
  364. package/dist/hooks/useDraggableBottomSheet.d.mts +0 -24
  365. package/dist/hooks/useDraggableWindow.d.mts +0 -21
  366. package/dist/hooks/useInView.d.mts +0 -14
  367. package/dist/hooks/useModal.d.mts +0 -2
  368. package/dist/index.d.mts +0 -77
  369. package/dist/infinite-scroll.d.ts +0 -26
  370. package/dist/marquee.d.ts +0 -12
  371. package/dist/modal/index.d.mts +0 -87
  372. package/dist/number-input.d.ts +0 -38
  373. package/dist/pagination.d.ts +0 -22
  374. package/dist/popover.d.mts +0 -25
  375. package/dist/popover.d.ts +0 -25
  376. package/dist/price-input.d.ts +0 -36
  377. package/dist/radio-group.d.ts +0 -29
  378. package/dist/schemas.d.mts +0 -1689
  379. package/dist/schemas.d.ts +0 -1689
  380. package/dist/select.d.ts +0 -31
  381. package/dist/skeleton.d.ts +0 -15
  382. package/dist/spinner.d.ts +0 -9
  383. package/dist/styles/layer.d.mts +0 -3
  384. package/dist/styles/layer.d.ts +0 -3
  385. package/dist/styles.d.mts +0 -3
  386. package/dist/styles.d.ts +0 -3
  387. package/dist/switch.d.ts +0 -15
  388. package/dist/tab.d.ts +0 -36
  389. package/dist/table.d.mts +0 -80
  390. package/dist/table.d.ts +0 -80
  391. package/dist/text-area.d.mts +0 -15
  392. package/dist/text-area.d.ts +0 -15
  393. package/dist/text-input.d.ts +0 -21
  394. package/dist/theme-provider.d.ts +0 -25
  395. package/dist/toast.d.mts +0 -42
  396. package/dist/tooltip.d.ts +0 -24
  397. package/dist/useModal-BsGIcP8t.d.mts +0 -128
  398. package/dist/useModal-BsGIcP8t.d.ts +0 -128
  399. package/dist/utils/cn.d.mts +0 -5
  400. package/dist/utils/scroll.d.mts +0 -4
  401. package/dist/virtual-scroll.d.ts +0 -34
  402. package/dist/chunks/{chunk-3VFBPFZF.mjs → chunk-CWMLTXOH.mjs} +2 -2
  403. package/dist/chunks/{chunk-U53UA76K.js → chunk-HFBTS42N.js} +2 -2
@@ -93,7 +93,10 @@
93
93
  /* ── Shared: Shadow ── */
94
94
  --shadow-comp-sm: var(--shadow-elevation-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
95
95
  --shadow-comp-md: var(--shadow-elevation-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
96
- --shadow-comp-lg: var(--shadow-elevation-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
96
+ --shadow-comp-lg: var(
97
+ --shadow-elevation-lg,
98
+ 0 10px 15px -3px rgb(0 0 0 / 0.1)
99
+ );
97
100
 
98
101
  /* ── Shared: Overlay ── */
99
102
  --color-comp-overlay: var(--color-overlay-dim, rgba(0, 0, 0, 0.6));
@@ -135,6 +138,14 @@
135
138
  box-shadow: var(--shadow-comp-btn);
136
139
  transition-property: color, background-color, border-color;
137
140
  transition-duration: 200ms;
141
+ border: none;
142
+ background: none;
143
+ cursor: pointer;
144
+ font: inherit;
145
+ color: inherit;
146
+ padding: 0;
147
+ margin: 0;
148
+ text-decoration: none;
138
149
  }
139
150
  .nexus-btn:disabled,
140
151
  .nexus-btn[aria-disabled='true'] {
@@ -369,7 +380,9 @@
369
380
  font-weight: 500;
370
381
  line-height: 1;
371
382
  color: var(--color-text-primary);
372
- transition: border-color 200ms, box-shadow 200ms;
383
+ transition:
384
+ border-color 200ms,
385
+ box-shadow 200ms;
373
386
  }
374
387
  :where(.nexus-text-input) {
375
388
  width: 100%;
@@ -398,15 +411,18 @@
398
411
 
399
412
  /* ── Sizes ── */
400
413
  .nexus-text-input--xl {
401
- padding: calc(var(--spacing-padding-md, 1rem) - 1px) var(--spacing-padding-md, 1rem);
414
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px)
415
+ var(--spacing-padding-md, 1rem);
402
416
  font-size: var(--text-text-base, 1rem);
403
417
  }
404
418
  .nexus-text-input--lg {
405
- padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px) var(--spacing-padding-sm, 0.75rem);
419
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px)
420
+ var(--spacing-padding-sm, 0.75rem);
406
421
  font-size: var(--text-text-base, 1rem);
407
422
  }
408
423
  .nexus-text-input--md {
409
- padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px) var(--spacing-padding-sm, 0.75rem);
424
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px)
425
+ var(--spacing-padding-sm, 0.75rem);
410
426
  font-size: var(--text-text-sm, 0.875rem);
411
427
  }
412
428
 
@@ -502,13 +518,15 @@
502
518
  text-decoration: underline;
503
519
  transition: color 150ms;
504
520
  }
505
- .nexus-price-input-field__balance:hover .nexus-price-input-field__balance-value {
521
+ .nexus-price-input-field__balance:hover
522
+ .nexus-price-input-field__balance-value {
506
523
  color: var(--color-text-primary);
507
524
  }
508
525
  .nexus-price-input-field__balance-value--exceeded {
509
526
  color: var(--color-status-danger);
510
527
  }
511
- .nexus-price-input-field__balance:hover .nexus-price-input-field__balance-value--exceeded {
528
+ .nexus-price-input-field__balance:hover
529
+ .nexus-price-input-field__balance-value--exceeded {
512
530
  color: var(--color-status-danger);
513
531
  }
514
532
  .nexus-price-input-field__description {
@@ -533,7 +551,9 @@
533
551
  font-weight: 500;
534
552
  line-height: 1;
535
553
  color: var(--color-text-primary);
536
- transition: border-color 200ms, box-shadow 200ms;
554
+ transition:
555
+ border-color 200ms,
556
+ box-shadow 200ms;
537
557
  }
538
558
  :where(.nexus-price-input) {
539
559
  width: 100%;
@@ -562,15 +582,18 @@
562
582
 
563
583
  /* ── Sizes ── */
564
584
  .nexus-price-input--xl {
565
- padding: calc(var(--spacing-padding-md, 1rem) - 1px) var(--spacing-padding-md, 1rem);
585
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px)
586
+ var(--spacing-padding-md, 1rem);
566
587
  font-size: var(--text-text-base, 1rem);
567
588
  }
568
589
  .nexus-price-input--lg {
569
- padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px) var(--spacing-padding-sm, 0.75rem);
590
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px)
591
+ var(--spacing-padding-sm, 0.75rem);
570
592
  font-size: var(--text-text-base, 1rem);
571
593
  }
572
594
  .nexus-price-input--md {
573
- padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px) var(--spacing-padding-sm, 0.75rem);
595
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px)
596
+ var(--spacing-padding-sm, 0.75rem);
574
597
  font-size: var(--text-text-sm, 0.875rem);
575
598
  }
576
599
 
@@ -612,52 +635,137 @@
612
635
  TextArea
613
636
  ═══════════════════════════════════════════ */
614
637
 
638
+ /* ── Field wrapper ── */
639
+ .nexus-textarea-field {
640
+ display: flex;
641
+ flex-direction: column;
642
+ gap: 0.25rem;
643
+ }
644
+ .nexus-textarea-field__label {
645
+ font-size: var(--text-label-semibold-md, 0.875rem);
646
+ font-weight: 600;
647
+ color: var(--color-text-tertiary);
648
+ line-height: 1;
649
+ }
650
+ .nexus-textarea-field__footer {
651
+ display: flex;
652
+ align-items: center;
653
+ gap: 0.5rem;
654
+ }
655
+ .nexus-textarea-field__description {
656
+ flex: 1;
657
+ min-width: 0;
658
+ font-size: var(--text-text-xs, 0.75rem);
659
+ color: var(--color-text-tertiary);
660
+ line-height: 1.5;
661
+ letter-spacing: -0.12px;
662
+ }
663
+ .nexus-textarea-field__description--error {
664
+ color: var(--color-status-danger-intense, #d20625);
665
+ }
666
+ .nexus-textarea-field__count {
667
+ font-size: var(--text-text-xs, 0.75rem);
668
+ color: var(--color-text-tertiary);
669
+ line-height: 1.5;
670
+ letter-spacing: -0.12px;
671
+ text-align: right;
672
+ flex-shrink: 0;
673
+ margin-left: auto;
674
+ }
675
+ .nexus-textarea-field__count--error {
676
+ color: var(--color-status-danger-intense, #d20625);
677
+ }
678
+
679
+ /* ── Textarea box ── */
615
680
  .nexus-textarea {
616
- border-radius: var(--radius-corner-md, 0.375rem);
681
+ border-radius: var(--radius-corner-md, 0.5rem);
617
682
  border: 1px solid var(--color-border-default);
618
683
  background: var(--color-surface-default);
619
- padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
620
- font-size: var(--text-text-sm, 0.875rem);
621
684
  color: var(--color-text-primary);
622
- transition-property: border-color;
623
- transition-duration: 200ms;
685
+ font-weight: 500;
686
+ line-height: 1.5;
687
+ transition:
688
+ border-color 200ms,
689
+ box-shadow 200ms;
624
690
  resize: none;
691
+ min-height: 100px;
692
+ padding: var(--spacing-padding-sm, 0.75rem);
625
693
  }
626
694
  :where(.nexus-textarea) {
627
695
  width: 100%;
628
696
  }
629
697
  .nexus-textarea::placeholder {
630
- color: var(--color-text-tertiary);
698
+ color: var(--color-text-muted);
631
699
  }
632
700
  .nexus-textarea:focus-visible {
633
701
  outline: none;
634
702
  }
635
- .nexus-textarea:disabled {
636
- cursor: not-allowed;
637
- opacity: 0.5;
703
+
704
+ /* Hover */
705
+ .nexus-textarea:hover:not(.nexus-textarea--disabled):not(:focus) {
706
+ border-color: var(--color-border-default-hover);
707
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
638
708
  }
709
+
710
+ /* Focus — default */
639
711
  .nexus-textarea--default:focus {
640
- border-color: var(--color-text-primary);
712
+ border-color: var(--color-accent-primary);
713
+ box-shadow: 0 0 0 0.5px var(--color-accent-primary);
641
714
  }
715
+
716
+ /* Error */
642
717
  .nexus-textarea--error {
643
- border-color: var(--color-status-danger);
718
+ border-color: var(--color-status-danger-focus, #e62848);
719
+ box-shadow: 0 0 0 0.5px var(--color-status-danger-focus, #e62848);
644
720
  }
645
721
  .nexus-textarea--error:focus {
646
- border-color: var(--color-status-danger);
722
+ border-color: var(--color-status-danger-focus, #e62848);
723
+ box-shadow: 0 0 0 0.5px var(--color-status-danger-focus, #e62848);
647
724
  }
648
- .nexus-textarea-wrap {
649
- display: flex;
650
- flex-direction: column;
725
+
726
+ /* Disabled */
727
+ .nexus-textarea--disabled {
728
+ cursor: not-allowed;
729
+ background: var(
730
+ --color-surface-default-disabled,
731
+ var(--color-surface-strong)
732
+ );
733
+ border-color: var(--color-border-medium);
734
+ color: var(--color-text-muted);
651
735
  }
652
- .nexus-textarea-count {
653
- margin-top: 0.25rem;
654
- text-align: right;
655
- font-size: var(--text-text-xs, 0.75rem);
656
- color: var(--color-text-tertiary);
736
+
737
+ /* ── Sizes ── */
738
+ .nexus-textarea--lg {
739
+ font-size: var(--text-text-medium-base, 1rem);
740
+ letter-spacing: -0.16px;
657
741
  }
658
- .nexus-textarea-count__current {
659
- color: var(--color-text-primary);
660
- font-weight: 500;
742
+ .nexus-textarea--md {
743
+ font-size: var(--text-text-medium-sm, 0.875rem);
744
+ letter-spacing: -0.14px;
745
+ }
746
+
747
+ /* ── Resize modes ── */
748
+ .nexus-textarea--resize-default {
749
+ resize: vertical;
750
+ }
751
+ .nexus-textarea--resize-auto {
752
+ resize: none;
753
+ overflow: hidden;
754
+ }
755
+
756
+ /* ── Custom scrollbar ── */
757
+ .nexus-textarea:not(.nexus-textarea--resize-auto) {
758
+ overflow-y: auto;
759
+ }
760
+ .nexus-textarea::-webkit-scrollbar {
761
+ width: 5px;
762
+ }
763
+ .nexus-textarea::-webkit-scrollbar-track {
764
+ background: transparent;
765
+ }
766
+ .nexus-textarea::-webkit-scrollbar-thumb {
767
+ background: var(--color-icon-muted, #c6d0da);
768
+ border-radius: var(--radius-corner-full, 9999px);
661
769
  }
662
770
 
663
771
  /* ═══════════════════════════════════════════
@@ -666,81 +774,167 @@
666
774
 
667
775
  .nexus-number-input {
668
776
  display: flex;
669
- align-items: center;
670
- border-radius: var(--radius-corner-md, 0.375rem);
671
- border: 1px solid var(--color-border-default);
672
- background: var(--color-surface-default);
673
- color: var(--color-text-primary);
674
- transition: border-color 200ms, box-shadow 200ms;
777
+ flex-direction: column;
778
+ align-items: stretch;
675
779
  }
676
780
  :where(.nexus-number-input) {
677
781
  width: 100%;
678
782
  }
679
- .nexus-number-input:hover:not(.nexus-number-input--disabled):not(:focus-within) {
680
- box-shadow: 0 0 0 0.5px var(--color-border-default);
783
+
784
+ /* ── Header (label + max) ── */
785
+ .nexus-number-input__header {
786
+ display: flex;
787
+ align-items: center;
788
+ justify-content: space-between;
789
+ margin-bottom: 4px;
681
790
  }
682
- .nexus-number-input--default:focus-within {
683
- border-color: var(--color-accent-primary);
684
- box-shadow: 0 0 0 0.5px var(--color-accent-primary);
791
+ .nexus-number-input__label {
792
+ font-size: var(--text-label-semibold-md, 0.875rem);
793
+ font-weight: var(--font-weight-label-semibold-md, 600);
794
+ line-height: 1;
795
+ color: var(--color-text-tertiary);
685
796
  }
686
- .nexus-number-input--error {
687
- border-color: var(--color-status-danger);
797
+ .nexus-number-input__max {
798
+ display: flex;
799
+ align-items: center;
800
+ gap: 4px;
801
+ margin: 0;
802
+ margin-left: auto;
803
+ padding: 0;
804
+ border: none;
805
+ background: none;
806
+ font-size: var(--text-text-xs, 0.75rem);
807
+ font-weight: 400;
808
+ line-height: 1.5;
809
+ letter-spacing: -0.01em;
810
+ cursor: pointer;
688
811
  }
689
- .nexus-number-input--error:focus-within {
690
- border-color: var(--color-status-danger);
691
- box-shadow: 0 0 0 0.5px var(--color-status-danger);
812
+ .nexus-number-input__max:disabled {
813
+ cursor: default;
692
814
  }
693
- .nexus-number-input--xl {
694
- height: 3.5rem;
695
- font-size: var(--text-text-base, 1rem);
815
+ .nexus-number-input__max-text {
816
+ color: var(--color-text-tertiary);
696
817
  }
697
- .nexus-number-input--lg {
698
- height: 3rem;
699
- font-size: var(--text-text-base, 1rem);
818
+ .nexus-number-input__max-value {
819
+ color: var(--color-text-secondary);
820
+ text-decoration: underline;
700
821
  }
701
- .nexus-number-input--md {
702
- height: 2.5rem;
703
- font-size: var(--text-text-sm, 0.875rem);
822
+ .nexus-number-input__max-value--exceeded {
823
+ color: var(--color-status-danger-intense);
704
824
  }
705
- .nexus-number-input--sm {
706
- height: 2rem;
707
- font-size: var(--text-text-xs, 0.75rem);
825
+
826
+ /* ── Container (the bordered input box) ── */
827
+ .nexus-number-input__container {
828
+ display: flex;
829
+ align-items: center;
830
+ border-radius: var(--radius-corner-md, 0.5rem);
831
+ border: 1px solid var(--color-border-default);
832
+ background: var(--color-surface-default);
833
+ outline: 0.5px solid transparent;
834
+ transition:
835
+ border-color var(--duration-transition-fast, 150ms),
836
+ outline-color var(--duration-transition-fast, 150ms);
837
+ }
838
+ .nexus-number-input--basic .nexus-number-input__container {
839
+ overflow: clip;
840
+ }
841
+ .nexus-number-input:not(.nexus-number-input--disabled):not(
842
+ .nexus-number-input--error
843
+ )
844
+ .nexus-number-input__container:hover {
845
+ border-color: var(--color-border-default-hover);
846
+ outline-color: var(--color-border-default-hover);
708
847
  }
709
- .nexus-number-input--disabled {
710
- opacity: 0.5;
711
- cursor: not-allowed;
848
+ .nexus-number-input:not(.nexus-number-input--disabled):not(
849
+ .nexus-number-input--error
850
+ )
851
+ .nexus-number-input__container:focus-within {
852
+ border-color: var(--color-accent-primary-focus);
853
+ outline-color: var(--color-accent-primary-focus);
854
+ }
855
+ .nexus-number-input--error .nexus-number-input__container {
856
+ border-color: var(--color-status-danger-focus);
857
+ outline-color: var(--color-status-danger-focus);
858
+ }
859
+ .nexus-number-input--disabled .nexus-number-input__container {
860
+ background: var(--color-surface-strong);
861
+ border-color: var(--color-border-medium);
862
+ pointer-events: none;
863
+ }
864
+ .nexus-number-input--disabled .nexus-number-input__label {
865
+ color: var(--color-text-muted);
866
+ }
867
+ .nexus-number-input--disabled .nexus-number-input__max {
868
+ cursor: default;
869
+ }
870
+ .nexus-number-input--disabled .nexus-number-input__max-text,
871
+ .nexus-number-input--disabled .nexus-number-input__max-value {
872
+ color: var(--color-text-muted);
873
+ text-decoration: none;
874
+ }
875
+ .nexus-number-input--disabled .nexus-number-input__step {
876
+ color: var(--color-text-muted);
877
+ }
878
+ .nexus-number-input--disabled .nexus-number-input__bind-btn {
879
+ background: var(--color-surface-strong);
880
+ color: var(--color-text-muted);
712
881
  }
882
+ .nexus-number-input--disabled .nexus-number-input__description {
883
+ color: var(--color-text-muted);
884
+ }
885
+
886
+ /* ── Input field ── */
713
887
  .nexus-number-input__field {
714
- height: 100%;
715
- width: 100%;
716
- min-width: 0;
717
888
  flex: 1;
889
+ min-width: 0;
890
+ border: none;
718
891
  background: transparent;
719
892
  outline: none;
893
+ font-size: var(--text-label-lg, 1rem);
894
+ font-weight: var(--font-weight-label-lg, 500);
895
+ line-height: 1;
896
+ color: var(--color-text-primary);
720
897
  }
721
898
  .nexus-number-input__field::placeholder {
722
- color: var(--color-text-tertiary);
899
+ color: var(--color-text-muted);
723
900
  }
724
901
  .nexus-number-input__field:focus-visible {
725
902
  outline: none;
726
903
  }
727
- .nexus-number-input__field--xl {
728
- padding-inline: var(--spacing-padding-lg, 1.25rem);
904
+ .nexus-number-input--disabled .nexus-number-input__field {
905
+ color: var(--color-text-muted);
906
+ cursor: not-allowed;
729
907
  }
730
- .nexus-number-input__field--lg {
731
- padding-inline: var(--spacing-padding-md, 1rem);
908
+
909
+ /* ── Size: field padding (basic) ── */
910
+ .nexus-number-input--basic.nexus-number-input--lg .nexus-number-input__field {
911
+ padding: var(--spacing-padding-sm, 0.75rem);
732
912
  }
733
- .nexus-number-input__field--md {
734
- padding-inline: var(--spacing-padding-sm, 0.75rem);
913
+ .nexus-number-input--basic.nexus-number-input--xl .nexus-number-input__field {
914
+ padding: var(--spacing-padding-md, 1rem);
735
915
  }
736
- .nexus-number-input__field--sm {
737
- padding-inline: 0.625rem;
916
+
917
+ /* ── Size: field padding (bind) ── */
918
+ .nexus-number-input--bind .nexus-number-input__container {
919
+ padding-inline: var(--spacing-padding-xs, 0.5rem);
920
+ }
921
+ .nexus-number-input--bind .nexus-number-input__field {
922
+ text-align: center;
923
+ }
924
+ .nexus-number-input--bind.nexus-number-input--lg .nexus-number-input__field {
925
+ padding: var(--spacing-padding-sm, 0.75rem);
738
926
  }
927
+ .nexus-number-input--bind.nexus-number-input--xl .nexus-number-input__field {
928
+ padding: var(--spacing-padding-md, 1rem) var(--spacing-padding-sm, 0.75rem);
929
+ }
930
+
931
+ /* ── Basic variant: chevron buttons column ── */
739
932
  .nexus-number-input__buttons {
740
933
  display: flex;
741
934
  flex-direction: column;
935
+ align-self: stretch;
742
936
  border-left: 1px solid var(--color-border-default);
743
- height: 100%;
937
+ width: 24px;
744
938
  flex-shrink: 0;
745
939
  }
746
940
  .nexus-number-input__step {
@@ -748,29 +942,84 @@
748
942
  flex: 1;
749
943
  align-items: center;
750
944
  justify-content: center;
751
- padding-inline: 0.375rem;
752
- color: var(--color-text-tertiary);
753
- transition-property: color, background-color;
754
- transition-duration: 150ms;
945
+ padding: 0;
946
+ margin: 0;
947
+ border: none;
948
+ background: var(--color-surface-subtle);
949
+ cursor: pointer;
950
+ color: var(--color-icon-secondary);
951
+ transition:
952
+ color var(--duration-transition-fast, 150ms),
953
+ background-color var(--duration-transition-fast, 150ms);
755
954
  }
756
955
  .nexus-number-input__step:hover {
757
- color: var(--color-text-primary);
758
- background: var(--color-surface-hover);
956
+ background: var(--color-surface-subtle-hover);
957
+ color: var(--color-icon-primary);
759
958
  }
760
959
  .nexus-number-input__step:disabled {
761
- opacity: 0.4;
960
+ color: var(--color-text-muted);
762
961
  pointer-events: none;
763
962
  }
764
963
  .nexus-number-input__step--up {
765
- border-top-right-radius: var(--radius-corner-md, 0.375rem);
766
964
  border-bottom: 1px solid var(--color-border-default);
767
965
  }
768
- .nexus-number-input__step--down {
769
- border-bottom-right-radius: var(--radius-corner-md, 0.375rem);
966
+ .nexus-number-input__chevron-icon {
967
+ width: 8px;
968
+ height: 5px;
770
969
  }
771
- .nexus-number-input__step-icon {
772
- width: 0.75rem;
773
- height: 0.75rem;
970
+ .nexus-number-input__chevron-icon--down {
971
+ transform: scaleY(-1);
972
+ }
973
+
974
+ /* ── Bind variant: +/- buttons ── */
975
+ .nexus-number-input__bind-btn {
976
+ display: flex;
977
+ align-items: center;
978
+ justify-content: center;
979
+ flex-shrink: 0;
980
+ width: 24px;
981
+ height: 24px;
982
+ padding: 0;
983
+ margin: 0;
984
+ border: none;
985
+ border-radius: var(--radius-corner-sm, 0.25rem);
986
+ background: var(--color-surface-subtle);
987
+ color: var(--color-icon-secondary);
988
+ cursor: pointer;
989
+ overflow: clip;
990
+ transition:
991
+ color var(--duration-transition-fast, 150ms),
992
+ background-color var(--duration-transition-fast, 150ms);
993
+ }
994
+ .nexus-number-input__bind-btn:hover {
995
+ background: var(--color-surface-subtle-hover);
996
+ color: var(--color-icon-primary);
997
+ }
998
+ .nexus-number-input__bind-btn:disabled {
999
+ color: var(--color-text-muted);
1000
+ pointer-events: none;
1001
+ }
1002
+ .nexus-number-input--xl .nexus-number-input__bind-btn {
1003
+ width: 30px;
1004
+ height: 30px;
1005
+ }
1006
+ .nexus-number-input__bind-icon {
1007
+ width: 16px;
1008
+ height: 16px;
1009
+ }
1010
+
1011
+ /* ── Description ── */
1012
+ .nexus-number-input__description {
1013
+ margin: 0;
1014
+ font-size: var(--text-text-xs, 0.75rem);
1015
+ font-weight: 400;
1016
+ line-height: 1.5;
1017
+ letter-spacing: -0.01em;
1018
+ color: var(--color-text-tertiary);
1019
+ height: 18px;
1020
+ }
1021
+ .nexus-number-input__description--error {
1022
+ color: var(--color-status-danger-intense);
774
1023
  }
775
1024
 
776
1025
  /* ═══════════════════════════════════════════
@@ -1095,6 +1344,12 @@
1095
1344
  user-select: none;
1096
1345
  border-radius: 9999px;
1097
1346
  border: 1px solid transparent;
1347
+ background: transparent;
1348
+ cursor: pointer;
1349
+ font-family: inherit;
1350
+ padding: 0;
1351
+ margin: 0;
1352
+ text-decoration: none;
1098
1353
  }
1099
1354
  .nexus-chip[aria-disabled='true'] {
1100
1355
  opacity: 0.5;
@@ -1155,45 +1410,341 @@
1155
1410
  }
1156
1411
 
1157
1412
  /* ═══════════════════════════════════════════
1158
- Pagination
1413
+ Badge
1159
1414
  ═══════════════════════════════════════════ */
1160
1415
 
1161
- .nexus-pagination {
1162
- display: flex;
1163
- align-items: center;
1164
- gap: var(--spacing-gap-xs, 0.25rem);
1165
- }
1166
- .nexus-pagination--sm {
1167
- font-size: var(--text-text-xs, 0.75rem);
1168
- }
1169
- .nexus-pagination--md {
1170
- font-size: var(--text-text-sm, 0.875rem);
1416
+ .nexus-badge-wrapper {
1417
+ position: relative;
1171
1418
  }
1172
- .nexus-page-btn {
1419
+ .nexus-badge {
1420
+ --nexus-badge-offset-x: 0px;
1421
+ --nexus-badge-offset-y: 0px;
1422
+ box-sizing: border-box;
1173
1423
  display: inline-flex;
1174
1424
  align-items: center;
1175
1425
  justify-content: center;
1176
- border-radius: var(--radius-corner-md, 0.375rem);
1177
- font-weight: 500;
1178
- transition-property: color, background-color;
1179
- transition-duration: 150ms;
1180
- user-select: none;
1181
- border: 1px solid transparent;
1182
- }
1183
- .nexus-page-btn:disabled {
1184
- opacity: 0.4;
1185
- pointer-events: none;
1186
- }
1187
- .nexus-page-btn--sm {
1188
- width: 1.75rem;
1189
- height: 1.75rem;
1426
+ min-width: 1.25rem;
1427
+ height: 1.25rem;
1428
+ padding: 0 0.35rem;
1429
+ border-radius: var(--radius-corner-full, 9999px);
1190
1430
  font-size: var(--text-text-xs, 0.75rem);
1431
+ font-weight: var(--font-weight-label-semibold-sm, 600);
1432
+ line-height: 1;
1433
+ color: var(--color-text-inverted);
1434
+ }
1435
+ .nexus-badge--positioned {
1436
+ position: absolute;
1437
+ top: 0;
1438
+ right: 0;
1439
+ z-index: 1;
1440
+ transform: translate(
1441
+ calc(50% + var(--nexus-badge-offset-x)),
1442
+ calc(-50% + var(--nexus-badge-offset-y))
1443
+ );
1444
+ }
1445
+ .nexus-badge--dot {
1446
+ min-width: 0;
1447
+ padding: 0;
1448
+ }
1449
+ .nexus-badge--dot.nexus-badge--sm {
1450
+ width: 0.375rem;
1451
+ height: 0.375rem;
1452
+ }
1453
+ .nexus-badge--dot.nexus-badge--md {
1454
+ width: 0.5rem;
1455
+ height: 0.5rem;
1456
+ }
1457
+ .nexus-badge--dot.nexus-badge--lg {
1458
+ width: 0.625rem;
1459
+ height: 0.625rem;
1460
+ }
1461
+ .nexus-badge--danger {
1462
+ background: var(--color-status-danger);
1463
+ color: var(--color-static-white);
1464
+ }
1465
+ .nexus-badge--primary {
1466
+ background: var(--color-accent-primary);
1467
+ color: var(--color-accent-on-primary);
1468
+ }
1469
+ .nexus-badge--secondary {
1470
+ background: var(--color-accent-secondary);
1471
+ color: var(--color-accent-on-secondary);
1472
+ }
1473
+ .nexus-badge--info {
1474
+ background: var(--color-status-info);
1475
+ color: var(--color-static-white);
1476
+ }
1477
+ .nexus-badge--success {
1478
+ background: var(--color-status-success);
1479
+ color: var(--color-static-white);
1480
+ }
1481
+ .nexus-badge--warning {
1482
+ background: var(--color-status-warning);
1483
+ color: var(--color-static-black);
1484
+ }
1485
+ .nexus-badge--sm:not(.nexus-badge--dot) {
1486
+ min-width: 1rem;
1487
+ height: 1rem;
1488
+ padding: 0 0.25rem;
1489
+ font-size: 0.625rem;
1490
+ }
1491
+ .nexus-badge--lg:not(.nexus-badge--dot) {
1492
+ min-width: 1.5rem;
1493
+ height: 1.5rem;
1494
+ padding: 0 0.45rem;
1495
+ font-size: var(--text-text-sm, 0.875rem);
1496
+ }
1497
+
1498
+ /* ═══════════════════════════════════════════
1499
+ Progress
1500
+ ═══════════════════════════════════════════ */
1501
+
1502
+ .nexus-progress-wrapper {
1503
+ display: flex;
1504
+ flex-direction: column;
1505
+ gap: var(--spacing-gap-xs, 0.25rem);
1506
+ width: 100%;
1507
+ }
1508
+ .nexus-progress__header {
1509
+ display: flex;
1510
+ justify-content: space-between;
1511
+ align-items: center;
1512
+ gap: var(--spacing-gap-sm, 0.5rem);
1513
+ }
1514
+ .nexus-progress__label {
1515
+ font-size: var(--text-text-sm, 0.875rem);
1516
+ color: var(--color-text-primary);
1517
+ }
1518
+ .nexus-progress__value {
1519
+ font-size: var(--text-text-sm, 0.875rem);
1520
+ color: var(--color-text-secondary);
1521
+ font-variant-numeric: tabular-nums;
1522
+ }
1523
+ .nexus-progress {
1524
+ position: relative;
1525
+ width: 100%;
1526
+ overflow: hidden;
1527
+ border-radius: var(--radius-corner-full, 9999px);
1528
+ background: var(--color-surface-strong);
1529
+ }
1530
+ .nexus-progress--sm {
1531
+ height: 0.25rem;
1532
+ }
1533
+ .nexus-progress--md {
1534
+ height: 0.375rem;
1535
+ }
1536
+ .nexus-progress--lg {
1537
+ height: 0.5rem;
1538
+ }
1539
+ .nexus-progress__bar {
1540
+ height: 100%;
1541
+ border-radius: inherit;
1542
+ transition: width var(--duration-transition-normal, 200ms)
1543
+ var(--ease-transition-normal, cubic-bezier(0, 0, 0.2, 1));
1544
+ }
1545
+ .nexus-progress--primary .nexus-progress__bar {
1546
+ background: var(--color-accent-primary);
1547
+ }
1548
+ .nexus-progress--success .nexus-progress__bar {
1549
+ background: var(--color-status-success);
1550
+ }
1551
+ .nexus-progress--warning .nexus-progress__bar {
1552
+ background: var(--color-status-warning);
1553
+ }
1554
+ .nexus-progress--danger .nexus-progress__bar {
1555
+ background: var(--color-status-danger);
1556
+ }
1557
+ .nexus-progress--info .nexus-progress__bar {
1558
+ background: var(--color-status-info);
1559
+ }
1560
+ .nexus-progress__bar--indeterminate {
1561
+ position: absolute;
1562
+ left: 0;
1563
+ top: 0;
1564
+ bottom: 0;
1565
+ width: 35% !important;
1566
+ animation: nexus-progress-indeterminate 1.1s
1567
+ var(--ease-transition-normal, cubic-bezier(0, 0, 0.2, 1)) infinite;
1568
+ }
1569
+ @keyframes nexus-progress-indeterminate {
1570
+ 0% {
1571
+ transform: translateX(-100%);
1572
+ }
1573
+ 100% {
1574
+ transform: translateX(calc(100% / 0.35 * 3));
1575
+ }
1576
+ }
1577
+
1578
+ /* ═══════════════════════════════════════════
1579
+ Alert
1580
+ ═══════════════════════════════════════════ */
1581
+
1582
+ .nexus-alert {
1583
+ display: flex;
1584
+ align-items: flex-start;
1585
+ gap: var(--spacing-gap-sm, 0.5rem);
1586
+ padding: var(--spacing-padding-md, 1rem);
1587
+ border-radius: var(--radius-corner-md, 8px);
1588
+ border-width: var(--border-width-stroke-thin, 1px);
1589
+ border-style: solid;
1590
+ }
1591
+ .nexus-alert__icon {
1592
+ flex-shrink: 0;
1593
+ margin-top: 0.125rem;
1594
+ line-height: 0;
1595
+ }
1596
+ .nexus-alert__icon-svg {
1597
+ width: 1.25rem;
1598
+ height: 1.25rem;
1599
+ }
1600
+ .nexus-alert__body {
1601
+ flex: 1;
1602
+ min-width: 0;
1603
+ }
1604
+ .nexus-alert__title {
1605
+ margin: 0;
1606
+ font-weight: var(--font-weight-heading-h7, 600);
1607
+ font-size: var(--text-text-sm, 0.875rem);
1608
+ color: var(--color-text-primary);
1609
+ }
1610
+ .nexus-alert__description {
1611
+ margin-top: var(--spacing-gap-xs, 0.25rem);
1612
+ font-size: var(--text-text-sm, 0.875rem);
1613
+ color: var(--color-text-secondary);
1614
+ }
1615
+ .nexus-alert__action {
1616
+ flex-shrink: 0;
1617
+ align-self: center;
1618
+ }
1619
+ .nexus-alert__close {
1620
+ flex-shrink: 0;
1621
+ display: inline-flex;
1622
+ align-items: center;
1623
+ justify-content: center;
1624
+ margin: 0;
1625
+ padding: var(--spacing-padding-2xs, 0.25rem);
1626
+ border: none;
1627
+ border-radius: var(--radius-corner-sm, 4px);
1628
+ background: transparent;
1629
+ cursor: pointer;
1630
+ font: inherit;
1631
+ color: var(--color-icon-secondary);
1632
+ transition: color var(--duration-transition-fast, 150ms)
1633
+ var(--ease-transition-fast, ease);
1634
+ }
1635
+ .nexus-alert__close:hover {
1636
+ color: var(--color-icon-primary);
1637
+ }
1638
+ .nexus-alert__close-icon {
1639
+ width: 1rem;
1640
+ height: 1rem;
1641
+ }
1642
+ .nexus-alert--info {
1643
+ background: color-mix(
1644
+ in srgb,
1645
+ var(--color-status-info-dim) 45%,
1646
+ var(--color-surface-default)
1647
+ );
1648
+ border-color: color-mix(
1649
+ in srgb,
1650
+ var(--color-status-info) 28%,
1651
+ var(--color-border-default)
1652
+ );
1653
+ }
1654
+ .nexus-alert--info .nexus-alert__icon {
1655
+ color: var(--color-status-info-intense);
1656
+ }
1657
+ .nexus-alert--success {
1658
+ background: color-mix(
1659
+ in srgb,
1660
+ var(--color-status-success-dim) 45%,
1661
+ var(--color-surface-default)
1662
+ );
1663
+ border-color: color-mix(
1664
+ in srgb,
1665
+ var(--color-status-success) 28%,
1666
+ var(--color-border-default)
1667
+ );
1668
+ }
1669
+ .nexus-alert--success .nexus-alert__icon {
1670
+ color: var(--color-status-success-intense);
1671
+ }
1672
+ .nexus-alert--warning {
1673
+ background: color-mix(
1674
+ in srgb,
1675
+ var(--color-status-warning-dim) 45%,
1676
+ var(--color-surface-default)
1677
+ );
1678
+ border-color: color-mix(
1679
+ in srgb,
1680
+ var(--color-status-warning) 28%,
1681
+ var(--color-border-default)
1682
+ );
1683
+ }
1684
+ .nexus-alert--warning .nexus-alert__icon {
1685
+ color: var(--color-status-warning-intense);
1686
+ }
1687
+ .nexus-alert--danger {
1688
+ background: color-mix(
1689
+ in srgb,
1690
+ var(--color-status-danger-dim) 45%,
1691
+ var(--color-surface-default)
1692
+ );
1693
+ border-color: color-mix(
1694
+ in srgb,
1695
+ var(--color-status-danger) 28%,
1696
+ var(--color-border-default)
1697
+ );
1698
+ }
1699
+ .nexus-alert--danger .nexus-alert__icon {
1700
+ color: var(--color-status-danger-intense);
1701
+ }
1702
+
1703
+ /* ═══════════════════════════════════════════
1704
+ Pagination
1705
+ ═══════════════════════════════════════════ */
1706
+
1707
+ .nexus-pagination {
1708
+ display: flex;
1709
+ align-items: center;
1710
+ gap: var(--spacing-gap-xs, 0.25rem);
1711
+ }
1712
+ .nexus-pagination--sm {
1713
+ font-size: var(--text-text-xs, 0.75rem);
1714
+ }
1715
+ .nexus-pagination--md {
1716
+ font-size: var(--text-text-sm, 0.875rem);
1717
+ }
1718
+ .nexus-page-btn {
1719
+ display: inline-flex;
1720
+ align-items: center;
1721
+ justify-content: center;
1722
+ border-radius: var(--radius-corner-md, 0.375rem);
1723
+ font-weight: 500;
1724
+ transition-property: color, background-color;
1725
+ transition-duration: 150ms;
1726
+ user-select: none;
1727
+ border: 1px solid transparent;
1728
+ background: transparent;
1729
+ cursor: pointer;
1730
+ font-family: inherit;
1731
+ padding: 0;
1732
+ margin: 0;
1733
+ }
1734
+ .nexus-page-btn:disabled {
1735
+ opacity: 0.4;
1736
+ pointer-events: none;
1737
+ }
1738
+ .nexus-page-btn--sm {
1739
+ width: 1.75rem;
1740
+ height: 1.75rem;
1741
+ font-size: var(--text-text-xs, 0.75rem);
1742
+ }
1743
+ .nexus-page-btn--md {
1744
+ width: 2.25rem;
1745
+ height: 2.25rem;
1746
+ font-size: var(--text-text-sm, 0.875rem);
1191
1747
  }
1192
- .nexus-page-btn--md {
1193
- width: 2.25rem;
1194
- height: 2.25rem;
1195
- font-size: var(--text-text-sm, 0.875rem);
1196
- }
1197
1748
  .nexus-page-btn--active {
1198
1749
  background: var(--color-accent-primary);
1199
1750
  color: var(--color-static-white);
@@ -1241,6 +1792,12 @@
1241
1792
  outline: none;
1242
1793
  transition-property: color, background-color, border-color;
1243
1794
  transition-duration: 150ms;
1795
+ border: none;
1796
+ background: transparent;
1797
+ cursor: pointer;
1798
+ font-family: inherit;
1799
+ padding: 0;
1800
+ margin: 0;
1244
1801
  }
1245
1802
  .nexus-tab-trigger--line {
1246
1803
  padding: 0.625rem var(--spacing-padding-md, 1rem);
@@ -1426,8 +1983,13 @@
1426
1983
  justify-content: space-between;
1427
1984
  border-radius: var(--radius-corner-sm, 0.25rem);
1428
1985
  border: 1px solid var(--color-border-default);
1986
+ background: var(--color-surface-default, transparent);
1429
1987
  color: var(--color-text-primary);
1430
1988
  font-size: var(--text-text-sm, 0.875rem);
1989
+ font-family: inherit;
1990
+ cursor: pointer;
1991
+ padding: 0;
1992
+ margin: 0;
1431
1993
  transition-property: border-color;
1432
1994
  transition-duration: 200ms;
1433
1995
  }
@@ -1513,12 +2075,24 @@
1513
2075
  animation: nexus-select-slide-out 100ms ease-in forwards;
1514
2076
  }
1515
2077
  @keyframes nexus-select-slide-in {
1516
- from { opacity: 0; transform: translateY(-4px) scaleY(0.96); }
1517
- to { opacity: 1; transform: translateY(0) scaleY(1); }
2078
+ from {
2079
+ opacity: 0;
2080
+ transform: translateY(-4px) scaleY(0.96);
2081
+ }
2082
+ to {
2083
+ opacity: 1;
2084
+ transform: translateY(0) scaleY(1);
2085
+ }
1518
2086
  }
1519
2087
  @keyframes nexus-select-slide-out {
1520
- from { opacity: 1; transform: translateY(0) scaleY(1); }
1521
- to { opacity: 0; transform: translateY(-4px) scaleY(0.96); }
2088
+ from {
2089
+ opacity: 1;
2090
+ transform: translateY(0) scaleY(1);
2091
+ }
2092
+ to {
2093
+ opacity: 0;
2094
+ transform: translateY(-4px) scaleY(0.96);
2095
+ }
1522
2096
  }
1523
2097
  .nexus-select-content--sm {
1524
2098
  width: 4rem;
@@ -1562,39 +2136,321 @@
1562
2136
  }
1563
2137
 
1564
2138
  /* ═══════════════════════════════════════════
1565
- Tooltip
2139
+ DropdownMenu
1566
2140
  ═══════════════════════════════════════════ */
1567
2141
 
1568
- .nexus-tooltip-content {
1569
- z-index: 50;
1570
- display: flex;
2142
+ .nexus-dropdown-content {
2143
+ position: relative;
2144
+ z-index: var(--z-index-layer-dropdown, 10);
2145
+ min-width: 10rem;
1571
2146
  overflow: hidden;
1572
- border-radius: var(--radius-corner-md, 0.375rem);
1573
- padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
1574
- font-size: var(--text-text-sm, 0.875rem);
1575
- }
1576
- .nexus-tooltip--light {
2147
+ border-radius: var(--radius-corner-md, 0.5rem);
1577
2148
  border: 1px solid var(--color-border-default);
1578
- background: var(--color-static-white);
1579
- color: var(--color-static-black);
1580
- box-shadow: var(--shadow-comp-md);
1581
- }
1582
- .nexus-tooltip--dark {
1583
- border: none;
1584
- background: var(--color-static-black);
1585
- color: var(--color-static-white);
1586
- }
1587
- .nexus-tooltip-arrow--dark {
1588
- fill: var(--color-static-black);
2149
+ background: var(--color-surface-default);
2150
+ padding: var(--spacing-padding-xs, 0.5rem);
2151
+ box-shadow: var(--shadow-comp-lg);
2152
+ color: var(--color-text-primary);
2153
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
2154
+ will-change: transform, opacity;
1589
2155
  }
1590
- .nexus-tooltip-arrow--light {
1591
- fill: var(--color-static-white);
2156
+ .nexus-dropdown-content[data-state='open'] {
2157
+ animation: nexus-dropdown-in 150ms ease-out;
1592
2158
  }
1593
- .nexus-tooltip-trigger {
1594
- cursor: default;
2159
+ .nexus-dropdown-content[data-state='closed'] {
2160
+ animation: nexus-dropdown-out 100ms ease-in forwards;
1595
2161
  }
1596
-
1597
- /* ═══════════════════════════════════════════
2162
+ @keyframes nexus-dropdown-in {
2163
+ from {
2164
+ opacity: 0;
2165
+ transform: scale(0.96);
2166
+ }
2167
+ to {
2168
+ opacity: 1;
2169
+ transform: scale(1);
2170
+ }
2171
+ }
2172
+ @keyframes nexus-dropdown-out {
2173
+ from {
2174
+ opacity: 1;
2175
+ transform: scale(1);
2176
+ }
2177
+ to {
2178
+ opacity: 0;
2179
+ transform: scale(0.96);
2180
+ }
2181
+ }
2182
+ .nexus-dropdown-separator {
2183
+ margin: var(--spacing-padding-xs, 0.5rem)
2184
+ calc(-1 * var(--spacing-padding-xs, 0.5rem));
2185
+ height: 1px;
2186
+ background: var(--color-border-default);
2187
+ }
2188
+ .nexus-dropdown-item {
2189
+ position: relative;
2190
+ display: flex;
2191
+ width: 100%;
2192
+ cursor: default;
2193
+ align-items: center;
2194
+ gap: var(--spacing-gap-sm, 0.5rem);
2195
+ border-radius: var(--radius-corner-sm, 0.25rem);
2196
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
2197
+ font-size: var(--text-text-sm, 0.875rem);
2198
+ color: var(--color-text-primary);
2199
+ outline: none;
2200
+ user-select: none;
2201
+ transition: background-color 150ms ease;
2202
+ }
2203
+ .nexus-dropdown-item[data-highlighted] {
2204
+ background: var(--color-surface-hover);
2205
+ }
2206
+ .nexus-dropdown-item[data-disabled] {
2207
+ pointer-events: none;
2208
+ opacity: var(--opacity-disabled-element, 0.4);
2209
+ }
2210
+ .nexus-dropdown-item--danger {
2211
+ color: var(--color-status-danger);
2212
+ }
2213
+ .nexus-dropdown-item--danger[data-highlighted] {
2214
+ background: var(--color-status-danger-dim);
2215
+ color: var(--color-status-danger-intense);
2216
+ }
2217
+ .nexus-dropdown-item__icon {
2218
+ display: inline-flex;
2219
+ flex-shrink: 0;
2220
+ color: var(--color-icon-secondary);
2221
+ }
2222
+ .nexus-dropdown-item--danger .nexus-dropdown-item__icon {
2223
+ color: var(--color-status-danger);
2224
+ }
2225
+
2226
+ /* ═══════════════════════════════════════════
2227
+ ToggleGroup
2228
+ ═══════════════════════════════════════════ */
2229
+
2230
+ .nexus-toggle-group {
2231
+ display: inline-flex;
2232
+ align-items: stretch;
2233
+ position: relative;
2234
+ border-radius: var(--radius-corner-md, 0.5rem);
2235
+ }
2236
+ .nexus-toggle-group--default {
2237
+ background: var(--color-surface-subtle);
2238
+ padding: var(--spacing-padding-2xs, 0.25rem);
2239
+ gap: var(--spacing-gap-xs, 0.25rem);
2240
+ }
2241
+
2242
+ /* ── Sliding indicator ── */
2243
+ .nexus-toggle-group__indicator {
2244
+ position: absolute;
2245
+ top: 0;
2246
+ left: 0;
2247
+ border-radius: var(--radius-corner-sm, 0.25rem);
2248
+ background: var(--color-surface-default);
2249
+ box-shadow: var(--shadow-sm);
2250
+ pointer-events: none;
2251
+ z-index: 0;
2252
+ will-change: transform, width;
2253
+ }
2254
+ .nexus-toggle-group__indicator--animated {
2255
+ transition:
2256
+ transform 200ms cubic-bezier(0, 0, 0.2, 1),
2257
+ width 200ms cubic-bezier(0, 0, 0.2, 1);
2258
+ }
2259
+ .nexus-toggle-group--outline {
2260
+ border: 1px solid var(--color-border-default);
2261
+ padding: var(--spacing-padding-2xs, 0.25rem);
2262
+ gap: 0;
2263
+ }
2264
+ .nexus-toggle-group__item {
2265
+ display: inline-flex;
2266
+ align-items: center;
2267
+ justify-content: center;
2268
+ gap: var(--spacing-gap-xs, 0.25rem);
2269
+ border-radius: var(--radius-corner-sm, 0.25rem);
2270
+ border: none;
2271
+ background: transparent;
2272
+ font-size: var(--text-text-sm, 0.875rem);
2273
+ font-weight: var(--font-weight-text-medium-sm, 500);
2274
+ color: var(--color-text-secondary);
2275
+ cursor: pointer;
2276
+ transition: color var(--duration-transition-normal, 200ms)
2277
+ var(--ease-transition-fast);
2278
+ outline: none;
2279
+ position: relative;
2280
+ z-index: 1;
2281
+ }
2282
+ .nexus-toggle-group__item:focus-visible {
2283
+ box-shadow:
2284
+ 0 0 0 2px var(--color-surface-default),
2285
+ 0 0 0 4px var(--color-accent-primary-focus);
2286
+ }
2287
+ .nexus-toggle-group__item[data-disabled] {
2288
+ pointer-events: none;
2289
+ opacity: var(--opacity-disabled-element, 0.4);
2290
+ }
2291
+ .nexus-toggle-group--default .nexus-toggle-group__item[data-state='on'] {
2292
+ color: var(--color-text-primary);
2293
+ }
2294
+ .nexus-toggle-group--outline .nexus-toggle-group__item {
2295
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
2296
+ }
2297
+ .nexus-toggle-group--outline .nexus-toggle-group__item[data-state='on'] {
2298
+ background: var(--color-accent-primary-dim);
2299
+ color: var(--color-accent-primary-intense);
2300
+ }
2301
+ .nexus-toggle-group--outline
2302
+ .nexus-toggle-group__item:not([data-state='on']):hover {
2303
+ background: var(--color-surface-hover);
2304
+ color: var(--color-text-primary);
2305
+ }
2306
+ .nexus-toggle-group--sm .nexus-toggle-group__item {
2307
+ min-height: var(--size-control-sm, 2rem);
2308
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
2309
+ }
2310
+ .nexus-toggle-group--md .nexus-toggle-group__item {
2311
+ min-height: var(--size-control-md, 2.5rem);
2312
+ padding-inline: var(--spacing-padding-md, 1rem);
2313
+ }
2314
+ .nexus-toggle-group--lg .nexus-toggle-group__item {
2315
+ min-height: var(--size-control-lg, 3rem);
2316
+ padding-inline: var(--spacing-padding-lg, 1.5rem);
2317
+ }
2318
+ .nexus-toggle-group__icon {
2319
+ display: inline-flex;
2320
+ flex-shrink: 0;
2321
+ color: var(--color-icon-secondary);
2322
+ }
2323
+ .nexus-toggle-group__item[data-state='on'] .nexus-toggle-group__icon {
2324
+ color: var(--color-icon-primary);
2325
+ }
2326
+
2327
+ /* ═══════════════════════════════════════════
2328
+ Slider
2329
+ ═══════════════════════════════════════════ */
2330
+
2331
+ .nexus-slider-wrapper {
2332
+ display: flex;
2333
+ width: 100%;
2334
+ flex-direction: column;
2335
+ gap: var(--spacing-gap-sm, 0.5rem);
2336
+ }
2337
+ .nexus-slider__header {
2338
+ display: flex;
2339
+ align-items: center;
2340
+ justify-content: space-between;
2341
+ gap: var(--spacing-gap-md, 1rem);
2342
+ }
2343
+ .nexus-slider__label {
2344
+ font-size: var(--text-label-md, 0.875rem);
2345
+ font-weight: var(--font-weight-label-md, 500);
2346
+ color: var(--color-text-primary);
2347
+ }
2348
+ .nexus-slider__value {
2349
+ font-size: var(--text-text-sm, 0.875rem);
2350
+ font-variant-numeric: tabular-nums;
2351
+ color: var(--color-text-secondary);
2352
+ }
2353
+ .nexus-slider {
2354
+ position: relative;
2355
+ display: flex;
2356
+ width: 100%;
2357
+ touch-action: none;
2358
+ user-select: none;
2359
+ align-items: center;
2360
+ }
2361
+ .nexus-slider[data-disabled] {
2362
+ opacity: var(--opacity-disabled-element, 0.4);
2363
+ pointer-events: none;
2364
+ }
2365
+ .nexus-slider__track {
2366
+ position: relative;
2367
+ flex-grow: 1;
2368
+ overflow: hidden;
2369
+ border-radius: var(--radius-corner-full, 9999px);
2370
+ background: var(--color-surface-strong);
2371
+ }
2372
+ .nexus-slider__range {
2373
+ position: absolute;
2374
+ height: 100%;
2375
+ border-radius: var(--radius-corner-full, 9999px);
2376
+ background: var(--color-accent-primary);
2377
+ }
2378
+ .nexus-slider__thumb {
2379
+ display: block;
2380
+ flex-shrink: 0;
2381
+ border-radius: var(--radius-corner-full, 9999px);
2382
+ border: 2px solid var(--color-accent-primary);
2383
+ background: var(--color-surface-default);
2384
+ box-shadow: var(--shadow-sm);
2385
+ outline: none;
2386
+ transition:
2387
+ box-shadow 150ms ease,
2388
+ transform 150ms ease;
2389
+ }
2390
+ .nexus-slider__thumb:hover {
2391
+ box-shadow: var(--shadow-md);
2392
+ }
2393
+ .nexus-slider__thumb:focus-visible {
2394
+ box-shadow:
2395
+ 0 0 0 2px var(--color-surface-default),
2396
+ 0 0 0 4px var(--color-accent-primary-focus);
2397
+ }
2398
+ .nexus-slider--sm .nexus-slider__track {
2399
+ height: 0.25rem;
2400
+ }
2401
+ .nexus-slider--sm .nexus-slider__thumb {
2402
+ width: 0.875rem;
2403
+ height: 0.875rem;
2404
+ }
2405
+ .nexus-slider--md .nexus-slider__track {
2406
+ height: 0.375rem;
2407
+ }
2408
+ .nexus-slider--md .nexus-slider__thumb {
2409
+ width: 1.125rem;
2410
+ height: 1.125rem;
2411
+ }
2412
+ .nexus-slider--lg .nexus-slider__track {
2413
+ height: 0.5rem;
2414
+ }
2415
+ .nexus-slider--lg .nexus-slider__thumb {
2416
+ width: 1.25rem;
2417
+ height: 1.25rem;
2418
+ }
2419
+
2420
+ /* ═══════════════════════════════════════════
2421
+ Tooltip
2422
+ ═══════════════════════════════════════════ */
2423
+
2424
+ .nexus-tooltip-content {
2425
+ z-index: 50;
2426
+ display: flex;
2427
+ overflow: hidden;
2428
+ border-radius: var(--radius-corner-md, 0.375rem);
2429
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
2430
+ font-size: var(--text-text-sm, 0.875rem);
2431
+ }
2432
+ .nexus-tooltip--light {
2433
+ border: 1px solid var(--color-border-default);
2434
+ background: var(--color-static-white);
2435
+ color: var(--color-static-black);
2436
+ box-shadow: var(--shadow-comp-md);
2437
+ }
2438
+ .nexus-tooltip--dark {
2439
+ border: none;
2440
+ background: var(--color-static-black);
2441
+ color: var(--color-static-white);
2442
+ }
2443
+ .nexus-tooltip-arrow--dark {
2444
+ fill: var(--color-static-black);
2445
+ }
2446
+ .nexus-tooltip-arrow--light {
2447
+ fill: var(--color-static-white);
2448
+ }
2449
+ .nexus-tooltip-trigger {
2450
+ cursor: default;
2451
+ }
2452
+
2453
+ /* ═══════════════════════════════════════════
1598
2454
  Popover
1599
2455
  ═══════════════════════════════════════════ */
1600
2456
 
@@ -1617,12 +2473,24 @@
1617
2473
  animation: nexus-popover-out 100ms ease-in forwards;
1618
2474
  }
1619
2475
  @keyframes nexus-popover-in {
1620
- from { opacity: 0; transform: scale(0.95); }
1621
- to { opacity: 1; transform: scale(1); }
2476
+ from {
2477
+ opacity: 0;
2478
+ transform: scale(0.95);
2479
+ }
2480
+ to {
2481
+ opacity: 1;
2482
+ transform: scale(1);
2483
+ }
1622
2484
  }
1623
2485
  @keyframes nexus-popover-out {
1624
- from { opacity: 1; transform: scale(1); }
1625
- to { opacity: 0; transform: scale(0.95); }
2486
+ from {
2487
+ opacity: 1;
2488
+ transform: scale(1);
2489
+ }
2490
+ to {
2491
+ opacity: 0;
2492
+ transform: scale(0.95);
2493
+ }
1626
2494
  }
1627
2495
  .nexus-popover-arrow {
1628
2496
  fill: var(--color-surface-default);
@@ -1728,7 +2596,15 @@
1728
2596
  flex: 1;
1729
2597
  align-items: center;
1730
2598
  justify-content: space-between;
2599
+ padding: 0;
1731
2600
  padding-block: var(--spacing-padding-md, 1rem);
2601
+ margin: 0;
2602
+ border: none;
2603
+ background: transparent;
2604
+ cursor: pointer;
2605
+ font: inherit;
2606
+ color: inherit;
2607
+ text-align: left;
1732
2608
  transition: all 150ms;
1733
2609
  }
1734
2610
  .nexus-accordion-trigger[data-state='open'] > .nexus-accordion-chevron {
@@ -1833,6 +2709,10 @@
1833
2709
  border: 1px solid var(--color-border-default);
1834
2710
  box-shadow: var(--shadow-comp-sm);
1835
2711
  color: var(--color-text-primary);
2712
+ cursor: pointer;
2713
+ font: inherit;
2714
+ padding: 0;
2715
+ margin: 0;
1836
2716
  transition-property: background-color;
1837
2717
  transition-duration: 150ms;
1838
2718
  }
@@ -1863,6 +2743,9 @@
1863
2743
  width: 0.5rem;
1864
2744
  height: 0.5rem;
1865
2745
  border-radius: 9999px;
2746
+ border: none;
2747
+ padding: 0;
2748
+ cursor: pointer;
1866
2749
  transition-property: background-color;
1867
2750
  transition-duration: 150ms;
1868
2751
  }
@@ -1909,11 +2792,7 @@
1909
2792
  color: var(--color-status-positive);
1910
2793
  }
1911
2794
  .nexus-toast--error {
1912
- border-color: color-mix(
1913
- in srgb,
1914
- var(--color-status-danger) 30%,
1915
- transparent
1916
- );
2795
+ border-color: color-mix(in srgb, var(--color-status-danger) 30%, transparent);
1917
2796
  background: color-mix(in srgb, var(--color-status-danger) 10%, transparent);
1918
2797
  color: var(--color-status-danger);
1919
2798
  }
@@ -2050,7 +2929,6 @@
2050
2929
  }
2051
2930
  .nexus-td__inner {
2052
2931
  border-radius: var(--radius-corner-md, 0.375rem);
2053
- padding: 2px 0.25rem;
2054
2932
  transition-property: background-color;
2055
2933
  transition-duration: 150ms;
2056
2934
  }
@@ -2210,6 +3088,9 @@
2210
3088
  cursor: pointer;
2211
3089
  align-items: center;
2212
3090
  justify-content: flex-end;
3091
+ border: none;
3092
+ background: transparent;
3093
+ padding: 0;
2213
3094
  }
2214
3095
  .nexus-modal-close-btn--bottom-sheet {
2215
3096
  position: relative;
@@ -2569,4 +3450,616 @@
2569
3450
  }
2570
3451
  }
2571
3452
 
3453
+ /* ═══════════════════════════════════════════
3454
+ EmptyState
3455
+ ═══════════════════════════════════════════ */
3456
+
3457
+ .nexus-empty-state {
3458
+ display: flex;
3459
+ flex-direction: column;
3460
+ align-items: center;
3461
+ justify-content: center;
3462
+ text-align: center;
3463
+ gap: var(--spacing-gap-sm, 0.5rem);
3464
+ padding: var(--spacing-padding-lg, 1.5rem);
3465
+ color: var(--color-text-primary);
3466
+ }
3467
+ .nexus-empty-state__icon {
3468
+ display: flex;
3469
+ align-items: center;
3470
+ justify-content: center;
3471
+ margin-bottom: var(--spacing-gap-xs, 0.25rem);
3472
+ color: var(--color-icon-muted);
3473
+ }
3474
+ .nexus-empty-state__default-icon {
3475
+ width: var(--size-icon-xl, 2rem);
3476
+ height: var(--size-icon-xl, 2rem);
3477
+ }
3478
+ .nexus-empty-state--sm .nexus-empty-state__default-icon {
3479
+ width: var(--size-icon-lg, 1.5rem);
3480
+ height: var(--size-icon-lg, 1.5rem);
3481
+ }
3482
+ .nexus-empty-state--lg .nexus-empty-state__default-icon {
3483
+ width: var(--size-control-md, 2.5rem);
3484
+ height: var(--size-control-md, 2.5rem);
3485
+ }
3486
+ .nexus-empty-state__title {
3487
+ margin: 0;
3488
+ font-size: var(--text-heading-h6, 1rem);
3489
+ font-weight: var(--font-weight-heading-h6, 600);
3490
+ letter-spacing: var(--letter-spacing-heading-h6, 0);
3491
+ color: var(--color-text-primary);
3492
+ }
3493
+ .nexus-empty-state__description {
3494
+ margin: 0;
3495
+ max-width: 24rem;
3496
+ font-size: var(--text-text-sm, 0.875rem);
3497
+ font-weight: var(--font-weight-text-sm, 400);
3498
+ letter-spacing: var(--letter-spacing-text-sm, -0.01em);
3499
+ color: var(--color-text-secondary);
3500
+ }
3501
+ .nexus-empty-state__action {
3502
+ margin-top: var(--spacing-gap-sm, 0.5rem);
3503
+ }
3504
+ .nexus-empty-state--sm {
3505
+ padding: var(--spacing-padding-md, 1rem);
3506
+ gap: var(--spacing-gap-xs, 0.25rem);
3507
+ }
3508
+ .nexus-empty-state--sm .nexus-empty-state__title {
3509
+ font-size: var(--text-text-semibold-sm, 0.875rem);
3510
+ }
3511
+ .nexus-empty-state--sm .nexus-empty-state__description {
3512
+ font-size: var(--text-text-xs, 0.75rem);
3513
+ }
3514
+ .nexus-empty-state--lg {
3515
+ padding: var(--spacing-padding-xl, 2rem);
3516
+ gap: var(--spacing-gap-md, 1rem);
3517
+ }
3518
+ .nexus-empty-state--lg .nexus-empty-state__title {
3519
+ font-size: var(--text-heading-h5, 1.125rem);
3520
+ }
3521
+
3522
+ /* ═══════════════════════════════════════════
3523
+ Breadcrumb
3524
+ ═══════════════════════════════════════════ */
3525
+
3526
+ .nexus-breadcrumb {
3527
+ font-size: var(--text-text-sm, 0.875rem);
3528
+ line-height: 1.25;
3529
+ }
3530
+ .nexus-breadcrumb__list {
3531
+ display: flex;
3532
+ flex-wrap: wrap;
3533
+ align-items: center;
3534
+ list-style: none;
3535
+ margin: 0;
3536
+ padding: 0;
3537
+ gap: 0;
3538
+ }
3539
+ .nexus-breadcrumb__item {
3540
+ display: inline-flex;
3541
+ align-items: center;
3542
+ }
3543
+ .nexus-breadcrumb__separator {
3544
+ display: inline-flex;
3545
+ align-items: center;
3546
+ margin: 0 var(--spacing-gap-xs, 0.25rem);
3547
+ color: var(--color-icon-tertiary);
3548
+ user-select: none;
3549
+ }
3550
+ .nexus-breadcrumb__separator-icon {
3551
+ width: var(--size-icon-xs, 0.75rem);
3552
+ height: var(--size-icon-xs, 0.75rem);
3553
+ }
3554
+ .nexus-breadcrumb__link {
3555
+ color: var(--color-text-secondary);
3556
+ text-decoration: none;
3557
+ transition: color 150ms ease;
3558
+ }
3559
+ .nexus-breadcrumb__link:hover {
3560
+ color: var(--color-text-primary);
3561
+ }
3562
+ .nexus-breadcrumb__link--btn {
3563
+ border: none;
3564
+ background: none;
3565
+ cursor: pointer;
3566
+ font: inherit;
3567
+ padding: 0;
3568
+ }
3569
+ .nexus-breadcrumb__current {
3570
+ color: var(--color-text-primary);
3571
+ font-weight: var(--font-weight-text-medium-sm, 500);
3572
+ }
3573
+ .nexus-breadcrumb__ellipsis {
3574
+ color: var(--color-text-tertiary);
3575
+ user-select: none;
3576
+ }
3577
+
3578
+ /* ═══════════════════════════════════════════
3579
+ Stepper
3580
+ ═══════════════════════════════════════════ */
3581
+
3582
+ .nexus-stepper {
3583
+ width: 100%;
3584
+ }
3585
+
3586
+ /* ── Horizontal ── */
3587
+ .nexus-stepper--horizontal {
3588
+ display: flex;
3589
+ flex-direction: row;
3590
+ align-items: flex-start;
3591
+ }
3592
+ .nexus-stepper--horizontal .nexus-stepper__step {
3593
+ flex: 1;
3594
+ min-width: 0;
3595
+ display: flex;
3596
+ flex-direction: column;
3597
+ align-items: center;
3598
+ text-align: center;
3599
+ }
3600
+ .nexus-stepper--horizontal .nexus-stepper__indicator-wrap {
3601
+ display: flex;
3602
+ flex-direction: row;
3603
+ align-items: center;
3604
+ width: 100%;
3605
+ justify-content: center;
3606
+ }
3607
+ .nexus-stepper--horizontal .nexus-stepper__connector {
3608
+ flex: 1;
3609
+ height: 2px;
3610
+ background: var(--color-border-default);
3611
+ transition: background var(--duration-transition-normal, 200ms)
3612
+ var(--ease-transition-normal);
3613
+ }
3614
+ .nexus-stepper--horizontal .nexus-stepper__connector--hidden {
3615
+ visibility: hidden;
3616
+ }
3617
+ .nexus-stepper--horizontal .nexus-stepper__connector--completed {
3618
+ background: var(--color-accent-primary);
3619
+ }
3620
+ .nexus-stepper--horizontal .nexus-stepper__content {
3621
+ margin-top: var(--spacing-gap-sm, 0.5rem);
3622
+ padding: 0 var(--spacing-padding-2xs, 0.25rem);
3623
+ }
3624
+
3625
+ /* ── Vertical ── */
3626
+ .nexus-stepper--vertical {
3627
+ display: flex;
3628
+ flex-direction: column;
3629
+ gap: 0;
3630
+ }
3631
+ .nexus-stepper--vertical .nexus-stepper__step {
3632
+ display: flex;
3633
+ flex-direction: row;
3634
+ align-items: stretch;
3635
+ gap: var(--spacing-gap-sm, 0.5rem);
3636
+ }
3637
+ .nexus-stepper--vertical .nexus-stepper__indicator-wrap {
3638
+ display: flex;
3639
+ flex-direction: column;
3640
+ align-items: center;
3641
+ flex-shrink: 0;
3642
+ }
3643
+ .nexus-stepper--vertical .nexus-stepper__connector {
3644
+ width: 2px;
3645
+ flex: 1;
3646
+ min-height: var(--spacing-padding-sm, 0.75rem);
3647
+ background: var(--color-border-default);
3648
+ transition: background var(--duration-transition-normal, 200ms)
3649
+ var(--ease-transition-normal);
3650
+ }
3651
+ .nexus-stepper--vertical .nexus-stepper__connector--completed {
3652
+ background: var(--color-accent-primary);
3653
+ }
3654
+ .nexus-stepper--vertical .nexus-stepper__content {
3655
+ padding: var(--spacing-padding-xs, 0.5rem) 0;
3656
+ }
3657
+
3658
+ /* ── Indicator (공통) ── */
3659
+ .nexus-stepper__indicator {
3660
+ display: inline-flex;
3661
+ align-items: center;
3662
+ justify-content: center;
3663
+ flex-shrink: 0;
3664
+ width: var(--size-control-sm, 2rem);
3665
+ height: var(--size-control-sm, 2rem);
3666
+ border-radius: var(--radius-corner-full, 9999px);
3667
+ border: 2px solid var(--color-border-medium);
3668
+ background: var(--color-surface-default);
3669
+ font-size: var(--text-text-sm, 0.875rem);
3670
+ font-weight: var(--font-weight-text-medium-sm, 500);
3671
+ color: var(--color-text-secondary);
3672
+ transition: all var(--duration-transition-normal, 200ms)
3673
+ var(--ease-transition-normal);
3674
+ }
3675
+ .nexus-stepper--sm .nexus-stepper__indicator {
3676
+ width: 1.75rem;
3677
+ height: 1.75rem;
3678
+ font-size: var(--text-text-xs, 0.75rem);
3679
+ }
3680
+ .nexus-stepper__check {
3681
+ width: var(--size-icon-sm, 1rem);
3682
+ height: var(--size-icon-sm, 1rem);
3683
+ }
3684
+ .nexus-stepper--sm .nexus-stepper__check {
3685
+ width: var(--size-icon-xs, 0.75rem);
3686
+ height: var(--size-icon-xs, 0.75rem);
3687
+ }
3688
+
3689
+ /* ── State colors ── */
3690
+ .nexus-stepper__step--completed .nexus-stepper__indicator {
3691
+ border-color: var(--color-accent-primary);
3692
+ background: var(--color-accent-primary);
3693
+ color: var(--color-accent-on-primary);
3694
+ }
3695
+ .nexus-stepper__step--active .nexus-stepper__indicator {
3696
+ border-color: var(--color-accent-primary);
3697
+ color: var(--color-accent-primary);
3698
+ background: var(--color-surface-default);
3699
+ box-shadow: 0 0 0 3px
3700
+ color-mix(in srgb, var(--color-accent-primary) 20%, transparent);
3701
+ }
3702
+ .nexus-stepper__step--error .nexus-stepper__indicator {
3703
+ border-color: var(--color-status-danger);
3704
+ color: var(--color-status-danger);
3705
+ background: var(--color-surface-default);
3706
+ box-shadow: 0 0 0 3px
3707
+ color-mix(in srgb, var(--color-status-danger) 20%, transparent);
3708
+ }
3709
+ .nexus-stepper__step--pending .nexus-stepper__indicator {
3710
+ border-color: var(--color-border-default);
3711
+ color: var(--color-text-tertiary);
3712
+ }
3713
+
3714
+ /* ── Labels ── */
3715
+ .nexus-stepper__label {
3716
+ display: block;
3717
+ font-size: var(--text-text-sm, 0.875rem);
3718
+ font-weight: var(--font-weight-text-medium-sm, 500);
3719
+ color: var(--color-text-primary);
3720
+ }
3721
+ .nexus-stepper--sm .nexus-stepper__label {
3722
+ font-size: var(--text-text-xs, 0.75rem);
3723
+ }
3724
+ .nexus-stepper__description {
3725
+ display: block;
3726
+ margin-top: var(--spacing-gap-xs, 0.25rem);
3727
+ font-size: var(--text-text-xs, 0.75rem);
3728
+ color: var(--color-text-secondary);
3729
+ }
3730
+ .nexus-stepper__step--pending .nexus-stepper__label {
3731
+ color: var(--color-text-secondary);
3732
+ }
3733
+ .nexus-stepper__step--pending .nexus-stepper__description {
3734
+ color: var(--color-text-muted);
3735
+ }
3736
+
3737
+ /* ═══════════════════════════════════════════
3738
+ TagInput
3739
+ ═══════════════════════════════════════════ */
3740
+
3741
+ .nexus-tag-input-wrapper {
3742
+ display: flex;
3743
+ flex-direction: column;
3744
+ gap: var(--spacing-gap-xs, 0.25rem);
3745
+ }
3746
+ .nexus-tag-input__label {
3747
+ font-size: var(--text-label-md, 0.875rem);
3748
+ font-weight: var(--font-weight-label-md, 500);
3749
+ color: var(--color-text-primary);
3750
+ }
3751
+ .nexus-tag-input {
3752
+ display: flex;
3753
+ flex-wrap: wrap;
3754
+ align-items: center;
3755
+ gap: var(--spacing-gap-xs, 0.25rem);
3756
+ padding: var(--spacing-padding-xs, 0.5rem);
3757
+ border: var(--border-width-stroke-default, 1px) solid
3758
+ var(--color-border-default);
3759
+ border-radius: var(--radius-corner-md, 0.5rem);
3760
+ background: var(--color-surface-default);
3761
+ cursor: text;
3762
+ transition: border-color 150ms ease;
3763
+ }
3764
+ .nexus-tag-input:focus-within {
3765
+ border-color: var(--color-border-default-focus, var(--color-accent-primary));
3766
+ }
3767
+ .nexus-tag-input--disabled {
3768
+ opacity: var(--opacity-disabled-element, 0.4);
3769
+ cursor: not-allowed;
3770
+ pointer-events: none;
3771
+ }
3772
+ .nexus-tag-input--sm {
3773
+ padding: var(--spacing-padding-2xs, 0.25rem);
3774
+ gap: 0.125rem;
3775
+ font-size: var(--text-text-xs, 0.75rem);
3776
+ }
3777
+ .nexus-tag-input--md {
3778
+ font-size: var(--text-text-sm, 0.875rem);
3779
+ }
3780
+ .nexus-tag-input--lg {
3781
+ padding: var(--spacing-padding-sm, 0.75rem);
3782
+ font-size: var(--text-text-base, 1rem);
3783
+ }
3784
+ .nexus-tag-input__tag {
3785
+ display: inline-flex;
3786
+ align-items: center;
3787
+ gap: 0.25rem;
3788
+ padding: 0.125rem 0.5rem;
3789
+ border-radius: var(--radius-corner-sm, 0.25rem);
3790
+ background: var(--color-surface-subtle);
3791
+ color: var(--color-text-primary);
3792
+ font-size: inherit;
3793
+ line-height: 1.5;
3794
+ white-space: nowrap;
3795
+ }
3796
+ .nexus-tag-input__tag-close {
3797
+ display: inline-flex;
3798
+ align-items: center;
3799
+ justify-content: center;
3800
+ border: none;
3801
+ background: transparent;
3802
+ cursor: pointer;
3803
+ padding: 0;
3804
+ margin: 0;
3805
+ color: var(--color-icon-tertiary);
3806
+ transition: color 150ms;
3807
+ }
3808
+ .nexus-tag-input__tag-close:hover {
3809
+ color: var(--color-icon-primary);
3810
+ }
3811
+ .nexus-tag-input__tag-close-icon {
3812
+ width: 0.75rem;
3813
+ height: 0.75rem;
3814
+ }
3815
+ .nexus-tag-input__input {
3816
+ flex: 1;
3817
+ min-width: 4rem;
3818
+ border: none;
3819
+ outline: none;
3820
+ background: transparent;
3821
+ font: inherit;
3822
+ color: var(--color-text-primary);
3823
+ padding: 0.125rem 0;
3824
+ }
3825
+ .nexus-tag-input__input::placeholder {
3826
+ color: var(--color-text-muted);
3827
+ }
3828
+ .nexus-tag-input__description {
3829
+ font-size: var(--text-text-xs, 0.75rem);
3830
+ color: var(--color-text-secondary);
3831
+ }
3832
+
3833
+ /* ═══════════════════════════════════════════
3834
+ NxImage
3835
+ ═══════════════════════════════════════════ */
3836
+
3837
+ .nexus-image {
3838
+ position: relative;
3839
+ overflow: hidden;
3840
+ display: block;
3841
+ background: var(--color-surface-subtle);
3842
+ }
3843
+ .nexus-image__fallback {
3844
+ display: flex;
3845
+ align-items: center;
3846
+ justify-content: center;
3847
+ width: 100%;
3848
+ height: 100%;
3849
+ min-height: 4rem;
3850
+ color: var(--color-icon-muted);
3851
+ }
3852
+ .nexus-image__fallback-icon {
3853
+ width: var(--size-icon-xl, 2rem);
3854
+ height: var(--size-icon-xl, 2rem);
3855
+ }
3856
+ .nexus-image__skeleton {
3857
+ position: absolute;
3858
+ inset: 0;
3859
+ background: linear-gradient(
3860
+ 90deg,
3861
+ var(--color-surface-subtle) 25%,
3862
+ var(--color-surface-default) 50%,
3863
+ var(--color-surface-subtle) 75%
3864
+ );
3865
+ background-size: 200% 100%;
3866
+ animation: nexus-shimmer 1.5s infinite;
3867
+ }
3868
+ .nexus-image__img {
3869
+ display: block;
3870
+ width: 100%;
3871
+ height: 100%;
3872
+ opacity: 0;
3873
+ transition: opacity 300ms ease;
3874
+ }
3875
+ .nexus-image__img--loaded {
3876
+ opacity: 1;
3877
+ }
3878
+ .nexus-image__img--cover {
3879
+ object-fit: cover;
3880
+ }
3881
+ .nexus-image__img--contain {
3882
+ object-fit: contain;
3883
+ }
3884
+ .nexus-image__img--fill {
3885
+ object-fit: fill;
3886
+ }
3887
+ .nexus-image__img--none {
3888
+ object-fit: none;
3889
+ }
3890
+
3891
+ @keyframes nexus-shimmer {
3892
+ 0% {
3893
+ background-position: -200% 0;
3894
+ }
3895
+ 100% {
3896
+ background-position: 200% 0;
3897
+ }
3898
+ }
3899
+
3900
+ /* ═══════════════════════════════════════════
3901
+ DatePicker / Calendar
3902
+ ═══════════════════════════════════════════ */
3903
+
3904
+ .nexus-datepicker {
3905
+ position: relative;
3906
+ display: inline-block;
3907
+ }
3908
+ .nexus-datepicker__trigger {
3909
+ display: inline-flex;
3910
+ align-items: center;
3911
+ gap: var(--spacing-gap-sm, 0.5rem);
3912
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
3913
+ border: var(--border-width-stroke-default, 1px) solid
3914
+ var(--color-border-default);
3915
+ border-radius: var(--radius-corner-md, 0.5rem);
3916
+ background: var(--color-surface-default);
3917
+ font: inherit;
3918
+ font-size: var(--text-text-sm, 0.875rem);
3919
+ color: var(--color-text-primary);
3920
+ cursor: pointer;
3921
+ transition: border-color 150ms;
3922
+ min-width: 10rem;
3923
+ }
3924
+ .nexus-datepicker__trigger:hover {
3925
+ border-color: var(--color-border-default-hover);
3926
+ }
3927
+ .nexus-datepicker__trigger:disabled {
3928
+ opacity: var(--opacity-disabled-element, 0.4);
3929
+ cursor: not-allowed;
3930
+ }
3931
+ .nexus-datepicker__trigger--placeholder span {
3932
+ color: var(--color-text-muted);
3933
+ }
3934
+ .nexus-datepicker__icon {
3935
+ width: var(--size-icon-sm, 1rem);
3936
+ height: var(--size-icon-sm, 1rem);
3937
+ flex-shrink: 0;
3938
+ color: var(--color-icon-secondary);
3939
+ }
3940
+ .nexus-datepicker__popover {
3941
+ position: absolute;
3942
+ top: calc(100% + 4px);
3943
+ left: 0;
3944
+ z-index: var(--z-index-layer-popover, 30);
3945
+ background: var(--color-surface-default);
3946
+ border: var(--border-width-stroke-default, 1px) solid
3947
+ var(--color-border-default);
3948
+ border-radius: var(--radius-corner-lg, 0.75rem);
3949
+ box-shadow: var(--shadow-lg, 0 2px 8px -1px rgb(0 0 0 / 0.12));
3950
+ padding: var(--spacing-padding-sm, 0.75rem);
3951
+ animation: nexus-fade-in 150ms ease;
3952
+ }
3953
+
3954
+ .nexus-calendar {
3955
+ font-size: var(--text-text-sm, 0.875rem);
3956
+ }
3957
+ .nexus-calendar__months {
3958
+ display: flex;
3959
+ flex-direction: column;
3960
+ gap: var(--spacing-gap-sm, 0.5rem);
3961
+ }
3962
+ .nexus-calendar__caption {
3963
+ display: flex;
3964
+ justify-content: center;
3965
+ align-items: center;
3966
+ padding: var(--spacing-padding-2xs, 0.25rem) 0;
3967
+ font-weight: var(--font-weight-text-semibold-sm, 600);
3968
+ color: var(--color-text-primary);
3969
+ }
3970
+ .nexus-calendar__nav {
3971
+ display: flex;
3972
+ gap: var(--spacing-gap-xs, 0.25rem);
3973
+ }
3974
+ .nexus-calendar__nav-btn {
3975
+ display: inline-flex;
3976
+ align-items: center;
3977
+ justify-content: center;
3978
+ width: var(--size-control-sm, 2rem);
3979
+ height: var(--size-control-sm, 2rem);
3980
+ border: none;
3981
+ background: transparent;
3982
+ border-radius: var(--radius-corner-sm, 0.25rem);
3983
+ cursor: pointer;
3984
+ color: var(--color-icon-secondary);
3985
+ transition: background 150ms;
3986
+ }
3987
+ .nexus-calendar__nav-btn:hover {
3988
+ background: var(--color-surface-default-hover);
3989
+ }
3990
+ .nexus-calendar__grid {
3991
+ width: 100%;
3992
+ border-collapse: collapse;
3993
+ }
3994
+ .nexus-calendar__head-row {
3995
+ display: flex;
3996
+ }
3997
+ .nexus-calendar__head-cell {
3998
+ width: var(--size-control-sm, 2rem);
3999
+ text-align: center;
4000
+ font-size: var(--text-text-xs, 0.75rem);
4001
+ font-weight: var(--font-weight-text-medium-xs, 500);
4002
+ color: var(--color-text-tertiary);
4003
+ padding: var(--spacing-padding-2xs, 0.25rem) 0;
4004
+ }
4005
+ .nexus-calendar__row {
4006
+ display: flex;
4007
+ }
4008
+ .nexus-calendar__cell {
4009
+ text-align: center;
4010
+ }
4011
+ .nexus-calendar__day {
4012
+ display: inline-flex;
4013
+ align-items: center;
4014
+ justify-content: center;
4015
+ width: var(--size-control-sm, 2rem);
4016
+ height: var(--size-control-sm, 2rem);
4017
+ border: none;
4018
+ background: transparent;
4019
+ border-radius: var(--radius-corner-sm, 0.25rem);
4020
+ cursor: pointer;
4021
+ font: inherit;
4022
+ font-size: var(--text-text-sm, 0.875rem);
4023
+ color: var(--color-text-primary);
4024
+ transition:
4025
+ background 150ms,
4026
+ color 150ms;
4027
+ }
4028
+ .nexus-calendar__day:hover {
4029
+ background: var(--color-surface-default-hover);
4030
+ }
4031
+ .nexus-calendar__day--selected {
4032
+ background: var(--color-accent-primary);
4033
+ color: var(--color-accent-on-primary);
4034
+ }
4035
+ .nexus-calendar__day--selected:hover {
4036
+ background: var(--color-accent-primary-hover);
4037
+ }
4038
+ .nexus-calendar__day--today {
4039
+ font-weight: var(--font-weight-text-semibold-sm, 600);
4040
+ border: var(--border-width-stroke-default, 1px) solid
4041
+ var(--color-accent-primary);
4042
+ }
4043
+ .nexus-calendar__day--outside {
4044
+ color: var(--color-text-muted);
4045
+ opacity: 0.5;
4046
+ }
4047
+ .nexus-calendar__day--disabled {
4048
+ color: var(--color-text-muted);
4049
+ opacity: var(--opacity-disabled-element, 0.4);
4050
+ cursor: not-allowed;
4051
+ pointer-events: none;
4052
+ }
4053
+
4054
+ @keyframes nexus-fade-in {
4055
+ from {
4056
+ opacity: 0;
4057
+ transform: translateY(-4px);
4058
+ }
4059
+ to {
4060
+ opacity: 1;
4061
+ transform: translateY(0);
4062
+ }
4063
+ }
4064
+
2572
4065
  }