framepexls-ui-lib 2.0.0 → 2.2.0

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 (236) hide show
  1. package/dist/AnalyticsCharts.d.mts +4 -4
  2. package/dist/AnalyticsCharts.d.ts +4 -4
  3. package/dist/AppTopbar.d.mts +1 -2
  4. package/dist/AppTopbar.d.ts +1 -2
  5. package/dist/AssetPerformanceCard.d.mts +50 -0
  6. package/dist/AssetPerformanceCard.d.ts +50 -0
  7. package/dist/AssetPerformanceCard.js +342 -0
  8. package/dist/AssetPerformanceCard.mjs +319 -0
  9. package/dist/AssetTickerRow.d.mts +26 -0
  10. package/dist/AssetTickerRow.d.ts +26 -0
  11. package/dist/AssetTickerRow.js +255 -0
  12. package/dist/AssetTickerRow.mjs +225 -0
  13. package/dist/AuthTopbar.d.mts +2 -2
  14. package/dist/AuthTopbar.d.ts +2 -2
  15. package/dist/AuthTopbar.js +2 -1
  16. package/dist/AuthTopbar.mjs +2 -1
  17. package/dist/AvatarGroup.d.mts +2 -2
  18. package/dist/AvatarGroup.d.ts +2 -2
  19. package/dist/AvatarSquare.d.mts +2 -2
  20. package/dist/AvatarSquare.d.ts +2 -2
  21. package/dist/AvatarSquare.js +29 -27
  22. package/dist/AvatarSquare.mjs +29 -27
  23. package/dist/Badge.d.mts +1 -2
  24. package/dist/Badge.d.ts +1 -2
  25. package/dist/BadgeCluster.d.mts +2 -3
  26. package/dist/BadgeCluster.d.ts +2 -3
  27. package/dist/Breadcrumb.d.mts +1 -2
  28. package/dist/Breadcrumb.d.ts +1 -2
  29. package/dist/CalendarPanel.d.mts +2 -2
  30. package/dist/CalendarPanel.d.ts +2 -2
  31. package/dist/Carousel.d.mts +1 -2
  32. package/dist/Carousel.d.ts +1 -2
  33. package/dist/ChangeHistory.d.mts +1 -2
  34. package/dist/ChangeHistory.d.ts +1 -2
  35. package/dist/ChartCard.d.mts +1 -2
  36. package/dist/ChartCard.d.ts +1 -2
  37. package/dist/ChatCenter.d.mts +2 -2
  38. package/dist/ChatCenter.d.ts +2 -2
  39. package/dist/ChatbotCenter.d.mts +1 -2
  40. package/dist/ChatbotCenter.d.ts +1 -2
  41. package/dist/Checkbox.d.mts +1 -1
  42. package/dist/Checkbox.d.ts +1 -1
  43. package/dist/CheckboxPillsGroup.d.mts +1 -2
  44. package/dist/CheckboxPillsGroup.d.ts +1 -2
  45. package/dist/ColorPicker.d.mts +2 -2
  46. package/dist/ColorPicker.d.ts +2 -2
  47. package/dist/ColumnSelector.d.mts +1 -2
  48. package/dist/ColumnSelector.d.ts +1 -2
  49. package/dist/ComboSelect.d.mts +1 -2
  50. package/dist/ComboSelect.d.ts +1 -2
  51. package/dist/DataPageLayout.d.mts +64 -0
  52. package/dist/DataPageLayout.d.ts +64 -0
  53. package/dist/DataPageLayout.js +191 -0
  54. package/dist/DataPageLayout.mjs +157 -0
  55. package/dist/DataTable.d.mts +1 -2
  56. package/dist/DataTable.d.ts +1 -2
  57. package/dist/DataTableCard.d.mts +1 -2
  58. package/dist/DataTableCard.d.ts +1 -2
  59. package/dist/DataTableCardFooter.d.mts +2 -2
  60. package/dist/DataTableCardFooter.d.ts +2 -2
  61. package/dist/DateTimeField.d.mts +1 -2
  62. package/dist/DateTimeField.d.ts +1 -2
  63. package/dist/Dialog.d.mts +6 -7
  64. package/dist/Dialog.d.ts +6 -7
  65. package/dist/DocumentEditor.d.mts +3 -3
  66. package/dist/DocumentEditor.d.ts +3 -3
  67. package/dist/Drawer.d.mts +4 -5
  68. package/dist/Drawer.d.ts +4 -5
  69. package/dist/Dropdown.d.mts +7 -8
  70. package/dist/Dropdown.d.ts +7 -8
  71. package/dist/EmptyState.d.mts +1 -2
  72. package/dist/EmptyState.d.ts +1 -2
  73. package/dist/FiltersMultiSelect.d.mts +1 -2
  74. package/dist/FiltersMultiSelect.d.ts +1 -2
  75. package/dist/HeliipLoader.d.mts +2 -2
  76. package/dist/HeliipLoader.d.ts +2 -2
  77. package/dist/ImpersonationDialog.d.mts +2 -2
  78. package/dist/ImpersonationDialog.d.ts +2 -2
  79. package/dist/ImpersonationSwitcher.d.mts +2 -2
  80. package/dist/ImpersonationSwitcher.d.ts +2 -2
  81. package/dist/InfoGrid.d.mts +1 -2
  82. package/dist/InfoGrid.d.ts +1 -2
  83. package/dist/KnowledgeBase.d.mts +1 -2
  84. package/dist/KnowledgeBase.d.ts +1 -2
  85. package/dist/KpiCard.d.mts +2 -3
  86. package/dist/KpiCard.d.ts +2 -3
  87. package/dist/LanguageSwitcher.d.mts +2 -2
  88. package/dist/LanguageSwitcher.d.ts +2 -2
  89. package/dist/LicenseStatus.d.mts +1 -2
  90. package/dist/LicenseStatus.d.ts +1 -2
  91. package/dist/Link.d.mts +1 -2
  92. package/dist/Link.d.ts +1 -2
  93. package/dist/Login.d.mts +1 -2
  94. package/dist/Login.d.ts +1 -2
  95. package/dist/LoginCarousel.d.mts +2 -3
  96. package/dist/LoginCarousel.d.ts +2 -3
  97. package/dist/LoginGallery.d.mts +2 -3
  98. package/dist/LoginGallery.d.ts +2 -3
  99. package/dist/LoginTools.d.mts +1 -2
  100. package/dist/LoginTools.d.ts +1 -2
  101. package/dist/Map.d.mts +4 -5
  102. package/dist/Map.d.ts +4 -5
  103. package/dist/MarkdownEditor.d.mts +2 -2
  104. package/dist/MarkdownEditor.d.ts +2 -2
  105. package/dist/MediaCard.d.mts +2 -2
  106. package/dist/MediaCard.d.ts +2 -2
  107. package/dist/MediaLibraryLayout.d.mts +89 -0
  108. package/dist/MediaLibraryLayout.d.ts +89 -0
  109. package/dist/MediaLibraryLayout.js +369 -0
  110. package/dist/MediaLibraryLayout.mjs +348 -0
  111. package/dist/MediaSelector.d.mts +2 -2
  112. package/dist/MediaSelector.d.ts +2 -2
  113. package/dist/MediaTile.d.mts +2 -2
  114. package/dist/MediaTile.d.ts +2 -2
  115. package/dist/Money.d.mts +2 -2
  116. package/dist/Money.d.ts +2 -2
  117. package/dist/MotionProvider.d.mts +1 -2
  118. package/dist/MotionProvider.d.ts +1 -2
  119. package/dist/MultiComboSelect.d.mts +2 -3
  120. package/dist/MultiComboSelect.d.ts +2 -3
  121. package/dist/NotificationsCenter.d.mts +1 -2
  122. package/dist/NotificationsCenter.d.ts +1 -2
  123. package/dist/Numeric.d.mts +24 -0
  124. package/dist/Numeric.d.ts +24 -0
  125. package/dist/Numeric.js +102 -0
  126. package/dist/Numeric.mjs +76 -0
  127. package/dist/OmniSearch.d.mts +2 -3
  128. package/dist/OmniSearch.d.ts +2 -3
  129. package/dist/OrderButton.d.mts +2 -2
  130. package/dist/OrderButton.d.ts +2 -2
  131. package/dist/PageScaffold.d.mts +1 -2
  132. package/dist/PageScaffold.d.ts +1 -2
  133. package/dist/PageScaffold.js +1 -1
  134. package/dist/PageScaffold.mjs +1 -1
  135. package/dist/PageTransition.d.mts +1 -2
  136. package/dist/PageTransition.d.ts +1 -2
  137. package/dist/PageTransition.js +33 -27
  138. package/dist/PageTransition.mjs +33 -27
  139. package/dist/Pagination.d.mts +2 -2
  140. package/dist/Pagination.d.ts +2 -2
  141. package/dist/PasswordField.d.mts +1 -2
  142. package/dist/PasswordField.d.ts +1 -2
  143. package/dist/ProductCatalog.d.mts +2 -3
  144. package/dist/ProductCatalog.d.ts +2 -3
  145. package/dist/PromotionsCatalog.d.mts +2 -3
  146. package/dist/PromotionsCatalog.d.ts +2 -3
  147. package/dist/QrCode.d.mts +2 -2
  148. package/dist/QrCode.d.ts +2 -2
  149. package/dist/QuoteEditor.d.mts +2 -2
  150. package/dist/QuoteEditor.d.ts +2 -2
  151. package/dist/RechartsBarCard.d.mts +1 -2
  152. package/dist/RechartsBarCard.d.ts +1 -2
  153. package/dist/RechartsDonutCard.d.mts +1 -2
  154. package/dist/RechartsDonutCard.d.ts +1 -2
  155. package/dist/RechartsTimeSeriesCard.d.mts +1 -2
  156. package/dist/RechartsTimeSeriesCard.d.ts +1 -2
  157. package/dist/ReviewHistory.d.mts +3 -3
  158. package/dist/ReviewHistory.d.ts +3 -3
  159. package/dist/Reviews.d.mts +1 -2
  160. package/dist/Reviews.d.ts +1 -2
  161. package/dist/SearchInput.d.mts +2 -2
  162. package/dist/SearchInput.d.ts +2 -2
  163. package/dist/SegmentedTabs.d.mts +1 -2
  164. package/dist/SegmentedTabs.d.ts +1 -2
  165. package/dist/Select.d.mts +2 -2
  166. package/dist/Select.d.ts +2 -2
  167. package/dist/ShareAccess.d.mts +1 -2
  168. package/dist/ShareAccess.d.ts +1 -2
  169. package/dist/Sidebar.d.mts +1 -2
  170. package/dist/Sidebar.d.ts +1 -2
  171. package/dist/Sidebar.js +492 -335
  172. package/dist/Sidebar.mjs +492 -335
  173. package/dist/StatCard.d.mts +1 -2
  174. package/dist/StatCard.d.ts +1 -2
  175. package/dist/Steps.d.mts +3 -3
  176. package/dist/Steps.d.ts +3 -3
  177. package/dist/StorageUsage.d.mts +1 -2
  178. package/dist/StorageUsage.d.ts +1 -2
  179. package/dist/Table.d.mts +4 -5
  180. package/dist/Table.d.ts +4 -5
  181. package/dist/TableRecordButton.d.mts +1 -2
  182. package/dist/TableRecordButton.d.ts +1 -2
  183. package/dist/TimeAgo.d.mts +2 -2
  184. package/dist/TimeAgo.d.ts +2 -2
  185. package/dist/TimePanel.d.mts +1 -2
  186. package/dist/TimePanel.d.ts +1 -2
  187. package/dist/TimeRangeField.d.mts +2 -2
  188. package/dist/TimeRangeField.d.ts +2 -2
  189. package/dist/Toast.d.mts +1 -2
  190. package/dist/Toast.d.ts +1 -2
  191. package/dist/Tooltip.d.mts +1 -2
  192. package/dist/Tooltip.d.ts +1 -2
  193. package/dist/UploadCard.d.mts +1 -2
  194. package/dist/UploadCard.d.ts +1 -2
  195. package/dist/WordEditor.d.mts +3 -3
  196. package/dist/WordEditor.d.ts +3 -3
  197. package/dist/WorkflowDiagram.d.mts +1 -2
  198. package/dist/WorkflowDiagram.d.ts +1 -2
  199. package/dist/{animations-CHrNeawW.d.mts → animations-Di5tQRLw.d.mts} +2 -2
  200. package/dist/{animations-CHrNeawW.d.ts → animations-Di5tQRLw.d.ts} +2 -2
  201. package/dist/animations.d.mts +1 -1
  202. package/dist/animations.d.ts +1 -1
  203. package/dist/charts.d.mts +2 -1
  204. package/dist/charts.d.ts +2 -1
  205. package/dist/charts.js +6 -0
  206. package/dist/charts.mjs +6 -2
  207. package/dist/i18n.d.mts +1 -2
  208. package/dist/i18n.d.ts +1 -2
  209. package/dist/iconos/WorkflowEdgesSvg.d.mts +1 -2
  210. package/dist/iconos/WorkflowEdgesSvg.d.ts +1 -2
  211. package/dist/iconos/index.d.mts +1546 -1547
  212. package/dist/iconos/index.d.ts +1546 -1547
  213. package/dist/iconos/regular-icons.js +2 -2
  214. package/dist/iconos/regular-icons.mjs +2 -2
  215. package/dist/index.d.mts +10 -4
  216. package/dist/index.d.ts +10 -4
  217. package/dist/index.js +33 -0
  218. package/dist/index.mjs +166 -146
  219. package/dist/internal/AutoSize.d.mts +1 -2
  220. package/dist/internal/AutoSize.d.ts +1 -2
  221. package/dist/map.css +1 -1
  222. package/dist/theme/FontSizeController.d.mts +2 -2
  223. package/dist/theme/FontSizeController.d.ts +2 -2
  224. package/dist/theme/FontSizeController.js +1 -1
  225. package/dist/theme/FontSizeController.mjs +1 -1
  226. package/dist/theme/ThemeController.d.mts +2 -3
  227. package/dist/theme/ThemeController.d.ts +2 -3
  228. package/dist/theme/ThemeProvider.d.mts +1 -2
  229. package/dist/theme/ThemeProvider.d.ts +1 -2
  230. package/dist/theme/ThemeScript.d.mts +2 -2
  231. package/dist/theme/ThemeScript.d.ts +2 -2
  232. package/dist/theme/ThemeToggle.d.mts +2 -2
  233. package/dist/theme/ThemeToggle.d.ts +2 -2
  234. package/dist/theme/ThemeToggle.js +4 -4
  235. package/dist/theme/ThemeToggle.mjs +4 -4
  236. package/package.json +7 -8
package/dist/Sidebar.js CHANGED
@@ -65,7 +65,10 @@ function groupItems(items) {
65
65
  return Array.from(byGroup.entries());
66
66
  }
67
67
  function GroupHeader({ title }) {
68
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-2.5 px-2 text-[0.6875rem] font-semibold uppercase tracking-[0.16em] text-[var(--muted)] select-none text-left", children: title });
68
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mb-3 flex items-center gap-3 px-2 select-none", children: [
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[0.6875rem] font-semibold uppercase tracking-[0.18em] text-[var(--muted)] text-left", children: title }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px flex-1 bg-[linear-gradient(90deg,color-mix(in_oklab,var(--border)_72%,transparent),transparent)]" })
71
+ ] });
69
72
  }
70
73
  function safeParseSidebarNavLayout(raw) {
71
74
  if (!raw) return null;
@@ -169,54 +172,29 @@ function pickWorkspaceId(workspaces, preferred) {
169
172
  return (primary != null ? primary : list[0]).id;
170
173
  }
171
174
  const WRAP_ACTIVE = {
172
- accent: "bg-[color-mix(in_oklab,var(--primary)_14%,transparent)] ring-1 ring-inset ring-[color-mix(in_oklab,var(--ring)_35%,transparent)] dark:bg-[color-mix(in_oklab,var(--primary)_18%,transparent)]",
173
- slate: "bg-slate-600/20 ring-1 ring-inset ring-slate-300 dark:bg-slate-600/25",
174
- gray: "bg-gray-600/20 ring-1 ring-inset ring-gray-300 dark:bg-gray-600/25",
175
- zinc: "bg-zinc-600/20 ring-1 ring-inset ring-zinc-300 dark:bg-zinc-600/25",
176
- neutral: "bg-neutral-600/20 ring-1 ring-inset ring-neutral-300 dark:bg-neutral-600/25",
177
- stone: "bg-stone-600/20 ring-1 ring-inset ring-stone-300 dark:bg-stone-600/25",
178
- red: "bg-red-600/20 ring-1 ring-inset ring-red-300 dark:bg-red-600/25",
179
- orange: "bg-orange-600/20 ring-1 ring-inset ring-orange-300 dark:bg-orange-600/25",
180
- amber: "bg-amber-600/20 ring-1 ring-inset ring-amber-300 dark:bg-amber-600/25",
181
- yellow: "bg-yellow-500/20 ring-1 ring-inset ring-yellow-300 dark:bg-yellow-500/25",
182
- lime: "bg-lime-600/20 ring-1 ring-inset ring-lime-300 dark:bg-lime-600/25",
183
- green: "bg-green-600/20 ring-1 ring-inset ring-green-300 dark:bg-green-600/25",
184
- emerald: "bg-emerald-600/20 ring-1 ring-inset ring-emerald-300 dark:bg-emerald-600/25",
185
- teal: "bg-teal-600/20 ring-1 ring-inset ring-teal-300 dark:bg-teal-600/25",
186
- cyan: "bg-cyan-600/20 ring-1 ring-inset ring-cyan-300 dark:bg-cyan-600/25",
187
- sky: "bg-sky-600/20 ring-1 ring-inset ring-sky-300 dark:bg-sky-600/25",
188
- blue: "bg-blue-600/20 ring-1 ring-inset ring-blue-300 dark:bg-blue-600/25",
189
- indigo: "bg-indigo-600/20 ring-1 ring-inset ring-indigo-300 dark:bg-indigo-600/25",
190
- violet: "bg-violet-600/20 ring-1 ring-inset ring-violet-300 dark:bg-violet-600/25",
191
- purple: "bg-purple-600/20 ring-1 ring-inset ring-purple-300 dark:bg-purple-600/25",
192
- fuchsia: "bg-fuchsia-600/20 ring-1 ring-inset ring-fuchsia-300 dark:bg-fuchsia-600/25",
193
- pink: "bg-pink-600/20 ring-1 ring-inset ring-pink-300 dark:bg-pink-600/25",
194
- rose: "bg-rose-600/20 ring-1 ring-inset ring-rose-300 dark:bg-rose-600/25"
195
- };
196
- const ICON_BORDER_ACTIVE = {
197
- accent: "border-[color-mix(in_oklab,var(--ring)_32%,transparent)] dark:border-[color-mix(in_oklab,var(--ring)_26%,transparent)]",
198
- slate: "border-slate-300/60 dark:border-slate-700/40",
199
- gray: "border-gray-300/60 dark:border-gray-700/40",
200
- zinc: "border-zinc-300/60 dark:border-zinc-700/40",
201
- neutral: "border-neutral-300/60 dark:border-neutral-700/40",
202
- stone: "border-stone-300/60 dark:border-stone-700/40",
203
- red: "border-red-300/60 dark:border-red-700/40",
204
- orange: "border-orange-300/60 dark:border-orange-700/40",
205
- amber: "border-amber-300/60 dark:border-amber-700/40",
206
- yellow: "border-yellow-300/60 dark:border-yellow-700/40",
207
- lime: "border-lime-300/60 dark:border-lime-700/40",
208
- green: "border-green-300/60 dark:border-green-700/40",
209
- emerald: "border-emerald-300/60 dark:border-emerald-700/40",
210
- teal: "border-teal-300/60 dark:border-teal-700/40",
211
- cyan: "border-cyan-300/60 dark:border-cyan-700/40",
212
- sky: "border-sky-300/60 dark:border-sky-700/40",
213
- blue: "border-blue-300/60 dark:border-blue-700/40",
214
- indigo: "border-indigo-300/60 dark:border-indigo-700/40",
215
- violet: "border-violet-300/60 dark:border-violet-700/40",
216
- purple: "border-purple-300/60 dark:border-purple-700/40",
217
- fuchsia: "border-fuchsia-300/60 dark:border-fuchsia-700/40",
218
- pink: "border-pink-300/60 dark:border-pink-700/40",
219
- rose: "border-rose-300/60 dark:border-rose-700/40"
175
+ accent: "bg-transparent ring-0",
176
+ slate: "bg-transparent ring-0",
177
+ gray: "bg-transparent ring-0",
178
+ zinc: "bg-transparent ring-0",
179
+ neutral: "bg-transparent ring-0",
180
+ stone: "bg-transparent ring-0",
181
+ red: "bg-transparent ring-0",
182
+ orange: "bg-transparent ring-0",
183
+ amber: "bg-transparent ring-0",
184
+ yellow: "bg-transparent ring-0",
185
+ lime: "bg-transparent ring-0",
186
+ green: "bg-transparent ring-0",
187
+ emerald: "bg-transparent ring-0",
188
+ teal: "bg-transparent ring-0",
189
+ cyan: "bg-transparent ring-0",
190
+ sky: "bg-transparent ring-0",
191
+ blue: "bg-transparent ring-0",
192
+ indigo: "bg-transparent ring-0",
193
+ violet: "bg-transparent ring-0",
194
+ purple: "bg-transparent ring-0",
195
+ fuchsia: "bg-transparent ring-0",
196
+ pink: "bg-transparent ring-0",
197
+ rose: "bg-transparent ring-0"
220
198
  };
221
199
  const TOGGLE_BORDER_ACTIVE = {
222
200
  accent: "border-[color-mix(in_oklab,var(--ring)_28%,transparent)] dark:border-[color-mix(in_oklab,var(--ring)_22%,transparent)]",
@@ -244,30 +222,41 @@ const TOGGLE_BORDER_ACTIVE = {
244
222
  rose: "border-rose-200 dark:border-rose-700/40"
245
223
  };
246
224
  const SUBITEM_ACTIVE = {
247
- accent: "bg-[color-mix(in_oklab,var(--primary)_10%,transparent)] text-slate-900 ring-1 ring-[color-mix(in_oklab,var(--ring)_22%,transparent)] dark:bg-[color-mix(in_oklab,var(--primary)_18%,transparent)] dark:text-white dark:ring-[color-mix(in_oklab,var(--ring)_24%,transparent)] rounded-xl",
248
- slate: "bg-slate-50 text-slate-700 ring-1 ring-slate-200 dark:bg-slate-900/20 dark:text-slate-200 dark:ring-slate-700/40 rounded-xl",
249
- gray: "bg-gray-50 text-gray-700 ring-1 ring-gray-200 dark:bg-gray-900/20 dark:text-gray-200 dark:ring-gray-700/40 rounded-xl",
250
- zinc: "bg-zinc-50 text-zinc-700 ring-1 ring-zinc-200 dark:bg-zinc-900/20 dark:text-zinc-200 dark:ring-zinc-700/40 rounded-xl",
251
- neutral: "bg-neutral-50 text-neutral-700 ring-1 ring-neutral-200 dark:bg-neutral-900/20 dark:text-neutral-200 dark:ring-neutral-700/40 rounded-xl",
252
- stone: "bg-stone-50 text-stone-700 ring-1 ring-stone-200 dark:bg-stone-900/20 dark:text-stone-200 dark:ring-stone-700/40 rounded-xl",
253
- red: "bg-red-50 text-red-700 ring-1 ring-red-200 dark:bg-red-900/20 dark:text-red-200 dark:ring-red-700/40 rounded-xl",
254
- orange: "bg-orange-50 text-orange-700 ring-1 ring-orange-200 dark:bg-orange-900/20 dark:text-orange-200 dark:ring-orange-700/40 rounded-xl",
255
- amber: "bg-amber-50 text-amber-700 ring-1 ring-amber-200 dark:bg-amber-900/20 dark:text-amber-200 dark:ring-amber-700/40 rounded-xl",
256
- yellow: "bg-yellow-50 text-yellow-700 ring-1 ring-yellow-200 dark:bg-yellow-900/20 dark:text-yellow-200 dark:ring-yellow-700/40 rounded-xl",
257
- lime: "bg-lime-50 text-lime-700 ring-1 ring-lime-200 dark:bg-lime-900/20 dark:text-lime-200 dark:ring-lime-700/40 rounded-xl",
258
- green: "bg-green-50 text-green-700 ring-1 ring-green-200 dark:bg-green-900/20 dark:text-green-200 dark:ring-green-700/40 rounded-xl",
259
- emerald: "bg-emerald-50 text-emerald-700 ring-1 ring-emerald-200 dark:bg-emerald-900/20 dark:text-emerald-200 dark:ring-emerald-700/40 rounded-xl",
260
- teal: "bg-teal-50 text-teal-700 ring-1 ring-teal-200 dark:bg-teal-900/20 dark:text-teal-200 dark:ring-teal-700/40 rounded-xl",
261
- cyan: "bg-cyan-50 text-cyan-700 ring-1 ring-cyan-200 dark:bg-cyan-900/20 dark:text-cyan-200 dark:ring-cyan-700/40 rounded-xl",
262
- sky: "bg-sky-50 text-sky-700 ring-1 ring-sky-200 dark:bg-sky-900/20 dark:text-sky-200 dark:ring-sky-700/40 rounded-xl",
263
- blue: "bg-blue-50 text-blue-700 ring-1 ring-blue-200 dark:bg-blue-900/20 dark:text-blue-200 dark:ring-blue-700/40 rounded-xl",
264
- indigo: "bg-indigo-50 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-900/20 dark:text-indigo-200 dark:ring-indigo-700/40 rounded-xl",
265
- violet: "bg-violet-50 text-violet-700 ring-1 ring-violet-200 dark:bg-violet-900/20 dark:text-violet-200 dark:ring-violet-700/40 rounded-xl",
266
- purple: "bg-purple-50 text-purple-700 ring-1 ring-purple-200 dark:bg-purple-900/20 dark:text-purple-200 dark:ring-purple-700/40 rounded-xl",
267
- fuchsia: "bg-fuchsia-50 text-fuchsia-700 ring-1 ring-fuchsia-200 dark:bg-fuchsia-900/20 dark:text-fuchsia-200 dark:ring-fuchsia-700/40 rounded-xl",
268
- pink: "bg-pink-50 text-pink-700 ring-1 ring-pink-200 dark:bg-pink-900/20 dark:text-pink-200 dark:ring-pink-700/40 rounded-xl",
269
- rose: "bg-rose-50 text-rose-700 ring-1 ring-rose-200 dark:bg-rose-900/20 dark:text-rose-200 dark:ring-rose-700/40 rounded-xl"
225
+ accent: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
226
+ slate: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
227
+ gray: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
228
+ zinc: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
229
+ neutral: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
230
+ stone: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
231
+ red: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
232
+ orange: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
233
+ amber: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
234
+ yellow: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
235
+ lime: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
236
+ green: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
237
+ emerald: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
238
+ teal: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
239
+ cyan: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
240
+ sky: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
241
+ blue: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
242
+ indigo: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
243
+ violet: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
244
+ purple: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
245
+ fuchsia: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
246
+ pink: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl",
247
+ rose: "bg-transparent text-[var(--foreground)] ring-0 rounded-xl"
270
248
  };
249
+ const PANEL_SURFACE = "border-r border-[color-mix(in_oklab,var(--border)_76%,transparent)] bg-[linear-gradient(180deg,color-mix(in_oklab,var(--card)_98.5%,transparent)_0%,color-mix(in_oklab,var(--surface)_90%,transparent)_100%)] shadow-[18px_0_42px_-38px_color-mix(in_oklab,var(--foreground)_16%,transparent)] backdrop-blur-lg";
250
+ const TILE_SURFACE = "border border-[color-mix(in_oklab,var(--border)_74%,transparent)] bg-[linear-gradient(180deg,color-mix(in_oklab,var(--card)_98%,transparent)_0%,color-mix(in_oklab,var(--surface)_84%,transparent)_100%)] shadow-[0_12px_28px_-26px_color-mix(in_oklab,var(--foreground)_18%,transparent)]";
251
+ const ITEM_IDLE = "text-[color-mix(in_oklab,var(--foreground)_86%,var(--muted))] hover:text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--foreground)_4%,transparent)]";
252
+ const TOP_PANEL_SURFACE = "rounded-[1.4rem] border border-[color-mix(in_oklab,var(--border)_62%,transparent)] bg-[color-mix(in_oklab,var(--foreground)_1.5%,transparent)]";
253
+ const SOFT_BUTTON_SURFACE = "border border-[color-mix(in_oklab,var(--border)_70%,transparent)] bg-[color-mix(in_oklab,var(--foreground)_3.5%,transparent)]";
254
+ const ITEM_ICON_IDLE = "text-[color-mix(in_oklab,var(--foreground)_78%,var(--muted))] group-hover:text-[var(--foreground)]";
255
+ const ITEM_ICON_ACTIVE = "text-[var(--primary)] drop-shadow-[0_8px_20px_color-mix(in_oklab,var(--primary)_28%,transparent)]";
256
+ const ACTIVE_ROW_BAR = "pointer-events-none absolute bottom-2 left-0 top-2 z-[1] w-[3px] rounded-full bg-[var(--primary)] shadow-[0_0_0_1px_color-mix(in_oklab,var(--primary)_14%,transparent),0_10px_24px_-14px_color-mix(in_oklab,var(--primary)_72%,transparent)]";
257
+ const SUBMENU_GUIDE_BAR = "pointer-events-none absolute bottom-2 left-4 top-2 w-px bg-[color-mix(in_oklab,var(--muted)_72%,var(--foreground)_28%)]";
258
+ const SIDEBAR_COLLAPSE_EASE = [0.22, 1, 0.36, 1];
259
+ const SIDEBAR_COLLAPSE_TRANSITION = { duration: 0.24, ease: SIDEBAR_COLLAPSE_EASE };
271
260
  function Sidebar({
272
261
  items,
273
262
  activeKey,
@@ -618,25 +607,25 @@ function Sidebar({
618
607
  activeWorkspace ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "truncate text-xs text-[var(--muted)] text-left", children: activeWorkspace.name }) : null
619
608
  ] })
620
609
  ] }),
621
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
610
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
622
611
  import_framer_motion.motion.aside,
623
612
  {
624
613
  className: [
625
- "hidden xl:fixed xl:inset-y-0 xl:flex xl:flex-col xl:border-r xl:border-[var(--border)] relative overflow-hidden bg-[var(--card)] xl:py-6 z-40",
626
- collapsed ? "xl:px-2" : "xl:px-4"
614
+ "relative z-40 hidden overflow-hidden xl:fixed xl:inset-y-0 xl:left-0 xl:flex xl:flex-col"
627
615
  ].join(" "),
628
616
  initial: false,
629
617
  animate: { width: sidebarWidth },
630
618
  transition: sidebarWidthTransition,
631
619
  style: { width: sidebarWidth, willChange: motionEnabled ? "width" : void 0 },
632
- children: [
620
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cx("relative z-10 flex h-full min-h-0 flex-1 overflow-hidden", PANEL_SURFACE), children: [
633
621
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
634
622
  "div",
635
623
  {
636
624
  "aria-hidden": "true",
637
- className: "pointer-events-none absolute inset-x-0 bottom-0 z-0 h-[520px] bg-[radial-gradient(900px_520px_at_22%_120%,color-mix(in_oklab,var(--primary)_18%,transparent)_0%,transparent_64%),radial-gradient(720px_460px_at_86%_112%,color-mix(in_oklab,var(--ring)_12%,transparent)_0%,transparent_70%)]"
625
+ className: "pointer-events-none absolute inset-0 z-0 bg-[radial-gradient(720px_420px_at_14%_0%,color-mix(in_oklab,var(--primary)_5%,transparent)_0%,transparent_44%),radial-gradient(860px_540px_at_20%_118%,color-mix(in_oklab,var(--primary)_8%,transparent)_0%,transparent_56%),radial-gradient(700px_460px_at_86%_114%,color-mix(in_oklab,var(--ring)_6%,transparent)_0%,transparent_60%)]"
638
626
  }
639
627
  ),
628
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-y-10 right-0 z-0 w-px bg-[linear-gradient(180deg,transparent,color-mix(in_oklab,var(--ring)_30%,transparent),transparent)]" }),
640
629
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative z-10 flex-1 min-h-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
641
630
  SidebarInner,
642
631
  {
@@ -683,7 +672,7 @@ function Sidebar({
683
672
  skeleton
684
673
  }
685
674
  ) })
686
- ]
675
+ ] })
687
676
  }
688
677
  ),
689
678
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -697,26 +686,27 @@ function Sidebar({
697
686
  }
698
687
  ),
699
688
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { children: drawerOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_framer_motion.motion.div, { className: "fixed inset-0 z-40 xl:hidden", initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, children: [
700
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-black/40" }),
689
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.motion.div, { className: "absolute inset-0 bg-black/42 backdrop-blur-[2px]", initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } }),
701
690
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
702
691
  import_framer_motion.motion.div,
703
692
  {
704
693
  role: "dialog",
705
694
  "aria-modal": "true",
706
- initial: { x: -340 },
707
- animate: { x: 0 },
708
- exit: { x: -340 },
709
- transition: { type: "tween", duration: 0.22, ease: "easeOut" },
710
- className: "relative h-full w-[88%] max-w-80 overflow-hidden bg-[var(--card)] px-5 py-6 shadow-2xl",
711
- style: { willChange: "transform" },
695
+ initial: { x: -340, opacity: 0.84, scale: 0.98 },
696
+ animate: { x: 0, opacity: 1, scale: 1 },
697
+ exit: { x: -340, opacity: 0.84, scale: 0.985 },
698
+ transition: { type: "tween", duration: 0.26, ease: [0.22, 1, 0.36, 1] },
699
+ className: cx("relative h-full w-[88%] max-w-80 overflow-hidden px-5 py-6", TOP_PANEL_SURFACE, "bg-[linear-gradient(180deg,color-mix(in_oklab,var(--card)_98%,transparent)_0%,color-mix(in_oklab,var(--surface)_82%,transparent)_100%)] shadow-2xl backdrop-blur-xl"),
700
+ style: { willChange: "transform, opacity" },
712
701
  children: [
713
702
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
714
703
  "div",
715
704
  {
716
705
  "aria-hidden": "true",
717
- className: "pointer-events-none absolute inset-x-0 bottom-0 z-0 h-[520px] bg-[radial-gradient(900px_520px_at_22%_120%,color-mix(in_oklab,var(--primary)_18%,transparent)_0%,transparent_64%),radial-gradient(720px_460px_at_86%_112%,color-mix(in_oklab,var(--ring)_12%,transparent)_0%,transparent_70%)]"
706
+ className: "pointer-events-none absolute inset-0 z-0 bg-[radial-gradient(720px_420px_at_14%_0%,color-mix(in_oklab,var(--primary)_5%,transparent)_0%,transparent_44%),radial-gradient(860px_540px_at_20%_118%,color-mix(in_oklab,var(--primary)_8%,transparent)_0%,transparent_56%),radial-gradient(700px_460px_at_86%_114%,color-mix(in_oklab,var(--ring)_6%,transparent)_0%,transparent_60%)]"
718
707
  }
719
708
  ),
709
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-x-8 top-0 z-0 h-px bg-[linear-gradient(90deg,transparent,color-mix(in_oklab,var(--ring)_30%,transparent),transparent)]" }),
720
710
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mb-4 flex items-center justify-between", children: [
721
711
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
722
712
  import_Button.default,
@@ -726,7 +716,7 @@ function Sidebar({
726
716
  variant: "ghost",
727
717
  size: "sm",
728
718
  leftIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.CloseIcon, {}),
729
- className: "h-9 w-9 p-0 !gap-0 rounded-xl border border-[var(--border)] bg-[var(--card)] text-[var(--foreground)] shadow-sm hover:bg-[color-mix(in_oklab,var(--surface)_70%,transparent)]"
719
+ className: cx("h-9 w-9 rounded-2xl p-0 !gap-0 text-[var(--foreground)] transition-transform hover:-translate-y-0.5 active:translate-y-0", TILE_SURFACE)
730
720
  }
731
721
  ),
732
722
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm text-[var(--muted)]", children: "Men\xFA" })
@@ -1857,84 +1847,129 @@ function SidebarInner({
1857
1847
  const skShowTopPanel = (_c = skeleton == null ? void 0 : skeleton.showTopPanel) != null ? _c : true;
1858
1848
  const skShowFooter = (_d = skeleton == null ? void 0 : skeleton.showFooter) != null ? _d : true;
1859
1849
  const hasQuickActions = Boolean(quickActions == null ? void 0 : quickActions.length);
1860
- const QuickIcon = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "grid h-10 w-10 place-items-center rounded-2xl border border-[var(--border)] bg-[var(--card)] shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-[var(--foreground)]", children }) });
1850
+ const topPanelClass = cx("overflow-hidden rounded-[1.4rem]", TOP_PANEL_SURFACE);
1851
+ const calmFadeEase = [0.22, 1, 0.36, 1];
1852
+ const calmFadeTransition = { duration: 0.26, ease: calmFadeEase };
1853
+ const calmFadeInitial = { opacity: 0, y: 4, filter: "blur(6px)" };
1854
+ const calmFadeAnimate = { opacity: 1, y: 0, filter: "blur(0px)" };
1855
+ const calmFadeExit = { opacity: 0, y: 2, filter: "blur(6px)" };
1856
+ const QuickIcon = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "grid h-9 w-9 place-items-center rounded-2xl text-[var(--muted)] transition-all duration-300 group-hover:scale-[1.04] group-hover:text-[var(--foreground)]", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-[var(--foreground)]", children }) });
1861
1857
  const QuickActionsSection = () => {
1862
1858
  if (!hasQuickActions) return null;
1863
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "pt-5", children: [
1864
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: ["flex items-center justify-between gap-2 px-2", collapsed ? "justify-center" : ""].join(" "), children: !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[0.6875rem] font-semibold uppercase tracking-wider text-[var(--muted)]", children: quickActionsTitle != null ? quickActionsTitle : "Accesos r\xE1pidos" }) : null }),
1865
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: (quickActions != null ? quickActions : []).map((a) => {
1866
- var _a2;
1867
- const disabled = Boolean(a.disabled);
1868
- const base = [
1869
- "group flex w-full items-center gap-3.5 rounded-2xl px-3.5 py-2.5 text-left transition active:scale-[0.99]",
1870
- disabled ? "opacity-60 cursor-not-allowed" : "text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]",
1871
- collapsed ? "justify-center" : ""
1872
- ].join(" ");
1873
- const button = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1874
- import_Button.default,
1875
- {
1876
- unstyled: true,
1877
- type: "button",
1878
- onClick: () => {
1879
- if (disabled) return;
1880
- onQuickAction == null ? void 0 : onQuickAction(a);
1881
- },
1882
- className: base,
1883
- title: void 0,
1884
- children: [
1885
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QuickIcon, { children: (_a2 = a.icon) != null ? _a2 : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.PlusIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
1886
- !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "min-w-0 flex-1", children: [
1887
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block truncate text-[0.9375rem] font-medium text-[var(--foreground)]", children: a.label }),
1888
- a.description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mt-0.5 block truncate text-xs text-[var(--muted)] text-left", children: a.description }) : null
1889
- ] }) : null,
1890
- !collapsed && a.badge ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", children: a.badge }) : null
1891
- ]
1892
- }
1893
- );
1894
- if (!collapsed) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: button }, a.id);
1895
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1896
- import_Tooltip.default,
1897
- {
1898
- content: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
1899
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "truncate text-[0.75rem] font-semibold", children: a.label }),
1900
- a.description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-0.5 truncate text-[0.6875rem] text-white/70", children: a.description }) : null
1901
- ] }),
1902
- placement: "right",
1903
- offset: 12,
1904
- children: button
1905
- },
1906
- a.id
1907
- );
1908
- }) })
1909
- ] });
1859
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1860
+ import_framer_motion.motion.div,
1861
+ {
1862
+ className: "pt-5",
1863
+ initial: calmFadeInitial,
1864
+ animate: calmFadeAnimate,
1865
+ transition: calmFadeTransition,
1866
+ children: [
1867
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: ["flex items-center justify-between gap-2 px-2", collapsed ? "justify-center" : ""].join(" "), children: !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
1868
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[0.6875rem] font-semibold uppercase tracking-[0.18em] text-[var(--muted)]", children: quickActionsTitle != null ? quickActionsTitle : "Accesos r\xE1pidos" }),
1869
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px flex-1 bg-[linear-gradient(90deg,color-mix(in_oklab,var(--border)_72%,transparent),transparent)]" })
1870
+ ] }) : null }),
1871
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: (quickActions != null ? quickActions : []).map((a, index) => {
1872
+ var _a2;
1873
+ const disabled = Boolean(a.disabled);
1874
+ const base = [
1875
+ "group flex w-full items-center gap-3.5 rounded-[1.35rem] px-3.5 py-2.5 text-left transition-all duration-300 active:scale-[0.99]",
1876
+ disabled ? "opacity-60 cursor-not-allowed" : ITEM_IDLE,
1877
+ collapsed ? "justify-center" : ""
1878
+ ].join(" ");
1879
+ const button = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1880
+ import_Button.default,
1881
+ {
1882
+ unstyled: true,
1883
+ type: "button",
1884
+ onClick: () => {
1885
+ if (disabled) return;
1886
+ onQuickAction == null ? void 0 : onQuickAction(a);
1887
+ },
1888
+ className: base,
1889
+ title: void 0,
1890
+ children: [
1891
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QuickIcon, { children: (_a2 = a.icon) != null ? _a2 : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.PlusIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
1892
+ !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "min-w-0 flex-1", children: [
1893
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block truncate text-[0.9375rem] font-medium text-[var(--foreground)]", children: a.label }),
1894
+ a.description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mt-0.5 block truncate text-xs text-[var(--muted)] text-left", children: a.description }) : null
1895
+ ] }) : null,
1896
+ !collapsed && a.badge ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", children: a.badge }) : null
1897
+ ]
1898
+ }
1899
+ );
1900
+ if (!collapsed) {
1901
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1902
+ import_framer_motion.motion.div,
1903
+ {
1904
+ initial: { opacity: 0, filter: "blur(6px)" },
1905
+ animate: { opacity: 1, filter: "blur(0px)" },
1906
+ transition: { duration: 0.22, delay: index * 0.025, ease: calmFadeEase },
1907
+ children: button
1908
+ },
1909
+ a.id
1910
+ );
1911
+ }
1912
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1913
+ import_Tooltip.default,
1914
+ {
1915
+ content: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
1916
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "truncate text-[0.75rem] font-semibold", children: a.label }),
1917
+ a.description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-0.5 truncate text-[0.6875rem] text-white/70", children: a.description }) : null
1918
+ ] }),
1919
+ placement: "right",
1920
+ offset: 12,
1921
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1922
+ import_framer_motion.motion.div,
1923
+ {
1924
+ initial: { opacity: 0, filter: "blur(6px)" },
1925
+ animate: { opacity: 1, filter: "blur(0px)" },
1926
+ transition: { duration: 0.2, delay: index * 0.025, ease: calmFadeEase },
1927
+ children: button
1928
+ }
1929
+ )
1930
+ },
1931
+ a.id
1932
+ );
1933
+ }) })
1934
+ ]
1935
+ }
1936
+ );
1910
1937
  };
1911
1938
  const showNavTools = Boolean(navEditable && onNavConfigure);
1912
1939
  const showQuickTools = Boolean(quickActionsEditable && onQuickActionsConfigure);
1913
1940
  const showSidebarTools = showNavTools || showQuickTools;
1914
1941
  const showCollapseToggle = !mobile && typeof toggleCollapsed === "function";
1915
1942
  const renderCollapseToggle = (opts) => {
1916
- var _a2;
1917
1943
  if (!showCollapseToggle) return null;
1918
1944
  if (loading) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton shrink-0", style: { width: 40, height: 40, borderRadius: 16 } });
1919
- const size = (_a2 = opts == null ? void 0 : opts.size) != null ? _a2 : "md";
1920
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: collapsed ? "Expandir barra lateral" : "Contraer barra lateral", placement: "right", offset: 10, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1945
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.motion.div, { layout: true, transition: SIDEBAR_COLLAPSE_TRANSITION, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: collapsed ? "Expandir barra lateral" : "Contraer barra lateral", placement: "right", offset: 10, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1921
1946
  import_Button.default,
1922
1947
  {
1948
+ unstyled: true,
1923
1949
  noPaddingX: true,
1924
1950
  "aria-label": collapsed ? "Expandir barra lateral" : "Contraer barra lateral",
1925
1951
  onClick: toggleCollapsed,
1926
- variant: "ghost",
1927
- size: "sm",
1928
- leftIcon: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.CaretLineRightIcon, { className: "h-4 w-4", "aria-hidden": true }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.CaretLineLeftIcon, { className: "h-4 w-4", "aria-hidden": true }),
1929
1952
  className: cx(
1930
- "shrink-0 p-0 !gap-0 rounded-2xl border border-[var(--border)] text-[var(--foreground)]",
1931
- collapsed ? "!bg-[var(--surface)] shadow-md" : "bg-[var(--card)] shadow-sm",
1932
- "hover:bg-[color-mix(in_oklab,var(--surface)_88%,var(--card))] active:scale-95",
1933
- size === "sm" ? "h-9 w-9" : "h-10 w-10"
1953
+ "inline-flex h-10 w-10 shrink-0 items-center justify-center overflow-visible rounded-[1.1rem] p-0 transition-all duration-300",
1954
+ "border border-[color-mix(in_oklab,var(--border)_82%,transparent)]",
1955
+ "bg-[color-mix(in_oklab,var(--card)_96%,var(--surface))] text-[var(--foreground)]",
1956
+ "backdrop-blur-sm",
1957
+ "shadow-[0_14px_30px_-24px_color-mix(in_oklab,var(--foreground)_38%,transparent)]",
1958
+ "hover:-translate-y-0.5 hover:bg-[color-mix(in_oklab,var(--card)_94%,var(--surface))] hover:shadow-[0_18px_36px_-24px_color-mix(in_oklab,var(--foreground)_44%,transparent)]",
1959
+ "active:translate-y-0 active:scale-95"
1934
1960
  ),
1935
- title: void 0
1961
+ title: void 0,
1962
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1963
+ import_framer_motion.motion.span,
1964
+ {
1965
+ className: "grid place-items-center text-[color-mix(in_oklab,var(--foreground)_92%,var(--muted))]",
1966
+ animate: { x: collapsed ? 0.5 : -0.5, scale: collapsed ? 0.98 : 1 },
1967
+ transition: { type: "spring", stiffness: 420, damping: 30 },
1968
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.CaretLineRightIcon, { className: "h-[1.1rem] w-[1.1rem]", "aria-hidden": true }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.CaretLineLeftIcon, { className: "h-[1.1rem] w-[1.1rem]", "aria-hidden": true })
1969
+ }
1970
+ )
1936
1971
  }
1937
- ) });
1972
+ ) }) });
1938
1973
  };
1939
1974
  const SidebarTools = ({ condensed }) => {
1940
1975
  if (!showSidebarTools) return null;
@@ -1980,9 +2015,9 @@ function SidebarInner({
1980
2015
  }, []);
1981
2016
  if (!condensedMode) {
1982
2017
  const btnClass = cx(
1983
- "h-9 w-9 rounded-xl",
1984
- "p-0 !gap-0 border border-[var(--border)] bg-[var(--card)] text-[var(--foreground)] shadow-sm",
1985
- "hover:bg-[color-mix(in_oklab,var(--surface)_70%,transparent)] active:scale-[0.98]"
2018
+ "h-9 w-9 rounded-2xl p-0 !gap-0 text-[var(--foreground)]",
2019
+ SOFT_BUTTON_SURFACE,
2020
+ "hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.98]"
1986
2021
  );
1987
2022
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cx("flex items-center gap-2"), children: [
1988
2023
  showNavTools ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: navCustomizeLabel != null ? navCustomizeLabel : "Personalizar", placement: "bottom", offset: 12, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -2016,9 +2051,9 @@ function SidebarInner({
2016
2051
  ] });
2017
2052
  }
2018
2053
  const iconBtnClass = cx(
2019
- "grid place-items-center h-9 w-9 rounded-2xl",
2020
- "p-0 !gap-0 border border-[var(--border)] bg-[var(--card)] text-[var(--foreground)] shadow-sm",
2021
- "hover:bg-[color-mix(in_oklab,var(--surface)_70%,transparent)] active:scale-[0.98]"
2054
+ "grid h-9 w-9 place-items-center rounded-2xl p-0 !gap-0 text-[var(--foreground)]",
2055
+ SOFT_BUTTON_SURFACE,
2056
+ "hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.98]"
2022
2057
  );
2023
2058
  const menuItemClass = cx(
2024
2059
  "w-full flex items-center gap-3 rounded-2xl px-3 py-2 text-left text-sm",
@@ -2033,7 +2068,7 @@ function SidebarInner({
2033
2068
  className: "fixed z-[200] w-[240px]",
2034
2069
  role: "menu",
2035
2070
  "aria-label": "Opciones del sidebar",
2036
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "rounded-3xl border border-[var(--border)] bg-[var(--card)] shadow-xl overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "p-1.5", children: [
2071
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cx("overflow-hidden rounded-3xl", TOP_PANEL_SURFACE, "bg-[var(--card)] shadow-xl backdrop-blur-xl"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "p-1.5", children: [
2037
2072
  showNavTools ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2038
2073
  "button",
2039
2074
  {
@@ -2045,7 +2080,7 @@ function SidebarInner({
2045
2080
  onNavConfigure == null ? void 0 : onNavConfigure();
2046
2081
  },
2047
2082
  children: [
2048
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "grid h-9 w-9 place-items-center rounded-2xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--surface)_70%,transparent)]", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.PencilIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
2083
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cx("grid h-9 w-9 place-items-center rounded-2xl", SOFT_BUTTON_SURFACE), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.PencilIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
2049
2084
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "min-w-0", children: [
2050
2085
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block font-semibold text-[var(--foreground)]", children: navCustomizeLabel != null ? navCustomizeLabel : "Personalizar" }),
2051
2086
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block text-xs text-[var(--muted)] text-left", children: "Ordena y ajusta la navegaci\xF3n" })
@@ -2064,7 +2099,7 @@ function SidebarInner({
2064
2099
  onQuickActionsConfigure == null ? void 0 : onQuickActionsConfigure();
2065
2100
  },
2066
2101
  children: [
2067
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "grid h-9 w-9 place-items-center rounded-2xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--surface)_70%,transparent)]", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.ListStarIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
2102
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cx("grid h-9 w-9 place-items-center rounded-2xl", SOFT_BUTTON_SURFACE), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.ListStarIcon, { className: "h-4 w-4", "aria-hidden": true }) }),
2068
2103
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "min-w-0", children: [
2069
2104
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block font-semibold text-[var(--foreground)]", children: "Accesos r\xE1pidos" }),
2070
2105
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block text-xs text-[var(--muted)] text-left", children: "Ancla tus acciones favoritas" })
@@ -2100,7 +2135,7 @@ function SidebarInner({
2100
2135
  ] });
2101
2136
  };
2102
2137
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: ["flex h-full flex-col", loading ? "pointer-events-none select-none" : ""].join(" "), "aria-busy": loading ? "true" : void 0, children: [
2103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: collapsed ? "px-1" : "pl-1 pr-2", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
2138
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: collapsed ? "px-3 pt-4" : "px-5 pt-5", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
2104
2139
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: ["flex min-w-0 flex-1 items-center gap-3", collapsed ? "justify-center" : ""].join(" "), children: [
2105
2140
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: collapsed ? 44 : 40, height: collapsed ? 44 : 40, borderRadius: 16 } }),
2106
2141
  !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-2", children: [
@@ -2109,60 +2144,77 @@ function SidebarInner({
2109
2144
  ] }) : null
2110
2145
  ] }),
2111
2146
  renderCollapseToggle()
2112
- ] }) : showBrand ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cx("relative flex items-center gap-2"), children: [
2113
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2114
- import_Button.default,
2115
- {
2116
- unstyled: true,
2117
- type: "button",
2118
- onClick: onBrandClick,
2119
- className: cx(
2120
- "flex items-center gap-3",
2121
- collapsed ? "w-full justify-start px-2 py-2" : "min-w-0 flex-1 justify-start px-2 py-2"
2122
- ),
2123
- title: "Ir al inicio",
2124
- children: [
2125
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2126
- import_framer_motion.motion.div,
2127
- {
2128
- layout: "size",
2129
- transition: { type: "spring", stiffness: 520, damping: 46, mass: 0.9 },
2130
- className: "shrink-0",
2131
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2132
- import_AvatarSquare.default,
2147
+ ] }) : showBrand ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2148
+ import_framer_motion.motion.div,
2149
+ {
2150
+ layout: true,
2151
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2152
+ className: "relative flex items-center gap-2",
2153
+ children: [
2154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2155
+ import_Button.default,
2156
+ {
2157
+ unstyled: true,
2158
+ type: "button",
2159
+ onClick: onBrandClick,
2160
+ className: cx(
2161
+ "flex items-center gap-3",
2162
+ "min-w-0 flex-1 justify-start py-2",
2163
+ collapsed ? "px-1" : "px-2"
2164
+ ),
2165
+ title: "Ir al inicio",
2166
+ children: [
2167
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2168
+ import_framer_motion.motion.div,
2133
2169
  {
2134
- size: collapsed ? 56 : 40,
2135
- src: brandLogoSrc != null ? brandLogoSrc : void 0,
2136
- alt: brandTitle,
2137
- initials: brandInitials,
2138
- imageFit: brandLogoSrc ? "contain" : "cover",
2139
- radiusClass: "rounded-2xl",
2140
- color,
2141
- className: "ring-0"
2170
+ layout: "size",
2171
+ transition: { type: "spring", stiffness: 520, damping: 46, mass: 0.9 },
2172
+ className: "shrink-0",
2173
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2174
+ import_AvatarSquare.default,
2175
+ {
2176
+ size: collapsed ? 44 : 40,
2177
+ src: brandLogoSrc != null ? brandLogoSrc : void 0,
2178
+ alt: brandTitle,
2179
+ initials: brandInitials,
2180
+ imageFit: brandLogoSrc ? "contain" : "cover",
2181
+ radiusClass: "rounded-2xl",
2182
+ color,
2183
+ className: "ring-0"
2184
+ }
2185
+ )
2142
2186
  }
2143
- )
2144
- }
2145
- ),
2146
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2147
- import_framer_motion.motion.div,
2148
- {
2149
- initial: { opacity: 0, x: -10, filter: "blur(6px)" },
2150
- animate: { opacity: 1, x: 0, filter: "blur(0px)" },
2151
- exit: { opacity: 0, x: -14, filter: "blur(8px)" },
2152
- transition: { duration: 0.22, ease: [0.22, 1, 0.36, 1] },
2153
- className: "leading-tight",
2154
- children: [
2155
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-lg font-semibold tracking-tight text-left", children: brandTitle }),
2156
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[0.6875rem] uppercase tracking-wide text-[var(--muted)] text-left", children: brandSubtitle })
2157
- ]
2158
- },
2159
- "brand-meta"
2160
- ) })
2161
- ]
2162
- }
2163
- ),
2164
- collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute right-0 top-0", children: renderCollapseToggle({ size: "sm" }) }) : renderCollapseToggle({ size: "md" })
2165
- ] }) : hasWorkspace ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
2187
+ ),
2188
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2189
+ import_framer_motion.motion.div,
2190
+ {
2191
+ initial: calmFadeInitial,
2192
+ animate: calmFadeAnimate,
2193
+ exit: calmFadeExit,
2194
+ transition: calmFadeTransition,
2195
+ className: "leading-tight",
2196
+ children: [
2197
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-lg font-semibold tracking-tight text-left", children: brandTitle }),
2198
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[0.6875rem] uppercase tracking-wide text-[var(--muted)] text-left", children: brandSubtitle })
2199
+ ]
2200
+ },
2201
+ "brand-meta"
2202
+ ) })
2203
+ ]
2204
+ }
2205
+ ),
2206
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2207
+ import_framer_motion.motion.div,
2208
+ {
2209
+ layout: true,
2210
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2211
+ className: "shrink-0 self-start",
2212
+ children: renderCollapseToggle({ size: collapsed ? "sm" : "md" })
2213
+ }
2214
+ )
2215
+ ]
2216
+ }
2217
+ ) : hasWorkspace ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
2166
2218
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
2167
2219
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2168
2220
  WorkspaceSwitcher,
@@ -2185,7 +2237,7 @@ function SidebarInner({
2185
2237
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: ["min-w-0 flex-1 text-sm font-semibold text-[var(--muted)]", collapsed ? "text-center" : ""].join(" "), children: "Navegaci\xF3n" }),
2186
2238
  renderCollapseToggle()
2187
2239
  ] }) }),
2188
- showTopPanel || loading && skShowTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cx("mt-5", collapsed ? "px-1" : "px-2"), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: collapsed ? "rounded-3xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--card)_92%,transparent)] p-2 shadow-sm" : "overflow-hidden rounded-3xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--card)_92%,transparent)] shadow-sm", children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2", children: [
2240
+ showTopPanel || loading && skShowTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cx("mt-4", collapsed ? "px-4" : "px-5"), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: collapsed ? cx("rounded-3xl p-2", TOP_PANEL_SURFACE) : topPanelClass, children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2", children: [
2189
2241
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: 44, height: 44, borderRadius: 16 } }),
2190
2242
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: 56, height: 12, borderRadius: 10 } })
2191
2243
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "px-2 py-2", children: [
@@ -2205,7 +2257,7 @@ function SidebarInner({
2205
2257
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: "66%", height: 10, borderRadius: 10, opacity: 0.9 } })
2206
2258
  ] })
2207
2259
  ] }) })
2208
- ] }) }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "rounded-3xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--card)_92%,transparent)] p-1.5 shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2", children: [
2260
+ ] }) }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cx("rounded-3xl p-1.5", TOP_PANEL_SURFACE), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2", children: [
2209
2261
  showWorkspaceInTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
2210
2262
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2211
2263
  WorkspaceSwitcher,
@@ -2238,7 +2290,7 @@ function SidebarInner({
2238
2290
  userMenuSlot ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: userMenuSlot }) : null
2239
2291
  ] }) : null,
2240
2292
  sidebarSlotCollapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex items-center justify-center", children: sidebarSlotCollapsed }) : null
2241
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "overflow-hidden rounded-3xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--card)_92%,transparent)] shadow-sm", children: [
2293
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: topPanelClass, children: [
2242
2294
  showWorkspaceInTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "px-3 py-3", children: [
2243
2295
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2244
2296
  WorkspaceSwitcher,
@@ -2253,10 +2305,10 @@ function SidebarInner({
2253
2305
  color
2254
2306
  }
2255
2307
  ),
2256
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-2.5 px-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarTools, {}) })
2308
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-2.5 border-t border-[color-mix(in_oklab,var(--border)_58%,transparent)] pt-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarTools, {}) })
2257
2309
  ] }) : null,
2258
- showWorkspaceInTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px bg-[var(--border)] opacity-70" }) : null,
2259
- showUser ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-3 py-3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3.5 rounded-2xl px-3 py-2.5 hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]", children: [
2310
+ showWorkspaceInTopPanel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px bg-[color-mix(in_oklab,var(--border)_58%,transparent)]" }) : null,
2311
+ showUser ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-3 py-3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3.5 rounded-2xl px-1 py-1", children: [
2260
2312
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2261
2313
  import_AvatarSquare.default,
2262
2314
  {
@@ -2275,7 +2327,7 @@ function SidebarInner({
2275
2327
  userMenuSlot ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ml-auto", children: userMenuSlot }) : null
2276
2328
  ] }) }) : null,
2277
2329
  sidebarSlot ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
2278
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px bg-[var(--border)] opacity-70" }),
2330
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px bg-[color-mix(in_oklab,var(--border)_58%,transparent)]" }),
2279
2331
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-3 py-3", children: sidebarSlot })
2280
2332
  ] }) : null
2281
2333
  ] }) }) : null,
@@ -2284,8 +2336,8 @@ function SidebarInner({
2284
2336
  {
2285
2337
  ref: navRef,
2286
2338
  className: cx(
2287
- "mt-6 flex-1 space-y-7 overflow-y-auto overflow-x-hidden py-3",
2288
- collapsed ? "px-2" : "px-3"
2339
+ "mt-5 flex-1 space-y-6 overflow-y-auto overflow-x-hidden py-2",
2340
+ "px-5"
2289
2341
  ),
2290
2342
  children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-7", children: Array.from({ length: skGroups }).map((_, g) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
2291
2343
  !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-3 px-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: g % 2 === 0 ? "6.5rem" : "7.5rem", height: 10, borderRadius: 10 } }) }) : null,
@@ -2311,30 +2363,49 @@ function SidebarInner({
2311
2363
  });
2312
2364
  return visibles.length > 0;
2313
2365
  })) == null ? void 0 : _a2[0]) != null ? _b2 : null;
2314
- const renderedGroups = groups.map(([groupName, items]) => {
2366
+ const renderedGroups = groups.map(([groupName, items], groupIndex) => {
2315
2367
  const visibles = items.filter((i) => {
2316
2368
  var _a3;
2317
2369
  return ((_a3 = i.children) == null ? void 0 : _a3.length) ? i.children.some((c) => c) : true;
2318
2370
  });
2319
2371
  if (visibles.length === 0) return null;
2320
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
2321
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GroupHeader, { title: groupName }),
2322
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: visibles.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2323
- RenderItem,
2324
- {
2325
- item,
2326
- collapsed: collapsed != null ? collapsed : false,
2327
- activeKey,
2328
- go,
2329
- color
2330
- },
2331
- item.key
2332
- )) }),
2333
- !inserted && quick && firstGroupNameWithItems === groupName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.default.Fragment, { children: (() => {
2334
- inserted = true;
2335
- return quick;
2336
- })() }) : null
2337
- ] }, groupName);
2372
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2373
+ import_framer_motion.motion.div,
2374
+ {
2375
+ layout: true,
2376
+ initial: calmFadeInitial,
2377
+ animate: calmFadeAnimate,
2378
+ transition: { duration: 0.24, delay: groupIndex * 0.03, ease: calmFadeEase },
2379
+ children: [
2380
+ !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GroupHeader, { title: groupName }) : null,
2381
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: visibles.map((item, itemIndex) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2382
+ import_framer_motion.motion.div,
2383
+ {
2384
+ layout: true,
2385
+ initial: { opacity: 0, filter: "blur(6px)" },
2386
+ animate: { opacity: 1, filter: "blur(0px)" },
2387
+ transition: { duration: 0.2, delay: itemIndex * 0.02, ease: calmFadeEase },
2388
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2389
+ RenderItem,
2390
+ {
2391
+ item,
2392
+ collapsed: collapsed != null ? collapsed : false,
2393
+ activeKey,
2394
+ go,
2395
+ color
2396
+ }
2397
+ )
2398
+ },
2399
+ item.key
2400
+ )) }),
2401
+ !inserted && quick && firstGroupNameWithItems === groupName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.default.Fragment, { children: (() => {
2402
+ inserted = true;
2403
+ return quick;
2404
+ })() }) : null
2405
+ ]
2406
+ },
2407
+ groupName
2408
+ );
2338
2409
  });
2339
2410
  if (!inserted && quick) {
2340
2411
  renderedGroups.push(
@@ -2359,7 +2430,9 @@ function RenderItem({
2359
2430
  const Icon = (_a = item.icon) != null ? _a : (() => null);
2360
2431
  const hasChildren = !!((_b = item.children) == null ? void 0 : _b.length);
2361
2432
  const children = ((_c = item.children) != null ? _c : []).filter(Boolean);
2362
- const isActive = item.key === activeKey || hasChildren && children.some((ch) => ch.key === activeKey);
2433
+ const isDirectActive = item.key === activeKey;
2434
+ const hasActiveChild = hasChildren && children.some((ch) => ch.key === activeKey);
2435
+ const isActive = isDirectActive || hasActiveChild;
2363
2436
  const [open, setOpen] = (0, import_react.useState)(false);
2364
2437
  (0, import_react.useEffect)(() => {
2365
2438
  if (!hasChildren) return;
@@ -2383,46 +2456,23 @@ function RenderItem({
2383
2456
  } catch {
2384
2457
  }
2385
2458
  }, [hasChildren, open, item.key]);
2386
- if (hasChildren && collapsed) {
2387
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: item.label, placement: "right", offset: 12, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2388
- import_Button.default,
2389
- {
2390
- unstyled: true,
2391
- type: "button",
2392
- onClick: () => go(item.key),
2393
- title: void 0,
2394
- "data-fx-sidebar-key": item.key,
2395
- className: [
2396
- "group flex w-full items-center gap-3.5 rounded-2xl px-3.5 py-2.5 text-left text-[0.9375rem] transition justify-center active:scale-[0.99]",
2397
- isActive ? `${WRAP_ACTIVE[color]} text-[var(--foreground)]` : "text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]"
2398
- ].join(" "),
2399
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2400
- "span",
2401
- {
2402
- className: [
2403
- "grid h-10 w-10 place-items-center rounded-2xl border transition",
2404
- isActive ? `${ICON_BORDER_ACTIVE[color]} bg-[var(--card)] shadow-sm` : "border-[var(--border)] bg-[var(--card)] shadow-sm"
2405
- ].join(" "),
2406
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-5 w-5" })
2407
- }
2408
- )
2409
- }
2410
- ) });
2411
- }
2412
2459
  if (hasChildren) {
2413
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
2460
+ const content = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_framer_motion.motion.div, { layout: true, transition: SIDEBAR_COLLAPSE_TRANSITION, children: [
2414
2461
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2415
- "div",
2462
+ import_framer_motion.motion.div,
2416
2463
  {
2464
+ layout: true,
2465
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2417
2466
  className: [
2418
- "relative flex w-full min-w-0 items-center rounded-2xl px-3.5 py-2.5 text-[0.9375rem] transition gap-2.5 active:scale-[0.99]",
2419
- isActive ? `${WRAP_ACTIVE[color]} text-[var(--foreground)]` : "text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]"
2467
+ "relative isolate flex w-full min-w-0 items-center gap-2.5 rounded-[1.2rem] px-3 py-2.5 text-[0.9375rem] transition-all duration-300 active:scale-[0.99]",
2468
+ isActive ? `${WRAP_ACTIVE[color]} text-[var(--foreground)]` : ITEM_IDLE
2420
2469
  ].join(" "),
2421
2470
  children: [
2471
+ !collapsed && isActive ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: ACTIVE_ROW_BAR }) : null,
2422
2472
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: isActive && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2423
2473
  import_framer_motion.motion.span,
2424
2474
  {
2425
- className: `pointer-events-none absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]}`,
2475
+ className: `pointer-events-none absolute inset-0 rounded-[1.2rem] ${WRAP_ACTIVE[color]}`,
2426
2476
  initial: { opacity: 0 },
2427
2477
  animate: { opacity: 1 },
2428
2478
  exit: { opacity: 0 },
@@ -2431,75 +2481,148 @@ function RenderItem({
2431
2481
  },
2432
2482
  `active-${item.key}`
2433
2483
  ) }),
2434
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Button.default, { unstyled: true, type: "button", onClick: () => go(item.key), className: "flex min-w-0 flex-1 items-center gap-3", children: [
2435
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2436
- "span",
2437
- {
2438
- className: [
2439
- "grid h-10 w-10 place-items-center rounded-2xl border transition",
2440
- isActive ? `${ICON_BORDER_ACTIVE[color]} bg-[var(--card)] shadow-sm` : "border-[var(--border)] bg-[var(--card)] shadow-sm"
2441
- ].join(" "),
2442
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-5 w-5" })
2443
- }
2444
- ),
2445
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "truncate", "data-fx-sidebar-key": item.key, children: item.label })
2446
- ] }),
2447
2484
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2448
2485
  import_Button.default,
2449
2486
  {
2450
- iconOnly: true,
2451
- noPaddingX: true,
2487
+ unstyled: true,
2452
2488
  type: "button",
2453
- "aria-label": open ? "Contraer submen\xFA" : "Expandir submen\xFA",
2454
- onClick: (e) => {
2455
- e.stopPropagation();
2456
- setOpen(!open);
2457
- },
2458
- variant: "ghost",
2459
- size: "sm",
2460
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.ChevronDownIcon, { className: `h-4 w-4 transition-transform ${open ? "rotate-180" : ""}`, "aria-hidden": true }),
2461
- className: [
2462
- "h-8 w-8 shrink-0 rounded-lg p-0 !gap-0 border",
2463
- isActive ? `${TOGGLE_BORDER_ACTIVE[color]} bg-[color-mix(in_oklab,var(--card)_80%,transparent)]` : "border-[var(--border)] bg-[var(--card)]"
2464
- ].join(" ")
2489
+ onClick: () => go(item.key),
2490
+ "data-fx-sidebar-key": item.key,
2491
+ className: "relative z-[1] flex min-w-0 flex-1 items-center",
2492
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2493
+ import_framer_motion.motion.span,
2494
+ {
2495
+ layout: true,
2496
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2497
+ className: cx(
2498
+ "flex min-w-0 items-center",
2499
+ collapsed ? "w-full justify-start" : "w-full gap-3"
2500
+ ),
2501
+ children: [
2502
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2503
+ "span",
2504
+ {
2505
+ className: [
2506
+ "grid h-10 w-10 shrink-0 place-items-center rounded-2xl transition-all duration-300 group-hover:scale-[1.04]",
2507
+ isActive ? ITEM_ICON_ACTIVE : ITEM_ICON_IDLE
2508
+ ].join(" "),
2509
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2510
+ Icon,
2511
+ {
2512
+ className: "h-5 w-5",
2513
+ ...isActive ? {
2514
+ fill: "var(--primary)",
2515
+ color: "var(--primary)",
2516
+ style: { color: "var(--primary)" }
2517
+ } : void 0
2518
+ }
2519
+ )
2520
+ }
2521
+ ),
2522
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2523
+ import_framer_motion.motion.span,
2524
+ {
2525
+ "data-fx-sidebar-key": item.key,
2526
+ initial: { opacity: 0, width: 0 },
2527
+ animate: { opacity: 1, width: "auto" },
2528
+ exit: { opacity: 0, width: 0 },
2529
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2530
+ className: "overflow-hidden",
2531
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block truncate", children: item.label })
2532
+ },
2533
+ `label-${item.key}`
2534
+ ) : null })
2535
+ ]
2536
+ }
2537
+ )
2465
2538
  }
2466
- )
2539
+ ),
2540
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2541
+ import_framer_motion.motion.div,
2542
+ {
2543
+ initial: { opacity: 0, width: 0 },
2544
+ animate: { opacity: 1, width: "auto" },
2545
+ exit: { opacity: 0, width: 0 },
2546
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2547
+ className: "overflow-hidden",
2548
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2549
+ import_Button.default,
2550
+ {
2551
+ iconOnly: true,
2552
+ noPaddingX: true,
2553
+ type: "button",
2554
+ "aria-label": open ? "Contraer submen\xFA" : "Expandir submen\xFA",
2555
+ onClick: (e) => {
2556
+ e.stopPropagation();
2557
+ setOpen(!open);
2558
+ },
2559
+ variant: "ghost",
2560
+ size: "sm",
2561
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.ChevronDownIcon, { className: `h-4 w-4 transition-transform ${open ? "rotate-180" : ""}`, "aria-hidden": true }),
2562
+ className: [
2563
+ "relative z-[1] h-8 w-8 shrink-0 rounded-xl p-0 !gap-0 hover:text-[var(--foreground)]",
2564
+ isActive ? `${SOFT_BUTTON_SURFACE} ${TOGGLE_BORDER_ACTIVE[color]} ${hasActiveChild ? "text-[var(--primary)]" : "text-[var(--muted)]"}` : "border-transparent bg-transparent text-[var(--muted)]"
2565
+ ].join(" ")
2566
+ }
2567
+ )
2568
+ },
2569
+ `toggle-${item.key}`
2570
+ ) : null })
2467
2571
  ]
2468
2572
  }
2469
2573
  ),
2470
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2574
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: open && !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2471
2575
  import_framer_motion.motion.div,
2472
2576
  {
2473
- initial: { height: 0, opacity: 0, y: -4 },
2474
- animate: { height: "auto", opacity: 1, y: 0 },
2475
- exit: { height: 0, opacity: 0, y: -4 },
2476
- transition: { type: "tween", duration: 0.18 },
2577
+ initial: { height: 0, opacity: 0, filter: "blur(6px)" },
2578
+ animate: { height: "auto", opacity: 1, filter: "blur(0px)" },
2579
+ exit: { height: 0, opacity: 0, filter: "blur(6px)" },
2580
+ transition: { type: "tween", duration: 0.24, ease: [0.22, 1, 0.36, 1] },
2477
2581
  className: "mt-1 overflow-hidden",
2478
- style: { willChange: "height, opacity, transform" },
2479
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "overflow-hidden rounded-2xl border border-[var(--border)] bg-[var(--card)] shadow-sm divide-y divide-[var(--border)]", children: children.map((ch) => {
2480
- const active2 = ch.key === activeKey;
2481
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2482
- import_Button.default,
2483
- {
2484
- unstyled: true,
2485
- onClick: () => go(ch.key),
2486
- "data-fx-sidebar-key": ch.key,
2487
- className: [
2488
- "block w-full text-left px-3.5 py-2.5 text-[0.875rem] transition",
2489
- active2 ? SUBITEM_ACTIVE[color] : "text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]"
2490
- ].join(" "),
2491
- children: ch.label
2492
- },
2493
- ch.key
2494
- );
2495
- }) })
2582
+ style: { willChange: "height, opacity, filter" },
2583
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative pl-4", children: [
2584
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: SUBMENU_GUIDE_BAR }),
2585
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-1 pl-3", children: children.map((ch, index) => {
2586
+ const active2 = ch.key === activeKey;
2587
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2588
+ import_framer_motion.motion.div,
2589
+ {
2590
+ className: "relative",
2591
+ initial: { opacity: 0, filter: "blur(5px)" },
2592
+ animate: { opacity: 1, filter: "blur(0px)" },
2593
+ transition: { duration: 0.18, delay: index * 0.02, ease: [0.22, 1, 0.36, 1] },
2594
+ children: [
2595
+ active2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "pointer-events-none absolute bottom-2 -left-3 top-2 z-[1] w-px bg-[var(--primary)] shadow-[0_0_0_1px_color-mix(in_oklab,var(--primary)_14%,transparent),0_10px_24px_-14px_color-mix(in_oklab,var(--primary)_72%,transparent)]" }) : null,
2596
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2597
+ import_Button.default,
2598
+ {
2599
+ unstyled: true,
2600
+ onClick: () => go(ch.key),
2601
+ "data-fx-sidebar-key": ch.key,
2602
+ className: [
2603
+ "relative isolate block w-full rounded-xl px-3 py-2.5 text-left text-[0.875rem] transition-all duration-300",
2604
+ active2 ? SUBITEM_ACTIVE[color] : ITEM_IDLE
2605
+ ].join(" "),
2606
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "relative z-[1] block truncate", children: ch.label })
2607
+ }
2608
+ )
2609
+ ]
2610
+ },
2611
+ ch.key
2612
+ );
2613
+ }) })
2614
+ ] })
2496
2615
  },
2497
2616
  `submenu-${item.key}`
2498
2617
  ) })
2499
2618
  ] });
2619
+ if (collapsed) {
2620
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: item.label, placement: "right", offset: 12, children: content });
2621
+ }
2622
+ return content;
2500
2623
  }
2501
2624
  const active = item.key === activeKey;
2502
- const node = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2625
+ const node = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.motion.div, { layout: true, transition: SIDEBAR_COLLAPSE_TRANSITION, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2503
2626
  import_Button.default,
2504
2627
  {
2505
2628
  unstyled: true,
@@ -2508,15 +2631,15 @@ function RenderItem({
2508
2631
  title: void 0,
2509
2632
  "data-fx-sidebar-key": item.key,
2510
2633
  className: [
2511
- "group relative flex w-full min-w-0 items-center gap-3.5 rounded-2xl px-3.5 py-2.5 text-left text-[0.9375rem] transition active:scale-[0.99]",
2512
- active ? `${WRAP_ACTIVE[color]} text-[var(--foreground)]` : "text-[var(--foreground)] hover:bg-[color-mix(in_oklab,var(--surface)_65%,transparent)]",
2513
- collapsed ? "justify-center" : ""
2634
+ "group relative isolate flex w-full min-w-0 items-center gap-3.5 rounded-[1.2rem] px-3 py-2.5 text-left text-[0.9375rem] transition-all duration-300 active:scale-[0.99]",
2635
+ active ? `${WRAP_ACTIVE[color]} text-[var(--foreground)]` : ITEM_IDLE
2514
2636
  ].join(" "),
2515
2637
  children: [
2638
+ !collapsed && active ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: ACTIVE_ROW_BAR }) : null,
2516
2639
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: active && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2517
2640
  import_framer_motion.motion.span,
2518
2641
  {
2519
- className: `pointer-events-none absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]}`,
2642
+ className: `pointer-events-none absolute inset-0 rounded-[1.2rem] ${WRAP_ACTIVE[color]}`,
2520
2643
  initial: { opacity: 0 },
2521
2644
  animate: { opacity: 1 },
2522
2645
  exit: { opacity: 0 },
@@ -2525,20 +2648,54 @@ function RenderItem({
2525
2648
  },
2526
2649
  `active-${item.key}`
2527
2650
  ) }),
2528
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2529
- "span",
2651
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
2652
+ import_framer_motion.motion.span,
2530
2653
  {
2531
- className: [
2532
- "grid h-10 w-10 place-items-center rounded-2xl border text-[var(--foreground)] transition group-hover:scale-105",
2533
- active ? `${ICON_BORDER_ACTIVE[color]} bg-[var(--card)] shadow-sm` : "border-[var(--border)] bg-[var(--card)] shadow-sm"
2534
- ].join(" "),
2535
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-5 w-5" })
2654
+ layout: true,
2655
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2656
+ className: cx(
2657
+ "relative z-[1] flex min-w-0 items-center",
2658
+ collapsed ? "w-full justify-start" : "w-full gap-3.5"
2659
+ ),
2660
+ children: [
2661
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2662
+ "span",
2663
+ {
2664
+ className: [
2665
+ "grid h-10 w-10 shrink-0 place-items-center rounded-2xl transition-all duration-300 group-hover:scale-[1.04]",
2666
+ active ? ITEM_ICON_ACTIVE : ITEM_ICON_IDLE
2667
+ ].join(" "),
2668
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2669
+ Icon,
2670
+ {
2671
+ className: "h-5 w-5",
2672
+ ...active ? {
2673
+ fill: "var(--primary)",
2674
+ color: "var(--primary)",
2675
+ style: { color: "var(--primary)" }
2676
+ } : void 0
2677
+ }
2678
+ )
2679
+ }
2680
+ ),
2681
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2682
+ import_framer_motion.motion.span,
2683
+ {
2684
+ initial: { opacity: 0, width: 0 },
2685
+ animate: { opacity: 1, width: "auto" },
2686
+ exit: { opacity: 0, width: 0 },
2687
+ transition: SIDEBAR_COLLAPSE_TRANSITION,
2688
+ className: "relative z-[1] overflow-hidden",
2689
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block truncate", children: item.label })
2690
+ },
2691
+ `label-${item.key}`
2692
+ ) : null })
2693
+ ]
2536
2694
  }
2537
- ),
2538
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "truncate", children: item.label })
2695
+ )
2539
2696
  ]
2540
2697
  }
2541
- );
2698
+ ) });
2542
2699
  if (!collapsed) return node;
2543
2700
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Tooltip.default, { content: item.label, placement: "right", offset: 12, children: node });
2544
2701
  }