@mks2508/mks-ui 0.5.4 → 0.5.8

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 (262) hide show
  1. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +23 -4
  2. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -1
  3. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +2 -2
  4. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -1
  5. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +292 -31
  6. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts +7 -0
  7. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts.map +1 -1
  8. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.js +6 -1
  9. package/dist/react-ui/ui/DynamicToggle/{DynamicToggle-Cm6-VceQ.css → DynamicToggle-DJLwEkHr.css} +116 -51
  10. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +116 -51
  11. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +1 -0
  12. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -1
  13. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +9 -3
  14. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +61 -31
  15. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -1
  16. package/dist/react-ui/ui/DynamicToggle/index.d.ts +9 -3
  17. package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -1
  18. package/dist/react-ui/ui/DynamicToggle/index.js +68 -37
  19. package/package.json +52 -13
  20. package/src/assets/react.svg +0 -1
  21. package/src/core/index.ts +0 -7
  22. package/src/core/types.ts +0 -82
  23. package/src/css.d.ts +0 -7
  24. package/src/index.css +0 -129
  25. package/src/index.ts +0 -29
  26. package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +0 -278
  27. package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +0 -97
  28. package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +0 -155
  29. package/src/react-ui/blocks/Terminal/Terminal.theme.ts +0 -80
  30. package/src/react-ui/blocks/Terminal/Terminal.types.ts +0 -438
  31. package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +0 -38
  32. package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +0 -254
  33. package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +0 -73
  34. package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +0 -269
  35. package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +0 -326
  36. package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +0 -230
  37. package/src/react-ui/blocks/Terminal/XTermAdapter.ts +0 -163
  38. package/src/react-ui/blocks/Terminal/chrome.ts +0 -25
  39. package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +0 -316
  40. package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +0 -218
  41. package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +0 -386
  42. package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +0 -67
  43. package/src/react-ui/blocks/Terminal/components/index.ts +0 -10
  44. package/src/react-ui/blocks/Terminal/display.ts +0 -46
  45. package/src/react-ui/blocks/Terminal/hooks/index.ts +0 -22
  46. package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +0 -229
  47. package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +0 -292
  48. package/src/react-ui/blocks/Terminal/index.ts +0 -111
  49. package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +0 -330
  50. package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +0 -242
  51. package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +0 -202
  52. package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +0 -140
  53. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +0 -68
  54. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +0 -85
  55. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +0 -383
  56. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +0 -439
  57. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +0 -550
  58. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +0 -259
  59. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +0 -75
  60. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +0 -266
  61. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +0 -82
  62. package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +0 -112
  63. package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +0 -178
  64. package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +0 -203
  65. package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +0 -252
  66. package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +0 -334
  67. package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +0 -261
  68. package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +0 -248
  69. package/src/react-ui/blocks/Terminal/panel/index.ts +0 -72
  70. package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +0 -59
  71. package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +0 -59
  72. package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +0 -180
  73. package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +0 -248
  74. package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +0 -283
  75. package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +0 -686
  76. package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +0 -466
  77. package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +0 -343
  78. package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +0 -167
  79. package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +0 -348
  80. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +0 -251
  81. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +0 -390
  82. package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +0 -320
  83. package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +0 -20
  84. package/src/react-ui/blocks/Terminal/parsing/index.ts +0 -69
  85. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +0 -68
  86. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +0 -436
  87. package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +0 -14
  88. package/src/react-ui/blocks/index.ts +0 -11
  89. package/src/react-ui/components/MorphingPopover/MorphingPopover.types.ts +0 -49
  90. package/src/react-ui/components/MorphingPopover/index.tsx +0 -186
  91. package/src/react-ui/components/MorphingPopover/morphing-popover.module.css +0 -153
  92. package/src/react-ui/components/index.ts +0 -9
  93. package/src/react-ui/hooks/Animation/UseAutoHeight.tsx +0 -123
  94. package/src/react-ui/hooks/DOM/UseIsInView.tsx +0 -44
  95. package/src/react-ui/hooks/Formatting/UseListFormat.ts +0 -134
  96. package/src/react-ui/hooks/State/UseControlledState.tsx +0 -57
  97. package/src/react-ui/hooks/State/UseDataState.tsx +0 -76
  98. package/src/react-ui/hooks/index.ts +0 -20
  99. package/src/react-ui/icons/index.ts +0 -12
  100. package/src/react-ui/icons/lucide-animated/activity.tsx +0 -109
  101. package/src/react-ui/icons/lucide-animated/arrow-down-to-line.tsx +0 -51
  102. package/src/react-ui/icons/lucide-animated/arrow-up.tsx +0 -50
  103. package/src/react-ui/icons/lucide-animated/bell-electric.tsx +0 -124
  104. package/src/react-ui/icons/lucide-animated/bell.tsx +0 -93
  105. package/src/react-ui/icons/lucide-animated/bot.tsx +0 -122
  106. package/src/react-ui/icons/lucide-animated/box.tsx +0 -117
  107. package/src/react-ui/icons/lucide-animated/check.tsx +0 -21
  108. package/src/react-ui/icons/lucide-animated/circle-check.tsx +0 -107
  109. package/src/react-ui/icons/lucide-animated/delete.tsx +0 -133
  110. package/src/react-ui/icons/lucide-animated/download.tsx +0 -99
  111. package/src/react-ui/icons/lucide-animated/edit-2.tsx +0 -21
  112. package/src/react-ui/icons/lucide-animated/globe.tsx +0 -23
  113. package/src/react-ui/icons/lucide-animated/home.tsx +0 -103
  114. package/src/react-ui/icons/lucide-animated/index.ts +0 -38
  115. package/src/react-ui/icons/lucide-animated/layers.tsx +0 -23
  116. package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +0 -143
  117. package/src/react-ui/icons/lucide-animated/list.tsx +0 -54
  118. package/src/react-ui/icons/lucide-animated/package.tsx +0 -24
  119. package/src/react-ui/icons/lucide-animated/palette.tsx +0 -25
  120. package/src/react-ui/icons/lucide-animated/plus.tsx +0 -92
  121. package/src/react-ui/icons/lucide-animated/refresh-cw.tsx +0 -24
  122. package/src/react-ui/icons/lucide-animated/rocket.tsx +0 -24
  123. package/src/react-ui/icons/lucide-animated/save.tsx +0 -23
  124. package/src/react-ui/icons/lucide-animated/search.tsx +0 -94
  125. package/src/react-ui/icons/lucide-animated/settings.tsx +0 -92
  126. package/src/react-ui/icons/lucide-animated/terminal.tsx +0 -46
  127. package/src/react-ui/icons/lucide-animated/trash-2.tsx +0 -25
  128. package/src/react-ui/icons/lucide-animated/trending-down.tsx +0 -151
  129. package/src/react-ui/icons/lucide-animated/trending-up.tsx +0 -150
  130. package/src/react-ui/icons/lucide-animated/type.tsx +0 -23
  131. package/src/react-ui/icons/lucide-animated/upload.tsx +0 -23
  132. package/src/react-ui/icons/lucide-animated/x.tsx +0 -102
  133. package/src/react-ui/index.ts +0 -30
  134. package/src/react-ui/lib/get-strict-context.tsx +0 -56
  135. package/src/react-ui/lib/icon-wrapper.tsx +0 -70
  136. package/src/react-ui/lib/index.ts +0 -9
  137. package/src/react-ui/lib/utils.ts +0 -24
  138. package/src/react-ui/primitives/AutoHeight/index.tsx +0 -74
  139. package/src/react-ui/primitives/CountingNumber/index.tsx +0 -147
  140. package/src/react-ui/primitives/Highlight/Highlight.types.ts +0 -136
  141. package/src/react-ui/primitives/Highlight/index.tsx +0 -577
  142. package/src/react-ui/primitives/Slot/index.tsx +0 -128
  143. package/src/react-ui/primitives/index.ts +0 -16
  144. package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +0 -123
  145. package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +0 -80
  146. package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +0 -77
  147. package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +0 -58
  148. package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +0 -244
  149. package/src/react-ui/primitives/waapi/Gooey/index.ts +0 -50
  150. package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +0 -48
  151. package/src/react-ui/primitives/waapi/Morph/Morph.types.ts +0 -106
  152. package/src/react-ui/primitives/waapi/Morph/MorphContext.tsx +0 -21
  153. package/src/react-ui/primitives/waapi/Morph/index.tsx +0 -56
  154. package/src/react-ui/primitives/waapi/Morph/techniques/index.ts +0 -12
  155. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +0 -89
  156. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +0 -176
  157. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +0 -87
  158. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +0 -101
  159. package/src/react-ui/primitives/waapi/Reorder/Reorder.types.ts +0 -177
  160. package/src/react-ui/primitives/waapi/Reorder/index.tsx +0 -260
  161. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +0 -47
  162. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +0 -209
  163. package/src/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.ts +0 -104
  164. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.ts +0 -14
  165. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.ts +0 -84
  166. package/src/react-ui/primitives/waapi/SlidingNumber/index.tsx +0 -474
  167. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.styles.ts +0 -32
  168. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.types.ts +0 -69
  169. package/src/react-ui/primitives/waapi/SlidingText/index.tsx +0 -140
  170. package/src/react-ui/primitives/waapi/core/animationConstants.ts +0 -215
  171. package/src/react-ui/primitives/waapi/core/index.ts +0 -53
  172. package/src/react-ui/primitives/waapi/core/types.ts +0 -200
  173. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +0 -430
  174. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +0 -81
  175. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +0 -138
  176. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +0 -106
  177. package/src/react-ui/primitives/waapi/index.ts +0 -139
  178. package/src/react-ui/styles/animations.css +0 -369
  179. package/src/react-ui/ui/Accordion/Accordion.styles.ts +0 -72
  180. package/src/react-ui/ui/Accordion/Accordion.types.ts +0 -199
  181. package/src/react-ui/ui/Accordion/index.tsx +0 -362
  182. package/src/react-ui/ui/AlertDialog/AlertDialog.styles.ts +0 -38
  183. package/src/react-ui/ui/AlertDialog/AlertDialog.types.ts +0 -296
  184. package/src/react-ui/ui/AlertDialog/index.tsx +0 -540
  185. package/src/react-ui/ui/Badge/Badge.styles.ts +0 -43
  186. package/src/react-ui/ui/Badge/Badge.types.ts +0 -26
  187. package/src/react-ui/ui/Badge/index.tsx +0 -34
  188. package/src/react-ui/ui/Button/Button.styles.ts +0 -57
  189. package/src/react-ui/ui/Button/Button.types.ts +0 -63
  190. package/src/react-ui/ui/Button/index.tsx +0 -155
  191. package/src/react-ui/ui/Card/Card.styles.ts +0 -32
  192. package/src/react-ui/ui/Card/Card.types.ts +0 -39
  193. package/src/react-ui/ui/Card/index.tsx +0 -130
  194. package/src/react-ui/ui/Checkbox/Checkbox.styles.ts +0 -40
  195. package/src/react-ui/ui/Checkbox/Checkbox.types.ts +0 -98
  196. package/src/react-ui/ui/Checkbox/index.tsx +0 -233
  197. package/src/react-ui/ui/Combobox/Combobox.styles.ts +0 -34
  198. package/src/react-ui/ui/Combobox/Combobox.types.ts +0 -89
  199. package/src/react-ui/ui/Combobox/index.tsx +0 -331
  200. package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +0 -38
  201. package/src/react-ui/ui/CornerBracket/CornerBracket.types.ts +0 -15
  202. package/src/react-ui/ui/CornerBracket/index.tsx +0 -49
  203. package/src/react-ui/ui/DataCard/DataCard.styles.ts +0 -94
  204. package/src/react-ui/ui/DataCard/DataCard.types.ts +0 -125
  205. package/src/react-ui/ui/DataCard/index.tsx +0 -340
  206. package/src/react-ui/ui/Dialog/Dialog.styles.ts +0 -59
  207. package/src/react-ui/ui/Dialog/Dialog.types.ts +0 -284
  208. package/src/react-ui/ui/Dialog/index.tsx +0 -452
  209. package/src/react-ui/ui/DropdownMenu/DropdownMenu.styles.ts +0 -35
  210. package/src/react-ui/ui/DropdownMenu/DropdownMenu.types.ts +0 -81
  211. package/src/react-ui/ui/DropdownMenu/index.tsx +0 -300
  212. package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +0 -303
  213. package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +0 -85
  214. package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +0 -174
  215. package/src/react-ui/ui/DynamicToggle/index.tsx +0 -294
  216. package/src/react-ui/ui/DynamicToggle/prototype-v7.html +0 -615
  217. package/src/react-ui/ui/DynamicToggle/prototype.html +0 -419
  218. package/src/react-ui/ui/Field/Field.styles.ts +0 -47
  219. package/src/react-ui/ui/Field/Field.types.ts +0 -60
  220. package/src/react-ui/ui/Field/index.tsx +0 -254
  221. package/src/react-ui/ui/Input/Input.styles.ts +0 -11
  222. package/src/react-ui/ui/Input/Input.types.ts +0 -10
  223. package/src/react-ui/ui/Input/index.tsx +0 -32
  224. package/src/react-ui/ui/InputGroup/InputGroup.styles.ts +0 -53
  225. package/src/react-ui/ui/InputGroup/InputGroup.types.ts +0 -44
  226. package/src/react-ui/ui/InputGroup/index.tsx +0 -149
  227. package/src/react-ui/ui/Label/Label.styles.ts +0 -10
  228. package/src/react-ui/ui/Label/Label.types.ts +0 -9
  229. package/src/react-ui/ui/Label/index.tsx +0 -27
  230. package/src/react-ui/ui/Menu/Menu.styles.ts +0 -71
  231. package/src/react-ui/ui/Menu/Menu.types.ts +0 -425
  232. package/src/react-ui/ui/Menu/index.tsx +0 -900
  233. package/src/react-ui/ui/Popover/Popover.styles.ts +0 -55
  234. package/src/react-ui/ui/Popover/Popover.types.ts +0 -261
  235. package/src/react-ui/ui/Popover/index.tsx +0 -422
  236. package/src/react-ui/ui/Progress/Progress.styles.ts +0 -36
  237. package/src/react-ui/ui/Progress/Progress.types.ts +0 -162
  238. package/src/react-ui/ui/Progress/index.tsx +0 -254
  239. package/src/react-ui/ui/Select/Select.styles.ts +0 -30
  240. package/src/react-ui/ui/Select/Select.types.ts +0 -51
  241. package/src/react-ui/ui/Select/index.tsx +0 -225
  242. package/src/react-ui/ui/Separator/Separator.styles.ts +0 -10
  243. package/src/react-ui/ui/Separator/Separator.types.ts +0 -10
  244. package/src/react-ui/ui/Separator/index.tsx +0 -37
  245. package/src/react-ui/ui/Switch/Switch.styles.ts +0 -50
  246. package/src/react-ui/ui/Switch/Switch.types.ts +0 -155
  247. package/src/react-ui/ui/Switch/index.tsx +0 -253
  248. package/src/react-ui/ui/Tabs/Tabs.css +0 -39
  249. package/src/react-ui/ui/Tabs/Tabs.styles.ts +0 -148
  250. package/src/react-ui/ui/Tabs/Tabs.types.ts +0 -255
  251. package/src/react-ui/ui/Tabs/index.tsx +0 -529
  252. package/src/react-ui/ui/TextFlow/TextFlow.styles.ts +0 -36
  253. package/src/react-ui/ui/TextFlow/TextFlow.types.ts +0 -118
  254. package/src/react-ui/ui/TextFlow/index.tsx +0 -276
  255. package/src/react-ui/ui/Textarea/Textarea.styles.ts +0 -10
  256. package/src/react-ui/ui/Textarea/Textarea.types.ts +0 -9
  257. package/src/react-ui/ui/Textarea/index.tsx +0 -27
  258. package/src/react-ui/ui/Tooltip/Tooltip.styles.ts +0 -43
  259. package/src/react-ui/ui/Tooltip/Tooltip.types.ts +0 -253
  260. package/src/react-ui/ui/Tooltip/index.tsx +0 -394
  261. package/src/react-ui/ui/index.ts +0 -41
  262. package/src/types/css-modules.d.ts +0 -18
@@ -1,540 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * AlertDialog component with animated 3D flip entrance.
5
- *
6
- * Built on top of Base UI's AlertDialog primitive with Motion (Framer Motion)
7
- * animations. Features a perspective-based flip animation from configurable
8
- * directions, backdrop blur effects, and the StyleSlots pattern for granular
9
- * style overrides.
10
- *
11
- * AlertDialog is specifically designed for destructive or important confirmations
12
- * that require explicit user acknowledgment. Unlike Dialog, it blocks interaction
13
- * with the rest of the page.
14
- *
15
- * @module @mks2508/mks-ui/react/ui/AlertDialog
16
- *
17
- * @example
18
- * ```tsx
19
- * import {
20
- * AlertDialog,
21
- * AlertDialogTrigger,
22
- * AlertDialogPortal,
23
- * AlertDialogBackdrop,
24
- * AlertDialogPopup,
25
- * AlertDialogHeader,
26
- * AlertDialogFooter,
27
- * AlertDialogTitle,
28
- * AlertDialogDescription,
29
- * AlertDialogClose,
30
- * } from '@mks2508/mks-ui';
31
- *
32
- * function DeleteConfirmation() {
33
- * return (
34
- * <AlertDialog>
35
- * <AlertDialogTrigger>Delete Account</AlertDialogTrigger>
36
- * <AlertDialogPortal>
37
- * <AlertDialogBackdrop />
38
- * <AlertDialogPopup from="top">
39
- * <AlertDialogHeader>
40
- * <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
41
- * <AlertDialogDescription>
42
- * This action cannot be undone.
43
- * </AlertDialogDescription>
44
- * </AlertDialogHeader>
45
- * <AlertDialogFooter>
46
- * <AlertDialogClose>Cancel</AlertDialogClose>
47
- * <button>Delete</button>
48
- * </AlertDialogFooter>
49
- * </AlertDialogPopup>
50
- * </AlertDialogPortal>
51
- * </AlertDialog>
52
- * );
53
- * }
54
- * ```
55
- */
56
-
57
- import * as React from 'react';
58
- import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';
59
- import { AnimatePresence, motion } from 'motion/react';
60
-
61
- import { cn } from '@/react-ui/lib/utils';
62
- import { getStrictContext } from '@/react-ui/lib/get-strict-context';
63
- import { useControlledState } from '@/react-ui/hooks/State/UseControlledState';
64
-
65
- import { AlertDialogStyles } from './AlertDialog.styles';
66
- import type {
67
- AlertDialogContextType,
68
- IAlertDialogProps,
69
- IAlertDialogTriggerProps,
70
- IAlertDialogPortalProps,
71
- IAlertDialogBackdropProps,
72
- IAlertDialogPopupProps,
73
- IAlertDialogCloseProps,
74
- IAlertDialogHeaderProps,
75
- IAlertDialogFooterProps,
76
- IAlertDialogTitleProps,
77
- IAlertDialogDescriptionProps,
78
- } from './AlertDialog.types';
79
-
80
- // ---------------------------------------------------------------------------
81
- // Context
82
- // ---------------------------------------------------------------------------
83
-
84
- const [AlertDialogProvider, useAlertDialog] =
85
- getStrictContext<AlertDialogContextType>('AlertDialogContext');
86
-
87
- // ---------------------------------------------------------------------------
88
- // AlertDialog (root)
89
- // ---------------------------------------------------------------------------
90
-
91
- /**
92
- * Root AlertDialog component. Manages open state and provides context
93
- * to all child sub-components.
94
- *
95
- * Supports both controlled (`open` + `onOpenChange`) and uncontrolled
96
- * (`defaultOpen`) usage patterns.
97
- *
98
- * @param props - {@link IAlertDialogProps}
99
- * @returns The rendered alert dialog root
100
- *
101
- * @example
102
- * ```tsx
103
- * // Uncontrolled
104
- * <AlertDialog>
105
- * <AlertDialogTrigger>Open</AlertDialogTrigger>
106
- * <AlertDialogPortal>...</AlertDialogPortal>
107
- * </AlertDialog>
108
- *
109
- * // Controlled
110
- * const [open, setOpen] = useState(false);
111
- * <AlertDialog open={open} onOpenChange={setOpen}>
112
- * ...
113
- * </AlertDialog>
114
- * ```
115
- */
116
- function AlertDialog({
117
- slots: _slots,
118
- config: _config,
119
- ...props
120
- }: IAlertDialogProps) {
121
- const [isOpen, setIsOpen] = useControlledState({
122
- value: props?.open,
123
- defaultValue: props?.defaultOpen,
124
- onChange: props?.onOpenChange,
125
- });
126
-
127
- return (
128
- <AlertDialogProvider value={{ isOpen, setIsOpen }}>
129
- <AlertDialogPrimitive.Root
130
- data-slot="alert-dialog"
131
- {...props}
132
- onOpenChange={setIsOpen}
133
- />
134
- </AlertDialogProvider>
135
- );
136
- }
137
-
138
- // ---------------------------------------------------------------------------
139
- // AlertDialogTrigger
140
- // ---------------------------------------------------------------------------
141
-
142
- /**
143
- * Button that opens the AlertDialog when clicked.
144
- * Renders as a button element by default.
145
- *
146
- * @param props - {@link IAlertDialogTriggerProps}
147
- * @returns The rendered trigger button
148
- *
149
- * @example
150
- * ```tsx
151
- * <AlertDialogTrigger className="bg-destructive text-destructive-foreground">
152
- * Delete Account
153
- * </AlertDialogTrigger>
154
- * ```
155
- */
156
- function AlertDialogTrigger({
157
- slots: _slots,
158
- ...props
159
- }: IAlertDialogTriggerProps) {
160
- return (
161
- <AlertDialogPrimitive.Trigger
162
- data-slot="alert-dialog-trigger"
163
- {...props}
164
- />
165
- );
166
- }
167
-
168
- // ---------------------------------------------------------------------------
169
- // AlertDialogPortal
170
- // ---------------------------------------------------------------------------
171
-
172
- /**
173
- * Portal wrapper that renders alert dialog content outside the DOM hierarchy.
174
- * Manages AnimatePresence for enter/exit animations of the backdrop and popup.
175
- *
176
- * The portal is automatically kept mounted for exit animations and only
177
- * renders its children when the dialog is open.
178
- *
179
- * @param props - {@link IAlertDialogPortalProps}
180
- * @returns The rendered portal with AnimatePresence
181
- *
182
- * @example
183
- * ```tsx
184
- * <AlertDialogPortal>
185
- * <AlertDialogBackdrop />
186
- * <AlertDialogPopup>...</AlertDialogPopup>
187
- * </AlertDialogPortal>
188
- * ```
189
- */
190
- function AlertDialogPortal(props: IAlertDialogPortalProps) {
191
- const { isOpen } = useAlertDialog();
192
-
193
- return (
194
- <AnimatePresence>
195
- {isOpen && (
196
- <AlertDialogPrimitive.Portal
197
- data-slot="alert-dialog-portal"
198
- keepMounted
199
- {...props}
200
- />
201
- )}
202
- </AnimatePresence>
203
- );
204
- }
205
-
206
- // ---------------------------------------------------------------------------
207
- // AlertDialogBackdrop
208
- // ---------------------------------------------------------------------------
209
-
210
- /**
211
- * Semi-transparent overlay behind the alert dialog.
212
- * Animates in with a fade and optional blur effect.
213
- *
214
- * @param props - {@link IAlertDialogBackdropProps}
215
- * @returns The rendered animated backdrop
216
- *
217
- * @example
218
- * ```tsx
219
- * // Default backdrop
220
- * <AlertDialogBackdrop />
221
- *
222
- * // Custom backdrop with blur
223
- * <AlertDialogBackdrop
224
- * className="bg-black/60 backdrop-blur-md"
225
- * transition={{ duration: 0.3 }}
226
- * />
227
- * ```
228
- */
229
- function AlertDialogBackdrop({
230
- transition = { duration: 0.2, ease: 'easeInOut' },
231
- slots,
232
- className,
233
- ...props
234
- }: IAlertDialogBackdropProps) {
235
- return (
236
- <AlertDialogPrimitive.Backdrop
237
- data-slot="alert-dialog-backdrop"
238
- render={
239
- <motion.div
240
- key="alert-dialog-backdrop"
241
- className={cn(
242
- AlertDialogStyles.backdrop,
243
- slots?.backdrop,
244
- className,
245
- )}
246
- initial={{ opacity: 0, filter: 'blur(4px)' }}
247
- animate={{ opacity: 1, filter: 'blur(0px)' }}
248
- exit={{ opacity: 0, filter: 'blur(4px)' }}
249
- transition={transition}
250
- {...(props as any)}
251
- />
252
- }
253
- />
254
- );
255
- }
256
-
257
- // ---------------------------------------------------------------------------
258
- // AlertDialogPopup
259
- // ---------------------------------------------------------------------------
260
-
261
- /**
262
- * Main dialog container with a 3D perspective flip animation.
263
- *
264
- * The `from` prop controls which direction the dialog flips from:
265
- * - `top` / `bottom` rotate around the X axis
266
- * - `left` / `right` rotate around the Y axis
267
- *
268
- * Uses spring physics for a natural, bouncy entrance.
269
- *
270
- * @param props - {@link IAlertDialogPopupProps}
271
- * @returns The rendered animated popup
272
- *
273
- * @example
274
- * ```tsx
275
- * // Flip from top (default)
276
- * <AlertDialogPopup>...</AlertDialogPopup>
277
- *
278
- * // Flip from bottom with custom spring
279
- * <AlertDialogPopup
280
- * from="bottom"
281
- * transition={{ type: 'spring', stiffness: 200, damping: 30 }}
282
- * >
283
- * ...
284
- * </AlertDialogPopup>
285
- * ```
286
- */
287
- function AlertDialogPopup({
288
- from = 'top',
289
- initialFocus,
290
- finalFocus,
291
- transition = { type: 'spring', stiffness: 150, damping: 25 },
292
- slots,
293
- className,
294
- ...props
295
- }: IAlertDialogPopupProps) {
296
- const initialRotation =
297
- from === 'bottom' || from === 'left' ? '20deg' : '-20deg';
298
- const isVertical = from === 'top' || from === 'bottom';
299
- const rotateAxis = isVertical ? 'rotateX' : 'rotateY';
300
-
301
- return (
302
- <AlertDialogPrimitive.Popup
303
- initialFocus={initialFocus}
304
- finalFocus={finalFocus}
305
- render={
306
- <motion.div
307
- key="alert-dialog-popup"
308
- data-slot="alert-dialog-popup"
309
- className={cn(AlertDialogStyles.popup, slots?.popup, className)}
310
- initial={{
311
- opacity: 0,
312
- filter: 'blur(4px)',
313
- transform: `perspective(500px) ${rotateAxis}(${initialRotation}) scale(0.8)`,
314
- }}
315
- animate={{
316
- opacity: 1,
317
- filter: 'blur(0px)',
318
- transform: `perspective(500px) ${rotateAxis}(0deg) scale(1)`,
319
- }}
320
- exit={{
321
- opacity: 0,
322
- filter: 'blur(4px)',
323
- transform: `perspective(500px) ${rotateAxis}(${initialRotation}) scale(0.8)`,
324
- }}
325
- transition={transition}
326
- {...(props as any)}
327
- />
328
- }
329
- />
330
- );
331
- }
332
-
333
- // ---------------------------------------------------------------------------
334
- // AlertDialogClose
335
- // ---------------------------------------------------------------------------
336
-
337
- /**
338
- * Button that closes the AlertDialog when clicked.
339
- * Typically used in the footer alongside a confirm action.
340
- *
341
- * @param props - {@link IAlertDialogCloseProps}
342
- * @returns The rendered close button
343
- *
344
- * @example
345
- * ```tsx
346
- * <AlertDialogClose className="border border-border px-4 py-2 rounded-md">
347
- * Cancel
348
- * </AlertDialogClose>
349
- * ```
350
- */
351
- function AlertDialogClose({
352
- slots,
353
- className,
354
- ...props
355
- }: IAlertDialogCloseProps) {
356
- return (
357
- <AlertDialogPrimitive.Close
358
- data-slot="alert-dialog-close"
359
- className={cn(AlertDialogStyles.close, slots?.close, className)}
360
- {...props}
361
- />
362
- );
363
- }
364
-
365
- // ---------------------------------------------------------------------------
366
- // AlertDialogHeader
367
- // ---------------------------------------------------------------------------
368
-
369
- /**
370
- * Layout wrapper for the dialog title and description.
371
- * Provides consistent spacing and text alignment.
372
- *
373
- * @param props - {@link IAlertDialogHeaderProps}
374
- * @returns The rendered header container
375
- *
376
- * @example
377
- * ```tsx
378
- * <AlertDialogHeader>
379
- * <AlertDialogTitle>Confirm Action</AlertDialogTitle>
380
- * <AlertDialogDescription>This cannot be undone.</AlertDialogDescription>
381
- * </AlertDialogHeader>
382
- * ```
383
- */
384
- function AlertDialogHeader({
385
- slots,
386
- className,
387
- ...props
388
- }: IAlertDialogHeaderProps) {
389
- return (
390
- <div
391
- data-slot="alert-dialog-header"
392
- className={cn(AlertDialogStyles.header, slots?.header, className)}
393
- {...props}
394
- />
395
- );
396
- }
397
-
398
- // ---------------------------------------------------------------------------
399
- // AlertDialogFooter
400
- // ---------------------------------------------------------------------------
401
-
402
- /**
403
- * Layout wrapper for dialog action buttons.
404
- * Uses responsive flex layout: column on mobile, row on desktop.
405
- *
406
- * @param props - {@link IAlertDialogFooterProps}
407
- * @returns The rendered footer container
408
- *
409
- * @example
410
- * ```tsx
411
- * <AlertDialogFooter>
412
- * <AlertDialogClose>Cancel</AlertDialogClose>
413
- * <Button variant="destructive" onClick={handleDelete}>
414
- * Delete
415
- * </Button>
416
- * </AlertDialogFooter>
417
- * ```
418
- */
419
- function AlertDialogFooter({
420
- slots,
421
- className,
422
- ...props
423
- }: IAlertDialogFooterProps) {
424
- return (
425
- <div
426
- data-slot="alert-dialog-footer"
427
- className={cn(AlertDialogStyles.footer, slots?.footer, className)}
428
- {...props}
429
- />
430
- );
431
- }
432
-
433
- // ---------------------------------------------------------------------------
434
- // AlertDialogTitle
435
- // ---------------------------------------------------------------------------
436
-
437
- /**
438
- * Title element for the AlertDialog.
439
- * Automatically associated with the dialog for accessibility via Base UI.
440
- *
441
- * @param props - {@link IAlertDialogTitleProps}
442
- * @returns The rendered title element
443
- *
444
- * @example
445
- * ```tsx
446
- * <AlertDialogTitle className="text-destructive">
447
- * Delete Workspace
448
- * </AlertDialogTitle>
449
- * ```
450
- */
451
- function AlertDialogTitle({
452
- slots,
453
- className,
454
- ...props
455
- }: IAlertDialogTitleProps) {
456
- return (
457
- <AlertDialogPrimitive.Title
458
- data-slot="alert-dialog-title"
459
- className={cn(AlertDialogStyles.title, slots?.title, className)}
460
- {...props}
461
- />
462
- );
463
- }
464
-
465
- // ---------------------------------------------------------------------------
466
- // AlertDialogDescription
467
- // ---------------------------------------------------------------------------
468
-
469
- /**
470
- * Description element for the AlertDialog.
471
- * Provides additional context about the action being confirmed.
472
- * Automatically associated with the dialog for accessibility via Base UI.
473
- *
474
- * @param props - {@link IAlertDialogDescriptionProps}
475
- * @returns The rendered description element
476
- *
477
- * @example
478
- * ```tsx
479
- * <AlertDialogDescription>
480
- * This will permanently delete the workspace and all associated data.
481
- * This action cannot be undone.
482
- * </AlertDialogDescription>
483
- * ```
484
- */
485
- function AlertDialogDescription({
486
- slots,
487
- className,
488
- ...props
489
- }: IAlertDialogDescriptionProps) {
490
- return (
491
- <AlertDialogPrimitive.Description
492
- data-slot="alert-dialog-description"
493
- className={cn(
494
- AlertDialogStyles.description,
495
- slots?.description,
496
- className,
497
- )}
498
- {...props}
499
- />
500
- );
501
- }
502
-
503
- // ---------------------------------------------------------------------------
504
- // Exports
505
- // ---------------------------------------------------------------------------
506
-
507
- export {
508
- AlertDialog,
509
- AlertDialogPortal,
510
- AlertDialogBackdrop,
511
- AlertDialogClose,
512
- AlertDialogTrigger,
513
- AlertDialogPopup,
514
- AlertDialogHeader,
515
- AlertDialogFooter,
516
- AlertDialogTitle,
517
- AlertDialogDescription,
518
- useAlertDialog,
519
- };
520
-
521
- // Re-export types
522
- export type {
523
- IAlertDialogProps,
524
- IAlertDialogTriggerProps,
525
- IAlertDialogPortalProps,
526
- IAlertDialogCloseProps,
527
- IAlertDialogBackdropProps,
528
- IAlertDialogPopupProps,
529
- IAlertDialogHeaderProps,
530
- IAlertDialogFooterProps,
531
- IAlertDialogTitleProps,
532
- IAlertDialogDescriptionProps,
533
- IAlertDialogConfig,
534
- AlertDialogSlot,
535
- AlertDialogContextType,
536
- AlertDialogFlipDirection,
537
- } from './AlertDialog.types';
538
-
539
- // Re-export styles
540
- export { AlertDialogStyles } from './AlertDialog.styles';
@@ -1,43 +0,0 @@
1
- import { cva } from 'class-variance-authority';
2
- import type { StyleSlots } from '@/core/types';
3
-
4
- /** Visual regions for the Badge component. */
5
- type BadgeSlot = 'root';
6
-
7
- const badgeStyles: StyleSlots<BadgeSlot> = {
8
- root: 'inline-flex items-center justify-center rounded-full border font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',
9
- };
10
-
11
- /**
12
- * CVA variants for the Badge root.
13
- *
14
- * @see {@link https://cva.style/docs/getting-started/variants}
15
- */
16
- const badgeVariants = cva(
17
- 'inline-flex items-center justify-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',
18
- {
19
- variants: {
20
- variant: {
21
- default:
22
- 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',
23
- secondary:
24
- 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
25
- destructive:
26
- 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',
27
- outline: 'text-foreground',
28
- },
29
- size: {
30
- default: 'h-6 px-2.5 py-0.5',
31
- sm: 'h-5 px-2 text-[10px]',
32
- lg: 'h-7 px-3 text-sm',
33
- },
34
- },
35
- defaultVariants: {
36
- variant: 'default',
37
- size: 'default',
38
- },
39
- },
40
- );
41
-
42
- export { badgeStyles, badgeVariants };
43
- export type { BadgeSlot };
@@ -1,26 +0,0 @@
1
- import type { VariantProps } from 'class-variance-authority';
2
- import type { SlotOverrides } from '@/core/types';
3
- import type { badgeVariants, BadgeSlot } from './Badge.styles';
4
-
5
- /**
6
- * Props for the Badge component.
7
- *
8
- * @example
9
- * ```tsx
10
- * <Badge variant="secondary" size="sm">New</Badge>
11
- * ```
12
- */
13
- interface IBadgeProps
14
- extends React.HTMLAttributes<HTMLDivElement>,
15
- VariantProps<typeof badgeVariants> {
16
- /** Override classes for badge visual regions. */
17
- slots?: SlotOverrides<BadgeSlot>;
18
- }
19
-
20
- /** Available badge variants. */
21
- type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline';
22
-
23
- /** Available badge sizes. */
24
- type BadgeSize = 'default' | 'sm' | 'lg';
25
-
26
- export type { IBadgeProps, BadgeVariant, BadgeSize };
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { cn } from '@/react-ui/lib/utils';
4
- import { badgeVariants } from './Badge.styles';
5
- import type { IBadgeProps } from './Badge.types';
6
-
7
- /**
8
- * Badge — displays status labels, categories, or indicators.
9
- *
10
- * @param variant - Visual style: 'default', 'secondary', 'destructive', 'outline'
11
- * @param size - Badge size: 'default', 'sm', 'lg'
12
- * @param slots - Override classes for badge visual regions
13
- *
14
- * @example
15
- * ```tsx
16
- * <Badge variant="secondary">New</Badge>
17
- * <Badge variant="destructive" size="sm">Error</Badge>
18
- * ```
19
- */
20
- function Badge({ className, variant, size, slots, ...props }: IBadgeProps) {
21
- return (
22
- <div
23
- data-slot="badge"
24
- data-variant={variant}
25
- data-size={size}
26
- className={cn(badgeVariants({ variant, size }), slots?.root, className)}
27
- {...props}
28
- />
29
- );
30
- }
31
-
32
- export { Badge, badgeVariants };
33
- export type { IBadgeProps, BadgeVariant, BadgeSize } from './Badge.types';
34
- export type { BadgeSlot } from './Badge.styles';
@@ -1,57 +0,0 @@
1
- import { cva } from 'class-variance-authority';
2
- import type { StyleSlots } from '@/core/types';
3
-
4
- /** Visual regions for the Button component. */
5
- type ButtonSlot = 'root';
6
-
7
- const buttonStyles: StyleSlots<ButtonSlot> = {
8
- root: 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',
9
- };
10
-
11
- /**
12
- * CVA variants for the Button root.
13
- *
14
- * @see {@link https://cva.style/docs/getting-started/variants}
15
- */
16
- const buttonVariants = cva(
17
- 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 active:scale-[0.98]',
18
- {
19
- variants: {
20
- variant: {
21
- default:
22
- 'bg-primary text-primary-foreground hover:bg-primary/90',
23
- secondary:
24
- 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
25
- destructive:
26
- 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
27
- outline:
28
- 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
29
- ghost: 'hover:bg-accent hover:text-accent-foreground',
30
- link: 'text-primary underline-offset-4 hover:underline',
31
- success:
32
- 'bg-emerald-600 text-white hover:bg-emerald-700 focus-visible:ring-emerald-600',
33
- warning:
34
- 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-500',
35
- },
36
- size: {
37
- default: 'h-10 px-4 py-2',
38
- sm: 'h-9 rounded-md px-3 text-xs',
39
- lg: 'h-11 rounded-md px-8 text-base',
40
- icon: 'h-10 w-10 p-0',
41
- },
42
- },
43
- defaultVariants: {
44
- variant: 'default',
45
- size: 'default',
46
- },
47
- },
48
- );
49
-
50
- /** State-specific style classes for Button. */
51
- const buttonStateStyles = {
52
- pressed: 'scale-[0.98]',
53
- disabled: 'opacity-50 pointer-events-none',
54
- };
55
-
56
- export { buttonStyles, buttonVariants, buttonStateStyles };
57
- export type { ButtonSlot };