@mastra/playground-ui 33.0.0 → 34.0.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 (58) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/components/DataList.cjs.js +2 -2
  3. package/dist/components/DataList.es.js +2 -2
  4. package/dist/components/HorizontalBars.cjs.js +1 -1
  5. package/dist/components/HorizontalBars.es.js +1 -1
  6. package/dist/components/LogsDataList.cjs.js +2 -2
  7. package/dist/components/LogsDataList.es.js +2 -2
  8. package/dist/components/MainSidebar.cjs.js +1 -1
  9. package/dist/components/MainSidebar.es.js +1 -1
  10. package/dist/components/MetricsDataTable.cjs.js +1 -1
  11. package/dist/components/MetricsDataTable.es.js +1 -1
  12. package/dist/components/ScrollArea.cjs.js +1 -1
  13. package/dist/components/ScrollArea.es.js +1 -1
  14. package/dist/{data-list-skeleton-C9Ncz3jM.js → data-list-skeleton-B3bHGBlU.js} +91 -13
  15. package/dist/data-list-skeleton-B3bHGBlU.js.map +1 -0
  16. package/dist/{data-list-skeleton-Bges_t5u.cjs → data-list-skeleton-DR7cqfzq.cjs} +91 -12
  17. package/dist/data-list-skeleton-DR7cqfzq.cjs.map +1 -0
  18. package/dist/{horizontal-bars-DkJlf6-x.cjs → horizontal-bars-C9qp4r47.cjs} +2 -2
  19. package/dist/{horizontal-bars-DkJlf6-x.cjs.map → horizontal-bars-C9qp4r47.cjs.map} +1 -1
  20. package/dist/{horizontal-bars-B43f5B_S.js → horizontal-bars-DjLETHvH.js} +2 -2
  21. package/dist/{horizontal-bars-B43f5B_S.js.map → horizontal-bars-DjLETHvH.js.map} +1 -1
  22. package/dist/index.cjs.js +10 -9
  23. package/dist/index.cjs.js.map +1 -1
  24. package/dist/index.css +153 -1
  25. package/dist/index.es.js +12 -11
  26. package/dist/index.es.js.map +1 -1
  27. package/dist/{logs-data-list-B0Y5AHWL.js → logs-data-list-Be970xP6.js} +2 -2
  28. package/dist/{logs-data-list-B0Y5AHWL.js.map → logs-data-list-Be970xP6.js.map} +1 -1
  29. package/dist/{logs-data-list-DikL8ZQ0.cjs → logs-data-list-De4DHIW9.cjs} +2 -2
  30. package/dist/{logs-data-list-DikL8ZQ0.cjs.map → logs-data-list-De4DHIW9.cjs.map} +1 -1
  31. package/dist/{main-sidebar-0q7MXh2j.js → main-sidebar-Bk2U9O57.js} +2 -2
  32. package/dist/{main-sidebar-0q7MXh2j.js.map → main-sidebar-Bk2U9O57.js.map} +1 -1
  33. package/dist/{main-sidebar-H8NQ7njm.cjs → main-sidebar-CWoM-yrH.cjs} +2 -2
  34. package/dist/{main-sidebar-H8NQ7njm.cjs.map → main-sidebar-CWoM-yrH.cjs.map} +1 -1
  35. package/dist/{metrics-data-table-BpEAlJi0.cjs → metrics-data-table-D7vx2WEJ.cjs} +2 -2
  36. package/dist/{metrics-data-table-BpEAlJi0.cjs.map → metrics-data-table-D7vx2WEJ.cjs.map} +1 -1
  37. package/dist/{metrics-data-table-Dds2TkvE.js → metrics-data-table-DryqJWoI.js} +2 -2
  38. package/dist/{metrics-data-table-Dds2TkvE.js.map → metrics-data-table-DryqJWoI.js.map} +1 -1
  39. package/dist/{scroll-area-KogxLVrV.cjs → scroll-area-BqJfcT94.cjs} +11 -2
  40. package/dist/scroll-area-BqJfcT94.cjs.map +1 -0
  41. package/dist/{scroll-area-BCZiAvhR.js → scroll-area-BtDqmqBK.js} +11 -2
  42. package/dist/scroll-area-BtDqmqBK.js.map +1 -0
  43. package/dist/src/ds/components/DataList/data-list-root.d.ts +10 -1
  44. package/dist/src/ds/components/DataList/data-list-row-link.d.ts +1 -1
  45. package/dist/src/ds/components/DataList/data-list.stories.d.ts +16 -1
  46. package/dist/src/ds/components/DataList/shared.d.ts +13 -0
  47. package/dist/src/ds/components/ScrollArea/scroll-area.d.ts +12 -0
  48. package/dist/{traces-data-list-Dru2XnRN.js → traces-data-list-JWUFbWnS.js} +7 -4
  49. package/dist/traces-data-list-JWUFbWnS.js.map +1 -0
  50. package/dist/{traces-data-list-5GA3JumQ.cjs → traces-data-list-kc8O_Yyd.cjs} +7 -4
  51. package/dist/traces-data-list-kc8O_Yyd.cjs.map +1 -0
  52. package/package.json +18 -18
  53. package/dist/data-list-skeleton-Bges_t5u.cjs.map +0 -1
  54. package/dist/data-list-skeleton-C9Ncz3jM.js.map +0 -1
  55. package/dist/scroll-area-BCZiAvhR.js.map +0 -1
  56. package/dist/scroll-area-KogxLVrV.cjs.map +0 -1
  57. package/dist/traces-data-list-5GA3JumQ.cjs.map +0 -1
  58. package/dist/traces-data-list-Dru2XnRN.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { a as DataListCell, b as DataListMonoCell, W as WorkflowIcon, A as AgentIcon, c as DataListRoot, d as DataListNextPageLoading, e as DataListTimeCell, f as DataListDateCell, g as DataListNoMatch, h as DataListSpacer, i as DataListRowLink, j as DataListRowButton, k as DataListRowWrapper, l as DataListTopCellSmart, m as DataListTopCellWithTooltip, n as DataListTopCell, o as DataListTop } from './data-list-skeleton-C9Ncz3jM.js';
1
+ import { a as DataListCell, b as DataListMonoCell, W as WorkflowIcon, A as AgentIcon, c as DataListRoot, d as DataListNextPageLoading, e as DataListTimeCell, f as DataListDateCell, g as DataListNoMatch, h as DataListSpacer, i as DataListRowLink, j as DataListRowButton, k as DataListRowWrapper, l as DataListTopCellSmart, m as DataListTopCellWithTooltip, n as DataListTopCell, o as DataListTop } from './data-list-skeleton-B3bHGBlU.js';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { EntityType } from '@mastra/core/observability';
4
4
  import { c as cn } from './utils-CzYGxqbG.js';
@@ -84,4 +84,4 @@ const LogsDataList = Object.assign(DataListRoot, {
84
84
  });
85
85
 
86
86
  export { LogsDataList as L, ToolsIcon as T };
87
- //# sourceMappingURL=logs-data-list-B0Y5AHWL.js.map
87
+ //# sourceMappingURL=logs-data-list-Be970xP6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs-data-list-B0Y5AHWL.js","sources":["../src/ds/icons/ToolsIcon.tsx","../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ToolsIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 11.185 11.185\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.0293 1.16491L4.81958 0.801671L4.81955 0.801686L5.0293 1.16491ZM5.75391 1.16491L5.96365 0.801686L5.96363 0.801671L5.75391 1.16491ZM9.04492 3.06531L9.25474 2.70212L9.25467 2.70208L9.04492 3.06531ZM9.40723 7.49304L9.82666 7.49332V7.49304H9.40723ZM9.04492 8.11999L8.8352 7.75675L8.83518 7.75676L9.04492 8.11999ZM5.75391 10.0204L5.96363 10.3836L5.96365 10.3836L5.75391 10.0204ZM5.0293 10.0204L4.81955 10.3836L4.81963 10.3837L5.0293 10.0204ZM1.73828 8.11999L1.94803 7.75676L1.948 7.75675L1.73828 8.11999ZM1.37598 7.49304H0.956538L0.956538 7.49332L1.37598 7.49304ZM1.73828 3.06531L1.94802 3.42854L1.94803 3.42853L1.73828 3.06531ZM5.59277 3.38366L5.59283 2.96423H5.59277V3.38366ZM3.38379 5.59167L2.96435 5.59159V5.59167H3.38379ZM5.59277 7.80066V8.2201H5.59283L5.59277 7.80066ZM7.80078 5.59167H8.22022V5.59159L7.80078 5.59167ZM5.0293 1.16491L5.23902 1.52816C5.33331 1.47372 5.44989 1.47372 5.54419 1.52816L5.75391 1.16491L5.96363 0.801671C5.60978 0.59738 5.17342 0.59738 4.81958 0.801671L5.0293 1.16491ZM5.75391 1.16491L5.54416 1.52814L8.83518 3.42853L9.04492 3.06531L9.25467 2.70208L5.96365 0.801686L5.75391 1.16491ZM9.04492 3.06531L8.83511 3.42849C8.92979 3.48319 8.98779 3.5839 8.98779 3.69226H9.40723H9.82666C9.82666 3.28328 9.60799 2.90619 9.25474 2.70212L9.04492 3.06531ZM9.40723 3.69226H8.98779V7.49304H9.40723H9.82666V3.69226H9.40723ZM9.40723 7.49304L8.98779 7.49276C8.98772 7.6015 8.92949 7.70231 8.8352 7.75675L9.04492 8.11999L9.25464 8.48324C9.60821 8.2791 9.82639 7.90167 9.82666 7.49332L9.40723 7.49304ZM9.04492 8.11999L8.83518 7.75676L5.54416 9.65715L5.75391 10.0204L5.96365 10.3836L9.25467 8.48322L9.04492 8.11999ZM5.75391 10.0204L5.54419 9.65714C5.44996 9.71154 5.33331 9.71156 5.23897 9.65711L5.0293 10.0204L4.81963 10.3837C5.17339 10.5878 5.60977 10.5879 5.96363 10.3836L5.75391 10.0204ZM5.0293 10.0204L5.23904 9.65715L1.94803 7.75676L1.73828 8.11999L1.52854 8.48322L4.81955 10.3836L5.0293 10.0204ZM1.73828 8.11999L1.948 7.75675C1.85371 7.70231 1.79549 7.6015 1.79541 7.49276L1.37598 7.49304L0.956538 7.49332C0.956809 7.90167 1.17499 8.2791 1.52856 8.48324L1.73828 8.11999ZM1.37598 7.49304H1.79542V3.69226H1.37598H0.956538V7.49304H1.37598ZM1.37598 3.69226H1.79542C1.79542 3.58378 1.85339 3.48318 1.94802 3.42854L1.73828 3.06531L1.52854 2.70207C1.17507 2.90617 0.956538 3.2833 0.956538 3.69226H1.37598ZM1.73828 3.06531L1.94803 3.42853L5.23904 1.52814L5.0293 1.16491L4.81955 0.801686L1.52854 2.70208L1.73828 3.06531ZM5.59277 3.38366V2.96423C4.14162 2.96423 2.96463 4.14015 2.96435 5.59159L3.38379 5.59167L3.80323 5.59175C3.80342 4.60382 4.60458 3.8031 5.59277 3.8031V3.38366ZM3.38379 5.59167H2.96435C2.96435 7.04322 4.14132 8.2201 5.59277 8.2201V7.80066V7.38122C4.6046 7.38122 3.80323 6.57991 3.80323 5.59167H3.38379ZM5.59277 7.80066L5.59283 8.2201C7.04429 8.2199 8.22022 7.04294 8.22022 5.59167H7.80078H7.38134C7.38134 6.57999 6.58061 7.38108 5.59272 7.38122L5.59277 7.80066ZM7.80078 5.59167L8.22022 5.59159C8.21994 4.14043 7.04398 2.96443 5.59283 2.96423L5.59277 3.38366L5.59272 3.8031C6.58062 3.80324 7.38115 4.60374 7.38134 5.59175L7.80078 5.59167Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { EntityType } from '@mastra/core/observability';\nimport { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case EntityType.TOOL:\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs-data-list-Be970xP6.js","sources":["../src/ds/icons/ToolsIcon.tsx","../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ToolsIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 11.185 11.185\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.0293 1.16491L4.81958 0.801671L4.81955 0.801686L5.0293 1.16491ZM5.75391 1.16491L5.96365 0.801686L5.96363 0.801671L5.75391 1.16491ZM9.04492 3.06531L9.25474 2.70212L9.25467 2.70208L9.04492 3.06531ZM9.40723 7.49304L9.82666 7.49332V7.49304H9.40723ZM9.04492 8.11999L8.8352 7.75675L8.83518 7.75676L9.04492 8.11999ZM5.75391 10.0204L5.96363 10.3836L5.96365 10.3836L5.75391 10.0204ZM5.0293 10.0204L4.81955 10.3836L4.81963 10.3837L5.0293 10.0204ZM1.73828 8.11999L1.94803 7.75676L1.948 7.75675L1.73828 8.11999ZM1.37598 7.49304H0.956538L0.956538 7.49332L1.37598 7.49304ZM1.73828 3.06531L1.94802 3.42854L1.94803 3.42853L1.73828 3.06531ZM5.59277 3.38366L5.59283 2.96423H5.59277V3.38366ZM3.38379 5.59167L2.96435 5.59159V5.59167H3.38379ZM5.59277 7.80066V8.2201H5.59283L5.59277 7.80066ZM7.80078 5.59167H8.22022V5.59159L7.80078 5.59167ZM5.0293 1.16491L5.23902 1.52816C5.33331 1.47372 5.44989 1.47372 5.54419 1.52816L5.75391 1.16491L5.96363 0.801671C5.60978 0.59738 5.17342 0.59738 4.81958 0.801671L5.0293 1.16491ZM5.75391 1.16491L5.54416 1.52814L8.83518 3.42853L9.04492 3.06531L9.25467 2.70208L5.96365 0.801686L5.75391 1.16491ZM9.04492 3.06531L8.83511 3.42849C8.92979 3.48319 8.98779 3.5839 8.98779 3.69226H9.40723H9.82666C9.82666 3.28328 9.60799 2.90619 9.25474 2.70212L9.04492 3.06531ZM9.40723 3.69226H8.98779V7.49304H9.40723H9.82666V3.69226H9.40723ZM9.40723 7.49304L8.98779 7.49276C8.98772 7.6015 8.92949 7.70231 8.8352 7.75675L9.04492 8.11999L9.25464 8.48324C9.60821 8.2791 9.82639 7.90167 9.82666 7.49332L9.40723 7.49304ZM9.04492 8.11999L8.83518 7.75676L5.54416 9.65715L5.75391 10.0204L5.96365 10.3836L9.25467 8.48322L9.04492 8.11999ZM5.75391 10.0204L5.54419 9.65714C5.44996 9.71154 5.33331 9.71156 5.23897 9.65711L5.0293 10.0204L4.81963 10.3837C5.17339 10.5878 5.60977 10.5879 5.96363 10.3836L5.75391 10.0204ZM5.0293 10.0204L5.23904 9.65715L1.94803 7.75676L1.73828 8.11999L1.52854 8.48322L4.81955 10.3836L5.0293 10.0204ZM1.73828 8.11999L1.948 7.75675C1.85371 7.70231 1.79549 7.6015 1.79541 7.49276L1.37598 7.49304L0.956538 7.49332C0.956809 7.90167 1.17499 8.2791 1.52856 8.48324L1.73828 8.11999ZM1.37598 7.49304H1.79542V3.69226H1.37598H0.956538V7.49304H1.37598ZM1.37598 3.69226H1.79542C1.79542 3.58378 1.85339 3.48318 1.94802 3.42854L1.73828 3.06531L1.52854 2.70207C1.17507 2.90617 0.956538 3.2833 0.956538 3.69226H1.37598ZM1.73828 3.06531L1.94803 3.42853L5.23904 1.52814L5.0293 1.16491L4.81955 0.801686L1.52854 2.70208L1.73828 3.06531ZM5.59277 3.38366V2.96423C4.14162 2.96423 2.96463 4.14015 2.96435 5.59159L3.38379 5.59167L3.80323 5.59175C3.80342 4.60382 4.60458 3.8031 5.59277 3.8031V3.38366ZM3.38379 5.59167H2.96435C2.96435 7.04322 4.14132 8.2201 5.59277 8.2201V7.80066V7.38122C4.6046 7.38122 3.80323 6.57991 3.80323 5.59167H3.38379ZM5.59277 7.80066L5.59283 8.2201C7.04429 8.2199 8.22022 7.04294 8.22022 5.59167H7.80078H7.38134C7.38134 6.57999 6.58061 7.38108 5.59272 7.38122L5.59277 7.80066ZM7.80078 5.59167L8.22022 5.59159C8.21994 4.14043 7.04398 2.96443 5.59283 2.96423L5.59277 3.38366L5.59272 3.8031C6.58062 3.80324 7.38115 4.60374 7.38134 5.59175L7.80078 5.59167Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { EntityType } from '@mastra/core/observability';\nimport { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case EntityType.TOOL:\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const dataListSkeleton = require('./data-list-skeleton-Bges_t5u.cjs');
3
+ const dataListSkeleton = require('./data-list-skeleton-DR7cqfzq.cjs');
4
4
  const jsxRuntime = require('react/jsx-runtime');
5
5
  const observability = require('@mastra/core/observability');
6
6
  const utils = require('./utils-vA5sWo9W.cjs');
@@ -87,4 +87,4 @@ const LogsDataList = Object.assign(dataListSkeleton.DataListRoot, {
87
87
 
88
88
  exports.LogsDataList = LogsDataList;
89
89
  exports.ToolsIcon = ToolsIcon;
90
- //# sourceMappingURL=logs-data-list-DikL8ZQ0.cjs.map
90
+ //# sourceMappingURL=logs-data-list-De4DHIW9.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs-data-list-DikL8ZQ0.cjs","sources":["../src/ds/icons/ToolsIcon.tsx","../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ToolsIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 11.185 11.185\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.0293 1.16491L4.81958 0.801671L4.81955 0.801686L5.0293 1.16491ZM5.75391 1.16491L5.96365 0.801686L5.96363 0.801671L5.75391 1.16491ZM9.04492 3.06531L9.25474 2.70212L9.25467 2.70208L9.04492 3.06531ZM9.40723 7.49304L9.82666 7.49332V7.49304H9.40723ZM9.04492 8.11999L8.8352 7.75675L8.83518 7.75676L9.04492 8.11999ZM5.75391 10.0204L5.96363 10.3836L5.96365 10.3836L5.75391 10.0204ZM5.0293 10.0204L4.81955 10.3836L4.81963 10.3837L5.0293 10.0204ZM1.73828 8.11999L1.94803 7.75676L1.948 7.75675L1.73828 8.11999ZM1.37598 7.49304H0.956538L0.956538 7.49332L1.37598 7.49304ZM1.73828 3.06531L1.94802 3.42854L1.94803 3.42853L1.73828 3.06531ZM5.59277 3.38366L5.59283 2.96423H5.59277V3.38366ZM3.38379 5.59167L2.96435 5.59159V5.59167H3.38379ZM5.59277 7.80066V8.2201H5.59283L5.59277 7.80066ZM7.80078 5.59167H8.22022V5.59159L7.80078 5.59167ZM5.0293 1.16491L5.23902 1.52816C5.33331 1.47372 5.44989 1.47372 5.54419 1.52816L5.75391 1.16491L5.96363 0.801671C5.60978 0.59738 5.17342 0.59738 4.81958 0.801671L5.0293 1.16491ZM5.75391 1.16491L5.54416 1.52814L8.83518 3.42853L9.04492 3.06531L9.25467 2.70208L5.96365 0.801686L5.75391 1.16491ZM9.04492 3.06531L8.83511 3.42849C8.92979 3.48319 8.98779 3.5839 8.98779 3.69226H9.40723H9.82666C9.82666 3.28328 9.60799 2.90619 9.25474 2.70212L9.04492 3.06531ZM9.40723 3.69226H8.98779V7.49304H9.40723H9.82666V3.69226H9.40723ZM9.40723 7.49304L8.98779 7.49276C8.98772 7.6015 8.92949 7.70231 8.8352 7.75675L9.04492 8.11999L9.25464 8.48324C9.60821 8.2791 9.82639 7.90167 9.82666 7.49332L9.40723 7.49304ZM9.04492 8.11999L8.83518 7.75676L5.54416 9.65715L5.75391 10.0204L5.96365 10.3836L9.25467 8.48322L9.04492 8.11999ZM5.75391 10.0204L5.54419 9.65714C5.44996 9.71154 5.33331 9.71156 5.23897 9.65711L5.0293 10.0204L4.81963 10.3837C5.17339 10.5878 5.60977 10.5879 5.96363 10.3836L5.75391 10.0204ZM5.0293 10.0204L5.23904 9.65715L1.94803 7.75676L1.73828 8.11999L1.52854 8.48322L4.81955 10.3836L5.0293 10.0204ZM1.73828 8.11999L1.948 7.75675C1.85371 7.70231 1.79549 7.6015 1.79541 7.49276L1.37598 7.49304L0.956538 7.49332C0.956809 7.90167 1.17499 8.2791 1.52856 8.48324L1.73828 8.11999ZM1.37598 7.49304H1.79542V3.69226H1.37598H0.956538V7.49304H1.37598ZM1.37598 3.69226H1.79542C1.79542 3.58378 1.85339 3.48318 1.94802 3.42854L1.73828 3.06531L1.52854 2.70207C1.17507 2.90617 0.956538 3.2833 0.956538 3.69226H1.37598ZM1.73828 3.06531L1.94803 3.42853L5.23904 1.52814L5.0293 1.16491L4.81955 0.801686L1.52854 2.70208L1.73828 3.06531ZM5.59277 3.38366V2.96423C4.14162 2.96423 2.96463 4.14015 2.96435 5.59159L3.38379 5.59167L3.80323 5.59175C3.80342 4.60382 4.60458 3.8031 5.59277 3.8031V3.38366ZM3.38379 5.59167H2.96435C2.96435 7.04322 4.14132 8.2201 5.59277 8.2201V7.80066V7.38122C4.6046 7.38122 3.80323 6.57991 3.80323 5.59167H3.38379ZM5.59277 7.80066L5.59283 8.2201C7.04429 8.2199 8.22022 7.04294 8.22022 5.59167H7.80078H7.38134C7.38134 6.57999 6.58061 7.38108 5.59272 7.38122L5.59277 7.80066ZM7.80078 5.59167L8.22022 5.59159C8.21994 4.14043 7.04398 2.96443 5.59283 2.96423L5.59277 3.38366L5.59272 3.8031C6.58062 3.80324 7.38115 4.60374 7.38134 5.59175L7.80078 5.59167Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { EntityType } from '@mastra/core/observability';\nimport { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case EntityType.TOOL:\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["jsx","DataListCell","cn","EntityType","AgentIcon","WorkflowIcon","jsxs","DataListMonoCell","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListSpacer","DataListNoMatch","DataListDateCell","DataListTimeCell","DataListNextPageLoading"],"mappings":"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"}
1
+ {"version":3,"file":"logs-data-list-De4DHIW9.cjs","sources":["../src/ds/icons/ToolsIcon.tsx","../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ToolsIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 11.185 11.185\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.0293 1.16491L4.81958 0.801671L4.81955 0.801686L5.0293 1.16491ZM5.75391 1.16491L5.96365 0.801686L5.96363 0.801671L5.75391 1.16491ZM9.04492 3.06531L9.25474 2.70212L9.25467 2.70208L9.04492 3.06531ZM9.40723 7.49304L9.82666 7.49332V7.49304H9.40723ZM9.04492 8.11999L8.8352 7.75675L8.83518 7.75676L9.04492 8.11999ZM5.75391 10.0204L5.96363 10.3836L5.96365 10.3836L5.75391 10.0204ZM5.0293 10.0204L4.81955 10.3836L4.81963 10.3837L5.0293 10.0204ZM1.73828 8.11999L1.94803 7.75676L1.948 7.75675L1.73828 8.11999ZM1.37598 7.49304H0.956538L0.956538 7.49332L1.37598 7.49304ZM1.73828 3.06531L1.94802 3.42854L1.94803 3.42853L1.73828 3.06531ZM5.59277 3.38366L5.59283 2.96423H5.59277V3.38366ZM3.38379 5.59167L2.96435 5.59159V5.59167H3.38379ZM5.59277 7.80066V8.2201H5.59283L5.59277 7.80066ZM7.80078 5.59167H8.22022V5.59159L7.80078 5.59167ZM5.0293 1.16491L5.23902 1.52816C5.33331 1.47372 5.44989 1.47372 5.54419 1.52816L5.75391 1.16491L5.96363 0.801671C5.60978 0.59738 5.17342 0.59738 4.81958 0.801671L5.0293 1.16491ZM5.75391 1.16491L5.54416 1.52814L8.83518 3.42853L9.04492 3.06531L9.25467 2.70208L5.96365 0.801686L5.75391 1.16491ZM9.04492 3.06531L8.83511 3.42849C8.92979 3.48319 8.98779 3.5839 8.98779 3.69226H9.40723H9.82666C9.82666 3.28328 9.60799 2.90619 9.25474 2.70212L9.04492 3.06531ZM9.40723 3.69226H8.98779V7.49304H9.40723H9.82666V3.69226H9.40723ZM9.40723 7.49304L8.98779 7.49276C8.98772 7.6015 8.92949 7.70231 8.8352 7.75675L9.04492 8.11999L9.25464 8.48324C9.60821 8.2791 9.82639 7.90167 9.82666 7.49332L9.40723 7.49304ZM9.04492 8.11999L8.83518 7.75676L5.54416 9.65715L5.75391 10.0204L5.96365 10.3836L9.25467 8.48322L9.04492 8.11999ZM5.75391 10.0204L5.54419 9.65714C5.44996 9.71154 5.33331 9.71156 5.23897 9.65711L5.0293 10.0204L4.81963 10.3837C5.17339 10.5878 5.60977 10.5879 5.96363 10.3836L5.75391 10.0204ZM5.0293 10.0204L5.23904 9.65715L1.94803 7.75676L1.73828 8.11999L1.52854 8.48322L4.81955 10.3836L5.0293 10.0204ZM1.73828 8.11999L1.948 7.75675C1.85371 7.70231 1.79549 7.6015 1.79541 7.49276L1.37598 7.49304L0.956538 7.49332C0.956809 7.90167 1.17499 8.2791 1.52856 8.48324L1.73828 8.11999ZM1.37598 7.49304H1.79542V3.69226H1.37598H0.956538V7.49304H1.37598ZM1.37598 3.69226H1.79542C1.79542 3.58378 1.85339 3.48318 1.94802 3.42854L1.73828 3.06531L1.52854 2.70207C1.17507 2.90617 0.956538 3.2833 0.956538 3.69226H1.37598ZM1.73828 3.06531L1.94803 3.42853L5.23904 1.52814L5.0293 1.16491L4.81955 0.801686L1.52854 2.70208L1.73828 3.06531ZM5.59277 3.38366V2.96423C4.14162 2.96423 2.96463 4.14015 2.96435 5.59159L3.38379 5.59167L3.80323 5.59175C3.80342 4.60382 4.60458 3.8031 5.59277 3.8031V3.38366ZM3.38379 5.59167H2.96435C2.96435 7.04322 4.14132 8.2201 5.59277 8.2201V7.80066V7.38122C4.6046 7.38122 3.80323 6.57991 3.80323 5.59167H3.38379ZM5.59277 7.80066L5.59283 8.2201C7.04429 8.2199 8.22022 7.04294 8.22022 5.59167H7.80078H7.38134C7.38134 6.57999 6.58061 7.38108 5.59272 7.38122L5.59277 7.80066ZM7.80078 5.59167L8.22022 5.59159C8.21994 4.14043 7.04398 2.96443 5.59283 2.96423L5.59277 3.38366L5.59272 3.8031C6.58062 3.80324 7.38115 4.60374 7.38134 5.59175L7.80078 5.59167Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { EntityType } from '@mastra/core/observability';\nimport { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case EntityType.TOOL:\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["jsx","DataListCell","cn","EntityType","AgentIcon","WorkflowIcon","jsxs","DataListMonoCell","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListSpacer","DataListNoMatch","DataListDateCell","DataListTimeCell","DataListNextPageLoading"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { c as cn } from './utils-CzYGxqbG.js';
3
3
  import { MenuIcon, PanelRightIcon, KeyboardIcon } from 'lucide-react';
4
4
  import React__default, { useRef, useEffect, useCallback, useId } from 'react';
5
- import { S as ScrollArea } from './scroll-area-BCZiAvhR.js';
5
+ import { S as ScrollArea } from './scroll-area-BtDqmqBK.js';
6
6
  import { VisuallyHidden } from '@radix-ui/react-visually-hidden';
7
7
  import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-DehuxlSR.js';
8
8
  import { Dialog } from '@base-ui/react/dialog';
@@ -758,4 +758,4 @@ const MainSidebar = Object.assign(MainSidebarRoot, {
758
758
  });
759
759
 
760
760
  export { MainSidebar as M, ResizeHandleIndicator as R, MainSidebarMobileTrigger as a, MainSidebarProvider as b, MainSidebarTrigger as c, useMaybeSidebar as d, getIsLinkActive as g, navItemClasses as n, useMainSidebar as u };
761
- //# sourceMappingURL=main-sidebar-0q7MXh2j.js.map
761
+ //# sourceMappingURL=main-sidebar-Bk2U9O57.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main-sidebar-0q7MXh2j.js","sources":["../src/ds/components/MainSidebar/main-sidebar-bottom.tsx","../src/ds/components/MainSidebar/main-sidebar-context.tsx","../src/ds/components/MainSidebar/main-sidebar-mobile-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-nav.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-header.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-label.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-link.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-list.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-section.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-separator.tsx","../src/ds/primitives/resize-handle-indicator.tsx","../src/ds/components/MainSidebar/main-sidebar-root.tsx","../src/ds/components/MainSidebar/main-sidebar-sections.tsx","../src/ds/components/MainSidebar/main-sidebar-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarBottomProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarBottom({ className, children, ...props }: MainSidebarBottomProps) {\n return (\n <div className={cn('mt-auto', className)} {...props}>\n {children}\n </div>\n );\n}\n","import React from 'react';\nimport type { CSSProperties } from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst SIDEBAR_STATE_KEY = 'sidebar:state';\nconst SIDEBAR_WIDTH_KEY = 'sidebar:width';\n\nconst SIDEBAR_WIDTH_VAR = '--sidebar-width';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype MainSidebarContext = {\n state: SidebarState;\n desktopState: SidebarState;\n width: number;\n minWidth: number;\n maxWidth: number;\n collapseBelow: number;\n collapsedWidth: number;\n isMobile: boolean;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n toggleSidebar: () => void;\n setWidth: (width: number) => void;\n collapse: () => void;\n expand: () => void;\n commit: () => void;\n setGestureActive: (active: boolean) => void;\n LinkComponent?: LinkComponent;\n};\n\n// Split: drawer open-state lives in its own context so NavLink/NavHeader\n// do not re-render when the mobile drawer toggles.\ntype MobileDrawerContext = {\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n};\n\nconst MainSidebarContext = React.createContext<Omit<MainSidebarContext, 'openMobile' | 'setOpenMobile'> | null>(null);\nconst MobileDrawerContext = React.createContext<MobileDrawerContext | null>(null);\n\nexport function useMainSidebar(): MainSidebarContext {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useMainSidebar must be used within a MainSidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): MainSidebarContext | null {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) return null;\n return { ...ctx, ...drawer };\n}\n\n/** Reads only mobile drawer state. Cheap — no re-renders on sidebar resize. */\nexport function useMobileDrawer(): MobileDrawerContext {\n const drawer = React.useContext(MobileDrawerContext);\n if (!drawer) throw new Error('useMobileDrawer must be used within a MainSidebarProvider.');\n return drawer;\n}\n\nexport type MainSidebarProviderProps = {\n children: React.ReactNode;\n /** Initial state before localStorage hydrates. Defaults to `'default'`. */\n defaultState?: SidebarState;\n /** Default expanded width in px. Defaults to `240`. */\n defaultWidth?: number;\n /** Minimum draggable width in px. Defaults to `200`. */\n minWidth?: number;\n /** Maximum draggable width in px. Defaults to `480`. */\n maxWidth?: number;\n /** Drag below this value snaps the sidebar closed. Defaults to `minWidth` (snap to collapsed when dragged below the expanded minimum). Pass `0` to disable snap. */\n collapseBelow?: number;\n /** Width in px when collapsed. Defaults to `64`. Set to `0` for fully hidden. */\n collapsedWidth?: number;\n /** Disable the global ⌘B / Ctrl+B toggle shortcut. Defaults to `false`. */\n disableKeyboardShortcut?: boolean;\n /** Scope-key for localStorage. Allows multiple independent sidebars per app. */\n storageKey?: string;\n /** Mobile breakpoint in px (max-width). Below this, sidebar renders as a drawer. Defaults to `1024`. */\n mobileBreakpoint?: number;\n /** Drawer max-width on mobile in px. Actual width is `min(75vw, mobileWidth)`. Defaults to `360`. */\n mobileWidth?: number;\n /** Default LinkComponent injected into NavLink/NavHeader. Falls back to plain `<a>` if omitted. */\n LinkComponent?: LinkComponent;\n};\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v));\n\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport function MainSidebarProvider({\n children,\n defaultState = 'default',\n defaultWidth = 240,\n minWidth = 200,\n maxWidth = 480,\n collapseBelow,\n collapsedWidth = 64,\n disableKeyboardShortcut = false,\n storageKey,\n mobileBreakpoint = 1024,\n mobileWidth = 360,\n LinkComponent,\n}: MainSidebarProviderProps) {\n // Normalize props so bad inputs (defaultWidth < minWidth, min > max, etc.) never produce a broken layout.\n const safeMin = Math.max(0, Math.min(minWidth, maxWidth));\n const safeMax = Math.max(safeMin, maxWidth);\n const safeCollapsed = Math.max(0, Math.min(collapsedWidth, safeMax));\n const safeDefault = clamp(defaultWidth, safeMin, safeMax);\n // Default snap-zone = minWidth: dragging below the expanded min snaps to collapsed,\n // since below min the sidebar cannot render its expanded layout anyway.\n // Pass `collapseBelow={0}` to disable snap.\n const safeCollapseBelow = collapseBelow ?? safeMin;\n\n const stateStorageKey = storageKey ? `${storageKey}:${SIDEBAR_STATE_KEY}` : SIDEBAR_STATE_KEY;\n const widthStorageKey = storageKey ? `${storageKey}:${SIDEBAR_WIDTH_KEY}` : SIDEBAR_WIDTH_KEY;\n\n // Hydrate synchronously from localStorage so first paint is already at the correct width.\n // Falls back to clamped defaults during SSR or when storage is unavailable.\n const readInitial = (): { state: SidebarState; width: number } => {\n if (typeof window === 'undefined') return { state: defaultState, width: safeDefault };\n try {\n let nextState: SidebarState = defaultState;\n let nextWidth = safeDefault;\n const storedState = window.localStorage.getItem(stateStorageKey);\n if (storedState === 'collapsed' || storedState === 'default') nextState = storedState;\n const storedWidth = window.localStorage.getItem(widthStorageKey);\n if (storedWidth !== null) {\n const parsed = Number(storedWidth);\n if (Number.isFinite(parsed)) nextWidth = clamp(parsed, safeMin, safeMax);\n }\n return { state: nextState, width: nextWidth };\n } catch {\n return { state: defaultState, width: safeDefault };\n }\n };\n const initialRef = React.useRef<{ state: SidebarState; width: number } | null>(null);\n if (initialRef.current === null) initialRef.current = readInitial();\n const initial = initialRef.current;\n\n const [state, setState] = React.useState<SidebarState>(initial.state);\n const [width, setWidthState] = React.useState<number>(initial.width);\n const [isMobile, setIsMobile] = React.useState(false);\n const [openMobile, setOpenMobile] = React.useState(false);\n const widthRef = React.useRef<number>(initial.width);\n const stateRef = React.useRef<SidebarState>(initial.state);\n stateRef.current = state;\n\n const scopeRef = React.useRef<HTMLDivElement | null>(null);\n\n // Watch viewport for mobile breakpoint.\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);\n const update = () => setIsMobile(mq.matches);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, [mobileBreakpoint]);\n\n // Close mobile drawer when crossing back to desktop.\n React.useEffect(() => {\n if (!isMobile && openMobile) setOpenMobile(false);\n }, [isMobile, openMobile]);\n\n const writeCssVar = React.useCallback((px: number) => {\n const el = scopeRef.current;\n if (el) el.style.setProperty(SIDEBAR_WIDTH_VAR, `${px}px`);\n }, []);\n\n // Keep the CSS var in sync with collapsed state transitions.\n useIsoLayoutEffect(() => {\n writeCssVar(state === 'collapsed' ? safeCollapsed : widthRef.current);\n }, [state, safeCollapsed, writeCssVar]);\n\n const persistState = React.useCallback(\n (next: SidebarState) => {\n try {\n window.localStorage.setItem(stateStorageKey, next);\n } catch {}\n },\n [stateStorageKey],\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setOpenMobile(prev => !prev);\n return;\n }\n setState(prev => {\n const next = prev === 'default' ? 'collapsed' : 'default';\n // Sync ref so a synchronous follow-up `commit()` (e.g. keyboard handler)\n // persists the new state instead of the stale render-time value.\n stateRef.current = next;\n persistState(next);\n return next;\n });\n }, [isMobile, persistState]);\n\n const setWidth = React.useCallback(\n (next: number) => {\n const clamped = clamp(next, safeMin, safeMax);\n widthRef.current = clamped;\n writeCssVar(clamped);\n },\n [safeMin, safeMax, writeCssVar],\n );\n\n const collapse = React.useCallback(() => {\n stateRef.current = 'collapsed';\n persistState('collapsed');\n setState('collapsed');\n }, [persistState]);\n const expand = React.useCallback(() => {\n stateRef.current = 'default';\n persistState('default');\n setState('default');\n }, [persistState]);\n\n const commit = React.useCallback(() => {\n setWidthState(widthRef.current);\n try {\n window.localStorage.setItem(stateStorageKey, stateRef.current);\n window.localStorage.setItem(widthStorageKey, String(widthRef.current));\n } catch {}\n }, [stateStorageKey, widthStorageKey]);\n\n const setGestureActive = React.useCallback((active: boolean) => {\n const el = scopeRef.current;\n if (!el) return;\n if (active) el.setAttribute('data-sidebar-gesture', 'active');\n else el.removeAttribute('data-sidebar-gesture');\n }, []);\n\n // Global ⌘B / Ctrl+B toggle. Skip when typing.\n React.useEffect(() => {\n if (disableKeyboardShortcut) return;\n const onKeyDown = (ev: KeyboardEvent) => {\n // `code` is layout-independent — works on non-Latin keyboards.\n if (ev.code !== 'KeyB') return;\n if (!(ev.metaKey || ev.ctrlKey)) return;\n if (ev.altKey || ev.shiftKey) return;\n const target = ev.target as HTMLElement | null;\n if (target) {\n const tag = target.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n if (target.isContentEditable) return;\n }\n ev.preventDefault();\n toggleSidebar();\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [disableKeyboardShortcut, toggleSidebar]);\n\n const effectiveState: SidebarState = isMobile ? 'default' : state;\n\n const contextValue = React.useMemo(\n () => ({\n state: effectiveState,\n desktopState: state,\n width,\n minWidth: safeMin,\n maxWidth: safeMax,\n collapseBelow: safeCollapseBelow,\n collapsedWidth: safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n }),\n [\n effectiveState,\n state,\n width,\n safeMin,\n safeMax,\n safeCollapseBelow,\n safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n ],\n );\n\n const drawerValue = React.useMemo<MobileDrawerContext>(() => ({ openMobile, setOpenMobile }), [openMobile]);\n\n // CSS var owned exclusively by writeCssVar (single source of truth).\n // SSR seeds the initial value here; post-mount writeCssVar takes over.\n const scopeStyle: CSSProperties = {\n [SIDEBAR_WIDTH_VAR]: `${initial.state === 'collapsed' ? safeCollapsed : initial.width}px`,\n ['--sidebar-width-mobile' as string]: `${mobileWidth}px`,\n display: 'contents',\n } as CSSProperties;\n\n return (\n <div\n ref={scopeRef}\n data-sidebar-scope\n data-sidebar-state={state}\n data-sidebar-mobile={isMobile ? 'true' : 'false'}\n style={scopeStyle}\n suppressHydrationWarning\n >\n <MainSidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </MainSidebarContext.Provider>\n </div>\n );\n}\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n /** Override the hamburger icon. */\n icon?: React.ReactNode;\n};\n\nexport function MainSidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: MainSidebarMobileTriggerProps) {\n // Always render; visibility toggled via scope's `data-sidebar-mobile` attribute.\n // SSR-stable and respects the configured `mobileBreakpoint`.\n const { isMobile, setOpenMobile } = useMainSidebar();\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n aria-hidden={!isMobile}\n tabIndex={isMobile ? 0 : -1}\n data-mobile-only\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) setOpenMobile(true);\n }}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-md',\n 'in-data-[sidebar-mobile=false]:hidden',\n 'text-neutral4 hover:text-neutral6 hover:bg-sidebar-nav-hover',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1',\n className,\n )}\n >\n {icon ?? <MenuIcon className=\"size-5\" />}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function MainSidebarNav({\n 'aria-label': ariaLabel = 'Main',\n children,\n className,\n ...props\n}: MainSidebarNavProps) {\n return (\n <nav aria-label={ariaLabel} className={cn('flex flex-col flex-1 min-h-0', className)} {...props}>\n <ScrollArea className=\"flex-1 min-h-0\" viewPortClassName=\"px-0.5\">\n {children}\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavHeaderProps = Omit<ComponentPropsWithoutRef<'header'>, 'children'> & {\n children?: React.ReactNode;\n state?: SidebarState;\n href?: string;\n isActive?: boolean;\n /** Override the Provider-level LinkComponent. Defaults to `<a>` when neither is set. */\n LinkComponent?: LinkComponent;\n};\nexport function MainSidebarNavHeader({\n children,\n className,\n state: stateProp,\n href,\n isActive,\n LinkComponent: LinkProp,\n ...props\n}: MainSidebarNavHeaderProps) {\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const isMobile = ctx?.isMobile ?? false;\n const Link: LinkComponent | 'a' = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const showTitle = state === 'default' && !isMobile;\n\n return (\n <div className={cn('min-w-0 min-h-8 flex items-center mt-2 mb-0.5', className)}>\n {showTitle ? (\n <header\n {...props}\n className={cn('min-w-0 max-w-full truncate text-ui-sm font-medium pl-3', {\n 'text-neutral5': isActive,\n 'text-neutral3/70': !isActive,\n })}\n >\n {href ? (\n <Link\n href={href}\n className={cn('block min-w-0 truncate transition-colors duration-normal', {\n 'hover:text-neutral5': !isActive,\n 'text-neutral5': isActive,\n })}\n >\n {children}\n </Link>\n ) : (\n children\n )}\n </header>\n ) : (\n <>\n {/* Keep header in DOM (visually hidden) so consumers' `id` still resolves\n for `MainSidebarSections`' `aria-labelledby`. */}\n <VisuallyHidden asChild>\n <header {...props}>{children}</header>\n </VisuallyHidden>\n <div aria-hidden=\"true\" className=\"mx-3 h-px flex-1 bg-border1\" />\n </>\n )}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `MainSidebar.NavLink` rows.\n *\n * Auto-hides via `VisuallyHidden` when the sidebar is collapsed (icon-only row),\n * so screen readers still announce the label without it leaking outside the\n * 36px collapsed item. Handles single-line truncation when expanded.\n *\n * Required for `asChild` consumers — the default `link={...}` path wraps the\n * name internally, but slotted elements (`<button>`, custom links) bring their\n * own children, so the label needs to opt into the collapse-aware rendering.\n */\nexport function MainSidebarNavLabel({ children, className, state: stateProp, ...rest }: MainSidebarNavLabelProps) {\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n if (state === 'collapsed') {\n return <VisuallyHidden>{children}</VisuallyHidden>;\n }\n return (\n <span {...rest} className={cn('min-w-0 flex-1 truncate text-left', className)}>\n {children}\n </span>\n );\n}\n","import React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { MainSidebarNavLabel } from './main-sidebar-nav-label';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type NavLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n /** @deprecated Sidebar nav items now render flush; this option is accepted but ignored. */\n indent?: boolean;\n};\n\ntype ItemStyleOptions = {\n isActive?: boolean;\n isCollapsed?: boolean;\n isFeatured?: boolean;\n};\n\n/**\n * Shared classes for any sidebar nav row element (anchor, button, custom).\n * Apply directly to the interactive element so `asChild` and custom slotted\n * elements (e.g. router Links) all receive the same styling without relying\n * on `[&>a]:` child selectors.\n */\nexport const navItemClasses = ({ isActive, isCollapsed, isFeatured }: ItemStyleOptions = {}) =>\n cn(\n 'flex items-center text-ui-md text-neutral3 rounded-lg h-9 min-w-0 whitespace-nowrap',\n 'transition-all duration-normal ease-out-custom motion-reduce:transition-none',\n '[&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0 [&_svg]:text-neutral3/70 [&_svg]:transition-colors [&_svg]:duration-normal motion-reduce:[&_svg]:transition-none',\n 'hover:bg-sidebar-nav-hover hover:text-neutral6 [&:hover_svg]:text-neutral5',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:shadow-focus-ring',\n !isCollapsed && 'w-full gap-2.5 py-1 px-3 justify-start',\n isCollapsed && 'w-full p-0 justify-center',\n isActive &&\n 'text-neutral6 bg-sidebar-nav-active hover:bg-sidebar-nav-active hover:text-neutral6 [&_svg]:text-neutral6 [&:hover_svg]:text-neutral6',\n isCollapsed && !isActive && '[&_svg]:text-neutral3',\n isFeatured && 'my-2 bg-accent1Dark hover:bg-accent1Darker text-accent1 hover:text-accent1 border border-accent1/30',\n isFeatured &&\n 'dark:bg-accent1 dark:hover:bg-accent1/90 dark:text-black dark:hover:text-black dark:border-transparent',\n isFeatured &&\n '[&_svg]:text-accent1 [&:hover_svg]:text-accent1 dark:[&_svg]:text-black/75 dark:[&:hover_svg]:text-black',\n );\n\nexport type MainSidebarNavLinkProps = Omit<ComponentPropsWithoutRef<'li'>, 'children'> & {\n link?: NavLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n /** Override the Provider-level LinkComponent for this row. Defaults to `<a>` when neither is set. */\n LinkComponent?: LinkComponent;\n /**\n * When true, render `children` as the interactive element.\n * Use for `<button>` items or custom router Links. Item classes are forwarded\n * to the slotted element. `link.url` and `LinkComponent` are ignored; other\n * `link` presentation fields still apply when supplied.\n */\n asChild?: boolean;\n};\n\ntype SlottedNavChildProps = {\n className?: string;\n};\n\nexport function MainSidebarNavLink({\n link,\n state: stateProp,\n children,\n isActive,\n className,\n LinkComponent: LinkProp,\n asChild = false,\n ...props\n}: MainSidebarNavLinkProps) {\n // Auto-inherit state + LinkComponent from context; explicit props still win.\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent | 'a' = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const isFeatured = link?.variant === 'featured';\n const isExternal = Boolean(link?.url && /^(https?:)?\\/\\//.test(link.url));\n const linkParams = isExternal ? { target: '_blank', rel: 'noreferrer' } : {};\n const needsTooltip = link ? isCollapsed || Boolean(link.tooltipMsg) : false;\n\n const itemClassName = navItemClasses({\n isActive,\n isCollapsed,\n isFeatured,\n });\n\n let interactiveEl: React.ReactNode = null;\n\n if (asChild) {\n if (!React.isValidElement<SlottedNavChildProps>(children)) {\n throw new Error(\n 'MainSidebarNavLink requires a valid React element child when `asChild` is true so it can apply `SlottedNavChildProps` and merge `itemClassName`.',\n );\n }\n\n interactiveEl = React.cloneElement(children, {\n className: cn(itemClassName, children.props.className),\n });\n } else if (link) {\n interactiveEl = (\n <Link href={link.url} {...linkParams} className={itemClassName}>\n {link.icon}\n <MainSidebarNavLabel state={state}>{link.name}</MainSidebarNavLabel>\n {children}\n </Link>\n );\n }\n\n return (\n <li {...props} className={cn('flex relative min-w-0', className)}>\n {link && needsTooltip && React.isValidElement(interactiveEl) ? (\n <Tooltip>\n <TooltipTrigger render={interactiveEl} />\n <TooltipContent side=\"right\" align=\"center\" sideOffset={16}>\n {link.tooltipMsg ? (isCollapsed ? `${link.name} | ${link.tooltipMsg}` : link.tooltipMsg) : link.name}\n </TooltipContent>\n </Tooltip>\n ) : (\n (interactiveEl ?? children)\n )}\n </li>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function MainSidebarNavList({ className, children, ...props }: MainSidebarNavListProps) {\n return (\n <ul className={cn('grid grid-cols-[minmax(0,1fr)] gap-1 items-start content-center', className)} {...props}>\n {children}\n </ul>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { NavLink } from './main-sidebar-nav-link';\nimport { cn } from '@/lib/utils';\n\nexport type NavSection = {\n key: string;\n title?: string;\n href?: string;\n links: NavLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type MainSidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function MainSidebarNavSection({ className, children, ...props }: MainSidebarNavSectionProps) {\n return (\n <section className={cn('grid grid-cols-[minmax(0,1fr)] items-start content-center relative', className)} {...props}>\n {children}\n </section>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarNavSeparator({ className, ...props }: MainSidebarNavSeparatorProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'min-h-5 relative',\n '[&:after]:content-[\"\"] [&:after]:block [&:after]:absolute [&:after]:h-0 [&:after]:border-border1 [&:after]:border-t [&:after]:top-1/2 [&:after]:left-3 [&:after]:right-3',\n className,\n )}\n {...props}\n />\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\n// line: gradient hairline, fits a visible container edge.\n// pill: small floating pill, for handles with no container around.\nconst indicatorVariants = cva(\n 'block pointer-events-none transition-all duration-150 ease-out motion-reduce:transition-none',\n {\n variants: {\n variant: {\n line: 'h-3/4 w-px bg-linear-to-b from-transparent via-neutral6/25 to-transparent opacity-0',\n pill: 'h-10 w-0.5 rounded-full bg-surface5',\n },\n },\n defaultVariants: {\n variant: 'line',\n },\n },\n);\n\nexport type ResizeHandleIndicatorProps = VariantProps<typeof indicatorVariants> & {\n className?: string;\n};\n\n// Shared visual for resize handles (sidebar, panel separators).\n// Consumers reveal/emphasize it via their own state variant classes.\nexport const ResizeHandleIndicator = ({ variant, className }: ResizeHandleIndicatorProps) => (\n <span aria-hidden className={cn(indicatorVariants({ variant }), className)} />\n);\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { ResizeHandleIndicator } from '@/ds/primitives/resize-handle-indicator';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function MainSidebarRoot({ children, className }: MainSidebarRootProps) {\n const {\n state,\n width,\n minWidth,\n maxWidth,\n collapseBelow,\n collapsedWidth,\n isMobile,\n openMobile,\n setOpenMobile,\n setWidth,\n collapse,\n expand,\n commit,\n toggleSidebar,\n setGestureActive,\n } = useMainSidebar();\n const isCollapsed = state === 'collapsed';\n const isHidden = isCollapsed && collapsedWidth === 0;\n\n const draggedRef = useRef(false);\n // Tracks active drag so unmount mid-gesture can restore body styles.\n const dragCleanupRef = useRef<(() => void) | null>(null);\n\n // Restore global state if the component unmounts mid-drag.\n useEffect(() => {\n return () => {\n dragCleanupRef.current?.();\n dragCleanupRef.current = null;\n };\n }, []);\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n event.preventDefault();\n\n draggedRef.current = false;\n // Active styles on press, not after drag threshold.\n setGestureActive(true);\n\n const startX = event.clientX;\n\n const handle = event.currentTarget;\n const pointerId = event.pointerId;\n\n // Capture pointer: keeps :hover + col-resize cursor on handle for the\n // whole drag, even when cursor leaves the hotzone (collapsed snap-zone).\n try {\n handle.setPointerCapture(pointerId);\n } catch {\n // Pointer already gone.\n }\n\n // WYSIWYG resize: sidebar width = cursor X relative to sidebar's left edge.\n // Captured once — sidebar is `shrink-0`, left edge is stable during the gesture.\n const sidebarEl = handle.parentElement;\n const sidebarLeft = sidebarEl ? sidebarEl.getBoundingClientRect().left : 0;\n\n const prevCursor = document.body.style.cursor;\n const prevUserSelect = document.body.style.userSelect;\n\n const onMove = (ev: PointerEvent) => {\n if (ev.pointerId !== pointerId) return;\n const dx = ev.clientX - startX;\n if (!draggedRef.current) {\n if (Math.abs(dx) <= DRAG_THRESHOLD) return;\n draggedRef.current = true;\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n // Single rule, no started-state branch: cursor position alone defines state.\n const cursorWidth = ev.clientX - sidebarLeft;\n\n if (collapseBelow > 0 && cursorWidth < collapseBelow) {\n collapse();\n return;\n }\n expand();\n setWidth(cursorWidth);\n };\n const cleanup = (ev?: PointerEvent) => {\n if (ev && ev.pointerId !== pointerId) return;\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', cleanup);\n window.removeEventListener('pointercancel', cleanup);\n document.body.style.cursor = prevCursor;\n document.body.style.userSelect = prevUserSelect;\n setGestureActive(false);\n commit();\n dragCleanupRef.current = null;\n };\n dragCleanupRef.current = () => cleanup();\n // Window-level listeners: pointer moves off the narrow handle fire reliably,\n // cursor leaving the window still gets `pointerup`.\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', cleanup);\n window.addEventListener('pointercancel', cleanup);\n },\n [collapseBelow, setWidth, expand, collapse, commit, setGestureActive],\n );\n\n const onClick = useCallback(() => {\n if (draggedRef.current) {\n draggedRef.current = false;\n return;\n }\n toggleSidebar();\n }, [toggleSidebar]);\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n toggleSidebar();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (isCollapsed) return;\n setWidth(width - KEYBOARD_STEP);\n commit();\n return;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (isCollapsed) {\n expand();\n commit();\n return;\n }\n setWidth(width + KEYBOARD_STEP);\n commit();\n return;\n }\n case 'Home': {\n event.preventDefault();\n expand();\n setWidth(minWidth);\n commit();\n return;\n }\n case 'End': {\n event.preventDefault();\n expand();\n setWidth(maxWidth);\n commit();\n return;\n }\n }\n },\n [isCollapsed, width, minWidth, maxWidth, setWidth, expand, commit, toggleSidebar],\n );\n\n // Mobile: render as an off-canvas drawer via Base UI Dialog.\n // Auto-close on link navigation (standard drawer UX). Don't gate on\n // `defaultPrevented` — client-side router links call `preventDefault()` for\n // SPA navigation, and we still want to close the drawer when they do.\n const closeOnAnchor = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const anchor = (event.target as HTMLElement).closest('a');\n if (!anchor || !anchor.hasAttribute('href')) return;\n // Skip non-primary clicks and modifier-clicks (open in new tab/window).\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n // Skip explicit external/download targets.\n if (anchor.target === '_blank' || anchor.hasAttribute('download')) return;\n setOpenMobile(false);\n },\n [setOpenMobile],\n );\n\n if (isMobile) {\n return (\n <DialogPrimitive.Root open={openMobile} onOpenChange={setOpenMobile}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Backdrop\n className={cn(\n 'fixed inset-0 z-40 bg-overlay backdrop-blur-sm',\n 'opacity-100 transition-opacity duration-200 ease-out motion-reduce:transition-none',\n 'data-[starting-style]:opacity-0 data-[ending-style]:opacity-0 data-[ending-style]:duration-150 data-[ending-style]:ease-in',\n )}\n />\n <DialogPrimitive.Popup\n className={cn(\n 'fixed inset-y-0 left-0 z-50 flex h-full flex-col',\n 'w-3/4 max-w-(--sidebar-width-mobile)',\n 'bg-surface2 shadow-xl',\n 'data-[open]:animate-in data-[closed]:animate-out',\n 'data-[open]:slide-in-from-left data-[closed]:slide-out-to-left',\n 'duration-200',\n className,\n )}\n >\n <VisuallyHidden asChild>\n <DialogPrimitive.Title>Navigation</DialogPrimitive.Title>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DialogPrimitive.Description>Primary site navigation drawer</DialogPrimitive.Description>\n </VisuallyHidden>\n <div onClick={closeOnAnchor} className=\"flex flex-col h-full min-h-0 px-4 py-2 overflow-hidden\">\n {children}\n </div>\n </DialogPrimitive.Popup>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n }\n\n // Desktop: in-flow sidebar with resize handle.\n const currentWidth = isCollapsed ? collapsedWidth : width;\n return (\n <div\n className={cn(\n 'sidebar-layout group/sidebar relative shrink-0 self-stretch min-h-0',\n 'w-(--sidebar-width)',\n 'transition-[width] duration-220 ease-[cubic-bezier(0.32,0.72,0,1)]',\n 'motion-reduce:transition-none',\n 'in-data-[sidebar-gesture=active]:transition-none',\n className,\n // Order matters for tailwind-merge: these win over consumer-supplied border classes.\n isHidden && 'border-r-0 border-transparent',\n )}\n >\n <div\n className={cn(\n 'flex flex-col h-full min-h-0 overflow-hidden',\n 'transition-opacity duration-200 motion-reduce:transition-none',\n isCollapsed ? 'px-2' : 'px-4',\n isHidden && 'opacity-0 pointer-events-none px-0',\n )}\n >\n {children}\n </div>\n\n <div\n // Focusable window-splitter pattern (WAI-ARIA APG): `separator` with\n // value props + keyboard semantics. Click toggles; Arrow keys resize.\n role=\"separator\"\n aria-orientation=\"vertical\"\n // Collapsed: omit the numeric range so AT doesn't see contradictory\n // values (valuenow=0/64 inside valuemin=200..valuemax=480). `valuetext`\n // still describes the state.\n aria-valuenow={isCollapsed ? undefined : currentWidth}\n aria-valuemin={isCollapsed ? undefined : minWidth}\n aria-valuemax={isCollapsed ? undefined : maxWidth}\n aria-valuetext={isCollapsed ? 'collapsed' : `${currentWidth} pixels`}\n aria-label={`Resize sidebar. Arrow keys to resize, Enter to ${isCollapsed ? 'expand' : 'collapse'}.`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'group absolute top-0 -right-1 z-10 h-full w-2 cursor-col-resize touch-none',\n 'flex items-center justify-center',\n 'focus-visible:outline-hidden',\n )}\n >\n <ResizeHandleIndicator\n className={cn(\n 'group-hover:opacity-100',\n 'group-focus-visible:opacity-100 group-focus-visible:via-accent1',\n 'in-data-[sidebar-gesture=active]:opacity-100 in-data-[sidebar-gesture=active]:via-neutral6/45',\n )}\n />\n </div>\n </div>\n );\n}\n","import { useId } from 'react';\nimport { MainSidebarNavHeader } from './main-sidebar-nav-header';\nimport { MainSidebarNavLink } from './main-sidebar-nav-link';\nimport type { NavLink } from './main-sidebar-nav-link';\nimport { MainSidebarNavList } from './main-sidebar-nav-list';\nimport { MainSidebarNavSection } from './main-sidebar-nav-section';\nimport type { NavSection } from './main-sidebar-nav-section';\nimport { MainSidebarNavSeparator } from './main-sidebar-nav-separator';\n\nexport type MainSidebarSectionsProps = {\n sections: NavSection[];\n /**\n * Called per link to decide the active state. Receives sibling links so\n * callers can use `getIsLinkActive` (or any sibling-aware logic) without\n * re-scanning `sections` from the outside. Default: each link's `isActive`.\n */\n isActive?: (link: NavLink, siblings: NavLink[]) => boolean;\n className?: string;\n};\n\nexport function MainSidebarSections({ sections, isActive, className }: MainSidebarSectionsProps) {\n const baseId = useId();\n return (\n <>\n {sections.map(section => {\n const showSeparator = section.links.length > 0 && section.separator;\n const headerId = section.title ? `${baseId}-${section.key}` : undefined;\n return (\n <MainSidebarNavSection\n key={section.key}\n className={className}\n aria-labelledby={headerId}\n aria-label={!headerId ? section.key : undefined}\n >\n {/* Render separator and header independently — a section can have\n both (titled group preceded by a divider). */}\n {showSeparator ? <MainSidebarNavSeparator /> : null}\n {section.title ? (\n <MainSidebarNavHeader id={headerId} href={section.href} isActive={section.isHeaderActive}>\n {section.title}\n </MainSidebarNavHeader>\n ) : null}\n <MainSidebarNavList>\n {section.links.map(link => (\n <MainSidebarNavLink\n key={link.name}\n link={link}\n isActive={isActive?.(link, section.links) ?? link.isActive}\n />\n ))}\n </MainSidebarNavList>\n </MainSidebarNavSection>\n );\n })}\n </>\n );\n}\n\n/**\n * Strict active-path match with sibling-exclusion.\n * - `pathname === link.url` or starts with `link.url + '/'`\n * - Not active if any sibling link has a longer matching url (prevents `/a` lighting while `/a/b` matches).\n */\nexport function getIsLinkActive(link: NavLink, pathname: string, siblings: NavLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n if (!matches(link.url)) return false;\n return !siblings.some(other => other.url !== link.url && other.url.length > link.url.length && matches(other.url));\n}\n","import { KeyboardIcon, PanelRightIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function MainSidebarTrigger({ className, onClick, ...props }: MainSidebarTriggerProps) {\n // Use desktopState so the icon reflects the persisted desktop state\n // even on mobile (where `state` is forced to 'default' for the drawer).\n const { desktopState, toggleSidebar } = useMainSidebar();\n const isCollapsed = desktopState === 'collapsed';\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n aria-label=\"Toggle sidebar\"\n aria-expanded={!isCollapsed}\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleSidebar();\n }}\n className={cn(\n 'flex items-center justify-center text-neutral3 rounded-md',\n 'size-9',\n isCollapsed ? 'mx-auto' : 'ml-auto',\n 'hover:bg-sidebar-nav-hover hover:text-neutral6',\n 'transition-all duration-normal ease-out-custom',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:shadow-focus-ring',\n '[&_svg]:w-4 [&_svg]:h-4 [&_svg]:text-neutral3 [&:hover_svg]:text-neutral5 [&_svg]:transition-transform [&_svg]:duration-normal',\n className,\n )}\n >\n <PanelRightIcon\n className={cn({\n 'rotate-180': isCollapsed,\n })}\n />\n </button>\n }\n />\n\n <TooltipContent>\n Toggle Sidebar\n <div className=\"flex items-center gap-1 [&>svg]:w-[1em] [&>svg]:h-[1em]\">\n <KeyboardIcon /> Ctrl+B\n </div>\n </TooltipContent>\n </Tooltip>\n );\n}\n","import { MainSidebarBottom } from './main-sidebar-bottom';\nimport { MainSidebarMobileTrigger } from './main-sidebar-mobile-trigger';\nimport { MainSidebarNav } from './main-sidebar-nav';\nimport { MainSidebarNavHeader } from './main-sidebar-nav-header';\nimport { MainSidebarNavLabel } from './main-sidebar-nav-label';\nimport { MainSidebarNavLink } from './main-sidebar-nav-link';\nimport { MainSidebarNavList } from './main-sidebar-nav-list';\nimport { MainSidebarNavSection } from './main-sidebar-nav-section';\nimport { MainSidebarNavSeparator } from './main-sidebar-nav-separator';\nimport { MainSidebarRoot } from './main-sidebar-root';\nimport { MainSidebarSections } from './main-sidebar-sections';\nimport { MainSidebarTrigger } from './main-sidebar-trigger';\n\nexport { MainSidebarProvider, type SidebarState, type MainSidebarProviderProps } from './main-sidebar-context';\nexport { useMainSidebar, useMaybeSidebar } from './main-sidebar-context';\nexport { type NavLink, navItemClasses } from './main-sidebar-nav-link';\nexport { type NavSection } from './main-sidebar-nav-section';\nexport { MainSidebarTrigger } from './main-sidebar-trigger';\nexport { MainSidebarMobileTrigger } from './main-sidebar-mobile-trigger';\nexport { getIsLinkActive } from './main-sidebar-sections';\n\nexport const MainSidebar = Object.assign(MainSidebarRoot, {\n Bottom: MainSidebarBottom,\n Nav: MainSidebarNav,\n NavSection: MainSidebarNavSection,\n NavLink: MainSidebarNavLink,\n NavLabel: MainSidebarNavLabel,\n NavHeader: MainSidebarNavHeader,\n NavList: MainSidebarNavList,\n NavSeparator: MainSidebarNavSeparator,\n Sections: MainSidebarSections,\n Trigger: MainSidebarTrigger,\n MobileTrigger: MainSidebarMobileTrigger,\n});\n"],"names":["React","DialogPrimitive"],"mappings":"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"}
1
+ {"version":3,"file":"main-sidebar-Bk2U9O57.js","sources":["../src/ds/components/MainSidebar/main-sidebar-bottom.tsx","../src/ds/components/MainSidebar/main-sidebar-context.tsx","../src/ds/components/MainSidebar/main-sidebar-mobile-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-nav.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-header.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-label.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-link.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-list.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-section.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-separator.tsx","../src/ds/primitives/resize-handle-indicator.tsx","../src/ds/components/MainSidebar/main-sidebar-root.tsx","../src/ds/components/MainSidebar/main-sidebar-sections.tsx","../src/ds/components/MainSidebar/main-sidebar-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarBottomProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarBottom({ className, children, ...props }: MainSidebarBottomProps) {\n return (\n <div className={cn('mt-auto', className)} {...props}>\n {children}\n </div>\n );\n}\n","import React from 'react';\nimport type { CSSProperties } from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst SIDEBAR_STATE_KEY = 'sidebar:state';\nconst SIDEBAR_WIDTH_KEY = 'sidebar:width';\n\nconst SIDEBAR_WIDTH_VAR = '--sidebar-width';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype MainSidebarContext = {\n state: SidebarState;\n desktopState: SidebarState;\n width: number;\n minWidth: number;\n maxWidth: number;\n collapseBelow: number;\n collapsedWidth: number;\n isMobile: boolean;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n toggleSidebar: () => void;\n setWidth: (width: number) => void;\n collapse: () => void;\n expand: () => void;\n commit: () => void;\n setGestureActive: (active: boolean) => void;\n LinkComponent?: LinkComponent;\n};\n\n// Split: drawer open-state lives in its own context so NavLink/NavHeader\n// do not re-render when the mobile drawer toggles.\ntype MobileDrawerContext = {\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n};\n\nconst MainSidebarContext = React.createContext<Omit<MainSidebarContext, 'openMobile' | 'setOpenMobile'> | null>(null);\nconst MobileDrawerContext = React.createContext<MobileDrawerContext | null>(null);\n\nexport function useMainSidebar(): MainSidebarContext {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useMainSidebar must be used within a MainSidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): MainSidebarContext | null {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) return null;\n return { ...ctx, ...drawer };\n}\n\n/** Reads only mobile drawer state. Cheap — no re-renders on sidebar resize. */\nexport function useMobileDrawer(): MobileDrawerContext {\n const drawer = React.useContext(MobileDrawerContext);\n if (!drawer) throw new Error('useMobileDrawer must be used within a MainSidebarProvider.');\n return drawer;\n}\n\nexport type MainSidebarProviderProps = {\n children: React.ReactNode;\n /** Initial state before localStorage hydrates. Defaults to `'default'`. */\n defaultState?: SidebarState;\n /** Default expanded width in px. Defaults to `240`. */\n defaultWidth?: number;\n /** Minimum draggable width in px. Defaults to `200`. */\n minWidth?: number;\n /** Maximum draggable width in px. Defaults to `480`. */\n maxWidth?: number;\n /** Drag below this value snaps the sidebar closed. Defaults to `minWidth` (snap to collapsed when dragged below the expanded minimum). Pass `0` to disable snap. */\n collapseBelow?: number;\n /** Width in px when collapsed. Defaults to `64`. Set to `0` for fully hidden. */\n collapsedWidth?: number;\n /** Disable the global ⌘B / Ctrl+B toggle shortcut. Defaults to `false`. */\n disableKeyboardShortcut?: boolean;\n /** Scope-key for localStorage. Allows multiple independent sidebars per app. */\n storageKey?: string;\n /** Mobile breakpoint in px (max-width). Below this, sidebar renders as a drawer. Defaults to `1024`. */\n mobileBreakpoint?: number;\n /** Drawer max-width on mobile in px. Actual width is `min(75vw, mobileWidth)`. Defaults to `360`. */\n mobileWidth?: number;\n /** Default LinkComponent injected into NavLink/NavHeader. Falls back to plain `<a>` if omitted. */\n LinkComponent?: LinkComponent;\n};\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v));\n\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport function MainSidebarProvider({\n children,\n defaultState = 'default',\n defaultWidth = 240,\n minWidth = 200,\n maxWidth = 480,\n collapseBelow,\n collapsedWidth = 64,\n disableKeyboardShortcut = false,\n storageKey,\n mobileBreakpoint = 1024,\n mobileWidth = 360,\n LinkComponent,\n}: MainSidebarProviderProps) {\n // Normalize props so bad inputs (defaultWidth < minWidth, min > max, etc.) never produce a broken layout.\n const safeMin = Math.max(0, Math.min(minWidth, maxWidth));\n const safeMax = Math.max(safeMin, maxWidth);\n const safeCollapsed = Math.max(0, Math.min(collapsedWidth, safeMax));\n const safeDefault = clamp(defaultWidth, safeMin, safeMax);\n // Default snap-zone = minWidth: dragging below the expanded min snaps to collapsed,\n // since below min the sidebar cannot render its expanded layout anyway.\n // Pass `collapseBelow={0}` to disable snap.\n const safeCollapseBelow = collapseBelow ?? safeMin;\n\n const stateStorageKey = storageKey ? `${storageKey}:${SIDEBAR_STATE_KEY}` : SIDEBAR_STATE_KEY;\n const widthStorageKey = storageKey ? `${storageKey}:${SIDEBAR_WIDTH_KEY}` : SIDEBAR_WIDTH_KEY;\n\n // Hydrate synchronously from localStorage so first paint is already at the correct width.\n // Falls back to clamped defaults during SSR or when storage is unavailable.\n const readInitial = (): { state: SidebarState; width: number } => {\n if (typeof window === 'undefined') return { state: defaultState, width: safeDefault };\n try {\n let nextState: SidebarState = defaultState;\n let nextWidth = safeDefault;\n const storedState = window.localStorage.getItem(stateStorageKey);\n if (storedState === 'collapsed' || storedState === 'default') nextState = storedState;\n const storedWidth = window.localStorage.getItem(widthStorageKey);\n if (storedWidth !== null) {\n const parsed = Number(storedWidth);\n if (Number.isFinite(parsed)) nextWidth = clamp(parsed, safeMin, safeMax);\n }\n return { state: nextState, width: nextWidth };\n } catch {\n return { state: defaultState, width: safeDefault };\n }\n };\n const initialRef = React.useRef<{ state: SidebarState; width: number } | null>(null);\n if (initialRef.current === null) initialRef.current = readInitial();\n const initial = initialRef.current;\n\n const [state, setState] = React.useState<SidebarState>(initial.state);\n const [width, setWidthState] = React.useState<number>(initial.width);\n const [isMobile, setIsMobile] = React.useState(false);\n const [openMobile, setOpenMobile] = React.useState(false);\n const widthRef = React.useRef<number>(initial.width);\n const stateRef = React.useRef<SidebarState>(initial.state);\n stateRef.current = state;\n\n const scopeRef = React.useRef<HTMLDivElement | null>(null);\n\n // Watch viewport for mobile breakpoint.\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);\n const update = () => setIsMobile(mq.matches);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, [mobileBreakpoint]);\n\n // Close mobile drawer when crossing back to desktop.\n React.useEffect(() => {\n if (!isMobile && openMobile) setOpenMobile(false);\n }, [isMobile, openMobile]);\n\n const writeCssVar = React.useCallback((px: number) => {\n const el = scopeRef.current;\n if (el) el.style.setProperty(SIDEBAR_WIDTH_VAR, `${px}px`);\n }, []);\n\n // Keep the CSS var in sync with collapsed state transitions.\n useIsoLayoutEffect(() => {\n writeCssVar(state === 'collapsed' ? safeCollapsed : widthRef.current);\n }, [state, safeCollapsed, writeCssVar]);\n\n const persistState = React.useCallback(\n (next: SidebarState) => {\n try {\n window.localStorage.setItem(stateStorageKey, next);\n } catch {}\n },\n [stateStorageKey],\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setOpenMobile(prev => !prev);\n return;\n }\n setState(prev => {\n const next = prev === 'default' ? 'collapsed' : 'default';\n // Sync ref so a synchronous follow-up `commit()` (e.g. keyboard handler)\n // persists the new state instead of the stale render-time value.\n stateRef.current = next;\n persistState(next);\n return next;\n });\n }, [isMobile, persistState]);\n\n const setWidth = React.useCallback(\n (next: number) => {\n const clamped = clamp(next, safeMin, safeMax);\n widthRef.current = clamped;\n writeCssVar(clamped);\n },\n [safeMin, safeMax, writeCssVar],\n );\n\n const collapse = React.useCallback(() => {\n stateRef.current = 'collapsed';\n persistState('collapsed');\n setState('collapsed');\n }, [persistState]);\n const expand = React.useCallback(() => {\n stateRef.current = 'default';\n persistState('default');\n setState('default');\n }, [persistState]);\n\n const commit = React.useCallback(() => {\n setWidthState(widthRef.current);\n try {\n window.localStorage.setItem(stateStorageKey, stateRef.current);\n window.localStorage.setItem(widthStorageKey, String(widthRef.current));\n } catch {}\n }, [stateStorageKey, widthStorageKey]);\n\n const setGestureActive = React.useCallback((active: boolean) => {\n const el = scopeRef.current;\n if (!el) return;\n if (active) el.setAttribute('data-sidebar-gesture', 'active');\n else el.removeAttribute('data-sidebar-gesture');\n }, []);\n\n // Global ⌘B / Ctrl+B toggle. Skip when typing.\n React.useEffect(() => {\n if (disableKeyboardShortcut) return;\n const onKeyDown = (ev: KeyboardEvent) => {\n // `code` is layout-independent — works on non-Latin keyboards.\n if (ev.code !== 'KeyB') return;\n if (!(ev.metaKey || ev.ctrlKey)) return;\n if (ev.altKey || ev.shiftKey) return;\n const target = ev.target as HTMLElement | null;\n if (target) {\n const tag = target.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n if (target.isContentEditable) return;\n }\n ev.preventDefault();\n toggleSidebar();\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [disableKeyboardShortcut, toggleSidebar]);\n\n const effectiveState: SidebarState = isMobile ? 'default' : state;\n\n const contextValue = React.useMemo(\n () => ({\n state: effectiveState,\n desktopState: state,\n width,\n minWidth: safeMin,\n maxWidth: safeMax,\n collapseBelow: safeCollapseBelow,\n collapsedWidth: safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n }),\n [\n effectiveState,\n state,\n width,\n safeMin,\n safeMax,\n safeCollapseBelow,\n safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n ],\n );\n\n const drawerValue = React.useMemo<MobileDrawerContext>(() => ({ openMobile, setOpenMobile }), [openMobile]);\n\n // CSS var owned exclusively by writeCssVar (single source of truth).\n // SSR seeds the initial value here; post-mount writeCssVar takes over.\n const scopeStyle: CSSProperties = {\n [SIDEBAR_WIDTH_VAR]: `${initial.state === 'collapsed' ? safeCollapsed : initial.width}px`,\n ['--sidebar-width-mobile' as string]: `${mobileWidth}px`,\n display: 'contents',\n } as CSSProperties;\n\n return (\n <div\n ref={scopeRef}\n data-sidebar-scope\n data-sidebar-state={state}\n data-sidebar-mobile={isMobile ? 'true' : 'false'}\n style={scopeStyle}\n suppressHydrationWarning\n >\n <MainSidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </MainSidebarContext.Provider>\n </div>\n );\n}\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n /** Override the hamburger icon. */\n icon?: React.ReactNode;\n};\n\nexport function MainSidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: MainSidebarMobileTriggerProps) {\n // Always render; visibility toggled via scope's `data-sidebar-mobile` attribute.\n // SSR-stable and respects the configured `mobileBreakpoint`.\n const { isMobile, setOpenMobile } = useMainSidebar();\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n aria-hidden={!isMobile}\n tabIndex={isMobile ? 0 : -1}\n data-mobile-only\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) setOpenMobile(true);\n }}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-md',\n 'in-data-[sidebar-mobile=false]:hidden',\n 'text-neutral4 hover:text-neutral6 hover:bg-sidebar-nav-hover',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1',\n className,\n )}\n >\n {icon ?? <MenuIcon className=\"size-5\" />}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function MainSidebarNav({\n 'aria-label': ariaLabel = 'Main',\n children,\n className,\n ...props\n}: MainSidebarNavProps) {\n return (\n <nav aria-label={ariaLabel} className={cn('flex flex-col flex-1 min-h-0', className)} {...props}>\n <ScrollArea className=\"flex-1 min-h-0\" viewPortClassName=\"px-0.5\">\n {children}\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavHeaderProps = Omit<ComponentPropsWithoutRef<'header'>, 'children'> & {\n children?: React.ReactNode;\n state?: SidebarState;\n href?: string;\n isActive?: boolean;\n /** Override the Provider-level LinkComponent. Defaults to `<a>` when neither is set. */\n LinkComponent?: LinkComponent;\n};\nexport function MainSidebarNavHeader({\n children,\n className,\n state: stateProp,\n href,\n isActive,\n LinkComponent: LinkProp,\n ...props\n}: MainSidebarNavHeaderProps) {\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const isMobile = ctx?.isMobile ?? false;\n const Link: LinkComponent | 'a' = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const showTitle = state === 'default' && !isMobile;\n\n return (\n <div className={cn('min-w-0 min-h-8 flex items-center mt-2 mb-0.5', className)}>\n {showTitle ? (\n <header\n {...props}\n className={cn('min-w-0 max-w-full truncate text-ui-sm font-medium pl-3', {\n 'text-neutral5': isActive,\n 'text-neutral3/70': !isActive,\n })}\n >\n {href ? (\n <Link\n href={href}\n className={cn('block min-w-0 truncate transition-colors duration-normal', {\n 'hover:text-neutral5': !isActive,\n 'text-neutral5': isActive,\n })}\n >\n {children}\n </Link>\n ) : (\n children\n )}\n </header>\n ) : (\n <>\n {/* Keep header in DOM (visually hidden) so consumers' `id` still resolves\n for `MainSidebarSections`' `aria-labelledby`. */}\n <VisuallyHidden asChild>\n <header {...props}>{children}</header>\n </VisuallyHidden>\n <div aria-hidden=\"true\" className=\"mx-3 h-px flex-1 bg-border1\" />\n </>\n )}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `MainSidebar.NavLink` rows.\n *\n * Auto-hides via `VisuallyHidden` when the sidebar is collapsed (icon-only row),\n * so screen readers still announce the label without it leaking outside the\n * 36px collapsed item. Handles single-line truncation when expanded.\n *\n * Required for `asChild` consumers — the default `link={...}` path wraps the\n * name internally, but slotted elements (`<button>`, custom links) bring their\n * own children, so the label needs to opt into the collapse-aware rendering.\n */\nexport function MainSidebarNavLabel({ children, className, state: stateProp, ...rest }: MainSidebarNavLabelProps) {\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n if (state === 'collapsed') {\n return <VisuallyHidden>{children}</VisuallyHidden>;\n }\n return (\n <span {...rest} className={cn('min-w-0 flex-1 truncate text-left', className)}>\n {children}\n </span>\n );\n}\n","import React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebar } from './main-sidebar-context';\nimport { MainSidebarNavLabel } from './main-sidebar-nav-label';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type NavLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n /** @deprecated Sidebar nav items now render flush; this option is accepted but ignored. */\n indent?: boolean;\n};\n\ntype ItemStyleOptions = {\n isActive?: boolean;\n isCollapsed?: boolean;\n isFeatured?: boolean;\n};\n\n/**\n * Shared classes for any sidebar nav row element (anchor, button, custom).\n * Apply directly to the interactive element so `asChild` and custom slotted\n * elements (e.g. router Links) all receive the same styling without relying\n * on `[&>a]:` child selectors.\n */\nexport const navItemClasses = ({ isActive, isCollapsed, isFeatured }: ItemStyleOptions = {}) =>\n cn(\n 'flex items-center text-ui-md text-neutral3 rounded-lg h-9 min-w-0 whitespace-nowrap',\n 'transition-all duration-normal ease-out-custom motion-reduce:transition-none',\n '[&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0 [&_svg]:text-neutral3/70 [&_svg]:transition-colors [&_svg]:duration-normal motion-reduce:[&_svg]:transition-none',\n 'hover:bg-sidebar-nav-hover hover:text-neutral6 [&:hover_svg]:text-neutral5',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:shadow-focus-ring',\n !isCollapsed && 'w-full gap-2.5 py-1 px-3 justify-start',\n isCollapsed && 'w-full p-0 justify-center',\n isActive &&\n 'text-neutral6 bg-sidebar-nav-active hover:bg-sidebar-nav-active hover:text-neutral6 [&_svg]:text-neutral6 [&:hover_svg]:text-neutral6',\n isCollapsed && !isActive && '[&_svg]:text-neutral3',\n isFeatured && 'my-2 bg-accent1Dark hover:bg-accent1Darker text-accent1 hover:text-accent1 border border-accent1/30',\n isFeatured &&\n 'dark:bg-accent1 dark:hover:bg-accent1/90 dark:text-black dark:hover:text-black dark:border-transparent',\n isFeatured &&\n '[&_svg]:text-accent1 [&:hover_svg]:text-accent1 dark:[&_svg]:text-black/75 dark:[&:hover_svg]:text-black',\n );\n\nexport type MainSidebarNavLinkProps = Omit<ComponentPropsWithoutRef<'li'>, 'children'> & {\n link?: NavLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n /** Override the Provider-level LinkComponent for this row. Defaults to `<a>` when neither is set. */\n LinkComponent?: LinkComponent;\n /**\n * When true, render `children` as the interactive element.\n * Use for `<button>` items or custom router Links. Item classes are forwarded\n * to the slotted element. `link.url` and `LinkComponent` are ignored; other\n * `link` presentation fields still apply when supplied.\n */\n asChild?: boolean;\n};\n\ntype SlottedNavChildProps = {\n className?: string;\n};\n\nexport function MainSidebarNavLink({\n link,\n state: stateProp,\n children,\n isActive,\n className,\n LinkComponent: LinkProp,\n asChild = false,\n ...props\n}: MainSidebarNavLinkProps) {\n // Auto-inherit state + LinkComponent from context; explicit props still win.\n const ctx = useMaybeSidebar();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent | 'a' = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const isFeatured = link?.variant === 'featured';\n const isExternal = Boolean(link?.url && /^(https?:)?\\/\\//.test(link.url));\n const linkParams = isExternal ? { target: '_blank', rel: 'noreferrer' } : {};\n const needsTooltip = link ? isCollapsed || Boolean(link.tooltipMsg) : false;\n\n const itemClassName = navItemClasses({\n isActive,\n isCollapsed,\n isFeatured,\n });\n\n let interactiveEl: React.ReactNode = null;\n\n if (asChild) {\n if (!React.isValidElement<SlottedNavChildProps>(children)) {\n throw new Error(\n 'MainSidebarNavLink requires a valid React element child when `asChild` is true so it can apply `SlottedNavChildProps` and merge `itemClassName`.',\n );\n }\n\n interactiveEl = React.cloneElement(children, {\n className: cn(itemClassName, children.props.className),\n });\n } else if (link) {\n interactiveEl = (\n <Link href={link.url} {...linkParams} className={itemClassName}>\n {link.icon}\n <MainSidebarNavLabel state={state}>{link.name}</MainSidebarNavLabel>\n {children}\n </Link>\n );\n }\n\n return (\n <li {...props} className={cn('flex relative min-w-0', className)}>\n {link && needsTooltip && React.isValidElement(interactiveEl) ? (\n <Tooltip>\n <TooltipTrigger render={interactiveEl} />\n <TooltipContent side=\"right\" align=\"center\" sideOffset={16}>\n {link.tooltipMsg ? (isCollapsed ? `${link.name} | ${link.tooltipMsg}` : link.tooltipMsg) : link.name}\n </TooltipContent>\n </Tooltip>\n ) : (\n (interactiveEl ?? children)\n )}\n </li>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function MainSidebarNavList({ className, children, ...props }: MainSidebarNavListProps) {\n return (\n <ul className={cn('grid grid-cols-[minmax(0,1fr)] gap-1 items-start content-center', className)} {...props}>\n {children}\n </ul>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { NavLink } from './main-sidebar-nav-link';\nimport { cn } from '@/lib/utils';\n\nexport type NavSection = {\n key: string;\n title?: string;\n href?: string;\n links: NavLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type MainSidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function MainSidebarNavSection({ className, children, ...props }: MainSidebarNavSectionProps) {\n return (\n <section className={cn('grid grid-cols-[minmax(0,1fr)] items-start content-center relative', className)} {...props}>\n {children}\n </section>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarNavSeparator({ className, ...props }: MainSidebarNavSeparatorProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'min-h-5 relative',\n '[&:after]:content-[\"\"] [&:after]:block [&:after]:absolute [&:after]:h-0 [&:after]:border-border1 [&:after]:border-t [&:after]:top-1/2 [&:after]:left-3 [&:after]:right-3',\n className,\n )}\n {...props}\n />\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\n// line: gradient hairline, fits a visible container edge.\n// pill: small floating pill, for handles with no container around.\nconst indicatorVariants = cva(\n 'block pointer-events-none transition-all duration-150 ease-out motion-reduce:transition-none',\n {\n variants: {\n variant: {\n line: 'h-3/4 w-px bg-linear-to-b from-transparent via-neutral6/25 to-transparent opacity-0',\n pill: 'h-10 w-0.5 rounded-full bg-surface5',\n },\n },\n defaultVariants: {\n variant: 'line',\n },\n },\n);\n\nexport type ResizeHandleIndicatorProps = VariantProps<typeof indicatorVariants> & {\n className?: string;\n};\n\n// Shared visual for resize handles (sidebar, panel separators).\n// Consumers reveal/emphasize it via their own state variant classes.\nexport const ResizeHandleIndicator = ({ variant, className }: ResizeHandleIndicatorProps) => (\n <span aria-hidden className={cn(indicatorVariants({ variant }), className)} />\n);\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { ResizeHandleIndicator } from '@/ds/primitives/resize-handle-indicator';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function MainSidebarRoot({ children, className }: MainSidebarRootProps) {\n const {\n state,\n width,\n minWidth,\n maxWidth,\n collapseBelow,\n collapsedWidth,\n isMobile,\n openMobile,\n setOpenMobile,\n setWidth,\n collapse,\n expand,\n commit,\n toggleSidebar,\n setGestureActive,\n } = useMainSidebar();\n const isCollapsed = state === 'collapsed';\n const isHidden = isCollapsed && collapsedWidth === 0;\n\n const draggedRef = useRef(false);\n // Tracks active drag so unmount mid-gesture can restore body styles.\n const dragCleanupRef = useRef<(() => void) | null>(null);\n\n // Restore global state if the component unmounts mid-drag.\n useEffect(() => {\n return () => {\n dragCleanupRef.current?.();\n dragCleanupRef.current = null;\n };\n }, []);\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n event.preventDefault();\n\n draggedRef.current = false;\n // Active styles on press, not after drag threshold.\n setGestureActive(true);\n\n const startX = event.clientX;\n\n const handle = event.currentTarget;\n const pointerId = event.pointerId;\n\n // Capture pointer: keeps :hover + col-resize cursor on handle for the\n // whole drag, even when cursor leaves the hotzone (collapsed snap-zone).\n try {\n handle.setPointerCapture(pointerId);\n } catch {\n // Pointer already gone.\n }\n\n // WYSIWYG resize: sidebar width = cursor X relative to sidebar's left edge.\n // Captured once — sidebar is `shrink-0`, left edge is stable during the gesture.\n const sidebarEl = handle.parentElement;\n const sidebarLeft = sidebarEl ? sidebarEl.getBoundingClientRect().left : 0;\n\n const prevCursor = document.body.style.cursor;\n const prevUserSelect = document.body.style.userSelect;\n\n const onMove = (ev: PointerEvent) => {\n if (ev.pointerId !== pointerId) return;\n const dx = ev.clientX - startX;\n if (!draggedRef.current) {\n if (Math.abs(dx) <= DRAG_THRESHOLD) return;\n draggedRef.current = true;\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n // Single rule, no started-state branch: cursor position alone defines state.\n const cursorWidth = ev.clientX - sidebarLeft;\n\n if (collapseBelow > 0 && cursorWidth < collapseBelow) {\n collapse();\n return;\n }\n expand();\n setWidth(cursorWidth);\n };\n const cleanup = (ev?: PointerEvent) => {\n if (ev && ev.pointerId !== pointerId) return;\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', cleanup);\n window.removeEventListener('pointercancel', cleanup);\n document.body.style.cursor = prevCursor;\n document.body.style.userSelect = prevUserSelect;\n setGestureActive(false);\n commit();\n dragCleanupRef.current = null;\n };\n dragCleanupRef.current = () => cleanup();\n // Window-level listeners: pointer moves off the narrow handle fire reliably,\n // cursor leaving the window still gets `pointerup`.\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', cleanup);\n window.addEventListener('pointercancel', cleanup);\n },\n [collapseBelow, setWidth, expand, collapse, commit, setGestureActive],\n );\n\n const onClick = useCallback(() => {\n if (draggedRef.current) {\n draggedRef.current = false;\n return;\n }\n toggleSidebar();\n }, [toggleSidebar]);\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n toggleSidebar();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (isCollapsed) return;\n setWidth(width - KEYBOARD_STEP);\n commit();\n return;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (isCollapsed) {\n expand();\n commit();\n return;\n }\n setWidth(width + KEYBOARD_STEP);\n commit();\n return;\n }\n case 'Home': {\n event.preventDefault();\n expand();\n setWidth(minWidth);\n commit();\n return;\n }\n case 'End': {\n event.preventDefault();\n expand();\n setWidth(maxWidth);\n commit();\n return;\n }\n }\n },\n [isCollapsed, width, minWidth, maxWidth, setWidth, expand, commit, toggleSidebar],\n );\n\n // Mobile: render as an off-canvas drawer via Base UI Dialog.\n // Auto-close on link navigation (standard drawer UX). Don't gate on\n // `defaultPrevented` — client-side router links call `preventDefault()` for\n // SPA navigation, and we still want to close the drawer when they do.\n const closeOnAnchor = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const anchor = (event.target as HTMLElement).closest('a');\n if (!anchor || !anchor.hasAttribute('href')) return;\n // Skip non-primary clicks and modifier-clicks (open in new tab/window).\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n // Skip explicit external/download targets.\n if (anchor.target === '_blank' || anchor.hasAttribute('download')) return;\n setOpenMobile(false);\n },\n [setOpenMobile],\n );\n\n if (isMobile) {\n return (\n <DialogPrimitive.Root open={openMobile} onOpenChange={setOpenMobile}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Backdrop\n className={cn(\n 'fixed inset-0 z-40 bg-overlay backdrop-blur-sm',\n 'opacity-100 transition-opacity duration-200 ease-out motion-reduce:transition-none',\n 'data-[starting-style]:opacity-0 data-[ending-style]:opacity-0 data-[ending-style]:duration-150 data-[ending-style]:ease-in',\n )}\n />\n <DialogPrimitive.Popup\n className={cn(\n 'fixed inset-y-0 left-0 z-50 flex h-full flex-col',\n 'w-3/4 max-w-(--sidebar-width-mobile)',\n 'bg-surface2 shadow-xl',\n 'data-[open]:animate-in data-[closed]:animate-out',\n 'data-[open]:slide-in-from-left data-[closed]:slide-out-to-left',\n 'duration-200',\n className,\n )}\n >\n <VisuallyHidden asChild>\n <DialogPrimitive.Title>Navigation</DialogPrimitive.Title>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DialogPrimitive.Description>Primary site navigation drawer</DialogPrimitive.Description>\n </VisuallyHidden>\n <div onClick={closeOnAnchor} className=\"flex flex-col h-full min-h-0 px-4 py-2 overflow-hidden\">\n {children}\n </div>\n </DialogPrimitive.Popup>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n }\n\n // Desktop: in-flow sidebar with resize handle.\n const currentWidth = isCollapsed ? collapsedWidth : width;\n return (\n <div\n className={cn(\n 'sidebar-layout group/sidebar relative shrink-0 self-stretch min-h-0',\n 'w-(--sidebar-width)',\n 'transition-[width] duration-220 ease-[cubic-bezier(0.32,0.72,0,1)]',\n 'motion-reduce:transition-none',\n 'in-data-[sidebar-gesture=active]:transition-none',\n className,\n // Order matters for tailwind-merge: these win over consumer-supplied border classes.\n isHidden && 'border-r-0 border-transparent',\n )}\n >\n <div\n className={cn(\n 'flex flex-col h-full min-h-0 overflow-hidden',\n 'transition-opacity duration-200 motion-reduce:transition-none',\n isCollapsed ? 'px-2' : 'px-4',\n isHidden && 'opacity-0 pointer-events-none px-0',\n )}\n >\n {children}\n </div>\n\n <div\n // Focusable window-splitter pattern (WAI-ARIA APG): `separator` with\n // value props + keyboard semantics. Click toggles; Arrow keys resize.\n role=\"separator\"\n aria-orientation=\"vertical\"\n // Collapsed: omit the numeric range so AT doesn't see contradictory\n // values (valuenow=0/64 inside valuemin=200..valuemax=480). `valuetext`\n // still describes the state.\n aria-valuenow={isCollapsed ? undefined : currentWidth}\n aria-valuemin={isCollapsed ? undefined : minWidth}\n aria-valuemax={isCollapsed ? undefined : maxWidth}\n aria-valuetext={isCollapsed ? 'collapsed' : `${currentWidth} pixels`}\n aria-label={`Resize sidebar. Arrow keys to resize, Enter to ${isCollapsed ? 'expand' : 'collapse'}.`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'group absolute top-0 -right-1 z-10 h-full w-2 cursor-col-resize touch-none',\n 'flex items-center justify-center',\n 'focus-visible:outline-hidden',\n )}\n >\n <ResizeHandleIndicator\n className={cn(\n 'group-hover:opacity-100',\n 'group-focus-visible:opacity-100 group-focus-visible:via-accent1',\n 'in-data-[sidebar-gesture=active]:opacity-100 in-data-[sidebar-gesture=active]:via-neutral6/45',\n )}\n />\n </div>\n </div>\n );\n}\n","import { useId } from 'react';\nimport { MainSidebarNavHeader } from './main-sidebar-nav-header';\nimport { MainSidebarNavLink } from './main-sidebar-nav-link';\nimport type { NavLink } from './main-sidebar-nav-link';\nimport { MainSidebarNavList } from './main-sidebar-nav-list';\nimport { MainSidebarNavSection } from './main-sidebar-nav-section';\nimport type { NavSection } from './main-sidebar-nav-section';\nimport { MainSidebarNavSeparator } from './main-sidebar-nav-separator';\n\nexport type MainSidebarSectionsProps = {\n sections: NavSection[];\n /**\n * Called per link to decide the active state. Receives sibling links so\n * callers can use `getIsLinkActive` (or any sibling-aware logic) without\n * re-scanning `sections` from the outside. Default: each link's `isActive`.\n */\n isActive?: (link: NavLink, siblings: NavLink[]) => boolean;\n className?: string;\n};\n\nexport function MainSidebarSections({ sections, isActive, className }: MainSidebarSectionsProps) {\n const baseId = useId();\n return (\n <>\n {sections.map(section => {\n const showSeparator = section.links.length > 0 && section.separator;\n const headerId = section.title ? `${baseId}-${section.key}` : undefined;\n return (\n <MainSidebarNavSection\n key={section.key}\n className={className}\n aria-labelledby={headerId}\n aria-label={!headerId ? section.key : undefined}\n >\n {/* Render separator and header independently — a section can have\n both (titled group preceded by a divider). */}\n {showSeparator ? <MainSidebarNavSeparator /> : null}\n {section.title ? (\n <MainSidebarNavHeader id={headerId} href={section.href} isActive={section.isHeaderActive}>\n {section.title}\n </MainSidebarNavHeader>\n ) : null}\n <MainSidebarNavList>\n {section.links.map(link => (\n <MainSidebarNavLink\n key={link.name}\n link={link}\n isActive={isActive?.(link, section.links) ?? link.isActive}\n />\n ))}\n </MainSidebarNavList>\n </MainSidebarNavSection>\n );\n })}\n </>\n );\n}\n\n/**\n * Strict active-path match with sibling-exclusion.\n * - `pathname === link.url` or starts with `link.url + '/'`\n * - Not active if any sibling link has a longer matching url (prevents `/a` lighting while `/a/b` matches).\n */\nexport function getIsLinkActive(link: NavLink, pathname: string, siblings: NavLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n if (!matches(link.url)) return false;\n return !siblings.some(other => other.url !== link.url && other.url.length > link.url.length && matches(other.url));\n}\n","import { KeyboardIcon, PanelRightIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function MainSidebarTrigger({ className, onClick, ...props }: MainSidebarTriggerProps) {\n // Use desktopState so the icon reflects the persisted desktop state\n // even on mobile (where `state` is forced to 'default' for the drawer).\n const { desktopState, toggleSidebar } = useMainSidebar();\n const isCollapsed = desktopState === 'collapsed';\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n aria-label=\"Toggle sidebar\"\n aria-expanded={!isCollapsed}\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleSidebar();\n }}\n className={cn(\n 'flex items-center justify-center text-neutral3 rounded-md',\n 'size-9',\n isCollapsed ? 'mx-auto' : 'ml-auto',\n 'hover:bg-sidebar-nav-hover hover:text-neutral6',\n 'transition-all duration-normal ease-out-custom',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:shadow-focus-ring',\n '[&_svg]:w-4 [&_svg]:h-4 [&_svg]:text-neutral3 [&:hover_svg]:text-neutral5 [&_svg]:transition-transform [&_svg]:duration-normal',\n className,\n )}\n >\n <PanelRightIcon\n className={cn({\n 'rotate-180': isCollapsed,\n })}\n />\n </button>\n }\n />\n\n <TooltipContent>\n Toggle Sidebar\n <div className=\"flex items-center gap-1 [&>svg]:w-[1em] [&>svg]:h-[1em]\">\n <KeyboardIcon /> Ctrl+B\n </div>\n </TooltipContent>\n </Tooltip>\n );\n}\n","import { MainSidebarBottom } from './main-sidebar-bottom';\nimport { MainSidebarMobileTrigger } from './main-sidebar-mobile-trigger';\nimport { MainSidebarNav } from './main-sidebar-nav';\nimport { MainSidebarNavHeader } from './main-sidebar-nav-header';\nimport { MainSidebarNavLabel } from './main-sidebar-nav-label';\nimport { MainSidebarNavLink } from './main-sidebar-nav-link';\nimport { MainSidebarNavList } from './main-sidebar-nav-list';\nimport { MainSidebarNavSection } from './main-sidebar-nav-section';\nimport { MainSidebarNavSeparator } from './main-sidebar-nav-separator';\nimport { MainSidebarRoot } from './main-sidebar-root';\nimport { MainSidebarSections } from './main-sidebar-sections';\nimport { MainSidebarTrigger } from './main-sidebar-trigger';\n\nexport { MainSidebarProvider, type SidebarState, type MainSidebarProviderProps } from './main-sidebar-context';\nexport { useMainSidebar, useMaybeSidebar } from './main-sidebar-context';\nexport { type NavLink, navItemClasses } from './main-sidebar-nav-link';\nexport { type NavSection } from './main-sidebar-nav-section';\nexport { MainSidebarTrigger } from './main-sidebar-trigger';\nexport { MainSidebarMobileTrigger } from './main-sidebar-mobile-trigger';\nexport { getIsLinkActive } from './main-sidebar-sections';\n\nexport const MainSidebar = Object.assign(MainSidebarRoot, {\n Bottom: MainSidebarBottom,\n Nav: MainSidebarNav,\n NavSection: MainSidebarNavSection,\n NavLink: MainSidebarNavLink,\n NavLabel: MainSidebarNavLabel,\n NavHeader: MainSidebarNavHeader,\n NavList: MainSidebarNavList,\n NavSeparator: MainSidebarNavSeparator,\n Sections: MainSidebarSections,\n Trigger: MainSidebarTrigger,\n MobileTrigger: MainSidebarMobileTrigger,\n});\n"],"names":["React","DialogPrimitive"],"mappings":";;;;;;;;;;AAKO,SAAS,kBAAkB,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,OAAM,EAA2B;AAC3F,EAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,WAAW,SAAS,CAAA,EAAI,GAAG,KAAA,EAC3C,QAAA,EACH,CAAA;AAEJ;;ACPA,MAAM,iBAAA,GAAoB,eAAA;AAC1B,MAAM,iBAAA,GAAoB,eAAA;AAE1B,MAAM,iBAAA,GAAoB,iBAAA;AA+B1B,MAAM,kBAAA,GAAqBA,cAAA,CAAM,aAAA,CAA+E,IAAI,CAAA;AACpH,MAAM,mBAAA,GAAsBA,cAAA,CAAM,aAAA,CAA0C,IAAI,CAAA;AAEzE,SAAS,cAAA,GAAqC;AACnD,EAAA,MAAM,GAAA,GAAMA,cAAA,CAAM,UAAA,CAAW,kBAAkB,CAAA;AAC/C,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,UAAA,CAAW,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAA,EAAQ;AACnB,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,EAAE,GAAG,GAAA,EAAK,GAAG,MAAA,EAAO;AAC7B;AAEO,SAAS,eAAA,GAA6C;AAC3D,EAAA,MAAM,GAAA,GAAMA,cAAA,CAAM,UAAA,CAAW,kBAAkB,CAAA;AAC/C,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,UAAA,CAAW,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAA,EAAQ,OAAO,IAAA;AAC5B,EAAA,OAAO,EAAE,GAAG,GAAA,EAAK,GAAG,MAAA,EAAO;AAC7B;AAmCA,MAAM,KAAA,GAAQ,CAAC,CAAA,EAAW,EAAA,EAAY,EAAA,KAAe,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,CAAC,CAAC,CAAA;AAEjF,MAAM,qBAAqB,OAAO,MAAA,KAAW,WAAA,GAAcA,cAAA,CAAM,kBAAkBA,cAAA,CAAM,SAAA;AAElF,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,YAAA,GAAe,GAAA;AAAA,EACf,QAAA,GAAW,GAAA;AAAA,EACX,QAAA,GAAW,GAAA;AAAA,EACX,aAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB,uBAAA,GAA0B,KAAA;AAAA,EAC1B,UAAA;AAAA,EACA,gBAAA,GAAmB,IAAA;AAAA,EACnB,WAAA,GAAc,GAAA;AAAA,EACd;AACF,CAAA,EAA6B;AAE3B,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAC,CAAA;AACxD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,cAAA,EAAgB,OAAO,CAAC,CAAA;AACnE,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,YAAA,EAAc,OAAA,EAAS,OAAO,CAAA;AAIxD,EAAA,MAAM,oBAAoB,aAAA,IAAiB,OAAA;AAE3C,EAAA,MAAM,kBAAkB,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,GAAK,iBAAA;AAC5E,EAAA,MAAM,kBAAkB,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,GAAK,iBAAA;AAI5E,EAAA,MAAM,cAAc,MAA8C;AAChE,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,OAAO,WAAA,EAAY;AACpF,IAAA,IAAI;AACF,MAAA,IAAI,SAAA,GAA0B,YAAA;AAC9B,MAAA,IAAI,SAAA,GAAY,WAAA;AAChB,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAe,CAAA;AAC/D,MAAA,IAAI,WAAA,KAAgB,WAAA,IAAe,WAAA,KAAgB,SAAA,EAAW,SAAA,GAAY,WAAA;AAC1E,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAe,CAAA;AAC/D,MAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,QAAA,MAAM,MAAA,GAAS,OAAO,WAAW,CAAA;AACjC,QAAA,IAAI,MAAA,CAAO,SAAS,MAAM,CAAA,cAAe,KAAA,CAAM,MAAA,EAAQ,SAAS,OAAO,CAAA;AAAA,MACzE;AACA,MAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,IAC9C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,WAAA,EAAY;AAAA,IACnD;AAAA,EACF,CAAA;AACA,EAAA,MAAM,UAAA,GAAaA,cAAA,CAAM,MAAA,CAAsD,IAAI,CAAA;AACnF,EAAA,IAAI,UAAA,CAAW,OAAA,KAAY,IAAA,EAAM,UAAA,CAAW,UAAU,WAAA,EAAY;AAClE,EAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAE3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAIA,cAAA,CAAM,QAAA,CAAuB,QAAQ,KAAK,CAAA;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,IAAIA,cAAA,CAAM,QAAA,CAAiB,QAAQ,KAAK,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAM,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,cAAA,CAAM,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAAe,OAAA,CAAQ,KAAK,CAAA;AACnD,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAAqB,OAAA,CAAQ,KAAK,CAAA;AACzD,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAEnB,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAA8B,IAAI,CAAA;AAGzD,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,MAAM,KAAK,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,gBAAA,GAAmB,CAAC,CAAA,GAAA,CAAK,CAAA;AACrE,IAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,EAAA,CAAG,OAAO,CAAA;AAC3C,IAAA,MAAA,EAAO;AACP,IAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACpC,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,QAAA,EAAU,MAAM,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAGrB,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,QAAA,IAAY,UAAA,EAAY,aAAA,CAAc,KAAK,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA;AAEzB,EAAA,MAAM,WAAA,GAAcA,cAAA,CAAM,WAAA,CAAY,CAAC,EAAA,KAAe;AACpD,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,IAAI,EAAA,CAAG,KAAA,CAAM,YAAY,iBAAA,EAAmB,CAAA,EAAG,EAAE,CAAA,EAAA,CAAI,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,kBAAA,CAAmB,MAAM;AACvB,IAAA,WAAA,CAAY,KAAA,KAAU,WAAA,GAAc,aAAA,GAAgB,QAAA,CAAS,OAAO,CAAA;AAAA,EACtE,CAAA,EAAG,CAAC,KAAA,EAAO,aAAA,EAAe,WAAW,CAAC,CAAA;AAEtC,EAAA,MAAM,eAAeA,cAAA,CAAM,WAAA;AAAA,IACzB,CAAC,IAAA,KAAuB;AACtB,MAAA,IAAI;AACF,QAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAA,EAAiB,IAAI,CAAA;AAAA,MACnD,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,aAAA,GAAgBA,cAAA,CAAM,WAAA,CAAY,MAAM;AAC5C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,aAAA,CAAc,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ;AACf,MAAA,MAAM,IAAA,GAAO,IAAA,KAAS,SAAA,GAAY,WAAA,GAAc,SAAA;AAGhD,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAA,EAAU,YAAY,CAAC,CAAA;AAE3B,EAAA,MAAM,WAAWA,cAAA,CAAM,WAAA;AAAA,IACrB,CAAC,IAAA,KAAiB;AAChB,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAC5C,MAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,OAAA,EAAS,WAAW;AAAA,GAChC;AAEA,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,WAAA,CAAY,MAAM;AACvC,IAAA,QAAA,CAAS,OAAA,GAAU,WAAA;AACnB,IAAA,YAAA,CAAa,WAAW,CAAA;AACxB,IAAA,QAAA,CAAS,WAAW,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,WAAA,CAAY,MAAM;AACrC,IAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AACnB,IAAA,YAAA,CAAa,SAAS,CAAA;AACtB,IAAA,QAAA,CAAS,SAAS,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,WAAA,CAAY,MAAM;AACrC,IAAA,aAAA,CAAc,SAAS,OAAO,CAAA;AAC9B,IAAA,IAAI;AACF,MAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAA,EAAiB,QAAA,CAAS,OAAO,CAAA;AAC7D,MAAA,MAAA,CAAO,aAAa,OAAA,CAAQ,eAAA,EAAiB,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,IACvE,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX,CAAA,EAAG,CAAC,eAAA,EAAiB,eAAe,CAAC,CAAA;AAErC,EAAA,MAAM,gBAAA,GAAmBA,cAAA,CAAM,WAAA,CAAY,CAAC,MAAA,KAAoB;AAC9D,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,MAAA,EAAQ,EAAA,CAAG,YAAA,CAAa,sBAAA,EAAwB,QAAQ,CAAA;AAAA,SACvD,EAAA,CAAG,gBAAgB,sBAAsB,CAAA;AAAA,EAChD,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,uBAAA,EAAyB;AAC7B,IAAA,MAAM,SAAA,GAAY,CAAC,EAAA,KAAsB;AAEvC,MAAA,IAAI,EAAA,CAAG,SAAS,MAAA,EAAQ;AACxB,MAAA,IAAI,EAAE,EAAA,CAAG,OAAA,IAAW,EAAA,CAAG,OAAA,CAAA,EAAU;AACjC,MAAA,IAAI,EAAA,CAAG,MAAA,IAAU,EAAA,CAAG,QAAA,EAAU;AAC9B,MAAA,MAAM,SAAS,EAAA,CAAG,MAAA;AAClB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AACnB,QAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,GAAA,KAAQ,UAAA,IAAc,QAAQ,QAAA,EAAU;AAC/D,QAAA,IAAI,OAAO,iBAAA,EAAmB;AAAA,MAChC;AACA,MAAA,EAAA,CAAG,cAAA,EAAe;AAClB,MAAA,aAAA,EAAc;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC5C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,uBAAA,EAAyB,aAAa,CAAC,CAAA;AAE3C,EAAA,MAAM,cAAA,GAA+B,WAAW,SAAA,GAAY,KAAA;AAE5D,EAAA,MAAM,eAAeA,cAAA,CAAM,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,KAAA,EAAO,cAAA;AAAA,MACP,YAAA,EAAc,KAAA;AAAA,MACd,KAAA;AAAA,MACA,QAAA,EAAU,OAAA;AAAA,MACV,QAAA,EAAU,OAAA;AAAA,MACV,aAAA,EAAe,iBAAA;AAAA,MACf,cAAA,EAAgB,aAAA;AAAA,MAChB,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,cAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,WAAA,GAAcA,cAAA,CAAM,OAAA,CAA6B,OAAO,EAAE,YAAY,aAAA,EAAc,CAAA,EAAI,CAAC,UAAU,CAAC,CAAA;AAI1G,EAAA,MAAM,UAAA,GAA4B;AAAA,IAChC,CAAC,iBAAiB,GAAG,CAAA,EAAG,QAAQ,KAAA,KAAU,WAAA,GAAc,aAAA,GAAgB,OAAA,CAAQ,KAAK,CAAA,EAAA,CAAA;AAAA,IACrF,CAAC,wBAAkC,GAAG,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA;AAAA,IACpD,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,oBAAA,EAAkB,IAAA;AAAA,MAClB,oBAAA,EAAoB,KAAA;AAAA,MACpB,qBAAA,EAAqB,WAAW,MAAA,GAAS,OAAA;AAAA,MACzC,KAAA,EAAO,UAAA;AAAA,MACP,wBAAA,EAAwB,IAAA;AAAA,MAExB,QAAA,kBAAA,GAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAAO,YAAA,EAClC,QAAA,kBAAA,GAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,WAAA,EAAc,UAAS,CAAA,EAC9D;AAAA;AAAA,GACF;AAEJ;;ACxTO,SAAS,wBAAA,CAAyB;AAAA,EACvC,SAAA;AAAA,EACA,IAAA;AAAA,EACA,cAAc,SAAA,GAAY,sBAAA;AAAA,EAC1B,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkC;AAGhC,EAAA,MAAM,EAAE,QAAA,EAAU,aAAA,EAAc,GAAI,cAAA,EAAe;AACnD,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,SAAA;AAAA,MACZ,eAAa,CAAC,QAAA;AAAA,MACd,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,MACzB,kBAAA,EAAgB,IAAA;AAAA,MACf,GAAG,KAAA;AAAA,MACJ,SAAS,CAAA,KAAA,KAAS;AAChB,QAAA,OAAA,GAAU,KAAK,CAAA;AACf,QAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,EAAkB,aAAA,CAAc,IAAI,CAAA;AAAA,MACjD,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,4DAAA;AAAA,QACA,uCAAA;AAAA,QACA,8DAAA;AAAA,QACA,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,IAAA,oBAAQ,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACxC;AAEJ;;ACrCO,SAAS,cAAA,CAAe;AAAA,EAC7B,cAAc,SAAA,GAAY,MAAA;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,2BACG,KAAA,EAAA,EAAI,YAAA,EAAY,WAAW,SAAA,EAAW,EAAA,CAAG,gCAAgC,SAAS,CAAA,EAAI,GAAG,KAAA,EACxF,8BAAC,UAAA,EAAA,EAAW,SAAA,EAAU,kBAAiB,iBAAA,EAAkB,QAAA,EACtD,UACH,CAAA,EACF,CAAA;AAEJ;;ACJO,SAAS,oBAAA,CAAqB;AAAA,EACnC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA,EAAe,QAAA;AAAA,EACf,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,MAAM,MAAM,eAAA,EAAgB;AAC5B,EAAA,MAAM,KAAA,GAAsB,SAAA,IAAa,GAAA,EAAK,KAAA,IAAS,SAAA;AACvD,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,KAAA;AAClC,EAAA,MAAM,IAAA,GAA4B,QAAA,IAAY,GAAA,EAAK,aAAA,IAAiB,GAAA;AACpE,EAAA,MAAM,SAAA,GAAY,KAAA,KAAU,SAAA,IAAa,CAAC,QAAA;AAE1C,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,+CAAA,EAAiD,SAAS,GAC1E,QAAA,EAAA,SAAA,mBACC,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW,GAAG,yDAAA,EAA2D;AAAA,QACvE,eAAA,EAAiB,QAAA;AAAA,QACjB,oBAAoB,CAAC;AAAA,OACtB,CAAA;AAAA,MAEA,QAAA,EAAA,IAAA,mBACC,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,SAAA,EAAW,GAAG,0DAAA,EAA4D;AAAA,YACxE,uBAAuB,CAAC,QAAA;AAAA,YACxB,eAAA,EAAiB;AAAA,WAClB,CAAA;AAAA,UAEA;AAAA;AAAA,OACH,GAEA;AAAA;AAAA,sBAIJ,IAAA,CAAA,QAAA,EAAA,EAGE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,YAAQ,GAAG,KAAA,EAAQ,UAAS,CAAA,EAC/B,CAAA;AAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAU,6BAAA,EAA8B;AAAA,GAAA,EAClE,CAAA,EAEJ,CAAA;AAEJ;;AC5CO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,SAAA,EAAW,GAAG,MAAK,EAA6B;AAChH,EAAA,MAAM,MAAM,eAAA,EAAgB;AAC5B,EAAA,MAAM,KAAA,GAAsB,SAAA,IAAa,GAAA,EAAK,KAAA,IAAS,SAAA;AACvD,EAAA,IAAI,UAAU,WAAA,EAAa;AACzB,IAAA,uBAAO,GAAA,CAAC,kBAAgB,QAAA,EAAS,CAAA;AAAA,EACnC;AACA,EAAA,uBACE,GAAA,CAAC,UAAM,GAAG,IAAA,EAAM,WAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EACzE,QAAA,EACH,CAAA;AAEJ;;ACDO,MAAM,cAAA,GAAiB,CAAC,EAAE,QAAA,EAAU,aAAa,UAAA,EAAW,GAAsB,EAAC,KACxF,EAAA;AAAA,EACE,qFAAA;AAAA,EACA,8EAAA;AAAA,EACA,2JAAA;AAAA,EACA,4EAAA;AAAA,EACA,8GAAA;AAAA,EACA,CAAC,WAAA,IAAe,wCAAA;AAAA,EAChB,WAAA,IAAe,2BAAA;AAAA,EACf,QAAA,IACE,uIAAA;AAAA,EACF,WAAA,IAAe,CAAC,QAAA,IAAY,uBAAA;AAAA,EAC5B,UAAA,IAAc,qGAAA;AAAA,EACd,UAAA,IACE,wGAAA;AAAA,EACF,UAAA,IACE;AACJ;AAsBK,SAAS,kBAAA,CAAmB;AAAA,EACjC,IAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,QAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA4B;AAE1B,EAAA,MAAM,MAAM,eAAA,EAAgB;AAC5B,EAAA,MAAM,KAAA,GAAsB,SAAA,IAAa,GAAA,EAAK,KAAA,IAAS,SAAA;AACvD,EAAA,MAAM,IAAA,GAA4B,QAAA,IAAY,GAAA,EAAK,aAAA,IAAiB,GAAA;AACpE,EAAA,MAAM,cAAc,KAAA,KAAU,WAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,KAAY,UAAA;AACrC,EAAA,MAAM,UAAA,GAAa,QAAQ,IAAA,EAAM,GAAA,IAAO,kBAAkB,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AACxE,EAAA,MAAM,UAAA,GAAa,aAAa,EAAE,MAAA,EAAQ,UAAU,GAAA,EAAK,YAAA,KAAiB,EAAC;AAC3E,EAAA,MAAM,eAAe,IAAA,GAAO,WAAA,IAAe,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA,GAAI,KAAA;AAEtE,EAAA,MAAM,gBAAgB,cAAA,CAAe;AAAA,IACnC,QAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,aAAA,GAAiC,IAAA;AAErC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,CAACA,cAAA,CAAM,cAAA,CAAqC,QAAQ,CAAA,EAAG;AACzD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,aAAA,GAAgBA,cAAA,CAAM,aAAa,QAAA,EAAU;AAAA,MAC3C,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,QAAA,CAAS,MAAM,SAAS;AAAA,KACtD,CAAA;AAAA,EACH,WAAW,IAAA,EAAM;AACf,IAAA,aAAA,mBACE,IAAA,CAAC,QAAK,IAAA,EAAM,IAAA,CAAK,KAAM,GAAG,UAAA,EAAY,WAAW,aAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,IAAA;AAAA,sBACN,GAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAe,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,MAC7C;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,2BACG,IAAA,EAAA,EAAI,GAAG,KAAA,EAAO,SAAA,EAAW,GAAG,uBAAA,EAAyB,SAAS,CAAA,EAC5D,QAAA,EAAA,IAAA,IAAQ,gBAAgBA,cAAA,CAAM,cAAA,CAAe,aAAa,CAAA,wBACxD,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,QAAQ,aAAA,EAAe,CAAA;AAAA,oBACvC,GAAA,CAAC,kBAAe,IAAA,EAAK,OAAA,EAAQ,OAAM,QAAA,EAAS,UAAA,EAAY,IACrD,QAAA,EAAA,IAAA,CAAK,UAAA,GAAc,cAAc,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,GAAA,EAAM,IAAA,CAAK,UAAU,CAAA,CAAA,GAAK,IAAA,CAAK,UAAA,GAAc,IAAA,CAAK,IAAA,EAClG;AAAA,GAAA,EACF,CAAA,GAEC,iBAAiB,QAAA,EAEtB,CAAA;AAEJ;;AChIO,SAAS,mBAAmB,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,OAAM,EAA4B;AAC7F,EAAA,uBACE,GAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,mEAAmE,SAAS,CAAA,EAAI,GAAG,KAAA,EAClG,QAAA,EACH,CAAA;AAEJ;;ACIO,SAAS,sBAAsB,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,OAAM,EAA+B;AACnG,EAAA,uBACE,GAAA,CAAC,aAAQ,SAAA,EAAW,EAAA,CAAG,sEAAsE,SAAS,CAAA,EAAI,GAAG,KAAA,EAC1G,QAAA,EACH,CAAA;AAEJ;;AChBO,SAAS,uBAAA,CAAwB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC7F,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,WAAA;AAAA,MACL,kBAAA,EAAiB,YAAA;AAAA,MACjB,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA;AAAA,QACA,0KAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACZA,MAAM,iBAAA,GAAoB,GAAA;AAAA,EACxB,8FAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,qFAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAQO,MAAM,wBAAwB,CAAC,EAAE,SAAS,SAAA,EAAU,yBACxD,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,SAAS,CAAA,EAAG,SAAS,CAAA,EAAG;;ACf9E,MAAM,aAAA,GAAgB,EAAA;AACtB,MAAM,cAAA,GAAiB,CAAA;AAEhB,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAyB;AAC7E,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,MACE,cAAA,EAAe;AACnB,EAAA,MAAM,cAAc,KAAA,KAAU,WAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,eAAe,cAAA,KAAmB,CAAA;AAEnD,EAAA,MAAM,UAAA,GAAa,OAAO,KAAK,CAAA;AAE/B,EAAA,MAAM,cAAA,GAAiB,OAA4B,IAAI,CAAA;AAGvD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,CAAe,OAAA,IAAU;AACzB,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,IAC3B,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA6C;AAC5C,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,cAAA,EAAe;AAErB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AAErB,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAErB,MAAA,MAAM,SAAS,KAAA,CAAM,OAAA;AAErB,MAAA,MAAM,SAAS,KAAA,CAAM,aAAA;AACrB,MAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AAIxB,MAAA,IAAI;AACF,QAAA,MAAA,CAAO,kBAAkB,SAAS,CAAA;AAAA,MACpC,CAAA,CAAA,MAAQ;AAAA,MAER;AAIA,MAAA,MAAM,YAAY,MAAA,CAAO,aAAA;AACzB,MAAA,MAAM,WAAA,GAAc,SAAA,GAAY,SAAA,CAAU,qBAAA,GAAwB,IAAA,GAAO,CAAA;AAEzE,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,MAAA;AACvC,MAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,UAAA;AAE3C,MAAA,MAAM,MAAA,GAAS,CAAC,EAAA,KAAqB;AACnC,QAAA,IAAI,EAAA,CAAG,cAAc,SAAA,EAAW;AAChC,QAAA,MAAM,EAAA,GAAK,GAAG,OAAA,GAAU,MAAA;AACxB,QAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACvB,UAAA,IAAI,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,IAAK,cAAA,EAAgB;AACpC,UAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,UAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,YAAA;AAC7B,UAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,MAAA;AAAA,QACnC;AAGA,QAAA,MAAM,WAAA,GAAc,GAAG,OAAA,GAAU,WAAA;AAEjC,QAAA,IAAI,aAAA,GAAgB,CAAA,IAAK,WAAA,GAAc,aAAA,EAAe;AACpD,UAAA,QAAA,EAAS;AACT,UAAA;AAAA,QACF;AACA,QAAA,MAAA,EAAO;AACP,QAAA,QAAA,CAAS,WAAW,CAAA;AAAA,MACtB,CAAA;AACA,MAAA,MAAM,OAAA,GAAU,CAAC,EAAA,KAAsB;AACrC,QAAA,IAAI,EAAA,IAAM,EAAA,CAAG,SAAA,KAAc,SAAA,EAAW;AACtC,QAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,MAAM,CAAA;AAChD,QAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,OAAO,CAAA;AAC/C,QAAA,MAAA,CAAO,mBAAA,CAAoB,iBAAiB,OAAO,CAAA;AACnD,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,UAAA;AAC7B,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,cAAA;AACjC,QAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,QAAA,MAAA,EAAO;AACP,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,MAC3B,CAAA;AACA,MAAA,cAAA,CAAe,OAAA,GAAU,MAAM,OAAA,EAAQ;AAGvC,MAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,MAAM,CAAA;AAC7C,MAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC5C,MAAA,MAAA,CAAO,gBAAA,CAAiB,iBAAiB,OAAO,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,QAAQ,gBAAgB;AAAA,GACtE;AAEA,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA;AAAA,IACF;AACA,IAAA,aAAA,EAAc;AAAA,EAChB,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,KAAA,KAA8C;AAC7C,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,aAAA,EAAc;AACd,UAAA;AAAA,QACF;AAAA,QACA,KAAK,WAAA,EAAa;AAChB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,WAAA,EAAa;AACjB,UAAA,QAAA,CAAS,QAAQ,aAAa,CAAA;AAC9B,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,YAAA,EAAc;AACjB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAA,EAAO;AACP,YAAA,MAAA,EAAO;AACP,YAAA;AAAA,UACF;AACA,UAAA,QAAA,CAAS,QAAQ,aAAa,CAAA;AAC9B,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAA,EAAO;AACP,UAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAA,EAAO;AACP,UAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA;AACF,IACF,CAAA;AAAA,IACA,CAAC,aAAa,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,MAAA,EAAQ,QAAQ,aAAa;AAAA,GAClF;AAMA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA4C;AAC3C,MAAA,MAAM,MAAA,GAAU,KAAA,CAAM,MAAA,CAAuB,OAAA,CAAQ,GAAG,CAAA;AACxD,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA,EAAG;AAE7C,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,OAAA,IAAW,MAAM,OAAA,IAAW,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,MAAA,EAAQ;AAE5F,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,YAAA,CAAa,UAAU,CAAA,EAAG;AACnE,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACE,GAAA,CAACC,MAAA,CAAgB,IAAA,EAAhB,EAAqB,IAAA,EAAM,UAAA,EAAY,YAAA,EAAc,aAAA,EACpD,QAAA,kBAAA,IAAA,CAACA,MAAA,CAAgB,MAAA,EAAhB,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAACA,MAAA,CAAgB,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,gDAAA;AAAA,YACA,oFAAA;AAAA,YACA;AAAA;AACF;AAAA,OACF;AAAA,sBACA,IAAA;AAAA,QAACA,MAAA,CAAgB,KAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,kDAAA;AAAA,YACA,sCAAA;AAAA,YACA,uBAAA;AAAA,YACA,kDAAA;AAAA,YACA,gEAAA;AAAA,YACA,cAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,GAAA,CAACA,OAAgB,KAAA,EAAhB,EAAsB,wBAAU,CAAA,EACnC,CAAA;AAAA,4BACA,GAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,8BAACA,MAAA,CAAgB,WAAA,EAAhB,EAA4B,QAAA,EAAA,gCAAA,EAA8B,CAAA,EAC7D,CAAA;AAAA,gCACC,KAAA,EAAA,EAAI,OAAA,EAAS,aAAA,EAAe,SAAA,EAAU,0DACpC,QAAA,EACH;AAAA;AAAA;AAAA;AACF,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,MAAM,YAAA,GAAe,cAAc,cAAA,GAAiB,KAAA;AACpD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qEAAA;AAAA,QACA,qBAAA;AAAA,QACA,oEAAA;AAAA,QACA,+BAAA;AAAA,QACA,kDAAA;AAAA,QACA,SAAA;AAAA;AAAA,QAEA,QAAA,IAAY;AAAA,OACd;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,8CAAA;AAAA,cACA,+DAAA;AAAA,cACA,cAAc,MAAA,GAAS,MAAA;AAAA,cACvB,QAAA,IAAY;AAAA,aACd;AAAA,YAEC;AAAA;AAAA,SACH;AAAA,wBAEA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAGC,IAAA,EAAK,WAAA;AAAA,YACL,kBAAA,EAAiB,UAAA;AAAA,YAIjB,eAAA,EAAe,cAAc,MAAA,GAAY,YAAA;AAAA,YACzC,eAAA,EAAe,cAAc,MAAA,GAAY,QAAA;AAAA,YACzC,eAAA,EAAe,cAAc,MAAA,GAAY,QAAA;AAAA,YACzC,gBAAA,EAAgB,WAAA,GAAc,WAAA,GAAc,CAAA,EAAG,YAAY,CAAA,OAAA,CAAA;AAAA,YAC3D,YAAA,EAAY,CAAA,+CAAA,EAAkD,WAAA,GAAc,QAAA,GAAW,UAAU,CAAA,CAAA,CAAA;AAAA,YACjG,QAAA,EAAU,CAAA;AAAA,YACV,aAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,4EAAA;AAAA,cACA,kCAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,yBAAA;AAAA,kBACA,iEAAA;AAAA,kBACA;AAAA;AACF;AAAA;AACF;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;AC3QO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,WAAU,EAA6B;AAC/F,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,KAAW;AACvB,IAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,KAAA,CAAM,MAAA,GAAS,KAAK,OAAA,CAAQ,SAAA;AAC1D,IAAA,MAAM,QAAA,GAAW,QAAQ,KAAA,GAAQ,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,OAAA,CAAQ,GAAG,CAAA,CAAA,GAAK,MAAA;AAC9D,IAAA,uBACE,IAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QAEC,SAAA;AAAA,QACA,iBAAA,EAAiB,QAAA;AAAA,QACjB,YAAA,EAAY,CAAC,QAAA,GAAW,OAAA,CAAQ,GAAA,GAAM,MAAA;AAAA,QAIrC,QAAA,EAAA;AAAA,UAAA,aAAA,mBAAgB,GAAA,CAAC,2BAAwB,CAAA,GAAK,IAAA;AAAA,UAC9C,OAAA,CAAQ,KAAA,mBACP,GAAA,CAAC,oBAAA,EAAA,EAAqB,IAAI,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,QAAA,EAAU,OAAA,CAAQ,cAAA,EACvE,QAAA,EAAA,OAAA,CAAQ,OACX,CAAA,GACE,IAAA;AAAA,0BACJ,GAAA,CAAC,kBAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,IAAA,qBACjB,GAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cAEC,IAAA;AAAA,cACA,UAAU,QAAA,GAAW,IAAA,EAAM,OAAA,CAAQ,KAAK,KAAK,IAAA,CAAK;AAAA,aAAA;AAAA,YAF7C,IAAA,CAAK;AAAA,WAIb,CAAA,EACH;AAAA;AAAA,OAAA;AAAA,MArBK,OAAA,CAAQ;AAAA,KAsBf;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAOO,SAAS,eAAA,CAAgB,IAAA,EAAe,QAAA,EAAkB,QAAA,GAAsB,EAAC,EAAY;AAClG,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,KAAgB,QAAA,KAAa,OAAO,QAAA,CAAS,UAAA,CAAW,MAAM,GAAG,CAAA;AAClF,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,GAAG,GAAG,OAAO,KAAA;AAC/B,EAAA,OAAO,CAAC,QAAA,CAAS,IAAA,CAAK,CAAA,KAAA,KAAS,KAAA,CAAM,QAAQ,IAAA,CAAK,GAAA,IAAO,KAAA,CAAM,GAAA,CAAI,SAAS,IAAA,CAAK,GAAA,CAAI,UAAU,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAC,CAAA;AACnH;;AC3DO,SAAS,mBAAmB,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,OAAM,EAA4B;AAG5F,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAc,GAAI,cAAA,EAAe;AACvD,EAAA,MAAM,cAAc,YAAA,KAAiB,WAAA;AAErC,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,MAAA,kBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAW,gBAAA;AAAA,YACX,iBAAe,CAAC,WAAA;AAAA,YACf,GAAG,KAAA;AAAA,YACJ,SAAS,CAAA,KAAA,KAAS;AAChB,cAAA,OAAA,GAAU,KAAK,CAAA;AACf,cAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,EAAkB,aAAA,EAAc;AAAA,YAC7C,CAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,2DAAA;AAAA,cACA,QAAA;AAAA,cACA,cAAc,SAAA,GAAY,SAAA;AAAA,cAC1B,gDAAA;AAAA,cACA,gDAAA;AAAA,cACA,8GAAA;AAAA,cACA,gIAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,WAAW,EAAA,CAAG;AAAA,kBACZ,YAAA,EAAc;AAAA,iBACf;AAAA;AAAA;AACH;AAAA;AACF;AAAA,KAEJ;AAAA,yBAEC,cAAA,EAAA,EAAe,QAAA,EAAA;AAAA,MAAA,gBAAA;AAAA,sBAEd,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAAA,QAAE;AAAA,OAAA,EAClB;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;AClCO,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,eAAA,EAAiB;AAAA,EACxD,MAAA,EAAQ,iBAAA;AAAA,EACR,GAAA,EAAK,cAAA;AAAA,EACL,UAAA,EAAY,qBAAA;AAAA,EACZ,OAAA,EAAS,kBAAA;AAAA,EACT,QAAA,EAAU,mBAAA;AAAA,EACV,SAAA,EAAW,oBAAA;AAAA,EACX,OAAA,EAAS,kBAAA;AAAA,EACT,YAAA,EAAc,uBAAA;AAAA,EACd,QAAA,EAAU,mBAAA;AAAA,EACV,OAAA,EAAS,kBAAA;AAAA,EACT,aAAA,EAAe;AACjB,CAAC;;;;"}
@@ -4,7 +4,7 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const utils = require('./utils-vA5sWo9W.cjs');
5
5
  const lucideReact = require('lucide-react');
6
6
  const React = require('react');
7
- const scrollArea = require('./scroll-area-KogxLVrV.cjs');
7
+ const scrollArea = require('./scroll-area-BqJfcT94.cjs');
8
8
  const reactVisuallyHidden = require('@radix-ui/react-visually-hidden');
9
9
  const tooltip = require('./tooltip-j8gUR1Qk.cjs');
10
10
  const dialog = require('@base-ui/react/dialog');
@@ -768,4 +768,4 @@ exports.getIsLinkActive = getIsLinkActive;
768
768
  exports.navItemClasses = navItemClasses;
769
769
  exports.useMainSidebar = useMainSidebar;
770
770
  exports.useMaybeSidebar = useMaybeSidebar;
771
- //# sourceMappingURL=main-sidebar-H8NQ7njm.cjs.map
771
+ //# sourceMappingURL=main-sidebar-CWoM-yrH.cjs.map