@intlayer/design-system 7.5.7 → 7.5.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 (149) hide show
  1. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
  2. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +9 -19
  3. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  4. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +2 -2
  5. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  6. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +28 -23
  7. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  8. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +3 -2
  9. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  10. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +28 -6
  11. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  12. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -0
  13. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  14. package/dist/esm/components/DictionaryFieldEditor/index.mjs +2 -1
  15. package/dist/esm/components/Form/FormLabel.mjs +1 -1
  16. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs +1 -1
  17. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs +1 -1
  18. package/dist/esm/components/Form/elements/MultiselectElement.mjs +1 -1
  19. package/dist/esm/components/Form/elements/SelectElement.mjs +1 -1
  20. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +1 -1
  21. package/dist/esm/components/Form/elements/TextAreaElement.mjs +1 -1
  22. package/dist/esm/components/IDE/CodeFormatSelector.mjs +1 -1
  23. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +1 -1
  24. package/dist/esm/components/IDE/PackageManagerSelector.mjs +1 -1
  25. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +8 -4
  26. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  27. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
  28. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -1
  29. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  30. package/dist/esm/components/Modal/Modal.mjs +2 -2
  31. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  32. package/dist/esm/components/RightDrawer/RightDrawer.mjs +83 -127
  33. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  34. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs +51 -0
  35. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -0
  36. package/dist/esm/components/Table/Table.mjs +1 -1
  37. package/dist/esm/components/index.mjs +12 -11
  38. package/dist/types/components/Badge/index.d.ts +2 -2
  39. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -3
  40. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  41. package/dist/types/components/Breadcrumb/index.d.ts +2 -2
  42. package/dist/types/components/Browser/Browser.d.ts +2 -2
  43. package/dist/types/components/Browser/browser.content.d.ts +17 -17
  44. package/dist/types/components/Browser/browser.content.d.ts.map +1 -1
  45. package/dist/types/components/Button/Button.d.ts +6 -6
  46. package/dist/types/components/Button/Button.d.ts.map +1 -1
  47. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  48. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  49. package/dist/types/components/Command/index.d.ts +17 -17
  50. package/dist/types/components/Command/index.d.ts.map +1 -1
  51. package/dist/types/components/Container/index.d.ts +7 -7
  52. package/dist/types/components/Container/index.d.ts.map +1 -1
  53. package/dist/types/components/CopyButton/CopyButton.content.d.ts +3 -3
  54. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts +0 -1
  55. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  56. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  57. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +25 -25
  58. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +9 -9
  59. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  60. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +33 -33
  61. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +25 -25
  62. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +25 -25
  63. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +33 -33
  64. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +9 -9
  65. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +3 -3
  66. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +5 -5
  67. package/dist/types/components/DictionaryFieldEditor/index.d.ts +2 -1
  68. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +31 -31
  69. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  70. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  71. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
  72. package/dist/types/components/Form/FormBase.d.ts +2 -2
  73. package/dist/types/components/Form/FormField.d.ts +2 -2
  74. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  75. package/dist/types/components/Form/FormItem.d.ts +2 -2
  76. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  77. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -2
  78. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  79. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -2
  80. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  81. package/dist/types/components/Form/elements/FormElement.d.ts +2 -2
  82. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  83. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
  84. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  85. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -2
  86. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -2
  87. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  88. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
  89. package/dist/types/components/IDE/CodeContext.d.ts +2 -2
  90. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  91. package/dist/types/components/IDE/code.content.d.ts +5 -5
  92. package/dist/types/components/IDE/copyCode.content.d.ts +5 -5
  93. package/dist/types/components/IDE/selectors.content.d.ts +7 -7
  94. package/dist/types/components/Input/Checkbox.d.ts +3 -3
  95. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  96. package/dist/types/components/Input/Input.d.ts +2 -2
  97. package/dist/types/components/Input/OTPInput.d.ts +6 -6
  98. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  99. package/dist/types/components/Input/SearchInput.d.ts +2 -2
  100. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  101. package/dist/types/components/Link/Link.d.ts +5 -5
  102. package/dist/types/components/Loader/index.content.d.ts +3 -3
  103. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  104. package/dist/types/components/Loader/spinner.d.ts +2 -2
  105. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  106. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +17 -17
  107. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  108. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +13 -13
  109. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  110. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  111. package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
  112. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  113. package/dist/types/components/Navbar/Burger.d.ts +2 -2
  114. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  115. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
  116. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  117. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
  118. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  119. package/dist/types/components/Navbar/index.d.ts +2 -2
  120. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  121. package/dist/types/components/Pagination/Pagination.d.ts +4 -4
  122. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  123. package/dist/types/components/Pagination/pagination.content.d.ts +11 -11
  124. package/dist/types/components/RightDrawer/RightDrawer.d.ts +7 -150
  125. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  126. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +93 -0
  127. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -0
  128. package/dist/types/components/Select/Select.d.ts +3 -3
  129. package/dist/types/components/Select/Select.d.ts.map +1 -1
  130. package/dist/types/components/SocialNetworks/index.d.ts +2 -2
  131. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  132. package/dist/types/components/SwitchSelector/index.d.ts +7 -7
  133. package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
  134. package/dist/types/components/Tab/Tab.d.ts +6 -6
  135. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  136. package/dist/types/components/Tab/TabContext.d.ts +2 -2
  137. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  138. package/dist/types/components/TabSelector/TabSelector.d.ts +5 -5
  139. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  140. package/dist/types/components/Table/table.content.d.ts +3 -3
  141. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  142. package/dist/types/components/Tag/index.d.ts +3 -3
  143. package/dist/types/components/Terminal/terminal.content.d.ts +5 -5
  144. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  145. package/dist/types/components/Toaster/Toast.d.ts +2 -2
  146. package/dist/types/components/Toaster/Toaster.d.ts +2 -2
  147. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  148. package/dist/types/components/index.d.ts +2 -1
  149. package/package.json +14 -14
@@ -4,101 +4,19 @@ import { Container } from "../Container/index.mjs";
4
4
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
5
  import { useDevice } from "../../hooks/useDevice.mjs";
6
6
  import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
7
+ import { Popover } from "../Popover/dynamic.mjs";
8
+ import { KeyboardShortcut } from "../KeyboardShortcut/KeyboardShortcut.mjs";
7
9
  import { MaxWidthSmoother } from "../MaxWidthSmoother/index.mjs";
8
10
  import { isElementAtTopAndNotCovered } from "./isElementAtTopAndNotCovered.mjs";
9
11
  import { useRightDrawerStore } from "./useRightDrawerStore.mjs";
10
12
  import { ChevronLeft, X } from "lucide-react";
11
13
  import { useEffect, useRef } from "react";
12
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
+ import { useIntlayer } from "react-intlayer";
13
16
 
14
17
  //#region src/components/RightDrawer/RightDrawer.tsx
15
- /**
16
- * RightDrawer - A slide-out drawer panel that appears from the right side of the screen
17
- *
18
- * A versatile drawer component that provides an overlay panel for displaying secondary content,
19
- * forms, details, or navigation. Features responsive design that adapts to mobile devices,
20
- * configurable close behavior, and integrated state management through Zustand store.
21
- *
22
- * ## Key Features
23
- * - **Responsive Design**: Full-width on mobile, fixed 400px width on desktop
24
- * - **State Management**: Built-in Zustand store for managing multiple drawer instances
25
- * - **Accessibility**: Proper ARIA attributes, keyboard navigation, and focus management
26
- * - **Flexible Layout**: Customizable header, title, and content areas
27
- * - **Click Outside**: Configurable outside click detection for auto-closing
28
- * - **Scroll Management**: Automatic body scroll blocking when open
29
- *
30
- * ## Use Cases
31
- * - Navigation menus and sidebars
32
- * - Detail panels and forms
33
- * - Settings and configuration interfaces
34
- * - Shopping carts and checkout processes
35
- * - User profiles and account management
36
- * - Multi-step workflows and wizards
37
- *
38
- * ## Accessibility
39
- * - **Focus Management**: Traps focus within the drawer when open
40
- * - **Keyboard Navigation**: Escape key closes the drawer
41
- * - **Screen Reader Support**: Proper ARIA labels and announcements
42
- * - **Touch Support**: Mobile-optimized touch interactions
43
- *
44
- * ## State Management
45
- * The component uses a Zustand store (`useRightDrawerStore`) to manage drawer state:
46
- * - Multiple drawers can be managed simultaneously using unique identifiers
47
- * - External components can open/close drawers using the store
48
- * - Supports both controlled (via props) and uncontrolled (via store) patterns
49
- *
50
- * @example
51
- * Basic usage with store management:
52
- * ```tsx
53
- * // Opening the drawer from another component
54
- * const { open } = useRightDrawerStore();
55
- *
56
- * <button onClick={() => open('user-menu')}>
57
- * Open Menu
58
- * </button>
59
- *
60
- * <RightDrawer identifier="user-menu" title="User Menu">
61
- * <nav>Navigation items here</nav>
62
- * </RightDrawer>
63
- * ```
64
- *
65
- * @example
66
- * Controlled drawer with external state:
67
- * ```tsx
68
- * const [showDrawer, setShowDrawer] = useState(false);
69
- *
70
- * <RightDrawer
71
- * identifier="controlled-drawer"
72
- * title="Settings"
73
- * isOpen={showDrawer}
74
- * onClose={() => setShowDrawer(false)}
75
- * closeOnOutsideClick={false}
76
- * >
77
- * <SettingsForm onSave={() => setShowDrawer(false)} />
78
- * </RightDrawer>
79
- * ```
80
- *
81
- * @example
82
- * Complex drawer with back button and header:
83
- * ```tsx
84
- * <RightDrawer
85
- * identifier="product-detail"
86
- * title="Product Details"
87
- * header={
88
- * <div className="text-sm text-gray-600">
89
- * SKU: {product.sku} | Stock: {product.stock}
90
- * </div>
91
- * }
92
- * backButton={{
93
- * text: "Back to Catalog",
94
- * onBack: () => navigate('/catalog')
95
- * }}
96
- * >
97
- * <ProductDetailView product={product} />
98
- * </RightDrawer>
99
- * ```
100
- */
101
- const RightDrawer = ({ title, identifier, children, header, closeOnOutsideClick = true, backButton, isOpen: isOpenProp, onClose }) => {
18
+ const RightDrawer = ({ title, identifier, children, header, footer, closeOnOutsideClick = true, backButton, isOpen: isOpenProp, onClose }) => {
19
+ const content = useIntlayer("right-drawer");
102
20
  const { isMobile } = useDevice("md");
103
21
  const panelRef = useRef(null);
104
22
  const childrenContainerRef = useRef(null);
@@ -161,6 +79,16 @@ const RightDrawer = ({ title, identifier, children, header, closeOnOutsideClick
161
79
  onClose?.();
162
80
  }
163
81
  };
82
+ const handleSpareSpaceKeyDown = (e) => {
83
+ if (e.target !== e.currentTarget) return;
84
+ if (e.key === "Enter" || e.key === " ") {
85
+ e.preventDefault();
86
+ if (isMobile) {
87
+ closeDrawer(identifier);
88
+ onClose?.();
89
+ }
90
+ }
91
+ };
164
92
  return /* @__PURE__ */ jsx("div", {
165
93
  className: "fixed top-0 right-0 z-50 flex h-full justify-end",
166
94
  children: /* @__PURE__ */ jsx(MaxWidthSmoother, {
@@ -170,47 +98,75 @@ const RightDrawer = ({ title, identifier, children, header, closeOnOutsideClick
170
98
  className: "relative flex h-screen w-screen flex-col text-text md:w-[400px]",
171
99
  ref: panelRef,
172
100
  roundedSize: "none",
173
- children: [/* @__PURE__ */ jsxs("div", {
174
- className: "flex flex-col gap-3 p-6",
175
- children: [
176
- /* @__PURE__ */ jsxs("div", {
177
- className: "flex justify-between gap-3",
178
- children: [/* @__PURE__ */ jsx("div", { children: backButton && /* @__PURE__ */ jsx(Button, {
179
- variant: ButtonVariant.HOVERABLE,
180
- color: ButtonColor.TEXT,
181
- label: backButton.text ?? "Go back",
182
- onClick: backButton.onBack,
183
- Icon: ChevronLeft,
184
- children: backButton?.text
185
- }) }), /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Button, {
186
- variant: ButtonVariant.HOVERABLE,
187
- color: ButtonColor.TEXT,
188
- label: "Close",
189
- className: "ml-auto",
190
- onClick: () => {
191
- closeDrawer(identifier);
192
- onClose?.();
193
- },
194
- Icon: X,
195
- size: ButtonSize.ICON_MD
196
- }) })]
197
- }),
198
- title && /* @__PURE__ */ jsx("h2", {
199
- className: "flex items-center justify-center font-bold text-lg",
200
- children: title
201
- }),
202
- header
203
- ]
204
- }), /* @__PURE__ */ jsx("div", {
205
- className: "flex h-full flex-col overflow-y-auto p-2",
206
- children: /* @__PURE__ */ jsx("div", {
207
- className: "flex flex-1 flex-col",
208
- onClick: handleSpareSpaceClick,
209
- ref: childrenContainerRef,
210
- role: "region",
211
- children
101
+ children: [
102
+ /* @__PURE__ */ jsxs("div", {
103
+ className: "flex shrink-0 flex-col gap-3 px-6 pt-6",
104
+ children: [
105
+ /* @__PURE__ */ jsxs("div", {
106
+ className: "flex justify-between gap-3",
107
+ children: [/* @__PURE__ */ jsx("div", { children: backButton && /* @__PURE__ */ jsx(Button, {
108
+ variant: ButtonVariant.HOVERABLE,
109
+ color: ButtonColor.TEXT,
110
+ label: backButton.text ?? content.goBack.value,
111
+ onClick: backButton.onBack,
112
+ Icon: ChevronLeft,
113
+ children: backButton?.text
114
+ }) }), /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Popover, {
115
+ identifier: "close-drawer",
116
+ children: [/* @__PURE__ */ jsx(Button, {
117
+ variant: ButtonVariant.HOVERABLE,
118
+ color: ButtonColor.TEXT,
119
+ label: "Close",
120
+ className: "ml-auto",
121
+ onClick: () => {
122
+ closeDrawer(identifier);
123
+ onClose?.();
124
+ },
125
+ Icon: X,
126
+ size: ButtonSize.ICON_MD
127
+ }), /* @__PURE__ */ jsx(Popover.Detail, {
128
+ identifier: "close-drawer",
129
+ children: /* @__PURE__ */ jsxs("div", {
130
+ className: "flex items-center gap-2 p-2",
131
+ children: [/* @__PURE__ */ jsx("span", {
132
+ className: "whitespace-nowrap text-neutral text-xs",
133
+ children: content.closeDrawer
134
+ }), /* @__PURE__ */ jsx(KeyboardShortcut, {
135
+ shortcut: "Escape",
136
+ size: "sm",
137
+ onTriggered: () => {
138
+ closeDrawer(identifier);
139
+ onClose?.();
140
+ }
141
+ })]
142
+ })
143
+ })]
144
+ }) })]
145
+ }),
146
+ title && /* @__PURE__ */ jsx("h2", {
147
+ className: "flex items-center justify-center font-bold text-lg",
148
+ children: title
149
+ }),
150
+ header
151
+ ]
152
+ }),
153
+ /* @__PURE__ */ jsx("div", {
154
+ className: "flex min-h-0 flex-1 flex-col overflow-y-auto p-2",
155
+ children: /* @__PURE__ */ jsx("div", {
156
+ className: "flex flex-1 flex-col outline-none",
157
+ onClick: handleSpareSpaceClick,
158
+ onKeyDown: handleSpareSpaceKeyDown,
159
+ ref: childrenContainerRef,
160
+ role: "button",
161
+ tabIndex: 0,
162
+ children
163
+ })
164
+ }),
165
+ footer && /* @__PURE__ */ jsx("div", {
166
+ className: "shrink-0",
167
+ children: footer
212
168
  })
213
- })]
169
+ ]
214
170
  })
215
171
  })
216
172
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RightDrawer.mjs","names":["RightDrawer: FC<RightDrawerProps>","handleSpareSpaceClick: MouseEventHandler<HTMLDivElement>"],"sources":["../../../../src/components/RightDrawer/RightDrawer.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronLeft, X } from 'lucide-react';\nimport {\n type FC,\n type MouseEventHandler,\n type ReactNode,\n useEffect,\n useRef,\n} from 'react';\nimport { useDevice } from '../../hooks/useDevice';\nimport { useScrollBlockage } from '../../hooks/useScrollBlockage';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { Container } from '../Container';\nimport { MaxWidthSmoother } from '../MaxWidthSmoother/index';\nimport { isElementAtTopAndNotCovered } from './isElementAtTopAndNotCovered';\nimport { useRightDrawerStore } from './useRightDrawerStore';\n\n/**\n * Configuration for the back button functionality in the RightDrawer\n *\n * @interface BackButtonProps\n */\ntype BackButtonProps = {\n /** Callback function triggered when the back button is clicked */\n onBack: () => void;\n /** Optional custom text for the back button. Defaults to \"Go back\" if not provided */\n text?: string;\n};\n\n/**\n * Props configuration for the RightDrawer component\n *\n * @interface RightDrawerProps\n */\ntype RightDrawerProps = {\n /**\n * Title displayed in the drawer header\n * @example\n * ```tsx\n * <RightDrawer title=\"User Settings\" identifier=\"settings\">\n * Content here\n * </RightDrawer>\n * ```\n */\n title?: ReactNode;\n\n /**\n * Unique identifier for the drawer instance. Required for store management\n * @example\n * ```tsx\n * <RightDrawer identifier=\"user-profile\" title=\"Profile\">\n * Profile content\n * </RightDrawer>\n * ```\n */\n identifier: string;\n\n /** The content to be displayed inside the drawer */\n children?: ReactNode;\n\n /**\n * Optional header content displayed below the title\n * @example\n * ```tsx\n * <RightDrawer\n * title=\"Settings\"\n * header={<div className=\"text-sm opacity-80\">Configure your preferences</div>}\n * identifier=\"settings\"\n * >\n * Settings content\n * </RightDrawer>\n * ```\n */\n header?: ReactNode;\n\n /**\n * Whether the drawer should close when clicking outside of it\n * @default true\n * @example\n * ```tsx\n * <RightDrawer closeOnOutsideClick={false} identifier=\"persistent\">\n * This drawer requires explicit close action\n * </RightDrawer>\n * ```\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Configuration for an optional back button in the drawer header\n * @example\n * ```tsx\n * <RightDrawer\n * backButton={{\n * text: \"Back to List\",\n * onBack: () => navigate('/list')\n * }}\n * identifier=\"detail-view\"\n * >\n * Detail content\n * </RightDrawer>\n * ```\n */\n backButton?: BackButtonProps;\n\n /**\n * External control for the open state. When provided, overrides internal store state\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <RightDrawer\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * identifier=\"controlled\"\n * >\n * Controlled drawer content\n * </RightDrawer>\n * ```\n */\n isOpen?: boolean;\n\n /**\n * Callback function triggered when the drawer is closed\n * @example\n * ```tsx\n * <RightDrawer\n * onClose={() => console.log('Drawer closed')}\n * identifier=\"tracked\"\n * >\n * Content with close tracking\n * </RightDrawer>\n * ```\n */\n onClose?: () => void;\n};\n\n/**\n * RightDrawer - A slide-out drawer panel that appears from the right side of the screen\n *\n * A versatile drawer component that provides an overlay panel for displaying secondary content,\n * forms, details, or navigation. Features responsive design that adapts to mobile devices,\n * configurable close behavior, and integrated state management through Zustand store.\n *\n * ## Key Features\n * - **Responsive Design**: Full-width on mobile, fixed 400px width on desktop\n * - **State Management**: Built-in Zustand store for managing multiple drawer instances\n * - **Accessibility**: Proper ARIA attributes, keyboard navigation, and focus management\n * - **Flexible Layout**: Customizable header, title, and content areas\n * - **Click Outside**: Configurable outside click detection for auto-closing\n * - **Scroll Management**: Automatic body scroll blocking when open\n *\n * ## Use Cases\n * - Navigation menus and sidebars\n * - Detail panels and forms\n * - Settings and configuration interfaces\n * - Shopping carts and checkout processes\n * - User profiles and account management\n * - Multi-step workflows and wizards\n *\n * ## Accessibility\n * - **Focus Management**: Traps focus within the drawer when open\n * - **Keyboard Navigation**: Escape key closes the drawer\n * - **Screen Reader Support**: Proper ARIA labels and announcements\n * - **Touch Support**: Mobile-optimized touch interactions\n *\n * ## State Management\n * The component uses a Zustand store (`useRightDrawerStore`) to manage drawer state:\n * - Multiple drawers can be managed simultaneously using unique identifiers\n * - External components can open/close drawers using the store\n * - Supports both controlled (via props) and uncontrolled (via store) patterns\n *\n * @example\n * Basic usage with store management:\n * ```tsx\n * // Opening the drawer from another component\n * const { open } = useRightDrawerStore();\n *\n * <button onClick={() => open('user-menu')}>\n * Open Menu\n * </button>\n *\n * <RightDrawer identifier=\"user-menu\" title=\"User Menu\">\n * <nav>Navigation items here</nav>\n * </RightDrawer>\n * ```\n *\n * @example\n * Controlled drawer with external state:\n * ```tsx\n * const [showDrawer, setShowDrawer] = useState(false);\n *\n * <RightDrawer\n * identifier=\"controlled-drawer\"\n * title=\"Settings\"\n * isOpen={showDrawer}\n * onClose={() => setShowDrawer(false)}\n * closeOnOutsideClick={false}\n * >\n * <SettingsForm onSave={() => setShowDrawer(false)} />\n * </RightDrawer>\n * ```\n *\n * @example\n * Complex drawer with back button and header:\n * ```tsx\n * <RightDrawer\n * identifier=\"product-detail\"\n * title=\"Product Details\"\n * header={\n * <div className=\"text-sm text-gray-600\">\n * SKU: {product.sku} | Stock: {product.stock}\n * </div>\n * }\n * backButton={{\n * text: \"Back to Catalog\",\n * onBack: () => navigate('/catalog')\n * }}\n * >\n * <ProductDetailView product={product} />\n * </RightDrawer>\n * ```\n */\nexport const RightDrawer: FC<RightDrawerProps> = ({\n title,\n identifier,\n children,\n header,\n closeOnOutsideClick = true,\n backButton,\n isOpen: isOpenProp,\n onClose,\n}) => {\n const { isMobile } = useDevice('md');\n const panelRef = useRef<HTMLDivElement>(null);\n const childrenContainerRef = useRef<HTMLDivElement>(null);\n const openDrawer = useRightDrawerStore((s) => s.open);\n const closeDrawer = useRightDrawerStore((s) => s.close);\n const storeIsOpen = useRightDrawerStore((s) => s.isOpen(identifier));\n const isOpen = useRightDrawerStore((s) => s.isOpen(identifier));\n\n useScrollBlockage({\n disableScroll: isOpen,\n key: identifier ? `right_drawer_${identifier}` : 'right_drawer',\n });\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n try {\n if (!panelRef.current) return;\n\n // Check if drawer is open and click outside is enabled\n const isClickAble = isOpen && closeOnOutsideClick;\n\n // Check if click is outside the drawer panel\n const isClickOutside =\n event.target && !panelRef.current.contains(event.target as Node);\n\n // Check if event propagation has been stopped\n const isAtTopAndVisible = isElementAtTopAndNotCovered(panelRef.current);\n\n if (\n (isClickAble && isClickOutside && isAtTopAndVisible) ||\n !event.target\n ) {\n closeDrawer(identifier);\n onClose?.();\n }\n } catch (_e) {\n closeDrawer(identifier);\n onClose?.();\n }\n };\n\n window.addEventListener('mousedown', handleClickOutside);\n return () => window.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, closeDrawer, onClose, closeOnOutsideClick, identifier]); // Make sure the effect runs only if isOpen or close changes\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (isOpenProp === undefined) return;\n\n // prevent redundant set → re-render → effect loop\n if (isOpenProp === storeIsOpen) return;\n\n if (isOpenProp) {\n openDrawer(identifier);\n } else {\n closeDrawer(identifier);\n onCloseRef.current?.();\n }\n }, [isOpenProp, storeIsOpen, identifier, openDrawer, closeDrawer]);\n\n const handleSpareSpaceClick: MouseEventHandler<HTMLDivElement> = (e) => {\n // Check if the click trigger the background\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (isMobile) {\n closeDrawer(identifier);\n onClose?.();\n }\n };\n\n return (\n <div className=\"fixed top-0 right-0 z-50 flex h-full justify-end\">\n <MaxWidthSmoother isHidden={!isOpen} align=\"right\">\n <Container\n className=\"relative flex h-screen w-screen flex-col text-text md:w-[400px]\"\n ref={panelRef}\n roundedSize=\"none\"\n >\n <div className=\"flex flex-col gap-3 p-6\">\n <div className=\"flex justify-between gap-3\">\n <div>\n {backButton && (\n <Button\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n label={backButton.text ?? 'Go back'}\n onClick={backButton.onBack}\n Icon={ChevronLeft}\n >\n {backButton?.text}\n </Button>\n )}\n </div>\n <div>\n <Button\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n label=\"Close\"\n className=\"ml-auto\"\n onClick={() => {\n closeDrawer(identifier);\n onClose?.();\n }}\n Icon={X}\n size={ButtonSize.ICON_MD}\n />\n </div>\n </div>\n {title && (\n <h2 className=\"flex items-center justify-center font-bold text-lg\">\n {title}\n </h2>\n )}\n {header}\n </div>\n\n <div className=\"flex h-full flex-col overflow-y-auto p-2\">\n <div\n className=\"flex flex-1 flex-col\"\n onClick={handleSpareSpaceClick}\n ref={childrenContainerRef}\n role=\"region\"\n >\n {children}\n </div>\n </div>\n </Container>\n </MaxWidthSmoother>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+NA,MAAaA,eAAqC,EAChD,OACA,YACA,UACA,QACA,sBAAsB,MACtB,YACA,QAAQ,YACR,cACI;CACJ,MAAM,EAAE,aAAa,UAAU,KAAK;CACpC,MAAM,WAAW,OAAuB,KAAK;CAC7C,MAAM,uBAAuB,OAAuB,KAAK;CACzD,MAAM,aAAa,qBAAqB,MAAM,EAAE,KAAK;CACrD,MAAM,cAAc,qBAAqB,MAAM,EAAE,MAAM;CACvD,MAAM,cAAc,qBAAqB,MAAM,EAAE,OAAO,WAAW,CAAC;CACpE,MAAM,SAAS,qBAAqB,MAAM,EAAE,OAAO,WAAW,CAAC;AAE/D,mBAAkB;EAChB,eAAe;EACf,KAAK,aAAa,gBAAgB,eAAe;EAClD,CAAC;AAEF,iBAAgB;EACd,MAAM,sBAAsB,UAAsB;AAChD,OAAI;AACF,QAAI,CAAC,SAAS,QAAS;IAGvB,MAAM,cAAc,UAAU;IAG9B,MAAM,iBACJ,MAAM,UAAU,CAAC,SAAS,QAAQ,SAAS,MAAM,OAAe;IAGlE,MAAM,oBAAoB,4BAA4B,SAAS,QAAQ;AAEvE,QACG,eAAe,kBAAkB,qBAClC,CAAC,MAAM,QACP;AACA,iBAAY,WAAW;AACvB,gBAAW;;YAEN,IAAI;AACX,gBAAY,WAAW;AACvB,eAAW;;;AAIf,SAAO,iBAAiB,aAAa,mBAAmB;AACxD,eAAa,OAAO,oBAAoB,aAAa,mBAAmB;IACvE;EAAC;EAAQ;EAAa;EAAS;EAAqB;EAAW,CAAC;CAEnE,MAAM,aAAa,OAAO,QAAQ;AAClC,iBAAgB;AACd,aAAW,UAAU;IACpB,CAAC,QAAQ,CAAC;AAEb,iBAAgB;AACd,MAAI,eAAe,OAAW;AAG9B,MAAI,eAAe,YAAa;AAEhC,MAAI,WACF,YAAW,WAAW;OACjB;AACL,eAAY,WAAW;AACvB,cAAW,WAAW;;IAEvB;EAAC;EAAY;EAAa;EAAY;EAAY;EAAY,CAAC;CAElE,MAAMC,yBAA4D,MAAM;AAEtE,MAAI,EAAE,WAAW,EAAE,cACjB;AAGF,MAAI,UAAU;AACZ,eAAY,WAAW;AACvB,cAAW;;;AAIf,QACE,oBAAC;EAAI,WAAU;YACb,oBAAC;GAAiB,UAAU,CAAC;GAAQ,OAAM;aACzC,qBAAC;IACC,WAAU;IACV,KAAK;IACL,aAAY;eAEZ,qBAAC;KAAI,WAAU;;MACb,qBAAC;OAAI,WAAU;kBACb,oBAAC,mBACE,cACC,oBAAC;QACC,SAAS,cAAc;QACvB,OAAO,YAAY;QACnB,OAAO,WAAW,QAAQ;QAC1B,SAAS,WAAW;QACpB,MAAM;kBAEL,YAAY;SACN,GAEP,EACN,oBAAC,mBACC,oBAAC;QACC,SAAS,cAAc;QACvB,OAAO,YAAY;QACnB,OAAM;QACN,WAAU;QACV,eAAe;AACb,qBAAY,WAAW;AACvB,oBAAW;;QAEb,MAAM;QACN,MAAM,WAAW;SACjB,GACE;QACF;MACL,SACC,oBAAC;OAAG,WAAU;iBACX;QACE;MAEN;;MACG,EAEN,oBAAC;KAAI,WAAU;eACb,oBAAC;MACC,WAAU;MACV,SAAS;MACT,KAAK;MACL,MAAK;MAEJ;OACG;MACF;KACI;IACK;GACf"}
1
+ {"version":3,"file":"RightDrawer.mjs","names":["RightDrawer: FC<RightDrawerProps>","handleSpareSpaceClick: MouseEventHandler<HTMLDivElement>","handleSpareSpaceKeyDown: KeyboardEventHandler<HTMLDivElement>"],"sources":["../../../../src/components/RightDrawer/RightDrawer.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronLeft, X } from 'lucide-react';\nimport {\n type FC,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type ReactNode,\n useEffect,\n useRef,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { useDevice } from '../../hooks/useDevice';\nimport { useScrollBlockage } from '../../hooks/useScrollBlockage';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { Container } from '../Container';\nimport { KeyboardShortcut } from '../KeyboardShortcut';\nimport { MaxWidthSmoother } from '../MaxWidthSmoother/index';\nimport { Popover } from '../Popover';\nimport { isElementAtTopAndNotCovered } from './isElementAtTopAndNotCovered';\nimport { useRightDrawerStore } from './useRightDrawerStore';\n\n/**\n * Configuration for the back button functionality in the RightDrawer\n *\n * @interface BackButtonProps\n */\ntype BackButtonProps = {\n /** Callback function triggered when the back button is clicked */\n onBack: () => void;\n /** Optional custom text for the back buttoDefaults to \"Go back\" if not provided */\n text?: string;\n};\n\n/**\n * Props configuration for the RightDrawer component\n *\n * @interface RightDrawerProps\n */\ntype RightDrawerProps = {\n /**\n * Title displayed in the drawer header\n */\n title?: ReactNode;\n\n /**\n * Unique identifier for the drawer instancRequired for store management\n */\n identifier: string;\n\n /** The content to be displayed inside the drawer */\n children?: ReactNode;\n\n /**\n * Optional header content displayed below the title\n */\n header?: ReactNode;\n\n /**\n * Optional footer content pinned to the bottom of the drawer\n */\n footer?: ReactNode;\n\n /**\n * Whether the drawer should close when clicking outside of it\n * @default true\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Configuration for an optional back button in the drawer header\n */\n backButton?: BackButtonProps;\n\n /**\n * External control for the open statWhen provided, overrides internal store state\n */\n isOpen?: boolean;\n\n /**\n * Callback function triggered when the drawer is closed\n */\n onClose?: () => void;\n};\n\nexport const RightDrawer: FC<RightDrawerProps> = ({\n title,\n identifier,\n children,\n header,\n footer,\n closeOnOutsideClick = true,\n backButton,\n isOpen: isOpenProp,\n onClose,\n}) => {\n const content = useIntlayer('right-drawer');\n const { isMobile } = useDevice('md');\n const panelRef = useRef<HTMLDivElement>(null);\n const childrenContainerRef = useRef<HTMLDivElement>(null);\n const openDrawer = useRightDrawerStore((s) => s.open);\n const closeDrawer = useRightDrawerStore((s) => s.close);\n const storeIsOpen = useRightDrawerStore((s) => s.isOpen(identifier));\n const isOpen = useRightDrawerStore((s) => s.isOpen(identifier));\n\n useScrollBlockage({\n disableScroll: isOpen,\n key: identifier ? `right_drawer_${identifier}` : 'right_drawer',\n });\n\n // Handle Click Outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n try {\n if (!panelRef.current) return;\n\n const isClickAble = isOpen && closeOnOutsideClick;\n const isClickOutside =\n event.target && !panelRef.current.contains(event.target as Node);\n const isAtTopAndVisible = isElementAtTopAndNotCovered(panelRef.current);\n\n if (\n (isClickAble && isClickOutside && isAtTopAndVisible) ||\n !event.target\n ) {\n closeDrawer(identifier);\n onClose?.();\n }\n } catch (_e) {\n closeDrawer(identifier);\n onClose?.();\n }\n };\n\n window.addEventListener('mousedown', handleClickOutside);\n return () => window.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, closeDrawer, onClose, closeOnOutsideClick, identifier]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (isOpenProp === undefined) return;\n if (isOpenProp === storeIsOpen) return;\n\n if (isOpenProp) {\n openDrawer(identifier);\n } else {\n closeDrawer(identifier);\n onCloseRef.current?.();\n }\n }, [isOpenProp, storeIsOpen, identifier, openDrawer, closeDrawer]);\n\n const handleSpareSpaceClick: MouseEventHandler<HTMLDivElement> = (e) => {\n if (e.target !== e.currentTarget) {\n return;\n }\n if (isMobile) {\n closeDrawer(identifier);\n onClose?.();\n }\n };\n\n // Handle Keyboard on Spare Space (Linter Fix)\n const handleSpareSpaceKeyDown: KeyboardEventHandler<HTMLDivElement> = (e) => {\n if (e.target !== e.currentTarget) return;\n\n // Allow closing via Enter or Space if focused on the spare area\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (isMobile) {\n closeDrawer(identifier);\n onClose?.();\n }\n }\n };\n\n return (\n <div className=\"fixed top-0 right-0 z-50 flex h-full justify-end\">\n <MaxWidthSmoother isHidden={!isOpen} align=\"right\">\n <Container\n className=\"relative flex h-screen w-screen flex-col text-text md:w-[400px]\"\n ref={panelRef}\n roundedSize=\"none\"\n >\n {/* Header */}\n <div className=\"flex shrink-0 flex-col gap-3 px-6 pt-6\">\n <div className=\"flex justify-between gap-3\">\n <div>\n {backButton && (\n <Button\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n label={backButton.text ?? content.goBack.value}\n onClick={backButton.onBack}\n Icon={ChevronLeft}\n >\n {backButton?.text}\n </Button>\n )}\n </div>\n <div>\n <Popover identifier=\"close-drawer\">\n <Button\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n label=\"Close\"\n className=\"ml-auto\"\n onClick={() => {\n closeDrawer(identifier);\n onClose?.();\n }}\n Icon={X}\n size={ButtonSize.ICON_MD}\n />\n\n <Popover.Detail identifier=\"close-drawer\">\n <div className=\"flex items-center gap-2 p-2\">\n <span className=\"whitespace-nowrap text-neutral text-xs\">\n {content.closeDrawer}\n </span>\n <KeyboardShortcut\n shortcut=\"Escape\"\n size=\"sm\"\n onTriggered={() => {\n closeDrawer(identifier);\n onClose?.();\n }}\n />\n </div>\n </Popover.Detail>\n </Popover>\n </div>\n </div>\n {title && (\n <h2 className=\"flex items-center justify-center font-bold text-lg\">\n {title}\n </h2>\n )}\n {header}\n </div>\n\n {/* Body */}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto p-2\">\n {/** biome-ignore lint/a11y/useSemanticElements: This div is used to handle the spare space click and keydown events */}\n <div\n className=\"flex flex-1 flex-col outline-none\"\n onClick={handleSpareSpaceClick}\n onKeyDown={handleSpareSpaceKeyDown}\n ref={childrenContainerRef}\n role=\"button\" // Semantically acts as a button area\n tabIndex={0} // Makes it focusable to receive key events\n >\n {children}\n </div>\n </div>\n\n {/* Footer */}\n {footer && <div className=\"shrink-0\">{footer}</div>}\n </Container>\n </MaxWidthSmoother>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAqFA,MAAaA,eAAqC,EAChD,OACA,YACA,UACA,QACA,QACA,sBAAsB,MACtB,YACA,QAAQ,YACR,cACI;CACJ,MAAM,UAAU,YAAY,eAAe;CAC3C,MAAM,EAAE,aAAa,UAAU,KAAK;CACpC,MAAM,WAAW,OAAuB,KAAK;CAC7C,MAAM,uBAAuB,OAAuB,KAAK;CACzD,MAAM,aAAa,qBAAqB,MAAM,EAAE,KAAK;CACrD,MAAM,cAAc,qBAAqB,MAAM,EAAE,MAAM;CACvD,MAAM,cAAc,qBAAqB,MAAM,EAAE,OAAO,WAAW,CAAC;CACpE,MAAM,SAAS,qBAAqB,MAAM,EAAE,OAAO,WAAW,CAAC;AAE/D,mBAAkB;EAChB,eAAe;EACf,KAAK,aAAa,gBAAgB,eAAe;EAClD,CAAC;AAGF,iBAAgB;EACd,MAAM,sBAAsB,UAAsB;AAChD,OAAI;AACF,QAAI,CAAC,SAAS,QAAS;IAEvB,MAAM,cAAc,UAAU;IAC9B,MAAM,iBACJ,MAAM,UAAU,CAAC,SAAS,QAAQ,SAAS,MAAM,OAAe;IAClE,MAAM,oBAAoB,4BAA4B,SAAS,QAAQ;AAEvE,QACG,eAAe,kBAAkB,qBAClC,CAAC,MAAM,QACP;AACA,iBAAY,WAAW;AACvB,gBAAW;;YAEN,IAAI;AACX,gBAAY,WAAW;AACvB,eAAW;;;AAIf,SAAO,iBAAiB,aAAa,mBAAmB;AACxD,eAAa,OAAO,oBAAoB,aAAa,mBAAmB;IACvE;EAAC;EAAQ;EAAa;EAAS;EAAqB;EAAW,CAAC;CAEnE,MAAM,aAAa,OAAO,QAAQ;AAClC,iBAAgB;AACd,aAAW,UAAU;IACpB,CAAC,QAAQ,CAAC;AAEb,iBAAgB;AACd,MAAI,eAAe,OAAW;AAC9B,MAAI,eAAe,YAAa;AAEhC,MAAI,WACF,YAAW,WAAW;OACjB;AACL,eAAY,WAAW;AACvB,cAAW,WAAW;;IAEvB;EAAC;EAAY;EAAa;EAAY;EAAY;EAAY,CAAC;CAElE,MAAMC,yBAA4D,MAAM;AACtE,MAAI,EAAE,WAAW,EAAE,cACjB;AAEF,MAAI,UAAU;AACZ,eAAY,WAAW;AACvB,cAAW;;;CAKf,MAAMC,2BAAiE,MAAM;AAC3E,MAAI,EAAE,WAAW,EAAE,cAAe;AAGlC,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,OAAI,UAAU;AACZ,gBAAY,WAAW;AACvB,eAAW;;;;AAKjB,QACE,oBAAC;EAAI,WAAU;YACb,oBAAC;GAAiB,UAAU,CAAC;GAAQ,OAAM;aACzC,qBAAC;IACC,WAAU;IACV,KAAK;IACL,aAAY;;KAGZ,qBAAC;MAAI,WAAU;;OACb,qBAAC;QAAI,WAAU;mBACb,oBAAC,mBACE,cACC,oBAAC;SACC,SAAS,cAAc;SACvB,OAAO,YAAY;SACnB,OAAO,WAAW,QAAQ,QAAQ,OAAO;SACzC,SAAS,WAAW;SACpB,MAAM;mBAEL,YAAY;UACN,GAEP,EACN,oBAAC,mBACC,qBAAC;SAAQ,YAAW;oBAClB,oBAAC;UACC,SAAS,cAAc;UACvB,OAAO,YAAY;UACnB,OAAM;UACN,WAAU;UACV,eAAe;AACb,uBAAY,WAAW;AACvB,sBAAW;;UAEb,MAAM;UACN,MAAM,WAAW;WACjB,EAEF,oBAAC,QAAQ;UAAO,YAAW;oBACzB,qBAAC;WAAI,WAAU;sBACb,oBAAC;YAAK,WAAU;sBACb,QAAQ;aACJ,EACP,oBAAC;YACC,UAAS;YACT,MAAK;YACL,mBAAmB;AACjB,yBAAY,WAAW;AACvB,wBAAW;;aAEb;YACE;WACS;UACT,GACN;SACF;OACL,SACC,oBAAC;QAAG,WAAU;kBACX;SACE;OAEN;;OACG;KAGN,oBAAC;MAAI,WAAU;gBAEb,oBAAC;OACC,WAAU;OACV,SAAS;OACT,WAAW;OACX,KAAK;OACL,MAAK;OACL,UAAU;OAET;QACG;OACF;KAGL,UAAU,oBAAC;MAAI,WAAU;gBAAY;OAAa;;KACzC;IACK;GACf"}
@@ -0,0 +1,51 @@
1
+ import { t } from "intlayer";
2
+
3
+ //#region src/components/RightDrawer/rightDrawer.content.ts
4
+ const rightDrawerContent = {
5
+ key: "right-drawer",
6
+ content: {
7
+ goBack: t({
8
+ en: "Go back",
9
+ "en-GB": "Go back",
10
+ ru: "Назад",
11
+ ja: "戻る",
12
+ fr: "Retour",
13
+ ko: "뒤로",
14
+ zh: "返回",
15
+ es: "Volver",
16
+ de: "Zurück",
17
+ ar: "رجوع",
18
+ it: "Indietro",
19
+ pt: "Voltar",
20
+ hi: "वापस जाएं",
21
+ tr: "Geri dön",
22
+ pl: "Wstecz",
23
+ id: "Kembali",
24
+ vi: "Quay lại"
25
+ }),
26
+ closeDrawer: t({
27
+ en: "Close Drawer",
28
+ "en-GB": "Close Drawer",
29
+ ru: "Закрыть панель",
30
+ ja: "引き出しを閉じる",
31
+ fr: "Fermer le tiroir",
32
+ ko: "서랍 닫기",
33
+ zh: "关闭抽屉",
34
+ es: "Cerrar cajón",
35
+ de: "Schublade schließen",
36
+ ar: "إغلاق الدرج",
37
+ it: "Chiudi cassetto",
38
+ pt: "Fechar gaveta",
39
+ hi: "दराज बंद करें",
40
+ tr: "Çekmeceyi kapat",
41
+ pl: "Zamknij szufladę",
42
+ id: "Tutup laci",
43
+ vi: "Đóng ngăn kéo"
44
+ })
45
+ }
46
+ };
47
+ var rightDrawer_content_default = rightDrawerContent;
48
+
49
+ //#endregion
50
+ export { rightDrawer_content_default as default };
51
+ //# sourceMappingURL=rightDrawer.content.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rightDrawer.content.mjs","names":[],"sources":["../../../../src/components/RightDrawer/rightDrawer.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nconst rightDrawerContent = {\n key: 'right-drawer',\n content: {\n goBack: t({\n en: 'Go back',\n 'en-GB': 'Go back',\n ru: 'Назад',\n ja: '戻る',\n fr: 'Retour',\n ko: '뒤로',\n zh: '返回',\n es: 'Volver',\n de: 'Zurück',\n ar: 'رجوع',\n it: 'Indietro',\n pt: 'Voltar',\n hi: 'वापस जाएं',\n tr: 'Geri dön',\n pl: 'Wstecz',\n id: 'Kembali',\n vi: 'Quay lại',\n }),\n closeDrawer: t({\n en: 'Close Drawer',\n 'en-GB': 'Close Drawer',\n ru: 'Закрыть панель',\n ja: '引き出しを閉じる',\n fr: 'Fermer le tiroir',\n ko: '서랍 닫기',\n zh: '关闭抽屉',\n es: 'Cerrar cajón',\n de: 'Schublade schließen',\n ar: 'إغلاق الدرج',\n it: 'Chiudi cassetto',\n pt: 'Fechar gaveta',\n hi: 'दराज बंद करें',\n tr: 'Çekmeceyi kapat',\n pl: 'Zamknij szufladę',\n id: 'Tutup laci',\n vi: 'Đóng ngăn kéo',\n }),\n },\n} satisfies Dictionary;\n\nexport default rightDrawerContent;\n"],"mappings":";;;AAEA,MAAM,qBAAqB;CACzB,KAAK;CACL,SAAS;EACP,QAAQ,EAAE;GACR,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,aAAa,EAAE;GACb,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAED,kCAAe"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Button } from "../Button/Button.mjs";
5
- import { Modal, ModalSize } from "../Modal/Modal.mjs";
6
5
  import { ExpandCollapse } from "../ExpandCollapse/ExpandCollapse.mjs";
6
+ import { Modal, ModalSize } from "../Modal/Modal.mjs";
7
7
  import { MoveDiagonal } from "lucide-react";
8
8
  import { useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -20,38 +20,39 @@ import { PressableSpan } from "./PressableSpan/PressableSpan.mjs";
20
20
  import { ContentSelector } from "./ContentSelector/ContentSelector.mjs";
21
21
  import { CopyButton } from "./CopyButton/index.mjs";
22
22
  import { CopyToClipboard, useCopyToClipboard } from "./CopyToClipboard/index.mjs";
23
- import { H1, H2, H3, H4, H5, H6 } from "./Headers/index.mjs";
24
- import { Modal, ModalSize } from "./Modal/Modal.mjs";
25
23
  import { EditableFieldInput } from "./EditableField/EditableFieldInput.mjs";
26
- import { useFormField } from "./Form/FormField.mjs";
27
- import { InformationTag } from "./InformationTag/index.mjs";
28
- import { Label } from "./Label/index.mjs";
29
24
  import { TextArea } from "./TextArea/TextArea.mjs";
30
25
  import { AutoSizedTextArea } from "./TextArea/AutoSizeTextArea.mjs";
31
26
  import { AutoCompleteTextarea, useDebounce } from "./TextArea/AutocompleteTextArea.mjs";
32
27
  import { EditableFieldTextArea } from "./EditableField/EditableFieldTextArea.mjs";
33
- import { MultiSelect } from "./Select/Multiselect.mjs";
34
- import { Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator } from "./Select/Select.mjs";
35
- import { SwitchSelector, SwitchSelectorColor, SwitchSelectorSize } from "./SwitchSelector/index.mjs";
36
- import { useForm } from "./Form/FormBase.mjs";
37
- import { Form } from "./Form/Form.mjs";
38
28
  import { DictionaryEditor } from "./DictionaryEditor/DictionaryEditor.mjs";
39
29
  import { DropDown, DropDownAlign, DropDownYAlign } from "./DropDown/index.mjs";
30
+ import { SwitchSelector, SwitchSelectorColor, SwitchSelectorSize } from "./SwitchSelector/index.mjs";
40
31
  import { LocaleSwitcherContentProvider, useLocaleSwitcherContent } from "./LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
41
32
  import { LocaleSwitcherContent } from "./LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs";
33
+ import { Label } from "./Label/index.mjs";
34
+ import { H1, H2, H3, H4, H5, H6 } from "./Headers/index.mjs";
42
35
  import { ExpandCollapse } from "./ExpandCollapse/ExpandCollapse.mjs";
43
36
  import { CodeBlock, CodeDefault } from "./IDE/CodeBlockClient.mjs";
37
+ import { MultiSelect } from "./Select/Multiselect.mjs";
38
+ import { Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator } from "./Select/Select.mjs";
44
39
  import { Detail, PopoverStatic, PopoverXAlign, PopoverYAlign } from "./Popover/static.mjs";
45
40
  import { Popover } from "./Popover/dynamic.mjs";
46
41
  import { Code } from "./IDE/Code.mjs";
47
42
  import { TabSelector, TabSelectorColor } from "./TabSelector/TabSelector.mjs";
48
43
  import { Tab } from "./Tab/Tab.mjs";
44
+ import { Modal, ModalSize } from "./Modal/Modal.mjs";
49
45
  import { Table } from "./Table/Table.mjs";
50
46
  import { MarkdownRenderer } from "./MarkDownRender/MarkDownRender.mjs";
51
47
  import { TextEditor, TextEditorContainer, traceKeys } from "./DictionaryFieldEditor/ContentEditorView/TextEditor.mjs";
52
48
  import { KeyPathBreadcrumb } from "./DictionaryFieldEditor/KeyPathBreadcrumb.mjs";
53
49
  import { ContentEditor } from "./DictionaryFieldEditor/ContentEditor.mjs";
50
+ import { useFormField } from "./Form/FormField.mjs";
51
+ import { InformationTag } from "./InformationTag/index.mjs";
52
+ import { useForm } from "./Form/FormBase.mjs";
53
+ import { Form } from "./Form/Form.mjs";
54
54
  import { DictionaryCreationForm } from "./DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs";
55
+ import { SaveForm } from "./DictionaryFieldEditor/SaveForm/SaveForm.mjs";
55
56
  import { DictionaryFieldEditor } from "./DictionaryFieldEditor/DictionaryFieldEditor.mjs";
56
57
  import { VersionSwitcherProvider, useVersionSwitcher } from "./DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs";
57
58
  import { VersionSwitcher } from "./DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs";
@@ -98,4 +99,4 @@ import { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastT
98
99
  import { reducer, toast, useToast } from "./Toaster/useToast.mjs";
99
100
  import { Toaster } from "./Toaster/Toaster.mjs";
100
101
 
101
- export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BadgeColor, BadgeSize, BadgeVariant, Breadcrumb, Browser, Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant, Checkbox, CheckboxColor, CheckboxSize, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContainerBackground, ContainerBorderColor, ContainerGap, ContainerPadding, ContainerRoundedSize, ContainerSeparator, ContainerTransparency, ContentEditor, ContentSelector, CopyButton, CopyToClipboard, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, DropDownAlign, DropDownYAlign, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, GridPattern, H1, H2, H3, H4, H5, H6, HeightResizer, HideShow, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InputSize, InputVariant, InstagramLogo, KeyList, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, Link, LinkColor, LinkRoundedSize, LinkSize, LinkUnderlined, LinkVariant, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileThemeSwitcher, Modal, ModalSize, Modes, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, PaginationSize, PaginationVariant, Popover, PopoverStatic, PopoverXAlign, PopoverYAlign, PressableSpan, ProductHuntLogo, RightDrawer, SearchInput, Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SocialNetworks, Spotlight, SwitchSelector, SwitchSelectorColor, SwitchSelectorSize, Tab, TabSelector, TabSelectorColor, Table, Tag, TagBackground, TagBorder, TagColor, TagRoundedSize, TagSize, Terminal, TextArea, TextEditor, TextEditorContainer, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, VersionSwitcher, VersionSwitcherProvider, WithResizer, XLogo, YoutubeLogo, badgeVariants, buttonVariants, checkIsExternalLink, checkboxVariants, containerVariants, getCapitals, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, reducer, toast, traceKeys, useCopyToClipboard, useDebounce, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawerStore, useToast, useVersionSwitcher };
102
+ export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BadgeColor, BadgeSize, BadgeVariant, Breadcrumb, Browser, Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant, Checkbox, CheckboxColor, CheckboxSize, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContainerBackground, ContainerBorderColor, ContainerGap, ContainerPadding, ContainerRoundedSize, ContainerSeparator, ContainerTransparency, ContentEditor, ContentSelector, CopyButton, CopyToClipboard, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, DropDownAlign, DropDownYAlign, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, GridPattern, H1, H2, H3, H4, H5, H6, HeightResizer, HideShow, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InputSize, InputVariant, InstagramLogo, KeyList, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, Link, LinkColor, LinkRoundedSize, LinkSize, LinkUnderlined, LinkVariant, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileThemeSwitcher, Modal, ModalSize, Modes, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, PaginationSize, PaginationVariant, Popover, PopoverStatic, PopoverXAlign, PopoverYAlign, PressableSpan, ProductHuntLogo, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SocialNetworks, Spotlight, SwitchSelector, SwitchSelectorColor, SwitchSelectorSize, Tab, TabSelector, TabSelectorColor, Table, Tag, TagBackground, TagBorder, TagColor, TagRoundedSize, TagSize, Terminal, TextArea, TextEditor, TextEditorContainer, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, VersionSwitcher, VersionSwitcherProvider, WithResizer, XLogo, YoutubeLogo, badgeVariants, buttonVariants, checkIsExternalLink, checkboxVariants, containerVariants, getCapitals, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, reducer, toast, traceKeys, useCopyToClipboard, useDebounce, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawerStore, useToast, useVersionSwitcher };
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from "react";
2
- import * as class_variance_authority_types9 from "class-variance-authority/types";
2
+ import * as class_variance_authority_types4 from "class-variance-authority/types";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
 
5
5
  //#region src/components/Badge/index.d.ts
@@ -47,7 +47,7 @@ declare const badgeVariants: (props?: {
47
47
  color?: BadgeColor;
48
48
  variant?: BadgeVariant;
49
49
  size?: BadgeSize;
50
- } & class_variance_authority_types9.ClassProp) => string;
50
+ } & class_variance_authority_types4.ClassProp) => string;
51
51
  /**
52
52
  * Badge component props interface
53
53
  * @description Comprehensive props for the Badge component with accessibility and interactive features
@@ -1,10 +1,10 @@
1
- import * as _intlayer_types113 from "@intlayer/types";
1
+ import * as _intlayer_types34 from "@intlayer/types";
2
2
 
3
3
  //#region src/components/Breadcrumb/breadcrumb.content.d.ts
4
4
  declare const breadCrumbContent: {
5
5
  key: string;
6
6
  content: {
7
- linkLabel: _intlayer_types113.TypedNodeModel<_intlayer_types113.NodeType.Translation, {
7
+ linkLabel: _intlayer_types34.TypedNodeModel<_intlayer_types34.NodeType.Translation, {
8
8
  en: string;
9
9
  fr: string;
10
10
  es: string;
@@ -23,7 +23,7 @@ declare const breadCrumbContent: {
23
23
  id: string;
24
24
  vi: string;
25
25
  }, {
26
- nodeType: "translation" | _intlayer_types113.NodeType.Translation;
26
+ nodeType: _intlayer_types34.NodeType.Translation | "translation";
27
27
  } & {
28
28
  translation: {
29
29
  en: string;
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.content.d.ts","names":[],"sources":["../../../../src/components/Breadcrumb/breadcrumb.content.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;IAAA,SAAA,mCA2BS,0CAAA"}
1
+ {"version":3,"file":"breadcrumb.content.d.ts","names":[],"sources":["../../../../src/components/Breadcrumb/breadcrumb.content.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;IAAA,SAAA,kCA2BS,yCAAA"}
@@ -1,7 +1,7 @@
1
1
  import { LinkColor } from "../Link/Link.js";
2
2
  import "../Link/index.js";
3
3
  import { FC, HTMLAttributes, ReactNode } from "react";
4
- import * as class_variance_authority_types10 from "class-variance-authority/types";
4
+ import * as class_variance_authority_types14 from "class-variance-authority/types";
5
5
  import { VariantProps } from "class-variance-authority";
6
6
  import { LocalesValues } from "@intlayer/types";
7
7
 
@@ -12,7 +12,7 @@ import { LocalesValues } from "@intlayer/types";
12
12
  declare const breadcrumbVariants: (props?: {
13
13
  size?: "small" | "medium" | "large";
14
14
  spacing?: "compact" | "normal" | "loose";
15
- } & class_variance_authority_types10.ClassProp) => string;
15
+ } & class_variance_authority_types14.ClassProp) => string;
16
16
  /**
17
17
  * Detailed breadcrumb link configuration with optional href or onClick
18
18
  */
@@ -1,5 +1,5 @@
1
1
  import { CSSProperties, HTMLAttributes, RefObject } from "react";
2
- import * as react_jsx_runtime16 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/Browser/Browser.d.ts
5
5
  type BrowserProps = {
@@ -24,7 +24,7 @@ declare const Browser: ({
24
24
  ref,
25
25
  domainRestriction,
26
26
  ...props
27
- }: BrowserProps) => react_jsx_runtime16.JSX.Element;
27
+ }: BrowserProps) => react_jsx_runtime18.JSX.Element;
28
28
  //#endregion
29
29
  export { Browser, BrowserProps };
30
30
  //# sourceMappingURL=Browser.d.ts.map