@bigbinary/neeto-atoms 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/ColorPicker-D-7QGnf9.js +277 -0
  2. package/dist/ColorPicker-D-7QGnf9.js.map +1 -0
  3. package/dist/{DataTable-BKe9K5XP.js → DataTable-DWR9gX9d.js} +11 -3
  4. package/dist/{DataTable-BKe9K5XP.js.map → DataTable-DWR9gX9d.js.map} +1 -1
  5. package/dist/TranslationProvider-Ba9rn47H.js +96 -0
  6. package/dist/TranslationProvider-Ba9rn47H.js.map +1 -0
  7. package/dist/cjs/{ColorPicker-DN8aynGh.js → ColorPicker-DEELmqH8.js} +7 -10
  8. package/dist/cjs/ColorPicker-DEELmqH8.js.map +1 -0
  9. package/dist/cjs/{DataTable-BQt_mXDX.js → DataTable-CWs96k8n.js} +11 -3
  10. package/dist/cjs/{DataTable-BQt_mXDX.js.map → DataTable-CWs96k8n.js.map} +1 -1
  11. package/dist/cjs/TranslationProvider-DBZHXmzX.js +103 -0
  12. package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +1 -0
  13. package/dist/cjs/components/Alert.js +7 -3
  14. package/dist/cjs/components/Alert.js.map +1 -1
  15. package/dist/cjs/components/Avatar.js +75 -0
  16. package/dist/cjs/components/Avatar.js.map +1 -0
  17. package/dist/cjs/components/Badge.js +3 -1
  18. package/dist/cjs/components/Badge.js.map +1 -1
  19. package/dist/cjs/components/Button.js +1 -0
  20. package/dist/cjs/components/Button.js.map +1 -1
  21. package/dist/cjs/components/Callout.js +73 -0
  22. package/dist/cjs/components/Callout.js.map +1 -0
  23. package/dist/cjs/components/ColorPicker.js +3 -1
  24. package/dist/cjs/components/ColorPicker.js.map +1 -1
  25. package/dist/cjs/components/DataTable.js +2 -1
  26. package/dist/cjs/components/DataTable.js.map +1 -1
  27. package/dist/cjs/components/Dialog.js +3 -2
  28. package/dist/cjs/components/Dialog.js.map +1 -1
  29. package/dist/cjs/components/DropdownMenu.js +3 -1
  30. package/dist/cjs/components/DropdownMenu.js.map +1 -1
  31. package/dist/cjs/components/Empty.js +59 -0
  32. package/dist/cjs/components/Empty.js.map +1 -0
  33. package/dist/cjs/components/Kbd.js +63 -0
  34. package/dist/cjs/components/Kbd.js.map +1 -0
  35. package/dist/cjs/components/Label.js +91 -0
  36. package/dist/cjs/components/Label.js.map +1 -0
  37. package/dist/cjs/components/MultiSelectDropdown.js +1 -0
  38. package/dist/cjs/components/MultiSelectDropdown.js.map +1 -1
  39. package/dist/cjs/components/Progress.js +22 -0
  40. package/dist/cjs/components/Progress.js.map +1 -0
  41. package/dist/cjs/components/SelectTriggerContent.js +11 -7
  42. package/dist/cjs/components/SelectTriggerContent.js.map +1 -1
  43. package/dist/cjs/components/Sheet.js +3 -2
  44. package/dist/cjs/components/Sheet.js.map +1 -1
  45. package/dist/cjs/components/Slider.js +45 -0
  46. package/dist/cjs/components/Slider.js.map +1 -0
  47. package/dist/cjs/components/Spinner.js +27 -0
  48. package/dist/cjs/components/Spinner.js.map +1 -0
  49. package/dist/cjs/components/Stepper.js +39 -0
  50. package/dist/cjs/components/Stepper.js.map +1 -0
  51. package/dist/cjs/components/TranslationProvider.js +12 -0
  52. package/dist/cjs/components/TranslationProvider.js.map +1 -0
  53. package/dist/cjs/{dialog-CF2GBHOG.js → dialog-Bvyrshz3.js} +4 -2
  54. package/dist/cjs/dialog-Bvyrshz3.js.map +1 -0
  55. package/dist/cjs/index.js +44 -10
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/cjs/primitives/Breadcrumb.js +5 -2
  58. package/dist/cjs/primitives/Breadcrumb.js.map +1 -1
  59. package/dist/cjs/primitives/Carousel.js +5 -2
  60. package/dist/cjs/primitives/Carousel.js.map +1 -1
  61. package/dist/cjs/primitives/Command.js +6 -2
  62. package/dist/cjs/primitives/Command.js.map +1 -1
  63. package/dist/cjs/primitives/Dialog.js +2 -1
  64. package/dist/cjs/primitives/Dialog.js.map +1 -1
  65. package/dist/cjs/primitives/Pagination.js +11 -5
  66. package/dist/cjs/primitives/Pagination.js.map +1 -1
  67. package/dist/cjs/primitives/Sheet.js +2 -1
  68. package/dist/cjs/primitives/Sheet.js.map +1 -1
  69. package/dist/cjs/primitives/Sidebar.js +8 -4
  70. package/dist/cjs/primitives/Sidebar.js.map +1 -1
  71. package/dist/cjs/primitives/Sonner.js +7 -42
  72. package/dist/cjs/primitives/Sonner.js.map +1 -1
  73. package/dist/cjs/primitives/Spinner.js +3 -1
  74. package/dist/cjs/primitives/Spinner.js.map +1 -1
  75. package/dist/cjs/primitives/index.js +4 -2
  76. package/dist/cjs/primitives/index.js.map +1 -1
  77. package/dist/cjs/{sheet-CkCrHmVA.js → sheet-BZHMKVH1.js} +4 -2
  78. package/dist/cjs/sheet-BZHMKVH1.js.map +1 -0
  79. package/dist/cjs/triangle-alert-ZUMRpmzW.js +43 -0
  80. package/dist/cjs/triangle-alert-ZUMRpmzW.js.map +1 -0
  81. package/dist/components/Alert.js +7 -3
  82. package/dist/components/Alert.js.map +1 -1
  83. package/dist/components/Avatar.d.ts +31 -0
  84. package/dist/components/Avatar.js +73 -0
  85. package/dist/components/Avatar.js.map +1 -0
  86. package/dist/components/Badge.js +3 -1
  87. package/dist/components/Badge.js.map +1 -1
  88. package/dist/components/Button.js +1 -0
  89. package/dist/components/Button.js.map +1 -1
  90. package/dist/components/Callout.d.ts +17 -0
  91. package/dist/components/Callout.js +71 -0
  92. package/dist/components/Callout.js.map +1 -0
  93. package/dist/components/ColorPicker.js +3 -1
  94. package/dist/components/ColorPicker.js.map +1 -1
  95. package/dist/components/DataTable/components/EmptyState.d.ts +1 -1
  96. package/dist/components/DataTable.js +2 -1
  97. package/dist/components/DataTable.js.map +1 -1
  98. package/dist/components/Dialog.js +3 -2
  99. package/dist/components/Dialog.js.map +1 -1
  100. package/dist/components/DropdownMenu.js +3 -1
  101. package/dist/components/DropdownMenu.js.map +1 -1
  102. package/dist/components/Empty.d.ts +27 -0
  103. package/dist/components/Empty.js +57 -0
  104. package/dist/components/Empty.js.map +1 -0
  105. package/dist/components/Kbd.d.ts +15 -0
  106. package/dist/components/Kbd.js +61 -0
  107. package/dist/components/Kbd.js.map +1 -0
  108. package/dist/components/Label.d.ts +40 -0
  109. package/dist/components/Label.js +89 -0
  110. package/dist/components/Label.js.map +1 -0
  111. package/dist/components/MultiSelectDropdown.js +1 -0
  112. package/dist/components/MultiSelectDropdown.js.map +1 -1
  113. package/dist/components/Progress.d.ts +12 -0
  114. package/dist/components/Progress.js +20 -0
  115. package/dist/components/Progress.js.map +1 -0
  116. package/dist/components/SelectTriggerContent.js +11 -7
  117. package/dist/components/SelectTriggerContent.js.map +1 -1
  118. package/dist/components/Sheet.js +3 -2
  119. package/dist/components/Sheet.js.map +1 -1
  120. package/dist/components/Slider.d.ts +19 -0
  121. package/dist/components/Slider.js +43 -0
  122. package/dist/components/Slider.js.map +1 -0
  123. package/dist/components/Spinner.d.ts +10 -0
  124. package/dist/components/Spinner.js +25 -0
  125. package/dist/components/Spinner.js.map +1 -0
  126. package/dist/components/Stepper.d.ts +18 -0
  127. package/dist/components/Stepper.js +33 -0
  128. package/dist/components/Stepper.js.map +1 -0
  129. package/dist/components/TranslationProvider/TranslationProvider.d.ts +6 -0
  130. package/dist/components/TranslationProvider/i18n.d.ts +1 -0
  131. package/dist/components/TranslationProvider/index.d.ts +2 -0
  132. package/dist/components/TranslationProvider/types.d.ts +7 -0
  133. package/dist/components/TranslationProvider.js +6 -0
  134. package/dist/components/TranslationProvider.js.map +1 -0
  135. package/dist/components/Typography.d.ts +1 -1
  136. package/dist/{dialog-Civ9r6wD.js → dialog-CrB6N_2a.js} +4 -2
  137. package/dist/dialog-CrB6N_2a.js.map +1 -0
  138. package/dist/index.d.ts +21 -0
  139. package/dist/index.js +33 -10
  140. package/dist/index.js.map +1 -1
  141. package/dist/primitives/Breadcrumb.js +5 -2
  142. package/dist/primitives/Breadcrumb.js.map +1 -1
  143. package/dist/primitives/Carousel.js +5 -2
  144. package/dist/primitives/Carousel.js.map +1 -1
  145. package/dist/primitives/Command.js +6 -2
  146. package/dist/primitives/Command.js.map +1 -1
  147. package/dist/primitives/Dialog.js +2 -1
  148. package/dist/primitives/Dialog.js.map +1 -1
  149. package/dist/primitives/Pagination.js +11 -5
  150. package/dist/primitives/Pagination.js.map +1 -1
  151. package/dist/primitives/Sheet.js +2 -1
  152. package/dist/primitives/Sheet.js.map +1 -1
  153. package/dist/primitives/Sidebar.js +8 -4
  154. package/dist/primitives/Sidebar.js.map +1 -1
  155. package/dist/primitives/Sonner.js +5 -40
  156. package/dist/primitives/Sonner.js.map +1 -1
  157. package/dist/primitives/Spinner.js +3 -1
  158. package/dist/primitives/Spinner.js.map +1 -1
  159. package/dist/primitives/index.js +4 -2
  160. package/dist/primitives/index.js.map +1 -1
  161. package/dist/shadcn/components/command.d.ts +1 -1
  162. package/dist/shadcn/components/pagination.d.ts +2 -2
  163. package/dist/shadcn/components/typography.d.ts +2 -2
  164. package/dist/{sheet-COcn22fC.js → sheet-C763FqIh.js} +4 -2
  165. package/dist/sheet-C763FqIh.js.map +1 -0
  166. package/dist/translations/index.d.ts +66 -0
  167. package/dist/triangle-alert-PXnNWQy_.js +40 -0
  168. package/dist/triangle-alert-PXnNWQy_.js.map +1 -0
  169. package/package.json +38 -34
  170. package/dist/ColorPicker-BPvxDGDM.js +0 -276
  171. package/dist/ColorPicker-BPvxDGDM.js.map +0 -1
  172. package/dist/cjs/ColorPicker-DN8aynGh.js.map +0 -1
  173. package/dist/cjs/dialog-CF2GBHOG.js.map +0 -1
  174. package/dist/cjs/sheet-CkCrHmVA.js.map +0 -1
  175. package/dist/dialog-Civ9r6wD.js.map +0 -1
  176. package/dist/sheet-COcn22fC.js.map +0 -1
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var reactI18next = require('react-i18next');
6
+ var i18n = require('i18next');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var i18n__default = /*#__PURE__*/_interopDefault(i18n);
11
+
12
+ var neetoatoms = {
13
+ colorPicker: {
14
+ recentlyUsed: "Recently used",
15
+ pickColor: "Pick color from screen"
16
+ },
17
+ alert: {
18
+ "continue": "Continue",
19
+ cancel: "Cancel"
20
+ },
21
+ multiSelect: {
22
+ noResults: "No results found.",
23
+ loading: "Loading…"
24
+ },
25
+ dataTable: {
26
+ noResults: "No results.",
27
+ selectRow: "Select row"
28
+ },
29
+ pagination: {
30
+ previous: "Previous",
31
+ next: "Next",
32
+ goToPrevious: "Go to previous page",
33
+ goToNext: "Go to next page",
34
+ morePages: "More pages"
35
+ },
36
+ dialog: {
37
+ close: "Close"
38
+ },
39
+ sheet: {
40
+ close: "Close"
41
+ },
42
+ carousel: {
43
+ previousSlide: "Previous slide",
44
+ nextSlide: "Next slide"
45
+ },
46
+ sidebar: {
47
+ title: "Sidebar",
48
+ description: "Displays the mobile sidebar.",
49
+ toggleSidebar: "Toggle Sidebar"
50
+ },
51
+ badge: {
52
+ dismiss: "Dismiss"
53
+ },
54
+ spinner: {
55
+ loading: "Loading"
56
+ },
57
+ select: {
58
+ clearSelection: "Clear selection"
59
+ },
60
+ dropdownMenu: {
61
+ openMenu: "Open dropdown menu"
62
+ },
63
+ breadcrumb: {
64
+ breadcrumb: "breadcrumb",
65
+ more: "More"
66
+ },
67
+ command: {
68
+ title: "Command Palette",
69
+ description: "Search for a command to run..."
70
+ }
71
+ };
72
+ var enTranslations = {
73
+ neetoatoms: neetoatoms
74
+ };
75
+
76
+ const resources = {
77
+ en: { translation: enTranslations },
78
+ };
79
+
80
+ const initializeI18n = (language = "en") => {
81
+ i18n__default.default.use(reactI18next.initReactI18next).init({
82
+ resources,
83
+ lng: language,
84
+ fallbackLng: "en",
85
+ interpolation: { escapeValue: false },
86
+ });
87
+ return i18n__default.default;
88
+ };
89
+
90
+ const TranslationProvider = ({ children, language = "en", }) => {
91
+ const i18n = initializeI18n(language);
92
+ React.useEffect(() => {
93
+ if (i18n.language !== language) {
94
+ i18n.changeLanguage(language);
95
+ }
96
+ }, [language, i18n]);
97
+ return jsxRuntime.jsx(reactI18next.I18nextProvider, { i18n: i18n, children: children });
98
+ };
99
+ TranslationProvider.displayName = "TranslationProvider";
100
+
101
+ exports.TranslationProvider = TranslationProvider;
102
+ exports.resources = resources;
103
+ //# sourceMappingURL=TranslationProvider-DBZHXmzX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranslationProvider-DBZHXmzX.js","sources":["../../../src/translations/index.ts","../../../src/components/TranslationProvider/i18n.ts","../../../src/components/TranslationProvider/TranslationProvider.tsx"],"sourcesContent":["import enTranslations from \"./en.json\";\n\nexport const resources = {\n en: { translation: enTranslations },\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { resources } from \"src/translations\";\n\nexport const initializeI18n = (language = \"en\") => {\n i18n.use(initReactI18next).init({\n resources,\n lng: language,\n fallbackLng: \"en\",\n interpolation: { escapeValue: false },\n });\n\n return i18n;\n};\n","import React, { useEffect } from \"react\";\n\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { initializeI18n } from \"./i18n\";\nimport type { TranslationProviderProps } from \"./types\";\n\nconst TranslationProvider = ({\n children,\n language = \"en\",\n}: TranslationProviderProps) => {\n const i18n = initializeI18n(language);\n\n useEffect(() => {\n if (i18n.language !== language) {\n i18n.changeLanguage(language);\n }\n }, [language, i18n]);\n\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n};\n\nTranslationProvider.displayName = \"TranslationProvider\";\n\nexport { TranslationProvider };\n"],"names":["i18n","initReactI18next","useEffect","_jsx","I18nextProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAS,GAAG;AACvB,IAAA,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;;;ACE9B,MAAM,cAAc,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAI;AAChD,IAAAA,qBAAI,CAAC,GAAG,CAACC,6BAAgB,CAAC,CAAC,IAAI,CAAC;QAC9B,SAAS;AACT,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AACtC,KAAA,CAAC;AAEF,IAAA,OAAOD,qBAAI;AACb,CAAC;;ACPD,MAAM,mBAAmB,GAAG,CAAC,EAC3B,QAAQ,EACR,QAAQ,GAAG,IAAI,GACU,KAAI;AAC7B,IAAA,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC;IAErCE,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC/B;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEpB,OAAOC,cAAA,CAACC,4BAAe,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAmB;AAClE;AAEA,mBAAmB,CAAC,WAAW,GAAG,qBAAqB;;;;;"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
+ var reactI18next = require('react-i18next');
5
6
  var utils = require('../utils-CTr7wn5d.js');
6
7
  var primitives_Dialog = require('../primitives/Dialog.js');
7
8
  var components_Button = require('./Button.js');
@@ -9,7 +10,7 @@ require('../button-B8XGl69v.js');
9
10
  require('../index-BZhTddX0.js');
10
11
  require('../index-DuNgWCXZ.js');
11
12
  require('../index-D-iDn9RI.js');
12
- require('../dialog-CF2GBHOG.js');
13
+ require('../dialog-Bvyrshz3.js');
13
14
  require('../x-Brw3FJst.js');
14
15
  require('../createLucideIcon-D0tRgV6l.js');
15
16
  require('../index-BLGrl3PF.js');
@@ -54,9 +55,12 @@ const STYLE_VARIANT_MAP = {
54
55
  // ---------------------------------------------------------------------------
55
56
  // Component
56
57
  // ---------------------------------------------------------------------------
57
- const Alert = React.forwardRef(({ size = "medium", isOpen = false, isSubmitting = false, className, closeOnEsc = true, closeButton = true, backdropClassName, closeOnOutsideClick = true, onClose = () => { }, onSubmit = () => { }, title = "", message = "", submitButtonLabel = "Continue", cancelButtonLabel = "Cancel", hideCancelButton = false, style = "danger", initialFocusRef, initialFocusElement, modal, defaultOpen,
58
+ const Alert = React.forwardRef(({ size = "medium", isOpen = false, isSubmitting = false, className, closeOnEsc = true, closeButton = true, backdropClassName, closeOnOutsideClick = true, onClose = () => { }, onSubmit = () => { }, title = "", message = "", submitButtonLabel: submitButtonLabelProp, cancelButtonLabel: cancelButtonLabelProp, hideCancelButton = false, style = "danger", initialFocusRef, initialFocusElement, modal, defaultOpen,
58
59
  // Radix content handlers — we intercept and merge
59
60
  onOpenAutoFocus: onOpenAutoFocusProp, onCloseAutoFocus: onCloseAutoFocusProp, ...otherProps }, ref) => {
61
+ const { t } = reactI18next.useTranslation();
62
+ const submitButtonLabel = submitButtonLabelProp ?? t("neetoatoms.alert.continue", "Continue");
63
+ const cancelButtonLabel = cancelButtonLabelProp ?? t("neetoatoms.alert.cancel", "Cancel");
60
64
  const baseId = React.useId();
61
65
  const titleId = `alert-title-${baseId}`;
62
66
  const messageId = `alert-message-${baseId}`;
@@ -93,7 +97,7 @@ onOpenAutoFocus: onOpenAutoFocusProp, onCloseAutoFocus: onCloseAutoFocusProp, ..
93
97
  const handleCloseAutoFocus = (e) => {
94
98
  onCloseAutoFocusProp?.(e);
95
99
  };
96
- return (jsxRuntime.jsx(primitives_Dialog.Dialog, { open: isOpen, onOpenChange: handleOpenChange, modal: modal, defaultOpen: defaultOpen, children: jsxRuntime.jsxs(primitives_Dialog.DialogContent, { ref: ref, role: "alertdialog", "aria-labelledby": title ? titleId : undefined, "aria-describedby": message ? messageId : undefined, showCloseButton: closeButton, overlayClassName: backdropClassName, onInteractOutside: handleInteractOutside, onEscapeKeyDown: handleEscapeKeyDown, onOpenAutoFocus: handleOpenAutoFocus, onCloseAutoFocus: handleCloseAutoFocus, className: utils.cn(SIZE_CLASS_MAP[size], className), "data-testid": "alert-box", ...otherProps, children: [jsxRuntime.jsxs(primitives_Dialog.DialogHeader, { children: [jsxRuntime.jsx(primitives_Dialog.DialogTitle, { id: titleId, "data-testid": "alert-title", children: title }), message && (jsxRuntime.jsx(primitives_Dialog.DialogDescription, { id: messageId, "data-testid": "alert-message", children: message }))] }), jsxRuntime.jsxs(primitives_Dialog.DialogFooter, { children: [!hideCancelButton && (jsxRuntime.jsx(components_Button.Button, { ref: cancelButtonRef, variant: "outline", label: cancelButtonLabel, onClick: onClose, "data-testid": "alert-cancel-button" })), jsxRuntime.jsx(components_Button.Button, { ref: submitButtonRef, variant: STYLE_VARIANT_MAP[style], label: submitButtonLabel, loading: isSubmitting, disabled: isSubmitting || !isOpen, onClick: onSubmit, "data-testid": "alert-submit-button" })] })] }) }));
100
+ return (jsxRuntime.jsx(primitives_Dialog.Dialog, { open: isOpen, onOpenChange: handleOpenChange, modal: modal, defaultOpen: defaultOpen, children: jsxRuntime.jsxs(primitives_Dialog.DialogContent, { ref: ref, role: "alertdialog", "aria-labelledby": title ? titleId : undefined, "aria-describedby": message ? messageId : undefined, showCloseButton: closeButton, overlayClassName: backdropClassName, onInteractOutside: handleInteractOutside, onEscapeKeyDown: handleEscapeKeyDown, onOpenAutoFocus: handleOpenAutoFocus, onCloseAutoFocus: handleCloseAutoFocus, className: utils.cn(SIZE_CLASS_MAP[size], className), "data-testid": "alert-box", ...otherProps, children: [jsxRuntime.jsxs(primitives_Dialog.DialogHeader, { children: [jsxRuntime.jsx(primitives_Dialog.DialogTitle, { id: titleId, "data-testid": "alert-title", className: "text-2xl font-semibold", children: title }), message && (jsxRuntime.jsx(primitives_Dialog.DialogDescription, { id: messageId, "data-testid": "alert-message", children: message }))] }), jsxRuntime.jsxs(primitives_Dialog.DialogFooter, { children: [!hideCancelButton && (jsxRuntime.jsx(components_Button.Button, { ref: cancelButtonRef, variant: "outline", label: cancelButtonLabel, onClick: onClose, "data-testid": "alert-cancel-button" })), jsxRuntime.jsx(components_Button.Button, { ref: submitButtonRef, variant: STYLE_VARIANT_MAP[style], label: submitButtonLabel, loading: isSubmitting, disabled: isSubmitting || !isOpen, onClick: onSubmit, "data-testid": "alert-submit-button" })] })] }) }));
97
101
  });
98
102
  Alert.displayName = "Alert";
99
103
 
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.js","sources":["../../../../src/components/Alert.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useRef,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"src/primitives/Dialog\";\nimport { Button } from \"src/components/Button\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype AlertStyle = \"danger\" | \"warning\";\ntype AlertSize = \"small\" | \"medium\" | \"large\";\ntype InitialFocusElement = \"submit\" | \"cancel\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof DialogContent>;\n\nexport interface AlertProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"role\"\n | \"showCloseButton\"\n | \"className\"\n | \"style\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the alert dialog. */\n size?: AlertSize;\n /** Whether the alert is open. */\n isOpen?: boolean;\n /** Whether the submit action is in progress. */\n isSubmitting?: boolean;\n /** Additional CSS class names applied to the dialog content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the dialog. */\n closeOnOutsideClick?: boolean;\n /** Callback invoked when the alert is closed. */\n onClose?: () => void;\n /** Callback invoked when the submit button is clicked. */\n onSubmit?: () => void;\n /** Title text of the alert. */\n title?: string;\n /** Message content of the alert. */\n message?: ReactNode;\n /** Label for the submit button. */\n submitButtonLabel?: string;\n /** Label for the cancel button. */\n cancelButtonLabel?: string;\n /** Hide the cancel button. */\n hideCancelButton?: boolean;\n /** Visual style of the submit button. */\n style?: AlertStyle;\n /** Ref of the element to receive focus when the alert opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Which built-in button receives focus on open: \"submit\" or \"cancel\". */\n initialFocusElement?: InitialFocusElement;\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Size mapping\n// ---------------------------------------------------------------------------\n\nconst SIZE_CLASS_MAP: Record<AlertSize, string> = {\n small: \"sm:max-w-xs\",\n medium: \"sm:max-w-sm\",\n large: \"sm:max-w-md\",\n};\n\n// ---------------------------------------------------------------------------\n// Style to variant mapping\n// ---------------------------------------------------------------------------\n\nconst STYLE_VARIANT_MAP: Record<AlertStyle, \"destructive\" | \"default\"> = {\n danger: \"destructive\",\n warning: \"default\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n isSubmitting = false,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n onClose = () => {},\n onSubmit = () => {},\n title = \"\",\n message = \"\",\n submitButtonLabel = \"Continue\",\n cancelButtonLabel = \"Cancel\",\n hideCancelButton = false,\n style = \"danger\",\n initialFocusRef,\n initialFocusElement,\n modal,\n defaultOpen,\n // Radix content handlers — we intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const baseId = useId();\n const titleId = `alert-title-${baseId}`;\n const messageId = `alert-message-${baseId}`;\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n // Custom focus ref takes highest priority\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n } else if (initialFocusElement === \"submit\" && submitButtonRef.current) {\n e.preventDefault();\n submitButtonRef.current.focus();\n } else if (initialFocusElement === \"cancel\" && cancelButtonRef.current) {\n e.preventDefault();\n cancelButtonRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <DialogContent\n ref={ref}\n role=\"alertdialog\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={message ? messageId : undefined}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"alert-box\"\n {...otherProps}\n >\n <DialogHeader>\n <DialogTitle id={titleId} data-testid=\"alert-title\">\n {title}\n </DialogTitle>\n {message && (\n <DialogDescription id={messageId} data-testid=\"alert-message\">\n {message}\n </DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n {!hideCancelButton && (\n <Button\n ref={cancelButtonRef}\n variant=\"outline\"\n label={cancelButtonLabel}\n onClick={onClose}\n data-testid=\"alert-cancel-button\"\n />\n )}\n <Button\n ref={submitButtonRef}\n variant={STYLE_VARIANT_MAP[style]}\n label={submitButtonLabel}\n loading={isSubmitting}\n disabled={isSubmitting || !isOpen}\n onClick={onSubmit}\n data-testid=\"alert-submit-button\"\n />\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"names":["forwardRef","useId","useRef","_jsx","Dialog","_jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":"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"}
1
+ {"version":3,"file":"Alert.js","sources":["../../../../src/components/Alert.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useRef,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"src/primitives/Dialog\";\nimport { Button } from \"src/components/Button\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype AlertStyle = \"danger\" | \"warning\";\ntype AlertSize = \"small\" | \"medium\" | \"large\";\ntype InitialFocusElement = \"submit\" | \"cancel\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof DialogContent>;\n\nexport interface AlertProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"role\"\n | \"showCloseButton\"\n | \"className\"\n | \"style\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the alert dialog. */\n size?: AlertSize;\n /** Whether the alert is open. */\n isOpen?: boolean;\n /** Whether the submit action is in progress. */\n isSubmitting?: boolean;\n /** Additional CSS class names applied to the dialog content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the dialog. */\n closeOnOutsideClick?: boolean;\n /** Callback invoked when the alert is closed. */\n onClose?: () => void;\n /** Callback invoked when the submit button is clicked. */\n onSubmit?: () => void;\n /** Title text of the alert. */\n title?: string;\n /** Message content of the alert. */\n message?: ReactNode;\n /** Label for the submit button. */\n submitButtonLabel?: string;\n /** Label for the cancel button. */\n cancelButtonLabel?: string;\n /** Hide the cancel button. */\n hideCancelButton?: boolean;\n /** Visual style of the submit button. */\n style?: AlertStyle;\n /** Ref of the element to receive focus when the alert opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Which built-in button receives focus on open: \"submit\" or \"cancel\". */\n initialFocusElement?: InitialFocusElement;\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Size mapping\n// ---------------------------------------------------------------------------\n\nconst SIZE_CLASS_MAP: Record<AlertSize, string> = {\n small: \"sm:max-w-xs\",\n medium: \"sm:max-w-sm\",\n large: \"sm:max-w-md\",\n};\n\n// ---------------------------------------------------------------------------\n// Style to variant mapping\n// ---------------------------------------------------------------------------\n\nconst STYLE_VARIANT_MAP: Record<AlertStyle, \"destructive\" | \"default\"> = {\n danger: \"destructive\",\n warning: \"default\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n isSubmitting = false,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n onClose = () => {},\n onSubmit = () => {},\n title = \"\",\n message = \"\",\n submitButtonLabel: submitButtonLabelProp,\n cancelButtonLabel: cancelButtonLabelProp,\n hideCancelButton = false,\n style = \"danger\",\n initialFocusRef,\n initialFocusElement,\n modal,\n defaultOpen,\n // Radix content handlers — we intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const submitButtonLabel =\n submitButtonLabelProp ?? t(\"neetoatoms.alert.continue\", \"Continue\");\n const cancelButtonLabel =\n cancelButtonLabelProp ?? t(\"neetoatoms.alert.cancel\", \"Cancel\");\n const baseId = useId();\n const titleId = `alert-title-${baseId}`;\n const messageId = `alert-message-${baseId}`;\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n // Custom focus ref takes highest priority\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n } else if (initialFocusElement === \"submit\" && submitButtonRef.current) {\n e.preventDefault();\n submitButtonRef.current.focus();\n } else if (initialFocusElement === \"cancel\" && cancelButtonRef.current) {\n e.preventDefault();\n cancelButtonRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <DialogContent\n ref={ref}\n role=\"alertdialog\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={message ? messageId : undefined}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"alert-box\"\n {...otherProps}\n >\n <DialogHeader>\n <DialogTitle\n id={titleId}\n data-testid=\"alert-title\"\n className=\"text-2xl font-semibold\"\n >\n {title}\n </DialogTitle>\n {message && (\n <DialogDescription id={messageId} data-testid=\"alert-message\">\n {message}\n </DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n {!hideCancelButton && (\n <Button\n ref={cancelButtonRef}\n variant=\"outline\"\n label={cancelButtonLabel}\n onClick={onClose}\n data-testid=\"alert-cancel-button\"\n />\n )}\n <Button\n ref={submitButtonRef}\n variant={STYLE_VARIANT_MAP[style]}\n label={submitButtonLabel}\n loading={isSubmitting}\n disabled={isSubmitting || !isOpen}\n onClick={onSubmit}\n data-testid=\"alert-submit-button\"\n />\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"names":["forwardRef","useTranslation","useId","useRef","_jsx","Dialog","_jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var utils = require('../utils-CTr7wn5d.js');
6
+ var primitives_Avatar = require('../primitives/Avatar.js');
7
+ var primitives_Tooltip = require('../primitives/Tooltip.js');
8
+ require('../index-CGUGhyIp.js');
9
+ require('../index-lWVw05cs.js');
10
+ require('../index-CCdG4z4E.js');
11
+ require('../index-DMbj7vXd.js');
12
+ require('react-dom');
13
+ require('../index-D-iDn9RI.js');
14
+ require('../index-DnKJmaCq.js');
15
+ require('../index-BrpkRQoS.js');
16
+ require('../tooltip-C-568jEL.js');
17
+ require('../index-COPkC3I5.js');
18
+ require('../index-Bvu9MiFi.js');
19
+ require('../index-BwAq9ba8.js');
20
+ require('../index-C9ICrOhM.js');
21
+ require('../floating-ui.react-dom-B4Aw6O7R.js');
22
+ require('../index-Bf0WsHta.js');
23
+ require('../index-Df-Ffa3s.js');
24
+ require('../index-DcCSSgb7.js');
25
+ require('../index-CyrAgb4H.js');
26
+ require('../index-CB9xFokC.js');
27
+
28
+ // ---------------------------------------------------------------------------
29
+ // Helpers
30
+ // ---------------------------------------------------------------------------
31
+ const STATUS_COLOR_MAP = {
32
+ online: "bg-emerald-500 dark:bg-emerald-400",
33
+ idle: "bg-amber-500 dark:bg-amber-400",
34
+ offline: "bg-gray-400 dark:bg-gray-500",
35
+ };
36
+ const SIDE_MAP = {
37
+ top: "top",
38
+ bottom: "bottom",
39
+ left: "left",
40
+ right: "right",
41
+ auto: "bottom",
42
+ };
43
+ const XL_CLASSES = "data-[size=lg]:size-16 [&>[data-slot=avatar-badge]]:size-4 [&>[data-slot=avatar-fallback]]:text-lg";
44
+ function getInitials(name) {
45
+ if (!name)
46
+ return "";
47
+ return name
48
+ .split(/\s+/)
49
+ .slice(0, 2)
50
+ .map(word => word.charAt(0).toUpperCase())
51
+ .join("");
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Component
55
+ // ---------------------------------------------------------------------------
56
+ const Avatar = React.forwardRef(({ user, status, showTooltip = false, tooltipProps, size = "default", className, ...otherProps }, ref) => {
57
+ const initials = getInitials(user?.name);
58
+ const isXl = size === "xl";
59
+ const primitiveSize = isXl ? "lg" : size;
60
+ const avatarElement = (jsxRuntime.jsxs(primitives_Avatar.Avatar, { ref: ref, size: primitiveSize, className: utils.cn(isXl && XL_CLASSES, className), ...otherProps, children: [user?.imageUrl && (jsxRuntime.jsx(primitives_Avatar.AvatarImage, { src: user.imageUrl, alt: user?.name ?? "" })), jsxRuntime.jsx(primitives_Avatar.AvatarFallback, { children: initials }), status && jsxRuntime.jsx(primitives_Avatar.AvatarBadge, { className: utils.cn(STATUS_COLOR_MAP[status]) })] }));
61
+ const tooltipContent = tooltipProps?.content ?? (showTooltip ? user?.name : null);
62
+ if (tooltipContent) {
63
+ const side = SIDE_MAP[tooltipProps?.position ?? "auto"] ?? "bottom";
64
+ return (jsxRuntime.jsx(primitives_Tooltip.TooltipProvider, { delayDuration: 0, children: jsxRuntime.jsxs(primitives_Tooltip.Tooltip, { children: [jsxRuntime.jsx(primitives_Tooltip.TooltipTrigger, { asChild: true, children: jsxRuntime.jsx("span", { className: "inline-flex", children: avatarElement }) }), jsxRuntime.jsx(primitives_Tooltip.TooltipContent, { side: side, children: tooltipContent })] }) }));
65
+ }
66
+ return avatarElement;
67
+ });
68
+ Avatar.displayName = "Avatar";
69
+ const AvatarNamespace = Object.assign(Avatar, {
70
+ Group: primitives_Avatar.AvatarGroup,
71
+ GroupCount: primitives_Avatar.AvatarGroupCount,
72
+ });
73
+
74
+ exports.Avatar = AvatarNamespace;
75
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sources":["../../../../src/components/Avatar.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Avatar as PrimitiveAvatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\n} from \"src/primitives/Avatar\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype AvatarSize = \"sm\" | \"default\" | \"lg\" | \"xl\";\n\ninterface AvatarTooltipProps {\n /** Tooltip content. Defaults to user.name if showTooltip is true. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\nexport interface AvatarProps extends Omit<\n React.ComponentProps<typeof PrimitiveAvatar>,\n \"size\"\n> {\n /** User data for the avatar. */\n user?: { name?: string; imageUrl?: string };\n /** Status indicator displayed as a colored badge. */\n status?: \"online\" | \"idle\" | \"offline\" | null;\n /** Show the user's name in a tooltip on hover. */\n showTooltip?: boolean;\n /** Tooltip configuration. Overrides showTooltip content. */\n tooltipProps?: AvatarTooltipProps;\n /** Size of the avatar. */\n size?: AvatarSize;\n /** Additional CSS class names. */\n className?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst STATUS_COLOR_MAP: Record<string, string> = {\n online: \"bg-emerald-500 dark:bg-emerald-400\",\n idle: \"bg-amber-500 dark:bg-amber-400\",\n offline: \"bg-gray-400 dark:bg-gray-500\",\n};\n\nconst SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"bottom\",\n};\n\nconst XL_CLASSES =\n \"data-[size=lg]:size-16 [&>[data-slot=avatar-badge]]:size-4 [&>[data-slot=avatar-fallback]]:text-lg\";\n\nfunction getInitials(name?: string): string {\n if (!name) return \"\";\n\n return name\n .split(/\\s+/)\n .slice(0, 2)\n .map(word => word.charAt(0).toUpperCase())\n .join(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n user,\n status,\n showTooltip = false,\n tooltipProps,\n size = \"default\",\n className,\n ...otherProps\n },\n ref\n ) => {\n const initials = getInitials(user?.name);\n const isXl = size === \"xl\";\n const primitiveSize = isXl ? \"lg\" : size;\n\n const avatarElement = (\n <PrimitiveAvatar\n ref={ref}\n size={primitiveSize}\n className={cn(isXl && XL_CLASSES, className)}\n {...otherProps}\n >\n {user?.imageUrl && (\n <AvatarImage src={user.imageUrl} alt={user?.name ?? \"\"} />\n )}\n <AvatarFallback>{initials}</AvatarFallback>\n {status && <AvatarBadge className={cn(STATUS_COLOR_MAP[status])} />}\n </PrimitiveAvatar>\n );\n\n const tooltipContent =\n tooltipProps?.content ?? (showTooltip ? user?.name : null);\n\n if (tooltipContent) {\n const side = SIDE_MAP[tooltipProps?.position ?? \"auto\"] ?? \"bottom\";\n\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{avatarElement}</span>\n </TooltipTrigger>\n <TooltipContent side={side}>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return avatarElement;\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nconst AvatarNamespace = Object.assign(Avatar, {\n Group: AvatarGroup,\n GroupCount: AvatarGroupCount,\n});\n\nexport { AvatarNamespace as Avatar };\n"],"names":["forwardRef","_jsxs","PrimitiveAvatar","cn","_jsx","AvatarImage","AvatarFallback","AvatarBadge","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","AvatarGroup","AvatarGroupCount"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
+ var reactI18next = require('react-i18next');
5
6
  var utils = require('../utils-CTr7wn5d.js');
6
7
  var renderIcon = require('../renderIcon-fLF3odqg.js');
7
8
  var primitives_Badge = require('../primitives/Badge.js');
@@ -57,13 +58,14 @@ const INDICATOR_COLORS = {
57
58
  // Component
58
59
  // ---------------------------------------------------------------------------
59
60
  const Badge = React.forwardRef(({ variant = "default", size = "default", label, icon, iconPosition = "left", indicator, onDismiss, disabled = false, className, asChild = false, children, ...otherProps }, ref) => {
61
+ const { t } = reactI18next.useTranslation();
60
62
  if (asChild) {
61
63
  return (jsxRuntime.jsx(primitives_Badge.Badge, { ref: ref, asChild: true, variant: variant, size: size, className: className, ...otherProps, children: children }));
62
64
  }
63
65
  const renderLabel = label || children;
64
66
  const iconElement = icon ? renderIcon.renderIcon(icon) : null;
65
67
  const hasDismiss = !!onDismiss && !disabled;
66
- return (jsxRuntime.jsxs(primitives_Badge.Badge, { ref: ref, variant: variant, size: size, className: utils.cn(disabled && "opacity-50 pointer-events-none", icon && iconPosition === "left" && SIZE_CONFIG[size].iconPl, icon && iconPosition === "right" && SIZE_CONFIG[size].iconPr, hasDismiss && SIZE_CONFIG[size].dismissPr, className), ...otherProps, children: [indicator && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: utils.cn("size-1.5 shrink-0 rounded-full", INDICATOR_COLORS[indicator]) })), iconPosition === "left" && iconElement, renderLabel, iconPosition === "right" && iconElement, onDismiss && !disabled && (jsxRuntime.jsx("button", { type: "button", "aria-label": "Dismiss", onClick: onDismiss, className: utils.cn("inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", SIZE_CONFIG[size].btnSize), children: jsxRuntime.jsx(x.X, { className: SIZE_CONFIG[size].iconSize }) }))] }));
68
+ return (jsxRuntime.jsxs(primitives_Badge.Badge, { ref: ref, variant: variant, size: size, className: utils.cn(disabled && "opacity-50 pointer-events-none", icon && iconPosition === "left" && SIZE_CONFIG[size].iconPl, icon && iconPosition === "right" && SIZE_CONFIG[size].iconPr, hasDismiss && SIZE_CONFIG[size].dismissPr, className), ...otherProps, children: [indicator && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: utils.cn("size-1.5 shrink-0 rounded-full", INDICATOR_COLORS[indicator]) })), iconPosition === "left" && iconElement, renderLabel, iconPosition === "right" && iconElement, onDismiss && !disabled && (jsxRuntime.jsx("button", { type: "button", "aria-label": t("neetoatoms.badge.dismiss", "Dismiss"), onClick: onDismiss, className: utils.cn("inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", SIZE_CONFIG[size].btnSize), children: jsxRuntime.jsx(x.X, { className: SIZE_CONFIG[size].iconSize }) }))] }));
67
69
  });
68
70
  Badge.displayName = "Badge";
69
71
 
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sources":["../../../../src/components/Badge.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Badge as PrimitiveBadge } from \"src/primitives/Badge\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"gray\"\n | \"gray-subtle\"\n | \"blue\"\n | \"blue-subtle\"\n | \"purple\"\n | \"purple-subtle\"\n | \"amber\"\n | \"amber-subtle\"\n | \"red\"\n | \"red-subtle\"\n | \"pink\"\n | \"pink-subtle\"\n | \"green\"\n | \"green-subtle\"\n | \"teal\"\n | \"teal-subtle\";\n\ntype BadgeSize = \"sm\" | \"default\" | \"lg\";\n\ntype IndicatorVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"blue\"\n | \"green\"\n | \"amber\"\n | \"red\"\n | \"purple\"\n | \"pink\"\n | \"teal\"\n | \"gray\";\n\nexport interface BadgeProps extends Omit<\n React.ComponentProps<\"span\">,\n \"children\"\n> {\n /** Visual variant of the badge. */\n variant?: BadgeVariant;\n /** Size of the badge. */\n size?: BadgeSize;\n /** Text label rendered inside the badge. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: \"left\" | \"right\";\n /** Colored status indicator dot. */\n indicator?: IndicatorVariant;\n /** Callback when the badge is dismissed. Renders a dismiss button when provided. */\n onDismiss?: () => void;\n /** Disables the badge and hides the dismiss button. */\n disabled?: boolean;\n /** Render as a custom element (polymorphic via Radix Slot). */\n asChild?: boolean;\n /** Children rendered inside the badge (fallback for `label`). */\n children?: ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Size config\n// ---------------------------------------------------------------------------\n\nconst SIZE_CONFIG = {\n sm: {\n iconPl: \"pl-1\",\n iconPr: \"pr-1\",\n dismissPr: \"pr-0.5\",\n btnSize: \"size-3\",\n iconSize: \"size-2\",\n },\n default: {\n iconPl: \"pl-1.5\",\n iconPr: \"pr-1.5\",\n dismissPr: \"pr-1\",\n btnSize: \"size-3.5\",\n iconSize: \"size-2.5\",\n },\n lg: {\n iconPl: \"pl-2\",\n iconPr: \"pr-2\",\n dismissPr: \"pr-1\",\n btnSize: \"size-4.5\",\n iconSize: \"size-3\",\n },\n};\n\n// ---------------------------------------------------------------------------\n// Indicator colors\n// ---------------------------------------------------------------------------\n\nconst INDICATOR_COLORS: Record<IndicatorVariant, string> = {\n default: \"bg-primary\",\n secondary: \"bg-muted-foreground\",\n destructive: \"bg-destructive\",\n blue: \"bg-blue-600\",\n green: \"bg-green-600\",\n amber: \"bg-amber-400\",\n red: \"bg-red-600\",\n purple: \"bg-purple-700\",\n pink: \"bg-pink-600\",\n teal: \"bg-teal-600\",\n gray: \"bg-gray-400\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon,\n iconPosition = \"left\",\n indicator,\n onDismiss,\n disabled = false,\n className,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n if (asChild) {\n return (\n <PrimitiveBadge\n ref={ref}\n asChild\n variant={variant}\n size={size}\n className={className}\n {...otherProps}\n >\n {children}\n </PrimitiveBadge>\n );\n }\n\n const renderLabel = label || children;\n const iconElement = icon ? renderIcon(icon) : null;\n\n const hasDismiss = !!onDismiss && !disabled;\n\n return (\n <PrimitiveBadge\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n disabled && \"opacity-50 pointer-events-none\",\n icon && iconPosition === \"left\" && SIZE_CONFIG[size].iconPl,\n icon && iconPosition === \"right\" && SIZE_CONFIG[size].iconPr,\n hasDismiss && SIZE_CONFIG[size].dismissPr,\n className\n )}\n {...otherProps}\n >\n {indicator && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"size-1.5 shrink-0 rounded-full\",\n INDICATOR_COLORS[indicator]\n )}\n />\n )}\n {iconPosition === \"left\" && iconElement}\n {renderLabel}\n {iconPosition === \"right\" && iconElement}\n {onDismiss && !disabled && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n SIZE_CONFIG[size].btnSize\n )}\n >\n <X className={SIZE_CONFIG[size].iconSize} />\n </button>\n )}\n </PrimitiveBadge>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };\n"],"names":["forwardRef","_jsx","PrimitiveBadge","renderIcon","_jsxs","cn","X"],"mappings":"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"}
1
+ {"version":3,"file":"Badge.js","sources":["../../../../src/components/Badge.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { X } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Badge as PrimitiveBadge } from \"src/primitives/Badge\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"gray\"\n | \"gray-subtle\"\n | \"blue\"\n | \"blue-subtle\"\n | \"purple\"\n | \"purple-subtle\"\n | \"amber\"\n | \"amber-subtle\"\n | \"red\"\n | \"red-subtle\"\n | \"pink\"\n | \"pink-subtle\"\n | \"green\"\n | \"green-subtle\"\n | \"teal\"\n | \"teal-subtle\";\n\ntype BadgeSize = \"sm\" | \"default\" | \"lg\";\n\ntype IndicatorVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"blue\"\n | \"green\"\n | \"amber\"\n | \"red\"\n | \"purple\"\n | \"pink\"\n | \"teal\"\n | \"gray\";\n\nexport interface BadgeProps extends Omit<\n React.ComponentProps<\"span\">,\n \"children\"\n> {\n /** Visual variant of the badge. */\n variant?: BadgeVariant;\n /** Size of the badge. */\n size?: BadgeSize;\n /** Text label rendered inside the badge. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: \"left\" | \"right\";\n /** Colored status indicator dot. */\n indicator?: IndicatorVariant;\n /** Callback when the badge is dismissed. Renders a dismiss button when provided. */\n onDismiss?: () => void;\n /** Disables the badge and hides the dismiss button. */\n disabled?: boolean;\n /** Render as a custom element (polymorphic via Radix Slot). */\n asChild?: boolean;\n /** Children rendered inside the badge (fallback for `label`). */\n children?: ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Size config\n// ---------------------------------------------------------------------------\n\nconst SIZE_CONFIG = {\n sm: {\n iconPl: \"pl-1\",\n iconPr: \"pr-1\",\n dismissPr: \"pr-0.5\",\n btnSize: \"size-3\",\n iconSize: \"size-2\",\n },\n default: {\n iconPl: \"pl-1.5\",\n iconPr: \"pr-1.5\",\n dismissPr: \"pr-1\",\n btnSize: \"size-3.5\",\n iconSize: \"size-2.5\",\n },\n lg: {\n iconPl: \"pl-2\",\n iconPr: \"pr-2\",\n dismissPr: \"pr-1\",\n btnSize: \"size-4.5\",\n iconSize: \"size-3\",\n },\n};\n\n// ---------------------------------------------------------------------------\n// Indicator colors\n// ---------------------------------------------------------------------------\n\nconst INDICATOR_COLORS: Record<IndicatorVariant, string> = {\n default: \"bg-primary\",\n secondary: \"bg-muted-foreground\",\n destructive: \"bg-destructive\",\n blue: \"bg-blue-600\",\n green: \"bg-green-600\",\n amber: \"bg-amber-400\",\n red: \"bg-red-600\",\n purple: \"bg-purple-700\",\n pink: \"bg-pink-600\",\n teal: \"bg-teal-600\",\n gray: \"bg-gray-400\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon,\n iconPosition = \"left\",\n indicator,\n onDismiss,\n disabled = false,\n className,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n\n if (asChild) {\n return (\n <PrimitiveBadge\n ref={ref}\n asChild\n variant={variant}\n size={size}\n className={className}\n {...otherProps}\n >\n {children}\n </PrimitiveBadge>\n );\n }\n\n const renderLabel = label || children;\n const iconElement = icon ? renderIcon(icon) : null;\n\n const hasDismiss = !!onDismiss && !disabled;\n\n return (\n <PrimitiveBadge\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n disabled && \"opacity-50 pointer-events-none\",\n icon && iconPosition === \"left\" && SIZE_CONFIG[size].iconPl,\n icon && iconPosition === \"right\" && SIZE_CONFIG[size].iconPr,\n hasDismiss && SIZE_CONFIG[size].dismissPr,\n className\n )}\n {...otherProps}\n >\n {indicator && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"size-1.5 shrink-0 rounded-full\",\n INDICATOR_COLORS[indicator]\n )}\n />\n )}\n {iconPosition === \"left\" && iconElement}\n {renderLabel}\n {iconPosition === \"right\" && iconElement}\n {onDismiss && !disabled && (\n <button\n type=\"button\"\n aria-label={t(\"neetoatoms.badge.dismiss\", \"Dismiss\")}\n onClick={onDismiss}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n SIZE_CONFIG[size].btnSize\n )}\n >\n <X className={SIZE_CONFIG[size].iconSize} />\n </button>\n )}\n </PrimitiveBadge>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };\n"],"names":["forwardRef","useTranslation","_jsx","PrimitiveBadge","renderIcon","_jsxs","cn","X"],"mappings":"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"}
@@ -11,6 +11,7 @@ require('../button-B8XGl69v.js');
11
11
  require('../index-BZhTddX0.js');
12
12
  require('../index-DuNgWCXZ.js');
13
13
  require('../index-D-iDn9RI.js');
14
+ require('react-i18next');
14
15
  require('../loader-circle-Bw7zP2Gn.js');
15
16
  require('../createLucideIcon-D0tRgV6l.js');
16
17
  require('../tooltip-C-568jEL.js');
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, type MouseEvent } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { Spinner } from \"src/primitives/Spinner\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype ButtonVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"ghost\"\n | \"link\";\n\ntype ButtonSize =\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n\ntype IconPosition = \"left\" | \"right\";\n\ntype ButtonType = \"button\" | \"reset\" | \"submit\";\n\ninterface ButtonTooltipProps {\n content?: ReactNode;\n position?: string;\n disabled?: boolean;\n}\n\nexport interface ButtonProps {\n /** Visual variant of the button. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Text label rendered inside the button. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: IconPosition;\n /** Show a loading spinner and prevent clicks. */\n loading?: boolean;\n /** Disable the button. */\n disabled?: boolean;\n /** Click handler. */\n onClick?: (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /** Internal route (react-router `Link`). */\n to?: string;\n /** External URL (renders an anchor tag). */\n href?: string;\n /** HTML button type attribute. */\n type?: ButtonType;\n /** Stretch the button to fill its container. */\n fullWidth?: boolean;\n /** Additional CSS class names. */\n className?: string;\n /** Props forwarded to a wrapping Tooltip. */\n tooltipProps?: ButtonTooltipProps | null;\n /** Render as a custom element (polymorphic). */\n asChild?: boolean;\n /** Children rendered inside the button (fallback for `label`). */\n children?: ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Mappings\n// ---------------------------------------------------------------------------\n\nconst ICON_ONLY_SIZE_MAP: Partial<Record<ButtonSize, ButtonSize>> = {\n xs: \"icon-xs\",\n sm: \"icon-sm\",\n default: \"icon\",\n lg: \"icon-lg\",\n};\n\nconst SPINNER_SIZE_MAP: Record<ButtonSize, string> = {\n xs: \"size-3\",\n sm: \"size-3.5\",\n default: \"size-3.5\",\n lg: \"size-4\",\n icon: \"size-3.5\",\n \"icon-xs\": \"size-3\",\n \"icon-sm\": \"size-3.5\",\n \"icon-lg\": \"size-4\",\n};\n\n// Map NeetoUI tooltip `position` values to Radix side values\nconst TOOLTIP_SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon = null,\n iconPosition = \"right\",\n loading = false,\n disabled = false,\n onClick,\n to,\n href,\n type = \"button\",\n fullWidth = false,\n className,\n tooltipProps = null,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n const isIconSize = size.startsWith(\"icon\");\n const renderLabel = isIconSize ? null : label || children;\n const isIconOnly = !renderLabel && !!icon;\n const resolvedSize = isIconOnly ? (ICON_ONLY_SIZE_MAP[size] ?? size) : size;\n\n // --- Loading / disabled state ---\n const isDisabled = disabled || loading;\n\n // --- Click handler ---\n const handleClick = (\n e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n if (loading || disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // --- Icon elements ---\n const iconElement = icon ? renderIcon(icon) : null;\n\n // --- Build the inner content ---\n const buttonContent = (\n <>\n {loading && (\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <Spinner\n aria-hidden=\"true\"\n className={SPINNER_SIZE_MAP[resolvedSize]}\n />\n </span>\n )}\n <span\n className={cn(\n \"inline-flex items-center gap-1.5\",\n loading && \"invisible\"\n )}\n >\n {iconPosition === \"left\" && iconElement && (\n <span data-icon=\"inline-start\">{iconElement}</span>\n )}\n {renderLabel && <span>{renderLabel}</span>}\n {iconPosition === \"right\" && iconElement && (\n <span data-icon=\"inline-end\">{iconElement}</span>\n )}\n </span>\n </>\n );\n\n // --- Merged className ---\n const mergedClassName = cn(\n fullWidth && \"w-full\",\n loading && \"relative pointer-events-none\",\n className\n );\n\n // --- Determine render element ---\n let buttonElement: ReactNode;\n\n if (asChild) {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n {children}\n </PrimitiveButton>\n );\n } else if (!disabled && to) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={to}\n onClick={handleClick}\n >\n {buttonContent}\n </a>\n </PrimitiveButton>\n );\n } else if (!disabled && href) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n onClick={handleClick}\n >\n {buttonContent}\n </a>\n </PrimitiveButton>\n );\n } else {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n type={type}\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n onClick={handleClick}\n {...otherProps}\n >\n {buttonContent}\n </PrimitiveButton>\n );\n }\n\n // --- Tooltip wrapper ---\n if (tooltipProps) {\n const { content, position, disabled: tooltipDisabled } = tooltipProps;\n\n if (tooltipDisabled || !content) {\n return <>{buttonElement}</>;\n }\n\n const side = position ? TOOLTIP_SIDE_MAP[position] : undefined;\n\n // Wrap disabled buttons in a span so tooltip still triggers\n const triggerContent = isDisabled ? (\n <span className=\"inline-flex\">{buttonElement}</span>\n ) : (\n buttonElement\n );\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{triggerContent}</TooltipTrigger>\n <TooltipContent side={side}>{content}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <>{buttonElement}</>;\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n"],"names":["forwardRef","renderIcon","_jsxs","_Fragment","_jsx","Spinner","cn","PrimitiveButton","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA;AACA;AACA;AAEA,MAAM,kBAAkB,GAA4C;AAClE,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,EAAE,EAAE,SAAS;CACd;AAED,MAAM,gBAAgB,GAA+B;AACnD,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,SAAS,EAAE,QAAQ;CACpB;AAED;AACA,MAAM,gBAAgB,GAAwD;AAC5E,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,WAAW,EAAE,OAAO;CACrB;AAED;AACA;AACA;AAEA,MAAM,MAAM,GAAGA,gBAAU,CACvB,CACE,EACE,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,KAAK,EACL,IAAI,GAAG,IAAI,EACX,YAAY,GAAG,OAAO,EACtB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,QAAQ,EACf,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,YAAY,GAAG,IAAI,EACnB,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,GAAG,UAAU,EACd,EACD,GAAG,KACD;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC1C,IAAA,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,IAAI,QAAQ;IACzD,MAAM,UAAU,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI;AACzC,IAAA,MAAM,YAAY,GAAG,UAAU,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI;;AAG3E,IAAA,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO;;AAGtC,IAAA,MAAM,WAAW,GAAG,CAClB,CAAoD,KAClD;AACF,QAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;YACvB,CAAC,CAAC,cAAc,EAAE;YAClB;QACF;AACA,QAAA,OAAO,GAAG,CAAC,CAAC;AACd,IAAA,CAAC;;AAGD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAGC,qBAAU,CAAC,IAAI,CAAC,GAAG,IAAI;;AAGlD,IAAA,MAAM,aAAa,IACjBC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,OAAO,KACNC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mDAAmD,EAAA,QAAA,EACjEA,cAAA,CAACC,0BAAO,mBACM,MAAM,EAClB,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAA,CACzC,GACG,CACR,EACDH,eAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAEI,QAAE,CACX,kCAAkC,EAClC,OAAO,IAAI,WAAW,CACvB,EAAA,QAAA,EAAA,CAEA,YAAY,KAAK,MAAM,IAAI,WAAW,KACrCF,cAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,cAAc,EAAA,QAAA,EAAE,WAAW,EAAA,CAAQ,CACpD,EACA,WAAW,IAAIA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,WAAW,EAAA,CAAQ,EACzC,YAAY,KAAK,OAAO,IAAI,WAAW,KACtCA,cAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,YAAY,EAAA,QAAA,EAAE,WAAW,EAAA,CAAQ,CAClD,CAAA,EAAA,CACI,CAAA,EAAA,CACN,CACJ;;AAGD,IAAA,MAAM,eAAe,GAAGE,QAAE,CACxB,SAAS,IAAI,QAAQ,EACrB,OAAO,IAAI,8BAA8B,EACzC,SAAS,CACV;;AAGD,IAAA,IAAI,aAAwB;IAE5B,IAAI,OAAO,EAAE;AACX,QAAA,aAAa,IACXF,cAAA,CAACG,wBAAe,IACd,GAAG,EAAE,GAAG,EACR,OAAO,EAAA,IAAA,EACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,UAAU,EAAA,GAChB,UAAU,EAAA,QAAA,EAEb,QAAQ,EAAA,CACO,CACnB;IACH;AAAO,SAAA,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;AAC1B,QAAA,aAAa,IACXH,cAAA,CAACG,wBAAe,EAAA,EACd,OAAO,QACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,UAAU,EAAA,GAChB,UAAU,EAAA,QAAA,EAEdH,cAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,GAAmC,EACxC,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,WAAW,EAAA,QAAA,EAEnB,aAAa,EAAA,CACZ,EAAA,CACY,CACnB;IACH;AAAO,SAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC5B,QAAA,aAAa,IACXA,cAAA,CAACG,wBAAe,EAAA,EACd,OAAO,QACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,UAAU,EAAA,GAChB,UAAU,EAAA,QAAA,EAEdH,cAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,GAAmC,EACxC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EAAA,QAAA,EAEnB,aAAa,EAAA,CACZ,EAAA,CACY,CACnB;IACH;SAAO;AACL,QAAA,aAAa,IACXA,cAAA,CAACG,wBAAe,EAAA,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,WAAW,EAAA,GAChB,UAAU,YAEb,aAAa,EAAA,CACE,CACnB;IACH;;IAGA,IAAI,YAAY,EAAE;QAChB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,YAAY;AAErE,QAAA,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAOH,cAAA,CAAAD,mBAAA,EAAA,EAAA,QAAA,EAAG,aAAa,EAAA,CAAI;QAC7B;AAEA,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,SAAS;;QAG9D,MAAM,cAAc,GAAG,UAAU,IAC/BC,yBAAM,SAAS,EAAC,aAAa,EAAA,QAAA,EAAE,aAAa,GAAQ,KAEpD,aAAa,CACd;QAED,QACEA,cAAA,CAACI,kCAAe,EAAA,EAAA,QAAA,EACdN,eAAA,CAACO,0BAAO,EAAA,EAAA,QAAA,EAAA,CACNL,cAAA,CAACM,iCAAc,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EAAE,cAAc,EAAA,CAAkB,EACzDN,cAAA,CAACO,iCAAc,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,QAAA,EAAG,OAAO,EAAA,CAAkB,CAAA,EAAA,CAC9C,EAAA,CACM;IAEtB;IAEA,OAAOP,cAAA,CAAAD,mBAAA,EAAA,EAAA,QAAA,EAAG,aAAa,EAAA,CAAI;AAC7B,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, type MouseEvent } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { Spinner } from \"src/primitives/Spinner\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype ButtonVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"ghost\"\n | \"link\";\n\ntype ButtonSize =\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n\ntype IconPosition = \"left\" | \"right\";\n\ntype ButtonType = \"button\" | \"reset\" | \"submit\";\n\ninterface ButtonTooltipProps {\n content?: ReactNode;\n position?: string;\n disabled?: boolean;\n}\n\nexport interface ButtonProps {\n /** Visual variant of the button. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Text label rendered inside the button. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: IconPosition;\n /** Show a loading spinner and prevent clicks. */\n loading?: boolean;\n /** Disable the button. */\n disabled?: boolean;\n /** Click handler. */\n onClick?: (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /** Internal route (react-router `Link`). */\n to?: string;\n /** External URL (renders an anchor tag). */\n href?: string;\n /** HTML button type attribute. */\n type?: ButtonType;\n /** Stretch the button to fill its container. */\n fullWidth?: boolean;\n /** Additional CSS class names. */\n className?: string;\n /** Props forwarded to a wrapping Tooltip. */\n tooltipProps?: ButtonTooltipProps | null;\n /** Render as a custom element (polymorphic). */\n asChild?: boolean;\n /** Children rendered inside the button (fallback for `label`). */\n children?: ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Mappings\n// ---------------------------------------------------------------------------\n\nconst ICON_ONLY_SIZE_MAP: Partial<Record<ButtonSize, ButtonSize>> = {\n xs: \"icon-xs\",\n sm: \"icon-sm\",\n default: \"icon\",\n lg: \"icon-lg\",\n};\n\nconst SPINNER_SIZE_MAP: Record<ButtonSize, string> = {\n xs: \"size-3\",\n sm: \"size-3.5\",\n default: \"size-3.5\",\n lg: \"size-4\",\n icon: \"size-3.5\",\n \"icon-xs\": \"size-3\",\n \"icon-sm\": \"size-3.5\",\n \"icon-lg\": \"size-4\",\n};\n\n// Map NeetoUI tooltip `position` values to Radix side values\nconst TOOLTIP_SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon = null,\n iconPosition = \"right\",\n loading = false,\n disabled = false,\n onClick,\n to,\n href,\n type = \"button\",\n fullWidth = false,\n className,\n tooltipProps = null,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n const isIconSize = size.startsWith(\"icon\");\n const renderLabel = isIconSize ? null : label || children;\n const isIconOnly = !renderLabel && !!icon;\n const resolvedSize = isIconOnly ? (ICON_ONLY_SIZE_MAP[size] ?? size) : size;\n\n // --- Loading / disabled state ---\n const isDisabled = disabled || loading;\n\n // --- Click handler ---\n const handleClick = (\n e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n if (loading || disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // --- Icon elements ---\n const iconElement = icon ? renderIcon(icon) : null;\n\n // --- Build the inner content ---\n const buttonContent = (\n <>\n {loading && (\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <Spinner\n aria-hidden=\"true\"\n className={SPINNER_SIZE_MAP[resolvedSize]}\n />\n </span>\n )}\n <span\n className={cn(\n \"inline-flex items-center gap-1.5\",\n loading && \"invisible\"\n )}\n >\n {iconPosition === \"left\" && iconElement && (\n <span data-icon=\"inline-start\">{iconElement}</span>\n )}\n {renderLabel && <span>{renderLabel}</span>}\n {iconPosition === \"right\" && iconElement && (\n <span data-icon=\"inline-end\">{iconElement}</span>\n )}\n </span>\n </>\n );\n\n // --- Merged className ---\n const mergedClassName = cn(\n fullWidth && \"w-full\",\n loading && \"relative pointer-events-none\",\n className\n );\n\n // --- Determine render element ---\n let buttonElement: ReactNode;\n\n if (asChild) {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n {children}\n </PrimitiveButton>\n );\n } else if (!disabled && to) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={to}\n onClick={handleClick}\n >\n {buttonContent}\n </a>\n </PrimitiveButton>\n );\n } else if (!disabled && href) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n onClick={handleClick}\n >\n {buttonContent}\n </a>\n </PrimitiveButton>\n );\n } else {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n type={type}\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n onClick={handleClick}\n {...otherProps}\n >\n {buttonContent}\n </PrimitiveButton>\n );\n }\n\n // --- Tooltip wrapper ---\n if (tooltipProps) {\n const { content, position, disabled: tooltipDisabled } = tooltipProps;\n\n if (tooltipDisabled || !content) {\n return <>{buttonElement}</>;\n }\n\n const side = position ? TOOLTIP_SIDE_MAP[position] : undefined;\n\n // Wrap disabled buttons in a span so tooltip still triggers\n const triggerContent = isDisabled ? (\n <span className=\"inline-flex\">{buttonElement}</span>\n ) : (\n buttonElement\n );\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{triggerContent}</TooltipTrigger>\n <TooltipContent side={side}>{content}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <>{buttonElement}</>;\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n"],"names":["forwardRef","renderIcon","_jsxs","_Fragment","_jsx","Spinner","cn","PrimitiveButton","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var primitives_Alert = require('../primitives/Alert.js');
6
+ var utils = require('../utils-CTr7wn5d.js');
7
+ var renderIcon = require('../renderIcon-fLF3odqg.js');
8
+ var createLucideIcon = require('../createLucideIcon-D0tRgV6l.js');
9
+ var triangleAlert = require('../triangle-alert-ZUMRpmzW.js');
10
+ require('../index-BZhTddX0.js');
11
+
12
+ /**
13
+ * @license lucide-react v0.577.0 - ISC
14
+ *
15
+ * This source code is licensed under the ISC license.
16
+ * See the LICENSE file in the root directory of this source tree.
17
+ */
18
+
19
+
20
+ const __iconNode$1 = [
21
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
22
+ ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
23
+ ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
24
+ ];
25
+ const CircleAlert = createLucideIcon.createLucideIcon("circle-alert", __iconNode$1);
26
+
27
+ /**
28
+ * @license lucide-react v0.577.0 - ISC
29
+ *
30
+ * This source code is licensed under the ISC license.
31
+ * See the LICENSE file in the root directory of this source tree.
32
+ */
33
+
34
+
35
+ const __iconNode = [
36
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
37
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
38
+ ];
39
+ const CircleCheckBig = createLucideIcon.createLucideIcon("circle-check-big", __iconNode);
40
+
41
+ // ---------------------------------------------------------------------------
42
+ // Variant config
43
+ // ---------------------------------------------------------------------------
44
+ const VARIANT_CONFIG = {
45
+ info: {
46
+ container: "border-0 bg-info text-info-foreground",
47
+ icon: triangleAlert.Info,
48
+ },
49
+ warning: {
50
+ container: "border-0 bg-warning text-warning-foreground",
51
+ icon: triangleAlert.TriangleAlert,
52
+ },
53
+ danger: {
54
+ container: "border-0 bg-error text-error-foreground",
55
+ icon: CircleAlert,
56
+ },
57
+ success: {
58
+ container: "border-0 bg-success text-success-foreground",
59
+ icon: CircleCheckBig,
60
+ },
61
+ };
62
+ // ---------------------------------------------------------------------------
63
+ // Component
64
+ // ---------------------------------------------------------------------------
65
+ const Callout = React.forwardRef(({ variant = "info", icon, title, children, className, ...otherProps }, ref) => {
66
+ const config = VARIANT_CONFIG[variant];
67
+ const resolvedIcon = icon ?? config.icon;
68
+ return (jsxRuntime.jsxs(primitives_Alert.Alert, { ref: ref, className: utils.cn(config.container, className), ...otherProps, children: [renderIcon.renderIcon(resolvedIcon, "size-4 shrink-0"), title && jsxRuntime.jsx(primitives_Alert.AlertTitle, { children: title }), children && (jsxRuntime.jsx(primitives_Alert.AlertDescription, { className: "text-current/80", children: children }))] }));
69
+ });
70
+ Callout.displayName = "Callout";
71
+
72
+ exports.Callout = Callout;
73
+ //# sourceMappingURL=Callout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Callout.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../../../src/components/Callout.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","import React, { forwardRef } from \"react\";\n\nimport {\n Alert as PrimitiveAlert,\n AlertTitle,\n AlertDescription,\n} from \"src/primitives/Alert\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n InfoIcon,\n AlertTriangleIcon,\n AlertCircleIcon,\n CheckCircleIcon,\n} from \"lucide-react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype CalloutVariant = \"info\" | \"warning\" | \"danger\" | \"success\";\n\ntype PrimitiveAlertProps = React.ComponentProps<typeof PrimitiveAlert>;\n\nexport interface CalloutProps extends Omit<PrimitiveAlertProps, \"variant\"> {\n /** Visual style of the callout. */\n variant?: CalloutVariant;\n /** Custom icon. Defaults to a variant-specific icon. */\n icon?: IconProp;\n /** Optional title rendered as AlertTitle. */\n title?: string;\n /** Content rendered as AlertDescription. */\n children?: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Variant config\n// ---------------------------------------------------------------------------\n\nconst VARIANT_CONFIG: Record<\n CalloutVariant,\n {\n container: string;\n icon: React.ComponentType<{ className?: string }>;\n }\n> = {\n info: {\n container: \"border-0 bg-info text-info-foreground\",\n icon: InfoIcon,\n },\n warning: {\n container: \"border-0 bg-warning text-warning-foreground\",\n icon: AlertTriangleIcon,\n },\n danger: {\n container: \"border-0 bg-error text-error-foreground\",\n icon: AlertCircleIcon,\n },\n success: {\n container: \"border-0 bg-success text-success-foreground\",\n icon: CheckCircleIcon,\n },\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n { variant = \"info\", icon, title, children, className, ...otherProps },\n ref\n ) => {\n const config = VARIANT_CONFIG[variant];\n const resolvedIcon = icon ?? config.icon;\n\n return (\n <PrimitiveAlert\n ref={ref}\n className={cn(config.container, className)}\n {...otherProps}\n >\n {renderIcon(resolvedIcon, \"size-4 shrink-0\")}\n {title && <AlertTitle>{title}</AlertTitle>}\n {children && (\n <AlertDescription className=\"text-current/80\">\n {children}\n </AlertDescription>\n )}\n </PrimitiveAlert>\n );\n }\n);\n\nCallout.displayName = \"Callout\";\n\nexport { Callout };\n"],"names":["__iconNode","createLucideIcon","InfoIcon","AlertTriangleIcon","AlertCircleIcon","CheckCircleIcon","forwardRef","_jsxs","PrimitiveAlert","cn","renderIcon","_jsx","AlertTitle","AlertDescription"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACpE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AACvE,CAAC;AACD,MAAM,WAAW,GAAGC,iCAAgB,CAAC,cAAc,EAAED,YAAU,CAAC;;ACdhE;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iCAAiC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE;AACjD,CAAC;AACD,MAAM,cAAc,GAAGC,iCAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC;;ACsBvE;AACA;AACA;AAEA,MAAM,cAAc,GAMhB;AACF,IAAA,IAAI,EAAE;AACJ,QAAA,SAAS,EAAE,uCAAuC;AAClD,QAAA,IAAI,EAAEC,kBAAQ;AACf,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,6CAA6C;AACxD,QAAA,IAAI,EAAEC,2BAAiB;AACxB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,SAAS,EAAE,yCAAyC;AACpD,QAAA,IAAI,EAAEC,WAAe;AACtB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,6CAA6C;AACxD,QAAA,IAAI,EAAEC,cAAe;AACtB,KAAA;CACF;AAED;AACA;AACA;AAEA,MAAM,OAAO,GAAGC,gBAAU,CACxB,CACE,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,EACrE,GAAG,KACD;AACF,IAAA,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC;AACtC,IAAA,MAAM,YAAY,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI;IAExC,QACEC,gBAACC,sBAAc,EAAA,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,QAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,KACtC,UAAU,EAAA,QAAA,EAAA,CAEbC,qBAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAC3C,KAAK,IAAIC,cAAA,CAACC,2BAAU,cAAE,KAAK,EAAA,CAAc,EACzC,QAAQ,KACPD,eAACE,iCAAgB,EAAA,EAAC,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAC1C,QAAQ,EAAA,CACQ,CACpB,CAAA,EAAA,CACc;AAErB,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;","x_google_ignoreList":[0,1]}
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var ColorPicker = require('../ColorPicker-DN8aynGh.js');
3
+ var ColorPicker = require('../ColorPicker-DEELmqH8.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
+ require('react-i18next');
7
+ require('react-colorful');
6
8
  require('../primitives/Button.js');
7
9
  require('../button-B8XGl69v.js');
8
10
  require('../index-BZhTddX0.js');
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ColorPicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var DataTable = require('../DataTable-BQt_mXDX.js');
3
+ var DataTable = require('../DataTable-CWs96k8n.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('../primitives/Table.js');
7
7
  require('../utils-CTr7wn5d.js');
8
+ require('react-i18next');
8
9
  require('../primitives/Checkbox.js');
9
10
  require('../check-BQgcDXys.js');
10
11
  require('../createLucideIcon-D0tRgV6l.js');
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DataTable.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -8,7 +8,8 @@ require('../button-B8XGl69v.js');
8
8
  require('../index-BZhTddX0.js');
9
9
  require('../index-DuNgWCXZ.js');
10
10
  require('../index-D-iDn9RI.js');
11
- require('../dialog-CF2GBHOG.js');
11
+ require('../dialog-Bvyrshz3.js');
12
+ require('react-i18next');
12
13
  require('../x-Brw3FJst.js');
13
14
  require('../createLucideIcon-D0tRgV6l.js');
14
15
  require('../index-BLGrl3PF.js');
@@ -40,7 +41,7 @@ const DialogBody = React.forwardRef(({ children, className, dataTestid, ...other
40
41
  DialogBody.displayName = "Dialog.Body";
41
42
  const DialogFooter = React.forwardRef(({ children, className, dataTestid, ...otherProps }, ref) => (jsxRuntime.jsx(primitives_Dialog.DialogFooter, { ref: ref, className: utils.cn(className), "data-testid": dataTestid ?? "dialog-footer", ...otherProps, children: children })));
42
43
  DialogFooter.displayName = "Dialog.Footer";
43
- const DialogTitle = React.forwardRef(({ children, className, ...otherProps }, ref) => (jsxRuntime.jsx(primitives_Dialog.DialogTitle, { ref: ref, className: utils.cn(className), ...otherProps, children: children })));
44
+ const DialogTitle = React.forwardRef(({ children, className, ...otherProps }, ref) => (jsxRuntime.jsx(primitives_Dialog.DialogTitle, { ref: ref, className: utils.cn("text-2xl font-semibold", className), ...otherProps, children: children })));
44
45
  DialogTitle.displayName = "Dialog.Title";
45
46
  // ---------------------------------------------------------------------------
46
47
  // Component