flikkui 0.2.0-beta.2 → 0.2.0-beta.4

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 (214) hide show
  1. package/dist/components/ai/PromptInput/PromptInput.js +23 -15
  2. package/dist/components/ai/PromptSuggestions/PromptSuggestion.d.ts +27 -0
  3. package/dist/components/ai/PromptSuggestions/PromptSuggestion.js +62 -0
  4. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.d.ts +10 -0
  5. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +12 -0
  6. package/dist/components/ai/PromptSuggestions/PromptSuggestion.types.d.ts +53 -0
  7. package/dist/components/ai/PromptSuggestions/index.d.ts +4 -2
  8. package/dist/components/ai/index.d.ts +2 -12
  9. package/dist/components/charts/ActivityRings/ActivityRings.js +70 -58
  10. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +0 -1
  11. package/dist/components/charts/ActivityRings/ActivityRings.types.d.ts +17 -0
  12. package/dist/components/charts/BarChart/BarChart.js +8 -4
  13. package/dist/components/charts/BarChart/BarChart.types.d.ts +14 -0
  14. package/dist/components/charts/DonutChart/DonutChart.js +11 -8
  15. package/dist/components/charts/DonutChart/DonutChart.theme.d.ts +3 -0
  16. package/dist/components/charts/DonutChart/DonutChart.theme.js +5 -4
  17. package/dist/components/charts/DonutChart/donut-utils.d.ts +5 -0
  18. package/dist/components/charts/DonutChart/donut-utils.js +26 -1
  19. package/dist/components/charts/Heatmap/Heatmap.theme.js +2 -2
  20. package/dist/components/charts/shared/ChartAxis/XAxis.d.ts +2 -2
  21. package/dist/components/charts/shared/ChartAxis/XAxis.js +4 -4
  22. package/dist/components/charts/shared/ChartAxis/YAxis.d.ts +2 -2
  23. package/dist/components/charts/shared/ChartAxis/YAxis.js +8 -7
  24. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +1 -1
  25. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +2 -2
  26. package/dist/components/charts/theme/chart.theme.d.ts +1 -1
  27. package/dist/components/charts/theme/chart.theme.js +39 -39
  28. package/dist/components/core/Accordion/Accordion.d.ts +1 -1
  29. package/dist/components/core/Accordion/Accordion.js +2 -2
  30. package/dist/components/core/Accordion/Accordion.types.d.ts +8 -0
  31. package/dist/components/core/Badge/Badge.js +11 -15
  32. package/dist/components/core/Badge/Badge.theme.js +7 -21
  33. package/dist/components/core/Badge/Badge.types.d.ts +9 -1
  34. package/dist/components/core/Button/Button.js +2 -2
  35. package/dist/components/core/Button/Button.theme.js +1 -1
  36. package/dist/components/core/Button/Button.types.d.ts +8 -0
  37. package/dist/components/core/Card/Card.js +8 -2
  38. package/dist/components/core/Card/Card.theme.js +1 -1
  39. package/dist/components/core/Card/Card.types.d.ts +24 -1
  40. package/dist/components/core/Drawer/Drawer.d.ts +1 -1
  41. package/dist/components/core/Drawer/Drawer.js +10 -40
  42. package/dist/components/core/Drawer/Drawer.theme.js +2 -1
  43. package/dist/components/core/Drawer/Drawer.types.d.ts +8 -0
  44. package/dist/components/core/Dropdown/Dropdown.d.ts +1 -1
  45. package/dist/components/core/Dropdown/Dropdown.js +2 -2
  46. package/dist/components/core/Dropdown/Dropdown.types.d.ts +8 -0
  47. package/dist/components/core/Metric/Metric.d.ts +1 -1
  48. package/dist/components/core/Metric/Metric.js +9 -5
  49. package/dist/components/core/Metric/Metric.theme.d.ts +1 -1
  50. package/dist/components/core/Metric/Metric.theme.js +38 -28
  51. package/dist/components/core/Metric/Metric.types.d.ts +27 -8
  52. package/dist/components/core/Modal/Modal.d.ts +1 -1
  53. package/dist/components/core/Modal/Modal.js +17 -40
  54. package/dist/components/core/Modal/Modal.theme.js +8 -3
  55. package/dist/components/core/Modal/Modal.types.d.ts +18 -0
  56. package/dist/components/core/Modal/index.d.ts +1 -1
  57. package/dist/components/core/Notification/Notification.js +2 -0
  58. package/dist/components/core/Pill/Pill.d.ts +6 -11
  59. package/dist/components/core/Pill/Pill.theme.d.ts +2 -2
  60. package/dist/components/core/Pill/Pill.types.d.ts +9 -22
  61. package/dist/components/core/Pill/index.d.ts +1 -1
  62. package/dist/components/core/Popover/Popover.d.ts +1 -1
  63. package/dist/components/core/Popover/Popover.js +2 -2
  64. package/dist/components/core/Popover/Popover.types.d.ts +8 -0
  65. package/dist/components/core/Progress/Progress.d.ts +28 -0
  66. package/dist/components/core/Progress/Progress.js +114 -0
  67. package/dist/components/core/Progress/Progress.theme.d.ts +5 -0
  68. package/dist/components/core/Progress/Progress.theme.js +33 -0
  69. package/dist/components/core/Progress/Progress.types.d.ts +92 -0
  70. package/dist/components/core/Progress/index.d.ts +2 -0
  71. package/dist/components/core/Tabs/Tabs.js +2 -2
  72. package/dist/components/core/Tabs/Tabs.types.d.ts +8 -0
  73. package/dist/components/core/Tag/Tag.animations.d.ts +3 -0
  74. package/dist/components/core/Tag/Tag.animations.js +31 -0
  75. package/dist/components/core/Tag/Tag.d.ts +14 -0
  76. package/dist/components/core/Tag/Tag.js +45 -0
  77. package/dist/components/core/Tag/Tag.theme.d.ts +2 -0
  78. package/dist/components/core/Tag/Tag.theme.js +21 -0
  79. package/dist/components/core/Tag/Tag.types.d.ts +40 -0
  80. package/dist/components/core/Tag/index.d.ts +3 -0
  81. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  82. package/dist/components/core/Tooltip/Tooltip.js +3 -3
  83. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
  84. package/dist/components/core/Tooltip/Tooltip.types.d.ts +17 -0
  85. package/dist/components/core/index.d.ts +2 -1
  86. package/dist/components/core/index.js +3 -2
  87. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +0 -13
  88. package/dist/components/effects/CustomCursor/CustomCursor.js +26 -2
  89. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +12 -1
  90. package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +14 -1
  91. package/dist/components/forms/Combobox/Combobox.d.ts +25 -0
  92. package/dist/components/forms/Combobox/Combobox.js +412 -0
  93. package/dist/components/forms/Combobox/Combobox.theme.d.ts +6 -0
  94. package/dist/components/forms/Combobox/Combobox.theme.js +60 -0
  95. package/dist/components/forms/Combobox/Combobox.types.d.ts +111 -0
  96. package/dist/components/forms/Combobox/index.d.ts +3 -0
  97. package/dist/components/forms/FileUpload/FileUpload.js +2 -0
  98. package/dist/components/forms/Input/Input.js +25 -28
  99. package/dist/components/forms/Input/inputMasks.d.ts +15 -0
  100. package/dist/components/forms/Input/inputMasks.js +72 -1
  101. package/dist/components/forms/InputTag/InputTag.d.ts +40 -0
  102. package/dist/components/forms/InputTag/InputTag.js +491 -0
  103. package/dist/components/forms/InputTag/InputTag.theme.d.ts +2 -0
  104. package/dist/components/forms/InputTag/InputTag.theme.js +16 -0
  105. package/dist/components/forms/InputTag/InputTag.types.d.ts +107 -0
  106. package/dist/components/forms/InputTag/index.d.ts +3 -0
  107. package/dist/components/forms/Select/Select.d.ts +101 -2
  108. package/dist/components/forms/Select/Select.js +128 -132
  109. package/dist/components/forms/Select/Select.theme.js +10 -14
  110. package/dist/components/forms/Select/Select.types.d.ts +6 -2
  111. package/dist/components/forms/Select/index.d.ts +7 -4
  112. package/dist/components/forms/Select/useSelectState.d.ts +66 -0
  113. package/dist/components/forms/Select/useSelectState.js +134 -0
  114. package/dist/components/forms/SelectExpand/SelectExpand.animations.d.ts +20 -0
  115. package/dist/components/forms/SelectExpand/SelectExpand.animations.js +74 -0
  116. package/dist/components/forms/SelectExpand/SelectExpand.d.ts +9 -0
  117. package/dist/components/forms/SelectExpand/SelectExpand.js +223 -0
  118. package/dist/components/forms/SelectExpand/SelectExpand.theme.d.ts +5 -0
  119. package/dist/components/forms/SelectExpand/SelectExpand.theme.js +74 -0
  120. package/dist/components/forms/SelectExpand/SelectExpand.types.d.ts +126 -0
  121. package/dist/components/forms/SelectExpand/index.d.ts +4 -0
  122. package/dist/components/forms/Switch/Switch.js +3 -3
  123. package/dist/components/forms/Switch/Switch.theme.d.ts +1 -1
  124. package/dist/components/forms/Switch/Switch.theme.js +2 -2
  125. package/dist/components/forms/TimePicker/TimePicker.animations.d.ts +0 -46
  126. package/dist/components/forms/TimePicker/TimePicker.d.ts +15 -6
  127. package/dist/components/forms/TimePicker/TimePicker.js +285 -124
  128. package/dist/components/forms/TimePicker/TimePicker.theme.d.ts +1 -1
  129. package/dist/components/forms/TimePicker/TimePicker.theme.js +39 -22
  130. package/dist/components/forms/TimePicker/TimePicker.types.d.ts +88 -34
  131. package/dist/components/forms/TimePicker/TimePickerContent.d.ts +7 -10
  132. package/dist/components/forms/TimePicker/TimePickerContent.js +149 -16
  133. package/dist/components/forms/TimePicker/TimePickerTrigger.d.ts +3 -3
  134. package/dist/components/forms/TimePicker/TimePickerTrigger.js +22 -19
  135. package/dist/components/forms/TimePicker/WheelColumn.d.ts +14 -0
  136. package/dist/components/forms/TimePicker/WheelColumn.js +90 -0
  137. package/dist/components/forms/TimePicker/index.d.ts +4 -1
  138. package/dist/components/forms/TimePicker/useWheelPicker.d.ts +37 -0
  139. package/dist/components/forms/TimePicker/useWheelPicker.js +138 -0
  140. package/dist/components/forms/forms.theme.d.ts +14 -0
  141. package/dist/components/forms/forms.theme.js +31 -0
  142. package/dist/components/forms/index.d.ts +9 -3
  143. package/dist/components/forms/index.js +73 -2
  144. package/dist/hooks/index.d.ts +0 -4
  145. package/dist/icons/Icon.d.ts +7 -0
  146. package/dist/icons/Icon.js +6 -2
  147. package/dist/index.js +12 -16
  148. package/dist/styles.css +1 -1
  149. package/dist/utils/index.d.ts +0 -1
  150. package/dist/utils/optimisticErrors.js +1 -70
  151. package/package.json +1 -1
  152. package/dist/components/ai/EditingIndicator/EditingIndicator.animations.d.ts +0 -31
  153. package/dist/components/ai/EditingIndicator/EditingIndicator.animations.js +0 -115
  154. package/dist/components/ai/EditingIndicator/EditingIndicator.d.ts +0 -35
  155. package/dist/components/ai/EditingIndicator/EditingIndicator.js +0 -94
  156. package/dist/components/ai/EditingIndicator/EditingIndicator.theme.d.ts +0 -2
  157. package/dist/components/ai/EditingIndicator/EditingIndicator.theme.js +0 -13
  158. package/dist/components/ai/EditingIndicator/EditingIndicator.types.d.ts +0 -54
  159. package/dist/components/ai/EditingIndicator/index.d.ts +0 -9
  160. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.d.ts +0 -3
  161. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.js +0 -126
  162. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.d.ts +0 -2
  163. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.js +0 -8
  164. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.types.d.ts +0 -45
  165. package/dist/components/ai/GenerativeRenderer/index.d.ts +0 -3
  166. package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.d.ts +0 -17
  167. package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.js +0 -56
  168. package/dist/components/ai/PresenceIndicator/PresenceIndicator.d.ts +0 -38
  169. package/dist/components/ai/PresenceIndicator/PresenceIndicator.js +0 -110
  170. package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.d.ts +0 -2
  171. package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.js +0 -13
  172. package/dist/components/ai/PresenceIndicator/PresenceIndicator.types.d.ts +0 -53
  173. package/dist/components/ai/PresenceIndicator/index.d.ts +0 -8
  174. package/dist/components/ai/PresenceProvider/PresenceContext.d.ts +0 -24
  175. package/dist/components/ai/PresenceProvider/PresenceContext.js +0 -34
  176. package/dist/components/ai/PresenceProvider/PresenceProvider.d.ts +0 -32
  177. package/dist/components/ai/PresenceProvider/PresenceProvider.js +0 -321
  178. package/dist/components/ai/PresenceProvider/PresenceProvider.types.d.ts +0 -140
  179. package/dist/components/ai/PresenceProvider/adapters/MockAdapter.d.ts +0 -102
  180. package/dist/components/ai/PresenceProvider/adapters/MockAdapter.js +0 -331
  181. package/dist/components/ai/PresenceProvider/adapters/PresenceAdapter.d.ts +0 -93
  182. package/dist/components/ai/PresenceProvider/adapters/SupabaseAdapter.d.ts +0 -134
  183. package/dist/components/ai/PresenceProvider/adapters/WebSocketAdapter.d.ts +0 -149
  184. package/dist/components/ai/PresenceProvider/adapters/index.d.ts +0 -11
  185. package/dist/components/ai/PresenceProvider/index.d.ts +0 -10
  186. package/dist/components/ai/PromptSuggestions/PromptSuggestions.d.ts +0 -27
  187. package/dist/components/ai/PromptSuggestions/PromptSuggestions.js +0 -61
  188. package/dist/components/ai/PromptSuggestions/PromptSuggestions.types.d.ts +0 -65
  189. package/dist/components/ai/VersionSlider/VersionSlider.d.ts +0 -3
  190. package/dist/components/ai/VersionSlider/VersionSlider.js +0 -97
  191. package/dist/components/ai/VersionSlider/VersionSlider.theme.d.ts +0 -2
  192. package/dist/components/ai/VersionSlider/VersionSlider.theme.js +0 -18
  193. package/dist/components/ai/VersionSlider/VersionSlider.types.d.ts +0 -77
  194. package/dist/components/ai/VersionSlider/index.d.ts +0 -3
  195. package/dist/components/core/Pill/Pill.animations.js +0 -25
  196. package/dist/components/core/Pill/Pill.js +0 -145
  197. package/dist/components/core/Pill/Pill.theme.js +0 -65
  198. package/dist/components/core/RetryBoundary/RetryBoundary.d.ts +0 -35
  199. package/dist/components/core/RetryBoundary/RetryBoundary.js +0 -154
  200. package/dist/components/core/RetryBoundary/RetryBoundary.theme.d.ts +0 -2
  201. package/dist/components/core/RetryBoundary/RetryBoundary.theme.js +0 -7
  202. package/dist/components/core/RetryBoundary/RetryBoundary.types.d.ts +0 -51
  203. package/dist/components/core/RetryBoundary/index.d.ts +0 -3
  204. package/dist/components/forms/OptimisticForm/OptimisticForm.d.ts +0 -33
  205. package/dist/components/forms/OptimisticForm/OptimisticForm.js +0 -87
  206. package/dist/components/forms/OptimisticForm/OptimisticForm.theme.d.ts +0 -2
  207. package/dist/components/forms/OptimisticForm/OptimisticForm.theme.js +0 -8
  208. package/dist/components/forms/OptimisticForm/OptimisticForm.types.d.ts +0 -74
  209. package/dist/components/forms/OptimisticForm/index.d.ts +0 -3
  210. package/dist/hooks/useOptimisticMutation.d.ts +0 -109
  211. package/dist/hooks/useOptimisticMutation.js +0 -171
  212. package/dist/hooks/usePresence.d.ts +0 -88
  213. package/dist/utils/presenceUtils.d.ts +0 -66
  214. package/dist/utils/presenceUtils.js +0 -107
@@ -1,9 +1,8 @@
1
- import React__default, { createContext, useCallback, useEffect, useContext } from 'react';
2
- import { createPortal } from 'react-dom';
3
- import { AnimatePresence, motion } from 'motion/react';
1
+ import React__default, { createContext, useContext } from 'react';
4
2
  import { cn } from '../../../utils/cn.js';
5
- import { drawerTheme, drawerSizeVariants, drawerPositionVariantsFullWidth, drawerPositionVariantsWithMargin } from './Drawer.theme.js';
6
- import { drawerOverlayAnimations, getDrawerContentAnimations } from './Drawer.animations.js';
3
+ import { Overlay } from '../../effects/Overlay/Overlay.js';
4
+ import { drawerSizeVariants, drawerPositionVariantsFullWidth, drawerPositionVariantsWithMargin, drawerTheme } from './Drawer.theme.js';
5
+ import { getDrawerContentAnimations, drawerOverlayAnimations } from './Drawer.animations.js';
7
6
  import { DrawerHeader } from './DrawerHeader.js';
8
7
  import { DrawerContent } from './DrawerContent.js';
9
8
  import { DrawerFooter } from './DrawerFooter.js';
@@ -17,30 +16,6 @@ const useDrawerContext = () => {
17
16
  return ctx;
18
17
  };
19
18
  const DrawerRoot = ({ isOpen, onClose, position = "right", size = "md", closeOnOverlayClick = true, closeOnEsc = true, showCloseButton = true, children, className, theme: themeOverrides, ...props }) => {
20
- // Handle ESC key
21
- const handleEscKey = useCallback((event) => {
22
- if (event.key === "Escape" && closeOnEsc) {
23
- onClose();
24
- }
25
- }, [closeOnEsc, onClose]);
26
- // Handle overlay click
27
- const handleOverlayClick = useCallback((event) => {
28
- if (event.target === event.currentTarget && closeOnOverlayClick) {
29
- onClose();
30
- }
31
- }, [closeOnOverlayClick, onClose]);
32
- // Setup event listeners
33
- useEffect(() => {
34
- if (isOpen) {
35
- document.addEventListener("keydown", handleEscKey);
36
- // Prevent body scroll
37
- document.body.style.overflow = "hidden";
38
- return () => {
39
- document.removeEventListener("keydown", handleEscKey);
40
- document.body.style.overflow = "unset";
41
- };
42
- }
43
- }, [isOpen, handleEscKey]);
44
19
  // Merge theme with overrides
45
20
  const theme = {
46
21
  ...drawerTheme,
@@ -66,17 +41,12 @@ const DrawerRoot = ({ isOpen, onClose, position = "right", size = "md", closeOnO
66
41
  const positionVariant = size === "full"
67
42
  ? drawerPositionVariantsFullWidth[position]
68
43
  : drawerPositionVariantsWithMargin[position];
69
- // Detect dark mode from document
70
- const isDarkMode = typeof document !== "undefined" &&
71
- (document.documentElement.classList.contains("dark") ||
72
- document.body.classList.contains("dark") ||
73
- document.querySelector(".dark") !== null);
74
- const drawerContent = (React__default.createElement(DrawerContext.Provider, { value: contextValue },
75
- React__default.createElement(AnimatePresence, null, isOpen && (React__default.createElement(motion.div, { className: cn(isDarkMode && "dark", theme.overlay), onClick: handleOverlayClick, variants: drawerOverlayAnimations, initial: "initial", animate: "animate", exit: "exit" },
76
- React__default.createElement(motion.div, { className: cn(theme.container, positionVariant, size !== "full" && sizeVariant, className), variants: getDrawerContentAnimations(position), initial: "initial", animate: "animate", exit: "exit", onClick: (e) => e.stopPropagation(), ...props },
77
- React__default.createElement("div", { className: cn(theme.content) }, children)))))));
78
- // Render in portal
79
- return createPortal(drawerContent, document.body);
44
+ return (React__default.createElement(Overlay, { isOpen: isOpen, onClose: onClose, closeOnOverlayClick: closeOnOverlayClick, closeOnEsc: closeOnEsc, position: "none", contentClassName: cn(theme.container, positionVariant, size !== "full" && sizeVariant, className), animations: {
45
+ overlay: drawerOverlayAnimations,
46
+ content: getDrawerContentAnimations(position),
47
+ }, ...props },
48
+ React__default.createElement(DrawerContext.Provider, { value: contextValue },
49
+ React__default.createElement("div", { className: theme.content }, children))));
80
50
  };
81
51
  DrawerRoot.displayName = "Drawer";
82
52
  // Attach compound subcomponents
@@ -1,5 +1,6 @@
1
1
  const drawerTheme = {
2
- overlay: "fixed inset-0 bg-[var(--overlay-bg)] backdrop-blur-[var(--overlay-blur)] z-50",
2
+ // Note: overlay styling is now handled by the shared Overlay component
3
+ overlay: "",
3
4
  container: "fixed bg-[var(--color-background)] shadow-2xl shadow-black/30 " +
4
5
  "border border-[var(--color-border)] ring-6 ring-white/20 " +
5
6
  "flex flex-col overflow-hidden rounded-2xl " +
@@ -40,6 +40,14 @@ export interface DrawerProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
40
40
  children: React.ReactNode;
41
41
  className?: string;
42
42
  theme?: DrawerThemeOverrides;
43
+ /**
44
+ * Force dark mode styling for the component. Use when placing the component
45
+ * on a dark background while the page is in light mode. This applies the
46
+ * 'dark' class to the container, making text, borders, and other elements
47
+ * use light colors for visibility.
48
+ * @default false
49
+ */
50
+ darkMode?: boolean;
43
51
  }
44
52
  export interface DrawerHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
45
53
  children: React.ReactNode;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { DropdownProps } from "./Dropdown.types";
3
3
  export declare const Dropdown: {
4
- ({ children, className, isOpen: controlledIsOpen, defaultIsOpen, onOpenChange, placement, offset, closeOnSelect, disabledKeys, selectedKeys: controlledSelectedKeys, defaultSelectedKeys, selectionMode, onAction, onSelectionChange, theme: themeOverrides, ...props }: DropdownProps): React.JSX.Element;
4
+ ({ children, className, isOpen: controlledIsOpen, defaultIsOpen, onOpenChange, placement, offset, closeOnSelect, disabledKeys, selectedKeys: controlledSelectedKeys, defaultSelectedKeys, selectionMode, onAction, onSelectionChange, theme: themeOverrides, darkMode, ...props }: DropdownProps): React.JSX.Element;
5
5
  displayName: string;
6
6
  } & {
7
7
  Trigger: {
@@ -25,7 +25,7 @@ import { dropdownTheme } from './Dropdown.theme.js';
25
25
  * </Dropdown>
26
26
  * ```
27
27
  */
28
- const DropdownRoot = ({ children, className, isOpen: controlledIsOpen, defaultIsOpen = false, onOpenChange, placement = "bottom-start", offset = 4, closeOnSelect = true, disabledKeys = [], selectedKeys: controlledSelectedKeys, defaultSelectedKeys = [], selectionMode = "none", onAction, onSelectionChange, theme: themeOverrides, ...props }) => {
28
+ const DropdownRoot = ({ children, className, isOpen: controlledIsOpen, defaultIsOpen = false, onOpenChange, placement = "bottom-start", offset = 4, closeOnSelect = true, disabledKeys = [], selectedKeys: controlledSelectedKeys, defaultSelectedKeys = [], selectionMode = "none", onAction, onSelectionChange, theme: themeOverrides, darkMode = false, ...props }) => {
29
29
  // State for uncontrolled open
30
30
  const [uncontrolledIsOpen, setUncontrolledIsOpen] = useState(defaultIsOpen);
31
31
  // State for uncontrolled selection
@@ -78,7 +78,7 @@ const DropdownRoot = ({ children, className, isOpen: controlledIsOpen, defaultIs
78
78
  theme,
79
79
  };
80
80
  return (React__default.createElement(DropdownContext.Provider, { value: contextValue },
81
- React__default.createElement("div", { className: cn("dropdown", className), "data-state": isOpen ? "open" : "closed", ...props }, children)));
81
+ React__default.createElement("div", { className: cn("dropdown", darkMode && "dark", className), "data-state": isOpen ? "open" : "closed", ...props }, children)));
82
82
  };
83
83
  DropdownRoot.displayName = "Dropdown";
84
84
  // Export as a unified component with sub-components
@@ -32,6 +32,14 @@ export interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {
32
32
  onAction?: (key: string) => void;
33
33
  onSelectionChange?: (keys: string[]) => void;
34
34
  theme?: Partial<DropdownTheme>;
35
+ /**
36
+ * Force dark mode styling for the component. Use when placing the component
37
+ * on a dark background while the page is in light mode. This applies the
38
+ * 'dark' class to the container, making text, borders, and other elements
39
+ * use light colors for visibility.
40
+ * @default false
41
+ */
42
+ darkMode?: boolean;
35
43
  }
36
44
  export interface DropdownTriggerProps {
37
45
  children: React.ReactElement;
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import { MetricProps } from "./Metric.types";
3
- export default function Metric({ value, label, description, trendValue, trendDirection, trendChart, size, color, icon, noBorder, className, ...props }: MetricProps): React.JSX.Element;
3
+ export default function Metric({ value, label, description, trendValue, trendDirection, trendChart, size, variant, color, icon, className, ...props }: MetricProps): React.JSX.Element;
@@ -4,21 +4,25 @@ import { metricTheme } from './Metric.theme.js';
4
4
  import { Badge } from '../Badge/Badge.js';
5
5
  import { ArrowTrendingUpIcon, ArrowTrendingDownIcon } from '@heroicons/react/24/outline';
6
6
 
7
- function Metric({ value, label, description, trendValue, trendDirection = "up", trendChart, size = "md", color = "primary", icon, noBorder = false, className, ...props }) {
7
+ function Metric({ value, label, description, trendValue, trendDirection = "up", trendChart, size = "md", variant = "filled", color = "primary", icon, className, ...props }) {
8
+ var _a;
8
9
  const trendIcon = trendDirection === "up" ? (React__default.createElement(ArrowTrendingUpIcon, { className: "size-3.5", strokeWidth: 2.5 })) : (React__default.createElement(ArrowTrendingDownIcon, { className: "size-3.5", strokeWidth: 2.5 }));
9
10
  const sizeStyles = metricTheme.sizes[size];
10
- return (React__default.createElement("div", { className: cn(metricTheme.baseStyle, metricTheme.colorStyles[color], sizeStyles.container, noBorder && "border-transparent", className), "data-color": color, "data-size": size, ...props },
11
+ const variantStyles = metricTheme.variants[variant];
12
+ const variantColorStyles = metricTheme.variantColors[variant] || "";
13
+ const iconStyles = ((_a = metricTheme.iconContainerVariantColors[variant]) === null || _a === void 0 ? void 0 : _a[color]) || "";
14
+ return (React__default.createElement("div", { className: cn(metricTheme.baseStyle, variantStyles, variantColorStyles, sizeStyles.container, className), "data-size": size, ...props },
11
15
  React__default.createElement("div", { className: "flex flex-col gap-3 " },
12
16
  React__default.createElement("div", { className: cn("flex items-start gap-3", sizeStyles.contentPadding) },
13
- icon && (React__default.createElement("div", { className: cn(metricTheme.iconContainerStyle, metricTheme.iconContainerColorStyles[color], sizeStyles.iconContainer), "data-color": color }, icon)),
17
+ icon && (React__default.createElement("div", { className: cn(metricTheme.iconContainerStyle, iconStyles, sizeStyles.iconContainer) }, icon)),
14
18
  React__default.createElement("div", { className: "flex flex-col flex-1" },
15
19
  React__default.createElement("div", { className: cn(metricTheme.labelStyle, sizeStyles.label) }, label),
16
20
  React__default.createElement("div", { className: "flex items-center gap-2" },
17
21
  React__default.createElement("div", { className: cn(metricTheme.valueStyle, sizeStyles.value) }, value),
18
22
  trendValue && (React__default.createElement("div", { className: "flex items-center gap-1" },
19
23
  React__default.createElement("div", { className: cn("rounded-full p-1 flex flex-shrink-0 w-fit h-fit", trendDirection === "up"
20
- ? "bg-[var(--color-success-100)] text-[var(--color-success)]"
21
- : "bg-[var(--color-danger-100)] text-[var(--color-danger)]") }, trendIcon),
24
+ ? "bg-[var(--color-success-100)] text-[var(--color-success)] dark:bg-[var(--color-success-100)]/20"
25
+ : "bg-[var(--color-danger-100)] text-[var(--color-danger)] dark:bg-[var(--color-danger-100)]/20") }, trendIcon),
22
26
  React__default.createElement(Badge, { color: trendDirection === "up" ? "success" : "danger", variant: "ghost", className: cn("!bg-transparent p-0 font-semibold !gap-1 !ring-0", trendDirection === "up"
23
27
  ? "!text-[var(--color-success)]"
24
28
  : "!text-[var(--color-danger)]") }, trendValue)))),
@@ -1,6 +1,6 @@
1
1
  import { MetricTheme } from "./Metric.types";
2
2
  /**
3
3
  * Default theme for the Metric component
4
- * Following Button component pattern with data attributes
4
+ * Uses variant-first color organization for reliable dark mode support
5
5
  */
6
6
  export declare const metricTheme: MetricTheme;
@@ -1,35 +1,45 @@
1
1
  /**
2
2
  * Default theme for the Metric component
3
- * Following Button component pattern with data attributes
3
+ * Uses variant-first color organization for reliable dark mode support
4
4
  */
5
5
  const metricTheme = {
6
- // Base container styles
7
- baseStyle: "rounded-2xl glass-effect transition-colors duration-200 overflow-hidden",
8
- // Container border colors
9
- colorStyles: {
10
- // neutral: 'data-[color=neutral]:border-[var(--color-border)]',
11
- // primary: 'data-[color=primary]:border-[var(--color-border)]',
12
- // success: 'data-[color=success]:border-[var(--color-border)]',
13
- // warning: 'data-[color=warning]:border-[var(--color-border)]',
14
- // danger: 'data-[color=danger]:border-[var(--color-border)]',
15
- neutral: "",
16
- primary: "",
17
- success: "",
18
- warning: "",
19
- danger: "",
6
+ // Base container styles (shared across all variants)
7
+ baseStyle: "rounded-2xl transition-colors duration-200 overflow-hidden",
8
+ // Visual style variants (structure only, no colors)
9
+ variants: {
10
+ filled: "border border-[var(--color-border)]",
11
+ glass: "glass-effect",
20
12
  },
21
- // Icon container colors - applied directly with data attributes
22
- iconContainerColorStyles: {
23
- neutral: "data-[color=neutral]:bg-gray-100 " +
24
- "data-[color=neutral]:text-[var(--color-text-primary)]",
25
- primary: "data-[color=primary]:bg-[var(--color-primary-100)] " +
26
- "data-[color=primary]:text-[var(--color-primary)] data-[color=primary]:shadow-blue-500/20",
27
- success: "data-[color=success]:bg-[var(--color-success-50)] " +
28
- "data-[color=success]:text-[var(--color-success)] data-[color=success]:shadow-green-500/20",
29
- warning: "data-[color=warning]:bg-[var(--color-warning-50)] " +
30
- "data-[color=warning]:text-[var(--color-warning)] data-[color=warning]:shadow-yellow-500/20",
31
- danger: "data-[color=danger]:bg-[var(--color-danger-50)] " +
32
- "data-[color=danger]:text-[var(--color-danger)] data-[color=danger]:shadow-rose-400/20",
13
+ // Container background styles per variant (color only applies to icon)
14
+ variantColors: {
15
+ filled: "bg-white dark:bg-transparent",
16
+ glass: "",
17
+ },
18
+ // Icon container styles organized PER VARIANT (color applies to icon)
19
+ iconContainerVariantColors: {
20
+ filled: {
21
+ neutral: "bg-white text-[var(--color-text-primary)] border border-[var(--color-border)] " +
22
+ "dark:bg-[var(--color-background-secondary)] dark:border-0",
23
+ primary: "bg-white text-[var(--color-primary)] border border-[var(--color-border)] " +
24
+ "dark:bg-[var(--color-background-secondary)] dark:border-0",
25
+ success: "bg-white text-[var(--color-success)] border border-[var(--color-border)] " +
26
+ "dark:bg-[var(--color-background-secondary)] dark:border-0",
27
+ warning: "bg-white text-[var(--color-warning)] border border-[var(--color-border)] " +
28
+ "dark:bg-[var(--color-background-secondary)] dark:border-0",
29
+ danger: "bg-white text-[var(--color-danger)] border border-[var(--color-border)] " +
30
+ "dark:bg-[var(--color-background-secondary)] dark:border-0",
31
+ },
32
+ glass: {
33
+ neutral: "glass-effect-1 !ring-0 text-[var(--color-text-primary)]",
34
+ primary: "glass-effect-2 !ring-0 shadow-lg shadow-blue-500/10 text-[var(--color-primary)] " +
35
+ "dark:text-[var(--color-primary-400)]",
36
+ success: "glass-effect-2 !ring-0 shadow-lg shadow-green-500/10 text-[var(--color-success)] " +
37
+ "dark:text-[var(--color-success-400)]",
38
+ warning: "glass-effect-2 !ring-0 shadow-lg shadow-yellow-500/10 text-[var(--color-warning)] " +
39
+ "dark:text-[var(--color-warning-400)]",
40
+ danger: "glass-effect-2 !ring-0 shadow-lg shadow-rose-500/10 text-[var(--color-danger)] " +
41
+ "dark:text-[var(--color-danger-400)]",
42
+ },
33
43
  },
34
44
  // Size variants for container and sub-elements
35
45
  sizes: {
@@ -62,7 +72,7 @@ const metricTheme = {
62
72
  labelStyle: "font-semibold text-[var(--color-text-secondary)] mb-1",
63
73
  valueStyle: "font-bold text-[var(--color-text-primary)] tracking-tight",
64
74
  descriptionStyle: "text-[var(--color-text-secondary)]/80",
65
- iconContainerStyle: "rounded-full flex items-center justify-center flex-shrink-0 p-3.5 border-t glass-effect !to-transparent !ring-0 shadow-lg",
75
+ iconContainerStyle: "rounded-full flex items-center justify-center flex-shrink-0 p-3.5",
66
76
  };
67
77
 
68
78
  export { metricTheme };
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export type MetricSize = 'sm' | 'md' | 'lg';
3
3
  export type MetricColor = 'neutral' | 'primary' | 'success' | 'warning' | 'danger';
4
+ export type MetricVariant = 'filled' | 'glass';
4
5
  export type TrendDirection = 'up' | 'down';
5
6
  export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
6
7
  /**
@@ -34,6 +35,11 @@ export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
34
35
  * @default 'md'
35
36
  */
36
37
  size?: MetricSize;
38
+ /**
39
+ * Visual style variant
40
+ * @default 'filled'
41
+ */
42
+ variant?: MetricVariant;
37
43
  /**
38
44
  * Semantic color for icon and accents
39
45
  * @default 'primary'
@@ -43,11 +49,6 @@ export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
43
49
  * Optional icon to display
44
50
  */
45
51
  icon?: React.ReactNode;
46
- /**
47
- * Remove border from container
48
- * @default false
49
- */
50
- noBorder?: boolean;
51
52
  /**
52
53
  * Custom className for styling overrides
53
54
  */
@@ -55,8 +56,9 @@ export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
55
56
  }
56
57
  export interface MetricTheme {
57
58
  baseStyle: string;
58
- colorStyles: Record<MetricColor, string>;
59
- iconContainerColorStyles: Record<MetricColor, string>;
59
+ variants: Record<MetricVariant, string>;
60
+ variantColors: Record<MetricVariant, string>;
61
+ iconContainerVariantColors: Record<MetricVariant, Record<MetricColor, string>>;
60
62
  sizes: Record<MetricSize, {
61
63
  container: string;
62
64
  contentPadding: string;
@@ -70,4 +72,21 @@ export interface MetricTheme {
70
72
  descriptionStyle: string;
71
73
  iconContainerStyle: string;
72
74
  }
73
- export type MetricThemeOverrides = Partial<MetricTheme>;
75
+ export interface MetricThemeOverrides {
76
+ baseStyle?: string;
77
+ variants?: Partial<Record<MetricVariant, string>>;
78
+ variantColors?: Partial<Record<MetricVariant, string>>;
79
+ iconContainerVariantColors?: Partial<Record<MetricVariant, Partial<Record<MetricColor, string>>>>;
80
+ sizes?: Partial<Record<MetricSize, Partial<{
81
+ container: string;
82
+ contentPadding: string;
83
+ iconContainer: string;
84
+ label: string;
85
+ value: string;
86
+ description: string;
87
+ }>>>;
88
+ labelStyle?: string;
89
+ valueStyle?: string;
90
+ descriptionStyle?: string;
91
+ iconContainerStyle?: string;
92
+ }
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { ModalProps, ModalContextValue } from "./Modal.types";
3
3
  export declare const useModalContext: () => ModalContextValue;
4
4
  export declare const Modal: {
5
- ({ isOpen, onClose, size, closeOnOverlayClick, closeOnEsc, showCloseButton, children, className, theme: themeOverrides, ...props }: ModalProps): React.ReactPortal;
5
+ ({ isOpen, onClose, size, variant, closeOnOverlayClick, closeOnEsc, showCloseButton, children, className, theme: themeOverrides, ...props }: ModalProps): React.JSX.Element;
6
6
  displayName: string;
7
7
  } & {
8
8
  Header: {
@@ -1,9 +1,8 @@
1
- import React__default, { createContext, useState, useCallback, useEffect, useContext } from 'react';
2
- import { createPortal } from 'react-dom';
3
- import { AnimatePresence, motion } from 'motion/react';
1
+ import React__default, { createContext, useState, useEffect, useContext } from 'react';
4
2
  import { cn } from '../../../utils/cn.js';
3
+ import { Overlay } from '../../effects/Overlay/Overlay.js';
5
4
  import { modalTheme, modalSizeVariants } from './Modal.theme.js';
6
- import { modalOverlayAnimations, modalContentAnimations } from './Modal.animations.js';
5
+ import { modalContentAnimations, modalOverlayAnimations } from './Modal.animations.js';
7
6
  import { ModalHeader } from './ModalHeader.js';
8
7
  import { ModalTitle } from './ModalTitle.js';
9
8
  import { ModalDescription } from './ModalDescription.js';
@@ -18,41 +17,24 @@ const useModalContext = () => {
18
17
  throw new Error("Modal compound components must be used within <Modal>");
19
18
  return ctx;
20
19
  };
21
- const ModalRoot = ({ isOpen, onClose, size = "md", closeOnOverlayClick = true, closeOnEsc = true, showCloseButton = true, children, className, theme: themeOverrides, ...props }) => {
20
+ const ModalRoot = ({ isOpen, onClose, size = "md", variant = "default", closeOnOverlayClick = true, closeOnEsc = true, showCloseButton = true, children, className, theme: themeOverrides, ...props }) => {
21
+ var _a;
22
22
  // State for tracking if modal body is scrollable
23
23
  const [isBodyScrollable, setIsBodyScrollable] = useState(false);
24
- // Handle ESC key
25
- const handleEscKey = useCallback((event) => {
26
- if (event.key === "Escape" && closeOnEsc) {
27
- onClose();
28
- }
29
- }, [closeOnEsc, onClose]);
30
- // Handle overlay click
31
- const handleOverlayClick = useCallback((event) => {
32
- if (event.target === event.currentTarget && closeOnOverlayClick) {
33
- onClose();
34
- }
35
- }, [closeOnOverlayClick, onClose]);
36
- // Setup event listeners
24
+ // Reset scroll state when modal closes
37
25
  useEffect(() => {
38
- if (isOpen) {
39
- document.addEventListener("keydown", handleEscKey);
40
- // Prevent body scroll
41
- document.body.style.overflow = "hidden";
42
- return () => {
43
- document.removeEventListener("keydown", handleEscKey);
44
- document.body.style.overflow = "unset";
45
- };
46
- }
47
- else {
48
- // Reset scroll state when modal closes
26
+ if (!isOpen) {
49
27
  setIsBodyScrollable(false);
50
28
  }
51
- }, [isOpen, handleEscKey]);
29
+ }, [isOpen]);
52
30
  // Merge theme with overrides
53
31
  const theme = {
54
32
  ...modalTheme,
55
33
  ...(themeOverrides || {}),
34
+ containerVariants: {
35
+ ...modalTheme.containerVariants,
36
+ ...((themeOverrides === null || themeOverrides === void 0 ? void 0 : themeOverrides.containerVariants) || {}),
37
+ },
56
38
  };
57
39
  // Context value
58
40
  const contextValue = {
@@ -66,16 +48,11 @@ const ModalRoot = ({ isOpen, onClose, size = "md", closeOnOverlayClick = true, c
66
48
  isBodyScrollable,
67
49
  setIsBodyScrollable,
68
50
  };
69
- // Detect dark mode from document
70
- const isDarkMode = typeof document !== "undefined" &&
71
- (document.documentElement.classList.contains("dark") ||
72
- document.body.classList.contains("dark") ||
73
- document.querySelector(".dark") !== null);
74
- const modalContent = (React__default.createElement(ModalContext.Provider, { value: contextValue },
75
- React__default.createElement(AnimatePresence, null, isOpen && (React__default.createElement(motion.div, { className: cn(isDarkMode && "dark", theme.overlay), onClick: handleOverlayClick, variants: modalOverlayAnimations, initial: "initial", animate: "animate", exit: "exit" },
76
- React__default.createElement(motion.div, { className: cn(theme.container, modalSizeVariants[size], className), variants: modalContentAnimations, initial: "initial", animate: "animate", exit: "exit", ...props }, children))))));
77
- // Render in portal
78
- return createPortal(modalContent, document.body);
51
+ return (React__default.createElement(Overlay, { isOpen: isOpen, onClose: onClose, closeOnOverlayClick: closeOnOverlayClick, closeOnEsc: closeOnEsc, position: "center", contentClassName: cn(theme.container, (_a = theme.containerVariants) === null || _a === void 0 ? void 0 : _a[variant], modalSizeVariants[size], className), animations: {
52
+ overlay: modalOverlayAnimations,
53
+ content: modalContentAnimations,
54
+ }, ...props },
55
+ React__default.createElement(ModalContext.Provider, { value: contextValue }, children)));
79
56
  };
80
57
  ModalRoot.displayName = "Modal";
81
58
  // Attach compound subcomponents
@@ -1,10 +1,15 @@
1
1
  const modalTheme = {
2
- overlay: "fixed inset-0 bg-[var(--overlay-bg)] backdrop-blur-[var(--overlay-blur)] z-50 flex items-center justify-center",
3
- container: "relative glass-effect-2 w-full max-h-[calc(100vh-2rem)] !bg-[var(--color-background)]/90 rounded-[var(--modal-rounded)] shadow-2xl shadow-black/30 !ring-4 !ring-white/10 flex flex-col my-4 min-h-0 overflow-hidden ",
2
+ // Note: overlay styling is now handled by the shared Overlay component
3
+ overlay: "",
4
+ container: "relative w-full max-h-[calc(100vh-2rem)] rounded-[var(--modal-rounded)] shadow-2xl shadow-black/30 flex flex-col my-4 min-h-0 overflow-hidden",
5
+ containerVariants: {
6
+ default: "bg-white !ring-4 !ring-white/10 dark:bg-[var(--color-background-secondary)]",
7
+ translucent: "bg-gradient-to-b from-white/90 to-white/70 backdrop-blur-xl ring-4 ring-white/20 border-t border-white dark:border-white/20 dark:from-neutral-900/80 dark:to-neutral-900/60 dark:ring-neutral-500/20 ",
8
+ },
4
9
  header: "flex items-start justify-between p-6 pb-0 shrink-0 border-b border-transparent gap-6 relative",
5
10
  headerContent: "flex flex-col items-start gap-2 flex-1",
6
11
  title: "text-base leading-6 font-semibold text-[var(--color-text-primary)]",
7
- description: "text-sm text-[var(--color-text-muted)] mt-0.5",
12
+ description: "text-sm text-[var(--color-text-secondary)] mt-0.5",
8
13
  body: "flex-1 overflow-y-auto p-6 pb-3",
9
14
  footer: "flex items-center justify-end gap-2 p-6 py-3 border-t border-transparent",
10
15
  };
@@ -1,8 +1,10 @@
1
1
  import React from "react";
2
2
  export type ModalSize = "sm" | "md" | "lg" | "xl" | "full";
3
+ export type ModalVariant = "default" | "translucent";
3
4
  export interface ModalTheme {
4
5
  overlay: string;
5
6
  container: string;
7
+ containerVariants: Record<ModalVariant, string>;
6
8
  header: string;
7
9
  headerContent: string;
8
10
  title: string;
@@ -13,6 +15,7 @@ export interface ModalTheme {
13
15
  export interface ModalThemeOverrides {
14
16
  overlay?: string;
15
17
  container?: string;
18
+ containerVariants?: Partial<Record<ModalVariant, string>>;
16
19
  header?: string;
17
20
  headerContent?: string;
18
21
  title?: string;
@@ -35,12 +38,27 @@ export interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "
35
38
  isOpen: boolean;
36
39
  onClose: () => void;
37
40
  size?: ModalSize;
41
+ /**
42
+ * Visual variant of the modal container.
43
+ * - `default`: Solid background with subtle ring
44
+ * - `translucent`: Frosted glass effect with reduced opacity and backdrop blur
45
+ * @default "default"
46
+ */
47
+ variant?: ModalVariant;
38
48
  closeOnOverlayClick?: boolean;
39
49
  closeOnEsc?: boolean;
40
50
  showCloseButton?: boolean;
41
51
  children: React.ReactNode;
42
52
  className?: string;
43
53
  theme?: ModalThemeOverrides;
54
+ /**
55
+ * Force dark mode styling for the component. Use when placing the component
56
+ * on a dark background while the page is in light mode. This applies the
57
+ * 'dark' class to the container, making text, borders, and other elements
58
+ * use light colors for visibility.
59
+ * @default false
60
+ */
61
+ darkMode?: boolean;
44
62
  }
45
63
  export interface ModalHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
46
64
  children: React.ReactNode;
@@ -1,2 +1,2 @@
1
1
  export { Modal } from "./Modal";
2
- export type { ModalProps, ModalSize, ModalThemeOverrides } from "./Modal.types";
2
+ export type { ModalProps, ModalSize, ModalVariant, ModalThemeOverrides } from "./Modal.types";
@@ -37,6 +37,7 @@ import '../Modal/Modal.js';
37
37
  import '../Pagination/Pagination.js';
38
38
  import '../Popover/Popover.js';
39
39
  import '../Popover/PopoverContext.js';
40
+ import '../Progress/Progress.js';
40
41
  import '../ProgressiveBlur/ProgressiveBlur.js';
41
42
  import '../Segmented/Segmented.js';
42
43
  import '../Skeleton/Skeleton.js';
@@ -50,6 +51,7 @@ import '../Tabs/TabsContext.js';
50
51
  import '../Tooltip/Tooltip.js';
51
52
  import '../Tooltip/Tooltip.animations.js';
52
53
  import '../Tree/Tree.js';
54
+ import '../Tag/Tag.js';
53
55
  import '../Alert/Alert.js';
54
56
  import '../Toast/Toast.js';
55
57
  import '../Toast/ToastProvider.js';
@@ -1,24 +1,20 @@
1
- import React from 'react';
2
- import { PillProps } from './Pill.types';
1
+ import React from "react";
2
+ import { PillProps } from "./Pill.types";
3
3
  /**
4
4
  * Pill component - Simplified selectable chip for filters and tags
5
5
  *
6
- * A focused alternative to Badge without icons, avatars, or dismissible functionality.
7
- * Perfect for filter chips, tag selection, and simple category pills.
6
+ * A focused component with single outline style. For colorful semantic
7
+ * variations, use Badge instead.
8
8
  *
9
9
  * @example Basic usage
10
10
  * ```tsx
11
- * <Pill variant="primary">Design</Pill>
11
+ * <Pill>Design</Pill>
12
12
  * ```
13
13
  *
14
14
  * @example Selectable filter
15
15
  * ```tsx
16
16
  * const [selected, setSelected] = useState(false);
17
- * <Pill
18
- * variant="primary"
19
- * selected={selected}
20
- * onSelect={setSelected}
21
- * >
17
+ * <Pill selected={selected} onSelect={setSelected}>
22
18
  * Frontend
23
19
  * </Pill>
24
20
  * ```
@@ -27,7 +23,6 @@ import { PillProps } from './Pill.types';
27
23
  * ```tsx
28
24
  * const [filters, setFilters] = useState(['design']);
29
25
  * <Pill
30
- * variant="primary"
31
26
  * selected={filters.includes('design')}
32
27
  * onSelect={(selected) => {
33
28
  * setFilters(selected
@@ -2,7 +2,7 @@ import { PillTheme } from "./Pill.types";
2
2
  /**
3
3
  * Default theme for Pill component
4
4
  *
5
- * Separates visual variants from semantic colors following new convention.
6
- * All styles can be overridden via className prop (shadcn approach).
5
+ * Simple outline style for filter chips and tags.
6
+ * For colorful semantic variations, use Badge instead.
7
7
  */
8
8
  export declare const pillTheme: PillTheme;