@tomny-dev/uzi 0.5.0 → 0.6.0-pr.60.171.1.16c745f

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 (279) hide show
  1. package/README.md +5 -2
  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/page-container/PageContainer.d.ts +2 -1
  5. package/dist/components/page-container/PageContainer.d.ts.map +1 -1
  6. package/dist/components/surface/Surface.d.ts +16 -0
  7. package/dist/components/surface/Surface.d.ts.map +1 -0
  8. package/dist/components/toolbar/Toolbar.d.ts +13 -0
  9. package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
  10. package/dist/index.cjs +36 -31
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +34 -32
  14. package/dist/index10.cjs.map +1 -1
  15. package/dist/index10.js +19 -15
  16. package/dist/index10.js.map +1 -1
  17. package/dist/index11.cjs +21 -18
  18. package/dist/index11.cjs.map +1 -1
  19. package/dist/index11.js +8 -15
  20. package/dist/index11.js.map +1 -1
  21. package/dist/index12.cjs +7 -14
  22. package/dist/index12.cjs.map +1 -1
  23. package/dist/index12.js +15 -37
  24. package/dist/index12.js.map +1 -1
  25. package/dist/index13.cjs +18 -52
  26. package/dist/index13.cjs.map +1 -1
  27. package/dist/index13.js +15 -77
  28. package/dist/index13.js.map +1 -1
  29. package/dist/index14.cjs +15 -80
  30. package/dist/index14.cjs.map +1 -1
  31. package/dist/index14.js +37 -13
  32. package/dist/index14.js.map +1 -1
  33. package/dist/index15.cjs +52 -18
  34. package/dist/index15.cjs.map +1 -1
  35. package/dist/index15.js +77 -9
  36. package/dist/index15.js.map +1 -1
  37. package/dist/index16.cjs +79 -8
  38. package/dist/index16.cjs.map +1 -1
  39. package/dist/index16.js +13 -41
  40. package/dist/index16.js.map +1 -1
  41. package/dist/index17.cjs +18 -60
  42. package/dist/index17.cjs.map +1 -1
  43. package/dist/index17.js +9 -428
  44. package/dist/index17.js.map +1 -1
  45. package/dist/index18.cjs +8 -430
  46. package/dist/index18.cjs.map +1 -1
  47. package/dist/index18.js +42 -4
  48. package/dist/index18.js.map +1 -1
  49. package/dist/index19.cjs +61 -5
  50. package/dist/index19.cjs.map +1 -1
  51. package/dist/index19.js +430 -13
  52. package/dist/index19.js.map +1 -1
  53. package/dist/index20.cjs +430 -12
  54. package/dist/index20.cjs.map +1 -1
  55. package/dist/index20.js +4 -4
  56. package/dist/index20.js.map +1 -1
  57. package/dist/index21.cjs +5 -5
  58. package/dist/index21.cjs.map +1 -1
  59. package/dist/index21.js +12 -9
  60. package/dist/index21.js.map +1 -1
  61. package/dist/index22.cjs +12 -9
  62. package/dist/index22.cjs.map +1 -1
  63. package/dist/index22.js +4 -4
  64. package/dist/index22.js.map +1 -1
  65. package/dist/index23.cjs +5 -5
  66. package/dist/index23.cjs.map +1 -1
  67. package/dist/index23.js +9 -12
  68. package/dist/index23.js.map +1 -1
  69. package/dist/index24.cjs +9 -12
  70. package/dist/index24.cjs.map +1 -1
  71. package/dist/index24.js +4 -38
  72. package/dist/index24.js.map +1 -1
  73. package/dist/index25.cjs +5 -55
  74. package/dist/index25.cjs.map +1 -1
  75. package/dist/index25.js +11 -116
  76. package/dist/index25.js.map +1 -1
  77. package/dist/index26.cjs +10 -116
  78. package/dist/index26.cjs.map +1 -1
  79. package/dist/index26.js +31 -19
  80. package/dist/index26.js.map +1 -1
  81. package/dist/index27.cjs +42 -24
  82. package/dist/index27.cjs.map +1 -1
  83. package/dist/index27.js +106 -93
  84. package/dist/index27.js.map +1 -1
  85. package/dist/index28.cjs +106 -93
  86. package/dist/index28.cjs.map +1 -1
  87. package/dist/index28.js +26 -23
  88. package/dist/index28.js.map +1 -1
  89. package/dist/index29.cjs +37 -25
  90. package/dist/index29.cjs.map +1 -1
  91. package/dist/index29.js +107 -26
  92. package/dist/index29.js.map +1 -1
  93. package/dist/index30.cjs +110 -37
  94. package/dist/index30.cjs.map +1 -1
  95. package/dist/index30.js +21 -113
  96. package/dist/index30.js.map +1 -1
  97. package/dist/index31.cjs +19 -125
  98. package/dist/index31.cjs.map +1 -1
  99. package/dist/index31.js +26 -17
  100. package/dist/index31.js.map +1 -1
  101. package/dist/index32.cjs +37 -20
  102. package/dist/index32.cjs.map +1 -1
  103. package/dist/index32.js +108 -104
  104. package/dist/index32.js.map +1 -1
  105. package/dist/index33.cjs +122 -103
  106. package/dist/index33.cjs.map +1 -1
  107. package/dist/index33.js +17 -4
  108. package/dist/index33.js.map +1 -1
  109. package/dist/index34.cjs +20 -5
  110. package/dist/index34.cjs.map +1 -1
  111. package/dist/index34.js +106 -58
  112. package/dist/index34.js.map +1 -1
  113. package/dist/index35.cjs +106 -57
  114. package/dist/index35.cjs.map +1 -1
  115. package/dist/index35.js +4 -22
  116. package/dist/index35.js.map +1 -1
  117. package/dist/index36.cjs +5 -31
  118. package/dist/index36.cjs.map +1 -1
  119. package/dist/index36.js +55 -44
  120. package/dist/index36.js.map +1 -1
  121. package/dist/index37.cjs +55 -44
  122. package/dist/index37.cjs.map +1 -1
  123. package/dist/index37.js +21 -31
  124. package/dist/index37.js.map +1 -1
  125. package/dist/index38.cjs +30 -45
  126. package/dist/index38.cjs.map +1 -1
  127. package/dist/index38.js +46 -141
  128. package/dist/index38.js.map +1 -1
  129. package/dist/index39.cjs +46 -141
  130. package/dist/index39.cjs.map +1 -1
  131. package/dist/index39.js +31 -41
  132. package/dist/index39.js.map +1 -1
  133. package/dist/index40.cjs +45 -60
  134. package/dist/index40.cjs.map +1 -1
  135. package/dist/index40.js +139 -163
  136. package/dist/index40.js.map +1 -1
  137. package/dist/index41.cjs +137 -161
  138. package/dist/index41.cjs.map +1 -1
  139. package/dist/index41.js +41 -12
  140. package/dist/index41.js.map +1 -1
  141. package/dist/index42.cjs +60 -14
  142. package/dist/index42.cjs.map +1 -1
  143. package/dist/index42.js +167 -15
  144. package/dist/index42.js.map +1 -1
  145. package/dist/index43.cjs +166 -14
  146. package/dist/index43.cjs.map +1 -1
  147. package/dist/index43.js +12 -15
  148. package/dist/index43.js.map +1 -1
  149. package/dist/index44.cjs +14 -21
  150. package/dist/index44.cjs.map +1 -1
  151. package/dist/index44.js +15 -28
  152. package/dist/index44.js.map +1 -1
  153. package/dist/index45.cjs +14 -27
  154. package/dist/index45.cjs.map +1 -1
  155. package/dist/index45.js +10 -8
  156. package/dist/index45.js.map +1 -1
  157. package/dist/index46.cjs +11 -8
  158. package/dist/index46.cjs.map +1 -1
  159. package/dist/index46.js +22 -15
  160. package/dist/index46.js.map +1 -1
  161. package/dist/index47.cjs +22 -15
  162. package/dist/index47.cjs.map +1 -1
  163. package/dist/index47.js +9 -13
  164. package/dist/index47.js.map +1 -1
  165. package/dist/index48.cjs +10 -16
  166. package/dist/index48.cjs.map +1 -1
  167. package/dist/index48.js +18 -25
  168. package/dist/index48.js.map +1 -1
  169. package/dist/index49.cjs +18 -25
  170. package/dist/index49.cjs.map +1 -1
  171. package/dist/index49.js +17 -14
  172. package/dist/index49.js.map +1 -1
  173. package/dist/index50.cjs +24 -17
  174. package/dist/index50.cjs.map +1 -1
  175. package/dist/index50.js +28 -28
  176. package/dist/index50.js.map +1 -1
  177. package/dist/index51.cjs +27 -28
  178. package/dist/index51.cjs.map +1 -1
  179. package/dist/index51.js +14 -17
  180. package/dist/index51.js.map +1 -1
  181. package/dist/index52.cjs +17 -22
  182. package/dist/index52.cjs.map +1 -1
  183. package/dist/index52.js +23 -23
  184. package/dist/index52.js.map +1 -1
  185. package/dist/index53.cjs +23 -23
  186. package/dist/index53.cjs.map +1 -1
  187. package/dist/index53.js +17 -10
  188. package/dist/index53.js.map +1 -1
  189. package/dist/index54.cjs +22 -11
  190. package/dist/index54.cjs.map +1 -1
  191. package/dist/index54.js +28 -14
  192. package/dist/index54.js.map +1 -1
  193. package/dist/index55.cjs +28 -13
  194. package/dist/index55.cjs.map +1 -1
  195. package/dist/index55.js +17 -11
  196. package/dist/index55.js.map +1 -1
  197. package/dist/index56.cjs +23 -13
  198. package/dist/index56.cjs.map +1 -1
  199. package/dist/index56.js +24 -16
  200. package/dist/index56.js.map +1 -1
  201. package/dist/index57.cjs +24 -15
  202. package/dist/index57.cjs.map +1 -1
  203. package/dist/index57.js +10 -9
  204. package/dist/index57.js.map +1 -1
  205. package/dist/index58.cjs +11 -12
  206. package/dist/index58.cjs.map +1 -1
  207. package/dist/index58.js +12 -87
  208. package/dist/index58.js.map +1 -1
  209. package/dist/index59.cjs +12 -89
  210. package/dist/index59.cjs.map +1 -1
  211. package/dist/index59.js +11 -21
  212. package/dist/index59.js.map +1 -1
  213. package/dist/index60.cjs +13 -30
  214. package/dist/index60.cjs.map +1 -1
  215. package/dist/index60.js +17 -43
  216. package/dist/index60.js.map +1 -1
  217. package/dist/index61.cjs +16 -44
  218. package/dist/index61.cjs.map +1 -1
  219. package/dist/index61.js +9 -57
  220. package/dist/index61.js.map +1 -1
  221. package/dist/index62.cjs +11 -83
  222. package/dist/index62.cjs.map +1 -1
  223. package/dist/index62.js +83 -426
  224. package/dist/index62.js.map +1 -1
  225. package/dist/index63.cjs +82 -427
  226. package/dist/index63.cjs.map +1 -1
  227. package/dist/index63.js +21 -59
  228. package/dist/index63.js.map +1 -1
  229. package/dist/index64.cjs +30 -87
  230. package/dist/index64.cjs.map +1 -1
  231. package/dist/index64.js +44 -240
  232. package/dist/index64.js.map +1 -1
  233. package/dist/index65.cjs +43 -239
  234. package/dist/index65.cjs.map +1 -1
  235. package/dist/index65.js +57 -43
  236. package/dist/index65.js.map +1 -1
  237. package/dist/index66.cjs +84 -63
  238. package/dist/index66.cjs.map +1 -1
  239. package/dist/index66.js +426 -73
  240. package/dist/index66.js.map +1 -1
  241. package/dist/index67.cjs +426 -71
  242. package/dist/index67.cjs.map +1 -1
  243. package/dist/index67.js +59 -21
  244. package/dist/index67.js.map +1 -1
  245. package/dist/index68.cjs +87 -30
  246. package/dist/index68.cjs.map +1 -1
  247. package/dist/index68.js +233 -88
  248. package/dist/index68.js.map +1 -1
  249. package/dist/index69.cjs +232 -89
  250. package/dist/index69.cjs.map +1 -1
  251. package/dist/index69.js +40 -16
  252. package/dist/index69.js.map +1 -1
  253. package/dist/index70.cjs +56 -20
  254. package/dist/index70.cjs.map +1 -1
  255. package/dist/index70.js +72 -145
  256. package/dist/index70.js.map +1 -1
  257. package/dist/index71.cjs +72 -145
  258. package/dist/index71.cjs.map +1 -1
  259. package/dist/index71.js +25 -0
  260. package/dist/index71.js.map +1 -0
  261. package/dist/index72.cjs +34 -0
  262. package/dist/index72.cjs.map +1 -0
  263. package/dist/index72.js +101 -0
  264. package/dist/index72.js.map +1 -0
  265. package/dist/index73.cjs +105 -0
  266. package/dist/index73.cjs.map +1 -0
  267. package/dist/index73.js +23 -0
  268. package/dist/index73.js.map +1 -0
  269. package/dist/index74.cjs +31 -0
  270. package/dist/index74.cjs.map +1 -0
  271. package/dist/index74.js +159 -0
  272. package/dist/index74.js.map +1 -0
  273. package/dist/index75.cjs +161 -0
  274. package/dist/index75.cjs.map +1 -0
  275. package/dist/index8.js.map +1 -1
  276. package/dist/index9.cjs.map +1 -1
  277. package/dist/index9.js.map +1 -1
  278. package/dist/style.css +216 -45
  279. package/package.json +2 -2
package/dist/index26.js CHANGED
@@ -1,29 +1,41 @@
1
- //#region src/components/select/select.module.css
2
- var wrapper = "uzi-select-module__wrapper__7szq0";
3
- var wrapperFullWidth = "uzi-select-module__wrapperFullWidth__IyOIG";
4
- var trigger = "uzi-select-module__trigger__ldh8w";
5
- var value = "uzi-select-module__value__FTUJh";
6
- var chevron = "uzi-select-module__chevron__U6HXS";
7
- var content = "uzi-select-module__content__pOWWy";
8
- var selectFadeIn = "uzi-select-module__selectFadeIn__Z-yKX";
9
- var viewport = "uzi-select-module__viewport__VGZM6";
10
- var item = "uzi-select-module__item__6uM6-";
11
- var indicator = "uzi-select-module__indicator__ZHcg5";
12
- var indicatorIcon = "uzi-select-module__indicatorIcon__kOV2G";
13
- var select_module_default = {
1
+ //#region src/components/multi-select/multi-select.module.css
2
+ var wrapper = "uzi-multi-select-module__wrapper__Izj2x";
3
+ var wrapperFullWidth = "uzi-multi-select-module__wrapperFullWidth__eH8pf";
4
+ var trigger = "uzi-multi-select-module__trigger__r3816";
5
+ var value = "uzi-multi-select-module__value__PuUmG";
6
+ var placeholder = "uzi-multi-select-module__placeholder__dJIU-";
7
+ var chip = "uzi-multi-select-module__chip__46Ms-";
8
+ var chipSummary = "uzi-multi-select-module__chipSummary__zLwi8";
9
+ var chevron = "uzi-multi-select-module__chevron__SWK5l";
10
+ var menu = "uzi-multi-select-module__menu__q8auA";
11
+ var menuFadeIn = "uzi-multi-select-module__menuFadeIn__Plo7-";
12
+ var option = "uzi-multi-select-module__option__-Ioqk";
13
+ var optionDisabled = "uzi-multi-select-module__optionDisabled__qtCi8";
14
+ var optionSelected = "uzi-multi-select-module__optionSelected__74IO8";
15
+ var optionLabel = "uzi-multi-select-module__optionLabel__cVoN7";
16
+ var indicator = "uzi-multi-select-module__indicator__NO-WE";
17
+ var indicatorSelected = "uzi-multi-select-module__indicatorSelected__9sEAy";
18
+ var indicatorDisabled = "uzi-multi-select-module__indicatorDisabled__vqdiH";
19
+ var multi_select_module_default = {
14
20
  wrapper,
15
21
  wrapperFullWidth,
16
22
  trigger,
17
23
  value,
24
+ placeholder,
25
+ chip,
26
+ chipSummary,
18
27
  chevron,
19
- content,
20
- selectFadeIn,
21
- viewport,
22
- item,
28
+ menu,
29
+ menuFadeIn,
30
+ option,
31
+ optionDisabled,
32
+ optionSelected,
33
+ optionLabel,
23
34
  indicator,
24
- indicatorIcon
35
+ indicatorSelected,
36
+ indicatorDisabled
25
37
  };
26
38
  //#endregion
27
- export { chevron, content, select_module_default as default, indicator, indicatorIcon, item, selectFadeIn, trigger, value, viewport, wrapper, wrapperFullWidth };
39
+ export { chevron, chip, chipSummary, multi_select_module_default as default, indicator, indicatorDisabled, indicatorSelected, menu, menuFadeIn, option, optionDisabled, optionLabel, optionSelected, placeholder, trigger, value, wrapper, wrapperFullWidth };
28
40
 
29
41
  //# sourceMappingURL=index26.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index26.js","names":[],"sources":["../src/components/select/select.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n}\n\n.wrapperFullWidth {\n width: 100%;\n}\n\n.wrapper:not(.wrapperFullWidth) .trigger {\n width: auto;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.625rem;\n width: 100%;\n min-width: 0;\n min-height: var(--uzi-control-min-height);\n border-radius: var(--uzi-control-radius);\n border: 1px solid var(--ts-dropdown-border, var(--border));\n background: var(--ts-dropdown-bg, var(--panel));\n color: var(--ts-dropdown-text, var(--foreground));\n padding:\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x-compact)\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x);\n font-size: var(--uzi-control-font-size);\n line-height: var(--uzi-control-line-height);\n font-family: inherit;\n font-weight: 500;\n box-shadow: var(--uzi-control-shadow);\n transition:\n border-color 0.15s ease,\n background 0.15s ease,\n color 0.15s ease,\n box-shadow 0.15s ease;\n cursor: pointer;\n text-align: left;\n}\n\n.value {\n min-width: 0;\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.trigger:hover:not(:disabled) {\n border-color: var(--ts-dropdown-accent, var(--accent));\n box-shadow: var(--uzi-control-shadow-hover);\n}\n\n.trigger:focus-visible {\n border-color: var(--ts-dropdown-accent, var(--primary));\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 30%, transparent);\n}\n\n.trigger[data-placeholder] {\n color: var(--muted-foreground);\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n box-shadow: none;\n}\n\n.chevron {\n width: 10px;\n height: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--muted-foreground);\n flex-shrink: 0;\n position: relative;\n top: -1px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.chevron svg {\n display: block;\n}\n\n.trigger:hover:not(:disabled) .chevron,\n.trigger[data-state=\"open\"] .chevron {\n color: var(--ts-dropdown-text, var(--foreground));\n}\n\n.trigger[data-state=\"open\"] .chevron {\n transform: rotate(180deg);\n}\n\n.content {\n z-index: var(--uzi-popover-z-index, 1100);\n min-width: var(--radix-select-trigger-width);\n max-height: min(18rem, var(--radix-select-content-available-height));\n overflow: hidden;\n border: 1px solid var(--ts-menu-border, var(--border));\n border-radius: var(--uzi-menu-radius);\n background: var(--ts-menu-bg, var(--popover));\n color: var(--ts-menu-fg, var(--popover-foreground));\n padding: var(--uzi-menu-padding);\n box-shadow: var(--uzi-menu-shadow);\n animation: selectFadeIn 140ms ease;\n}\n\n.viewport {\n max-height: inherit;\n overflow-y: auto;\n}\n\n.item {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n user-select: none;\n align-items: center;\n gap: var(--uzi-menu-item-gap);\n border-radius: var(--uzi-menu-item-radius);\n padding:\n var(--uzi-menu-item-padding-y)\n var(--uzi-menu-item-padding-x)\n var(--uzi-menu-item-padding-y)\n 2rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n outline: none;\n}\n\n.item[data-highlighted] {\n background: var(--ts-menu-hover-bg, var(--accent));\n color: var(--ts-menu-hover-fg, var(--accent-foreground));\n}\n\n.item[data-disabled] {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.item[data-state=\"checked\"] {\n color: var(--primary);\n}\n\n.indicator {\n position: absolute;\n left: 0.625rem;\n display: inline-flex;\n width: 1rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n color: currentColor;\n}\n\n.indicatorIcon {\n display: block;\n}\n\n@keyframes selectFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index26.js","names":[],"sources":["../src/components/multi-select/multi-select.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n}\n\n.wrapperFullWidth {\n width: 100%;\n}\n\n.trigger {\n width: 100%;\n min-width: 0;\n min-height: var(--uzi-control-min-height);\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.625rem;\n border-radius: var(--uzi-control-radius);\n border: 1px solid var(--ts-dropdown-border, var(--border));\n background: var(--ts-dropdown-bg, var(--panel));\n color: var(--ts-dropdown-text, var(--foreground));\n padding:\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x-compact)\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x);\n font-size: var(--uzi-control-font-size);\n line-height: var(--uzi-control-line-height);\n font-family: inherit;\n box-shadow: var(--uzi-control-shadow);\n transition:\n border-color 0.15s ease,\n background 0.15s ease,\n color 0.15s ease,\n box-shadow 0.15s ease;\n cursor: pointer;\n text-align: left;\n}\n\n.trigger:hover:not(:disabled) {\n border-color: var(--ts-dropdown-accent, var(--accent));\n box-shadow: var(--uzi-control-shadow-hover);\n}\n\n.trigger:focus-visible,\n.trigger[data-state=\"open\"] {\n border-color: var(--ts-dropdown-accent, var(--primary));\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 30%, transparent);\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n box-shadow: none;\n}\n\n.value {\n min-width: 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n gap: 0.375rem;\n align-items: center;\n}\n\n.placeholder {\n color: var(--muted-foreground);\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: 2px 8px;\n border-radius: 999px;\n border: 1px solid color-mix(in srgb, var(--primary) 32%, transparent);\n background: color-mix(in srgb, var(--primary) 10%, transparent);\n color: var(--ts-dropdown-text, var(--foreground));\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1.2;\n white-space: nowrap;\n}\n\n.chipSummary {\n color: var(--primary);\n}\n\n.chevron {\n width: 10px;\n height: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--muted-foreground);\n flex-shrink: 0;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.trigger:hover:not(:disabled) .chevron,\n.trigger[data-state=\"open\"] .chevron {\n color: var(--ts-dropdown-text, var(--foreground));\n}\n\n.trigger[data-state=\"open\"] .chevron {\n transform: rotate(180deg);\n}\n\n.menu {\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: var(--uzi-popover-z-index, 1100);\n min-width: 100%;\n max-height: 16rem;\n overflow-y: auto;\n border: 1px solid var(--ts-menu-border, var(--border));\n border-radius: var(--uzi-menu-radius);\n background: var(--ts-menu-bg, var(--popover));\n color: var(--ts-menu-fg, var(--popover-foreground));\n padding: var(--uzi-menu-padding);\n box-shadow: var(--uzi-menu-shadow);\n animation: menuFadeIn 140ms ease;\n}\n\n.option {\n width: 100%;\n display: flex;\n align-items: center;\n gap: var(--uzi-menu-item-gap);\n border: none;\n border-radius: var(--uzi-menu-item-radius);\n background: transparent;\n color: inherit;\n padding: var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x);\n font: inherit;\n cursor: pointer;\n text-align: left;\n transition: background 0.12s ease, color 0.12s ease;\n}\n\n.option:hover:not(:disabled),\n.option:focus-visible,\n.option[data-highlighted] {\n background: var(--ts-menu-hover-bg, var(--accent));\n color: var(--ts-menu-hover-fg, var(--accent-foreground));\n outline: none;\n}\n\n.optionDisabled,\n.option[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.optionSelected .optionLabel {\n color: var(--primary);\n}\n\n.indicator {\n width: 1rem;\n height: 1rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border-radius: 0.3125rem;\n border: 1px solid var(--border);\n color: transparent;\n background: transparent;\n transition: border-color 0.12s ease, background 0.12s ease, color 0.12s ease;\n}\n\n.indicatorSelected {\n border-color: color-mix(in srgb, var(--primary) 55%, transparent);\n background: color-mix(in srgb, var(--primary) 12%, transparent);\n color: var(--primary);\n}\n\n.indicatorDisabled {\n opacity: 0.65;\n}\n\n.optionLabel {\n min-width: 0;\n flex: 1;\n}\n\n@keyframes menuFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n"],"mappings":""}
package/dist/index27.cjs CHANGED
@@ -1,39 +1,57 @@
1
- //#region src/components/select/select.module.css
2
- var wrapper = "uzi-select-module__wrapper__7szq0";
3
- var wrapperFullWidth = "uzi-select-module__wrapperFullWidth__IyOIG";
4
- var trigger = "uzi-select-module__trigger__ldh8w";
5
- var value = "uzi-select-module__value__FTUJh";
6
- var chevron = "uzi-select-module__chevron__U6HXS";
7
- var content = "uzi-select-module__content__pOWWy";
8
- var selectFadeIn = "uzi-select-module__selectFadeIn__Z-yKX";
9
- var viewport = "uzi-select-module__viewport__VGZM6";
10
- var item = "uzi-select-module__item__6uM6-";
11
- var indicator = "uzi-select-module__indicator__ZHcg5";
12
- var indicatorIcon = "uzi-select-module__indicatorIcon__kOV2G";
13
- var select_module_default = {
1
+ //#region src/components/multi-select/multi-select.module.css
2
+ var wrapper = "uzi-multi-select-module__wrapper__Izj2x";
3
+ var wrapperFullWidth = "uzi-multi-select-module__wrapperFullWidth__eH8pf";
4
+ var trigger = "uzi-multi-select-module__trigger__r3816";
5
+ var value = "uzi-multi-select-module__value__PuUmG";
6
+ var placeholder = "uzi-multi-select-module__placeholder__dJIU-";
7
+ var chip = "uzi-multi-select-module__chip__46Ms-";
8
+ var chipSummary = "uzi-multi-select-module__chipSummary__zLwi8";
9
+ var chevron = "uzi-multi-select-module__chevron__SWK5l";
10
+ var menu = "uzi-multi-select-module__menu__q8auA";
11
+ var menuFadeIn = "uzi-multi-select-module__menuFadeIn__Plo7-";
12
+ var option = "uzi-multi-select-module__option__-Ioqk";
13
+ var optionDisabled = "uzi-multi-select-module__optionDisabled__qtCi8";
14
+ var optionSelected = "uzi-multi-select-module__optionSelected__74IO8";
15
+ var optionLabel = "uzi-multi-select-module__optionLabel__cVoN7";
16
+ var indicator = "uzi-multi-select-module__indicator__NO-WE";
17
+ var indicatorSelected = "uzi-multi-select-module__indicatorSelected__9sEAy";
18
+ var indicatorDisabled = "uzi-multi-select-module__indicatorDisabled__vqdiH";
19
+ var multi_select_module_default = {
14
20
  wrapper,
15
21
  wrapperFullWidth,
16
22
  trigger,
17
23
  value,
24
+ placeholder,
25
+ chip,
26
+ chipSummary,
18
27
  chevron,
19
- content,
20
- selectFadeIn,
21
- viewport,
22
- item,
28
+ menu,
29
+ menuFadeIn,
30
+ option,
31
+ optionDisabled,
32
+ optionSelected,
33
+ optionLabel,
23
34
  indicator,
24
- indicatorIcon
35
+ indicatorSelected,
36
+ indicatorDisabled
25
37
  };
26
38
  //#endregion
27
39
  exports.chevron = chevron;
28
- exports.content = content;
29
- exports.default = select_module_default;
40
+ exports.chip = chip;
41
+ exports.chipSummary = chipSummary;
42
+ exports.default = multi_select_module_default;
30
43
  exports.indicator = indicator;
31
- exports.indicatorIcon = indicatorIcon;
32
- exports.item = item;
33
- exports.selectFadeIn = selectFadeIn;
44
+ exports.indicatorDisabled = indicatorDisabled;
45
+ exports.indicatorSelected = indicatorSelected;
46
+ exports.menu = menu;
47
+ exports.menuFadeIn = menuFadeIn;
48
+ exports.option = option;
49
+ exports.optionDisabled = optionDisabled;
50
+ exports.optionLabel = optionLabel;
51
+ exports.optionSelected = optionSelected;
52
+ exports.placeholder = placeholder;
34
53
  exports.trigger = trigger;
35
54
  exports.value = value;
36
- exports.viewport = viewport;
37
55
  exports.wrapper = wrapper;
38
56
  exports.wrapperFullWidth = wrapperFullWidth;
39
57
 
@@ -1 +1 @@
1
- {"version":3,"file":"index27.cjs","names":[],"sources":["../src/components/select/select.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n}\n\n.wrapperFullWidth {\n width: 100%;\n}\n\n.wrapper:not(.wrapperFullWidth) .trigger {\n width: auto;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.625rem;\n width: 100%;\n min-width: 0;\n min-height: var(--uzi-control-min-height);\n border-radius: var(--uzi-control-radius);\n border: 1px solid var(--ts-dropdown-border, var(--border));\n background: var(--ts-dropdown-bg, var(--panel));\n color: var(--ts-dropdown-text, var(--foreground));\n padding:\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x-compact)\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x);\n font-size: var(--uzi-control-font-size);\n line-height: var(--uzi-control-line-height);\n font-family: inherit;\n font-weight: 500;\n box-shadow: var(--uzi-control-shadow);\n transition:\n border-color 0.15s ease,\n background 0.15s ease,\n color 0.15s ease,\n box-shadow 0.15s ease;\n cursor: pointer;\n text-align: left;\n}\n\n.value {\n min-width: 0;\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.trigger:hover:not(:disabled) {\n border-color: var(--ts-dropdown-accent, var(--accent));\n box-shadow: var(--uzi-control-shadow-hover);\n}\n\n.trigger:focus-visible {\n border-color: var(--ts-dropdown-accent, var(--primary));\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 30%, transparent);\n}\n\n.trigger[data-placeholder] {\n color: var(--muted-foreground);\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n box-shadow: none;\n}\n\n.chevron {\n width: 10px;\n height: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--muted-foreground);\n flex-shrink: 0;\n position: relative;\n top: -1px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.chevron svg {\n display: block;\n}\n\n.trigger:hover:not(:disabled) .chevron,\n.trigger[data-state=\"open\"] .chevron {\n color: var(--ts-dropdown-text, var(--foreground));\n}\n\n.trigger[data-state=\"open\"] .chevron {\n transform: rotate(180deg);\n}\n\n.content {\n z-index: var(--uzi-popover-z-index, 1100);\n min-width: var(--radix-select-trigger-width);\n max-height: min(18rem, var(--radix-select-content-available-height));\n overflow: hidden;\n border: 1px solid var(--ts-menu-border, var(--border));\n border-radius: var(--uzi-menu-radius);\n background: var(--ts-menu-bg, var(--popover));\n color: var(--ts-menu-fg, var(--popover-foreground));\n padding: var(--uzi-menu-padding);\n box-shadow: var(--uzi-menu-shadow);\n animation: selectFadeIn 140ms ease;\n}\n\n.viewport {\n max-height: inherit;\n overflow-y: auto;\n}\n\n.item {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n user-select: none;\n align-items: center;\n gap: var(--uzi-menu-item-gap);\n border-radius: var(--uzi-menu-item-radius);\n padding:\n var(--uzi-menu-item-padding-y)\n var(--uzi-menu-item-padding-x)\n var(--uzi-menu-item-padding-y)\n 2rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n outline: none;\n}\n\n.item[data-highlighted] {\n background: var(--ts-menu-hover-bg, var(--accent));\n color: var(--ts-menu-hover-fg, var(--accent-foreground));\n}\n\n.item[data-disabled] {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.item[data-state=\"checked\"] {\n color: var(--primary);\n}\n\n.indicator {\n position: absolute;\n left: 0.625rem;\n display: inline-flex;\n width: 1rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n color: currentColor;\n}\n\n.indicatorIcon {\n display: block;\n}\n\n@keyframes selectFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index27.cjs","names":[],"sources":["../src/components/multi-select/multi-select.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n}\n\n.wrapperFullWidth {\n width: 100%;\n}\n\n.trigger {\n width: 100%;\n min-width: 0;\n min-height: var(--uzi-control-min-height);\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.625rem;\n border-radius: var(--uzi-control-radius);\n border: 1px solid var(--ts-dropdown-border, var(--border));\n background: var(--ts-dropdown-bg, var(--panel));\n color: var(--ts-dropdown-text, var(--foreground));\n padding:\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x-compact)\n var(--uzi-control-padding-y)\n var(--uzi-control-padding-x);\n font-size: var(--uzi-control-font-size);\n line-height: var(--uzi-control-line-height);\n font-family: inherit;\n box-shadow: var(--uzi-control-shadow);\n transition:\n border-color 0.15s ease,\n background 0.15s ease,\n color 0.15s ease,\n box-shadow 0.15s ease;\n cursor: pointer;\n text-align: left;\n}\n\n.trigger:hover:not(:disabled) {\n border-color: var(--ts-dropdown-accent, var(--accent));\n box-shadow: var(--uzi-control-shadow-hover);\n}\n\n.trigger:focus-visible,\n.trigger[data-state=\"open\"] {\n border-color: var(--ts-dropdown-accent, var(--primary));\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 30%, transparent);\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n box-shadow: none;\n}\n\n.value {\n min-width: 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n gap: 0.375rem;\n align-items: center;\n}\n\n.placeholder {\n color: var(--muted-foreground);\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: 2px 8px;\n border-radius: 999px;\n border: 1px solid color-mix(in srgb, var(--primary) 32%, transparent);\n background: color-mix(in srgb, var(--primary) 10%, transparent);\n color: var(--ts-dropdown-text, var(--foreground));\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1.2;\n white-space: nowrap;\n}\n\n.chipSummary {\n color: var(--primary);\n}\n\n.chevron {\n width: 10px;\n height: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--muted-foreground);\n flex-shrink: 0;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.trigger:hover:not(:disabled) .chevron,\n.trigger[data-state=\"open\"] .chevron {\n color: var(--ts-dropdown-text, var(--foreground));\n}\n\n.trigger[data-state=\"open\"] .chevron {\n transform: rotate(180deg);\n}\n\n.menu {\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: var(--uzi-popover-z-index, 1100);\n min-width: 100%;\n max-height: 16rem;\n overflow-y: auto;\n border: 1px solid var(--ts-menu-border, var(--border));\n border-radius: var(--uzi-menu-radius);\n background: var(--ts-menu-bg, var(--popover));\n color: var(--ts-menu-fg, var(--popover-foreground));\n padding: var(--uzi-menu-padding);\n box-shadow: var(--uzi-menu-shadow);\n animation: menuFadeIn 140ms ease;\n}\n\n.option {\n width: 100%;\n display: flex;\n align-items: center;\n gap: var(--uzi-menu-item-gap);\n border: none;\n border-radius: var(--uzi-menu-item-radius);\n background: transparent;\n color: inherit;\n padding: var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x);\n font: inherit;\n cursor: pointer;\n text-align: left;\n transition: background 0.12s ease, color 0.12s ease;\n}\n\n.option:hover:not(:disabled),\n.option:focus-visible,\n.option[data-highlighted] {\n background: var(--ts-menu-hover-bg, var(--accent));\n color: var(--ts-menu-hover-fg, var(--accent-foreground));\n outline: none;\n}\n\n.optionDisabled,\n.option[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.optionSelected .optionLabel {\n color: var(--primary);\n}\n\n.indicator {\n width: 1rem;\n height: 1rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border-radius: 0.3125rem;\n border: 1px solid var(--border);\n color: transparent;\n background: transparent;\n transition: border-color 0.12s ease, background 0.12s ease, color 0.12s ease;\n}\n\n.indicatorSelected {\n border-color: color-mix(in srgb, var(--primary) 55%, transparent);\n background: color-mix(in srgb, var(--primary) 12%, transparent);\n color: var(--primary);\n}\n\n.indicatorDisabled {\n opacity: 0.65;\n}\n\n.optionLabel {\n min-width: 0;\n flex: 1;\n}\n\n@keyframes menuFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n"],"mappings":""}
package/dist/index27.js CHANGED
@@ -1,110 +1,123 @@
1
1
  "use client";
2
2
  import { cx } from "./index3.js";
3
- import select_module_default from "./index26.js";
3
+ import multi_select_module_default from "./index26.js";
4
4
  import * as React from "react";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
- import * as SelectPrimitive from "@radix-ui/react-select";
7
- //#region src/components/select/Select.tsx
8
- var EMPTY_OPTION_VALUE = "__uzi_select_empty__";
9
- var Select = React.forwardRef(({ options, value, onChange, placeholder, allowEmptyOption = false, fullWidth = true, className, id, name, disabled, required, autoComplete, form, title, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onBlur, onFocus }, ref) => {
10
- return /* @__PURE__ */ jsx("div", {
11
- className: cx(select_module_default.wrapper, fullWidth && select_module_default.wrapperFullWidth, className),
12
- children: /* @__PURE__ */ jsxs(SelectPrimitive.Root, {
13
- value,
14
- onValueChange: (nextValue) => onChange(nextValue === EMPTY_OPTION_VALUE ? "" : nextValue),
15
- name,
16
- disabled,
17
- required,
18
- autoComplete,
19
- form,
20
- children: [/* @__PURE__ */ jsxs(SelectPrimitive.Trigger, {
21
- ref,
22
- id,
23
- className: select_module_default.trigger,
24
- title,
25
- "aria-label": ariaLabel,
26
- "aria-labelledby": ariaLabelledBy,
27
- onBlur,
28
- onFocus,
29
- children: [/* @__PURE__ */ jsx(SelectPrimitive.Value, {
30
- className: select_module_default.value,
31
- placeholder
32
- }), /* @__PURE__ */ jsx(SelectPrimitive.Icon, {
33
- className: select_module_default.chevron,
34
- "aria-hidden": "true",
35
- children: /* @__PURE__ */ jsx("svg", {
36
- viewBox: "0 0 10 10",
37
- fill: "none",
38
- xmlns: "http://www.w3.org/2000/svg",
39
- width: "10",
40
- height: "10",
41
- children: /* @__PURE__ */ jsx("path", {
42
- d: "M2 3.5L5 6.5L8 3.5",
43
- stroke: "currentColor",
44
- strokeWidth: "1.5",
45
- strokeLinecap: "round",
46
- strokeLinejoin: "round"
47
- })
48
- })
49
- })]
50
- }), /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(SelectPrimitive.Content, {
51
- className: select_module_default.content,
52
- position: "popper",
53
- sideOffset: 4,
54
- align: "start",
55
- children: /* @__PURE__ */ jsxs(SelectPrimitive.Viewport, {
56
- className: select_module_default.viewport,
57
- children: [placeholder && allowEmptyOption ? /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
58
- value: EMPTY_OPTION_VALUE,
59
- className: select_module_default.item,
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
7
+ //#region src/components/multi-select/MultiSelect.tsx
8
+ var MultiSelect = React.forwardRef(({ options, value, onChange, placeholder = "Select options", fullWidth = true, maxVisibleValues = 2, className, disabled = false, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }, ref) => {
9
+ const selectedSet = React.useMemo(() => new Set(value), [value]);
10
+ const selectedOptions = React.useMemo(() => options.filter((opt) => selectedSet.has(opt.value)), [options, selectedSet]);
11
+ const toggleValue = React.useCallback((nextValue) => {
12
+ if (selectedSet.has(nextValue)) {
13
+ onChange(value.filter((entry) => entry !== nextValue));
14
+ return;
15
+ }
16
+ onChange([...value, nextValue]);
17
+ }, [
18
+ onChange,
19
+ selectedSet,
20
+ value
21
+ ]);
22
+ const visibleCount = Math.max(1, maxVisibleValues);
23
+ const visibleOptions = selectedOptions.slice(0, visibleCount);
24
+ const overflowCount = Math.max(0, selectedOptions.length - visibleOptions.length);
25
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, {
26
+ modal: false,
27
+ children: /* @__PURE__ */ jsxs("div", {
28
+ className: cx(multi_select_module_default.wrapper, fullWidth && multi_select_module_default.wrapperFullWidth, className),
29
+ children: [
30
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, {
31
+ asChild: true,
32
+ children: /* @__PURE__ */ jsxs("button", {
33
+ ref,
34
+ type: "button",
35
+ className: multi_select_module_default.trigger,
36
+ "aria-label": ariaLabel,
37
+ "aria-labelledby": ariaLabelledBy,
38
+ disabled,
60
39
  children: [/* @__PURE__ */ jsx("span", {
61
- className: select_module_default.indicator,
62
- children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx("svg", {
63
- viewBox: "0 0 16 16",
64
- width: "16",
65
- height: "16",
66
- "aria-hidden": "true",
67
- className: select_module_default.indicatorIcon,
40
+ className: multi_select_module_default.value,
41
+ children: selectedOptions.length === 0 ? /* @__PURE__ */ jsx("span", {
42
+ className: multi_select_module_default.placeholder,
43
+ children: placeholder
44
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [visibleOptions.map((option) => /* @__PURE__ */ jsx("span", {
45
+ className: multi_select_module_default.chip,
46
+ children: option.label
47
+ }, option.value)), overflowCount > 0 ? /* @__PURE__ */ jsxs("span", {
48
+ className: cx(multi_select_module_default.chip, multi_select_module_default.chipSummary),
49
+ children: ["+", overflowCount]
50
+ }) : null] })
51
+ }), /* @__PURE__ */ jsx("span", {
52
+ className: multi_select_module_default.chevron,
53
+ "aria-hidden": "true",
54
+ children: /* @__PURE__ */ jsx("svg", {
55
+ viewBox: "0 0 10 10",
56
+ fill: "none",
57
+ xmlns: "http://www.w3.org/2000/svg",
58
+ width: "10",
59
+ height: "10",
68
60
  children: /* @__PURE__ */ jsx("path", {
69
- d: "M3.5 8.5 6.5 11.5 12.5 4.5",
70
- fill: "none",
61
+ d: "M2 3.5L5 6.5L8 3.5",
71
62
  stroke: "currentColor",
72
- strokeWidth: "1.8",
63
+ strokeWidth: "1.5",
73
64
  strokeLinecap: "round",
74
65
  strokeLinejoin: "round"
75
66
  })
76
- }) })
77
- }), /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children: placeholder })]
78
- }) : null, options.map((opt) => /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
79
- value: opt.value,
80
- disabled: opt.disabled,
81
- className: select_module_default.item,
82
- children: [/* @__PURE__ */ jsx("span", {
83
- className: select_module_default.indicator,
84
- children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx("svg", {
85
- viewBox: "0 0 16 16",
86
- width: "16",
87
- height: "16",
67
+ })
68
+ })]
69
+ })
70
+ }),
71
+ name ? value.map((entry) => /* @__PURE__ */ jsx("input", {
72
+ type: "hidden",
73
+ name,
74
+ value: entry
75
+ }, entry)) : null,
76
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
77
+ className: multi_select_module_default.menu,
78
+ sideOffset: 4,
79
+ align: "start",
80
+ children: options.map((option) => {
81
+ const selected = selectedSet.has(option.value);
82
+ return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
83
+ className: cx(multi_select_module_default.option, selected && multi_select_module_default.optionSelected, option.disabled && multi_select_module_default.optionDisabled),
84
+ checked: selected,
85
+ disabled: option.disabled,
86
+ onCheckedChange: () => toggleValue(option.value),
87
+ onSelect: (event) => event.preventDefault(),
88
+ children: [/* @__PURE__ */ jsx("span", {
89
+ className: cx(multi_select_module_default.indicator, selected && multi_select_module_default.indicatorSelected, option.disabled && multi_select_module_default.indicatorDisabled),
88
90
  "aria-hidden": "true",
89
- className: select_module_default.indicatorIcon,
90
- children: /* @__PURE__ */ jsx("path", {
91
- d: "M3.5 8.5 6.5 11.5 12.5 4.5",
92
- fill: "none",
93
- stroke: "currentColor",
94
- strokeWidth: "1.8",
95
- strokeLinecap: "round",
96
- strokeLinejoin: "round"
91
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, {
92
+ forceMount: true,
93
+ children: /* @__PURE__ */ jsx("svg", {
94
+ viewBox: "0 0 16 16",
95
+ width: "16",
96
+ height: "16",
97
+ fill: "none",
98
+ xmlns: "http://www.w3.org/2000/svg",
99
+ children: /* @__PURE__ */ jsx("path", {
100
+ d: "M3.5 8.5 6.5 11.5 12.5 4.5",
101
+ stroke: "currentColor",
102
+ strokeWidth: "1.8",
103
+ strokeLinecap: "round",
104
+ strokeLinejoin: "round"
105
+ })
106
+ })
97
107
  })
98
- }) })
99
- }), /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children: opt.label })]
100
- }, opt.value))]
101
- })
102
- }) })]
108
+ }), /* @__PURE__ */ jsx("span", {
109
+ className: multi_select_module_default.optionLabel,
110
+ children: option.label
111
+ })]
112
+ }, option.value);
113
+ })
114
+ }) })
115
+ ]
103
116
  })
104
117
  });
105
118
  });
106
- Select.displayName = "Select";
119
+ MultiSelect.displayName = "MultiSelect";
107
120
  //#endregion
108
- export { Select };
121
+ export { MultiSelect };
109
122
 
110
123
  //# sourceMappingURL=index27.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index27.js","names":[],"sources":["../src/components/select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./select.module.css\";\n\nexport type SelectOption = {\n label: string;\n value: string;\n disabled?: boolean;\n};\n\nexport type SelectProps = {\n options: SelectOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n allowEmptyOption?: boolean;\n fullWidth?: boolean;\n className?: string;\n id?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n autoComplete?: string;\n form?: string;\n title?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n};\n\nconst EMPTY_OPTION_VALUE = \"__uzi_select_empty__\";\n\nexport const Select = React.forwardRef<HTMLButtonElement, SelectProps>(\n (\n {\n options,\n value,\n onChange,\n placeholder,\n allowEmptyOption = false,\n fullWidth = true,\n className,\n id,\n name,\n disabled,\n required,\n autoComplete,\n form,\n title,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n onBlur,\n onFocus,\n },\n ref,\n ) => {\n return (\n <div\n className={cx(\n styles.wrapper,\n fullWidth && styles.wrapperFullWidth,\n className,\n )}\n >\n <SelectPrimitive.Root\n value={value}\n onValueChange={(nextValue: string) =>\n onChange(nextValue === EMPTY_OPTION_VALUE ? \"\" : nextValue)\n }\n name={name}\n disabled={disabled}\n required={required}\n autoComplete={autoComplete}\n form={form}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n id={id}\n className={styles.trigger}\n title={title}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n <SelectPrimitive.Value\n className={styles.value}\n placeholder={placeholder}\n />\n <SelectPrimitive.Icon\n className={styles.chevron}\n aria-hidden=\"true\"\n >\n <svg\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n >\n <path\n d=\"M2 3.5L5 6.5L8 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={styles.content}\n position=\"popper\"\n sideOffset={4}\n align=\"start\"\n >\n <SelectPrimitive.Viewport className={styles.viewport}>\n {placeholder && allowEmptyOption ? (\n <SelectPrimitive.Item\n value={EMPTY_OPTION_VALUE}\n className={styles.item}\n >\n <span className={styles.indicator}>\n <SelectPrimitive.ItemIndicator>\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n aria-hidden=\"true\"\n className={styles.indicatorIcon}\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{placeholder}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ) : null}\n\n {options.map((opt) => (\n <SelectPrimitive.Item\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n className={styles.item}\n >\n <span className={styles.indicator}>\n <SelectPrimitive.ItemIndicator>\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n aria-hidden=\"true\"\n className={styles.indicatorIcon}\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{opt.label}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n"],"mappings":";;;;;;;AAkCA,IAAM,qBAAqB;AAE3B,IAAa,SAAS,MAAM,YAExB,EACE,SACA,OACA,UACA,aACA,mBAAmB,OACnB,YAAY,MACZ,WACA,IACA,MACA,UACA,UACA,cACA,MACA,OACA,cAAc,WACd,mBAAmB,gBACnB,QACA,WAEF,QACG;CACH,OACE,oBAAC,OAAD;EACE,WAAW,GACT,sBAAO,SACP,aAAa,sBAAO,kBACpB,SACF;YAEA,qBAAC,gBAAgB,MAAjB;GACS;GACP,gBAAgB,cACd,SAAS,cAAc,qBAAqB,KAAK,SAAS;GAEtD;GACI;GACA;GACI;GACR;aATR,CAWE,qBAAC,gBAAgB,SAAjB;IACO;IACD;IACJ,WAAW,sBAAO;IACX;IACP,cAAY;IACZ,mBAAiB;IACT;IACC;cARX,CAUE,oBAAC,gBAAgB,OAAjB;KACE,WAAW,sBAAO;KACL;IACd,CAAA,GACD,oBAAC,gBAAgB,MAAjB;KACE,WAAW,sBAAO;KAClB,eAAY;eAEZ,oBAAC,OAAD;MACE,SAAQ;MACR,MAAK;MACL,OAAM;MACN,OAAM;MACN,QAAO;gBAEP,oBAAC,QAAD;OACE,GAAE;OACF,QAAO;OACP,aAAY;OACZ,eAAc;OACd,gBAAe;MAChB,CAAA;KACE,CAAA;IACe,CAAA,CACC;OAEzB,oBAAC,gBAAgB,QAAjB,EAAA,UACE,oBAAC,gBAAgB,SAAjB;IACE,WAAW,sBAAO;IAClB,UAAS;IACT,YAAY;IACZ,OAAM;cAEN,qBAAC,gBAAgB,UAAjB;KAA0B,WAAW,sBAAO;eAA5C,CACG,eAAe,mBACd,qBAAC,gBAAgB,MAAjB;MACE,OAAO;MACP,WAAW,sBAAO;gBAFpB,CAIE,oBAAC,QAAD;OAAM,WAAW,sBAAO;iBACtB,oBAAC,gBAAgB,eAAjB,EAAA,UACE,oBAAC,OAAD;QACE,SAAQ;QACR,OAAM;QACN,QAAO;QACP,eAAY;QACZ,WAAW,sBAAO;kBAElB,oBAAC,QAAD;SACE,GAAE;SACF,MAAK;SACL,QAAO;SACP,aAAY;SACZ,eAAc;SACd,gBAAe;QAChB,CAAA;OACE,CAAA,EACwB,CAAA;MAC3B,CAAA,GACN,oBAAC,gBAAgB,UAAjB,EAAA,UAA2B,YAAsC,CAAA,CAC7C;UACpB,MAEH,QAAQ,KAAK,QACZ,qBAAC,gBAAgB,MAAjB;MAEE,OAAO,IAAI;MACX,UAAU,IAAI;MACd,WAAW,sBAAO;gBAJpB,CAME,oBAAC,QAAD;OAAM,WAAW,sBAAO;iBACtB,oBAAC,gBAAgB,eAAjB,EAAA,UACE,oBAAC,OAAD;QACE,SAAQ;QACR,OAAM;QACN,QAAO;QACP,eAAY;QACZ,WAAW,sBAAO;kBAElB,oBAAC,QAAD;SACE,GAAE;SACF,MAAK;SACL,QAAO;SACP,aAAY;SACZ,eAAc;SACd,gBAAe;QAChB,CAAA;OACE,CAAA,EACwB,CAAA;MAC3B,CAAA,GACN,oBAAC,gBAAgB,UAAjB,EAAA,UAA2B,IAAI,MAAgC,CAAA,CAC3C;QA1Bf,IAAI,KA0BW,CACvB,CACuB;;GACH,CAAA,EACH,CAAA,CACJ;;CACnB,CAAA;AAET,CACF;AAEA,OAAO,cAAc"}
1
+ {"version":3,"file":"index27.js","names":[],"sources":["../src/components/multi-select/MultiSelect.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./multi-select.module.css\";\n\nexport type MultiSelectOption = {\n label: string;\n value: string;\n disabled?: boolean;\n};\n\nexport type MultiSelectProps = {\n options: MultiSelectOption[];\n value: string[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n fullWidth?: boolean;\n maxVisibleValues?: number;\n className?: string;\n disabled?: boolean;\n name?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n options,\n value,\n onChange,\n placeholder = \"Select options\",\n fullWidth = true,\n maxVisibleValues = 2,\n className,\n disabled = false,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n },\n ref,\n ) => {\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const selectedOptions = React.useMemo(\n () => options.filter((opt) => selectedSet.has(opt.value)),\n [options, selectedSet],\n );\n\n const toggleValue = React.useCallback(\n (nextValue: string) => {\n if (selectedSet.has(nextValue)) {\n onChange(value.filter((entry) => entry !== nextValue));\n return;\n }\n\n onChange([...value, nextValue]);\n },\n [onChange, selectedSet, value],\n );\n\n const visibleCount = Math.max(1, maxVisibleValues);\n const visibleOptions = selectedOptions.slice(0, visibleCount);\n const overflowCount = Math.max(\n 0,\n selectedOptions.length - visibleOptions.length,\n );\n\n return (\n <DropdownMenuPrimitive.Root modal={false}>\n <div\n className={cx(\n styles.wrapper,\n fullWidth && styles.wrapperFullWidth,\n className,\n )}\n >\n <DropdownMenuPrimitive.Trigger asChild>\n <button\n ref={ref}\n type=\"button\"\n className={styles.trigger}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n disabled={disabled}\n >\n <span className={styles.value}>\n {selectedOptions.length === 0 ? (\n <span className={styles.placeholder}>{placeholder}</span>\n ) : (\n <>\n {visibleOptions.map((option) => (\n <span key={option.value} className={styles.chip}>\n {option.label}\n </span>\n ))}\n {overflowCount > 0 ? (\n <span\n className={cx(\n styles.chip,\n styles.chipSummary,\n )}\n >\n +{overflowCount}\n </span>\n ) : null}\n </>\n )}\n </span>\n <span className={styles.chevron} aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n >\n <path\n d=\"M2 3.5L5 6.5L8 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n </DropdownMenuPrimitive.Trigger>\n\n {name\n ? value.map((entry) => (\n <input key={entry} type=\"hidden\" name={name} value={entry} />\n ))\n : null}\n\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={styles.menu}\n sideOffset={4}\n align=\"start\"\n >\n {options.map((option) => {\n const selected = selectedSet.has(option.value);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n key={option.value}\n className={cx(\n styles.option,\n selected && styles.optionSelected,\n option.disabled && styles.optionDisabled,\n )}\n checked={selected}\n disabled={option.disabled}\n onCheckedChange={() => toggleValue(option.value)}\n onSelect={(event) => event.preventDefault()}\n >\n <span\n className={cx(\n styles.indicator,\n selected && styles.indicatorSelected,\n option.disabled && styles.indicatorDisabled,\n )}\n aria-hidden=\"true\"\n >\n <DropdownMenuPrimitive.ItemIndicator forceMount>\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span className={styles.optionLabel}>{option.label}</span>\n </DropdownMenuPrimitive.CheckboxItem>\n );\n })}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </div>\n </DropdownMenuPrimitive.Root>\n );\n },\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n"],"mappings":";;;;;;;AA2BA,IAAa,cAAc,MAAM,YAE7B,EACE,SACA,OACA,UACA,cAAc,kBACd,YAAY,MACZ,mBAAmB,GACnB,WACA,WAAW,OACX,MACA,cAAc,WACd,mBAAmB,kBAErB,QACG;CACH,MAAM,cAAc,MAAM,cAAc,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;CAC/D,MAAM,kBAAkB,MAAM,cACtB,QAAQ,QAAQ,QAAQ,YAAY,IAAI,IAAI,KAAK,CAAC,GACxD,CAAC,SAAS,WAAW,CACvB;CAEA,MAAM,cAAc,MAAM,aACvB,cAAsB;EACrB,IAAI,YAAY,IAAI,SAAS,GAAG;GAC9B,SAAS,MAAM,QAAQ,UAAU,UAAU,SAAS,CAAC;GACrD;EACF;EAEA,SAAS,CAAC,GAAG,OAAO,SAAS,CAAC;CAChC,GACA;EAAC;EAAU;EAAa;CAAK,CAC/B;CAEA,MAAM,eAAe,KAAK,IAAI,GAAG,gBAAgB;CACjD,MAAM,iBAAiB,gBAAgB,MAAM,GAAG,YAAY;CAC5D,MAAM,gBAAgB,KAAK,IACzB,GACA,gBAAgB,SAAS,eAAe,MAC1C;CAEA,OACE,oBAAC,sBAAsB,MAAvB;EAA4B,OAAO;YACjC,qBAAC,OAAD;GACE,WAAW,GACT,4BAAO,SACP,aAAa,4BAAO,kBACpB,SACF;aALF;IAOE,oBAAC,sBAAsB,SAAvB;KAA+B,SAAA;eAC7B,qBAAC,UAAD;MACO;MACL,MAAK;MACL,WAAW,4BAAO;MAClB,cAAY;MACZ,mBAAiB;MACP;gBANZ,CAQE,oBAAC,QAAD;OAAM,WAAW,4BAAO;iBACrB,gBAAgB,WAAW,IAC1B,oBAAC,QAAD;QAAM,WAAW,4BAAO;kBAAc;OAAkB,CAAA,IAExD,qBAAA,UAAA,EAAA,UAAA,CACG,eAAe,KAAK,WACnB,oBAAC,QAAD;QAAyB,WAAW,4BAAO;kBACxC,OAAO;OACJ,GAFK,OAAO,KAEZ,CACP,GACA,gBAAgB,IACf,qBAAC,QAAD;QACE,WAAW,GACT,4BAAO,MACP,4BAAO,WACT;kBAJF,CAKC,KACG,aACE;YACJ,IACJ,EAAA,CAAA;MAEA,CAAA,GACN,oBAAC,QAAD;OAAM,WAAW,4BAAO;OAAS,eAAY;iBAC3C,oBAAC,OAAD;QACE,SAAQ;QACR,MAAK;QACL,OAAM;QACN,OAAM;QACN,QAAO;kBAEP,oBAAC,QAAD;SACE,GAAE;SACF,QAAO;SACP,aAAY;SACZ,eAAc;SACd,gBAAe;QAChB,CAAA;OACE,CAAA;MACD,CAAA,CACA;;IACqB,CAAA;IAE9B,OACG,MAAM,KAAK,UACT,oBAAC,SAAD;KAAmB,MAAK;KAAe;KAAM,OAAO;IAAQ,GAAhD,KAAgD,CAC7D,IACD;IAEJ,oBAAC,sBAAsB,QAAvB,EAAA,UACE,oBAAC,sBAAsB,SAAvB;KACE,WAAW,4BAAO;KAClB,YAAY;KACZ,OAAM;eAEL,QAAQ,KAAK,WAAW;MACvB,MAAM,WAAW,YAAY,IAAI,OAAO,KAAK;MAE7C,OACE,qBAAC,sBAAsB,cAAvB;OAEE,WAAW,GACT,4BAAO,QACP,YAAY,4BAAO,gBACnB,OAAO,YAAY,4BAAO,cAC5B;OACA,SAAS;OACT,UAAU,OAAO;OACjB,uBAAuB,YAAY,OAAO,KAAK;OAC/C,WAAW,UAAU,MAAM,eAAe;iBAV5C,CAYE,oBAAC,QAAD;QACE,WAAW,GACT,4BAAO,WACP,YAAY,4BAAO,mBACnB,OAAO,YAAY,4BAAO,iBAC5B;QACA,eAAY;kBAEZ,oBAAC,sBAAsB,eAAvB;SAAqC,YAAA;mBACnC,oBAAC,OAAD;UACE,SAAQ;UACR,OAAM;UACN,QAAO;UACP,MAAK;UACL,OAAM;oBAEN,oBAAC,QAAD;WACE,GAAE;WACF,QAAO;WACP,aAAY;WACZ,eAAc;WACd,gBAAe;UAChB,CAAA;SACE,CAAA;QAC8B,CAAA;OACjC,CAAA,GACN,oBAAC,QAAD;QAAM,WAAW,4BAAO;kBAAc,OAAO;OAAY,CAAA,CACvB;SAtC7B,OAAO,KAsCsB;KAExC,CAAC;IAC4B,CAAA,EACH,CAAA;GAC3B;;CACqB,CAAA;AAEhC,CACF;AAEA,YAAY,cAAc"}