@bridge-ui/vue 0.0.7 → 0.0.9

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 (401) hide show
  1. package/ai/AGENTS.md +31 -0
  2. package/ai/README.md +35 -0
  3. package/ai/guidelines/core.md +44 -0
  4. package/ai/llms.txt +38 -0
  5. package/ai/skills/bridge-ui-components/SKILL.md +48 -0
  6. package/ai/skills/bridge-ui-forms/SKILL.md +46 -0
  7. package/ai/skills/bridge-ui-overlays/SKILL.md +37 -0
  8. package/ai/skills/bridge-ui-setup/SKILL.md +38 -0
  9. package/bin/__tests__/ai.test.ts +319 -0
  10. package/bin/ai.mjs +469 -0
  11. package/dist/Actions/BridgeUIHosts.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/Actions/Dialog/BridgeDialogAction.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/Actions/Dialog/BridgeDialogHost.vue_vue_type_script_setup_true_lang.js +1 -1
  14. package/dist/Actions/Dialog/BridgeDialogItem.vue_vue_type_script_setup_true_lang.js +5 -5
  15. package/dist/Actions/Dialog/ResolveBridgeDialogFooter.vue_vue_type_script_setup_true_lang.js +1 -1
  16. package/dist/Actions/Drawer/BridgeDrawerHost.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/Actions/Modal/BridgeModalHost.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/dist/Actions/Snackbar/BridgeSnackbarAction.vue_vue_type_script_setup_true_lang.js +8 -8
  19. package/dist/Actions/Snackbar/BridgeSnackbarHost.vue_vue_type_script_setup_true_lang.js +5 -2
  20. package/dist/Actions/Snackbar/BridgeSnackbarItem.vue_vue_type_script_setup_true_lang.js +1 -1
  21. package/dist/Adapters/Date/index.d.ts +1 -0
  22. package/dist/Adapters/Date/index.js +2 -0
  23. package/dist/Adapters/Date/useDateAdapter.d.ts +17 -0
  24. package/dist/Adapters/Date/useDateAdapter.js +21 -0
  25. package/dist/Adapters/I18n/useI18nAdapter.d.ts +1 -1
  26. package/dist/Adapters/Icon/useIconAdapter.d.ts +1 -1
  27. package/dist/Adapters/index.d.ts +1 -0
  28. package/dist/Adapters/index.js +4 -3
  29. package/dist/Components/Alert/Alert.vue_vue_type_script_setup_true_lang.js +1 -1
  30. package/dist/Components/Alert/composables/useAlert.js +13 -1
  31. package/dist/Components/Autocomplete/Autocomplete.vue.d.ts +7 -5
  32. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +17 -10
  33. package/dist/Components/Autocomplete/AutocompleteOption.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/Components/Autocomplete/autocomplete.types.d.ts +19 -1
  35. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +8 -2
  36. package/dist/Components/Autocomplete/composables/useAutocomplete.js +213 -181
  37. package/dist/Components/Avatar/Avatar.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/dist/Components/Avatar/composables/useAvatar.d.ts +1 -1
  39. package/dist/Components/Avatar/composables/useAvatar.js +13 -1
  40. package/dist/Components/Badge/Badge.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/Components/Badge/composables/useBadge.js +10 -1
  42. package/dist/Components/BaseField/BaseField.js +5 -0
  43. package/dist/Components/BaseField/BaseField.vue.d.ts +15 -0
  44. package/dist/Components/BaseField/BaseField.vue_vue_type_script_setup_true_lang.js +41 -0
  45. package/dist/Components/BaseField/BaseFieldLabel.js +5 -0
  46. package/dist/Components/{OtpField/OtpFieldLabel.vue.d.ts → BaseField/BaseFieldLabel.vue.d.ts} +2 -2
  47. package/dist/Components/{OtpField/OtpFieldLabel.vue_vue_type_script_setup_true_lang.js → BaseField/BaseFieldLabel.vue_vue_type_script_setup_true_lang.js} +3 -3
  48. package/dist/Components/BaseField/baseField.types.d.ts +222 -0
  49. package/dist/Components/BaseField/composables/useBaseField.d.ts +55 -0
  50. package/dist/Components/BaseField/composables/useBaseField.js +134 -0
  51. package/dist/Components/BaseField/index.d.ts +4 -0
  52. package/dist/Components/BaseField/index.js +3 -0
  53. package/dist/Components/Button/Button.vue_vue_type_script_setup_true_lang.js +1 -1
  54. package/dist/Components/Button/composables/useButton.d.ts +1 -1
  55. package/dist/Components/Button/composables/useButton.js +10 -1
  56. package/dist/Components/Calendar/Calendar.js +5 -0
  57. package/dist/Components/Calendar/Calendar.vue.d.ts +21 -0
  58. package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +139 -0
  59. package/dist/Components/Calendar/calendar.types.d.ts +287 -0
  60. package/dist/Components/Calendar/composables/useCalendar.d.ts +875 -0
  61. package/dist/Components/Calendar/composables/useCalendar.js +173 -0
  62. package/dist/Components/Calendar/index.d.ts +3 -0
  63. package/dist/Components/Calendar/index.js +3 -0
  64. package/dist/Components/CalendarDate/CalendarDate.js +5 -0
  65. package/dist/Components/CalendarDate/CalendarDate.vue.d.ts +19 -0
  66. package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +56 -0
  67. package/dist/Components/CalendarDate/calendarDate.types.d.ts +257 -0
  68. package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +39 -0
  69. package/dist/Components/CalendarDate/composables/useCalendarDate.js +181 -0
  70. package/dist/Components/CalendarDate/index.d.ts +3 -0
  71. package/dist/Components/CalendarDate/index.js +3 -0
  72. package/dist/Components/CalendarMonth/CalendarMonth.js +5 -0
  73. package/dist/Components/CalendarMonth/CalendarMonth.vue.d.ts +8 -0
  74. package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +32 -0
  75. package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +135 -0
  76. package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +29 -0
  77. package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +104 -0
  78. package/dist/Components/CalendarMonth/index.d.ts +3 -0
  79. package/dist/Components/CalendarMonth/index.js +3 -0
  80. package/dist/Components/CalendarRange/CalendarRange.js +5 -0
  81. package/dist/Components/CalendarRange/CalendarRange.vue.d.ts +19 -0
  82. package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +187 -0
  83. package/dist/Components/CalendarRange/calendarRange.types.d.ts +333 -0
  84. package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +1891 -0
  85. package/dist/Components/CalendarRange/composables/useCalendarRange.js +253 -0
  86. package/dist/Components/CalendarRange/index.d.ts +3 -0
  87. package/dist/Components/CalendarRange/index.js +3 -0
  88. package/dist/Components/CalendarYear/CalendarYear.js +5 -0
  89. package/dist/Components/CalendarYear/CalendarYear.vue.d.ts +8 -0
  90. package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +34 -0
  91. package/dist/Components/CalendarYear/calendarYear.types.d.ts +141 -0
  92. package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +30 -0
  93. package/dist/Components/CalendarYear/composables/useCalendarYear.js +108 -0
  94. package/dist/Components/CalendarYear/index.d.ts +3 -0
  95. package/dist/Components/CalendarYear/index.js +3 -0
  96. package/dist/Components/Card/Card.vue_vue_type_script_setup_true_lang.js +1 -1
  97. package/dist/Components/Card/composables/useCard.js +14 -3
  98. package/dist/Components/Checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +2 -2
  99. package/dist/Components/Checkbox/composables/useCheckbox.d.ts +1 -1
  100. package/dist/Components/Checkbox/composables/useCheckbox.js +11 -2
  101. package/dist/Components/Chip/Chip.vue.d.ts +1 -1
  102. package/dist/Components/Chip/Chip.vue_vue_type_script_setup_true_lang.js +1 -1
  103. package/dist/Components/Chip/composables/useChip.d.ts +1 -1
  104. package/dist/Components/Chip/composables/useChip.js +7 -4
  105. package/dist/Components/DateField/DateField.js +5 -0
  106. package/dist/Components/DateField/DateField.vue.d.ts +32 -0
  107. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +158 -0
  108. package/dist/Components/DateField/composables/useDateField.d.ts +725 -0
  109. package/dist/Components/DateField/composables/useDateField.js +169 -0
  110. package/dist/Components/DateField/dateField.types.d.ts +206 -0
  111. package/dist/Components/DateField/index.d.ts +3 -0
  112. package/dist/Components/DateField/index.js +3 -0
  113. package/dist/Components/DatePicker/DatePicker.js +5 -0
  114. package/dist/Components/DatePicker/DatePicker.vue.d.ts +17 -0
  115. package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +104 -0
  116. package/dist/Components/DatePicker/composables/useDatePicker.d.ts +28 -0
  117. package/dist/Components/DatePicker/composables/useDatePicker.js +91 -0
  118. package/dist/Components/DatePicker/datePicker.types.d.ts +233 -0
  119. package/dist/Components/DatePicker/index.d.ts +3 -0
  120. package/dist/Components/DatePicker/index.js +3 -0
  121. package/dist/Components/DateRangeField/DateRangeField.js +5 -0
  122. package/dist/Components/DateRangeField/DateRangeField.vue.d.ts +32 -0
  123. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +152 -0
  124. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +723 -0
  125. package/dist/Components/DateRangeField/composables/useDateRangeField.js +143 -0
  126. package/dist/Components/DateRangeField/dateRangeField.types.d.ts +195 -0
  127. package/dist/Components/DateRangeField/index.d.ts +3 -0
  128. package/dist/Components/DateRangeField/index.js +3 -0
  129. package/dist/Components/DateRangePicker/DateRangePicker.js +5 -0
  130. package/dist/Components/DateRangePicker/DateRangePicker.vue.d.ts +17 -0
  131. package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +99 -0
  132. package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +28 -0
  133. package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +89 -0
  134. package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +218 -0
  135. package/dist/Components/DateRangePicker/index.d.ts +3 -0
  136. package/dist/Components/DateRangePicker/index.js +3 -0
  137. package/dist/Components/DateTimeField/DateTimeField.js +5 -0
  138. package/dist/Components/DateTimeField/DateTimeField.vue.d.ts +31 -0
  139. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +141 -0
  140. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +724 -0
  141. package/dist/Components/DateTimeField/composables/useDateTimeField.js +151 -0
  142. package/dist/Components/DateTimeField/dateTimeField.types.d.ts +230 -0
  143. package/dist/Components/DateTimeField/index.d.ts +3 -0
  144. package/dist/Components/DateTimeField/index.js +3 -0
  145. package/dist/Components/DateTimePicker/DateTimePicker.js +5 -0
  146. package/dist/Components/DateTimePicker/DateTimePicker.vue.d.ts +17 -0
  147. package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +156 -0
  148. package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +46 -0
  149. package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +98 -0
  150. package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +272 -0
  151. package/dist/Components/DateTimePicker/index.d.ts +3 -0
  152. package/dist/Components/DateTimePicker/index.js +3 -0
  153. package/dist/Components/DateTimeRangeField/DateTimeRangeField.js +5 -0
  154. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue.d.ts +32 -0
  155. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +141 -0
  156. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +726 -0
  157. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.js +155 -0
  158. package/dist/Components/DateTimeRangeField/dateTimeRangeField.types.d.ts +231 -0
  159. package/dist/Components/DateTimeRangeField/index.d.ts +3 -0
  160. package/dist/Components/DateTimeRangeField/index.js +3 -0
  161. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.js +5 -0
  162. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue.d.ts +17 -0
  163. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +209 -0
  164. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +49 -0
  165. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +112 -0
  166. package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +272 -0
  167. package/dist/Components/DateTimeRangePicker/index.d.ts +3 -0
  168. package/dist/Components/DateTimeRangePicker/index.js +3 -0
  169. package/dist/Components/Divider/Divider.vue_vue_type_script_setup_true_lang.js +1 -1
  170. package/dist/Components/Divider/composables/useDivider.js +7 -1
  171. package/dist/Components/Drawer/Drawer.vue.d.ts +8 -8
  172. package/dist/Components/Drawer/Drawer.vue_vue_type_script_setup_true_lang.js +11 -11
  173. package/dist/Components/Drawer/composables/useDrawer.d.ts +1 -1
  174. package/dist/Components/Drawer/composables/useDrawer.js +11 -2
  175. package/dist/Components/FieldOverlay/FieldOverlay.js +5 -0
  176. package/dist/Components/FieldOverlay/FieldOverlay.vue.d.ts +26 -0
  177. package/dist/Components/FieldOverlay/FieldOverlay.vue_vue_type_script_setup_true_lang.js +63 -0
  178. package/dist/Components/FieldOverlay/composables/useFieldOverlay.d.ts +15 -0
  179. package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +36 -0
  180. package/dist/Components/FieldOverlay/fieldOverlay.types.d.ts +63 -0
  181. package/dist/Components/FieldOverlay/index.d.ts +4 -0
  182. package/dist/Components/FieldOverlay/index.js +3 -0
  183. package/dist/Components/FormControl/FormControl.vue_vue_type_script_setup_true_lang.js +2 -2
  184. package/dist/Components/FormControl/FormControlLabel.vue_vue_type_script_setup_true_lang.js +1 -1
  185. package/dist/Components/FormControl/composables/useFormControl.d.ts +11 -2
  186. package/dist/Components/FormControl/composables/useFormControl.js +58 -54
  187. package/dist/Components/FormControl/index.d.ts +1 -1
  188. package/dist/Components/FormField/FilledFormField.vue_vue_type_script_setup_true_lang.js +2 -2
  189. package/dist/Components/FormField/FormField.vue_vue_type_script_setup_true_lang.js +1 -1
  190. package/dist/Components/FormField/FormFieldLabel.vue_vue_type_script_setup_true_lang.js +1 -1
  191. package/dist/Components/FormField/NotchedFormField.vue_vue_type_script_setup_true_lang.js +2 -2
  192. package/dist/Components/FormField/OutlinedFormField.vue_vue_type_script_setup_true_lang.js +2 -2
  193. package/dist/Components/FormField/StackedFormField.vue_vue_type_script_setup_true_lang.js +2 -2
  194. package/dist/Components/FormField/UnderlinedFormField.vue_vue_type_script_setup_true_lang.js +2 -2
  195. package/dist/Components/FormField/composables/useFormField.d.ts +5 -1
  196. package/dist/Components/FormField/composables/useFormField.js +20 -8
  197. package/dist/Components/Icon/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
  198. package/dist/Components/Icon/composables/useIcon.js +4 -1
  199. package/dist/Components/Label/Label.vue_vue_type_script_setup_true_lang.js +1 -1
  200. package/dist/Components/Label/composables/useLabel.js +5 -2
  201. package/dist/Components/Link/Link.vue_vue_type_script_setup_true_lang.js +1 -1
  202. package/dist/Components/Link/composables/useLink.js +10 -1
  203. package/dist/Components/List/List.vue_vue_type_script_setup_true_lang.js +1 -1
  204. package/dist/Components/List/composables/useList.js +4 -4
  205. package/dist/Components/ListItem/ListItem.vue.d.ts +1 -1
  206. package/dist/Components/ListItem/ListItem.vue_vue_type_script_setup_true_lang.js +1 -1
  207. package/dist/Components/ListItem/composables/useListItem.d.ts +1 -1
  208. package/dist/Components/ListSection/ListSection.vue_vue_type_script_setup_true_lang.js +4 -4
  209. package/dist/Components/Listbox/Listbox.vue.d.ts +7 -2
  210. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +93 -71
  211. package/dist/Components/Listbox/composables/useListbox.d.ts +18 -2
  212. package/dist/Components/Listbox/composables/useListbox.js +59 -37
  213. package/dist/Components/Listbox/index.d.ts +1 -0
  214. package/dist/Components/Listbox/listbox.types.d.ts +74 -4
  215. package/dist/Components/Menu/Menu.vue.d.ts +6 -6
  216. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +12 -12
  217. package/dist/Components/Menu/composables/useMenu.d.ts +1 -1
  218. package/dist/Components/Menu/composables/useMenu.js +9 -5
  219. package/dist/Components/Modal/Modal.vue.d.ts +8 -8
  220. package/dist/Components/Modal/Modal.vue_vue_type_script_setup_true_lang.js +11 -11
  221. package/dist/Components/Modal/composables/useModal.d.ts +1 -1
  222. package/dist/Components/Modal/composables/useModal.js +11 -2
  223. package/dist/Components/NumberField/NumberField.vue.d.ts +2 -2
  224. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +3 -3
  225. package/dist/Components/NumberField/composables/useNumberField.d.ts +2 -2
  226. package/dist/Components/NumberField/composables/useNumberField.js +4 -1
  227. package/dist/Components/OtpField/OtpField.vue.d.ts +3 -3
  228. package/dist/Components/OtpField/OtpField.vue_vue_type_script_setup_true_lang.js +34 -52
  229. package/dist/Components/OtpField/composables/useOtpField.d.ts +40 -213
  230. package/dist/Components/OtpField/composables/useOtpField.js +105 -151
  231. package/dist/Components/OtpField/otpField.types.d.ts +10 -180
  232. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +3 -3
  233. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +2 -2
  234. package/dist/Components/PasswordField/composables/usePasswordField.js +4 -1
  235. package/dist/Components/Progress/Progress.vue_vue_type_script_setup_true_lang.js +1 -1
  236. package/dist/Components/Progress/composables/useProgress.js +13 -1
  237. package/dist/Components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +11 -11
  238. package/dist/Components/Radio/composables/useRadio.d.ts +1 -1
  239. package/dist/Components/Radio/composables/useRadio.js +11 -2
  240. package/dist/Components/Select/Select.vue.d.ts +6 -4
  241. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +17 -10
  242. package/dist/Components/Select/SelectOption.vue_vue_type_script_setup_true_lang.js +1 -1
  243. package/dist/Components/Select/composables/useSelect.d.ts +8 -2
  244. package/dist/Components/Select/composables/useSelect.js +226 -194
  245. package/dist/Components/Select/select.types.d.ts +19 -1
  246. package/dist/Components/Skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +1 -1
  247. package/dist/Components/Skeleton/composables/useSkeleton.js +5 -2
  248. package/dist/Components/Slider/Slider.js +5 -0
  249. package/dist/Components/Slider/Slider.vue.d.ts +25 -0
  250. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +113 -0
  251. package/dist/Components/Slider/composables/useSlider.d.ts +485 -0
  252. package/dist/Components/Slider/composables/useSlider.js +292 -0
  253. package/dist/Components/Slider/index.d.ts +4 -0
  254. package/dist/Components/Slider/index.js +3 -0
  255. package/dist/Components/Slider/slider.types.d.ts +177 -0
  256. package/dist/Components/Snackbar/Snackbar.vue.d.ts +2 -2
  257. package/dist/Components/Snackbar/Snackbar.vue_vue_type_script_setup_true_lang.js +42 -42
  258. package/dist/Components/Snackbar/composables/useSnackbar.js +16 -3
  259. package/dist/Components/Spinner/Spinner.vue_vue_type_script_setup_true_lang.js +1 -1
  260. package/dist/Components/Spinner/composables/useSpinner.js +10 -1
  261. package/dist/Components/Switch/Switch.vue_vue_type_script_setup_true_lang.js +12 -12
  262. package/dist/Components/Switch/composables/useSwitch.d.ts +1 -1
  263. package/dist/Components/Switch/composables/useSwitch.js +11 -2
  264. package/dist/Components/Tab/Tab.vue_vue_type_script_setup_true_lang.js +1 -1
  265. package/dist/Components/TabItem/TabItem.vue_vue_type_script_setup_true_lang.js +3 -2
  266. package/dist/Components/TabList/TabList.vue_vue_type_script_setup_true_lang.js +1 -1
  267. package/dist/Components/TabPanel/TabPanel.vue_vue_type_script_setup_true_lang.js +1 -1
  268. package/dist/Components/Tabs/Tabs.vue.d.ts +2 -2
  269. package/dist/Components/Tabs/Tabs.vue_vue_type_script_setup_true_lang.js +8 -8
  270. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +2 -2
  271. package/dist/Components/TextField/composables/useTextField.d.ts +2 -2
  272. package/dist/Components/TextField/composables/useTextField.js +1 -1
  273. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +2 -2
  274. package/dist/Components/Textarea/composables/useTextarea.d.ts +2 -2
  275. package/dist/Components/Textarea/composables/useTextarea.js +5 -1
  276. package/dist/Components/TimeField/TimeField.js +5 -0
  277. package/dist/Components/TimeField/TimeField.vue.d.ts +32 -0
  278. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +134 -0
  279. package/dist/Components/TimeField/composables/useTimeField.d.ts +733 -0
  280. package/dist/Components/TimeField/composables/useTimeField.js +147 -0
  281. package/dist/Components/TimeField/index.d.ts +3 -0
  282. package/dist/Components/TimeField/index.js +3 -0
  283. package/dist/Components/TimeField/timeField.types.d.ts +155 -0
  284. package/dist/Components/TimePanel/TimePanel.js +5 -0
  285. package/dist/Components/TimePanel/TimePanel.vue.d.ts +8 -0
  286. package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +62 -0
  287. package/dist/Components/TimePanel/composables/useTimePanel.d.ts +58 -0
  288. package/dist/Components/TimePanel/composables/useTimePanel.js +180 -0
  289. package/dist/Components/TimePanel/index.d.ts +3 -0
  290. package/dist/Components/TimePanel/index.js +3 -0
  291. package/dist/Components/TimePanel/timePanel.types.d.ts +147 -0
  292. package/dist/Components/TimePicker/TimePicker.js +5 -0
  293. package/dist/Components/TimePicker/TimePicker.vue.d.ts +10 -0
  294. package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +82 -0
  295. package/dist/Components/TimePicker/composables/useTimePicker.d.ts +31 -0
  296. package/dist/Components/TimePicker/composables/useTimePicker.js +84 -0
  297. package/dist/Components/TimePicker/index.d.ts +3 -0
  298. package/dist/Components/TimePicker/index.js +3 -0
  299. package/dist/Components/TimePicker/timePicker.types.d.ts +176 -0
  300. package/dist/Components/TimeRangeField/TimeRangeField.js +5 -0
  301. package/dist/Components/TimeRangeField/TimeRangeField.vue.d.ts +32 -0
  302. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +134 -0
  303. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +725 -0
  304. package/dist/Components/TimeRangeField/composables/useTimeRangeField.js +143 -0
  305. package/dist/Components/TimeRangeField/index.d.ts +3 -0
  306. package/dist/Components/TimeRangeField/index.js +3 -0
  307. package/dist/Components/TimeRangeField/timeRangeField.types.d.ts +155 -0
  308. package/dist/Components/TimeRangePicker/TimeRangePicker.js +5 -0
  309. package/dist/Components/TimeRangePicker/TimeRangePicker.vue.d.ts +10 -0
  310. package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +116 -0
  311. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +40 -0
  312. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +123 -0
  313. package/dist/Components/TimeRangePicker/index.d.ts +3 -0
  314. package/dist/Components/TimeRangePicker/index.js +3 -0
  315. package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +232 -0
  316. package/dist/Components/Tooltip/Tooltip.vue.d.ts +2 -2
  317. package/dist/Components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +14 -14
  318. package/dist/Components/Tooltip/composables/useTooltip.d.ts +1 -1
  319. package/dist/Components/Tooltip/composables/useTooltip.js +10 -1
  320. package/dist/Provider/BridgeUIProvider.vue_vue_type_script_setup_true_lang.js +4 -4
  321. package/dist/Provider/createBridgeUI.js +3 -3
  322. package/dist/Utils/index.d.ts +3 -3
  323. package/dist/Utils/index.js +5 -2
  324. package/dist/Utils/slotOrProp.js +1 -1
  325. package/dist/augments.d.ts +29 -17
  326. package/dist/index.d.ts +44 -1
  327. package/dist/index.js +127 -84
  328. package/dist/theme.css +8 -8
  329. package/docs/README.md +74 -0
  330. package/docs/components/Alert.md +96 -0
  331. package/docs/components/Autocomplete.md +212 -0
  332. package/docs/components/Avatar.md +60 -0
  333. package/docs/components/Badge.md +47 -0
  334. package/docs/components/BaseField.md +126 -0
  335. package/docs/components/BridgeUIProvider.md +168 -0
  336. package/docs/components/Button.md +93 -0
  337. package/docs/components/Calendar.md +96 -0
  338. package/docs/components/CalendarDate.md +71 -0
  339. package/docs/components/CalendarMonth.md +52 -0
  340. package/docs/components/CalendarRange.md +83 -0
  341. package/docs/components/CalendarYear.md +53 -0
  342. package/docs/components/Card.md +287 -0
  343. package/docs/components/Checkbox.md +87 -0
  344. package/docs/components/DateField.md +103 -0
  345. package/docs/components/DatePicker.md +80 -0
  346. package/docs/components/DateRangeField.md +88 -0
  347. package/docs/components/DateRangePicker.md +70 -0
  348. package/docs/components/DateTimeField.md +92 -0
  349. package/docs/components/DateTimePicker.md +74 -0
  350. package/docs/components/DateTimeRangeField.md +90 -0
  351. package/docs/components/DateTimeRangePicker.md +74 -0
  352. package/docs/components/Divider.md +56 -0
  353. package/docs/components/Drawer.md +137 -0
  354. package/docs/components/FieldOverlay.md +91 -0
  355. package/docs/components/FormControl.md +66 -0
  356. package/docs/components/FormField.md +71 -0
  357. package/docs/components/I18n.md +125 -0
  358. package/docs/components/Icon.md +88 -0
  359. package/docs/components/Label.md +31 -0
  360. package/docs/components/Link.md +71 -0
  361. package/docs/components/List.md +167 -0
  362. package/docs/components/Menu.md +97 -0
  363. package/docs/components/Modal.md +154 -0
  364. package/docs/components/NumberField.md +80 -0
  365. package/docs/components/OtpField.md +133 -0
  366. package/docs/components/PasswordField.md +82 -0
  367. package/docs/components/Progress.md +68 -0
  368. package/docs/components/Radio.md +91 -0
  369. package/docs/components/Select.md +195 -0
  370. package/docs/components/Skeleton.md +38 -0
  371. package/docs/components/Slider.md +140 -0
  372. package/docs/components/Snackbar.md +99 -0
  373. package/docs/components/Spinner.md +61 -0
  374. package/docs/components/Switch.md +72 -0
  375. package/docs/components/Tabs.md +207 -0
  376. package/docs/components/TextField.md +72 -0
  377. package/docs/components/Textarea.md +80 -0
  378. package/docs/components/TimeField.md +81 -0
  379. package/docs/components/TimePanel.md +56 -0
  380. package/docs/components/TimePicker.md +61 -0
  381. package/docs/components/TimeRangeField.md +79 -0
  382. package/docs/components/TimeRangePicker.md +64 -0
  383. package/docs/components/Tooltip.md +125 -0
  384. package/docs/components/useBreakpoint.md +100 -0
  385. package/docs/components/useDialogAction.md +97 -0
  386. package/docs/components/useDrawerAction.md +75 -0
  387. package/docs/components/useModalAction.md +75 -0
  388. package/docs/components/useSnackbarAction.md +85 -0
  389. package/docs/examples/date-date-fns.ts +286 -0
  390. package/docs/examples/date-dayjs.ts +327 -0
  391. package/docs/examples/date-luxon.ts +332 -0
  392. package/docs/examples/date-moment.ts +334 -0
  393. package/docs/examples/i18n-dictionary.ts +48 -0
  394. package/docs/examples/i18n-vue-i18n.ts +34 -0
  395. package/docs/examples/icon-fontawesome.ts +120 -0
  396. package/docs/examples/icon-heroicons.ts +65 -0
  397. package/docs/examples/icon-lucide.ts +65 -0
  398. package/docs/examples/icon-phosphor.ts +65 -0
  399. package/docs/examples/icon-tabler.ts +65 -0
  400. package/package.json +28 -15
  401. package/dist/Components/OtpField/OtpFieldLabel.js +0 -5
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Example Moment.js date adapter for `@bridge-ui/vue`.
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.dates`.
4
+ * Not published as an npm package.
5
+ *
6
+ * Requires `moment` and `moment-timezone` (IANA zones via `moment.tz`).
7
+ */
8
+
9
+ // ** External Imports
10
+ import { clamp, isNil, isString, range } from "es-toolkit/compat";
11
+ import moment, { type Moment } from "moment-timezone";
12
+
13
+ // ** Core Imports
14
+ import type {
15
+ DateAdapter,
16
+ DateAdapterContext,
17
+ DateAdapterTimeOptions,
18
+ } from "@bridge-ui/core";
19
+
20
+ /**
21
+ * Options for {@link createMomentDateAdapter}.
22
+ */
23
+ export type MomentDateAdapterOptions = {
24
+ /**
25
+ * Default locale when context omits `locale`.
26
+ *
27
+ * @default undefined
28
+ */
29
+ locale?: string;
30
+
31
+ /**
32
+ * Default IANA time zone when context omits `timeZone`.
33
+ *
34
+ * @default undefined (system local zone)
35
+ */
36
+ timeZone?: string;
37
+ };
38
+
39
+ /**
40
+ * Builds a Moment-backed {@link DateAdapter} (`TDate = Date`) for Bridge calendars.
41
+ */
42
+ export function createMomentDateAdapter(
43
+ options: MomentDateAdapterOptions = {},
44
+ ): DateAdapter<Date> {
45
+ const resolveLocale = (context?: DateAdapterContext) => {
46
+ return context?.locale ?? options.locale;
47
+ };
48
+
49
+ const resolveZone = (context?: DateAdapterContext) => {
50
+ return context?.timeZone ?? options.timeZone;
51
+ };
52
+
53
+ const toMoment = (date: Date, context?: DateAdapterContext): Moment => {
54
+ const locale = resolveLocale(context);
55
+ const zone = resolveZone(context);
56
+ let value = isNil(zone) ? moment(date) : moment.tz(date, zone);
57
+
58
+ if (!isNil(locale)) {
59
+ value = value.locale(locale);
60
+ }
61
+
62
+ return value;
63
+ };
64
+
65
+ const fromMoment = (value: Moment): Date => {
66
+ return value.toDate();
67
+ };
68
+
69
+ const isValid = (date: Date) => {
70
+ return date instanceof Date && !Number.isNaN(date.getTime());
71
+ };
72
+
73
+ const adapter: DateAdapter<Date> = {
74
+ getDay: (date, context) => toMoment(date, context).day(),
75
+
76
+ getDate: (date, context) => toMoment(date, context).date(),
77
+
78
+ getYear: (date, context) => toMoment(date, context).year(),
79
+
80
+ getHours: (date, context) => toMoment(date, context).hour(),
81
+
82
+ isAfter: (a, b, context) => adapter.isBefore(b, a, context),
83
+
84
+ getMonth: (date, context) => toMoment(date, context).month(),
85
+
86
+ getMinutes: (date, context) => toMoment(date, context).minute(),
87
+
88
+ getSeconds: (date, context) => toMoment(date, context).second(),
89
+
90
+ isSameDay: (a, b, context) => {
91
+ return toMoment(a, context).isSame(toMoment(b, context), "day");
92
+ },
93
+
94
+ setDate: (date, day, context) => {
95
+ return fromMoment(toMoment(date, context).clone().date(day));
96
+ },
97
+
98
+ isSameYear: (a, b, context) => {
99
+ return toMoment(a, context).isSame(toMoment(b, context), "year");
100
+ },
101
+
102
+ setYear: (date, year, context) => {
103
+ return fromMoment(toMoment(date, context).clone().year(year));
104
+ },
105
+
106
+ startOfDay: (date, context) => {
107
+ return fromMoment(toMoment(date, context).clone().startOf("day"));
108
+ },
109
+
110
+ endOfMonth: (date, context) => {
111
+ return fromMoment(toMoment(date, context).clone().endOf("month"));
112
+ },
113
+
114
+ isSameMonth: (a, b, context) => {
115
+ return toMoment(a, context).isSame(toMoment(b, context), "month");
116
+ },
117
+
118
+ setMonth: (date, month, context) => {
119
+ return fromMoment(toMoment(date, context).clone().month(month));
120
+ },
121
+
122
+ startOfMonth: (date, context) => {
123
+ return fromMoment(toMoment(date, context).clone().startOf("month"));
124
+ },
125
+
126
+ addDays: (date, amount, context) => {
127
+ return fromMoment(toMoment(date, context).clone().add(amount, "days"));
128
+ },
129
+
130
+ addYears: (date, amount, context) => {
131
+ return fromMoment(toMoment(date, context).clone().add(amount, "years"));
132
+ },
133
+
134
+ addMonths: (date, amount, context) => {
135
+ return fromMoment(toMoment(date, context).clone().add(amount, "months"));
136
+ },
137
+
138
+ setHours: (date, hours, context) => {
139
+ return fromMoment(
140
+ toMoment(date, context)
141
+ .clone()
142
+ .hour(clamp(hours, 0, 23)),
143
+ );
144
+ },
145
+
146
+ setMinutes: (date, minutes, context) => {
147
+ return fromMoment(
148
+ toMoment(date, context)
149
+ .clone()
150
+ .minute(clamp(minutes, 0, 59)),
151
+ );
152
+ },
153
+
154
+ setSeconds: (date, seconds, context) => {
155
+ return fromMoment(
156
+ toMoment(date, context)
157
+ .clone()
158
+ .second(clamp(seconds, 0, 59)),
159
+ );
160
+ },
161
+
162
+ isBefore: (a, b, context) => {
163
+ return toMoment(a, context)
164
+ .clone()
165
+ .startOf("day")
166
+ .isBefore(toMoment(b, context).clone().startOf("day"));
167
+ },
168
+
169
+ parseTime: (value, context, timeOptions) => {
170
+ return parseTimeWithMoment({
171
+ value,
172
+ adapter,
173
+ context,
174
+ toMoment,
175
+ fromMoment,
176
+ timeOptions,
177
+ });
178
+ },
179
+
180
+ getMonthNames: (context) => {
181
+ const locale = resolveLocale(context);
182
+
183
+ return range(12).map((month) => {
184
+ return new Intl.DateTimeFormat(locale, { month: "long" }).format(
185
+ new Date(2021, month, 1),
186
+ );
187
+ });
188
+ },
189
+
190
+ isSameTime: (a, b, context) => {
191
+ const left = toMoment(a, context);
192
+ const right = toMoment(b, context);
193
+
194
+ return (
195
+ left.hour() === right.hour() &&
196
+ left.minute() === right.minute() &&
197
+ left.second() === right.second()
198
+ );
199
+ },
200
+
201
+ now: (context) => {
202
+ const zone = resolveZone(context);
203
+ const locale = resolveLocale(context);
204
+ let value = isNil(zone) ? moment() : moment.tz(zone);
205
+
206
+ if (!isNil(locale)) {
207
+ value = value.locale(locale);
208
+ }
209
+
210
+ return fromMoment(value);
211
+ },
212
+
213
+ format: (date, context) => {
214
+ if (!isValid(date)) {
215
+ return "";
216
+ }
217
+
218
+ const locale = resolveLocale(context);
219
+ const timeZone = resolveZone(context);
220
+
221
+ return new Intl.DateTimeFormat(locale, {
222
+ timeZone,
223
+ day: "2-digit",
224
+ year: "numeric",
225
+ month: "2-digit",
226
+ }).format(date);
227
+ },
228
+
229
+ getWeekdayNames: (context) => {
230
+ const locale = resolveLocale(context);
231
+ const formatter = new Intl.DateTimeFormat(locale, { weekday: "short" });
232
+ const sunday = new Date(2021, 0, 3);
233
+
234
+ return range(7).map((index) => {
235
+ const day = new Date(sunday);
236
+
237
+ day.setDate(sunday.getDate() + index);
238
+
239
+ return formatter.format(day);
240
+ });
241
+ },
242
+
243
+ parse: (value, context) => {
244
+ if (!isString(value) || value.trim() === "") {
245
+ return null;
246
+ }
247
+
248
+ const trimmed = value.trim();
249
+ const zone = resolveZone(context);
250
+ const parsed = isNil(zone) ? moment(trimmed) : moment.tz(trimmed, zone);
251
+
252
+ if (!parsed.isValid()) {
253
+ return null;
254
+ }
255
+
256
+ return fromMoment(parsed.startOf("day"));
257
+ },
258
+
259
+ getCalendarDays: (view, startOfWeek, context) => {
260
+ const monthStart = adapter.startOfMonth(view, context);
261
+ const weekday = adapter.getDay(monthStart, context);
262
+ const normalizedStart = ((startOfWeek % 7) + 7) % 7;
263
+ const leading = (weekday - normalizedStart + 7) % 7;
264
+ const gridStart = adapter.addDays(monthStart, -leading, context);
265
+
266
+ return range(42).map((index) => {
267
+ return adapter.addDays(gridStart, index, context);
268
+ });
269
+ },
270
+
271
+ formatTime: (date, context, timeOptions) => {
272
+ if (!isValid(date)) {
273
+ return "";
274
+ }
275
+
276
+ const locale = resolveLocale(context);
277
+ const timeZone = resolveZone(context);
278
+ const ampm = timeOptions?.ampm === true;
279
+ const showSeconds = timeOptions?.showSeconds === true;
280
+
281
+ return new Intl.DateTimeFormat(locale, {
282
+ timeZone,
283
+ hour12: ampm,
284
+ hour: "2-digit",
285
+ minute: "2-digit",
286
+ ...(showSeconds ? { second: "2-digit" as const } : {}),
287
+ }).format(date);
288
+ },
289
+ };
290
+
291
+ return adapter;
292
+ }
293
+
294
+ function parseTimeWithMoment(input: {
295
+ adapter: DateAdapter<Date>;
296
+ context?: DateAdapterContext;
297
+ fromMoment: (value: Moment) => Date;
298
+ timeOptions?: DateAdapterTimeOptions;
299
+ toMoment: (date: Date, context?: DateAdapterContext) => Moment;
300
+ value: string;
301
+ }): Date | null {
302
+ const { value, adapter, context, toMoment, fromMoment, timeOptions } = input;
303
+
304
+ if (!isString(value) || value.trim() === "") {
305
+ return null;
306
+ }
307
+
308
+ const trimmed = value.trim();
309
+ const ampm = timeOptions?.ampm === true;
310
+ const showSeconds = timeOptions?.showSeconds === true;
311
+ const format = ampm
312
+ ? showSeconds
313
+ ? "h:mm:ss A"
314
+ : "h:mm A"
315
+ : showSeconds
316
+ ? "H:mm:ss"
317
+ : "H:mm";
318
+ const parsed = moment(trimmed, format, true);
319
+
320
+ if (!parsed.isValid()) {
321
+ return null;
322
+ }
323
+
324
+ const base = toMoment(adapter.now(context), context);
325
+
326
+ return fromMoment(
327
+ base
328
+ .clone()
329
+ .hour(parsed.hour())
330
+ .minute(parsed.minute())
331
+ .second(showSeconds ? parsed.second() : 0)
332
+ .millisecond(0),
333
+ );
334
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Example dictionary i18n adapter for `@bridge-ui/vue`.
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.i18n`.
4
+ * Not published as an npm package.
5
+ *
6
+ * Source English strings are the lookup keys (same strings Bridge passes to
7
+ * `resolveMessage`). Messages are keyed by locale; optional `setLocale` updates
8
+ * the active locale used by `t`. For replace / pluralization, wrap vue-i18n (or
9
+ * similar) instead.
10
+ */
11
+
12
+ // ** External Imports
13
+ import { get } from "es-toolkit/compat";
14
+
15
+ // ** Core Imports
16
+ import type { I18nAdapter } from "@bridge-ui/core";
17
+
18
+ // prettier-ignore
19
+ const MESSAGES: Record<string, Record<string, string>> = {
20
+ "en-US": {},
21
+ "pt-BR": {
22
+ "Close": "Fechar",
23
+ "Loading...": "Carregando...",
24
+ "No options": "Nenhuma opção",
25
+ "Hide password": "Ocultar senha",
26
+ "Show password": "Mostrar senha",
27
+ "Clear selection": "Limpar seleção",
28
+ "Decrement value": "Diminuir valor",
29
+ "Increment value": "Aumentar valor",
30
+ },
31
+ };
32
+
33
+ /**
34
+ * Builds a locale-keyed dictionary {@link I18nAdapter} for Bridge chrome strings.
35
+ * Unknown locales / messages fall back to the English source string.
36
+ */
37
+ export function createDictionaryI18nAdapter(): I18nAdapter {
38
+ let locale = "en-US";
39
+
40
+ return {
41
+ setLocale(next) {
42
+ locale = next;
43
+ },
44
+ t(message) {
45
+ return get(MESSAGES, [locale, message], message);
46
+ },
47
+ };
48
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Example vue-i18n adapter for `@bridge-ui/vue`.
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.i18n`.
4
+ * Not published as an npm package.
5
+ *
6
+ * Passes Bridge source strings and `params` straight to `i18n.t`
7
+ * (interpolation, pluralization, etc. stay in vue-i18n).
8
+ * `setLocale` on the adapter is invoked by Bridge `setLocale`.
9
+ */
10
+
11
+ // ** External Imports
12
+ import type { Composer } from "vue-i18n";
13
+
14
+ // ** Core Imports
15
+ import type { I18nAdapter } from "@bridge-ui/core";
16
+
17
+ /**
18
+ * Builds a vue-i18n-backed {@link I18nAdapter} for Bridge chrome strings.
19
+ * Pass `vueI18n.global` (composition mode) or the result of `useI18n()`.
20
+ */
21
+ export function createVueI18nAdapter(i18n: Composer): I18nAdapter {
22
+ return {
23
+ setLocale(locale) {
24
+ i18n.locale.value = locale;
25
+ },
26
+ t(message, params) {
27
+ if (params) {
28
+ return i18n.t(message, params);
29
+ }
30
+
31
+ return i18n.t(message);
32
+ },
33
+ };
34
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Example Font Awesome 6 (free solid) adapter for `@bridge-ui/vue`.
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.icons`.
4
+ * Not published as an npm package.
5
+ *
6
+ * Font Awesome exports icon definitions, not SVG components. This adapter
7
+ * `normalize`s them so `<Icon :icon="faCoffee" />` works without a manual wrap.
8
+ */
9
+
10
+ // ** External Imports
11
+ import type { IconDefinition } from "@fortawesome/fontawesome-svg-core";
12
+ import {
13
+ faBell,
14
+ faCalendarDays,
15
+ faCheck,
16
+ faChevronDown,
17
+ faChevronLeft,
18
+ faChevronRight,
19
+ faChevronUp,
20
+ faCircleCheck,
21
+ faCircleExclamation,
22
+ faCircleInfo,
23
+ faCircleXmark,
24
+ faClock,
25
+ faEye,
26
+ faEyeSlash,
27
+ faSpinner,
28
+ faTriangleExclamation,
29
+ faUpDown,
30
+ faUser,
31
+ faXmark,
32
+ } from "@fortawesome/free-solid-svg-icons";
33
+ import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
34
+ import { get, isArray, isObject, isString } from "es-toolkit/compat";
35
+ import { defineComponent, h, type Component } from "vue";
36
+
37
+ // ** Core Imports
38
+ import type { IconAdapter, SemanticIconName } from "@bridge-ui/core";
39
+
40
+ declare module "@bridge-ui/core" {
41
+ interface IconSourceValueOverrides {
42
+ fontAwesome: IconDefinition;
43
+ }
44
+ }
45
+
46
+ const faIconCache = new WeakMap<IconDefinition, Component>();
47
+
48
+ /**
49
+ * Returns whether `value` looks like a Font Awesome {@link IconDefinition}.
50
+ */
51
+ function isIconDefinition(value: unknown): value is IconDefinition {
52
+ return (
53
+ isObject(value) &&
54
+ isArray((value as IconDefinition).icon) &&
55
+ isString((value as IconDefinition).prefix) &&
56
+ isString((value as IconDefinition).iconName)
57
+ );
58
+ }
59
+
60
+ /**
61
+ * Wraps a Font Awesome icon definition as a Vue SVG component.
62
+ * Prefer `<Icon :icon="faCoffee" />` with this adapter — `normalize` calls this.
63
+ * Results are cached so repeated resolves keep a stable component identity.
64
+ */
65
+ export function wrapFaIcon(icon: IconDefinition): Component {
66
+ const cached = faIconCache.get(icon);
67
+
68
+ if (cached) {
69
+ return cached;
70
+ }
71
+
72
+ const FaIcon = defineComponent({
73
+ inheritAttrs: false,
74
+ name: `FaIcon(${icon.iconName})`,
75
+ setup(_, { attrs }) {
76
+ return () => h(FontAwesomeIcon, { ...attrs, icon });
77
+ },
78
+ });
79
+
80
+ faIconCache.set(icon, FaIcon);
81
+
82
+ return FaIcon;
83
+ }
84
+
85
+ const icons = {
86
+ eye: faEye,
87
+ bell: faBell,
88
+ user: faUser,
89
+ clear: faXmark,
90
+ check: faCheck,
91
+ clock: faClock,
92
+ loader: faSpinner,
93
+ info: faCircleInfo,
94
+ eyeOff: faEyeSlash,
95
+ error: faCircleXmark,
96
+ success: faCircleCheck,
97
+ chevronUp: faChevronUp,
98
+ chevronUpDown: faUpDown,
99
+ calendar: faCalendarDays,
100
+ alert: faCircleExclamation,
101
+ chevronDown: faChevronDown,
102
+ chevronLeft: faChevronLeft,
103
+ chevronRight: faChevronRight,
104
+ warning: faTriangleExclamation,
105
+ } satisfies Record<SemanticIconName, unknown>;
106
+
107
+ /**
108
+ * Builds a Font Awesome-backed {@link IconAdapter} for Bridge semantic icon names.
109
+ * Pass raw `fa*` definitions to `<Icon />` — they are normalized automatically.
110
+ */
111
+ export function createFontAwesomeIconAdapter(): IconAdapter {
112
+ return {
113
+ resolve(name) {
114
+ return get(icons, name);
115
+ },
116
+ normalize(source) {
117
+ return isIconDefinition(source) ? wrapFaIcon(source) : source;
118
+ },
119
+ };
120
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Example Heroicons adapter for `@bridge-ui/vue` (24px outline).
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.icons`.
4
+ * Not published as an npm package.
5
+ */
6
+
7
+ // ** External Imports
8
+ import {
9
+ ArrowPathIcon,
10
+ BellIcon,
11
+ CalendarDaysIcon,
12
+ CheckCircleIcon,
13
+ CheckIcon,
14
+ ChevronDownIcon,
15
+ ChevronLeftIcon,
16
+ ChevronRightIcon,
17
+ ChevronUpDownIcon,
18
+ ChevronUpIcon,
19
+ ClockIcon,
20
+ ExclamationCircleIcon,
21
+ ExclamationTriangleIcon,
22
+ EyeIcon,
23
+ EyeSlashIcon,
24
+ InformationCircleIcon,
25
+ UserIcon,
26
+ XCircleIcon,
27
+ XMarkIcon,
28
+ } from "@heroicons/vue/24/outline";
29
+ import { get } from "es-toolkit/compat";
30
+
31
+ // ** Core Imports
32
+ import type { IconAdapter, SemanticIconName } from "@bridge-ui/core";
33
+
34
+ const icons = {
35
+ eye: EyeIcon,
36
+ bell: BellIcon,
37
+ user: UserIcon,
38
+ clear: XMarkIcon,
39
+ check: CheckIcon,
40
+ clock: ClockIcon,
41
+ error: XCircleIcon,
42
+ eyeOff: EyeSlashIcon,
43
+ loader: ArrowPathIcon,
44
+ success: CheckCircleIcon,
45
+ chevronUp: ChevronUpIcon,
46
+ calendar: CalendarDaysIcon,
47
+ info: InformationCircleIcon,
48
+ alert: ExclamationCircleIcon,
49
+ chevronDown: ChevronDownIcon,
50
+ chevronLeft: ChevronLeftIcon,
51
+ chevronRight: ChevronRightIcon,
52
+ warning: ExclamationTriangleIcon,
53
+ chevronUpDown: ChevronUpDownIcon,
54
+ } satisfies Record<SemanticIconName, unknown>;
55
+
56
+ /**
57
+ * Builds a Heroicons-backed {@link IconAdapter} for Bridge semantic icon names.
58
+ */
59
+ export function createHeroiconsIconAdapter(): IconAdapter {
60
+ return {
61
+ resolve(name) {
62
+ return get(icons, name);
63
+ },
64
+ };
65
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Example Lucide icon adapter for `@bridge-ui/vue`.
3
+ * Copy into your app or wire via `BridgeUIProvider` / `createBridgeUI` `global.icons`.
4
+ * Not published as an npm package.
5
+ */
6
+
7
+ // ** External Imports
8
+ import {
9
+ Bell,
10
+ Calendar,
11
+ Check,
12
+ ChevronDown,
13
+ ChevronLeft,
14
+ ChevronRight,
15
+ ChevronsUpDown,
16
+ ChevronUp,
17
+ CircleAlert,
18
+ CircleCheck,
19
+ CircleX,
20
+ Clock,
21
+ Eye,
22
+ EyeOff,
23
+ Info,
24
+ Loader2,
25
+ TriangleAlert,
26
+ User,
27
+ X,
28
+ } from "@lucide/vue";
29
+ import { get } from "es-toolkit/compat";
30
+
31
+ // ** Core Imports
32
+ import type { IconAdapter, SemanticIconName } from "@bridge-ui/core";
33
+
34
+ const icons = {
35
+ eye: Eye,
36
+ clear: X,
37
+ bell: Bell,
38
+ info: Info,
39
+ user: User,
40
+ check: Check,
41
+ clock: Clock,
42
+ error: CircleX,
43
+ eyeOff: EyeOff,
44
+ loader: Loader2,
45
+ alert: CircleAlert,
46
+ calendar: Calendar,
47
+ success: CircleCheck,
48
+ chevronUp: ChevronUp,
49
+ warning: TriangleAlert,
50
+ chevronDown: ChevronDown,
51
+ chevronLeft: ChevronLeft,
52
+ chevronRight: ChevronRight,
53
+ chevronUpDown: ChevronsUpDown,
54
+ } satisfies Record<SemanticIconName, unknown>;
55
+
56
+ /**
57
+ * Builds a Lucide-backed {@link IconAdapter} for Bridge semantic icon names.
58
+ */
59
+ export function createLucideIconAdapter(): IconAdapter {
60
+ return {
61
+ resolve(name) {
62
+ return get(icons, name);
63
+ },
64
+ };
65
+ }