@tomny-dev/uzi 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +4 -1
  2. package/dist/components/card/Card.d.ts +7 -5
  3. package/dist/components/card/Card.d.ts.map +1 -1
  4. package/dist/components/surface/Surface.d.ts +16 -0
  5. package/dist/components/surface/Surface.d.ts.map +1 -0
  6. package/dist/components/toolbar/Toolbar.d.ts +13 -0
  7. package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
  8. package/dist/index.cjs +36 -31
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +34 -32
  12. package/dist/index10.cjs.map +1 -1
  13. package/dist/index10.js +19 -15
  14. package/dist/index10.js.map +1 -1
  15. package/dist/index11.cjs +21 -18
  16. package/dist/index11.cjs.map +1 -1
  17. package/dist/index11.js +8 -15
  18. package/dist/index11.js.map +1 -1
  19. package/dist/index12.cjs +7 -14
  20. package/dist/index12.cjs.map +1 -1
  21. package/dist/index12.js +15 -37
  22. package/dist/index12.js.map +1 -1
  23. package/dist/index13.cjs +18 -52
  24. package/dist/index13.cjs.map +1 -1
  25. package/dist/index13.js +15 -77
  26. package/dist/index13.js.map +1 -1
  27. package/dist/index14.cjs +15 -80
  28. package/dist/index14.cjs.map +1 -1
  29. package/dist/index14.js +37 -13
  30. package/dist/index14.js.map +1 -1
  31. package/dist/index15.cjs +52 -18
  32. package/dist/index15.cjs.map +1 -1
  33. package/dist/index15.js +77 -9
  34. package/dist/index15.js.map +1 -1
  35. package/dist/index16.cjs +79 -8
  36. package/dist/index16.cjs.map +1 -1
  37. package/dist/index16.js +13 -41
  38. package/dist/index16.js.map +1 -1
  39. package/dist/index17.cjs +18 -60
  40. package/dist/index17.cjs.map +1 -1
  41. package/dist/index17.js +9 -428
  42. package/dist/index17.js.map +1 -1
  43. package/dist/index18.cjs +8 -430
  44. package/dist/index18.cjs.map +1 -1
  45. package/dist/index18.js +42 -4
  46. package/dist/index18.js.map +1 -1
  47. package/dist/index19.cjs +61 -5
  48. package/dist/index19.cjs.map +1 -1
  49. package/dist/index19.js +430 -13
  50. package/dist/index19.js.map +1 -1
  51. package/dist/index20.cjs +430 -12
  52. package/dist/index20.cjs.map +1 -1
  53. package/dist/index20.js +4 -4
  54. package/dist/index20.js.map +1 -1
  55. package/dist/index21.cjs +5 -5
  56. package/dist/index21.cjs.map +1 -1
  57. package/dist/index21.js +12 -9
  58. package/dist/index21.js.map +1 -1
  59. package/dist/index22.cjs +12 -9
  60. package/dist/index22.cjs.map +1 -1
  61. package/dist/index22.js +4 -4
  62. package/dist/index22.js.map +1 -1
  63. package/dist/index23.cjs +5 -5
  64. package/dist/index23.cjs.map +1 -1
  65. package/dist/index23.js +9 -12
  66. package/dist/index23.js.map +1 -1
  67. package/dist/index24.cjs +9 -12
  68. package/dist/index24.cjs.map +1 -1
  69. package/dist/index24.js +4 -38
  70. package/dist/index24.js.map +1 -1
  71. package/dist/index25.cjs +5 -55
  72. package/dist/index25.cjs.map +1 -1
  73. package/dist/index25.js +11 -116
  74. package/dist/index25.js.map +1 -1
  75. package/dist/index26.cjs +10 -116
  76. package/dist/index26.cjs.map +1 -1
  77. package/dist/index26.js +31 -19
  78. package/dist/index26.js.map +1 -1
  79. package/dist/index27.cjs +42 -24
  80. package/dist/index27.cjs.map +1 -1
  81. package/dist/index27.js +106 -93
  82. package/dist/index27.js.map +1 -1
  83. package/dist/index28.cjs +106 -93
  84. package/dist/index28.cjs.map +1 -1
  85. package/dist/index28.js +26 -23
  86. package/dist/index28.js.map +1 -1
  87. package/dist/index29.cjs +37 -25
  88. package/dist/index29.cjs.map +1 -1
  89. package/dist/index29.js +107 -26
  90. package/dist/index29.js.map +1 -1
  91. package/dist/index30.cjs +110 -37
  92. package/dist/index30.cjs.map +1 -1
  93. package/dist/index30.js +21 -113
  94. package/dist/index30.js.map +1 -1
  95. package/dist/index31.cjs +19 -125
  96. package/dist/index31.cjs.map +1 -1
  97. package/dist/index31.js +26 -17
  98. package/dist/index31.js.map +1 -1
  99. package/dist/index32.cjs +37 -20
  100. package/dist/index32.cjs.map +1 -1
  101. package/dist/index32.js +108 -104
  102. package/dist/index32.js.map +1 -1
  103. package/dist/index33.cjs +122 -103
  104. package/dist/index33.cjs.map +1 -1
  105. package/dist/index33.js +17 -4
  106. package/dist/index33.js.map +1 -1
  107. package/dist/index34.cjs +20 -5
  108. package/dist/index34.cjs.map +1 -1
  109. package/dist/index34.js +106 -58
  110. package/dist/index34.js.map +1 -1
  111. package/dist/index35.cjs +106 -57
  112. package/dist/index35.cjs.map +1 -1
  113. package/dist/index35.js +4 -22
  114. package/dist/index35.js.map +1 -1
  115. package/dist/index36.cjs +5 -31
  116. package/dist/index36.cjs.map +1 -1
  117. package/dist/index36.js +55 -44
  118. package/dist/index36.js.map +1 -1
  119. package/dist/index37.cjs +55 -44
  120. package/dist/index37.cjs.map +1 -1
  121. package/dist/index37.js +21 -31
  122. package/dist/index37.js.map +1 -1
  123. package/dist/index38.cjs +30 -45
  124. package/dist/index38.cjs.map +1 -1
  125. package/dist/index38.js +46 -141
  126. package/dist/index38.js.map +1 -1
  127. package/dist/index39.cjs +46 -141
  128. package/dist/index39.cjs.map +1 -1
  129. package/dist/index39.js +31 -41
  130. package/dist/index39.js.map +1 -1
  131. package/dist/index40.cjs +45 -60
  132. package/dist/index40.cjs.map +1 -1
  133. package/dist/index40.js +139 -163
  134. package/dist/index40.js.map +1 -1
  135. package/dist/index41.cjs +137 -161
  136. package/dist/index41.cjs.map +1 -1
  137. package/dist/index41.js +41 -12
  138. package/dist/index41.js.map +1 -1
  139. package/dist/index42.cjs +60 -14
  140. package/dist/index42.cjs.map +1 -1
  141. package/dist/index42.js +167 -15
  142. package/dist/index42.js.map +1 -1
  143. package/dist/index43.cjs +166 -14
  144. package/dist/index43.cjs.map +1 -1
  145. package/dist/index43.js +12 -15
  146. package/dist/index43.js.map +1 -1
  147. package/dist/index44.cjs +14 -21
  148. package/dist/index44.cjs.map +1 -1
  149. package/dist/index44.js +15 -28
  150. package/dist/index44.js.map +1 -1
  151. package/dist/index45.cjs +14 -27
  152. package/dist/index45.cjs.map +1 -1
  153. package/dist/index45.js +10 -8
  154. package/dist/index45.js.map +1 -1
  155. package/dist/index46.cjs +11 -8
  156. package/dist/index46.cjs.map +1 -1
  157. package/dist/index46.js +22 -15
  158. package/dist/index46.js.map +1 -1
  159. package/dist/index47.cjs +22 -15
  160. package/dist/index47.cjs.map +1 -1
  161. package/dist/index47.js +9 -13
  162. package/dist/index47.js.map +1 -1
  163. package/dist/index48.cjs +10 -16
  164. package/dist/index48.cjs.map +1 -1
  165. package/dist/index48.js +18 -25
  166. package/dist/index48.js.map +1 -1
  167. package/dist/index49.cjs +18 -25
  168. package/dist/index49.cjs.map +1 -1
  169. package/dist/index49.js +17 -14
  170. package/dist/index49.js.map +1 -1
  171. package/dist/index50.cjs +24 -17
  172. package/dist/index50.cjs.map +1 -1
  173. package/dist/index50.js +28 -28
  174. package/dist/index50.js.map +1 -1
  175. package/dist/index51.cjs +27 -28
  176. package/dist/index51.cjs.map +1 -1
  177. package/dist/index51.js +14 -17
  178. package/dist/index51.js.map +1 -1
  179. package/dist/index52.cjs +17 -22
  180. package/dist/index52.cjs.map +1 -1
  181. package/dist/index52.js +23 -23
  182. package/dist/index52.js.map +1 -1
  183. package/dist/index53.cjs +23 -23
  184. package/dist/index53.cjs.map +1 -1
  185. package/dist/index53.js +17 -10
  186. package/dist/index53.js.map +1 -1
  187. package/dist/index54.cjs +22 -11
  188. package/dist/index54.cjs.map +1 -1
  189. package/dist/index54.js +28 -14
  190. package/dist/index54.js.map +1 -1
  191. package/dist/index55.cjs +28 -13
  192. package/dist/index55.cjs.map +1 -1
  193. package/dist/index55.js +17 -11
  194. package/dist/index55.js.map +1 -1
  195. package/dist/index56.cjs +23 -13
  196. package/dist/index56.cjs.map +1 -1
  197. package/dist/index56.js +24 -16
  198. package/dist/index56.js.map +1 -1
  199. package/dist/index57.cjs +24 -15
  200. package/dist/index57.cjs.map +1 -1
  201. package/dist/index57.js +10 -9
  202. package/dist/index57.js.map +1 -1
  203. package/dist/index58.cjs +11 -12
  204. package/dist/index58.cjs.map +1 -1
  205. package/dist/index58.js +12 -87
  206. package/dist/index58.js.map +1 -1
  207. package/dist/index59.cjs +12 -89
  208. package/dist/index59.cjs.map +1 -1
  209. package/dist/index59.js +11 -21
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.cjs +13 -30
  212. package/dist/index60.cjs.map +1 -1
  213. package/dist/index60.js +17 -43
  214. package/dist/index60.js.map +1 -1
  215. package/dist/index61.cjs +16 -44
  216. package/dist/index61.cjs.map +1 -1
  217. package/dist/index61.js +9 -57
  218. package/dist/index61.js.map +1 -1
  219. package/dist/index62.cjs +11 -83
  220. package/dist/index62.cjs.map +1 -1
  221. package/dist/index62.js +83 -426
  222. package/dist/index62.js.map +1 -1
  223. package/dist/index63.cjs +82 -427
  224. package/dist/index63.cjs.map +1 -1
  225. package/dist/index63.js +21 -59
  226. package/dist/index63.js.map +1 -1
  227. package/dist/index64.cjs +30 -87
  228. package/dist/index64.cjs.map +1 -1
  229. package/dist/index64.js +44 -240
  230. package/dist/index64.js.map +1 -1
  231. package/dist/index65.cjs +43 -239
  232. package/dist/index65.cjs.map +1 -1
  233. package/dist/index65.js +57 -43
  234. package/dist/index65.js.map +1 -1
  235. package/dist/index66.cjs +84 -63
  236. package/dist/index66.cjs.map +1 -1
  237. package/dist/index66.js +426 -73
  238. package/dist/index66.js.map +1 -1
  239. package/dist/index67.cjs +426 -71
  240. package/dist/index67.cjs.map +1 -1
  241. package/dist/index67.js +59 -21
  242. package/dist/index67.js.map +1 -1
  243. package/dist/index68.cjs +87 -30
  244. package/dist/index68.cjs.map +1 -1
  245. package/dist/index68.js +233 -88
  246. package/dist/index68.js.map +1 -1
  247. package/dist/index69.cjs +232 -89
  248. package/dist/index69.cjs.map +1 -1
  249. package/dist/index69.js +40 -16
  250. package/dist/index69.js.map +1 -1
  251. package/dist/index70.cjs +56 -20
  252. package/dist/index70.cjs.map +1 -1
  253. package/dist/index70.js +72 -145
  254. package/dist/index70.js.map +1 -1
  255. package/dist/index71.cjs +72 -145
  256. package/dist/index71.cjs.map +1 -1
  257. package/dist/index71.js +25 -0
  258. package/dist/index71.js.map +1 -0
  259. package/dist/index72.cjs +34 -0
  260. package/dist/index72.cjs.map +1 -0
  261. package/dist/index72.js +101 -0
  262. package/dist/index72.js.map +1 -0
  263. package/dist/index73.cjs +105 -0
  264. package/dist/index73.cjs.map +1 -0
  265. package/dist/index73.js +23 -0
  266. package/dist/index73.js.map +1 -0
  267. package/dist/index74.cjs +31 -0
  268. package/dist/index74.cjs.map +1 -0
  269. package/dist/index74.js +159 -0
  270. package/dist/index74.js.map +1 -0
  271. package/dist/index75.cjs +161 -0
  272. package/dist/index75.cjs.map +1 -0
  273. package/dist/index8.js.map +1 -1
  274. package/dist/index9.cjs.map +1 -1
  275. package/dist/index9.js.map +1 -1
  276. package/dist/style.css +215 -45
  277. package/package.json +2 -2
package/dist/index12.js CHANGED
@@ -1,41 +1,19 @@
1
- //#region src/components/modal/modal.module.css
2
- var portalLayer = "uzi-modal-module__portalLayer__t7blc";
3
- var backdrop = "uzi-modal-module__backdrop__IMd3b";
4
- var backdropFadeIn = "uzi-modal-module__backdropFadeIn__GNJdx";
5
- var backdropFadeOut = "uzi-modal-module__backdropFadeOut__R-3K5";
6
- var overlayContent = "uzi-modal-module__overlayContent__0DtbP";
7
- var modalContentIn = "uzi-modal-module__modalContentIn__fub8M";
8
- var modalContentOut = "uzi-modal-module__modalContentOut__elTJ3";
9
- var modal = "uzi-modal-module__modal__Mao59";
10
- var header = "uzi-modal-module__header__PmCaO";
11
- var titles = "uzi-modal-module__titles__IboyQ";
12
- var title = "uzi-modal-module__title__Zd7pL";
13
- var subtitle = "uzi-modal-module__subtitle__t-LRK";
14
- var closeButton = "uzi-modal-module__closeButton__GTiZr";
15
- var body = "uzi-modal-module__body__km6FQ";
16
- var footer = "uzi-modal-module__footer__jWLTv";
17
- var modal_module_default = {
18
- portalLayer,
19
- backdrop,
20
- backdropFadeIn,
21
- backdropFadeOut,
22
- overlayContent,
23
- modalContentIn,
24
- modalContentOut,
25
- modal,
26
- "size-sm": "uzi-modal-module__size-sm__Uu9je",
27
- "size-md": "uzi-modal-module__size-md__TiiWy",
28
- "size-lg": "uzi-modal-module__size-lg__BrTIO",
29
- "size-xl": "uzi-modal-module__size-xl__sj0mh",
30
- header,
31
- titles,
32
- title,
33
- subtitle,
34
- closeButton,
35
- body,
36
- footer
1
+ //#region src/components/pill/pill.module.css
2
+ var pill = "uzi-pill-module__pill__uCKcP";
3
+ var icon = "uzi-pill-module__icon__KQ8zg";
4
+ var content = "uzi-pill-module__content__T7AG1";
5
+ var pill_module_default = {
6
+ pill,
7
+ "size-sm": "uzi-pill-module__size-sm__JANOQ",
8
+ "size-md": "uzi-pill-module__size-md__fdsqR",
9
+ "tone-success": "uzi-pill-module__tone-success__kW2Kf",
10
+ "tone-warning": "uzi-pill-module__tone-warning__Rc5-s",
11
+ "tone-info": "uzi-pill-module__tone-info__0vQrj",
12
+ "tone-danger": "uzi-pill-module__tone-danger__gzNOa",
13
+ icon,
14
+ content
37
15
  };
38
16
  //#endregion
39
- export { backdrop, backdropFadeIn, backdropFadeOut, body, closeButton, modal_module_default as default, footer, header, modal, modalContentIn, modalContentOut, overlayContent, portalLayer, subtitle, title, titles };
17
+ export { content, pill_module_default as default, icon, pill };
40
18
 
41
19
  //# sourceMappingURL=index12.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index12.js","names":[],"sources":["../src/components/modal/modal.module.css"],"sourcesContent":[".portalLayer {\n --uzi-modal-viewport-margin: 32px;\n\n position: fixed;\n inset: 0;\n z-index: var(--uzi-modal-z-index, 1000);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.55);\n}\n\n.backdrop[data-state=\"open\"] {\n animation: backdropFadeIn 160ms ease;\n}\n\n.backdrop[data-state=\"closed\"] {\n animation: backdropFadeOut 140ms ease;\n}\n\n.overlayContent {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n outline: none;\n}\n\n.overlayContent[data-state=\"open\"] {\n animation: modalContentIn 180ms ease;\n}\n\n.overlayContent[data-state=\"closed\"] {\n animation: modalContentOut 140ms ease;\n}\n\n.modal {\n background: var(--background);\n border: 1px solid var(--border);\n border-radius: 14px;\n max-height: calc(100vh - var(--uzi-modal-viewport-margin));\n max-height: calc(100dvh - var(--uzi-modal-viewport-margin));\n overflow: hidden;\n box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Size variants */\n.size-sm { width: min(380px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-md { width: min(500px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-lg { width: min(640px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-xl { width: min(900px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding: 24px 24px 0;\n margin-bottom: 16px;\n}\n\n.titles {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.title {\n font-weight: 700;\n font-size: 16px;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.subtitle {\n font-size: 13px;\n color: var(--muted-foreground);\n line-height: 1.4;\n}\n\n.closeButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--muted-foreground);\n cursor: pointer;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n\n.closeButton:hover {\n background: color-mix(in srgb, var(--foreground) 7%, transparent);\n color: var(--foreground);\n}\n\n.closeButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n overflow-y: auto;\n padding: 0 24px;\n}\n\n.body:last-child {\n padding-bottom: 24px;\n}\n\n.footer {\n display: flex;\n gap: 8px;\n padding: 0 24px 24px;\n margin-top: 20px;\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalContentIn {\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalContentOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(4px) scale(0.98);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index12.js","names":[],"sources":["../src/components/pill/pill.module.css"],"sourcesContent":[".pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 999px;\n border: 1px solid var(--ts-pill-border, var(--border));\n background: var(--ts-pill-bg, color-mix(in srgb, var(--foreground) 4%, transparent));\n color: var(--ts-pill-fg, var(--muted-foreground));\n font-size: 12px;\n font-weight: 700;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n line-height: 1.2;\n white-space: nowrap;\n}\n\n.size-sm {\n padding: 3px 8px;\n font-size: 11px;\n}\n\n.size-md {\n padding: 4px 10px;\n}\n\n.tone-success {\n color: var(--success);\n border-color: color-mix(in srgb, var(--success) 45%, transparent);\n background: color-mix(in srgb, var(--success) 12%, transparent);\n}\n\n.tone-warning {\n color: var(--warning);\n border-color: color-mix(in srgb, var(--warning) 45%, transparent);\n background: color-mix(in srgb, var(--warning) 12%, transparent);\n}\n\n.tone-info {\n color: var(--primary);\n border-color: color-mix(in srgb, var(--primary) 50%, transparent);\n background: color-mix(in srgb, var(--primary) 12%, transparent);\n}\n\n.tone-danger {\n color: var(--destructive);\n border-color: color-mix(in srgb, var(--destructive) 45%, transparent);\n background: color-mix(in srgb, var(--destructive) 12%, transparent);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n}\n\n.content {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n"],"mappings":""}
package/dist/index13.cjs CHANGED
@@ -1,56 +1,22 @@
1
- //#region src/components/modal/modal.module.css
2
- var portalLayer = "uzi-modal-module__portalLayer__t7blc";
3
- var backdrop = "uzi-modal-module__backdrop__IMd3b";
4
- var backdropFadeIn = "uzi-modal-module__backdropFadeIn__GNJdx";
5
- var backdropFadeOut = "uzi-modal-module__backdropFadeOut__R-3K5";
6
- var overlayContent = "uzi-modal-module__overlayContent__0DtbP";
7
- var modalContentIn = "uzi-modal-module__modalContentIn__fub8M";
8
- var modalContentOut = "uzi-modal-module__modalContentOut__elTJ3";
9
- var modal = "uzi-modal-module__modal__Mao59";
10
- var header = "uzi-modal-module__header__PmCaO";
11
- var titles = "uzi-modal-module__titles__IboyQ";
12
- var title = "uzi-modal-module__title__Zd7pL";
13
- var subtitle = "uzi-modal-module__subtitle__t-LRK";
14
- var closeButton = "uzi-modal-module__closeButton__GTiZr";
15
- var body = "uzi-modal-module__body__km6FQ";
16
- var footer = "uzi-modal-module__footer__jWLTv";
17
- var modal_module_default = {
18
- portalLayer,
19
- backdrop,
20
- backdropFadeIn,
21
- backdropFadeOut,
22
- overlayContent,
23
- modalContentIn,
24
- modalContentOut,
25
- modal,
26
- "size-sm": "uzi-modal-module__size-sm__Uu9je",
27
- "size-md": "uzi-modal-module__size-md__TiiWy",
28
- "size-lg": "uzi-modal-module__size-lg__BrTIO",
29
- "size-xl": "uzi-modal-module__size-xl__sj0mh",
30
- header,
31
- titles,
32
- title,
33
- subtitle,
34
- closeButton,
35
- body,
36
- footer
1
+ //#region src/components/pill/pill.module.css
2
+ var pill = "uzi-pill-module__pill__uCKcP";
3
+ var icon = "uzi-pill-module__icon__KQ8zg";
4
+ var content = "uzi-pill-module__content__T7AG1";
5
+ var pill_module_default = {
6
+ pill,
7
+ "size-sm": "uzi-pill-module__size-sm__JANOQ",
8
+ "size-md": "uzi-pill-module__size-md__fdsqR",
9
+ "tone-success": "uzi-pill-module__tone-success__kW2Kf",
10
+ "tone-warning": "uzi-pill-module__tone-warning__Rc5-s",
11
+ "tone-info": "uzi-pill-module__tone-info__0vQrj",
12
+ "tone-danger": "uzi-pill-module__tone-danger__gzNOa",
13
+ icon,
14
+ content
37
15
  };
38
16
  //#endregion
39
- exports.backdrop = backdrop;
40
- exports.backdropFadeIn = backdropFadeIn;
41
- exports.backdropFadeOut = backdropFadeOut;
42
- exports.body = body;
43
- exports.closeButton = closeButton;
44
- exports.default = modal_module_default;
45
- exports.footer = footer;
46
- exports.header = header;
47
- exports.modal = modal;
48
- exports.modalContentIn = modalContentIn;
49
- exports.modalContentOut = modalContentOut;
50
- exports.overlayContent = overlayContent;
51
- exports.portalLayer = portalLayer;
52
- exports.subtitle = subtitle;
53
- exports.title = title;
54
- exports.titles = titles;
17
+ exports.content = content;
18
+ exports.default = pill_module_default;
19
+ exports.icon = icon;
20
+ exports.pill = pill;
55
21
 
56
22
  //# sourceMappingURL=index13.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index13.cjs","names":[],"sources":["../src/components/modal/modal.module.css"],"sourcesContent":[".portalLayer {\n --uzi-modal-viewport-margin: 32px;\n\n position: fixed;\n inset: 0;\n z-index: var(--uzi-modal-z-index, 1000);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.55);\n}\n\n.backdrop[data-state=\"open\"] {\n animation: backdropFadeIn 160ms ease;\n}\n\n.backdrop[data-state=\"closed\"] {\n animation: backdropFadeOut 140ms ease;\n}\n\n.overlayContent {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n outline: none;\n}\n\n.overlayContent[data-state=\"open\"] {\n animation: modalContentIn 180ms ease;\n}\n\n.overlayContent[data-state=\"closed\"] {\n animation: modalContentOut 140ms ease;\n}\n\n.modal {\n background: var(--background);\n border: 1px solid var(--border);\n border-radius: 14px;\n max-height: calc(100vh - var(--uzi-modal-viewport-margin));\n max-height: calc(100dvh - var(--uzi-modal-viewport-margin));\n overflow: hidden;\n box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Size variants */\n.size-sm { width: min(380px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-md { width: min(500px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-lg { width: min(640px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-xl { width: min(900px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding: 24px 24px 0;\n margin-bottom: 16px;\n}\n\n.titles {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.title {\n font-weight: 700;\n font-size: 16px;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.subtitle {\n font-size: 13px;\n color: var(--muted-foreground);\n line-height: 1.4;\n}\n\n.closeButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--muted-foreground);\n cursor: pointer;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n\n.closeButton:hover {\n background: color-mix(in srgb, var(--foreground) 7%, transparent);\n color: var(--foreground);\n}\n\n.closeButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n overflow-y: auto;\n padding: 0 24px;\n}\n\n.body:last-child {\n padding-bottom: 24px;\n}\n\n.footer {\n display: flex;\n gap: 8px;\n padding: 0 24px 24px;\n margin-top: 20px;\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalContentIn {\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalContentOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(4px) scale(0.98);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index13.cjs","names":[],"sources":["../src/components/pill/pill.module.css"],"sourcesContent":[".pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 999px;\n border: 1px solid var(--ts-pill-border, var(--border));\n background: var(--ts-pill-bg, color-mix(in srgb, var(--foreground) 4%, transparent));\n color: var(--ts-pill-fg, var(--muted-foreground));\n font-size: 12px;\n font-weight: 700;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n line-height: 1.2;\n white-space: nowrap;\n}\n\n.size-sm {\n padding: 3px 8px;\n font-size: 11px;\n}\n\n.size-md {\n padding: 4px 10px;\n}\n\n.tone-success {\n color: var(--success);\n border-color: color-mix(in srgb, var(--success) 45%, transparent);\n background: color-mix(in srgb, var(--success) 12%, transparent);\n}\n\n.tone-warning {\n color: var(--warning);\n border-color: color-mix(in srgb, var(--warning) 45%, transparent);\n background: color-mix(in srgb, var(--warning) 12%, transparent);\n}\n\n.tone-info {\n color: var(--primary);\n border-color: color-mix(in srgb, var(--primary) 50%, transparent);\n background: color-mix(in srgb, var(--primary) 12%, transparent);\n}\n\n.tone-danger {\n color: var(--destructive);\n border-color: color-mix(in srgb, var(--destructive) 45%, transparent);\n background: color-mix(in srgb, var(--destructive) 12%, transparent);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n}\n\n.content {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n"],"mappings":""}
package/dist/index13.js CHANGED
@@ -1,84 +1,22 @@
1
- "use client";
2
1
  import { cx } from "./index3.js";
3
- import modal_module_default from "./index12.js";
2
+ import pill_module_default from "./index12.js";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
5
- import * as DialogPrimitive from "@radix-ui/react-dialog";
6
- //#region src/components/modal/Modal.tsx
7
- function ModalOverlay({ open, onClose, className, children }) {
8
- return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
9
- open,
10
- onOpenChange: (nextOpen) => {
11
- if (!nextOpen) onClose();
12
- },
13
- children: /* @__PURE__ */ jsx(DialogPrimitive.Portal, { children: /* @__PURE__ */ jsxs("div", {
14
- className: modal_module_default.portalLayer,
15
- children: [/* @__PURE__ */ jsx(DialogPrimitive.Overlay, { className: cx(modal_module_default.backdrop, className) }), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
16
- className: modal_module_default.overlayContent,
17
- children
18
- })]
19
- }) })
20
- });
21
- }
22
- function Modal({ open, onClose, title, subtitle, size = "md", children, footer }) {
23
- return /* @__PURE__ */ jsx(ModalOverlay, {
24
- open,
25
- onClose,
26
- children: /* @__PURE__ */ jsxs("div", {
27
- className: cx(modal_module_default.modal, modal_module_default[`size-${size}`]),
28
- children: [
29
- /* @__PURE__ */ jsxs("div", {
30
- className: modal_module_default.header,
31
- children: [/* @__PURE__ */ jsxs("div", {
32
- className: modal_module_default.titles,
33
- children: [/* @__PURE__ */ jsx(DialogPrimitive.Title, {
34
- className: modal_module_default.title,
35
- children: title
36
- }), subtitle ? /* @__PURE__ */ jsx(DialogPrimitive.Description, {
37
- className: modal_module_default.subtitle,
38
- children: subtitle
39
- }) : null]
40
- }), /* @__PURE__ */ jsx(DialogPrimitive.Close, {
41
- asChild: true,
42
- children: /* @__PURE__ */ jsx("button", {
43
- className: modal_module_default.closeButton,
44
- "aria-label": "Close",
45
- children: /* @__PURE__ */ jsxs("svg", {
46
- width: "14",
47
- height: "14",
48
- viewBox: "0 0 24 24",
49
- fill: "none",
50
- stroke: "currentColor",
51
- strokeWidth: "2.5",
52
- strokeLinecap: "round",
53
- strokeLinejoin: "round",
54
- children: [/* @__PURE__ */ jsx("line", {
55
- x1: "18",
56
- y1: "6",
57
- x2: "6",
58
- y2: "18"
59
- }), /* @__PURE__ */ jsx("line", {
60
- x1: "6",
61
- y1: "6",
62
- x2: "18",
63
- y2: "18"
64
- })]
65
- })
66
- })
67
- })]
68
- }),
69
- /* @__PURE__ */ jsx("div", {
70
- className: modal_module_default.body,
71
- children
72
- }),
73
- footer && /* @__PURE__ */ jsx("div", {
74
- className: modal_module_default.footer,
75
- children: footer
76
- })
77
- ]
78
- })
4
+ //#region src/components/pill/Pill.tsx
5
+ function Pill({ as, tone = "neutral", size = "md", icon, className, children, ...rest }) {
6
+ return /* @__PURE__ */ jsxs(as ?? "span", {
7
+ className: cx(pill_module_default.pill, pill_module_default[`tone-${tone}`], pill_module_default[`size-${size}`], className),
8
+ ...rest,
9
+ children: [icon ? /* @__PURE__ */ jsx("span", {
10
+ className: pill_module_default.icon,
11
+ "aria-hidden": "true",
12
+ children: icon
13
+ }) : null, /* @__PURE__ */ jsx("span", {
14
+ className: pill_module_default.content,
15
+ children
16
+ })]
79
17
  });
80
18
  }
81
19
  //#endregion
82
- export { Modal, ModalOverlay };
20
+ export { Pill };
83
21
 
84
22
  //# sourceMappingURL=index13.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index13.js","names":[],"sources":["../src/components/modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./modal.module.css\";\n\n// ── ModalOverlay ─────────────────────────────────────────────────────────────\n// Bare backdrop + container. No opinions on layout inside.\n// Use this when you need a full-custom layout (e.g. wide media modals).\n\nexport type ModalOverlayProps = {\n open: boolean;\n onClose: () => void;\n /** Extra class applied to the backdrop */\n className?: string;\n children: ReactNode;\n};\n\nexport function ModalOverlay({ open, onClose, className, children }: ModalOverlayProps) {\n return (\n <DialogPrimitive.Root\n open={open}\n onOpenChange={(nextOpen: boolean) => {\n if (!nextOpen) onClose();\n }}\n >\n <DialogPrimitive.Portal>\n <div className={styles.portalLayer}>\n <DialogPrimitive.Overlay className={cx(styles.backdrop, className)} />\n <DialogPrimitive.Content className={styles.overlayContent}>\n {children}\n </DialogPrimitive.Content>\n </div>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n\n// ── Modal ─────────────────────────────────────────────────────────────────────\n// Opinionated dialog: header (title + close button), scrollable body, footer.\n\nexport type ModalSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type ModalProps = {\n open: boolean;\n onClose: () => void;\n title: string;\n subtitle?: string;\n size?: ModalSize;\n children: ReactNode;\n footer?: ReactNode;\n};\n\nexport function Modal({ open, onClose, title, subtitle, size = \"md\", children, footer }: ModalProps) {\n return (\n <ModalOverlay open={open} onClose={onClose}>\n <div className={cx(styles.modal, styles[`size-${size}`])}>\n <div className={styles.header}>\n <div className={styles.titles}>\n <DialogPrimitive.Title className={styles.title}>{title}</DialogPrimitive.Title>\n {subtitle ? (\n <DialogPrimitive.Description className={styles.subtitle}>\n {subtitle}\n </DialogPrimitive.Description>\n ) : null}\n </div>\n <DialogPrimitive.Close asChild>\n <button className={styles.closeButton} aria-label=\"Close\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </DialogPrimitive.Close>\n </div>\n\n <div className={styles.body}>{children}</div>\n\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </ModalOverlay>\n );\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,aAAa,EAAE,MAAM,SAAS,WAAW,YAA+B;CACtF,OACE,oBAAC,gBAAgB,MAAjB;EACQ;EACN,eAAe,aAAsB;GACnC,IAAI,CAAC,UAAU,QAAQ;EACzB;YAEA,oBAAC,gBAAgB,QAAjB,EAAA,UACE,qBAAC,OAAD;GAAK,WAAW,qBAAO;aAAvB,CACE,oBAAC,gBAAgB,SAAjB,EAAyB,WAAW,GAAG,qBAAO,UAAU,SAAS,EAAI,CAAA,GACrE,oBAAC,gBAAgB,SAAjB;IAAyB,WAAW,qBAAO;IACxC;GACsB,CAAA,CACtB;KACiB,CAAA;CACJ,CAAA;AAE1B;AAiBA,SAAgB,MAAM,EAAE,MAAM,SAAS,OAAO,UAAU,OAAO,MAAM,UAAU,UAAsB;CACnG,OACE,oBAAC,cAAD;EAAoB;EAAe;YACjC,qBAAC,OAAD;GAAK,WAAW,GAAG,qBAAO,OAAO,qBAAO,QAAQ,OAAO;aAAvD;IACE,qBAAC,OAAD;KAAK,WAAW,qBAAO;eAAvB,CACE,qBAAC,OAAD;MAAK,WAAW,qBAAO;gBAAvB,CACE,oBAAC,gBAAgB,OAAjB;OAAuB,WAAW,qBAAO;iBAAQ;MAA6B,CAAA,GAC7E,WACC,oBAAC,gBAAgB,aAAjB;OAA6B,WAAW,qBAAO;iBAC5C;MAC0B,CAAA,IAC3B,IACD;SACL,oBAAC,gBAAgB,OAAjB;MAAuB,SAAA;gBACrB,oBAAC,UAAD;OAAQ,WAAW,qBAAO;OAAa,cAAW;iBAChD,qBAAC,OAAD;QAAK,OAAM;QAAK,QAAO;QAAK,SAAQ;QAAY,MAAK;QAAO,QAAO;QAAe,aAAY;QAAM,eAAc;QAAQ,gBAAe;kBAAzI,CACE,oBAAC,QAAD;SAAM,IAAG;SAAK,IAAG;SAAI,IAAG;SAAI,IAAG;QAAM,CAAA,GACrC,oBAAC,QAAD;SAAM,IAAG;SAAI,IAAG;SAAI,IAAG;SAAK,IAAG;QAAM,CAAA,CAClC;;MACC,CAAA;KACa,CAAA,CACpB;;IAEL,oBAAC,OAAD;KAAK,WAAW,qBAAO;KAAO;IAAc,CAAA;IAE3C,UAAU,oBAAC,OAAD;KAAK,WAAW,qBAAO;eAAS;IAAY,CAAA;GACpD;;CACO,CAAA;AAElB"}
1
+ {"version":3,"file":"index13.js","names":[],"sources":["../src/components/pill/Pill.tsx"],"sourcesContent":["/**\n * Compact label component for status chips and tags.\n *\n * @remarks\n * Supports tone and size presets, and can render any inline element.\n *\n * @param props.as - Element to render (defaults to `span`).\n * @param props.tone - Visual tone variant.\n * @param props.size - Size preset.\n * @param props.icon - Optional leading icon.\n */\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./pill.module.css\";\n\nexport type PillTone = \"neutral\" | \"success\" | \"warning\" | \"info\" | \"danger\";\nexport type PillSize = \"sm\" | \"md\";\n\ntype PillElement = \"span\" | \"div\" | \"button\";\n\nexport type PillProps = HTMLAttributes<HTMLElement> & {\n /** Optional rendered element; defaults to `span`. */\n as?: PillElement;\n /** Visual tone; adjusts color and border. */\n tone?: PillTone;\n /** Size preset. */\n size?: PillSize;\n /** Leading icon node (not focusable). */\n icon?: ReactNode;\n};\n\nexport function Pill({\n as,\n tone = \"neutral\",\n size = \"md\",\n icon,\n className,\n children,\n ...rest\n}: PillProps) {\n const Component: PillElement = as ?? \"span\";\n const classes = cx(styles.pill, styles[`tone-${tone}`], styles[`size-${size}`], className);\n\n return (\n <Component className={classes} {...rest}>\n {icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className={styles.content}>{children}</span>\n </Component>\n );\n}\n"],"mappings":";;;;AA+BA,SAAgB,KAAK,EACnB,IACA,OAAO,WACP,OAAO,MACP,MACA,WACA,UACA,GAAG,QACS;CAIZ,OACE,qBAJ6B,MAAM,QAInC;EAAW,WAHG,GAAG,oBAAO,MAAM,oBAAO,QAAQ,SAAS,oBAAO,QAAQ,SAAS,SAGxD;EAAS,GAAI;YAAnC,CACG,OACC,oBAAC,QAAD;GAAM,WAAW,oBAAO;GAAM,eAAY;aACvC;EACG,CAAA,IACJ,MACJ,oBAAC,QAAD;GAAM,WAAW,oBAAO;GAAU;EAAe,CAAA,CACxC;;AAEf"}
package/dist/index14.cjs CHANGED
@@ -1,87 +1,22 @@
1
- "use client";
2
- const require_runtime = require("./index2.cjs");
3
1
  const require_cx = require("./index4.cjs");
4
- const require_modal_module = require("./index13.cjs");
2
+ const require_pill_module = require("./index13.cjs");
5
3
  let react_jsx_runtime = require("react/jsx-runtime");
6
- let _radix_ui_react_dialog = require("@radix-ui/react-dialog");
7
- _radix_ui_react_dialog = require_runtime.__toESM(_radix_ui_react_dialog, 1);
8
- //#region src/components/modal/Modal.tsx
9
- function ModalOverlay({ open, onClose, className, children }) {
10
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Root, {
11
- open,
12
- onOpenChange: (nextOpen) => {
13
- if (!nextOpen) onClose();
14
- },
15
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Portal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
16
- className: require_modal_module.default.portalLayer,
17
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Overlay, { className: require_cx.cx(require_modal_module.default.backdrop, className) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Content, {
18
- className: require_modal_module.default.overlayContent,
19
- children
20
- })]
21
- }) })
22
- });
23
- }
24
- function Modal({ open, onClose, title, subtitle, size = "md", children, footer }) {
25
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ModalOverlay, {
26
- open,
27
- onClose,
28
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
29
- className: require_cx.cx(require_modal_module.default.modal, require_modal_module.default[`size-${size}`]),
30
- children: [
31
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
32
- className: require_modal_module.default.header,
33
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
34
- className: require_modal_module.default.titles,
35
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Title, {
36
- className: require_modal_module.default.title,
37
- children: title
38
- }), subtitle ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Description, {
39
- className: require_modal_module.default.subtitle,
40
- children: subtitle
41
- }) : null]
42
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Close, {
43
- asChild: true,
44
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
45
- className: require_modal_module.default.closeButton,
46
- "aria-label": "Close",
47
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
48
- width: "14",
49
- height: "14",
50
- viewBox: "0 0 24 24",
51
- fill: "none",
52
- stroke: "currentColor",
53
- strokeWidth: "2.5",
54
- strokeLinecap: "round",
55
- strokeLinejoin: "round",
56
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
57
- x1: "18",
58
- y1: "6",
59
- x2: "6",
60
- y2: "18"
61
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
62
- x1: "6",
63
- y1: "6",
64
- x2: "18",
65
- y2: "18"
66
- })]
67
- })
68
- })
69
- })]
70
- }),
71
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
72
- className: require_modal_module.default.body,
73
- children
74
- }),
75
- footer && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
76
- className: require_modal_module.default.footer,
77
- children: footer
78
- })
79
- ]
80
- })
4
+ //#region src/components/pill/Pill.tsx
5
+ function Pill({ as, tone = "neutral", size = "md", icon, className, children, ...rest }) {
6
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(as ?? "span", {
7
+ className: require_cx.cx(require_pill_module.default.pill, require_pill_module.default[`tone-${tone}`], require_pill_module.default[`size-${size}`], className),
8
+ ...rest,
9
+ children: [icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10
+ className: require_pill_module.default.icon,
11
+ "aria-hidden": "true",
12
+ children: icon
13
+ }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
14
+ className: require_pill_module.default.content,
15
+ children
16
+ })]
81
17
  });
82
18
  }
83
19
  //#endregion
84
- exports.Modal = Modal;
85
- exports.ModalOverlay = ModalOverlay;
20
+ exports.Pill = Pill;
86
21
 
87
22
  //# sourceMappingURL=index14.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index14.cjs","names":[],"sources":["../src/components/modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./modal.module.css\";\n\n// ── ModalOverlay ─────────────────────────────────────────────────────────────\n// Bare backdrop + container. No opinions on layout inside.\n// Use this when you need a full-custom layout (e.g. wide media modals).\n\nexport type ModalOverlayProps = {\n open: boolean;\n onClose: () => void;\n /** Extra class applied to the backdrop */\n className?: string;\n children: ReactNode;\n};\n\nexport function ModalOverlay({ open, onClose, className, children }: ModalOverlayProps) {\n return (\n <DialogPrimitive.Root\n open={open}\n onOpenChange={(nextOpen: boolean) => {\n if (!nextOpen) onClose();\n }}\n >\n <DialogPrimitive.Portal>\n <div className={styles.portalLayer}>\n <DialogPrimitive.Overlay className={cx(styles.backdrop, className)} />\n <DialogPrimitive.Content className={styles.overlayContent}>\n {children}\n </DialogPrimitive.Content>\n </div>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n\n// ── Modal ─────────────────────────────────────────────────────────────────────\n// Opinionated dialog: header (title + close button), scrollable body, footer.\n\nexport type ModalSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type ModalProps = {\n open: boolean;\n onClose: () => void;\n title: string;\n subtitle?: string;\n size?: ModalSize;\n children: ReactNode;\n footer?: ReactNode;\n};\n\nexport function Modal({ open, onClose, title, subtitle, size = \"md\", children, footer }: ModalProps) {\n return (\n <ModalOverlay open={open} onClose={onClose}>\n <div className={cx(styles.modal, styles[`size-${size}`])}>\n <div className={styles.header}>\n <div className={styles.titles}>\n <DialogPrimitive.Title className={styles.title}>{title}</DialogPrimitive.Title>\n {subtitle ? (\n <DialogPrimitive.Description className={styles.subtitle}>\n {subtitle}\n </DialogPrimitive.Description>\n ) : null}\n </div>\n <DialogPrimitive.Close asChild>\n <button className={styles.closeButton} aria-label=\"Close\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </DialogPrimitive.Close>\n </div>\n\n <div className={styles.body}>{children}</div>\n\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </ModalOverlay>\n );\n}\n"],"mappings":";;;;;;;;AAmBA,SAAgB,aAAa,EAAE,MAAM,SAAS,WAAW,YAA+B;CACtF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,MAAjB;EACQ;EACN,eAAe,aAAsB;GACnC,IAAI,CAAC,UAAU,QAAQ;EACzB;YAEA,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,QAAjB,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAW,qBAAA,QAAO;aAAvB,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,SAAjB,EAAyB,WAAW,WAAA,GAAG,qBAAA,QAAO,UAAU,SAAS,EAAI,CAAA,GACrE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,SAAjB;IAAyB,WAAW,qBAAA,QAAO;IACxC;GACsB,CAAA,CACtB;KACiB,CAAA;CACJ,CAAA;AAE1B;AAiBA,SAAgB,MAAM,EAAE,MAAM,SAAS,OAAO,UAAU,OAAO,MAAM,UAAU,UAAsB;CACnG,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;EAAoB;EAAe;YACjC,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAW,WAAA,GAAG,qBAAA,QAAO,OAAO,qBAAA,QAAO,QAAQ,OAAO;aAAvD;IACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAW,qBAAA,QAAO;eAAvB,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAW,qBAAA,QAAO;gBAAvB,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,OAAjB;OAAuB,WAAW,qBAAA,QAAO;iBAAQ;MAA6B,CAAA,GAC7E,WACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,aAAjB;OAA6B,WAAW,qBAAA,QAAO;iBAC5C;MAC0B,CAAA,IAC3B,IACD;SACL,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,OAAjB;MAAuB,SAAA;gBACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;OAAQ,WAAW,qBAAA,QAAO;OAAa,cAAW;iBAChD,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;QAAK,OAAM;QAAK,QAAO;QAAK,SAAQ;QAAY,MAAK;QAAO,QAAO;QAAe,aAAY;QAAM,eAAc;QAAQ,gBAAe;kBAAzI,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;SAAM,IAAG;SAAK,IAAG;SAAI,IAAG;SAAI,IAAG;QAAM,CAAA,GACrC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;SAAM,IAAG;SAAI,IAAG;SAAI,IAAG;SAAK,IAAG;QAAM,CAAA,CAClC;;MACC,CAAA;KACa,CAAA,CACpB;;IAEL,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAW,qBAAA,QAAO;KAAO;IAAc,CAAA;IAE3C,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAW,qBAAA,QAAO;eAAS;IAAY,CAAA;GACpD;;CACO,CAAA;AAElB"}
1
+ {"version":3,"file":"index14.cjs","names":[],"sources":["../src/components/pill/Pill.tsx"],"sourcesContent":["/**\n * Compact label component for status chips and tags.\n *\n * @remarks\n * Supports tone and size presets, and can render any inline element.\n *\n * @param props.as - Element to render (defaults to `span`).\n * @param props.tone - Visual tone variant.\n * @param props.size - Size preset.\n * @param props.icon - Optional leading icon.\n */\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./pill.module.css\";\n\nexport type PillTone = \"neutral\" | \"success\" | \"warning\" | \"info\" | \"danger\";\nexport type PillSize = \"sm\" | \"md\";\n\ntype PillElement = \"span\" | \"div\" | \"button\";\n\nexport type PillProps = HTMLAttributes<HTMLElement> & {\n /** Optional rendered element; defaults to `span`. */\n as?: PillElement;\n /** Visual tone; adjusts color and border. */\n tone?: PillTone;\n /** Size preset. */\n size?: PillSize;\n /** Leading icon node (not focusable). */\n icon?: ReactNode;\n};\n\nexport function Pill({\n as,\n tone = \"neutral\",\n size = \"md\",\n icon,\n className,\n children,\n ...rest\n}: PillProps) {\n const Component: PillElement = as ?? \"span\";\n const classes = cx(styles.pill, styles[`tone-${tone}`], styles[`size-${size}`], className);\n\n return (\n <Component className={classes} {...rest}>\n {icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className={styles.content}>{children}</span>\n </Component>\n );\n}\n"],"mappings":";;;;AA+BA,SAAgB,KAAK,EACnB,IACA,OAAO,WACP,OAAO,MACP,MACA,WACA,UACA,GAAG,QACS;CAIZ,OACE,iBAAA,GAAA,kBAAA,KAAA,CAJ6B,MAAM,QAInC;EAAW,WAHG,WAAA,GAAG,oBAAA,QAAO,MAAM,oBAAA,QAAO,QAAQ,SAAS,oBAAA,QAAO,QAAQ,SAAS,SAGxD;EAAS,GAAI;YAAnC,CACG,OACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,WAAW,oBAAA,QAAO;GAAM,eAAY;aACvC;EACG,CAAA,IACJ,MACJ,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,WAAW,oBAAA,QAAO;GAAU;EAAe,CAAA,CACxC;;AAEf"}
package/dist/index14.js CHANGED
@@ -1,17 +1,41 @@
1
- //#region src/components/alert/alert.module.css
2
- var alert = "uzi-alert-module__alert__7Bt6c";
3
- var success = "uzi-alert-module__success__apdFG";
4
- var error = "uzi-alert-module__error__KLgi1";
5
- var warning = "uzi-alert-module__warning__F4fpk";
6
- var info = "uzi-alert-module__info__1IKHt";
7
- var alert_module_default = {
8
- alert,
9
- success,
10
- error,
11
- warning,
12
- info
1
+ //#region src/components/modal/modal.module.css
2
+ var portalLayer = "uzi-modal-module__portalLayer__t7blc";
3
+ var backdrop = "uzi-modal-module__backdrop__IMd3b";
4
+ var backdropFadeIn = "uzi-modal-module__backdropFadeIn__GNJdx";
5
+ var backdropFadeOut = "uzi-modal-module__backdropFadeOut__R-3K5";
6
+ var overlayContent = "uzi-modal-module__overlayContent__0DtbP";
7
+ var modalContentIn = "uzi-modal-module__modalContentIn__fub8M";
8
+ var modalContentOut = "uzi-modal-module__modalContentOut__elTJ3";
9
+ var modal = "uzi-modal-module__modal__Mao59";
10
+ var header = "uzi-modal-module__header__PmCaO";
11
+ var titles = "uzi-modal-module__titles__IboyQ";
12
+ var title = "uzi-modal-module__title__Zd7pL";
13
+ var subtitle = "uzi-modal-module__subtitle__t-LRK";
14
+ var closeButton = "uzi-modal-module__closeButton__GTiZr";
15
+ var body = "uzi-modal-module__body__km6FQ";
16
+ var footer = "uzi-modal-module__footer__jWLTv";
17
+ var modal_module_default = {
18
+ portalLayer,
19
+ backdrop,
20
+ backdropFadeIn,
21
+ backdropFadeOut,
22
+ overlayContent,
23
+ modalContentIn,
24
+ modalContentOut,
25
+ modal,
26
+ "size-sm": "uzi-modal-module__size-sm__Uu9je",
27
+ "size-md": "uzi-modal-module__size-md__TiiWy",
28
+ "size-lg": "uzi-modal-module__size-lg__BrTIO",
29
+ "size-xl": "uzi-modal-module__size-xl__sj0mh",
30
+ header,
31
+ titles,
32
+ title,
33
+ subtitle,
34
+ closeButton,
35
+ body,
36
+ footer
13
37
  };
14
38
  //#endregion
15
- export { alert, alert_module_default as default, error, info, success, warning };
39
+ export { backdrop, backdropFadeIn, backdropFadeOut, body, closeButton, modal_module_default as default, footer, header, modal, modalContentIn, modalContentOut, overlayContent, portalLayer, subtitle, title, titles };
16
40
 
17
41
  //# sourceMappingURL=index14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index14.js","names":[],"sources":["../src/components/alert/alert.module.css"],"sourcesContent":[".alert {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n border-radius: 0.375rem;\n border: 1px solid;\n padding: 0.625rem 0.875rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.success {\n border-color: color-mix(in srgb, var(--success) 35%, transparent);\n background: color-mix(in srgb, var(--success) 10%, transparent);\n color: color-mix(in srgb, var(--success) 90%, var(--foreground));\n}\n\n.error {\n border-color: color-mix(in srgb, var(--destructive) 35%, transparent);\n background: color-mix(in srgb, var(--destructive) 10%, transparent);\n color: color-mix(in srgb, var(--destructive) 90%, var(--foreground));\n}\n\n.warning {\n border-color: color-mix(in srgb, var(--warning) 35%, transparent);\n background: color-mix(in srgb, var(--warning) 10%, transparent);\n color: color-mix(in srgb, var(--warning) 90%, var(--foreground));\n}\n\n.info {\n border-color: color-mix(in srgb, var(--primary) 35%, transparent);\n background: color-mix(in srgb, var(--primary) 10%, transparent);\n color: color-mix(in srgb, var(--primary) 90%, var(--foreground));\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index14.js","names":[],"sources":["../src/components/modal/modal.module.css"],"sourcesContent":[".portalLayer {\n --uzi-modal-viewport-margin: 32px;\n\n position: fixed;\n inset: 0;\n z-index: var(--uzi-modal-z-index, 1000);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.55);\n}\n\n.backdrop[data-state=\"open\"] {\n animation: backdropFadeIn 160ms ease;\n}\n\n.backdrop[data-state=\"closed\"] {\n animation: backdropFadeOut 140ms ease;\n}\n\n.overlayContent {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n outline: none;\n}\n\n.overlayContent[data-state=\"open\"] {\n animation: modalContentIn 180ms ease;\n}\n\n.overlayContent[data-state=\"closed\"] {\n animation: modalContentOut 140ms ease;\n}\n\n.modal {\n background: var(--background);\n border: 1px solid var(--border);\n border-radius: 14px;\n max-height: calc(100vh - var(--uzi-modal-viewport-margin));\n max-height: calc(100dvh - var(--uzi-modal-viewport-margin));\n overflow: hidden;\n box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Size variants */\n.size-sm { width: min(380px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-md { width: min(500px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-lg { width: min(640px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-xl { width: min(900px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding: 24px 24px 0;\n margin-bottom: 16px;\n}\n\n.titles {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.title {\n font-weight: 700;\n font-size: 16px;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.subtitle {\n font-size: 13px;\n color: var(--muted-foreground);\n line-height: 1.4;\n}\n\n.closeButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--muted-foreground);\n cursor: pointer;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n\n.closeButton:hover {\n background: color-mix(in srgb, var(--foreground) 7%, transparent);\n color: var(--foreground);\n}\n\n.closeButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n overflow-y: auto;\n padding: 0 24px;\n}\n\n.body:last-child {\n padding-bottom: 24px;\n}\n\n.footer {\n display: flex;\n gap: 8px;\n padding: 0 24px 24px;\n margin-top: 20px;\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalContentIn {\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalContentOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(4px) scale(0.98);\n }\n}\n"],"mappings":""}
package/dist/index15.cjs CHANGED
@@ -1,22 +1,56 @@
1
- //#region src/components/alert/alert.module.css
2
- var alert = "uzi-alert-module__alert__7Bt6c";
3
- var success = "uzi-alert-module__success__apdFG";
4
- var error = "uzi-alert-module__error__KLgi1";
5
- var warning = "uzi-alert-module__warning__F4fpk";
6
- var info = "uzi-alert-module__info__1IKHt";
7
- var alert_module_default = {
8
- alert,
9
- success,
10
- error,
11
- warning,
12
- info
1
+ //#region src/components/modal/modal.module.css
2
+ var portalLayer = "uzi-modal-module__portalLayer__t7blc";
3
+ var backdrop = "uzi-modal-module__backdrop__IMd3b";
4
+ var backdropFadeIn = "uzi-modal-module__backdropFadeIn__GNJdx";
5
+ var backdropFadeOut = "uzi-modal-module__backdropFadeOut__R-3K5";
6
+ var overlayContent = "uzi-modal-module__overlayContent__0DtbP";
7
+ var modalContentIn = "uzi-modal-module__modalContentIn__fub8M";
8
+ var modalContentOut = "uzi-modal-module__modalContentOut__elTJ3";
9
+ var modal = "uzi-modal-module__modal__Mao59";
10
+ var header = "uzi-modal-module__header__PmCaO";
11
+ var titles = "uzi-modal-module__titles__IboyQ";
12
+ var title = "uzi-modal-module__title__Zd7pL";
13
+ var subtitle = "uzi-modal-module__subtitle__t-LRK";
14
+ var closeButton = "uzi-modal-module__closeButton__GTiZr";
15
+ var body = "uzi-modal-module__body__km6FQ";
16
+ var footer = "uzi-modal-module__footer__jWLTv";
17
+ var modal_module_default = {
18
+ portalLayer,
19
+ backdrop,
20
+ backdropFadeIn,
21
+ backdropFadeOut,
22
+ overlayContent,
23
+ modalContentIn,
24
+ modalContentOut,
25
+ modal,
26
+ "size-sm": "uzi-modal-module__size-sm__Uu9je",
27
+ "size-md": "uzi-modal-module__size-md__TiiWy",
28
+ "size-lg": "uzi-modal-module__size-lg__BrTIO",
29
+ "size-xl": "uzi-modal-module__size-xl__sj0mh",
30
+ header,
31
+ titles,
32
+ title,
33
+ subtitle,
34
+ closeButton,
35
+ body,
36
+ footer
13
37
  };
14
38
  //#endregion
15
- exports.alert = alert;
16
- exports.default = alert_module_default;
17
- exports.error = error;
18
- exports.info = info;
19
- exports.success = success;
20
- exports.warning = warning;
39
+ exports.backdrop = backdrop;
40
+ exports.backdropFadeIn = backdropFadeIn;
41
+ exports.backdropFadeOut = backdropFadeOut;
42
+ exports.body = body;
43
+ exports.closeButton = closeButton;
44
+ exports.default = modal_module_default;
45
+ exports.footer = footer;
46
+ exports.header = header;
47
+ exports.modal = modal;
48
+ exports.modalContentIn = modalContentIn;
49
+ exports.modalContentOut = modalContentOut;
50
+ exports.overlayContent = overlayContent;
51
+ exports.portalLayer = portalLayer;
52
+ exports.subtitle = subtitle;
53
+ exports.title = title;
54
+ exports.titles = titles;
21
55
 
22
56
  //# sourceMappingURL=index15.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index15.cjs","names":[],"sources":["../src/components/alert/alert.module.css"],"sourcesContent":[".alert {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n border-radius: 0.375rem;\n border: 1px solid;\n padding: 0.625rem 0.875rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.success {\n border-color: color-mix(in srgb, var(--success) 35%, transparent);\n background: color-mix(in srgb, var(--success) 10%, transparent);\n color: color-mix(in srgb, var(--success) 90%, var(--foreground));\n}\n\n.error {\n border-color: color-mix(in srgb, var(--destructive) 35%, transparent);\n background: color-mix(in srgb, var(--destructive) 10%, transparent);\n color: color-mix(in srgb, var(--destructive) 90%, var(--foreground));\n}\n\n.warning {\n border-color: color-mix(in srgb, var(--warning) 35%, transparent);\n background: color-mix(in srgb, var(--warning) 10%, transparent);\n color: color-mix(in srgb, var(--warning) 90%, var(--foreground));\n}\n\n.info {\n border-color: color-mix(in srgb, var(--primary) 35%, transparent);\n background: color-mix(in srgb, var(--primary) 10%, transparent);\n color: color-mix(in srgb, var(--primary) 90%, var(--foreground));\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index15.cjs","names":[],"sources":["../src/components/modal/modal.module.css"],"sourcesContent":[".portalLayer {\n --uzi-modal-viewport-margin: 32px;\n\n position: fixed;\n inset: 0;\n z-index: var(--uzi-modal-z-index, 1000);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.55);\n}\n\n.backdrop[data-state=\"open\"] {\n animation: backdropFadeIn 160ms ease;\n}\n\n.backdrop[data-state=\"closed\"] {\n animation: backdropFadeOut 140ms ease;\n}\n\n.overlayContent {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n outline: none;\n}\n\n.overlayContent[data-state=\"open\"] {\n animation: modalContentIn 180ms ease;\n}\n\n.overlayContent[data-state=\"closed\"] {\n animation: modalContentOut 140ms ease;\n}\n\n.modal {\n background: var(--background);\n border: 1px solid var(--border);\n border-radius: 14px;\n max-height: calc(100vh - var(--uzi-modal-viewport-margin));\n max-height: calc(100dvh - var(--uzi-modal-viewport-margin));\n overflow: hidden;\n box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* Size variants */\n.size-sm { width: min(380px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-md { width: min(500px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-lg { width: min(640px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n.size-xl { width: min(900px, calc(100vw - var(--uzi-modal-viewport-margin))); }\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding: 24px 24px 0;\n margin-bottom: 16px;\n}\n\n.titles {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.title {\n font-weight: 700;\n font-size: 16px;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.subtitle {\n font-size: 13px;\n color: var(--muted-foreground);\n line-height: 1.4;\n}\n\n.closeButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--muted-foreground);\n cursor: pointer;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n\n.closeButton:hover {\n background: color-mix(in srgb, var(--foreground) 7%, transparent);\n color: var(--foreground);\n}\n\n.closeButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n overflow-y: auto;\n padding: 0 24px;\n}\n\n.body:last-child {\n padding-bottom: 24px;\n}\n\n.footer {\n display: flex;\n gap: 8px;\n padding: 0 24px 24px;\n margin-top: 20px;\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalContentIn {\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalContentOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(4px) scale(0.98);\n }\n}\n"],"mappings":""}