@zvk/ui 0.1.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 (278) hide show
  1. package/LICENSE.md +26 -0
  2. package/README.md +31 -0
  3. package/dist/components/accordion/accordion.d.ts +43 -0
  4. package/dist/components/accordion/accordion.js +207 -0
  5. package/dist/components/accordion/index.d.ts +2 -0
  6. package/dist/components/accordion/index.js +2 -0
  7. package/dist/components/alert/alert.d.ts +24 -0
  8. package/dist/components/alert/alert.js +17 -0
  9. package/dist/components/alert/index.d.ts +2 -0
  10. package/dist/components/alert/index.js +1 -0
  11. package/dist/components/alert-dialog/alert-dialog.d.ts +46 -0
  12. package/dist/components/alert-dialog/alert-dialog.js +112 -0
  13. package/dist/components/alert-dialog/index.d.ts +2 -0
  14. package/dist/components/alert-dialog/index.js +2 -0
  15. package/dist/components/avatar/avatar.d.ts +14 -0
  16. package/dist/components/avatar/avatar.js +22 -0
  17. package/dist/components/avatar/index.d.ts +2 -0
  18. package/dist/components/avatar/index.js +2 -0
  19. package/dist/components/badge/badge.d.ts +11 -0
  20. package/dist/components/badge/badge.js +6 -0
  21. package/dist/components/badge/index.d.ts +2 -0
  22. package/dist/components/badge/index.js +1 -0
  23. package/dist/components/breadcrumbs/breadcrumbs.d.ts +24 -0
  24. package/dist/components/breadcrumbs/breadcrumbs.js +18 -0
  25. package/dist/components/breadcrumbs/index.d.ts +2 -0
  26. package/dist/components/breadcrumbs/index.js +1 -0
  27. package/dist/components/button/button.d.ts +13 -0
  28. package/dist/components/button/button.js +8 -0
  29. package/dist/components/button/index.d.ts +2 -0
  30. package/dist/components/button/index.js +1 -0
  31. package/dist/components/card/card.d.ts +31 -0
  32. package/dist/components/card/card.js +28 -0
  33. package/dist/components/card/index.d.ts +2 -0
  34. package/dist/components/card/index.js +1 -0
  35. package/dist/components/checkbox/checkbox.d.ts +11 -0
  36. package/dist/components/checkbox/checkbox.js +30 -0
  37. package/dist/components/checkbox/index.d.ts +2 -0
  38. package/dist/components/checkbox/index.js +2 -0
  39. package/dist/components/code-block/code-block.d.ts +10 -0
  40. package/dist/components/code-block/code-block.js +16 -0
  41. package/dist/components/code-block/index.d.ts +2 -0
  42. package/dist/components/code-block/index.js +1 -0
  43. package/dist/components/collapsible/collapsible.d.ts +23 -0
  44. package/dist/components/collapsible/collapsible.js +52 -0
  45. package/dist/components/collapsible/index.d.ts +2 -0
  46. package/dist/components/collapsible/index.js +2 -0
  47. package/dist/components/combobox/combobox.d.ts +20 -0
  48. package/dist/components/combobox/combobox.js +121 -0
  49. package/dist/components/combobox/index.d.ts +2 -0
  50. package/dist/components/combobox/index.js +2 -0
  51. package/dist/components/command/command-dialog.d.ts +2 -0
  52. package/dist/components/command/command-dialog.js +1 -0
  53. package/dist/components/command/command-filter.d.ts +7 -0
  54. package/dist/components/command/command-filter.js +14 -0
  55. package/dist/components/command/command.d.ts +55 -0
  56. package/dist/components/command/command.js +200 -0
  57. package/dist/components/command/index.d.ts +2 -0
  58. package/dist/components/command/index.js +2 -0
  59. package/dist/components/context-menu/context-menu.d.ts +34 -0
  60. package/dist/components/context-menu/context-menu.js +154 -0
  61. package/dist/components/context-menu/index.d.ts +2 -0
  62. package/dist/components/context-menu/index.js +2 -0
  63. package/dist/components/conversation/conversation.d.ts +60 -0
  64. package/dist/components/conversation/conversation.js +49 -0
  65. package/dist/components/conversation/index.d.ts +2 -0
  66. package/dist/components/conversation/index.js +1 -0
  67. package/dist/components/copy-button/copy-button.d.ts +23 -0
  68. package/dist/components/copy-button/copy-button.js +50 -0
  69. package/dist/components/copy-button/index.d.ts +2 -0
  70. package/dist/components/copy-button/index.js +2 -0
  71. package/dist/components/dialog/dialog.d.ts +62 -0
  72. package/dist/components/dialog/dialog.js +141 -0
  73. package/dist/components/dialog/index.d.ts +2 -0
  74. package/dist/components/dialog/index.js +2 -0
  75. package/dist/components/dropdown-menu/dropdown-menu.d.ts +43 -0
  76. package/dist/components/dropdown-menu/dropdown-menu.js +286 -0
  77. package/dist/components/dropdown-menu/index.d.ts +2 -0
  78. package/dist/components/dropdown-menu/index.js +2 -0
  79. package/dist/components/empty-state/empty-state.d.ts +13 -0
  80. package/dist/components/empty-state/empty-state.js +34 -0
  81. package/dist/components/empty-state/index.d.ts +2 -0
  82. package/dist/components/empty-state/index.js +1 -0
  83. package/dist/components/error-boundary/error-boundary.d.ts +29 -0
  84. package/dist/components/error-boundary/error-boundary.js +43 -0
  85. package/dist/components/error-boundary/index.d.ts +2 -0
  86. package/dist/components/error-boundary/index.js +2 -0
  87. package/dist/components/field/field.d.ts +23 -0
  88. package/dist/components/field/field.js +20 -0
  89. package/dist/components/field/index.d.ts +2 -0
  90. package/dist/components/field/index.js +1 -0
  91. package/dist/components/file-upload-input/file-upload-input.d.ts +13 -0
  92. package/dist/components/file-upload-input/file-upload-input.js +41 -0
  93. package/dist/components/file-upload-input/index.d.ts +2 -0
  94. package/dist/components/file-upload-input/index.js +2 -0
  95. package/dist/components/form/form.d.ts +30 -0
  96. package/dist/components/form/form.js +88 -0
  97. package/dist/components/form/index.d.ts +2 -0
  98. package/dist/components/form/index.js +2 -0
  99. package/dist/components/icon-button/icon-button.d.ts +10 -0
  100. package/dist/components/icon-button/icon-button.js +8 -0
  101. package/dist/components/icon-button/index.d.ts +2 -0
  102. package/dist/components/icon-button/index.js +1 -0
  103. package/dist/components/index.d.ts +102 -0
  104. package/dist/components/index.js +51 -0
  105. package/dist/components/input/index.d.ts +2 -0
  106. package/dist/components/input/index.js +1 -0
  107. package/dist/components/input/input.d.ts +11 -0
  108. package/dist/components/input/input.js +27 -0
  109. package/dist/components/label/index.d.ts +2 -0
  110. package/dist/components/label/index.js +1 -0
  111. package/dist/components/label/label.d.ts +9 -0
  112. package/dist/components/label/label.js +6 -0
  113. package/dist/components/menubar/index.d.ts +2 -0
  114. package/dist/components/menubar/index.js +2 -0
  115. package/dist/components/menubar/menubar.d.ts +39 -0
  116. package/dist/components/menubar/menubar.js +214 -0
  117. package/dist/components/pagination/index.d.ts +2 -0
  118. package/dist/components/pagination/index.js +1 -0
  119. package/dist/components/pagination/pagination.d.ts +21 -0
  120. package/dist/components/pagination/pagination.js +92 -0
  121. package/dist/components/popover/index.d.ts +2 -0
  122. package/dist/components/popover/index.js +2 -0
  123. package/dist/components/popover/popover.d.ts +28 -0
  124. package/dist/components/popover/popover.js +164 -0
  125. package/dist/components/progress/index.d.ts +2 -0
  126. package/dist/components/progress/index.js +1 -0
  127. package/dist/components/progress/progress.d.ts +24 -0
  128. package/dist/components/progress/progress.js +29 -0
  129. package/dist/components/radio-group/index.d.ts +2 -0
  130. package/dist/components/radio-group/index.js +2 -0
  131. package/dist/components/radio-group/radio-group.d.ts +42 -0
  132. package/dist/components/radio-group/radio-group.js +69 -0
  133. package/dist/components/responsive-container/index.d.ts +2 -0
  134. package/dist/components/responsive-container/index.js +1 -0
  135. package/dist/components/responsive-container/responsive-container.d.ts +10 -0
  136. package/dist/components/responsive-container/responsive-container.js +6 -0
  137. package/dist/components/scroll-area/index.d.ts +2 -0
  138. package/dist/components/scroll-area/index.js +2 -0
  139. package/dist/components/scroll-area/scroll-area.d.ts +21 -0
  140. package/dist/components/scroll-area/scroll-area.js +23 -0
  141. package/dist/components/sectioned-sidebar-nav/index.d.ts +2 -0
  142. package/dist/components/sectioned-sidebar-nav/index.js +1 -0
  143. package/dist/components/sectioned-sidebar-nav/sectioned-sidebar-nav.d.ts +39 -0
  144. package/dist/components/sectioned-sidebar-nav/sectioned-sidebar-nav.js +37 -0
  145. package/dist/components/select/index.d.ts +2 -0
  146. package/dist/components/select/index.js +2 -0
  147. package/dist/components/select/select.d.ts +46 -0
  148. package/dist/components/select/select.js +239 -0
  149. package/dist/components/separator/index.d.ts +2 -0
  150. package/dist/components/separator/index.js +1 -0
  151. package/dist/components/separator/separator.d.ts +8 -0
  152. package/dist/components/separator/separator.js +6 -0
  153. package/dist/components/sheet/index.d.ts +2 -0
  154. package/dist/components/sheet/index.js +2 -0
  155. package/dist/components/sheet/sheet.d.ts +49 -0
  156. package/dist/components/sheet/sheet.js +116 -0
  157. package/dist/components/sidebar-shell/index.d.ts +2 -0
  158. package/dist/components/sidebar-shell/index.js +1 -0
  159. package/dist/components/sidebar-shell/sidebar-shell.d.ts +35 -0
  160. package/dist/components/sidebar-shell/sidebar-shell.js +28 -0
  161. package/dist/components/skeleton/index.d.ts +2 -0
  162. package/dist/components/skeleton/index.js +1 -0
  163. package/dist/components/skeleton/skeleton.d.ts +10 -0
  164. package/dist/components/skeleton/skeleton.js +16 -0
  165. package/dist/components/slider/index.d.ts +2 -0
  166. package/dist/components/slider/index.js +2 -0
  167. package/dist/components/slider/slider.d.ts +12 -0
  168. package/dist/components/slider/slider.js +30 -0
  169. package/dist/components/spinner/index.d.ts +2 -0
  170. package/dist/components/spinner/index.js +1 -0
  171. package/dist/components/spinner/spinner.d.ts +10 -0
  172. package/dist/components/spinner/spinner.js +7 -0
  173. package/dist/components/stat/index.d.ts +2 -0
  174. package/dist/components/stat/index.js +1 -0
  175. package/dist/components/stat/stat.d.ts +13 -0
  176. package/dist/components/stat/stat.js +8 -0
  177. package/dist/components/switch/index.d.ts +2 -0
  178. package/dist/components/switch/index.js +2 -0
  179. package/dist/components/switch/switch.d.ts +11 -0
  180. package/dist/components/switch/switch.js +27 -0
  181. package/dist/components/table/index.d.ts +2 -0
  182. package/dist/components/table/index.js +1 -0
  183. package/dist/components/table/table.d.ts +45 -0
  184. package/dist/components/table/table.js +36 -0
  185. package/dist/components/tabs/index.d.ts +2 -0
  186. package/dist/components/tabs/index.js +2 -0
  187. package/dist/components/tabs/tabs.d.ts +34 -0
  188. package/dist/components/tabs/tabs.js +233 -0
  189. package/dist/components/tabs-with-sidebar/index.d.ts +2 -0
  190. package/dist/components/tabs-with-sidebar/index.js +2 -0
  191. package/dist/components/tabs-with-sidebar/tabs-with-sidebar.d.ts +21 -0
  192. package/dist/components/tabs-with-sidebar/tabs-with-sidebar.js +18 -0
  193. package/dist/components/textarea/index.d.ts +2 -0
  194. package/dist/components/textarea/index.js +2 -0
  195. package/dist/components/textarea/textarea.d.ts +11 -0
  196. package/dist/components/textarea/textarea.js +28 -0
  197. package/dist/components/toast/index.d.ts +2 -0
  198. package/dist/components/toast/index.js +1 -0
  199. package/dist/components/toast/toast.d.ts +33 -0
  200. package/dist/components/toast/toast.js +27 -0
  201. package/dist/components/toggle/index.d.ts +2 -0
  202. package/dist/components/toggle/index.js +2 -0
  203. package/dist/components/toggle/toggle.d.ts +12 -0
  204. package/dist/components/toggle/toggle.js +18 -0
  205. package/dist/components/toggle-group/index.d.ts +2 -0
  206. package/dist/components/toggle-group/index.js +2 -0
  207. package/dist/components/toggle-group/toggle-group.d.ts +28 -0
  208. package/dist/components/toggle-group/toggle-group.js +67 -0
  209. package/dist/components/tooltip/index.d.ts +2 -0
  210. package/dist/components/tooltip/index.js +2 -0
  211. package/dist/components/tooltip/tooltip.d.ts +10 -0
  212. package/dist/components/tooltip/tooltip.js +100 -0
  213. package/dist/hooks/index.d.ts +7 -0
  214. package/dist/hooks/index.js +5 -0
  215. package/dist/hooks/use-composed-refs.d.ts +3 -0
  216. package/dist/hooks/use-composed-refs.js +18 -0
  217. package/dist/hooks/use-controllable-state.d.ts +7 -0
  218. package/dist/hooks/use-controllable-state.js +30 -0
  219. package/dist/hooks/use-disclosure.d.ts +13 -0
  220. package/dist/hooks/use-disclosure.js +20 -0
  221. package/dist/hooks/use-event.d.ts +1 -0
  222. package/dist/hooks/use-event.js +11 -0
  223. package/dist/index.d.ts +3 -0
  224. package/dist/index.js +3 -0
  225. package/dist/internal/collection/collection.d.ts +18 -0
  226. package/dist/internal/collection/collection.js +54 -0
  227. package/dist/internal/collection/index.d.ts +2 -0
  228. package/dist/internal/collection/index.js +1 -0
  229. package/dist/internal/dismissable-layer/dismissable-layer.d.ts +13 -0
  230. package/dist/internal/dismissable-layer/dismissable-layer.js +73 -0
  231. package/dist/internal/dismissable-layer/index.d.ts +2 -0
  232. package/dist/internal/dismissable-layer/index.js +1 -0
  233. package/dist/internal/floating/auto-update.d.ts +9 -0
  234. package/dist/internal/floating/auto-update.js +48 -0
  235. package/dist/internal/floating/compute-position.d.ts +2 -0
  236. package/dist/internal/floating/compute-position.js +96 -0
  237. package/dist/internal/floating/detect-overflow.d.ts +13 -0
  238. package/dist/internal/floating/detect-overflow.js +13 -0
  239. package/dist/internal/floating/floating-types.d.ts +42 -0
  240. package/dist/internal/floating/floating-types.js +1 -0
  241. package/dist/internal/floating/index.d.ts +27 -0
  242. package/dist/internal/floating/index.js +5 -0
  243. package/dist/internal/floating/middleware.d.ts +11 -0
  244. package/dist/internal/floating/middleware.js +42 -0
  245. package/dist/internal/floating/use-floating-position.d.ts +2 -0
  246. package/dist/internal/floating/use-floating-position.js +113 -0
  247. package/dist/internal/focus/focus-scope.d.ts +10 -0
  248. package/dist/internal/focus/focus-scope.js +68 -0
  249. package/dist/internal/focus/focus-utils.d.ts +9 -0
  250. package/dist/internal/focus/focus-utils.js +94 -0
  251. package/dist/internal/focus/index.d.ts +3 -0
  252. package/dist/internal/focus/index.js +2 -0
  253. package/dist/internal/overlay-stack/index.d.ts +1 -0
  254. package/dist/internal/overlay-stack/index.js +1 -0
  255. package/dist/internal/overlay-stack/overlay-stack.d.ts +12 -0
  256. package/dist/internal/overlay-stack/overlay-stack.js +41 -0
  257. package/dist/internal/portal/index.d.ts +2 -0
  258. package/dist/internal/portal/index.js +1 -0
  259. package/dist/internal/portal/portal.d.ts +7 -0
  260. package/dist/internal/portal/portal.js +19 -0
  261. package/dist/internal/scroll-lock/index.d.ts +1 -0
  262. package/dist/internal/scroll-lock/index.js +1 -0
  263. package/dist/internal/scroll-lock/scroll-lock.d.ts +4 -0
  264. package/dist/internal/scroll-lock/scroll-lock.js +69 -0
  265. package/dist/styles.css +3852 -0
  266. package/dist/tokens/index.d.ts +2 -0
  267. package/dist/tokens/index.js +1 -0
  268. package/dist/tokens/token-types.d.ts +23 -0
  269. package/dist/tokens/token-types.js +1 -0
  270. package/dist/tokens/tokens.d.ts +139 -0
  271. package/dist/tokens/tokens.js +139 -0
  272. package/dist/utils/cn.d.ts +2 -0
  273. package/dist/utils/cn.js +3 -0
  274. package/dist/utils/compose-event-handlers.d.ts +6 -0
  275. package/dist/utils/compose-event-handlers.js +8 -0
  276. package/dist/utils/index.d.ts +4 -0
  277. package/dist/utils/index.js +2 -0
  278. package/package.json +282 -0
@@ -0,0 +1,2 @@
1
+ export type { LianoDensity, LianoDensityTokens, LianoPrimitiveTokens, LianoSemanticTokens, LianoThemeMode } from "./token-types.js";
2
+ export { LIANO_DARK_TOKENS, LIANO_DENSITY_TOKENS, LIANO_LIGHT_TOKENS, LIANO_TOKENS } from "./tokens.js";
@@ -0,0 +1 @@
1
+ export { LIANO_DARK_TOKENS, LIANO_DENSITY_TOKENS, LIANO_LIGHT_TOKENS, LIANO_TOKENS } from "./tokens.js";
@@ -0,0 +1,23 @@
1
+ export type LianoThemeMode = "light" | "dark";
2
+ export type LianoDensity = "default" | "compact" | "comfortable";
3
+ export interface LianoPrimitiveTokens {
4
+ color: Record<string, string>;
5
+ space: Record<string, string>;
6
+ radius: Record<string, string>;
7
+ typography: Record<string, string>;
8
+ shadow: Record<string, string>;
9
+ motion: Record<string, string>;
10
+ zIndex: Record<string, number>;
11
+ }
12
+ export interface LianoSemanticTokens {
13
+ color: Record<string, string>;
14
+ component: Record<string, string>;
15
+ }
16
+ export interface LianoDensityTokens {
17
+ controlHeightSm: string;
18
+ controlHeightMd: string;
19
+ controlHeightLg: string;
20
+ controlPaddingX: string;
21
+ controlGap: string;
22
+ fieldGap: string;
23
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,139 @@
1
+ export declare const LIANO_TOKENS: {
2
+ readonly color: {
3
+ readonly white: "#ffffff";
4
+ readonly black: "#0b0d12";
5
+ readonly slate50: "#f8fafc";
6
+ readonly slate100: "#f1f5f9";
7
+ readonly slate200: "#e2e8f0";
8
+ readonly slate300: "#cbd5e1";
9
+ readonly slate500: "#64748b";
10
+ readonly slate700: "#334155";
11
+ readonly slate900: "#0f172a";
12
+ readonly blue600: "#2563eb";
13
+ readonly blue700: "#1d4ed8";
14
+ readonly teal600: "#0d9488";
15
+ readonly amber500: "#f59e0b";
16
+ readonly red600: "#dc2626";
17
+ readonly cyan600: "#0891b2";
18
+ };
19
+ readonly space: {
20
+ readonly 0: "0";
21
+ readonly 1: "0.25rem";
22
+ readonly 2: "0.5rem";
23
+ readonly 3: "0.75rem";
24
+ readonly 4: "1rem";
25
+ readonly 5: "1.25rem";
26
+ readonly 6: "1.5rem";
27
+ readonly 8: "2rem";
28
+ readonly 10: "2.5rem";
29
+ };
30
+ readonly radius: {
31
+ readonly xs: "0.25rem";
32
+ readonly sm: "0.375rem";
33
+ readonly md: "0.5rem";
34
+ readonly lg: "0.75rem";
35
+ readonly full: "999px";
36
+ };
37
+ readonly typography: {
38
+ readonly fontFamilySans: "\"Aptos\", \"SF Pro Text\", \"Segoe UI Variable\", ui-sans-serif, system-ui, sans-serif";
39
+ readonly fontFamilyMono: "\"SF Mono\", \"Cascadia Code\", ui-monospace, monospace";
40
+ readonly fontSizeXs: "0.75rem";
41
+ readonly fontSizeSm: "0.875rem";
42
+ readonly fontSizeMd: "0.9375rem";
43
+ readonly fontSizeLg: "1rem";
44
+ readonly lineHeightTight: "1.2";
45
+ readonly lineHeightNormal: "1.5";
46
+ };
47
+ readonly shadow: {
48
+ readonly xs: "0 1px 1px rgb(15 23 42 / 0.06)";
49
+ readonly sm: "0 1px 2px rgb(15 23 42 / 0.08), 0 8px 24px rgb(15 23 42 / 0.04)";
50
+ readonly md: "0 12px 32px rgb(15 23 42 / 0.10)";
51
+ };
52
+ readonly motion: {
53
+ readonly durationFast: "120ms";
54
+ readonly durationNormal: "180ms";
55
+ readonly easeStandard: "cubic-bezier(0.2, 0, 0, 1)";
56
+ };
57
+ readonly zIndex: {
58
+ readonly base: 0;
59
+ readonly overlay: 40;
60
+ readonly modal: 50;
61
+ readonly toast: 60;
62
+ };
63
+ };
64
+ export declare const LIANO_LIGHT_TOKENS: {
65
+ readonly color: {
66
+ readonly background: "#ffffff";
67
+ readonly foreground: "#111827";
68
+ readonly muted: "#f8fafc";
69
+ readonly mutedForeground: "#64748b";
70
+ readonly surface: "#ffffff";
71
+ readonly surfaceRaised: "#ffffff";
72
+ readonly border: "#d9e0ea";
73
+ readonly borderStrong: "#b8c4d4";
74
+ readonly ring: "#2563eb";
75
+ readonly primary: "#1d4ed8";
76
+ readonly primaryForeground: "#ffffff";
77
+ readonly success: "#0f8a6a";
78
+ readonly warning: "#b86f00";
79
+ readonly destructive: "#c62828";
80
+ readonly info: "#087ea4";
81
+ };
82
+ readonly component: {
83
+ readonly controlBackground: "#ffffff";
84
+ readonly controlHover: "#f8fafc";
85
+ readonly controlActive: "#eef4ff";
86
+ readonly overlay: "rgb(255 255 255 / 0.96)";
87
+ };
88
+ };
89
+ export declare const LIANO_DARK_TOKENS: {
90
+ readonly color: {
91
+ readonly background: "#0d1117";
92
+ readonly foreground: "#f4f7fb";
93
+ readonly muted: "#151b23";
94
+ readonly mutedForeground: "#9aa8ba";
95
+ readonly surface: "#111821";
96
+ readonly surfaceRaised: "#151e2a";
97
+ readonly border: "#293445";
98
+ readonly borderStrong: "#3b4a5f";
99
+ readonly ring: "#69a3ff";
100
+ readonly primary: "#6ea2ff";
101
+ readonly primaryForeground: "#07101f";
102
+ readonly success: "#3dd6aa";
103
+ readonly warning: "#f5bd4f";
104
+ readonly destructive: "#ff6b6b";
105
+ readonly info: "#58d5f7";
106
+ };
107
+ readonly component: {
108
+ readonly controlBackground: "#111821";
109
+ readonly controlHover: "#172233";
110
+ readonly controlActive: "#1b2f50";
111
+ readonly overlay: "rgb(17 24 33 / 0.96)";
112
+ };
113
+ };
114
+ export declare const LIANO_DENSITY_TOKENS: {
115
+ readonly default: {
116
+ readonly controlHeightSm: "2rem";
117
+ readonly controlHeightMd: "2.5rem";
118
+ readonly controlHeightLg: "3rem";
119
+ readonly controlPaddingX: "0.875rem";
120
+ readonly controlGap: "0.5rem";
121
+ readonly fieldGap: "0.375rem";
122
+ };
123
+ readonly compact: {
124
+ readonly controlHeightSm: "1.75rem";
125
+ readonly controlHeightMd: "2.25rem";
126
+ readonly controlHeightLg: "2.625rem";
127
+ readonly controlPaddingX: "0.75rem";
128
+ readonly controlGap: "0.375rem";
129
+ readonly fieldGap: "0.25rem";
130
+ };
131
+ readonly comfortable: {
132
+ readonly controlHeightSm: "2.25rem";
133
+ readonly controlHeightMd: "2.75rem";
134
+ readonly controlHeightLg: "3.25rem";
135
+ readonly controlPaddingX: "1rem";
136
+ readonly controlGap: "0.625rem";
137
+ readonly fieldGap: "0.5rem";
138
+ };
139
+ };
@@ -0,0 +1,139 @@
1
+ export const LIANO_TOKENS = {
2
+ color: {
3
+ white: "#ffffff",
4
+ black: "#0b0d12",
5
+ slate50: "#f8fafc",
6
+ slate100: "#f1f5f9",
7
+ slate200: "#e2e8f0",
8
+ slate300: "#cbd5e1",
9
+ slate500: "#64748b",
10
+ slate700: "#334155",
11
+ slate900: "#0f172a",
12
+ blue600: "#2563eb",
13
+ blue700: "#1d4ed8",
14
+ teal600: "#0d9488",
15
+ amber500: "#f59e0b",
16
+ red600: "#dc2626",
17
+ cyan600: "#0891b2"
18
+ },
19
+ space: {
20
+ 0: "0",
21
+ 1: "0.25rem",
22
+ 2: "0.5rem",
23
+ 3: "0.75rem",
24
+ 4: "1rem",
25
+ 5: "1.25rem",
26
+ 6: "1.5rem",
27
+ 8: "2rem",
28
+ 10: "2.5rem"
29
+ },
30
+ radius: {
31
+ xs: "0.25rem",
32
+ sm: "0.375rem",
33
+ md: "0.5rem",
34
+ lg: "0.75rem",
35
+ full: "999px"
36
+ },
37
+ typography: {
38
+ fontFamilySans: "\"Aptos\", \"SF Pro Text\", \"Segoe UI Variable\", ui-sans-serif, system-ui, sans-serif",
39
+ fontFamilyMono: "\"SF Mono\", \"Cascadia Code\", ui-monospace, monospace",
40
+ fontSizeXs: "0.75rem",
41
+ fontSizeSm: "0.875rem",
42
+ fontSizeMd: "0.9375rem",
43
+ fontSizeLg: "1rem",
44
+ lineHeightTight: "1.2",
45
+ lineHeightNormal: "1.5"
46
+ },
47
+ shadow: {
48
+ xs: "0 1px 1px rgb(15 23 42 / 0.06)",
49
+ sm: "0 1px 2px rgb(15 23 42 / 0.08), 0 8px 24px rgb(15 23 42 / 0.04)",
50
+ md: "0 12px 32px rgb(15 23 42 / 0.10)"
51
+ },
52
+ motion: {
53
+ durationFast: "120ms",
54
+ durationNormal: "180ms",
55
+ easeStandard: "cubic-bezier(0.2, 0, 0, 1)"
56
+ },
57
+ zIndex: {
58
+ base: 0,
59
+ overlay: 40,
60
+ modal: 50,
61
+ toast: 60
62
+ }
63
+ };
64
+ export const LIANO_LIGHT_TOKENS = {
65
+ color: {
66
+ background: "#ffffff",
67
+ foreground: "#111827",
68
+ muted: "#f8fafc",
69
+ mutedForeground: "#64748b",
70
+ surface: "#ffffff",
71
+ surfaceRaised: "#ffffff",
72
+ border: "#d9e0ea",
73
+ borderStrong: "#b8c4d4",
74
+ ring: "#2563eb",
75
+ primary: "#1d4ed8",
76
+ primaryForeground: "#ffffff",
77
+ success: "#0f8a6a",
78
+ warning: "#b86f00",
79
+ destructive: "#c62828",
80
+ info: "#087ea4"
81
+ },
82
+ component: {
83
+ controlBackground: "#ffffff",
84
+ controlHover: "#f8fafc",
85
+ controlActive: "#eef4ff",
86
+ overlay: "rgb(255 255 255 / 0.96)"
87
+ }
88
+ };
89
+ export const LIANO_DARK_TOKENS = {
90
+ color: {
91
+ background: "#0d1117",
92
+ foreground: "#f4f7fb",
93
+ muted: "#151b23",
94
+ mutedForeground: "#9aa8ba",
95
+ surface: "#111821",
96
+ surfaceRaised: "#151e2a",
97
+ border: "#293445",
98
+ borderStrong: "#3b4a5f",
99
+ ring: "#69a3ff",
100
+ primary: "#6ea2ff",
101
+ primaryForeground: "#07101f",
102
+ success: "#3dd6aa",
103
+ warning: "#f5bd4f",
104
+ destructive: "#ff6b6b",
105
+ info: "#58d5f7"
106
+ },
107
+ component: {
108
+ controlBackground: "#111821",
109
+ controlHover: "#172233",
110
+ controlActive: "#1b2f50",
111
+ overlay: "rgb(17 24 33 / 0.96)"
112
+ }
113
+ };
114
+ export const LIANO_DENSITY_TOKENS = {
115
+ default: {
116
+ controlHeightSm: "2rem",
117
+ controlHeightMd: "2.5rem",
118
+ controlHeightLg: "3rem",
119
+ controlPaddingX: "0.875rem",
120
+ controlGap: "0.5rem",
121
+ fieldGap: "0.375rem"
122
+ },
123
+ compact: {
124
+ controlHeightSm: "1.75rem",
125
+ controlHeightMd: "2.25rem",
126
+ controlHeightLg: "2.625rem",
127
+ controlPaddingX: "0.75rem",
128
+ controlGap: "0.375rem",
129
+ fieldGap: "0.25rem"
130
+ },
131
+ comfortable: {
132
+ controlHeightSm: "2.25rem",
133
+ controlHeightMd: "2.75rem",
134
+ controlHeightLg: "3.25rem",
135
+ controlPaddingX: "1rem",
136
+ controlGap: "0.625rem",
137
+ fieldGap: "0.5rem"
138
+ }
139
+ };
@@ -0,0 +1,2 @@
1
+ export type LianoClassValue = string | false | null | undefined;
2
+ export declare function cn(...values: LianoClassValue[]): string;
@@ -0,0 +1,3 @@
1
+ export function cn(...values) {
2
+ return values.filter((value) => Boolean(value)).join(" ");
3
+ }
@@ -0,0 +1,6 @@
1
+ export interface ComposeEventHandlersOptions {
2
+ checkDefaultPrevented?: boolean;
3
+ }
4
+ export declare function composeEventHandlers<EventType extends {
5
+ defaultPrevented: boolean;
6
+ }>(userHandler: ((event: EventType) => void) | undefined, internalHandler: ((event: EventType) => void) | undefined, options?: ComposeEventHandlersOptions): (event: EventType) => void;
@@ -0,0 +1,8 @@
1
+ export function composeEventHandlers(userHandler, internalHandler, options = {}) {
2
+ return (event) => {
3
+ userHandler?.(event);
4
+ if (options.checkDefaultPrevented === false || !event.defaultPrevented) {
5
+ internalHandler?.(event);
6
+ }
7
+ };
8
+ }
@@ -0,0 +1,4 @@
1
+ export { cn } from "./cn.js";
2
+ export type { LianoClassValue } from "./cn.js";
3
+ export { composeEventHandlers } from "./compose-event-handlers.js";
4
+ export type { ComposeEventHandlersOptions } from "./compose-event-handlers.js";
@@ -0,0 +1,2 @@
1
+ export { cn } from "./cn.js";
2
+ export { composeEventHandlers } from "./compose-event-handlers.js";
package/package.json ADDED
@@ -0,0 +1,282 @@
1
+ {
2
+ "name": "@zvk/ui",
3
+ "version": "0.1.0",
4
+ "description": "A polished, zero-runtime-dependency React component library for Liano applications.",
5
+ "private": false,
6
+ "type": "module",
7
+ "license": "SEE LICENSE IN LICENSE.md",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "sideEffects": [
12
+ "**/*.css"
13
+ ],
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./styles.css": "./dist/styles.css",
24
+ "./tokens": {
25
+ "types": "./dist/tokens/index.d.ts",
26
+ "import": "./dist/tokens/index.js"
27
+ },
28
+ "./button": {
29
+ "types": "./dist/components/button/index.d.ts",
30
+ "import": "./dist/components/button/index.js"
31
+ },
32
+ "./icon-button": {
33
+ "types": "./dist/components/icon-button/index.d.ts",
34
+ "import": "./dist/components/icon-button/index.js"
35
+ },
36
+ "./badge": {
37
+ "types": "./dist/components/badge/index.d.ts",
38
+ "import": "./dist/components/badge/index.js"
39
+ },
40
+ "./card": {
41
+ "types": "./dist/components/card/index.d.ts",
42
+ "import": "./dist/components/card/index.js"
43
+ },
44
+ "./separator": {
45
+ "types": "./dist/components/separator/index.d.ts",
46
+ "import": "./dist/components/separator/index.js"
47
+ },
48
+ "./spinner": {
49
+ "types": "./dist/components/spinner/index.d.ts",
50
+ "import": "./dist/components/spinner/index.js"
51
+ },
52
+ "./skeleton": {
53
+ "types": "./dist/components/skeleton/index.d.ts",
54
+ "import": "./dist/components/skeleton/index.js"
55
+ },
56
+ "./label": {
57
+ "types": "./dist/components/label/index.d.ts",
58
+ "import": "./dist/components/label/index.js"
59
+ },
60
+ "./progress": {
61
+ "types": "./dist/components/progress/index.d.ts",
62
+ "import": "./dist/components/progress/index.js"
63
+ },
64
+ "./alert": {
65
+ "types": "./dist/components/alert/index.d.ts",
66
+ "import": "./dist/components/alert/index.js"
67
+ },
68
+ "./avatar": {
69
+ "types": "./dist/components/avatar/index.d.ts",
70
+ "import": "./dist/components/avatar/index.js"
71
+ },
72
+ "./copy-button": {
73
+ "types": "./dist/components/copy-button/index.d.ts",
74
+ "import": "./dist/components/copy-button/index.js"
75
+ },
76
+ "./file-upload-input": {
77
+ "types": "./dist/components/file-upload-input/index.d.ts",
78
+ "import": "./dist/components/file-upload-input/index.js"
79
+ },
80
+ "./error-boundary": {
81
+ "types": "./dist/components/error-boundary/index.d.ts",
82
+ "import": "./dist/components/error-boundary/index.js"
83
+ },
84
+ "./field": {
85
+ "types": "./dist/components/field/index.d.ts",
86
+ "import": "./dist/components/field/index.js"
87
+ },
88
+ "./form": {
89
+ "types": "./dist/components/form/index.d.ts",
90
+ "import": "./dist/components/form/index.js"
91
+ },
92
+ "./input": {
93
+ "types": "./dist/components/input/index.d.ts",
94
+ "import": "./dist/components/input/index.js"
95
+ },
96
+ "./textarea": {
97
+ "types": "./dist/components/textarea/index.d.ts",
98
+ "import": "./dist/components/textarea/index.js"
99
+ },
100
+ "./checkbox": {
101
+ "types": "./dist/components/checkbox/index.d.ts",
102
+ "import": "./dist/components/checkbox/index.js"
103
+ },
104
+ "./switch": {
105
+ "types": "./dist/components/switch/index.d.ts",
106
+ "import": "./dist/components/switch/index.js"
107
+ },
108
+ "./radio-group": {
109
+ "types": "./dist/components/radio-group/index.d.ts",
110
+ "import": "./dist/components/radio-group/index.js"
111
+ },
112
+ "./slider": {
113
+ "types": "./dist/components/slider/index.d.ts",
114
+ "import": "./dist/components/slider/index.js"
115
+ },
116
+ "./toggle": {
117
+ "types": "./dist/components/toggle/index.d.ts",
118
+ "import": "./dist/components/toggle/index.js"
119
+ },
120
+ "./toggle-group": {
121
+ "types": "./dist/components/toggle-group/index.d.ts",
122
+ "import": "./dist/components/toggle-group/index.js"
123
+ },
124
+ "./select": {
125
+ "types": "./dist/components/select/index.d.ts",
126
+ "import": "./dist/components/select/index.js"
127
+ },
128
+ "./collapsible": {
129
+ "types": "./dist/components/collapsible/index.d.ts",
130
+ "import": "./dist/components/collapsible/index.js"
131
+ },
132
+ "./accordion": {
133
+ "types": "./dist/components/accordion/index.d.ts",
134
+ "import": "./dist/components/accordion/index.js"
135
+ },
136
+ "./tabs": {
137
+ "types": "./dist/components/tabs/index.d.ts",
138
+ "import": "./dist/components/tabs/index.js"
139
+ },
140
+ "./breadcrumbs": {
141
+ "types": "./dist/components/breadcrumbs/index.d.ts",
142
+ "import": "./dist/components/breadcrumbs/index.js"
143
+ },
144
+ "./pagination": {
145
+ "types": "./dist/components/pagination/index.d.ts",
146
+ "import": "./dist/components/pagination/index.js"
147
+ },
148
+ "./table": {
149
+ "types": "./dist/components/table/index.d.ts",
150
+ "import": "./dist/components/table/index.js"
151
+ },
152
+ "./empty-state": {
153
+ "types": "./dist/components/empty-state/index.d.ts",
154
+ "import": "./dist/components/empty-state/index.js"
155
+ },
156
+ "./stat": {
157
+ "types": "./dist/components/stat/index.d.ts",
158
+ "import": "./dist/components/stat/index.js"
159
+ },
160
+ "./code-block": {
161
+ "types": "./dist/components/code-block/index.d.ts",
162
+ "import": "./dist/components/code-block/index.js"
163
+ },
164
+ "./dialog": {
165
+ "types": "./dist/components/dialog/index.d.ts",
166
+ "import": "./dist/components/dialog/index.js"
167
+ },
168
+ "./popover": {
169
+ "types": "./dist/components/popover/index.d.ts",
170
+ "import": "./dist/components/popover/index.js"
171
+ },
172
+ "./tooltip": {
173
+ "types": "./dist/components/tooltip/index.d.ts",
174
+ "import": "./dist/components/tooltip/index.js"
175
+ },
176
+ "./dropdown-menu": {
177
+ "types": "./dist/components/dropdown-menu/index.d.ts",
178
+ "import": "./dist/components/dropdown-menu/index.js"
179
+ },
180
+ "./alert-dialog": {
181
+ "types": "./dist/components/alert-dialog/index.d.ts",
182
+ "import": "./dist/components/alert-dialog/index.js"
183
+ },
184
+ "./sheet": {
185
+ "types": "./dist/components/sheet/index.d.ts",
186
+ "import": "./dist/components/sheet/index.js"
187
+ },
188
+ "./scroll-area": {
189
+ "types": "./dist/components/scroll-area/index.d.ts",
190
+ "import": "./dist/components/scroll-area/index.js"
191
+ },
192
+ "./command": {
193
+ "types": "./dist/components/command/index.d.ts",
194
+ "import": "./dist/components/command/index.js"
195
+ },
196
+ "./combobox": {
197
+ "types": "./dist/components/combobox/index.d.ts",
198
+ "import": "./dist/components/combobox/index.js"
199
+ },
200
+ "./context-menu": {
201
+ "types": "./dist/components/context-menu/index.d.ts",
202
+ "import": "./dist/components/context-menu/index.js"
203
+ },
204
+ "./menubar": {
205
+ "types": "./dist/components/menubar/index.d.ts",
206
+ "import": "./dist/components/menubar/index.js"
207
+ },
208
+ "./responsive-container": {
209
+ "types": "./dist/components/responsive-container/index.d.ts",
210
+ "import": "./dist/components/responsive-container/index.js"
211
+ },
212
+ "./sidebar-shell": {
213
+ "types": "./dist/components/sidebar-shell/index.d.ts",
214
+ "import": "./dist/components/sidebar-shell/index.js"
215
+ },
216
+ "./sectioned-sidebar-nav": {
217
+ "types": "./dist/components/sectioned-sidebar-nav/index.d.ts",
218
+ "import": "./dist/components/sectioned-sidebar-nav/index.js"
219
+ },
220
+ "./tabs-with-sidebar": {
221
+ "types": "./dist/components/tabs-with-sidebar/index.d.ts",
222
+ "import": "./dist/components/tabs-with-sidebar/index.js"
223
+ },
224
+ "./toast": {
225
+ "types": "./dist/components/toast/index.d.ts",
226
+ "import": "./dist/components/toast/index.js"
227
+ },
228
+ "./conversation": {
229
+ "types": "./dist/components/conversation/index.d.ts",
230
+ "import": "./dist/components/conversation/index.js"
231
+ },
232
+ "./hooks": {
233
+ "types": "./dist/hooks/index.d.ts",
234
+ "import": "./dist/hooks/index.js"
235
+ },
236
+ "./package.json": "./package.json"
237
+ },
238
+ "scripts": {
239
+ "clean": "node scripts/clean.mjs",
240
+ "build:types": "tsc -p tsconfig.build.json",
241
+ "build:css": "node scripts/build-css.mjs",
242
+ "build": "npm run clean && npm run build:types && npm run build:css",
243
+ "preview": "vite --config preview/vite.config.ts",
244
+ "preview:host": "vite --config preview/vite.config.ts --host 127.0.0.1",
245
+ "preview:build": "tsc -p tsconfig.preview.json --noEmit && vite build --config preview/vite.config.ts",
246
+ "typecheck": "tsc -p tsconfig.json --noEmit",
247
+ "test": "vitest run",
248
+ "test:unit": "vitest run src",
249
+ "test:ssr": "vitest run tests/ssr --environment node",
250
+ "test:exports": "vitest run tests/exports --environment node",
251
+ "test:accessibility": "vitest run tests/accessibility",
252
+ "test:types": "tsd",
253
+ "docs:lint": "node scripts/lint-docs.mjs",
254
+ "verify:style-contract": "node scripts/verify-style-contract.mjs",
255
+ "validate:exports": "node scripts/validate-exports.mjs",
256
+ "tarball:inspect": "node scripts/check-tarball.mjs",
257
+ "pack:dry": "npm pack --dry-run",
258
+ "preflight": "npm run typecheck && npm run build && npm run test:unit && npm run test:ssr && npm run test:types && npm run test:exports && npm run test:accessibility && npm run docs:lint && npm run verify:style-contract && npm run validate:exports && npm run tarball:inspect"
259
+ },
260
+ "peerDependencies": {
261
+ "react": "^19.0.0",
262
+ "react-dom": "^19.0.0"
263
+ },
264
+ "dependencies": {},
265
+ "tsd": {
266
+ "directory": "tests/types"
267
+ },
268
+ "devDependencies": {
269
+ "@testing-library/jest-dom": "^6.9.1",
270
+ "@testing-library/react": "^16.3.2",
271
+ "@testing-library/user-event": "^14.6.1",
272
+ "@types/node": "^25.9.1",
273
+ "@types/react": "^19.2.16",
274
+ "@types/react-dom": "^19.2.3",
275
+ "@vitejs/plugin-react": "^6.0.2",
276
+ "jsdom": "^28.1.0",
277
+ "tsd": "^0.33.0",
278
+ "typescript": "^6.0.3",
279
+ "vite": "^8.0.16",
280
+ "vitest": "^4.1.8"
281
+ }
282
+ }