@neut/ui 0.0.12 → 0.0.14

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 (368) hide show
  1. package/dist/components/calendar/Calendar/Calendar.d.ts +10 -0
  2. package/dist/components/calendar/Calendar/Calendar.js +306 -0
  3. package/dist/components/calendar/Calendar/Calendar.js.map +1 -0
  4. package/dist/components/calendar/Calendar/Calendar.types.d.ts +62 -0
  5. package/dist/components/calendar/Calendar/Calendar.utils.d.ts +21 -0
  6. package/dist/components/calendar/Calendar/Calendar.utils.js +68 -0
  7. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -0
  8. package/dist/components/calendar/Calendar/index.d.ts +2 -0
  9. package/dist/components/calendar/index.d.ts +2 -0
  10. package/dist/components/calendar/index.js +2 -0
  11. package/dist/components/combobox/Combobox/Combobox.context.d.ts +3 -0
  12. package/dist/components/combobox/Combobox/Combobox.context.js +12 -0
  13. package/dist/components/combobox/Combobox/Combobox.context.js.map +1 -0
  14. package/dist/components/combobox/Combobox/Combobox.d.ts +3 -0
  15. package/dist/components/combobox/Combobox/Combobox.js +60 -0
  16. package/dist/components/combobox/Combobox/Combobox.js.map +1 -0
  17. package/dist/components/combobox/Combobox/Combobox.types.d.ts +40 -0
  18. package/dist/components/combobox/Combobox/index.d.ts +2 -0
  19. package/dist/components/combobox/ComboboxChip/ComboboxChip.d.ts +7 -0
  20. package/dist/components/combobox/ComboboxChip/ComboboxChip.js +35 -0
  21. package/dist/components/combobox/ComboboxChip/ComboboxChip.js.map +1 -0
  22. package/dist/components/combobox/ComboboxChip/index.d.ts +1 -0
  23. package/dist/components/combobox/ComboboxChips/ComboboxChips.d.ts +5 -0
  24. package/dist/components/combobox/ComboboxChips/ComboboxChips.js +16 -0
  25. package/dist/components/combobox/ComboboxChips/ComboboxChips.js.map +1 -0
  26. package/dist/components/combobox/ComboboxChips/index.d.ts +1 -0
  27. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.d.ts +4 -0
  28. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +27 -0
  29. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -0
  30. package/dist/components/combobox/ComboboxChipsInput/index.d.ts +1 -0
  31. package/dist/components/combobox/ComboboxClear/ComboboxClear.d.ts +4 -0
  32. package/dist/components/combobox/ComboboxClear/ComboboxClear.js +30 -0
  33. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -0
  34. package/dist/components/combobox/ComboboxClear/index.d.ts +1 -0
  35. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.d.ts +5 -0
  36. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js +20 -0
  37. package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js.map +1 -0
  38. package/dist/components/combobox/ComboboxCollection/index.d.ts +1 -0
  39. package/dist/components/combobox/ComboboxContent/ComboboxContent.d.ts +2 -0
  40. package/dist/components/combobox/ComboboxContent/ComboboxContent.js +49 -0
  41. package/dist/components/combobox/ComboboxContent/ComboboxContent.js.map +1 -0
  42. package/dist/components/combobox/ComboboxContent/ComboboxContent.types.d.ts +12 -0
  43. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.d.ts +2 -0
  44. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js +6 -0
  45. package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js.map +1 -0
  46. package/dist/components/combobox/ComboboxContent/index.d.ts +1 -0
  47. package/dist/components/combobox/ComboboxContent/useComboboxContent.d.ts +13 -0
  48. package/dist/components/combobox/ComboboxContent/useComboboxContent.js +48 -0
  49. package/dist/components/combobox/ComboboxContent/useComboboxContent.js.map +1 -0
  50. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.d.ts +5 -0
  51. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js +14 -0
  52. package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
  53. package/dist/components/combobox/ComboboxEmpty/index.d.ts +1 -0
  54. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.d.ts +5 -0
  55. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js +13 -0
  56. package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js.map +1 -0
  57. package/dist/components/combobox/ComboboxGroup/index.d.ts +1 -0
  58. package/dist/components/combobox/ComboboxInput/ComboboxInput.d.ts +9 -0
  59. package/dist/components/combobox/ComboboxInput/ComboboxInput.js +85 -0
  60. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -0
  61. package/dist/components/combobox/ComboboxInput/index.d.ts +1 -0
  62. package/dist/components/combobox/ComboboxItem/ComboboxItem.d.ts +7 -0
  63. package/dist/components/combobox/ComboboxItem/ComboboxItem.js +40 -0
  64. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -0
  65. package/dist/components/combobox/ComboboxItem/index.d.ts +1 -0
  66. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.d.ts +5 -0
  67. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js +14 -0
  68. package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js.map +1 -0
  69. package/dist/components/combobox/ComboboxLabel/index.d.ts +1 -0
  70. package/dist/components/combobox/ComboboxList/ComboboxList.d.ts +5 -0
  71. package/dist/components/combobox/ComboboxList/ComboboxList.js +22 -0
  72. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -0
  73. package/dist/components/combobox/ComboboxList/index.d.ts +1 -0
  74. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.d.ts +3 -0
  75. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js +14 -0
  76. package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js.map +1 -0
  77. package/dist/components/combobox/ComboboxSeparator/index.d.ts +1 -0
  78. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.d.ts +6 -0
  79. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +34 -0
  80. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -0
  81. package/dist/components/combobox/ComboboxTrigger/index.d.ts +1 -0
  82. package/dist/components/combobox/ComboboxValue/ComboboxValue.d.ts +5 -0
  83. package/dist/components/combobox/ComboboxValue/ComboboxValue.js +15 -0
  84. package/dist/components/combobox/ComboboxValue/ComboboxValue.js.map +1 -0
  85. package/dist/components/combobox/ComboboxValue/index.d.ts +1 -0
  86. package/dist/components/combobox/index.d.ts +18 -0
  87. package/dist/components/combobox/index.js +18 -0
  88. package/dist/components/combobox/useComboboxAnchor/index.d.ts +1 -0
  89. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.d.ts +1 -0
  90. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js +9 -0
  91. package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js.map +1 -0
  92. package/dist/components/date-picker/DatePicker/DatePicker.d.ts +11 -0
  93. package/dist/components/date-picker/DatePicker/DatePicker.js +136 -0
  94. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -0
  95. package/dist/components/date-picker/DatePicker/DatePicker.types.d.ts +32 -0
  96. package/dist/components/date-picker/DatePicker/index.d.ts +2 -0
  97. package/dist/components/date-picker/index.d.ts +2 -0
  98. package/dist/components/date-picker/index.js +2 -0
  99. package/dist/components/dialog/Dialog/Dialog.context.d.ts +2 -1
  100. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  101. package/dist/components/dialog/Dialog/Dialog.js +21 -12
  102. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  103. package/dist/components/dialog/Dialog/Dialog.types.d.ts +13 -1
  104. package/dist/components/dialog/Dialog/index.d.ts +1 -0
  105. package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +4 -2
  106. package/dist/components/dialog/DialogTrigger/DialogTrigger.js +27 -6
  107. package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -1
  108. package/dist/components/dialog/DialogTrigger/DialogTrigger.types.d.ts +3 -0
  109. package/dist/components/dialog/DialogTrigger/index.d.ts +3 -0
  110. package/dist/components/dialog/DialogTrigger/useDialogTrigger.d.ts +13 -2
  111. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js +15 -19
  112. package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -1
  113. package/dist/components/dialog/index.js +3 -2
  114. package/dist/components/empty/Empty/Empty.d.ts +2 -0
  115. package/dist/components/empty/Empty/Empty.js +18 -0
  116. package/dist/components/empty/Empty/Empty.js.map +1 -0
  117. package/dist/components/empty/Empty/index.d.ts +1 -0
  118. package/dist/components/empty/EmptyContent/EmptyContent.d.ts +2 -0
  119. package/dist/components/empty/EmptyContent/EmptyContent.js +18 -0
  120. package/dist/components/empty/EmptyContent/EmptyContent.js.map +1 -0
  121. package/dist/components/empty/EmptyContent/index.d.ts +1 -0
  122. package/dist/components/empty/EmptyDescription/EmptyDescription.d.ts +2 -0
  123. package/dist/components/empty/EmptyDescription/EmptyDescription.js +18 -0
  124. package/dist/components/empty/EmptyDescription/EmptyDescription.js.map +1 -0
  125. package/dist/components/empty/EmptyDescription/index.d.ts +1 -0
  126. package/dist/components/empty/EmptyHeader/EmptyHeader.d.ts +2 -0
  127. package/dist/components/empty/EmptyHeader/EmptyHeader.js +18 -0
  128. package/dist/components/empty/EmptyHeader/EmptyHeader.js.map +1 -0
  129. package/dist/components/empty/EmptyHeader/index.d.ts +1 -0
  130. package/dist/components/empty/EmptyMedia/EmptyMedia.d.ts +4 -0
  131. package/dist/components/empty/EmptyMedia/EmptyMedia.js +27 -0
  132. package/dist/components/empty/EmptyMedia/EmptyMedia.js.map +1 -0
  133. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.d.ts +3 -0
  134. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js +13 -0
  135. package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js.map +1 -0
  136. package/dist/components/empty/EmptyMedia/EmptyMedia.types.d.ts +3 -0
  137. package/dist/components/empty/EmptyMedia/index.d.ts +2 -0
  138. package/dist/components/empty/EmptyTitle/EmptyTitle.d.ts +2 -0
  139. package/dist/components/empty/EmptyTitle/EmptyTitle.js +18 -0
  140. package/dist/components/empty/EmptyTitle/EmptyTitle.js.map +1 -0
  141. package/dist/components/empty/EmptyTitle/index.d.ts +1 -0
  142. package/dist/components/empty/index.d.ts +7 -0
  143. package/dist/components/empty/index.js +7 -0
  144. package/dist/components/image/Image.utils.js.map +1 -1
  145. package/dist/components/popover/Popover/Popover.context.d.ts +3 -0
  146. package/dist/components/popover/Popover/Popover.context.js +12 -0
  147. package/dist/components/popover/Popover/Popover.context.js.map +1 -0
  148. package/dist/components/popover/Popover/Popover.d.ts +18 -0
  149. package/dist/components/popover/Popover/Popover.js +37 -0
  150. package/dist/components/popover/Popover/Popover.js.map +1 -0
  151. package/dist/components/popover/Popover/Popover.types.d.ts +24 -0
  152. package/dist/components/popover/Popover/index.d.ts +3 -0
  153. package/dist/components/popover/PopoverContent/PopoverContent.d.ts +6 -0
  154. package/dist/components/popover/PopoverContent/PopoverContent.js +72 -0
  155. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -0
  156. package/dist/components/popover/PopoverContent/PopoverContent.types.d.ts +16 -0
  157. package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +20 -0
  158. package/dist/components/popover/PopoverContent/PopoverContent.utils.js +36 -0
  159. package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -0
  160. package/dist/components/popover/PopoverContent/index.d.ts +6 -0
  161. package/dist/components/popover/PopoverContent/usePopoverContent.d.ts +11 -0
  162. package/dist/components/popover/PopoverContent/usePopoverContent.js +42 -0
  163. package/dist/components/popover/PopoverContent/usePopoverContent.js.map +1 -0
  164. package/dist/components/popover/PopoverDescription/PopoverDescription.d.ts +2 -0
  165. package/dist/components/popover/PopoverDescription/PopoverDescription.js +18 -0
  166. package/dist/components/popover/PopoverDescription/PopoverDescription.js.map +1 -0
  167. package/dist/components/popover/PopoverDescription/index.d.ts +1 -0
  168. package/dist/components/popover/PopoverHeader/PopoverHeader.d.ts +2 -0
  169. package/dist/components/popover/PopoverHeader/PopoverHeader.js +18 -0
  170. package/dist/components/popover/PopoverHeader/PopoverHeader.js.map +1 -0
  171. package/dist/components/popover/PopoverHeader/index.d.ts +1 -0
  172. package/dist/components/popover/PopoverTitle/PopoverTitle.d.ts +2 -0
  173. package/dist/components/popover/PopoverTitle/PopoverTitle.js +18 -0
  174. package/dist/components/popover/PopoverTitle/PopoverTitle.js.map +1 -0
  175. package/dist/components/popover/PopoverTitle/index.d.ts +1 -0
  176. package/dist/components/popover/PopoverTrigger/PopoverTrigger.d.ts +4 -0
  177. package/dist/components/popover/PopoverTrigger/PopoverTrigger.js +35 -0
  178. package/dist/components/popover/PopoverTrigger/PopoverTrigger.js.map +1 -0
  179. package/dist/components/popover/PopoverTrigger/PopoverTrigger.types.d.ts +3 -0
  180. package/dist/components/popover/PopoverTrigger/index.d.ts +4 -0
  181. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.d.ts +14 -0
  182. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js +35 -0
  183. package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js.map +1 -0
  184. package/dist/components/popover/index.d.ts +9 -0
  185. package/dist/components/popover/index.js +7 -0
  186. package/dist/components/radio-group/RadioGroup/RadioGroup.context.d.ts +3 -0
  187. package/dist/components/radio-group/RadioGroup/RadioGroup.context.js +12 -0
  188. package/dist/components/radio-group/RadioGroup/RadioGroup.context.js.map +1 -0
  189. package/dist/components/radio-group/RadioGroup/RadioGroup.d.ts +15 -0
  190. package/dist/components/radio-group/RadioGroup/RadioGroup.js +56 -0
  191. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -0
  192. package/dist/components/radio-group/RadioGroup/RadioGroup.types.d.ts +22 -0
  193. package/dist/components/radio-group/RadioGroup/index.d.ts +3 -0
  194. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.d.ts +6 -0
  195. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +80 -0
  196. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -0
  197. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.types.d.ts +9 -0
  198. package/dist/components/radio-group/RadioGroupItem/index.d.ts +2 -0
  199. package/dist/components/radio-group/index.d.ts +4 -0
  200. package/dist/components/radio-group/index.js +3 -0
  201. package/dist/components/select/Select/Select.context.d.ts +3 -3
  202. package/dist/components/select/Select/Select.context.js.map +1 -1
  203. package/dist/components/select/Select/Select.d.ts +5 -2
  204. package/dist/components/select/Select/Select.js +1 -1
  205. package/dist/components/select/Select/Select.js.map +1 -1
  206. package/dist/components/select/Select/Select.types.d.ts +19 -15
  207. package/dist/components/select/Select/index.d.ts +1 -1
  208. package/dist/components/select/SelectContent/SelectContent.js +2 -2
  209. package/dist/components/select/SelectContent/SelectContent.js.map +1 -1
  210. package/dist/components/select/SelectContent/SelectContent.utils.d.ts +2 -1
  211. package/dist/components/select/SelectContent/SelectContent.utils.js +2 -2
  212. package/dist/components/select/SelectContent/SelectContent.utils.js.map +1 -1
  213. package/dist/components/select/SelectContent/useSelectContent.js +6 -2
  214. package/dist/components/select/SelectContent/useSelectContent.js.map +1 -1
  215. package/dist/components/select/SelectItem/SelectItem.js +1 -1
  216. package/dist/components/select/SelectItem/SelectItem.js.map +1 -1
  217. package/dist/components/select/SelectItem/SelectItem.types.d.ts +3 -2
  218. package/dist/components/select/SelectItem/useSelectItem.d.ts +2 -1
  219. package/dist/components/select/SelectItem/useSelectItem.js +1 -1
  220. package/dist/components/select/SelectItem/useSelectItem.js.map +1 -1
  221. package/dist/components/select/SelectValue/SelectValue.js +1 -1
  222. package/dist/components/select/SelectValue/SelectValue.js.map +1 -1
  223. package/dist/components/toast/Toast/Toast.d.ts +3 -0
  224. package/dist/components/toast/Toast/Toast.js +181 -0
  225. package/dist/components/toast/Toast/Toast.js.map +1 -0
  226. package/dist/components/toast/Toast/Toast.styles.d.ts +6 -0
  227. package/dist/components/toast/Toast/Toast.styles.js +27 -0
  228. package/dist/components/toast/Toast/Toast.styles.js.map +1 -0
  229. package/dist/components/toast/Toast/Toast.types.d.ts +90 -0
  230. package/dist/components/toast/Toast/Toast.types.js +6 -0
  231. package/dist/components/toast/Toast/Toast.types.js.map +1 -0
  232. package/dist/components/toast/Toast/index.d.ts +2 -0
  233. package/dist/components/toast/{components → Toaster}/Toaster.d.ts +1 -1
  234. package/dist/components/toast/Toaster/Toaster.js +102 -0
  235. package/dist/components/toast/Toaster/Toaster.js.map +1 -0
  236. package/dist/components/toast/Toaster/Toaster.styles.d.ts +1 -0
  237. package/dist/components/toast/Toaster/Toaster.styles.js +6 -0
  238. package/dist/components/toast/Toaster/Toaster.styles.js.map +1 -0
  239. package/dist/components/toast/Toaster/Toaster.types.d.ts +44 -0
  240. package/dist/components/toast/Toaster/Toaster.utils.d.ts +7 -0
  241. package/dist/components/toast/Toaster/Toaster.utils.js +33 -0
  242. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -0
  243. package/dist/components/toast/Toaster/index.d.ts +3 -0
  244. package/dist/components/toast/index.d.ts +5 -10
  245. package/dist/components/toast/index.js +4 -5
  246. package/dist/components/toast/state/index.d.ts +1 -0
  247. package/dist/components/toast/state/toast.d.ts +24 -0
  248. package/dist/components/toast/state/toast.js +116 -0
  249. package/dist/components/toast/state/toast.js.map +1 -0
  250. package/dist/components/toggle/Toggle/Toggle.d.ts +3 -0
  251. package/dist/components/toggle/Toggle/Toggle.js +49 -0
  252. package/dist/components/toggle/Toggle/Toggle.js.map +1 -0
  253. package/dist/components/toggle/Toggle/Toggle.styles.d.ts +4 -0
  254. package/dist/components/toggle/Toggle/Toggle.styles.js +23 -0
  255. package/dist/components/toggle/Toggle/Toggle.styles.js.map +1 -0
  256. package/dist/components/toggle/Toggle/Toggle.types.d.ts +12 -0
  257. package/dist/components/toggle/Toggle/index.d.ts +3 -0
  258. package/dist/components/toggle/index.d.ts +2 -0
  259. package/dist/components/toggle/index.js +3 -0
  260. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.d.ts +36 -0
  261. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js +40 -0
  262. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -0
  263. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.d.ts +18 -0
  264. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +94 -0
  265. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -0
  266. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.d.ts +8 -0
  267. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js +7 -0
  268. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js.map +1 -0
  269. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.types.d.ts +104 -0
  270. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +8 -0
  271. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +25 -0
  272. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -0
  273. package/dist/components/toggle-group/ToggleGroup/index.d.ts +3 -0
  274. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +17 -0
  275. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +47 -0
  276. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -0
  277. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.d.ts +11 -0
  278. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +88 -0
  279. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -0
  280. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.d.ts +12 -0
  281. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js +7 -0
  282. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js.map +1 -0
  283. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.types.d.ts +20 -0
  284. package/dist/components/toggle-group/ToggleGroupItem/index.d.ts +2 -0
  285. package/dist/components/toggle-group/call-event-handler.d.ts +5 -0
  286. package/dist/components/toggle-group/call-event-handler.js +9 -0
  287. package/dist/components/toggle-group/call-event-handler.js.map +1 -0
  288. package/dist/components/toggle-group/index.d.ts +4 -0
  289. package/dist/components/toggle-group/index.js +3 -0
  290. package/dist/components/tooltip/Tooltip/Tooltip.js +51 -50
  291. package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -1
  292. package/dist/components/tooltip/TooltipArrow/TooltipArrow.d.ts +3 -28
  293. package/dist/components/tooltip/TooltipArrow/TooltipArrow.js +13 -45
  294. package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -1
  295. package/dist/components/tooltip/TooltipContent/TooltipContent.context.d.ts +2 -0
  296. package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -1
  297. package/dist/components/tooltip/TooltipContent/TooltipContent.js +2 -1
  298. package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -1
  299. package/dist/components/tooltip/TooltipContent/TooltipContent.types.d.ts +3 -2
  300. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +2 -1
  301. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +8 -4
  302. package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
  303. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +20 -19
  304. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  305. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.d.ts +3 -0
  306. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js +10 -0
  307. package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js.map +1 -0
  308. package/dist/components/tooltip/TooltipProvider/TooltipProvider.d.ts +3 -0
  309. package/dist/components/tooltip/TooltipProvider/TooltipProvider.js +20 -0
  310. package/dist/components/tooltip/TooltipProvider/TooltipProvider.js.map +1 -0
  311. package/dist/components/tooltip/TooltipProvider/TooltipProvider.types.d.ts +11 -0
  312. package/dist/components/tooltip/TooltipProvider/index.d.ts +3 -0
  313. package/dist/components/tooltip/index.d.ts +2 -0
  314. package/dist/components/tooltip/index.js +7 -6
  315. package/dist/index.d.ts +8 -0
  316. package/dist/index.js +153 -115
  317. package/dist/ui.css +1 -1
  318. package/package.json +7 -6
  319. package/dist/components/toast/components/Assets.d.ts +0 -9
  320. package/dist/components/toast/components/Assets.js +0 -32
  321. package/dist/components/toast/components/Assets.js.map +0 -1
  322. package/dist/components/toast/components/Toast.d.ts +0 -3
  323. package/dist/components/toast/components/Toast.js +0 -152
  324. package/dist/components/toast/components/Toast.js.map +0 -1
  325. package/dist/components/toast/components/ToastActions.d.ts +0 -12
  326. package/dist/components/toast/components/ToastActions.js +0 -62
  327. package/dist/components/toast/components/ToastActions.js.map +0 -1
  328. package/dist/components/toast/components/ToastContent.d.ts +0 -9
  329. package/dist/components/toast/components/ToastContent.js +0 -36
  330. package/dist/components/toast/components/ToastContent.js.map +0 -1
  331. package/dist/components/toast/components/ToastIcon.d.ts +0 -9
  332. package/dist/components/toast/components/ToastIcon.js +0 -59
  333. package/dist/components/toast/components/ToastIcon.js.map +0 -1
  334. package/dist/components/toast/components/Toaster.js +0 -163
  335. package/dist/components/toast/components/Toaster.js.map +0 -1
  336. package/dist/components/toast/constants.d.ts +0 -16
  337. package/dist/components/toast/constants.js +0 -6
  338. package/dist/components/toast/constants.js.map +0 -1
  339. package/dist/components/toast/hooks/useSwipe.d.ts +0 -23
  340. package/dist/components/toast/hooks/useSwipe.js +0 -59
  341. package/dist/components/toast/hooks/useSwipe.js.map +0 -1
  342. package/dist/components/toast/hooks/useTheme.d.ts +0 -2
  343. package/dist/components/toast/hooks/useTheme.js +0 -22
  344. package/dist/components/toast/hooks/useTheme.js.map +0 -1
  345. package/dist/components/toast/hooks/useToastHeight.d.ts +0 -11
  346. package/dist/components/toast/hooks/useToastHeight.js +0 -35
  347. package/dist/components/toast/hooks/useToastHeight.js.map +0 -1
  348. package/dist/components/toast/hooks/useToastSubscription.d.ts +0 -5
  349. package/dist/components/toast/hooks/useToastSubscription.js +0 -38
  350. package/dist/components/toast/hooks/useToastSubscription.js.map +0 -1
  351. package/dist/components/toast/hooks/useToastTimer.d.ts +0 -11
  352. package/dist/components/toast/hooks/useToastTimer.js +0 -22
  353. package/dist/components/toast/hooks/useToastTimer.js.map +0 -1
  354. package/dist/components/toast/hooks/useToasterKeyboard.d.ts +0 -7
  355. package/dist/components/toast/hooks/useToasterKeyboard.js +0 -14
  356. package/dist/components/toast/hooks/useToasterKeyboard.js.map +0 -1
  357. package/dist/components/toast/hooks.d.ts +0 -13
  358. package/dist/components/toast/hooks.js +0 -37
  359. package/dist/components/toast/hooks.js.map +0 -1
  360. package/dist/components/toast/state.d.ts +0 -52
  361. package/dist/components/toast/state.js +0 -170
  362. package/dist/components/toast/state.js.map +0 -1
  363. package/dist/components/toast/types.d.ts +0 -168
  364. package/dist/components/toast/types.js +0 -6
  365. package/dist/components/toast/types.js.map +0 -1
  366. package/dist/components/toast/utils.d.ts +0 -10
  367. package/dist/components/toast/utils.js +0 -39
  368. package/dist/components/toast/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.js","names":["splitProps","ComponentProps","clsx","PopoverHeader","props","local","rest","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/popover/PopoverHeader/PopoverHeader.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ComponentProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport function PopoverHeader(props: ComponentProps<\"div\">) {\n const [local, rest] = splitProps(props, [\"class\"]);\n return (\n <div\n data-slot=\"popover-header\"\n class={clsx(\"flex flex-col gap-0.5 text-sm\", local.class)}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAIA,SAAgBG,EAAcC,GAA8B;CAC1D,IAAM,CAACC,GAAOC,KAAQN,EAAWI,GAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAIY,OAJZC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;GAAA,OAGWR,EAAK,iCAAiCG,EAAMM,KAAK;EAAC,EAAA,GACrDL,CAAI,GAAA,IAAA,EAAA,GAAAC;CAAA,EAAA,CAAA;AAGd"}
@@ -0,0 +1 @@
1
+ export { PopoverHeader } from './PopoverHeader';
@@ -0,0 +1,2 @@
1
+ import { ComponentProps } from 'solid-js';
2
+ export declare function PopoverTitle(props: ComponentProps<"div">): import("solid-js").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { clsx as e } from "../../../utils/clsx.js";
2
+ import { mergeProps as t, spread as n, template as r } from "solid-js/web";
3
+ import { splitProps as i } from "solid-js";
4
+ //#region src/components/popover/PopoverTitle/PopoverTitle.tsx
5
+ var a = /*#__PURE__*/ r("<div data-slot=popover-title>");
6
+ function o(r) {
7
+ let [o, s] = i(r, ["class"]);
8
+ return (() => {
9
+ var r = a();
10
+ return n(r, t({ get class() {
11
+ return e("font-medium", o.class);
12
+ } }, s), !1, !1), r;
13
+ })();
14
+ }
15
+ //#endregion
16
+ export { o as PopoverTitle };
17
+
18
+ //# sourceMappingURL=PopoverTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverTitle.js","names":["splitProps","ComponentProps","clsx","PopoverTitle","props","local","rest","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/popover/PopoverTitle/PopoverTitle.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ComponentProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport function PopoverTitle(props: ComponentProps<\"div\">) {\n const [local, rest] = splitProps(props, [\"class\"]);\n return (\n <div\n data-slot=\"popover-title\"\n class={clsx(\"font-medium\", local.class)}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAIA,SAAgBG,EAAaC,GAA8B;CACzD,IAAM,CAACC,GAAOC,KAAQN,EAAWI,GAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAIY,OAJZC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;GAAA,OAGWR,EAAK,eAAeG,EAAMM,KAAK;EAAC,EAAA,GACnCL,CAAI,GAAA,IAAA,EAAA,GAAAC;CAAA,EAAA,CAAA;AAGd"}
@@ -0,0 +1 @@
1
+ export { PopoverTitle } from './PopoverTitle';
@@ -0,0 +1,4 @@
1
+ import { ValidComponent } from 'solid-js';
2
+ import { Button } from '../../button';
3
+ import { PopoverTriggerProps } from './PopoverTrigger.types';
4
+ export declare const PopoverTrigger: <T extends ValidComponent = typeof Button<"button">>(props: PopoverTriggerProps<T>) => import("solid-js").JSX.Element;
@@ -0,0 +1,35 @@
1
+ import { mergeRefs as e } from "../../../utils/ref.js";
2
+ import { Button as t } from "../../button/Button.js";
3
+ import { usePopoverTrigger as n } from "./usePopoverTrigger.js";
4
+ import { Dynamic as r, createComponent as i, memo as a, mergeProps as o } from "solid-js/web";
5
+ //#region src/components/popover/PopoverTrigger/PopoverTrigger.tsx
6
+ var s = (s) => {
7
+ let { ctx: c, isDisabled: l, attachListeners: u } = n(() => s);
8
+ return i(r, o(s, {
9
+ get component() {
10
+ return s.component ?? t;
11
+ },
12
+ ref(t) {
13
+ var n = e(c.setReference, s.ref, u);
14
+ typeof n == "function" && n(t);
15
+ },
16
+ get disabled() {
17
+ return l();
18
+ },
19
+ "data-slot": "popover-trigger",
20
+ "aria-haspopup": "dialog",
21
+ get "aria-expanded"() {
22
+ return c.open();
23
+ },
24
+ get "aria-controls"() {
25
+ return a(() => !!c.open())() ? c.contentId : void 0;
26
+ },
27
+ get "data-state"() {
28
+ return c.open() ? "open" : "closed";
29
+ }
30
+ }));
31
+ };
32
+ //#endregion
33
+ export { s as PopoverTrigger };
34
+
35
+ //# sourceMappingURL=PopoverTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverTrigger.js","names":["ValidComponent","Dynamic","Button","mergeRefs","usePopoverTrigger","PopoverTriggerProps","PopoverTrigger","props","T","ctx","isDisabled","attachListeners","_$createComponent","_$mergeProps","component","ref","r$","_ref$","setReference","disabled","aria-expanded","open","aria-controls","_$memo","contentId","undefined","data-state"],"sources":["../../../../src/components/popover/PopoverTrigger/PopoverTrigger.tsx"],"sourcesContent":["import type { ValidComponent } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { Button } from \"~/components/button\";\nimport { mergeRefs } from \"~/utils\";\nimport { usePopoverTrigger } from \"./usePopoverTrigger\";\nimport type { PopoverTriggerProps } from \"./PopoverTrigger.types\";\n\nexport const PopoverTrigger = <\n T extends ValidComponent = typeof Button<\"button\">,\n>(\n props: PopoverTriggerProps<T>,\n) => {\n const { ctx, isDisabled, attachListeners } = usePopoverTrigger(() => props);\n\n return (\n <Dynamic\n {...props}\n component={(props.component as ValidComponent) ?? Button<\"button\">}\n ref={mergeRefs(ctx.setReference, props.ref, attachListeners)}\n disabled={isDisabled()}\n data-slot=\"popover-trigger\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open()}\n aria-controls={ctx.open() ? ctx.contentId : undefined}\n data-state={ctx.open() ? \"open\" : \"closed\"}\n />\n );\n};\n"],"mappings":";;;;;AAOA,IAAaM,KAGXC,MACG;CACH,IAAM,EAAEE,QAAKC,eAAYC,uBAAoBP,QAAwBG,CAAK;CAE1E,OAAAK,EACGX,GAAOY,EACFN,GAAK;EAAA,IACTO,YAAS;GAAA,OAAGP,EAAMO,aAAgCZ;EAAgB;EAAAa,IAAAC,GAAA;GAAA,IAAAC,IAC7Dd,EAAUM,EAAIS,cAAcX,EAAMQ,KAAKJ,CAAe;GAAC,OAAAM,KAAA,cAAAA,EAAAD,CAAA;EAAA;EAAA,IAC5DG,WAAQ;GAAA,OAAET,EAAW;EAAC;EAAA,aAAA;EAAA,iBAAA;EAAA,IAAA,kBAAA;GAAA,OAGPD,EAAIY,KAAK;EAAC;EAAA,IAAA,kBAAA;GAAA,OACVE,QAAA,CAAA,CAAAd,EAAIY,KAAK,CAAC,CAAA,CAAA,IAAGZ,EAAIe,YAAYC,KAAAA;EAAS;EAAA,IAAA,eAAA;GAAA,OACzChB,EAAIY,KAAK,IAAI,SAAS;EAAQ;CAAA,CAAA,CAAA;AAGhD"}
@@ -0,0 +1,3 @@
1
+ import { ValidComponent } from 'solid-js';
2
+ import { PolymorphicProps } from '../../../types';
3
+ export type PopoverTriggerProps<T extends ValidComponent> = PolymorphicProps<T>;
@@ -0,0 +1,4 @@
1
+ export { PopoverTrigger } from './PopoverTrigger';
2
+ export type { PopoverTriggerProps } from './PopoverTrigger.types';
3
+ export { usePopoverTrigger } from './usePopoverTrigger';
4
+ export type { UsePopoverTriggerResult } from './usePopoverTrigger';
@@ -0,0 +1,14 @@
1
+ import { usePopoverContext } from '../Popover/Popover.context';
2
+ import { PopoverTriggerProps } from './PopoverTrigger.types';
3
+ import { ValidComponent } from 'solid-js';
4
+ export interface UsePopoverTriggerResult {
5
+ ctx: ReturnType<typeof usePopoverContext>;
6
+ isDisabled: () => boolean;
7
+ /**
8
+ * 把开关浮层相关的原生事件监听器绑定到真正的 DOM 元素上(通过 ref 调用)。
9
+ * 使用 addEventListener 而不是 JSX 的 onXxx prop,是为了不占用这些 prop 名——
10
+ * 调用方自己传的 onClick 不会被覆盖。
11
+ */
12
+ attachListeners: (el: Element) => void;
13
+ }
14
+ export declare function usePopoverTrigger<T extends ValidComponent>(props: () => PopoverTriggerProps<T>): UsePopoverTriggerResult;
@@ -0,0 +1,35 @@
1
+ import { usePopoverContext as e } from "../Popover/Popover.context.js";
2
+ import { onCleanup as t } from "solid-js";
3
+ //#region src/components/popover/PopoverTrigger/usePopoverTrigger.ts
4
+ function n(n) {
5
+ let r = e("PopoverTrigger"), i = () => r.disabled() || !!n().disabled;
6
+ return {
7
+ ctx: r,
8
+ isDisabled: i,
9
+ attachListeners: (e) => {
10
+ let n = () => {
11
+ i() || r.togglePopover();
12
+ }, a = (e) => {
13
+ if (i()) return;
14
+ let t = e;
15
+ if (!r.open()) {
16
+ [
17
+ "ArrowDown",
18
+ "ArrowUp",
19
+ "Enter",
20
+ " "
21
+ ].includes(t.key) && (t.preventDefault(), r.openPopover());
22
+ return;
23
+ }
24
+ t.key === "Escape" && (t.stopPropagation(), r.closePopover());
25
+ };
26
+ e.addEventListener("click", n), e.addEventListener("keydown", a), t(() => {
27
+ e.removeEventListener("click", n), e.removeEventListener("keydown", a);
28
+ });
29
+ }
30
+ };
31
+ }
32
+ //#endregion
33
+ export { n as usePopoverTrigger };
34
+
35
+ //# sourceMappingURL=usePopoverTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePopoverTrigger.js","names":[],"sources":["../../../../src/components/popover/PopoverTrigger/usePopoverTrigger.ts"],"sourcesContent":["import { onCleanup } from \"solid-js\";\nimport { usePopoverContext } from \"../Popover/Popover.context\";\nimport type { PopoverTriggerProps } from \"./PopoverTrigger.types\";\nimport type { ValidComponent } from \"solid-js\";\n\nexport interface UsePopoverTriggerResult {\n ctx: ReturnType<typeof usePopoverContext>;\n isDisabled: () => boolean;\n /**\n * 把开关浮层相关的原生事件监听器绑定到真正的 DOM 元素上(通过 ref 调用)。\n * 使用 addEventListener 而不是 JSX 的 onXxx prop,是为了不占用这些 prop 名——\n * 调用方自己传的 onClick 不会被覆盖。\n */\n attachListeners: (el: Element) => void;\n}\n\nexport function usePopoverTrigger<T extends ValidComponent>(\n props: () => PopoverTriggerProps<T>,\n): UsePopoverTriggerResult {\n const ctx = usePopoverContext(\"PopoverTrigger\");\n\n const isDisabled = () => ctx.disabled() || !!props().disabled;\n\n const attachListeners = (el: Element) => {\n const onClick = () => {\n if (isDisabled()) return;\n ctx.togglePopover();\n };\n\n const onKeyDown = (e: Event) => {\n if (isDisabled()) return;\n const keyboardEvent = e as KeyboardEvent;\n\n if (!ctx.open()) {\n if (\n [\"ArrowDown\", \"ArrowUp\", \"Enter\", \" \"].includes(keyboardEvent.key)\n ) {\n keyboardEvent.preventDefault();\n ctx.openPopover();\n }\n return;\n }\n\n if (keyboardEvent.key === \"Escape\") {\n keyboardEvent.stopPropagation();\n ctx.closePopover();\n }\n };\n\n el.addEventListener(\"click\", onClick);\n el.addEventListener(\"keydown\", onKeyDown);\n\n onCleanup(() => {\n el.removeEventListener(\"click\", onClick);\n el.removeEventListener(\"keydown\", onKeyDown);\n });\n };\n\n return { ctx, isDisabled, attachListeners };\n}\n"],"mappings":";;;AAgBA,SAAgB,EACd,GACyB;CACzB,IAAM,IAAM,EAAkB,gBAAgB,GAExC,UAAmB,EAAI,SAAS,KAAK,CAAC,CAAC,EAAM,CAAC,CAAC;CAqCrD,OAAO;EAAE;EAAK;EAAY,kBAnCD,MAAgB;GACvC,IAAM,UAAgB;IAChB,EAAW,KACf,EAAI,cAAc;GACpB,GAEM,KAAa,MAAa;IAC9B,IAAI,EAAW,GAAG;IAClB,IAAM,IAAgB;IAEtB,IAAI,CAAC,EAAI,KAAK,GAAG;KACf,AACE;MAAC;MAAa;MAAW;MAAS;KAAG,CAAC,CAAC,SAAS,EAAc,GAAG,MAEjE,EAAc,eAAe,GAC7B,EAAI,YAAY;KAElB;IACF;IAEA,AAAI,EAAc,QAAQ,aACxB,EAAc,gBAAgB,GAC9B,EAAI,aAAa;GAErB;GAKA,AAHA,EAAG,iBAAiB,SAAS,CAAO,GACpC,EAAG,iBAAiB,WAAW,CAAS,GAExC,QAAgB;IAEd,AADA,EAAG,oBAAoB,SAAS,CAAO,GACvC,EAAG,oBAAoB,WAAW,CAAS;GAC7C,CAAC;EACH;CAE0C;AAC5C"}
@@ -0,0 +1,9 @@
1
+ export { Popover } from './Popover';
2
+ export type { PopoverProps, PopoverContextValue } from './Popover';
3
+ export { PopoverTrigger } from './PopoverTrigger';
4
+ export type { PopoverTriggerProps } from './PopoverTrigger';
5
+ export { PopoverContent } from './PopoverContent';
6
+ export type { PopoverContentProps, PopoverSide } from './PopoverContent';
7
+ export { PopoverHeader } from './PopoverHeader';
8
+ export { PopoverTitle } from './PopoverTitle';
9
+ export { PopoverDescription } from './PopoverDescription';
@@ -0,0 +1,7 @@
1
+ import { Popover as e } from "./Popover/Popover.js";
2
+ import { PopoverTrigger as t } from "./PopoverTrigger/PopoverTrigger.js";
3
+ import { PopoverContent as n } from "./PopoverContent/PopoverContent.js";
4
+ import { PopoverHeader as r } from "./PopoverHeader/PopoverHeader.js";
5
+ import { PopoverTitle as i } from "./PopoverTitle/PopoverTitle.js";
6
+ import { PopoverDescription as a } from "./PopoverDescription/PopoverDescription.js";
7
+ export { e as Popover, n as PopoverContent, a as PopoverDescription, r as PopoverHeader, i as PopoverTitle, t as PopoverTrigger };
@@ -0,0 +1,3 @@
1
+ import { RadioGroupContextValue } from './RadioGroup.types';
2
+ export declare const RadioGroupContext: import('solid-js').Context<RadioGroupContextValue | undefined>;
3
+ export declare function useRadioGroupContext(component: string): RadioGroupContextValue;
@@ -0,0 +1,12 @@
1
+ import { createContext as e, useContext as t } from "solid-js";
2
+ //#region src/components/radio-group/RadioGroup/RadioGroup.context.ts
3
+ var n = e();
4
+ function r(e) {
5
+ let r = t(n);
6
+ if (!r) throw Error(`<${e}> 必须渲染在 <RadioGroup> 内部`);
7
+ return r;
8
+ }
9
+ //#endregion
10
+ export { n as RadioGroupContext, r as useRadioGroupContext };
11
+
12
+ //# sourceMappingURL=RadioGroup.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.context.js","names":[],"sources":["../../../../src/components/radio-group/RadioGroup/RadioGroup.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { RadioGroupContextValue } from \"./RadioGroup.types\";\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue>();\n\nexport function useRadioGroupContext(\n component: string,\n): RadioGroupContextValue {\n const ctx = useContext(RadioGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <RadioGroup> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAoB,EAAsC;AAEvE,SAAgB,EACd,GACwB;CACxB,IAAM,IAAM,EAAW,CAAiB;CACxC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,wBAAwB;CAExD,OAAO;AACT"}
@@ -0,0 +1,15 @@
1
+ import { JSX } from 'solid-js';
2
+ import { RadioGroupProps } from './RadioGroup.types';
3
+ /**
4
+ * RadioGroup 根组件:渲染一个 <div role="radiogroup">,并向下提供选中值、
5
+ * 禁用状态和 item 注册方法。选中值支持受控(value)和非受控(defaultValue)。
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * <RadioGroup defaultValue="comfortable">
10
+ * <RadioGroupItem value="default" />
11
+ * <RadioGroupItem value="comfortable" />
12
+ * </RadioGroup>
13
+ * ```
14
+ */
15
+ export declare function RadioGroup(props: RadioGroupProps): JSX.Element;
@@ -0,0 +1,56 @@
1
+ import { clsx as e } from "../../../utils/clsx.js";
2
+ import { RadioGroupContext as t } from "./RadioGroup.context.js";
3
+ import { createComponent as n, insert as r, mergeProps as i, spread as a, template as o } from "solid-js/web";
4
+ import { createMemo as s, createSignal as c, splitProps as l } from "solid-js";
5
+ //#region src/components/radio-group/RadioGroup/RadioGroup.tsx
6
+ var u = /*#__PURE__*/ o("<div role=radiogroup data-slot=radio-group>");
7
+ function d(o) {
8
+ let [d, f] = l(o, [
9
+ "value",
10
+ "defaultValue",
11
+ "onValueChange",
12
+ "disabled",
13
+ "name",
14
+ "class",
15
+ "classList",
16
+ "style",
17
+ "dir",
18
+ "children"
19
+ ]), [p, m] = c(d.defaultValue), h = s(() => d.value === void 0 ? p() : d.value), g = s(() => !!d.disabled), _ = /* @__PURE__ */ new Map(), v = {
20
+ value: h,
21
+ setValue: (e) => {
22
+ d.value === void 0 && m(e), d.onValueChange?.(e);
23
+ },
24
+ disabled: g,
25
+ name: d.name,
26
+ registerItem: (e, t) => (_.set(e, t), () => {
27
+ _.get(e) === t && _.delete(e);
28
+ }),
29
+ focusItem: (e) => {
30
+ _.get(e)?.focus();
31
+ }
32
+ };
33
+ return (() => {
34
+ var o = u();
35
+ return a(o, i({
36
+ get class() {
37
+ return e("grid w-full gap-2", d.class);
38
+ },
39
+ get style() {
40
+ return d.style;
41
+ },
42
+ get dir() {
43
+ return d.dir;
44
+ }
45
+ }, f), !1, !0), r(o, n(t.Provider, {
46
+ value: v,
47
+ get children() {
48
+ return d.children;
49
+ }
50
+ })), o;
51
+ })();
52
+ }
53
+ //#endregion
54
+ export { d as RadioGroup };
55
+
56
+ //# sourceMappingURL=RadioGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.js","names":["createMemo","createSignal","splitProps","JSX","clsx","RadioGroupContext","RadioGroupContextValue","RadioGroupProps","RadioGroup","props","Element","local","rest","internalValue","setInternalValue","defaultValue","value","undefined","disabled","itemElements","Map","HTMLElement","setValue","next","onValueChange","registerItem","itemValue","element","set","get","delete","focusItem","focus","ctx","name","_el$","_tmpl$","_$spread","_$mergeProps","class","style","dir","_$insert","_$createComponent","Provider","children"],"sources":["../../../../src/components/radio-group/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { createMemo, createSignal, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { RadioGroupContext } from \"./RadioGroup.context\";\nimport type {\n RadioGroupContextValue,\n RadioGroupProps,\n} from \"./RadioGroup.types\";\n\n/**\n * RadioGroup 根组件:渲染一个 <div role=\"radiogroup\">,并向下提供选中值、\n * 禁用状态和 item 注册方法。选中值支持受控(value)和非受控(defaultValue)。\n *\n * @example\n * ```tsx\n * <RadioGroup defaultValue=\"comfortable\">\n * <RadioGroupItem value=\"default\" />\n * <RadioGroupItem value=\"comfortable\" />\n * </RadioGroup>\n * ```\n */\nexport function RadioGroup(props: RadioGroupProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"disabled\",\n \"name\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"children\",\n ]);\n\n const [internalValue, setInternalValue] = createSignal(local.defaultValue);\n const value = createMemo(() =>\n local.value !== undefined ? local.value : internalValue(),\n );\n const disabled = createMemo(() => !!local.disabled);\n\n const itemElements = new Map<string, HTMLElement>();\n\n const setValue = (next: string) => {\n if (local.value === undefined) setInternalValue(next);\n local.onValueChange?.(next);\n };\n\n const registerItem = (itemValue: string, element: HTMLElement) => {\n itemElements.set(itemValue, element);\n return () => {\n if (itemElements.get(itemValue) === element) {\n itemElements.delete(itemValue);\n }\n };\n };\n\n const focusItem = (itemValue: string) => {\n itemElements.get(itemValue)?.focus();\n };\n\n const ctx: RadioGroupContextValue = {\n value,\n setValue,\n disabled,\n name: local.name,\n registerItem,\n focusItem,\n };\n\n return (\n <div\n role=\"radiogroup\"\n data-slot=\"radio-group\"\n class={clsx(\"grid w-full gap-2\", local.class)}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <RadioGroupContext.Provider value={ctx}>\n {local.children}\n </RadioGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;AAoBA,SAAgBQ,EAAWC,GAAqC;CAC9D,IAAM,CAACE,GAAOC,KAAQV,EAAWO,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEK,CAACI,GAAeC,KAAoBb,EAAaU,EAAMI,YAAY,GACnEC,IAAQhB,QACZW,EAAMK,UAAUC,KAAAA,IAA0BJ,EAAc,IAA5BF,EAAMK,KACpC,GACME,IAAWlB,QAAiB,CAAC,CAACW,EAAMO,QAAQ,GAE5CC,oBAAe,IAAIC,IAAyB,GAoB5Ca,IAA8B;EAClCjB;EACAM,WApBgBC,MAAiB;GAEjCZ,AADIA,EAAMK,UAAUC,KAAAA,KAAWH,EAAiBS,CAAI,GACpDZ,EAAMa,gBAAgBD,CAAI;EAC5B;EAkBEL;EACAgB,MAAMvB,EAAMuB;EACZT,eAlBoBC,GAAmBC,OACvCR,EAAaS,IAAIF,GAAWC,CAAO,SACtB;GACX,AAAIR,EAAaU,IAAIH,CAAS,MAAMC,KAClCR,EAAaW,OAAOJ,CAAS;EAEjC;EAaAK,YAViBL,MAAsB;GACvCP,EAAaU,IAAIH,CAAS,CAAC,EAAEM,MAAM;EACrC;CASA;CAEA,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAUqB,OAVrBC,EAAAF,GAAAG,EAAA;GAAA,IAAA,QAAA;IAAA,OAIWlC,EAAK,qBAAqBO,EAAM4B,KAAK;GAAC;GAAA,IAC7CC,QAAK;IAAA,OAAE7B,EAAM6B;GAAK;GAAA,IAClBC,MAAG;IAAA,OAAE9B,EAAM8B;GAAG;EAAA,GACV7B,CAAI,GAAA,IAAA,EAAA,GAAA8B,EAAAP,GAAAQ,EAEPtC,EAAkBuC,UAAQ;GAAC5B,OAAOiB;GAAG,IAAAY,WAAA;IAAA,OACnClC,EAAMkC;GAAQ;EAAA,CAAA,CAAA,GAAAV;CAAA,EAAA,CAAA;AAIvB"}
@@ -0,0 +1,22 @@
1
+ import { Accessor, ParentProps } from 'solid-js';
2
+ import { BaseProps } from '../../../types';
3
+ export interface RadioGroupProps extends BaseProps, ParentProps {
4
+ /** 受控选中值;不传则内部自管理(非受控模式) */
5
+ value?: string;
6
+ /** 非受控模式下的初始选中值 */
7
+ defaultValue?: string;
8
+ onValueChange?: (value: string) => void;
9
+ disabled?: boolean;
10
+ /** 原生 radio input 的 name,便于表单提交 */
11
+ name?: string;
12
+ }
13
+ export interface RadioGroupContextValue {
14
+ value: Accessor<string | undefined>;
15
+ setValue: (value: string) => void;
16
+ disabled: Accessor<boolean>;
17
+ name?: string;
18
+ /** RadioGroupItem 挂载时注册自己的 DOM 元素,返回取消注册函数 */
19
+ registerItem: (value: string, element: HTMLElement) => () => void;
20
+ /** 把焦点移动到指定 value 的 item 上 */
21
+ focusItem: (value: string) => void;
22
+ }
@@ -0,0 +1,3 @@
1
+ export { RadioGroup } from './RadioGroup';
2
+ export { RadioGroupContext, useRadioGroupContext } from './RadioGroup.context';
3
+ export type { RadioGroupProps, RadioGroupContextValue, } from './RadioGroup.types';
@@ -0,0 +1,6 @@
1
+ import { RadioGroupItemProps } from './RadioGroupItem.types';
2
+ /**
3
+ * RadioGroupItem:一个 role="radio" 的按钮。选中时内部渲染指示圆点。
4
+ * 通过 context 读取 RadioGroup 的选中值和禁用状态,支持受控/非受控。
5
+ */
6
+ export declare function RadioGroupItem(props: RadioGroupItemProps): import("solid-js").JSX.Element;
@@ -0,0 +1,80 @@
1
+ import { clsx as e } from "../../../utils/clsx.js";
2
+ import { useRadioGroupContext as t } from "../RadioGroup/RadioGroup.context.js";
3
+ import { createComponent as n, insert as r, mergeProps as i, spread as a, template as o, use as s } from "solid-js/web";
4
+ import { Show as c, createMemo as l, onCleanup as u, splitProps as d } from "solid-js";
5
+ //#region src/components/radio-group/RadioGroupItem/RadioGroupItem.tsx
6
+ var f = /*#__PURE__*/ o("<span data-slot=radio-group-indicator class=\"size-2 rounded-full bg-primary-foreground\">"), p = /*#__PURE__*/ o("<button type=button role=radio data-slot=radio-group-item>");
7
+ function m(o) {
8
+ let m = t("RadioGroupItem"), [h, g] = d(o, [
9
+ "value",
10
+ "disabled",
11
+ "class",
12
+ "classList",
13
+ "style",
14
+ "dir",
15
+ "children"
16
+ ]), _ = l(() => m.value() === h.value), v = () => m.disabled() || !!h.disabled, y = () => {
17
+ v() || m.setValue(h.value);
18
+ }, b, x = (e) => {
19
+ let t = () => y(), n = (t) => {
20
+ if (!v()) {
21
+ if (t.key === "Enter" || t.key === " ") {
22
+ t.preventDefault(), y();
23
+ return;
24
+ }
25
+ if ([
26
+ "ArrowDown",
27
+ "ArrowRight",
28
+ "ArrowUp",
29
+ "ArrowLeft"
30
+ ].includes(t.key)) {
31
+ t.preventDefault();
32
+ let n = e.closest("[data-slot=\"radio-group\"]"), r = Array.from(n?.querySelectorAll("[data-slot=\"radio-group-item\"]") ?? []).map((e) => e.dataset.value).filter((e) => e !== void 0);
33
+ if (r.length === 0) return;
34
+ let i = r[(r.indexOf(h.value) + (t.key === "ArrowDown" || t.key === "ArrowRight" ? 1 : -1) + r.length) % r.length];
35
+ m.setValue(i), m.focusItem(i);
36
+ }
37
+ }
38
+ };
39
+ e.addEventListener("click", t), e.addEventListener("keydown", n), b = m.registerItem(h.value, e), u(() => {
40
+ e.removeEventListener("click", t), e.removeEventListener("keydown", n), b?.();
41
+ });
42
+ };
43
+ return (() => {
44
+ var t = p();
45
+ return s(x, t), a(t, i({
46
+ get "aria-checked"() {
47
+ return _();
48
+ },
49
+ get "data-value"() {
50
+ return h.value;
51
+ },
52
+ get "data-checked"() {
53
+ return _() ? "" : void 0;
54
+ },
55
+ get disabled() {
56
+ return v();
57
+ },
58
+ get style() {
59
+ return h.style;
60
+ },
61
+ get dir() {
62
+ return h.dir;
63
+ },
64
+ get class() {
65
+ return e("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 items-center justify-center rounded-full border border-input outline-none transition-colors", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary", "dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", "data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary", h.class);
66
+ }
67
+ }, g), !1, !0), r(t, n(c, {
68
+ get when() {
69
+ return _();
70
+ },
71
+ get children() {
72
+ return f();
73
+ }
74
+ })), t;
75
+ })();
76
+ }
77
+ //#endregion
78
+ export { m as RadioGroupItem };
79
+
80
+ //# sourceMappingURL=RadioGroupItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroupItem.js","names":["Show","createMemo","onCleanup","splitProps","clsx","useRadioGroupContext","RadioGroupItemProps","RadioGroupItem","props","ctx","local","rest","checked","value","isDisabled","disabled","select","setValue","unregister","attachListeners","el","HTMLButtonElement","onClick","onKeyDown","e","KeyboardEvent","key","preventDefault","includes","group","closest","HTMLElement","values","Array","from","querySelectorAll","map","item","dataset","filter","undefined","length","currentIndex","indexOf","direction","nextIndex","nextValue","focusItem","addEventListener","registerItem","removeEventListener","_el$","_tmpl$2","_$use","_$spread","_$mergeProps","aria-checked","data-value","data-checked","style","dir","class","_$insert","_$createComponent","when","children","_tmpl$"],"sources":["../../../../src/components/radio-group/RadioGroupItem/RadioGroupItem.tsx"],"sourcesContent":["import { Show, createMemo, onCleanup, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useRadioGroupContext } from \"../RadioGroup\";\nimport type { RadioGroupItemProps } from \"./RadioGroupItem.types\";\n\n/**\n * RadioGroupItem:一个 role=\"radio\" 的按钮。选中时内部渲染指示圆点。\n * 通过 context 读取 RadioGroup 的选中值和禁用状态,支持受控/非受控。\n */\nexport function RadioGroupItem(props: RadioGroupItemProps) {\n const ctx = useRadioGroupContext(\"RadioGroupItem\");\n\n const [local, rest] = splitProps(props, [\n \"value\",\n \"disabled\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"children\",\n ]);\n\n const checked = createMemo(() => ctx.value() === local.value);\n const isDisabled = () => ctx.disabled() || !!local.disabled;\n\n const select = () => {\n if (isDisabled()) return;\n ctx.setValue(local.value);\n };\n\n let unregister: (() => void) | undefined;\n\n const attachListeners = (el: HTMLButtonElement) => {\n const onClick = () => select();\n const onKeyDown = (e: KeyboardEvent) => {\n if (isDisabled()) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n select();\n return;\n }\n\n if ([\"ArrowDown\", \"ArrowRight\", \"ArrowUp\", \"ArrowLeft\"].includes(e.key)) {\n e.preventDefault();\n const group = el.closest<HTMLElement>('[data-slot=\"radio-group\"]');\n const values = Array.from(\n group?.querySelectorAll<HTMLElement>(\n '[data-slot=\"radio-group-item\"]',\n ) ?? [],\n )\n .map((item) => item.dataset.value)\n .filter((value): value is string => value !== undefined);\n if (values.length === 0) return;\n const currentIndex = values.indexOf(local.value);\n const direction =\n e.key === \"ArrowDown\" || e.key === \"ArrowRight\" ? 1 : -1;\n const nextIndex =\n (currentIndex + direction + values.length) % values.length;\n const nextValue = values[nextIndex];\n ctx.setValue(nextValue);\n ctx.focusItem(nextValue);\n }\n };\n\n el.addEventListener(\"click\", onClick);\n el.addEventListener(\"keydown\", onKeyDown);\n unregister = ctx.registerItem(local.value, el);\n\n onCleanup(() => {\n el.removeEventListener(\"click\", onClick);\n el.removeEventListener(\"keydown\", onKeyDown);\n unregister?.();\n });\n };\n\n return (\n <button\n ref={attachListeners}\n type=\"button\"\n role=\"radio\"\n aria-checked={checked()}\n data-slot=\"radio-group-item\"\n data-value={local.value}\n data-checked={checked() ? \"\" : undefined}\n disabled={isDisabled()}\n style={local.style}\n dir={local.dir}\n class={clsx(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 items-center justify-center rounded-full border border-input outline-none transition-colors\",\n \"focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary\",\n \"dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n \"data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n local.class,\n )}\n {...rest}\n >\n <Show when={checked()}>\n <span\n data-slot=\"radio-group-indicator\"\n class=\"size-2 rounded-full bg-primary-foreground\"\n />\n </Show>\n </button>\n );\n}\n"],"mappings":";;;;;;AASA,SAAgBO,EAAeC,GAA4B;CACzD,IAAMC,IAAMJ,EAAqB,gBAAgB,GAE3C,CAACK,GAAOC,KAAQR,EAAWK,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKI,IAAUX,QAAiBQ,EAAII,MAAM,MAAMH,EAAMG,KAAK,GACtDC,UAAmBL,EAAIM,SAAS,KAAK,CAAC,CAACL,EAAMK,UAE7CC,UAAe;EACfF,EAAW,KACfL,EAAIQ,SAASP,EAAMG,KAAK;CAC1B,GAEIK,GAEEC,KAAmBC,MAA0B;EACjD,IAAME,UAAgBN,EAAO,GACvBO,KAAaC,MAAqB;GAClCV,OAAW,GACf;QAAIU,EAAEE,QAAQ,WAAWF,EAAEE,QAAQ,KAAK;KAEtCV,AADAQ,EAAEG,eAAe,GACjBX,EAAO;KACP;IACF;IAEA,IAAI;KAAC;KAAa;KAAc;KAAW;IAAW,CAAC,CAACY,SAASJ,EAAEE,GAAG,GAAG;KACvEF,EAAEG,eAAe;KACjB,IAAME,IAAQT,EAAGU,QAAqB,6BAA2B,GAC3DE,IAASC,MAAMC,KACnBL,GAAOM,iBACL,kCACF,KAAK,CAAA,CACP,CAAC,CACEC,KAAKC,MAASA,EAAKC,QAAQzB,KAAK,CAAC,CACjC0B,QAAQ1B,MAA2BA,MAAU2B,KAAAA,CAAS;KACzD,IAAIR,EAAOS,WAAW,GAAG;KAMzB,IAAMK,IAAYd,GALGA,EAAOW,QAAQjC,EAAMG,KAIvC6B,KAFDlB,EAAEE,QAAQ,eAAeF,EAAEE,QAAQ,eAAe,IAAI,MAE1BM,EAAOS,UAAUT,EAAOS;KAGtDhC,AADAA,EAAIQ,SAAS6B,CAAS,GACtBrC,EAAIsC,UAAUD,CAAS;IACzB;GArBA;EAsBF;EAMA5C,AAJAkB,EAAG4B,iBAAiB,SAAS1B,CAAO,GACpCF,EAAG4B,iBAAiB,WAAWzB,CAAS,GACxCL,IAAaT,EAAIwC,aAAavC,EAAMG,OAAOO,CAAE,GAE7ClB,QAAgB;GAGdgB,AAFAE,EAAG8B,oBAAoB,SAAS5B,CAAO,GACvCF,EAAG8B,oBAAoB,WAAW3B,CAAS,GAC3CL,IAAa;EACf,CAAC;CACH;CAEA,cAAA;EAAA,IAAAiC,IAAAC,EAAA;EAuByB,OAvBzBC,EAESlC,GAAegC,CAAA,GAAAG,EAAAH,GAAAI,EAAA;GAAA,IAAA,iBAAA;IAAA,OAGN3C,EAAQ;GAAC;GAAA,IAAA,eAAA;IAAA,OAEXF,EAAMG;GAAK;GAAA,IAAA,iBAAA;IAAA,OACTD,EAAQ,IAAI,KAAK4B,KAAAA;GAAS;GAAA,IACxCzB,WAAQ;IAAA,OAAED,EAAW;GAAC;GAAA,IACtB6C,QAAK;IAAA,OAAEjD,EAAMiD;GAAK;GAAA,IAClBC,MAAG;IAAA,OAAElD,EAAMkD;GAAG;GAAA,IAAA,QAAA;IAAA,OACPxD,EACL,uKACA,6EACA,mDACA,iIACA,kGACA,yHACAM,EAAMmD,KACR;GAAC;EAAA,GACGlD,CAAI,GAAA,IAAA,EAAA,GAAAmD,EAAAX,GAAAY,EAEP/D,GAAI;GAAA,IAACgE,OAAI;IAAA,OAAEpD,EAAQ;GAAC;GAAA,IAAAqD,WAAA;IAAA,OAAAC,EAAA;GAAA;EAAA,CAAA,CAAA,GAAAf;CAAA,EAAA,CAAA;AAQ3B"}
@@ -0,0 +1,9 @@
1
+ import { BaseProps } from '../../../types';
2
+ export interface RadioGroupItemProps extends BaseProps {
3
+ /** 当前 radio 的值,必须与 RadioGroup 的 value 进行比较 */
4
+ value: string;
5
+ disabled?: boolean;
6
+ id?: string;
7
+ /** 透传给原生 button 的其余属性,例如 aria-invalid、dir 等 */
8
+ [key: string]: any;
9
+ }
@@ -0,0 +1,2 @@
1
+ export { RadioGroupItem } from './RadioGroupItem';
2
+ export type { RadioGroupItemProps } from './RadioGroupItem.types';
@@ -0,0 +1,4 @@
1
+ export { RadioGroup } from './RadioGroup';
2
+ export type { RadioGroupProps, RadioGroupContextValue } from './RadioGroup';
3
+ export { RadioGroupItem } from './RadioGroupItem';
4
+ export type { RadioGroupItemProps } from './RadioGroupItem';
@@ -0,0 +1,3 @@
1
+ import { RadioGroup as e } from "./RadioGroup/RadioGroup.js";
2
+ import { RadioGroupItem as t } from "./RadioGroupItem/RadioGroupItem.js";
3
+ export { e as RadioGroup, t as RadioGroupItem };
@@ -1,3 +1,3 @@
1
- import { SelectContextValue } from './Select.types';
2
- export declare const SelectContext: import('solid-js').Context<SelectContextValue | undefined>;
3
- export declare function useSelectContext(component: string): SelectContextValue;
1
+ import { SelectContextValue, SelectOptionValue } from './Select.types';
2
+ export declare const SelectContext: import('solid-js').Context<SelectContextValue<SelectOptionValue> | undefined>;
3
+ export declare function useSelectContext(component: string): SelectContextValue<SelectOptionValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"Select.context.js","names":[],"sources":["../../../../src/components/select/Select/Select.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { SelectContextValue } from \"./Select.types\";\n\nexport const SelectContext = createContext<SelectContextValue>();\n\nexport function useSelectContext(component: string): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Select> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAgB,EAAkC;AAE/D,SAAgB,EAAiB,GAAuC;CACtE,IAAM,IAAM,EAAW,CAAa;CACpC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,oBAAoB;CAEpD,OAAO;AACT"}
1
+ {"version":3,"file":"Select.context.js","names":[],"sources":["../../../../src/components/select/Select/Select.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { SelectContextValue, SelectOptionValue } from \"./Select.types\";\n\nexport const SelectContext = createContext<SelectContextValue>();\n\nexport function useSelectContext(\n component: string,\n): SelectContextValue<SelectOptionValue> {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Select> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAgB,EAAkC;AAE/D,SAAgB,EACd,GACuC;CACvC,IAAM,IAAM,EAAW,CAAa;CACpC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,oBAAoB;CAEpD,OAAO;AACT"}
@@ -1,9 +1,12 @@
1
1
  import { JSX } from 'solid-js';
2
- import { SelectProps } from './Select.types';
2
+ import { SelectOptionValue, SelectProps } from './Select.types';
3
3
  /**
4
4
  * Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。
5
5
  * 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。
6
6
  *
7
+ * 泛型 T 约束为 string | number,用于约束 value / defaultValue /
8
+ * onValueChange / SelectItem.value 的类型。
9
+ *
7
10
  * @example
8
11
  * ```tsx
9
12
  * <Select value={fruit()} onValueChange={setFruit}>
@@ -16,4 +19,4 @@ import { SelectProps } from './Select.types';
16
19
  * </Select>
17
20
  * ```
18
21
  */
19
- export declare function Select(props: SelectProps): JSX.Element;
22
+ export declare function Select<T extends SelectOptionValue = string>(props: SelectProps<T>): JSX.Element;
@@ -5,7 +5,7 @@ import { createStore as a, produce as o } from "solid-js/store";
5
5
  //#region src/components/select/Select/Select.tsx
6
6
  function s(s) {
7
7
  let [c, l] = r(s.defaultValue), u = n(() => s.value === void 0 ? c() : s.value), d = (e) => {
8
- s.value === void 0 && l(e), s.onValueChange?.(e);
8
+ s.value === void 0 && l(() => e), s.onValueChange?.(e);
9
9
  }, [f, p] = r(s.defaultOpen ?? !1), m = n(() => s.open === void 0 ? f() : s.open), h = n(() => !!s.disabled), g = (e) => {
10
10
  s.open === void 0 && p(e), s.onOpenChange?.(e);
11
11
  }, [_, v] = r(), [y, b] = r(), [x, S] = r(), [C, w] = a([]), T = `select-content-${i()}`, E = (e) => (w(o((t) => t.push(e))), () => w(o((t) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["createSignal","createMemo","createUniqueId","JSX","createStore","produce","SelectContext","SelectContextValue","SelectItemMeta","SelectProps","Select","props","Element","internalValue","setInternalValue","defaultValue","value","undefined","setValue","v","onValueChange","internalOpen","setInternalOpen","defaultOpen","open","disabled","setOpen","next","onOpenChange","reference","setReference","floating","setFloating","HTMLElement","activeValue","setActiveValue","items","setItems","contentId","registerItem","item","list","push","idx","findIndex","it","splice","close","closeAndFocusTrigger","focus","selectValue","ctx","_$createComponent","Provider","children"],"sources":["../../../../src/components/select/Select/Select.tsx"],"sourcesContent":["import { createSignal, createMemo, createUniqueId, type JSX } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport { SelectContext } from \"./Select.context\";\nimport type {\n SelectContextValue,\n SelectItemMeta,\n SelectProps,\n} from \"./Select.types\";\n\n/**\n * Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。\n *\n * @example\n * ```tsx\n * <Select value={fruit()} onValueChange={setFruit}>\n * <SelectTrigger>\n * <SelectValue placeholder=\"选择一个水果\" />\n * </SelectTrigger>\n * <SelectContent>\n * <SelectItem value=\"apple\">苹果</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport function Select(props: SelectProps): JSX.Element {\n const [internalValue, setInternalValue] = createSignal(props.defaultValue);\n const value = createMemo(() =>\n props.value !== undefined ? props.value : internalValue(),\n );\n\n const setValue = (v: string) => {\n if (props.value === undefined) setInternalValue(v);\n props.onValueChange?.(v);\n };\n\n const [internalOpen, setInternalOpen] = createSignal(\n props.defaultOpen ?? false,\n );\n const open = createMemo(() =>\n props.open !== undefined ? props.open : internalOpen(),\n );\n const disabled = createMemo(() => !!props.disabled);\n\n const setOpen = (next: boolean) => {\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n\n const [reference, setReference] = createSignal<Element>();\n const [floating, setFloating] = createSignal<HTMLElement>();\n const [activeValue, setActiveValue] = createSignal<string>();\n const [items, setItems] = createStore<SelectItemMeta[]>([]);\n const contentId = `select-content-${createUniqueId()}`;\n\n const registerItem = (item: SelectItemMeta) => {\n setItems(produce((list) => list.push(item)));\n return () =>\n setItems(\n produce((list) => {\n const idx = list.findIndex((it) => it.value === item.value);\n if (idx !== -1) list.splice(idx, 1);\n }),\n );\n };\n\n const close = () => setOpen(false);\n\n const closeAndFocusTrigger = () => {\n setOpen(false);\n (reference() as HTMLElement | undefined)?.focus?.();\n };\n\n const selectValue = (v: string) => {\n setValue(v);\n closeAndFocusTrigger();\n };\n\n const ctx: SelectContextValue = {\n value,\n setValue,\n open,\n setOpen,\n disabled,\n contentId,\n reference,\n setReference,\n floating,\n setFloating,\n get items() {\n return items;\n },\n registerItem,\n activeValue,\n setActiveValue,\n selectValue,\n close,\n };\n\n return (\n <SelectContext.Provider value={ctx}>\n {props.children}\n </SelectContext.Provider>\n );\n}\n"],"mappings":";;;;;AAyBA,SAAgBU,EAAOC,GAAiC;CACtD,IAAM,CAACE,GAAeC,KAAoBd,EAAaW,EAAMI,YAAY,GACnEC,IAAQf,QACZU,EAAMK,UAAUC,KAAAA,IAA0BJ,EAAc,IAA5BF,EAAMK,KACpC,GAEME,KAAYC,MAAc;EAE9BR,AADIA,EAAMK,UAAUC,KAAAA,KAAWH,EAAiBK,CAAC,GACjDR,EAAMS,gBAAgBD,CAAC;CACzB,GAEM,CAACE,GAAcC,KAAmBtB,EACtCW,EAAMY,eAAe,EACvB,GACMC,IAAOvB,QACXU,EAAMa,SAASP,KAAAA,IAAyBI,EAAa,IAA1BV,EAAMa,IACnC,GACMC,IAAWxB,QAAiB,CAAC,CAACU,EAAMc,QAAQ,GAE5CC,KAAWC,MAAkB;EAEjChB,AADIA,EAAMa,SAASP,KAAAA,KAAWK,EAAgBK,CAAI,GAClDhB,EAAMiB,eAAeD,CAAI;CAC3B,GAEM,CAACE,GAAWC,KAAgB9B,EAAsB,GAClD,CAAC+B,GAAUC,KAAehC,EAA0B,GACpD,CAACkC,GAAaC,KAAkBnC,EAAqB,GACrD,CAACoC,GAAOC,KAAYjC,EAA8B,CAAA,CAAE,GACpDkC,IAAY,kBAAkBpC,EAAe,KAE7CqC,KAAgBC,OACpBH,EAAShC,GAASoC,MAASA,EAAKC,KAAKF,CAAI,CAAC,CAAC,SAEzCH,EACEhC,GAASoC,MAAS;EAChB,IAAME,IAAMF,EAAKG,WAAWC,MAAOA,EAAG7B,UAAUwB,EAAKxB,KAAK;EAC1D,AAAI2B,MAAQ,MAAIF,EAAKK,OAAOH,GAAK,CAAC;CACpC,CAAC,CACH,IAGEI,UAAcrB,EAAQ,EAAK,GAE3BsB,UAA6B;EAEjC,AADAtB,EAAQ,EAAK,GACb,EAAW,CAAC,EAA8BuB,QAAQ;CACpD,GAOME,IAA0B;EAC9BnC;EACAE;EACAM;EACAE;EACAD;EACAa;EACAT;EACAC;EACAC;EACAC;EACA,IAAII,QAAQ;GACV,OAAOA;EACT;EACAG;EACAL;EACAC;EACAe,cAtBmB/B,MAAc;GAEjC6B,AADA9B,EAASC,CAAC,GACV6B,EAAqB;EACvB;EAoBED;CACF;CAEA,OAAAK,EACG9C,EAAc+C,UAAQ;EAACrC,OAAOmC;EAAG,IAAAG,WAAA;GAAA,OAC/B3C,EAAM2C;EAAQ;CAAA,CAAA;AAGrB"}
1
+ {"version":3,"file":"Select.js","names":["createSignal","createMemo","createUniqueId","JSX","createStore","produce","SelectContext","SelectContextValue","SelectItemMeta","SelectOptionValue","SelectProps","Select","props","T","Element","internalValue","setInternalValue","defaultValue","value","undefined","setValue","v","onValueChange","internalOpen","setInternalOpen","defaultOpen","open","disabled","setOpen","next","onOpenChange","reference","setReference","floating","setFloating","HTMLElement","activeValue","setActiveValue","items","setItems","contentId","registerItem","item","list","push","idx","findIndex","it","splice","close","closeAndFocusTrigger","focus","selectValue","ctx","_$createComponent","Provider","children"],"sources":["../../../../src/components/select/Select/Select.tsx"],"sourcesContent":["import { createSignal, createMemo, createUniqueId, type JSX } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport { SelectContext } from \"./Select.context\";\nimport type {\n SelectContextValue,\n SelectItemMeta,\n SelectOptionValue,\n SelectProps,\n} from \"./Select.types\";\n\n/**\n * Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。\n *\n * 泛型 T 约束为 string | number,用于约束 value / defaultValue /\n * onValueChange / SelectItem.value 的类型。\n *\n * @example\n * ```tsx\n * <Select value={fruit()} onValueChange={setFruit}>\n * <SelectTrigger>\n * <SelectValue placeholder=\"选择一个水果\" />\n * </SelectTrigger>\n * <SelectContent>\n * <SelectItem value=\"apple\">苹果</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport function Select<T extends SelectOptionValue = string>(\n props: SelectProps<T>,\n): JSX.Element {\n const [internalValue, setInternalValue] = createSignal<T | undefined>(\n props.defaultValue,\n );\n const value = createMemo(() =>\n props.value !== undefined ? props.value : internalValue(),\n );\n\n const setValue = (v: T) => {\n if (props.value === undefined) setInternalValue(() => v);\n props.onValueChange?.(v);\n };\n\n const [internalOpen, setInternalOpen] = createSignal(\n props.defaultOpen ?? false,\n );\n const open = createMemo(() =>\n props.open !== undefined ? props.open : internalOpen(),\n );\n const disabled = createMemo(() => !!props.disabled);\n\n const setOpen = (next: boolean) => {\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n\n const [reference, setReference] = createSignal<Element>();\n const [floating, setFloating] = createSignal<HTMLElement>();\n const [activeValue, setActiveValue] = createSignal<T>();\n const [items, setItems] = createStore<SelectItemMeta<SelectOptionValue>[]>(\n [],\n );\n const contentId = `select-content-${createUniqueId()}`;\n\n const registerItem = (item: SelectItemMeta<SelectOptionValue>) => {\n setItems(produce((list) => list.push(item)));\n return () =>\n setItems(\n produce((list) => {\n const idx = list.findIndex((it) => it.value === item.value);\n if (idx !== -1) list.splice(idx, 1);\n }),\n );\n };\n\n const close = () => setOpen(false);\n\n const closeAndFocusTrigger = () => {\n setOpen(false);\n (reference() as HTMLElement | undefined)?.focus?.();\n };\n\n const selectValue = (v: SelectOptionValue) => {\n setValue(v as T);\n closeAndFocusTrigger();\n };\n\n const ctx: SelectContextValue = {\n value: value as SelectContextValue[\"value\"],\n setValue: setValue as SelectContextValue[\"setValue\"],\n open,\n setOpen,\n disabled,\n contentId,\n reference,\n setReference,\n floating,\n setFloating,\n get items() {\n return items;\n },\n registerItem,\n activeValue: activeValue as SelectContextValue[\"activeValue\"],\n setActiveValue: setActiveValue as SelectContextValue[\"setActiveValue\"],\n selectValue,\n close,\n };\n\n return (\n <SelectContext.Provider value={ctx}>\n {props.children}\n </SelectContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6BA,SAAgBW,EACdC,GACa;CACb,IAAM,CAACG,GAAeC,KAAoBhB,EACxCY,EAAMK,YACR,GACMC,IAAQjB,QACZW,EAAMM,UAAUC,KAAAA,IAA0BJ,EAAc,IAA5BH,EAAMM,KACpC,GAEME,KAAYC,MAAS;EAEzBT,AADIA,EAAMM,UAAUC,KAAAA,KAAWH,QAAuBK,CAAC,GACvDT,EAAMU,gBAAgBD,CAAC;CACzB,GAEM,CAACE,GAAcC,KAAmBxB,EACtCY,EAAMa,eAAe,EACvB,GACMC,IAAOzB,QACXW,EAAMc,SAASP,KAAAA,IAAyBI,EAAa,IAA1BX,EAAMc,IACnC,GACMC,IAAW1B,QAAiB,CAAC,CAACW,EAAMe,QAAQ,GAE5CC,KAAWC,MAAkB;EAEjCjB,AADIA,EAAMc,SAASP,KAAAA,KAAWK,EAAgBK,CAAI,GAClDjB,EAAMkB,eAAeD,CAAI;CAC3B,GAEM,CAACE,GAAWC,KAAgBhC,EAAsB,GAClD,CAACiC,GAAUC,KAAelC,EAA0B,GACpD,CAACoC,GAAaC,KAAkBrC,EAAgB,GAChD,CAACsC,GAAOC,KAAYnC,EACxB,CAAA,CACF,GACMoC,IAAY,kBAAkBtC,EAAe,KAE7CuC,KAAgBC,OACpBH,EAASlC,GAASsC,MAASA,EAAKC,KAAKF,CAAI,CAAC,CAAC,SAEzCH,EACElC,GAASsC,MAAS;EAChB,IAAME,IAAMF,EAAKG,WAAWC,MAAOA,EAAG7B,UAAUwB,EAAKxB,KAAK;EAC1D,AAAI2B,MAAQ,MAAIF,EAAKK,OAAOH,GAAK,CAAC;CACpC,CAAC,CACH,IAGEI,UAAcrB,EAAQ,EAAK,GAE3BsB,UAA6B;EAEjC,AADAtB,EAAQ,EAAK,GACb,EAAW,CAAC,EAA8BuB,QAAQ;CACpD,GAOME,IAA0B;EACvBnC;EACGE;EACVM;EACAE;EACAD;EACAa;EACAT;EACAC;EACAC;EACAC;EACA,IAAII,QAAQ;GACV,OAAOA;EACT;EACAG;EACaL;EACGC;EAChBe,cAtBmB/B,MAAyB;GAE5C6B,AADA9B,EAASC,CAAM,GACf6B,EAAqB;EACvB;EAoBED;CACF;CAEA,OAAAK,EACGhD,EAAciD,UAAQ;EAACrC,OAAOmC;EAAG,IAAAG,WAAA;GAAA,OAC/B5C,EAAM4C;EAAQ;CAAA,CAAA;AAGrB"}
@@ -1,24 +1,28 @@
1
1
  import { Accessor, ParentProps } from 'solid-js';
2
- export interface SelectItemMeta {
3
- value: string;
2
+ export type SelectOptionValue = string | number;
3
+ export interface SelectItemMeta<T extends SelectOptionValue = SelectOptionValue> {
4
+ value: T;
4
5
  label: string;
5
6
  disabled?: boolean;
6
7
  }
7
- export interface SelectProps extends ParentProps {
8
- /** 受控选中值;不传则内部自管理(非受控模式) */
9
- value?: string;
8
+ export interface SelectProps<T extends SelectOptionValue = string> extends ParentProps {
9
+ /**
10
+ * 受控选中值;传入 null 表示受控模式下清空已选值。
11
+ * 不传(undefined)则内部自管理(非受控模式)。
12
+ */
13
+ value?: T | null;
10
14
  /** 非受控模式下的初始选中值 */
11
- defaultValue?: string;
12
- onValueChange?: (value: string) => void;
15
+ defaultValue?: T;
16
+ onValueChange?: (value: T) => void;
13
17
  /** 受控 open 状态;不传则内部自管理 */
14
18
  open?: boolean;
15
19
  defaultOpen?: boolean;
16
20
  onOpenChange?: (open: boolean) => void;
17
21
  disabled?: boolean;
18
22
  }
19
- export interface SelectContextValue {
20
- value: Accessor<string | undefined>;
21
- setValue: (v: string) => void;
23
+ export interface SelectContextValue<T extends SelectOptionValue = SelectOptionValue> {
24
+ value: Accessor<T | null | undefined>;
25
+ setValue: (v: T) => void;
22
26
  open: Accessor<boolean>;
23
27
  setOpen: (v: boolean) => void;
24
28
  disabled: Accessor<boolean>;
@@ -28,14 +32,14 @@ export interface SelectContextValue {
28
32
  floating: Accessor<HTMLElement | undefined>;
29
33
  setFloating: (el: HTMLElement | undefined) => void;
30
34
  /** 已注册的选项列表(响应式 store),SelectContent/SelectValue 都要读 */
31
- items: SelectItemMeta[];
35
+ items: SelectItemMeta<T>[];
32
36
  /** SelectItem 挂载时注册自己,返回取消注册函数(卸载时调用) */
33
- registerItem: (item: SelectItemMeta) => () => void;
37
+ registerItem: (item: SelectItemMeta<T>) => () => void;
34
38
  /** 键盘/鼠标悬停高亮的项 */
35
- activeValue: Accessor<string | undefined>;
36
- setActiveValue: (v: string | undefined) => void;
39
+ activeValue: Accessor<T | undefined>;
40
+ setActiveValue: (v: T | undefined) => void;
37
41
  /** 选中某项后调用:设值、关闭、把 focus 还给 trigger */
38
- selectValue: (v: string) => void;
42
+ selectValue: (v: T) => void;
39
43
  /** 单纯关闭(不选择任何值),键盘 Esc / 点击外部时用 */
40
44
  close: () => void;
41
45
  }
@@ -1,3 +1,3 @@
1
1
  export { Select } from './Select';
2
2
  export { SelectContext, useSelectContext } from './Select.context';
3
- export type { SelectProps, SelectContextValue, SelectItemMeta, } from './Select.types';
3
+ export type { SelectOptionValue, SelectProps, SelectContextValue, SelectItemMeta, } from './Select.types';
@@ -3,7 +3,7 @@ import { useSelectContent as t } from "./useSelectContent.js";
3
3
  import { Portal as n, createComponent as r, effect as i, insert as a, mergeProps as o, spread as s, style as c, template as l, use as u } from "solid-js/web";
4
4
  import { createEffect as d, createMemo as f, onCleanup as p, splitProps as m } from "solid-js";
5
5
  //#region src/components/select/SelectContent/SelectContent.tsx
6
- var h = /*#__PURE__*/ l("<div style=z-index:1000><div role=listbox>");
6
+ var h = /*#__PURE__*/ l("<div data-slot=select-content style=z-index:1000><div role=listbox>");
7
7
  function g(l) {
8
8
  let { ctx: g, pos: _, maxHeight: v, isVisible: y, animationState: b, contentElement: x, setContentElement: S } = t(() => l), [C, w] = m(l, [
9
9
  "placement",
@@ -45,7 +45,7 @@ function g(l) {
45
45
  g.open() && (document.addEventListener("keydown", D), p(() => document.removeEventListener("keydown", D)));
46
46
  }), d(() => {
47
47
  let e = g.activeValue(), t = x();
48
- !e || !t || t.querySelector(`[data-value="${CSS.escape(e)}"]`)?.scrollIntoView({ block: "nearest" });
48
+ !e || !t || t.querySelector(`[data-value="${CSS.escape(String(e))}"]`)?.scrollIntoView({ block: "nearest" });
49
49
  }), r(n, { get children() {
50
50
  var t = h(), n = t.firstChild;
51
51
  return u((e) => {