@mks2508/mks-ui 0.5.7 → 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 +2 -0
  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 +1 -1
  4. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -1
  5. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +173 -43
  6. package/dist/react-ui/ui/DynamicToggle/{DynamicToggle-DOR3Ld-k.css → DynamicToggle-DJLwEkHr.css} +12 -19
  7. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +12 -20
  8. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +1 -0
  9. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -1
  10. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +7 -1
  11. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +55 -31
  12. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -1
  13. package/dist/react-ui/ui/DynamicToggle/index.d.ts +9 -3
  14. package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -1
  15. package/dist/react-ui/ui/DynamicToggle/index.js +47 -34
  16. package/package.json +52 -13
  17. package/src/assets/react.svg +0 -1
  18. package/src/core/index.ts +0 -7
  19. package/src/core/types.ts +0 -82
  20. package/src/css.d.ts +0 -7
  21. package/src/index.css +0 -129
  22. package/src/index.ts +0 -29
  23. package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +0 -278
  24. package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +0 -97
  25. package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +0 -155
  26. package/src/react-ui/blocks/Terminal/Terminal.theme.ts +0 -80
  27. package/src/react-ui/blocks/Terminal/Terminal.types.ts +0 -438
  28. package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +0 -38
  29. package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +0 -254
  30. package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +0 -73
  31. package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +0 -269
  32. package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +0 -326
  33. package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +0 -230
  34. package/src/react-ui/blocks/Terminal/XTermAdapter.ts +0 -163
  35. package/src/react-ui/blocks/Terminal/chrome.ts +0 -25
  36. package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +0 -316
  37. package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +0 -218
  38. package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +0 -386
  39. package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +0 -67
  40. package/src/react-ui/blocks/Terminal/components/index.ts +0 -10
  41. package/src/react-ui/blocks/Terminal/display.ts +0 -46
  42. package/src/react-ui/blocks/Terminal/hooks/index.ts +0 -22
  43. package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +0 -229
  44. package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +0 -292
  45. package/src/react-ui/blocks/Terminal/index.ts +0 -111
  46. package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +0 -330
  47. package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +0 -242
  48. package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +0 -202
  49. package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +0 -140
  50. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +0 -68
  51. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +0 -85
  52. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +0 -383
  53. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +0 -439
  54. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +0 -550
  55. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +0 -259
  56. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +0 -75
  57. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +0 -266
  58. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +0 -82
  59. package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +0 -112
  60. package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +0 -178
  61. package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +0 -203
  62. package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +0 -252
  63. package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +0 -334
  64. package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +0 -261
  65. package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +0 -248
  66. package/src/react-ui/blocks/Terminal/panel/index.ts +0 -72
  67. package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +0 -59
  68. package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +0 -59
  69. package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +0 -180
  70. package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +0 -248
  71. package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +0 -283
  72. package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +0 -686
  73. package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +0 -466
  74. package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +0 -343
  75. package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +0 -167
  76. package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +0 -348
  77. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +0 -251
  78. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +0 -390
  79. package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +0 -320
  80. package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +0 -20
  81. package/src/react-ui/blocks/Terminal/parsing/index.ts +0 -69
  82. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +0 -68
  83. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +0 -436
  84. package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +0 -14
  85. package/src/react-ui/blocks/index.ts +0 -11
  86. package/src/react-ui/components/MorphingPopover/MorphingPopover.types.ts +0 -49
  87. package/src/react-ui/components/MorphingPopover/index.tsx +0 -186
  88. package/src/react-ui/components/MorphingPopover/morphing-popover.module.css +0 -153
  89. package/src/react-ui/components/index.ts +0 -9
  90. package/src/react-ui/hooks/Animation/UseAutoHeight.tsx +0 -123
  91. package/src/react-ui/hooks/DOM/UseIsInView.tsx +0 -44
  92. package/src/react-ui/hooks/Formatting/UseListFormat.ts +0 -134
  93. package/src/react-ui/hooks/State/UseControlledState.tsx +0 -57
  94. package/src/react-ui/hooks/State/UseDataState.tsx +0 -76
  95. package/src/react-ui/hooks/index.ts +0 -20
  96. package/src/react-ui/icons/index.ts +0 -12
  97. package/src/react-ui/icons/lucide-animated/activity.tsx +0 -109
  98. package/src/react-ui/icons/lucide-animated/arrow-down-to-line.tsx +0 -51
  99. package/src/react-ui/icons/lucide-animated/arrow-up.tsx +0 -50
  100. package/src/react-ui/icons/lucide-animated/bell-electric.tsx +0 -124
  101. package/src/react-ui/icons/lucide-animated/bell.tsx +0 -93
  102. package/src/react-ui/icons/lucide-animated/bot.tsx +0 -122
  103. package/src/react-ui/icons/lucide-animated/box.tsx +0 -117
  104. package/src/react-ui/icons/lucide-animated/check.tsx +0 -21
  105. package/src/react-ui/icons/lucide-animated/circle-check.tsx +0 -107
  106. package/src/react-ui/icons/lucide-animated/delete.tsx +0 -133
  107. package/src/react-ui/icons/lucide-animated/download.tsx +0 -99
  108. package/src/react-ui/icons/lucide-animated/edit-2.tsx +0 -21
  109. package/src/react-ui/icons/lucide-animated/globe.tsx +0 -23
  110. package/src/react-ui/icons/lucide-animated/home.tsx +0 -103
  111. package/src/react-ui/icons/lucide-animated/index.ts +0 -38
  112. package/src/react-ui/icons/lucide-animated/layers.tsx +0 -23
  113. package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +0 -143
  114. package/src/react-ui/icons/lucide-animated/list.tsx +0 -54
  115. package/src/react-ui/icons/lucide-animated/package.tsx +0 -24
  116. package/src/react-ui/icons/lucide-animated/palette.tsx +0 -25
  117. package/src/react-ui/icons/lucide-animated/plus.tsx +0 -92
  118. package/src/react-ui/icons/lucide-animated/refresh-cw.tsx +0 -24
  119. package/src/react-ui/icons/lucide-animated/rocket.tsx +0 -24
  120. package/src/react-ui/icons/lucide-animated/save.tsx +0 -23
  121. package/src/react-ui/icons/lucide-animated/search.tsx +0 -94
  122. package/src/react-ui/icons/lucide-animated/settings.tsx +0 -92
  123. package/src/react-ui/icons/lucide-animated/terminal.tsx +0 -46
  124. package/src/react-ui/icons/lucide-animated/trash-2.tsx +0 -25
  125. package/src/react-ui/icons/lucide-animated/trending-down.tsx +0 -151
  126. package/src/react-ui/icons/lucide-animated/trending-up.tsx +0 -150
  127. package/src/react-ui/icons/lucide-animated/type.tsx +0 -23
  128. package/src/react-ui/icons/lucide-animated/upload.tsx +0 -23
  129. package/src/react-ui/icons/lucide-animated/x.tsx +0 -102
  130. package/src/react-ui/index.ts +0 -30
  131. package/src/react-ui/lib/get-strict-context.tsx +0 -56
  132. package/src/react-ui/lib/icon-wrapper.tsx +0 -70
  133. package/src/react-ui/lib/index.ts +0 -9
  134. package/src/react-ui/lib/utils.ts +0 -24
  135. package/src/react-ui/primitives/AutoHeight/index.tsx +0 -74
  136. package/src/react-ui/primitives/CountingNumber/index.tsx +0 -147
  137. package/src/react-ui/primitives/Highlight/Highlight.types.ts +0 -136
  138. package/src/react-ui/primitives/Highlight/index.tsx +0 -577
  139. package/src/react-ui/primitives/Slot/index.tsx +0 -128
  140. package/src/react-ui/primitives/index.ts +0 -16
  141. package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +0 -141
  142. package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +0 -217
  143. package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +0 -77
  144. package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +0 -58
  145. package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +0 -253
  146. package/src/react-ui/primitives/waapi/Gooey/index.ts +0 -50
  147. package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +0 -48
  148. package/src/react-ui/primitives/waapi/Morph/Morph.types.ts +0 -106
  149. package/src/react-ui/primitives/waapi/Morph/MorphContext.tsx +0 -21
  150. package/src/react-ui/primitives/waapi/Morph/index.tsx +0 -56
  151. package/src/react-ui/primitives/waapi/Morph/techniques/index.ts +0 -12
  152. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +0 -89
  153. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +0 -176
  154. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +0 -87
  155. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +0 -101
  156. package/src/react-ui/primitives/waapi/Reorder/Reorder.types.ts +0 -177
  157. package/src/react-ui/primitives/waapi/Reorder/index.tsx +0 -260
  158. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +0 -47
  159. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +0 -209
  160. package/src/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.ts +0 -104
  161. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.ts +0 -14
  162. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.ts +0 -84
  163. package/src/react-ui/primitives/waapi/SlidingNumber/index.tsx +0 -474
  164. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.styles.ts +0 -32
  165. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.types.ts +0 -69
  166. package/src/react-ui/primitives/waapi/SlidingText/index.tsx +0 -140
  167. package/src/react-ui/primitives/waapi/core/animationConstants.ts +0 -215
  168. package/src/react-ui/primitives/waapi/core/index.ts +0 -53
  169. package/src/react-ui/primitives/waapi/core/types.ts +0 -200
  170. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +0 -430
  171. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +0 -81
  172. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +0 -138
  173. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +0 -106
  174. package/src/react-ui/primitives/waapi/index.ts +0 -139
  175. package/src/react-ui/styles/animations.css +0 -369
  176. package/src/react-ui/ui/Accordion/Accordion.styles.ts +0 -72
  177. package/src/react-ui/ui/Accordion/Accordion.types.ts +0 -199
  178. package/src/react-ui/ui/Accordion/index.tsx +0 -362
  179. package/src/react-ui/ui/AlertDialog/AlertDialog.styles.ts +0 -38
  180. package/src/react-ui/ui/AlertDialog/AlertDialog.types.ts +0 -296
  181. package/src/react-ui/ui/AlertDialog/index.tsx +0 -540
  182. package/src/react-ui/ui/Badge/Badge.styles.ts +0 -43
  183. package/src/react-ui/ui/Badge/Badge.types.ts +0 -26
  184. package/src/react-ui/ui/Badge/index.tsx +0 -34
  185. package/src/react-ui/ui/Button/Button.styles.ts +0 -57
  186. package/src/react-ui/ui/Button/Button.types.ts +0 -63
  187. package/src/react-ui/ui/Button/index.tsx +0 -155
  188. package/src/react-ui/ui/Card/Card.styles.ts +0 -32
  189. package/src/react-ui/ui/Card/Card.types.ts +0 -39
  190. package/src/react-ui/ui/Card/index.tsx +0 -130
  191. package/src/react-ui/ui/Checkbox/Checkbox.styles.ts +0 -40
  192. package/src/react-ui/ui/Checkbox/Checkbox.types.ts +0 -98
  193. package/src/react-ui/ui/Checkbox/index.tsx +0 -233
  194. package/src/react-ui/ui/Combobox/Combobox.styles.ts +0 -34
  195. package/src/react-ui/ui/Combobox/Combobox.types.ts +0 -89
  196. package/src/react-ui/ui/Combobox/index.tsx +0 -331
  197. package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +0 -38
  198. package/src/react-ui/ui/CornerBracket/CornerBracket.types.ts +0 -15
  199. package/src/react-ui/ui/CornerBracket/index.tsx +0 -49
  200. package/src/react-ui/ui/DataCard/DataCard.styles.ts +0 -94
  201. package/src/react-ui/ui/DataCard/DataCard.types.ts +0 -125
  202. package/src/react-ui/ui/DataCard/index.tsx +0 -340
  203. package/src/react-ui/ui/Dialog/Dialog.styles.ts +0 -59
  204. package/src/react-ui/ui/Dialog/Dialog.types.ts +0 -284
  205. package/src/react-ui/ui/Dialog/index.tsx +0 -452
  206. package/src/react-ui/ui/DropdownMenu/DropdownMenu.styles.ts +0 -35
  207. package/src/react-ui/ui/DropdownMenu/DropdownMenu.types.ts +0 -81
  208. package/src/react-ui/ui/DropdownMenu/index.tsx +0 -300
  209. package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +0 -376
  210. package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +0 -85
  211. package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +0 -180
  212. package/src/react-ui/ui/DynamicToggle/index.tsx +0 -316
  213. package/src/react-ui/ui/DynamicToggle/prototype-v7-ios.html +0 -413
  214. package/src/react-ui/ui/DynamicToggle/prototype-v7.html +0 -615
  215. package/src/react-ui/ui/DynamicToggle/prototype-v8-gooey-safari.html +0 -560
  216. package/src/react-ui/ui/DynamicToggle/prototype-v8b-react-structure.html +0 -227
  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 };