@gouno/ui 0.3.2

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 (231) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/LICENSE +21 -0
  3. package/README.md +144 -0
  4. package/dist/base.css +239 -0
  5. package/dist/bootstrap.js +22 -0
  6. package/dist/components/primitives/alert-dialog.d.ts +18 -0
  7. package/dist/components/primitives/alert-dialog.js +43 -0
  8. package/dist/components/primitives/alert.d.ts +9 -0
  9. package/dist/components/primitives/alert.js +25 -0
  10. package/dist/components/primitives/avatar.d.ts +14 -0
  11. package/dist/components/primitives/avatar.js +42 -0
  12. package/dist/components/primitives/badge.d.ts +9 -0
  13. package/dist/components/primitives/badge.js +25 -0
  14. package/dist/components/primitives/button.d.ts +10 -0
  15. package/dist/components/primitives/button.js +36 -0
  16. package/dist/components/primitives/checkbox.d.ts +4 -0
  17. package/dist/components/primitives/checkbox.js +10 -0
  18. package/dist/components/primitives/dialog.d.ts +20 -0
  19. package/dist/components/primitives/dialog.js +37 -0
  20. package/dist/components/primitives/dropdown-menu.d.ts +25 -0
  21. package/dist/components/primitives/dropdown-menu.js +51 -0
  22. package/dist/components/primitives/empty.d.ts +11 -0
  23. package/dist/components/primitives/empty.js +33 -0
  24. package/dist/components/primitives/field.d.ts +24 -0
  25. package/dist/components/primitives/field.js +75 -0
  26. package/dist/components/primitives/input.d.ts +3 -0
  27. package/dist/components/primitives/input.js +7 -0
  28. package/dist/components/primitives/label.d.ts +4 -0
  29. package/dist/components/primitives/label.js +8 -0
  30. package/dist/components/primitives/popover.d.ts +16 -0
  31. package/dist/components/primitives/popover.js +31 -0
  32. package/dist/components/primitives/radio-group.d.ts +5 -0
  33. package/dist/components/primitives/radio-group.js +13 -0
  34. package/dist/components/primitives/select.d.ts +15 -0
  35. package/dist/components/primitives/select.js +38 -0
  36. package/dist/components/primitives/separator.d.ts +4 -0
  37. package/dist/components/primitives/separator.js +8 -0
  38. package/dist/components/primitives/sheet.d.ts +17 -0
  39. package/dist/components/primitives/sheet.js +41 -0
  40. package/dist/components/primitives/skeleton.d.ts +2 -0
  41. package/dist/components/primitives/skeleton.js +6 -0
  42. package/dist/components/primitives/switch.d.ts +6 -0
  43. package/dist/components/primitives/switch.js +8 -0
  44. package/dist/components/primitives/table.d.ts +28 -0
  45. package/dist/components/primitives/table.js +44 -0
  46. package/dist/components/primitives/tabs.d.ts +11 -0
  47. package/dist/components/primitives/tabs.js +30 -0
  48. package/dist/components/primitives/textarea.d.ts +3 -0
  49. package/dist/components/primitives/textarea.js +7 -0
  50. package/dist/components/primitives/tooltip.d.ts +13 -0
  51. package/dist/components/primitives/tooltip.js +24 -0
  52. package/dist/core/affix.d.ts +14 -0
  53. package/dist/core/affix.js +29 -0
  54. package/dist/core/alert.d.ts +54 -0
  55. package/dist/core/alert.js +56 -0
  56. package/dist/core/anchor.d.ts +16 -0
  57. package/dist/core/anchor.js +31 -0
  58. package/dist/core/app.d.ts +5 -0
  59. package/dist/core/app.js +5 -0
  60. package/dist/core/aspect-ratio.d.ts +6 -0
  61. package/dist/core/aspect-ratio.js +6 -0
  62. package/dist/core/autocomplete.d.ts +24 -0
  63. package/dist/core/autocomplete.js +139 -0
  64. package/dist/core/avatar.d.ts +26 -0
  65. package/dist/core/avatar.js +20 -0
  66. package/dist/core/badge.d.ts +16 -0
  67. package/dist/core/badge.js +22 -0
  68. package/dist/core/breadcrumb.d.ts +55 -0
  69. package/dist/core/breadcrumb.js +69 -0
  70. package/dist/core/button.d.ts +49 -0
  71. package/dist/core/button.js +66 -0
  72. package/dist/core/calendar.d.ts +48 -0
  73. package/dist/core/calendar.js +179 -0
  74. package/dist/core/card.d.ts +30 -0
  75. package/dist/core/card.js +12 -0
  76. package/dist/core/carousel.d.ts +49 -0
  77. package/dist/core/carousel.js +166 -0
  78. package/dist/core/cascader.d.ts +19 -0
  79. package/dist/core/cascader.js +45 -0
  80. package/dist/core/code-block.d.ts +16 -0
  81. package/dist/core/code-block.js +47 -0
  82. package/dist/core/collapse.d.ts +49 -0
  83. package/dist/core/collapse.js +96 -0
  84. package/dist/core/color-picker.d.ts +9 -0
  85. package/dist/core/color-picker.js +8 -0
  86. package/dist/core/config-provider.d.ts +10 -0
  87. package/dist/core/config-provider.js +14 -0
  88. package/dist/core/control-types.d.ts +2 -0
  89. package/dist/core/control-types.js +7 -0
  90. package/dist/core/date-picker.d.ts +13 -0
  91. package/dist/core/date-picker.js +14 -0
  92. package/dist/core/date-range-picker.d.ts +26 -0
  93. package/dist/core/date-range-picker.js +10 -0
  94. package/dist/core/descriptions.d.ts +41 -0
  95. package/dist/core/descriptions.js +133 -0
  96. package/dist/core/drawer.d.ts +9 -0
  97. package/dist/core/drawer.js +58 -0
  98. package/dist/core/empty.d.ts +8 -0
  99. package/dist/core/empty.js +5 -0
  100. package/dist/core/feedback.d.ts +5 -0
  101. package/dist/core/feedback.js +5 -0
  102. package/dist/core/field.d.ts +15 -0
  103. package/dist/core/field.js +19 -0
  104. package/dist/core/float-button.d.ts +13 -0
  105. package/dist/core/float-button.js +22 -0
  106. package/dist/core/form.d.ts +19 -0
  107. package/dist/core/form.js +56 -0
  108. package/dist/core/icon-button.d.ts +7 -0
  109. package/dist/core/icon-button.js +4 -0
  110. package/dist/core/icon.d.ts +17 -0
  111. package/dist/core/icon.js +35 -0
  112. package/dist/core/image.d.ts +76 -0
  113. package/dist/core/image.js +189 -0
  114. package/dist/core/index.d.ts +79 -0
  115. package/dist/core/index.js +77 -0
  116. package/dist/core/input-number.d.ts +24 -0
  117. package/dist/core/input-number.js +70 -0
  118. package/dist/core/input-otp.d.ts +14 -0
  119. package/dist/core/input-otp.js +76 -0
  120. package/dist/core/input.d.ts +14 -0
  121. package/dist/core/input.js +51 -0
  122. package/dist/core/kbd.d.ts +8 -0
  123. package/dist/core/kbd.js +11 -0
  124. package/dist/core/layout-primitives.d.ts +11 -0
  125. package/dist/core/layout-primitives.js +8 -0
  126. package/dist/core/layout.d.ts +71 -0
  127. package/dist/core/layout.js +119 -0
  128. package/dist/core/list.d.ts +37 -0
  129. package/dist/core/list.js +35 -0
  130. package/dist/core/locale.d.ts +48 -0
  131. package/dist/core/locale.js +32 -0
  132. package/dist/core/mentions.d.ts +10 -0
  133. package/dist/core/mentions.js +112 -0
  134. package/dist/core/menu.d.ts +79 -0
  135. package/dist/core/menu.js +265 -0
  136. package/dist/core/message.d.ts +16 -0
  137. package/dist/core/message.js +36 -0
  138. package/dist/core/modal.d.ts +40 -0
  139. package/dist/core/modal.js +67 -0
  140. package/dist/core/notification.d.ts +15 -0
  141. package/dist/core/notification.js +39 -0
  142. package/dist/core/page-layout.d.ts +6 -0
  143. package/dist/core/page-layout.js +7 -0
  144. package/dist/core/pagination.d.ts +28 -0
  145. package/dist/core/pagination.js +69 -0
  146. package/dist/core/popconfirm.d.ts +13 -0
  147. package/dist/core/popconfirm.js +42 -0
  148. package/dist/core/progress.d.ts +6 -0
  149. package/dist/core/progress.js +8 -0
  150. package/dist/core/public-props.d.ts +82 -0
  151. package/dist/core/public-props.js +1 -0
  152. package/dist/core/qrcode.d.ts +14 -0
  153. package/dist/core/qrcode.js +17 -0
  154. package/dist/core/rate.d.ts +11 -0
  155. package/dist/core/rate.js +48 -0
  156. package/dist/core/result.d.ts +12 -0
  157. package/dist/core/result.js +19 -0
  158. package/dist/core/segmented.d.ts +29 -0
  159. package/dist/core/segmented.js +38 -0
  160. package/dist/core/select.d.ts +27 -0
  161. package/dist/core/select.js +143 -0
  162. package/dist/core/selection-controls.d.ts +12 -0
  163. package/dist/core/selection-controls.js +23 -0
  164. package/dist/core/separator.d.ts +24 -0
  165. package/dist/core/separator.js +17 -0
  166. package/dist/core/slider.d.ts +2 -0
  167. package/dist/core/slider.js +6 -0
  168. package/dist/core/spin.d.ts +7 -0
  169. package/dist/core/spin.js +7 -0
  170. package/dist/core/spinner.d.ts +3 -0
  171. package/dist/core/spinner.js +6 -0
  172. package/dist/core/splitter.d.ts +44 -0
  173. package/dist/core/splitter.js +208 -0
  174. package/dist/core/statistic.d.ts +12 -0
  175. package/dist/core/statistic.js +6 -0
  176. package/dist/core/steps.d.ts +54 -0
  177. package/dist/core/steps.js +106 -0
  178. package/dist/core/tabs.d.ts +40 -0
  179. package/dist/core/tabs.js +80 -0
  180. package/dist/core/tag.d.ts +19 -0
  181. package/dist/core/tag.js +29 -0
  182. package/dist/core/textarea.d.ts +8 -0
  183. package/dist/core/textarea.js +14 -0
  184. package/dist/core/time-picker.d.ts +9 -0
  185. package/dist/core/time-picker.js +8 -0
  186. package/dist/core/timeline.d.ts +37 -0
  187. package/dist/core/timeline.js +48 -0
  188. package/dist/core/tour.d.ts +18 -0
  189. package/dist/core/tour.js +51 -0
  190. package/dist/core/transfer.d.ts +16 -0
  191. package/dist/core/transfer.js +46 -0
  192. package/dist/core/tree-select.d.ts +19 -0
  193. package/dist/core/tree-select.js +19 -0
  194. package/dist/core/tree.d.ts +89 -0
  195. package/dist/core/tree.js +386 -0
  196. package/dist/core/typography.d.ts +20 -0
  197. package/dist/core/typography.js +12 -0
  198. package/dist/core/upload.d.ts +20 -0
  199. package/dist/core/upload.js +72 -0
  200. package/dist/core/watermark.d.ts +10 -0
  201. package/dist/core/watermark.js +21 -0
  202. package/dist/fonts/inter-LICENSE +93 -0
  203. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  204. package/dist/fonts/jetbrains-mono-LICENSE +93 -0
  205. package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  206. package/dist/gouno/app-shell.d.ts +22 -0
  207. package/dist/gouno/app-shell.js +27 -0
  208. package/dist/gouno/index.d.ts +4 -0
  209. package/dist/gouno/index.js +4 -0
  210. package/dist/gouno/page-container.d.ts +4 -0
  211. package/dist/gouno/page-container.js +6 -0
  212. package/dist/gouno/page-header.d.ts +8 -0
  213. package/dist/gouno/page-header.js +6 -0
  214. package/dist/hooks/use-overlay-body.d.ts +6 -0
  215. package/dist/hooks/use-overlay-body.js +18 -0
  216. package/dist/index.d.ts +5 -0
  217. package/dist/index.js +5 -0
  218. package/dist/lib/utils.d.ts +2 -0
  219. package/dist/lib/utils.js +5 -0
  220. package/dist/patterns/bulk-action-bar.d.ts +8 -0
  221. package/dist/patterns/bulk-action-bar.js +7 -0
  222. package/dist/patterns/index.d.ts +5 -0
  223. package/dist/patterns/index.js +5 -0
  224. package/dist/theme/index.d.ts +2 -0
  225. package/dist/theme/index.js +2 -0
  226. package/dist/theme/provider.d.ts +22 -0
  227. package/dist/theme/provider.js +76 -0
  228. package/dist/theme/theme-toggle.d.ts +6 -0
  229. package/dist/theme/theme-toggle.js +10 -0
  230. package/dist/tokens.css +164 -0
  231. package/package.json +111 -0
@@ -0,0 +1,164 @@
1
+ @theme inline {
2
+ --font-sans:
3
+ "Inter Variable", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
4
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
5
+ --color-background: var(--background);
6
+ --color-canvas: var(--canvas);
7
+ --color-foreground: var(--foreground);
8
+ --color-card: var(--card);
9
+ --color-card-foreground: var(--foreground);
10
+ --color-raised: var(--raised);
11
+ --color-popover: var(--popover);
12
+ --color-popover-foreground: var(--foreground);
13
+ --color-primary: var(--primary);
14
+ --color-primary-foreground: var(--primary-foreground);
15
+ --color-secondary: var(--secondary);
16
+ --color-secondary-foreground: var(--foreground);
17
+ --color-muted: var(--muted);
18
+ --color-muted-foreground: var(--muted-foreground);
19
+ --color-accent: var(--accent);
20
+ --color-accent-foreground: var(--accent-foreground);
21
+ --color-border: var(--border);
22
+ --color-input: var(--input);
23
+ --color-ring: var(--ring);
24
+ --color-destructive: var(--destructive);
25
+ --color-destructive-foreground: var(--destructive-foreground);
26
+ --color-success: var(--success);
27
+ --color-success-subtle: var(--success-subtle);
28
+ --color-warning: var(--warning);
29
+ --color-warning-subtle: var(--warning-subtle);
30
+ --color-info: var(--info);
31
+ --color-info-subtle: var(--info-subtle);
32
+ --color-danger-subtle: var(--danger-subtle);
33
+ --color-overlay: var(--overlay);
34
+ --color-sidebar: var(--sidebar);
35
+ --color-sidebar-foreground: var(--foreground);
36
+ --color-sidebar-accent: var(--accent);
37
+ --color-sidebar-accent-foreground: var(--accent-foreground);
38
+ --color-sidebar-border: var(--border);
39
+ --color-sidebar-ring: var(--ring);
40
+ --color-sidebar-primary: var(--primary);
41
+ --color-sidebar-primary-foreground: var(--primary-foreground);
42
+ --color-editor: var(--editor);
43
+ --color-editor-foreground: var(--foreground);
44
+ --color-chart-1: var(--chart-1);
45
+ --color-chart-2: var(--chart-2);
46
+ --color-chart-3: var(--chart-3);
47
+ --color-chart-4: var(--chart-4);
48
+ --color-chart-5: var(--chart-5);
49
+ --radius-sm: 4px;
50
+ --radius-md: 6px;
51
+ --radius-lg: 10px;
52
+ --radius-xl: 10px;
53
+ --shadow-control: var(--elevation-shadow-control);
54
+ --shadow-surface: var(--elevation-shadow-surface);
55
+ --shadow-raised: var(--elevation-shadow-raised);
56
+ --shadow-overlay: var(--elevation-shadow-overlay);
57
+ --shadow-modal: var(--elevation-shadow-modal);
58
+ /* Raw size aliases are compatibility-only and intentionally flat. Visible depth must use a semantic role. */
59
+ --shadow-xs: 0 0 #0000;
60
+ --shadow-sm: 0 0 #0000;
61
+ --shadow-md: 0 0 #0000;
62
+ --shadow-lg: 0 0 #0000;
63
+ --shadow-xl: 0 0 #0000;
64
+ --shadow-2xl: 0 0 #0000;
65
+ }
66
+ @layer base {
67
+ :root,
68
+ [data-theme="light"] {
69
+ --background: #ffffff;
70
+ --canvas: #f6f7f9;
71
+ --foreground: #18212e;
72
+ --card: #ffffff;
73
+ --raised: #ffffff;
74
+ --popover: #ffffff;
75
+ --secondary: #f1f3f6;
76
+ --muted: #f3f5f7;
77
+ --muted-foreground: #596576;
78
+ --border: #c5ccd5;
79
+ --input: #ffffff;
80
+ --sidebar: #f7f8fa;
81
+ --editor: #f7f8fa;
82
+ --success: #17633f;
83
+ --success-subtle: #eaf7ef;
84
+ --warning: #825400;
85
+ --warning-subtle: #fff5db;
86
+ --destructive: #b52938;
87
+ --destructive-foreground: #ffffff;
88
+ --danger-subtle: #fff0f1;
89
+ --info: #255bab;
90
+ --info-subtle: #edf4ff;
91
+ --overlay: #10182780;
92
+ --elevation-shadow-control: 0 1px 2px #10182712, 0 1px 1px #1018270a;
93
+ --elevation-shadow-surface: 0 1px 2px #10182712, 0 2px 8px #1018270a;
94
+ --elevation-shadow-raised: 0 4px 12px #10182717, 0 1px 3px #10182712;
95
+ --elevation-shadow-overlay: 0 8px 24px #1018271f, 0 2px 8px #10182714;
96
+ --elevation-shadow-modal: 0 20px 48px #10182729, 0 6px 16px #10182714;
97
+ --code-keyword: #7944a0;
98
+ --code-string: #17633f;
99
+ --code-number: #8a481e;
100
+ --code-comment: #657080;
101
+ --brand-hue: 257;
102
+ --primary: oklch(0.48 0.15 var(--brand-hue));
103
+ --primary-foreground: #ffffff;
104
+ --accent: oklch(0.96 0.018 var(--brand-hue));
105
+ --accent-foreground: oklch(0.4 0.12 var(--brand-hue));
106
+ --ring: var(--primary);
107
+ --radius: 6px;
108
+ --radius-control: 6px;
109
+ --content-width: 1200px;
110
+ --reading-width: 720px;
111
+ --chart-1: var(--primary);
112
+ --chart-2: var(--success);
113
+ --chart-3: var(--warning);
114
+ --chart-4: var(--info);
115
+ --chart-5: var(--muted-foreground);
116
+ }
117
+ [data-theme="dark"] {
118
+ --background: #11151b;
119
+ --canvas: #0f1319;
120
+ --foreground: #edf1f7;
121
+ --card: #171d25;
122
+ --raised: #1a222c;
123
+ --popover: #1c242e;
124
+ --secondary: #242d39;
125
+ --muted: #202832;
126
+ --muted-foreground: #a8b3c3;
127
+ --border: #485465;
128
+ --input: #171d25;
129
+ --sidebar: #141a22;
130
+ --editor: #141a22;
131
+ --success: #82dbad;
132
+ --success-subtle: #183329;
133
+ --warning: #f0ca75;
134
+ --warning-subtle: #362b18;
135
+ --destructive: #ffa1ab;
136
+ --destructive-foreground: #35151a;
137
+ --danger-subtle: #361f27;
138
+ --info: #a0c5ff;
139
+ --info-subtle: #1c2c44;
140
+ --overlay: #05080dba;
141
+ --elevation-shadow-control: 0 1px 2px #0000003d;
142
+ --elevation-shadow-surface: 0 2px 8px #0000002e, 0 1px 2px #00000024;
143
+ --elevation-shadow-raised: 0 6px 18px #0000004d, 0 2px 6px #00000038;
144
+ --elevation-shadow-overlay: 0 12px 32px #00000052, 0 3px 10px #0000003d;
145
+ --elevation-shadow-modal: 0 24px 56px #00000066, 0 8px 20px #0000004d;
146
+ --code-keyword: #d3b1f2;
147
+ --code-string: #82dbad;
148
+ --code-number: #f0ca75;
149
+ --code-comment: #9aa7b9;
150
+ --primary: oklch(0.76 0.11 var(--brand-hue));
151
+ --primary-foreground: #11151b;
152
+ --accent: oklch(0.27 0.03 var(--brand-hue));
153
+ --accent-foreground: oklch(0.83 0.07 var(--brand-hue));
154
+ }
155
+ [data-brand="blog"] {
156
+ --brand-hue: 257;
157
+ }
158
+ [data-brand="blog-admin"] {
159
+ --brand-hue: 195;
160
+ }
161
+ [data-brand="gosso-admin"] {
162
+ --brand-hue: 295;
163
+ }
164
+ }
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "@gouno/ui",
3
+ "version": "0.3.2",
4
+ "description": "Gouno product family UI, themes and administration template",
5
+ "license": "MIT",
6
+ "homepage": "https://rushairer.github.io/gouno-ui/",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/rushairer/gouno-ui.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/rushairer/gouno-ui/issues"
13
+ },
14
+ "keywords": [
15
+ "react",
16
+ "typescript",
17
+ "design-system",
18
+ "component-library",
19
+ "tailwindcss",
20
+ "radix-ui",
21
+ "admin"
22
+ ],
23
+ "type": "module",
24
+ "types": "./dist/index.d.ts",
25
+ "files": [
26
+ "dist",
27
+ "README.md",
28
+ "CHANGELOG.md",
29
+ "LICENSE"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/index.d.ts",
34
+ "import": "./dist/index.js"
35
+ },
36
+ "./core": {
37
+ "types": "./dist/core/index.d.ts",
38
+ "import": "./dist/core/index.js"
39
+ },
40
+ "./patterns": {
41
+ "types": "./dist/patterns/index.d.ts",
42
+ "import": "./dist/patterns/index.js"
43
+ },
44
+ "./gouno": {
45
+ "types": "./dist/gouno/index.d.ts",
46
+ "import": "./dist/gouno/index.js"
47
+ },
48
+ "./theme": {
49
+ "types": "./dist/theme/index.d.ts",
50
+ "import": "./dist/theme/index.js"
51
+ },
52
+ "./tokens.css": "./dist/tokens.css",
53
+ "./base.css": "./dist/base.css",
54
+ "./bootstrap.js": "./dist/bootstrap.js",
55
+ "./fonts/*": "./dist/fonts/*"
56
+ },
57
+ "publishConfig": {
58
+ "access": "public",
59
+ "registry": "https://registry.npmjs.org/"
60
+ },
61
+ "sideEffects": [
62
+ "**/*.css"
63
+ ],
64
+ "scripts": {
65
+ "build": "node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && node scripts/assets.mjs",
66
+ "typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p showcase/tsconfig.json",
67
+ "dev": "vite --host 127.0.0.1",
68
+ "showcase:build": "vite build --config showcase/vite.config.ts",
69
+ "showcase:dev": "vite --config showcase/vite.config.ts",
70
+ "pack": "npm pack",
71
+ "test": "vitest run --environment jsdom",
72
+ "verify": "npm run typecheck && npm test && npm run build && npm run showcase:build",
73
+ "package:check": "node scripts/package-check.mjs",
74
+ "release:check": "npm run verify && npm run package:check",
75
+ "prepublishOnly": "npm run release:check"
76
+ },
77
+ "peerDependencies": {
78
+ "react": "^19.2.0",
79
+ "react-dom": "^19.2.0"
80
+ },
81
+ "dependencies": {
82
+ "@fontsource-variable/inter": "^5.3.0",
83
+ "@fontsource/jetbrains-mono": "^5.3.0",
84
+ "class-variance-authority": "^0.7.1",
85
+ "clsx": "^2.1.1",
86
+ "lucide-react": "^1.21.0",
87
+ "qrcode": "^1.5.4",
88
+ "radix-ui": "^1.6.7",
89
+ "sonner": "^2.0.8",
90
+ "tailwind-merge": "^3.6.0"
91
+ },
92
+ "devDependencies": {
93
+ "@tailwindcss/vite": "^4.3.3",
94
+ "@testing-library/jest-dom": "^6.9.1",
95
+ "@testing-library/react": "^16.3.2",
96
+ "@testing-library/user-event": "^14.6.1",
97
+ "@types/node": "^24.13.2",
98
+ "@types/qrcode": "^1.5.6",
99
+ "@types/react": "^19.2.17",
100
+ "@types/react-dom": "^19.2.3",
101
+ "@vitejs/plugin-react": "^6.0.2",
102
+ "jsdom": "^29.1.1",
103
+ "prism-react-renderer": "^2.4.1",
104
+ "react": "^19.2.7",
105
+ "react-dom": "^19.2.7",
106
+ "tailwindcss": "^4.3.3",
107
+ "typescript": "~6.0.2",
108
+ "vite": "^8.1.0",
109
+ "vitest": "^4.1.9"
110
+ }
111
+ }