@atme-lab/ui-kit 0.1.19 → 0.1.22

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 (306) hide show
  1. package/dist/components/content/ArticlePreview/components/ArticlePreviewContent/ArticlePreviewContent.d.ts +2 -1
  2. package/dist/components/content/DecorativeFrame/utils/patternGenerator.d.ts +2 -0
  3. package/dist/index.cjs10.js +1 -1
  4. package/dist/index.cjs11.js +1 -1
  5. package/dist/index.cjs13.js +1 -1
  6. package/dist/index.cjs14.js +1 -1
  7. package/dist/index.cjs15.js +1 -1
  8. package/dist/index.cjs16.js +1 -1
  9. package/dist/index.cjs17.js +1 -1
  10. package/dist/index.cjs18.js +1 -1
  11. package/dist/index.cjs19.js +1 -1
  12. package/dist/index.cjs20.js +1 -1
  13. package/dist/index.cjs21.js +1 -1
  14. package/dist/index.cjs22.js +1 -1
  15. package/dist/index.cjs23.js +1 -1
  16. package/dist/index.cjs24.js +1 -1
  17. package/dist/index.cjs25.js +1 -1
  18. package/dist/index.cjs25.js.map +1 -1
  19. package/dist/index.cjs26.js +1 -1
  20. package/dist/index.cjs27.js +1 -1
  21. package/dist/index.cjs28.js +1 -1
  22. package/dist/index.cjs28.js.map +1 -1
  23. package/dist/index.cjs29.js +1 -1
  24. package/dist/index.cjs30.js +1 -1
  25. package/dist/index.cjs386.js +1 -1
  26. package/dist/index.cjs386.js.map +1 -1
  27. package/dist/index.cjs387.js +1 -1
  28. package/dist/index.cjs387.js.map +1 -1
  29. package/dist/index.cjs388.js +1 -1
  30. package/dist/index.cjs388.js.map +1 -1
  31. package/dist/index.cjs389.js +1 -1
  32. package/dist/index.cjs389.js.map +1 -1
  33. package/dist/index.cjs390.js +1 -1
  34. package/dist/index.cjs390.js.map +1 -1
  35. package/dist/index.cjs391.js +1 -1
  36. package/dist/index.cjs391.js.map +1 -1
  37. package/dist/index.cjs392.js +1 -1
  38. package/dist/index.cjs392.js.map +1 -1
  39. package/dist/index.cjs411.js +6 -1
  40. package/dist/index.cjs411.js.map +1 -1
  41. package/dist/index.cjs412.js +6 -1
  42. package/dist/index.cjs412.js.map +1 -1
  43. package/dist/index.cjs413.js +2 -2
  44. package/dist/index.cjs413.js.map +1 -1
  45. package/dist/index.cjs414.js +2 -2
  46. package/dist/index.cjs414.js.map +1 -1
  47. package/dist/index.cjs415.js +1 -6
  48. package/dist/index.cjs415.js.map +1 -1
  49. package/dist/index.cjs416.js +1 -6
  50. package/dist/index.cjs416.js.map +1 -1
  51. package/dist/index.cjs420.js +1 -1
  52. package/dist/index.cjs421.js +1 -1
  53. package/dist/index.cjs422.js +1 -1
  54. package/dist/index.cjs423.js +1 -1
  55. package/dist/index.cjs424.js +1 -1
  56. package/dist/index.cjs425.js +1 -1
  57. package/dist/index.cjs426.js +1 -1
  58. package/dist/index.cjs428.js +1 -1
  59. package/dist/index.cjs43.js +1 -1
  60. package/dist/index.cjs430.js +1 -1
  61. package/dist/index.cjs433.js +1 -1
  62. package/dist/index.cjs434.js +1 -6
  63. package/dist/index.cjs434.js.map +1 -1
  64. package/dist/index.cjs435.js +1 -6
  65. package/dist/index.cjs435.js.map +1 -1
  66. package/dist/index.cjs436.js +1 -6
  67. package/dist/index.cjs436.js.map +1 -1
  68. package/dist/index.cjs437.js +1 -6
  69. package/dist/index.cjs437.js.map +1 -1
  70. package/dist/index.cjs438.js +1 -1
  71. package/dist/index.cjs438.js.map +1 -1
  72. package/dist/index.cjs439.js +1 -1
  73. package/dist/index.cjs439.js.map +1 -1
  74. package/dist/index.cjs44.js +1 -1
  75. package/dist/index.cjs440.js +1 -1
  76. package/dist/index.cjs440.js.map +1 -1
  77. package/dist/index.cjs441.js +1 -1
  78. package/dist/index.cjs441.js.map +1 -1
  79. package/dist/index.cjs442.js +1 -1
  80. package/dist/index.cjs442.js.map +1 -1
  81. package/dist/index.cjs443.js +1 -1
  82. package/dist/index.cjs443.js.map +1 -1
  83. package/dist/index.cjs444.js +1 -1
  84. package/dist/index.cjs444.js.map +1 -1
  85. package/dist/index.cjs445.js +1 -1
  86. package/dist/index.cjs445.js.map +1 -1
  87. package/dist/index.cjs446.js +1 -1
  88. package/dist/index.cjs446.js.map +1 -1
  89. package/dist/index.cjs447.js +1 -1
  90. package/dist/index.cjs447.js.map +1 -1
  91. package/dist/index.cjs448.js +1 -1
  92. package/dist/index.cjs448.js.map +1 -1
  93. package/dist/index.cjs449.js +6 -1
  94. package/dist/index.cjs449.js.map +1 -1
  95. package/dist/index.cjs45.js +1 -1
  96. package/dist/index.cjs450.js +6 -1
  97. package/dist/index.cjs450.js.map +1 -1
  98. package/dist/index.cjs451.js +6 -1
  99. package/dist/index.cjs451.js.map +1 -1
  100. package/dist/index.cjs452.js +6 -1
  101. package/dist/index.cjs452.js.map +1 -1
  102. package/dist/index.cjs46.js +1 -1
  103. package/dist/index.cjs46.js.map +1 -1
  104. package/dist/index.cjs47.js +1 -1
  105. package/dist/index.cjs48.js +1 -1
  106. package/dist/index.cjs49.js +1 -1
  107. package/dist/index.cjs5.js +1 -1
  108. package/dist/index.cjs5.js.map +1 -1
  109. package/dist/index.cjs50.js +1 -1
  110. package/dist/index.cjs53.js +1 -1
  111. package/dist/index.cjs54.js +1 -1
  112. package/dist/index.cjs55.js +1 -1
  113. package/dist/index.cjs56.js +1 -1
  114. package/dist/index.cjs56.js.map +1 -1
  115. package/dist/index.cjs57.js +1 -1
  116. package/dist/index.cjs58.js +1 -1
  117. package/dist/index.cjs59.js +1 -1
  118. package/dist/index.cjs59.js.map +1 -1
  119. package/dist/index.cjs60.js +1 -1
  120. package/dist/index.cjs60.js.map +1 -1
  121. package/dist/index.cjs61.js +1 -1
  122. package/dist/index.cjs62.js +1 -1
  123. package/dist/index.cjs62.js.map +1 -1
  124. package/dist/index.cjs63.js +1 -1
  125. package/dist/index.cjs64.js +1 -1
  126. package/dist/index.cjs64.js.map +1 -1
  127. package/dist/index.cjs65.js +1 -1
  128. package/dist/index.cjs66.js +1 -1
  129. package/dist/index.cjs66.js.map +1 -1
  130. package/dist/index.cjs67.js +1 -1
  131. package/dist/index.cjs67.js.map +1 -1
  132. package/dist/index.cjs68.js +1 -1
  133. package/dist/index.cjs68.js.map +1 -1
  134. package/dist/index.cjs69.js +1 -1
  135. package/dist/index.cjs69.js.map +1 -1
  136. package/dist/index.cjs70.js +1 -1
  137. package/dist/index.cjs71.js +1 -1
  138. package/dist/index.cjs72.js +1 -1
  139. package/dist/index.cjs73.js +1 -1
  140. package/dist/index.cjs73.js.map +1 -1
  141. package/dist/index.cjs86.js +1 -1
  142. package/dist/index.cjs9.js +1 -1
  143. package/dist/index.esm10.js +2 -2
  144. package/dist/index.esm11.js +1 -1
  145. package/dist/index.esm13.js +1 -1
  146. package/dist/index.esm14.js +1 -1
  147. package/dist/index.esm15.js +1 -1
  148. package/dist/index.esm16.js +1 -1
  149. package/dist/index.esm17.js +1 -1
  150. package/dist/index.esm18.js +1 -1
  151. package/dist/index.esm19.js +1 -1
  152. package/dist/index.esm20.js +1 -1
  153. package/dist/index.esm21.js +2 -2
  154. package/dist/index.esm22.js +2 -2
  155. package/dist/index.esm23.js +1 -1
  156. package/dist/index.esm24.js +2 -2
  157. package/dist/index.esm25.js +26 -26
  158. package/dist/index.esm25.js.map +1 -1
  159. package/dist/index.esm26.js +1 -1
  160. package/dist/index.esm27.js +1 -1
  161. package/dist/index.esm28.js +48 -28
  162. package/dist/index.esm28.js.map +1 -1
  163. package/dist/index.esm29.js +1 -1
  164. package/dist/index.esm30.js +3 -3
  165. package/dist/index.esm386.js +29 -5
  166. package/dist/index.esm386.js.map +1 -1
  167. package/dist/index.esm387.js +24 -25
  168. package/dist/index.esm387.js.map +1 -1
  169. package/dist/index.esm388.js +50 -29
  170. package/dist/index.esm388.js.map +1 -1
  171. package/dist/index.esm389.js +7 -24
  172. package/dist/index.esm389.js.map +1 -1
  173. package/dist/index.esm390.js +7 -50
  174. package/dist/index.esm390.js.map +1 -1
  175. package/dist/index.esm391.js +33 -7
  176. package/dist/index.esm391.js.map +1 -1
  177. package/dist/index.esm392.js +5 -7
  178. package/dist/index.esm392.js.map +1 -1
  179. package/dist/index.esm411.js +9 -5
  180. package/dist/index.esm411.js.map +1 -1
  181. package/dist/index.esm412.js +18 -5
  182. package/dist/index.esm412.js.map +1 -1
  183. package/dist/index.esm413.js +9 -3
  184. package/dist/index.esm413.js.map +1 -1
  185. package/dist/index.esm414.js +6 -7
  186. package/dist/index.esm414.js.map +1 -1
  187. package/dist/index.esm415.js +5 -15
  188. package/dist/index.esm415.js.map +1 -1
  189. package/dist/index.esm416.js +5 -17
  190. package/dist/index.esm416.js.map +1 -1
  191. package/dist/index.esm420.js +1 -1
  192. package/dist/index.esm421.js +2 -2
  193. package/dist/index.esm422.js +3 -3
  194. package/dist/index.esm423.js +3 -3
  195. package/dist/index.esm424.js +1 -1
  196. package/dist/index.esm425.js +2 -2
  197. package/dist/index.esm426.js +1 -1
  198. package/dist/index.esm428.js +1 -1
  199. package/dist/index.esm43.js +28 -64
  200. package/dist/index.esm43.js.map +1 -1
  201. package/dist/index.esm430.js +7 -7
  202. package/dist/index.esm433.js +1 -1
  203. package/dist/index.esm434.js +19 -21
  204. package/dist/index.esm434.js.map +1 -1
  205. package/dist/index.esm435.js +17 -9
  206. package/dist/index.esm435.js.map +1 -1
  207. package/dist/index.esm436.js +12 -38
  208. package/dist/index.esm436.js.map +1 -1
  209. package/dist/index.esm437.js +5 -18
  210. package/dist/index.esm437.js.map +1 -1
  211. package/dist/index.esm438.js +3 -5
  212. package/dist/index.esm438.js.map +1 -1
  213. package/dist/index.esm439.js +30 -9
  214. package/dist/index.esm439.js.map +1 -1
  215. package/dist/index.esm44.js +5 -36
  216. package/dist/index.esm44.js.map +1 -1
  217. package/dist/index.esm440.js +33 -6
  218. package/dist/index.esm440.js.map +1 -1
  219. package/dist/index.esm441.js +25 -3
  220. package/dist/index.esm441.js.map +1 -1
  221. package/dist/index.esm442.js +3 -84
  222. package/dist/index.esm442.js.map +1 -1
  223. package/dist/index.esm443.js +5 -37
  224. package/dist/index.esm443.js.map +1 -1
  225. package/dist/index.esm444.js +9 -30
  226. package/dist/index.esm444.js.map +1 -1
  227. package/dist/index.esm445.js +6 -18
  228. package/dist/index.esm445.js.map +1 -1
  229. package/dist/index.esm446.js +3 -16
  230. package/dist/index.esm446.js.map +1 -1
  231. package/dist/index.esm447.js +84 -11
  232. package/dist/index.esm447.js.map +1 -1
  233. package/dist/index.esm448.js +37 -4
  234. package/dist/index.esm448.js.map +1 -1
  235. package/dist/index.esm449.js +21 -4
  236. package/dist/index.esm449.js.map +1 -1
  237. package/dist/index.esm45.js +10 -8
  238. package/dist/index.esm45.js.map +1 -1
  239. package/dist/index.esm450.js +9 -34
  240. package/dist/index.esm450.js.map +1 -1
  241. package/dist/index.esm451.js +38 -26
  242. package/dist/index.esm451.js.map +1 -1
  243. package/dist/index.esm452.js +18 -4
  244. package/dist/index.esm452.js.map +1 -1
  245. package/dist/index.esm46.js +30 -9
  246. package/dist/index.esm46.js.map +1 -1
  247. package/dist/index.esm47.js +65 -47
  248. package/dist/index.esm47.js.map +1 -1
  249. package/dist/index.esm48.js +40 -10
  250. package/dist/index.esm48.js.map +1 -1
  251. package/dist/index.esm49.js +36 -5
  252. package/dist/index.esm49.js.map +1 -1
  253. package/dist/index.esm5.js +2 -2
  254. package/dist/index.esm5.js.map +1 -1
  255. package/dist/index.esm50.js +4 -32
  256. package/dist/index.esm50.js.map +1 -1
  257. package/dist/index.esm53.js +1 -1
  258. package/dist/index.esm54.js +39 -42
  259. package/dist/index.esm54.js.map +1 -1
  260. package/dist/index.esm55.js +47 -9
  261. package/dist/index.esm55.js.map +1 -1
  262. package/dist/index.esm56.js +11 -28
  263. package/dist/index.esm56.js.map +1 -1
  264. package/dist/index.esm57.js +8 -40
  265. package/dist/index.esm57.js.map +1 -1
  266. package/dist/index.esm58.js +58 -10
  267. package/dist/index.esm58.js.map +1 -1
  268. package/dist/index.esm59.js +16 -30
  269. package/dist/index.esm59.js.map +1 -1
  270. package/dist/index.esm60.js +97 -41
  271. package/dist/index.esm60.js.map +1 -1
  272. package/dist/index.esm61.js +40 -39
  273. package/dist/index.esm61.js.map +1 -1
  274. package/dist/index.esm62.js +88 -29
  275. package/dist/index.esm62.js.map +1 -1
  276. package/dist/index.esm63.js +34 -16
  277. package/dist/index.esm63.js.map +1 -1
  278. package/dist/index.esm64.js +127 -16
  279. package/dist/index.esm64.js.map +1 -1
  280. package/dist/index.esm65.js +7 -3
  281. package/dist/index.esm65.js.map +1 -1
  282. package/dist/index.esm66.js +28 -59
  283. package/dist/index.esm66.js.map +1 -1
  284. package/dist/index.esm67.js +17 -85
  285. package/dist/index.esm67.js.map +1 -1
  286. package/dist/index.esm68.js +16 -35
  287. package/dist/index.esm68.js.map +1 -1
  288. package/dist/index.esm69.js +33 -120
  289. package/dist/index.esm69.js.map +1 -1
  290. package/dist/index.esm70.js +15 -40
  291. package/dist/index.esm70.js.map +1 -1
  292. package/dist/index.esm71.js +42 -15
  293. package/dist/index.esm71.js.map +1 -1
  294. package/dist/index.esm72.js +8 -13
  295. package/dist/index.esm72.js.map +1 -1
  296. package/dist/index.esm73.js +41 -87
  297. package/dist/index.esm73.js.map +1 -1
  298. package/dist/index.esm86.js +1 -1
  299. package/dist/index.esm9.js +1 -1
  300. package/dist/server.cjs.js +1 -1
  301. package/dist/server.cjs.js.map +1 -1
  302. package/dist/server.esm.js +2 -2
  303. package/dist/server.esm.js.map +1 -1
  304. package/dist/styles.css +1 -1
  305. package/dist/ui-kit.css +1 -1
  306. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm69.js","sources":["../src/components/content/DecorativeFrame/components/PatternCell/PatternCell.tsx"],"sourcesContent":["import React from 'react';\nimport type { CellConfig, Point2D } from '../../utils/patternGenerator';\nimport { TRIANGLE_TEMPLATES } from '../../utils/patternGenerator';\nimport styles from './PatternCell.module.pcss';\n\nexport interface PatternCellProps {\n cell: CellConfig;\n colors: string[];\n}\n\nfunction polygonClipPath(template: Point2D[]): string {\n const points = template.map(([px, py]) => `${px * 100}% ${py * 100}%`).join(', ');\n return `polygon(${points})`;\n}\n\nexport function PatternCell({ cell, colors }: PatternCellProps) {\n const bgColor = colors[cell.bgColorIndex] ?? colors[0];\n const shapeColor = colors[cell.shapeColorIndex] ?? colors[1];\n const size = Math.min(cell.width, cell.height);\n const {\n x,\n y,\n width: cellWidth,\n height: cellHeight,\n shapeType,\n triangleIndex,\n stripeDirection,\n stripeCount = 4,\n stripeMask,\n animationDelay,\n animationDuration,\n animationScaleFrom = 0.9,\n dotScale = 0.45,\n } = cell;\n\n const stripeWidth =\n stripeDirection === 1 ? size : size / (stripeCount * 2 - 1);\n const stripeHeight =\n stripeDirection === 1 ? size / (stripeCount * 2 - 1) : size;\n const visibleStripes = stripeMask ?? Array(stripeCount).fill(true);\n\n const cellStyle: React.CSSProperties = {\n position: 'absolute',\n left: x,\n top: y,\n width: cellWidth,\n height: cellHeight,\n '--cell-delay': `${animationDelay}ms`,\n '--cell-duration': `${animationDuration}ms`,\n '--cell-scale-from': animationScaleFrom,\n } as React.CSSProperties;\n\n return (\n <div\n className={styles.cell}\n style={cellStyle}\n aria-hidden\n >\n <div className={styles.bg} style={{ backgroundColor: bgColor }} />\n\n {shapeType === 'circle' && (\n <div\n className={styles.shapeCircle}\n style={{ backgroundColor: shapeColor }}\n />\n )}\n\n {shapeType === 'dot' && (\n <div\n className={styles.shapeDot}\n style={{\n backgroundColor: shapeColor,\n width: `${dotScale * 100}%`,\n height: `${dotScale * 100}%`,\n }}\n />\n )}\n\n {shapeType === 'triangle' &&\n triangleIndex !== undefined &&\n TRIANGLE_TEMPLATES[triangleIndex] && (\n <div\n className={styles.shapeTriangle}\n style={{\n backgroundColor: shapeColor,\n clipPath: polygonClipPath(TRIANGLE_TEMPLATES[triangleIndex]!),\n }}\n />\n )}\n\n {shapeType === 'diamond' && (\n <div\n className={styles.shapeDiamond}\n style={{ backgroundColor: shapeColor }}\n />\n )}\n\n {shapeType === 'cross' && (\n <div className={styles.shapeCross}>\n <div\n className={styles.crossBar}\n style={{ backgroundColor: shapeColor }}\n />\n <div\n className={styles.crossBarVertical}\n style={{ backgroundColor: shapeColor }}\n />\n </div>\n )}\n\n {shapeType === 'stripes' && (\n <div className={styles.stripes}>\n {Array.from({ length: stripeCount }, (_, i) =>\n visibleStripes[i] ? (\n <div\n key={i}\n className={styles.stripe}\n style={{\n backgroundColor: shapeColor,\n ...(stripeDirection === 1\n ? {\n top: `${((2 * i * stripeHeight) / size) * 100}%`,\n left: 0,\n width: '100%',\n height: `${(stripeHeight / size) * 100}%`,\n }\n : {\n left: `${((2 * i * stripeWidth) / size) * 100}%`,\n top: 0,\n width: `${(stripeWidth / size) * 100}%`,\n height: '100%',\n }),\n }}\n />\n ) : null\n )}\n </div>\n )}\n </div>\n );\n}\n\nPatternCell.displayName = 'PatternCell';\n"],"names":["polygonClipPath","template","px","py","PatternCell","cell","colors","bgColor","shapeColor","size","x","y","cellWidth","cellHeight","shapeType","triangleIndex","stripeDirection","stripeCount","stripeMask","animationDelay","animationDuration","animationScaleFrom","dotScale","stripeWidth","stripeHeight","visibleStripes","cellStyle","jsxs","styles","jsx","TRIANGLE_TEMPLATES","_","i"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm69.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -1,45 +1,20 @@
1
1
  "use client";
2
- const a = "_island_1pzuz_1", n = "_island--size-sm_1pzuz_7", i = "_island--size-md_1pzuz_11", l = "_island--size-lg_1pzuz_15", s = "_island--variant-default_1pzuz_20", e = "_island--variant-paper_1pzuz_24", d = "_island--variant-accent_1pzuz_28", _ = "_island--elevation-none_1pzuz_33", t = "_island--elevation-sm_1pzuz_37", z = "_island--elevation-md_1pzuz_41", o = "_island--elevation-lg_1pzuz_45", p = "_island--elevation-xl_1pzuz_49", v = "_island--bordered_1pzuz_54", u = {
3
- island: a,
4
- "island--size-sm": "_island--size-sm_1pzuz_7",
5
- islandSizeSm: n,
6
- "island--size-md": "_island--size-md_1pzuz_11",
7
- islandSizeMd: i,
8
- "island--size-lg": "_island--size-lg_1pzuz_15",
9
- islandSizeLg: l,
10
- "island--variant-default": "_island--variant-default_1pzuz_20",
11
- islandVariantDefault: s,
12
- "island--variant-paper": "_island--variant-paper_1pzuz_24",
13
- islandVariantPaper: e,
14
- "island--variant-accent": "_island--variant-accent_1pzuz_28",
15
- islandVariantAccent: d,
16
- "island--elevation-none": "_island--elevation-none_1pzuz_33",
17
- islandElevationNone: _,
18
- "island--elevation-sm": "_island--elevation-sm_1pzuz_37",
19
- islandElevationSm: t,
20
- "island--elevation-md": "_island--elevation-md_1pzuz_41",
21
- islandElevationMd: z,
22
- "island--elevation-lg": "_island--elevation-lg_1pzuz_45",
23
- islandElevationLg: o,
24
- "island--elevation-xl": "_island--elevation-xl_1pzuz_49",
25
- islandElevationXl: p,
26
- "island--bordered": "_island--bordered_1pzuz_54",
27
- islandBordered: v
2
+ const t = "_root_2pxdg_1", _ = "_title_2pxdg_7", i = "_list_2pxdg_13", l = "_item_2pxdg_20", e = "_link_2pxdg_29", n = "_linkText_2pxdg_48", o = {
3
+ root: t,
4
+ title: _,
5
+ list: i,
6
+ item: l,
7
+ link: e,
8
+ "link--active": "_link--active_2pxdg_48",
9
+ linkText: n
28
10
  };
29
11
  export {
30
- u as default,
31
- a as island,
32
- v as islandBordered,
33
- o as islandElevationLg,
34
- z as islandElevationMd,
35
- _ as islandElevationNone,
36
- t as islandElevationSm,
37
- p as islandElevationXl,
38
- l as islandSizeLg,
39
- i as islandSizeMd,
40
- n as islandSizeSm,
41
- d as islandVariantAccent,
42
- s as islandVariantDefault,
43
- e as islandVariantPaper
12
+ o as default,
13
+ l as item,
14
+ e as link,
15
+ n as linkText,
16
+ i as list,
17
+ t as root,
18
+ _ as title
44
19
  };
45
20
  //# sourceMappingURL=index.esm70.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm70.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.esm70.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,20 +1,47 @@
1
1
  "use client";
2
- const t = "_root_2pxdg_1", _ = "_title_2pxdg_7", i = "_list_2pxdg_13", l = "_item_2pxdg_20", e = "_link_2pxdg_29", n = "_linkText_2pxdg_48", o = {
3
- root: t,
4
- title: _,
5
- list: i,
6
- item: l,
7
- link: e,
8
- "link--active": "_link--active_2pxdg_48",
9
- linkText: n
2
+ const e = "_root_1lfx3_1", t = "_root--sm_1lfx3_8", s = "_root--md_1lfx3_14", n = "_root--lg_1lfx3_20", _ = "_track_1lfx3_26", o = "_segments_1lfx3_34", m = "_segment_1lfx3_34", g = "_segment--primary_1lfx3_50", l = "_segment--secondary_1lfx3_54", r = "_segment--success_1lfx3_58", c = "_segment--warning_1lfx3_62", a = "_segment--active_1lfx3_66", f = "_segment--sequential_1lfx3_66", x = "_segment-reveal_1lfx3_1", i = "_valueLabel_1lfx3_89", u = {
3
+ root: e,
4
+ "root--sm": "_root--sm_1lfx3_8",
5
+ rootSm: t,
6
+ "root--md": "_root--md_1lfx3_14",
7
+ rootMd: s,
8
+ "root--lg": "_root--lg_1lfx3_20",
9
+ rootLg: n,
10
+ track: _,
11
+ segments: o,
12
+ segment: m,
13
+ "segment--primary": "_segment--primary_1lfx3_50",
14
+ segmentPrimary: g,
15
+ "segment--secondary": "_segment--secondary_1lfx3_54",
16
+ segmentSecondary: l,
17
+ "segment--success": "_segment--success_1lfx3_58",
18
+ segmentSuccess: r,
19
+ "segment--warning": "_segment--warning_1lfx3_62",
20
+ segmentWarning: c,
21
+ "segment--active": "_segment--active_1lfx3_66",
22
+ segmentActive: a,
23
+ "segment--sequential": "_segment--sequential_1lfx3_66",
24
+ segmentSequential: f,
25
+ "segment-reveal": "_segment-reveal_1lfx3_1",
26
+ segmentReveal: x,
27
+ valueLabel: i
10
28
  };
11
29
  export {
12
- o as default,
13
- l as item,
14
- e as link,
15
- n as linkText,
16
- i as list,
17
- t as root,
18
- _ as title
30
+ u as default,
31
+ e as root,
32
+ n as rootLg,
33
+ s as rootMd,
34
+ t as rootSm,
35
+ m as segment,
36
+ a as segmentActive,
37
+ g as segmentPrimary,
38
+ x as segmentReveal,
39
+ l as segmentSecondary,
40
+ f as segmentSequential,
41
+ r as segmentSuccess,
42
+ c as segmentWarning,
43
+ o as segments,
44
+ _ as track,
45
+ i as valueLabel
19
46
  };
20
47
  //# sourceMappingURL=index.esm71.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm71.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index.esm71.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,18 +1,13 @@
1
1
  "use client";
2
- const o = "_root_1uo8k_1", t = "_root--interactive_1uo8k_15", r = "_root--card_1uo8k_29", _ = "_root--row_1uo8k_35", e = {
3
- root: o,
4
- "root--interactive": "_root--interactive_1uo8k_15",
5
- rootInteractive: t,
6
- "root--card": "_root--card_1uo8k_29",
7
- rootCard: r,
8
- "root--row": "_root--row_1uo8k_35",
9
- rootRow: _
2
+ const e = "_labelMenuItem_fjxw4_1", l = "_icon_fjxw4_32", n = "_label_fjxw4_1", t = {
3
+ labelMenuItem: e,
4
+ icon: l,
5
+ label: n
10
6
  };
11
7
  export {
12
- e as default,
13
- o as root,
14
- r as rootCard,
15
- t as rootInteractive,
16
- _ as rootRow
8
+ t as default,
9
+ l as icon,
10
+ n as label,
11
+ e as labelMenuItem
17
12
  };
18
13
  //# sourceMappingURL=index.esm72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm72.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index.esm72.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,91 +1,45 @@
1
1
  "use client";
2
- import { j as a } from "./index.esm36.js";
3
- import x from "./index.esm42.js";
4
- import { AnimatedEyeIcon as N } from "./index.esm388.js";
5
- import { AnimatedClockIcon as v } from "./index.esm389.js";
6
- import s from "./index.esm390.js";
7
- import { FileTextIcon as f } from "./index.esm391.js";
8
- import { Typography as i } from "./index.esm9.js";
9
- import { EyeIcon as y } from "./index.esm392.js";
10
- function p(e) {
11
- return e >= 1e6 ? `${(e / 1e6).toFixed(1)}M` : e >= 1e3 ? `${(e / 1e3).toFixed(1)}K` : String(e);
12
- }
13
- function g(e) {
14
- if (e < 60) return `${e} мин`;
15
- const n = Math.floor(e / 60), r = e % 60;
16
- return r > 0 ? `${n} ч ${r} мин` : `${n} ч`;
17
- }
18
- function w({
19
- title: e,
20
- description: n,
21
- viewsCount: r,
22
- readingTimeMinutes: m,
23
- author: c,
24
- imageUrl: o,
25
- imageAlt: j,
26
- formattedDate: d,
27
- view: h,
28
- tags: t
29
- }) {
30
- return h === "row" ? /* @__PURE__ */ a.jsxs("div", { className: x(s.content, s["content--row"]), children: [
31
- /* @__PURE__ */ a.jsx("div", { className: s.rowIcon, "aria-hidden": !0, children: /* @__PURE__ */ a.jsx(f, { size: 24, strokeWidth: 2 }) }),
32
- /* @__PURE__ */ a.jsxs("div", { className: s.rowBody, children: [
33
- t && /* @__PURE__ */ a.jsx("div", { className: s.tagsSlotRow, onClick: (l) => l.stopPropagation(), children: t }),
34
- /* @__PURE__ */ a.jsx(i, { variant: "h5", as: "h2", className: s.title, title: e, children: e }),
35
- /* @__PURE__ */ a.jsxs("div", { className: s.rowMeta, children: [
36
- /* @__PURE__ */ a.jsx(i, { variant: "caption", className: s.date, children: d }),
37
- r != null && /* @__PURE__ */ a.jsxs("span", { className: s.views, title: "Просмотры", children: [
38
- /* @__PURE__ */ a.jsx(y, { size: 14, strokeWidth: 2 }),
39
- /* @__PURE__ */ a.jsx("span", { children: p(r) })
40
- ] })
41
- ] })
42
- ] })
43
- ] }) : h === "card" ? /* @__PURE__ */ a.jsxs("div", { className: x(s.content, s["content--card"], !o && s["content--card-no-image"]), children: [
44
- /* @__PURE__ */ a.jsxs("div", { className: s.cardBody, children: [
45
- c ? /* @__PURE__ */ a.jsxs("div", { className: s.author, onClick: (l) => l.stopPropagation(), children: [
46
- c.avatarUrl ? /* @__PURE__ */ a.jsx(
47
- "img",
48
- {
49
- src: c.avatarUrl,
50
- alt: "",
51
- className: s.authorAvatar,
52
- width: 32,
53
- height: 32
54
- }
55
- ) : /* @__PURE__ */ a.jsx("div", { className: s.authorAvatarPlaceholder, "aria-hidden": !0, children: c.name.charAt(0).toUpperCase() }),
56
- /* @__PURE__ */ a.jsx(i, { variant: "caption", className: s.authorName, children: c.name }),
57
- /* @__PURE__ */ a.jsx(i, { variant: "caption", className: s.date, children: d })
58
- ] }) : /* @__PURE__ */ a.jsx(i, { variant: "caption", className: s.date, children: d }),
59
- /* @__PURE__ */ a.jsx(i, { variant: "h5", as: "h2", className: s.title, title: e, children: e }),
60
- n && /* @__PURE__ */ a.jsx(i, { variant: "caption", className: s.description, children: n }),
61
- /* @__PURE__ */ a.jsxs("div", { className: s.cardFooter, children: [
62
- t && /* @__PURE__ */ a.jsx("div", { className: s.tagsSlotCard, onClick: (l) => l.stopPropagation(), children: t }),
63
- /* @__PURE__ */ a.jsxs("div", { className: s.meta, children: [
64
- m != null && /* @__PURE__ */ a.jsxs("span", { className: s.readingTime, title: "Время чтения", children: [
65
- /* @__PURE__ */ a.jsx(v, { size: 14, className: s.clockIcon }),
66
- /* @__PURE__ */ a.jsx("span", { children: g(m) })
67
- ] }),
68
- r != null && /* @__PURE__ */ a.jsxs("span", { className: s.views, title: "Просмотры", children: [
69
- /* @__PURE__ */ a.jsx(N, { size: 14, className: s.eyeIcon }),
70
- /* @__PURE__ */ a.jsx("span", { children: p(r) })
71
- ] })
72
- ] })
73
- ] })
74
- ] }),
75
- o && /* @__PURE__ */ a.jsx("div", { className: s.previewWrap, children: /* @__PURE__ */ a.jsx(
76
- "img",
77
- {
78
- src: o,
79
- alt: j || e,
80
- className: s.previewImage,
81
- decoding: "async",
82
- loading: "lazy"
83
- }
84
- ) })
85
- ] }) : null;
86
- }
87
- w.displayName = "ArticlePreviewContent";
2
+ const a = "_card_13s36_1", r = "_card--size-sm_13s36_7", e = "_card--size-md_13s36_11", c = "_card--size-lg_13s36_15", d = "_card--variant-default_13s36_19", _ = "_card--variant-paper_13s36_23", n = "_card--variant-accent_13s36_27", t = "_card--elevation-none_13s36_31", s = "_card--elevation-sm_13s36_35", i = "_card--elevation-md_13s36_39", o = "_card--elevation-lg_13s36_43", l = "_card--elevation-xl_13s36_47", v = "_card--bordered_13s36_51", m = {
3
+ card: a,
4
+ "card--size-sm": "_card--size-sm_13s36_7",
5
+ cardSizeSm: r,
6
+ "card--size-md": "_card--size-md_13s36_11",
7
+ cardSizeMd: e,
8
+ "card--size-lg": "_card--size-lg_13s36_15",
9
+ cardSizeLg: c,
10
+ "card--variant-default": "_card--variant-default_13s36_19",
11
+ cardVariantDefault: d,
12
+ "card--variant-paper": "_card--variant-paper_13s36_23",
13
+ cardVariantPaper: _,
14
+ "card--variant-accent": "_card--variant-accent_13s36_27",
15
+ cardVariantAccent: n,
16
+ "card--elevation-none": "_card--elevation-none_13s36_31",
17
+ cardElevationNone: t,
18
+ "card--elevation-sm": "_card--elevation-sm_13s36_35",
19
+ cardElevationSm: s,
20
+ "card--elevation-md": "_card--elevation-md_13s36_39",
21
+ cardElevationMd: i,
22
+ "card--elevation-lg": "_card--elevation-lg_13s36_43",
23
+ cardElevationLg: o,
24
+ "card--elevation-xl": "_card--elevation-xl_13s36_47",
25
+ cardElevationXl: l,
26
+ "card--bordered": "_card--bordered_13s36_51",
27
+ cardBordered: v
28
+ };
88
29
  export {
89
- w as ArticlePreviewContent
30
+ a as card,
31
+ v as cardBordered,
32
+ o as cardElevationLg,
33
+ i as cardElevationMd,
34
+ t as cardElevationNone,
35
+ s as cardElevationSm,
36
+ l as cardElevationXl,
37
+ c as cardSizeLg,
38
+ e as cardSizeMd,
39
+ r as cardSizeSm,
40
+ n as cardVariantAccent,
41
+ d as cardVariantDefault,
42
+ _ as cardVariantPaper,
43
+ m as default
90
44
  };
91
45
  //# sourceMappingURL=index.esm73.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm73.js","sources":["../src/components/content/ArticlePreview/components/ArticlePreviewContent/ArticlePreviewContent.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Typography } from '../../../../primitives/Typography';\nimport { EyeIcon, FileTextIcon } from '../../../../primitives/Icon/Icons';\nimport { AnimatedEyeIcon } from './AnimatedEyeIcon';\nimport type { ArticlePreviewAuthor } from '../../ArticlePreview';\nimport { AnimatedClockIcon } from './AnimatedClockIcon';\nimport styles from './ArticlePreviewContent.module.pcss';\n\nexport type ArticlePreviewContentView = 'card' | 'row';\n\nexport interface ArticlePreviewContentProps {\n title: string;\n description?: string;\n viewsCount?: number;\n readingTimeMinutes?: number;\n author?: ArticlePreviewAuthor;\n imageUrl?: string;\n imageAlt?: string;\n formattedDate: string;\n view: ArticlePreviewContentView;\n tags?: React.ReactNode;\n}\n\nfunction formatViews(count: number): string {\n if (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1)}M`;\n if (count >= 1_000) return `${(count / 1_000).toFixed(1)}K`;\n return String(count);\n}\n\nfunction formatReadingTime(minutes: number): string {\n if (minutes < 60) return `${minutes} мин`;\n const h = Math.floor(minutes / 60);\n const m = minutes % 60;\n return m > 0 ? `${h} ч ${m} мин` : `${h} ч`;\n}\n\nexport function ArticlePreviewContent({\n title,\n description,\n viewsCount,\n readingTimeMinutes,\n author,\n imageUrl,\n imageAlt,\n formattedDate,\n view,\n tags,\n}: ArticlePreviewContentProps) {\n if (view === 'row') {\n return (\n <div className={cn(styles.content, styles['content--row'])}>\n <div className={styles.rowIcon} aria-hidden>\n <FileTextIcon size={24} strokeWidth={2} />\n </div>\n <div className={styles.rowBody}>\n {tags && (\n <div className={styles.tagsSlotRow} onClick={(e) => e.stopPropagation()}>\n {tags}\n </div>\n )}\n <Typography variant=\"h5\" as=\"h2\" className={styles.title} title={title}>\n {title}\n </Typography>\n <div className={styles.rowMeta}>\n <Typography variant=\"caption\" className={styles.date}>\n {formattedDate}\n </Typography>\n {viewsCount != null && (\n <span className={styles.views} title=\"Просмотры\">\n <EyeIcon size={14} strokeWidth={2} />\n <span>{formatViews(viewsCount)}</span>\n </span>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n if (view === 'card') {\n return (\n <div className={cn(styles.content, styles['content--card'], !imageUrl && styles['content--card-no-image'])}>\n <div className={styles.cardBody}>\n {author ? (\n <div className={styles.author} onClick={(e) => e.stopPropagation()}>\n {author.avatarUrl ? (\n <img\n src={author.avatarUrl}\n alt=\"\"\n className={styles.authorAvatar}\n width={32}\n height={32}\n />\n ) : (\n <div className={styles.authorAvatarPlaceholder} aria-hidden>\n {author.name.charAt(0).toUpperCase()}\n </div>\n )}\n <Typography variant=\"caption\" className={styles.authorName}>\n {author.name}\n </Typography>\n <Typography variant=\"caption\" className={styles.date}>\n {formattedDate}\n </Typography>\n </div>\n ) : (\n <Typography variant=\"caption\" className={styles.date}>\n {formattedDate}\n </Typography>\n )}\n <Typography variant=\"h5\" as=\"h2\" className={styles.title} title={title}>\n {title}\n </Typography>\n {description && (\n <Typography variant=\"caption\" className={styles.description}>\n {description}\n </Typography>\n )}\n <div className={styles.cardFooter}>\n {tags && (\n <div className={styles.tagsSlotCard} onClick={(e) => e.stopPropagation()}>\n {tags}\n </div>\n )}\n <div className={styles.meta}>\n {readingTimeMinutes != null && (\n <span className={styles.readingTime} title=\"Время чтения\">\n <AnimatedClockIcon size={14} className={styles.clockIcon} />\n <span>{formatReadingTime(readingTimeMinutes)}</span>\n </span>\n )}\n {viewsCount != null && (\n <span className={styles.views} title=\"Просмотры\">\n <AnimatedEyeIcon size={14} className={styles.eyeIcon} />\n <span>{formatViews(viewsCount)}</span>\n </span>\n )}\n </div>\n </div>\n </div>\n {imageUrl && (\n <div className={styles.previewWrap}>\n <img\n src={imageUrl}\n alt={imageAlt || title}\n className={styles.previewImage}\n decoding=\"async\"\n loading=\"lazy\"\n />\n </div>\n )}\n </div>\n );\n }\n\n return null;\n}\n\nArticlePreviewContent.displayName = 'ArticlePreviewContent';\n"],"names":["formatViews","count","formatReadingTime","minutes","h","m","ArticlePreviewContent","title","description","viewsCount","readingTimeMinutes","author","imageUrl","imageAlt","formattedDate","view","tags","jsxs","cn","styles","jsx","FileTextIcon","e","Typography","EyeIcon","AnimatedClockIcon","AnimatedEyeIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm73.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { default as t, default as s, wasmBinary as n } from "./index.esm386.js";
2
+ import { default as t, default as s, wasmBinary as n } from "./index.esm392.js";
3
3
  export {
4
4
  t as default,
5
5
  s as getWasmInstance,
@@ -2,7 +2,7 @@
2
2
  import { j as f } from "./index.esm36.js";
3
3
  import a, { forwardRef as h } from "react";
4
4
  import l from "./index.esm42.js";
5
- import r from "./index.esm43.js";
5
+ import r from "./index.esm47.js";
6
6
  const c = h(
7
7
  ({ variant: t = "body", size: e, color: p, as: o, children: m, className: y, ...s }, n) => {
8
8
  const u = a.useMemo(() => o || (t.startsWith("h") ? t : t === "body" ? "p" : "span"), [o, t]);
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p={spacing:{unit:4},typography:{fontFamily:'"Martian Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{normal:400,medium:500,semibold:600,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",none:"none"},border:{base:"2px"},borderRadius:{none:"0",round:"50%",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem",full:"9999px"},transitions:{duration:{fast:"150ms",base:"200ms",slow:"300ms",verySlow:"500ms"},easing:{easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",easeOut:"cubic-bezier(0, 0, 0.2, 1)"}},zIndex:{dropdown:1e3,sticky:1020,fixed:1030,modalBackdrop:1040,modal:1050,popover:1060,tooltip:1070}},f={...p,palette:{primary:{main:"#a9d0e7",hover:"#96c4de",active:"#7eb3d4",contrastText:"#171717"},secondary:{main:"#c8d69b",hover:"#d4e0b0",active:"#b8c882",contrastText:"#343b1b"},error:{main:"#ef4444",hover:"#f87171",active:"#dc2626"},warning:{main:"#f59e0b",hover:"#fbbf24",active:"#d97706"},success:{main:"#22c55e",hover:"#4ade80",active:"#16a34a"},text:{primary:"#24292e",secondary:"#5a6342",disabled:"#a3a3a3"},background:{default:"#fbfcee",accent:"#f6e6a5",paper:"#ffffff"},border:{default:"#c8d69b",subtle:"#e5e5e5",strong:"#5a6342"}}},o={...p,palette:{primary:{main:"#6eb3e0",hover:"#85c4ed",active:"#5a9fd4",contrastText:"#ffffff"},secondary:{main:"#65a8d2",hover:"#b8c88a",active:"#96a85e",contrastText:"#0a0a0a"},error:{main:"#ef4444",hover:"#f87171",active:"#dc2626"},warning:{main:"#f59e0b",hover:"#fbbf24",active:"#d97706"},success:{main:"#22c55e",hover:"#4ade80",active:"#16a34a"},text:{primary:"#ffffff",secondary:"#e6e6e6",disabled:"#6b6b6b"},background:{default:"#0a0a0a",accent:"#141414",paper:"#1a1a1a"},border:{default:"#404040",subtle:"#2a2a2a",strong:"#525252"}}};function d(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function u(e){return`--${e.join("-")}`}function l(e,a,r){if(e!=null){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const t=u(a);r[t]=String(e);return}if(Array.isArray(e)){e.forEach((t,n)=>{l(t,[...a,String(n)],r)});return}typeof e=="object"&&Object.entries(e).forEach(([t,n])=>{const i=d(t);l(n,[...a,i],r)})}}function s(e){const a={};return l(e,[],a),a}function b(e,a){if(a==null)return e;if(typeof a!="object"||Array.isArray(a)||typeof e!="object"||Array.isArray(e))return a;const r={...e};return Object.keys(a).forEach(t=>{const n=a[t],i=e[t];n!=null&&typeof n=="object"&&!Array.isArray(n)&&typeof i=="object"&&!Array.isArray(i)&&i!==null?r[t]=b(i,n):r[t]=n}),r}function m(e,a){return b(e,a)}function c(e){return Object.entries(e).map(([a,r])=>`${a}:${r}`).join(";")}function x(e){const a=c(s(f)),r=c(s(o));if(e==="light"||e==="dark")return`[data-theme="light"]{${a}}[data-theme="dark"]{${r}}`;const t=e?e&&typeof e=="object"&&"palette"in e&&e.palette&&"primary"in e.palette?e:m(o,e):o,i=(t===f?"light":t===o?"dark":"custom")==="custom"?`[data-theme="custom"]{${c(s(t))}}`:"";return`[data-theme="light"]{${a}}[data-theme="dark"]{${r}}${i}`}exports.baseTheme=p;exports.darkTheme=o;exports.getCriticalThemeCss=x;exports.lightTheme=f;exports.mergeTheme=m;exports.themeToCssVars=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p={spacing:{unit:4},typography:{fontFamily:'"Martian Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.75rem","4xl":"2.5rem"},fontWeight:{normal:400,medium:500,semibold:600,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",none:"none"},border:{base:"2px"},borderRadius:{none:"0",round:"50%",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem",full:"9999px"},transitions:{duration:{fast:"150ms",base:"200ms",slow:"300ms",verySlow:"500ms"},easing:{easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",easeOut:"cubic-bezier(0, 0, 0.2, 1)"}},zIndex:{dropdown:1e3,sticky:1020,fixed:1030,modalBackdrop:1040,modal:1050,popover:1060,tooltip:1070}},f={...p,palette:{primary:{main:"#a9d0e7",hover:"#96c4de",active:"#7eb3d4",contrastText:"#171717"},secondary:{main:"#c8d69b",hover:"#d4e0b0",active:"#b8c882",contrastText:"#343b1b"},error:{main:"#ef4444",hover:"#f87171",active:"#dc2626"},warning:{main:"#f59e0b",hover:"#fbbf24",active:"#d97706"},success:{main:"#22c55e",hover:"#4ade80",active:"#16a34a"},text:{primary:"#24292e",secondary:"#5a6342",disabled:"#a3a3a3"},background:{default:"#fbfcee",accent:"#f6e6a5",paper:"#ffffff"},border:{default:"#c8d69b",subtle:"#e5e5e5",strong:"#5a6342"}}},o={...p,palette:{primary:{main:"#6eb3e0",hover:"#85c4ed",active:"#5a9fd4",contrastText:"#ffffff"},secondary:{main:"#65a8d2",hover:"#b8c88a",active:"#96a85e",contrastText:"#0a0a0a"},error:{main:"#ef4444",hover:"#f87171",active:"#dc2626"},warning:{main:"#f59e0b",hover:"#fbbf24",active:"#d97706"},success:{main:"#22c55e",hover:"#4ade80",active:"#16a34a"},text:{primary:"#ffffff",secondary:"#e6e6e6",disabled:"#6b6b6b"},background:{default:"#0a0a0a",accent:"#141414",paper:"#1a1a1a"},border:{default:"#404040",subtle:"#2a2a2a",strong:"#525252"}}};function d(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function u(e){return`--${e.join("-")}`}function l(e,a,r){if(e!=null){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const t=u(a);r[t]=String(e);return}if(Array.isArray(e)){e.forEach((t,n)=>{l(t,[...a,String(n)],r)});return}typeof e=="object"&&Object.entries(e).forEach(([t,n])=>{const i=d(t);l(n,[...a,i],r)})}}function s(e){const a={};return l(e,[],a),a}function b(e,a){if(a==null)return e;if(typeof a!="object"||Array.isArray(a)||typeof e!="object"||Array.isArray(e))return a;const r={...e};return Object.keys(a).forEach(t=>{const n=a[t],i=e[t];n!=null&&typeof n=="object"&&!Array.isArray(n)&&typeof i=="object"&&!Array.isArray(i)&&i!==null?r[t]=b(i,n):r[t]=n}),r}function m(e,a){return b(e,a)}function c(e){return Object.entries(e).map(([a,r])=>`${a}:${r}`).join(";")}function x(e){const a=c(s(f)),r=c(s(o));if(e==="light"||e==="dark")return`[data-theme="light"]{${a}}[data-theme="dark"]{${r}}`;const t=e?e&&typeof e=="object"&&"palette"in e&&e.palette&&"primary"in e.palette?e:m(o,e):o,i=(t===f?"light":t===o?"dark":"custom")==="custom"?`[data-theme="custom"]{${c(s(t))}}`:"";return`[data-theme="light"]{${a}}[data-theme="dark"]{${r}}${i}`}exports.baseTheme=p;exports.darkTheme=o;exports.getCriticalThemeCss=x;exports.lightTheme=f;exports.mergeTheme=m;exports.themeToCssVars=s;
2
2
  //# sourceMappingURL=server.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs.js","sources":["../src/tokens/themes/baseTheme.ts","../src/tokens/themes/lightTheme.ts","../src/tokens/themes/darkTheme.ts","../src/tokens/generate-css-vars.ts","../src/utils/deepMerge.ts","../src/tokens/utils.ts","../src/server.ts"],"sourcesContent":["import type { Theme } from '../types';\n\n\nexport const baseTheme: Omit<Theme, 'palette'> = {\n spacing: {\n unit: 4,\n },\n typography: {\n fontFamily: '\"Martian Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontSize: {\n xs: '0.75rem',\n sm: '0.875rem',\n base: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.875rem',\n '4xl': '2.25rem',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n none: 'none',\n },\n border: {\n base: '2px'\n },\n borderRadius: {\n none: '0',\n round: '50%',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n transitions: {\n duration: {\n fast: '150ms',\n base: '200ms',\n slow: '300ms',\n verySlow: '500ms',\n },\n easing: {\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n },\n zIndex: {\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n },\n} as const;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\nexport const lightTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#a9d0e7',\n hover: '#96c4de',\n active: '#7eb3d4',\n contrastText: '#171717',\n },\n secondary: {\n main: '#c8d69b',\n hover: '#d4e0b0',\n active: '#b8c882',\n contrastText: '#343b1b',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#24292e',\n secondary: '#5a6342',\n disabled: '#a3a3a3',\n },\n background: {\n default: '#fbfcee',\n accent: '#f6e6a5',\n paper: '#ffffff',\n },\n border: {\n default: '#c8d69b',\n subtle: '#e5e5e5',\n strong: '#5a6342',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\n/**\n * Темная тема\n * Расширяет базовую тему, добавляя темную цветовую палитру\n */\nexport const darkTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#6eb3e0',\n hover: '#85c4ed',\n active: '#5a9fd4',\n contrastText: '#ffffff',\n },\n secondary: {\n main: '#65a8d2',\n hover: '#b8c88a',\n active: '#96a85e',\n contrastText: '#0a0a0a',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#ffffff',\n secondary: '#e6e6e6',\n disabled: '#6b6b6b',\n },\n background: {\n default: '#0a0a0a',\n accent: '#141414',\n paper: '#1a1a1a',\n },\n border: {\n default: '#404040',\n subtle: '#2a2a2a',\n strong: '#525252',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from './types';\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction pathToCssVarName(path: string[]): string {\n return `--${path.join('-')}`;\n}\n\nfunction traverseObject(\n obj: unknown,\n path: string[],\n vars: Record<string, string>\n): void {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n const varName = pathToCssVarName(path);\n vars[varName] = String(obj);\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, [...path, String(index)], vars);\n });\n return;\n }\n\n if (typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const kebabKey = camelToKebab(key);\n traverseObject(value, [...path, kebabKey], vars);\n });\n }\n}\n\nexport function themeToCssVars(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {};\n traverseObject(theme, [], vars);\n return vars;\n}\n","type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };\n\nexport function deepMerge<T>(target: T, source: DeepPartial<T>): T {\n if (source === null || source === undefined) {\n return target;\n }\n\n if (typeof source !== 'object' || Array.isArray(source)) {\n return source as T;\n }\n\n if (typeof target !== 'object' || Array.isArray(target)) {\n return source as T;\n }\n\n const result = { ...target };\n\n Object.keys(source).forEach((key) => {\n const sourceValue = (source as Record<string, unknown>)[key];\n const targetValue = (target as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n sourceValue !== undefined &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue) &&\n targetValue !== null\n ) {\n (result as Record<string, unknown>)[key] = deepMerge(targetValue, sourceValue);\n } else {\n (result as Record<string, unknown>)[key] = sourceValue;\n }\n });\n\n return result;\n}\n\n","import type { Theme } from './types';\nimport { deepMerge } from '../utils';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport function mergeTheme(\n baseTheme: Theme,\n overrides: DeepPartial<Theme>\n): Theme {\n return deepMerge(baseTheme, overrides);\n}\n\nexport function getSpacingVar(\n spacing: number | string | undefined\n): string | undefined {\n if (spacing === undefined) return undefined;\n\n if (typeof spacing === 'number') {\n return `${spacing * 4}px`;\n }\n\n return spacing;\n}\n","import type { Theme } from './tokens/types';\nimport type { DeepPartial } from './tokens/utils';\nimport { darkTheme, lightTheme } from './tokens/themes';\nimport { themeToCssVars } from './tokens/generate-css-vars';\nimport { mergeTheme } from './tokens/utils';\n\nexport { darkTheme, lightTheme, baseTheme } from './tokens/themes';\nexport { themeToCssVars } from './tokens/generate-css-vars';\nexport { mergeTheme, type DeepPartial } from './tokens/utils';\nexport type { Theme } from './tokens/types';\n\nexport type ThemeMode = 'light' | 'dark';\n\nfunction cssVarsToBlock(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\n/**\n * Возвращает критический CSS в формате data-theme для SSR.\n * Вставьте результат в <style> и добавьте data-theme=\"light\"|\"dark\" на корневой элемент.\n *\n * @param mode — 'light' | 'dark'\n */\nexport function getCriticalThemeCss(mode: ThemeMode): string;\n\n/**\n * @param theme — объект темы (legacy). Определяется light/dark/custom по содержимому.\n */\nexport function getCriticalThemeCss(theme?: Theme | DeepPartial<Theme>): string;\n\nexport function getCriticalThemeCss(\n modeOrTheme?: ThemeMode | Theme | DeepPartial<Theme>\n): string {\n const lightVars = cssVarsToBlock(themeToCssVars(lightTheme));\n const darkVars = cssVarsToBlock(themeToCssVars(darkTheme));\n\n if (modeOrTheme === 'light' || modeOrTheme === 'dark') {\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}`;\n }\n\n const resolvedTheme: Theme = modeOrTheme\n ? modeOrTheme &&\n typeof modeOrTheme === 'object' &&\n 'palette' in modeOrTheme &&\n modeOrTheme.palette &&\n 'primary' in modeOrTheme.palette\n ? (modeOrTheme as Theme)\n : mergeTheme(darkTheme, modeOrTheme as DeepPartial<Theme>)\n : darkTheme;\n\n const themeName =\n resolvedTheme === lightTheme ? 'light' : resolvedTheme === darkTheme ? 'dark' : 'custom';\n const customBlock =\n themeName === 'custom'\n ? `[data-theme=\"custom\"]{${cssVarsToBlock(themeToCssVars(resolvedTheme))}}`\n : '';\n\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}${customBlock}`;\n}\n"],"names":["baseTheme","lightTheme","darkTheme","camelToKebab","str","pathToCssVarName","path","traverseObject","obj","vars","varName","item","index","key","value","kebabKey","themeToCssVars","theme","deepMerge","target","source","result","sourceValue","targetValue","mergeTheme","overrides","cssVarsToBlock","getCriticalThemeCss","modeOrTheme","lightVars","darkVars","resolvedTheme","customBlock"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs.js","sources":["../src/tokens/themes/baseTheme.ts","../src/tokens/themes/lightTheme.ts","../src/tokens/themes/darkTheme.ts","../src/tokens/generate-css-vars.ts","../src/utils/deepMerge.ts","../src/tokens/utils.ts","../src/server.ts"],"sourcesContent":["import type { Theme } from '../types';\n\n\nexport const baseTheme: Omit<Theme, 'palette'> = {\n spacing: {\n unit: 4,\n },\n typography: {\n fontFamily: '\"Martian Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontSize: {\n xs: '0.75rem',\n sm: '0.875rem',\n base: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.75rem',\n '4xl': '2.5rem',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n none: 'none',\n },\n border: {\n base: '2px'\n },\n borderRadius: {\n none: '0',\n round: '50%',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n transitions: {\n duration: {\n fast: '150ms',\n base: '200ms',\n slow: '300ms',\n verySlow: '500ms',\n },\n easing: {\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n },\n zIndex: {\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n },\n} as const;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\nexport const lightTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#a9d0e7',\n hover: '#96c4de',\n active: '#7eb3d4',\n contrastText: '#171717',\n },\n secondary: {\n main: '#c8d69b',\n hover: '#d4e0b0',\n active: '#b8c882',\n contrastText: '#343b1b',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#24292e',\n secondary: '#5a6342',\n disabled: '#a3a3a3',\n },\n background: {\n default: '#fbfcee',\n accent: '#f6e6a5',\n paper: '#ffffff',\n },\n border: {\n default: '#c8d69b',\n subtle: '#e5e5e5',\n strong: '#5a6342',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\n/**\n * Темная тема\n * Расширяет базовую тему, добавляя темную цветовую палитру\n */\nexport const darkTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#6eb3e0',\n hover: '#85c4ed',\n active: '#5a9fd4',\n contrastText: '#ffffff',\n },\n secondary: {\n main: '#65a8d2',\n hover: '#b8c88a',\n active: '#96a85e',\n contrastText: '#0a0a0a',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#ffffff',\n secondary: '#e6e6e6',\n disabled: '#6b6b6b',\n },\n background: {\n default: '#0a0a0a',\n accent: '#141414',\n paper: '#1a1a1a',\n },\n border: {\n default: '#404040',\n subtle: '#2a2a2a',\n strong: '#525252',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from './types';\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction pathToCssVarName(path: string[]): string {\n return `--${path.join('-')}`;\n}\n\nfunction traverseObject(\n obj: unknown,\n path: string[],\n vars: Record<string, string>\n): void {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n const varName = pathToCssVarName(path);\n vars[varName] = String(obj);\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, [...path, String(index)], vars);\n });\n return;\n }\n\n if (typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const kebabKey = camelToKebab(key);\n traverseObject(value, [...path, kebabKey], vars);\n });\n }\n}\n\nexport function themeToCssVars(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {};\n traverseObject(theme, [], vars);\n return vars;\n}\n","type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };\n\nexport function deepMerge<T>(target: T, source: DeepPartial<T>): T {\n if (source === null || source === undefined) {\n return target;\n }\n\n if (typeof source !== 'object' || Array.isArray(source)) {\n return source as T;\n }\n\n if (typeof target !== 'object' || Array.isArray(target)) {\n return source as T;\n }\n\n const result = { ...target };\n\n Object.keys(source).forEach((key) => {\n const sourceValue = (source as Record<string, unknown>)[key];\n const targetValue = (target as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n sourceValue !== undefined &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue) &&\n targetValue !== null\n ) {\n (result as Record<string, unknown>)[key] = deepMerge(targetValue, sourceValue);\n } else {\n (result as Record<string, unknown>)[key] = sourceValue;\n }\n });\n\n return result;\n}\n\n","import type { Theme } from './types';\nimport { deepMerge } from '../utils';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport function mergeTheme(\n baseTheme: Theme,\n overrides: DeepPartial<Theme>\n): Theme {\n return deepMerge(baseTheme, overrides);\n}\n\nexport function getSpacingVar(\n spacing: number | string | undefined\n): string | undefined {\n if (spacing === undefined) return undefined;\n\n if (typeof spacing === 'number') {\n return `${spacing * 4}px`;\n }\n\n return spacing;\n}\n","import type { Theme } from './tokens/types';\nimport type { DeepPartial } from './tokens/utils';\nimport { darkTheme, lightTheme } from './tokens/themes';\nimport { themeToCssVars } from './tokens/generate-css-vars';\nimport { mergeTheme } from './tokens/utils';\n\nexport { darkTheme, lightTheme, baseTheme } from './tokens/themes';\nexport { themeToCssVars } from './tokens/generate-css-vars';\nexport { mergeTheme, type DeepPartial } from './tokens/utils';\nexport type { Theme } from './tokens/types';\n\nexport type ThemeMode = 'light' | 'dark';\n\nfunction cssVarsToBlock(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\n/**\n * Возвращает критический CSS в формате data-theme для SSR.\n * Вставьте результат в <style> и добавьте data-theme=\"light\"|\"dark\" на корневой элемент.\n *\n * @param mode — 'light' | 'dark'\n */\nexport function getCriticalThemeCss(mode: ThemeMode): string;\n\n/**\n * @param theme — объект темы (legacy). Определяется light/dark/custom по содержимому.\n */\nexport function getCriticalThemeCss(theme?: Theme | DeepPartial<Theme>): string;\n\nexport function getCriticalThemeCss(\n modeOrTheme?: ThemeMode | Theme | DeepPartial<Theme>\n): string {\n const lightVars = cssVarsToBlock(themeToCssVars(lightTheme));\n const darkVars = cssVarsToBlock(themeToCssVars(darkTheme));\n\n if (modeOrTheme === 'light' || modeOrTheme === 'dark') {\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}`;\n }\n\n const resolvedTheme: Theme = modeOrTheme\n ? modeOrTheme &&\n typeof modeOrTheme === 'object' &&\n 'palette' in modeOrTheme &&\n modeOrTheme.palette &&\n 'primary' in modeOrTheme.palette\n ? (modeOrTheme as Theme)\n : mergeTheme(darkTheme, modeOrTheme as DeepPartial<Theme>)\n : darkTheme;\n\n const themeName =\n resolvedTheme === lightTheme ? 'light' : resolvedTheme === darkTheme ? 'dark' : 'custom';\n const customBlock =\n themeName === 'custom'\n ? `[data-theme=\"custom\"]{${cssVarsToBlock(themeToCssVars(resolvedTheme))}}`\n : '';\n\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}${customBlock}`;\n}\n"],"names":["baseTheme","lightTheme","darkTheme","camelToKebab","str","pathToCssVarName","path","traverseObject","obj","vars","varName","item","index","key","value","kebabKey","themeToCssVars","theme","deepMerge","target","source","result","sourceValue","targetValue","mergeTheme","overrides","cssVarsToBlock","getCriticalThemeCss","modeOrTheme","lightVars","darkVars","resolvedTheme","customBlock"],"mappings":"gFAGO,MAAMA,EAAoC,CAC/C,QAAS,CACP,KAAM,CAAA,EAER,WAAY,CACV,WAAY,uFACZ,SAAU,CACR,GAAI,UACJ,GAAI,WACJ,KAAM,OACN,GAAI,WACJ,GAAI,UACJ,MAAO,SACP,MAAO,UACP,MAAO,QAAA,EAET,WAAY,CACV,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,KAAM,GAAA,EAER,WAAY,CACV,MAAO,KACP,OAAQ,IACR,QAAS,IAAA,CACX,EAEF,QAAS,CACP,GAAI,kCACJ,KAAM,kEACN,GAAI,wEACJ,GAAI,0EACJ,GAAI,4EACJ,MAAO,wCACP,KAAM,MAAA,EAER,OAAQ,CACN,KAAM,KAAA,EAER,aAAc,CACZ,KAAM,IACN,MAAO,MACP,GAAI,WACJ,KAAM,UACN,GAAI,WACJ,GAAI,SACJ,GAAI,UACJ,MAAO,OACP,KAAM,QAAA,EAER,YAAa,CACX,SAAU,CACR,KAAM,QACN,KAAM,QACN,KAAM,QACN,SAAU,OAAA,EAEZ,OAAQ,CACN,UAAW,+BACX,OAAQ,6BACR,QAAS,4BAAA,CACX,EAEF,OAAQ,CACN,SAAU,IACV,OAAQ,KACR,MAAO,KACP,cAAe,KACf,MAAO,KACP,QAAS,KACT,QAAS,IAAA,CAEb,ECzEaC,EAAa,CACxB,GAAGD,EACH,QAAS,CACP,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,UACR,aAAc,SAAA,EAEhB,UAAW,CACT,KAAM,UACN,MAAO,UACP,OAAQ,UACR,aAAc,SAAA,EAEhB,MAAO,CACL,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,KAAM,CACJ,QAAS,UACT,UAAW,UACX,SAAU,SAAA,EAEZ,WAAY,CACV,QAAS,UACT,OAAQ,UACR,MAAO,SAAA,EAET,OAAQ,CACN,QAAS,UACT,OAAQ,UACR,OAAQ,SAAA,CACV,CAEJ,EC1CaE,EAAY,CACvB,GAAGF,EACH,QAAS,CACP,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,UACR,aAAc,SAAA,EAEhB,UAAW,CACT,KAAM,UACN,MAAO,UACP,OAAQ,UACR,aAAc,SAAA,EAEhB,MAAO,CACL,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,QAAS,CACP,KAAM,UACN,MAAO,UACP,OAAQ,SAAA,EAEV,KAAM,CACJ,QAAS,UACT,UAAW,UACX,SAAU,SAAA,EAEZ,WAAY,CACV,QAAS,UACT,OAAQ,UACR,MAAO,SAAA,EAET,OAAQ,CACN,QAAS,UACT,OAAQ,UACR,OAAQ,SAAA,CACV,CAEJ,ECnDA,SAASG,EAAaC,EAAqB,CACzC,OAAOA,EAAI,QAAQ,+BAAgC,OAAO,EAAE,YAAA,CAC9D,CAEA,SAASC,EAAiBC,EAAwB,CAChD,MAAO,KAAKA,EAAK,KAAK,GAAG,CAAC,EAC5B,CAEA,SAASC,EACPC,EACAF,EACAG,EACM,CACN,GAAID,GAAQ,KAIZ,IAAI,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,UAAW,CAClF,MAAME,EAAUL,EAAiBC,CAAI,EACrCG,EAAKC,CAAO,EAAI,OAAOF,CAAG,EAC1B,MACF,CAEA,GAAI,MAAM,QAAQA,CAAG,EAAG,CACtBA,EAAI,QAAQ,CAACG,EAAMC,IAAU,CAC3BL,EAAeI,EAAM,CAAC,GAAGL,EAAM,OAAOM,CAAK,CAAC,EAAGH,CAAI,CACrD,CAAC,EACD,MACF,CAEI,OAAOD,GAAQ,UACjB,OAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACK,EAAKC,CAAK,IAAM,CAC5C,MAAMC,EAAWZ,EAAaU,CAAG,EACjCN,EAAeO,EAAO,CAAC,GAAGR,EAAMS,CAAQ,EAAGN,CAAI,CACjD,CAAC,EAEL,CAEO,SAASO,EAAeC,EAAsC,CACnE,MAAMR,EAA+B,CAAA,EACrC,OAAAF,EAAeU,EAAO,CAAA,EAAIR,CAAI,EACvBA,CACT,CC1CO,SAASS,EAAaC,EAAWC,EAA2B,CACjE,GAAIA,GAAW,KACb,OAAOD,EAOT,GAJI,OAAOC,GAAW,UAAY,MAAM,QAAQA,CAAM,GAIlD,OAAOD,GAAW,UAAY,MAAM,QAAQA,CAAM,EACpD,OAAOC,EAGT,MAAMC,EAAS,CAAE,GAAGF,CAAA,EAEpB,cAAO,KAAKC,CAAM,EAAE,QAASP,GAAQ,CACnC,MAAMS,EAAeF,EAAmCP,CAAG,EACrDU,EAAeJ,EAAmCN,CAAG,EAGzDS,GAAgB,MAEhB,OAAOA,GAAgB,UACvB,CAAC,MAAM,QAAQA,CAAW,GAC1B,OAAOC,GAAgB,UACvB,CAAC,MAAM,QAAQA,CAAW,GAC1BA,IAAgB,KAEfF,EAAmCR,CAAG,EAAIK,EAAUK,EAAaD,CAAW,EAE5ED,EAAmCR,CAAG,EAAIS,CAE/C,CAAC,EAEMD,CACT,CC9BO,SAASG,EACdxB,EACAyB,EACO,CACP,OAAOP,EAAUlB,EAAWyB,CAAS,CACvC,CCCA,SAASC,EAAejB,EAAsC,CAC5D,OAAO,OAAO,QAAQA,CAAI,EACvB,IAAI,CAAC,CAACI,EAAKC,CAAK,IAAM,GAAGD,CAAG,IAAIC,CAAK,EAAE,EACvC,KAAK,GAAG,CACb,CAeO,SAASa,EACdC,EACQ,CACR,MAAMC,EAAYH,EAAeV,EAAef,CAAU,CAAC,EACrD6B,EAAWJ,EAAeV,EAAed,CAAS,CAAC,EAEzD,GAAI0B,IAAgB,SAAWA,IAAgB,OAC7C,MAAO,wBAAwBC,CAAS,wBAAwBC,CAAQ,IAG1E,MAAMC,EAAuBH,EACzBA,GACA,OAAOA,GAAgB,UACvB,YAAaA,GACbA,EAAY,SACZ,YAAaA,EAAY,QACtBA,EACDJ,EAAWtB,EAAW0B,CAAiC,EACzD1B,EAIE8B,GADJD,IAAkB9B,EAAa,QAAU8B,IAAkB7B,EAAY,OAAS,YAElE,SACV,yBAAyBwB,EAAeV,EAAee,CAAa,CAAC,CAAC,IACtE,GAEN,MAAO,wBAAwBF,CAAS,wBAAwBC,CAAQ,IAAIE,CAAW,EACzF"}
@@ -11,8 +11,8 @@ const p = {
11
11
  lg: "1.125rem",
12
12
  xl: "1.25rem",
13
13
  "2xl": "1.5rem",
14
- "3xl": "1.875rem",
15
- "4xl": "2.25rem"
14
+ "3xl": "1.75rem",
15
+ "4xl": "2.5rem"
16
16
  },
17
17
  fontWeight: {
18
18
  normal: 400,
@@ -1 +1 @@
1
- {"version":3,"file":"server.esm.js","sources":["../src/tokens/themes/baseTheme.ts","../src/tokens/themes/lightTheme.ts","../src/tokens/themes/darkTheme.ts","../src/tokens/generate-css-vars.ts","../src/utils/deepMerge.ts","../src/tokens/utils.ts","../src/server.ts"],"sourcesContent":["import type { Theme } from '../types';\n\n\nexport const baseTheme: Omit<Theme, 'palette'> = {\n spacing: {\n unit: 4,\n },\n typography: {\n fontFamily: '\"Martian Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontSize: {\n xs: '0.75rem',\n sm: '0.875rem',\n base: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.875rem',\n '4xl': '2.25rem',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n none: 'none',\n },\n border: {\n base: '2px'\n },\n borderRadius: {\n none: '0',\n round: '50%',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n transitions: {\n duration: {\n fast: '150ms',\n base: '200ms',\n slow: '300ms',\n verySlow: '500ms',\n },\n easing: {\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n },\n zIndex: {\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n },\n} as const;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\nexport const lightTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#a9d0e7',\n hover: '#96c4de',\n active: '#7eb3d4',\n contrastText: '#171717',\n },\n secondary: {\n main: '#c8d69b',\n hover: '#d4e0b0',\n active: '#b8c882',\n contrastText: '#343b1b',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#24292e',\n secondary: '#5a6342',\n disabled: '#a3a3a3',\n },\n background: {\n default: '#fbfcee',\n accent: '#f6e6a5',\n paper: '#ffffff',\n },\n border: {\n default: '#c8d69b',\n subtle: '#e5e5e5',\n strong: '#5a6342',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\n/**\n * Темная тема\n * Расширяет базовую тему, добавляя темную цветовую палитру\n */\nexport const darkTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#6eb3e0',\n hover: '#85c4ed',\n active: '#5a9fd4',\n contrastText: '#ffffff',\n },\n secondary: {\n main: '#65a8d2',\n hover: '#b8c88a',\n active: '#96a85e',\n contrastText: '#0a0a0a',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#ffffff',\n secondary: '#e6e6e6',\n disabled: '#6b6b6b',\n },\n background: {\n default: '#0a0a0a',\n accent: '#141414',\n paper: '#1a1a1a',\n },\n border: {\n default: '#404040',\n subtle: '#2a2a2a',\n strong: '#525252',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from './types';\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction pathToCssVarName(path: string[]): string {\n return `--${path.join('-')}`;\n}\n\nfunction traverseObject(\n obj: unknown,\n path: string[],\n vars: Record<string, string>\n): void {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n const varName = pathToCssVarName(path);\n vars[varName] = String(obj);\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, [...path, String(index)], vars);\n });\n return;\n }\n\n if (typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const kebabKey = camelToKebab(key);\n traverseObject(value, [...path, kebabKey], vars);\n });\n }\n}\n\nexport function themeToCssVars(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {};\n traverseObject(theme, [], vars);\n return vars;\n}\n","type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };\n\nexport function deepMerge<T>(target: T, source: DeepPartial<T>): T {\n if (source === null || source === undefined) {\n return target;\n }\n\n if (typeof source !== 'object' || Array.isArray(source)) {\n return source as T;\n }\n\n if (typeof target !== 'object' || Array.isArray(target)) {\n return source as T;\n }\n\n const result = { ...target };\n\n Object.keys(source).forEach((key) => {\n const sourceValue = (source as Record<string, unknown>)[key];\n const targetValue = (target as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n sourceValue !== undefined &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue) &&\n targetValue !== null\n ) {\n (result as Record<string, unknown>)[key] = deepMerge(targetValue, sourceValue);\n } else {\n (result as Record<string, unknown>)[key] = sourceValue;\n }\n });\n\n return result;\n}\n\n","import type { Theme } from './types';\nimport { deepMerge } from '../utils';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport function mergeTheme(\n baseTheme: Theme,\n overrides: DeepPartial<Theme>\n): Theme {\n return deepMerge(baseTheme, overrides);\n}\n\nexport function getSpacingVar(\n spacing: number | string | undefined\n): string | undefined {\n if (spacing === undefined) return undefined;\n\n if (typeof spacing === 'number') {\n return `${spacing * 4}px`;\n }\n\n return spacing;\n}\n","import type { Theme } from './tokens/types';\nimport type { DeepPartial } from './tokens/utils';\nimport { darkTheme, lightTheme } from './tokens/themes';\nimport { themeToCssVars } from './tokens/generate-css-vars';\nimport { mergeTheme } from './tokens/utils';\n\nexport { darkTheme, lightTheme, baseTheme } from './tokens/themes';\nexport { themeToCssVars } from './tokens/generate-css-vars';\nexport { mergeTheme, type DeepPartial } from './tokens/utils';\nexport type { Theme } from './tokens/types';\n\nexport type ThemeMode = 'light' | 'dark';\n\nfunction cssVarsToBlock(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\n/**\n * Возвращает критический CSS в формате data-theme для SSR.\n * Вставьте результат в <style> и добавьте data-theme=\"light\"|\"dark\" на корневой элемент.\n *\n * @param mode — 'light' | 'dark'\n */\nexport function getCriticalThemeCss(mode: ThemeMode): string;\n\n/**\n * @param theme — объект темы (legacy). Определяется light/dark/custom по содержимому.\n */\nexport function getCriticalThemeCss(theme?: Theme | DeepPartial<Theme>): string;\n\nexport function getCriticalThemeCss(\n modeOrTheme?: ThemeMode | Theme | DeepPartial<Theme>\n): string {\n const lightVars = cssVarsToBlock(themeToCssVars(lightTheme));\n const darkVars = cssVarsToBlock(themeToCssVars(darkTheme));\n\n if (modeOrTheme === 'light' || modeOrTheme === 'dark') {\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}`;\n }\n\n const resolvedTheme: Theme = modeOrTheme\n ? modeOrTheme &&\n typeof modeOrTheme === 'object' &&\n 'palette' in modeOrTheme &&\n modeOrTheme.palette &&\n 'primary' in modeOrTheme.palette\n ? (modeOrTheme as Theme)\n : mergeTheme(darkTheme, modeOrTheme as DeepPartial<Theme>)\n : darkTheme;\n\n const themeName =\n resolvedTheme === lightTheme ? 'light' : resolvedTheme === darkTheme ? 'dark' : 'custom';\n const customBlock =\n themeName === 'custom'\n ? `[data-theme=\"custom\"]{${cssVarsToBlock(themeToCssVars(resolvedTheme))}}`\n : '';\n\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}${customBlock}`;\n}\n"],"names":["baseTheme","lightTheme","darkTheme","camelToKebab","str","pathToCssVarName","path","traverseObject","obj","vars","varName","item","index","key","value","kebabKey","themeToCssVars","theme","deepMerge","target","source","result","sourceValue","targetValue","mergeTheme","overrides","cssVarsToBlock","getCriticalThemeCss","modeOrTheme","lightVars","darkVars","resolvedTheme","customBlock"],"mappings":"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"}
1
+ {"version":3,"file":"server.esm.js","sources":["../src/tokens/themes/baseTheme.ts","../src/tokens/themes/lightTheme.ts","../src/tokens/themes/darkTheme.ts","../src/tokens/generate-css-vars.ts","../src/utils/deepMerge.ts","../src/tokens/utils.ts","../src/server.ts"],"sourcesContent":["import type { Theme } from '../types';\n\n\nexport const baseTheme: Omit<Theme, 'palette'> = {\n spacing: {\n unit: 4,\n },\n typography: {\n fontFamily: '\"Martian Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontSize: {\n xs: '0.75rem',\n sm: '0.875rem',\n base: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.75rem',\n '4xl': '2.5rem',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n none: 'none',\n },\n border: {\n base: '2px'\n },\n borderRadius: {\n none: '0',\n round: '50%',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n transitions: {\n duration: {\n fast: '150ms',\n base: '200ms',\n slow: '300ms',\n verySlow: '500ms',\n },\n easing: {\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n },\n zIndex: {\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n },\n} as const;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\nexport const lightTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#a9d0e7',\n hover: '#96c4de',\n active: '#7eb3d4',\n contrastText: '#171717',\n },\n secondary: {\n main: '#c8d69b',\n hover: '#d4e0b0',\n active: '#b8c882',\n contrastText: '#343b1b',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#24292e',\n secondary: '#5a6342',\n disabled: '#a3a3a3',\n },\n background: {\n default: '#fbfcee',\n accent: '#f6e6a5',\n paper: '#ffffff',\n },\n border: {\n default: '#c8d69b',\n subtle: '#e5e5e5',\n strong: '#5a6342',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from '../types';\nimport { baseTheme } from './baseTheme';\n\n/**\n * Темная тема\n * Расширяет базовую тему, добавляя темную цветовую палитру\n */\nexport const darkTheme = {\n ...baseTheme,\n palette: {\n primary: {\n main: '#6eb3e0',\n hover: '#85c4ed',\n active: '#5a9fd4',\n contrastText: '#ffffff',\n },\n secondary: {\n main: '#65a8d2',\n hover: '#b8c88a',\n active: '#96a85e',\n contrastText: '#0a0a0a',\n },\n error: {\n main: '#ef4444',\n hover: '#f87171',\n active: '#dc2626',\n },\n warning: {\n main: '#f59e0b',\n hover: '#fbbf24',\n active: '#d97706',\n },\n success: {\n main: '#22c55e',\n hover: '#4ade80',\n active: '#16a34a',\n },\n text: {\n primary: '#ffffff',\n secondary: '#e6e6e6',\n disabled: '#6b6b6b',\n },\n background: {\n default: '#0a0a0a',\n accent: '#141414',\n paper: '#1a1a1a',\n },\n border: {\n default: '#404040',\n subtle: '#2a2a2a',\n strong: '#525252',\n },\n },\n} satisfies Theme;\n\n","import type { Theme } from './types';\n\nfunction camelToKebab(str: string): string {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction pathToCssVarName(path: string[]): string {\n return `--${path.join('-')}`;\n}\n\nfunction traverseObject(\n obj: unknown,\n path: string[],\n vars: Record<string, string>\n): void {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n const varName = pathToCssVarName(path);\n vars[varName] = String(obj);\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, [...path, String(index)], vars);\n });\n return;\n }\n\n if (typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const kebabKey = camelToKebab(key);\n traverseObject(value, [...path, kebabKey], vars);\n });\n }\n}\n\nexport function themeToCssVars(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {};\n traverseObject(theme, [], vars);\n return vars;\n}\n","type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };\n\nexport function deepMerge<T>(target: T, source: DeepPartial<T>): T {\n if (source === null || source === undefined) {\n return target;\n }\n\n if (typeof source !== 'object' || Array.isArray(source)) {\n return source as T;\n }\n\n if (typeof target !== 'object' || Array.isArray(target)) {\n return source as T;\n }\n\n const result = { ...target };\n\n Object.keys(source).forEach((key) => {\n const sourceValue = (source as Record<string, unknown>)[key];\n const targetValue = (target as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n sourceValue !== undefined &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue) &&\n targetValue !== null\n ) {\n (result as Record<string, unknown>)[key] = deepMerge(targetValue, sourceValue);\n } else {\n (result as Record<string, unknown>)[key] = sourceValue;\n }\n });\n\n return result;\n}\n\n","import type { Theme } from './types';\nimport { deepMerge } from '../utils';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport function mergeTheme(\n baseTheme: Theme,\n overrides: DeepPartial<Theme>\n): Theme {\n return deepMerge(baseTheme, overrides);\n}\n\nexport function getSpacingVar(\n spacing: number | string | undefined\n): string | undefined {\n if (spacing === undefined) return undefined;\n\n if (typeof spacing === 'number') {\n return `${spacing * 4}px`;\n }\n\n return spacing;\n}\n","import type { Theme } from './tokens/types';\nimport type { DeepPartial } from './tokens/utils';\nimport { darkTheme, lightTheme } from './tokens/themes';\nimport { themeToCssVars } from './tokens/generate-css-vars';\nimport { mergeTheme } from './tokens/utils';\n\nexport { darkTheme, lightTheme, baseTheme } from './tokens/themes';\nexport { themeToCssVars } from './tokens/generate-css-vars';\nexport { mergeTheme, type DeepPartial } from './tokens/utils';\nexport type { Theme } from './tokens/types';\n\nexport type ThemeMode = 'light' | 'dark';\n\nfunction cssVarsToBlock(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\n/**\n * Возвращает критический CSS в формате data-theme для SSR.\n * Вставьте результат в <style> и добавьте data-theme=\"light\"|\"dark\" на корневой элемент.\n *\n * @param mode — 'light' | 'dark'\n */\nexport function getCriticalThemeCss(mode: ThemeMode): string;\n\n/**\n * @param theme — объект темы (legacy). Определяется light/dark/custom по содержимому.\n */\nexport function getCriticalThemeCss(theme?: Theme | DeepPartial<Theme>): string;\n\nexport function getCriticalThemeCss(\n modeOrTheme?: ThemeMode | Theme | DeepPartial<Theme>\n): string {\n const lightVars = cssVarsToBlock(themeToCssVars(lightTheme));\n const darkVars = cssVarsToBlock(themeToCssVars(darkTheme));\n\n if (modeOrTheme === 'light' || modeOrTheme === 'dark') {\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}`;\n }\n\n const resolvedTheme: Theme = modeOrTheme\n ? modeOrTheme &&\n typeof modeOrTheme === 'object' &&\n 'palette' in modeOrTheme &&\n modeOrTheme.palette &&\n 'primary' in modeOrTheme.palette\n ? (modeOrTheme as Theme)\n : mergeTheme(darkTheme, modeOrTheme as DeepPartial<Theme>)\n : darkTheme;\n\n const themeName =\n resolvedTheme === lightTheme ? 'light' : resolvedTheme === darkTheme ? 'dark' : 'custom';\n const customBlock =\n themeName === 'custom'\n ? `[data-theme=\"custom\"]{${cssVarsToBlock(themeToCssVars(resolvedTheme))}}`\n : '';\n\n return `[data-theme=\"light\"]{${lightVars}}[data-theme=\"dark\"]{${darkVars}}${customBlock}`;\n}\n"],"names":["baseTheme","lightTheme","darkTheme","camelToKebab","str","pathToCssVarName","path","traverseObject","obj","vars","varName","item","index","key","value","kebabKey","themeToCssVars","theme","deepMerge","target","source","result","sourceValue","targetValue","mergeTheme","overrides","cssVarsToBlock","getCriticalThemeCss","modeOrTheme","lightVars","darkVars","resolvedTheme","customBlock"],"mappings":"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"}